视频加载失败

课程

9449 字
约 27 分钟

计算机组成原理期末终极复习指南

计算机组成原理notes·更新于 2026-09-15

计算机组成原理期末终极复习指南

Note

本文档整理自课程核心知识点、典型计算题以及期末备考重点

目录


第二章:数据的表示与运算

1. 定点数补码加减法及溢出判断

  • 计算公式
    • [X+Y]=[X]+[Y][X+Y]_{\text{补}} = [X]_{\text{补}} + [Y]_{\text{补}}
    • [XY]=[X]+[Y][X-Y]_{\text{补}} = [X]_{\text{补}} + [-Y]_{\text{补}}
    • [Y][-Y]_{\text{补}} 是将 [Y][Y]_{\text{补}} 连同符号位在内全部按位取反,并在末位加 11
  • 溢出判断方法(须根据题目要求选择):
    • 单符号位法:若参与运算的两个数符号相同,而运算结果的符号与原符号相反,则表示溢出。
    • 双符号位法(变形补码):用两位表示符号(0000 表示正,1111 表示负)。
      • 运算结果的符号位为 00001111:无溢出。
      • 运算结果的符号位为 0101:正溢出。
      • 运算结果的符号位为 1010:负溢出。
    • 注意点:注意题目要求是“单符号位”还是“双符号位”判断溢出,必须严格按照题目指令作答。

2. 补码除法(加减交替法)

  • 核心规则
    • 操作数表示:所有的操作数均写为补码形式。
    • 商符处理:商符是在求商的过程中自动形成的,无需作为符号位单独进行特殊处理。

3. IEEE 754 浮点数标准

  • 单精度(32位)格式分配符号位 S (1位)阶码 E (8位)尾数 M (23位)\text{符号位 } S \text{ (1位)} \mid \text{阶码 } E \text{ (8位)} \mid \text{尾数 } M \text{ (23位)}
    • 偏置值(Bias):单精度为 127127(实际指数 e=E127e = E - 127)。
    • 尾数特点:采用规格化表示,最高位的隐藏位为 11,实际尾数值为 1.M1.M
  • 十进制与 IEEE 754 转换步骤
    1. 将十进制数转换为二进制。
    2. 规格化为 1.M×2e1.M \times 2^e 的形式。
    3. 计算阶码 E=e+127E = e + 127,转为 8 位二进制。
    4. 拼接 S(1)+E(8)+M(23)S(1) + E(8) + M(23),每 4 位一组写成 16 进制。

4. 浮点数的规格化

  • 原码规格化:尾数绝对值在 [0.5,1)[0.5, 1) 之间,即尾数最高数值位(小数点后第一位)必须是 11(形如 0.10.1\dots1.11.1\dots)。
  • 补码规格化:尾数最高数值位与符号位相反(形如 0.10.1\dots1.01.0\dots)。

5. 浮点数加减法运算(补码表示)

  • 运算基本步骤
    1. 对阶:求阶差,原则为**“小阶向大阶看齐”**。小阶的尾数向右移,每右移一位,阶码加 11,直到两数阶码一致(补码右移时高位补符号位)。
    2. 尾数求和:对阶后的尾数(用补码表示)进行加减运算。
    3. 规格化
      • 右规:当尾数相加溢出(双符号位出现 01011010)时,尾数右移一位,阶码加 11
      • 左规:当尾数结果不满足规格化时,尾数连续左移,阶码依次减 11,直到规格化。
    4. 舍入:对阶或右规过程中尾数右移丢失低位时,采用“0舍1入”法或“恒置1”法。
    5. 溢出判断
      • 阶码上溢:指数超过最大允许值(阶码双符号位为 0101),发生真正溢出,需进行溢出中断处理。
      • 阶码下溢:指数低于最小允许值,按“机器零”处理,不作溢出。
  • 典型例题背景(阶码和尾数位数限制):
    • 条件:假设阶码为 33 位,尾数为 66 位(均不包含符号位,计算时要单独加上符号位)。如分数 1116=0.10112\frac{11}{16} = 0.1011_2916=0.10012\frac{9}{16} = 0.1001_2

三、 存储系统

1. 存储器容量与寻址范围计算(主存编址)

  • 基本原理:若机器字长为 WW 位,总容量为 CC
    • 按字节寻址:寻址范围 =C= C 字节。
    • 按字寻址:寻址范围 =C字长=CW/8= \frac{C}{\text{字长}} = \frac{C}{W/8}
  • 计算实例:假设机器字长为 6464 位,主存容量为 128MB128\text{MB}
    • 机器字长:64=8字节64\text{位} = 8\text{字节}
    • 按字节寻址:寻址范围为 128M128\text{M}(每个字节占 1 个地址)。
    • 按字寻址:寻址范围为 128MB8B=16M\frac{128\text{MB}}{8\text{B}} = 16\text{M}(字)。

2. 存储器与 CPU 的连接设计

  • 容量扩展方式
    • 位扩展(字长扩展):适用于芯片字数满足要求但字长位数不足的场景。各芯片的地址线、片选线和读写控制线并联,数据线分别连接到系统数据总线的不同位上。
    • 字扩展(字数扩展):适用于芯片字长满足要求但字数不足的场景。各芯片的数据线、读写控制线并联,地址线低位并联,高位部分通过译码器(如 74LS138)产生片选信号(CS\overline{CS}),分别连接到不同芯片。
    • 字位同时扩展:先进行位扩展形成一个大组,再通过译码器对各个大组进行字扩展。
  • 连接设计注意事项
    • 系统程序区:通常存放在 ROM 中。
    • 用户程序区:通常存放在 RAM 中。
    • 设计步骤
      1. 确定系统程序区和用户程序区的十六进制/二进制地址范围。
      2. 根据容量和字长选择合适的芯片数量(进行字扩展或位扩展)。
      3. 利用高位地址线作为译码器的输入,产生片选信号。
      4. 绘制连接图,注意读写控制信号(WE\overline{WE})、访存控制信号(MREQ\overline{MREQ})及数据线、地址线的正确连接。

3. 多体并行存储器与高低位交叉编址

  • 低位交叉编址
    • 目的:利用多模块流水线并行存取,提高存储器带宽。
    • 地址分配:高位地址表示体内地址(体内单元的偏移量);低位地址表示体号(用于选择存储体)。每传送一个字,只需占用一个存储模块的存取周期,实现流水线式读取。

4. 高速缓冲存储器(Cache)地址映射与计算

  • Cache 映射方式与地址划分
    • 直接映射:主存块只能映射到固定的 Cache 块(Cache块号=主存块号modCache总块数\text{Cache块号} = \text{主存块号} \bmod \text{Cache总块数})。 主存地址格式:[主存字块标记 (Tag)Cache字块地址 (Index)字区内地址 (Offset)]\text{主存地址格式:} [ \text{主存字块标记 (Tag)} \mid \text{Cache字块地址 (Index)} \mid \text{字区内地址 (Offset)} ]
    • 全相联映射:主存块可以装入任意 Cache 块。 主存地址格式:[主存字块标记 (Tag)字区内地址 (Offset)]\text{主存地址格式:} [ \text{主存字块标记 (Tag)} \mid \text{字区内地址 (Offset)} ]
    • 组相联映射:主存块映射到固定的 Cache 组(Cache组号=主存块号modCache总组数\text{Cache组号} = \text{主存块号} \bmod \text{Cache总组数}),可装入该组内的任意块。 主存地址格式:[主存字块标记 (Tag)组地址 (Set Index)字区内地址 (Offset)]\text{主存地址格式:} [ \text{主存字块标记 (Tag)} \mid \text{组地址 (Set Index)} \mid \text{字区内地址 (Offset)} ]
  • 组相联地址格式计算实例(如四路组相联):
    • 条件:主存容量为 256K256\text{K} 字,Cache 容量为 2K2\text{K} 字,块长为 44 字。
    • 步骤
      1. 块内地址(字地址):由于块长为 44 字,块内地址占用 log2(4)=2\log_2(4) = 2 位。
      2. 组地址(组号)
        • Cache 总块数 =2K4=512= \frac{2\text{K}}{4} = 512 块。
        • 四路组相联(每组 4 块),Cache 总组数 =5124=128= \frac{512}{4} = 128 组。
        • 组地址位数 =log2(128)=7= \log_2(128) = 7 位。
      3. 主存 Tag
        • 主存总容量 256K=218256\text{K} = 2^{18} 字,主存地址共 1818 位。
        • 主存 Tag 位数 =1872=9= 18 - 7 - 2 = 9 位。
      4. 主存地址格式\hline \text{主存字块标记 (Tag) [9位]} & \text{组号 (Set) [7位]} & \text{字地址 (Offset) [2位]} \\ \hline \end{array}$$

5. DRAM 刷新方式

  • 集中刷新:在最大刷新间隔内,集中安排时间进行刷新,存在无法读写的“死时间(死区)”。
  • 分散刷新:将刷新安排在每个存取周期内完成,无死时间,但存取周期翻倍,效率低。
  • 异步刷新:在两行刷新的最大间隔(如 2ms)内,将刷新操作分散到各个存取周期中,效率最高。

6. 虚拟存储器、TLB、Page与Cache的关系

  • 逻辑地址(虚拟地址)\to 物理地址(主存地址)\to Cache 地址的转换关系。
  • 命中关系规律
    • 若发生缺页(Page Fault,主存中没有该页),则 Cache 必定未命中(Cache Miss)。
    • 若 TLB(快表)命中,则页表(慢表)必定命中。

7. 校验码:海明码(Hamming Code)

  • 纠错与译码步骤(以偶校验为例):
    1. 根据校验位位置,写出各纠错指征字(校验方程)P1,P2,P4,P_1, P_2, P_4, \dots 的计算公式。
    2. 计算各指征字的值。若指征字不全为 00,说明传输过程中出错;指征字组合形成的二进制数值即为出错的位数。
    3. 对出错位进行纠错(取反),然后去除海明码中的校验位,还原出原本发送的有效信息。

第四章:指令系统

1. 寻址方式与有效地址 EAEA 计算

  • 立即寻址EAEA 不存在,操作数直接包含在指令中。
  • 直接寻址EA=AEA = A(指令中的地址直接就是主存物理地址)。
  • 间接寻址EA=(A)EA = (A)(指令中的地址存放的是操作数有效地址的地址)。
  • 寄存器寻址EAEA 不存在,操作数存放在寄存器 RiR_i 中。
  • 寄存器间接寻址EA=(Ri)EA = (R_i)(寄存器中存放的是主存物理地址)。
  • 相对寻址EA=(PC)+AEA = (PC) + A(常用于转移指令。注意:计算时 PCPC 往往已经完成了“自动加”操作)。
  • 基址寻址EA=(BR)+AEA = (BR) + A面向系统,多用于多道程序定位,基址寄存器内容由操作系统/硬件维护,程序员无权修改。
  • 变址寻址EA=(IX)+AEA = (IX) + A面向用户,适用于循环和数组操作,变址寄存器内容由程序员修改。

2. 扩展操作码技术

  • 基本思想:在指令字长固定的情况下,通过减少地址码的个数,将其占用的位数释放给操作码,从而增加指令条数。
  • 计算实例
    • 已知条件:指令字长为 1616 位,操作数地址码均为 44 位。设计 XX 种三地址指令,YY 种二地址指令,没有零地址指令。求一地址指令最多有多少种?
    • 推导步骤
      1. 三地址指令
        • 拥有 3 个地址码,占 3×4=123 \times 4 = 12 位。
        • 操作码(Opcode)剩余 1612=416 - 12 = 4 位,最多有 24=162^4 = 16 种状态。
        • 设计了 XX 种三地址指令,则剩余操作码状态数为:(16X)(16 - X) 个。
      2. 二地址指令
        • 拥有 2 个地址码,占 2×4=82 \times 4 = 8 位。
        • 操作码扩展至 4+4=84 + 4 = 8 位。
        • 可扩展出 (16X)×24=(16X)×16(16 - X) \times 2^4 = (16 - X) \times 16 种状态。
        • 设计了 YY 种二地址指令,则剩余状态数为:[(16X)×16Y][(16 - X) \times 16 - Y] 个。
      3. 一地址指令
        • 拥有 1 个地址码(占 4 位)。
        • 操作码再扩展 4 位,达到 1212 位。
        • 最大数量为: 一地址指令最大种数=[(16X)×16Y]×24=[(16X)×16Y]×16\text{一地址指令最大种数} = [ (16 - X) \times 16 - Y ] \times 2^4 = [ (16 - X) \times 16 - Y ] \times 16

五、 中央处理器

1. 数据通路微操作流程

  • 取指阶段通用流程
    1. PCMARPC \to MAR(程序计数器送入主存地址寄存器)
    2. ReadRead(向主存发送读命令)
    3. M(MAR)MDRM(MAR) \to MDR(从主存读出指令到数据寄存器)
    4. MDRIRMDR \to IR(指令送入指令寄存器)
    5. (PC)+1PC(PC) + 1 \to PC(程序计数器加 1,指向下一条指令)
  • 执行阶段微操作:根据具体机器指令(如 ADD R0,R1ADD\ R0, R1LDA XLDA\ X),在控制信号的作用下,完成相应的寄存器级数据传送或 ALU 运算。

2. 微程序控制器设计

  • 核心概念辨析
    • 微命令:控制部件向执行部件发出的控制信号(最基本的控制信号)。
    • 微操作:微命令的执行过程(最基本的硬件动作)。
    • 微指令:若干个微命令的组合,存放在控制存储器中(控制字)。
    • 微程序:实现一条机器指令的一系列微指令序列。
  • 控制存储器(CM):位于 CPU 内部,采用 ROM 实现,用于存放微程序。
  • 微指令后续地址形成方式:主要通过“下地址字段(断定方式)”或“操作码译码(OP \to CM 地址)”形成。

3. 指令流水线

  • 三大性能指标
    • 吞吐率(TP):单位时间内流水线所完成的指令数。 TP=nTTP = \frac{n}{T}(其中 nn 为指令数,TT 为执行总时间)
    • 加速比(Sp):不采用流水线时的执行时间 T0T_0 与采用流水线时的执行时间 TkT_k 之比。 Sp=T0TkSp = \frac{T_0}{T_k}
    • 效率(E):流水线各部件占用的时空面积之和与总时空面积之比。
  • 流水线冲突(冒险)及解决方法
    1. 结构冲突:多个指令在同一时刻争用同一硬件资源。解决方法:增加硬件资源(如指令和数据分离的 Harvard 架构)或使冲突指令推迟执行。
    2. 数据冲突(写后读 RAW、读后写 WAR、写后写 WAW):
      • 最常见的是 RAW(写后读)
      • 解决方法:数据旁路/前推技术(Forwarding)、插入气泡/暂停(Stall)、编译器指令重排。
    3. 控制冲突:由转移指令引起。解决方法:分支预测、延迟转移。

第六章:总线系统

1. 集中式总线仲裁

  • 链式查询方式:仅需 3 根控制线。结构简单,但对电路故障敏感(级联线路中断后,后面的设备均不可用),优先级由物理连接位置决定(离总线控制器近的优先级高)。
  • 计数器定时查询方式:线数较多。灵活性高,可以通过改变计数器初始值或计数规则来灵活分配设备优先级。
  • 独立请求方式:响应速度最快,每个设备有独立的请求/允许线,控制线数最多(约 2n2n 根)。

2. 总线通信方式

  • 同步通信:由统一的时钟控制,效率高,但要求所有连接设备速度一致。
  • 异步通信:通过应答信号(“握手”)完成,允许设备速度不一致。按互锁程度分为:不互锁、半互锁、全互锁。

八、 输入输出系统

1. 程序中断方式

  • 中断处理过程:中断请求 \to 中断判优 \to 中断响应 \to 中断服务(关中断 \to 保存断点 \to 保护现场 \to 中断服务 \to 恢复现场 \to 开中断 \to 中断返回)。
    • 注意点:CPU 在当前指令周期结束时才会响应该指令周期的中断请求。
  • 中断隐指令三大功能
    1. 保护断点:将当前的程序计数器 PC 内容压入堆栈保存。
    2. 关中断:硬件自动关中断,防止在保存现场和断点时被新的中断打扰。
    3. 送中断入口地址:寻找中断服务程序的向量地址/入口地址,使 CPU 能跳转执行相应程序。
  • 多重中断(嵌套中断)与屏蔽字
    • 屏蔽字原则:屏蔽字中“1”代表屏蔽该设备的中断请求,使其无法打断当前设备的运行。“1”越多的设备,其优先级越高。高级别中断可以屏蔽同级和所有比它低级的中断。
    • 中断嵌套轨迹图绘制注意点:绘制 CPU 执行轨迹图时,应看清时间轴方向以及各设备优先级的高低关系,按照高优先级能打断低优先级、低优先级不能打断高优先级的规则画出嵌套轨迹。

2. 直接内存访问(DMA)方式

  • DMA 与 CPU 共享主存的三种方式
    1. 停止 CPU 访问主存:外设传送数据时,由 DMA 控制器向 CPU 发出停止信号,使其让出总线控制权。
    2. 周期挪用(周期窃取):外设准备好数据后,挪用一个或几个主存周期进行传输。每传送一个字,就要占用一个存储周期,DMA 优先占用总线。
    3. DMA 与 CPU 交替访问:将 CPU 工作周期分为两个子周期,一个专供 CPU 访问,另一个专供 DMA 访问。
  • 工作阶段:预处理(CPU 初始化) \to 数据传送(完全由 DMA 硬件控制主存与外设,不通过 CPU) \to 后处理(数据传完,DMA 向 CPU 发中断报告)。
  • DMA 与中断方式对比
    对比维度程序中断方式DMA 方式
    传送控制软件(中断服务程序)硬件(DMA 控制器)
    响应时刻当前指令周期结束当前存取周期/总线周期结束
    传输位置外设 \leftrightarrow CPU \leftrightarrow 内存外设 \leftrightarrow 内存(直接)
    优先级优先级低于 DMA优先级高于中断

备考答题规范

  1. 详写步骤:计算题与应用设计题必须写出完整的计算公式、分析步骤和推理过程。切忌只写出最终数值,否则无法获得步骤分。
  2. 严遵要求
    • 定点数加减运算时,注意题目要求是用“单符号位”还是“双符号位”进行溢出判断。
    • 绘制多重中断 CPU 执行轨迹图时,务必仔细对照屏蔽字表与各设备的实际优先级,注意时间轴的演进方向。
Profile Image of the Author
Sonder
好想要技术
这是公告标题
这只是一个公告
分类
标签
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.7
文章许可
CC BY-NC-SA 4.0
文章目录