
6.823计算机系统结构 DLX的数据路径 习题#2 2002春季 学生每三人分成一个小组合作光成作业。每组只需要交一份该习思的答案。在预定课 程开始的时候,会布置作业。为了便于评分,各种习愿必须鞋立分类。参考答案一经发成, 我们门将不再接收作业。 习题1:微程序与基于总线的结构 习题1.A 在微程序DLX机中,执行下列指◆各需要多少个时钟周期?使用DLX-Controller-2的 状态和控制点,假设存储器停滞。 指令 时钟周期 ADD R3,R2,RI ADDI R2,R1,44 工W R1,0(R2) BEQZ R1,1abe1(R1-■0) BEQZ R1,label (RI !0) label JR RI JAL label JALR RI 哪条指令执行时需要的时钟周期最多?哪条需要的最少? 习题1.B Ben Bitdiddle需要计算小整数的阶乘。在意识到使用微程序的DLX机没有乘法指令后, 他决定用如下代码来计算无符号数口的阶乘
6.823 计算机系统结构 DLX 的数据路径 习题#2 2002 春季 学生每三人分成一个小组合作完成作业。每组只需要交一份该习题的答案。在预定课 程开始的时候,会布置作业。为了便于评分,各种习题必须独立分类。参考答案一经发放, 我们将不再接收作业。 习题 1:微程序与基于总线的结构 习题 1.A 在微程序 DLX 机中,执行下列指令各需要多少个时钟周期?使用 DLX-Controller-2 的 状态和控制点,假设存储器停滞。 哪条指令执行时需要的时钟周期最多?哪条需要的最少? 习题 1.B Ben Bitdiddle 需要计算小整数的阶乘。在意识到使用微程序的 DLX 机没有乘法指令后, 他决定用如下代码来计算无符号数 n 的阶乘

result 1; for(i■0;i<n;i++)( temp result; for (0;j<;++) result +temp; 其中变量i,人n,1emp和et是无符号边位数。 具能使用微程序DLX可执行的指令(ALU,AL.UiLW.SWJJAL JR JALR .BEQZ和 BENZ),用汇编语言实现Bm的阶乘代码。微程序DLX机没有转移延迟槽。使用RI存精 n,R2存储心ut。在代码执行完成后,具有R2中的值必须正确,其他寄存器中的值不需 要保存。 为了计算阶乘,总共需要执行多少条DX指令?又总共耗费多少时钟周期?和上题一 样,使用D儿X-Co@-2的状态和控制点,假设存储器停滑。 阶来(阶) 指令数 时种周期数 0 1 2 3 N 习题1.C Alyssa P.Hacker告诉Bem。知果触能在微程序DLX机中实观无符号数乘法指令,那么 他的阶乘代码运行起米会快很多。之后,Bn用新的无符号乘法指令替代原来代码内循环的 指◆了。 Ay知提出的无符号乘法折令的详细说明如下: MULU Rd,Rs1,Rs2Rd <Rs1+...Rs1 (Rs2 times) Rsl中的值自如了Rs2次,结果存入Rd.Rs和R2都是无符号32位数。如果Rs2或 Rs1为0,那么最然Rd中的结果也为O,MUU指令的格式是R-四, 为了能编写MU几U的微程序,Ay5在寄存器组中添加了一个新寄存器TD33):就像 C寄存器一样,这个寄存器对程序员来说,是透明的。同时,地也将3封作为寄存器组复用 器的一个输入。 使用答题表1,编写微程序米实现A小a的新无符号乘法指令。 在答题表1中,“下一状态”所代表的意思和我们在课件中讲的有所不月。表的最后两 列用米说明下一状老。Br(微轮移,mih)列表示一个2位字段,共有4种可能的 值:NJZ和D.如果uB值为Nnc),那么下一状态只是在当前状态上加1.如果值为ump
其中变量 i、j、n、temp 和 result 是无符号 32 位数。 只能使用微程序 DLX 可执行的指令(ALU,ALUi,LW,SW,J,JAL,JR,JALR,BEQZ 和 BENZ),用汇编语言实现 Ben 的阶乘代码。微程序 DLX 机没有转移延迟槽。使用 R1 存储 n,R2 存储 result。在代码执行完成后,只有 R2 中的值必须正确,其他寄存器中的值不需 要保存。 为了计算阶乘,总共需要执行多少条 DLX 指令?又总共耗费多少时钟周期?和上题一 样,使用 DLX-Control-2 的状态和控制点,假设存储器停滞。 习题 1.C Alyssa P. Hacker 告诉 Ben,如果他能在微程序 DLX 机中实现无符号数乘法指令,那么 他的阶乘代码运行起来会快很多。之后,Ben 用新的无符号乘法指令替代原来代码内循环的 指令了。 Alyssa 提出的无符号乘法指令的详细说明如下: Rs1 中的值自加了 Rs2 次,结果存入 Rd。Rs1 和 Rs2 都是无符号 32 位数。如果 Rs2 或 Rs1 为 0,那么显然 Rd 中的结果也为 0。MULU 指令的格式是 R-type。 为了能编写 MULU 的微程序,Alyssa 在寄存器组中添加了一个新寄存器 T0(33)。就像 PC 寄存器一样,这个寄存器对程序员来说,是透明的。同时,她也将 33 作为寄存器组复用 器的一个输入。 使用答题表 1,编写微程序来实现 Alyssa 的新无符号乘法指令。 在答题表 1 中,“下一状态”所代表的意思和我们在课件中讲的有所不同。表的最后两 列用来说明下一状态。µBr(微转移,microbranch)列表示一个 2 位字段,共有 4 种可能的 值:N,J,Z和D。如果µBr值为N(next),那么下一状态只是在当前状态上加1。如果值为J(jump)

那么下一状老就毫无疑问的是“下一状态”列中说明的状态(例如,是一次无条件微跳转)。 如果B断r为Z(-0跳转,beah-if2o),那么下一状态就依机于ALU的零输出标志《例如, 是一次条件微线转》。如果该标志位是1,郑么下一状态是“下一状态”列中说明的状态, 否则,就是当前状态加1.如果μBr是D(分发ds即ch),那么FSM就在R中查找操作码 和功修字段,然后进入相应状老。在本习题集中,我们假设分发(ds即h)进入标记好的 状布(DLX-instruction-name+T“)。例如,知果IR中的指令是sW,那么,分发进入sW0. ALU的操作由ALU操作码(ALUOp)米定义,而ALUOp由ALU控制逻辑块决定。 假设AU能执行以下操作: ALUOp L结果输出 COPY A A COPY B B INC A_1 A+1 DEC A 1 A-1 INC A 4 A+4 DEC_A4 A-4 ADD A+B SUB A-B 对于R2中不同的值。执行MULU指令各耗费多少时钟周期? R2 Cycles 0 习题1.D 对于A小3的新无符号渠法指◆,B酬释了他原来阶乘代码的内福环,将其简化, 如下所示: result 1; for(1■1;1<■n:1++)4 result result in 帮助Bm使用MUU指令编写实现阶乘的汇偏指令,还像以前样使用R1存错nR2 存错u血。代码执行完成后,只有R2中的值必须正确,其他寄存器中的植不看要保存。 计算阶乘执行了多少条DX指令?又要多少时钟周期?存铅器仍然假设停滞:
那么下一状态就毫无疑问的是“下一状态”列中说明的状态(例如,是一次无条件微跳转)。 如果µBr 为 Z(=0 跳转,branch-if-zero),那么下一状态就依赖于 ALU 的零输出标志(例如, 是一次条件微跳转)。如果该标志位是 1,那么下一状态是“下一状态”列中说明的状态, 否则,就是当前状态加 1。如果µBr 是 D(分发 dispatch),那么 FSM 就在 IR 中查找操作码 和功能字段,然后进入相应状态。在本习题集中,我们假设分发(dispatch)进入标记好的 状态(DLX-instruction-name+”0”)。例如,如果 IR 中的指令是 SW,那么,分发进入 SW0。 ALU 的操作由 ALU 操作码(ALUOp)来定义,而 ALUOp 由 ALU 控制逻辑块决定。 假设 ALU 能执行以下操作: 对于 Rs2 中不同的值,执行 MULU 指令各耗费多少时钟周期? 习题 1.D 对于 Alyssa 的新无符号乘法指令,Ben 删除了他原来阶乘代码的内循环,将其简化, 如下所示: 帮助 Ben 使用 MULU 指令编写实现阶乘的汇编指令。还像以前那样使用 R1 存储 n,R2 存储 result。代码执行完成后,只有 R2 中的值必须正确,其他寄存器中的值不需要保存。 计算阶乘执行了多少条 DLX 指令?又需要多少时钟周期?存储器仍然假设停滞

阶乘(阶) 指令数 时钟周期数 0 1 2 3 N 习题1.E 将微控制器和D儿X总线结构数据路径L4-5结合起来,形成一个光整的计算 机,它可以执行部分DLX ISA指令. 除了占川太多内存外,Aysa告诉Bn,使用原始DX微控制器(149)不是个好思 把还有个原因。一个使用原始微控制器的计算机,其指◆周期会比使用第2个微控制器(L415) 的长。但是B如不明白这是为什么? 下面是一些实现DLX基于总线的数据通道和原始版本的DLX微控制器的(L49)硬 件部分的延退, tetp-setup time of registers IR.A.B,MA.HPC te-clock-to-q time of registers IR,A.B.MA.uPC tALU-time ALU takes to generate result and zero teend-delay of a sign extender t-delay of a multiplexer tous-delay from when data is written to bus to when it becomes stable t-delay of a tri-state buffer tgr-delay of the register file txem-delay of memory troM-delay of the ROM ALU como-delay for ALU Control 假设1ow,‘.的值大小差不多,而且比其他部件延迟都要大。 使用第一版的微挖制器,哪条微代码指令调用了处理器的关键路径?描述这条关健路 径。基于总线的D儿X处理器能执行的最小时钟圆期是多长?假设内存停滞, 习题2:流水线的组成 在习题集1中,B成功的实现了MACC指令,他因此阁到灵感,决定向DLX ISA中添加
习题 1.E 将微控制器和DLX 总线结构数据路径(L4-5)结合起来,形成一个完整的计算 机,它可以执行部分DLX ISA 指令。 除了占用太多内存外,Alyssa 告诉 Ben,使用原始 DLX 微控制器(L4-9)不是个好思 想还有个原因。一个使用原始微控制器的计算机,其指令周期会比使用第2个微控制器(L4-15) 的长。但是 Ben 不明白这是为什么? 下面是一些实现 DLX 基于总线的数据通道和原始版本的 DLX 微控制器的(L4-9)硬 件部分的延迟, 假设t ALU ,tROM ,tRF ,tMem 的值大小差不多,而且比其他部件延迟都要大。 使用第一版的微控制器, 哪条微代码指令调用了处理器的关键路径?描述这条关键路 径。基于总线的DLX处理器能执行的最小时钟周期是多长?假设内存停滞。 习题2:流水线的组成 在习题集1中,Ben成功的实现了MACC指令,他因此得到灵感,决定向DLX ISA中添加

新的指令BlF(线是Ben's Instruction Format): 6 5 5 6 5 5 opcode1 1 2 opcode2 4 5 新指令语义如下: rf5 <(rf1 opl rf2)op2 rf4 其中opl和p2是A1U操作,例如,ADDR1,R2:ADDR3,R4会按下列顺序计算: R4<-(R1+R2)+R3 为了实现新的指令格式,B决定向我们在误件所讲流水线的存储器读取阶段添加一个 ALU,国是在这果,课件中讨论的D儿X的数据路径是完全旁通的实现。老式的DLX指◆仍 然在执行阶段使用ALU,面BF指令会在两阶段都使用ALU.BF指令中的第一个LU操作 会在执行阶段执行,第二个LU慢作在存储器读取阶段执行。新流水线如下所示: F ID EX MA WB Fetch phase Decode and Execute Memory Write-back register fetch phase with phase with phase phase original ALU new ALU 另外,老量据路径中的寄存器组被新的寄存器组督换,新的有三个读端口,一个写端口, 因此可以同时读取三个操作数。 习题2.A 为了能体观使用BF番令所带来的性能上提高,请写一段代码作为例子。当然,要同时 写出使用F指令的代码,和使用老式DLX指令的代码。使用原始指令的代码至少要包含六 条指令。 使用BF指令所带来的最大好处是什么: 习题2.B 写出所有能导政流水停带的冲突数据,为每一种情况写一段代码作为例子。你应该同时 考虑老式DLX指令和B的新指令。你可以假设数据路径是旁通的。现在还不用考虑程序的 转移或转
新的指令BIF(就是Ben’s Instruction Format): 新指令语义如下: 其中op1和op2是ALU操作。例如,ADD R1,R2: ADD R3,R4会按下列顺序计算: 为了实现新的指令格式,Ben决定向我们在课件所讲流水线的存储器读取阶段添加一个 ALU,但是在这里,课件中讨论的DLX的数据路径是完全旁通的实现。老式的DLX指令仍 然在执行阶段使用ALU,而BIF指令会在两阶段都使用ALU。BIF指令中的第一个ALU操作 会在执行阶段执行,第二个ALU操作在存储器读取阶段执行。新流水线如下所示: 另外,老数据路径中的寄存器组被新的寄存器组替换,新的有三个读端口,一个写端口, 因此可以同时读取三个操作数。 习题2.A 为了能体现使用BIF指令所带来的性能上提高,请写一段代码作为例子。当然,要同时 写出使用BIF指令的代码,和使用老式DLX指令的代码。使用原始指令的代码至少要包含六 条指令。 使用BIF指令所带来的最大好处是什么? 习题2.B 写出所有能导致流水停滞的冲突数据,为每一种情况写一段代码作为例子。你应该同时 考虑老式DLX指令和Ben的新指令。你可以假设数据路径是旁通的。现在还不用考虑程序的 转移或跳转

我们仍然不考虑转移和跳转,如果套BF指令在MA阶段(存储署读取阶段)使用了新 的ALU,面不是像以前一样,在执行阶段使用AU,这在性能上会带来什么变化? 习题2.C 使用在流水线执行阶段的原始ALU指令,为新的没有BF指令的数据路径写出 ws,we,el,e2的表达式《equation》·使用nxe,rel,re2写出停带信号.你也许会用到其他信 号,为了方便起见。下面提供了一些原始数据路径的信号,现在仍然不清要考虑跳转和转移。 Cdest ws case opcode ALU →f3 ALUi,LW →f2 JAL,JALR =R31 we case opcode ALU.ALUi,LW →(ws*R0) JAL,JALR →on 44 →off re1 case opcode ALU,ALUi,LW.SW,BEOZ JR.JALR on J.JAL 台off re2 case opcode ALU,SW →0n ( (off cstall stall =(rf1D wsEX((opcodeE LWE)((WsE Ro)(relD+ (rf2D WsE)((opcodeE LWEX((WsE RO)(re2D 习题2.D 现在让我们开始考虑跳转和转移的情况,会出现什么额外的冲突呢?为每种情况举出一 个例子。 有了新的指令格式,B认为,如果能将比较指令和转移指◆结合到一起。那么我们线 能提高条件转移拍令的执行速度。例如: SLI Rl,R2:BEQ2 label 意思就是
我们仍然不考虑转移和跳转,如果非BIF指令在MA阶段(存储器读取阶段)使用了新 的ALU,而不是像以前一样,在执行阶段使用ALU,这在性能上会带来什么变化? 习题2.C 使用在流水线执行阶段的原始ALU指令,为新的没有BIF指令的数据路径写出 ws,we,re1,re2的表达式(equation)。使用ws,we,re1,re2写出停滞信号。你也许会用到其他信 号,为了方便起见,下面提供了一些原始数据路径的信号。现在仍然不需要考虑跳转和转移。 习题2.D 现在让我们开始考虑跳转和转移的情况,会出现什么额外的冲突呢?为每种情况举出一 个例子。 有了新的指令格式,Ben认为,如果能将比较指令和转移指令结合到一起,那么我们就 能提高条件转移指令的执行速度。例如: 意思就是:

if (Rl R2)then branch to label 第一条折《本例中就是SLT指令)会在流水线执行阶段的A1U中执行,而结果(0成1) 并不会被写入寄存器组(gister file》,而是传递到存错墨读写阶段,在那里新的ALU会进 行一个零测试(zrDe城)·为了避免任何停滞(),这种指令需要多少个延遇槽? 在流水线中,如果不引进任何新的停滞条作或锋止任何指令,你会怎么减少延迟槽的使 用量?对于像能妇到的每一种情况,讨论对时钟周期的影利。每种情况的实现都应该有不可 数目的延迟槽。 根据上面你在上面研究的椰些选择,简要说明哪一种是最佳方案。请嫁合考虑延迟槽数 量,停滞(),电路线模,还有时钟周期。 习题2.E B发现寄存器组中新如的读端口会增加处理器关键路径的长度,面且他们不使使新的 数据路径(damh)和原来的一样快。为了解决这个问题,他会试着使用星来的寄存署组。 既然老的寄存器组只有两个读端口,那么在解码和取指令阶段读两个操作玛。第三个操 作码要等到执行阶段才能读取,和第一个ALU操作并行执行, 为了实现这个方案。需要做什么样的政变?这华政变会怎样影响处理器的性能 Assa认为Bn能通过添如第二个寄存器组米解决这个月题,新的寄存器组和第一个完 全一样。这个方案是如何工作的?和Bm尝试过的两个方案比较,Ays网方案的性雀如何? 习题2F 使用新的BF折令,代码大小如何变化?对性能有影响吗了 习题3:Cache的访问时间和性能 Bm正在为新处理器努力研究最好的cahe配置。地知道如何实现下列三种cche:直接 峡射eh,路组关联块射cache,小的全关联映射cache。我们的目标是根据己知的构建块 找出最好的cache配置。 B只知道知何构造非常小的全关联肤则,所以触决定使用直接缺射成2路组关联肤射
第一条指令(本例中就是SLT指令)会在流水线执行阶段的ALU中执行。而结果(0或1) 并不会被写入寄存器组(register file),而是传递到存储器读写阶段,在那里新的ALU会进 行一个零测试(zero test)。为了避免任何停滞(stall),这种指令需要多少个延迟槽? 在流水线中,如果不引进任何新的停滞条件或终止任何指令,你会怎么减少延迟槽的使 用量?对于你能想到的每一种情况,讨论对时钟周期的影响。每种情况的实现都应该有不同 数目的延迟槽。 根据上面你在上面研究的那些选择,简要说明哪一种是最佳方案。请综合考虑延迟槽数 量,停滞(stall),电路规模,还有时钟周期。 习题2.E Ben发现寄存器组中新加的读端口会增加处理器关键路径的长度,而且他们不能使新的 数据路径(data path)和原来的一样快。为了解决这个问题,他会试着使用原来的寄存器组。 既然老的寄存器组只有两个读端口,那么在解码和取指令阶段读两个操作码。第三个操 作码要等到执行阶段才能读取,和第一个ALU操作并行执行。 为了实现这个方案,需要做什么样的改变?这些改变会怎样影响处理器的性能? Alyssa认为Ben能通过添加第二个寄存器组来解决这个问题,新的寄存器组和第一个完 全一样。这个方案是如何工作的?和Ben尝试过的两个方案比较,Alyssa方案的性能如何? 习题2.F 使用新的BIF指令,代码大小如何变化?对性能有影响吗? 习题3:Cache的访问时间和性能 Ben正在为新处理器努力研究最好的cache配置。他知道如何实现下列三种cache:直接 映射cache,2路组关联映射cache,小的全关联映射cache。我们的目标是根据已知的构建块 找出最好的cache配置。 Ben只知道如何构造非常小的全关联映射,所以他决定使用直接映射或2路组关联映射

作为基本的eah配置。他想知道这两种不同的结构会如何影响时钟周期和ehe金中率,然 后以平均读取话迟(aver容latery for load)作为标准,从中选择性更好的一种结构. 习题3.A 访间时间:DM 下图面出了直核联射che的结构。为了从cabe中读一个字,处理器给出输入地址。然 后地址中的素引部分鼓译码,用来访问标记内存阵列(tag memory am0)中正确的行和数 据内存作列(dat山emory array冲正确的行,然后棱透中的标记位用米和输入地址中的标记 位进行比较,从而判断访问eae是否命中。同时,对应的cache块核选中,正确的事一行数 据从MUX输出。 Input Address 2;enche line size [bytes) Tag Index b-2 Tag Status 20-2 data words Tag Data Decoder Decoder Valid Bit MUX Comparator Data Output Driver Output Driver 在内存中,每一行对应高速缓存中的一行。例如,标记位内存库列中的每一行色括ache 数据行的一个标记位和两个状志位(有效和无效)。对直接缺射e来说,数据内存库列 中的每一行存储一行缓存数据。 现在我们希望计算出cche的访同时间。假设有一个32KB的高速缓存,缓存每行有8个 字(32字节),地址是32位的,鉴于cce访可是字对齐的,我门可以不考虑地比中的两个 最,有效位(LSB)·数据输出也是32位的,MUX每次从缓存行8个字中选择一个字输出。 根据表3-1提供的延迟公式,填写表3-1中直接映射©e(DM)列。在数据输出驱动暑的 公式里,associativity'是霜cachel的关联性,(I表示直接肤射,A表示A路组关联爽射)
作为基本的cache配置。他想知道这两种不同的结构会如何影响时钟周期和cache命中率,然 后以平均读取延迟(average latency for load)作为标准,从中选择性更好的一种结构。 习题3.A 访问时间:DM 下图画出了直接映射cache的结构。为了从cache中读一个字,处理器给出输入地址。然 后地址中的索引部分被译码,用来访问标记内存阵列(tag memory array)中正确的行和数 据内存阵列(data memory array)中正确的行。然后被选中的标记位用来和输入地址中的标记 位进行比较,从而判断访问cache是否命中。同时,对应的cache块被选中,正确的那一行数 据从MUX输出。 在内存中,每一行对应高速缓存中的一行。例如,标记位内存阵列中的每一行包括cache 数据行的一个标记位和两个状态位(有效和无效)。对直接映射cache来说,数据内存阵列 中的每一行存储一行缓存数据。 现在我们希望计算出cache的访问时间。假设有一个32KB的高速缓存,缓存每行有8个 字(32字节)。地址是32位的,鉴于cache访问是字对齐的,我们可以不考虑地址中的两个 最低有效位(LSB)。数据输出也是32位的,MUX每次从缓存行8个字中选择一个字输出。 根据表3-1提供的延迟公式,填写表3-1中直接映射cache (DM)列。在数据输出驱动器的 公式里,’associativity’是指cache的关联性,(1表示直接映射,A表示A路组关联映射)

容养 禁迟公式(p》】 DM (ps)SA (ps) Decoder 200x(W of index bits)+1000 Taa Dats Memory aray 200×0g-(#of1ows)+ Tag 200xlog (of bits in a row)+1000 Data Comparator 200x(#of1 ng bits)+1000 N-to-1 MUX 50032N+1000 Buffer driver 2000 Data output driver 500x(associativity)+1000 Valid output driver 1000 表3-1eah各部件的延因 在直接晚射的ae中,执行一次读操作,其关键路径是什么?这时,che的防间时间 是多少?假设门(AND.OR)延迟为S00(s),如果CU时钟是1S0MH比,cache访问需要多 少时钟周期? 习题3.B 访问时间:SA 下图画出了2路组关联映射cche的实现结构。地址中的索部分像上面一样,用米在数 据内存库列和标记位内存阵列中找到正确的位置(行)。相是,在这种情况里,每行对应©ce 中的两行(一组)·数器内存库列的一行存储两个cache行(对于2字节的cche行,就是64 字节),标记位内存阵列的一行包含两个标记位和相应的状志位(每ahe行两位)。标记 位内存库列和数据内存库列被同时访间,但是只有在命中chc时,数据输出票动器才启动, 开始数据数据。 假设整个高速缓存有32KB倒每路16水B),其也诸如输入地址,ca©he行等的参数和习思3.A 中的一样。计算cache各个部件的延迟,然后填写表31中2路组关联爽射的那一列: 在2路组关联映射的cche中,关健路径是什么?这时,cache的请月时间是多少?这比直 接映射的高速缓存要慢,造成这个结果的主要原因是什么呢?如果CPU时钟是150MH2, cache访问需要多少时钟周期? 习题3.C 命中率分析 现在Ben开始研究组关联对©ache性能的影响。他己经知道了每种配置的访问时间,于是 他塑了解每种eahe的命中率。为了分析命中率,Bcm使用了两个小吸的cache:直接驶射的 有4行,每行16字节:2路组关联陕射的采用RLU们east recent山yd)替换算法,也
表3-1 cache各部件的延迟 在直接映射的cache中,执行一次读操作,其关键路径是什么?这时,cache的访问时间 是多少?假设门(AND,OR)延迟为500(ps)。如果CPU时钟是150MHz,cache访问需要多 少时钟周期? 习题3.B 访问时间:SA 下图画出了2路组关联映射cache的实现结构。地址中的索引部分像上面一样,用来在数 据内存阵列和标记位内存阵列中找到正确的位置(行)。但是,在这种情况里,每行对应cache 中的两行(一组)。数据内存阵列的一行存储两个cache行(对于32字节的cache行,就是64 字节),标记位内存阵列的一行包含两个标记位和相应的状态位(每cache行两位)。标记 位内存阵列和数据内存阵列被同时访问,但是只有在命中cache时,数据输出驱动器才启动, 开始数据数据。 假设整个高速缓存有32KB(每路16KB),其他诸如输入地址,cache行等的参数和习题3.A 中的一样。计算cache各个部件的延迟,然后填写表3-1中2路组关联映射的那一列。 在2路组关联映射的cache中,关键路径是什么?这时,cache的访问时间是多少?这比直 接映射的高速缓存要慢,造成这个结果的主要原因是什么呢?如果CPU时钟是150MHz, cache访问需要多少时钟周期? 习题3.C 命中率分析 现在Ben开始研究组关联对cache性能的影响。他已经知道了每种配置的访问时间,于是 他想了解每种cache的命中率。为了分析命中率,Ben使用了两个小型的cache:直接映射的 有4行,每行16字节;2路组关联映射的采用LRU(least recently used)替换算法,也

Input Address Tag Index b2 Tag Stat Tap Stat 2.2da中w0rds TaG Data Deco Valid Bit MUX MUX Bufer Driver Valid Output Driver 有4行,每行16字节。 Bem采用了一种方法米测试cache,瓷是cche为空的初始状态下,按下列顺序访月16进 制字节地址序列。对于直接映射和2路组关联映射两种情况分别填写下表,用来表示访同 cahe后,其所存他数据的变化过程(在表中,nv=无效,表中有一列用来表示一个特定的 cache行,存销着t起,i成x:例如,对于地址110,L1的值就是'1')。保贝需在值发生变 化的空格中填写答案, 直接映刚 总未命中次数 总访问次数 2路组关联 总未命中次数 总访问次数
有4行,每行16字节。 Ben采用了一种方法来测试cache,就是cache为空的初始状态下,按下列顺序访问16进 制字节地址序列。对于直接映射和2路组关联映射两种情况分别填写下表,用来表示访问 cache后,其所存储数据的变化过程(在表中,’inv’=无效,表中有一列用来表示一个特定的 cache行,存储着{tag,index};例如,对于地址’110’,L1的值就是’11’)。你只需在值发生变 化的空格中填写答案