Pipelining (part 1)
1
Pipelining (part 1) 1 Human pipeline: laundry whites sheets - - PowerPoint PPT Presentation
Pipelining (part 1) 1 Human pipeline: laundry whites sheets sheets sheets colors colors colors whites whites whites colors colors colors whites whites 14:00 Washer 13:00 12:00 11:00 Table Folding Dryer Washer 14:00 13:00
1
11:00 12:00 13:00 14:00
11:00 12:00 13:00 14:00
2
11:00 12:00 13:00 14:00
11:00 12:00 13:00 14:00
2
11:00 12:00 13:00 14:00
3
11:00 12:00 13:00 14:00
3
11:00 12:00 13:00 14:00
4
11:00 12:00 13:00 14:00
5
11:00 12:00 13:00 14:00
5
11:00 12:00 13:00 14:00
5
11:00 12:00 13:00 14:00
6
11:00 12:00 13:00 14:00
6
11:00 12:00 13:00 14:00
6
0 ps 50 ps 100 ps
7
0 ps 50 ps 100 ps
7
0 ps 50 ps 100 ps
7
0 ps 100 ps 200 ps 300 ps 400 ps 500 ps
0 ps 100 ps 200 ps 300 ps 400 ps 500 ps
8
0 ps 100 ps 200 ps 300 ps 400 ps 500 ps
0 ps 100 ps 200 ps 300 ps 400 ps 500 ps
8
9
9
10
10
10
11
11
ps ps ps ps ps ps ps ps ps
12
10 ps 25 ps 25 ps 10 ps 10 ps 25 ps 10 ps 25 ps 10 ps
12
10 ps 25 ps 25 ps 10 ps 10 ps 25 ps 10 ps 25 ps 10 ps
12
10 ps 25 ps 25 ps 10 ps 10 ps 25 ps 10 ps 25 ps 10 ps
12
10 ps 25 ps 25 ps 10 ps 10 ps 25 ps 10 ps 25 ps 10 ps
13
logic (all)
logic (1/2)
logic (2/2)
logic (1/3)
logic (2/3)
logic (3/3)
14
15
15
15
16
16
10 ps 25 ps 25 ps 10 ps 10 ps 25 ps 10 ps 25 ps 10 ps
17
10 ps 25 ps 25 ps 10 ps 10 ps 25 ps 10 ps 25 ps 10 ps
18
10 ps 25 ps 25 ps 10 ps 10 ps 25 ps 10 ps 25 ps 10 ps
18
logic (all)
logic (1/2)
logic (2/2)
logic (1/3)
logic (2/3)
logic (3/3)
19
logic (all)
logic (1/2)
logic (2/2)
logic (1/3)
logic (2/3)
logic (3/3)
19
logic (all)
logic (1/2)
logic (2/2)
logic (1/3)
logic (2/3)
logic (3/3)
19
20
20
20
21
21
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
22
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
22
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
22
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
22
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
23
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
23
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
23
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
23
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
addq %r8, %r9 //(1) address of (2) addq %r10, %r11 //(2) reg #s 8, 9 from (1) reg #s 10, 11 from (2) reg # 9, values for (1)
24
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
addq %r8, %r9 //(1) address of (2) addq %r10, %r11 //(2) reg #s 8, 9 from (1) reg #s 10, 11 from (2) reg # 9, values for (1)
24
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
addq %r8, %r9 //(1) address of (2) addq %r10, %r11 //(2) reg #s 8, 9 from (1) reg #s 10, 11 from (2) reg # 9, values for (1)
24
Instr. Mem.
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
addq %r8, %r9 //(1) address of (2) addq %r10, %r11 //(2) reg #s 8, 9 from (1) reg #s 10, 11 from (2) reg # 9, values for (1)
24
PC
Instr. Mem.
register fjle
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
ADD
add 2
fetch rA rB R[srcA] R[srcB] dstE next R[dstE] dstE cycle PC rA rB R[srcA] R[srcB] dstE next R[dstE] dstE 0x0 1 0x2 8 9 2 0x4 10 11 800 900 9 3 0x6 12 13 1000 1100 11 1700 9 4 9 8 1200 1300 13 2100 11 5 1700 800 8 2500 13 6 2500 8 fetch/decode decode/execute execute/writeback
25
PC
Instr. Mem.
register fjle
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
ADD
add 2
fetch rA rB R[srcA] R[srcB] dstE next R[dstE] dstE cycle PC rA rB R[srcA] R[srcB] dstE next R[dstE] dstE 0x0 1 0x2 8 9 2 0x4 10 11 800 900 9 3 0x6 12 13 1000 1100 11 1700 9 4 9 8 1200 1300 13 2100 11 5 1700 800 8 2500 13 6 2500 8 fetch/decode decode/execute execute/writeback
25
PC
Instr. Mem.
register fjle
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
ADD
add 2
fetch rA rB R[srcA] R[srcB] dstE next R[dstE] dstE cycle PC rA rB R[srcA] R[srcB] dstE next R[dstE] dstE 0x0 1 0x2 8 9 2 0x4 10 11 800 900 9 3 0x6 12 13 1000 1100 11 1700 9 4 9 8 1200 1300 13 2100 11 5 1700 800 8 2500 13 6 2500 8 fetch/decode decode/execute execute/writeback
25
PC
Instr. Mem.
register fjle
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
ADD
add 2
fetch rA rB R[srcA] R[srcB] dstE next R[dstE] dstE cycle PC rA rB R[srcA] R[srcB] dstE next R[dstE] dstE 0x0 1 0x2 8 9 2 0x4 10 11 800 900 9 3 0x6 12 13 1000 1100 11 1700 9 4 9 8 1200 1300 13 2100 11 5 1700 800 8 2500 13 6 2500 8 fetch/decode decode/execute execute/writeback
25
PC
Instr. Mem.
register fjle
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
ADD
add 2
fetch rA rB R[srcA] R[srcB] dstE next R[dstE] dstE cycle PC rA rB R[srcA] R[srcB] dstE next R[dstE] dstE 0x0 1 0x2 8 9 2 0x4 10 11 800 900 9 3 0x6 12 13 1000 1100 11 1700 9 4 9 8 1200 1300 13 2100 11 5 1700 800 8 2500 13 6 2500 8 fetch/decode decode/execute execute/writeback
25
PC
Instr. Mem.
register fjle
srcA srcB R[srcA] R[srcB] dstE next R[dstE] dstM next R[dstM] split
0xF
ADD
ADD
add 2
26