Architektura typu Multi

Transkrypt

Architektura typu Multi
Instruction
register
PC
Address
Data
A
Register #
Instruction
Memory
or data
Data
Memory
data
register
ALU
Registers
Register #
B
Register #
Elementy architektury typu multi–cycle
ALUOut
Architektura Multi-cycle
• każda instrukcja wykonuje się w kilku cyklach zegara
• instrukcje wymagają różnej liczby cykli zegara
• dane wykorzystywane przez jedną instrukcję, umieszczane są w rejestrach pośrednich i wykorzystywane w następnych cyklach zegara tej samej instrukcji
• dane będące końcowym wynikiem instrukcji, umieszczane są w pliku rejestrów,
pamięci zewnętrznej lub w PC
• redukcja dużych bloków architektury i dodanie rejestrów pośrednich
Bloki architektury:
•
•
•
•
jednolita pamięć (instrukcje programu + dane)
blok pliku rejestrów
jeden element wykonawczy — ALU
dodatkowe rejestry pośrednie, na wyjściu każdego bloku
Rejestry pośrednie (niewidoczne dla programisty):
IR
MDR
A,B
ALUOut
—
—
—
—
instruction register — przechowuje kod instrukcji w czasie jej wykonywania
memory data register — przechowuje dane odczytane z pamięci
rejestry przechowujące odczytane wartości z pliku rejestrów mikroprocesora
rejestr przechowujący wynik działania ALU
PC
0
M
u
x
1
Address
Memory
MemData
Write
data
Instruction
[25-21]
Read
register 1
Instruction
[20-16]
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
Instruction
[15-0]
Instruction
register
Instruction
[15-0]
Memory
data
register
0
M
Instruction u
x
[15-11]
1
A
B
0
M
u
x
1
Sign
extend
32
Zero
ALU ALU
result
ALUOut
0
4
Write
data
16
0
M
u
x
1
1 M
u
2 x
3
Shift
left 2
Dodatkowe multiplexery przed ALU są konieczne do realizacji wszystkich typów
instrukcji oraz inkrementacji PC za pomocą tylko jednej jednostki wykonawczej
Ścieżki danych architektury multi–cycle
IorD
PC
0
M
u
x
1
MemRead
MemWrite
RegDst
Memory
MemData
Instruction
register
Instruction
[15-0]
Memory
data
register
0
M
u
x
1
Read
register 1
Read
Read
data 1
register 2
Registers
Write
Read
register
data 2
Instruction
[20-16]
Instruction
[15-0]
ALUSrcA
RegWrite
Instruction
[25-21]
Address
Write
data
IRWrite
0
M
Instruction u
x
[15-11]
1
A
B
0
M
u
x
1
16
Sign
extend
0
4
Write
data
32
Shift
left 2
Zero
ALU ALU
result
1 M
u
2 x
3
ALU
control
Instruction [5-0]
MemtoReg
ALUSrcB ALUOp
Sygnały sterujące architektury multi–cycle
ALUOut
PCWriteCond
PCSource
PCWrite
ALUOp
Outputs
IorD
ALUSrcB
MemRead
ALUSrcA
Control
MemWrite
RegWrite
MemtoReg
IRWrite
Op
[5-0]
RegDst
0
M
26
Instruction [25-0]
PC
0
M
u
x
1
Shift
left 2
Instruction
[31-26]
Address
Memory
MemData
Write
data
Instruction
[25-21]
Read
register 1
Instruction
[20-16]
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
Instruction
[15-0]
Instruction
register
Instruction
[15-0]
Memory
data
register
0
M
Instruction u
x
[15-11]
1
B
4
Write
data
0
M
u
x
1
16
Sign
extend
32
Shift
left 2
Jump
address [31-0]
Zero
ALU ALU
result
0
1 M
u
2 x
3
ALU
control
Instruction [5-0]
Kompletna architektura multi–cycle
x
2
PC [31-28]
0
M
u
x
1
A
28
1 u
ALUOut
Sygnał
RegDst
RegWrite
ALUSrcA
MemRead
MemWrite
MemToReg
IorD
IRWrite
PCWrite
PCWriteCond
0
numer rejestru do zapisu
—
PC do ALU
—
—
dane do zapisu w pliku
rejestrów z ALUOut
pamięć adresowana PC
—
—
—
1
numer rejestru do odczytu
zezwolenie na zapis od pliku rejestrów
A do ALU
zezwolenia na odczyt z pamięci
zezwolenia na zapis do pamięci
dane do zapisu w pliku
rejestrów z MDR
pamięć adresowana ALUOut
zezwolenia na zapis do IR
zezwolenia na zapis do PC
warunkowy zapis do PC
1-bitowe sygnały sterujące architektury multi–cycle
Sygnał
wartość
ALUOp
00
01
10
ALUSrcB
00
01
10
11
PCSource
00
01
10
Działanie
dodawanie (load-store)
odejmowanie (branch)
zależnie od pola Function (R-type)
B (R-type) do ALU
4 do ALU
instrukcja[15-0] (load-store) do ALU
instrukcja[15-0]«2 (branch) do ALU
ALU (PC+4) do PC
ALUOut (branch) do PC
PC[31-26]+IR[25-0]«2 (jump) do PC
2-bitowe sygnały sterujące architektury multi–cycle
(Op
=
6
EQ
')
'B
=
(Op
Branch
completion
8
Jump
completion
9
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
PCWrite
PCSource = 10
p
=
')
W
'S
Memory
access
3
Memory
access
5
MemRead
IorD = 1
4
ALUSrcA =1
ALUSrcB = 00
ALUOp = 10
)
(O
(Op = 'LW')
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
ype
-t
=R
(Op = 'J')
')
'LW
W')
= 'S
p
O
Execution
or (
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
(O
Memory address
computation
2
1
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
Start
Instruction decode/
register fetch
Instruction fetch
p
0
R-type completion
7
MemWrite
IorD = 1
RegDst = 1
RegWrite
MemtoReg = 0
Write-back step
RegDst= 0
RegWrite
MemtoReg=1
Kompletny diagram stanów bloku sterowania
Sygna³y
steruj¹ce
Blok logiki
kombinacyjnej
Control[n-0]
Outputs
(nastêpny stan)
Inputs
Rej. Stanu
Opcode
instrukcji
Control = F( Q(t), Opcode)
Q(t+1) = F( Q(t), Opcode)
Instr[31-26]
Q[3-0]
Realizacja sterowania w postaci maszyny stanowej
Pamiêæ ROM
dane
Sygna³y steruj¹ce
adres
Opcode
Realizacja sterowania w postaci pamięci ROM

Podobne dokumenty