Upload
internet
View
125
Download
0
Embed Size (px)
Citation preview
11998 Morgan Kaufmann Publishers
MIPS MULTICICLOFluxo de Dados e Controle
21998 Morgan Kaufmann Publishers
• 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)
Usa máquina de estado finito para controle
Next-statefunction
Current state
Clock
Outputfunction
Nextstate
Outputs
Inputs
31998 Morgan Kaufmann Publishers
• 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
Técnica multiciclo
Shiftleft 2
PC
Memory
MemData
Writedata
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Mux
0
1
Mux
0
1
4
Instruction[15– 0]
Signextend
3216
Instruction[25– 21]
Instruction[20– 16]
Instruction[15– 0]
Instructionregister
1 Mux
0
3
2
Mux
ALUresult
ALUZero
Memorydata
register
Instruction[15– 11]
A
B
ALUOut
0
1
Address
41998 Morgan Kaufmann Publishers
• 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!
Cinco passos de Execução
51998 Morgan Kaufmann Publishers
• 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?
Passo 1: Busca da instrução (Instruction Fetch)
61998 Morgan Kaufmann Publishers
• 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)
Passo 2: Decod. da Instrução e Busca de Registradores
71998 Morgan Kaufmann Publishers
• 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;
Passo 3 (dependente da instrução)
81998 Morgan Kaufmann Publishers
• 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
Passo 4 (R-type ou acesso à memória)
91998 Morgan Kaufmann Publishers
• Reg[IR[20-16]]= MDR;
E as outras instruções?
Passo Write-back
101998 Morgan Kaufmann Publishers
Resumo:
Step nameAction for R-type
instructionsAction for memory-reference
instructionsAction for branches
Action for jumps
Instruction fetch IR = Memory[PC]PC = PC + 4
Instruction A = Reg [IR[25-21]]decode/register fetch B = Reg [IR[20-16]]
ALUOut = PC + (sign-extend (IR[15-0]) << 2)
Execution, address ALUOut = A op B ALUOut = A + sign-extend if (A ==B) then PC = PC [31-28] IIcomputation, branch/ (IR[15-0]) PC = ALUOut (IR[25-0]<<2)jump completion
Memory access or R-type Reg [IR[15-11]] = Load: MDR = Memory[ALUOut]completion ALUOut or
Store: Memory [ALUOut] = B
Memory read completion Load: Reg[IR[20-16]] = MDR
111998 Morgan Kaufmann Publishers
• 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.
Implementando o Controle
• Quantos bits de estado são necessários?
Especificação da FSM
PCWritePCSource = 10
ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCond
PCSource = 01
ALUSrcA =1ALUSrcB = 00ALUOp= 10
RegDst = 1RegWrite
MemtoReg = 0
MemWriteIorD = 1
MemReadIorD = 1
ALUSrcA = 1ALUSrcB = 10ALUOp = 00
RegDst = 0RegWrite
MemtoReg =1
ALUSrcA = 0ALUSrcB = 11ALUOp = 00
MemReadALUSrcA = 0
IorD = 0IRWrite
ALUSrcB = 01ALUOp = 00
PCWritePCSource = 00
Instruction fetchInstruction decode/
register fetch
Jumpcompletion
BranchcompletionExecution
Memory addresscomputation
Memoryaccess
Memoryaccess R-type completion
Write-back step
(Op =
'J')
(Op
= 'L
W')
4
01
9862
753
Start
131998 Morgan Kaufmann Publishers
• Implementação:
Máquina de estado finito para controle (controle hardwired, controle fixo)
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3NS2NS1NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
State register
IRWrite
MemRead
MemWrite
Instruction registeropcode field
Outputs
Control logic
Inputs
PCWritePCSource = 10
ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCond
PCSource = 01
ALUSrcA =1ALUSrcB = 00ALUOp= 10
RegDst = 1RegWrite
MemtoReg = 0
MemWriteIorD = 1
MemReadIorD = 1
ALUSrcA = 1ALUSrcB = 10ALUOp = 00
RegDst = 0RegWrite
MemtoReg=1
ALUSrcA = 0ALUSrcB = 11ALUOp = 00
MemReadALUSrcA = 0
IorD = 0IRWrite
ALUSrcB = 01ALUOp = 00
PCWritePCSource = 00
Instruction fetchInstruction decode/
register fetch
Jumpcompletion
BranchcompletionExecution
Memory addresscomputation
Memoryaccess
Memoryaccess R-type completion
Write-back step
(Op = 'LW') or (Op = 'SW') (Op = R-type)
(Op
= 'B
EQ')
(Op
= 'J
')
(Op = 'SW
')
(Op
= 'L
W')
4
01
9862
753
Start
141998 Morgan Kaufmann Publishers
Implementação em PLA da lógica de controle
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
IorD
IRWrite
MemReadMemWrite
PCWritePCWriteCond
MemtoRegPCSource1
ALUOp1
ALUSrcB0ALUSrcARegWriteRegDstNS3NS2NS1NS0
ALUSrcB1ALUOp0
PCSource0
151998 Morgan Kaufmann Publishers
Controle microprogramado – uso de memória de microprograma (microcódigo)
• O que são “microinstruções” ?
PCWritePCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemReadMemWrite
RegDst
Control unit
Input
Microprogram counter
Address select logicO
p[5–
0]
Adder
1
Datapath
Instruction registeropcode field
BWrite
161998 Morgan Kaufmann Publishers
• Uma metodologia de especificação– Apropriado se centenas de opcodes, modos, ciclos, etc.– sinais especificados simbolicamente usando microinstruções
• Duas implementações da mesma arquitetura tem o mesmo microcódigo?
• O que faria um microassembler?
Microprogramação
LabelALU
control SRC1 SRC2Register control Memory
PCWrite control Sequencing
Fetch Add PC 4 Read PC ALU SeqAdd PC Extshft Read Dispatch 1
Mem1 Add A Extend Dispatch 2LW2 Read ALU Seq
Write MDR FetchSW2 Write ALU FetchRformat1 Func code A B Seq
Write ALU FetchBEQ1 Subt A B ALUOut-cond FetchJUMP1 Jump address Fetch
171998 Morgan Kaufmann Publishers
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.
181998 Morgan Kaufmann Publishers
Comparação: Controle fixo e Microprogramado
Contro
le fix
o
Controlemicroprogramado
Número de instruções
com
plex
idad
e
20 40 60 80 100 120