私の歴史と今

振り返ると恥ずかしくなるのが私の歴史。だけどそのときは真面目に書いていた訳でね。そんな今の私を書いていく。

32bitと64bitの違いを知りたい

WEB上で質問者が多いんだけど、その質問に対する回答だけでは深いところまでわからない。まあ、自分の知識が覚束ないからなんだけど。
わかってるのは、使用可能なメモリが、32bitの場合は2の32乗=4GBで、64bitの場合は2の64乗=4EB(エクサバイト)、ということ。
なんでそうなるのかな。そもそも、CPUの32bitとか64bitというのは、一度に処理できるデータ量らしい。「一度」というのは、1クロックあたりのこと。64bitのデータ量で扱えるメモリアドレスは同様に64bit。メモリアドレスの数が64bitの場合のメモリサイズは2の64乗Byte(メモリアドレスは1Byteごとに振られる)。だから、64bitCPUの使用可能なメモリサイズは2の64乗Byteになるのかな??
実際はOSの制限(なんの制限かは知らないけど)で、Windowsの場合は128GBらしい。
IT用語辞典には次のように書かれてあった。

レジスタとは、マイクロプロセッサ内部にある、演算や実行状態の保持に用いる記憶素子。動作が極めて高速だが容量が小さい。一つのレジスタが記憶できる情報量(レジスタ長)が32ビットであるプロセッサ(CPU)を32ビットプロセッサ(32ビットCPU)という。レジスタは役割によって、アキュムレータ、スタックレジスタ、プログラムカウンタ、割り込みレジスタ、フラグレジスタなどの種類があり、機能が限定されているものがある。機能が限定されていないレジスタを汎用レジスタという。

http://e-words.jp/w/E383ACE382B8E382B9E382BF.html

レジスタが大事なのね、つまり。

レジスタ CPU
32bit 32bit
64bit 64bit

IT用語辞典に書かれてあるレジスタの種類

レジスタっていっても、少ししかわからんな。でも基本情報レベルだ。
ああ、でもわからん。一度に処理できる量が32bitだった場合、メモリアドレスだけで32bitになっちゃうよな。命令はどうなる?例えば、A番地の値をB番地にコピーするというような命令(あるかどうか不明)があったら、COPY A B というようなものになると思うけど、その場合、COPYという命令に数bit使い、AとBで64bitになってしまう。溢れまくってる。
じゃあ、メモリアドレスは一度レジスタに移して、レジスタで計算するのかな。AをレジスタA'にコピーし、BをレジスタB'にコピーし、COPY A' B'みたいな。そうすれば32bitに収まる。いかんいかん、妄想だ。本当のところを知りたいな。

メモ書き

    1. WOW64 Win64の32bitエミュレータ
    2. AMD64 64bitCPUで32bitを扱う技術(AMD版)
    3. EM64T 64bitCPUで32bitを扱う技術(Intel版)=intel 64 != IA 64