31ビットアーキテクチャとは
31
ビットとは、連続した31個の
ビット(2進数の桁)で構成され、最大で2,147,483,648(2の31乗)までの数を表現できるデータ形式です。このアーキテクチャは、特にコンピュータの分野において、整数、
メモリアドレス、その他のデータサイズが最大31
ビット幅であることを指します。
31
ビットCPUは、31
ビットサイズのレジスタ、アドレスバス、データバスを持つ
CPUを指します。これらの要素が31
ビット幅であることで、
CPUが一度に処理できるデータの量やアクセスできるメモリ空間の大きさが制限されます。
31ビットアーキテクチャの歴史
1983年、
IBMは
メインフレーム用のSystem/370-XAアーキテクチャを導入し、従来の
24[[ビット]]アドレッシングから31
ビットアドレッシングへと拡張しました。これにより、アドレス空間は128倍に広がり、プログラムは従来の16MBの上限を超えるメモリを利用できるようになりました。
初期のSystem/360やSystem/370では、アドレスは
32[[ビット]]の
ワードに格納されていましたが、実際には
24[[ビット]]のみが使用され、上位
8[[ビット]]は無視されていました。S/370-XAでは、この無視されていた
ビットもアドレスとして利用されるようになりました。
この移行は、既存のプログラムへの影響を最小限に抑えるために、巧妙に行われました。
アセンブリ言語のプログラムでは、アドレスを含む
ワードの上位1バイトをタグなどの目的に利用しているものがありました。
IBMは、最上位
ビットの状態によって、31
ビット全体をアドレスとして使用する拡張アドレッシングと、従来の
24[[ビット]]アドレッシングを切り替える仕組みを導入しました。
最上位
ビットがオンの場合、続く31
ビット全てがアドレスとして使用され、最上位
ビットがオフの場合、従来の
24[[ビット]]のみがアドレスとして使用されるという仕組みです。これにより、既存のプログラムは最小限の変更で31
ビットアドレッシングを利用できるようになりました。
1990年代には、後継の370/ESA、390/ESA、ESA/390、S/390アーキテクチャが登場しましたが、これらも31
ビットの仮想記憶とアドレッシングモードを維持しました。
31ビットアーキテクチャの限界
31
ビットアーキテクチャでは、アドレス空間が最大2GBに制限されるため、大規模なプログラムや大量のデータを扱う場合には限界がありました。そのため、
IBMは
2000年に
64[[ビット]]のz/Architectureを発表し、この問題を解決しました。
z/Architectureでは、最上位
ビットを特別な目的に使用せず、
64[[ビット]]全てをアドレスとして利用します。これにより、アドレス空間は大幅に拡大し、2GBの壁は解消されました。しかし、z/Architectureは
24[[ビット]]および31
ビットのコードとの互換性を維持しており、これらのコードを
64[[ビット]]コードと同時に実行できます。
Linuxも、
1999年に既存の
32[[ビット]]データと31
ビットアドレッシングのハードウェア用に
Linux/390をリリースしました。初期の
Linuxアプリケーションは、31
ビットアドレッシングの制約を受けましたが、現在の
64[[ビット]]ハードウェア、
64[[ビット]]
Linux、
64[[ビット]]アプリケーションの組み合わせでは、この制約はなくなっています。ただし、
64[[ビット]]
Linuxディストリビューションでは、現在でも31
ビットプログラムをサポートしています。
31ビットアーキテクチャの特殊な用途
IBMの31
ビットアーキテクチャでは、拡張記憶(expanded storage)がサポートされており、31
ビットコードは主記憶装置とは別の追加メモリを使用することができました。ただし、各
インスタンスは最大2GBの作業アドレススペースに制限されていました。また、31
ビットの
Linuxは、2GBを超えるメモリをRAMディスクのように割り当てることができます。
Unicodeにおける31ビット
UnicodeのUCS-4は、
32[[ビット]]ではなく31
ビットのコードとして設計されていました。これは、最上位
ビットを特別な目的に使用し、他の形式との互換性を容易にするためでした。
31ビットアーキテクチャのまとめ
31
ビットアーキテクチャは、かつて
メインフレームの世界で重要な役割を果たしましたが、現在は
64[[ビット]]アーキテクチャが主流となっています。しかし、その歴史と設計思想は、コンピュータアーキテクチャの進化を理解する上で重要な要素です。
関連事項