物理RAMへのメモリマッピング(ハードウェア)


0

メモリ管理ユニットが変換テーブルを使用して論理アドレスを物理アドレスに変換する場合、物理アドレスはどのようにRAM内のそのアドレスにマッピングされますか。私が言いたいのは、他のアドレスではなく、そのアドレスにどのように行くのですか?特定のメモリアドレスには、他のアドレスから分離する何らかの種類の一意性がありますか?または、RAMの2バイトごとに1バイトをアドレスとして、もう1バイトをデータとして保存しますか?

回答:


2

はい、すべてのメモリアドレス(物理および仮想)は一意です-一意の番号。通常、メモリアドレスの識別には4〜8バイトが使用されます。これにより、アドレススペースと呼ばれるアドレス範囲が作成されます。CPUアーキテクチャが32ビットのアドレス空間を使用する場合、アドレスの範囲は04294967295です。CPUアーキテクチャが64ビットアドレス空間を使用する場合、アドレスの範囲は018446744073709551615です。

変換テーブルには、物理​​メモリアドレスと仮想メモリアドレスの2つのアドレスしか格納されていません。アドレスは、ページと呼ばれるメモリ内の大きなセクションの最初のバイトを指します。通常、このページのサイズは大きく、通常は4KBですが、標準ではありません。このように、変換テーブルはメモリ内のすべてのバイトのアドレスを保存する必要がありません(メモリ範囲が255バイトを超える場合、実際には事実上不可能です)。


うーん。そして、もう一つ疑問がありました。プロセスが実行中であり、cpuがプログラムカウンターに格納するアドレスを生成すると想像してください。これは、プロセス内の次の命令のアドレスです。明らかに、これらの命令はすべて、RAM内のランダムなアドレスにあります。したがって、次の命令をフェッチする必要がある場合、アドレスレジスタの内容、つまりアドレスビットがアドレスバスを介してRAMに送信され、それが指していたRAM内の特定のアドレスが有効になります。今ここに私の疑問があります-どのアドレスを有効にするかをどのように知るのですか?
ラーフルチッタ

すべてのメモリ位置に、他のデバイスがこれがアクセスしたいアドレスであることを知るための識別子としてのみ割り当てられた余分なビットがあるような、何らかのメカニズムがありますか?(システム内のDMAを想定)
ラーフルチッタ

1
ページテーブルのエントリは、実際には仮想アドレスを格納しません。物理ページ番号のみ。テーブルは、それらが記述する仮想アドレスによってインデックス付けられます。
ジェイミーハンラハン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.