Page 1
Arquitetura do MIPS: características gerais,
formatos de instrução, modos de endereçamento.
MIPS monociclo: instruções implementadas, regime
de clock, construção do bloco operativo.
Universidade Federal de PelotasCentro de Desenvolvimento Tecnológico
Mestrado em Computação
Arquitetura e Projeto de
Computadores
Profs. Luciano Agostini e Júlio Mattos
[email protected] e [email protected]
Page 2
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 2Computação UFPel
Arquitetura e Projeto de Computadores
• todas as instruções têm 32 bits
• todas têm opcode de 6 bits
• o modo de endereçamento é codificado juntamente com o
opcode
Instruções
31 26 25 0
opcode
6 bits 26 bits
Page 3
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 3Computação UFPel
Arquitetura e Projeto de Computadores
• opcode = 0
• “funct” define a operação a ser feita pela ALU
• “shamt” (shift amount) é usado em instruções de deslocamento
Instruções formato R: add, sub, or, and
31 26 25 21 20 16 15 11 10 6 5 0
opcode rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
registradores-fonte registrador-destino
Simbólico (exemplo): add $s1,$s2,$s3 ($s1 $s2 + $s3)
Page 4
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 4Computação UFPel
Arquitetura e Projeto de Computadores
• load word (lw): opcode = 35
• store word (sw): opcode = 43
Instruções formato I: load word (ld) e store word (sw)
31 26 25 21 20 16 15 0
opcode rs rt Deslocam. ou oper. Imediato
6 bits 5 bits 5 bits 16 bits
Simbólico
lw $s1, deslocam($s2) ($s1 Mem[$s2 + deslocam] )
sw $s1, deslocam($s2) (Mem[$s2 + deslocam] $s1 )
registrador-base para o cálculo do endereço de
memória
registrador-destino (para lw) ouregistrador-fonte (para sw)
Page 5
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 5Computação UFPel
Arquitetura e Projeto de Computadores
• Opcode = 4
• Campo deslocamento usado para calcular o endereço-alvo
• Se o conteúdo do registrador cujo endereço está no campo rs
for igual ao conteúdo do registrador cujo endereço está em
rt, então salta para a posição endereço+PC+4
Instrução formato I: Desvio Condicional
beq: branch on equal
31 26 25 21 20 16 15 0
opcode rs rt Deslocam. ou oper. Imediato
6 bits 5 bits 5 bits 16 bits
Simbólico
beq $s1, $s2, deslocam ( if ($s1== $s2) then PCPC+4+deslocam)
registradores a serem comparados
Page 6
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 6Computação UFPel
Arquitetura e Projeto de Computadores
• Opcode = 2
• Campo deslocamento usado para calcular o endereço-alvo
Instrução formato J: Desvio Incondicional
j: jump
31 26 25 0
opcode endereço
6 bits 26 bits
Simbólico
j endereço ( PCendereço )
Page 7
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 7Computação UFPel
Arquitetura e Projeto de Computadores
• 32 registradores de propósito geral de 32 bits
– $0, $1, …, $31
– operações inteiras
– endereçamento
• $0 tem sempre valor 0
• $31 guarda endereço de retorno de sub-rotina
Registradores
Page 8
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 8Computação UFPel
Arquitetura e Projeto de Computadores
• dados inteiros disponíveis em instruções load e store
– bytes
– meias-palavras de 16 bits
– palavras de 32 bits
• dados inteiros disponíveis em instruções aritméticas e lógicas
– meias-palavras de 16 bits (estendidos para 32 bits)
– palavras de 32 bits
Tipos de Dados
Page 9
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 9Computação UFPel
Arquitetura e Projeto de Computadores
• acessos à memória devem ser alinhados
– dados de 32 bits precisam iniciar em endereços múltiplos de 4
• modo registrador
– para instruções aritméticas e lógicas: dado está em registrador
– para instruções de desvio incondicional: endereço está em
registrador
Modos de Endereçamento
Page 10
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 10Computação UFPel
Arquitetura e Projeto de Computadores
• modo base e deslocamento
– para instruções load e store
– base é registrador inteiro de 32 bits
– deslocamento de 16 bits contido na própria instrução
• modo relativo ao PC
– para instruções de branch condicional
– endereço é a soma do PC com deslocamento contido na instrução
– deslocamento é dado em instruções e precisa ser multiplicado por 4 para indicar número de posições de memória.
Modos de Endereçamento
Page 11
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 12Computação UFPel
Arquitetura e Projeto de Computadores
• modo absoluto
– para instruções de desvio incondicional
– instrução tem campo com endereço de palavra com 26 bits
– endereço de byte obtido com dois bits menos significativos iguais a 0
– 4 bits mais significativos obtidos do PC
– só permite desvios dentro de uma área de 256 Mbytes
0 0
26 bits4 bits
PC
Modos de Endereçamento
Page 12
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 13Computação UFPel
Arquitetura e Projeto de Computadores
• Instruções de referência à memória (tipo I):
Load word (lw) e store word (sw)
• Instruções aritméticas e lógicas (tipo R):
(add, sub, and, or)
• Instruções de salto:
Branch on equal (beq) (tipo I) e jump (j) (tipo J)
Instruções a Serem Implementadas
Page 13
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 14Computação UFPel
Arquitetura e Projeto de Computadores
“Faça o caso comum executar mais rápido”
“A simplicidade favorece a regularidade”
Princípios do Projeto Eficiente
Page 14
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 15Computação UFPel
Arquitetura e Projeto de Computadores
Regime de Clock (Temporização)
Iremos supor que:
R1
CK
carga R1
• Cada registrador possui um sinal de carga
particular que é ativado com lógica direta
• Os registradores são “disparados” pela borda
ascendente do relógio
• No desenho ao lado, quando CK=, se
cargaR1=1, então R1entradas
Page 15
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 16Computação UFPel
Arquitetura e Projeto de Computadores
Regime de Clock (Temporização)Condições para o Correto Funcionamento do Bloco Comb.
período do relógio (T)
R1Bloco Combinacional
(ex. ULA)R2
CK
carga R1 carga R2
O atraso crítico do bloco combinacional deve ser menor que o período do
relógio
Caminho crítico (atraso crítico)
Page 16
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 17Computação UFPel
Arquitetura e Projeto de Computadores
Regime de Clock (Temporização)Temporização para o Correto Funcionamento do Bloco Comb.
R1Bloco Combinacional
(ex. ULA)R2
CK
carga R1 carga R2
CK
Saídas do bloco
combinacionalestáveis estáveisinstáveis instáveis
carga R1
escrita em R1 escrita em R2
atraso do bloco combinacional
Page 17
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 18Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo Monociclo
Nesta primeira implementação iremos considerar que:
• Qualquer instrução é executada em um único ciclo de
relógio
• O período do relógio será longo o suficiente para
acomodar qualquer instrução
– Na verdade, o período do relógio será função da instrução mais
demorada
Page 18
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 19Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo MonocicloElementos Necessários para a Busca da Instrução:
• a memória onde estão armazenadas as instruções
• o contador de programa (PC) para armazenar o endereço
da instrução
• um somador para calcular o endereço da próxima instrução
Endereço
Instrução
Memória de Instruções
PC +
32
32
32 32
32
32
32
Page 19
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 20Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo Monociclo
• O contador de programa contém o
endereço da instrução em execução
• O endereço da próxima instrução é
obtido pela soma de 4 posições ao
contador de programa
• A instrução lida é usada por outras
porções do bloco operativoEndereço
Instruçãolida
Memória de Instruções
PC
+4
Page 20
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 21Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo MonocicloElementos Necessários para Execução de Instruções tipo R:
• Um banco de registradores para armazenar os operandos e o
resultado das operações
• Uma Unidade Lógica/Aritmética (ULA) que será utilizada
para realizar as operações
dado
endereços
dos regis-
tradores dados
Reg a serlido #1
Reg a serlido #2
Reg a serescrito
Dado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
5
5
5
32
32
32
Zero
Resultado
ULA
Controleda ULA
3
32
3232
Page 21
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 22Computação UFPel
Arquitetura e Projeto de Computadores
• opcode = 0
• “funct” define a operação a ser feita pela ALU
• “shamt” (shift amount) é usado em instruções de deslocamento
Bloco Operativo Monociclo
Instruções formato R: add, sub, or, and
31 26 25 21 20 16 15 11 10 6 5 0
opcode rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
registradores-fonte registrador-destino
Simbólico (exemplo): add $s1,$s2,$s3 ($s1 $s2 + $s3)
Page 22
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 23Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo Monociclo• A instrução (fornecida pelo hardware de busca de instruções) contém o
endereço de três registradores
• Dois destes registradores são lidos e passados para a ULA realizar a operação
• O resultado é armazenado em um terceiro registrador
• O controle da ULA determina a operação que será realizada (a partir do campo FNCT da instrução)
Reg a serlido #1Reg a serlido #2
Reg a serescritoDado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
5
5
5
32
32
32
Zero
Resultado
ULA
ControleULA3
32instrução
32
[25-21]
[20-16]
[15-11]
Page 23
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 24Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo MonocicloElementos Necessários para Executar lw e sw
• Uma memória de dados
• Um módulo de extensão de sinal
• Um banco de registradores (já mostrado)
• Uma ULA (já mostrada)
Exten-são de
sinal
3216LerMem
EscMem
Endereço Dado lido
Dado a serescrito
Memória de dados
3232
32
Reg a serlido #1
Reg a serlido #2
Reg a serescritoDado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
5
5
5
32
32
32Zero
Resultado
ULA
Controleda ULA
3
32
3232
Page 24
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 25Computação UFPel
Arquitetura e Projeto de Computadores
• load word (lw): opcode = 35
• store word (sw): opcode = 43
Bloco Operativo Monociclo
Instruções formato I: load word (ld) e store word (sw)
31 26 25 21 20 16 15 0
opcode rs rt Deslocam. ou oper. Imediato
6 bits 5 bits 5 bits 16 bits
Simbólico
lw $s1, deslocam($s2) ($s1 Mem[$s2 + deslocam] )
sw $s1, deslocam($s2) (Mem[$s2 + deslocam] $s1 )
registrador-base para o cálculo do endereço de
memória
registrador-destino (para lw) ouregistrador-fonte (para sw)
Page 25
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 26Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo MonocicloCombinando os Elementos para uma Escrita na Memória (sw)
• O endereço de escrita é obtido pela soma de um registrador de base
(registrador 1) com um deslocamento de 16 bits estendido para 32 bits
• O registrador 2 é escrito na memória
Reg a serlido #1Reg a serlido #2
Reg a serescritoDado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
5
5
32
32
Zero
Resultado
ULA
ControleULA3
instrução
LerMem
EscMem
Endereço Dado lido
Dado a serescrito
Memória de dados
3232
32
Exten-são de
sinal
3216
32
[25-21]
[20-16]
Page 26
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 27Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo MonocicloCombinando os Elementos para uma Leitura da Memória (lw)
• O processo de leitura é semelhante ao de escrita
• A diferença básica é a existência de um caminho para escrever o valor
lido no banco de registradores
Reg a serlido #1Reg a serlido #2
Reg a serescritoDado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
5
5
32
32
Zero
Resultado
ULA
ControleULA3
instrução
LerMem
EscMem
Endereço Dado lido
Dado a serescrito
Memória de dados
3232
32
Exten-são de
sinal
3216
32
[25-21]
[20-16]
Page 27
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 28Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo MonocicloElementos Necessários Implementar um Branch on Equal
• Comparar dois registradores usando a ULA para fazer uma subtração
• O endereço de desvio é (PC+4)+deslocamento (mais um somador)
• O deslocamento contido na instrução deve ser estendido para 32 bits;
• Uma multiplicação por 4 é necessária, pois a memória de instruções
utiliza 4 bytes para cada instrução
• A vantagem é permitir o acesso a 218 endereços (16 bits da instrução +
2 de deslocamento)
Exten-são de
sinal
3216
Reg a serlido #1
Reg a serlido #2
Reg a serescritoDado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
5
5
5
32
32
32
+
32
32
32
32Desl.à esq.2 bits
32Zero
Resultado
ULA
Controleda ULA
3
32
3232
Page 28
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 29Computação UFPel
Arquitetura e Projeto de Computadores
• Opcode = 4
• Campo deslocamento usado para calcular o endereço-alvo
• Se o conteúdo do registrador cujo endereço está no campo rs
for igual ao conteúdo do registrador cujo endereço está em
rt, então salta para a posição endereço+PC+4
Bloco Operativo Monociclo
Instrução formato I: beq: branch on equal
31 26 25 21 20 16 15 0
opcode rs rt Deslocam. ou oper. Imediato
6 bits 5 bits 5 bits 16 bits
Simbólico
beq $s1, $s2, deslocam ( if ($s1== $s2) then PCPC+4+deslocam)
registradores a serem comparados
Page 29
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 30Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo MonocicloElementos Necessários Implementar um Branch on Equal
Reg a serlido #1
Reg a serlido #2
Reg a serescritoDado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
5
5
32
32
Zero
Resultado
ULA
ControleULA3
instrução
Endereço-alvo do Desvio condicional
Exten-são de
sinal
3216
32
+
32
32
32
Desl.à esq.2 bits
PC+4
Para o blocode Controle
[25-21]
[20-16]
• Juntando os elementos
Page 30
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 31Computação UFPel
Arquitetura e Projeto de Computadores
Compondo o Bloco Operativo Monociclo
• Nesta versão de bloco operativo qualquer instrução executa em
um ciclo de relógio
• Isto significa que o período do relógio deverá ser suficientemente
longo para acomodar a instrução mais demorada
• Durante a execução de uma instrução qualquer, cada unidade
funcional só pode ser usada uma única vez
• Por isso necessitamos de uma memória de instruções e outra de
dados
• Ao combinarmos as porções de bloco operativo vistas
anteriormente, veremos que muitas unidades funcionais podem
ser compartilhadas
Page 31
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 32Computação UFPel
Arquitetura e Projeto de Computadores
Compondo o Bloco Operativo Monociclo
Recursos para executar instruções lw ou sw
Reg a serlido #1Reg a serlido #2
Reg a serescrito
Dado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
32
32
Zero
Resultado
ULA
ControleULA3
instrução
LerMem
EscMem
Endereço Dado lido
Dado a serescrito
Memória de dados
3232
32
Exten-são de
sinal
3216
32
[25-21]
[20-16]
[15-0]
• Para sw, campo Rt (bits 20-16) designam registrador cujo conteúdo será escrito
na memória de dados
• Para lw, Rt (bits 20-16) designam registrador que será carregado com valor lido
da memória de dados
Page 32
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 33Computação UFPel
Arquitetura e Projeto de Computadores
Compondo o Bloco Operativo MonocicloCombinando os recursos para executar instruções tipo R
ou instruções lw e sw…
Reg a serlido #1Reg a serlido #2
Reg a serescrito
Dado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
Zero
Resultado
ULA
ControleULA3
instrução
Exten-são de
sinal
3216
32
[25-21]
[20-16]
[15-11]
MUX
0
1
RegDst
[15-0]
MUX
0
1
ULAFonte
LerMem
EscMem
Endereço Dado lido
Dado a serescrito
Memória de dados
MUX
0
1
MemParaReg
• Para lw, o endereço do registrador a ser escrito está no campo Rt (bits 20-16)
• Para instruções tipo R, o endereço do registrador a ser escrito está no campo
Rd (bits 15-11)
Page 33
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 34Computação UFPel
Arquitetura e Projeto de Computadores
Compondo o Bloco Operativo MonocicloAcrescentando os Recursos para a Busca da Instrução e o
Cálculo do Próximo Endereço (exceto em desvios)
Endereço
Instruçãolida
Memória de Instruções
PC
+4
32instrução
Reg a serlido #1Reg a serlido #2
Reg a serescrito
Dado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
Zero
Resultado
ULA
ControleULA3
Exten-são de
sinal
3216
[25-21]
[20-16]
[15-11]
MUX
0
1
RegDst
[15-0]
MUX
0
1
ULAFonte
LerMem
EscMem
Endereço Dado lido
Dado a serescrito
Memória de dados
MUX
0
1
MemParaReg
Page 34
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 35Computação UFPel
Arquitetura e Projeto de Computadores
Compondo o Bloco Operativo MonocicloAcrescentando os Recursos para Executar Desvio
Condicional (Branch on equal)
32ULAFonte
Endereço
Instruçãolida
Memória de Instruções
PC
+4
+Desl.à esq.2 bits
MUX
0
1
FontePC
Reg a serlido #1Reg a serlido #2
Reg a serescrito
Dado deescrita
Dado lido #1
Dadolido #2
Registradores
EscReg
Zero
Resultado
ULA
ControleULA3
Exten-são de
sinal
3216
[25-21]
[20-16]
[15-11]
MUX
0
1
RegDst
[15-0]
MUX
0
1
LerMem
EscMem
Endereço Dado lido
Dado a serescrito
Memória de dados
MUX
0
1
MemParaReg
Page 35
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 36Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo MonocicloEstimativa da Freqüência Máxima de Funcionamento
• ao final de cada ciclo de relógio o PC é carregado com um novo valor
• mudança no valor do PC se propaga através de uma grande lógica
combinacional
memória de instruções => banco de registradores => ULA =>
memória de dados => banco de registradores
• período do ciclo de relógio deve ser maior do que máximo atraso de
propagação através desta lógica combinacional
Page 36
Prof. Luciano Agostini
Prof. Julio Mattos
Arquitetura do MIPS
Slide 37Computação UFPel
Arquitetura e Projeto de Computadores
Bloco Operativo MonocicloExemplo de Cálculo
• supondo os seguintes atrasos:
– memórias: 4 ns – ULA: 2 ns
– banco de registradores: 1 ns – somadores: 1 ns
– demais componentes: atraso desprezível
período do ciclo de relógio deve ser maior do que 12 ns (cerca de 83 MHz)
instrução buscaLê
registradores
Cálculo
na ULA
Acessa
memória de
dados
Escreve
em
registrador
Total
add, sub, and, or 4ns 1ns 2ns -- 1ns 8ns
beq 4ns 1ns 2ns -- -- 7ns
sw 4ns 1ns 2ns 4ns -- 11ns
lw 4ns 1ns 2ns 4ns 1ns 12ns