ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

计算机组成原理期末复习:核心考点与组间串行进位解析

计算机组成原理期末复习:核心考点与组间串行进位解析 翻开《计算机组成原理》教材的那一刻很多人跟我当初一样心里冒出的第一个念头是我一个写代码的为什么要把CPU内部怎么取指、怎么算加法、Cache怎么替换研究得这么透但等你真正把这门课啃下来尤其是期末复习把整本书串成体系之后你就会发现这门课就像是计算机世界的“解剖学”。不懂解剖就去开刀写出来的代码、调出来的系统总会在某个意想不到的地方给你致命一击。这份期末大笔记不是简单抄书而是我把整门课的骨架、重难点、易错点以及实验课上踩过的坑全部揉碎了重新拼装起来的一份复习地图。覆盖了数据表示与运算、存储系统、CPU与控制器、流水线、组间串行进位等核心考点也专门聊了聊用Quartus做原理图实验时那些教科书上不会写的事。无论你用的是唐朔飞、白中英还是王道考研系列这篇文章都值得你在期末周反复翻看。1. 先建立整体骨架计算机组成的“全局观”比死记硬背重要得多很多人复习计算机组成原理上来就背进制转换、背各种寄存器名称结果背到第五章发现前面的全忘了越复习越乱。我踩过这个坑之后才明白这门课最忌讳的就是“只见树木不见森林”。你手里必须有一张地图知道每个知识点属于哪个模块、跟其他模块是什么关系细节才有地方安放。1.1 从“造一台电脑”的视角理解五大部件说白了计算机组成原理研究的就是一台计算机的硬件是怎么组织起来的。经典教材都会告诉你计算机由五大部件组成运算器、控制器、存储器、输入设备、输出设备。这个说法本身简单但你要换一个“造机器”的视角去理解它你先得有地方放数据和指令这就是主存储器你得有个东西负责算数、算逻辑这就是运算器你得有个指挥官负责解读指令、协调各个部件干活这就是控制器程序和数据总得进去、结果总得出来所以还需要输入输出设备。从这个视角出发你再看整本书的目录就会豁然开朗数据的表示和运算是在设计运算器存储系统那一章是在设计和完善存储器CPU那一章是在设计运算器和控制器怎么协同工作指令系统是预先定义好“指挥官能听懂的语言”。整本书的逻辑其实就是在回答一个问题给你一堆电子元件你怎么把它拼成一台能自动运行程序的机器1.2 层级结构为什么软件专业也要学它我身边学软件的同学常常抱怨这门课跟以后工作没关系。但如果你从计算机系统的层次结构来看就会明白它的重要性。从最底层的晶体管、逻辑门电路到微指令、机器指令、操作系统、汇编语言、高级语言每一层都在为上一层提供支撑。我们平时写高级语言编译器把它翻译成汇编汇编再翻译成机器指令而机器指令最终要靠CPU里的控制器和运算器去执行。计算机组成原理就是让你站在“机器指令”这一层往下看理解一行Java代码在硬件层面究竟发生了什么。这个认知对你排查线上问题、理解性能瓶颈、优化并发程序都非常有用。比如你知道Cache的存在和命中率的概念你写代码的时候就会有意识地优化循环的局部性你知道流水线冒险的问题就能理解为什么有些分支预测错乱的代码性能会急剧下降。学软件的人不是“要不要学”的问题而是“学得多透”的问题。1.3 一套好用的复习框架按“信息流”串知识点我期末复习时自己整理了一套框架分享给大家。别按章节顺序死推而是按数据在机器里的“流动过程”来串程序和数据通过输入设备进入主存控制器从主存取指令、翻译指令运算器从主存取数据、运算结果再存回主存最后通过输出设备呈现给用户。围绕这条主线存储系统解决“数据和指令放哪、怎么放得快”运算器解决“数据怎么算”控制器解决“指令怎么被理解和执行”指令系统解决“人和机器之间怎么约定指令的格式”。建议你复习时也这样拉一条主线每学一个知识点先问自己它在计算机执行一条程序的过程中处于哪个环节这样哪怕你细节记不全论述题和综合题也能写出个框架来不至于拿零分。2. 数据的表示与运算基础这里丢分最可惜数据表示与运算这章内容多、杂、碎但偏偏是期末考试选择题和填空题的重灾区。很多同学觉得进制转换自己会就不太重视结果在补码、移码、IEEE754这些地方反复翻车。我当时的教训是这一章不值得你花整块时间死磕但你必须把每一类题的解题套路练到“肌肉记忆”。2.1 原码、反码、补码、移码不要背定义要背“为什么”很多同学背了四种码的转换规则一到做题就晕。我的经验是你只需要真正理解补码其他的都是它的变体。补码的核心思想是把减法变成加法。用一个时钟来类比3点钟往前拨4小时是11点往后拨8小时也是11点这里的“8”和“-4”在模12的意义下是等价的。计算机的模是2的n次方所以一个负数a它的补码就是2的n次方 - |a|这样就实现了“减去一个数等于加上它的补码”硬件只需要做加法器不需要单独设计减法器。理解了这一点补码的最大值最小值、符号位参与运算、补码的补码是原码这些结论你都能自己推出来。至于移码它的作用主要是比较浮点数阶码的大小本质上就是把补码的符号位取反让整个码值的大小顺序跟真值大小顺序一致方便硬件做比较。2.2 定点数的加减运算与溢出判断这章的第二个高频考点是补码加减运算和溢出判断。你需要掌握几个关键结论补码加法符号位一起参与运算结果按模2^n取余减法的本质是加上“减数的负数的补码”。溢出判断是重灾区判断方法有三种我强烈建议你三种都掌握因为不同的题目用不同的方法更快双符号位法运算结果的两个符号位不同则溢出01表示正溢出10表示负溢出最高符号位永远代表真正的符号。单符号位法最高数值位的进位和符号位的进位不同则溢出。符号位和最高数值位法同号数相加结果符号与加数符号不同则溢出。我自己做题时最顺手的是双符号位法因为它直观而且双符号位的01/10编码在后续学习加法器时也能帮上忙。2.3 IEEE754 浮点数标准的速算套路浮点数这块期末题基本就是给你一个十进制数让你转成IEEE754单精度格式或者反过来给一个十六进制表示让你写出真值。这类题套路固定分数必须拿到。单精度浮点数共32位1位符号位8位阶码用移码表示偏置值是12723位尾数隐藏默认的1.xxxx。转的时候分三步先把十进制数转成二进制科学计数法1.xxx * 2^n的形式然后尾数部分去掉开头的1只保留小数点后面的23位阶码存n127的二进制符号位根据正负定。反过来读的时候阶码减127得到真指数尾数前面补上隐藏的1恢复成1.xxx * 2^n再转回十进制。有一点要提醒尾数若是无限循环二进制小数要留意舍入规则。教科书默认“0舍1入”就近舍入考试时如果题目没特别说明按这个规则处理就行。3. 运算器与ALU的实现逻辑看懂电路图才算真懂加法考试里有一类题直接给你一个全加器的逻辑图或者ALU的芯片引脚让你分析进位关系。很多同学觉得这是“硬件折磨软件生”但这部分恰恰是把前面数据运算知识和数字逻辑知识打通的关键环节。3.1 一位全加器到串行加法器最简单也最慢的加法一位全加器有三个输入两个本位加数和来自低位的进位和两个输出本位和、向高位的进位。把n个全加器串联起来低位的进位输出接到高位的进位输入就得到一个串行行波加法器。道理非常简单但致命问题是高位的运算必须等低位的进位先算出来所以n位加法就需要等待n级进位传递的时间。位数越多速度越慢。考试时问你“串行加法器的主要缺点”答案就是进位延迟大。3.2 组间串行进位是怎么回事期末高频考点实战热搜词里出现“计算机组成原理组间串行进位”说明不少同学在这块卡住了。我当时也绕了很久这里把逻辑彻底讲透。组间串行进位也叫单级先行进位、组间串行的核心思路是把n位加法器分成若干组每组内部采用“先行进位”的逻辑让进位不逐位等待但组与组之间仍然采用串行连接即前一组产生的组进位作为下一组的进位输入。以经典的74181四位ALU芯片为例一片就是一个4位先行进位加法器。把多片74181串联起来做16位加法器片内是并行的内部先行进位片间是串行的组间串行进位这就是“组间串行”的名字由来。这样做每组内部的进位延迟被消除了整体的进位延迟从“位数的数量级”降为“组数的数量级”速度明显提升。考试如果让你画16位组间串行进位加法器的连接框图你要抓住三个要点每小组4位内部有先行进位逻辑能同时产生C1~C4。小组的进位输出C4接到下一小组的进位输入C0。小组内部需要额外的“组进位生成函数”和“组进位传递函数”来生成组间传递的进位。对比起来组内并行、组间并行即两级先行进位速度最快但电路复杂度大幅上升。复习时建议画一张对比表行波进位、组间串行进位、组内组间都并行分别对应什么电路结构、延迟多大、代价如何。这张表答简答题非常管用。3.3 从逻辑表达式到电路如何快速写出进位公式很多同学看到进位公式C G PC就发怵其实它背后的含义很直白GGenerate生成指的是当前位自己就能产生进位比如两个输入都是1不管低位进位是什么本位一定往高位进1PPropagate传递指的是当前位能把低位的进位原样传给高位比如两个输入一个是1一个是0低位有进位就传上去没进位就不传。把这一位扩展成多位的组组的进位输出就可以写成 Cn G组 P组 * C0意思是要么组内自己产生了进位要么外部进来的进位被整组传递出去。这个公式在组间串行进位的电路图中无处不见你搞懂G和P的物理含义就再也不用死记了。4. 存储系统从SRAM到Cache的层层加速魔法存储系统这章内容量级不小而且知识点之间的关联性非常强。从主存的基本结构到Cache的映射方式、替换算法、写策略再到虚拟内存和页式管理一层套一层。期末复习时我建议按“为什么需要这一层”的问题来串联而不是死背概念。4.1 存储器的层次结构为什么要发明Cache一个简单的矛盾CPU的速度越来越快内存的速度却跟不上内存想做大成本就高速度还慢。于是计算机采用了分层存储的思想寄存器最快但容量小在CPU内部Cache次之主存再次辅存硬盘又慢又大。数据按“近期大概率会被用到”的原则在各层之间复制移动。这里有个经典考点为什么Cache能提高系统性能答案是程序访问具有局部性原理。时间局部性指刚访问过的数据很快可能再被访问空间局部性指访问了一个地址后邻近地址也很快会被访问。Cache正是利用这个特性把主存中一小块数据提前搬进来让CPU大多数时候都能在Cache里命中少数时候才去访问慢速主存。4.2 Cache的地址映射方式与替换算法直接映射、全相联、组相联这三者的比较几乎是必考题。直接映射实现最简单主存地址的索引字段直接决定Cache行号但冲突率最高容易“颠簸”全相联灵活任何一个主存块可以进任意Cache行命中率高但比较器成本太高而且替换时要从全行里找一个牺牲者实现复杂组相联是折中方案把Cache分成组采用“组间直接映射组内全相联”。我做题时的技巧是见到“主存地址如何划分为标记、索引、块内地址”这类题先确定Cache的容量和每行字节数算出索引位数 log2(Cache行数/组数)块内地址位数 log2(每行字节数)剩下的高位就是标记。所有的地址映射题都可以套这个思路但务必留意题目给出的是“字节编址”还是“字编址”字节编址时块内地址要加上偏移量位数log2(块大小字节数)。替换算法里LRU最近最少使用和随机法是期末考试出场率最高的两个。LRU的题目一般给你访问序列让你写出命中率。这类题没捷径老老实实画表格模拟Cache行的状态变化但要注意Cache行数较少时模拟起来很简单行数一多就别浪费时间直接跳过做别的题。4.3 写策略和虚拟内存分清“写回”与“写直达”Cache的写策略看似简单但很多人没意识到它跟“Cache与主存一致性”的问题绑定在一起。写直达写穿策略CPU写Cache的同时立即写主存优点是主存始终是最新的缺点是写操作慢写回策略先只写Cache并标记为“脏”当这一行被替换时才一次性写回主存优点是快缺点是主存可能一时不是最新的需要“脏位”来标识。考试时问你两者对比从“访存次数、实现复杂度、数据一致性开销”几个维度回答不要只答一句话。我复习时给自己整理了一个口诀写直达速度换简单写回复杂换性能。虚拟内存的核心是把主存当作磁盘的缓存用页表来管理页面映射。它和Cache很像只是粒度换成了“页”速度换成了“慢”。理解“缺页中断”“页命中率”“快表TLB”这些概念跟Cache对照着记忆会非常省力TLB就是页表的Cache。5. CPU的结构与指令执行流程把“跑程序”这件事拆开看CPU这章的复习最怕的就是在脑子里只有一个模糊的“CPU运算器控制器”的空壳概念做题时无法下笔。你需要把一个指令从取指到执行完毕的全过程像放电影一样在脑子里过一遍。5.1 数据通路指令执行时数据到底走了哪些路数据通路这个概念我第一次接触时觉得抽象后来明白了它就是数据在部件之间流动的路径。教科书常给你一个CPU内部结构图里面有程序计数器PC、指令寄存器IR、通用寄存器组、ALU、存储器地址寄存器MAR、存储器数据寄存器MDR、以及一大堆控制信号。你要能指着图说出“执行一条加法指令时哪些信号被使能、数据如何一步步流动”。一个经典例题取指阶段的微操作序列。第一拍PC的内容送到MAR并启动读主存第二拍主存将数据送到MDR第三拍MDR的内容送到IR同时PC1。这三个微操作反映了控制器的节拍设计。考试里常让你分析某个指令的取指周期和执行周期分别做了什么你脑子里有这条数据通路写起来就游刃有余。5.2 硬布线控制器与微程序控制器两种解法的相爱相杀这是期末论述题和简答题最爱的考点。硬布线控制器用组合逻辑电路直接生成控制信号速度极快但指令一多电路极其复杂修改指令系统等于重新做电路几乎不具备灵活性典型用在RISC处理器中。微程序控制器把每条机器指令翻译成一串微指令序列微程序执行时用微指令的编码去控制各个部件的开关用“软件”的方式生成硬件控制信号灵活性和可扩展性强CISC处理器多用微程序。考试还爱问“微程序控制器的基本工作原理”或“相容微命令和相斥微命令的区别”。相斥微命令指在同一时间内不能同时发出的控制信号可以编码在同一个字段里因为同时只需要用其中一个这个叫字段译码法相容微命令指可以被同时执行的控制信号必须分别占位。做题时务必看清问的是“微命令”还是“微操作”前者是控制信号、后者是具体动作。5.3 指令流水线为什么它能加速又为什么会有冒险流水线是必考且经常考综合题的地方。原理上它把指令执行过程分成取指IF、译码ID、执行EX、访存MEM、写回WB五个阶段让多条指令像工厂流水线一样重叠执行。理想情况下每个时钟周期都能完成一条指令加速比等于流水线级数。但现实总被“冒险”打断结构冒险多个阶段同时要访问同一硬件资源比如取指和访存同时要访问内存解决方法是指令和数据分开的Cache。数据冒险一条指令需要用到前一条指令还没算完的结果解决手段有转发旁路、停顿插入气泡、寄存器重命名。控制冒险转移指令可能导致流水线里已经预取的指令作废解决方法是分支预测、延迟槽。考试经常考“某条指令依赖关系下流水线需要插入几个气泡”这类题目。我的做法是画一个时空图横轴是时钟周期纵轴是指令编号把每条指令的五个阶段按时间排布画出来然后把冲突的地方标红数一下最后一条指令的写回是在第几个时钟周期就能算出总周期数非常直观。6. 组间串行进位深度解析从公式到电路图的完整对照前面已经提过组间串行进位的概念但考虑到它在热搜词里出现了说明大家在这块确实普遍头疼我单独用一个章节把它讲透。这个地方理解不透后面学ALU扩展和乘法器的进位逻辑也会受影响。6.1 基本公式的物理含义先复习两个核心变量对任意一位i有进位传递函数Pi Ai ⊕ Bi或Ai Bi取决于定义进位生成函数Gi Ai · Bi。那么第i位的进位输出可以写成 Ci Gi Pi · Ci-1。把它展开Ci Gi Pi(Gi-1 Pi-1 Ci-2) Gi Pi Gi-1 Pi Pi-1 Ci-2。看到没有随着展开Ci-1被逐层带空Ci可以只依赖C0以及各级的G、P而不必等待逐位进位了。把四位分成一组比如第0~3位那么这一小组的进位输出C4可以写成 C4 G3 P3 G2 P3 P2 G1 P3 P2 P1 G0 P3 P2 P1 P0 C0。其中 G组 G3 P3 G2 P3 P2 G1 P3 P2 P1 G0P组 P3 P2 P1 P0。这就是片内先行进位CLA的基本公式74181内部就是用它来同时产生C1到C4的。6.2 组间串行的连接方式与延迟计算当用四片74181做16位加法器时第一片内部先行进位可以在极短时间内算出C4但第二片的进位输入C4来自第一片的输出必须等第一片算完C4才能开始组内计算。因此C4就是组间的串行信号。同理C8由第二片产生后传给第三片C12传给第四片。16位加法器总共只需要等待4次组进位传递时间加上一次组内先行进位时间远优于16级的行波进位。考试计算时教科书会给出每级门延迟的数值如一个“与或非”门的延迟为t让你算总延迟。你需要按公式总延迟 片内先行进位延迟 (组数-1)*组间进位延迟。动手列式别凭感觉这类题一旦算错真是痛失大分。6.3 一个必背的连接框图要点画16位组间串行进位加法器框图时务必标注每个74181芯片有进位输入C0和进位输出C4C4连到下一片的C0每片还输出成组传递函数P和成组生成函数G但组间串行的方案里这部分通常不用或者只用来向更高层次提供信息。很多同学把组间串行和“组内并行组间并行”的两级先行进位方案混在一起画图时乱接。一句话总结二者的区别组间串行组间的C4 - C0是一根线直连两级先行进位组间还有一个“组间先行进位电路”来同时产生C4、C8、C12而不再逐片等待。7. 实验课的隐藏分Quartus原理图设计里那些坑期末复习阶段Quartus原理图实验往往被当成“加分项”被忽略但这部分其实会出现在面试、保研、甚至毕业设计的问答里。而且实验报告写得好老师真的会给平时分加buff。我当年做“八位加法器”和“四选一多路选择器”实验时踩了不少坑这里把经验写出来。7.1 原理图输入方法的基本流程用Quartus做原理图实验流程非常固定新建工程时选对器件型号老师一般指定Cyclone系列的具体型号别自作主张选错在原理图编辑界面添加元件库里的引脚、逻辑门、宏功能模块比如做加法器时可以直接调用74系列芯片或lpm库里的加法器用导线把它们连起来编译通过后分配引脚把输入输出信号映射到开发板上具体的引脚最后下载到板子并测试。常见问题是编译时报“引脚分配冲突”或“输出引脚用了内部逻辑”检查一下工程设置里的“未分配引脚”是否需要设为“作为输入”即可。7.2 原理图设计与Verilog代码的关系很多学软件的同学会觉得Quartus画原理图很“幼稚”不如写Verilog。但你仔细体会原理图给的是硬件思维看到的是一个器件一个器件怎么接这种连线的过程能帮你建立硬件并行性的直觉。Verilog代码本质上是描述逻辑连接关系的文本形式你回头再看Verilog里的wire和assign其实就是原理图里的连线。所以做实验时别只顾着拖元件多想想每根线的含义这门课才算真正学进去了。7.3 实验报告怎么写拿高分实验报告不要流水账要体现“设计、验证、排错”的思路先写清楚实验目的和原理给出你画的原理图或代码然后写测试向量、仿真波形最后务必写“遇到的问题与解决”。老师特别喜欢看到你写“我把Cin连到地导致结果少1检查后改为接开关”之类的排错经历说明你真的在做实验而不是在抄报告。仿真时养成用波形图验证边界条件的习惯全加器的输出看最开始的进位输入为0或1两种情况的差异别只看单个用例。仿真的波形怎么判断对不对我教大家一个笨办法用Windows自带计算器切换到程序员模式自己算出几个典型输入如7815、-352对应的二进制结果再和仿真波形对一下。别嫌低级这样做能快速定位你原理图里连错线的问题。8. 期末复习路线与考场实战技巧期末复习最怕的是“每一章都看了合上书全忘了”。我把自己的复习节奏和经验放在这一章直接给大家一个可执行的模板。8.1 时间分配建议共分三轮第一轮是“破题轮”2到3天只看目录和各章小结把整本书的骨架画成思维导图搞清楚章节之间的联系不做题。第二轮是“核心轮”5到7天针对每个大模块精选典型例题一边做题一边标注自己的薄弱点。第三轮是“错题轮”考前2到3天只看错题和自己整理的易错点。我当时第一轮花了一天画思维导图第二轮把王道单科书的选择题刷了一遍第三轮就反复翻自己记的“考前速背”笔记各种码的转换步骤、Cache地址位数计算、流水线冒险类型、微程序控制的概念等。8.2 各章典型题型与必背结论数据表示进制转换、补码加减、浮点数IEEE754转换。必背结论是补码范围、溢出判断方法、IEEE754偏置值127。运算器加法器进位分析、ALU功能表。必背“组间串行进位”的连接图和G/P公式。存储系统Cache容量计算、映射方式、命中率模拟、写策略。必背局部性原理、三种映射方式对比表。CPU数据通路分析、指令周期取指、间址、执行、中断四个周期、硬布线与微程序控制器对比。必背硬布线快但不利于扩展、微程序慢但灵活。指令系统寻址方式立即、直接、间接、寄存器、变址、基址、指令格式设计题。必背各种寻址方式的有效地址计算方法。流水线五阶段流程、三类冒险、时空图。必背解决数据冒险的“转发”手段。8.3 考场上的抢分策略开考后先花3分钟扫一遍全部题目把“论述题”和“综合题”标注出来因为这类题分值大但往往要画图或列公式耗时多。先做计算类和模拟类的小题快速拿分留足时间给大题。答综合题时记得“分步骤”写比如浮点转换按“符号位、阶码、尾数”三步写批卷老师一眼就能看到你的得分点。遇到不会的小题果断跳过别在2分的填空上卡5分钟。关于“表面会”的假象多说一句期末周复习时很多人看书觉得都会一做题就傻眼。解决方法是“输出式复习”——合上书拿出一张白纸把这章的考点自己讲一遍画一遍图。这一步能让你真正发现自己卡在哪。我在复习存储系统时用这个方法才发现Cache地址位数计算里的块内地址偏移我竟然一直算错而这是最简单最容易拿的分。9. 王道、白中英、唐朔飞教材与资料怎么搭配最省力关于教材和资料我把自己实际用过的搭配心得整理了一下不同学校用的书不一样但思路是通用的。9.1 不同教材的定位差异白中英版《计算机组成原理》教材经典内容严谨逻辑性强适合老师跟着讲。缺点是部分内容偏理论自学时有点晦涩。唐朔飞版《计算机组成原理第3版》也极常见知识点组织清晰例题丰富不少985院校都在用。王道考研系列数据结构和组原的单科书是考研人必刷的它的特点是题目多、总结精炼、专门针对“做题拿分”组织内容期末复习用来刷题非常合适但深度上比教材少了些。我的使用策略是以学校指定的教材为主把每一章的知识框架吃透用王道单科书做“题库”刷选择题练速度和准确率考前再回到教材扫一遍自己标注的难点。这样既不会脱离学校考试范围又能借王道的题查漏补缺。9.2 一个最省力的资料整理方法复习时不要直接抄PPT或抄书而是把教材的每一节的标题改写成“一个问题”比如“直接映射和全相联映射的优缺点是什么”“为什么写回策略需要脏位”。然后在笔记里写出这个问题的答案要点。这样到考前你只需要翻这本自己写的问题清单看到问题能答上来就过答不上来就翻书。这个方法不仅期末能用考研复习也适用强烈推荐。10. 写给学软件的你这门课的隐藏价值比你想的大得多作为学软件出身的人我在毕业前一直觉得组成原理离我很远。直到工作后排查一个性能瓶颈发现是循环遍历顺序导致CPU缓存命中率太低改动几行代码后性能提升数倍那一刻我才真正感激当年硬啃下来的这门课。说到最后给大家一个建议期末复习不要只是“应付考试”试着把每一个知识点都问一遍“这能解释我平常遇到的什么现象”。取指周期的PC自动加1是不是让你想到了程序计数器在调试器里那个“单步执行”的功能Cache的局部性原理是不是让你想到了写代码时应该尽量顺序访问数组中断机制是不是让你理解了为什么多线程程序里普通IO请求会阻塞、而异步IO却能回调当你能把这些连接起来这门课就不再是一堆零碎的电路知识而是你理解整个计算机系统的一把钥匙。祝各位期末顺利。返回目录回到知识框架把每一个知识点串成一张网考场上的你就会游刃有余。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进