首页/计算机组成原理/中央处理器/CPU 的功能和结构 🔗 在 Obsidian 中打开
计算机组成原理 · 中央处理器

CPU 的功能和结构

重要度 ⭐⭐⭐⭐⭐中央处理器寄存器运算器控制器数据通路CPU
速查
CPU 负责指令控制、操作控制、时间控制、数据加工、中断处理,由运算器 + 控制器 + 寄存器组 + 中断系统组成。性能:CPU时间 = 指令数 × CPI × 时钟周期

速查

项目
功能指令控制、操作控制、时间控制、数据加工
组成运算器 + 控制器 + 寄存器组 + 中断系统

概述

CPU(Central Processing Unit,中央处理器)是计算机的核心部件,负责指令的读取、译码和执行。CPU 由运算器控制器两大部分组成。

CPU 的基本功能

指令控制

  • 按程序顺序取出指令;控制指令执行的顺序。

操作控制

  • 产生指令执行所需的各种控制信号,协调各部件工作时序。

时间控制

  • 控制各操作的时序,确保按正确先后顺序执行。

数据加工

  • 对数据进行算术和逻辑运算,由 ALU 实现。

中断处理

  • 响应和处理各种中断请求。

CPU 的基本组成

运算器(Data Path)

ALU(算术逻辑单元)

功能:算术(加/减/乘/除)、逻辑(与/或/非/异或)、移位、比较
输入:操作数A、操作数B、功能选择
输出:结果F、标志位(CF/ZF/OF/SF)

通用寄存器组

  • 存放操作数和中间结果,访问速度快于内存
  • 数量:通常 8~32 个(RISC 通常 32 个)
  • 通用寄存器(GPR)R0–R31、浮点寄存器(FPR)F0–F31

累加器(ACC)

  • 暂存 ALU 运算结果,某些架构中是隐含操作数。

状态 / 标志寄存器(PSW / FLAGS)

CF(Carry Flag):进位/借位标志
ZF(Zero Flag):零标志
OF(Overflow Flag):溢出标志
SF(Sign Flag):符号标志

数据缓冲寄存器(MDR / DBR)

  • 暂存从内存读出或写入内存的数据,连接内部总线和系统总线。

控制器(Control Unit)

程序计数器(PC)

功能:存放下一条要执行的指令地址
工作:取指(从PC取地址访存)→ PC ← PC + 指令长度(顺序)
                         → PC ← 目标地址(跳转)

指令寄存器(IR)

功能:存放当前正在执行的指令
组成:[操作码 | 地址码]
操作码 → 送入译码器;地址码 → 计算操作数地址

指令译码器(ID)

  • 对指令操作码译码,输出各种控制信号。

时序发生器

  • 产生节拍、脉冲等时序信号,协调各部件工作时序。

操作控制器

  • 根据译码结果和时序信号产生微操作命令;类型:硬布线、微程序。

CPU 中的寄存器

用户可见寄存器(程序员可用)

寄存器功能
通用寄存器存放数据和地址
程序计数器 PC下一条指令地址
状态寄存器 PSW运算状态和标志
浮点寄存器浮点运算数据
程序状态字程序运行状态

用户不可见寄存器(内部使用)

寄存器功能
指令寄存器 IR当前指令
存储器地址寄存器 MAR访存地址
存储器数据寄存器 MDR访存数据
微指令寄存器微程序控制

MAR 和 MDR

MAR(Memory Address Register):存放要访问的内存地址,位数决定可寻址空间
MDR(Memory Data Register):存放访存数据,位数通常等于字长
读:MAR ← 地址,发读命令,数据 → MDR
写:MAR ← 地址,MDR ← 数据,发写命令

CPU 的工作过程

取指阶段

1. MAR ← (PC)     // 地址送 MAR
2. MDR ← M[MAR]   // 从内存取指令
3. IR  ← (MDR)    // 指令送 IR
4. PC  ← PC + len  // PC 指向下一条

译码阶段

1. 操作码 → 指令译码器
2. 产生控制信号
3. 地址码 → 计算操作数地址

执行阶段

1. 取操作数  2. 运算(ALU)  3. 存结果

中断检查

检查是否有中断请求;若有 → 保存现场,转入中断处理

CPU 的内部数据通路

总线连接方式

寄存器组 ←→ 内部总线 ←→ ALU ←→ 内部总线 ←→ MDR/MAR

直接连接方式

  • 专用数据通路:各部件直接连接
  • 优点:速度快、可并行;缺点:硬件复杂

CPU 性能公式

核心公式
CPU时间 = 指令数 × CPI × 时钟周期

1. 指令数:由指令集和编译器决定
2. CPI   :由微架构决定
3. 时钟周期:由电路工艺和设计决定

易错点

必记
  1. PC 存放的是下一条指令地址,不是当前指令地址。
  2. IR 存放的是当前指令,不是下一条指令。
  3. MAR 的位数决定地址空间大小,MDR 的位数决定字长。
  4. 控制器产生控制信号,不直接进行数据运算。
  5. 状态寄存器的标志位在每次运算后更新。
  6. 用户可见寄存器可通过指令访问,不可见寄存器不行。
  7. 取指阶段 PC 自动更新(PC ← PC + len)。

交互动画 · CPU 性能公式拆解

调节三个因子,观察 CPU 时间如何变化(CPU时间 = 指令数 × CPI × 时钟周期)。

指令数 N
100
CPI
1.5
时钟周期 T (ns)
1.0
提示:放 CPI 与 T 下限分别为 0.5 与 0.1,N 下限为 10。

★ 演示级:CPU 的指令周期状态机 —— 取指 → 间址 → 执行 → 中断检查,走一圈。

取指周期FET · 必然执行 间址周期IND · 间接寻址才有 执行周期EX · 必然执行 中断周期INT · 有中断时才进入 按 PC 取指 间接寻址 → 取出真地址 执行完 → 检查中断 有请求 → 保存断点转入服务 MAR ← (PC) MDR ← M[MAR] IR ← (MDR) · PC+1 (取指周期完成) MAR ← IR(地址码) MDR ← M[MAR](取间址) 执行:ALU/访存/转移 中断:保存断点→转入口 每周期末:检查中断请求(IRQ)
1 / 8

相关知识点

data-path control-unit instruction-execution

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。