CPU Implementação Multiciclo Prof. Carlos Bazilio bazilio@ic.uff.br
Até então, tínhamos t...
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áquinaM 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 Microprograma Busca UalOut B A Sub Beq1 Busca Incond Jump1 Busca EscUal Seq B A Func Rform1 Busca EscUal SW2 Busca EscMdr Seq LerUal LW2 Desp2 Ext A Soma Mem1 Desp1 Leitura ExtDes PC Soma Seq Ual PC 4 PC Soma Busca Seq PcEsc Mem Regs Src2 Src1 Ual Ident
Bibliografia Organização e projeto de computadores David A. Patterson & John L. Hennessy LTC