Post

对 CPU 架构概念学习

对 CPU 架构概念学习

CPU 架构是什么?有哪些?有什么不一样?

CPU架构定义了一种“指令集”(Instruction Set Architecture, 简称 ISA)

不同架构的应用,例如:

  • x86 架构 -> PC 和服务器最常见的语言(Intel、AMD)
  • ARM 架构 -> 手机、IoT、路由器最常见的语言(高通、苹果M系列)
  • MIPS 架构 -> 曾经在路由器、嵌入式设备里风靡一时的老语言

一个CPU架构决定了:它能运行什么系统(比如 Linux 是不是得重编译);它能用什么样的编译器;它的功耗、性能、成本是偏向哪一边的。

用一行 C 语言代码类比:a = b + c;

架构 示例机器语言指令
x86 MOV EAX, [b]
ADD EAX, [c]
MOV [a], EAX
ARM LDR R0, =b
LDR R1, =c
ADD R2, R0, R1
STR R2, =a
MIPS LW $t0, b
LW $t1, c
ADD $t2, $t0, $t1
SW $t2, a

这三种架构,干的是同样的事情:把b和c加起来放进a,但机器指令的形式完全不同!

原理的不同

| 原理维度 | x86 | ARM | MIPS | | —————- | ———————- | ————————– | —————— | | 指令集类型 | CISC(复杂指令集) | RISC(精简指令集) | RISC(精简指令集) | | 寄存器数量 | 少(8~16个) | 多(31个) | 多(32个) | | 指令长度 | 可变长度(1~15字节) | 固定长度(一般4字节) | 固定长度(4字节) | | 是否对称统一 | 不是:有特殊功能寄存器 | 是:大多数寄存器都可以通用 | 是 | | 内存操作 | 可以直接对内存加法 | 必须先加载到寄存器再操作 | 同上 |

什么是 CISC 和 RISC?

这是最根本的区别之一:

CISC(复杂指令集):像 x86 —— 一条指令可以做很多事,比如从内存里取值、计算、再写回去,适合高性能。 RISC(精简指令集):像 ARM 和 MIPS —— 每条指令都很简单、执行时间固定,所有操作都通过寄存器来完成。适合节能、高效率芯片设计。

寄存器(Register)

寄存器是CPU内部的一组极高速、超小容量的存储单元,通常用于:

  • 暂存即将参与计算或刚刚计算完成的数据;
  • 控制程序执行的关键信息(如程序计数器、栈指针等);
  • 协助指令执行(如操作数地址、结果存放)。

不同架构区别:

  • x86:寄存器较少,早期有固定用途,如 EAX 是累加器。
  • ARM/MIPS:提供更多通用寄存器,指令能灵活使用任意寄存器作为输入/输出。

指令长度(Instruction Length)

在处理器(CPU)中,指令(Instruction)*是一条*二进制编码的命令,告诉CPU要执行什么操作,例如加法、跳转、内存读取等。从本质上说,一条指令 = 操作码(opcode)+ 操作数(operand)信息

指令在内存中以字节为单位编码。指令长度决定CPU每次解码多少字节。指令长度 ≈ 指令在内存中存储的机器码的字节数

  • 固定长度指令:例如 ARM、MIPS 中每条指令都是 32 位(4 字节),CPU 解码逻辑简单,便于流水线并行。
  • 可变长度指令:x86 中每条指令可从 1 到 15 字节不等,支持更复杂的指令格式和寻址方式,但解码器复杂。

内存访问模型(Load/Store Architecture)

这描述了处理器是否允许指令直接操作内存数据

  • Load/Store 架构(ARM, MIPS)
  • 所有运算必须基于寄存器。
  • 内存访问只能通过 LOADSTORE 指令实现。
  • 优点:简化指令集和硬件设计,利于流水线和并行执行。
  • 非 Load/Store 架构(如 x86)
  • 某些指令可以同时涉及内存和寄存器,例如 ADD EAX, [EBX] 表示将内存中 EBX 指向的数据加到 EAX
  • 缺点:解码复杂,执行时间不一致,不利于指令流水线优化。

架构的历史

年代 架构 故事
1978 x86 Intel发明了x86,一开始是给个人电脑用的,后来变得越来越强大,几乎垄断了PC市场。
1985 MIPS MIPS是学术圈搞出来的“精简指令集”,性能高、结构简单,嵌入式领域非常喜欢它。
1991 ARM 英国ARM公司提出ARM架构,专门面向低功耗、低成本设备,现在是手机和IoT的霸主。
2000s后 RISC-V 一个新兴的开源架构,正在挑战ARM的地位,很多国家都很关注它,因为能自由使用。

所以,开发不同的架构是因为:

  • 不同的需求(性能 vs 功耗 vs 成本)
  • 不同的时代背景(商业策略、专利授权、产业链等)
  • 技术发展不断进化(更小、更强、更省电)

不同架构的优缺点

| 架构 | 优点 | 缺点 | | ———- | —————————————– | ———————————— | | x86 | 性能强大、生态成熟(Windows、PC应用丰富) | 功耗高、芯片复杂、贵 | | ARM | 省电、省成本、适合移动设备和IoT | 需要授权费、编译要求高(要交叉编译) | | MIPS | 结构简单、适合嵌入式老设备 | 市场逐渐萎缩,工具链没落 | | RISC-V | 开源自由、可以自定义、有潜力 | 工具和生态还在建设中,不成熟 |

不同的架构对开发者和用户的影响

对开发者:

  • 你写的软件(比如 C、Python)大部分可以“跨架构”,但编译时需要特别处理(交叉编译)。
  • 调试、驱动适配要根据架构来,比如 ARM/MIPS 的寄存器就不一样。
  • 你要选对工具链(比如用 arm-linux-gcc 编 ARM 设备)

对用户:

  • 几乎没什么感觉,你只关心系统能不能跑,功能有没有用
  • 但比如你把电脑程序搬到路由器,架构不对就直接跑不了
This post is licensed under CC BY 4.0 by the author.