32ビット: 32-bit)は、連続した32個(桁)のビット(4オクテット)であり、バイナリで最大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 IIISSE命令のために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 80386Intel 486PentiumシリーズおよびMC68000シリーズがある。MC68000は外部は16ビットであったが、32ビットの汎用レジスタと演算ユニットを持ち、全ての32ビットソフトウェアに対して前方互換性を持っていた。

上記以外の32ビットプロセッサには以下などがある。

類似のプロセッサには以下などがある。

  • IBMSystem/360 (32ビットの汎用レジスタを持ち、複数のアドレッシングモードを持っていたが、後に標準となったのは24ビットアドレッシングモードだった)
  • IBMSystem/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ビットに対応した。

VulkanOpenCLにてシェーダープログラムあるいはデバイスカーネルコードの中間表現として使われているSPIR-V英語版は、ホストエンディアンの32ビットを1ワードとするバイナリ形式である[3]OpenGLOpenGL ESのようにアプリケーションの実行時に毎回GLSLのソースコード文字列をグラフィックスドライバーに渡してオンラインコンパイルさせるのではなく、事前にオフラインコンパイルして何らかのファイルに保存しておいた中間表現を読み出してドライバーに直接渡す、といったことができる。

脚注

編集

関連項目

編集

外部リンク

編集