• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アドレス空間へのEPROMのマッピングについて)

アドレス空間へのEPROMのマッピングについて

このQ&Aのポイント
  • アドレス空間へのEPROMのマッピングについて質問があります。アドレス空間の最後尾に256KバイトのEPROMをマッピングする場合、EPROMの始点のアドレスはどれになるのでしょうか?
  • 問題文では、0~FFFFFFFFまでの4Gバイトのアドレス空間において、最後尾のアドレス値がFFFFFFFFの場所に256KバイトのEPROMをマッピングするという問題が出されています。正しいEPROMの始点のアドレスはどれか、という質問です。
  • 計算式を使って、アドレス空間へのEPROMのマッピングについて質問があります。4Gバイトのアドレス空間において、最後尾のアドレス値がFFFFFFFFの場所に256KバイトのEPROMをマッピングする場合、EPROMの始点のアドレスはどれになるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

実務的にもこういうときはまずは図を描いてみると良いと思いますよ 便宜上(見やすいように)4桁ずつ区切って表現すると,まぁ添付みたいな感じでしょう. で,256Kバイト分っていうのは16進数にするとどのくらい?っていうと0004_0000ですよね? (2^10×256=2^10×2^8=2^18ですから) とすると,図の「256Kバイト」の領域が0004_0000分あれば良いわけですね. あとは簡単でしょう? こういう図(メモリマップなんて言います)はシステム設計などの時に便利ですので覚えておくと良いと思います.

snhttk
質問者

お礼

図を用いた分かりやすいご説明、ありがとうございました! おかげで無事理解することができました! メモリマップ覚えておきます!

その他の回答 (1)

回答No.1

単純に数字の問題として考えれば、 256k = 256 * 2^10 = 2^8 * 2^10 = 2^18 つまり、256k = 100 0000 0000 0000 0000 = 40000(16) これが、EPROM そのものが含むバイト数。 そうすると、EPROM 単体のアドレスは、00000(16) - 3FFFF(16) これを、最大アドレス FFFFFFFF(16) のシステムの最後尾に割り当てるのだから、EPROM の先頭が割り当たる場所は、FFFFFFFF(16) - 3FFFF(16) = FFFC0000(16) 筆算) FFFFFFFF - 3FFFF -------- FFFC0000 同じ結果ですが、正しい考え方は、 1)システムの持つ(物理的な)アドレスラインは、32本(2^32 = 4G) 2)EPROM の持つアドレスラインは、18本(2^18 = 256k) 3)故に、このシステムにこのEPROM をマッピングするには、(普通)システムのアドレスラインのうち、下位18本を、EPROM のアドレスラインにする 4)システムの上位 32 - 18 = 14本で、EPROM を割り当てるブロックを決める。 5)最終アドレスを含むブロックに割り当てるのだから、システムの上位14本はすべて '1' 6)EPROM の先頭にアクセスするとき、(割り当てられた)EPROM の18本のアドレスラインはすべて '0' (先頭は、0番地だから) 7)それは、システム全体としては、 1111 1111 1111 1100 0000 0000 0000 0000(2) つまり、FFFC0000(16) となります。

snhttk
質問者

お礼

大変良くわかりました! ご丁寧な解説ありがとうございました!