32ビット
32ビット(英: 32-bit)は、連続した32個(桁)のビット(4オクテット)であり、バイナリで最大4,294,967,296(4ギビ、約4.3G)までの数を表現できる。
- 「32ビットアーキテクチャ」とは、整数型、メモリアドレス、その他のデータサイズなどが、最大32ビット幅のアーキテクチャである。
- 「32ビットCPU」(プロセッサ、演算装置)とは、32ビットサイズのレジスタ、アドレスバス、データバスを持つCPU(プロセッサ、演算装置)である。
- 「32ビットオペレーティングシステム」とは、32ビットのCPUを前提に設計されたオペレーティングシステムである。
- 「32ビットアプリケーション」とは、32ビットのCPUおよび32ビットのオペレーティングシステムを前提に設計されたアプリケーションソフトウェアである。
- 「32ビットコンピュータ」とは、32ビットのプロセッサ (CPU) を標準的に搭載したコンピュータの世代である。
- 「32ビットカラー」とは、最大で4,294,967,296(4ギビ、約4.3G)色数を同時に表示できる。
32ビットアーキテクチャ
編集32ビットに格納できる符号なし整数の範囲は、0 から 4,294,967,295 である。2の補数で表現できる符号付き整数は −2,147,483,648 から 2,147,483,647 を格納できる。したがって、32ビットメモリアドレスのプロセッサは4ギビバイトのバイトアドレスメモリを直接アクセスすることができる(アドレス空間が最大4ギビバイトである)。
他のビット数のプロセッサと同様、プロセッサ内部(論理)が32ビットでも、外部(物理)のアドレスバスやデータバスも32ビット幅とは限らない。例えば80386SXでは、プロセッサ内部は32ビットだが、外部アドレスは24ビット幅、外部データバスは16ビット幅である。またPentium Proでは、プロセッサ内部は32ビットだが、外部アドレスバスは36ビット幅、外部データバスは64ビット幅である。またプロセッサ内部においてもSIMD命令などへの対応のために、32ビット以外の構造を持つ場合がある。例えばPentium IIIはSSE命令のために128ビットのレジスタを持っている(あくまで32ビットデータを4個同時に扱っているだけであり、128ビット処理をしているわけではない)。
32ビットは、32ビットプロセッサが主流であった世代を表す言葉でもある。パーソナルコンピュータで当時の主要なオペレーティングシステム(OS)には、OS/2 2.x、Microsoft Windows NT 3.xなどがある。Windows 9x系は32ビットと16ビットの過渡期に設計されたコンシューマー向けハイブリッドOSであり、32ビットOSでありながら、後方互換性のために16ビットのカーネルコードも搭載していた。
主な32ビットプロセッサ
編集有名な32ビットプロセッサとしては、Intel 80386、Intel 486、PentiumシリーズおよびMC68000シリーズがある。MC68000は外部は16ビットであったが、32ビットの汎用レジスタと演算ユニットを持ち、全ての32ビットソフトウェアに対して前方互換性を持っていた。
上記以外の32ビットプロセッサには以下などがある。
- ミップス・テクノロジーズ(MIPS)のR3000(R4000より64ビット)
- IBMのPowerPC(G5やRS64より64ビット)
- ヒューレット・パッカード(HP)のPA-RISC(PA-7000まで。PA-8000より64ビット)
- サン・マイクロシステムズ(SUN)のSPARC(SPARC64より64ビット)
- アドバンスト・マイクロ・デバイセズ(AMD)の386互換プロセッサ(Am386、Am486、Am5x86など)
類似のプロセッサには以下などがある。
- IBMのSystem/360 (32ビットの汎用レジスタを持ち、複数のアドレッシングモードを持っていたが、後に標準となったのは24ビットアドレッシングモードだった)
- IBMのSystem/370-XA (物理は32ビットだが、1ビットを過去の24ビットとの互換性に使用したため、論理アドレッシングは31ビットであり、アドレス空間は最大2Gバイトであった)
ARMアーキテクチャはv7まで32ビットであったが、2011年に発表されたv8で64ビットに対応した[1]。
画像データフォーマット
編集画像データのピクセルフォーマットにおいて、ピクセルあたり32ビットを割り当てることがよくある。RGBカラーの場合、各チャンネルに8ビットを割り当て、さらに8ビットのアルファチャンネルまたはダミーチャンネルを付加した24ビット(32ビット)トゥルーカラー形式(RGBA/RGBXなど)がよく使われる。アルファブレンドをしない場合でも、ピクセルあたりRGBのみの24ビットとせず、ダミーチャンネルを付加して32ビットとする理由は、32ビットプロセッサなどにおいてメモリアドレッシングの効率がよいからである。ただし、透過情報を持たない画像ファイル形式として保存する場合は、容量節約のためにピクセルあたりRGBのみの24ビットとすることもある。
グレースケール画像の輝度表現などに浮動小数点数を使用することもある。例えば単精度浮動小数点数を利用して、ピクセルあたり32ビットのグレースケール画像またはチャンネルあたり32ビットのカラー画像とすることで、データ量は増加するものの、画像のハイダイナミックレンジ合成などが可能となる[2]。TIFF形式で標準的にサポートされているほか、医療用の画像データ通信規格DICOMでも標準化されている。
32ビットファイルフォーマット
編集32ビットファイルフォーマットは、各データの要素(ワード)が32ビット(4バイト)の、バイナリファイルフォーマットである。
Windows Metafile形式(WMF)は16ビットだったが、のちにEnhanced Metafile形式(EMF)で32ビットに対応した。
VulkanやOpenCLにてシェーダープログラムあるいはデバイスカーネルコードの中間表現として使われているSPIR-Vは、ホストエンディアンの32ビットを1ワードとするバイナリ形式である[3]。OpenGLやOpenGL ESのようにアプリケーションの実行時に毎回GLSLのソースコード文字列をグラフィックスドライバーに渡してオンラインコンパイルさせるのではなく、事前にオフラインコンパイルして何らかのファイルに保存しておいた中間表現を読み出してドライバーに直接渡す、といったことができる。