内存中每个物理地址可以存储多少个值?
How many values can be stored per physical address in Memory?
我了解到在 Ram 中每个物理地址只能存储一个值。现在这个数据可以是指令或数据。这是因为CPU从Ram中读入一个Word时,一次只能处理一个值吗?是指令、int 还是字符串。是否存在技术原因,您不能为每个索引设置多个值。我读过有关标量处理器的信息,但它们真的很老吗?例如,您不能在 64 位 Word 的宽度中容纳两个或更多值吗?或者我在这里遗漏了一些非常明显的东西。我想我问的是这是一个编程概念还是有一个实际的 technical/hardware 原因 cpu 每次从 Ram 中读取一个单词不能处理超过一个值..
谢谢
罗布
大多数最新的计算机使用指向内存中 "Byte" 位置的地址。
每条包含 "load (or store) from memory" 功能的机器指令都包含从目标字节地址开始的 loaded/stored 字节数的隐式或显式指定。常用大小为 1、2、4、8 字节(对应于最常用大小的单个数据项)。
由应用程序决定如何解释字节以及对它们执行什么操作。使用 32 位(4 字节)或 64 位(8 字节)加载和存储指令将字符串的字符存储在连续的字节内存位置并一次处理 4 或 8 个字符当然很常见。对单个字节(字符)的操作可能涉及在处理器的通用寄存器内进行屏蔽、移位和复制,但自 1990 年代后期以来,many/most 微处理器已经包含专门设计用于将寄存器的内容视为多个的指令独立的(较小的)值。
"Packing" 多个数据项进入内存的连续字节无需限制为支持的算术类型的寄存器大小(1、2、4、8 字节)。大约从 2000 年开始,许多处理器还包含 "Single Instruction Multiple Data" (SIMD) 指令以将更大的有效负载加载到一组 "SIMD registers" 中。 (常见大小为 16 和 32 字节,但一些处理器支持 64 字节寄存器。)包含这些 SIMD 加载和存储指令的系统通常还包含对 SIMD 寄存器进行操作的指令 "in parallel"——将寄存器内容视为多个独立的价值观。通常提供指令将 256 位(32 字节)寄存器的内容视为 32 个 1 字节值、16 个 2 字节值、8 个 4 字节值或 4 个 8 字节值。详细信息因处理器架构和代数而异。
我了解到在 Ram 中每个物理地址只能存储一个值。现在这个数据可以是指令或数据。这是因为CPU从Ram中读入一个Word时,一次只能处理一个值吗?是指令、int 还是字符串。是否存在技术原因,您不能为每个索引设置多个值。我读过有关标量处理器的信息,但它们真的很老吗?例如,您不能在 64 位 Word 的宽度中容纳两个或更多值吗?或者我在这里遗漏了一些非常明显的东西。我想我问的是这是一个编程概念还是有一个实际的 technical/hardware 原因 cpu 每次从 Ram 中读取一个单词不能处理超过一个值..
谢谢
罗布
大多数最新的计算机使用指向内存中 "Byte" 位置的地址。
每条包含 "load (or store) from memory" 功能的机器指令都包含从目标字节地址开始的 loaded/stored 字节数的隐式或显式指定。常用大小为 1、2、4、8 字节(对应于最常用大小的单个数据项)。
由应用程序决定如何解释字节以及对它们执行什么操作。使用 32 位(4 字节)或 64 位(8 字节)加载和存储指令将字符串的字符存储在连续的字节内存位置并一次处理 4 或 8 个字符当然很常见。对单个字节(字符)的操作可能涉及在处理器的通用寄存器内进行屏蔽、移位和复制,但自 1990 年代后期以来,many/most 微处理器已经包含专门设计用于将寄存器的内容视为多个的指令独立的(较小的)值。
"Packing" 多个数据项进入内存的连续字节无需限制为支持的算术类型的寄存器大小(1、2、4、8 字节)。大约从 2000 年开始,许多处理器还包含 "Single Instruction Multiple Data" (SIMD) 指令以将更大的有效负载加载到一组 "SIMD registers" 中。 (常见大小为 16 和 32 字节,但一些处理器支持 64 字节寄存器。)包含这些 SIMD 加载和存储指令的系统通常还包含对 SIMD 寄存器进行操作的指令 "in parallel"——将寄存器内容视为多个独立的价值观。通常提供指令将 256 位(32 字节)寄存器的内容视为 32 个 1 字节值、16 个 2 字节值、8 个 4 字节值或 4 个 8 字节值。详细信息因处理器架构和代数而异。