Joh*_*nce 2 memory cpu cpu-architecture
所以我确实在 stackvoerflow 中找到了一些与此相关的答案,但没有一个人清楚地回答了这个
因此,如果我们的内存是字节可寻址的,并且字长是例如 4 字节,那么为什么不使内存字节可寻址呢?
如果我没弄错的话,CPU 会用词对吗?因此,当 cpu 尝试从内存中获取一个字时,从字节可寻址内存中获取 4 字节字与从字可寻址内存中获取一个字之间有什么区别?
如果我没弄错的话,CPU 会用词对吗?
它取决于CPU 实现的指令集架构(ISA)。例如,x86 支持大小范围从单个 8 位字节到多达 64 个字节(在最新的 CPU 中)的操作数。尽管现代 x86 CPU 中的字长只有 8 或 4 个字节。字长通常定义为等于通用寄存器的大小。然而,访问内存或寄存器的粒度不一定受限于字长。从程序员的角度和 CPU 实现的角度来看,这非常方便,我将在下面讨论。
因此,当 cpu 尝试从内存中获取一个字时,从字节可寻址内存中获取 4 字节字与从字可寻址内存中获取一个字之间有什么区别?
虽然 ISA 可能支持字节寻址能力,但实现 ISA 的 CPU 可能不一定一次从内存中获取一个字节的数据。参考空间位置是大多数实际程序中非常常见的内存访问模式。如果 CPU 沿着内存层次结构发出单字节请求,那么处理单字节请求和跨层次移动一字节数据会不必要地消耗大量能量并显着损害性能。因此,通常情况下,当 CPU 对某个地址的某个大小的数据发出内存请求时,整个内存块(称为缓存行,通常大小为 64 字节,对齐为 64 字节)被带到一级缓存。对同一缓存行的所有请求可以有效地合并为一个请求。因此,存储器层次结构的不同级别之间的地址总线不必包括用于构成高速缓存线内偏移的位的连线。在这种情况下,
但是,在实现中支持字节可寻址性可能很有用。例如,如果一个缓存行只有一个字节发生了变化,并且必须将该缓存行写回主内存,而不是将所有 64 个字节都发送到内存,那么只发送改变的字节(或几个字节)。字节可寻址性有用的另一种情况是在为关键字优先的想法提供支持时。这远不止于此,但为了保持答案简单,我将就此打住。
DDR SDRAM是当今大多数计算机系统中使用的一类流行的主存储器接口。数据总线宽度为 8 字节,协议仅支持传输对齐的 8 字节块,并带有字节使能信号(称为数据掩码)以选择要写入的字节。因此,主存储器通常是 8 字节可寻址的。正是 CPU 提供了字节寻址能力的错觉。
归档时间: |
|
查看次数: |
802 次 |
最近记录: |