CPU

返回计算机基础


基本结构

CPU
├── 运算器(ALU)      — 执行算术/逻辑运算
├── 控制器(CU)       — 读取并解释指令,协调各部件
├── 寄存器组           — CPU 内部最快的存储单元
│   ├── 程序计数器 PC  — 下一条指令地址
│   ├── 指令寄存器 IR  — 当前正在执行的指令
│   ├── 累加器 ACC     — 运算结果暂存
│   └── 通用寄存器     — 临时数据
└── 高速缓存(Cache)  — L1/L2/L3

指令执行周期

取指(Fetch)→ 译码(Decode)→ 执行(Execute)→ 写回(Write Back)
阶段动作
取指PC → MAR → 内存读指令 → IR,PC+1
译码CU 解析操作码和操作数
执行ALU 运算 / 访存 / 跳转
写回结果写回寄存器或内存

流水线

将指令执行拆成多个阶段并行处理,理想情况下 N 级流水线吞吐量提升 N 倍。

流水线冒险

类型原因解决
结构冒险多条指令争用同一硬件资源资源复制(如分离 I-Cache/D-Cache)
数据冒险后一条指令依赖前一条未写回的结果数据转发(Forwarding)/ 插入气泡(Stall)
控制冒险分支指令使后续取指地址不确定分支预测(静态/动态)

Cache(高速缓存)

CPU 与内存速度差异巨大,Cache 弥补这一鸿沟。

级别容量速度说明
L132~64 KB~4 cycle每个核独有,分 I-Cache / D-Cache
L2256 KB~1 MB~12 cycle每个核独有
L34~64 MB~40 cycle多核共享
内存GB 级~200 cycleDRAM

Cache 映射方式

  • 直接映射:内存块固定映射到某 Cache 行,冲突多
  • 全相联:可映射到任意 Cache 行,硬件复杂
  • 组相联:折中,N 路组相联(常用 4/8 路)

替换策略:LRU(最近最少使用)/ LFU / 随机

写策略

策略说明
写直达(Write Through)同时写 Cache 和内存,一致性好,带宽压力大
写回(Write Back)只写 Cache,脏位标记,替换时才写回内存

多核与超线程

  • 多核:一块芯片上有多个独立 CPU 核心,真正并行执行
  • 超线程(HT / SMT):一个物理核模拟两个逻辑核,共享执行单元,提高利用率约 20%~30%

时钟频率与 IPC

性能 ≈ 频率(GHz)× IPC(每时钟周期执行指令数)× 核心数

提升频率受功耗和散热限制(功耗 ∝ 频率³),现代 CPU 更多靠提升 IPC 和核心数。


乱序执行与分支预测

  • 乱序执行(OoO):CPU 不按程序顺序执行,只要数据依赖允许就提前执行,最后按序提交结果
  • 分支预测:预测 if/循环走哪条路,预测失败则清空流水线(约 10~20 cycle 惩罚)
    • 静态预测:总是预测不跳转
    • 动态预测:用历史记录(BTB、BHT)做预测,现代 CPU 准确率 >95%

CISC vs RISC

CISC(x86)RISC(ARM、RISC-V)
指令复杂、变长简单、定长
寄存器多(32 个通用寄存器)
功耗较高
典型场景PC、服务器移动设备、嵌入式、Apple Silicon

相关链接