27

誰かがアドレス可能Wordとの違いを説明できますか? Byteメモリサイズなどとの関係は?

4

3 に答える 3

37

メモリユニットアドレス可能です。それがメモリを使用できる唯一の方法です。

実際には、メモリはバイト アドレスしか指定できません。その意味は:

  • バイナリ アドレスは、常にa single バイトのみを指します。
  • ワードは、CPUのデータ バスに応じて、単なるバイトです。a group of 248size of

メモリ操作を完全に理解するには、CPUのさまざまなレジスタとRAMメモリ ポートに精通している必要があります。私はあなたがそれらの意味を知っていると仮定します:


  • MARメモリアドレスレジスタ
  • MDRメモリデータレジスタ
  • PCプログラムカウンタレジスタ
  • MBRメモリバッファレジスタ

RAMには、次twoの種類のメモリ ポートがあります。

  1. 32-bitsデータ/アドレス
  2. 8-bitOPCODEの場合。

CPUがアドレスからワード(たとえばbytes )を読み取りたいとします。CPU はMARにアドレスを書き込み、メモリ読み取り信号メモリ コントローラ チップに送信します。アドレス読み取り信号を受信すると、メモリ コントローラデータ バスポートに接続し、アドレスから開始してポートからMDRに流れます。a 4 xyz32-bit 4 bytes xyz

CPUが次の命令をフェッチしたい場合、アドレスPC レジスタに置き、フェッチ信号メモリ コントローラに送信します。アドレスとフェッチ信号を受信すると、メモリ コントローラはデータ バス8ビット ポートに接続し、受信したアドレスにあるa singleバイト長の オペコードがRAMからCPUMDRに流れます。

これが、特定のレジスタメモリ アドレス指定可能またはバイト アドレス指定可能であるという意味です。では、( byte no ) ではなく、単語を読むつもりで MAR に入力するとdecimal 2どうなるbinaryでしょうか? 22

単語noは、マシンのバイト、、、を意味2します。実際の物理メモリでは、バイトアドレスのみが可能です。そこで、ワードアドレシングの扱い方にコツがあります。 456732-bit

MARがアドレス バスに配置されると、そのビットはアドレス ライン32にマップされません(それぞれ)。代わりに、MARアドレス バスに配線され、MARはアドレスバスに配線されます。MARの上位は破棄されます。なぜなら、上位のワード アドレスだけが必要であり、そのいずれも私たちのマシンにとって正当ではないからです。 このマッピングを使用すると、MARの場合、バスに配置され、MARの場合、バスに配置されます32 0-31 bit 0 line 2 bit 1 line 32 bits2^3232 bit
1address 42address 8など。

最初は理解するのが少し難しいです。Andrew Tanenbaums構造化されたコンピューター組織からそれを学びました。

于 2011-02-15T01:00:16.083 に答える
9

この画像は理解しやすいはずです: http://i.stack.imgur.com/rpB7N.png

簡単に言えば、

• バイト アドレッシング方式では、最初のワードはアドレス 0 から始まり、2 番目のワードはアドレス 4 から始まります。

• ワード アドレス方式では、最初のワードのすべてのバイトがアドレス 0 に配置され、2 番目のワードのすべてのバイトがアドレス 1 に配置されます。

一度に 1 バイトずつデータを処理するアプリケーションを考えると、バイト アドレス指定可能性の利点は明らかです。バイト アドレス指定可能なシステムでの 1 バイトのアクセスには、1 つのアドレスを発行するだけで済みます。16 ビット ワード アドレス指定可能システムでは、最初にバイトを含むワードのアドレスを計算し、そのワードをフェッチしてから、2 バイト ワードからバイトを抽出する必要があります。バイト抽出のプロセスはよく理解されていますが、バイトに直接アクセスするよりも効率的ではありません。このため、最新のマシンの多くはバイト アドレス指定が可能です。

于 2016-02-06T04:51:05.997 に答える
3

アドレス可能度は、独自のアドレスを持つメモリ単位のサイズです。また、隣接するメモリに影響を与えずに変更できる最小のメモリ チャンクでもあります。

例: バイトが通常の 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 記事の履歴セクションを参照してください。)

于 2016-08-25T01:27:33.873 に答える