この答えはおそらく9年遅れていますが、上記の答えは質問に適切に答えていないと思います。
32ビットおよび64ビットの定義は、標準化団体によって十分に定義または規制されていません。それらは単に直感的な概念です。32ビットまたは64ビットCPUは通常、CPUの命令セットアーキテクチャ(ISA)のネイティブワードサイズを指します。では、ISAとは何ですか?ワードサイズとは何ですか?
ISAとワードサイズ
ISAは、CPUによって使用されるマシン命令/アセンブリニーモニックです。これらは、ハードウェアが何をするかを直接指示するソフトウェアの最低レベルです。例:
ADD r2,r1,r3 # add instruction in ARM architecture to do r2 = r1 + r3
# r1, r2, r3 refer to values stored in register r1, r2, r3
# using ARM since Intel isn't the best when learning about ISA
ワードサイズの古い定義は、CPUが1つの命令サイクルで計算できるビット数です。現代の文脈では、ワードサイズはレジスタのデフォルトサイズまたは基本命令が作用するレジスタのサイズです(この定義では多くのあいまいさを保っていますが、完全には一致しない複数のアーキテクチャにわたる直感的な概念ですお互いに)。例:
ADD16 r2,r1,r3 # perform addition half-word wise (assuming 32 bit word size)
ADD r2,r1,r3 # default add instruction works in terms of the word size
PAEを搭載したPentiumProCPUのビット数の例
まず、汎用命令のさまざまな単語サイズ:
- 算術論理命令:32ビット(乗算と除算には1サイクル以上かかるため、これはワードサイズの古い概念に違反することに注意してください)
- 分岐、ジャンプ命令:間接アドレス指定の場合は32ビット、即時アドレス指定の場合は16ビット(ここでも、CISC ISAのため、Intelは優れた例ではなく、ここでは十分に複雑です)
- 移動、ロード、保存:間接の場合は32ビット、即時の場合は16ビット(これらの命令には数サイクルかかる場合があるため、ワードサイズの古い定義は保持されません)
次に、ハードウェアアーキテクチャのバスとメモリのアクセスサイズ:
- 仮想アドレス変換前の論理アドレスサイズ:32ビット
- 仮想アドレスサイズ:64ビット
- 変換後の物理アドレスサイズ:36ビット(システムバスアドレスバス)
- システムバスデータバスサイズ:256ビット
したがって、上記のすべてのサイズから、ほとんどの人はこれを直感的に32ビットCPUと呼んでいます(ALUワードサイズとアドレスビットサイズに関する明確なコンセンサスはありませんが)。
ここで注目すべき興味深い点は、昔(70年代と80年代)には、ALUワードサイズがメモリアクセスサイズとは大きく異なるCPUアーキテクチャがあったことです。また、非汎用的な指示の癖についても扱っていないことにも注意してください。
Intelx86_64に関する注意
一般に信じられていることとは異なり、x86_64は本当の意味での64ビットアーキテクチャではありません。これは、64ビット演算を実行できる拡張命令をサポートする32ビットアーキテクチャです。また、64ビットの論理アドレスサイズもサポートしています。Intel自身がこれをISAIA32eと呼んでいます(IA32は拡張され、IA32は32ビットISAです)。
参考文献
ARM命令の例
Intelアドレッシングモード