32/64位机器(处理器)中RAM的字大小是多少


3

32/64位机器(处理器)中RAM的字大小是多少?

这个问题让我抓狂。在英特尔酷睿i5微处理器这样的64位机器中,将数据保存在RAM本身的单词的大小究竟是多少?

另外,保存数据的字大小是否从32位变为64位?

Answers:


3

考虑到高速缓存一致性和NUMA等更新的东西,我不熟悉RAM如何与英特尔CPU配合使用的血腥细节,但从RAM的角度来看,我认为它仍然是8位字节,尽管RAM现在通常安排在可以一次访问多个插槽的通道。因此,一次抓取4个字节(假设4个插槽)将花费与在这样的系统上抓取1个字节相同的时间量。然而,RAM接受来自存储器控制器的地址作为输入,并将其作为输出AFAIK返回8位。

“单词”大小可能意味着不同的东西。我记得第一次遇到这个学习68000汇编语言的术语 - 在我正在阅读的文中,“byte”表示8位,“word”表示16位,“word-aligned”表示地址落在16位边界上。我知道术语“单词”之前用于引入68000(1980?),并且在早期可能与“字节”同义。

CPU“更喜欢”处理的“本机”数据与其架构的“位数”及其运行模式相匹配.32位CPU(或不是“长模式”的64位CPU)具有32位位寄存器,一组将RAM(4字节)中的值加载到这些寄存器和其他stuf中的指令。但是对于Intel,32位寄存器(如EAX)也可以作为两个寄存器AH(EAX的高16位)和AL(低16位)进行寻址,并且有无数的MOV指令将RAM中的内容加载到EAX中, AH,AL,并从那里回到RAM。我现在懒得看看英特尔程序员的参考指南,但我认为有指令将单个字节加载到AH或AL的高8位或低8位。 (我知道MIPS有这样的指示)。但是我认为有更多的指令适用于所有32位,如果你想使用更少的位,你就会受到影响,因为你必须首先将stuf移动到临时寄存器等等。

因此,在英特尔和16位时代以来制造的大多数其他通用CPU中,您在处理内存方面非常灵活。但是,指令可能更适合在架构的“位数”中工作。


3

计算机体系结构中的“单词”通常是最小的可寻址存储单元。传统上,这与机器的通用寄存器大小相同。然而,自从字节寻址变得流行(我们可能可以归功于IBM System / 360,以及小型机上的PDP-11,为此)这个概念已经被稀释了。

就CPU架构定义的内存寻址而言 - 也就是说,程序员如何看待机器 - x86 / x64上不存在“word”概念,除非您将其视为字节的同义词。字节的地址也是从该字节开始的任何较大区域的地址。我们当然可以在寄存器和RAM之间一次移动一个,两个,四个或(在x64上)八个字节 - 或者更多,内存到内存,使用REP指令 - 但我们断言的地址仍然是一个字节。我们可以对所有这些大小的单词进行算术运算。

如果考虑寄存器,通常假定机器的“字大小”与其通用寄存器的“字大小”相同。这将是x86上的32位,x64上的64位。在大多数体系结构中,GPR大小是整数的大小,CPU可以使用单个指令执行简单的算术运算。

在平台(主板,RAM模块和芯片等)方面,RAM以64位块的形式进行处理 - 我想你可以称之为单词。您可以在早期的处理器上清楚地看到这一点,这些处理器具有用于地址和数据的单独引脚:最低有效地址引脚称为A3,而不是A0!物理地址位A0,A1和A2永远不会离开处理器。但程序员从未见过这样的地址。

最后,还有“缓存行”的概念。高速缓存行是物理上连续的RAM块,占用L1 / L2 / L3高速缓存中的一个条目。一段时间以来,Intel / AMD世界中的缓存行已经是64字节宽。因此,当您访问当前不在缓存中的内存地址时,CPU将获取 那些8字节的RAM块。换句话说,存储在高速缓存中的地址省略了低位6位。也许一个字 在缓存中 真的是64字节或512位! (但是绕过高速缓存的存储器访问仍然一次只能读取或写入8个字节;在由存储器映射的I / O设备解码的物理地址范围中,单个字节可以是可寻址的;这取决于总线。)

在Microsoft C派生的编程环境中,“字”是16位 - 早在Microsoft之前就已经这样了,并且数据类型的名称和定义已经转移到32位和64位环境以实现兼容性。 “双字”(或“长字”的DWORD或LONG,这个术语在VAX上是常见的)是32位。 64位整数在体系结构中称为“四字”,但通常在C中具有更多特定名称,如UINT64(64位整数,无符号)。

因此,这取决于您在系统中的位置以及您正在查看的内容。我们通常不会考虑所有这些日子的“字大小”,而是“GPR大小”。


“Microsoft C衍生的编程环境”得到了英特尔官方数据类型名称的16位字,因此虽然它是真的,但它并不是Microsoft工具链或C语言所独有的。是的,“quadword”正式使用,英特尔SDM第1卷第4-1节开始“基本数据类型是字节,字,双字,四字和双四字”
Ben Voigt

啊。谢谢! (“quadword”也是在DEC的官方,“longword”或者只是“long”为4个字节)
Jamie Hanrahan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.