【问题标题】:Range of address in 16 bit microprocessor16位微处理器的地址范围
【发布时间】:2018-01-16 19:51:29
【问题描述】:

我的书提到,当英特尔处理器是 16 位时,它可以访问的最大内存范围是 64KB。

这样的处理器中有多少个寄存器。当每个寄存器为 16 位时,它可以容纳的 1 和 0 的组合数为 (2) ^ (16)。因此,内存范围为 (2) ^ 16 位 = (2) ^ 13 字节 = 8192 字节,大约 8 KB。那么什么样的安排导致了 64 KB 的内存范围呢?

可能是因为要获得地址,我们将基数添加到偏移量。第一个值可能包含 2^16 位,大约为 8KB,因此其他值的值的可能性,地址总数 = 8x8 = 64Kb?

【问题讨论】:

  • 每个内存地址对应一个byte,而不是一个bit
  • 每个地址指的是一个字节的内存,所以内存范围是2^16,也就是64KB。现代处理器不可位寻址。
  • youtube.com/watch?v=fpnE6UAfbtU 这个系列对理解处理器非常有帮助(至少对我来说是这样)。跳到约 5 分钟了解 8 位寄存器。
  • 现实世界稍微复杂一些——8086 有 16 位地址寄存器,但有 20 位地址总线。
  • @HenkHolterman : 那么 20 地址总线是如何产生 64 KB 的呢?

标签: microprocessors


【解决方案1】:

处理器不可位寻址。可以用地址命名的最小内存单位是字节。见Byte Addressing

支持位寻址的架构相当少见。在 36 位机器等时代,通常有一种不同的指针格式允许寻址可变大小的“字节”。 (曾几何时,我们甚至没有就字节应该是 6、7、8、9 还是更多位达成广泛共识。确实存在具有 36 位、72 位甚至 47 位寄存器的机器. 为了更有效地支持不同大小的字节架构,添加了指针格式,其中指针的一部分是字地址,一部分指定了位域的起始位位置和大小。例如,PDP-10 是一个 36 位架构,具有 18-位地址,因此这种指针格式使用寄存器的一半作为地址,一半作为位域部分。)

字寻址机器更为常见,尤其是在专门的应用程序中。这些允许寻址比地址的位大小所暗示的更多字节的内存,但需要移位和屏蔽来提取字节,并且指针本身无法指定它指向的字的哪个字节。因此,通常会看到字节可寻址机器,其中最小大小的加载和存储用于(例如 64 位)字,而不是字节,而不是真正的字寻址机器。

【讨论】:

  • Zalman stern : 你能详细说明一下它是如何产生 64kb 的吗?
  • 一个 16 位寄存器有 2^16 个唯一值。那是 64 公斤值,假设“公斤”表示“1024”,这在这种情况下很典型。这些值中的每一个都命名一个字节。因此,整个可寻址范围是 64 KB。 (人们可以争论“kb”或“kB”等是指千字节还是千比特。人们通过“kibi”而不是“kilo”等来了解1,000和1,024之间的差异。这些对问题。)
  • 曾经是我最喜欢的处理器之一显示了针对特定用例进行优化时可能出现的复杂情况:HP 41 计算器的HP Saturn CPU
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-25
  • 2011-01-29
  • 2015-06-19
相关资源
最近更新 更多