跳转至

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资源空闲时间
  • 同时执行多个线程
  • 提高资源利用率

参考资料