CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 1
CIS 501: Computer Architecture
Unit 9: Static & Dynamic Scheduling
Slides ¡originally ¡developed ¡by ¡ ¡ Drew ¡Hilton, ¡Amir ¡Roth ¡and ¡Milo ¡Mar;n ¡ ¡ at ¡University ¡of ¡Pennsylvania ¡
Unit 9: Static & Dynamic Scheduling Slides originally - - PowerPoint PPT Presentation
CIS 501: Computer Architecture Unit 9: Static & Dynamic Scheduling Slides originally developed by Drew Hilton, Amir Roth and Milo Mar;n at University of Pennsylvania CIS
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 1
Slides ¡originally ¡developed ¡by ¡ ¡ Drew ¡Hilton, ¡Amir ¡Roth ¡and ¡Milo ¡Mar;n ¡ ¡ at ¡University ¡of ¡Pennsylvania ¡
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 2
CPU Mem I/O System software App App App
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 3
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 4
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 5
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 6
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 7
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
8
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 9
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 10
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 11
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 12
ldf [X+r1]➜f1 mulf f0,f1➜f2 ldf [Y+r1]➜f3 addf f2,f3➜f4 stf f4➜[Z+r1] addi r1,4➜r1 blt r1,r2,0 ldf [X+r1]➜f1 mulf f0,f1➜f2 ldf [Y+r1]➜f3 addf f2,f3➜f4 stf f4➜[Z+r1] addi r1,4➜r1 blt r1,r2,0 ldf [X+r1]➜f1 mulf f0,f1➜f2 ldf [Y+r1]➜f3 addf f2,f3➜f4 stf f4➜[Z+r1] ldf [X+r1+4]➜f5 mulf f0,f5➜f6 ldf [Y+r1+4]➜f7 addf f6,f7➜f8 stf f8➜[Z+r1+4] addi r1,8➜r1 blt r1,r2,0 ldf [X+r1]➜f1 ldf [X+r2+4]➜f5 mulf f0,f1➜f2 mulf f0,f5➜f6 ldf [Y+r1]➜f3 ldf [Y+r1+4]➜f7 addf f2,f3➜f4 addf f6,f7➜f8 stf f4➜[Z+r1] stf f8➜[Z+r1+4] addi r1,8➜r1 blt r1,r2,0
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 13
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 14
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 15
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 16
1 2 3 4 5 6 7 8 9 10 11 12
Ld [r1] ➜ r2
F D X M1 M2 W
add r2 + r3 ➜ r4
F D d* d* d* X M1 M2 W
xor r4 ^ r5 ➜ r6
F D d* d* d* X M1 M2 W
ld [r7] ➜ r4
F D p* p* p* X M1 M2 W 1 2 3 4 5 6 7 8 9 10 11 12
Ld [r1] ➜ r2
F D X M1 M2 W
add r2 + r3 ➜ r4
F D d* d* d* X M1 M2 W
xor r4 ^ r5 ➜ r6
F D d* d* d* X M1 M2 W
ld [r7] ➜ r4
F D X M1 M2 W
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 17
1 2 3 4 5 6 7 8 9 10 11 12
Ld [p1] ➜ p2
F D X M1 M2 W
add p2 + p3 ➜ p4
F D d* d* d* X M1 M2 W
xor p4 ^ p5 ➜ p6
F D d* d* d* X M1 M2 W
ld [p7] ➜ p8
F D p* p* p* X M1 M2 W 1 2 3 4 5 6 7 8 9 10 11 12
Ld [p1] ➜ p2
F D X M1 M2 W
add p2 + p3 ➜ p4
F D d* d* d* X M1 M2 W
xor p4 ^ p5 ➜ p6
F D d* d* d* X M1 M2 W
ld [p7] ➜ p8
F D X M1 M2 W
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 18
1 2 3 4 5 6 7 8 9 10 11 12
Ld [p1] ➜ p2
F Di I RR X M1 M2 W C
add p2 + p3 ➜ p4
F Di I RR X W C
xor p4 ^ p5 ➜ p6
F Di I RR X W C
ld [p7] ➜ p8
F Di I RR X M1 M2 W C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
Fetch Decode Rename Dispatch Commit Buffer of instructions Issue Reg-read Execute Writeback
19
In-order front end Out-of-order execution In-order commit
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 20
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 21
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 22
r1 r2 r3 p1 p2 p3 p4,p5,p6,p7 add r2,r3➜r1 add p2,p3➜p4 p4 p2 p3 p5,p6,p7 sub r2,r1➜r3 sub p2,p4➜p5 p4 p2 p5 p6,p7 mul r2,r3➜r3 mul p2,p5➜p6 p4 p2 p6 p7 div r1,4➜r1 div p4,4➜p7
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 23
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
Fetch Decode Rename Dispatch Commit Buffer of instructions Issue Reg-read Execute Writeback Have unique register names Now put into out-of-order execution structures
24
In-order front end Out-of-order execution In-order commit
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 25 regfile D$
I$ B P
insn buffer S D add p2,p3➜p4 sub p2,p4➜p5 mul p2,p5➜p6 div p4,4➜p7
P2 P3 P4 P5 P6 P7 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes div p4,4➜p7 mul p2,p5➜p6 sub p2,p4➜p5 add p2,p3➜p4 and
Time
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 26
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 27
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 28
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 r1 p1 r2 p2 r3 p3 r4 p4 r5 p5 Map table Free-list p6 p7 p8 p9 p10
29
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p3 r4 p4 r5 p5 Map table Free-list p6 p7 p8 p9 p10 xor p1 ^ p2 ➜ xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
30
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p3 r4 p4 r5 p5 Map table Free-list p6 p7 p8 p9 p10 xor p1 ^ p2 ➜ p6 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
31
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p6 r4 p4 r5 p5 Map table Free-list p7 p8 p9 p10 xor p1 ^ p2 ➜ p6 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
32
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p6 r4 p4 r5 p5 Map table Free-list p7 p8 p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
33
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p6 r4 p4 r5 p5 Map table Free-list p7 p8 p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
34
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p6 r4 p7 r5 p5 Map table Free-list p8 p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
35
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p6 r4 p7 r5 p5 Map table Free-list p8 p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
36
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p6 r4 p7 r5 p5 Map table Free-list p8 p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
37
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
38
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
39
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p1 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
40
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
r1 p9 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1
41
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling
Fetch Decode Rename Dispatch Commit Buffer of instructions Issue Reg-read Execute Writeback Have unique register names Now put into out-of-order execution structures
42
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 43
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 44
Insn Inp1 R Inp2 R Dst Ready? Age
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 45
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 46
xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 Insn Inp1 R Inp2 R Dst Age Issue Queue p1 y p2 y p3 y p4 y p5 y p6 y p7 y p8 y p9 y Ready bits
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 47
Insn Inp1 R Inp2 R Dst Age xor p1 y p2 y p6 Issue Queue p1 y p2 y p3 y p4 y p5 y p6 n p7 y p8 y p9 y Ready bits xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 48
Insn Inp1 R Inp2 R Dst Age xor p1 y p2 y p6 add p6 n p4 y p7 1 Issue Queue p1 y p2 y p3 y p4 y p5 y p6 n p7 n p8 y p9 y Ready bits xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 49
Insn Inp1 R Inp2 R Dst Age xor p1 y p2 y p6 add p6 n p4 y p7 1 sub p5 y p2 y p8 2 Issue Queue p1 y p2 y p3 y p4 y p5 y p6 n p7 n p8 n p9 y Ready bits xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 50
Insn Inp1 R Inp2 R Dst Age xor p1 y p2 y p6 add p6 n p4 y p7 1 sub p5 y p2 y p8 2 addi p8 n
p9 3 Issue Queue p1 y p2 y p3 y p4 y p5 y p6 n p7 n p8 n p9 n Ready bits xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 51
Issue Reg-read Execute Writeback
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 52
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 53
Insn Inp1 R Inp2 R Dst Age xor p1 y p2 y p6 add p6 n p4 y p7 1 sub p5 y p2 y p8 2 addi p8 n
p9 3 Ready! Ready!
called a Content Addressable Memory (CAM)
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 54
Insn Inp1 R Inp2 R Dst Age xor p1 y p2 y p6 add p6 y p4 y p7 1 sub p5 y p2 y p8 2 addi p8 y
p9 3 p1 y p2 y p3 y p4 y p5 y p6 y p7 n p8 y p9 n Ready bits
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 55
Insn Inp1 R Inp2 R Dst Age add p6 y p4 y p7 1 addi p8 y
p9 3
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 56
p1 7 p2 3 p3 4 p4 9 p5 6 p6 0 p7 0 p8 0 p9 0
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 57
p1 7 p2 3 p3 4 p4 9 p5 6 p6 0 p7 0 p8 0 p9 0
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 58
p1 7 p2 3 p3 4 p4 9 p5 6 p6 0 p7 0 p8 0 p9 0
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 59
p1 7 p2 3 p3 4 p4 9 p5 6 p6 0 p7 0 p8 0 p9 0
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 60
p1 7 p2 3 p3 4 p4 9 p5 6 p6 4 p7 0 p8 3 p9 0
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 61
p1 7 p2 3 p3 4 p4 9 p5 6 p6 4 p7 13 p8 3 p9 4
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 62
p1 7 p2 3 p3 4 p4 9 p5 6 p6 4 p7 13 p8 3 p9 4 Note similarity to in-order
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 63
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 64
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 65
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 66
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 67
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 68
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 69
xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 r1 p1 r2 p2 r3 p3 r4 p4 r5 p5 Map table Free-list p6 p7 p8 p9 p10
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 70
r1 p1 r2 p2 r3 p3 r4 p4 r5 p5 Map table Free-list p6 p7 p8 p9 p10 xor p1 ^ p2 ➜ xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ]
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 71
r1 p1 r2 p2 r3 p6 r4 p4 r5 p5 Map table Free-list p7 p8 p9 p10 xor p1 ^ p2 ➜ p6 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ]
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 72
r1 p1 r2 p2 r3 p6 r4 p4 r5 p5 Map table Free-list p7 p8 p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ] [ p4 ]
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 73
r1 p1 r2 p2 r3 p6 r4 p7 r5 p5 Map table Free-list p8 p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ] [ p4 ]
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 74
r1 p1 r2 p2 r3 p6 r4 p7 r5 p5 Map table Free-list p8 p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ] [ p4 ] [ p6 ]
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 75
r1 p1 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ] [ p4 ] [ p6 ]
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 76
r1 p1 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p9 p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ] [ p4 ] [ p6 ] [ p1 ]
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 77
r1 p9 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p10 xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ] [ p4 ] [ p6 ] [ p1 ]
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 78
r1 p9 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p10 bnz p1, loop xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 bnz r1 loop xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ ] [ p3 ] [ p4 ] [ p6 ] [ p1 ]
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 79
r1 p1 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p10 bnz p1, loop xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 bnz r1 loop xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ ] [ p3 ] [ p4 ] [ p6 ] [ p1 ] p9
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 80
r1 p1 r2 p2 r3 p6 r4 p7 r5 p5 Map table Free-list p10 bnz p1, loop xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 bnz r1 loop xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 [ ] [ p3 ] [ p4 ] [ p6 ] p9 p8
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 81
r1 p1 r2 p2 r3 p6 r4 p4 r5 p5 Map table Free-list p10 bnz p1, loop xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 bnz r1 loop xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 [ ] [ p3 ] [ p4 ] p9 p8 p7
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 82
r1 p1 r2 p2 r3 p3 r4 p4 r5 p5 Map table Free-list p10 bnz p1, loop xor p1 ^ p2 ➜ p6 bnz r1 loop xor r1 ^ r2 ➜ r3 [ ] [ p3 ] p9 p8 p7 p6
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 83
r1 p1 r2 p2 r3 p3 r4 p4 r5 p5 Map table Free-list p10 bnz p1, loop bnz r1 loop [ ] p9 p8 p7 p6
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 84
xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ] [ p4 ] [ p6 ] [ p1 ]
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 85
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 86
r1 p9 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ] [ p4 ] [ p6 ] [ p1 ] p10
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 87
r1 p9 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list xor p1 ^ p2 ➜ p6 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 xor r1 ^ r2 ➜ r3 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p3 ] [ p4 ] [ p6 ] [ p1 ] p3 p10
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 88
r1 p9 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p10 add p6 + p4 ➜ p7 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 add r3 + r4 ➜ r4 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p4 ] [ p6 ] [ p1 ] p4 p3
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 89
r1 p9 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p10 sub p5 - p2 ➜ p8 addi p8 + 1 ➜ p9 sub r5 - r2 ➜ r3 addi r3 + 1 ➜ r1 [ p6 ] [ p1 ] p4 p3 p6
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 90
r1 p9 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p10 addi p8 + 1 ➜ p9 addi r3 + 1 ➜ r1 [ p1 ] p4 p3 p6 p1
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 91
r1 p9 r2 p2 r3 p8 r4 p7 r5 p5 Map table Free-list p10 p4 p3 p6 p1
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 92
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 93
94
1 2 3 4 5 6 7 8 9 10 11 12
ld [p1] ➜ p2
F Di I RR X M1 M2 W C
add p2 + p3 ➜ p4
F Di I RR X W C
xor p4 ^ p5 ➜ p6
F Di I RR X W C
ld [p7] ➜ p8
F Di I RR X M1 M2 W C
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F
add r2 + r3 ➜ r4
F
xor r4 ^ r5 ➜ r6 ld [r7] ➜ r4
Issue Queue Insn Src1 R? Src2 R? Dest Age Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9
r1 p8 r2 p7 r3 p6 r4 p5 r5 p4 r6 p3 r7 p2 r8 p1
Insn To Free Done? ld no add no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di
add r2 + r3 ➜ r4
F
xor r4 ^ r5 ➜ r6 ld [r7] ➜ r4
Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 no p10
r1 p8 r2 p9 r3 p6 r4 p5 r5 p4 r6 p3 r7 p2 r8 p1
Insn To Free Done? ld p7 no add no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di
add r2 + r3 ➜ r4
F Di
xor r4 ^ r5 ➜ r6 ld [r7] ➜ r4
Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 no p6 yes p10 1 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 no p10 no p11
r1 p8 r2 p9 r3 p6 r4 p10 r5 p4 r6 p3 r7 p2 r8 p1
Insn To Free Done? ld p7 no add p5 no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di
add r2 + r3 ➜ r4
F Di
xor r4 ^ r5 ➜ r6
F
ld [r7] ➜ r4
F Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 no p6 yes p10 1 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 no p10 no p11
r1 p8 r2 p9 r3 p6 r4 p10 r5 p4 r6 p3 r7 p2 r8 p1
Insn To Free Done? ld p7 no add p5 no xor no ld no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I
add r2 + r3 ➜ r4
F Di
xor r4 ^ r5 ➜ r6
F
ld [r7] ➜ r4
F Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 no p6 yes p10 1 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 no p10 no p11
r1 p8 r2 p9 r3 p6 r4 p10 r5 p4 r6 p3 r7 p2 r8 p1
Insn To Free Done? ld p7 no add p5 no xor no ld no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I
add r2 + r3 ➜ r4
F Di
xor r4 ^ r5 ➜ r6
F Di
ld [r7] ➜ r4
F Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 no p6 yes p10 1 xor p10 no p4 yes p11 2 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 no p10 no p11 no p12
r1 p8 r2 p9 r3 p6 r4 p10 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 no add p5 no xor p3 no ld no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I
add r2 + r3 ➜ r4
F Di
xor r4 ^ r5 ➜ r6
F Di
ld [r7] ➜ r4
F Di Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 no p6 yes p10 1 xor p10 no p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 no p10 no p11 no p12 no
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 no add p5 no xor p3 no ld p10 no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR
add r2 + r3 ➜ r4
F Di
xor r4 ^ r5 ➜ r6
F Di
ld [r7] ➜ r4
F Di I Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 no p6 yes p10 1 xor p10 no p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 no p10 no p11 no p12 no
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 no add p5 no xor p3 no ld p10 no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X
add r2 + r3 ➜ r4
F Di
xor r4 ^ r5 ➜ r6
F Di
ld [r7] ➜ r4
F Di I RR Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 no p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 yes p10 no p11 no p12 no
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 no add p5 no xor p3 no ld p10 no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X M1
add r2 + r3 ➜ r4
F Di I
xor r4 ^ r5 ➜ r6
F Di
ld [r7] ➜ r4
F Di I RR X Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 yes p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 yes p10 yes p11 no p12 no
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 no add p5 no xor p3 no ld p10 no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X M1
add r2 + r3 ➜ r4
F Di I
xor r4 ^ r5 ➜ r6
F Di
ld [r7] ➜ r4
F Di I RR X Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 yes p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 yes p10 yes p11 no p12 yes
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 no add p5 no xor p3 no ld p10 no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X M1 M2
add r2 + r3 ➜ r4
F Di I RR
xor r4 ^ r5 ➜ r6
F Di I
ld [r7] ➜ r4
F Di I RR X M1 Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 yes p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 yes p10 yes p11 yes p12 yes
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 no add p5 no xor p3 no ld p10 no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X M1 M2 W
add r2 + r3 ➜ r4
F Di I RR X
xor r4 ^ r5 ➜ r6
F Di I RR
ld [r7] ➜ r4
F Di I RR X M1 M2 Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 yes p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7 yes p8 yes p9 yes p10 yes p11 yes p12 yes
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 yes add p5 no xor p3 no ld p10 no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X M1 M2 W C
add r2 + r3 ➜ r4
F Di I RR X
xor r4 ^ r5 ➜ r6
F Di I RR
ld [r7] ➜ r4
F Di I RR X M1 M2 Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 yes p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7
yes p9 yes p10 yes p11 yes p12 yes
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 yes add p5 no xor p3 no ld p10 no
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X M1 M2 W C
add r2 + r3 ➜ r4
F Di I RR X W
xor r4 ^ r5 ➜ r6
F Di I RR X
ld [r7] ➜ r4
F Di I RR X M1 M2 W Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 yes p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5 yes p6 yes p7
yes p9 yes p10 yes p11 yes p12 yes
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 yes add p5 yes xor p3 no ld p10 yes
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X M1 M2 W C
add r2 + r3 ➜ r4
F Di I RR X W C
xor r4 ^ r5 ➜ r6
F Di I RR X
ld [r7] ➜ r4
F Di I RR X M1 M2 W Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 yes p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5
yes p7
yes p9 yes p10 yes p11 yes p12 yes
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 yes add p5 yes xor p3 no ld p10 yes
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X M1 M2 W C
add r2 + r3 ➜ r4
F Di I RR X W C
xor r4 ^ r5 ➜ r6
F Di I RR X W
ld [r7] ➜ r4
F Di I RR X M1 M2 W Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 yes p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3 yes p4 yes p5
yes p7
yes p9 yes p10 yes p11 yes p12 yes
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 yes add p5 yes xor p3 yes ld p10 yes
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X M1 M2 W C
add r2 + r3 ➜ r4
F Di I RR X W C
xor r4 ^ r5 ➜ r6
F Di I RR X W C
ld [r7] ➜ r4
F Di I RR X M1 M2 W C Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 yes p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3
yes p5
yes p7
yes p9 yes p10
yes p12 yes
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 yes add p5 yes xor p3 yes ld p10 yes
Reorder Buffer
1 2 3 4 5 6 7 8 9 10 11 12
ld [r1] ➜ r2
F Di I RR X M1 M2 W C
add r2 + r3 ➜ r4
F Di I RR X W C
xor r4 ^ r5 ➜ r6
F Di I RR X W C
ld [r7] ➜ r4
F Di I RR X M1 M2 W C Issue Queue Insn Src1 R? Src2 R? Dest Age ld p8 yes
p9 add p9 yes p6 yes p10 1 xor p10 yes p4 yes p11 2 ld p2 yes
p12 3 Ready Table
p1 yes p2 yes p3
yes p5
yes p7
yes p9 yes p10
yes p12 yes
Map Table r1 p8 r2 p9 r3 p6 r4 p12 r5 p4 r6 p11 r7 p2 r8 p1
Insn To Free Done? ld p7 yes add p5 yes xor p3 yes ld p10 yes
Reorder Buffer
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 114
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 115
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 116
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 117
1 2 3 4 5 6 7 8 9 10 11 12
mul p1 * p2 ➜ p3
F Di I RR X1 X2 X3 X4 W C
jump-not-zero p3
F Di I RR X W C
st p5 ➜ [p3+4]
F Di I RR X W C
st p4 ➜ [p6+8]
F Di I?
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 118
1 2 3 4 5 6 7 8 9 10 11 12
mul p1 * p2 ➜ p3
F Di I RR X1 X2 X3 X4 W C
jump-not-zero p3
F Di I RR X W C
st p5 ➜ [p3+4]
F Di I RR X M W C
st p4 ➜ [p6+8]
F Di I? RR X M W C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 119
1 2 3 4 5 6 7 8 9 10 11 12
mul p1 * p2 ➜ p3
F Di I RR X1 X2 X3 X4 W C
jump-not-zero p3
F Di I RR X W C
st p5 ➜ [p3+4]
F Di I RR X M W C
st p4 ➜ [p6+8]
F Di I? RR X M W C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 120
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 121
1 2 3 4 5 6 7 8 9 10 11 12
fdiv p1 / p2 ➜ p9
F Di I RR X1 X2 X3 X4 X5 X6 W C
st p4 ➜ [p5+4]
F Di I RR X W C
st p3 ➜ [p6+8]
F Di I RR X W C
ld [p7] ➜ p8
F Di I? RR X M1 M2 W C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 122
1 2 3 4 5 6 7 8 9 10 11 12
fdiv p1 / p2 ➜ p9
F Di I RR X1 X2 X3 X4 X5 X6 W C
st p4 ➜ [p5+4]
F Di I RR X SQ C
st p3 ➜ [p6+8]
F Di I RR X SQ C
ld [p7] ➜ p8
F Di I? RR X M1 M2 W C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 123
1 2 3 4 5 6 7 8 9 10 11 12
fdiv p1 / p2 ➜ p9
F Di I RR X1 X2 X3 X4 X5 X6 W C
st p4 ➜ [p5+4]
F Di I RR X SQ C
st p3 ➜ [p6+8]
F Di I RR X SQ C
ld [p7] ➜ p8
F Di I? RR X M1 M2 W C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 124
1 2 3 4 5 6 7 8 9 10 11 12
mul p1 * p2 ➜ p3
F Di I RR X1 X2 X3 X4 W C
jump-not-zero p3
F Di I RR X W C
ld [p3+4] ➜ p5
F Di I RR X M1 M2 W C
st p4 ➜ [p6+8]
F Di I RR X SQ C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 125
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 126
value address == == == == == == == == age Data cache head tail load position address data in data out Store Queue (SQ)
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 127
1 2 3 4 5 6 7 8 9 10 11 12
mul p1 * p2 ➜ p3
F Di I RR X1 X2 X3 X4 W C
jump-not-zero p3
F Di I RR X W C
st p5 ➜ [p3+4]
F Di I RR X SQ C
ld [p6+8] ➜ p7
F Di I? RR X M1 M2 W C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 128
1 2 3 4 5 6 7 8 9 10 11 12
mul p1 * p2 ➜ p3
F Di I RR X1 X2 X3 X4 W C
jump-not-zero p3
F Di I RR X W C
st p5 ➜ [p3+4]
F Di I RR X SQ C
ld [p6+8] ➜ p7
F Di I? RR X M1 M2 W C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 129
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 130
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 131
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 132
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ld [p1] ➜ p4 F Di
I Rr X M1 M2 W C
ld [p2] ➜ p5 F Di
I Rr X M1 M2 W C
add p4, p5 ➜ p6 F Di
I Rr X W C
st p6 ➜ [p3] F Di
I Rr X SQ C
ld [p1+4] ➜ p7 F Di I
Rr X M1 M2 W C
ld [p2+4] ➜ p8 F Di I
Rr X M1 M2 W C
add p7, p8 ➜ p9 F Di
I Rr X W C
st p9 ➜ [p3+4] F Di
I Rr X SQ
C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 133
Conservative load scheduling: can’t issue ld [p1+4] until cycle 7! Might as well be an in-order machine on this example Can we do better? How?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ld [p1] ➜ p4 F Di
I Rr X M1 M2 W C
ld [p2] ➜ p5 F Di
I Rr X M1 M2 W C
add p4, p5 ➜ p6 F Di
I Rr X W C
st p6 ➜ [p3] F Di
I Rr X SQ C
ld [p1+4] ➜ p7 F Di I Rr
X M1 M2 W C
ld [p2+4] ➜ p8 F Di I Rr
X M1 M2 W C
add p7, p8 ➜ p9 F Di
I Rr X W C
st p9 ➜ [p3+4] F Di
I Rr X SQ C
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 134
Optimistic load scheduling: can actually benefit from out-of-order! But how do we know when out speculation (optimism) fails?
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 135
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 136
== == == == == == == == Data Cache head tail load queue (LQ) address == == == == == == == == tail head age store position flush? SQ
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 137
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 138
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 139
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 140
141
RegFile p1
5
p2 100 p3
9
p4 200 p5 100 p6
Age Addr Store Queue Age Addr Val
RegFile p1
5
p2 100 p3
9
p4 200 p5 100 p6
Age Addr Store Queue Age Addr Val
RegFile p1
5
p2 100 p3
9
p4 200 p5 100 p6
Age Addr Store Queue Age Addr Val Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
142
RegFile p1
5
p2 100 p3
9
p4 200 p5 100 p6
Age Addr Store Queue Age Addr Val
1 100 5 RegFile p1
5
p2 100 p3
9
p4 200 p5 100 p6
Age Addr Store Queue Age Addr Val
1 100 5 2 200 9 RegFile p1
5
p2 100 p3
9
p4 200 p5 100 p6
5
p7
Age Addr
3 100
Store Queue Age Addr Val
1 100 5 2 200 9
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
143
RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
Age Addr Store Queue Age Addr Val
RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
Age Addr Store Queue Age Addr Val
RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
Age Addr Store Queue Age Addr Val Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
144
RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
Age Addr Store Queue Age Addr Val
1 100 5 RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
Age Addr Store Queue Age Addr Val
1 100 5 2 100 9 RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
9
p7
Age Addr
3 100
Store Queue Age Addr Val
1 100 5 2 100 9
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
145
Load Queue Age Addr Store Queue Age Addr Val
2 100 9
Load Queue Age Addr Store Queue Age Addr Val
1 100 5 2 100 9 RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
9
p7
Age Addr
3 100
Store Queue Age Addr Val
1 100 5 2 100 9
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
p1
5
p2 100 p3
9
p4 100 p5 100 p6
146
RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
13
p7
Age Addr
3 100
Store Queue Age Addr Val
RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
13
p7
Age Addr
3 100
Store Queue Age Addr Val
2 100 9
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
147
RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
Age Addr Store Queue Age Addr Val
1 100 5 RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
5
p7
Age Addr
3 100
Store Queue Age Addr Val
1 100 5 RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
5
p7
Age Addr
3 100
Store Queue Age Addr Val
1 100 5 2 100 9
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
148
RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
Age Addr Store Queue Age Addr Val
2 100 9 RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
9
p7
Age Addr
3 100
Store Queue Age Addr Val
2 100 9 RegFile p1
5
p2 100 p3
9
p4 100 p5 100 p6
9
p7
Age Addr
3 100
Store Queue Age Addr Val
1 100 5 2 100 9
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
Addr Val
100 13 200 17 Cache
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 149
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 150
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 151
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 152
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 153
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 154
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 155
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 156
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 157
CIS 501: Comp. Arch. | Prof. Milo Martin | Scheduling 158
CPU Mem I/O System software App App App