【问题标题】:Can a 32-bit processor load a 64-bit memory address using multiple blocks or registers?32 位处理器可以使用多个块或寄存器加载 64 位内存地址吗?
【发布时间】:2015-11-28 05:15:18
【问题描述】:

我在 32 位微处理器上做了一些工作,我了解到:

1) 32 位微处理器只能寻址 2^32 位内存,这意味着内存指针大小不应超过 32 位范围,即指针大小应等于或小于 32 位。

2) 我也了解到 CPU 分配多个内存块用于存储数字和文本等内容,这取决于程序,与每个地址的大小无关(来源:here)。
那么 CPU 是否有可能使用多个块(寄存器)来存储大小超过 32 位的指针?

【问题讨论】:

    标签: 32-bit memory-address cpu-registers microprocessors


    【解决方案1】:

    处理器可以通过使用一种称为存储库切换的技术的变体来访问基本上无限量的内存。在一个简单的存储体切换方案中,连接到部分地址空间的存储芯片将有一些地址输入由处理器提供,一些来自外部锁存设备。从历史上看,IBM PC 有一个 1MB 的地址空间,但扩展的内存板将允许 IIRC 允许将该空间的两个 16KB 区域映射到其中包含的数十或数百个 16KB 内存块中的任何一个。现在的处理器通常都有一个内置的内存管理单元,它将 4KB 或 64KB 的内存块映射到更大空间内的任何地址,并且额外的电路可以在操作系统支持下进一步扩展。

    存储区切换的最大困难在于,任何给定的地址都可能根据存储区切换硬件的配置方式识别内存中的许多不同位置,因此从存储区中的存储器访问数据通常比访问存储区中的数据更复杂。直接可访问的内存,并且只能通过知道银行切换硬件如何工作的代码来实现。现在更常见的是简单地使用可以访问所有内存的处理器,但从历史上看,存储库切换通常是一种超越处理器限制的有用技术。

    【讨论】:

      【解决方案2】:

      您可以使用内存中的 2 个独立位置存储 64 位指针。但它可能没有用,因为您的处理器只能使用 32 位指针。

      【讨论】:

      • 为什么一个处理器可以存储超过32位的指针,却只能使用32位的指针?
      猜你喜欢
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      • 2011-10-26
      • 2020-03-27
      • 2013-11-29
      • 2016-12-25
      • 2014-02-21
      相关资源
      最近更新 更多