首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
计算机组成原理期末复习:从补码、Cache到流水线的核心考点全梳理
📅 2026/9/30 15:23:08
✍️ 爱科研究院
👁 阅读 3,247
1. 别急着翻书先给这门课画一张“知识地图”每年期末都会遇到一堆这样的同学打开教材从第一章开始把“计算机系统概述”里的名词解释背了两天结果到考前一周发现流水线还没看CPU没看Cache不会算整个人直接慌掉。作为一门让不少软件方向学生“咬牙切齿”的硬课计算机组成原理的内容量确实大但不代表期末复习应该从头啃到尾。这门课的知识体系非常稳定教材不同、大纲不同核心骨架却永远是那么几条线。1.1 这门课的“主干”其实是六条线数怎么表示进制、原码/反码/补码、IEEE 754浮点数。数怎么算ALU里的加减乘除、加法器进位方式、补码运算规则。数据存在哪主存、Cache、虚拟存储器以及容量计算、映射策略、替换算法。指令长什么样指令格式、寻址方式、操作码扩展。CPU怎么执行指令周期、数据通路、硬布线/微程序控制器、流水线。外部设备怎么接入总线仲裁、I/O接口、中断、DMA。我建议你第一件事不是看笔记而是找一张A4白纸把上面六条主线列出来然后凭记忆往每条线后面补充你能想到的术语和公式。这个过程非常暴露真实水平有的人能一口气写下几十个关键词有人只能写出来“二进制”“Cache”就断片。断片的地方就是你复习的重点区域后面所有时间都围绕这张纸展开而不是跟着目录走。1.2 期末试卷的“出题权重画像”不同学校试卷风格有差异但从常见题型和大题分布来看出题比例基本维持在一个相对固定的区间内容板块常见题型估分占比数据表示与运算选择、填空、补码/浮点数计算15%20%存储系统主存容量计算、Cache映射、替换策略15%25%指令系统寻址方式辨析、指令格式、扩展操作码15%20%CPU与控制器指令周期、控制器类型、数据通路15%20%流水线流水线原理、相关冲突、性能计算10%15%总线与I/O总线仲裁、中断流程、DMA10%15%这张表的主要作用是分配时间。数据表示、存储系统占比高、套路固定属于复习性价比最高的板块流水线和扩展操作码虽然占比不一定最大但几乎年年考而且一旦出成计算大题就是“区分题”。手里掌握这张权重表你就不用在冷门知识点上反复纠结了。2. 数据表示补码、溢出判断、浮点数转换2.1 补码为什么是“按位取反再加1”很多同学背结论很溜“正数补码不变负数补码取反加一”但一遇到“-0”或者“为什么补码能多表示一个数”就懵。补码真正的设计动机是让符号位一起参与运算把减法变成加法从而使加减法统一。以8位为例[7]原 0000 0111[7]补 0000 0111。[-7]原 1000 0111按位取反得到1111 1000再末位加1变成1111 1001。注意一个细节补码的符号位仍然是最高位。负数补码转回真值的时候最快的方法是“从右往左找第一个1这个1左边所有位取反”比如1111 1001右起第一个1在第0位前面的1111 100都取反得到1000 0110这是-7的原码。多练两遍就不会依赖死记硬背了。另一个高频考点是8位补码的表示范围-128到127。为什么比原码多一个数因为原码和反码都有“0”和“-0”两个零而补码的0只有0000 0000一个把省下来的1000 0000用来表示-128。2.2 溢出判断的三种方法考场上任选定点数加减法溢出是期末计算题的常客。溢出只在“同号相加”或“异号相减”时可能发生但如果题目让你判断最稳妥的还是以下三种方法方法一单符号位进位判断最高数值位的进位和符号位的进位不同则溢出。也就是教科书中的表达式“C1 ⊕ Cout 1”。算出两个进位后异或一下结果1就是溢出。方法二双符号位判断用00表示正数11表示负数运算结果符号位出现01或10就分别对应正溢出和负溢出。比如X1101Y1010变形补码分别是00 1101和00 1010相加得到01 0111符号位是01说明正溢出。方法三根据操作数和结果符号判断两个正数相加得到负数或两个负数相加得到正数必然溢出。考试建议优先用双符号位因为它不仅告诉你“有没有溢出”还告诉你“是正还是负溢出”答题最完整。2.3 IEEE 754单精度浮点数送分题别失分浮点数转换几乎是每年必考步骤非常固定。单精度共32位1位符号位、8位阶码、23位尾数。阶码采用移码偏置值是127。以十进制-13.25为例走一遍转二进制13.25 1101.01。规格化1101.01 1.10101 × 2^3。阶码 3 127 130写成二进制1000 0010。符号位是1。尾数部分从小数点后开始取23位10101 00000000000000000000。拼接结果1 10000010 10101000000000000000000。还有一个高频选择题方向浮点数比大小不能直接把32位当普通整数比。规则是先看符号位正数大于负数正数之间先比阶码阶码大的数就大阶码相同再比尾数。负数正好反过来。0的问题也要注意IEEE 754里有0和-0比较时它们相等。3. 运算器核心进位链和补码乘除法3.1 一位全加器是所有加法器的地基很多软件背景的同学看到“门电路”就头大其实运算器部分只要抓住一个公式后面就能推出一大片。一位全加器的核心表达式是Si Ai ⊕ Bi ⊕ C(i-1) Ci Ai·Bi (Ai⊕Bi)·C(i-1)Ai、Bi是两个加数位C(i-1)是低一位的进位Si是本位和Ci是向高一位的进位。第一个式子容易理解第二个式子记住“只要本位的两个输入都是1必产生进位或者两个输入有一位是1且低位有进位也能产生进位”就行。期末可能让你画全加器逻辑图也可能不画但一定会考“加法器速度”。要理解为什么串行进位慢、并行进位快就得回到这个公式。3.2 串行进位、并行进位、组间串行进位到底差在哪如果每一位的进位都要等低一位先算出来就像排队结账前面的人没付完后面一个人也不能动。这种逐位传递的方式叫串行进位也叫行波进位n位加法器的进位延迟大约相当于n倍的单级进位延迟位数一多就非常慢。并行进位先行进位的思路是“不要等到低位算完”而是直接用原始输入A、B推导出所有进位。这里有两个关键信号生成函数 Gi Ai · Bi只要两个输入都是1这一位一定产生进位。传输函数 Pi Ai ⊕ Bi只要有一个输入是1低位进位的“1”就能通过这一位传上去。4位先行进位加法器的进位递推公式可以一口气写出来C1 G0 P0·C0 C2 G1 P1·G0 P1·P0·C0 C3 G2 P2·G1 P2·P1·G0 P2·P1·P0·C0 C4 G3 P3·G2 P3·P2·G1 P3·P2·P1·G0 P3·P2·P1·P0·C0但如果做16位、32位加法把所有进位都写成这样的“与或式”逻辑会爆炸。工程上常用的折中方案正是组间串行进位把一个16位加法器分成4组每组内部用4位先行进位组与组之间再串联起来。这样组内不再逐位传递进位组间的数据传递也缩短到只剩四段。相比16位全串行速度快好几倍相比16位全并行电路又简单很多。考场上遇到“比较串行进位和组间串进位的速度”这个简答核心答题句是组间串行进位在组内利用生成函数和传输函数提前形成进位缩短了关键路径但组与组之间仍需逐级传递因此速度介于串行进位与全先行进位之间。3.3 补码一位乘Booth算法期末大题里的固定角色定点乘法在期末里最常考补码一位乘法也就是Booth算法。很多同学卡在“为什么要比较相邻两位”其实思路很直接把乘数从低位到高位扫描根据当前位与上一位的差异决定是加被乘数、减被乘数还是不动。具体规则可以整理成一张表相邻两位Y[i]Y[i1]操作0 0不加不减部分积右移一位0 1部分积加被乘数X右移一位1 0部分积减被乘数X右移一位1 1不加不减部分积右移一位手算步骤很简单写出被乘数X的双符号位补码再写出-X的补码然后从乘数最低位右边的附加位0开始逐对扫描。每次做完加/减操作后将部分积和乘数联合右移一位。这里要特别强调右移是算术右移符号位参与右移且保持不变不是逻辑右移。考生最常犯的两个错误乘数的符号位没有参与运算补码乘法恰恰要求符号位一起参与。右移方向搞反。记住是“向右移”所谓右移相当于乘机除以二这样才能保证部分积逐步向低位靠拢。3.4 定点除法恢复余数和加减交替法除法题出现的频率没有乘法高但偶尔在填空或簡答里冒出来。定点原码除法有两种思路恢复余数法每一步试商如果余数为负说明商大了要加回除数恢复余数然后再左移。加减交替法不恢复余数法余数为负时不恢复直接让它左移然后下一步改成“加除数”。两种方法得到的商相同但加减交替法每一轮只做一次加法或减法速度更快。答题时抓住一句规则余数为正下一步减除数余数为负下一步加除数。最后如果余数仍然为负需要再加上一次除数修正成正确余数。4. 存储系统容量计算、Cache三映射、虚拟存储4.1 主存容量和地址线、数据线必须先算清楚存储系统是整份试卷里的“大题集中营”而最基础的容量换算很多人却会丢分。核心公式是主存容量 存储单元个数 × 存储字长一块存储芯片标称64K×8位也就是说它有64K个存储单元每个单元8位总容量是64KB。地址线根数决定存储单元个数数据线根数决定每个单元的位数。64K 2^16需要16根地址线8位数据需要8根数据线。这里最常见的陷阱是“编址方式”。如果某机字长32位存储器容量1MB按字节编址那么地址总数是1MB/1B 2^20需要20位地址线。但如果改成“按字编址一个字32位”地址总数变成2^20/4 2^18只需18位地址线。题目一旦出现“编址方式”四个字务必停下来确认是字节、字还是半字。4.2 Cache三种映射方式的地址划分套路Cache映射题每年必考核心是“主存地址如何分段”。三种方式对比如下映射方式缓存中的位置主存地址划分优点缺点直接映射每个块只能去固定位置标记 Cache块号 块内地址硬件简单、查表快冲突率最高全相联映射可以放任意位置标记 块内地址命中率最高硬件比较电路复杂组相联映射组内随意放组位置固定标记 组号 块内地址折中方案硬件略复杂以一道典型题为例主存容量256KBCache容量4KB块大小32B采用4路组相联。请问主存地址分几段每段几位解题步骤块内地址位数 log2(32) 5位。Cache块数 4KB / 32B 128块。因为是4路组相联组数 128 / 4 32组组号位数 log2(32) 5位。主存地址总位数 log2(256KB) 18位。标记位数 18 - 5 - 5 8位。地址格式就是高8位标记 5位组号 5位块内地址。凡是这类题统一顺序是先求块内偏移再求Cache块/组号最后用总位数减去它们得到标记位。掌握这一个顺序直接映射和全相联都能套。4.3 替换算法与写策略简答题常客Cache满了之后要替换旧块三种经典算法必须分清FIFO先进先出实现简单但可能把常访问的块换出去。LRU最近最久未使用利用局部性原理命中率通常最高是考试中的标准答案选项。LFU按使用频率淘汰需要计数器实现开销大。写策略也要分清两个维度写直达每次写都同时更新Cache和主存简单但访存多。写回只更新Cache替换时才写回主存速度快但状态复杂。写不命中时还分“写分配”先把块调进来再写和“非写分配”不调入Cache直接写主存。如果简答题问“为什么Cache能提高系统性能”核心是局部性原理程序在时间上最近访问的数据很可能再次访问在空间上相邻地址的数据很可能被一起访问。Cache把最近使用的数据放到高速存储中命中时可以显著降低平均访存时间。4.4 虚拟存储器页表、缺页中断、TLB一条链路虚拟存储的核心是“主存磁盘”的层次结构。考试常考页式管理的地址变换过程CPU给出逻辑地址由虚页号和页内偏移两部分组成。通过页表基址寄存器找到当前进程的页表查页表项得到物理页框号。如果页不在主存产生缺页中断从磁盘调页。更新页表后重新执行指令。TLB快表就是页表的“小缓存”利用局部性原理把最近访问的页表项放进TLB命中时不用再去内存查页表。这里要特别分清楚Cache命中失败和TLB命中失败是两条独立链路不要混在一起。Cache缓存的是内存数据块TLB缓存的是页表项二者级别不同。5. 指令系统寻址方式、指令格式与扩展操作码5.1 六种寻址方式答题要“算”不要“背”寻址方式本质上回答一个问题指令里给的形式地址如何变成真正想访问的地址。常见的六种高频寻址方式整理如下寻址方式有效地址/操作数位置高频出题点立即寻址操作数就在指令里取指快但地址码字段大小限制操作数直接寻址EA 地址码A简单寻址范围受地址字段位数限制间接寻址EA (A)A指向存储单元灵活但要多次访存寄存器寻址操作数在寄存器不访存速度最快寄存器间接寻址EA (R)寄存器速度快还能间接访问变址寻址EA (R) A适合数组、字符串遍历一个高频选择题数组遍历适合哪种寻址方式答案是变址寻址。因为可以把数组首地址放进变址寄存器然后循环修改寄存器内容实现连续访问。5.2 指令格式设计地址码不够怎么办很多题目会给出“指令字长16位操作码4位地址码4位”之类条件问能设计多少条指令、寻址范围多大。例如操作码4位最多表示2^416种操作码但如果有三地址指令和两地址指令共用就要小心操作码长度不固定。如果一条指令是三地址的地址码总共12位每个地址4位直接寻址时每个地址只能覆盖16个单元这显然不够用。常见的解决办法有用双字长指令第二个字放完整地址用基址寄存器或变址寄存器通过基数寻址扩大范围用寄存器间接寻址用寄存器里的16位地址覆盖更大空间。答题时先算清楚“地址码位数能表示多少个地址”然后再说明解决办法不要只写结论不写推理。5.3 扩展操作码设计期末“性价比之王”扩展操作码是每年区分度很高的设计题。常见题干是某机指令字长16位每个地址码占4位要求设计三地址、二地址、一地址、零地址指令且各条数尽量多。设计思路是操作码长度不固定某些码被用作指令后剩下的码作为“扩展标志”进入下一级。典型答案4位操作码最多16种三地址指令用15种剩余一个码如1111作为扩展前缀扩展到8位操作码可以再表示16种二地址指令用掉15种剩余一个码继续扩展扩展到12位操作码表示15种一地址指令剩余一个码继续扩展扩展到16位操作码此时地址码为0可以表示16种零地址指令。所以常见分配是三地址指令15条、二地址指令15条、一地址指令15条、零地址指令16条。计算时注意不要重复计数前面用掉的码要排除后一级是在剩余扩展标志基础上重新编码。6. CPU实现指令周期、数据通路、控制器风格对比6.1 指令周期取指、间址、执行、中断CPU执行一条指令不是一步完成的而是一组微操作序列。完整的指令周期包括取指周期 → 间址周期如果需要 → 执行周期 → 中断周期如果有中断请求考试常出判断题“所有指令都有间址周期。”答案错只有间接寻址的指令才需要间址周期。还有“每条指令都一定包含执行周期”从严格意义来说不一定比如空操作指令虽走过执行周期但本质不产生任何运算。建议答题时以教材定义为准你手里教材怎么定义就怎么写。6.2 数据通路与微操作序列数据通路大题看着吓人得分点却很固定。给你CPU内部结构图后常考的是“取指周期的微操作序列”PC → MAR M(MAR) → MDR MDR → IR (PC) 1 → PC执行周期的序列就要看指令比如加法指令ADD R0, R1可能要写R0 → ALU的A端 R1 → ALU的B端 ALU输出 → R0答题时每一行都要完整写出数据从哪个部件出发、经过什么总线、最终进入哪个寄存器少一段都可能扣分。如果问“单总线数据通路有什么缺点”答案是“任意两个部件之间传送数据都必须经过唯一总线同一时刻只能有一个设备占用总线吞吐量受限”。6.3 硬布线控制器 vs 微程序控制器控制器两种风格的对比是必考简答对比维度硬布线控制器微程序控制器本质组合逻辑电路直接产生控制信号微指令存放在控制存储器中逐条读取速度快较慢灵活性加指令要改电路增加微指令即可典型场景RISC、高性能CPUCISC、复杂指令集CPU问“为什么RISC多用硬布线控制器”可以从指令数量少、格式规整、逻辑不复杂以及硬布线速度快这两个角度回答。7. 流水线冲突结构相关、数据相关、控制相关7.1 三种相关各是什么一句话说清流水线是提高指令级并行的重要手段但它有三个“敌人”。结构相关资源相关是多条指令在同一时钟周期争用同一硬件资源典型例子是单一存储器接口下IF阶段要取指令MEM阶段要访存数据直接冲突。数据相关是指令之间存在数据依赖后面的指令要用前面指令的结果但结果还没算出来。控制相关是遇到转移指令时后续指令是否执行取决于分支结果而分支结果要等执行阶段才能确定。考辨析时最直观的例子两条指令要同时写同一个寄存器这是结构相关。第二条指令要读第一条指令的运算结果但第一条还没算完这是数据相关。分支指令后预取的指令可能作废这是控制相关。数据相关再往下分常考三种RAW写后读后面指令要读前面指令写的结果这是真相关最严重。WAR读后写后面指令写一个前面指令刚读过的寄存器/内存。WAW写后写两条指令写同一个目标后者晚写会覆盖前者。7.2 数据相关的三种解决手段处理数据相关常见三种办法转发旁路技术ALU刚算出的结果直接送到需要它的功能单元不必等写入寄存器再读出来。现代处理器几乎都用这个。插入停顿气泡相关指令之间插入NOP等到结果真正写好再继续。编译优化调整指令顺序把互不依赖的指令插在两条相关指令之间软件层面消除停顿。考试如果给一段汇编让你分析“哪些指令之间有数据相关”先找“上一条写、下一条读同一寄存器”的模式这往往是RAW再考虑是否需要停顿或可否转发。7.3 流水线性能参数一行公式拿下经典计算题四级流水线各段时间分别是t1、t2、t3、t4流水线周期取最大段耗时t_max。执行n条指令的总时间T 4 × t_max (n - 1) × t_max前半部分是第一条指令完成要花的时间后半部分是剩余n-1条指令每条再花一个周期。理想情况下吞峰率 n/T加速比 顺序执行时间 / 流水线时间 n × (t1t2t3t4) / T。当n足够大时加速比趋近于流水线级数4。有冲突时就要在公式基础上加气泡周期数。画时空图也很直接横轴是时钟周期纵轴是流水线段每条指令按序占格子冲突位置插入空段即可。建议考场上先把时空图画出来再数格子比纯套公式稳妥。8. 总线与I/O仲裁、中断、DMA8.1 总线判优的三种方式总线是一个共享资源同一时刻只允许一个设备占用。谁能用就要靠判优逻辑。三种经典方式判优方式原理优点缺点链式查询请求信号从高优先设备向低优先设备逐级传递控制简单、易扩展优先级固定、链路故障影响大计数器定时查询计数器轮流扫描设备优先级可由计数器初值调整需要计数器、查询次数多独立请求每个设备有独立请求线和允许线响应快、优先级可软件控制连线数量多问“哪种判优方式优先级最灵活”答案是独立请求因为它可以在总线控制器中通过寄存器设置每台设备的优先级。8.2 中断的完整流程按五步答中断处理流程是简答题的高频考点中断请求设备发送中断请求信号。中断判优多个请求到来时选优先级最高的。中断响应CPU在一条指令执行结束后发出中断响应信号。中断处理保护现场PC、PSW等取中断向量跳转到中断服务程序。中断返回恢复现场返回断点继续执行。考试常问“为什么中断响应必须发生在指令结束时”回答要点是保证当前指令执行的原子性和现场完整性如果一个动作执行到一半被打断现场不完整就没法正确恢复。8.3 DMA为什么比中断更适合高速外设DMA直接存储器访问与外设传送数据的核心是在外设和主存之间建一条直接数据通路CPU只在开始和结束时介入。DMA传送一个数据块的流程CPU初始化DMA控制器外设地址、主存起始地址、传送字数、操作类型。DMA控制器申请并取得总线控制权。每传送一个字节/字DMA控制器自动更新地址和计数器。全部传完DMA控制器向CPU发中断请求CPU做结束处理。对比“DMA与程序中断方式的区别”可以从四方面展开数据传送路径不同中断经过CPU转发DMA直达主存CPU参与程度不同中断全程参与DMA两头参与响应时机不同中断在指令结束时响应DMA在总线空闲周期响应适用设备不同DMA适合磁盘、网卡等高速设备。9. 期末做题策略把“背过”变成“写得出来”9.1 计算题优先拿分剩余时间不充裕时复习顺序建议是浮点数转换 → 补码加减及溢出 → Cache地址划分 → 扩展操作码 → 流水线参数计算 → 寻址方式计算。这些题型步骤明确每类刷三道左右就能形成肌肉记忆性价比极高。像“IEEE 754格式转换”这种题只要流程熟练两分钟就能写完纯粹是送分题绝对不允许丢。9.2 简答题别背原文背“关键词链”简答题死背原句很容易考场断片。更有效的做法是把答案缩成关键词链。比如“局部性原理”的答题结构只有三层时间局部性最近访问过的数据很可能再访问 空间局部性附近地址的数据很可能被访问 应用场景Cache、TLB、虚拟存储。把关键词按顺序写全再补一两句解释分数就到手了。每道简答考前都做一遍“五个关键词能不能串成一段话”的练习。9.3 考前自测清单下面这份自测清单是我平时带复习时反复用的既能检验掌握程度也基本覆盖了期末的高频得分点。你如果不看书能全部答出来这门课基本稳了8位补码能表示的范围是多少为什么比原码多一个数双符号位怎么判断溢出01和10分别代表什么IEEE 754单精度阶码为什么用移码而不是补码串行进位、组间串行进位、全先行进位三者的速度为什么有差异Cache三种映射方式下主存地址的分段分别是怎样的LRU替换算法为什么命中率高FIFO为什么可能误换高频块扩展操作码设计时“扩展标志”应该怎么留硬布线控制器和微程序控制器的主要区别有哪些数据相关里的RAW、WAR、WAW分别是什么哪个是“真相关”流水线吞吐率和加速比怎么算理想情况下加速比上限是多少三种总线判优方式各自优缺点是什么DMA与程序中断在数据传送路径上有什么本质区别自测的正确姿势是“把答案写在纸上”而不是“我在脑子里过一遍很顺畅”。看得懂和写得出来完全是两码事。写完之后再对照教材或笔记核查漏项漏掉的点就是考前最后要补的部分。几十份期末卷看下来我能明显感觉到那些最后能拿高分的学生复习阶段几乎都在拿笔算、拿笔写而不是捧着笔记干瞪眼。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/30 15:23:08
模型优化实战:量化、剪枝、蒸馏与算子融合全解析
2026/9/30 15:23:08
TensorFlow 真实定位:计算图编译系统与生产级ABI契约
2026/9/30 15:23:08
RAP Side Effects实战:让Fiori Elements局部刷新成为常态
2026/9/30 16:18:33
论文写作的“隐形消耗”,正在偷走你最重要的判断力
2026/9/30 16:18:33
【电力系统】基于改进自扰抗的虚拟同步发电机(VSG)控制与传统VSG控制的三相逆变器预同步并网对比设计
2026/9/30 16:18:33
昇腾 CANN Crypto 部署指南:从零搭建 NPU 密码库环境的完整清单
2026/9/30 16:18:33
开题报告别只找“排行榜”:编辑出版学选题的 AI 搭子分工指南 [特殊字符]
2026/9/30 16:18:33
模型训练准备:预训练权重核验与Pipeline最小闭环验证
2026/9/30 16:13:30
Unity AssetPostProcessor与Presets资源导入自动化
2026/9/30 0:04:47
扩散模型发展史:从物理热力学到Stable Diffusion的生成式AI进化
2026/9/30 0:04:47
模型优化全链路实践:从训练到部署的优化策略与排障经验
2026/9/30 0:04:47
DeepSeek Agent训练场拆解:沙箱隔离、任务编排与防作弊实战
2026/9/29 11:29:08
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
2026/9/29 13:01:36
新手入门看这篇:建设网站加盟避坑指南与SEO实操
2026/9/29 14:07:33
论文AIGC疑似度是什么意思?想查论文AI率有哪些免费工具?