【问题标题】:Byte / Word Addressable字节/字可寻址
【发布时间】:2013-10-22 21:30:38
【问题描述】:

我目前正在学习基本的 ccomputer 架构,需要帮助解决以下问题:

如果满足以下条件,寻址 4M x 16 主存储器需要多少位:

a) 内存是字节可寻址的吗?

b) 内存是字可寻址的吗?

答案是,大多数情况下都位于教科书的背面,但我想知道如何解决。

提前致谢!

【问题讨论】:

  • 你真的读过教科书吗?
  • 为了这个页面的未来访问者的利益,请您接受当前的最佳答案 (stackoverflow.com/a/27356938/3817111) 而不是当前的反对票?

标签: architecture


【解决方案1】:

尽管被错误地投票,但 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 可能造成的任何混乱......

【讨论】:

  • 这完全没有意义,但我的投票还是被锁定了,很遗憾。你的意思是说你将同样的东西乘以 16 位并得到两个不同的数字?! 2^1 是字节寻址方式的 16 位,而 2^0 是字寻址方式的 16 位?见展文的回答。
【解决方案2】:

如果您正在研究 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 位。

【讨论】:

  • 这看起来更有说服力。
【解决方案3】:

这是不正确的个别位不可寻址。诚然,记忆中包含

4M * 16 bits = 2^22 * 2^4 = 2^26 bits 

但它是用于寻址的字节或字数。

【讨论】:

  • 您的号码有误。你从哪里得到 2^22,你从哪里得到 2^4?
【解决方案4】:

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 位

【讨论】:

  • 完美,谢谢!这本书并不擅长打破这一点
猜你喜欢
  • 2011-02-13
  • 2019-11-05
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
相关资源
最近更新 更多