北航co计算机组成理论复习

写在前面:
这个是本人复习机组的笔记的简略版本
(为什么不是完全版呢,因为人懒得写成markdown了)
建议结合老师上课PPT复习
然后多做一点往年题
计算机组成原理理论复习
第一讲 计算机组成概述
一、计算机中数的表示
1. 无符号数
- 定义:数的编码中所有位均为数值位,没有符号位。
- 范围:只能表示
的整数。 - 示例:16位无符号数的表示范围:
( )。 - 用途:一般在全部是正数运算且不出现负值结果的场合下(例如地址运算)使用。
2. 有符号数
- 实例:
, , , - 机器数表示:
- 数的正负问题:设符号位。
- “0”表示“正”,“1”表示“负”,固定为编码的最高位。
- 真值与机器数:机器数是真值在计算机中的编码。
- 小数点问题:
- 定点小数:小数点固定在符号位之后(绝对值小于1)。
- 定点整数:小数点固定在数值最后(没有小数部分)。
- 数的正负问题:设符号位。
- 浮点数:带有整数和小数部分的数(按2为基的科学计数法表示)。
3. 机器数表示及其范围 (原码、反码、补码、移码)
原码
: 正数:
( ) 负数:
( )
反码
: - 正数:
( ) - 负数:
( )
- 正数:
补码
: - 正数:
( ) - 负数:
(模运算概念) ( ) - 注意:补码可以多表示一个负数(例如8位补码范围
)。
- 正数:
移码
: (通常用于浮点数阶码) ( )
4. 浮点数的表示
- 一般表示法:
- 阶码 J:采用定点整数表示。
- 尾数 S:采用定点小数表示。
- 格式:
[阶符] [阶码数值] [数符] [尾数数值]
- IEEE 754 标准:
- 单精度 (32位):符号(S) 1位 + 阶码(E) 8位 + 尾数(M) 23位。
- 双精度 (64位):符号(S) 1位 + 阶码(E) 11位 + 尾数(M) 52位。
- 阶码 E:用移码表示。
- 单精度偏移量为
(7FH)。 - 8位阶码移量 3FFH (即1023)。
- 单精度偏移量为
- 尾数 M:必须规格化,小数点左侧一定为1,且这个1作为隐含位被省略。
- 规格化形式:
。
- 规格化形式:
- 特殊值表示:
:表示 0。 :非规格化数(尾数隐含位为0)。 :无穷大 ( )。 :NaN (Not a Number)。
第二讲 组合逻辑设计
一、逻辑代数
运算优先法则:括号 ()
非 与 异或 或。 基本公理:0/1律、互补律等。
- 互补律:
, (用于化简时消去因子或配项)。 - 重叠律:
, (用于化简添加某一项)。 - 反演律 (摩根定律 De Morgan’s Laws):
(积之反等于反之和) (和之反等于反之积)
- 还原律:
。
- 互补律:
基本定律:
- 自等律、0-1律、交换律、结合律。
- 分配律:
; 。
三大定理:
- 代入定理:任何一个包含变量的逻辑等式中,用另一个函数代入式中所有该变量位置,等式仍成立。
- 反演定理:求反函数
。规则: 变 , 变 , 变 , 变 ,原变量变反变量,反变量变原变量。- 注意:保持原运算优先顺序(不属于单个变量上的非号不变)。
- 对偶定理:求对偶式
。规则: 变 , 变 , 变 , 变 。- 用途:若某公式成立,其对偶公式仍成立。
逻辑函数的表达式:
最小项表达式:全部由最小项构成的与或式 (Sum of Products)。
最小项推导法:从真值表推出逻辑函数表达式的一种方法。
把输出为1的输出组合写成乘积项的形式,其中取值为1的输入用原变量表示,取值为0的输入用反变量表示,然后把这些乘积项加起来。最大项表达式:全部由最大项构成的或与式 (Product of Sums)。
逻辑函数的化简:
最简与或表达式:
- 乘积项的个数最少
- 在满足1的条件下,乘积项中的变量最少
代数法:并项法、吸收法 (
)、配项法 ( )。- 合并乘积项法:利用互补律消去1个变量,如
1
F=A(BC+BCˉ)+ABCˉ+ABˉCˉ=AF=A(BC+BCˉ)+ABCˉ+ABˉCˉ=A
- 吸收项法:利用吸收律和包含律减少“与”项
A+AB=AA+AB=A。 - 配项法:利用互补律,配在乘积上
A+Aˉ=1A+Aˉ=1。
- 合并乘积项法:利用互补律消去1个变量,如
卡诺图法:利用卡诺圈化简,最简形式通常是积之和。
二、基本组合逻辑部件设计
1. 加法运算单元
- 半加器 (Half Adder):对两个1位二进制数求和,不考虑低位进位。
- 全加器 (Full Adder):对两个1位二进制数求和,考虑低位进位
。 - 多位加法器:
- 串行进位 (Ripple Carry):进位逐级传递,延迟高。
依赖 。 - 并行进位/超前进位 (Lookahead Carry):各级进位直接由输入决定,速度快但电路复杂。
- 串行进位 (Ripple Carry):进位逐级传递,延迟高。
- 溢出判断:
- 若符号位相同的两数相加,结果符号与加数相反,则溢出。
- 若符号位不同的两数相减,结果符号与减数相同,则溢出。
- 双符号位法:”00”正,”11”负,”01”或”10”表示溢出。
- 进位判断法:最高位进位和次高位进位不一致则溢出 (
)。
2. 乘法运算单元
- 阵列乘法器:由若干全加器构成,完全由硬件直接计算。
- 符号位扩展:最高位是0补0,是1补1。
3. 数值比较器
- 比较两个二进制数 A 和 B 的大小。
- 1位比较器:
, , 。 - 多位比较器 (7485):
- 从高位开始比较,若高位不等则直接定大小;若相等则看低位。
- 级联输入端:用于扩展位数。
4. 编码器和译码器
- 编码器:
个输入 个输出。- 优先编码器 (74LS148/74LS147):允许同时有多个输入有效,只对优先级最高的进行编码。
- 解决输入混乱问题。
- 译码器:
个输入 个输出。- 二进制译码器 (74138 3-8译码器):
- 输出通常低电平有效。
- 重要应用:做函数发生器(利用最小项之和)。
- 显示译码器:7段数码管驱动 (BCD to 7-segment)。
5. 多路选择器 (MUX)
功能:从多路输入中选一路输出。
应用:
数据选择。
函数发生器:
选1 MUX可以实现 个变量的函数(如果不加非门辅助)或 个变量(利用输入端接变量/反变量)。
image-20260213202936663 例题:

image-20260213203017723 例如:8选1 MUX (74151) 可实现3变量或4变量函数。
扩展:利用使能端/高位地址将小MUX扩展为大MUX (如2片8选1拼成16选1)。
6. 竞争冒险
- 竞争:信号经不同路径到达输出端的时间不同(有先有后)。
- 冒险:因竞争导致输出产生毛刺(干扰脉冲)。
- 判别:
- 代数法:化简后出现
(“0”冒险) 或 (“1”冒险)。 - 卡诺图法:相切的卡诺圈处可能存在冒险。
- 代数法:化简后出现
- 消除:增加冗余项、加选通脉冲、滤波电容。
第三讲 时序逻辑设计
一、锁存器和触发器
- 基本RS锁存器:由与非门或或非门构成。
置1。 置0。 保持。 不定状态 (禁止)。- 特性方程:
(约束 )。
- 钟控D锁存器:
- CP=1时,Q跟随D变化(透明)。
- CP=0时,保持。
- D触发器 (Flip-Flop):
- 边沿触发(如上升沿)。
- 只在时钟沿到来瞬间读取D的值。
- JK触发器:
置1。 置0。 保持。 翻转。- 特性方程:
。
二、有限状态机 (FSM)
- 定义:表示有限个状态以及状态间转移和动作的模型。
- 分类:
- Moore型:输出仅与当前状态有关。
- 输出在状态内部或随状态改变。
- Mealy型:输出与当前状态及输入信号都有关。
- 输出标在状态转移线上。
- Moore型:输出仅与当前状态有关。
- 设计步骤:
- 确定输入、输出、状态数。
- 画状态转换图 (State Diagram)。
- 列状态表 (State Table)。
- 状态编码。
- 写出次态逻辑和输出逻辑表达式。
- 画电路图或写Verilog。
三、时序逻辑电路设计分析
- 寄存器:由一组触发器组成,用于存储二进制代码。
- 数据寄存器:并行入并行出。
- 移位寄存器:支持左移、右移、串行/并行转换。
- 计数器:
- 同步计数器:所有触发器共用一个时钟CP,速度快。
- 异步计数器:时钟逐级传递(低位输出作为高位时钟),有累积延迟。
- 任意进制计数器:
- 复位法 (Reset):计数到M时产生复位信号(瞬间归零)。
- 置数法 (Load):计数到M时置入初值。
- 时序分析:
- 建立时间 (
):时钟沿前数据必须稳定的时间。 - 保持时间 (
):时钟沿后数据必须保持稳定的时间。 - Clock-to-Q (
):时钟沿到输出变化的时间。 - 关键路径约束:
。 - 保持时间约束:
。
- 建立时间 (
第四讲 主存储器
一、存储系统概述
- 性能指标:
- 访问时间 (
):从发读请求到数据有效的时间。 - 存储周期 (
):连续两次访问存储器的最小时间间隔 ( )。 - 带宽:单位时间传输的数据位数。
- 访问时间 (
- 分类:SRAM, DRAM, ROM。
二、存储单元电路
- SRAM (静态RAM):
- 双稳态触发器结构。
- 速度快,不需要刷新,集成度低,功耗大,贵。用作Cache。
- DRAM (动态RAM):
- 电容存储电荷。
- 需刷新,集成度高,功耗低,便宜。用作主存。
- 地址复用(行/列地址分时送入)。
三、存储器芯片结构与扩展
结构:地址线、数据线、控制线 (CS, WE, OE)。
存储器容量描述
- 公式:单元数
每个单元的位数 ( )。 - 示例:
位存储器- 单元数:
( ) - 地址线:
根 - 数据线:
根
- 单元数:
- 公式:单元数
扩展:
位扩展:增加字长(如
)。- 连接:地址线并联,CS片选并联,数据线分高低位。
字扩展:增加容量(如
)。- 连接:数据线并联,地址线低位并联,高位地址用于译码产生片选CS。
混合扩展:
- 确定每个芯片的地址位数、数据位数。
- 确定整个存储空间所需的地址总线和数据总线的数量。
- 计算所需芯片的数量,确定每个芯片在整个存储空间中的地址空间范围、位空间范围。
- 所有芯片的地址全部连接到地址总线对应的地址线上。
- 同一字空间的存储芯片CS信号连在一起。
- 同一位空间的数据线连在一起,并连接到对应的数据总线上。
- 根据每个芯片的地址空间范围,设计芯片所需的片选信号逻辑,CS逻辑电路的输入一定是地址总线中没有连接到芯片的地址管脚上的那部分地址线(高位地址)。
- 统一读写控制。
四、DRAM的刷新
原因:电容漏电。
刷新操作:按行进行,读出即刷新。
方式:
集中式:在周期内集中一段时间全部刷新。存在死区时间。
分散式:每个读写周期包含一次刷新。无死区,但周期变长,速度慢。
分布式 (异步):将刷新分散在每一行的时间间隔内(
)。效率高,最常用。行 数 分布式刷新间隔 = 刷新周期
第五讲 指令系统与MIPS汇编
一、指令格式
- 操作数存储方式:
- 大端 (Big-endian):高位字节存低地址。
- 小端 (Little-endian):低位字节存低地址(x86, MIPS常用)。
- 寻址方式:(只列举MIPS中的)
- 立即寻址:操作数在指令中。
- 寄存器寻址:操作数在寄存器中。
- 基址寻址 (Base):
(用于Load/Store)。 - PC相对寻址:
(用于分支BEQ)。 - 伪直接寻址:用于跳转J指令。
二、MIPS指令系统
寄存器:32个通用寄存器。
$0($zero):恒为0。$v0-$v1:返回值。$a0-$a3:参数。$t0-$t9:临时变量。$s0-$s7:保存变量。$gp, $sp, $fp, $ra:指针和返回地址。
image-20260213203854634
指令格式 (32位):
- R-Type:
op(6) rs(5) rt(5) rd(5) shamt(5) func(6)- 例:
add $t0, $s1, $s2
- 例:
- I-Type:
op(6) rs(5) rt(5) immediate(16)- 例:
lw $t0, 32($s3),addi $s1, $s2, 100
- 例:
- J-Type:
op(6) address(26)- 例:
j 1000
- 例:
- R-Type:
常用指令:
详见指令集
lb/lh/lw:加载字节/半字/字。sb/sh/sw:存储。add/sub(带溢出检查),addu/subu(无溢出检查)。sll/srl:逻辑移位。beq/bne:相等/不等跳转。slt:小于置1。jal:跳转并链接 (保存PC+4到$ra)。jr $ra:返回。
第六讲 MIPS处理器设计
一、性能分析
- CPU执行时间 = 指令数 × CPI × 时钟周期。
- CPI (Cycles Per Instruction):每条指令的平均时钟周期数。
- MIPS:每秒百万条指令。
二、处理器实现方式
- 单周期CPU:所有指令在一个时钟周期内完成。
- CPI = 1。
- 时钟周期由最慢的指令(通常是LW)决定,效率低。
- 多周期CPU:指令分为多个阶段执行。
- 流水线CPU:并行执行多条指令的不同阶段。
三、流水线 (Pipeline)
五级流水线:
- IF (Instruction Fetch):取指。
- ID (Instruction Decode):译码/读寄存器。
- EX (Execute):执行/地址计算。
- MEM (Memory):访存。
- WB (Write Back):写回寄存器。
加速比:理想情况下为流水线级数。
冒险 (Hazards):
结构冒险:硬件资源冲突(如同时读写内存)。
- 解决:哈佛结构(指令和数据存储器分开)。
数据冒险:
写读相关 RAW (Read After Write):假设指令
是在指令 后面执行的指令,RAW 表示指令 将数据写入寄存器后,指令 才能从这个寄存器读取数据。如果指令 在指令 写入寄存器前尝试读出该寄存器的内容,将得到错误的数据。解决:转发/旁路 (Forwarding)、流水线停顿 (Stall/Bubble)。
Load-Use冒险:必须停顿一个周期。
读写相关 WAR (Write After Read):假设指令
是在指令 后面执行的指令,WAR 表示指令 读出数据后,指令 才能写这个寄存器。如果指令 在指令 读出数据前就写该寄存器,将使得指令 读出的数据不正确。(如在流水线译码阶段读寄存器、回写阶段写寄存器,则不存在 WAR 相关情形的冲突)写写相关 WAW (Write After Write):假设指令
是在指令 后面执行的指令,WAW 表示指令 将数据写入寄存器后,指令 才能将数据写入这个寄存器。如果指令 在指令 之前写该寄存器,将使得该寄存器的值不是最新值。(如只有在流水线回写阶段才会写寄存器,则不存在 WAW 相关情形的冲突)
控制冒险:分支/跳转指令改变PC值。
- 解决:分支预测、延迟槽。
可以用时空图分析:

image-20260213205305324
第七讲 高速缓冲存储器 (Cache)
一、Cache原理
- 利用局部性原理(时间局部性、空间局部性)。
- SRAM构成,位于CPU和主存之间,速度快、容量小。
- 结构:由 Block (Line) 组成,包含 Tag、Data、Valid位、Dirty位。
二、映射机制
直接映射 (Direct Mapped):
- 主存块只能映射到Cache的一个固定位置。
(C为Cache块数)。- 地址:Tag + Index + Offset。
- 优点简单,缺点冲突率高。
全相联映射 (Full Associative):
- 主存块可放Cache任意位置。
- 地址:Tag + Offset。
- 缺点:比较电路复杂,只适合小容量Cache。
组相联映射 (Set Associative):
主存块映射到固定的“组”,组内任意放。
。 路组相联:每组有 块。主存的地址格式:
组内块地址 (Tag) 组地址 (Set #) 块内地址 (Offset) - Tag 的内容: 主存中与该 Cache 数据块对应的数据块的组内块地址。
- 举例1
已知条件:
- 主存容量:1M 字节 (
Bytes) - Cache 容量:16K 字节 (
Bytes) - Block 大小:256 字节 (
Bytes) - 映射方式:4路组相联 (每组包含 4 个 Block,即
块/组)
- 主存容量:1M 字节 (
待求解:
- Cache 分多少组?每组包含多少块?
- 主存分多少组?每组包含多少块?
- Cache 的 Tag 需要多少位?存放什么内容?
答案点击展开
解:
Cache 组数计算:
组 数 总 容 量 大 小 路 数 组
每组包含 4 块(已知条件)。主存每组块数计算:
主 存 每 组 块 数 主 存 总 容 量 大 小 组 数 块 组 地址位数分配:
- 主存总地址:
位。 - 块内地址 (Offset):
位。 - 组地址 (Set #):
位。 - 组内块地址 (Tag):
位。
- 主存总地址:
结论:
主存地址共 20 位,其中:高 8 位为组内块地址 (Tag),中间 4 位为组地址 (Set #),低 8 位为块内地址 (Offset)。
Cache 的 Tag 应该为 8 位。存放 Cache 块对应主存块的组内块地址。
- 举例2:
- 假设有一个 4 路组相联 Cache,数据存储空间大小 64KB,块大小为 16 字节,主存地址 32 位。主存一个字含 4 个字节,每个数据块对应 1 位有效位。此外,Cache 采用写回策略,Cache 每个字用 1 位脏位 来表示是否被修改。
- 问题: 计算实现该 Cache 所需的总存储容量?
答案点击展开
解:
- Cache 每数据块大小 (Block Size):
块内地址 (Offset) 为 4 位
- Cache 总块数 (Total Blocks):
块
- Cache 组数 (Number of Sets):
- 由于是 4 路组相联:
组 组地址 (Index) 为 10 位
- 由于是 4 路组相联:
- Tag 位数计算:
位 数 主 存 地 址 位 数 组 地 址 位 数 块 内 地 址 位 数 位 数
- 控制位计算 (每块):
- 有效位 (Valid bit):
位 - 脏位 (Dirty bits): 题目说明每个“字”用1位脏位,1块含16字节,1字含4字节,则1块包含
。个 字 - 因此,每个 Block 脏位为 4 位。
- 有效位 (Valid bit):
- Cache 实际总容量计算:
总 容 量 块 数 数 据 位 位 有 效 位 脏 位 总 容 量 - 转换单位:
三、Cache策略
- 替换策略:
- RAND:随机。
- FIFO:先进先出。
- LRU (Least Recently Used):最近最少使用(性能最好,实现较复杂)。
- 写策略:
- 写穿透 (Write Through):同时写Cache和主存。配合Write Buffer使用。
- 写回 (Write Back):只写Cache,置Dirty位,被替换时才写回主存。
四、性能分析
- AMAT(平均存储访问时间):
( : Cache周期, : 主存周期, : 命中率) - 加速比 SP:
第八讲 虚拟存储系统
一、概述
- 解决主存容量限制,提供比物理内存大的虚拟地址空间。
- 利用磁盘作为辅助存储。
二、页式虚拟存储器
- 页 (Page):虚拟空间和物理空间切分为固定大小的块(如4KB)。
- 页表 (Page Table):记录 虚页号 (VPN)
实页号 (PPN) 的映射,以及有效位。保存在主存中。 - 地址转换:
- 虚拟地址 = 虚页号 + 页内偏移。
- 物理地址 = 实页号 + 页内偏移。
- 页内偏移量不变。
三、TLB (快表)
- Translation Lookaside Buffer。
- 作用:作为页表的Cache,加速地址转换。
- 全相联查询。
- 流程:CPU给虚地址
查TLB 命中则得物理地址;未命中则查页表 缺页则从磁盘调入。
四、磁盘存储器
- 结构:盘片、磁道、扇区。
- 存取时间 = 寻道时间 + 旋转延迟(平均为转半圈的时间)+ 传输时间。
- 容量 = 盘面数
磁道数/面 扇区数/道 字节数/扇区。 - 数据传输率 = 扇区字节数
扇区数/道 旋转速度(rps)。 - RAID:磁盘阵列,提高性能和可靠性。
TLB,页表,Cache 三种缺失的可能性
| TLB | Page Table | Cache | 是否可能?及原因说明 |
|---|---|---|---|
| hit | hit | miss | 可能。TLB 命中则页表一定命中,但实际上查了 TLB 就不会再查页表。 |
| miss | hit | hit | 可能。TLB 缺失但页表可能命中;信息在主存中,就可能在 Cache 中。 |
| miss | hit | miss | 可能。TLB 缺失但页表可能命中;信息在主存中,但可能不在 Cache 中。 |
| miss | miss | miss | 可能。TLB 缺失且页表也缺失,说明信息不在主存中,则一定也不在 Cache 中。 |
| hit | miss | miss | 不可能。页表缺失说明信息不在主存中,TLB 作为页表的缓存,其中一定没有该页表项。 |
| hit | miss | hit | 不可能。同上。 |
| miss | miss | hit | 不可能。页表缺失说明信息不在主存中,而 Cache 缓存的是主存数据,主存没有则 Cache 一定没有。 |
第九讲 总线与I/O
一、总线 (Bus)
- 分类:片内总线、系统总线、通信总线。
- 组成:数据线、地址线、控制线。
- 仲裁方式:
- 集中式:链式查询(线少,故障敏感)、计数器查询、独立请求(响应快,线多)。
- 分布式。
- 定时方式:
- 同步:统一时钟控制,速度快,适合短距离、速度一致设备。
- 异步:应答方式(握手),适合速度差异大设备。
二、I/O接口与控制方式
- I/O接口:CPU与外设的桥梁,进行速度匹配、数据缓冲、信号转换。
- I/O控制方式:
- 程序查询方式:CPU不断轮询状态,效率极低。
- 中断方式:
- 外设主动请求,CPU暂停当前任务去处理。
- 适用于中低速、随机发生的事件。
- 流程:中断请求
响应 保护现场 服务 恢复现场 返回。
- DMA (直接存储器访问):
- DMA控制器接管总线。
- 数据直接在I/O和主存间传输,不经过CPU。
- 适用于高速、批量数据传输(如磁盘)。
- CPU仅在开始和结束时参与。
- 通道方式:独立的I/O处理器,执行通道指令。
三、关键对比
- 中断 vs DMA:
- 中断靠程序传送(软件),DMA靠硬件传送。
- 中断响应在指令结束,DMA响应在总线周期结束。
- 中断处理异常和控制,DMA主要用于数据传送。
缺页:属于异常,需要从磁盘调页。
(单独强调,因为作者死在这里了)
