MIPS MULTICICLO Fluxo de Dados e Controle
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)
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
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!
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?
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)
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;
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
Passo Write-back Reg[IR[20-16]]= MDR; E as outras instruções?
Resumo:
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.
Especificação da FSM Quantos bits de estado são necessários?
Máquina de estado finito para controle (controle hardwired, controle fixo) Implementação:
Implementação em PLA da lógica de controle
Controle microprogramado – uso de memória de microprograma (microcódigo) O que são “microinstruções” ?
Microprogramação 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?
Comparação: Controle fixo e Microprogramado - 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.
Comparação: Controle fixo e Microprogramado