Pipelining
Philipp Koehn 7 October 2019
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
Pipelining Philipp Koehn 7 October 2019 Philipp Koehn Computer - - PowerPoint PPT Presentation
Pipelining Philipp Koehn 7 October 2019 Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019 Laundry Analogy 1 6pm 7pm 8pm 9pm 10pm 11pm Task A Task B Task C Task D Philipp Koehn Computer Systems Fundamentals:
Philipp Koehn 7 October 2019
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
1
6pm 7pm 8pm 9pm 10pm 11pm Task A Task B Task C Task D
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
2
x
6pm 7pm 8pm 9pm 10pm 11pm Task A Task B Task C Task D
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
3
3 times
2 times – sequential: 1:30+1:30+1:30+1:30 = 6 hours – pipelined: 1:30+0:30+0:30+0:30 = 3 hours
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
4
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
5
(note: registers are always encoded in same place in instruction)
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
6
Instruction Instr. Register ALU Data Register Total class fetch read
access write time Load word (lw) 200ps 100ps 200ps 200ps 100ps 800ps Store word (lw) 200ps 100ps 200ps 200ps 700ps R-format (add) 200ps 100ps 200ps 100ps 600ps Branch (beq) 200ps 100ps 200ps 500ps
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
7
Instruction Fetch Reg. read ALU Data access Reg. write Instruction Fetch Reg. read ALU Data access Reg. write Instruction Fetch
lw $t1, 100($t0) lw $t2, 104($t0) lw $t3, 108($t0)
200 400 600 800 1000 1200 1400 1600 1800
Instruction Fetch Reg. read ALU Data access Reg. write Instruction Fetch Reg. read ALU Data access Reg. write
lw $t1, 100($t0) lw $t2, 104($t0) lw $t3, 108($t0)
200 400 600 800 1000 1200 1400 1600 1800
Instruction Fetch Reg. read ALU Data access Reg. write
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
8
4 times
1.71 times – sequential: 800ps + 800ps + 800ps = 2400ps – pipelined: 1000ps + 200ps + 200ps = 1400ps
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
9
→ easy to fetch next instruction
→ parallel op decode and register read
→ stage 3 used for memory access, otherwise operation execution
→ able to read in one instruction (aligned = memory address multiple of 4)
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
10
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
11
– structural hazard – data hazard – control hazard
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
12
instructions overlap in resource use in same stage
memory access conflict 1 2 3 4 5 6 7 i1 FETCH DECODE MEMORY MEMORY ALU REGISTER i2 FETCH DECODE MEMORY MEMORY ALU REGISTER conflict
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
13
instruction waits on result from prior instruction
add $s0, $t0, $t1 sub $t0, $s0, $t3 – add instruction writes result to register $s0 in stage 5 – sub instruction reads $s0 in stage 2 ⇒ Stage 2 of sub has to be delayed
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
14
IF
add $s0,$t0,$t1
ID MEM WB EX
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
15
IF
add $s0,$t0,$t1
ID MEM WB EX IF
sub $t0,$s0,$t3
ID MEM WB EX
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
16
IF
lw $s0,20($t0)
200 400 600 800 1000
ID MEM WB EX IF
sub $t0,$s0,$t3
ID MEM WB EX
bubble bubble bubble bubble bubble
1200
"pipeline stall" or "bubble"
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
17
lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0)
lw $t1, 0($t0) lw $t2, 4($t0) lw $t4, 8($t0) add $t3, $t1, $t2 sw $t3, 12($t0) add $t5, $t1, $t4 sw $t5, 16($t0)
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
18
add $s0, $t0, $t1 beq $s0, $s1, ff40 sub $t0, $s0, $t3 – sub instruction only executed if branch condition fails → cannot start until branch condition result known
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
19
→ full speed if correct
– keep record of branch taken or not – make prediction based on history
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
20
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
21
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
22
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
23
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
24
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
25
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
26
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
27
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
28
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
29
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
30
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
31
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
32
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
33
Data Memory ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
34
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
35
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
36
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
37
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
38
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
39
Data Memory ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
40
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
41
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
42
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
43
– decoded in stage 2 – used in stage 5
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
44
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
45
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
46
– which ALU operation to execute – which memory address to consult – which register to write to
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
47
IF ID EX MEM WB
WB WB WB M M EX Control
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019
48
ALU Add Instruction Memory Address Instruction Registers Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Data Memory Address Write data Zero ADD Result Selector Selector Sign extended Shift Left PC Selector 4 Read data IF: Instruction Fetch ID: Instruction decoder register file read MEM: Memory access EX: Execute / address calculate WB: Write Back Register Write Memory R/W ALU Operation Memory To Register ALU Source Branch (req. add. logic)
Philipp Koehn Computer Systems Fundamentals: Pipelining 7 October 2019