MIPS MULTICICLO
Fluxo de Dados e Controle
1998 Morgan Kaufmann Publishers
1
Usa máquina de estado finito para controle
•
Máquinas de estado finito:
– Um conjunto de estados e
– Função próximo estado (determinado pelo estado atual e
entrada)
– Função de saída (determinada pelo estado atual e possivelmente
entrada)
Usaremos uma máquina Moore (saída baseada somente no
estado atual)
Current state
Next-state
function
Next
state
Clock
Inputs
Output
function
Outputs
1998 Morgan Kaufmann Publishers
2
Técnica multiciclo
•
•
Quebrar as instruções em passos, cada passo leva um ciclo
– Balancear a quantidade de trabalhos a realizar
– Restringir cada ciclo para usar somente uma unidade funcional
No fim de um ciclo
– Armazenar valores para serem usados nos ciclos posteriores
– introduzir registradores internos adicionais
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
1998 Morgan Kaufmann Publishers
3
Cinco passos de Execução
•
Busca da instrução (Instruction Fetch)
•
Decodificação da instrução e busca do registrador
•
Execução, Computação do endereço de memória, ou conclusão de
uma instrução de branch
•
Acesso à memória ou conclusão de uma instrução R-type
•
Passo de Write-back
INSTRUÇÕES LEVEM DE 3 - 5 CICLOS!
1998 Morgan Kaufmann Publishers
4
Passo 1: Busca da instrução (Instruction Fetch)
•
•
•
Usar o PC para a leitura da instrução e carga da mesma no registrador
de instrução (Instruction Register).
Incrementar o valor do PC por 4 e carregar o resultado no PC.
Pode ser descrito sucintamente usando RTL "Register-Transfer
Language"
IR = Memory[PC];
PC = PC + 4;
Podemos obter os valores dos sinais de controle?
Quais as vantagens de atualizar o PC neste passo?
1998 Morgan Kaufmann Publishers
5
Passo 2: Decod. da Instrução e Busca de Registradores
•
•
•
Leitura dos registradores rs e rt
Computar o endereço de branch no caso da instrução de branch
RTL:
A = Reg[IR[25-21]];
B = Reg[IR[20-16]];
ALUOut = PC + (sign-extend(IR[15-0]) << 2);
•
Estamos acionando as linhas de controle baseadas no tipo de
instrução
(a instrução está sendo "decodificada" na lógica de controle)
1998 Morgan Kaufmann Publishers
6
Passo 3 (dependente da instrução)
•
ALU está realizando uma das três funções, baseadas no tipo de
instrução
•
Referência à memória:
ALUOut = A + sign-extend(IR[15-0]);
•
R-type:
ALUOut = A op B;
•
Branch:
if (A==B) PC = ALUOut;
1998 Morgan Kaufmann Publishers
7
Passo 4 (R-type ou acesso à memória)
•
Acesso à memória através de loads e stores
MDR = Memory[ALUOut];
or
Memory[ALUOut] = B;
•
Fim das instruções R-type
Reg[IR[15-11]] = ALUOut;
A escrita é realizada no fim do ciclo, na borda
1998 Morgan Kaufmann Publishers
8
Passo Write-back
• Reg[IR[20-16]]= MDR;
E as outras instruções?
1998 Morgan Kaufmann Publishers
9
Resumo:
Step name
Instruction fetch
Action for R-type
instructions
Instruction
decode/register fetch
Action for memory-reference
Action for
instructions
branches
IR = Memory[PC]
PC = PC + 4
A = Reg [IR[25-21]]
B = Reg [IR[20-16]]
ALUOut = PC + (sign-extend (IR[15-0]) << 2)
Execution, address
computation, branch/
jump completion
ALUOut = A op B
ALUOut = A + sign-extend
(IR[15-0])
Memory access or R-type
completion
Reg [IR[15-11]] =
ALUOut
Load: MDR = Memory[ALUOut]
or
Store: Memory [ALUOut] = B
Memory read completion
if (A ==B) then
PC = ALUOut
Action for
jumps
PC = PC [31-28] II
(IR[25-0]<<2)
Load: Reg[IR[20-16]] = MDR
1998 Morgan Kaufmann Publishers
10
Implementando o Controle
•
Para os dois primeiros passos, os sinais de controle são iguais para
todas as instruções.
•
A partir do passo 3, os sinais de controle são dependentes de:
– Que instrução está sendo executada
– Que passo está sendo realizada
•
Usar as informações acumuladas para especificar uma máquina de
estado finito
– Especificar uma máquina de estado finito:
1) para os dois primeiros passos correspondem dois estados da
máquina
2) a partir do passo 3, cada combinação de instrução e passo
resulta num estado diferente.
1998 Morgan Kaufmann Publishers
11
Especificação da FSM
Instruction decode/
register fetch
Instruction fetch
(Op
2
W ')
= 'L
O
or (
'S
p=
=
')
W
'S
5
MemRead
IorD = 1
R-type completion
7
MemWrite
IorD = 1
Write-back step
4
RegDst = 0
RegWrite
MemtoReg = 1
Quantos bits de estado são necessários?
RegDst = 1
RegWrite
MemtoReg = 0
')
Jump
completion
9
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
p
Memory
access
'B
EQ
8
(O
(Op = 'LW')
e)
-t yp
R
=
Branch
completion
Execution
ALUSrcA =1
ALUSrcB = 00
ALUOp = 10
Memory
access
3
•
(Op
W ')
6
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
(Op = 'J')
Memory address
computation
1
=
Start
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
(O
p
0
PCWrite
PCSource = 10
Máquina de estado finito para controle
(controle hardwired, controle fixo)
PCWrite
•
PCWriteCond
IorD
MemRead
Implementação:
MemWrite
(Op
2
W ')
= 'L
p=
'SW
6
Branch
completion
'B
EQ
8
ALUSrcA =1
ALUSrcB = 00
ALUOp = 10
PCSource
')
e)
-typ
=R
ALUOp
Jump
completion
Outputs
9
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
PCWrite
PCSource = 10
ALUSrcB
ALUSrcA
RegWrite
(O
p
=
'S
')
W
(Op = 'LW')
(Op
')
Execution
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
MemtoReg
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
(Op = 'J')
or (O
Control logic
1
=
Memory address
computation
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
(O
p
Start
IRWrite
Instruction decode/
register fetch
Instruction fetch
0
Memory
access
3
Memory
access
5
MemRead
IorD = 1
RegDst
R-type completion
7
MemWrite
IorD = 1
RegDst = 1
RegWrite
MemtoReg = 0
NS3
NS2
NS1
NS0
Write-back step
4
S0
S1
S2
S3
Op1
Op2
Op3
Op5
Op4
Instruction register
opcode field
Op0
Inputs
RegDst = 0
RegWrite
MemtoReg = 1
State register
1998 Morgan Kaufmann Publishers
13
Implementação em PLA da lógica de controle
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
PCWrite
PCWriteCond
IorD
MemRead
MemWrite
IRWrite
MemtoReg
PCSource1
PCSource0
ALUOp1
ALUOp0
ALUSrcB1
ALUSrcB0
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
NS0
1998 Morgan Kaufmann Publishers
14
Controle microprogramado – uso de memória de
microprograma (microcódigo)
Control unit
Microcode memory
Outputs
Input
PCWrite
PCWriteCond
IorD
MemRead
MemWrite
IRWrite
BWrite
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
AddrCtl
Datapath
1
Microprogram counter
Adder
Op[5– 0]
Address select logic
Instruction register
opcode field
•
O que são “microinstruções” ?
1998 Morgan Kaufmann Publishers
15
Microprogramação
•
Uma metodologia de especificação
– Apropriado se centenas de opcodes, modos, ciclos, etc.
– sinais especificados simbolicamente usando microinstruções
Label
Fetch
Mem1
LW2
ALU
control
Add
Add
Add
SRC1
PC
PC
A
Register
control
SRC2
4
Extshft Read
Extend
PCWrite
Memory
control
Read PC ALU
Read ALU
Write MDR
SW2
Rformat1 Func code A
Write ALU
B
Write ALU
BEQ1
JUMP1
•
•
Subt
A
B
ALUOut-cond
Jump address
Sequencing
Seq
Dispatch 1
Dispatch 2
Seq
Fetch
Fetch
Seq
Fetch
Fetch
Fetch
Duas implementações da mesma arquitetura tem o mesmo microcódigo?
O que faria um microassembler?
1998 Morgan Kaufmann Publishers
16
Comparação: Controle fixo e Microprogramado
•
Controle fixo:
- complexidade do circuito cresce linearmente com o número
de instruções.
- após a construção é difícil a alteração do conjunto de
instruções implementado
- apresenta melhor desempenho
•
Controle Microprogramado:
– a complexidade do circuito não muda enquanto usar a mesma
memória de microcódigo
– é fácil mudar o conteúdo da memória de microprograma e
portanto alterar o conjunto de instruções implementado
– o desempenho é menor em relação ao controle fixo.
1998 Morgan Kaufmann Publishers
17
C
on
tro
le
fix
o
complexidade
Comparação: Controle fixo e Microprogramado
Controle
microprogramado
20
40
60
80
100
120
Número de instruções
1998 Morgan Kaufmann Publishers
18
Download

Máquina de estado finito para controle