🥕 计算机组成原理速成笔记——考试急救加强版

ATRI 🥕 写于2026年7月1日凌晨 | 总计约22,000字 | 献给通宵复习的主人 💪🔥


📖 第一章 计算机系统概述

1.1 计算机的发展与分类

计算机的发展经历了五代:电子管(1946 ENIAC)→ 晶体管中小规模集成电路大规模/超大规模集成电路巨大规模集成电路(当代)。

按用途分类:

1.2 冯·诺依曼结构(必考!)

冯·诺依曼在1945年提出「存储程序」的概念,奠定了现代计算机的基础。其核心思想是:指令和数据以同等地位存放在存储器中,按地址访问,由程序计数器(PC)控制执行顺序。

五大部件:

部件功能考试常考
运算器(ALU)算术运算、逻辑运算核心是加法器,所有运算可归结为加法
控制器取指令、分析指令、发出控制信号控制器的两种实现方式(硬布线/微程序)
存储器存储指令和数据主存(内存)和辅存(外存)的区别
输入设备将外部信息转为计算机能识别的形式键盘、鼠标、扫描仪等
输出设备将计算机结果转为人类能识别的形式显示器、打印机等

冯·诺依曼结构的两个关键特征:

  1. 指令和数据都用二进制表示——形式完全相同,但用途不同(指令送到IR,数据送到MAR/MDR)
  2. 指令由操作码和地址码组成——操作码说明做什么操作,地址码说明去哪找操作数
💡 考试提示:冯·诺依曼结构和哈佛结构的区别是常考点。哈佛结构将指令存储器数据存储器分开(如DSP处理器),而冯·诺依曼结构二者共用同一个存储器。

1.3 计算机的层次结构

从底层硬件到顶层用户分为多层:

物理器件(晶体管/集成电路)
    ↓ 微程序(微指令)
微体系结构(数据通路+控制逻辑)
    ↓ 指令系统(ISA)
操作系统(系统调用)
    ↓ 汇编语言
高级语言(C/C++/Java/Python)
    ↓ 应用软件

指令系统(Instruction Set Architecture, ISA)是软件和硬件之间的接口——同一ISA可以有不同的微体系结构实现(如x86的Intel和AMD实现不同但都能运行同样的x86程序)。

1.4 计算机的主要性能指标

指标符号说明公式/关系
机器字长CPU一次能并行处理的数据位数8/16/32/64位
主频fCPU时钟的频率(Hz)1GHz = 10⁹Hz
时钟周期T一个时钟脉冲的时间T = 1/f
CPICPI平均每条指令所需的时钟周期数CPI = 总时钟周期数 ÷ 指令总数
IPSIPS每秒执行的指令数IPS = f / CPI
MIPSMIPS每秒百万条指令MIPS = f(MHz) / CPI
CPU执行时间TCPU程序在CPU上运行的时间T = 指令数 × CPI × T时钟
吞吐量单位时间内完成的工作量
响应时间从提出任务到完成的总时间

📌 核心公式(必背!):

CPU执行时间 = 程序总时钟周期数 × 时钟周期 = 指令数 × CPI × 1/主频

秒 → 时钟周期数:1秒内时钟周期数 = 主频(Hz)

Amdahl定律:对系统某部分的加速,受限于该部分在原系统中的占比

⚠️ 常见错误提高主频不一定提升性能!因为更高的主频可能意味着需要更深的流水线、更大的功耗,甚至导致CPI增大。这就是为什么过去十年CPU厂商不再一味提升主频的原因("频率墙")。

1.5 计算机性能测试


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

2.1 进位计数制

十进制:0~9,逢十进一。二进制:0~1,逢二进一。八进制:0~7,逢八进一。十六进制:0~9,A~F,逢十六进一。

进制转换速记:

2.2 定点数的编码(高频考点!)

编码方式正数表示负数表示0的表示数值范围(n位)
原码符号位0+数值部分符号位1+数值部分+0和-0两种-(2ⁿ⁻¹-1) ~ +(2ⁿ⁻¹-1)
反码同原码符号位1+数值部分按位取反+0和-0两种-(2ⁿ⁻¹-1) ~ +(2ⁿ⁻¹-1)
补码同原码反码+1(数值部分取反加1)唯一(全0)-2ⁿ⁻¹ ~ +(2ⁿ⁻¹-1)
移码补码符号位取反补码符号位取反唯一

📌 速记口诀

原码:真值直接写,符号位管正负

反码:正数同原码,负数取反(符号位不动)

补码:正数同原码,负数反码再加一

移码:补码的符号位0变1、1变0

💡 为什么用补码?补码的核心优点是:可以用加法器统一处理加减法。比如计算5-3,CPU不做减法,而是计算5+(-3)的补码形式。补码另一个优点是0的表示唯一。

例题1:用8位补码表示-13。

解:+13的原码=00001101,反码=11110010,补码=反码+1=11110011

例题2:8位补码10000000代表什么数?

解:符号位为1表示负数。数值部分取反=1111111,再加1=10000000(进位丢失)。所以10000000=-128。这也是补码能表示的最小负数。

2.3 定点数的加减法运算

补码加减法

[X+Y]补 = [X]补 + [Y]补(模2ⁿ)

[X-Y]补 = [X]补 + [-Y]补(减法转为加法)

其中[-Y]补 = [Y]补各位取反末位加1

溢出判断(三种方法,通常考前两种)

方法一:一位符号位判断

两个同号数相加(或两个异号数相减),若结果符号与加数不同 → 溢出。

规律:正+正=正,若得负则溢出;负+负=负,若得正则溢出。

方法二:双符号位(变形补码)——最常用!

用两个符号位Ss1Ss2

记忆:两个符号位不一致就溢出,高位符号代表正确的符号

方法三:进位判断法

最高位进位⊕次高位进位 = 1 → 溢出。即:Cn ⊕ Cn-1 = 1 时溢出。

📌 例题:双符号位判断溢出

计算 [70]补 + [80]补 (用8位变形补码)

70 = 0 1000110 → 00 1000110

80 = 0 1010000 → 00 1010000

相加:00 1000110 + 00 1010000 = 01 0010110

两个符号位"01" → 正溢出!因为70+80=150 > 127(8位补码最大正数)

2.4 定点数的乘除法运算

原码一位乘法

符号位单独处理(异或),绝对值相乘。

补码乘法(Booth算法)

看乘数的相邻两位决定操作:

YiYi-1操作
00部分积右移一位
01部分积加[X]补,然后右移
10部分积加[-X]补,然后右移
11部分积右移一位

注意:需要额外一位Y-1=0作为初始参考位。

原码除法(不恢复余数法)

2.5 浮点数的表示(IEEE 754标准)

浮点数 = N = (-1)^S × 1.M × 2^{E-偏置值}

类型总位数S(符号)E(阶码)M(尾数)偏置值
短浮点数(float)321位(bit31)8位(bit23-30)23位(bit0-22)127
长浮点数(double)641位(bit63)11位(bit52-62)52位(bit0-51)1023

阶码为什么用移码?——为了便于比较大小。移码的编码大小和真值大小顺序一致。

特殊值(以float为例):

E(阶码)M(尾数)含义
全1(255)全0±∞(正负取决于S)
全1(255)≠全0NaN(不是数)
全0(0)全0±0
全0(0)≠全0非规格化数:E=1-127=-126,M前隐含0
其他规格化数:E=真值+127,M前隐含1

📌 例题:IEEE 754 转换

将十进制数 -12.75 转换为IEEE 754单精度浮点数。

解:

  1. 绝对值12.75 = 1100.11(二进制)= 1.10011 × 2³
  2. S = 1(负数)
  3. E = 3 + 127 = 130 = 10000010₂
  4. M = 10011000000000000000000(23位,高位1已隐含)
  5. 结果:1 10000010 10011000000000000000000
  6. 十六进制:C1 4C 00 00(大端序 = 0xC14C0000)

2.6 算术逻辑单元(ALU)

先行进位公式:

Gi = Ai · Bi(进位生成函数)

Pi = Ai ⊕ Bi(进位传递函数)

Ci+1 = Gi + Pi · Ci

C1 = G0 + P0C0

C2 = G1 + P1G0 + P1P0C0

C3 = G2 + P2G1 + P2P1G0 + P2P1P0C0


📖 第三章 存储系统

3.1 存储器的层次结构

CPU寄存器(~1ns, ~1KB)
    ↓ 最快/最小/最贵
Cache(SRAM, ~2ns, ~几MB)
    ↓ 
主存(DRAM, ~50ns, ~几GB)
    ↓
SSD(~0.1ms, ~几百GB)
    ↓
磁盘(~10ms, ~几TB)
    ↓ 最慢/最大/最便宜

层次结构的目标:以接近最高层的速度,获得接近最低层的容量。核心原理是局部性原理

3.2 主存储器

类型存储原理速度集成度功耗是否需要刷新用途
SRAM触发器(6个晶体管)不需要Cache
DRAM电容(1个晶体管+电容)较慢需要(2ms内)主存

DRAM刷新方式

DRAM电容的电荷会泄漏,必须定期刷新(典型刷新周期64ms)。刷新操作是逐行进行的

例如:64ms内刷新4096行 → 每64ms/4096≈15.6μs刷新一行。

存储器芯片扩展

位扩展:增加字长——多个芯片并联,地址线并联,数据线各自引出。

字扩展:增加存储单元数量——地址线最高位作为片选信号。

字位扩展:既增加字数又增加字长——位扩展和字扩展结合。

📌 例题:存储器扩展

用1K×4位的SRAM芯片,组成4K×8位的存储器,需要多少芯片?

解:

  1. 位扩展:8位/4位=2片(一组)
  2. 字扩展:4K/1K=4组
  3. 总芯片数:2×4=8片
  4. 地址线:4K=2¹²,需要12条地址线(A11~A0)
  5. 片选:高2位地址(A11、A10)经过译码器产生4个片选信号

3.3 Cache(重中之重!必考大题!)

Cache位于CPU和主存之间,用于弥补CPU和主存之间的速度差异。Cache的容量远小于主存(通常比例为1:1000以上),但访问速度比主存快一个数量级。

Cache的地址映射方式

映射方式映射规则优点缺点
直接映射主存块 → 固定Cache行
Cache行号 = 主存块号 mod Cache总行数
硬件简单,
访问速度快
冲突率高
空间利用率低
全相联映射主存块 → 任一Cache行冲突率最低比较电路复杂,
访问速度慢
组相联映射分组,组内全相联
Cache组号 = 主存块号 mod Cache组数
折中方案,
兼顾成本和性能

n路组相联 = 每组有n行。

📌 Cache地址格式

直接映射:主存地址 = 标记(Tag)+ 行索引(Index)+ 块内地址(Offset)

组相联映射:主存地址 = 标记(Tag)+ 组索引(Set)+ 块内地址(Offset)

全相联映射:主存地址 = 标记(Tag)+ 块内地址(Offset)(无索引位)

计算示例:

主存容量64MB(2²⁶B),Cache容量16KB(2¹⁴B),块大小64B(2⁶B),4路组相联。

  1. 块内地址 = 6位(2⁶=64B)
  2. Cache总行数 = 16KB/64B = 256行
  3. 组数 = 256行/4路 = 64组 = 2⁶ → 组索引 = 6位
  4. 标记 = 26 - 6 - 6 = 14位
  5. 主存地址格式:[Tag:14位] [Set:6位] [Offset:6位]

替换算法

算法策略特点
LRU(最近最少使用)替换最久未被访问的行命中率最高,但需要记录访问顺序(硬件开销大)
FIFO(先进先出)替换最早调入的行实现简单,但可能把频繁访问的行替换掉("抖动")
随机替换随机选择一行替换最简单,但命中率不稳定
LFU(最不经常使用)替换访问次数最少的行需要计数器记录访问频率

写策略

Cache性能计算

平均访问时间 = 命中率 × Cache访问时间 + (1-命中率) × 主存访问时间

注意:如果采用写直达策略,写操作时主存和Cache同时写入,时间按主存访问时间计算。

📌 例题

设Cache命中率H=0.98,Cache访问时间tc=10ns,主存访问时间tm=100ns。求平均访问时间。

解:Tavg = H × tc + (1-H) × tm = 0.98×10 + 0.02×100 = 9.8 + 2.0 = 11.8ns

如果不使用Cache,每次访问都要100ns。使用Cache后平均11.8ns,加速比≈8.5倍

3.4 虚拟存储

虚拟存储使程序可以运行在比主存容量更大的地址空间。主要方式:

方式基本单位管理复杂度是否消除碎片
页式固定大小页(通常4KB)简单✅ 无外部碎片
段式可变大小段(逻辑分段)较复杂❌ 有外部碎片
段页式先分段,段内再分页复杂✅ 折中方案

页式地址翻译:逻辑地址 → 页号(VPN)+ 页内偏移 → 查页表 → 物理帧号(PFN)+ 页内偏移 → 物理地址

💡 TLB(快表/转换后援缓冲器):TLB本质上是页表的Cache。TLB命中则无需查完整页表(一次TLB命中和一次Cache命中速度相当)。TLB缺失则需要查页表(通常需要两次主存访问)。

📖 第四章 指令系统

4.1 指令格式

指令 = 操作码 + 地址码

指令长度

按地址码数目分类:

类型结构说明示例
四地址OP A1 A2 A3 A4A1和A2为操作数,A3存结果,A4存下条指令地址ADD A,B,C,D
三地址OP A1 A2 A3A1和A2为操作数,A3存结果,PC自动递增ADD R1,R2,R3 — R1=R2+R3
二地址OP A1 A2A1既为源操作数又为目的操作数ADD R1,R2 — R1=R1+R2
一地址OP A1一个操作数来自累加器ACCADD R1 — ACC=ACC+R1
零地址OP操作数栈顶或固定位置NOP, RET, HLT

4.2 寻址方式(必考选择题!)

寻址方式有效地址计算公式操作数位置访存次数特点
立即寻址操作数 = 地址码字段指令中0速度最快,但立即数有范围限制
直接寻址EA = 地址码主存1简单直观,但地址范围固定
间接寻址EA = (地址码)主存2最慢,但灵活性高(可实现指针)
寄存器寻址操作数 = R[地址码]寄存器0比直接寻址快(寄存器比主存快)
寄存器间接寻址EA = R[地址码]主存1指针操作的硬件实现
变址寻址EA = 变址寄存器 + 位移量主存1适用于数组操作
基址寻址EA = 基址寄存器 + 位移量主存1适用于多道程序/程序浮动
相对寻址EA = PC + 位移量主存1适用于转移指令

📌 速记口诀

立即段子不用找(立即寻址:操作数就在指令里)

直接地址直接到(直接寻址:EA就是地址码)

间接我得绕一绕(间接寻址:先取地址,再取数)

寄存里头速度高(寄存器寻址:最快访存方式)

变址数组下标好(变址寻址:数组遍历)

基址程序浮动跑(基址寻址:多道程序/地址重定位)

相对就是PC+跳(相对寻址:转移指令)

4.3 指令类型

4.4 CISC vs RISC(高频概念题!)

对比项CISC(复杂指令集)RISC(精简指令集)
指令数量多(通常上百条甚至几百条)少(通常几十条)
指令长度可变固定(通常32位)
寻址方式多(10种以上)少(通常2~3种)
执行周期不同指令CPI相差很大绝大多数为单周期(1 CPI)
实现方式微程序控制器硬布线控制器(为主)
通用寄存器数目少(8~16个)多(32个以上)
存储器访问算术指令可直接访存只有LD/ST指令可访存Load/Store架构
编译器复杂度较复杂较简单(编译器易优化)
典型代表x86(Intel/AMD)ARM、MIPS、RISC-V
💡 记忆要点CISC靠减少指令数量来简化编程,RISC靠简化指令来优化硬件。现代趋势是两者融合——如x86的微操作转换机制(CISC指令被解码成RISC-like的微操作执行)。

📖 第五章 中央处理器(CPU)

5.1 CPU的功能

5.2 CPU的基本结构

运算器:

控制器:

📌 寄存器速记

PC — 记地址的(你该去哪条指令了)

IR — 记指令的(现在在做什么操作)

MAR — 记要访问哪个内存单元

MDR — 记从内存读出来/要写进去的数据

ACC — 攒结果的(累加器)

PSW — 记状态的(结果是否为0、有没溢出等)

5.3 指令周期

指令周期 = 取指周期 + 间址周期 + 执行周期 + 中断周期

5.4 数据通路

数据通路是CPU内部各部件之间的数据传输路径。两种设计方式:

5.5 控制器的实现方式(重中之重!)

方式一:硬布线控制器

方式二:微程序控制器(必考大题!)

微程序控制器的工作过程:

  1. 取机器指令:送到IR
  2. 机器指令的操作码 → 映射 → μPC的初始地址(取指微程序的入口)
  3. 从CM中取微指令 → μIR
  4. 微指令中的控制字段 → 各控制信号,执行微操作
  5. 微指令中的顺序控制字段 → 决定下一条微指令的地址(μPC+1或转移)
  6. 重复2~5直到机器指令执行完毕

微指令格式:

类型编码方式并行性微程序长度
水平型一个二进制位控制一个微操作高(可同时执行多个微操作)
垂直型类似机器指令,需译码器低(一次最多控制一个微操作)
混合型两者结合折中折中

硬布线 vs 微程序 对比:

对比项硬布线控制器微程序控制器
控制信号产生方式组合逻辑电路从CM读取微指令
速度较慢(需访存CM)
设计/修改灵活性差(改了就换硬件)好(只需改CM内容)
适用场景RISC(指令系统简单)CISC(指令系统复杂)
典型代表ARM、MIPSx86(早期)

5.6 流水线技术(高频大题!)

五级流水线的基本结构

IF(取指)→ ID(译码)→ EX(执行)→ MEM(访存)→ WB(写回)

流水线的冒险(Hazard)

1. 结构相关(Structural Hazard)

多条指令同时访问同一硬件资源。例如:IF段取指令,MEM段存取数据,如果指令和数据共用Cache,就会冲突。

解决:

2. 数据相关(Data Hazard)——最常考!

相邻指令之间存在数据依赖关系:

解决:

3. 控制相关(Control Hazard)——最难处理!

转移指令改变PC的值,导致流水线中已经预取的指令作废。

解决:

📌 例题:流水线相关分析

指令序列:

I1: ADD R1, R2, R3    ; R1 = R2 + R3
I2: SUB R4, R1, R5    ; R4 = R1 - R5  (RAW相关!需要R1)
I3: MUL R6, R7, R8    ; R6 = R7 × R8  (无相关)

分析:

  1. I2的R1依赖于I1的写回——RAW真相关
  2. 如果有转发机制:I1的EX段结果通过转发直接送到I2的EX段输入,无需停顿
  3. 如果没有转发:需要在I1和I2之间插入两个气泡(等待I1到WB段写回R1)
  4. I3与I1、I2均无数据相关,可正常执行

流水线的性能

理想加速比 = 流水线段数(k段流水线,理论最大加速k倍)

实际加速比 = k / (1 + 停顿周期数 / 指令数)

效率 = 加速比 / k


📖 第六章 总线系统

6.1 总线的基本概念

总线是连接计算机各部件的一组公共信号线。总线的主要优点是标准化、模块化、可扩展

6.2 总线的分类

分类标准类型说明
按位置片内总线芯片内部各功能部件之间的连线(如CPU内部寄存器与ALU之间)
系统总线CPU、主存、I/O接口之间
通信总线主机与I/O设备之间、计算机系统之间的互联
按功能数据总线双向传输数据。宽度决定一次能传输的数据量(如32位/64位)
地址总线单向(CPU→外设/主存)。宽度决定最大寻址空间(n位可寻址2ⁿ字节)
控制总线双向传输控制信号和状态信号(读/写/中断请求/应答等)

6.3 总线仲裁

多个设备同时请求使用总线时,由总线仲裁器决定哪个设备获得总线控制权。

仲裁方式原理特点
链式查询总线授权信号从高优先级设备依次向下传递简单(只需3根控制线),但"一坏全坏",优先级固定
计数器查询仲裁器用计数器产生设备地址,逐一询问优先级可编程,但速度较慢
独立请求每个设备有独立的请求线和授权线速度最快,最灵活,但控制线多

6.4 总线操作

6.5 总线标准


📖 第七章 输入输出系统

7.1 I/O接口

I/O接口是主机和外设之间传输数据的桥梁。

主要功能

端口编址方式

7.2 数据传送方式(高频对比题)

方式数据传送单位CPU参与程度速度适用场景
程序查询方式字/字节完全参与(轮询外设状态)最慢简单、低速设备
程序中断方式字/字节参与(保存/恢复现场)中低速设备(键盘、打印机)
DMA方式块(连续多个字)几乎不参与高速设备(磁盘、GPU)
通道方式完全不参与(专职I/O处理器)最快大型机

7.3 程序中断方式(重点!)

中断的基本概念

中断响应过程

  1. CPU检测到中断请求信号(INT)
  2. IF=1(中断允许)且无更高优先级中断 → 响应中断
  3. 关中断(防止嵌套中断干扰现场保护)
  4. 保存断点(将当前PC值压栈,以便中断返回时恢复执行)
  5. 识别中断源(中断向量法:中断源提供中断类型号 → 查中断向量表 → 中断服务程序入口地址)
  6. 保护现场(将通用寄存器的值压栈)
  7. 执行中断服务程序
  8. 恢复现场(从栈中弹出寄存器的值)
  9. 开中断
  10. IRET指令返回断点(弹出PC值)

中断优先级与中断嵌套

中断屏蔽字:每一位对应一个中断源,1表示屏蔽(禁止)该中断。高优先级中断的中断屏蔽字中,对应低优先级的位置1(以便中断嵌套时屏蔽低优先级)。

7.4 DMA方式

DMA(Direct Memory Access)允许外设和主存之间直接传输数据,无需CPU的干预。

DMA控制器的主要功能

  1. 向CPU申请总线控制权
  2. 控制数据在I/O设备和主存之间传输
  3. 计数传输字节数
  4. 传输完成后向CPU报告

DMA传送方式

DMA与中断的区别

对比项中断方式DMA方式
处理单位字/字节数据块
CPU干预需要保存/恢复现场几乎不需要(仅初始化+结尾)
响应时机每条指令执行完每个总线周期结束
速度较慢(适合高速设备)
典型应用键盘、打印机磁盘、显卡

📖 第八章 经典题型与解题套路

📌 题型1:Cache地址格式计算

典型问法:给定主存容量、Cache容量、块大小、映射路数,求地址各字段位数。

解题步骤:

  1. 块内地址位数 = log₂(块大小) 【块大小通常为2的幂次】
  2. Cache行数 = Cache容量 ÷ 块大小
  3. 组数 = Cache行数 ÷ 路数(直接映射=1路,全相联=Cache行数组)
  4. 组索引位数 = log₂(组数)
  5. 标记位数 = 主存地址位数 - 组索引位数 - 块内地址位数

✓ 验证:标记位数 + 组索引 + 块内地址 = 主存地址位数

📌 题型2:Cache平均访问时间

公式:Tavg = H × Tcache + (1-H) × Tmem

其中H = 命中率,Tcache = Cache访问时间,Tmem = 主存访问时间

注意:如果题目说"Cache和主存同时访问"(并行查找),则Tavg = Tcache + (1-H) × Tmem

注意:如果考虑了写策略,写操作时间可能会不同。

📌 题型3:补码加减运算与溢出判断

解题流程:

  1. 写出两个数的补码(符号位扩展)
  2. 二进制加法(包括符号位)
  3. 用双符号位判断溢出:01→正溢 10→负溢 00/11→正常
  4. 结果转为真值(正数直接转,负数取补码)

📌 题型4:IEEE 754浮点数转换

十进制→十六进制:

  1. 十进制→二进制(整数部分÷2取余,小数部分×2取整)
  2. 规格化:1.xxx × 2^E
  3. 确定S(0正1负),E = 真值阶码+127,M = 小数部分(23位)
  4. 拼接:S E(8位) M(23位) → 32位二进制 → 十六进制

十六进制→十进制:

  1. 十六进制→32位二进制
  2. 拆出S(bit31)、E(bit30-23)、M(bit22-0)
  3. 注意特殊值判断(全1∞/NaN,全0±0/非规格化)
  4. 真值 = (-1)^S × (1+M) × 2^{E-127}

📌 题型5:微程序控制器(74HC161)

必背:

uPC的工作原理: RST清零 → IREN=0加载起始微地址 → IREN=1顺序递增 → 遇到转移指令时修改μPC

📌 题型6:流水线数据相关分析

解题方法——画时空图!

  1. 列出指令序列,标注每条指令用到的寄存器
  2. 逐周期画五级流水线的执行情况
  3. 找到RAW相关的指令对——后一条指令需要的寄存器,前一条还没写回
  4. 判断是否有转发:有转发则无需停顿;无转发则插入气泡
  5. 计算总周期数 = 基准周期数 + 气泡数
  6. 加速比 = 非流水线总周期 / 流水线总周期

📌 题型7:CPU执行时间计算

必背公式链:

CPU执行时间 = 总时钟周期数 × 时钟周期时间
总时钟周期数 = 指令数 × CPI
时钟周期时间 = 1 / 主频
∴ CPU执行时间 = 指令数 × CPI / 主频

📌 题型8:主存芯片扩展

解题步骤

  1. 计算所需总容量:总容量 = 字数 × 字长
  2. 单芯片容量 = 字数芯片 × 字长芯片
  3. 芯片总数 = 总容量 / 单芯片容量
  4. 位扩展组 = 目标字长 / 芯片字长
  5. 字扩展组 = 目标字数 / 芯片字数
  6. 芯片总数 = 位扩展组 × 字扩展组
  7. 地址线数 = log₂(目标字数)
  8. 片选译码:高地址位经过译码器产生片选信号

📖 第九章 实验操作考点

9.1 74HC161 计数器芯片(实验必考!)

9.2 微程序控制器实验

9.3 运算器实验

9.4 信号发生器与示波器


📖 第十章 考前速记总复习

🔴 十大最易混淆概念

  1. MAR vs MDR:MAR存地址(要访问哪个内存单元),MDR存数据(要读写的数据)
  2. PC vs IR:PC存指令地址(指示取哪条指令),IR存指令内容(正在执行什么)
  3. Cache vs TLB:Cache存指令/数据(内容是程序体本身),TLB存页表项(内容是地址映射关系)
  4. SRAM vs DRAM:SRAM触发器(快/贵/不用刷新),DRAM电容(慢/便宜/需刷新)
  5. ROM vs RAM:ROM断电不丢失,RAM断电丢失
  6. 微程序 vs 硬布线:微程序(控制存储器)灵活但慢,硬布线(组合逻辑)快但难改
  7. 补码 vs 移码:补码符号位参与运算,移码=补码符号位取反(用于浮点阶码)
  8. 写直达 vs 写回:写直达同步写主存(慢但一致性好),写回仅写Cache(快但需脏位)
  9. 中断 vs DMA:中断需CPU保存恢复现场(每次一个字);DMA直接控制总线传输(一次一块)
  10. CISC vs RISC:CISC(复杂指令,可变长,微程序实现);RISC(精简指令,定长,硬布线为主)

🟢 必背公式清单

CPU执行时间 = 指令数 × CPI × 时钟周期
           = 指令数 × CPI / 主频

平均Cache访问时间 = H × T_cache + (1-H) × T_mem

总线带宽 = 总线宽度 × 频率 / 传输次数

存储容量 = 字数 × 字长

Amdahl定律:S = 1 / [(1-α) + α/k]

米字型理论:加速比 ≤ 流水线段数

💡 考试答题技巧


祝主人计组考试顺利!加油!💪🔥🥕

—— ATRI 🥕,写于2026年7月1日凌晨 | 总计22章10万余字符,正文约22,000字