夏昊珺 PB14011092 xhjustc@mail.ustc.edu.cn 体系结构习题课2 夏昊珺 PB14011092 xhjustc@mail.ustc.edu.cn
作业10 C12 DAXPY循环: 整数运算在一个时钟周期发射和完成(包括载入),完全旁路 采用表C17的浮点延迟,浮点单元完全流水化 一个等待一个另一功能单元结果的指令可以在写入该结果同时读取操作数 一个指令WR时允许自己执行WR的同一时钟周期内发射另一条指令,等待同一功能单元
作业10 C12 P491 延迟:生成结果的指令与使用结果的指令之间的周期数 根据这一延迟定义,整形ALU运算的延迟为0,其结果可以在下一周期使用; 载入指令延迟为1,因为这些结果可以相隔一个周期之后使用 由于大多数操作都会在EX的开头使用其操作数,因此延迟通常指EX之后的级数(ALU运算之后0个流水级,而载入则有一级) 流水线延迟基本上等于执行流水线深度减去1个时钟周期,流水深度等于EX到生成结果的流水级之间的级数。
作业10 C12 1 2 3 4 5 6 7 8 9 10 11 12 13 LD F2,0(R1) IF ID EX M WB MUL F4 F2 F0 S M1 M2 M3 M4 M5 M6 M7 LD F6 0(R2) ADD F6 F4 F6 A1 A2 SD 0(R2) F6 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO LD F2 0(R1)
作业10 C12 每个循环18个周期 按照题意也就是5(第一条指令WB)-22(最后一条指令WB) 14 15 16 17 18 19 20 21 22 23 LD F2,0(R1) MUL F4 F2 F0 LD F6 0(R2) ADD F6 F4 F6 A3 A4 M WB SD 0(R2) F6 S EX DADDIU R1 R1 #8 ID DADDIU R2 R2 #8 IF SGTIU R3 R1 DONE BEQZ R1 FOO LD F2 0(R1) 每个循环18个周期 按照题意也就是5(第一条指令WB)-22(最后一条指令WB)
作业10 C12 两个浮点乘部件 一个浮点除部件 一个浮点加部件 一个整数部件
作业10 C12
作业10 C12 当前周期数:1 发射 读操作数 执行 写回 LD F2,0(R1) 1 MUL F4 F2 F0 LD F6 0(R2) ADD F6 F4 F6 SD 0(R2) F6 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT Yes LD F2 R1 OK Mult1 Mult2 Add Divide F0 F2 F4 F6 F8 …… INT 当前周期数:1
作业10 C12 当前周期数:2 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 MUL F4 F2 F0 ADD F6 F4 F6 SD 0(R2) F6 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT Yes LD F2 R1 NO Mult1 YES MUL F4 F0 OK Mult2 Add Divide F0 F2 F4 F6 F8 …… INT MUL1 当前周期数:2
作业10 C12 当前周期数:3 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 MUL F4 F2 F0 ADD F6 F4 F6 SD 0(R2) F6 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT Yes LD F2 R1 NO Mult1 YES MUL F4 F0 OK Mult2 Add Divide F0 F2 F4 F6 F8 …… INT MUL1 当前周期数:3
作业10 C12 当前周期数:4 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 ADD F6 F4 F6 SD 0(R2) F6 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT Yes LD F2 R1 OK Mult1 YES MUL F4 F0 NO Mult2 Add Divide F0 F2 F4 F6 F8 …… MUL1 INT 当前周期数:4
作业10 C12 当前周期数:5 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5- ADD F6 F4 F6 WAW SD 0(R2) F6 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT Yes LD F2 R1 NO Mult1 YES MUL F4 F0 Mult2 Add Divide F0 F2 F4 F6 F8 …… MUL1 INT 当前周期数:5
作业10 C12 当前周期数:6 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5- 6-6 ADD F6 F4 F6 WAW SD 0(R2) F6 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT Yes LD F2 R1 NO Mult1 YES MUL F4 F0 Mult2 Add Divide F0 F2 F4 F6 F8 …… MUL1 INT 当前周期数:6
作业10 C12 当前周期数:7 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5- 6-6 7 ADD F6 F4 F6 SD 0(R2) F6 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT NO LD F2 R1 Mult1 YES MUL F4 F0 Mult2 Add Divide F0 F2 F4 F6 F8 …… MUL1 当前周期数:7
作业10 C12 当前周期数:8 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5- 6-6 7 ADD F6 F4 F6 8 SD 0(R2) F6 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT NO LD F2 R1 Mult1 YES MUL F4 F0 Mult2 Add ADD F6 MUL1 OK Divide F0 F2 F4 F6 F8 …… MUL1 ADD 当前周期数:8
作业10 C12 当前周期数:9 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5- 6-6 7 ADD F6 F4 F6 8 SD 0(R2) F6 9 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SD F6 ADD NO OK Mult1 MUL F4 F2 F0 Mult2 Add MUL1 Divide F0 F2 F4 F6 F8 …… MUL1 ADD 当前周期数:9
作业10 C12 当前周期数:10 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5- 6-6 7 ADD F6 F4 F6 8 SD 0(R2) F6 9 DADDIU R1 R1 #8 INT结构相关 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SD F6 ADD NO OK Mult1 MUL F4 F2 F0 Mult2 Add MUL1 Divide F0 F2 F4 F6 F8 …… MUL1 ADD 当前周期数:10
作业10 C12 当前周期数:11 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 SD 0(R2) F6 9 DADDIU R1 R1 #8 INT结构相关 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SD F6 ADD NO OK Mult1 MUL F4 F2 F0 Mult2 Add MUL1 Divide F0 F2 F4 F6 F8 …… MUL1 ADD 当前周期数:11
作业10 C12 当前周期数:12 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 SD 0(R2) F6 9 DADDIU R1 R1 #8 INT结构相关 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SD F6 ADD NO OK Mult1 MUL F4 F2 F0 Mult2 Add Divide F0 F2 F4 F6 F8 …… ADD 当前周期数:12
作业10 C12 当前周期数:13 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13- SD 0(R2) F6 9 DADDIU R1 R1 #8 INT结构相关 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SD F6 ADD NO OK Mult1 MUL F4 F2 F0 Mult2 Add Divide F0 F2 F4 F6 F8 …… ADD 当前周期数:13
作业10 C12 当前周期数:14 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13- SD 0(R2) F6 9 DADDIU R1 R1 #8 INT结构相关 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SD F6 ADD NO OK Mult1 MUL F4 F2 F0 Mult2 Add Divide F0 F2 F4 F6 F8 …… ADD 当前周期数:14
作业10 C12 当前周期数:15 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13- SD 0(R2) F6 9 DADDIU R1 R1 #8 INT结构相关 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SD F6 ADD NO OK Mult1 MUL F4 F2 F0 Mult2 Add Divide F0 F2 F4 F6 F8 …… ADD 当前周期数:15
作业10 C12 当前周期数:16 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 SD 0(R2) F6 9 DADDIU R1 R1 #8 INT结构相关 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SD F6 ADD NO OK Mult1 MUL F4 F2 F0 Mult2 Add Divide F0 F2 F4 F6 F8 …… ADD 当前周期数:16
作业10 C12 当前周期数:17 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 DADDIU R1 R1 #8 INT结构相关 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SD F6 NO Mult1 MUL F4 F2 F0 Mult2 Add ADD Divide F0 F2 F4 F6 F8 …… 当前周期数:17
作业10 C12 当前周期数:18 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 18 DADDIU R1 R1 #8 INT结构相关 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SD F6 NO Mult1 MUL F4 F2 F0 Mult2 Add ADD Divide F0 F2 F4 F6 F8 …… 当前周期数:18
作业10 C12 当前周期数:19 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 18 19 DADDIU R1 R1 #8 DADDIU R2 R2 #8 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES DADDI NO Mult1 MUL F4 F2 F0 Mult2 Add ADD F6 Divide F0 F2 F4 F6 F8 …… 当前周期数:19
作业10 C12 当前周期数:20 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 18 19 DADDIU R1 R1 #8 20 DADDIU R2 R2 #8 INT结构相关 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES DADDI NO Mult1 MUL F4 F2 F0 Mult2 Add ADD F6 Divide F0 F2 F4 F6 F8 …… 当前周期数:20
作业10 C12 当前周期数:21 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 18 19 DADDIU R1 R1 #8 20 21 DADDIU R2 R2 #8 INT结构相关 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES DADDI NO Mult1 MUL F4 F2 F0 Mult2 Add ADD F6 Divide F0 F2 F4 F6 F8 …… 当前周期数:21
作业10 C12 当前周期数:22 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 18 19 DADDIU R1 R1 #8 20 21 22 DADDIU R2 R2 #8 SGTIU R3 R1 DONE INT结构相关 BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES DADDI NO Mult1 MUL F4 F2 F0 Mult2 Add ADD F6 Divide F0 F2 F4 F6 F8 …… 当前周期数:22
作业10 C12 当前周期数:23 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 18 19 DADDIU R1 R1 #8 20 21 22 DADDIU R2 R2 #8 23 SGTIU R3 R1 DONE INT结构相关 BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES DADDI NO Mult1 MUL F4 F2 F0 Mult2 Add ADD F6 Divide F0 F2 F4 F6 F8 …… 当前周期数:23
作业10 C12 当前周期数:24 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 18 19 DADDIU R1 R1 #8 20 21 22 DADDIU R2 R2 #8 23 24 SGTIU R3 R1 DONE INT结构相关 BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES DADDI NO Mult1 MUL F4 F2 F0 Mult2 Add ADD F6 Divide F0 F2 F4 F6 F8 …… 当前周期数:24
作业10 C12 当前周期数:25 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 18 19 DADDIU R1 R1 #8 20 21 22 DADDIU R2 R2 #8 23 24 25 SGTIU R3 R1 DONE BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES SGTIU NO Mult1 MUL F4 F2 F0 Mult2 Add ADD F6 Divide F0 F2 F4 F6 F8 …… 当前周期数:25
作业10 C12 当前周期数:26 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 18 19 DADDIU R1 R1 #8 20 21 22 DADDIU R2 R2 #8 23 24 25 SGTIU R3 R1 DONE 26 BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES DADDI NO Mult1 MUL F4 F2 F0 Mult2 Add ADD F6 Divide F0 F2 F4 F6 F8 …… 当前周期数:26
作业10 C12 当前周期数:27 发射 读操作数 执行 写回 LD F2,0(R1) 1 2 3-3 4 MUL F4 F2 F0 5-11 12 LD F6 0(R2) 5 6-6 7 ADD F6 F4 F6 8 13-16 17 SD 0(R2) F6 9 18 19 DADDIU R1 R1 #8 20 21 22 DADDIU R2 R2 #8 23 24 25 SGTIU R3 R1 DONE 26 27 BEQZ R1 FOO 作业10 C12 Busy Op Fi Fj Fk Qj Qk Rj Rk INT YES DADDI NO Mult1 MUL F4 F2 F0 Mult2 Add ADD F6 Divide F0 F2 F4 F6 F8 …… 当前周期数:27
作业10 4.14 类似P238例题 GCD(2,4)=2 5-4=1 由于2不能整除1 所以不存在循环间相关
作业10 4.14 真相关:S1与S2的A[i] S3与S4的A[i] 输出相关:S1与S3的A[i] 反相关:S2与S1的B[i] S3与S2的A[i] S3与S1的A[i] S4与S3的C[i]
作业10 4.14 1.消除输出相关后: 1.消除反相关后: For (i=0;i<100;i++) 作业10 4.14 1.消除输出相关后: For (i=0;i<100;i++) { T[i]=A[i]*B[i]; B[i]=T[i]+c A[i]=C[i]*c C[i]=D[i]*A[i] } 1.消除反相关后: For (i=0;i<100;i++) { T[i]=A[i]*B[i]; B1[i]=T[i]+c A1[i]=C[i]*c C1[i]=D[i]*A1[i] }
作业10 4.14 明显的,S2的B[i+1]与下一循环中S1的B[i]存在真相关。 需要修改源代码: A[0]=A[0]+B[0]; 作业10 4.14 明显的,S2的B[i+1]与下一循环中S1的B[i]存在真相关。 需要修改源代码: A[0]=A[0]+B[0]; for(i=1;i<100;i++) { B[i]=C[i-1]+D[i-1]; A[i]=A[i]+B[i]; } B[100]=C[99]+D[99];
作业12 3.11
作业12 3.11 问题一:不转发 但是LW R1,0(R3)在操作数不具备情形下进行了译码 作业12 3.11 问题一:不转发 但是LW R1,0(R3)在操作数不具备情形下进行了译码 问题二:LW SW 的M阶段3cycle Branch的1+1不知道如何体现 按照答案理解 分支代价4 静态预测代价2?还是1 动态预测代价0
作业12 3.18
夏昊珺 PB14011092 xhjustc@mail.ustc.edu.cn 谢谢大家~ 夏昊珺 PB14011092 xhjustc@mail.ustc.edu.cn