ARTICLE DETAIL

资讯详情

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

计算机组成原理期末复习:从补码到Cache,三天拿下核心考点

计算机组成原理期末复习:从补码到Cache,三天拿下核心考点 1. 先把这门课的“游戏规则”搞清楚每年期末前总有一批软件方向的同学在哀嚎“我一个写Java的为什么要考计算机组成原理”这个问题的答案其实就藏在你写的每一行代码里。你写int a 10CPU到底怎么把10存进内存你调一个函数压栈弹栈到底是谁在操作你new一个对象虚拟地址怎么变成物理地址这些底层机制全在计算机组成原理这门课里。先说清楚这不是一门靠死记硬背就能过的课。它的知识点密集、概念抽象、计算量大但好在考点非常固定。翻翻往年卷子你会发现来来去去就是数据表示与运算、存储层次、指令系统、CPU设计、总线与IO这几大块。我当年复习的时候第一件事不是拿书从头看而是先把整门课的知识结构画成一张网搞清楚每个模块之间的关系再逐个击破。适合谁来参考这篇复习攻略如果你是计算机、软件工程、人工智能相关专业的学生正在为期末发愁那这篇内容就是给你准备的。如果你已经工作了想回头补一下底层基础也可以按这套思路快速过一遍。我不会给你罗列“全部知识点”那会让你更焦虑。我只会告诉你哪些是高频考点哪些地方最容易丢分以及怎么用最短的时间拿到最多的分。注意不同学校的教材唐朔飞版、袁春风版、白中英版在章节顺序上略有差异但核心考点基本一致。我下面的复习框架按通用考点组织你可以对照自己的教材调整顺序。2. 核心知识点体系一张网捞起所有考点2.1 数据表示与运算补码、原码、反码、移码别混淆这是第一章的重点也是后面所有计算题的基础。很多同学在这里就倒下了因为四种码制绕来绕去容易晕。我建议你死记一个结论现代计算机里整数一律用补码表示和运算。为什么因为补码能把减法变成加法让符号位也参与运算硬件实现极简。复习的时候你需要熟练到以下程度给一个十进制数能快速写出它的原码、反码、补码、移码。正数的四种码一样负数的反码是原码除符号位取反补码是反码加1。这里有个最容易错的点补码的补码等于原码这句话可以用来验证结果对不对。补码的加减运算规则按二进制加法直接算符号位自然参与。如果最高位和符号位都有进位结果正确只有符号位进位则溢出。具体判断方法两个正数相加得到负数或两个负数相加得到正数就是溢出。补码的乘法用Booth算法加法用先行进位加法器这些概念题爱考。接下来是浮点数IEEE 754标准是必考的。单精度浮点数用1位符号位、8位阶码移码表示偏置值127、23位尾数规格化小数隐藏整数位1。你得会做两类题一是把十进制小数转成IEEE 754表示二是反过来解析。这两类题属于“只要动手练过就一定能拿分”的题型性价比极高。实操建议拿纸笔找5个十进制数正负整数、正负小数、0逐一转成32位IEEE 754格式再转回来验证。练完这5个考场上这类题基本不会失分。2.2 存储系统Cache的三种映射方式年年考存储部分的核心逻辑就一句话CPU太快内存太慢寄存器太贵所以要用Cache和虚拟存储来“骗”CPU让它以为内存很快、很大。你需要理解存储层次结构的思想也就是“局部性原理”包括时间局部性和空间局部性。Cache的三种映射方式必须烂熟于心映射方式直接映射全相联映射组相联映射主存块可放位置固定唯一任意位置固定组内任意位置地址结构标记块号块内地址标记块内地址标记组号块内地址查找速度最快最慢折中命中率最低最高较高实际使用少见少见最常见题目经常这样出给出Cache容量、主存容量、块大小让你算地址位数、标记位数或者让你分析某次访问是命中还是失效。这类题的高频考点是“组相联映射下主存地址的划分”。记住块内地址位数由块大小决定组号位数由Cache组数决定剩下的都是标记位。替换算法也是考点先进先出FIFO、最近最少用LRU、随机替换。LRU实现需要记录使用历史题目常考缺页次数、命中率计算。算命中率时记住先查Cache命中则直接读失效才去内存取然后装入Cache。画时间轴分析每一步的Cache状态不容易出错。2.3 指令系统与CPU数据通路是硬骨头啃下来就通了这一章是整门课的“珠穆朗玛峰”。核心概念包括指令周期取指、间址、执行、中断四个周期、指令流水线、数据通路设计。你得能看懂一个简单CPU的框图知道一条指令是怎么被取出来、译码、执行的。数据通路是很多人的噩梦。其实你可以把它理解成“数据从哪来到哪去中间经过哪些部件哪些部件在哪个时钟周期工作”。复习的时候拿一条具体的指令比如ADD R1, R2走一遍取指令时PC把地址送MAR存储器把指令经MDR送到IR译码后控制信号打开寄存器文件对应端口把R1、R2的值送ALUALU计算结果写回R1。把这条路径画下来贴上标签再换几条不同指令存数、取数、转移重复画。画过5条指令数据通路的题目基本能应付。流水线这一节里两个关键词是“冒泡”和“转发”。数据相关RAW、WAR、WAW要能区分其中RAW最容易理解下一条指令要用上一条的结果但结果还没写回寄存器。结构相关是硬件资源冲突控制相关是转移指令导致的。考试常考流水线中有几条相关指令插入几个气泡可以解决或者用转发技术能否完全解决。做题时记住转发可以解决ALU结果直接给下条ALU用的RAW解决不了“先写后读”中由Load指令引起的因为数据要等访存结束才拿到。2.4 总线与外设概念题拿分区性价比超高这部分内容少、规律强、容易拿分建议放在复习中后期快速过。总线的核心问题是“谁控制、怎么仲裁、怎么传输”。集中式仲裁三种方式链式查询、计数器定时查询、独立请求。你要能画出链式查询的示意图知道优先级固定、对电路故障敏感这些特点。同步通信和异步通信的区别也要清楚同步通信用公共时钟速度快但可靠性差异步通信靠握手信号可靠但慢。USB用的就是异步串行通信。DMA直接存储器访问是外设和内存之间直接传数据、不经过CPU的机制复习时要分清程序查询方式、中断方式、DMA方式的CPU参与程度程序查询级最笨CPU全程等待中断方式每次传一个数据要CPU介入DMA只在开始和结束打扰CPU一批数据直接飞过去。考试里这部分经常出选择和填空送分性质明显不要在这里丢分。3. 实操复习法三天抢救计划按天拆解3.1 第1天数据表示 存储系统 指令系统三座大山集中攻上午花3小时搞定数据表示的所有计算题类型。先默写一遍原码、反码、补码转换规则做20道整数转换题再练10道IEEE 754浮点数题。错误率控制在10%以内算过关。下午3小时扑在存储系统上。做5道Cache计算题和5道虚拟存储缺页题。步骤如下对于Cache题先判断映射方式然后画出地址结构标记|组号/块号|块内地址。计算各字段位数块内地址位数log2(块大小字节数)组号位数log2(组数)标记位数地址总位数减去前两者。按地址序列一步步更新Cache状态记录命中/失效。晚上2小时通读指令系统重点理解寻址方式立即、直接、间接、寄存器、变址每种寻址方式记住“操作数在哪”和“指令中放的是什么”。紧接着画数据通路图先从取指周期开始。睡前花30分钟合上书默写三种映射方式的关键特点和公式。3.2 第2天CPU 流水线 控制器攻克最大难点上午先解决数据通路。找3条不同类型的指令寄存器-寄存器运算、寄存器-存储器运算、无条件转移完整写出它们在取指和执行各阶段的数据流动路径。下午攻流水线。重点练三类题计算流水线吞吐率和加速比、分析指令间的数据相关、画出流水线时空图。公式要记牢流水线吞吐率 任务数 / 总耗时。k级流水线完成n个任务的理想耗时 (k n - 1) × 时钟周期。加速比 不用流水线耗时 / 用流水线耗时。晚上梳理控制器设计。硬布线控制和微程序控制是两种方案硬布线用硬件逻辑直接产生控制信号速度快、设计复杂、不易修改微程序把控制信号编码成微指令存在控制存储器里灵活但慢。考试常考二者对比记住“硬布线快、微程序灵活”就够了。3.3 第3天总线 IO 回顾错题查漏补缺上午快速刷总线和外设的选择题、填空题。这部分只要看过就能做对不要花超过2小时。下午把所有错题重新做一遍。重点看那些“第二遍还会错”的题多半是概念混淆比如Cache写回法写直达法的区别或计算粗心比如补码符号位没算进去。晚上做一套完整的往年真题卷如果学校不发就找一套网上流传的类似卷。掐时间2小时内完成模拟真实考试。做完对答案统计各章节失分分布用最后几小时针对最薄弱的地方临时抱佛脚。注意如果时间紧张优先保计算题放弃偏题怪题。老师出计算题一定有固定套路套路练熟了分就拿到了。概念题靠关键词记忆不用背整句。4. 常考题型的“标准答题模板”4.1 定点数计算题规范步骤不丢分题目通常是已知x...y...用补码求xy并判断是否溢出。答题三步走写出x、y的二进制补码形式。正数直接给二进制数负数先写出绝对值的原码再取反加1。按二进制加法逐位相加注意最高位的进位情况。判断溢出若参加运算的两个数符号相同而结果的符号与它们相反则溢出。或者用双符号位法变形补码结果两位符号位不同则溢出。把结果转回十进制验证。贴一个最容易犯的错很多同学在负数补码转换时把绝对值原码写错位数比如该8位写成7位导致后续全错。先确定位长再补齐高位再取反加1。4.2 Cache计算题三步定位法近年题型很稳定给出主存容量、Cache容量、块大小、映射方式通常是组相联要求计算地址结构并分析访问序列的命中情况。答题步骤算位数主存地址总位数 log2(主存容量)块内地址位数 log2(块大小)组号位数 log2(Cache组数)标记位数 总位数 - 组号位数 - 块内地址位数。每个访问地址先拆成“标记 组号 块内地址”再用组号去定位Cache组比较标记是否相同相同且有效位为1则命中。如果不命中按替换算法选择该组内的一行装入新块被替换的旧块若脏位为1则写回主存。常见丢分点没有先算“Cache有多少组”。组数 Cache容量 / (块大小 × 每组行数)。行数就是相联度2路组相联就是每组2行。4.3 流水线分析题画图比空想靠谱拿到流水线题先画出指令执行的时空图或者表格展开指令I1、I2、I3...周期T1、T2、T3...把每步的部件占用情况写清楚。然后看相邻指令有没有用到同一个寄存器或内存单元有的话就是相关。数据相关上一条指令写R1下一条指令读R1中间的间隔够不够等写入完成不够就要暂停。控制相关转移指令会导致后续已取入流水线的指令作废需要排空。结构相关两条指令同时要用ALU或同时访存调整取指时间或添加部件解决。答题时先判断相关类型再说明如何解决最后画图计算停顿周期。4.4 问答题制度化管理按点给分问答题没有标准答案但阅卷是按关键词给分。复习的时候把每个大知识点的关键词列出来比如DMA的特点“不经过CPU、按块传输、周期挪用、开始和结束中断通知CPU”。答题时把这些关键词写全再展开一两句话解释分数就拿到手了。5. 高频问答题速背清单这几十个问答题知识点是我从多所高校往年卷里统计出来的高频考点建议打印出来在考前1小时集中过一遍。模块高频问题答题关键词运算器为什么要用补码减法转加法、符号位参与运算、硬件简单、0的表示唯一运算器溢出的判断方法有哪些双符号位法、单符号位进位法存储Cache的作用弥补CPU与内存速度差距、利用局部性原理存储直接映射、全相联、组相联各自特点位置固定/随意/组内随意、硬件复杂度递增、命中率递增存储写直达和写回的区别同时写内存/仅写Cache并置脏位、总线流量、一致性指令常见寻址方式有哪些立即、直接、间接、寄存器、变址、基址指令变址寻址和基址寻址的区别变址面向数组、基址面向程序浮动CPU指令周期的阶段取指、间址、执行、中断CPU硬布线和微程序控制的对比速度、灵活性、成本、修改难度流水线三种相关的产生原因数据依赖/资源冲突/转移指令总线总线仲裁方式有哪些链式查询、计数器、独立请求外设程序查询、中断、DMA方式的区别CPU参与程度、传送单位、效率外设中断处理流程关中断、保存断点、识别中断源、保护现场、执行中断服务、恢复现场、开中断6. 避坑指南学软件的人最容易踩的五个雷6.1 只背概念不刷题上了考场手生计算机组成原理的计算题套路固定但需要手算熟练度。很多同学看书“都懂”做题却半天动不了笔就是因为平时没练手算。考前至少保证10道补码运算题、10道IEEE 754题、5道Cache命中率题、5道流水线题、2道完整的CPU数据通路题。量不大但必须亲手算。6.2 分不清“存储器”和“寄存器”的层级关系寄存器在CPU内部速度最快、容量最小Cache在CPU和主存之间主存内存再往外硬盘属于外存。考试爱考“CPU能直接访问哪些存储器”——答案是寄存器和主存不能直接访问硬盘。这个知识点虽然基础但年年有人错。6.3 对“局部性原理”理解太浅局部性原理不只是“ Cache 能命中是因为程序总访问相邻地址”这么简单。时间局部性强调刚访问过的数据很快会再被访问循环体空间局部性强调附近的地址也很快会被访问数组顺序遍历。做题时分析命中率本质就是在判断程序具有哪种局部性。题目给一个循环嵌套的数组访问程序让你分析命中率提升的原因就要用这两个词作答。6.4 小端和大端分不清小端模式是低字节存放在低地址大端模式是高字节存放在低地址。考题通常问“数值0x12345678在小端模式下从地址0x100开始存放各字节内容是什么”记住口诀“小端低低大端高低”然后按字节拆开写。这个题一旦做对基本就是送分但每年都有同学因为对大端小端理解反了而丢分。6.5 不重视实验内容很多学校的考试会考实验相关题目比如多周期CPU设计、Cache模拟器、单周期CPU数据通路。热搜词里出现的“star cop2018计算机组成原理与系统结构使用手册”就是典型的教学实验平台。如果你学校用了这个平台请务必把实验里的数据通路图、控制信号、指令格式再看一遍。老师考实验题通常不考具体代码而是考原理和流程图所以别只看代码要看懂结构。7. 考场应试技巧时间分配与做题顺序7.1 先做计算再做问答最后做选择填空我推荐的做题顺序是计算题优先。因为计算题分值高、步骤固定、做对了基本就是满分而且刚开考时脑子最清醒算错率低。问答题需要用关键词组织答案放在中间做。选择填空放在最后因为它们零散、分值低即使时间不够也不至于大伤元气。7.2 计算题千万别跳步骤阅卷是看步骤给分的。哪怕你最后结果算错了只要中间关键步骤比如写出补码、标出符号位进位是对的一样能拿大半的分。反过来只写一个答案、过程一片空白就算答案对了也容易被扣分因为老师无法判断你是算出来的还是蒙的。7.3 问答题按条纹答题半句一个点问答题作答时先写关键词再补一句解释。比如回答“为什么用Cache”“Cache速度接近CPU容量比主存小价格高。根据程序访问的局部性原理将近期使用的数据放入Cache可以提高CPU访问存储系统的平均速度。”这里“速度接近CPU、局部性、平均速度”就是三个得分关键词缺一个都可能扣分。7.4 选择题排除法优先如果遇到不会的选择题先排除绝对错误的选项再对比剩余选项的差异。比如问“哪种映射方式硬件实现最简单”你只要知道直接映射是“一对一”硬件查找只需一个比较器就能排除其他选项。8. 最后再分享一个复习利器把知识点做成“一句话卡片”我在期末复习的时候有个习惯把每个高频考点浓缩成一句话写在卡片上比如“Cache写直达命中时同时写主存保证一致性但慢写回法命中只写Cache置脏位快但可能不一致”。考前每天过一遍卡片默写一遍比翻书效率高十倍。利用这个方法的另一个好处是当你发现自己无法把某个知识点压缩成一句话时就说明你还没真正理解它这时候就得回头重看那部分内容。用这种方式查漏补缺比盲目刷题更高效。计算机组成原理这门课说难也难说简单也简单。它考的不是创意而是你是否把基本功打扎实了。按照上面的框架走一遍把计算题练熟、把关键词记住、把常考题型搞透期末拿个理想的分数问题不大。我当年复习完最后一个晚上关上书能白纸上画出整张CPU数据通路图那一刻就知道自己稳了。你也可以做到。
返回列表