数字逻辑与计算机组成 — 知识点总结
数字逻辑与计算机组成 — 知识点总结
一、小题知识点(选择题 / 判断题 / 填空题)
第1章 二进制编码
数据表示与转换
- 感觉媒体(文字、音频、视频)经数字化后变为 0/1 数字信息
- 从指令信息中无法看出数据是否为数组元素或结构分量
- 浮点运算指令操作数一定是浮点数,定点运算指令操作数一定是定点数
定点数与浮点数
- 定点数的小数点位置不一定在左边
- 浮点数 = 数的符号 + 两个定点数(尾数和阶码)
- 浮点数尾数用定点小数表示,阶用定点整数表示
- 浮点数可以表示整数
- 浮点数表示范围由阶码 E 位数确定,精度由尾数 M 位数确定
- 上溢区 = 值超过最大可表示数;下溢区 = 值在 0 附近,可近似为 0
IEEE 754 单精度浮点数
- 格式:1 位符号 + 8 位阶码(偏移 127)+ 23 位尾数(隐藏位 1)
- 例:
4510 0000H→ 符号 0,阶码10001010 = 138,E = 138 - 127 = 11,尾数1.001 = 1.125→ 1.125 × 2¹¹ - 例:
-1028→ 符号 1,1028 = 10000000100B = (1.00000001)₂ × 2¹⁰,阶码= 10 + 127 = 137 = 10001001B→ C4808000H - 特殊值:
x / 0.0 = +∞,0.0 / 0.0 = NaN - float 有效位数最多 7 位十进制
补码与进制转换
108 = 6CH-1029的 16 位补码:1029 = 0405H,取反加 1 → FBFBH- 8 位补码
-1的机器数:1111 1111 - 16 位无符号整数最大值:65535
-123的 16 位补码:FF85H- 8 位补码
11010111的真值:符号位 1 → 负数,取反加 1 =00101001 = 41→ -41
C 语言类型转换
short si = -8196; unsigned short usi = si;→usi = 65536 - 8196 = 57340short si = -32768; unsigned short usi = si;→usi = 32768unsigned short usi = 65535; short si = usi;→si = -1int x = -2;以%u打印 → 4294967294(即 2³² − 2)unsigned u = 2147483648;以%d打印 → -2147483648
C 语言关系表达式(ISO C90)
(unsigned)-1 > -2:-2 转 unsigned = 4294967294,-1 转 unsigned = 4294967295 → 真2147483647U > -2147483647 - 1:后者为 -2147483648,与 unsigned 比较时转为 2147483648 → 假(false)
小端方式
- 小端:低字节存低地址。
x = 12345678H存于0xffffc000:c000 → 78H,c001 → 56H,c002 → 34H,c003 → 12H0xffffc001存放 01010110B(56H)
存储器容量
- 最小编址单位:位(bit);最基本计量单位:字节(Byte)= 8 bit
- 编址单位、指令字长、数据字长不一定一样
- 1 KB = 1024 字节
计算机系统层次结构
- 层次(从上到下):应用 → 算法 → 编程语言 → 操作系统 → ISA → 微体系结构 → 硬件
- 底层 = 电子工程师关注;中间 = 架构师关注;上层 = 程序员关注
- 早期机器语言编程也有 ISA 层次
冯·诺依曼结构
- 基本特点:按地址访问并顺序执行指令
- 指令和数据都存存储器,形式上无差别(二进制形式)
- CPU 区分指令和数据依据:访问阶段不同(取指阶段 vs 执行阶段)
- 程序启动后指令和数据被装入内存
ISA(指令集体系结构)
- ISA 是低级语言程序员所看到的概念结构和功能特性
- 通用寄存器的长度、功能与编号属于 ISA 内容
- ISA 位于软件和硬件交界面
- 应用程序员工作在更高层次,不需要对底层很熟悉
编程语言
- 高级语言与具体计算机结构无关
- 高级语言程序必须翻译成机器语言才能执行
- 转换成目标代码后还需要链接才能执行
- 可以直接用机器语言编写程序
- 汇编指令不能被计算机直接执行(需汇编器翻译)
- 机器指令能被计算机直接执行
第2章 数字逻辑基础
逻辑函数化简
- 异或运算:
A ⊕ (A ⊕ B) = B(结合律,A ⊕ A = 0) F = Σm(0,5,6,7),G = Σm(1,2,3,4)→ F 和 G 互补,F = G’- 吸收律:
A·(A+B) = A,A + A·B = A - 冗余律:
A + A'·B = A + B A·(A'+B) = A·B(不是 B!)- 分配律:
A + (B·C) = (A+B)·(A+C)
对偶式
- 对偶规则:
· ↔ +,0 ↔ 1,变量不取反 A·(B+C) = A·B + A·C的对偶式:A + B·C = (A+B)·(A+C)
卡诺图相邻项
- 相邻项:只有一个变量取反不同
ABC'D的相邻项:ABCD(仅 C 不同)
逻辑运算完备性
- 具备完备性的集合:与非门(单独即可实现所有逻辑)
- 单独的异或、或、非都不具备完备性
其他概念
- 不确定状态:既不是高态也不是低态的信号状态
- 高态直流噪声容限:输出高电平最小值 − 输入识别高电平最小值
- 德·摩根定理:
(AB)' = A' + B',(A+B)' = A'B',用于逻辑化简和电路转换 - 3 输入可实现的逻辑函数数:2^(2³) = 2⁸ = 256 种
- 正逻辑:1 = 高态,0 = 低态;负逻辑:1 = 低态,0 = 高态
- 与非门 / 或非门比与门 / 或门实现更简单、延迟更短
第3章 组合逻辑电路
组合逻辑电路特点
- 输出仅依赖当前输入,与以前输入无关
- 电路图和逻辑表达式一一对应
- 真值表和逻辑表达式不一一对应(同一真值表可有不同表达式)
- 不存在回路
时序分析
- 上升沿延迟和下降沿延迟时间不一定相同
半加器与全加器
- 半加器:两个输入,不考虑低位进位
- 全加器:三个输入(含低位进位)
- 全加器不能仅用两个半加器级联实现(还需或门)
多路选择器
- 9 个输入端 → 选择控制端至少 4 位(2⁴ = 16 ≥ 9)
地址译码器
- 由与门阵列实现(不是与门 + 或门)
- 10 位地址 → 1024 个输出端
译码器与编码器
- 功能互反:译码器 n 位 → 2^n 位独热码;编码器 2^n 位 → n 位编码
第4章 时序逻辑电路
时序逻辑电路特点
- 输出与当前输入和先前状态都有关
- 必须有锁存器或触发器来记忆状态
- 输出逻辑值可以和当前输入无关(取决于先前状态)
双稳态元件
- 两个输出端逻辑值不一定一直相反
- 亚稳态在实际中必须考虑
- 稳态时必须要有外部激励才可能改变状态
锁存器与触发器
- 锁存器:电平控制,控制信号有效期间输入可随时改变状态
- 触发器:时钟边沿控制,仅时钟有效边沿时才能改变状态
同步与异步时序电路
- 同步:统一时钟信号控制所有状态记忆元件
- 异步:没有统一的时钟信号
计数器
- 基于触发器和逻辑门构建
- 同步计数器状态转移由统一时钟控制
- 计数器不一定在编码最大值时输出满值信号
定时分析
- 增大时钟周期不一定能使电路正常工作
- 保持时间 < 触发器锁存延迟 + 次态激励逻辑延迟
状态编码
- 编码方案不影响功能特性
- 编码位数越多,激励逻辑越简单
- 优化编码可降低电路复杂度
挂起现象
- 存在挂起 → 存在多个状态循环
- 可通过预置初态来正常工作
- 不一定不能自启动
第6章 运算方法和运算部件
ALU
- ALU 是 CPU 中最基本运算部件
- ALU 不能直接控制完成乘法和除法
- ALU 可实现加、减、逻辑运算、传送等
- ALU 不能实现乘除运算(需多步完成)
补码加减运算
[x]补 = F5H = 11110101,x = -11;[y]补 = 7EH = 01111110,y = 126x + y = -11 + 126 = 115,无溢出OF = 0x - y = -11 - 126 = -137,超出 8 位补码范围,溢出OF = 1;机器数结果为119(模 256)
移位运算
- 带符号整数算术右移:高位补符号位
1001 0101右移一位 →1100 1010- 浮点数没有专门的左移右移指令
标志位
- 标志信息包括:溢出标志 OF、符号标志 SF(不是 ZF)、零标志 ZF、进位 / 借位标志 CF
- n 位带标志加法器 = n 位加法器 + 标志信息输出
第7章 指令系统
寻址方式
| 寻址方式 | 含义 |
|---|---|
| 立即寻址 | 地址码给出操作数本身 |
| 直接寻址 | 地址码给出操作数存储地址 |
| 寄存器寻址 | 地址码给出寄存器编号 |
| 寄存器间接寻址 | 寄存器中存放操作数地址,操作数在存储单元中 |
| 相对寻址 | 有效地址 = PC + D |
| 基址寻址 | 有效地址 = 基址寄存器 + 形式地址(补码) |
RISC 特征
- 指令格式规整,寻址方式少
- 采用硬连线控制和流水线
- 通用寄存器数目多(不是不多)
- 运算类指令操作数不访存
- 主要目标是减少指令数(简化指令)
- 早期 RISC 没有乘除法和浮点运算指令
指令类型
- SS 型(访存-访存)执行时间最长
- 传送指令:load/store(CPU ↔ 存储)、push/pop(CPU ↔ 栈顶)、in/out(CPU ↔ I/O 端口)
- move 指令完成寄存器之间的数据传送(不是 CPU 和寄存器之间)
扩展操作码
- 16 位指令,每个地址码 4 位:
- 三地址 15 条 → 剩 1 种编码可扩展
- 二地址:
1 × 16 = 16种,用 8 条剩 8 种 - 一地址:
8 × 16 = 128种,用 127 条剩 1 种 - 零地址:
1 × 16 = 16条
小端方式与基址寻址
- 基址
C0000000H+ 形式地址FF00H(补码 = -256)=BFFFFF00H→ 有效地址BFFF FF00H - 16 位操作数占 2 字节,小端下 MSB 在高地址 → MSB 地址 = BFFF FF01H
第8章 中央处理器
数据通路
- 由操作元件和状态元件连接而成
- ALU 是操作元件,通用寄存器是状态元件且包含在数据通路中
- 控制信号决定数据通路功能
时钟信号
- 处理器不是每来一个时钟就开始新指令(可能有等待)
- 时钟周期以最长组合逻辑延迟为基准
- 主频 = 时钟周期的倒数
控制器组成
- 包含:指令寄存器 IR、操作控制器、程序计数器 PC
- 不包含:状态条件寄存器(PSWR)
PC(程序计数器)
- 每条指令执行后 PC 都会改变
- 顺序执行时 PC 加的是指令长度对应的值(不一定加 1)
- PC 位数与 MAR(主存地址寄存器) 位数相同
冯·诺依曼结构区分指令和数据
- 依据:访问时点不同(取指阶段取指令,执行阶段取数据)
第9章 存储器层次结构
存储器分类
- SRAM:静态 RAM,用作 Cache
- DRAM:动态 RAM,用作主存,行列地址引脚复用
- EPROM:可擦除可编程只读存储器
- Cache 是易失性存储器
- 半导体存储器不是都用随机存取方式(如 ROM)
DRAM 芯片
16K × 4位:地址引脚 = 7(行列复用,2 × 7 = 14位地址 → 16K),数据引脚 = 4- SRAM
1024 × 4位:地址引脚 = 10,数据引脚 = 4
存储器扩展
16K × 1位 →64K × 8位:字方向扩展 4 倍,位方向扩展 8 倍
存储层次
- 速度(快 → 慢):寄存器 → Cache → 主存 → 辅存
- 容量(大 → 小):辅存 → 主存 → Cache → 寄存器
- Cache 和虚拟存储器都利用了程序局部性原理
Cache 映射
- 直接映射:主存块号 mod Cache 行数 = Cache 行号
- 2593 号单元,块大小 32B → 块号 = 2593 / 32 = 81,
81 mod 64 = 17
- 2593 号单元,块大小 32B → 块号 = 2593 / 32 = 81,
- 4 路组相联:主存块号 mod 组数 = 组号
- 64 行 / 4 = 16 组,
81 mod 16 = 1
- 64 行 / 4 = 16 组,
- Cache 总容量计算需考虑:数据位 + tag 位 + 有效位 + 脏位(回写法)/ 无脏位(直写法)
虚拟存储器
- 地址转换:逻辑地址 → 物理地址
- 逻辑地址位数通常比物理地址位数多(不是少)
- 转换过程中发现是否缺页
- MMU 需访问页表项
多模块存储器
- 高速读写原因:各模块有独立的读写电路
二、大题知识点(简答题 / 分析应用题 / 计算题)
第1章 大题
| 知识点 | 要点 |
|---|---|
| 进制转换 | 二进制 → 十六进制:每 4 位一组转换 |
| 模运算 | 钟表系统模 12,顺时针 5 格 = 逆时针 (12 - 5) = 7 格 |
| 补码计算 | 负数补码 = 模 + 真值;如算盘 6823 − 2956 → 加 (10000 − 2956) = 7044 |
| C 语言类型判断 | 涉及 int / unsigned 比较时的隐式类型转换规则 |
第2章 大题
| 知识点 | 要点 |
|---|---|
| 卡诺图化简 | 步骤:列真值表 → 建卡诺图 → 找质蕴含项 → 找实质蕴含项 → 最小覆盖 → 最简表达式 |
| 与非-与非实现 | 与-或表达式两次取反可得与非-与非形式 |
| 代数法化简 | 或-与表达式的化简技巧 |
| 最简和之积 | 通过最大项化简得到 POS 表达式 |
| 标准形式展开 | f(a,b,c) = a + bc → 展开为最小项之和 |
| 完备归纳法证明 | 列出所有输入组合验证等式成立 |
简答题核心考点
- 不确定状态:既不能被识别为高态也不能被识别为低态
- 噪声容限:有效电平的承受程度度量
- CMOS 晶体管:两对可实现与非门、或非门、缓冲器
- 德·摩根定理:逻辑表达式化简和电路转换
- 3 输入逻辑函数:2^(2³) = 256 种
- 最小项与最大项:编号互补
第3章 大题
| 知识点 | 要点 |
|---|---|
| 真值表 → 卡诺图 → 最简表达式 → 电路图 | 组合逻辑电路完整设计流程 |
| 逻辑表达式转换 | 与非-与非形式,两对 CMOS 管实现 |
| 电路图 → 逻辑表达式 | 从门级电路反推表达式 |
| 质数/合数判别电路 | 综合应用:4 输入 (I0-I3) → 2 输出 (O0, O1),真值表 → 标准与-或式 → 化简 → 电路图 |
第4章 大题
| 知识点 | 要点 |
|---|---|
| D 锁存器 / D 触发器波形 | 根据输入波形画出输出波形,考虑延迟 |
| SR 锁存器波形 | 根据 S、R 波形画 Q、Q’ 波形 |
| 维持阻塞 D 触发器 | 利用与非门的维持线和阻塞线,仅在时钟上升沿捕获 D 值 |
| 锁存器 vs 触发器 | 电平控制 vs 边沿控制 |
| 同步 vs 异步时序电路 | 统一时钟 vs 无统一时钟 |
| 时序 vs 组合电路 | 有状态记忆 vs 无状态记忆(本质区别) |
第6章 大题
先行进位加法器延迟
- 关键路径:
(A7-0, B7-0, C0) → C8 → C16 → C24 → (R31-24) - C8 延迟 = 输入时延 1ty + 先行进位 2ty = 3ty
- C16、C24 各延迟 2ty(Pi、Gi 已就绪)
- R31-24 延迟 = 先行进位 2ty + 异或门 3ty = 5ty
- 总延迟 = 3 + 2 + 2 + 5 = 12ty
补码加减法运算
[x + y]补 = [x]补 + [y]补[x - y]补 = [x]补 + [-y]补
原码一位乘法
- 符号单独处理(异或),数值部分无符号乘法
- 每次根据乘数最低位决定 +X 或 +0,然后逻辑右移
Booth 乘法
- 符号数值一起运算
- 根据末两位决定 +X / -X / +0,算术右移
不恢复余数除法
- 口诀:“正、1、减;负、0、加”
- 每次左移后根据上一次余数符号决定 +Y 或 -Y
IEEE 754 浮点加减运算
- 对阶:ΔE = Ex - Ey,小阶向大阶看齐,尾数右移 |ΔE| 位
- 尾数加/减:同号求和,异号求差
- 规格化:
- 左规:
±0.0…01x…x→ 尾数左移 k 位,阶码 -k - 右规:
±1x.xx…x→ 尾数右移 1 位,阶码 +1
- 左规:
- 舍入:去掉附加位
- 溢出判断:阶码上溢 / 下溢
移位 / 乘 2 / 除 2
- unsigned 右移 = 逻辑右移(补 0)
- int 右移 = 算术右移(补符号位)
- 乘 2 左移可能溢出
第7章 大题
| 知识点 | 要点 |
|---|---|
| RISC-V 代码生成 | 大立即数需 lui + addi 组合(如 6144 = 8192 - 2048) |
| 基址寻址计算 | 有效地址 = 基址 + 符号扩展的形式地址;小端存储地址分配 |
| 扩展操作码计算 | ((16 - k2) × 2⁶ - k1) × 2⁶ = k0,逐级递推 |
| 寻址方式与访问范围 | 立即寻址无需访存;直接寻址 2⁸ 字;间接寻址 2¹⁶ 字;变址寻址 2¹⁶ 字 |
| 一次间接寻址 | 地址码 → 取内容 → 得到有效地址 → 再取内容 → 得到操作数 |
| 位运算指令 | andi 立即数限 12 位;超过 12 位需 lui + addi 构造常量再 and |
第8章 大题
流水线数据冒险
- load-use 冒险:load 指令后紧接使用该结果的指令,需插入 nop 或调度无关指令
- 转发技术:可减少大多数数据冒险(EX/M → ALU 输入,M/WB → ALU 输入)
- 指令调度:将与冒险指令无关的指令提前插入,避免流水线停顿
流水线控制冒险
- 分支指令导致流水线阻塞
- EX 阶段判断:阻塞 2 周期(延迟槽 = 2)
- ID 阶段判断:阻塞 1 周期(延迟槽 = 1)
流水线性能
- 瓶颈 = 最慢功能部件
- ALU 加速无效若非瓶颈
- ALU 变慢超过瓶颈则整体降速
单周期控制信号出错分析
| 控制信号 | 出错影响 |
|---|---|
RegWr = 0 |
所有需写寄存器的指令(R 型、I 型、U 型、J 型)不能执行 |
ALUASrc = 0 |
jal / auipc 指令可能不能正确执行(PC 无法送入 ALU) |
ALUBSrc = 0 |
J 型、I 型、B 型、U 型指令可能不能正确执行 |
Branch = 0 |
B 型分支指令永远不会跳转 |
Jump = 0 |
jal 指令永远不会跳转 |
MemWr = 0 |
store 指令(sb、sh、sw)不能正确执行 |
MemtoReg = 0 |
load 指令(lb、lh、lw)不能将存储器数据送寄存器 |
流水线定时分析
- 第 N 个时钟周期结束时各指令所处阶段
- 流水段寄存器(IF/ID、ID/EX、EX/M、M/WB)中存放的内容
第9章 大题
Cache 地址格式设计
- 主存地址 = tag + 组地址 + 块内地址
- 根据 Cache 容量、组数、块大小确定各字段位数
Cache 命中率与加速比
- 命中率 = (总访问次数 − 未命中次数) / 总访问次数
- 加速比 = 不用 Cache 的时间 / 用 Cache 的时间
- 平均访问时间:
ta = tc + (1 - h) × tm - 访问效率:
e = tc / ta
Cache 总容量计算
- 数据位 + tag 位 + 有效位 + 脏位
- 回写法(write back)需要脏位
- 直写法(write through)不需要脏位
直接映射地址格式
tag(s - r 位) + 行地址(r 位) + 块内地址(w 位)- 块大小 2^w,行数 2^r,主存块数 2^s
组相联映射地址格式
tag(s - d 位) + 组地址(d 位) + 块内地址(w 位)- 组数 2^d = Cache 行数 / 路数
存储器扩展设计
- 字扩展:增加芯片组数(地址译码器选择)
- 位扩展:并联芯片(数据线合并)
- 地址译码器连接 + 地址空间分配图
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.