导读与服用说明:
计算机系统结构的主观应用题在自考中独占 40 分(简单应用题 2×10 分 + 综合应用题 2×10 分),可以说是“得大题者得天下,失大题者来年见”。
本宝典针对官方核心主观题汇总中的 全部 13 种核心应用题型,彻底剥离枯燥的教条说教,采用**“幽默人话剖析 + 考点透析 + 原题拆解 + 考场秒杀模板”**的降维打击模式,带你把这 40 分稳稳揣进口袋!
目录索引(十三大必考神级题型)
题型一:浮点数尾数基值与表示范围
🎭 考点人话与爆笑透析
在计算机里,浮点数就像是“科学计数法”:。
-
阶码 :决定了数字的“大局观”(指数有多大,数字能在银河系漂多远)。
-
尾数 :决定了数字的“精细度”(有效数字有多准)。
-
尾数基值 :大部分人以为计算机里基值只能是 2(二进制),但题目偏要搞事情——假设尾数基值是 十进制 (),但计算机底层硬件偏偏又是用 二进制位 来存这只十进制小怪兽!
-
怎么存?1个十进制数需要几个二进制位?,所以需要 4个二进制位(1个BCD码/半字节) 来表示一位十进制数!
-
尾数总共给 8 个二进制位,说明能存 位十进制数字(即 )。
-
规格化条件:最高一位十进制数 绝对不能为 0!即 ,而第二位 。
📝 真题演练(0904真题)
题目:
浮点数表示,阶码用二进制表示,除阶符之外的阶码位数 ,尾数基值用十进制表示(),除尾符外的尾数二进制位数 。计算非负阶、规格化、正尾数时的:
- 可表示的最小尾数值;
- 可表示的最大值;
- 可表示的尾数个数。
💡 庖丁解牛与详细步骤:
- 分析尾数格式:
- 尾数基值为十进制(),每个十进制数占用 位二进制。
- 尾数二进制位数 ,故十进制尾数位数为 位。
- 尾数形式为:(十进制形式)。
- 规格化要求:最高位 (即 ),低位 。
- 第 (1) 问:可表示的最小尾数值:
- 要让尾数最小,最高位取合法的最小值 ,其余位取 0()。
- 最小尾数值 。
- 第 (2) 问:可表示的最大值:
- 要让数值最大,需要 阶码取最大 且 尾数取最大。
- 阶码部分:非负阶,二进制位数 ,最大阶码 ?注意:阶码是二进制纯正整数,3位二进制最大值为 或 。但若阶码基值也是按题意,阶码是二进制表示,除阶符外3位,(部分教材若阶码基值为10则是 ,标准答案中直接以尾数基值指数形式计算: 或按原题官方标准格式:最大阶码为 )。
- 尾数最大值:,即 。
- 综合最大值 。
- 第 (3) 问:可表示的尾数个数:
- 最高位 可选范围: 共 9 种选择;
- 第二位 可选范围: 共 10 种选择;
- 故规格化正尾数个数 个。
- (公式表示法: 个)。
题型二:浮点数尾数下溢处理(ROM查表舍入法)
🎭 考点人话与爆笑透析
在浮点数运算时,尾数右移超出的低位(下溢部分)就像切土豆掉下来的碎渣。
-
直接截断法:把碎渣全扔了。缺点:全往小了砍,平均误差恒为负数,系统越算越缩水!
-
恒置1法:不管碎渣是啥,最低位一律改成 1。简单粗暴,但误差还是不够完美。
-
ROM查表舍入法:在硬件里放个极小的 ROM(查找表),把尾数最后1位和掉出去的附加位当成地址,查表直接输出修正后的结果!
-
终极目标:让平均误差 = 0(有的多进一点,有的少进一点,互相抵消,人情世故拉满)。
📝 真题演练(1604真题)
题目:
由 3 位数(其中最低位为下溢处理的附加位)经 ROM 查表舍入法,下溢处理成 2 位结果,设计使下溢处理平均误差接近于 0 的 ROM 表,列出 ROM 编码表的地址与内容的对应关系。
💡 庖丁解牛与设计逻辑:
- 明确输入输出位数:
- 输入 3 位二进制:(其中 是保留位, 是下溢附加位),共有 种输入状态(地址 )。
- 输出 2 位二进制:。
- 四舍五入的平衡艺术(零均值误差设计):
- 附加位 (相当于 .0):不用进位,直接保留 。
- (误差 )
- (误差 )
- (误差 )
- (误差 )
- 附加位 (相当于 .1,即 个最低有效位):按四舍五入通常要进 1,但如果全部进 1,总误差就会偏正!为了让平均误差为 0,必须一半舍、一半入:
- (进位,误差 )
- (进位,误差 )
- (进位,误差 )
- (舍去不进位!防止溢出且抵消误差,误差 )
-
ROM 编码对照表(考场直接画出此表满分):
| ROM 地址 () | 原数值 | ROM 输出内容 () | 实际处理说明 | 误差分析 (输出 - 输入) |
| :--- | :--- | :--- | :--- | :--- |
| 000 | 00.0 | 00 | 不变 | 0 |
| 001 | 00.1 | 01 | 进位 | |
| 010 | 01.0 | 01 | 不变 | 0 |
| 011 | 01.1 | 10 | 进位 | |
| 100 | 10.0 | 10 | 不变 | 0 |
| 101 | 10.1 | 11 | 进位 | |
| 110 | 11.0 | 11 | 不变 | 0 |
| 111 | 11.1 | 11 | 截断(防溢出/平衡) | |
一句话总结:
3位变2位,地址共8个(000~111)。末位为0原样留,末位为1向前进;唯独111特殊记,进位溢出只能留11!
题型三:中断响应次序与处理次序(中断屏蔽字设计)
🎭 考点人话与爆笑透析
这是系统结构里送分最痛快的一道大题!必须厘清两个概念:
-
中断响应次序:硬件排队器决定的,出厂就焊死了(默认 高优先级先举手先被看见)。
-
中断处理次序:软件(CPU真正执行服务程序)决定的!通过**中断屏蔽位(Mask)**来实现“反客为主”。
- 屏蔽位规则:
- 1 代表屏蔽(关门谢客,不理你);
- 0 代表开放(欢迎光临,允许你打断我)。
💡 考场秒杀无敌法则(3秒出答案):
口诀:“先来后到,谁比我慢(或等于我),我就屏蔽谁;谁比我快,我就对谁开放!”
在第 级中断的处理程序中:
- 凡是在处理次序中排在自己后面的所有中断级,以及自己本身 全部填
1(屏蔽)!
- 凡是在处理次序中排在自己前面的中断级 全部填
0(开放)!
📝 真题演练 1(1804真题)
题目:
若机器共有 5 级中断,中断响应优先次序为 。现要求其实际的中断处理次序为 。设计各级中断处理程序的中断级屏蔽位(令“1”对应于屏蔽,“0”对应开放)。
💡 秒杀填表分析:
-
处理次序:
-
对 1 级:排第 1。后面有 4, 5, 2, 3,还有自己 1。全部填 1
1 1 1 1 1 -
对 4 级:排第 2。前面有 1(开放0),自己4及后面5, 2, 3填1 1号位填0,其余填1
0 1 1 1 1 -
对 5 级:排第 3。前面有 1, 4(开放0),自己5及后面2, 3填1 1, 4号位填0,其余填1
0 1 1 0 1 -
对 2 级:排第 4。前面有 1, 4, 5(开放0),自己2及后面3填1 1, 4, 5号位填0,2, 3填1
0 1 1 0 0 -
对 3 级:排第 5。前面有 1, 4, 5, 2(开放0),自己3填1 唯独3号位填1,其余填0
0 0 1 0 0
🏆 最终答案表:
| 中断处理程序级别 | 屏蔽位 1 | 屏蔽位 2 | 屏蔽位 3 | 屏蔽位 4 | 屏蔽位 5 |
| :---: | :---: | :---: | :---: | :---: | :---: |
| 1 级 | 1 | 1 | 1 | 1 | 1 |
| 2 级 | 0 | 1 | 1 | 0 | 0 |
| 3 级 | 0 | 0 | 1 | 0 | 0 |
| 4 级 | 0 | 1 | 1 | 1 | 1 |
| 5 级 | 0 | 1 | 1 | 0 | 1 |
📝 真题演练 2(4级中断且处理次序等于响应次序)
题目:
设某系统的中断源优先级分为 4 级()。设屏蔽位“1”屏蔽,“0”开放。要求中断处理次序与响应次序相同()。先文字说明,再画表。
💡 文字说明与标准答案:
- 文字说明:
1. 中断处理程序 1 应屏蔽 1, 2, 3, 4 所有中断,保证 1 级优先执行完毕;
2. 中断处理程序 2 屏蔽 2, 3, 4,对 1 开放;
3. 中断处理程序 3 屏蔽 3, 4,对 1, 2 开放;
4. 中断处理程序 4 屏蔽 4,对 1, 2, 3 开放。
-
屏蔽位表格(标准的下三角矩阵):
| 中断处理程序级别 | 1 | 2 | 3 | 4 |
| :---: | :---: | :---: | :---: | :---: |
| 1 | 1 | 1 | 1 | 1 |
| 2 | 0 | 1 | 1 | 1 |
| 3 | 0 | 0 | 1 | 1 |
| 4 | 0 | 0 | 0 | 1 |
题型四:并行主存系统(模 m 多分体交叉存取与频宽计算)
🎭 考点人话与爆笑透析
单车道(单体存储器)容易堵车,于是聪明的人类修了 条并排的高速公路(模 多分体交叉存取)。
-
单体频宽:单个车道每秒能跑多少流量 ( 是车道宽度即单体字长, 是存取周期)。
-
理论最大频宽: 个分体完全同时疯狂输出,。
-
实际频宽:理想很丰满,现实很骨感。因为程序经常要跳转、冲突,实际频宽打了个折:( 是效率系数,比如 0.6)。
-
求模数 :题目给定了实际需要的带宽 ,让你倒推需要几条车道 ,而且强制要求 必须是 2 的幂次方()。
📝 真题演练(1504真题)
题目:
设主存每个分体的存取周期为 ,宽度为 个字节。采用模 多分体交叉存取,但实际频宽只能达到最大频宽的 倍。现要求主存实际频宽为 ,问主存模数 应取多少方能使两者速度基本适配?(其中, 取 2 的幂)
💡 步骤推导:
- 计算单体最大频宽:
- 计算 个分体的最大频宽:
- 建立实际频宽不等式:
- 确定 的值:
- 题目明确要求 为 2 的幂(即 )。
- 大于等于 3.33 的最小 2 的幂即为 。
题型五:页式虚存替换算法(FIFO 先进先出法)
🎭 考点人话与爆笑透析
-
FIFO(First In First Out):就像排队买喜茶,最早进主存的那个页面,哪怕它一直在被翻牌子,只要没地方了,也必须把它无情踹出去!
-
解题第一坑:虚地址 虚页号。
- 题目给的是字节/字地址(比如 23, 216...),页面大小是 200 字。
- 虚页号公式:(向下取整,即整数商!)。
📝 真题演练(1810真题)
题目:
考虑一个 920 个字的程序,其访问虚存的地址流为:
23, 216, 156, 618, 382, 490, 492, 868, 916, 728。若页面大小为 200 字,主存容量为 400 字,采用 FIFO 替换算法,请按访存的各个时刻写出其虚页地址流,计算主存命中率。
💡 步骤拆解:
- 计算实页数 与虚页地址流:
- 实页数 页。
- 各虚地址对应虚页号:
-
-
-
-
-
-
-
-
-
-
- 虚页地址流为:0, 1, 0, 3, 1, 2, 2, 4, 4, 3(共 10 次访问)。
-
绘制 FIFO 替换追踪表(实页数 ):
| 访问时刻 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| 虚页流 | 0 | 1 | 0 | 3 | 1 | 2 | 2 | 4 | 4 | 3 |
| 页框 1 | 0* | 0* | 0* | 3* | 3* | 2* | 2* | 2* | 2* | 3* |
| 页框 2 | | 1 | 1 | 1 | 1* | 1* | 1* | 4* | 4* | 4* |
| 命中情况 | 装入 | 装入 | 命中(H) | 替换0 | 替换1 | 替换3 | 命中(H) | 替换1 | 命中(H) | 替换2 |
注:标
*表示该位置是驻留时间最长、下一个即将被淘汰的块。
- 计算命中率:
- 访问总次数 次;
- 命中次数 次(时刻 3、时刻 7、时刻 9);
- 命中率 。
题型六:页式虚存替换算法(LRU 堆栈模拟与实页分配优化)
🎭 考点人话与爆笑透析
- LRU(Least Recently Used,近期最少使用):
谁最近最不受宠,就淘汰谁。
- 堆栈模拟法(Stack Simulation):
把主存看成一个栈。
- 只要访问某个页,就把该页抽出来放到栈顶;
- 栈底的元素自然就下沉,成为最久没被访问的老倒霉蛋。
- 绝妙性质:分配 个实页时,只要当前访问的页在栈的前 个位置内,就是命中!
📝 真题演练 1:堆栈模拟与双程序实页最优分配(1304真题)
题目:
页式虚拟存储器共有 9 页空间准备分配给 A、B 两道程序。
已知若给 B 程序分配 4 页时,命中率为 ;若分配 5 页时,命中率可达 。
现给出 A 程序执行中的页地址流为:
2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2, 1, 4, 5(共 15 次)。
- 画出用堆栈对 A 程序页地址流的模拟过程图,分别统计给其分配 4 页和 5 页时的命中率;
- 根据已知条件和上述统计结果,给 A、B 两道程序各分配多少实页,可使系统效率最高?
💡 堆栈模拟图绘制:
时刻: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
页流: 2 3 2 1 5 2 4 5 3 2 5 2 1 4 5
------------------------------------------------------
栈顶1: 2 3 2 1 5 2 4 5 3 2 5 2 1 4 5
栈位2: 2 3 2 1 5 2 4 5 3 2 5 2 1 4
栈位3: 2 3 2 1 5 2 4 5 3 2 5 2 1
栈位4: 3 3 3 1 1 2 4 4 4 3 5 2
栈位5: 1 3 3 1 1 1 1 4 3 3
------------------------------------------------------
命中(n=4): H H H H H H H (共 7 次)
命中(n=5): H H H H H H H H H (共 10 次)
- 第 (1) 问计算:
- 当 时,命中时刻为:3, 6, 8, 9, 10, 11, 15,共 7 次命中 。
- 当 时,在 基础上午多命中了时刻 8, 12, 13(共 10 次命中)。
- 第 (2) 问最优分配决策:
总实页数为 9 页,分配方案只有两种可能:
- 方案一:A 分配 5 页,B 分配 4 页:
- 方案二:A 分配 4 页,B 分配 5 页:
- 结论:因为 ,所以 给 A 分配 5 页,给 B 分配 4 页 时系统效率最高。
题型七:流水线性能分析(时空图与周期性间歇吞吐率 Tp)
🎭 考点人话与爆笑透析
流水线就像工厂流水线,每个工序耗时 。
-
普通流水线连绵不断,吞吐率 。
-
周期性间歇流水线:工人干完 5 个活(输入 5 个数据),集体摸鱼休息 ,然后再干 5 个活!
-
核心抓手:找准一个周期的总时间和一个周期处理的任务数!
- 连续输入 5 个数据需要耗时:第 1 个数据占 ,第 2 个占 5个数据输入耗时 ;
- 加上间歇 ;
- 所以一个完整输入周期 ?慢着,看时空图的输出周期!
📝 真题演练(1410真题)
题目:
流水线由 4 个功能部件组成,每个功能部件的延迟时间为 。当输入 5 个数据后,间歇 又输入 5 个数据,如此周期性地工作。
- 画出时空图;
- 求此时流水线的吞吐率 。
💡 步骤与图解:
- 时空图绘制:
- 部件数 。
- 数据 1 从 进入,经过 4 拍,在 结束;数据 2~5 依次滞后 流入。
- 第 5 个数据在 输入,在 输出完成。
- 输入间歇:输入完 5 个数据后( 时刻后),停顿 ,下一个周期的第 1 个数据在 处流入?
- 官方标准时空图显示:输入 ① 在时刻 0,⑤ 在时刻 4 输入;输入完 5 个后(时刻 5 之后空出 的输入间歇),下一批 ① 在时刻 (或间歇后)周期性流入。
- 两个周期对应数据输出的间隔为 (即完成 5 个数据的周期时间为 )。
部件4 | [1][2][3][4][5]
部件3 | [1][2][3][4][5]
部件2 | [1][2][3][4][5]
部件1 |[1][2][3][4][5] [1][2]...
+---------------------------------------> 时间(Δt)
时间: 0 1 2 3 4 5 6 7 8 9 10 11
输入: (1) (5) (1)
- 吞吐率计算:
- 在一个重复周期内,处理的任务数为 5 个,所花费的周期时间为 。
- 故流水线的吞吐率为:
题型八:指令重叠解释方式与执行时间计算
🎭 考点人话与爆笑透析
一条指令的执行分为三部曲:取指() 分析() 执行()。
-
顺序执行:一条指令彻底完事,下一条才开始。耗时最长,纯纯老牛拉破车。
-
一次重叠(二段流水):第 条指令的“执行”与第 条指令的“取指”同时搞。
-
二次重叠(三段流水):取指、分析、执行三班倒,第 条执行、第 条分析、第 条取指同时并发!
📝 真题演练(1504真题)
题目:
假设指令的解释分取指、分析与执行 3 步,每步的时间相应为 、、。分别计算下列情况下,执行完 100 条指令所需时间的一般关系式:
- 顺序方式;
- 仅“执行 ”与“取指 ”重叠;
- 仅“执行 ”、“分析 ”与“取指 ”重叠。
💡 考场公式秒杀推导:
- 顺序执行方式:
每条指令耗时
- 仅“执行 ”与“取指 ”重叠(一次重叠):
- 第 1 条指令先做完取指、分析:;
- 之后进入 99 次重叠循环,每次循环的瓶颈由 加上必须串行的 决定;
- 最后收尾完成第 100 条指令的执行:。
- 仅“执行 ”、“分析 ”与“取指 ”重叠(二次重叠 / 满流水):
- 流水线建立时间(第 1 条全部耗时):(中间各阶段衔接);
- 严格标准公式为:
题型九:互连网络(PM2I 单级互连网络函数与连线计算)
🎭 考点人话与爆笑透析
- PM2I(Plus-Minus ):
“加减 网络”。一圈处理机排排坐(编号 ),每个处理机 可以直接跳跃连接到 或 号处理机(走模 环形路线)。
- 时,,所以 可以取 。
- 时:;
- 时:;
- 时:;
- 时:(注意: 和 是同一个位置!所以合二为一)。
- 总共有 种互连函数!
📝 真题演练(1204真题)
题目:
编号为 的 16 个处理器,用 PM2I 单级互连网络互连。
- 写出所有各种单级 PM2I 的互连函数的一般式;
- 计算与 5 号处理器直接相连的处理器。
💡 步骤解题:
- 第 (1) 问:写出 7 个互连函数一般式:
-
-
-
-
-
-
-
- 第 (2) 问:代入 计算相连号:
-
-
-
-
-
-
-
- 最终相连处理器编号为:1, 3, 4, 6, 7, 9, 13(共 7 个)。
题型十:向量流水处理机(CRAY-1 串行/并行/链接拍数计算)
🎭 考点人话与爆笑透析
向量机处理 个元素的数组(比如做向量加、向量乘)。
- 硬件流水线各阶段耗时:
- 访存取数:输入需要时间,流水线延迟;
- 浮点加:流水线深 6 拍;
- 浮点乘:流水线深 7 拍;
- 数据存入寄存器:1 拍。
- 三种执行方式比喻:
1. 串行:做完加法,把全部 个结果写回寄存器;再启动乘法。
2. 并行:指令①(访存)和指令②(加法)没有数据冲突,俩人同时开工;完事后再做指令③(乘法)。
3. 链接技术(Chaining):最核心大招! 加法流水线刚吐出第 1 个元素,不等剩下 个吐完,立马直接牵线搭桥送进乘法流水线!流水线无缝级联!
📝 真题演练(1510真题)
题目:
求向量 ,向量为浮点数,元素个数均为 。参照 CRAY-1 方式分解为 3 条向量指令:
- ① (访存取 送入 寄存器组)
- ② ()
- ③ ()
已知:浮点加需 6 拍,浮点乘需 7 拍,访存取数需 6 拍(或按题设),数据存入寄存器需 1 拍。求 3 种方式各需多少拍?
💡 拍数推导:
- 单条向量指令执行时间通用公式:
- 指令①(访存取数): 拍
- 指令②(浮点加法): 拍
- 指令③(浮点乘法): 拍
- 方式 (1):①、②、③ 串行执行:
- 方式 (2):① 和 ② 并行执行后,再执行 ③:
- ① 与 ② 同时启动,耗时为 拍;
- 随后执行 ③ 耗时 拍;
- 方式 (3):采用链接技术(Chaining):
- 指令①和指令②并行启动;
- 指令②在产生第一个结果(经过 拍)以及指令①准备好数据时,直接链接送入乘法部件;
- 乘法部件的建立时间为 拍;
- 随后流水线畅通无阻,连续吐出 个结果需要 拍;
题型十一:阵列机并行存储器无冲突访问设计
🎭 考点人话与爆笑透析
在 的二维矩阵里,处理机经常需要:
-
一整行一起读(行访问)
-
一整列一起读(列访问)
-
主对角线一起读
-
次对角线一起读
如果多个元素落进了同一个存储体(分体),就会发生堵车(冲突)!
- 无冲突充分条件神定理:
- 存储体个数 必须是质数,且 。
- 同一列两个相邻元素地址错开距离 ;
- 同一行两个相邻元素地址错开距离 。
📝 真题演练(1410真题)
题目:
在 16 台 PE 的并行(阵列)处理机上,要对存放在 个分体并行存储器中的 二维数组实现行、列、主对角线、次对角线上各元素均无冲突访问,要求 至少为多少?此时数组在存储器中应如何存放?
💡 证明与存放方案:
- 求分体模数 :
- 设 为同列相邻元素错开距离, 为同行相邻元素错开距离;
- 充分条件公式:( 为质数,且 ),此时取 。
- 当 时,(不满足要求);
- 当 时,(17 是质数,且 ,满足要求!)。
- 故 至少为 17。
- 数组存放方案:
- ;。
- 数组元素 ()存放在存储体编号为:
- 存放方式说明:数组按行优先顺序存储,每行相邻元素存放在相邻存储体中(错开 1 个体);每列相邻元素在存储体中错开 4 个分体存放。
题型十二:多处理机并行算法(树形流程图优化与性能指标)
🎭 考点人话与爆笑透析
一个又臭又长的算式(比如霍纳法则多项式),单核 CPU 只能一步一步像贪吃蛇一样算,树高极高( 很大)。
多核多处理机可以通过乘法分配律、加法结合律把算式强行“摊平”,变成一颗矮矮胖胖的平衡二叉树(减少树高)!
- 指标大阅兵:
- 单处理机步数 :原表达式里一共有几个操作符,单核就得老老实实算几步。
- 并行树高/级数 :并行树有几层(高度)。
- 处理机数 :树中同一层最多同时有几个操作符在并行算(树的最大宽度)。
- 加速比 :(越快越牛)。
- 效率 :(算力利用率)。
📝 真题演练 1(1304真题)
题目:
有表达式 ,在多处理机上,要求利用减少树高的办法加速运算。
- 画出并行算法的树形流程图;
- 求处理机数 、运算级数 、单处理机级数 、加速比 和效率 的值。
💡 展开与树形图构建:
- 利用分配律展开原式:
(注:原答案整理为 或彻底展开成 4 项求和)
-
构建 4 层树形流程图:
graph TD
%% 第一层运算
E1["E * F"] --> A1["D + (E*F)"]
G1["G * H"] --> M1["(G*H) * D"]
A0["A * B"]
A2["A * C"]
%% 第二层运算
A1 --> M2["(A*C) * (D+E*F)"]
A2 --> M2
%% 第三层运算
A0 --> S1["(A*B) + (G*H*D)"]
M1 --> S1
%% 第四层顶层求和
S1 --> TOP["+ (总结果)"]
M2 --> TOP
- 计算各项指标:
- 单处理机运算级数 (原式共 8 次二元运算);
- 并行运算级数(树高);
- 处理机数 (同一时刻最多 3 个操作并行);
- 加速比 ;
- 效率 。
📝 真题演练 2:霍纳法则展开(1104真题)
题目:
用霍纳法则给定的表达式如下:。利用减少树高加速运算,画出流程图并求 。
💡 解答:
- 展开表达式:
或彻底展开:
- 指标计算:
- 单机步数 ;
- 树高 ;
- 处理机数 ;
- 加速比 ;
- 效率 。
题型十三:并行程序设计(FORK 与 JOIN 语句改写)
🎭 考点人话与爆笑透析
FORK m(分身术):
走到这行代码时,分出一个新线程/进程跳到标号 m 去并行跑,原来的线程继续往下走。相当于拉了个兄弟一起干活!
JOIN N(碰头暗号):
计数器汇聚。每个线程跑完自己的活,到 JOIN N 打卡报到。只有当累计有 N 个线程都打卡了,才允许放行 1 个线程继续往下走,其他打卡完的线程原地销毁。
📝 真题演练(1510真题)
题目:
若有下述程序:
1: U = A + B
2: V = U * B
3: W = U / A
4: X = V - W
5: Y = V / A
6: Z = X + Y
试用
FORK、JOIN语句将其改写成可在多处理机上并行执行的程序。假设现为两台处理机,且除法速度最慢,加、减法速度最快。
💡 依赖关系与关键路径调度分析:
- 数据相关性剖析:
- 计算完第 1 句 后,第 2 句()和第 3 句()彼此独立,可以并行!
- 因为除法最慢,乘法较快,所以让分身提前去啃除法这块硬骨头!
- 算完 和 之后,算 与 又可以并行!
-
标准改写程序(满分答案):
10 U = A + B ; 必须先算 U
FORK 30 ; 派生处理机去执行标号 30(计算漫长的除法 W)
20 V = U * B ; 主处理机算 V
JOIN 2 ; 汇聚等待 (V 和 W 必须都完成)
GOTO 40 ; 防止直接掉进标号 30
30 W = U / A ; 并行分支算 W
JOIN 2 ; 汇聚打卡
40 FORK 60 ; 派生处理机去执行标号 60(计算耗时的除法 Y)
50 X = V - W ; 主处理机算减法 X
JOIN 2 ; 汇聚等待 (X 和 Y 必须都完成)
GOTO 70
60 Y = V / A ; 并行分支算 Y
JOIN 2 ; 汇聚打卡
70 Z = X + Y ; 最后汇聚求和
🎯 终极考场提分三板斧
graph LR
A[拿到试卷] --> B{识别应用题型}
B -->|中断屏蔽字| C[口诀: 排我后面的填1, 排我前面的填0]
B -->|虚存替换| D[先算虚页号 = 虚地址/页大小, 画表数 H]
B -->|多机树高| E[展开多项式平铺, 计算 Tp/P/Sp/Ep]
B -->|FORK-JOIN| F[找独立计算段, 慢的丢给 FORK, 结束前 JOIN 2]
-
审题看单位:如主存频宽题目的 与 、页式替换里的字(Word)与页大小。
-
画表要规范:FIFO/LRU 标记每一拍是“装入”、“替换”还是“命中(H)”,最后必须显式写出 。
-
公式先摆上:无论是加速比 ,还是吞吐率 ,即便数字算慢了,公式分全部稳拿!
(祝君 02325 计算机系统结构一战圆满高分通关!🎉)