Files
obsidian/计算机组成原理/学习笔记/08_CPU结构与功能_补充版.md

22 KiB
Raw Blame History

第8章 CPU的结构和功能

📖 本章介绍CPU的功能、内部结构和指令执行过程。 🎯 重点理解CPU组成和指令周期 ⚠️ 考试范围8.1、8.2、8.3不含8.3.4和8.3.5、8.4节不考。复习重点例题8.1课后习题8.1、8.2、8.11、8.12 🔥 高频考点CPU功能与组成、指令周期/机器周期/时钟周期关系、流水线性能计算、流水线冲突分析


📋 本章目录


8.1 CPU的结构

8.1.1 CPU的功能

[!info] 核心功能 CPU负责协调并控制计算机各部件执行程序的指令序列。

基本功能

功能 说明
指令控制 控制程序的顺序执行
操作控制 产生完成每条指令所需的控制命令
时间控制 对各种操作加以时间上的控制
数据加工 对数据进行算术运算和逻辑运算
中断处理 处理异常情况和特殊请求

CPU就像公司的大脑指令控制按顺序执行程序像总经理按顺序安排工作操作控制产生控制信号像总经理发出工作指令时间控制控制操作时序像总经理控制工作进度数据加工进行各种运算像员工处理数据中断处理处理紧急事件像总经理处理紧急情况。

8.1.2 CPU结构框图

graph TB
    subgraph "CPU内部结构"
        subgraph "运算器"
            ALU[ALU<br/>算术逻辑单元]
            ACC[ACC<br/>累加寄存器]
            PSW[PSW<br/>程序状态字]
            REG[通用寄存器组]
        end

        subgraph "控制器"
            CU[CU<br/>控制单元]
            PC[PC<br/>程序计数器]
            IR[IR<br/>指令寄存器]
            MAR[MAR<br/>存储器地址寄存器]
            MDR[MDR<br/>存储器数据寄存器]
        end
    end

    ALU <--> |"数据"| REG
    ALU <--> |"数据"| ACC
    CU --> |"控制信号"| ALU
    CU --> |"控制信号"| REG
    PC --> |"地址"| MAR
    IR --> |"指令"| CU
    MAR <--> |"地址"| MEM[主存]
    MDR <--> |"数据"| MEM

    style ALU fill:#ff9999
    style CU fill:#99ccff
    style PC fill:#99ff99
    style IR fill:#ffcc99

CPU结构就像公司的组织架构运算器中ALU算术逻辑单元是生产车间负责加工产品ACC累加寄存器是操作台临时存放加工中的产品PSW程序状态字是状态指示灯显示当前工作状态通用寄存器组是工具箱存放常用工具。控制器中CU控制单元是总经理指挥整个公司运转PC程序计数器是任务清单记录下一个要执行的任务IR指令寄存器是当前任务单记录正在执行的任务MAR存储器地址寄存器是仓库地址簿记录要访问的仓库位置MDR存储器数据寄存器是传送带传送仓库和车间之间的物品。

当你执行一条加法指令时PC记录下一条指令的地址IR存放当前加法指令CU译码并发出控制信号ALU执行加法运算ACC存放运算结果PSW记录运算状态。

[!tip] 考试高频题型 给出CPU结构图要求识别各寄存器A、B、C、D分别是什么并描述取指/读数的数据通路。这是期中考试的经典题型,务必掌握图中每个部件的功能和数据流向。

8.1.3 CPU的寄存器

用户可见寄存器

寄存器类型 功能 示例
通用寄存器 可编程使用,存放操作数 AX, BX, CX, DX
数据寄存器 存放操作数 数据寄存器
地址寄存器 存放地址 基址寄存器、变址寄存器
条件码寄存器 存放运算结果状态 Z、C进位、S符号、O溢出

通用寄存器像员工可以使用的工具,可编程使用存放各种数据;数据寄存器专门存放数据;地址寄存器专门存放地址;条件码寄存器记录运算结果的状态。

控制和状态寄存器

寄存器 功能 可见性
PC 程序计数器,存放现行指令地址 用户可见
IR 指令寄存器,存放当前指令 用户不可见
MAR 存储器地址寄存器 用户不可见
MDR 存储器数据寄存器 用户不可见
PSW 程序状态字寄存器 部分可见

PC程序计数器记录下一个要执行的任务执行完一个任务后自动指向下一个任务遇到跳转指令时指向跳转目标。IR指令寄存器记录正在执行的任务包含操作码要做什么和地址码操作数在哪里操作码送给CU译码。MAR存储器地址寄存器记录要访问的仓库位置把地址送到仓库。MDR存储器数据寄存器传送仓库和车间之间的物品。PSW程序状态字寄存器显示当前工作状态包括条件码、中断屏蔽位等。

[!important] 数据通路(期中/期末常考) 取指数据通路PC → MAR → 主存 → MDR → IR这是最基本的数据通路必须熟记 读数据通路X → MAR → 主存 → MDR → ALU → ACC从内存读操作数参与运算 这两条数据通路在考试中经常以识图题的形式出现,参见真题精选部分。


8.2 指令周期

8.2.1 指令周期的基本概念

[!info] 定义 指令周期是指从取指令到执行完该指令所需的全部时间。

指令周期的组成

  • 取指周期:取指令的时间
  • 执行周期:执行指令的时间

指令周期就像完成一个任务的时间:取指周期是从仓库取任务单的时间,执行周期是执行任务的时间。简单指令取指周期+执行周期,复杂指令取指周期+多个执行周期。

8.2.2 指令周期的时序

graph TB
    A[取指周期] --> B[执行周期]
    B --> C[取指周期]
    C --> D[执行周期]
    D --> E[...]

时序信号

  • 时钟周期CPU的最小时间单位
  • 机器周期:完成一个基本操作的时间
  • 指令周期:完成一条指令的时间

[!tip] 三者关系(考试重点) 时钟周期(最小)< 机器周期(一个机器周期通常包含若干时钟周期)< 指令周期(一条指令可能需要多个机器周期)

这三者的包含关系是选择题和填空题的高频考点。记住:一个指令周期包含若干机器周期,一个机器周期包含若干时钟周期。

时钟周期像CPU的最小工作时间单位1GHz CPU的时钟周期是1ns机器周期完成一个基本操作的时间通常包含几个时钟周期指令周期完成一条指令的时间根据指令类型不同而不同。

8.2.3 指令执行过程

取指周期

  1. PC → MAR → 地址总线
  2. CU发出读命令
  3. 存储器 → 数据总线 → MDR
  4. MDR → IR
  5. PC + 1 → PC

执行周期

  1. IR的操作码 → CU译码
  2. CU发出控制信号
  3. 执行指令操作

取指周期像从仓库取任务单:把任务单地址送到仓库地址簿,告诉仓库要取任务单,仓库把任务单送到传送带,任务单送到当前任务单,任务清单指向下一个任务。执行周期像执行任务:总经理看任务单决定要做什么,总经理发出工作指令,员工执行任务。

当你执行一条加法指令时取指周期从内存取加法指令到CPU执行周期执行加法运算。


8.3 指令流水

8.3.1 流水线的基本概念

[!info] 定义 流水线是指将指令执行过程分成多个阶段,多个指令可以同时在不同阶段执行。

流水线的阶段

  • 取指IF:取指令
  • 译码ID:译码指令
  • 执行EX:执行指令
  • 访存MEM:访问存储器
  • 写回WB:写回结果

流水线就像工厂的生产线:取指从仓库取原材料,译码看图纸决定要做什么,执行加工产品,访存从仓库取需要的材料,写回把成品放到仓库。多个指令可以同时在不同阶段执行,提高吞吐率和效率。

8.3.2 流水线的性能

这是本章最重要的计算题考点,几乎每次考试都会出现。

吞吐率(单位时间完成的指令数):

TP = \frac{n}{k + (n-1)}

其中 n 为指令条数,k 为流水线段数,每段假设时间相同为 $\Delta t$。分母 k+(n-1) 是完成n条指令所需的时钟周期数第一条需要k个周期建立流水线之后每条只需1个周期。当各段时间不同时吞吐率受限于最慢的段

TP_{max} = \frac{1}{\max(\Delta t_i)}

其中 \max(\Delta t_i) 是所有流水线段中最长的执行时间,它决定了流水线的时钟周期下限。

加速比(不使用流水线的时间 / 使用流水线的时间):

S = \frac{nk}{k + (n-1)}

其中分子 nk 是不用流水线时n条指令各需k段串行执行的总时间分母是流水线方式的总时间。S 越大说明流水线加速效果越好,理想极限为 $k$(段数)。

效率(流水线各段的利用率):

E = \frac{S}{k} = \frac{n}{k + (n-1)}

其中 S 为加速比,k 为段数。效率=加速比/段数,表示流水线中每个段的平均利用率。E 越接近1越好。

流水线性能像工厂的生产效率:吞吐率是单位时间完成的任务数,加速比是流水线比非流水线快多少倍,效率是流水线的利用率。

假设流水线有4个阶段执行100条指令吞吐率100/(4+99)=0.97条/周期加速比100×4/(4+99)=3.88效率3.88/4=97%。

[!warning] 不等段流水线计算(作业/考试原题) 当各段时间不相等时,完成时间 = 第一段总时间 + (n-1) x max(各段时间)吞吐率以最慢段为瓶颈。详见真题精选第1题。

8.3.3 流水线冲突

流水线冲突分析是考试中分析题的常见考点,要能判断指令间存在哪种冲突以及如何解决。

结构冲突:硬件资源不足,两个指令同时访问同一个存储器,增加硬件资源解决。

数据冲突:指令之间有数据依赖,后面的指令需要前面指令的结果。解决方法:数据旁路(将结果直接转发给后续指令)或流水线暂停(插入气泡等待数据就绪)。

控制冲突:分支指令改变程序流,跳转指令导致流水线需要重新取指。解决方法:分支预测或延迟分支。

结构冲突像两个工人都要用同一个工具,多买几个工具解决;数据冲突像上一个产品还没做完下一个产品需要它的零件,等做完或先做其他产品解决;控制冲突像突然改变生产计划,提前预测或等确定后再生产解决。

[!tip] 冲突判断技巧(考试高频)

  • 看两条指令是否同时使用同一硬件资源 → 结构冲突
  • 看后一条指令的源操作数是否是前一条指令的目的操作数 → 数据冲突RAW/RAW相关
  • 看是否出现条件转移或无条件跳转 → 控制冲突 一道题中可能同时出现多种冲突注意逐一排查。参见真题精选第2题。

📝 本章小结

核心概念

  1. CPU功能:指令控制、操作控制、时间控制、数据加工、中断处理
  2. CPU结构:运算器、控制器、寄存器
  3. 指令周期:取指周期、执行周期
  4. 指令流水提高CPU效率的重要技术
  5. 流水线冲突:结构冲突、数据冲突、控制冲突

关键术语

术语 英文 含义
CPU Central Processing Unit 中央处理器
ALU Arithmetic Logic Unit 算术逻辑单元
CU Control Unit 控制单元
PC Program Counter 程序计数器
IR Instruction Register 指令寄存器
MAR Memory Address Register 存储器地址寄存器
MDR Memory Data Register 存储器数据寄存器
流水线 Pipeline 指令流水
吞吐率 Throughput 单位时间完成指令数
加速比 Speedup 流水线相对非流水线的提升

重点图示

[!summary] 必须掌握的图

  1. CPU内部结构图识别各寄存器
  2. 取指/读数据通路图
  3. 指令周期时序图
  4. 流水线时空图
  5. 流水线冲突示意图

📖 真题与作业精选

以下是来自作业、期中/期末考试和复习资料的精选题目,考试中出现过原题或类似题。

真题1不等段流水线性能计算作业三原题

题目某5段流水线各段时间分别为4ns、5ns、6ns、7ns、4ns执行200条指令。求最大吞吐率、完成时间和效率。

解答

  1. 最大吞吐率受限于最慢的段第4段7ns所以

    TP_{max} = \frac{1}{7\text{ns}}
  2. 完成时间第一条指令经过全部5段的时间 + 后续199条指令每条等待一个最慢段的时间

    T = (4+5+6+7+4) + (200-1) \times 7 = 26 + 1393 = 1400\text{ns}

    也可以用另一种理解流水线建立后每7ns出一条指令第一条26ns完成之后每隔7ns完成一条。总时间 = 26 + 199 x 7 = 1400ns。

  3. 效率:各段实际工作时间之和 / (段数 x 总时间)

    E = \frac{5 \times 200}{5 \times 200 + 4 \times 7} \times 100\% = \frac{1000}{1028} \times 100\% \approx 97.3\%

    分子是各段的有效工作量200条指令 x 5个段分母要加上流水线排空阶段末尾4个段各空闲了一个最慢段时间4 x 7ns换算成的工作单元数

[!tip] 解题要点 不等段流水线的关键是找到最慢段,它决定了流水线的实际吞吐率。这类题是作业和考试的高频计算题。

真题2流水线冲突分析作业三原题

题目:分析以下指令序列中的相关与冲突:

MUL R2, R1, R0    ; R2 = R1 x R0
JEQ X             ; 若Z=1则跳转到X
ADD R3, R4, R5    ; R3 = R4 + R5

解答

  • MUL与JEQ:存在数据相关。JEQ需要检测PSW中的Z标志位而该标志位由MUL指令的运算结果设置。MUL还没执行完JEQ就可能需要读取Z标志因此产生数据冲突。同时JEQ是条件转移指令还会引起控制冲突(是否跳转不确定,流水线不知道下一条取哪里的指令)。

  • ADD与前面的指令ADD的源操作数R4、R5和目的操作数R3与MUL、JEQ均无数据依赖关系因此ADD与前面的指令不存在数据相关。但JEQ引起的控制冲突仍会影响ADD是否应该被取指执行。

[!tip] 冲突分析三步法

  1. 先找数据依赖:后指令的源操作数是否等于前指令的目的操作数
  2. 再找控制依赖:是否出现跳转/分支指令
  3. 最后看结构依赖:是否同时访问同一硬件资源

真题3CPU寄存器识别与数据通路复习资料原题

题目某CPU内部结构图中标注了A、B、C、D四个部件分别连接在数据通路上。请指出它们分别是什么寄存器并描述取指和读数据的完整数据通路。

解答

  • A = MDR存储器数据寄存器CPU与主存之间传送数据的缓冲
  • B = MAR(存储器地址寄存器):存放要访问的主存地址
  • C = IR(指令寄存器):存放当前正在执行的指令
  • D = PC(程序计数器):存放下一条要执行的指令地址

取指数据通路PC → MAR → 主存(取指令)→ MDR → IR

具体过程PC把指令地址送到MARMAR通过地址总线把地址送到主存主存根据地址找到指令并通过数据总线送到MDRMDR把指令送到IR同时PC+1指向下一条指令。

读数据通路X → MAR → 主存(读数据)→ MDR → ALU → ACC

具体过程操作数地址X送到MARMAR把地址送到主存主存找到数据送到MDRMDR把数据送到ALU参与运算运算结果送到ACC。

[!important] 期中/期末曾考此题 识别CPU结构图中各部件是经典考试题型。关键记忆MAR管地址、MDR管数据、IR存指令、PC存下条地址。

真题4流水线效率分析与改进复习资料原题

题目某流水线只有IF、ID、EX、WB四个阶段各段时间为IF(2t)、ID(2t)、EX(t)、WB(t)。计算该流水线的效率,并提出改进方案。

解答

  1. 原流水线效率最慢段为2tIF和ID流水线实际吞吐率以2t为节拍。

    • 非流水线总时间 = 2t + 2t + t + t = 6t
    • 流水线时间 = 4段建立时间 + (n-1) x 2t = 6t + (n-1) x 2t
    • 当n足够大时加速比 S = 6t / 2t = 3
    • 效率 E = S / k = 3 / 4 = 75%... 实际上因各段时间不等,效率约为 50%

    各段利用率IF段和ID段持续工作利用率100%EX段只工作t但占2t的时间槽利用率50%WB段同样50%。平均效率 = (100% + 100% + 50% + 50%) / 4 = 75%。但由于EX和WB的闲置整体效率降至约50%。

  2. 改进方案(二选一):

    • 方案一:拆分慢段——将ID拆成ID1(t)和ID2(t)两段使所有段的时间都变为t流水线均匀效率提升到接近100%
    • 方案二:并联重复设置——在ID段和EX段各设置两套硬件交替使用使吞吐率翻倍

[!tip] 流水线改进的核心思路 效率低的根本原因是各段时间不均衡,导致快的段等待慢的段。改进方法要么拆分慢段使之均匀,要么并联重复设置瓶颈段。


例题与解析

例题1CPU功能分析

题目简述CPU的五大功能。

答案

CPU的五大功能指令控制控制程序的顺序执行像总经理按顺序安排工作操作控制产生完成每条指令所需的控制信号像总经理发出工作指令时间控制对各种操作加以时间上的控制像总经理控制工作进度数据加工对数据进行算术运算和逻辑运算像员工处理数据中断处理处理异常情况和特殊请求像总经理处理紧急情况。

例题2指令周期计算参考课后习题8.1、8.2

题目某CPU主频为1GHz取指周期为4个时钟周期执行周期为6个时钟周期求执行100条指令所需时间。

答案

主频1GHz=10^9 Hz时钟周期1/10^9 =1ns。 取指周期4个时钟周期=4ns执行周期6个时钟周期=6ns。 单条指令时间=4+6=10ns。 100条指令时间=100 x 10ns=1000ns=1us。

这道题对应课后习题8.1和8.2的类型,计算指令周期时间是最基础的考题。

例题3流水线性能计算参考例题8.1

题目某CPU有4级流水线执行100条指令求吞吐率、加速比和效率。

答案

流水线阶段数k=4指令数n=100。 吞吐率TP=100/(4+99)=0.97条/周期。 加速比S=100 x 4/(4+99)=3.88。 效率E=3.88/4=97%。

这是例题8.1的标准题型各段时间相等的情况。考试中可能变为不等段时间参见真题精选第1题。

例题4流水线冲突分析

题目:分析以下指令序列中的数据冲突:

ADD R1, R2, R3  ; R1 = R2 + R3
SUB R4, R1, R5  ; R4 = R1 - R5

答案

ADD指令产生R1的值SUB指令需要R1的值。如果ADD指令还没执行完SUB指令就需要R1的值就会发生数据冲突RAW相关——写后读冲突

解决方案数据旁路ADD指令执行完后直接把结果传给SUB指令不用等写回阶段或流水线暂停插入气泡等ADD指令执行完后再执行SUB指令

例题5中断系统设计

题目设计一个简单的中断系统支持4个中断源。

答案

中断请求4个中断请求触发器IR0-IR3保存中断请求信号。 中断屏蔽4个中断屏蔽触发器IM0-IM3控制中断是否被屏蔽。 中断判优优先级编码器IR0>IR1>IR2>IR3。 中断响应中断响应信号INTACPU响应中断请求。 中断向量表4个中断向量存放中断服务程序入口地址。


知识点速记卡

考前快速过一遍30秒回忆整章核心

考试题型分布:选择/填空CPU寄存器识别、周期关系、计算流水线性能、分析流水线冲突判断

CPU五大功能指令控制顺序执行、操作控制发控制信号、时间控制时序、数据加工ALU运算、中断处理。

CPU内部关键寄存器PC下条指令地址、IR当前指令、MAR访存地址、MDR访存数据、PSW程序状态、ACC累加器、通用寄存器组。考试常考给出结构图让你标注各寄存器名称。

指令周期层次关系:指令周期(最大)> 机器周期 > 时钟周期(最小)。一个指令周期包含若干机器周期,一个机器周期包含若干时钟周期。这是选择题高频考点。

取指数据通路PC → MAR → 主存 → MDR → IRPC+1 → PC。读数据通路X → MAR → 主存 → MDR → ALU → ACC。这两条通路务必熟记。

流水线五阶段IF取指→ ID译码→ EX执行→ MEM访存→ WB写回

流水线公式(等段时间):完成时间 T = k + (n-1)(以时钟周期数计),吞吐率 TP = n/(k+n-1),加速比 S = nk/(k+n-1)。n=100条、k=4级 → TP约等于0.97S约等于3.88。

流水线公式(不等段时间)吞吐率受限于最慢段TP_max = 1/max(Delta_t_i)。完成时间 = 满载时间 + (n-1) x 最慢段时间。

流水线三种冲突:结构冲突(争硬件,加资源)、数据冲突(数据依赖,旁路或暂停)、控制冲突(分支跳转,预测或延迟)。考试中给出指令序列让你判断冲突类型是常见分析题。

冲突判断口诀:后读前写的数 → 数据冲突;跳转分支 → 控制冲突;同争一个硬件 → 结构冲突。


🔗 相关链接


本章难度: 困难 重要程度: 重点 考试占比约15%-20%,流水线计算几乎必考 复习建议重点练习流水线性能计算不等段时间和冲突分析结合课后习题8.11、8.12强化训练