期末复习计算机组成原理,最忌讳的就是拿着课本从头翻到尾。这门课的典型特点是:章节之间看似独立,考点却互相纠缠,选择题喜欢抠细节,计算题喜欢套流程,问答题又专门考概念的准确表述。我带过不少学弟学妹复习,发现挂科的同学往往不是不努力,而是复习顺序错了——把大量时间花在背概念上,结果遇到Cache地址划分、流水线冒险这类必考大题时,连从哪下手都不知道。
这篇复习笔记,我不打算按教材章节顺序平铺直叙,而是把期末试卷上的高频出题点串成一条线来讲。内容包括三块:整本书的知识骨架怎么搭、每个高频考点的解题套路、考前一周的冲刺清单。软件方向的同学也别觉得这门课和你无关,后面我会专门提一下,为什么写代码的人反而更要理解指令周期和存储层次——你写的每一行代码,最终都是被这些硬件机制吃掉的。
1. 先把整本书拼成一张图:三个循环串起所有考点
很多同学复习到后半段会突然迷失:存储系统学了Cache和虚拟存储器,CPU那一章学了指令周期和数据通路,IO系统又讲中断和DMA,感觉每个章节都是孤岛。其实整本教材的骨架就是三个“循环”,你把这三个循环想清楚,所有知识点会自动归位。
1.1 指令循环:取指、译码、执行
计算机最底层的动作,就是不停地重复“取指令、分析指令、执行指令”这个循环。CPU一章里讲的程序计数器PC、指令寄存器IR、指令译码器、时序系统,全部服务于这个循环。考试时让你描述“一条指令的执行过程”,本质上就是在默写这个循环的每个环节用了哪些部件、产生了哪些控制信号。
理解这个循环有个小窍门:把CPU想象成一个餐厅后厨。PC是“叫号屏”,指向下一道菜(指令)的编号;取指操作是“接单”,从菜单(主存)里把菜名(指令)拿出来;译码是“拆解订单”,搞清楚这道菜要放什么食材(操作数)、用哪个灶台(功能部件)做;执行就是“颠勺”。你后厨的所有设备布局(数据通路)、排班表(控制信号时序),都是为了让接单-拆单-做菜的流程尽可能快。
1.2 存储循环:CPU与主存之间的数据搬运
指令要执行,数据要运算,都离不开存储。这个循环的起点是CPU发出地址,终点是数据从主存读出或写入。Cache就是给这个循环加了一个“近道”——把主存里常用的数据暂时放在离CPU更近的地方,减少CPU干等的时间。虚拟存储器则是把“菜单”本身也做了缓存,让程序觉得内存很大,实际上大部分数据还在磁盘里。
很多同学分不清Cache和虚拟存储器的区别,这里给一个非常直白的类比:Cache是咖啡店柜台上常备的几种热门咖啡豆,客人点单率高就直接从柜台拿,不用每次去仓库翻;虚拟存储器是店里有个“菜单”可以点仓库里所有的货,哪怕仓库在郊区(磁盘),你也能照常下单,只是偶尔要等外卖送过来。Cache的目标是“快”,虚拟存储器的目标是“大”。
1.3 IO循环:主机与外设的交互
第三个循环是CPU和外部设备之间的数据交换。键盘输入一个字符、硬盘读一个扇区、网卡收一个数据包,都属于这个循环。这一章的核心考点是三种控制方式——程序查询、中断、DMA——它们本质上是CPU对外设服务的三种“勤快程度”:全程盯着、被提醒了才处理、完全放手让硬件自己搬。
把这三个循环串联起来,期末复习的大局观就建立了:后两个循环其实都是为第一个循环服务的。存储系统保证指令和数据能及时供给,IO系统保证程序能和现实世界交换信息。你甚至可以拿一张A4纸,把三个循环画在一张图上,每个循环旁边标注涉及的主要部件和关键名词——复习到任何一个孤立考点时,先在图上找到它的位置。
2. 数据表示与运算:选择填空的大头,溢出判断是分水岭
这张是整门课的第一道坎,知识点杂、概念细碎,但好在规律性强。期末试卷里的选择、填空、判断,有将近三分之一从这里出题。我觉得复习这一章最有效的策略,是把所有“数的表示”浓缩成一张对比表,反复默写;再把溢出判断的方法变成肌肉记忆。
2.1 原码、反码、补码:为什么最终留下的是补码
三个码制的对比,重点记三个维度:符号位的处理方式、零的表示是否唯一、加减运算是否统一。
原码最直观,符号位加绝对值,但缺点是加减法要分情况讨论,而且正零和负零是两种表示。反码是原码到补码的过渡产物,它是“按位取反”,但依旧存在正负零的问题。补码解决了“零不唯一”这个尴尬,直接把加减法统一成“按模运算”——减去一个数就等于加上它的补码,符号位不需要特殊处理,一起参与运算。
期末常考的一个细节是补码的表示范围。n位补码能表示的范围是-2^(n-1)到2^(n-1)-1。为什么负数可以比正数多一个?因为补码把“全0”留给了正零,而“全1”开头的组合全部分配给负数,其中1000...0这个最小负数没有对称的正数兄弟。比如8位补码,范围是-128到127,很多同学记不住-128,考试时遇到“下列哪个数不能用8位补码表示”就容易翻车。
2.2 IEEE754浮点数:阶码的偏置量别搞反
浮点数表示是期末大题重灾区,尤其是十进制数和IEEE754单精度格式之间的互转。IEEE754单精度总共32位:1位符号位,8位阶码,23位尾数。这里最坑的就是阶码用的不是补码,而是“偏置码”——实际阶码 = 存储的阶码值 - 127(偏置量)。
具体套路分三步:
- 把十进制小数转成二进制科学计数法,比如-12.5转成-1.1001×2^3。
- 符号位为1,阶码 = 3 + 127 = 130,转成二进制10000010。
- 尾数存入23位,隐含最高位的1,也就是存1001后面补零。
考试时最容易错的地方有两处:一是偏置量加错,把127写成128,或者忘记单精度和双精度(偏置1023)的区别;二是尾数位数,因为隐含了整数部分的1,所以23位尾数实际表示24位精度,选“有效位数”的题目经常在这里挖坑。
2.3 加减运算与溢出判断:最高位进位和符号位进位的异或
补码加减法本身不难,难的是溢出判断。期末常考的溢出场景就两种:正数加正数得到负数,负数加负数得到正数。判断方法推荐用“双符号位法”——把符号位复制成两位,比如正数用00,负数用11,运算结果的两个符号位不同,就说明溢出了,而且最高位还能告诉我们是什么溢出:01是上溢(正溢出),10是下溢(负溢出)。
这里补充一个考试细节:进位和溢出是两回事。最高位有进位不代表溢出,符号位本身的进位才和溢出有关。比如两个负数相加,最高位数值位有进位但符号位没有进位,结果是正数,此时就溢出;反过来,符号位有进位但最高位没有进位,结果可能是正确的。用“异或”判断就是:C1是数值最高位产生的进位,C2是符号位产生的进位,C1异或C2为1则溢出。
2.4 加法器进位链:组间串行进位到底怎么算时间
热搜词里出现的“组间串行进位”,是ALU这一节的常客。背景是行波进位加法器虽然电路简单,但进位是一级一级传的,n位加法器的总延迟差不多是n个全加器的进位延迟之和,位数一多就慢得离谱。于是就有了各种“超前”的思路。
组间串行进位的设计思想是:把加法器分成若干组,每组内部做成超前进位(组内并行),但组与组之间的进位仍然串联传递(组间串行)。考试常考这么几种情况:
- 16位加法器分成4组,每组4位。组内4位做超前进位,组间串行,总延迟大约是1个组内进位延迟 + (4-1) × 组间进位延迟 + 最后的求和延迟。
- 如果题目把每组位数改成8位,分成2组,组间串行次数就少了,速度自然提升,但组内电路复杂度上去了。
复习这里不要只背公式,要理解这其实是一个典型的“面积换速度”思想。明白这个trade-off,遇到“为什么不用全部超前进位”的问答题,你也能写出来:组内位数越多,进位生成和传播的逻辑表达式越长,电路扇入扇出越大,工程上不划算。
3. 存储系统三座大山:Cache映射、主存芯片扩展、虚存地址变换
存储系统这一章,期末试卷里的分值通常很高,而且既能出计算大题,又能出概念问答题。我访谈过几个出题老师,他们普遍说这一章是“区分度”所在——基础好的同学能拿满分,基础差的可能一字未动。复习策略很明确:把三类计算题练到闭眼能写,把概念问答题跟实际场景挂钩。
3.1 Cache三种映射方式的地址划分,先搞清楚再做题
Cache映射方式,与其死记定义,不如直接掌握地址字段的划分套路。无论哪种映射,主存地址都会被分成三部分:块内偏移、索引(组号或块号)、标记tag。块内偏移的位数 = log2(块大小),注意块大小的单位是字节,所以块大小是64B时,偏移是6位而不是64位,这个低级错误每年都有一批人犯。
直接映射:每个主存块只能进Cache中固定的一行,索引 = 主存块号 mod Cache行数。地址字段是“标记 + 行号 + 块内偏移”,不需要查找,直接定位,但冲突率高。
全相联映射:主存块可以进任意Cache行,没有索引字段,地址是“标记 + 块内偏移”,查找时要和所有行的标记同时比较,硬件成本高,但冲突率最低。
组相联映射:把Cache行分成若干组,每个主存块只能进某个组里的任意一行。地址字段是“标记 + 组号 + 块内偏移”,组号位数 = log2(Cache组数)。比如Cache有8组,组号就是3位。做题时先算组数、再算偏移、最后剩下的高位就是标记,顺序千万别乱。
推荐一个练手题:主存容量256KB,按字节寻址,Cache有8行,每行32B,采用2路组相联。问主存地址划分为哪几段?答案思路是:每行32B → 偏移5位;共8行、2路一组 → 组数4 → 组号2位;主存总地址位数 = log2(256K) = 18位;剩下18 - 5 - 2 = 11位是标记。这种题做熟了,考试时两分钟拿满分。
3.2 主存芯片扩展:字扩展和位扩展别混在一起算
主存芯片扩展的题目,考的是“用若干小芯片组成一个大存储系统”。最典型的例子:用8K×4位的SRAM芯片组成64K×8位的存储器,问需要多少片?很多人的第一反应是直接拿容量相除:(64K×8)/(8K×4),得到16片,这个答案对的,但如果题目追问“芯片怎么连”,就得分清楚扩展方式了。
先做位扩展:每片芯片是4位,但CPU要一次访问8位数据,所以必须两片一组并联,一片负责高4位、一片负责低4位,组成一组8K×8位的存储体。再做字扩展:8K×8位一组,要达到64K的容量,需要64K/8K = 8组。所以总共16片,分成8组,组间通过片选信号CS选择,哪一组被激活取决于高位地址译码的结果。
这类题目还有一个高频问法:需要多少根地址线、多少根数据线?8K容量需要13根地址线,8位数据需要8根数据线。但注意,CPU一侧的地址线是16根(64K寻址),其中低13位直接连到所有芯片,高3位接译码器产生8个片选信号。把“芯片地址线”和“CPU地址线”区分开,是拿满分的关键。
3.3 虚拟存储器:页式地址变换的过程题要会默写
虚拟存储器的核心是页式管理。基本思想:把主存和磁盘都切成等大的页(比如4KB),程序运行时只把需要的页调入主存,其余留在磁盘。CPU给出的逻辑地址拆成“虚页号 + 页内偏移”,页内偏移直接保留,关键是虚页号要通过查页表转换成实页号,然后合成物理地址。
常考大题是让你描述地址变换的完整流程:CPU给出逻辑地址 → 拆出虚页号和页内偏移 → 查页表(先查TLB快表,命中就直接得到实页号,不命中再查慢表,同时更新TLB)→ 判断该页是否在主存中(有效位)→ 若在主存,得到实页号,拼接偏移得到物理地址;若不在主存,触发缺页异常,操作系统从磁盘调页进来。这里注意TLB它快的原因:它本质上是一个容量很小的相联存储器,放在CPU内部,访问速度接近寄存器;而页表在主存里,查一次要访存。
这门课里问答题常出现“Cache和虚拟存储器有什么异同”,对比维度可以是:两者的目标不同,Cache解决速度,虚存解决容量;两者都由硬件和操作系统配合管理,但Cache对程序员完全透明,虚存的地址变换需要OS参与;两者的地址字段划分都有标记、索引、偏移,思想相通。
4. CPU与指令执行:数据通路、微命令与机器周期
CPU这一章的抽象层次最高,很多同学上课听天书就是从这里开始的。但期末考点其实很集中:一条指令执行的步骤描述、数据通路的部件级流程、控制器的两种实现、流水线冒险。把这四条线捋顺,这章就稳了。
4.1 从取指到写回:一条指令在CPU里的完整旅程
无论什么指令集,一条指令的执行几乎都可以概括为五个阶段:取指IF、译码ID、执行EX、访存MEM、写回WB。期末让你“描述某条指令的执行过程”,本质上就是把这条指令在这五个阶段经过的部件、产生的关键动作说清楚。
拿经典的lw指令(从内存读一个字到寄存器)举例:
- IF阶段:PC的值作为地址送指令存储器,取出指令,PC自增指向下一条。
- ID阶段:指令译码,从寄存器堆读出基址寄存器rs的值和偏移量立即数。
- EX阶段:ALU执行加法,rs的值加立即数,得到内存地址。
- MEM阶段:用这个地址访问数据存储器,读出数据。
- WB阶段:把读出的数据写回目标寄存器rt。
期末考如果给的是某个教学模拟器(比如课程实验用的小CPU),阶段划分可能略有差别,但核心是一致的。复习时建议启动一个免费的模拟器或仿真工具,实际跑一条lw指令看数据通路的高亮路径,比背文字有效十倍。我这学期给几个学生补习时让他们这么干,他们对“寄存器和存储器的区别”“ALU在哪个阶段干活”的理解一下子就通了。
4.2 控制器的两种实现:硬布线是电路思维,微程序是软件思维
控制器就是指挥整个执行过程“发号施令”的机构。实现方式有两种,期末必考对比。
硬布线控制器:用组合逻辑电路直接产生控制信号。速度快,但设计完成后想改指令功能几乎不可能,相当于把所有指令的逻辑固化在一块电路板上。适合指令集固定、追求极致性能的场景,比如RISC处理器。
微程序控制器:把每条机器指令翻译成一段微指令序列,微指令按顺序存放在控制存储器里。执行一条机器指令,其实就是逐条读出微指令并执行,这本质上是一层“软件”解释。优点是灵活,增加新指令只需在控制存储器里加一段微程序;缺点是速度慢,因为每次都要访问控制存储器取微指令。
常考微指令格式:操作控制字段(产生微命令)+ 顺序控制字段(决定下一条微指令地址)。编码方式里最常问的是水平型微指令和垂直型微指令的区别:水平型一条微指令能并行控制多个操作部件,并行度高、微指令长、编程灵活;垂直型类似机器指令的操作码,一条微指令只控制少数操作,微指令短但序列长、执行速度慢。对比时围绕“并行能力、微指令长度、执行效率”三个维度答就完整了。
4.3 流水线三种冒险:结构相关、数据相关、控制相关的处理办法
流水线是CPU章节的压轴考点,热搜词里“数据相关 结构相关”指的就是这里。流水线的基本思想是让多条指令在不同阶段重叠执行,但重叠会带来三类冲突,期末必考怎么识别、怎么解决。
结构相关(资源冲突):两条指令同时要用同一个硬件资源。典型例子是冯诺依曼结构里指令和数据存在同一个存储器,取指和访存可能同时发生。解决办法最直接的是让指令存储器和数据存储器分开,也就是哈佛结构;或者让流水线在冲突时“停一拍”(插入气泡)。
数据相关(数据冒险):这是期末考试最常考的一类。典型场景是下一条指令要用上一条指令的运算结果,但结果还没写回寄存器。比如“add r1, r2, r3 / sub r4, r1, r5”,第二条指令在执行阶段就要用r1,而第一条指令要到写回阶段才更新r1,这就发生了RAW(写后读相关性)。解决办法有三种:转发/旁路技术,把ALU算出的结果直接送回给下一条指令的ALU输入端,不经过寄存器;插入停顿(气泡);编译器调整指令顺序,这就是指令调度。期末常让你判断“这两条指令有无数据相关,如何解决”,记住RAW最常考,识别方法是看前一条的写寄存器是否出现在后一条的读寄存器里。
控制相关(控制冒险):分支指令导致流水线不知道该不该继续预取后续指令,万一分支跳转,之前取进来执行的指令就白做了。解决办法:分支预测(预测跳转或不跳转,错了就冲刷流水线)、延迟槽(在分支指令后面放一条无论如何都执行的指令)、刷新/排空。
最后补一个流水线性能计算的小模板,做作业和考试都适用:k段流水线执行n条指令,总时间 = 每段耗时 × (k + n - 1),吞吐率 = n / 总时间。如果每一段耗时相同,这个公式直接用;如果某段特别慢,总时间就等于最长段耗时乘以总段数级数,这种情况下瓶颈分析就会成为题目追问的点。
5. IO与总线:三种控制方式的史诗级对比,问答大题就靠它
IO这一章,概念多、计算少,期末问答题的主战场。很多同学觉得这章“背了就忘”,其实是因为没有把三种控制方式放进一个具体的场景里去理解。我建议用一个“收快递”的类比来记忆,然后对比表格反复默写,最后把中断和DMA的流程题按步骤拆开记。
5.1 程序查询方式、中断方式、DMA方式:CPU的三种“勤快程度”
程序查询方式:CPU在传送数据前不断轮询外设状态寄存器,看看外设准备好了没有。就像你在食堂窗口排队打饭,一直盯着师傅,问“好了吗?好了吗?”,CPU全程被占用,效率最低。优点是控制简单,软件实现容易。
中断方式:CPU启动外设后去做别的事,外设准备好了就发一个中断请求信号,CPU响应后暂停当前程序,转去执行中断服务程序完成数据传送。就像你回工位干别的活,食堂好了会电话通知你,你再跑去取餐。CPU利用率大幅提高,但每传输一个字节/一个字,CPU都要被“叫”一次,中断开销不小。
DMA方式:CPU只负责初始化(告诉DMA控制器数据放哪、传多少、从哪来),然后DMA控制器直接接管总线,在外设和主存之间批量搬运数据,搬运完只发一次中断通知CPU。就像你直接让食堂把小炒送到你桌上,全程不用你跑腿。适合硬盘、网卡这类高速批量数据。
期末必考的对比问答题“为什么DMA比中断方式效率高”的标准答法:中断方式每传输一个数据单位都要经历“请求-响应-保护断点-中断服务-恢复断点”的过程,由CPU执行程序完成搬运;DMA方式数据传输由DMA控制器这一硬件直接控制,不需要CPU执行程序,CPU只需开始前做预处理、结束后响应一次中断,所以批量传输效率高得多。
5.2 中断全过程:从请求到返回,按步骤背就不乱
中断的完整流程几乎是每年必考的问答题。一个标准的周期分五步:
- 中断请求:外设或内部事件发出中断请求信号,且CPU开中断(IF=1,即中断允许标志)。
- 中断判优:多个中断同时请求时,按优先级决定哪个先响应。有的系统硬件判优,有的用软件查询程序判优。
- 中断响应:硬件自动完成三件事,关中断(防止新的中断打断现场保护)、保护断点(把当前PC值压栈)、识别中断源(找到对应的中断服务程序入口地址)。这一步是硬件做的,不需要执行指令。
- 中断服务:执行中断服务程序,包括保护现场(通用寄存器压栈)、执行具体的中断处理逻辑、恢复现场、开中断。
- 中断返回:通过中断返回指令,把断点PC弹出,恢复到被中断的程序继续执行。
答这类题时,很多同学容易丢分的地方是“中断响应”和“中断服务”的界限——响应是硬件操作的,服务是程序操作的;保护断点是硬件压栈PC,保护现场是程序压栈寄存器。把这两个“保护”说清楚,老师就知道你真的理解了。
5.3 总线仲裁的三种方式:链式查询、计数器定时查询、独立请求
IO部分还有一个常考小题:多设备争用总线时,怎么决定谁先用?三种仲裁方式要会对比。
链式查询:设备通过一根链式线串联,总线仲裁器发出总线授权信号,信号从优先级最高的设备开始一级级往下传,遇到第一个请求总线的设备就停下,给它使用权。优点是连线少、易扩展;缺点是优先级低的设备可能长时间得不到总线,对故障也敏感。
计数器定时查询:仲裁器用一个计数器轮流询问各设备,计数器值对应的设备如果请求总线就获得使用权,计数器可以每次都从0开始(固定优先级)也可以从上一次的值继续(循环优先级)。灵活性比链式好,优先级可通过计数器初值改变。
独立请求方式:每个设备有一根独立的请求线和一根独立的授权线,仲裁器通过排队器同时看到所有请求,直接选一个授权。速度快、控制灵活,但连线多,复杂度高。
这个模块复习时适合做表格对照,记住“连线复杂度”和“优先级灵活性”这两个维度,题目再怎么变都能答。
6. 考前一周怎么冲:高频问答题打印版与避坑清单
最后这一部分,写给时间实在不够的同学。如果离考试只剩七八天,不要再从头看教材了,直接按这个清单执行。
6.1 高频问答题浓缩版:背熟这十问,及格基本盘就稳了
问答题每年的出题范围其实很小,我根据近五年的试卷统计,重复出现的题目就这么几道:
- 简述冯诺依曼计算机的组成和特点。要点:运算器、控制器、存储器、输入设备、输出设备五大部件;存储程序、程序控制;指令和数据以二进制形式存放。
- 什么是指令周期、机器周期、时钟周期,三者的关系。要点:指令周期是一条指令从取指到执行完的时间,由若干机器周期组成;机器周期是CPU访问一次主存或完成一次独立操作的时间,由若干时钟周期组成。
- 比较Cache写直达和写回两种写策略。要点:写直达同时更新Cache和主存,实现简单、能保证主存数据一致,但访存次数多;写回只更新Cache,替换时再写回主存,速度快但可能造成主存数据过时。
- 微指令和机器指令的区别。要点:机器指令是程序员能看到的最小单位,是软件和硬件的接口;微指令是硬件级控制信号,一条机器指令的执行需要若干微指令完成。
- 中断方式为什么比程序查询方式效率高。要点:查询方式CPU全程等待外设,中断方式外设准备期间CPU可以执行其他程序,只在需要时被请求。
- 简述DMA的传送过程。要点:预处理、数据传送、后处理三个阶段,展开即可。
- 什么是局部性原理,它在Cache和虚存中分别怎么体现。要点:时间局部性和空间局部性,Cache利用程序短时间内重复访问同一数据的特征,虚存利用程序访问地址集中在某一区域的特征。
- 什么是RISC和CISC,各自特点。要点:RISC指令数量少、格式规整、用流水线执行效率高;CISC指令复杂丰富、格式多样、编译压榨空间大。
- 总线是什么,按功能分成哪几类。要点:数据总线、地址总线、控制总线,分别讨论方向和位宽。
- 水平型微指令和垂直型微指令的区别。要点见上一节。
6.2 计算题防错清单:这几个坑每年都有人踩
- IEEE754的偏置量加错。单精度127,双精度1023,转回去的时候记得减。
- Cache块内偏移位数写成块大小,而不是log2块大小。块大小32B对应5位偏移。
- 组相联映射的组号错算成Cache行数或路数。组数 = Cache行数 / 路数,组号位数是log2组数,不是log2行数。
- 主存芯片扩展题目先位扩展再字扩展。先统一数据位宽,再做容量扩展,这个顺序错了,片选信号和地址译码的连线全乱。
- 补码的范围写错边界。n位补码最小是-2^(n-1),最大是2^(n-1)-1。
- 流水线总时间公式里的项数搞混。k段流水线执行n条指令,总时间 = Δt × (k + n - 1),不是k × n。
- DMA三种传送方式名字和场景对应错。CPU停止访存方式适合高速外设短批量传输,周期挪用适合慢速外设频繁小批量传输,交替访存适合CPU和外设几乎同速的情况,背的时候结合场景理解。
6.3 考前一晚的复习节奏
我自己的经验是把考前一晚分为三段:第一段时间把第六章的问答清单快速过一遍,每道题只默写关键词,不要逐字背,考试时按关键词扩充即可;第二段时间把计算类小模板重做一遍,重点是Cache映射、芯片扩展、流水线时间三条线,只做典型例题不求多;第三段时间翻之前作业和试卷里的错题,尤其关注红笔标过的计算错误。
考场上如果遇到没见过的问答题,也别慌。先想这道题对应的是三个循环里的哪一个,然后从“是什么、为什么这么做、有什么优缺点、怎么改进”这个框架展开,能写多少写多少。计算机组成原理的阅卷是按要点给分,你只要把相关术语和关系链条写出来,即使没有命中标准答案,也能拿到可观的过程分。
最后再分享一个小技巧,这门课的实验环节一定要认真对待。我看过太多同学平时实验全靠抄,期末复习时就非常吃亏。实际上教学用的模拟器(比如那些单周期CPU或微程序控制实验软件)你只要亲手点着跑过一遍指令,数据通路和微命令的记忆就会牢牢刻在脑子里。如果考前实在来不及重做实验,就把实验指导书上的连线图和流程图翻出来,对着图把关键信号的流向过一遍——这比死背课本文字管用得多。