自考计算机系统原理(13015)复习资料

教材: 袁春风《计算机系统原理》(2023年版)
考试时间: 预计2026年4月


第一章 计算机系统概述

1.1 计算机系统的基本组成

1.2 冯·诺依曼思想要点

1.3 冯·诺依曼结构主要部件

部件 作用
主存储器(Memory) 存放指令和数据的临时存储单元
算术逻辑部件(ALU) 在ALUop控制下,对输入端A和B进行运算,得到结果F
控制部件(CU) 自动逐条取出指令并进行译码
通用寄存器组(GPRs) 临时存放操作数和运算结果
IR (指令寄存器) 存放从主存取来的指令
PC (程序计数器) 存放下一条指令地址
MAR (地址寄存器) 存放访问的主存地址
MDR (数据寄存器) 存放访问的数据

1.4 计算机系统的层次结构

层次 说明
应用语言机器级
高级语言机器级
汇编语言机器级
操作系统级 软件/硬件接口
机器语言机器级 ISA定义
微程序机器级 硬件

1.5 性能评价指标 ⭐

基本概念

关键指标

计算公式 ⭐

用户CPU时间 = 程序总时钟周期数 ÷ 时钟频率
            = 指令数 × CPI × 时钟周期

程序总时钟周期数 = Σ(CPIi × Ci)

综合CPI = Σ(CPIi × Fi)

MIPS = 主频 / CPI

例题

某程序指令条数10^8条,CPI=1.25,时钟频率4GHz,求执行时间?

解:时钟周期 = 1/4GHz = 0.25ns
  总周期数 = 10^8 × 1.25 = 1.25×10^8
  执行时间 = 0.3125s

⚠️ 注意:指令条数少不代表执行时间短,时钟频率高也不说明执行速度快!


第二章 数据的表示与运算

2.1 数制与编码

2.2 定点数的表示 ⭐

原码、反码、补码

码制 定义 +0 -0 8位表示范围
原码 最高位符号位,0正1负 00000000 10000000 -(2^7-1)~+(2^7-1)
反码 正数同原码;负数数值位取反 00000000 11111111 -(2^7-1)~+(2^7-1)
补码 正数同原码;负数反码+1 00000000 -2^7~+(2^7-1)

补码特点 ⭐

  1. 0的表示唯一:00000000
  2. 符号位可以参与运算
  3. 减法可以变为加法(模运算)
  4. 8位补码范围:-128 ~ +127

补码运算例题 ⭐

用8位补码计算:52 - 37

解:52原码 = 00110100
  -37补码 = 11011011
  相加:00110100 + 11011011 = 100001111
  溢出位丢弃,结果 = 00001111 = 15

2.3 浮点数的表示 ⭐⭐

格式

N = M × R^E

IEEE 754标准(32位单精度)

字段 位数 说明
符号位S 1位 0正1负
阶码E 8位 移码表示,偏置量127
尾数M 23位 隐藏最高位1(规格化)

公式

(-1)^S × 1.M × 2^(E-127)

例题1:十进制 → IEEE 754

将-8.25表示为IEEE 754单精度

解:-8.25二进制 = -1000.01
  规格化:-1.00001 × 2³
  S=1, E=3+127=130(10000010), M=00001
  结果:1 10000010 00001000000000000000000

例题2:IEEE 754 → 十进制

IEEE 754表示为 1 10000010 00001000000000000000000,求真值

解:S=1(负数)
  E=10000010 = 130
  尾数值 = 1.00001
  真值 = -1.00001 × 2^(130-127) = -1.00001 × 8 = -8.25

2.4 算术逻辑运算

2.5 ALU的实现


第三章 程序的转换与表示

3.1 指令系统架构(ISA)

3.2 汇编语言基础

指令类型 示例
数据传送 mov、load、store
算术运算 add、sub、mul、div
逻辑运算 and、or、xor、not
程序控制 jmp、jz、call、ret

3.3 寻址方式 ⭐⭐

寻址方式 说明 例题
立即寻址 操作数在指令中 mov r0, #100
直接寻址 指令给出主存地址 mov r0, [100]
间接寻址 地址所在单元存操作数地址 mov r0, [@ptr]
寄存器寻址 操作数在寄存器中 mov r0, r1
寄存器间接寻址 寄存器存主存地址 mov r0, [r1]
相对寻址 PC + 偏移量 jmp offset
变址寻址 变址寄存器 + 偏移量 -

3.4 模型机指令格式

R型指令:[op | rs | rt]  例:0000 0001(mov r0, r1)
M型指令:[op | addr]    例:1110 0110(load r0, [6])

op操作码:
  0000 mov   0001 add   0010 sub   0011 mul
  1110 load  1111 store

3.5 指令执行过程 ⭐

取指令 → 译码 → PC增量 → 取操作数并执行 → 送结果

例题:z = x + y

x在5#单元,y在6#单元,z存7#单元

指令 操作
load r0, [6] R[0] ← M[6],取y
mov r1, r0 R[1] ← R[0],暂存y
load r0, [5] R[0] ← M[5],取x
add r0, r1 R[0] ← R[0] + R[1],x+y
store [7], r0 M[7] ← R[0],存z

第四章 可执行文件的生成、加载与运行 ⭐⭐

4.1 翻译程序 ⭐⭐

类型 作用 输入 输出
预处理器 处理#开头的命令 源程序(.i) 源程序(.i)
编译器 翻译成汇编语言 源程序(.i) 汇编程序(.s)
汇编器 翻译成机器语言 汇编程序(.s) 可重定位目标文件(.o)
链接器 合并生成可执行文件 多个.o文件 可执行文件

4.2 ELF文件格式 ⭐⭐

ELF(Executable and Linkable Format)结构:

作用
ELF头 文件类型、入口地址、程序头偏移
.text 代码段(机器指令)
.data 已初始化数据段
.bss 未初始化数据段
.symtab 符号表
.rel 重定位信息
.strtab 字符串表

4.3 符号解析与重定位 ⭐⭐

符号类型

重定位过程

  1. 合并所有.o文件的节
  2. 合并相同类型的节到新的段
  3. 确定所有符号的最终地址
  4. 修改所有引用符号的地址

常见重定位类型

4.4 可执行文件的加载与运行

  1. Shell调用execve()系统调用
  2. 内核创建新进程,映射ELF文件
  3. 将入口地址设为程序的启动地址
  4. 从入口地址开始执行

进程映像:代码段、数据段、堆、栈

⚠️ 本章重点提醒

链接与加载是高频考点! - 四种翻译程序的作用和输出 - ELF文件各节的作用 - 符号解析过程 - 重定位的概念和类型


第五章 存储器层次结构

5.1 SRAM/DRAM存储原理 ⭐

类型 存储原理 特点 用途
SRAM 双稳态触发器 速度快、成本高、功耗大 Cache
DRAM 电容存储电荷 速度慢、成本低、需刷新 主存

刷新方式:集中刷新、分散刷新、异步刷新

5.2 主存与CPU的连接

容量 = 地址线位数 × 数据线位数 / 8

例:16位数据线,20位地址线
容量 = 2^20 × 16bit = 16Mbit = 2MB

内存条组成

5.3 Cache的映射与替换算法 ⭐⭐

程序局部性原理

命中率计算

命中率 = Cache命中次数 / 总访问次数
缺失率 = 1 - 命中率

映像方式

方式 特点 优缺点
直接映像 主存块固定对应Cache槽 简单但冲突率高
全相联映像 主存块可放任意Cache槽 灵活但比较器复杂
组相联映像 组内全相联,组间直接 折中方案

替换算法

写策略

Cache地址计算例题 ⭐

直接映像Cache,容量16KB,块大小16B,主存地址32位

块内地址位数:log2(16B) = 4位
Cache块数:16KB / 16B = 1024 = 2^10
主存地址格式:[Tag | Index | Offset]
Index = 10位,Offset = 4位
Tag = 32 - 10 - 4 = 18位

5.4 虚拟存储器 ⭐⭐

基本概念

页式管理

页式管理例题

页大小4KB,逻辑地址空间4GB

虚拟地址位数:log2(4GB) = 32位
页内偏移位数:log2(4KB) = 12位
虚拟页号:32 - 12 = 20位
页表项数:2^20 项
若每项4字节,页表大小:4MB

快表(TLB)

页面置换算法


第六章 I/O系统与异常中断

6.1 I/O接口

I/O端口类型

类型 作用
数据端口 存放数据
状态端口 反映设备状态
控制端口 存放控制命令

I/O编址方式

6.2 程序查询方式

6.3 中断处理机制 ⭐⭐

中断类型

中断处理过程 ⭐

1. 中断请求:设备向CPU发送中断请求信号
2. 中断判优:当多个中断同时发生时,选择优先级最高者
3. 中断响应:CPU保护现场(PC、PSW等),转向中断服务程序
4. 中断服务:执行中断处理程序
5. 中断返回:恢复现场,返回断点继续执行

6.4 DMA传输 ⭐⭐

DMA(Direct Memory Access)直接存储器访问

DMA工作过程 ⭐

1. CPU初始化DMA控制器(设置传送参数)
2. DMA请求总线控制权
3. DMA直接与主存交换数据
4. 传送完毕,DMA释放总线
5. CPU恢复控制权

四种I/O方式对比 ⭐

方式 CPU介入 数据单位 适用场景
程序查询 全程参与 字节/字 低速设备
中断方式 初始化和结尾处理 字节/字 中速设备
DMA方式 仅初始化和结束 数据块 高速设备
通道方式 基本不参与 数据块 大型设备

6.5 总线标准


典型大题解析

大题1:补码运算 ⭐

用8位补码计算:52 - 37

解:52原码 = 00110100
  -37补码 = 11011011
  相加:00110100 + 11011011 = 100001111
  溢出位丢弃,结果 = 00001111 = 15

大题2:IEEE 754浮点数 ⭐⭐

IEEE 754表示为 1 10000010 00001000000000000000000,求真值

解:S=1(负数)
  E=10000010 = 130
  尾数值 = 1.00001
  真值 = -1.00001 × 2^(130-127) = -8.25

大题3:Cache地址计算 ⭐

直接映像Cache,容量8KB,块大小32B,32位地址

解:块内偏移:log2(32B) = 5位
  Cache块数:8KB / 32B = 256 = 2^8
  Cache索引:8位
  Tag位数:32 - 8 - 5 = 19位

大题4:页式管理地址转换 ⭐

页大小4KB,页表项4字节,逻辑地址0x0035A028

解:页内偏移:低12位 = 0xA028
  虚拟页号:0x0035A028 >> 12 = 0x0035A
  物理地址 = 页框号 × 页大小 + 页内偏移

大题5:CPI与性能计算 ⭐

程序P含3类指令,比例43%:21%:12%:24%,CPI分别为1、2、2、2。优化后A类指令减少50%。求优化前后CPI和MIPS(50MHz)

解:优化前CPI = 0.43×1 + 0.21×2 + 0.12×2 + 0.24×2 = 1.57
  优化后:A减少50%,归一化后CPI = 1.726
  MIPS优化前 = 50/1.57 ≈ 31.85
  MIPS优化后 = 50/1.726 ≈ 28.97

大题6:DMA工作过程 ⭐

某硬盘用DMA传输4KB数据,说明DMA工作过程

解: 1. CPU设置DMA参数(源地址、目的地址、传输长度) 2. DMA控制器获得总线控制权 3. DMA从源地址读取数据,写入目的地址 4. 每传输一个字,地址加1,计数减1 5. 传输完成后,DMA释放总线,发送中断通知CPU

大题7:ELF文件与链接 ⭐⭐

说明链接器处理多个.o文件的主要步骤

解: 1. 符号解析:将所有符号引用与定义配对 2. 重定位:合并所有节,调整符号引用地址 3. 分配地址:为每个符号分配最终运行地址 4. 修改引用:更新所有重定位入口的地址


考前冲刺建议

⭐ 高频考点

章节 重点内容
第一章 冯·诺依曼结构、CPI/CPU时间计算、MIPS计算
第二章 原码/补码/反码、IEEE 754格式、溢出判断
第三章 七种寻址方式、指令执行过程、模型机指令
第四章 翻译过程(预处理/编译/汇编/链接)、ELF格式、符号解析与重定位 ⭐⭐
第五章 SRAM/DRAM区别、Cache三种映像方式、LRU算法、虚拟地址转换
第六章 程序查询/中断/DMA区别、DMA工作过程、中断处理流程

必背公式

1. 补码范围(n位):-2^(n-1) ~ +2^(n-1)-1
2. CPU时间 = 指令数 × CPI × 时钟周期
3. MIPS = 主频 / CPI
4. Cache地址格式:Tag | Index | Offset
5. 页表大小 = 虚拟页数 × 页表项大小
6. 物理地址 = 页框号 × 页大小 + 页内偏移

答题技巧


祝考试顺利!🍀