
简介一份计算机组成原理期末复习配套资料以PDF文档形式呈现面向计算机及相关专业本科生、考研备考者用于系统梳理指令系统、存储系统、总线与I/O、中断与DMA等核心考点并借助完整试题与答案解析进行考前自测。包体方面压缩包内仅含1个PDF文件大小约1.11MB内容精炼集中便于打印或按章节查阅。该文档由选择题、填空题、名词解释等题型构成覆盖定点数与浮点数表示、寻址方式、微程序控制器、总线结构、中断响应等高频考点且每道题均附参考答案或简要解析有助于快速定位薄弱环节。目前这份资源已有2134人学习/下载历届考生反馈其对期末考试和考研复习均具较高参考价值适合考前一周集中刷题与查漏补缺。1. 期末复习为什么需要死磕一份真题卷很多学计算机的同学一提到《计算机组成原理》就头皮发麻——这门课不像高数、线代那样纯靠刷题就能过关它是计算机系统里最“硬核”的一门课讲的是CPU怎么取指令、运算器怎么算加法、存储器怎么分层、控制器怎么产生微操作命令。你光会背概念还不够还得能算、能画、能设计。我前前后后带过几届学生的期末复习最大的感受就是不少人把教材翻了三四遍笔记抄了一整本结果一到考场上看到“给出一个8位补码计算它的真值范围”“给定CPI和时钟频率求CPU执行时间”这类题还是懵。为什么因为复习的方向偏了——光看书不做题永远不知道自己哪里没懂光做题不研究真题永远不知道这门课的老师喜欢怎么出题。这就是我今天想聊的核心思路拿一套《计算机组成原理期末考试试题及答案》来拆解不光是给你对答案而是把每个题背后的考点、解题套路、常见丢分点全摊开来讲清楚。这套复习方法论适合正在准备期末考试的本科生也适合准备考研408的同学用来查漏补缺——甚至对马上要做课程设计的同学也有参考价值因为很多设计题本身就是从期末考试的大题演化来的。我先说一个经验刷试卷不要一份一份地“做完对答案”那样效率太低了。我的习惯是把试卷按题型拆开横向对比不同年份里同一个知识点的出题方式比如“补码加减法”几乎年年考但有时考计算、有时考溢出判断、有时考电路实现你只有横向看了才知道这个点需要学到什么深度。这一篇我就拿一套比较典型的期末试卷做样本带你把每个模块的考点和解题方法彻底过一遍。2. 试卷整体结构与章节分值分布先说这份试卷长什么样。计算机组成原理期末试卷的题型结构高度统一一般由五类题构成选择题约20分、填空题约10分、计算题约30分、综合分析题约25分、设计题约15分。别小看这个分布它直接决定了你的复习时间该怎么分配。2.1 各章节分值占比与复习优先级从多份期末试卷统计下来的情况看章节分值占比大概是这样一个格局数据的表示与运算约25%——补码、原码、反码、移码加减乘除运算溢出判断IEEE 754浮点数。这是全卷的“计算担当”几乎每次都会出2到3道大题。存储系统约20%——Cache工作原理直接映射、组相联、全相联主存扩展字位同时扩展虚拟存储器。Cache的命中率计算和主存扩展连接图是高频大题。中央处理器CPU约20%——数据通路、微程序控制器、硬布线控制器、指令周期、流水线。这里最容易出综合分析题尤其是“给定指令集画出指令周期流程图”。指令系统约15%——寻址方式立即、直接、间接、寄存器、变址、基址、指令格式设计。常见考法是根据给定的地址位数和操作数个数设计指令格式。总线与I/O系统约15%——总线仲裁方式、DMA三种传送方式、程序查询方式与中断方式的区别。这部分相对好拿分以概念题和简单计算为主。其余杂项约5%——计算机系统概述、性能指标CPI、MIPS、执行时间等通常出现在选择和填空题里。2.2 从试卷倒推老师的出题思路看这套试卷还有个直接的好处你能从题量分配上倒推出老师的出题思路。比如有的学校特别重视运算器内容那么试卷里“补码一位乘法”“原码两位除法”这类题就可能占两道有的学校更偏重CPU设计那么数据通路图、微指令编码就是压轴大题。我建议复习动作拆成三步第一步把这套试卷从头到尾做一遍掐时间模拟考试状态第二步每道错题回到教材对应章节把概念补牢第三步把本套试卷的题型和往年其他试卷做横向对比标出反复出现的高频考点。这套流程下来你对这门课的整体把握会比闷头看书好太多。3. 选择题与填空题高频概念点的出题陷阱选择题和填空题虽然单题分值不高但胜在数量多加起来能有30到40分是及格与高分的分水岭。我观察到一个挺有意思的现象很多学生做大题很猛反而在选择题上丢分严重——因为选择题考的都是“易混淆概念”你感觉自己知道实际上一选就错。3.1 必考的10个核心概念对比我整理了从这套试卷里提取出的10个高频概念考点直接做成一张对照表复习的时候建议反复看几遍易混淆概念组关键区别常见出题方式原码 vs 补码补码的0唯一原码的0有正负之分给出真值让选出正确的补码表示指令周期 vs 机器周期 vs 时钟周期指令周期由若干机器周期组成机器周期由若干时钟周期组成判断包含关系程序查询 vs 中断 vs DMA程序查询CPU全程参与中断由外设主动请求DMA由硬件直接控制数据传输描述场景让选传送方式立即寻址 vs 寄存器寻址立即数在指令中寄存器操作数在寄存器中给出指令判断操作数来源直接映射 vs 组相联映射 vs 全相联映射Cache中一块能放的位置数量不同1个、1组、任意计算Cache容量或比较命中率静态RAM vs 动态RAM静态靠触发器存储动态靠电容存储需刷新区分特性判断RISC vs CISC指令条数、寻址方式数、指令长度是否固定概念判断总线仲裁集中式 vs 分布式集中式有中心仲裁器分布式各设备自己判断判段仲裁方式微程序 vs 硬布线微程序存储控制信号硬布线用逻辑电路比较控制器实现方式时间并行 vs 空间并行流水线是时间并行多操作部件是空间并行判断并行类型3.2 填空题里最容易丢分的细节填空题一般来说不会绕弯子但专挑书上的细节表述。比如“一个8位二进制补码能表示的最小负数是____”很多同学直接写“-127”忽略了补码比原码多表示一个-128。再比如“Cache的写策略分为写直达write through和____”很多人记不住“写回write back”这个术语。我的建议是填空题靠平时看书时随手划重点积累不要专门背——但高频术语的中英文对照得熟练比如“程序计数器PC”“指令寄存器IR”“存储程序控制”这些概念既可能出选择也可能出填空。用这套试卷做个测试填空题能拿满分的基础不会差到哪里去。4. 计算题专项突破数据表示、运算器与Cache命中率计算题是整张试卷的大头也是最能拉开差距的部分。我把试卷里出现过的计算题归成三类来拆解数值运算类、性能计算类、Cache类。每一类都有固定的解题套路套路掌握了换个数字也跑不掉。4.1 补码加减法与溢出判断的完整计算过程这一块几乎每一份试卷都会出。典型考法是这样的“已知x和y用补码计算xy并判断是否溢出。”看起来简单但步骤必须写全阅卷一般是按步骤给分的。我来演示一道典型题题目设x -5y 3用5位补码计算xy判断是否溢出。第一步写出x和y的5位补码。正数3的补码直接就是0011B补足5位为00011B。负数-5的补码求法是先写5的原码00101按位取反得11010末位加1得11011。第二步补码相加11011 00011 11110注意最高位的进位1直接丢弃结果是11110。第三步把结果转回真值。11110是补码符号位为1说明是负数按位取反加1得到原码00010真值为-2。验算一下-53-2结果正确。第四步判断溢出。这里有个特别实用的双符号位法或者进位法用双符号位时运算结果的两个符号位为11或00表示无溢出为01表示正溢出为10表示负溢出。本题两个符号位都是1所以无溢出。实际阅卷中我见过不少同学在第三步出错——补码转真值的时候忘记负数的逆运算要做“取反加一”。我的习惯做法是做完后一定用“十进制心算”交叉验证一遍结果这一步只要习惯了基本能杜绝低级错误。4.2 浮点数IEEE 754表示选择题必考、计算题可能有IEEE 754标准的32位单精度格式是另一个高频计算考点。它的位分配是最高1位符号位接下来8位阶码用偏置值127的移码表示最后23位尾数隐藏位1规格化数尾数范围为1.0到2.0之间。试卷上常考两种题一种给你一个十进制数要求写出它的32位IEEE 754表示另一种反过来给你一段二进制序列让你还原出十进制数。解题关键就是记住格式然后按部就班操作。我举个简单例子把十进制数-6.5转成IEEE 754单精度符号位负数为1。 绝对值6.5转二进制为110.16 110B0.5 0.1B规格化后为1.101 × 2²小数点左移2位。 阶码 指数2 偏置127 129 10000001B。 尾数部分取规格化后小数点后的“101”低位补0填满23位。 拼起来就是1 10000001 10100000000000000000000。考试时我建议把步骤分步骤写出来不要直接写最终的一串二进制——即使最终拼接出错前面几步骤和阶码计算正确也能拿到大半分数。4.3 CPU性能计算CPI、MIPS、执行时间这种题属于送分题但有些同学容易把公式记混。核心公式就三个CPU执行时间 指令条数 × CPI × 时钟周期TclkCPI 各类指令占比乘其各自时钟周期数之和MIPS 时钟频率MHz/ CPI注意这里的单位换算典型考法是给一段程序的指令组成比例比如算术运算指令占40%每条2个时钟周期LOAD/STORE指令占30%每条3个时钟周期分支指令占20%每条4个时钟周期其余占10%每条5个时钟周期。然后求CPI。算一下0.4×2 0.3×3 0.2×4 0.1×5 0.8 0.9 0.8 0.5 3.0。若时钟频率为3GHz则MIPS 3000 ÷ 3 1000即每秒执行10亿条指令实际就是1GIPS。这类题没有陷阱但单位转换容易出错——MHz和Hz、us和ns之间转错一位结果差三个数量级。我的心得是列公式时把所有单位先统一成“秒和Hz”再代入数字。4.4 Cache命中率与平均访问时间计算Cache这块是存储章节的顶梁柱。题型通常是“某计算机Cache的访问时间是5ns主存的访问时间是60nsCache的命中率为95%求平均访问时间。”平均访问时间 命中率 × Cache访问时间 未命中率 × 主存访问时间有的题目还要叠加未命中时从Cache到CPU的传块时间看题目怎么定义。套入数字0.95 × 5 0.05 × 60 4.75 3 7.75ns。稍微进阶一点的考法是结合“块大小”让你计算Cache容量和标记位位数。比如主存地址32位Cache有64行每行4个字每个字32位采用直接映射求标记位位数。解题步骤每行字节数 4字 × 4字节 16字节所以块内地址占4位Cache行数为64所以索引字段占6位剩下的标记位 32 - 4 - 6 22位。这类题只要分清地址字段的三个组成部分标记 索引 块内偏移基本不会失分。5. 综合分析题与设计题数据通路、微程序、主存扩展到了大题的疆域情况就不一样了。综合分析题和设计题考的是你把整本书知识打通的能力往往一个题同时涉及指令系统、CPU结构、存储器三个章节的内容。5.1 指令周期流程图与数据通路的作答模板每份期末试卷几乎必有一道这样的题“某计算机的指令系统包含以下几种指令……请画出各指令的指令周期流程图并写出每一步需要的微操作命令。”这道题难倒很多人但其实是有固定解题路径的。我总结了一套通用模板。不管什么指令它的指令周期都分为取指阶段和执行阶段。取指阶段固定是三步PC → MAR → 主存M → MDR → IRPC 1。这三个微操作命令基本是默写的背熟即可。执行阶段就看具体指令类型了算术逻辑指令如ADD R1, R2先把操作数从寄存器读取到ALU输入端然后执行运算再把结果写回目标寄存器。微操作命令就是R1out, R2out, ALUadd, Rdestin。访存指令如LOAD R1, addr有效地址计算在取指后完成——把IR中的地址字段送到MAR再发读命令从主存取数据到MDR最后MDR → R1。分支指令如JMP addr把指令中的地址字段直接送到PC实现跳转——操作就是IR地址字段 → PC。我的实操经验是画流程图时用“菱形框表示判断、矩形框表示操作”每个框里写一个周期内的并行微操作。阅卷老师最关注的是取指阶段有没有画完整、分支条件有没有画判断菱形、访存指令有没有在“间址/执行”阶段多出一个访问主存的步骤。5.2 微程序控制器设计的核心思路拆分微程序控制器的大题通常分两种一种是给出一组机器指令让你设计微程序编排微指令顺序并编码另一种是给定微指令格式让你填控制字段。核心要理解一个思想——硬件控制信号如PCout、MARin、MemRead等就是微程序中的一个个微命令一条微指令可以同时发出多个相容的微命令。比如“取指”阶段的一条微指令可以同时包含PCout、MARin、MemRead、PC 1。原理是这些操作互不依赖可以在同一时钟周期内并行执行。而“MDR → IR”必须等存储器读出的数据稳定到MDR之后才能执行所以它必然是下一条微指令。考试时如果考“设计微程序”我建议先把每个机器周期需要哪些微命令列成表格一行一个微指令一列一个控制信号然后在需要的单元格打勾。这样结构清晰、不易遗漏阅卷也给分更快。这个习惯我在实际课程设计里也一直在用写控制信号表比直接凭空画状态机可靠得多。5.3 主存芯片扩展与地址分配的计算方法主存扩展是存储章节的另一道大题。一般考法用给定规格的SRAM/DRAM芯片组成一个XXKB的主存需要多少片芯片、如何连接地址线和数据线。这里有个万能公式和步骤第一步算总容量。比如要求组成128KB的存储器用16K×8位的芯片。芯片容量为16K×8位 131,072位 16KB。需要片数 128 ÷ 16 8片。第二步判断是字扩展还是位扩展还是字位同时扩展。本题若采用2片一组做位扩展8位变16位4组做字扩展16K变64K地址范围就是字位同时扩展。第三步画连接图。地址线低14位A0-A13直接连到所有芯片高位地址线A14A15经过译码器选择不同组。数据线在组内按位拼接。我踩过的坑是计算地址线根数时把位数和字节数搞混。记住一个口诀“地址线根数 存储单元数的对数值数据线根数 每个单元的位数。”128KB若按字节编址就是128K 2^17个单元地址线17根而数据线是8根。看题目是按字节编址还是按字编址这一点决定了整个计算起点。5.4 组间串行进位与并行进位的计算方法这个知识点近年来在多个学校的试卷里反复出现就是热词里提到的“计算机组成原理组间串行进位”。我详细讲一下。题目典型考法“一个32位ALU由4个8位CLA先行进位加法器组组成组间采用串行进位求总的进位延迟时间。已知单个CLA内部进位生成逻辑的延迟是10ns组间进位传递的延迟是5ns。”思路拆解组间串行意味着第二个组必须等第一个组的进位输出才能开始自己的进位运算。所以总延迟 第一个组内部计算时间 各组之间传递时间 ×3组 最后一个组内部计算时间。代入总延迟 10 3 × 5 10 35ns。注意这里为什么最后又加了一次10——因为即使第4组的进位输入到了它仍需要完成自己内部的求和运算才能输出最终结果。很多同学漏算这最后一次内部延迟这就是丢分点。如果想进一步降低延迟可以采用组间并行进位通过成组进位生成函数和成组进位传递函数来提前产生各组进位这就是“组间并行进位”的设计思想。考试如果问“如何改进”你就答“用组间并行进位把组间的进位信号也通过逻辑电路提前生成”再用一个公式把成组进位函数写出来基本满分。6. 常见问题与排查技巧实录期末冲刺的痛点清单这一节直接回答大家在复习和考试中遇到最多的问题都是我亲眼见过的高频错误和问得最多的问题整理成清单方便对照排查。6.1 为什么补码运算总是结果对但符号位判断错问的人特别多“我算出来的结果明明和答案一样但溢出判断老错。”这大概率出现在步骤规范上——你跳步了没有单独检查符号位。正确的做法是先写出两个加数的补码明确标注符号位最高位再进行相加相加后马上看符号位和最高数值位的进位。如果两个进位不同就是溢出。我还建议养成交叉检查的习惯用十进制心算一遍如果十进制结果超出表示范围那么必然溢出直接判定即可。这个方法简单粗暴但很有效考场时间有限的情况下特别实用。6.2 Cache平均访问时间为什么总做不对失分原因主要有两种一是公式记错二是没分清“访问Cache不命中后是否需要先访问主存再传块”。很多教材会给两个公式——一个是不考虑Cache失效开销的简化公式平均访问时间 命中率 × Cache时间 未命中率 × 主存时间另一个是更精确的公式还需加上块传输时间。考试题如果明确给出了“块大小为X字节主存带宽为Y字节/秒”那你必须把块传输时间加进去。如果没有给就用简化公式即可。6.3 数据通路大题如何快速判断一个微命令能不能并行我的判断口诀是“凡是读写不同部件、或写不同寄存器的命令大概率能并行凡是先读后写同一个寄存器、或一个命令要等另一个命令的结果必须串行。”比如PCout和MARin能并行因为一个读PC、一个写MAR但MDRout和IRin不能和MemRead并行因为必须先等存储器读出数据。考试时按这个口诀检查一遍能少丢好多分。6.4 主存扩展画图芯片选型错了怎么补救如果在考场发现芯片选型算错了别慌。有些学校的设计题是按步骤给分的芯片容量的计算、片数的计算、片选信号逻辑的设计三步各占分数。你顶多错在第一步后续第二步第三步只要思路正确依然能拿一部分分。最怕的是第一步错了就整个人放弃不写。哪怕你把容量算错成别的数后面片选逻辑和地址连接按你算的数来画也能拿到连贯性得分。7. 期末冲刺的黄金复习节奏我带的很多学生起先都有个共同问题——拿起试卷就开始做做完对答案发现错一堆然后继续做下一套好像做了很多题但正确率没有实质提升。问题出在缺少一个“错题归因”的环节。我的建议是这样安排复习节奏考前两周起每两天做一套卷子做完当天必须把错题按知识点归入一页Excel或者笔记里标记“概念理解错误”“计算粗心”“公式记忆模糊”“完全不会”四类。每做完两套回看一次错题清单你会发现有些知识点反复出错那才是真正需要投入时间去补的短板。等到考前最后两天只复习错题清单和知识点总结不再做新题。这段时间心态和状态的稳定比多刷两套题更重要。至于“王道计算机组成原理笔记”之类的资料可以作为知识框架的补充但千万别只看笔记不刷真题——这门课的“手感”特别重要尤其是计算题几天不动手就会生疏。最后再分享一个小技巧打印试卷的时候把标准答案单独放一页别和题目同一页。这样每次做模拟卷的时候不会不小心瞟到答案模拟效果更真实。我试过之后自己刷题的专注度和准确率都明显提升这个细节也推荐给正在备考的同学。本文还有配套的精品资源点击获取