Procesory superskalarne
1/28
Procesory
superskalarne -
scoreboarding
IS
RO
EX
WB
Scoreboard
FU
1
EX
FU
N
EX
FU
0
…
IF
MEM
1. Zależności danych
2/28
1
2
3
4
5
Zależności danych – nowa terminologia
y0 = a
y1 = y0
y0 = y1
y1 = 1
y0 = 0
y0 = b
RAW
WAR
Read After Write
Read
Write
Write After Read
WAW
Write After Write
Write
Read
Write
Write
2. Scoreboarding
3/28
1
2
3
4
5
Scoreboarding
IS
RO
EX
MEM
WB
Scoreboard
FU
1
EX
FU
N
EX
FU
0
…
IF
ID
IF
EX
WB
MEM
IF – Instruction Fetch
ID – Instruction Decode
EX – Execute
MEM – Memory Access
WB – Write Back
IS – Instruction Issue
RO – Read Operands
3. Zależności w scoreboarding
4/28
1
2
3
4
5
IS
RO
EX
WB
Scoreboard
FU
1
EX
FU
N
EX
FU
0
…
IF
MEM
WAW
RAW
WAR
Strukt.
Eliminacja zależności w algorytmie scoreboarding
5/28
1
2
3
4
5
4. Struktury w scoreboarding
R
F
0
…
…
R
0
R
1
R
2
R
M
Busy RO
WB
EX
F
N
F
1
…
Dest
Src
Struktury wykorzystywane w algorytmie scoreboarding
5. Przykład
6/28
1
2
3
4
5
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
Przykład, str. 1
5. Przykład
7/28
1
2
3
4
5
Przykład, str. 2
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
5. Przykład
8/28
1
2
3
4
5
Przykład, str. 3
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
5. Przykład
9/28
1
2
3
4
5
Przykład, str. 4
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
1
0
0
0
0
0
0
1
1
0
0
1
0
0
0
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
5. Przykład
10/28
1
2
3
4
5
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
1
0
0
0
0
0
0
1
1
1
0
1
0
0
0
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
Przykład, str. 5
5. Przykład
11/28
1
2
3
4
5
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
1
0
0
0
0
0
0
1
1
1
1
1
0
0
0
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
Przykład, str. 6
5. Przykład
12/28
1
2
3
4
5
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
0
1
1
0
1
0
0
1
1
1
0
0
1
1
0
0
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
Przykład, str. 7
5. Przykład
13/28
1
2
3
4
5
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
0
1
1
0
1
0
0
1
1
1
1
0
1
1
1
1
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
Przykład, str. 8
5. Przykład
14/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
0
1
1
0
1
0
0
1
1
1
1
1
1
0
0
0
Przykład, str. 9
5. Przykład
15/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
0
1
1
0
1
0
0
0
1
0
0
0
1
1
0
0
Przykład, str. 10
5. Przykład
16/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
1
0
0
1
0
0
0
1
1
0
0
1
1
1
0
cykl: 1
Przykład, str. 11
5. Przykład
17/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
1
0
0
1
0
0
0
1
1
1
0
1
1
1
0
cykl: 2
Przykład, str. 12
5. Przykład
18/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
1
0
0
1
0
0
0
1
1
1
0
1
1
1
0
cykl: 3
Przykład, str. 13
5. Przykład
19/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
1
0
0
1
0
0
0
1
1
1
0
1
1
1
0
cykl: 4
Przykład, str. 14
5. Przykład
20/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
1
0
0
1
0
0
0
1
1
1
0
1
1
1
0
Przykład, str. 15
5. Przykład
21/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
1
0
0
1
0
0
0
1
1
1
0
1
1
1
1
Przykład, str. 16
5. Przykład
22/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
1
0
0
1
0
0
0
0
1
1
1
1
1
0
0
0
Przykład, str. 17
5. Przykład
23/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
0
0
0
1
0
0
0
0
0
0
0
0
1
1
0
0
Przykład, str. 18
5. Przykład
24/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
0
0
0
1
0
0
0
0
0
0
0
0
1
1
1
0
Przykład, str. 19
5. Przykład
25/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
0
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
Przykład, str. 20
5. Przykład
26/28
1
2
3
4
5
y0 = a + b
y1 = y0 + c
y2 = y3
y1 = y0 * s
y0 = a
y3 = b
(1)
(2)
(3)
(4)
(5)
(6)
Program
IS
RO
EX
WB
Scoreboard
ALU
1
EX
ALU
0
IF
WAW
Strukt.
RAW
WAR
R
ALU
0
y
0
y
1
y
3
Busy RO
WB
EX
ALU
1
Src
y
2
Dest
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Przykład, str. 21
Procesory superskalarne
27/28
Polecana literatura
1) J. Slic, B. Robic, T. Ungerer, Processor Architecture, From Dataflow to Superscalar and
Beyond, Springer 1999
Rozdział 3
strony 99 - 120
2) W. Stallings, Organizacja i architektura systemu komputerowego, WNT 2003
Rozdział 14, str 559-599
21 stron
40 stron
Procesory superskalarne
28/28
KONIEC
dr inż. Mariusz Kapruziak
mkapruziak@wi.ps.pl
pok. 107, tel. 449 55 44