ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

计算机组成原理期末复习:核心模块与高频公式速通

计算机组成原理期末复习:核心模块与高频公式速通 期末复习计算机组成原理最痛苦的是什么不是概念记不住而是公式和概念全混在一起明明背了原码反码补码一做到Cache计算题还是不知道先除谁再乘谁。这篇笔记把整个课程拆成几个能打的大模块把要背的公式、要理解的原理、要避开的坑全部串起来照着过一遍应付考试足够了。1. 这门课到底在讲什么先搭骨架再填肉开始背公式之前得先搞清楚计算机组成原理这门课的主线。它讲的就是一台计算机的硬件系统由哪些部分组成这些部分怎么协同工作以及数据在这台机器里是怎么被表示、怎么被运算、怎么被存储、怎么被传输的。说白了就是回答“计算机是怎么跑起来的”这个问题。整门课的知识体系大致可以分成六块数据表示与运算数字在机器里长什么样加减乘除怎么实现。存储系统数据放在哪里怎么放才能又大又快又便宜。指令系统人给计算机下的命令长什么样有哪些种类。中央处理器CPU指令是怎么被执行的控制器和运算器怎么配合。总线系统各个部件之间怎么通信带宽够不够。输入输出I/O系统外部设备怎么和主机交换数据。考试里的计算题绝大多数集中在第一块、第二块和第五块也就是数据运算、存储容量/命中率、总线带宽。指令系统和CPU部分则更偏重原理理解与流程描述。所以复习的时候要有侧重先把高频计算题的套路摸透再背概念性知识。下面逐个模块拆解。2. 数据的机器表示与运算最容易拿分也最容易丢分的模块这个模块是计算机组成原理的地基也是期末考试的必考大题区域。看似简单但细节极其容易出错尤其是补码的运算规则、溢出判断和浮点数的规格化。2.1 原码、反码、补码、移码四兄弟的关系要门清这四种码是数据表示的基础。考试不会只让你背定义而是会给你一个真值让你写出各种码或者让你判断某个编码对应的真值是多少。先梳理一下它们的规则。假设字长为n位含一位符号位码制正数负数特点原码符号位为0数值位为绝对值符号位为1数值位为绝对值0有两种表示加减法复杂反码同原码符号位为1数值位按位取反0有两种表示是补码的过渡补码同原码反码加1最低位加10唯一表示减法变加法最常用移码补码符号位取反补码符号位取反用于浮点数阶码方便比较大小这里要注意很多同学背了公式“负数补码 反码 1”但遇到题目要求由补码求真值时还是容易卡住。这里给一个不容易忘记的方法符号位不变数值位按位取反末位加1。无论是真值转补码还是补码转真值这个过程都是互逆的来回操作两次就回原样了。数值范围也是高频考点。对于n位定点整数补码的表示范围是 -2^(n-1) 到 2^(n-1)-1原码和反码的范围则是 -(2^(n-1)-1) 到 2^(n-1)-1。为什么补码能多表示一个负数因为补码的0只有一种表示省出来的编码给了最小负数。这个点问答题也常考要记住。2.2 补码加减法与溢出判断这是计算题的硬骨头补码加法的规则一句话按二进制加法正常相加符号位参与运算结果仍是补码。减法统一变成加法[x-y]补 [x]补 [-y]补。把减法变加法的关键在于求[-y]补也就是把[y]补连同符号位一起取反加1。加法本身不难难的是溢出判断。两个正数相加得到负数或者两个负数相加得到正数肯定是溢出了这种结果用常识就能判断。但考试要求掌握更严谨的判断方法常用的有三种双符号位法变形补码用两个符号位表示00表示正数11表示负数。运算结果的两个符号位不一致说明溢出了。01表示正溢出10表示负溢出。最终结果的符号位仍以第一个符号位为准但溢出后结果已经不正确了。单符号位配合数据位进位判断最高数值位向符号位的进位C1与符号位产生的进位C0不同则溢出。即C0⊕C1 1时溢出。符号位与最高数值位进位不同判断本质上这两种方法是一样的一个从数据位看一个从符号位看。这里有个很典型的坑期末考试给一个十进制算式让你写双符号位的运算过程。很多同学会直接把两个符号位当成两个独立的位参与运算结果算错了。正确做法是先写出补码再在符号位前面复制一位符号位然后按三位的规则做加法。算完后看最前面两位是否一致不一致就说明溢出。2.3 浮点数表示与IEEE 754标准背下套路计算题稳拿浮点数的通用表示是 N M × R^E其中M是尾数E是阶码R是基数通常为2。阶码用移码表示大小尾数用补码或原码表示数值精度。考试里的浮点数计算题通常分这么几步对阶小阶向大阶看齐阶码小的尾数右移每右移一位阶码加1。尾数求和/求差用补码做加减。规格化尾数如果溢出或不符合规格化形式需要左规或右规。左规是尾数左移一位阶码减1右规是尾数右移一位阶码加1。舍入处理常考就近舍入和恒置1法。溢出判断阶码溢出才是真溢出。IEEE 754标准是另一个必考考点。短实数单精度float占32位1位符号位8位阶码23位尾数长实数双精度double占64位1位符号位11位阶码52位尾数。这里要特别强调IEEE 754的阶码是“偏置值”编码。单精度偏置值是127双精度偏置值是1023。实际存储的阶码 真值阶码 偏置值。同时IEEE 754的尾数有一个隐藏位规格化数的尾数最高位总是1这个1不存储默认存在所以23位尾数实际能表示24位精度。考题常见形式把十进制小数转成单精度浮点数存储格式或者反过来。套路固定整数部分除2取余小数部分乘2取整然后规格化再算阶码真值阶码 127最后拼二进制位。这个过程只要练两道题就熟了。2.4 定点乘法与除法了解原理即可不必死磕期末考一般不会让你手算补码一位乘法全过程因为计算量太大。但需要理解一个关键概念乘法运算的本质是“累加移位”除法运算的本质是“比较减法移位”。常见的考法是问答题比如“简述补码一位乘法Booth算法的运算规则”或者给一个简单的不带符号乘法让你列出部分积移位的过程。复习这部分时建议把重点放在理解“为什么需要移位”上不用花太多时间在复杂算例上。3. 存储系统用公式打通主存、Cache和虚拟存储存储系统是计算机组成原理的另一个重头戏计算题密度很高。这部分公式多但逻辑很清晰只要理解了存储器层次结构公式根本不用死记。3.1 主存容量计算与芯片扩展先算地址线再算数据线主存这块的题本质是“已知容量求地址线和数据线”或者反过来。核心换算关系1B字节 8bit位主存容量常用单位KB、MB、GBn根地址线可寻址 2^n 个存储单元有的同学做到这类题就卡住是因为没有先统一单位。比如题目说“某计算机主存容量为64KB按字节编址”那地址线根数就是 log2(64 × 1024) 16根。如果题目说“按字编址字长16位”那要考虑的字数就变了容量要先除以2因为2字节一个字再算地址线。芯片扩展计算也是高频题。给你一片SRAM芯片比如16K×8位要组成64K×16位的主存需要多少片答案是(64K/16K) × (16/8) 4 × 2 8片。字扩展让地址范围变大位扩展让数据宽度变大两种方式往往同时使用。这类题还常配合“片选信号”的译码逻辑一起考比如问某个芯片的地址范围是多少这时候要画存储芯片连接图分析地址线的分配。3.2 Cache平均访问时间一个公式吃遍所有题型Cache是存储系统里最核心的计算内容。核心公式有三个命中率 H 命中次数 / 总访问次数平均访问时间 T H × Tc (1 - H) × TmTc是Cache访问时间Tm是主存访问时间访问效率 e Tc / T考试更喜欢考另一个变种如果Cache未命中时需要先把主存数据调入Cache再访问那么平均访问时间公式变成T H × Tc (1 - H) × (Tc Tm)这两种公式的区别在于第一种假设未命中时直接访问主存第二种假设未命中时数据要先调入Cache再访问多了一次Cache访问。做题时一定要看题目描述别直接套公式。这是最容易失分的地方。举个典型例子设Cache访问时间为10ns主存访问时间为100ns命中率为95%未命中时先访问主存并调入Cache求平均访问时间。按第二种公式计算T 0.95 × 10 0.05 × (10 100) 9.5 5.5 15ns。3.3 Cache地址映射三种方式的比较和计算Cache的地址映射有三种方式直接映射、全相联映射、组相联映射。直接映射主存块号对Cache块数取模一个主存块只能进Cache中固定的一行。硬件简单但冲突率高。全相联映射主存块可以放入Cache任意一行冲突率最低但需要并行比较所有行硬件成本高。组相联映射折中方案将Cache分成若干组主存块按组号映射组内可以任意放。考试常考的是“给定地址位数计算Tag标记位数、Cache行号位数、块内地址位数”。这类题记住一个公式链就行主存地址 标记Tag Cache行号/组号 块内地址如果是直接映射主存地址位数减去块内地址位数再减去Cache行号位数剩下的就是标记位数。如果题目给了主存容量、Cache容量、块大小那就先把存储单元数量算出来再对一下位数。举个例子主存容量1MBCache容量16KB块大小512B按字节编址采用直接映射。则块内地址为log2(512) 9位Cache共有16KB / 512B 32行行号需5位主存地址共log2(1MB) 20位所以Tag 20 - 9 - 5 6位。3.4 虚拟存储与页面置换重点在页式管理和命中率虚拟存储考试一般考页式管理。逻辑地址空间分成大小相等的页物理地址空间分成同样大小的页框通过页表建立映射。页面大小通常为4KB这个数字很常见很多计算题都以此为基础。页式管理的计算题套路逻辑地址 页号 页内偏移量。给定逻辑地址和页面大小先算出页号和偏移量再查页表得到物理页框号最后拼出物理地址物理地址 页框号 × 页面大小 页内偏移量。这里要特别注意页内偏移量占的位数 log2(页面大小)。比如页面大小4KB偏移量占12位剩下的高位数是页号。很多同学算到物理地址时直接把页框号和偏移量做十进制加法这是错的。物理地址要按二进制拼接把页框号写在偏移量的高位部分。页面置换算法的题目比如最优置换OPT、先进先出FIFO、最近最少使用LRU一般以问答题或分析题形式出现要求模拟置换过程并计算缺页率。这部分的难点在于不能心算必须画表格一步一步模拟。宁可多花几分钟画表也不要跳步跳步几乎必错。4. 指令系统与CPU把“怎么执行一条指令”串成一条线指令系统和CPU部分不常出大计算题但问答题和大题里一定会出现。复习思路应该是先理解指令的执行过程再掌握各个部件的功能。4.1 指令格式与寻址方式即时、直接、间接、变址、基址指令一般由操作码和地址码组成。寻址方式决定如何从地址码得到操作数的真实地址。期末最爱考的是各种寻址方式的“有效地址”怎么算。把常见寻址方式总结一下寻址方式有效地址优点/缺点立即寻址操作数直接在指令中快但操作数长度受限直接寻址EA A指令中给出形式地址简单但A的位数有限间接寻址EA (A)取A中的内容作为地址可寻址范围大但要多次访存寄存器寻址操作数在寄存器中快无需访存寄存器间接寻址EA (Ri)访存一次变址寻址EA A (IX)适合数组遍历基址寻址EA A (BR)适合程序重定位相对寻址EA (PC) A适合分支跳转变址和基址很容易混。记住一句话变址寻址的变址寄存器内容由用户指定常用于数组循环访问偏移量A固定寄存器变基址寻址的基址寄存器内容由操作系统管理用于程序浮动地址A可变基址寄存器不变。这个区别问答题直接考原话的情况很多。4.2 CPU的组成与指令周期取指、间址、执行、中断CPU由运算器和控制器组成。运算器的核心是ALU控制器的核心是CU、程序计数器PC、指令寄存器IR、指令译码器ID。指令周期分为四个阶段取指周期PC中的地址送MAR访存取出指令送IRPC自动加1。间址周期如果指令是间接寻址取操作数地址。执行周期由CU发出控制信号执行指令规定的操作。中断周期处理中断请求保存断点通常将PC压栈。考试问答题常问“PC、IR、MAR、MDR各有什么作用”“一条指令的执行过程描述一下”这些属于送分题但不能只答一句话要写清楚一条指令从取指到执行完毕的完整流程。4.3 数据通路与微操作序列别死记理解控制信号的时序数据通路分析题是期末考试的大题之一常见形式是给了CPU的数据通路图让你写出执行某个指令比如ADD R1, R2或STA M的微操作序列及控制信号。这类题的通用解法从取指周期开始跟着数据的流向一步步写。PC送MAR - 访存 - 读出的指令送MDR - MDR送IR - 译码然后根据操作数的来源一步一步把数据从寄存器或内存送到ALU计算最后把结果写回。每一步都对应一个控制信号。复习建议不用把每道题的控制信号都背下来但要理解每个部件之间传送数据时的路径选择。比如“PC内容送MAR”这个动作控制信号就是PCout和MARin接通。理解了总线的结构控制信号自然就顺理成章了。4.4 微程序控制器 vs 硬布线控制器对比记忆这个知识点基本以简答题形式出现。核心对比角度硬布线控制器用组合逻辑电路产生控制信号速度快但设计复杂不易修改。微程序控制器把控制信号编码成微指令存到控制存储器ROM中灵活性强支持复杂指令集但速度慢。另外还有一个计算点微指令的格式设计。给出控制字段位数、下地址字段位数、判别测试字段位数求微指令字长。这本质是位数的加法问题只要理解每条微指令由控制字段 判别字段 下地址字段组成就不会错。5. 总线与I/O控制计算题高频区三个公式必须烂熟总线部分虽然章节不长但计算题密度很高而且和前面内容相对独立适合突击拿分。I/O部分则以问答题为主重点在三种控制方式的对比。5.1 总线带宽和传输周期分清频率和周期总线的核心公式就一个总线带宽 总线宽度字节 × 总线频率Hz如果题目给的是总线时钟周期要先换算成频率频率 1 / 周期。如果题目说“每秒传输多少次”那频率就是次数本身。看一个典型例题某总线时钟频率为66MHz总线宽度为64位每两个时钟周期传输一次数据。总线带宽是多少先看“每两个时钟周期传输一次”说明有效频率是33MHz虽然时钟还是66MHz但传输频率减半。带宽 (64/8)字节 × 33MHz 8字节 × 33 × 10^6 264MB/s。这种“几个时钟周期传输一次”的表述是典型的易错点稍不留神就直接用66MHz算了算出来的结果翻倍。考试看到这类信息一定要先处理“有效传输频率”。5.2 I/O三种控制方式查询、中断、DMA的对比I/O控制方式有四种程序直接控制、程序中断、DMA、通道期末常考的是前三种。程序查询方式CPU不断检测I/O设备状态效率低CPU和I/O串行工作。程序中断方式设备准备好后向CPU发中断请求CPU响应后暂停当前程序转去执行中断服务程序效率较高。DMA方式由DMA控制器直接控制数据在内存和外设间传输传输过程中CPU不干预仅在传输前设置参数、传输结束后处理中断效率最高。问答题常考“DMA方式为什么不需要CPU干预数据传输”答DMA控制器内部有地址寄存器、计数器、状态寄存器能够自己生成地址并控制传输字节数只有当整块数据传送完毕后才向CPU发出中断请求。DMA的一个计算题考点是“DMA方式下若传输速率为X字节/秒每个数据块大小为Y字节则CPU响应一次DMA请求的时间间隔是多少”本质上就是用字节数除以速率得到每块数据的传输时间。5.3 中断处理流程与优先级分清“中断响应”和“中断处理”中断部分的问答题问法非常固定“CPU响应中断的条件是什么”“简述一次中断处理的过程。”答这类题脑子里要有清晰的时间线中断请求设备提出请求。中断判优多个中断同时到达时按优先级排队。硬件判优速度快链式判优软件判优灵活查询程序。中断响应CPU在每条指令执行结束后检查中断请求若满足条件有中断请求、CPU允许中断、指令执行完则关中断、保存断点、找到中断服务程序入口。中断服务保护现场 - 执行中断处理 - 恢复现场。中断返回开中断返回断点继续执行原程序。这里的核心逻辑是“保存断点由硬件自动完成”而“保护现场”是由中断服务程序用指令完成的。问答题如果把这个顺序写对基本能拿满分。6. 校验码奇偶校验、海明码、CRC的速记技巧校验码这块期末计算题通常考三种奇偶校验码、海明码、CRC循环冗余码。其中海明码和CRC是计算题的固定考点。6.1 奇偶校验简单但有个容易踩的坑奇偶校验的规则很简单在信息位前面或后面加一位校验位让整个码字中1的个数为奇数奇校验或偶数偶校验。注意奇偶校验只能检测奇数位错误不能检测偶数位错误更不能定位错误。问答题常问“为什么奇偶校验无法检测偶数位错误”因为偶数位错误不改变1的个数的奇偶性。6.2 海明码会分组就不怕海明码能检测并纠正一位错。计算题常见的考法是给定信息位个数k问至少需要多少校验位r或者给一段完整海明码指出错误位。核心公式2^r k r 1这个不等式是前提——校验位r需要满足这个条件才能纠正k位信息位的一位错。比如k8试r4时16 13满足所以需要4个校验位。另一个容易考的题是“接收端收到某个海明码如何定位出错位”复习时把教科书上的分组方法用一遍就懂了将所有位按位置编号第i个校验位放在2^(i-1)的位置上如第1、2、4、8位校验位P1负责所有二进制编号最低位为1的位P2负责二进制编号次低位为1的位P3负责第三位为1的位……检验时把每组求异或结果组成一个二进制数这个数就是出错的位号。这个计算过程当年我也是练了三道题才彻底记住建议至少画一遍分组表。6.3 CRC循环冗余码模2除法是核心CRC的计算过程是在信息位后面补r个0r等于生成多项式的最高次数然后模2除以生成多项式对应的位串得到的余数就是CRC校验位。模2除法就是按位异或没有借位和进位。考试step by step是确定生成多项式G(x)比如G(x) x^3 x 1对应二进制1011。信息位后面补3个0因为最高次数是3。用补0后的位串除以1011按模2除法求余数。余数就是校验码接到信息位后面得到发送码字。接收端用同样的生成多项式去除收到的码字余数为0说明无误。这个题型的关键是模2除法过程中每一步都只看最高位如果最高位是1就商1然后异或如果最高位是0就商0直接下移不要纠结十进制借位。多练两遍就熟了期末必考一道题。7. 期末冲刺高频公式速查与复习路线建议最后把整门课最常考的公式浓缩成一份速查清单考前只看这一页就能安心公式/知识点说明n位补码定点整数范围-2^(n-1) ~ 2^(n-1)-1补码溢出判断双符号位结果符号位为01正溢出10负溢出IEEE 754单精度1 8 23偏置值127主存容量 字数 × 字长注意字长要除以8得到字节数地址线根数 n2^n 存储单元数Cache平均访问时间T H × Tc (1-H) × (TcTm)有效地址变址EA 指令地址码 变址寄存器内容总线带宽(总线宽度/8) × 有效传输频率海明码校验位2^r k r 1CRC校验补0 - 模2除法求余 - 拼接复习路线的建议是这样的第一轮考前两周把各章节的概念题过一遍重点做近三年的期末真题把每种计算题的套路都练熟。第二轮考前三天只看速查表和错题本针对薄弱部分翻教材重看。第三轮考前一晚把重要的问答题答案在纸上默写一遍不用全背写关键词就行。一个亲身经验计算机组成原理的题目尤其是计算题最大的坑不在“不会公式”而在“用错公式”。比如Cache平均访问时间不同题目给的访存条件不一样公式就不同总线带宽题给的是时钟周期还是传输周期处理方式也不同。做题时把题目中的已知条件先在草稿纸上列出来再对应公式能减少至少一半的低级错误。最后再分享一点复习心态。这门课的知识点彼此关联挺强前面数据的表示没学好后面浮点数、存储器的计算都会受影响。所以如果还有时间优先把第二章补码、第三章Cache、第七章总线这三块弄扎实这是拿分的主力。做到这一步期末拿个中上成绩完全有可能。
返回列表