CPU Multiciclo

Propaganda
CPU
Implementação Multiciclo
Prof. Carlos Bazilio
[email protected]
Até então, tínhamos ...
Problemas com
Implementação Monociclo
• Ciclo de clock tem o mesmo tamanho para
todas as instruções implementadas;
• Este ciclo é definido pela instrução de
maior duração (lw – load word);
• Cada unidade funcional só pode ser
usada 1 vez por ciclo;
• Com isso, algumas unidades funcionais
são duplicadas, aumentando
consideravelmente o custo do hardware.
Implementação
Multiciclo
• A execução de cada instrução é quebrada
em passos;
• Cada passo gasta 1 ciclo de clock;
• Com isso, uma unidade funcional pode ser
utilizada + de 1 vez por instrução, desde
que em diferentes ciclos.
Implementação
Multiciclo
• Diferenças:
– Única memória;
– Única UAL;
– Registradores após unidades funcionais.
Implementação Multiciclo
Caminho de Dados
• Inclusões:
– Registradores (IR, MDR, A, B, UALSaída),
Multiplexadores (End. Memória, UAL)
Implementação Multiciclo
Linhas de Controle
Implementação Multiciclo
Caminho Completo
Trecho da Máquina
de Estados
Passos na execução
de uma instrução (1/5)
• Busca da instrução e cálculo do endereço
seguinte:
IR = Memória[PC]
PC = PC + 4
Passos na execução
de uma instrução (2/5)
• Decodificação da instrução e busca do
registrador:
A = Reg[IR[25-21]]
B = Reg[IR[20-16]]
UALSaída = PC + extensão_sinal(IR[15-0]
<< 2)
Passos na execução
de uma instrução (3/5)
• Execução, cálculo do endereço de
memória ou desvio condicional:
– Referência a memória:
UALSaída = A + extensão_sinal(IR[15-0])
– Instrução aritmética ou lógica:
UALSaída = A op B
– Desvio condicional:
Se (A == B) PC = UALSaída
– Desvio incondicional:
PC = PC[31-28] || (IR[25-0]<<2)
Passos na execução
de uma instrução (4/5)
• Final de execução das instruções de
escrita em memória e do tipo R:
– Referência a memória (load):
MDR = Memória [UALSaída]
– Referência a memória (store):
Memória [UALSaída] = B
– Instruções aritméticas ou lógicas:
Reg[IR[15-11]] = UALSaída
Passos na execução
de uma instrução (5/5)
• Final de execução das instruções de
leitura à memória:
– Referência a memória (load):
Reg[IR[20-16]] = MDR
Implementação do
Controle
• No monociclo utilizamos um conjunto de
tabelas-verdade;
• Na implementação de controle no projeto
multiciclo veremos 2 abordagens:
– Máquina de estados finitos;
– Microprogramação.
Controle
Máquina de Estados
Finitos (1/6)
Controle
Máquina de Estados
Finitos (2/6)
Controle
Máquina de Estados
Finitos (3/6)
Controle
Máquina de Estados
Finitos (4/6)
Controle
Máquina de Estados
Finitos (5/6)
Máquina de Estados
Finitos Completa (6/6)
Implementação do
Controle
Microprogramação
• A implementação real do MIPS possui um
conjunto com cerca de 100 instruções;
• Cada gasta de 1 a 20 ciclos de clock para
ser executada;
• Naturalmente, a função de controle será
bem mais complexa, o que dificulta a sua
especificação de forma gráfica;
• Microprogramação é o projeto de controle
como um programa que implementa
instruções de máquina em termos de
estruturas mas simples (microinstruções).
Microprogramação
• Na microprogramação temos a
representação simbólica dos valores das
linhas de controle;
• Assim, um microprograma está para os
sinais de controle (microinstruções) assim
como a linguagem de montagem está
para as instruções de máquina.
Armazenamento
de um Microcódigo
Formato da
microinstrução
• Deve seguir padrões de projeto de
linguagens de programação;
• Cada campo deve ser responsável por um
conjunto de sinais que não se
sobreponham;
• Do formato apresentado no livro, temos 6
campos que controlam o caminho de
dados e 1 que controla o seqüenciamento
das microinstruções.
Formato da
microinstrução (1/4)
• Controle da UAL (operação da UAL)
– Valores:
• Soma: faz com o que a UAL some
• Subtração: idem para subtração
• Código de função: usa o campo de função da
instrução
• SRC1 (entrada 1 da UAL)
– Valores:
• PC: PC como primeira entrada da UAL
• A: A como primeira entrada da UAL
Formato da
microinstrução (2/4)
• SRC2 (entrada 2 da ual)
– Valores:
•
•
•
•
B: B como segunda entrada da UAL
4: B constante 4 como segunda entrada da UAL
Estendido: saída da extensão de sinal
Estendido/deslocado: saída da extensão com deslocamento
de 2 bits
• Controle de Registrador (leitura/escrita)
– Valores:
• Leitura: atualiza A e B com campos do IR
• Escrita da UAL: Escreve no banco com campo do IR (rd) e
UALSaida como dado
• Escrita do MDR: Escreve no banco com campo do IR (rt) e
MDR como dado
Formato da
microinstrução (3/4)
• Memória (leitura/escrita na memória)
– Valores:
• Leitura à partir do PC: Lê da memória usando o PC e
escreve resultado no IR
• Leitura à partir do UAL: Lê da memória usando o UALSaida
e escreve resultado no MDR
• Escrita à partir da UAL: Escreve na memória usando
UALSaida como endereço e B como dado
• Controle PCEsc (Escrita no PC)
– Valores:
• UAL: Escreve a saída da UAL no PC
• UALOut-cond: Se saída Z da UAL ativa, atualiza PC com
UALSaida
• End. Desvio Incondicional: Atualiza PC com endereço
incondicional da instrução
Formato da
microinstrução (4/4)
• Seqüenciamento (Como escolher a
próxima microinstrução)
– Valores:
• Seq: Escolhe a próxima microinstrução
sequencialmente
• Busca: Desvia para a primeira microinstrução
• Despacho i: Despacha de acordo com o tipo de
instrução (opcode)
Arquitetura Multiciclo
Microprograma
Ident
Ual
Busca
Soma
Soma
Soma
PC
PC
A
Func
A
B
Sub
A
B
Mem1
LW2
SW2
Rform1
Beq1
Jump1
Src1 Src2
Regs
4
ExtDes Leitura
Ext
Mem
PC
PcEsc Seq
Ual
Seq
Desp1
Desp2
LerUal
Seq
EscMdr
Busca
EscUal
Busca
Seq
EscUal
Busca
UalOut Busca
Incond Busca
Bibliografia
• Organização e projeto de computadores
David A. Patterson & John L. Hennessy
LTC
Download