CPU结构¶
概述¶
CPU结构
CPU由运算器、控制器和寄存器组三大部分组成,通过内部总线连接,共同完成指令的执行。
CPU基本组成¶
graph TB
A[CPU] --> B[运算器ALU]
A --> C[控制器CU]
A --> D[寄存器组]
A --> E[内部总线]
B --> B1[算术运算]
B --> B2[逻辑运算]
C --> C1[指令译码]
C --> C2[时序控制]
C --> C3[中断控制]
D --> D1[通用寄存器]
D --> D2[专用寄存器]
D --> D3[程序计数器PC]
style A fill:#E3F2FD
style B fill:#E8F5E9
style C fill:#FFF3E0
style D fill:#F3E5F5
style E fill:#FCE4EC
运算器¶
运算器(Arithmetic Logic Unit, ALU)
执行各种算术运算和逻辑运算的部件,是CPU的数据处理中心。
运算器组成¶
1. 算术逻辑单元(ALU)
算术逻辑单元
核心运算部件,执行各种运算。
功能:
- 算术运算: 加、减、乘、除
- 逻辑运算: 与、或、非、异或
- 移位操作: 左移、右移、循环移位
- 比较运算: 等于、大于、小于
2. 累加器(ACC)
累加器
存放运算数据和运算结果的寄存器。
作用:
- 存放操作数
- 存放运算结果
- 与ALU直接连接
3. 状态寄存器(PSW)
状态寄存器
存放运算结果的状态标志。
标志位:
- ZF(零标志): 结果为零时置1
- SF(符号标志): 结果为负时置1
- CF(进位标志): 运算有进位时置1
- OF(溢出标志): 运算溢出时置1
- PF(奇偶标志): 结果中1的个数为偶数时置1
运算器工作流程¶
graph LR
A[取操作数] --> B[ALU运算]
B --> C[设置状态标志]
C --> D[存结果]
style A fill:#E3F2FD
style B fill:#E8F5E9
style C fill:#FFF3E0
style D fill:#F3E5F5
控制器¶
控制器(Control Unit, CU)
指挥和协调计算机各部件工作的指挥中心,是CPU的控制中心。
控制器组成¶
1. 程序计数器(PC)
程序计数器
存放下一条指令的地址,自动加1指向下一指令。
功能:
- 存放指令地址
- 自动增量
- 支持跳转指令
2. 指令寄存器(IR)
指令寄存器
存放当前正在执行的指令。
作用:
- 存放指令代码
- 提供给指令译码器
- 保持指令执行期间不变
3. 指令译码器(ID)
指令译码器
分析指令功能,产生控制信号。
功能:
- 识别指令操作码
- 确定指令类型
- 产生控制信号
4. 时序发生器
时序发生器
产生时序控制信号。
功能:
- 产生时钟信号
- 产生节拍信号
- 控制指令执行时序
5. 操作控制器
操作控制器
根据指令译码结果产生各种控制信号。
控制方式:
- 硬布线控制: 由组合逻辑电路产生控制信号
- 微程序控制: 由微指令产生控制信号
控制器工作流程¶
sequenceDiagram
participant PC as 程序计数器
participant Memory as 存储器
participant IR as 指令寄存器
participant ID as 指令译码器
participant CU as 控制单元
PC->>Memory: 1. 取指令地址
Memory->>IR: 2. 取指令
IR->>ID: 3. 指令译码
ID->>CU: 4. 产生控制信号
CU->>CU: 5. 执行指令
CU->>PC: 6. 更新PC
寄存器组¶
寄存器组
CPU内部的高速存储单元,用于暂存数据和地址。
寄存器分类¶
1. 通用寄存器
通用寄存器
存放操作数和运算结果。
常见通用寄存器(x86架构):
- AX(累加器): 算术运算
- BX(基址寄存器): 地址索引
- CX(计数寄存器): 循环计数
- DX(数据寄存器): I/O操作
- SI(源变址寄存器): 源操作数地址
- DI(目的变址寄存器): 目的操作数地址
2. 专用寄存器
| 寄存器 | 名称 | 功能 |
|---|---|---|
| PC | 程序计数器 | 存放下一条指令地址 |
| IR | 指令寄存器 | 存放当前指令 |
| MAR | 存储器地址寄存器 | 存放访问存储器的地址 |
| MDR | 存储器数据寄存器 | 存放读写存储器的数据 |
| PSW | 状态寄存器 | 存放状态标志 |
3. 段寄存器(x86架构)
段寄存器
用于内存分段管理。
- CS(代码段): 存放代码段基地址
- DS(数据段): 存放数据段基地址
- SS(堆栈段): 存放堆栈段基地址
- ES(附加段): 存放附加段基地址
CPU工作原理¶
指令执行周期¶
stateDiagram-v2
[*] --> 取指
取指 --> 译码: 取到指令
译码 --> 执行: 译码完成
执行 --> 写回: 执行完成
写回 --> 取指: 结果写回
写回 --> [*]: 程序结束
指令执行过程¶
指令执行步骤
1. 取指周期(Fetch)
- 根据PC从存储器取出指令
- 指令送入IR
- PC自动加1
2. 译码周期(Decode)
- 分析IR中的指令
- 识别操作码和地址码
- 产生控制信号
3. 执行周期(Execute)
- 根据控制信号执行操作
- 完成算术或逻辑运算
- 或完成数据传输
4. 写回周期(Writeback)
- 将运算结果写回寄存器或存储器
- 更新状态标志
- 准备执行下一条指令
现代CPU技术¶
多核技术¶
多核CPU
在一个芯片上集成多个CPU核心。
优点:
- 提高并行处理能力
- 降低功耗
- 提高性能价格比
挑战:
- 核间通信
- Cache一致性
- 负载均衡
超线程技术¶
超线程技术(Hyper-Threading)
一个物理核心模拟两个逻辑核心。
原理:
- 利用CPU资源空闲时间
- 同时执行多个线程
- 提高资源利用率