誰かがアドレス可能Word
との違いを説明できますか? Byte
メモリサイズなどとの関係は?
3 に答える
メモリユニットはアドレス可能です。それがメモリを使用できる唯一の方法です。
実際には、メモリはバイト アドレスしか指定できません。その意味は:
- バイナリ アドレスは、常に
a single
バイトのみを指します。 - ワードは、CPUのデータ バスに応じて、単なるバイトです。
a group of
2
4
8
size of
メモリ操作を完全に理解するには、CPUのさまざまなレジスタとRAMのメモリ ポートに精通している必要があります。私はあなたがそれらの意味を知っていると仮定します:
- MAR(メモリアドレスレジスタ)
- MDR(メモリデータレジスタ)
- PC(プログラムカウンタレジスタ)
- MBR(メモリバッファレジスタ)
RAMには、次two
の種類のメモリ ポートがあります。
32-bits
データ/アドレス用8-bit
OPCODEの場合。
CPUがアドレスからワード(たとえばbytes )を読み取りたいとします。CPU はMARにアドレスを書き込み、メモリ読み取り信号をメモリ コントローラ チップに送信します。アドレスと読み取り信号を受信すると、メモリ コントローラはデータ バスをポートに接続し、アドレスから開始してポートからMDRに流れます。a
4
xyz
32-bit
4 bytes
xyz
CPUが次の命令をフェッチしたい場合、アドレスをPC レジスタに置き、フェッチ信号をメモリ コントローラに送信します。アドレスとフェッチ信号を受信すると、メモリ コントローラはデータ バスを8
ビット ポートに接続し、受信したアドレスにあるa single
バイト長の オペコードがRAMからCPUのMDRに流れます。
これが、特定のレジスタがメモリ アドレス指定可能またはバイト アドレス指定可能であるという意味です。では、( byte no ) ではなく、単語を読むつもりで MAR に入力するとdecimal 2
どうなるbinary
でしょうか? 2
2
単語noは、マシンのバイト、、、を意味2
します。実際の物理メモリでは、バイトアドレスのみが可能です。そこで、ワードアドレシングの扱い方にコツがあります。 4
5
6
7
32-bit
MARがアドレス バスに配置されると、そのビットはアドレス ライン32
にマップされません(それぞれ)。代わりに、MARはアドレス バスに配線され、MARはアドレスバスに配線されます。MARの上位は破棄されます。なぜなら、上位のワード アドレスだけが必要であり、そのいずれも私たちのマシンにとって正当ではないからです。
このマッピングを使用すると、MARがの場合、バスに配置され、MARがの場合、バスに配置されます32
0-31
bit 0
line 2
bit 1
line 3
2 bits
2^32
32 bit
1
address 4
2
address 8
など。
最初は理解するのが少し難しいです。Andrew Tanenbaumsの構造化されたコンピューター組織からそれを学びました。
この画像は理解しやすいはずです: http://i.stack.imgur.com/rpB7N.png
簡単に言えば、
• バイト アドレッシング方式では、最初のワードはアドレス 0 から始まり、2 番目のワードはアドレス 4 から始まります。
• ワード アドレス方式では、最初のワードのすべてのバイトがアドレス 0 に配置され、2 番目のワードのすべてのバイトがアドレス 1 に配置されます。
一度に 1 バイトずつデータを処理するアプリケーションを考えると、バイト アドレス指定可能性の利点は明らかです。バイト アドレス指定可能なシステムでの 1 バイトのアクセスには、1 つのアドレスを発行するだけで済みます。16 ビット ワード アドレス指定可能システムでは、最初にバイトを含むワードのアドレスを計算し、そのワードをフェッチしてから、2 バイト ワードからバイトを抽出する必要があります。バイト抽出のプロセスはよく理解されていますが、バイトに直接アクセスするよりも効率的ではありません。このため、最新のマシンの多くはバイト アドレス指定が可能です。
アドレス可能度は、独自のアドレスを持つメモリ単位のサイズです。また、隣接するメモリに影響を与えずに変更できる最小のメモリ チャンクでもあります。
例: バイトが通常の 8 ビットで、ワードサイズ = 4 バイトのマシン。ワードアドレス指定可能なマシンの場合、 の 2 バイト目のアドレスのようなものはありませんint
。文字列 (たとえば、 のような配列char str[]
) の処理は、文字をまとめて格納するため、不便になります。変更とstr[1]
は、それを含む単語をロードし、シフト/および/または操作を行って変更を適用し、ワードストアを実行することを意味します。
これは、アラインされていないワードのロード/ストアを許可しないマシンとは異なることに注意してください (ワード アドレスの下位 2 ビットを 0 にする必要があります)。このようなマシンには通常、バイトロード/ストア命令があります。私たちはそれさえないマシンについて話している.
CPU アドレスには実際には下位ビットが含まれている可能性がありますが、常にゼロにする (または無視する) 必要があります。ただし、それらがゼロであることを確認した後、 は破棄される可能性があるため、メモリ システムの残りの部分は、2 つの隣接するワードが 1 (4 ではなく) 異なるアドレスを持つワード アドレスのみを認識します。ただし、レジスタが 64k の異なるアドレスしか保持できない 16 ビット CPU では、おそらくこれを行うことはありません。それぞれの個別の CPU アドレスは、下位ビットを破棄する代わりに、異なる 2 バイトのメモリを参照します。2B ワード アドレス可能メモリでは、バイト アドレス可能メモリの 64kiB ではなく、128kiB のメモリをアドレス指定できます。
興味深い事実: ARM は、アラインされていないワード ロードのシャッフル コントロールとして、アドレスの下位 2 ビットを使用していました。(ただし、常にバイトロード/ストア命令がありました。)
以下も参照してください。
ビットアドレス指定可能なメモリが存在する可能性がありますが、存在しないことに注意してください。8 ビット バイトは現在、ほぼ普遍的に標準になっています。(古代のコンピューターは、より大きなバイトを持っている場合がありました。ウィキペディアの Byte 記事の履歴セクションを参照してください。)