计算机组成原理:CPU的结构与功能

计算机组成原理:CPU的结构与功能

一、CPU的基本功能

CPU 是计算机的“大脑”,其核心功能可概括为以下四个方面:

功能 说明
指令控制 按程序顺序取指、执行,实现程序流程控制(如跳转、循环、调用)。
操作控制 对指令进行译码,产生控制信号,协调ALU、寄存器、存储器等部件协同工作。
时间控制 通过时钟脉冲和机器周期,确保各操作在正确的时间节拍内完成。
数据加工 执行算术与逻辑运算(加减乘除、与或非),对数据进行处理和变换。

二、CPU的组成

现代CPU主要由以下四个部分构成:

运算器(ALU) :负责数据运算

控制器(CU) :负责指令控制与协调

寄存器组:高速暂存单元,存放指令、数据、地址、状态

内部总线:连接各部件的数据通路​​

CPU与主存构成“主机”,I/O设备与辅助存储器构成“外设”。CPU通过总线与主存通信。

三、控制器详解

(1)控制器的功能

控制器是CPU的“指挥中心”,主要完成:

取指:从内存中取出下一条指令,送入IR,并更新PC(PC自动+1)
译码:分析指令的操作码和地址码,确定操作类型和操作数来源
控制数据流:根据译码结果,发出控制信号,协调ALU、寄存器、存储器等部件工作

(2)关键寄存器说明

CU(Control Unit) :控制单元,负责生成控制信号。

IR(Instruction Register) :指令寄存器,存放当前正在执行的指令。

PC(Program Counter) :程序计数器,存放下一条指令的地址,每次取指后自动加1。

四、运算器详解

(1)运算器的功能

运算器(又称ALU)是CPU中执行算术运算逻辑运算的核心部件:

  • 算术运算:加、减、乘、除、移位等
  • 逻辑运算:与、或、非、异或等

(2)关键寄存器说明

  • ACC(Accumulator) :累加器,常用于存放运算中间结果或最终结果。
  • MQ(Multiplier-Quotient Register) :乘商寄存器,在乘法中存放乘数/被乘数,在除法中存放商。
  • X:通用操作数寄存器,可存放任意操作数。
  • ALU(Arithmetic Logic Unit) :算术逻辑单元,内部由加法器、移位器、逻辑门电路组成,完成所有运算。

五、寄存器组详解

(1)寄存器组的作用

寄存器组是CPU内部的高速存储单元,用于暂时存放数据、地址、指令、状态标志,是CPU与主存之间数据交换的缓冲区。

该图展示了一个较完整的CPU内部结构,包括:

左侧:运算器(ALU + 通用寄存器 R0~R3 + DR + PSW)

右上:数据Cache / 指令Cache

右下:控制器(CU + IR + PC + OC)

总线系统:数据总线、地址总线、控制总线

(2)寄存器分类

① 通用寄存器(General Purpose Registers)

用途灵活,可用于存放数据、地址、中间结果。

包括:

  • 数据寄存器(如AX, BX, CX, DX)
  • 变址寄存器(如SI, DI)
  • 指针寄存器(如SP, BP)
  • 段寄存器(如CS, DS, ES)
  • 指令指针寄存器(IP/EIP,即PC)
② 专用寄存器(Special Purpose Registers)

功能固定,不可随意改写。

包括:

  • PC(程序计数器) :指向下一条指令地址,自动+1。
  • SP(堆栈指针) :指向当前栈顶。
  • FR(标志寄存器 / PSW) :记录运算结果的状态标志(如CF进位、ZF零、SF符号、OF溢出等)。

六、指令周期

1. 指令周期的基本概念

指令周期:CPU从取指到执行完成一条指令所花费的总时间。

基本划分(最简模型):

  1. 取指周期(Fetch Cycle) :取指令 + 分析指令(译码)

  2. 执行周期(Execute Cycle) :执行指令操作(如运算、访存、跳转等)

2. 完整指令周期的四个阶段

一个完整的指令周期可能包含以下四个阶段(并非所有指令都经历全部阶段):

阶段 功能说明 是否必需
取指周期 从内存取出指令,送入IR;PC自动+1 ✅ 必需
间址周期 若为间接寻址,需根据指令地址再取一次有效地址 ❌ 可选
执行周期 执行指令操作(算术、逻辑、访存、跳转等) ✅ 必需
中断周期 检查是否有中断请求,若有则保存现场、转入ISR ❌ 可选​​

⚠️ 注意:

“间址周期”只在间接寻址指令中出现(如 MOV AX, [BX]​ 是直接寻址,无间址;MOV AX, [[BX]]​ 是间接寻址,有间址);“中断周期”只在允许中断且有中断请求时发生,通常在执行周期结束后检查

3. 时间单位层级关系

CPU内部操作以时钟脉冲为基准,形成三级时间单位:

名称 定义 与指令周期关系
时钟周期 T 最小时间单位,由振荡电路OSC产生,T = 1/f(f为时钟频率) 1个机器周期 = n个时钟周期
机器周期(CPU周期) 完成一个基本操作所需时间(如取指、访存、ALU运算),通常以主存访问时间为基准 1个指令周期 = 多个机器周期
指令周期 CPU取出并执行一条指令所需的总时间 由多个机器周期组成

4. 指令流水的定义与目的

定义:将一条指令的执行过程划分为多个独立的阶段(如取指、译码、执行、访存、写回),每个阶段由专门的功能部件处理,多个指令的不同阶段并行执行

目的:提高CPU利用率,提升吞吐率(单位时间完成指令数)。

七、中断系统概述

1. 中断系统的定义与关键术语

1
2
3
4
5
6
7
8
9
10
11
12
13
14

┌───────────────┐
│ 中断系统 │ ← 硬件+软件系统
├───────────────┤
│ 中断源 │ ← 请求源(如键盘、定时器)
├───────────────┤
│ 中断请求 │ ← 向CPU提出处理请求
├───────────────┤
│ 中断响应 │ ← CPU暂停当前任务,转去处理
├───────────────┤
│ 中断服务 │ ← 执行中断服务程序(ISR)
├───────────────┤
│ 中断返回 │ ← 返回原程序继续执行
└───────────────┘

💡 注意:“中断源” ≠ “中断请求”:源是设备,请求是信号;“中断响应”发生在指令周期结束时(一般在执行周期后),且需满足:IF=1,无更高优先级中断正在处理。

2. 中断与异常的区别

3. 中断 vs 异常(内中断 vs 外中断)

类型 名称 触发源 是否可屏蔽 典型例子
异常 内中断 CPU内部执行指令时发生 ❌ 不可屏蔽 除零错误、非法指令、缺页、溢出
中断 外中断 外部设备发出请求 ✅ 可屏蔽 键盘输入、定时器到期、磁盘读写完成

异常不可屏蔽,中断可屏蔽(通过IF标志位控制),并且异常通常在指令执行过程中发生,中断一般在指令周期结束后响应

4. 中断处理流程

完整的中断处理过程如下:

1
中断请求(Interrupt Request) →  中断响应(Interrupt Acknowledge) →  保护现场(Save Context) →  执行中断服务程序(ISR) →  中断返回(Return from Interrupt

各步骤详解:

步骤 说明
中断请求 外设或异常源发出中断信号,送入CPU中断控制器
中断响应 CPU在满足条件时(IF=1,当前指令执行完),暂停当前程序,进入中断处理
保护现场 将PC、PSW等寄存器内容压入栈,保存断点信息
中断服务 根据中断类型号查中断向量表,跳转到相应ISR执行
中断返回 执行IRET指令,恢复现场,返回原程序断点继续执行

关键机制:

中断嵌套:必须支持栈结构保存多层现场(否则会覆盖断点)。

中断撤除:在ISR结束前,需清除中断请求信号(如写EOI命令给8259A),否则会重复响应。

优先权排队:多个中断同时请求时,按优先级顺序响应(如IRQ0最高,IRQ7最低)。


计算机组成原理:CPU的结构与功能
https://github.com/DukeZhu513/dukezhu513.github.io.git/post/ji-suan-ji-zu-cheng-yuan-li-cpude-jie-gou-yu-gong-neng-13jar3.html
作者
Duke Zhu
发布于
2025年9月24日
许可协议