CPUに16ビットアドレスバスと8ビットワードがある場合、どのくらいのメモリをアドレス指定できますか?


23

私は学期の終わりの試験のために勉強していて、次の質問と混同しています。CPUに16ビットアドレスバスと8ビットワードがある場合、KB単位のメモリ容量はどれくらいですか?私の理解では、64KBに対応できることがわかりますが、これを行うには2 ^ 16 = 65,536を使用しました。その計算では実際に8ビットワードが考慮されなかったため、それが正しいかどうかはわかりません。また、8ビットワードとはどういう意味ですか?

乾杯


16
間接的に使用しました。アドレス可能なメモリの合計量は2 ^ 16 * 8ビットです。1バイト= 8ビットなので、それは2 ^ 16バイト、つまり65536バイト、つまり64 KiBです。Kは1000のSIプレフィックスです。1024を意味する場合は、Kiを使用します。
jcaron

2
SIプレフィックスキロバイト(1,000バイト)とバイナリプレフィックスキビバイト(1,024バイト)の違いに注意してください。2 ^ 16 = 65,536 = 64キビ〜65.5キロ。求められる答えは、おそらくキロがキビを意味するものですが、違いが本当に重要な場合があります。完全に確実にしたい場合は、安全なルートを取り、バイト数を指定し、教師にとって便利なキロバイトやキビバイトなどのより便利な単位への翻訳を提供します。Wikipedia:Binary prefixを比較します。通常、メモリチップは、たとえば65,536x8ビットを指定します。
CVn


3
銀行のスワッピングは想定していないと思います。ほとんどの16ビットCPUは何らかの形のバンクスワッピングを使用しているため、これに答えるのは非常に困難です。
ジョシュア

1
@MichaelKjörling質問は、常に1024バイトを意味していたKBと言います。
カスペルド

回答:


38

大多数のアーキテクチャでは、ワードは、1回の操作でワーキングメモリとの間で転送できるデータの最大部分です。

メモリ内の場所を指定するために使用される可能な最大アドレスサイズは、通常、ハードウェアワードと呼ばれます。

そのため、CPUは64KB(2 ^ 16)をアドレス指定できますが、8ビットの単一操作でしか転送できません。


3
この答えは先生が求めているものだと思いますが、実際は正しいですか?PAEのようなものを使用して、3レベルの階層(またはそれ以上)でCPUが64KB以上にアクセスできるようにすることはできませんか?私はハードウェアの専門家ではありませんが、Commodore 128は、RAMバンクの切り替えを許可することで、8ビットワード、16ビットバスでこのようなことすらできませんでしたか?
davidgo

5
「1回の操作で転送できるのは256B(2 ^ 8)だけです」という文を理解していないか 1回の操作で転送できるのは1ワード= 1バイト= 8ビットのみです。
jcaron

8
@davidgoはまだPAEがアドレスバスを適切なサイズにする必要があります。PAEをサポートするIntel CPUは、36ビットのアドレスバスを備えています。
ドミトリーグリゴリエフ

6
PAEは、多かれ少なかれ、最新のx86 CPUに固有のブランド/機能名です。はい、間接的に大量のメモリを間接的にアドレス指定するスキーム(XMSなど)が実装されています。これらは最終的に、メモリサブシステムを周辺機器のように扱います。また、...古い学校のx86のセグメント化されたメモリモデルを参照してください
rackandboneman

6
@Overmindは、答えを少し明確にする必要があります。単一のBをユニットとして実際に使用している人はいません。その理由はまさにここで起こったことです。OPは「8ビットワード*-各ワードは8ビット(1バイト)であり、1回の操作で転送できるのは256です。256は、転送量ではなく、各ワードが
取り

21

マシンワード、または一般的に単なるワードは、CPUが一般的な命令を使用して全体として操作できるデータの最大単位です。これは、メモリのアドレス指定とは関係ありません。

重要なのはアドレス解決単位です。これは一般に16/32/64ビットアーキテクチャでも8ビットバイトです。マシンのワードサイズと同じである必要はありませんが、おそらくあなたの場合です。

16ビットのアドレスバスと組み合わせた8ビットのアドレス指定可能なユニットは、CPUがアドレス指定できる64KiBのRAMになります。


3
しかし、アドレス解決の単位が16ビットのマシンを使用しました。(つまり概念は意味があります。)
マーティンボナーはモニカをサポートします

4
@MartinBonnerそれにもかかわらず、それはCPUワードサイズに直接関連していません。
glglgl

1
@glglgl-それは非常に関連しています。私はそこにあると信じていない任意ののアドレスユニットがありませんアーキテクチャのいずれかの 8ビットまたはその単語のサイズは。
ジュール

1
CPUが全体として操作できる最大の単位は単語であるという声明には同意しません。Intel i7には64ビットのデータバスがあり、256ビットのSIMD命令を使用できます。Wikipediaが正しい場合、単語はCPU内部のものではなく、データバス幅を指します。
トーマスウェラー

1
@ThomasWeller:8088には8ビットのデータバスがありますが、それでも16ビットの命令があります。実際、それはより小さなデータバスを備えた8086です。注:データバスの幅と実際の転送も異なります(データの不整合を考えてください)。
ジャコモカテナッツィ

1

また、8ビットワードとはどういう意味ですか?

コンテキストでは、ワードサイズはメモリバスを説明するためにアドレスサイズと一緒になります。64ビットの場所を選択できるように、メモリには16ビットがグリーアウトされています。次に、各場所には8ビットが含まれます。

ここでのワードサイズは、CPU計算ユニットのサイズと一致する場合と一致しない場合があり、これはアドレス指定の論理的な粒度と一致する場合と一致しない場合があります。

たとえば、CPUは16ビットバスをアドバタイズする場合があります(この目的のため)。命令で16ビットアドレスを使用し、例のように64kiがあります。ただし、15ビットのアドレスバスと16ビットのデータバスがあります。32kiのアドレスのみが必要で、各場所で常に2バイトを取得します。(命令が1バイトを必要とする場合、欠落している最小ビットでアドレスをディスパッチし、そのステップで両方のバイトをフェッチしてから、目的のアドレスの最小ビットを見て、使用する半分を決定します。)

他の人が言及したバンクスイッチング、PAEなどはここでは関係ないことに注意してください。メモリ管理ユニットは16ビットアドレスを使用し、20ビットのハードウェアアドレスを持っている場合があるため、CPUは、アドレス可能なRAMチップの実際の20ビットアドレス範囲を利用するために、物事を切り替えてマッピングする必要があります。

回答には必ず単位を指定してください。 「64ki」。なにかの?8ビットワードで、(まだ)64ki バイトのアドレス可能なRAMになります。そのステップは混乱を取り除き、このような些細な問題を作ります。


0

計算にもワードサイズを使用する必要があります。答えは64 KBです。

2 ^ 16ワードをアドレス指定でき、各ワードは8ビット(= 1バイト)です。したがって、64 KBです。

ワードサイズが16ビットの場合。答えは128 KBです。


1
計算は、(2 ^ 32)* 4(16GB)ではなく2 ^ 32バイトのメモリ(4GB)をアドレス指定できる一般的な32ビットCPUには当てはまりません。
ドミトリーグリゴリエフ

最新のCPUは、より大きな「行」に対応し、一致するアドレス行が少なくなっています。質問は、物事の物理的な側面であるアドレスバスについて語っています。したがって、そのバスのワードサイズ(CPUレジスタサイズではありません)を掛けることは正しいです。
JDługosz

0

これには2つの側面があります。インストラクターがあなたに伝えたいことと、現実とは何ですか。

まず、あなたのインストラクターがあなたに彼に伝えたいと思われるもの。

「16ビットは2 ^ 16個のメモリロケーションをアドレス指定でき、各ロケーションは8ビットです。したがって、524288ビット(65536オクテット)メモリをアドレス指定できます。」

ただし、これはかなり単純化された世界観を反映しています。現実はより複雑で、決定的な答えを出すには、より多くの情報が必要です。実際のシステムがこれよりも複雑になる方法には、次のものがあります。

  • 多くのプロセッサには専用のIOマップがないため、メモリアドレス空間の一部をメモリ以外のものに使用する必要がある場合があります。
  • プロセッサの「ワードサイズ」は、メモリデータバスの幅やメモリのアドレス可能な最小単位と同じではありません。
  • 一部のバスでは、さまざまなサイズのデータ​​ユニットを移動できます。これには、メインアドレスバスのビットによって処理される場合とされない場合がある、さらにアドレス指定が必要です。
  • 一部のバスは、同じラインで異なる信号を多重化します。たとえば、SDRAMは同じ行を2回使用して「行アドレス」と「列アドレス」を送信します。
  • 多くのシステムは、バンクスイッチングアプローチを使用して、プロセッサがネイティブに対応できるよりも多くのメモリにプログラムがアクセスできるようにしました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.