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


15

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

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

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

アドレスバスのサイズが32ビットの場合、最大2 32個の数値を保持できるため、最大2 32バイトのメモリ= 4GBのメモリとそれ以上のメモリは参照できません。

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

しかし、私はそれをここで読みました:

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

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


何が私の理解が間違っている?」 -あなたが作るしようとしている1つの定義が異なるものをフィット。ビットサイズ記述子は、さまざまな目的でさまざまな時点で使用されています。
おがくず

1
それは製造業者が言うことを意味します。通常、これはレジスタサイズに似たものになりますが、それを偽装/スウィズルする方法はたくさんあります。
ダニエルRヒックス

回答:


12

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

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


2
物理アドレスバスの幅はより大きくすることができます」-特に4ビットおよび8ビットプロセッサの場合!
おがくず

はい。しかし、私はそれを簡単に理解しようとしています。アドレスバスのサイズで説明できるように、データバスのサイズと最大可能メモリの間に関係は見つかりませんでした。そのため、答えは「バスサイズではなくデータバスサイズである」(通常はプロセッサのレジスタと同じ大きさであるため)と思われます。何か不足していますか?
学習者

@learnerそれは正しい、混乱はシステムの最大ポインタサイズがプロセッサレジスタのサイズであるという事実にもあります。プロセッサレジスタのサイズによって制限されることに相当するほとんどの最新システムと同様に、フラットアドレス空間で、したがって、指摘したアドレス指定の制限。一部のプロセッサ、特に古いプロセッサでは、これを回避するために特別なセグメント化されたアドレス指定などのトリックを利用していました。
-Dougvj

@Dougvjわかりました、わかりやすくなっています。しかし、なぜアドレスバスのサイズをプロセッサのレジスタサイズと異なるものにしたのでしょうか?それらを同じに保つことは、もっと理にかなっていないでしょうか?そして、私はアドレスが保存されている場所について混乱していますか?(アドレスバスまたはプロセッサレジスタ?)ありがとう
学習者

1
@learnerそれは正しいです。要約すると、OSの指定はプロセッサレジスタのサイズと正確に対応しています。アドレスバスは、プロセッサレジスタと同じサイズである場合とそうでない場合があるため、可能な最大のアドレス可能なRAMはそれとは無関係です。ただし、プロセッサの内部には、ほぼ常に、プロセッサレジスタと同じサイズのポインタを含む何らかの種類のアドレス指定スキームがあります。
-Dougvj

1

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

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


1

「純粋な」32ビットまたは64ビットシステムは存在しないため、用語はいずれにしても単なる近似にすぎません。

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

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

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

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

実際、今日の64ビットシステムは2 64バイト未満のRAMをサポートしています。それは手ごろな価格で、とにかく通常のPCには収まりません。そのようなメモリは数百万トンの重さになるでしょう!


アドレスが保持されるプロセッサレジスタですか、それともアドレスバスですか?「一部のCPUは2 ^ 32の異なるアドレスをサポートしています...」と言います。厳密には何によって制限されていますか?
学習者

通常、レジスタサイズとMMU(メモリ管理ユニット、メモリを直接担当するCPUの一部)の両方。
–MSalters

0

実際に両方。

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.