Índice de tópicos abordados
Esta aula:
Microarquitetura MIPS
Microarquitetura MIPS
A Arquitetura de um computador pode ser divida em duas partes: ISA – Instruction Set Architecture – MIPS tem instr. R, I e J
Estado “arquitetural” – em MIPS representado por 32 re-gistradores e o PC (Program Counter).
MIPS pode ser implementado com diferentes microarquiteturas porém todas precisam suportar o mesmo estado arquitetural. Veremos como uma microarquitetura MIPS suporta o seguinte conjunto de instruções:
• Instruções de acesso à memória: lw e sw
• Instruções tipo R: add, sub, and, or, slt
Desenvolvimento do Projeto
Dividiremos a microarquitetura em 2 partes básicas: Caminho de dados (“data path”)
Controle
Iniciaremos com o hw que contém os elementos que definem o estado: memórias, conjunto de registradores e o PC.
Em seguida iremos adicionando blocos de lógica combinatória para definir o novo estado a partir do estado anterior, depen-dendo da instrução a ser executada.
Convernções de desenho utilizadas:
linhas grossas – barramentos de dados de 32 bits.
linhas média – barramentos menores, p. ex. com 5 bits. linhas azuis – sinais de controle.
Elementos de estado do processador
A1 e A2 selecionam os registradores de origem rs e rt RD1 e RD2 contêm dados lidos de rs e rt A3 seleciona o registrador de destino rd WE3 habilita a escrita em rd WD3 disponibiliza os dados para escrita em rd Porta de escrita da memória de dados Porta de leitura da memória de dados Endereçamento da memória de dados Porta de leitura da memória de instruções Endereçamento da memória de instruções Program CounterProcessador de Ciclo Único
Princípio básico de operação:
1 Ciclo Leitura e armazenamento do endereço da instrução no PC (Program Counter) Leitura e decodificação da instrução Execução da Instrução p. ex. escrita Simultaneamente leitura do endereço da próxima instrução no PC
Instrução lw: escrita do registrador rt
lw rt, (imm)rs
rt recebe conteúdo da memória endereçado por [rs] + SE(imm)
32 bits da instrução
Instrução lw: obtenção do offset
lw rt, (imm)rs
Campo imm (bits 15:0) é estendido de 16 para 32 bits com sinal conteúdo de rs
Instr. lw: endereçamento da memória
endereço do dado na memória
endereço do dado na memória = [rs] + SE(imm)
Escrita do dado no reg de destino rt
dado endereçado é lido na memória registrador de destino rt é selecionado em A3WE3 precisa estar habilitado (RegWrite = 1) para que a escrita ocorra escrita ocorre no próximo flanco ascendente de CLK
Endereço da próxima instr.: PC = PC + 4
PC’ = PC + 4 é determinado em paralelo com a execução de lw No próximo flanco ascendente de CLK, PC será atualizado = PC’
Instrução sw: escrita de rt na memória
sw rt, (imm)rs
Todo o hw utilizado na instrução lw será reutilizado. rt agora é origem. A diferença está nos sinais de controle: RegWrite = 0, MemWrite = 1
WE3 desabilitado
Inclusão de instruções tipo “R”
funct rd, rs, rt
reg destino é rd (em lw era rt)
mesma ALU atua sobre rs e rt
resultado da ALU vai para rd
três novos mux’s selecionam o novo caminho
Inclusão da instrução beq
ALU compara (subtrai) rs e rt
e emite sinal Zero se iguais
novo PC deriva de BTA ou PC + 4, selecionado por um MUX que é controlado pelo sinal PCSrc (= Zero AND Branch)
BTA
Se rs == rt programa salta para BTA (Branch Target Address)
Ciclo único completo, com controle
4 muxs:
seleciona entre end. rt e rd seleciona entre cont. rt e rdSel. entre cont. mem e reg Sel. entre branch
e PC+4
3 ALUS:
End + offset ou funct
BTA PC+=4
Lógica de Controle : ALU e Main
A lógica de controle é dividida em dois blocos:
Decodificador da ALU – depende só do campo funct Decodificador principal – depende só do campo op
Decodificador principal controla:
Duas habilitações de escrita 4 MUX’s para selecionar sinais
Tabela para o
Tabela da Verdade p/ Decod. Principal
A Tabela deverá ser expandida para incorporar outras instruções não contempladas neste exemplo simplificado.
Processador Multiciclos
O processador de ciclo único apresenta algumas desvantagens:
Ciclo de clock deve ser suficientemente longo para acomodar a instrução mais lenta.
Necessita de 3 ALU’s independentes. Como cada instrução é processada em um único ciclo, a mesma ALU não pode ser aproveitada para mais de uma função.
Precisa de memórias separadas para dados e instruções, o que é uma exigência pouco realista para a maior parte dos computadores.
Essas desvantagens podem ser atacadas dividindo-se cada instrução em múltiplos passos mais curtos, executados em ciclos separados.
Estado do processador multiciclos
Diferentemente do processador de ciclo único, no processador multiciclos, a memória de instruções e dados pode ser unificada, pois dados e intruções serão agora acessados em ciclos separados.
Ex.: Instrução lw em 5 ciclos
0 1 2 3 4 5 1º Ciclo Leitura da Instrução 2º Ciclo Decodi-ficação da Instrução 3º Ciclo Obtenção do endereço do operando 4º Ciclo Leitura do operando na memória 5º Ciclo Escrita do operando no registradorExemplo: lw – leitura da instrução
No 1º Ciclo, a memória foi endereçada com PC e disponibilizou a instrução em RD. Ao final do ciclo a instrução é armazenada em Instr. Para isso o sinal de controle IRWrite deve ser = 1
0 1 2 3 4 5
Leitura
Exemplo: lw – decodificação da instr.
No 2º Ciclo, a instrução é decodificada e o endereço base lido do registrador rs, e disponibilizado em RD1. Ao final do ciclo, o endereço base é armazenado em A.
Leitura de rs
0 1 2 3 4 5
Armazenamento do endereço base
imm
Exemplo: lw – decodificação da instr.
0 1 2 3 4 5
Ainda durante o 2º Ciclo, o offset é obtido do campo imm com extensão de sinal → SignImm
Instr. lw: endereçamento do operando
No 3º Ciclo, o endereço do operando = base + offset é obtido por meio da ALU. O sinal ALUControl deve estar ativo e configurar soma. Ao final do ciclo o endereço é armazenado em ALUOut
base offset Endereço do operando 0 1 2 3 4 5 Armazenamento do endereço do operando
lw: leitura do operando na memória
4º Ciclo: leitura do operando. Endereço ALUAOut aplicado em A, sinal IorD precisa ser = 1. Valor do operando disponibilizado em RD. Ao final do ciclo, o operando é armazenado em Data.
Leitura do operando Armazenamento
lw: escrita do operando em rt
5º Ciclo: escrita do operando. Valor Data aplicado em WD3, sinal
RegWrite precisa ser = 1. Endereço do registrador rt disponibiliza-do em A3. Ao final disponibiliza-do ciclo o operandisponibiliza-do é armazenadisponibiliza-do em rt.
Endereçamento de rt
0 1 2 3 4 5
Operando é escrito em rt
lw: incremento do PC
Durante o 1º ciclo, a ALU não está sendo usada. Ela pode ser a-proveitada para incrementar o PC’ = PC + 4. PCWrite de ser 1,
ALUSrcA deve selecionar PC e ALUSrcB de selecionar a cte 4.
Ao final do 1º Ciclo PC = PC + 4
Alterações para inclusão de sw
Toda a infraestrutura criada para lw pode ser aproveitada para sw. No 3º ciclo o operando é lido de rt e armazenado em B.
No 4º ciclo o operando e disponibilizado em WD e, ao final do ciclo, é armazenado na memória. (Um ciclo a menos que lw).
Alterações para instruções tipo R
No 3º ciclo a ALU opera sobre conteúdo de rs e rt e disponibiliza o resultado em WD3, para escrita em rd. RegDst deve ser = 1. No 4º ciclo o resultado da operação é armazenado em rd. Os sinais MemtoReg e RegWrite devem ser = 1.
Alterações para incluir instrução beq
No 3º ciclo o conteúdo de rs e rt é disponibilizado para compara-ção pela ALU. Sinal Zero é ativado ao fim do ciclo se forem iguais. No 2º ciclo BTA é computado pela ALU (= PC+ 4 + SE(imm) x 4). Si-nal PCEn é ativado. PCSrc = 1. Ao fim do ciclo PC = BTA.
Usa apenas 3 ciclos!
Controle do processador multiciclos
O decodificador da ALU permanece igual ao da versão ciclo único, pois as operações não se alteram.
O controlador principal precisa emitir sinais diferentes a cada ciclo, em dependência da instru-ção sendo executada.
Os sinais são de dois tipos:
Habilitação de clock Seleção de multiplexer
Esse tipo de controle é melhor implementado por meio de uma máquina de estados finita (FSM)
FSM para processador multiciclo
A máquina de estados finita ao lado, gera os sinais de controle para as instruções analisadas até agora: lw, sw, tipo R
e beq.
Os dois primeiros esta-dos, S0:Fetch e S1:De-code, são comuns a to-das as instruções. Os demais dependem da instrução.
Revisão ISA MIPS – Linguagem de Máquina
A Arquitetura MIPS codifica todas as instruções em 32 bits. Há apenas 3 padrões de codificação de instruções:R – para instruções com operandos tipo registradores
I – para instruções com operandos imediatos
Revisão ISA MIPS – Instruções tipo “R”
Instruções tipo “R” seguem o padrão: funct rd, rs, rtrd = registrador de destino
rs = primeiro registrador de origem (“source register”)
rt = segundo registrador de origem (letra “t” segue a letra “s”).
funct determina o tipo de operação – add, sub, etc.
Em linguagem de máquina, a sequência de registradores é diferente – veja os exemplos abaixo:
Revisão ISA MIPS – Instruções tipo “I”
Instruções tipo “I” seguem o padrão: op rt, rs, immrt = registrador de destino (ou 2º de origem)
rs = registrador de origem (“source register”)
imm = constante imediata (16 bits)
op determina o tipo de operação – addi, lw, etc. veja alguns exemplos abaixo:
Revisão ISA MIPS – Instruções tipo “J”
Instruções tipo “J” seguem o padrão: op immImm = especifica bits 27:2 do endereço de destino do salto (JTA)
op determina o tipo de salto incondicional – j, jal. veja o exemplo para jal (= jump and link) abaixo:
JTA é o Jump Target Address, formado pela seguinte regra:
Revisão ISA MIPS – Intr. de desvio condicional
MIPS suporta duas instruções de desvio (“branch”) condicional:beq – “branch if equal” bne – “branch if not equal” Ambas são instruções do tipo “I” (“immediate”)
beq rs, rt, imm bne rs, rt, imm
Se rs == rt salta para endereço especificado por imm (BTA).
Se rs != rt salta para endereço especificado por imm (BTA).
O endereço de destino BTA (“Branch Target Address”) é obtido
a partir de imm e de PC + 4 da seguinte forma:
BTA = PC + 4 + SE(imm) x 4 (SE = “Sign Extended”) Esse endereçamento é chamado de PC-Relative Addressing
Revisão ISA MIPS – Instr. de desvio condicional
PC + 4 PC + 8 PC + 12
No exemplo acima, BTA = PC + 12, portanto imm = 2 BTA = PC + 4 + SE(imm) x 4 = PC + 4 + 2 x 4 = PC + 12
PC
4 16 17 2
beq $s0 $s1 imm
6 bits 5 bits 5 bits 16 bits
Revisão ISA MIPS – Desvio incondicional com jr
A instrução jr (“jump register”) não é do tipo “J”.jr é do tipo “R” e utiliza um registrador de origem rs.
Código de máquina: 0 16 x x x 8
op rs rt rd shamt funct
Revisão ISA MIPS – Modos de Endereçamento
Register-Only Addressing: endereço de todos os operandos de ori-gem e destino contidos em registradores. Usado por todas as ins-truções tipo “R”.
Immediate Addressing: utiliza o campo imm de 16 bits, em con-junto com registradores para o endereçamento. Usado por certas instruções tipo “I” como addi ou lui.
Base Addressing: usado por instruções de acesso à memória como
lw e sw. Endereço efetivo = Conteúdo de rs + SE(imm).
PC-Relative Addressing: usado na determinação do destino de sal-to em instruções de desvio condicional (branches).
BTA (“Branch Target Address”) = PC + 4 + SE(imm) x 4
Pseudo-Direct Addressing: usado na determinação do destino de salto em instruções tip “J” (j e jal).
Revisão de digital: soma e comparação
A subtração A – B é obtida via A + (-B) = A + (B/ + 1) B/ obtido com o inversor, +1 obtido forçando carry = 1
Revisão de digital: latches
O latch tipo D é também conhecido como “latch transparente”: – Enquanto CLK = 1 a entrada D passa para a saída.