0

我读过你在 Ram 中每个物理地址只能存储一个值。现在这个数据可以是指令或数据。这是因为当 CPU 从 Ram 读取一个 Word 时,它一次只能处理一个值?无论是指令、整数还是字符串。是否有技术原因您不能为每个索引拟合多个值。我读过有关标量处理器的信息,但它们不是很老。例如,您不能在 64 位字的宽度中容纳两个或更多值吗?或者我在这里错过了一些非常明显的东西。我想我在问这是一个编程概念,还是有实际的技术/硬件原因,cpu 每次从 Ram 读取一个 Word 时不能处理一个以上的值。

谢谢

4

1 回答 1

0

最近的计算机使用指向内存中“字节”位置的地址。

包括“从内存加载(或存储)”功能的每条机器指令都包括从目标字节地址开始的要加载/存储的字节数的隐式或显式规范。常见大小为 1、2、4、8 字节(对应于最常见支持大小的单个数据项)。

由应用程序决定如何解释字节以及对它们执行什么操作。将字符串的字符存储在连续的字节内存位置并使用 32 位(4 字节)或 64 位(8 字节)加载和存储指令一次处理 4 或 8 个字符当然很常见。对单个字节(字符)的操作可能涉及在处理器的通用寄存器中进行屏蔽、移位和复制,但自 1990 年代后期以来,许多/大多数微处理器都包含专门设计用于将寄存器的内容视为多个独立(较小)值。

将多个数据项“打包”到内存的连续字节中,不必受限于支持的算术类型(1、2、4、8 字节)的寄存器大小。自大约 2000 年以来,许多处理器还包含“单指令多数据”(SIMD)指令,以将更大的有效负载加载到一组“SIMD 寄存器”中。(常见的大小为 16 和 32 字节,但一些处理器支持 64 字节寄存器。)包括这些 SIMD 加载和存储指令的系统通常还包括“并行”对 SIMD 寄存器进行操作的指令——将寄存器内容视为多个独立的价值观。通常提供指令将 256 位(32 字节)寄存器的内容视为 32 个 1 字节值、16 个 2 字节值、8 个 4 字节值或 4 个 8 字节值。

于 2020-02-25T22:18:25.387 回答