访存结构相关 ·假设单存储器,则单周期内并发取指与读写数据存 在冲突 C2 C4 C5 C6 C7 C8 Data Lines Control Lines ALU Address Lines LOAD 正 REG 正 REG M Do Do : P 指令1 ALU A正 REG REG Da-l Dol M M 0 Ao Ao m e 0 ALU A 指令 正 REG E REG M r Am-1 Am-1 y r 指令3 ALU 正 REG 正 REG RW M xI Clock Clock llxx@ustc.edu.cn 7
llxx@ustc.edu.cn 7 访存结构相关 • 假设单存储器,则单周期内并发取指与读写数据存 在冲突
流水线stall(停顿,阻塞) C C3 C C6 C C8 LOAD MEM REG ALU MEM REG 指令1 MEM REG ALU MEM REG ALU 指令2 MEM REG MEM REG ALU MEM REG MEM REG 指令3 Stal语义:使流水线停顿一拍 -ppl:PC不变,重复取指;FID清零=插入气泡 (bubble) “freeze up&bubble down”:插入一条nop 8
8 流水线stall(停顿,阻塞) • Stall语义:使流水线停顿一拍 – ppl:PC不变,重复取指;IF/ID清零 = 插入气泡(bubble) – “freeze up & bubble down”:插入一条nop MEM REG ALU MEM REG MEM REG ALU MEM REG MEM REG ALU MEM REG MEM REG ALU MEM REG C1 C2 C3 C4 C5 C6 C7 C8 LOAD 指令1 指令2 指令3
IF与MEM结构冲突消除:哈佛结构 F/D ID/EX EX/ME日M MEM/WB Add Su 51h e ag如r1 d Instructon ALU momory memory d由 Wrte dta Gon Load Ifetch Reg Exec Mem W wSw是否存在D$冲突? Store Ifetch Reg Exec Mem 9
llxx@ustc.edu.cn 9 IF与MEM结构冲突消除:哈佛结构 lw/sw是否存在D$冲突?
ALU指令完成时间:Id与ALU Time (in clock cycles) CC1 CC2 CC3 CC4 CC5 CC6 CC 1 CC2 CC3 Program execution Load Ifetch Reg Exec Mem Wr order (in instructions) R-type Ifetch Reg Exec Wr w$10,20($1) RF写端口结构冲突 sub$11,$2,$3 add$12,s3,$4 w$13,24($1) add$14,s5,$6 M ALU 10
10 ALU指令完成时间:ld与ALU RF写端口结构冲突
数据相关分类 ·写后读(RAW) -的执行要用到的计算结果,但可能在写入其计算结果之前 就先行对保存该结果的寄存器进行读操作。 类型:ID段依赖于EXE或MEM段 ·写后写(WAW) -和的目的操作数一样,写入顺序错误,在目标寄存器中留 下的是的值而不是的值。 ·读后写(WAR) 一可能在读取某个源寄存器的内容之前就先对该寄存器进行 写操作,导致读出的是错误的数据。 o1 哪些会发生? add ro,r2,r1 in-order,out-of-order? 1 2 and r2,ro, r1 3 sub r2,r3,#1;
11 数据相关分类 • 写后读(RAW) – j的执行要用到i的计算结果,但j可能在i写入其计算结果之前 就先行对保存该结果的寄存器进行读操作。 – 类型:ID段依赖于EXE或MEM段 • 写后写(WAW) –j和i的目的操作数一样,写入顺序错误,在目标寄存器中留 下的是i的值而不是j的值。 • 读后写(WAR) –j可能在i读取某个源寄存器的内容之前就先对该寄存器进行 写操作,导致i读出的是错误的数据。 • 哪些会发生? – in-order, out-of-order? 1 add r0,r2,r1 2 and r2,r0,r1 3 sub r2,r3,#1;