计算机中的字 (Word)

[1] Word (computer architecture)
[2] What is the relationship between “64-bit operating system”, “x64-based processor” to word size?
[3] What’s the size of a QWORD on a 64-bit machine?
[4] Are machine code instructions fetched in little endian 4-byte words on an Intel x86-64 architecture?
[5] INTEL X86,why do align access and non-align access have same performance?

在计算机体系结构中,我们可能遇到过(Word)这个词,可能想当然的认为字的大小就代表了寄存器的位数、总线的位数、一个指令能处理的数据位数、CPU只能按字寻址、load/store的内存地址必须按字对齐等特性[1]。举个例子,如果字长是8字节的话,我们可能推断出这是个64位CPU,寄存器有64位,总线位数是64位、CPU最小只能寻址到8字节的字、load/store内存地址必须按8字节对齐(二进制最低3位为0)等结论。

但事实并非总是如此,例如在Intel x86的文档中,一个字的长度是16 bit,即 2 字节 [2] [3],无论是 x86 还是 x86_64 架构都是如此,因此,对于 x86 来说,字长和寄存器位数、总线位数这些特性没有关系。

x86架构并不是word-oriented的,在x86架构中讨论字没有太大的意义 [4] [3] [2], x86 指令集支持多种大小的操作数,最小可以访问到一个字节,最大可以访问到64个字节,例如:

  • movb, movw, movl, movq分别支持一次性访问1个字节、2个字节、4个字节、8个字节
  • SSE(Streaming SIMD Extensions)指令支持一次性访问16个字节
  • AVX(Advanced Vector Extensions)指令支持一次性访问32个字节
  • AVX-512指令支持一次性访问64个字节

而且,x86 并不要求load/store的内存地址按“字”对齐,访问对齐的内存和和访问未对齐的内存性能几乎是一样的 [5]。

上一篇:MongoDB 体系结构与数据模型


下一篇:线程的创建方式