- ベストアンサー
アドレス空間へのEPROMのマッピングについて
- アドレス空間へのEPROMのマッピングについて質問があります。アドレス空間の最後尾に256KバイトのEPROMをマッピングする場合、EPROMの始点のアドレスはどれになるのでしょうか?
- 問題文では、0~FFFFFFFFまでの4Gバイトのアドレス空間において、最後尾のアドレス値がFFFFFFFFの場所に256KバイトのEPROMをマッピングするという問題が出されています。正しいEPROMの始点のアドレスはどれか、という質問です。
- 計算式を使って、アドレス空間へのEPROMのマッピングについて質問があります。4Gバイトのアドレス空間において、最後尾のアドレス値がFFFFFFFFの場所に256KバイトのEPROMをマッピングする場合、EPROMの始点のアドレスはどれになるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
単純に数字の問題として考えれば、 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) となります。
お礼
大変良くわかりました! ご丁寧な解説ありがとうございました!
お礼
図を用いた分かりやすいご説明、ありがとうございました! おかげで無事理解することができました! メモリマップ覚えておきます!