
姓名: 计算机系统结构 6.823期中考试 春季2001 姓名: 开卷考试,可以参考课本和笔记 110分钟 共16页(译者注:中文试题只有10页) 注意: ·每道试的难度不尽相同,所以请先测览整套试卷并仔细分配好答间。 试卷的最后两页谨供您参考,对这部分您尽可放心,我们不会对您在这部分所写的 内容进行评分。 请在期中考试试叁的每一页都填写您的姓名。(只是这么做您就可以得到5分) 姓名 5分 Part A(Q1-Q4): 26分 Part B(Q5-Q10): 3引分 Part C(Q11-Q12): 12分 Part NQ13-Q19): 27分 Part DX(Q2019分 计: 110分
姓名:____________________________ 计算机系统结构 6.823 期中考试 春季 2001 姓名:___________ 开卷考试,可以参考课本和笔记 110 分钟 共 16 页(译者注:中文试题只有 10 页) 注意: z 每道试题的难度不尽相同,所以请先浏览整套试卷并仔细分配好答题时间。 z 试卷的最后两页谨供您参考,对这部分您尽可放心,我们不会对您在这部分所写的 内容进行评分。 z 请在期中考试试卷的每一页都填写您的姓名。(只是这么做您就可以得到 5 分) 姓名:________5 分 Part A(Q1—Q4):_______26 分 Part B(Q5—Q10):_______31 分 Part C(Q11—Q12):_______12 分 Part A(Q13—Q19):_______27 分 Part D(Q20):_______ 9 分 合计: __________110 分

姓名: PartA:微程序设计 为了提高性能,Ben Bitdiddle决定在最初基于总线的DLX实现(课件4-2)》上添加 鞋立的C寄存器和一个C+4加法器。修改后的基于总线的DLX见图1。我们假设存 储器在一个时钟周期内可以完成读或写操作个一次。 图L.修政后的基于总线的DLX机(原文图缺) Fth、BNEZ、ADD、JR,JAL和JALR的原始微代玛如下所示: (请注意,误件425中的错误在这里已经得到纠正,并且作了一些优化) Feeh0:MA←—PC,A←—PC ADD0:A←—Re girf] Fetchl:IR←一Mem ADDI:B←—Regd2] Fech2:PC←—A+4,dispatch ADD2:Reglrf3)←—A+B:eCh BNEZ0:A←—Reglrfl JRo:A←—Reglrf] BNEZI:B←一sExt (Imm).feg= JR:PC←一在h BNEZ2:A←-PC BNEZ3:PC←—A+B,ECh JAL0:A←—PC JALR0:A←—PC JALI:Reg3←A JALR:Reg3←一A JAL2:B←s(lmmj JALR2:PC←—Re g[rfi].ferch JAL3:PC←—A+B,eCh Qursti0n1(12分) 对于上述所有微代码序列,说明为什么使用独立℃寄存器和℃+4如法器能加快 他们的运行建度,如果是这样,给出新的微代码序列
姓名:____________________________ Part A: 微程序设计 为了提高性能,Ben Bitdiddle 决定在最初基于总线的 DLX 实现(课件 4-2)上添加 独立的 PC 寄存器和一个 PC+4 加法器。修改后的基于总线的 DLX 见图 1。我们假设存 储器在一个时钟周期内可以完成读或写操作个一次。 图 1. 修改后的基于总线的 DLX 机(原文图缺) Fetch、BNEZ、ADD、JR、JAL 和 JALR 的原始微代码如下所示: (请注意,课件 4-25 中的错误在这里已经得到纠正,并且作了一些优化) Fetch PC A dispatch Fetch IR Mem Fetch MA PC A PC 2 : 4; 1: 0 : , ←⎯⎯ + ←⎯⎯ ←⎯⎯ ←⎯⎯ ADD g rf A B fetch ADD B g rf ADD A g rf 2 : Re [ 3] ; 1: Re [ 2] 0 : Re [ 1] ←⎯⎯ + ←⎯⎯ ←⎯⎯ BNEZ PC A B fetch BNEZ A PC BNEZ B sExt m feqz BNEZ A g rf 3 : ; 2 : 1: (Im ); 0 : Re [ 1] 16 ←⎯⎯ + ←⎯⎯ ←⎯⎯ ←⎯⎯ JR PC A fetch JR A g rf 1: ; 0 : Re [ 1] ←⎯⎯ ←⎯⎯ JAL PC A B fetch JAL B sExt m JAIL g A JAIL A PC 3 : ; 2 : (Im ) 1: Re [31] 0 : 26 ←⎯⎯ + ←⎯⎯ ←⎯⎯ ←⎯⎯ JALR PC g rf fetch JALR g A JALR A PC 2 : Re [ 1]; 1: Re [31] 0 : ←⎯⎯ ←⎯⎯ ←⎯⎯ Question1 (12 分) 对于上述所有微代码序列,说明为什么使用独立 PC 寄存器和 PC+4 加法器能加快 他们的运行速度,如果是这样,给出新的微代码序列

姓名, Ben看到了如下的伪代码: If A is0,B←C Ben将这段伪代码转换为如下所示的DLX代码.假设RaRb和Re为别装载AB和C的 初始值。而且不存在廷迟情(deys侧)。 BNEZ Ra.done ADD Rb.Re.RO done. Questi023分) 在原始的和修政后的基于总线的DX机上执行上述代码序列各需多少周期?假设 A0的顺率为05, Alyssa P.Hacker发现Ben所给出的那段伪代码是常用的,所以也决定实现一个新 指令,称为CMOV(conditional move。这条新指◆的使用形式如下: CMOV RI,R2,R3 :如果R2是0,R1得到R3的值。 (仔细注意寄存器号!) Q▣sion38分) 写出这条新指令的微代码。 0usi0m43分) 使用CMOV指令,写出伪代码的D1X代码。现在执行这段DLX代马平均需要多 少时钟周期?仍然假设A-0的颜率为0.5
姓名:____________________________ Ben 看到了如下的伪代码: If A is 0, BÅC Ben 将这段伪代码转换为如下所示的 DLX 代码。假设 Ra,Rb 和 Rc 为别装载 A,B 和 C 的 初始值,而且不存在延迟槽(delay slot)。 BNEZ Ra, done ADD Rb, Rc, R0 done: Question2 (3 分) 在原始的和修改后的基于总线的 DLX 机上执行上述代码序列各需多少周期?假设 A=0 的概率为 0.5。 Alyssa P. Hacker 发现 Ben 所给出的那段伪代码是常用的,所以他决定实现一个新 指令,称为 CMOV(conditional move)。这条新指令的使用形式如下: CMOV R1, R2, R3 ;如果 R2 是 0,R1 得到 R3 的值。 (仔细注意寄存器号!) Question3 (8 分) 写出这条新指令的微代码。 Question4 (3 分) 使用 CMOV 指令,写出伪代码的 DLX 代码。现在执行这段 DLX 代码平均需要多 少时钟周期?仍然假设 A=0 的概率为 0.5

姓名: Part B:流水线(31分) Ben Bitdiddle认为在SW/SB/SH和BEQZ/BNEZ指令的回写阶段不使用寄存器写端 口是一种资源浪贵。于是,他提出了一个想法,向DX1SA添加自增/自减指令.。 新指令的形式如下(其它的带令以此类推): Sw rd.(rs1+=offset) M[sl+eije←—rd 该指令的作用是: ◆注意:oe是有符号值 rsl←rsl+ofer BEQZ rsl+-,of压a BEOZ rsl-offset 这意味着1的白增/白减发生在执行跳转之后。 0usi0m5(5分 为了能执行这些新指令,Bn需要将标准的5段镇水结构(在课堂上讲的)如何政 变(参考课木期中结尾部分的附图)。不煲扫心控制逻辑,假定流水线是完全旁通的, 解释新雷令是如何执行的。 Question64分) 是否需要额外的停滑条作?如果不需要,为什么?如果需要那么为每次停潘写出代 码序列并指出导致了多少停沛周期。 考虑下列C语言代码片断(用于数组携贝)。a和b是整型(4字节)数组。服定0 fo(i=mi>=0:-){ b[i]-ali
姓名:____________________________ Part B: 流水线 (31 分) Ben Bitdiddle 认为在 SW/SB/SH 和 BEQZ/BNEZ 指令的回写阶段不使用寄存器写端 口是一种资源浪费。于是,他提出了一个想法,向 DLX ISA 添加自增/自减指令。 新指令的形式如下(其它的指令以此类推): SW rd, (rs1 += offset) 该指令的作用是: rs rs offset M rs offset rd ←⎯⎯ + + ←⎯⎯ 1 1 [ 1 ] *注意:offset是有符号值 BEQZ rs1++, offset BEQZ rs1 -- ,offset 这意味着 rs1 的自增/自减发生在执行跳转之后。 Question5 (5 分) 为了能执行这些新指令,Ben 需要将标准的 5 段流水结构(在课堂上讲的)如何改 变(参考课本期中结尾部分的附图)。不要担心控制逻辑,假定流水线是完全旁通的, 解释新指令是如何执行的。 Question6(4 分) 是否需要额外的停滞条件?如果不需要,为什么?如果需要那么为每次停滞写出代 码序列并指出导致了多少停滞周期。 考虑下列 C 语言代码片断(用于数组拷贝)。a 和 b 是整型(4 字节)数组。假定 n>=0 for ( i = n; i > = 0 ; i--) { b [ i ] = a [ i ]; }

姓名: 初始DLX ISA的汇编代码如下: :Ra=a.Rb=b.Rn=n SLLI R5.Rn.2 ADD RaRa,R5 ADD Rb.Rb.RS Loop LW R6,Rn,2 ADDI Ra.Ra.-4 SW R6,0(Rb) ADDI R贴,Rh,一4 BNEZ Rn loop ADDI Rn,Ra,一I 这个D1X的执行有一个跳转延迟情(无禁止位), Qusi0m78分) 使用新指令,实现上述C代码。尽量使新代码的执行效率高些。我们并不关心执 行后寄存器里面的值是多少, Question83分) 新旧流水线下,执行每次循环达代各需要多少周期(发射时间片)? Questi09(4分) 白增存储指令无要特别的中断处理吗?解释之。 Question10(7分) 在误件1了-10中,有一种解决方案,在延迟槽(d四s)里处理中断,当有一 个中断时,如果指令I,在运迟栅中,那么保存PC面不是PC,这样跳转指令就梭重 新执行了一次,自增/自减跳转能使用这种机制吗?如果可以,请您解释原因。如果不 行,请解释原因并给出另一种可行的方案
姓名:____________________________ 初始 DLX ISA 的汇编代码如下: ;;Ra = a , Rb = b, Rn = n SLLI R5, Rn, 2 ADD Ra, Ra , R5 ADD Rb, Rb , R5 Loop: LW R6, Rn, 2 ADDI Ra, Ra, —4 SW R6, 0 (Rb) ADDI Rb, Rb, —4 BNEZ Rn, loop ADDI Rn, Rn, —1 这个 DLX 的执行有一个跳转延迟槽(无禁止位)。 Question 7 (8 分) 使用新指令,实现上述 C 代码。尽量使新代码的执行效率高些。我们并不关心执 行后寄存器里面的值是多少。 Question8 (3 分) 新旧流水线下,执行每次循环迭代各需要多少周期(发射时间片)? Question9 (4 分) 自增存储指令需要特别的中断处理吗?解释之。 Question 10 (7 分) 在课件 L7-10 中,有一种解决方案,在延迟槽(delay slots)里处理中断。当有一 个中断时,如果指令 在延迟槽中,那么保存 而不是 ,这样跳转指令就被重 新执行了一次。自增/自减跳转能使用这种机制吗?如果可以,请您解释原因。如果不 行,请解释原因并给出另一种可行的方案。 i I PCi−1 PCi

姓名, Part C Cache(12分) 你刚刚接受了一份在Cch-R-Uy作研究科学家的职位。你的第一个任务是评估各 种Cache组织的不足.你决定从两种基本的Cache开角,两种Cache的容量都是4个字 (wor山),第一种Ce果用直接肤射,每行一个字,第二种是全关联映射,也是每行 一个字,并且采用LRU背换算法。对于下面所有试墨,我们都假设Che初始为空, 也就是说所有行都是无效的。 Question115分) 请述一种存储器访问方式,使得请问全关联映射Cce的命中率要比访问直接映 射Cahe的高些。 0知si0m127分) 是否存在一种存储器访问方式,使得访问直接映射Ce的命中率要比访问全关联 映射Che的高?如果存在,请给出一种访月方式,如果不存在,请说明理由。 Part D:破解虚拟内存(27分) Ben己经特用你为他的最新微处理墨一he Bentium/m一的顺问。他正在验证有 关使用6耐位虚拟地址的概念。 0usi0m13(2分) 如果只是用单级页表,那么这个页表需要多大?假设每页有4KB,每个Pga6 rentry有4字节,并且Bentium可拨字节寻址
姓名:____________________________ Part C Cache(12 分) 你刚刚接受了一份在 Caches-R-Us 作研究科学家的职位。你的第一个任务是评估各 种 Cache 组织的不足。你决定从两种基本的 Cache 开始,两种 Cache 的容量都是 4 个字 (words)。第一种 Cache 采用直接映射,每行一个字。第二种是全关联映射,也是每行 一个字,并且采用 LRU 替换算法。对于下面所有试题,我们都假设 Cache 初始为空, 也就是说所有行都是无效的。 Question 11 (5 分) 请描述一种存储器访问方式,使得访问全关联映射 Cache 的命中率要比访问直接映 射 Cache 的高些。 Question12 (7 分) 是否存在一种存储器访问方式,使得访问直接映射 Cache 的命中率要比访问全关联 映射 Cache 的高?如果存在,请给出一种访问方式,如果不存在,请说明理由。 Part D:破解虚拟内存(27 分) Ben 已经聘用你为他的最新微处理器—the Bentium TM I —的顾问。他正在验证有 关使用 64 位虚拟地址的概念。 Question13 (2 分) 如果只是用单级页表,那么这个页表需要多大?假设每页有 4KB,每个 Page table rentry 有 4 字节,并且 Bentium 可按字节寻址

处名: Bm在近期的技术刊物上看到现在64位SAs的实现只完成了虚报地址空间的一部 分。他通常把虚拟地址分为三段:一部分给栈,一部分给代码和堆数据,第三部分未 分配.举例来说,Benhammer口 processor's虚抵制采用如下所示的结构: 0 XFEEEEEEEEEEEEEE用 为楼预壁的空间 0xFF00000000000000 OxOOFFFFEFFFFFFFFE 为代码和增锁留的空间 0x0000000000000000 在地址被送到虚拟内存系统之牌,有一个特殊的电路用来探测地址的高8位是否为 全“0”或者全“1”。如果它们不全相等,无效虚报内存地址陷除位置。这种方案实 际上从虚凯内存地址去除了高7位,但是保图了存储墨布同,这种布局与将米实现大虚 拟地址空间的设计兼容。 Question14(2分) Ben喜数Benhammer结构,l是他想使用一种更便真的虚拟内存系统,因此在 Beum中他决定去除虚根地址的高22位,具保留低42位用于索引虚拟内存,现在单 级页表需要多大? Qusi0m155分) Bn仍然不端意页表的大小,他让你使用一个三级结构的页表,将原先单个的42 位地址转赖为三个10位的页索引,和一个2位的真偏移量,如果页表开销定义如下(按 字节定义): PHYSICAL·MEMORY:USED·BY·PAGE·TABLES·FOR·A.USER-PROCE5S PHYSICAL-MEMORY.USED-BY-THE-USER-CODE.HEAP.AND.STACK 一个用户进程颈表是用的物理内存 用户代码、堆和栈使用的物理内存 在这种三级结构的页表中,最小的页表开销可能是多大?请记住,哪怕只有一个 PTE被使用,也会分配一个完整的页表页(1024PT正).假设存在足够大的物理内存,使 得不会有页被交换到硬盘
姓名:____________________________ Ben 在近期的技术刊物上看到现在 64 位 ISAs 的实现只完成了虚拟地址空间的一部 分。他们通常把虚拟地址分为三段:一部分给栈,一部分给代码和堆数据,第三部分未 分配。举例来说, Benhammer Tm processor’s 虚抵制采用如下所示的结构: 在地址被送到虚拟内存系统之前,有一个特殊的电路用来探测地址的高 8 位是否为 全“0”或者全“1”。如果它们不全相等,无效虚拟内存地址陷阱位置 1。这种方案实 际上从虚拟内存地址去除了高 7 位,但是保留了存储器布局,这种布局与将来实现大虚 拟地址空间的设计兼容。 Question14(2 分) Ben 喜欢 Benhammer 结构,但是他想使用一种更便宜的虚拟内存系统,因此在 Bentium 中他决定去除虚拟地址的高 22 位,只保留低 42 位用于索引虚拟内存。现在单 级页表需要多大? Question15(5 分) Ben 仍然不满意页表的大小,他让你使用一个三级结构的页表,将原先单个的 42 位地址转换为三个 10 位的页索引,和一个 12 位的页偏移量。如果页表开销定义如下(按 字节定义): PHYSICAL MEMORY USED BY THE USER CODE HEAP AND STACK PHYSICAL MEMORY USED BY PAGE TABLES FOR A USER PROCESS ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ , , 一个用户进程页表是用的物理内存 用户代码、堆和栈使用的物理内存 在这种三级结构的页表中,最小的页表开销可能是多大?请记住,哪怕只有一个 PTE 被使用,也会分配一个完整的页表页(1024PTEs)。假设存在足够大的物理内存,使 得不会有页被交换到硬盘

姓名: Question165分) 对于三缓结构的真表米说,可修的最大莫表开情是多少?假设一旦用户页被调入内 存。那么整页都是有用的。 A小ssa P Hacker根不喜欢Henhammer结构中虚瓶地址的存储空间中那个大的空制 (即那块未被分配的区域,译者注)。她认为哈希页表是一种可行的办法。像上面一样, 这台机器有64位虚数地址和4KB页。便件分页系统具有一个4行的页表,每行包括 8PTEs:A小sm决定使用X对64求余作为哈希函数米这择行,这里的X是指VPN,页 表駐留于内存而且在As始的设计中没有TB,所以每个PT正读只需要一次内存访利: 在查找页表的过程中,所有行的PTE是顺序查找的。如果访问页表没有命中,陷阱位 置位,同时状件处理程序会重新装入页表,每次重装页表平均需要对内存进行10次访 月 0usi0n176分) 小ya对地的新修政很满意,并且述行了一个很简单的基准程序,重复循环一个2 字节大小的数组,每次按地址顺序读一个字节。在稳定状态下,用户程序执行一次字节 读操作平均需要访问多少次内存?不必考虑取指令所发生的存储器访问,假设数组的起 始地址在页边界,而且在用户代码中障了单学节内存访问,不会有其它的内存访问。 Quetion 182分) Alym现在决定为哈希分页系统(ashed paging司em》增加一个单行的几.B。那 么TLB的替换算法应该是什么?在下列最合适的答案上打勾。 )FIFO b)LRU c) Random d)Doesn't matter,all of above give the same performance Question195分) 根据您上题的答案,对于Ay的基准程序米说,现在每次用户字背读操作平均需要访 问多少次内存?
姓名:____________________________ Question16 (5 分) 对于三级结构的页表来说,可能的最大页表开销是多少?假设一旦用户页被调入内 存,那么整页都是有用的。 Alyssa P. Hacker 很不喜欢 Benhammer 结构中虚拟地址的存储空间中那个大的空洞 (即那块未被分配的区域,译者注)。她认为哈希页表是一种可行的办法。像上面一样, 这台机器有 64 位虚拟地址和 4KB 页。硬件分页系统只有一个 64 行的页表,每行包括 8PTEs。Alyssa 决定使用 X 对 64 求余作为哈希函数来选择行,这里的 X 是指 VPN。页 表驻留于内存而且在 Alyssa 的设计中没有 TLB,所以每个 PTE 读只需要一次内存访问。 在查找页表的过程中,所有行的 PTE 是顺序查找的。如果访问页表没有命中,陷阱位 置位,同时软件处理程序会重新装入页表,每次重装页表平均需要对内存进行 10 次访 问。 Question17(6 分) Alyssa 对她的新修改很满意,并且运行了一个很简单的基准程序,重复循环一个 字节大小的数组,每次按地址顺序读一个字节。在稳定状态下,用户程序执行一次字节 读操作平均需要访问多少次内存?不必考虑取指令所发生的存储器访问,假设数组的起 始地址在页边界,而且在用户代码中除了单字节内存访问,不会有其它的内存访问。 21 2 Quetion18(2 分) Alyssa 现在决定为哈希分页系统(hashed paging system)增加一个单行的 TLB。那 么 TLB 的替换算法应该是什么?在下列最合适的答案上打勾。 a) FIFO b) LRU c) Random d) Doesn’t matter, all of above give the same performance Question19(5 分) 根据您上题的答案,对于 Alyssa 的基准程序来说,现在每次用户字节读操作平均需要访 问多少次内存?

姓名: Part E计分板技术(9分) DLX浮点单元(PU)使用独立的诗存图组。一fs· 考虑下述指令循环。假设有一个跳转延迟槽 loop: 100p loop: 111 E人A(E2 1t E限A(x2) 1 0 A(E21 1912 29(E2) 1 E2,x2) 1里 B(x21 1, 1,2 mu1七【 1. 12 每u1t 1,2 addt 3,t3, addt t3,f3,f1 addt t3,13, seq r5,x2,x6 seq x5,r2,x6 seq r5,工2,r6 beqz r5,100P beq平 r5,loop beqz r5,loop Iy addi x2,x2,4 addi r2,x2,4 addi r2,x2,4 RAN 时A只 A司 Question209分) 在上图中,面出所有的RAW、WAR、和WAW相关,包括跨循环的相关性,对于每一 种冲突。我们己经给出了一个相关例子。请保持您试鞋的整洁以便我们能准确饼认出您所面 出的相关性。 全旁通数据路径 Fully Bypassed Datapath BSre
姓名:____________________________ Part E 计分板技术(9 分) DLX 浮点单元(FPU)使用独立的寄存器组 0 15 f − f 。 考虑下述指令循环。假设有一个跳转延迟槽 Question20(9 分) 在上图中,画出所有的 RAW、WAR、和 WAW 相关。包括跨循环的相关性。对于每一 种冲突,我们已经给出了一个相关例子。请保持您试卷的整洁以便我们能准确辨认出您所画 出的相关性。 全旁通数据路径

姓名: Midterm Summary (期中考试展要,后面页母无装,泽者注)】 PartA:Microprogrumming(26points)... 2 Questionl(12 points)....... Question2(3 points)..... Question3(8 points)..... Question4(3 points)..... w 4 PartB:Pipelining(3lpoints).. Question5(5 points)..... 45 Question6(4 points)..... m 5 Questi0n7得points)mm 6 Question8(3 points)...... Question9(4 points)..... Question10 (7 points)....... 7 PartC:Caches(12points)....... Question11(5 points)..... 8 Question12(7 points).... 18 PartD:Hacking VirtualMemory(27points). 9 Question13(2 points)...... 9 Question 14 (2 points).. 10 Question 15 (5 points)......... 10 Question 16 (5 points)...... Question 17 (6 points)........ 12 Question 18 (2 points)....... ,13 Question 19 (5 points)....... 13 PartE:Scoreboarding(9points). Question 20 (9 points)...... 4 MidtermSummary...... 16
姓名:____________________________ Midterm Summary (期中考试概要,后面页号无效,译者注) PartA:Microprogramming(26points)...........................................................................2 Question1(12 points) .............................................................................................. 3 Question2(3 points) ................................................................................................ 4 Question3(8 points) ................................................................................................ 4 Question4(3 points) ................................................................................................ 4 PartB:Pipelining(31points).......................................................................................5 Question5(5 points) ................................................................................................ 5 Question6(4 points) ................................................................................................ 5 Question7(8 points) ................................................................................................ 6 Question8(3 points) ................................................................................................ 6 Question9(4 points) ................................................................................................ 7 Question10 (7 points) ............................................................................................. 7 PartC:Caches(12points)............................................................................................8 Question11(5 points) .............................................................................................. 8 Question12(7 points) .............................................................................................. 8 PartD:HackingVirtualMemory(27points)................................................................9 Question13(2 points) .............................................................................................. 9 Question 14 (2 points) .......................................................................................... 10 Question 15 (5 points) .......................................................................................... 10 Question 16 (5 points) .......................................................................................... 11 Question 17 (6 points) .......................................................................................... 12 Question 18 (2 points) .......................................................................................... 13 Question 19 (5 points) .......................................................................................... 13 PartE:Scoreboarding(9points)...............................................................................14 Question 20 (9 points) ......................................................................................... 14 MidtermSummary.......................................................................................................16