【问题标题】:Calculating memory size from address and word size?从地址和字长计算内存大小?
【发布时间】:2021-03-25 22:27:48
【问题描述】:

我目前正在准备我的计算机体系结构考试,我在网上找到了这个问题

数字计算机有一个每字 26 位的存储单元。这 指令集由 756 种不同的操作组成。所有说明 有一个操作码部分(opcode)和一个地址部分(允许 只有一个地址)。每条指令都存储在一个内存字中。

1-操作码需要多少位? 10 位

2- 指令的地址部分还剩下多少位? 16 位

3- 内存的最大允许大小是多少? 65536 位

4- 最大的无符号二进制数是多少 容纳在记忆的一个词中? 67108864

我明白为什么 1 和 2 是正确的,但我不明白 3 和 4

问题3不应该是(2^16) x 26 bits吗?

问题4不应该是(2^26)- 1吗?

【问题讨论】:

  • 这是有史以来最通用的无意义的标题,它没有告诉未来的读者这个问题是关于什么类型的事情,甚至不是关于测验问题的答案。这些什么

标签: computer-science cpu-architecture


【解决方案1】:

对于第 4 部分,您正在计算可以成为指令字一部分的最大 立即数。 但问题是关于将整个 26 位字用作数字作为数据。 (另外,你做了2^15,所以是最大的有符号 16 位整数,但问题要求无符号,其中所有 n 位都有正位值)。

对于第 3 部分,是的,您的答案看起来是正确的。假设没有间接寻址(这将允许您使用 26 位地址),那么可用内存大小 = 指令可以寻址的数量。所以 2^16 = 65536 个字。你确定给定的答案真的意味着 65536 位,而不是单词?

【讨论】:

  • 抱歉打错字了,能否请您再解释一下问题 3 和 4?同样在问题 3 中,您说我的答案是正确的,但您为什么说 So 2^16 = 65536 words?我的答案是 2^16 * 26 即 1703936 个字
  • @seen20:不,1703936 words 是错误的,但这不是你在问题中所说的。您计算了 2^16 = 65536 个字 * 26 位/字,即 1703936 ,在这些假设下是正确的。 2^16 = 64K = 65536 是一个经常出现的数字; 16 位宽度的事物并不少见。
  • @seen20:如果我想说更多关于问题 3 或 4 的内容,我会说;如果您想再次解释,请再次阅读我的答案,并思考我为什么说我所做的。如果您不了解其中的某些特定方面,请具体说明。
  • 直截了当,q3 是 1703936 位,因为 2^16 个地址可以容纳 26 位,对吗? q4 我们不应该从 0 开始,所以答案是 (2^26)-1 我是对还是错?
  • @seen20:你的意思是 2^16 个地址中的 每个 可以容纳 26 位?是的,假设存储器是字可寻址的。 (但由于没有指定,我猜你可以为 ISA 的那一部分选择设计。另一种可能性是具有 13 位字节的“字节”可寻址机器,因此对齐的字只能在偶数地址找到。例如,那是为什么像 MIPS32 或 Pentium 这样的标准 32 位机器只能寻址 4GiB 的内存,而不是 4G * 4 字节的字。但如果你的目标是尽可能大的内存,你不会选择那个。)
猜你喜欢
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多