我目前正在学习基本的 ccomputer 架构,需要帮助解决以下问题:
在以下情况下,寻址 4M x 16 主存储器需要多少位:
a) 内存是字节可寻址的吗?
b) 存储器是字可寻址的吗?
答案是,就像在教科书后面的大多数情况一样,但我想知道如何解决。
提前致谢!
我目前正在学习基本的 ccomputer 架构,需要帮助解决以下问题:
在以下情况下,寻址 4M x 16 主存储器需要多少位:
a) 内存是字节可寻址的吗?
b) 存储器是字可寻址的吗?
答案是,就像在教科书后面的大多数情况一样,但我想知道如何解决。
提前致谢!
尽管被错误地投票,但 Lashane 是不正确的。我们谈论的是字节可寻址,而不是位可寻址。实际上,我们应该在字节可寻址系统上得到 23 位,在字可寻址系统上得到 22 位(假设字大小为 16 位宽):
字节可寻址:4M x 16 = 2^2(4) x 2^20(1m) x 2^1(2 字节,或 16 位)= 2^23,或 23 位
字可寻址:4M x 16 = 2^2(4) x 2^20(1m) x 2^0(1 个字,或 16 位)= 2^22,或 22 位
希望这能消除 Lashane 可能造成的任何混乱......
如果您正在研究 Null 和 Lobur 的第 4 章第 5 号,答案如下:
a) 23 位
4M * 16 = 2^2 * 2^20 * (2^4 / 2^3) (16 位 / 8 位是一个字节) = 2^2 * 2^20 * 2^1 = 2^23 => 23位。
b) 22 位
假设一个字是 16 位或 2 个字节长(在 Null 和 Lobur 中的合理假设,特别是如果您查看前面的练习(第 4 号)。
4M * 16 = 2^2 * 2^20 * (2^4 / 2^4)(16位/16位是一个字)= 2^2 * 2^20 * 2^0 = 2^22 => 22位。
这是不正确的个别位不可寻址。诚然,记忆包含
4M * 16 bits = 2^22 * 2^4 = 2^26 bits
但它是用于寻址的字节或字数。
4M x 16 = 64Mb 内存 = 67108864 字节或 33554432 字(字通常为 2 字节)
这意味着内存中的最后一个字节将具有地址:0x3FFFFFF (67108864-1) = 26 bits
最后 2 字节字的地址为:0x1FFFFFF (67108864/2-1 = 33554432-1) = 25 位
如果我们考虑 4 字节字 - 我们有最新地址 0xFFFFFF (67108864/4-1) = 24 位
更新:我错误地将 4M 乘以 16,实际上 16 这里是位数,所以正确的计算将是:
4M x 16 = 4 194 304 个单元,每个单元为 16 位 = 2 字节
要寻址每个字节,您需要 4 194 304 * 2,因此最后一个字节的地址 (0x800000-1) = 7FFFFF,即 23 位
要寻址每个字(2 个字节),您需要 4 194 304,所以最后一个字的地址为 0x3FFFFF,即 22 位