计组笔记:x86、ARM、RISC-V体系结构下对字的位数规定

1. 不同体系结构下字位数的对比

x86 为了保持40多年的向后兼容性,把"字"固定死在了16位,无论后来的CPU发展到多少位都没改过。而大多数其他架构则更符合直觉------它们的"字"会随着CPU位宽的提升而变大。

数据类型 x86 (IA-32 / x86-64) ARM RISC-V
Byte (字节) 8 位 8 位 8 位
Word (字) 16 位 (历史定义,沿用至今) 32 位 (从ARMv1到v8都如此) 32 位 (在RV32/64/128中均指32位)

2. x86体系结构为啥要固定字为16位

  • 根源:始祖 8086 的基因设定

    故事要从 1978 年 Intel 推出的 8086 处理器说起。8086 是一个 16 位处理器,其内部最重要的通用寄存器(如 AX, BX, CX, DX)都是 16 位宽。在当时,16 位就是这个 CPU 能一次性处理的最大数据单位,因此,Intel 理所当然地把 "字"定义为 16 位。这个定义在当时是教科书式的。问题在于,后来的 x86 处理器进化到了 32 位、64 位,但这个"字"的定义,作为这个庞大指令集家族最早的"基因",被完整地保留了下来。

  • 本质:为兼容性而冻结的"约定"

    如果 Intel 在推出 32 位处理器(386)时,把"字"的定义改成 32 位,会发生什么?

    会导致术语和指令行为的灾难性断裂。一个为 8086 编写的古老汇编程序,其中一条 MOV AX, [1234] 指令的本意是"从内存地址 1234 处读取一个 16 位的字到 AX 寄存器"。如果新 CPU 把"字"理解为 32 位,它就会一次读入 32 位数据,导致程序逻辑崩溃。为了避免这种"牵一发而动全身"的灾难,Intel 做出了最稳妥的选择:将这个最基础的定义"冻结"。无论后来的 CPU 发展到多少位,"字 (Word)"这个术语,永远指代一个 16 位的数据单元。这是一种"契约":Intel 承诺"字"的含义永不改变,来换取你的旧软件可以永远运行在新硬件上。

3. ARM字也固定在32位

ARM 在从 32 位架构(ARMv7)发展到 64 位架构(ARMv8)时,将"字 (Word)"的定义固定为 32 位,其首要目的正是为了保持向后兼容性。

虽然 ARM 没有 x86 那样长达四十多年的历史包袱,但它在移动嵌入式领域积累的庞大软件生态,同样要求它必须谨慎处理兼容性问题。可以说,ARM 采取了和 x86 完全相同的策略:冻结"字"这个基础术语的定义,同时允许架构的核心位宽(字长)继续增长。

4. RISC-V 体系结构字固定位32位

在 RISC-V 架构中,"字 (Word)"的定义不是出于向后兼容性而"冻结"的,而是一个基准定义。它的设计策略更干净、更模块化:先定义好"字"为 32 位,然后允许在此基础上构建更宽的"双字 (Doubleword)"和"四字 (Quadword)"。这意味着,无论你使用的是 32 位、64 位还是 128 位的 RISC-V 处理器,一个"字"始终代表 32 位数据

相关推荐
同勉共进1 个月前
并发编程系列(二)—— store, load 与 RMW
c++·arm·并发编程·x86·store·load·rmw
real向往2 个月前
KVM虚拟机管理(X86/ARM)
arm·kvm·x86·虚拟机管理
再遇当年5 个月前
因为研究平台arm,RK3588交叉编译误把我笔记本X86平台的/x86_64-linux-gnu文件删除,导致联想拯救者笔记本中的ubuntu系统损坏
linux·arm开发·ros·gnu·交叉编译·x86
阿源-6 个月前
UEFI-PEI 阶段的深层介绍
嵌入式·uefi·x86·edk2·固件
阿源-6 个月前
x86 架构的简单介绍
嵌入式·x86·固件
胡耀超8 个月前
2、CPU深度解析:从微架构到性能优化
python·性能优化·架构·arm·cpu·x86·多核心
tianyuanwo1 年前
海光x86与Intel/AMD x86的差异解析:技术演进、架构博弈与未来之路
x86·amd·海光
百里杨1 年前
X86(Local APIC+I/O APIC)与RISC-V(IMSIC+APLIC)对比
risc-v·x86·local apic·ioapic·imsic·aplic
2401_858286112 年前
汇编实现从1加到1000(《X86汇编语言 从实模式到保护模式(第2版》) 第135页第2题解答)
汇编·nasm·汇编语言·x86·virtualbox·8086·virtual box