Você está na página 1de 41

Universidade Federal de Santa Catarina

Centro Tecnológico
Departamento de Informática e Estatística
Ciências da Computação & Engenharia Eletrônica

Sistemas Digitais
INE 5406

Aula 7-T
O Processador MIPS: conjunto de instruções e exemplos de
uso (noções de programação assembly).

Prof. José Luís Güntzel e Cristina Meinhardt


& Est. André Beims Bräscher
{j.guntzel, cristina.meinhardt }@inf.ufsc.br,
andre.brascher@grad.ufsc.br
O Processador MIPS Monociclo
Classificação dos Sistemas Digitais Quanto à Aplicação
1. Processadores de Propósito Geral Intel core i7
(General-Purpose Processors – GPPs ou ainda, CPUs) Cada Core contém 1 GPP + caches privadas

• Podem ser programados para executar (virtualmente)


qualquer algoritmo
• Aplicações são implementada via software
• Conjunto de instruções genérico
• Hardware otimizado para cada instrução separadamente
(mas não um algoritmo ou uma classe de algoritmo)
Fonte: https://www.yourdictionary.com/core-i7

INE/CTC/UFSC Slide 7T.2 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
1. Processadores de Propósito Geral: Mais exemplos ”Icestorm”
CPU Cores ”Firestorm” CPU Cores

”Icestorm”
Launched on Oct. 2021 (5nm TSMC CMOS tech.) CPU Cores ”Firestorm” CPU Cores

33.7 Billion (Pro) and 57 Billion (Max)


transistors
8 HP ”Firestorm” CPU Cores (by ARM)
2 HE ”Icestorm” CPU Cores (by ARM)
16-core (Pro) and 32-core (Max) GPU (by Apple)
16-core Neural engine
16GB/32GB (Pro) and 32GB/64GB GB unified
memory

Sources:
https://en.wikipedia.org/wiki/Apple_M1_Pro_and_M1_Max
https://macmagazine.com.br/post/2021/10/25/site-faz-analise-aprofundada-dos-chips-m1-pro-e-m1-max/

INE/CTC/UFSC Slide 7T.3 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O1.Processador MIPS eMonociclo
Sistemas Digitais Nível RT
Modelo Genérico de ”Computador” (Modelo de von Neumann)

CPU Memória
(SRAM)

barramento
do sistema

vídeo teclado
HD/SSD

INE/CTC/UFSC Slide 7T.4 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O1.Processador MIPS eMonociclo
Sistemas Digitais Nível RT
Modelo Genérico de ”Computador” (Modelo de von Neumann)

Quando computador é ligado,


a memória armazena:
- Os programas que o usuário
CPU Memória invocar
(SRAM)
- Os dados a serem
processado
barramento
- Os dados resultantes dos
do sistema processamentos

vídeo teclado
HD/SSD

INE/CTC/UFSC Slide 7T.5 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O1.Processador MIPS eMonociclo
Sistemas Digitais Nível RT
Modelo Genérico de ”Computador” (Modelo de von Neumann)
00000000101000010000000000011000
00000000100011100001100000100001
Porém, a CPU só consegue 10001100011000100000000000000000
10001100111100000000000000000100
rodar programas que estejam 10101100111100100000000000000000
10101100011000100000000000000100
em binário, gerados para usar
o seu ”conjunto de instruções”
CPU Memória
(SRAM)

barramento
do sistema

vídeo teclado
HD/SSD

INE/CTC/UFSC Slide 7T.6 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O1.Processador MIPS eMonociclo
Sistemas Digitais Nível RT
Usando uma CPU (GPP): do programa à execução
Programa em swap (int v[ ] , int k)
Linguagem de {
Alto Nível int temp;
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
}

* Específico para a
linguagem de alto nível Compilador*
e CPU escolhidos Programa em Linguagem de
máquina (i.e., “executável”)**
Programa em swap: muli $2,$5, 4
Linguagem de 00000000101000010000000000011000
add $2,$4,$2
00000000100011100001100000100001
montagem lw $15, 0($2)
Montador** 10001100011000100000000000000000
lw $16, 4($2) (assembler)
(assembly 10001100111100000000000000000100
sw $16, 0($2)
10101100111100100000000000000000
language) sw $15, 4($2)
10101100011000100000000000000100
jr $31 ** Específico da
CPU escolhida

INE/CTC/UFSC Slide 7T.7 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Características Arquiteturais (RISC*)
1. Poucas instruções, instruções simples
2. Acesso à memória somente com LOAD e STORE
3. Operações lógicas e aritméticas entre registradores (instruções
com três endereços de registrador)
4. Todas as instruções do mesmo tamanho (com pouca variação de
formato)
5. Poucos modos de endereçamento (e codificados junto com as
instruções)
6. Uso de instruções compare-and-branch
7. Poucos tipos de dados
* Reduced Instruction Set Computer

INE/CTC/UFSC Slide 7T.8 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Processador MIPS
• Arquitetura didática desenvolvida por D. Patterson & J.
Hennessy para ensinar Organização de Computadores no
nível de graduação
• Processadores comerciais da empresa MIPS Technologies
(fundada em 1984 por um grupo de pesquisadores de
Stanford University, entre eles J. Hennessy).
• Estes processadores equiparam diversos produtos:
computadores pessoais, estações de trabalho e servidores,
roteadores e consoles de jogos

INE/CTC/UFSC Slide 7T.9 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Registradores Visíveis ao Programador
32 registradores (de 32 bits) de propósito geral
Na linguagem simbólica (assembly) os registradores são designados por:
• $s0, $s1, …, $s7
– registradores que correpondem às variáveis dos programas escritos em linguagem de
alto nível (C, por exemplo)
– São mapeados nos registradores reais de número 16 a 23
• $t0, $t1,…, $t9
– registradores temporários, necessários à tradução dos programas em linguagem de alto
nível em instruções do MIPS
– São mapeados nos registradores de número 8 a 15, 24 e 25

INE/CTC/UFSC Slide 7T.10 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Formato das Instruções
• 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

31 26 25 0

opcode
6 bits 26 bits

INE/CTC/UFSC Slide 7T.11 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Instruções Consideradas
Linguagem de
Instrução Formato Significado
Montagem
Adição R add $s1, $s2, $s3 $s1 ¬ $s2 + $s3

Subtração R sub $s1, $s2, $s3 $s1 ¬ $s2 - $s3

AND bit a bit R and $s1, $s2, $s3 $s1 ¬ $s2 and $s3

OR bit a bit R or $s1, $s2, $s3 $s1 ¬ $s2 or $s3

Load word I lw $s1, desl($s2) $s1 ¬ Mem[$s2 + desl]

Store word I sw $s1, desl($s2) Mem[$s2 + desl] ¬$s1


if ($s1==$s2)
Salto condicional I beq $s1, $s2, desl
then PC ¬ PC+4+(desl<<2)
PC ¬ L onde
Salto incondicional J j L
L = ((PC+4)[31-28]) || (constante << 2)

INE/CTC/UFSC Slide 7T.12 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
A interface Hardware/Software
Sobre o compilador
• O Compilador é responsável por
- associar variáveis a registradores
- alocar em endereços de memória certas estruturas de dados (tais como os arrays)
- otimizar o código gerado
• Assim, é fácil para o compilador colocar o endereço inicial nas instruções
de transferência de dados

INE/CTC/UFSC Slide 7T.13 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Estrutura de uma Memória RAM: conceito geral
Exemplo: Memória de 8 linhas, com endereços
das linhas Valor ser
1 byte por linha (8 bits) 8 escrito
000 palavra0
• Cada linha armazena uma palavra

Decodificador 3:8
001 palavra1

(”word”) end 3
010
011
palavra2
palavra3

8 linhas
• Cada palavra possui 1 byte (8bits) 100 palavra4
101 palavra5
110 palavra6
111 palavra7

escrever ler
Valor lido

habilitação de
leitura/escrita

INE/CTC/UFSC Slide 7T.14 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Estrutura de uma Memória RAM: conceito geral
Exemplo: Memória de 8 linhas, com endereços
das linhas Valor ser
2 bytes por linha (16 bits) 16 escrito
000 palavra0
• Cada linha armazena uma palavra

Decodificador 3:8
001 palavra1

(”word”) end 3
010
011
palavra2
palavra3

8 linhas
• Cada palavra possui 2 bytes (16 bits) 100 palavra4
101 palavra5
110 palavra6
111 palavra7

16

escrever ler
Valor lido

habilitação de
leitura/escrita

INE/CTC/UFSC Slide 7T.15 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Estrutura de uma Memória RAM: conceito geral
Exemplo: Memória de 2n linhas, endereços das
linhas Valor ser
com 4 bytes por linha (32 bits) (em binário...) 32 escrito
0 palavra0
• Cada linha armazena uma palavra 1 palavra1

(”word”)

Decodificador n:2n
2 palavra2
3 palavra3
• Cada palavra possui 4 bytes (32 bits)

2n linhas
end n 4 palavra4
5 palavra5
6 palavra6
7 palavra7
... ….
2n-2 palavra2n-2
2n-1 palavra2n-1

32
escrever ler
Valor lido
habilitação de
INE/CTC/UFSC Slide 7T.16 Profs. Güntzel e Meinhardt
Sistemas Digitais - semestre 2022/1 leitura/escrita & Est. André Bräscher
O Processador MIPS Monociclo
Estrutura de uma Memória RAM: conceito geral
Exemplo: Memória de 2n linhas, endereços das
linhas Valor ser
com 4 bytes por linha (32 bits) (em binário...) 32 escrito
0 palavra0
• Cada linha armazena uma palavra 1 palavra1

(”word”)

Decodificador n:2n
2 palavra2
3 palavra3
• Cada palavra possui 4 bytes (32 bits)

2n linhas
end n 4 palavra4
5 palavra5
6 palavra6
7 palavra7
Problema: todos os processadores precisam ... ….
acessar dados cujo comprimento pode ser de 2n-2 palavra2n-2
• 4 bytes (contíguos na memória) 2n-1 palavra2n-1

• 2 bytes (contíguos na memória) 32


• 1 byte escrever ler
Valor lido
habilitação de
INE/CTC/UFSC Slide 7T.17 Profs. Güntzel e Meinhardt
Sistemas Digitais - semestre 2022/1 leitura/escrita & Est. André Bräscher
O Processador MIPS Monociclo
Estrutura de uma Memória RAM: conceito geral
Valor a ser escrito, em byte, half-word ou word (conforme o tipo do dado)
Solução: endereços dos bytes
endereçamento a byte (em binário...) 8 8 8 8
3 byte3 2 byte2 1 byte1 0 byte0
• Permite ler/escrever: 7 byte7 6 byte6 5 byte5 4 byte4

Decodificador 3n:232
11 10 9 8
• 1 palavra (word) = 4 bytes byte11 byte10 byte9 byte8
15 byte15 14 byte14 13 byte13 12 byte12
• Meia palavra (half-word) = 2 bytes 32 19 18 17 16
byte19 byte18 byte17 byte16

2n linhas
end
• 1 byte 23 byte23 22 byte22 21 byte21 20 byte20
Por ciclo de acesso 27 byte27 26 byte26 25 byte25 24 byte24
31 byte31 30 byte30 29 byte29 28 byte28
• Só depende do tipo do dado ... …. ... …. ... …. ... ….
usado …. …. …. ….
232-1 232-2 232-3 232-4
byte232-4 byte232-3 byte232-2 byte232-1

8 8 8 8

escrever ler
Valor lido, em byte, half-word ou word (conforme o tipo do dado)

INE/CTC/UFSC Slide 7T.18 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Estrutura de uma Memória RAM: conceito geral
Valor a ser escrito, em byte, half-word ou word (conforme o tipo do dado)
Organização da endereços dos bytes
memória do MIPS (em binário...) 8 8 8 8
0 byte3 1 byte2 2 byte1 3 byte0
• Cada palavra 4 bytes (32 4
byte7 5 byte6 6
byte5 7
byte4
bits) à 230 palavras

Decodificador 3n:232
8 9 byte10 10 11
byte11 byte9 byte8
12 13 14 15
byte15 byte14 byte13 byte12
• Endereçamento a byte à 32 16
byte19
17
byte18 18
byte17
19
byte16

2n linhas
end
232 bytes 20
24
byte23
21
25
byte22
22
26
byte21
23
27
byte20
byte27 byte26 byte25 byte24
• usa o endereçamento do 28
byte31
29
byte30
30
byte29
31
byte28
tipo ”Big Endian”: ...
….
...
….
...
….
...
….
• byte3 à end. 0 232-4
….
232-3
….
232-2
….
232-1
….
• byte2 à end. 1 byte232-4 byte232-3 byte232-2 byte232-1
• byte1 à end. 2 8 8 8 8
• byte0 à end. 3
escrever ler
Valor lido, em byte, half-word ou word (conforme o tipo do dado)

INE/CTC/UFSC Slide 7T.19 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Endereçamento de Memória no MIPS
• O endereço de duas palavras consecutivas na memória se difere sempre de 4
unidades
• O espaço de endereçamento de memória do MIPS é de 230 palavras (de 32 bits):

endereço dados
0 100
4 10
8 101
12 1
.. ..
. .
4294967292 77

INE/CTC/UFSC Slide 7T.20 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Endereçamento de Memória no MIPS
• No MIPS as palavras sempre começam em endereços múltiplos de 4
(restrição de alinhamento)
• MIPS usa o endereçamento big endian
End. Memória
i byte3 (mais sig.)
i+1 byte2
i+2 byte1
i+3 byte0 (menos sig.)

• O endereçamento a bytes também afeta a indexação dos arrays: a instrução


lw do exemplo anterior precisa ser
lw $t0, 32 ($s3) # registrador temporário $t0 recebe A[8]
INE/CTC/UFSC Slide 7T.21 Profs. Güntzel e Meinhardt
Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Leitura da Semana
Livros:
1. PATTERSON, David A.; HENNESSY, John L. “Computer Organization and
Design: the hardware/software Interface”, 3rd edition, Morgan Kaufmann
Publishers, San Francisco, California, USA, 2007.

Se usar a 2a Edição: Seções 3.3 a 3.5.


Se usar a 3a Edição: Seções 2.3 a 2.6.

2. David Money Harris and Sarah L. Harris. Digital Design and Computer
Architecture - Second Edition. Morgan Kaufmann, 2013

INE/CTC/UFSC Slide 7T.22 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Diagrama de Blocos do Sistema
MIPS Monociclo
status
Bloco de 6
Controle comandos Bloco Operativo
(B.C.) (B.O.) ck

6 26

32 32 32
Endereço 32 Endereço Dado
lido
Instrução Memória
lida de dados
32
Memória Dado a ser
de Instruções escrito

ck

INE/CTC/UFSC Slide 7T.23 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Diagrama de Blocos do Sistema
MIPS Monociclo
status
Bloco de 6
Controle comandos Bloco Operativo
(B.C.) (B.O.) ck

6 26

32 32 32
Endereço 32 Endereço Dado
lido
Instrução Memória
lida de dados
32
Memória Dado a ser
de Instruções escrito

ck

INE/CTC/UFSC Slide 7T.24 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Diagrama de Blocos do Sistema
MIPS Monociclo
status
Bloco de 6
Controle comandos Bloco Operativo
(B.C.) (B.O.) ck

opcode 6 26

32 32 32
Endereço 32 Endereço Dado
lido
Instrução Memória
lida de dados
32
Memória Dado a ser
de Instruções escrito

uma instrução ck
31 26 25 0

opcode
6 bits 26 bits

INE/CTC/UFSC Slide 7T.25 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Diagrama de Blocos do Sistema
OBS: bloco de controle
é combinacional MIPS Monociclo
status
Bloco de 6
Controle comandos Bloco Operativo
(B.C.) (B.O.) ck

opcode 6 26

32 32 32
Endereço 32 Endereço Dado
lido
Instrução Memória
lida de dados
32
Memória Dado a ser
de Instruções escrito

uma instrução ck
31 26 25 0

opcode
6 bits 26 bits

INE/CTC/UFSC Slide 7T.26 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Execução das Instruções (“Ciclo de Fetch”)
início

Busca da instrução/decodificação + leitura dos registradores (Rs e Rt)

Instruções de Instruções de Instruções de


Instruções
referência à desvio desvio
tipo R
memória condicional incondicional

INE/CTC/UFSC Slide 7T.27 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Instruções formato R: add, sub, or, and
• opcode = 0
• “funct” define a operação a ser feita pela ALU
• “shamt” (shift amount) é usado em instruções de deslocamento

31 26 25 21 20 16 15 11 10 6 5 0

000000 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)

INE/CTC/UFSC Slide 7T.28 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Uso de Instruções Tipo R (Aritméticas e Lógicas)
Seja o comando C mostrado abaixo.
f = (g + h) - (i + j);
Um possível resultado da compilação deste comando para
o MIPS seria:

add $t0, $s1, $s2 # registrador $t0 contém g + h


add $t1, $s3, $s4 # registrador $t1 contém i + j
sub $s0, $t0, $t1 # f recebe $t0 - $t1, resultado final

INE/CTC/UFSC Slide 7T.29 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Instruções formato I: load word (lw)

31 26 25 21 20 16 15 0

opcode=35 100011 rs rt Deslocam. ou oper. Imediato


6 bits 5 bits 5 bits 16 bits

registrador-base para o registrador-destino


cálculo do endereço de
memória

Simbólico
lw $s1, deslocam($s2) ($s1 ¬ Mem[$s2 + deslocam] )

INE/CTC/UFSC Slide 7T.30 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Instruções formato I: store word (sw)

31 26 25 21 20 16 15 0

Opcode=43 101011 rs rt Deslocam. ou oper. Imediato


6 bits 5 bits 5 bits 16 bits

registrador-base para o registrador-fonte


cálculo do endereço de
memória

Simbólico
sw $s1, deslocam($s2) (Mem[$s2 + deslocam] ¬ $s1 )

INE/CTC/UFSC Slide 7T.31 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Instruções formato I: load word (ld) e store word (sw)
• load word (lw): opcode = 35
• store word (sw): opcode = 43
31 26 25 21 20 16 15 0

opcode rs rt Deslocam. ou oper. Imediato


6 bits 5 bits 5 bits 16 bits

registrador-base para o registrador-destino (para lw) ou


cálculo do endereço de registrador-fonte (para sw)
memória
Simbólico
lw $s1, deslocam($s2) ($s1 ¬ Mem[$s2 + deslocam] )
sw $s1, deslocam($s2) (Mem[$s2 + deslocam] ¬ $s1 )

INE/CTC/UFSC Slide 7T.32 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Uso da Instrução lw
Acesso a um operando que está na memória
Suponha que:
• A seja um array de 100 palavras,
• O compilador associa as variáveis g e h aos registradores $s1 e $s2
• O endereço inicial do array (endereço-base) está armazenado em $s3.
Traduza o seguinte comando de atribuição, escrito em C para a linguagem de
montagem do MIPS.
g = h + A[8];

INE/CTC/UFSC Slide 7T.33 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Uso da Instrução lw
Primeiramente, é necessário transferir A[8] para um registrador:

lw $t0, 8 ($s3) # registrador temporário $t0 recebe A[8]

A instrução seguinte pode operar normalmente com o valor trazido


da memória, pois ele está armazenado no registrador temporário $t0:

add $s1, $s2, $t0 # g recebe h + A[8]

INE/CTC/UFSC Slide 7T.34 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Uso das Instruções lw e sw
• Suponha que a variável h esteja associada ao registrador $s2 e que o endereço do
array A esteja armazenado em $s3
• Qual é o código de montagem do MIPS para o seguinte comando de atribuição,
escrito em C?
A[12] = h + A[8]

lw $t0, 32 ($s3) # registrador temporário $t0 recebe A[8]


add $t0, $s2, $t0 # registrador temporário $t0 recebe h + A[8]
sw $t0, 48 ($s3) # h + A[8] é armazenado em A[12]

INE/CTC/UFSC Slide 7T.35 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Instrução formato I: Desvio Condicional
beq: branch on equal
• 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 << 2) + PC + 4
31 26 25 21 20 16 15 0

000100 rs rt Deslocam. ou oper. Imediato


6 bits 5 bits 5 bits 16 bits

registradores a serem
comparados
Simbólico
beq $s1, $s2, deslocam ( if ($s1== $s2) then PC¬PC + 4 + (deslocam << 2))

INE/CTC/UFSC Slide 7T.36 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Instruções de Desvio Condicional
• Usadas para instruções que envolvem tomada de decisão (if, while,
etc.)
• No MIPS:
beq reg1, reg2, L1
Branch if equal: desvia para o comando com label L1, se reg1 == reg2
bne reg1, reg2, L1
Branch if not equal: desvia para o comando com label L1, se reg1 != reg2

INE/CTC/UFSC Slide 7T.37 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Instrução formato J: Desvio Incondicional
J: jump
• Opcode = 2
• Campo address contém 26 bits do endereço de destino
• Os 2 bits menos significativos recebem “0”
• Os 4 bits mais significativos recebem os bits mais significativos de PC + 4

31 26 25 0

opcode address
6 bits 26 bits

Simbólico
j Label (PC¬ ((PC+4)[31-28]) || (endereço destino << 2))

INE/CTC/UFSC Slide 7T.38 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Uso das Instruções beq e j
Compilação de um Comando if-else usando Desvio
Condicional e Desvio Incondicional
• Seja o código a seguir, escrito em linguagem C:
if( i != j) f = g + h;
else f = g - h;
• Suponha que as variáveis f, g, h, i e j sejam alocadas nos registradores
$s0, $s1, $s2, $s3 e $s4, respectivamente
• Qual seria o código gerado pelo compilador do MIPS?

INE/CTC/UFSC Slide 7T.39 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Uso da Instrução beq
Compilação de um Comando if em uma Instrução de Desvio
Condicional

1 beq $s3, $s4, ELSE # desvia para ELSE se i == j


2 add $s0, $s1, $s2 # f = g + h (executa se i != j)
3 j EXIT # Fim da condição if, vai para EXIT
4 ELSE: sub $s0, $s1, $s2 # f = g - h (executa se i == j)
5 EXIT: Fim da execução

INE/CTC/UFSC Slide 7T.40 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher
O Processador MIPS Monociclo
Leitura da Semana
Livros:
1. PATTERSON, David A.; HENNESSY, John L. “Computer Organization and
Design: the hardware/software Interface”, 3rd edition, Morgan Kaufmann
Publishers, San Francisco, California, USA, 2007.

Se usar a 2a Edição: Seções 3.3 a 3.5.


Se usar a 3a Edição: Seções 2.3 a 2.6.

2. David Money Harris and Sarah L. Harris. Digital Design and Computer
Architecture - Second Edition. Morgan Kaufmann, 2013

INE/CTC/UFSC Slide 7T.41 Profs. Güntzel e Meinhardt


Sistemas Digitais - semestre 2022/1 & Est. André Bräscher

Você também pode gostar