3

昨日、私が考えていたときに、OSが64ビット全体をアドレス指定に使用できないのはなぜですか?私は別の興味深いものを見つけました。インテルCore2Duoプロセッサーを例にとってみましょう。

Intel Core 2DuoプロセッサE8000およびE7000シリーズの「4.2アルファベット順信号リファレンス」から-データセット36のアドレスラインと64のデータラインがあることがわかりました。データシートでは、アドレス行をA [35:3]と呼び、データ行をD [63:0]と呼びます。

これは正確には何を意味しますか?これは、上記からの私の理解です(いくつかの未回答の質問があります):

  1. 以来、36のアドレス行があります。アドレス可能なメモリの合計は2^36 = 64GBであり、各物理メモリの場所(バイト)は36ビットの数値でアドレス指定されます。
  2. なので、A [2:0]は言及されていません。これは、仮想アドレスを物理アドレスに変換した後(アドレステーブルを使用)、MMU(より具体的にはページングユニット)がアドレスラインA [35:3]に最上位33ビットのみを配置することを意味します。RAMは、可能な8バイトすべて(3 LSB、A [2:0])を送信します。これらの8バイト範囲の要求に対して。RAMは同じ8バイトのデータを送信します。右?これは効率化のために行われていると思います。
  3. 次は何が起こる?つまり、MMUには1バイトのデータが必要でしたが、RAMは8バイトを送信しました。どのように処理しますか?
  4. IntelがPAEを有効にしてから、このアドレスバスの幅は36ビットですか?
  5. 新しいプロセッサーデータシート(Intel®Core™i7プロセッサーExtreme Edition )でアドレスバスとデータバスの幅を見つけることができません。:( 助けて!
4

2 に答える 2

2

チップのバイトイネーブル(BE)ピンは、8バイトチャンクのどのビットが実際に関連しているかを指定します。

アドレス0x1にアクセスするには、A [35:3]にすべてゼロを設定し、BE [1]を設定します(BEのピン番号と極性が少し間違っている可能性がありますが、考え方は正しいです)。

バイト0x3:0x0にアクセスするには、A [35:3]にすべてゼロを設定し、BE [3:0]を設定します。

これは質問1、2、3に答えるはずです。

質問4に関しては、実際には36ビットのアドレスを使用できるのはPAEです。後のプロセッサでは、64ビットモードのページングでも同じことが実現できます。

5で助けることはできません...

于 2010-07-12T06:15:37.350 に答える
0

約5:Core i7アーキテクチャーは、チャネルごとに64ビットの幅を持つ3つの(オンチップ)メモリコントローラー(チャネルごとに1つのコントローラー)を使用します。

ただし、もちろん、SSEユニットはL1キャッシュへの128ビットライン(もちろん2つの64ビットChacheライン)で接続されているため、3*64ビットを使用する場所はありません。

3つのチャネルは、同時に異なるアドレスを高速でプリフェッチする場合にのみ役立ちます。

しかし、GPRでは、uは64ビットしか使用できません(64ビットアーキテクチャであるため)。

アドレススペースも36ビットにする必要があります。これは、それほど多くのメモリを接続できない場合に、他のビットが必要になるためです。

于 2010-07-14T13:30:32.917 に答える