数字逻辑与计算机组成 — 知识点总结

一、小题知识点(选择题 / 判断题 / 填空题)

第1章 二进制编码

数据表示与转换

  • 感觉媒体(文字、音频、视频)经数字化后变为 0/1 数字信息
  • 从指令信息中无法看出数据是否为数组元素或结构分量
  • 浮点运算指令操作数一定是浮点数,定点运算指令操作数一定是定点数

定点数与浮点数

  • 定点数的小数点位置不一定在左边
  • 浮点数 = 数的符号 + 两个定点数(尾数和阶码)
  • 浮点数尾数用定点小数表示,阶用定点整数表示
  • 浮点数可以表示整数
  • 浮点数表示范围由阶码 E 位数确定,精度由尾数 M 位数确定
  • 上溢区 = 值超过最大可表示数;下溢区 = 值在 0 附近,可近似为 0

IEEE 754 单精度浮点数

  • 格式:1 位符号 + 8 位阶码(偏移 127)+ 23 位尾数(隐藏位 1)
  • 例:4510 0000H → 符号 0,阶码 10001010 = 138E = 138 - 127 = 11,尾数 1.001 = 1.1251.125 × 2¹¹
  • 例:-1028 → 符号 1,1028 = 10000000100B = (1.00000001)₂ × 2¹⁰,阶码 = 10 + 127 = 137 = 10001001BC4808000H
  • 特殊值: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 = 57340
  • short si = -32768; unsigned short usi = si;usi = 32768
  • unsigned short usi = 65535; short si = usi;si = -1
  • int 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 → 78Hc001 → 56Hc002 → 34Hc003 → 12H
    • 0xffffc001 存放 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) = AA + 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 = 11110101x = -11[y]补 = 7EH = 01111110y = 126
  • x + y = -11 + 126 = 115,无溢出 OF = 0
  • x - 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
  • 4 路组相联:主存块号 mod 组数 = 组号
    • 64 行 / 4 = 16 组,81 mod 16 = 1
  • 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 浮点加减运算

  1. 对阶:ΔE = Ex - Ey,小阶向大阶看齐,尾数右移 |ΔE| 位
  2. 尾数加/减:同号求和,异号求差
  3. 规格化
    • 左规:±0.0…01x…x → 尾数左移 k 位,阶码 -k
    • 右规:±1x.xx…x → 尾数右移 1 位,阶码 +1
  4. 舍入:去掉附加位
  5. 溢出判断:阶码上溢 / 下溢

移位 / 乘 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 行数 / 路数

存储器扩展设计

  • 字扩展:增加芯片组数(地址译码器选择)
  • 位扩展:并联芯片(数据线合并)
  • 地址译码器连接 + 地址空间分配图