web-dev-qa-db-ja.com

「8ビット、16ビット、32ビット、64ビット」システムを決定するのはアドレスバスサイズですか、それともデータバスサイズですか?

私の簡単な理解は次のとおりです。

メモリ(RAM)はビットで構成され、8つずつのグループでバイトを形成します。各グループはアドレス指定でき、バイトアドレス指定可能なメモリです。

アドレスバスは、1バイトのメモリの場所を格納します。

アドレスバスのサイズが32ビットの場合、最大2を保持できます。32 数とそれゆえそれは2まで参照することができます32 メモリのバイト数= 4GBのメモリとそれ以上のメモリは役に立たない。

データバスは、メモリに書き込まれる値/メモリから読み取られる値を送信するために使用されます。サイズ32ビットのデータバスを使用している場合、一度に最大4バイトのメモリへの書き込み/メモリからの読み取りが可能です。このサイズと可能な最大メモリサイズの間に関係はありません。

しかし、私は here を読みます:

ほとんどのシステムはバイトアドレス指定可能ですが、プロセッサができるだけ多くのデータを移動することは理にかなっています。これはデータバスによって行われ、データバスのサイズは、8ビットシステム、16ビットシステム、32ビットシステム、64ビットシステムなどの名前の由来です。データバスが8ビット幅の場合、1回のメモリ操作で8ビットを転送できます。データバスの幅が32ビットの場合(書き込み時に最も一般的)、最大32ビットを1回のメモリ操作で移動できます。

これは、データバスのサイズがOSに8ビット、16ビットなどの名前を付けるものであることを示しています。私の理解の何が問題になっていますか?

16
learner

一般に、データバスのサイズは、プロセッサレジスタのサイズによって決まります。多くの場合、OSタイプを決定するのはプロセッサレジスタのサイズです(64対32)。物理的なバスサイズは技術的にこれとは異なる場合があります(例として8088)。ただし、見積もりの​​作成者が2つを関連付ける可能性は非常に低いです。

一般に、ポインタサイズはレジスタサイズにも従いますが、物理アドレスバス幅はより大きく(20の8086 16ビットの場合のように)、またはより小さく(48のAMD 64のように)できます。

12
Dougvj

これは、プロセッサ内のレジスタサイズとメモリ処理です。

トリックを使用すると、1つの16ビットプロセッサに20ビットのアドレスバスがあり、プロセッサの外部メモリではありません。

1
Fiasco Labs

「純粋な」32ビットシステムまたは64ビットシステムはないため、用語はあくまでも近似値です。

例えば。あなたの声明を取る"メモリ(RAM)はビットで構成され、バイトを形成する8のグループであり、それぞれアドレス指定できる"。それはあまり一般的ではありません。 PCにはRAM DIMMモジュールがあり、64ビット幅です。90年代に戻ると、SIMMがあり、32ビット幅でした。

一部のシステムでは、DIMMはペアにする必要があるか、ペアにすることができます(「ギャング」/「デュアルチャネル」)。これは128ビットのデータバスです。このコンセプトは、AMDおよびIntelのいわゆる「64ビット」プロセッサよりも古いものです。

単一のDIMMからの64ビットのグループは、実際に8バイトに分割できます。それはあなたのCPUによってかなり透過的に行われます。また、64ビットを4 * 16ビット、2 * 32ビットに分割したり、64ビットすべてを単一の変数として使用したりすることもできます。

ただし、最も重要な問題は住所の幅です。メモリ内のすべてのバイトは独自のアドレスを持っていますが、すべてのビットを持っているわけではありません。つまり、単一のDIMMから取得する64ビットには8つのアドレスがあります。これらの最小値は常に8の倍数です。今、CPUはいくつの異なるアドレスをサポートしていますか?少なくとも理論的には、2つの一般的な答えがあります。一部のCPUのサポート232 異なるアドレス、一部はサポート264。この違いは、32ビットシステムと64ビットシステムの最も一般的な違いです。

実際には、64ビットシステムは現在2未満をサポートしています。64 RAMのバイト。それは手頃な価格ではなく、とにかく通常のPCには適合しません。それだけのメモリは数百万トンにもなります!

1
MSalters

両方とも。

CPUのビットは通常、その内部レジスターのサイズの参照です。 32ビットCPUには32ビットのレジスタがあり、チャンクに分割される場合と分割されない場合があります。

すべてのデータをメモリから直接レジスタに転送できるため、32ビットのデータバスを備えた32ビットCPUを使用することは理にかなっていますが、データバスのサイズは任意です。そのため、32ビットCPUは通常、32ビットデータバスを備えており、データを簡単に転送できます。

また、2つの理由で32ビットアドレスバスを使用することにも意味があります。メモリバスを格納するのに十分な大きさのレジスタがないか、CPUがメモリアドレス指定に専用のレジスタを必要とするため、アドレスバスが大きくなると間接アドレス指定が難しくなります。Intel8080などの古いCPUは8ビットで、 16ビットアドレスバス。反対に、レジスタよりも小さいアドレスバスは、リソースの無駄遣いです。より小さなアドレスバスを使用するマイクロコントローラがあります。

0
h0m3