【问题标题】:Does memory address always refer to one byte, not one bit?内存地址是否总是指一个字节,而不是一位?
【发布时间】:2016-05-31 08:41:13
【问题描述】:
  1. 您能否确认 PC 中的内存地址始终指向 1 字节(8 位)?
  2. 如果浮点数在内存中需要 32 位,是否 计算机分配 4 个连续字节(总共 32 位)来表示 那个号码?

【问题讨论】:

  • 如果您寻址单个位而不是字节,您会立即将有效地址空间减少 8 倍。你为什么想要那个?

标签: memory cpu-architecture


【解决方案1】:
  1. 是的,内存地址总是包含一个字节地址。我想不出支持位级寻址的单一 CPU 架构。

  2. CPU 本机浮点数将始终存储在连续的内存位置中。这适用于所有原生 CPU 类型。

【讨论】:

  • 在另一个方向上,我认为一些旧架构只有字可寻址内存。旧 ARM 使用地址的低位来指定轮换,而不是字内的字节偏移。回复:浮点数,显然某些系统对浮点数使用了与整数不同的字节序,因为 C 有一个单独的 __FLOAT_WORD_ORDER__ 宏。 (当然,它们仍然存储在 4 个连续字节中,这显然是所有问题所要问的)。
  • ARM 可以提供位带区域——将字地址映射到位地址的内存映射部分。这主要是为了支持 I/O 设备的位粒度的原子操作。 MIPS 提供了与字节内的原子设置位和字节内的原子清除位指令(其 MCU 应用特定扩展的一部分)类似的功能,三位立即字段指定位,并且操作在架构上定义为不可中断的字节读取-修改写入。我认为一些 8 位 ISA 支持位粒度访问。
  • 在计算器中发现的 HP Saturn 使用 4 位地址(半字节)而不是字节,但有 64 位寄存器。一些旧的大型机和超级计算机架构只能解决它们的原生字长问题。示例包括 36 位(IBM 701,DEC PDP-10)和 60 位(CDC Cyber​​)。现代 DSP 通常也缺乏寻址字节的能力,更喜欢只处理浮点数和一些有限的整数。
【解决方案2】:
  1. 让我们让它更通用,说“计算单元”而不是“PC”,所以答案是肯定的。一些设计师这样做是为了表现。

EX:在 ARM cortex m4 处理器中,有一些内存空间保留用于位访问(即该空间中的每个地址仅包含 1 位)。有关详细信息,请阅读位带。

  1. 绝对可以,适用于所有数据类型(int、string、..)

【讨论】:

    猜你喜欢
    • 2013-08-12
    • 2017-09-21
    • 2012-11-16
    • 2014-10-03
    • 2018-07-04
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多