180 likes | 360 Views
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)
E N D
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?
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:
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 • 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.