Buscar

Topico_02 (Instruções com memória)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Tópico 2: Arquitetura (Instruções com Memoria)
Prof. Jhonattan Cordoba Ramirez
Escola de Engenharia
Universidade Federal de Minas Gerais (UFMG)
ELT123 - Arquitetura e Organização de Computadores
Roteiro
• Introdução
• Linguagem assembly
• Linguagem de maquina
• Princípio para o desenho 1 (simplicidade
favorece regularidade)
Princípios para o desenho
• Princípio para o desenho 2 (faça o caso
comum rápido)
• Princípio para o desenho 3 (menor é
mais rápido)
𝒂𝒂𝒂𝒂𝒂𝒂 𝒂𝒂,𝒃𝒃, 𝒄𝒄
Mnemônico
Destino
Origem
𝑎𝑎 = 𝑏𝑏 + 𝑐𝑐 − 𝑑𝑑;
𝑎𝑎𝑑𝑑𝑑𝑑 𝑡𝑡, 𝑏𝑏, 𝑐𝑐 #𝑡𝑡 = 𝑏𝑏 + 𝑐𝑐
𝑠𝑠𝑠𝑠𝑏𝑏 𝑎𝑎, 𝑡𝑡,𝑑𝑑 #𝑎𝑎 = 𝑡𝑡 − 𝑐𝑐
Temporário
Onde estão localizados fisicamente os 
operandos no computador?
Memorias
Constantes, também chamadas imediatos.
Registradores
Operandos: Memória
• Muitos dados para 32 registradores só!
• Armazenar mais dados na memória
• A memória é grande, mas lenta
• Variáveis comumente usadas, são mantidas em 
registradores`
• Cada palavra de dados de 32 bits tem um 
endereço exclusivo
Operandos: Memória
Memória Read-Only Memory (ROM) Memória CACHE Random Access Memory (RAM)
• Leitura de memória: load
• Mnemônico: Carregar palavra (lw)
• Formato: lw $s0, 5($t1)
• Cálculo de endereço:
• Adicione endereço base ($t1) ao offset (5)
• address = ($t1 + 5)
• Resultado: $s0 armazena o valor no endereço ($t1 + 
5)
• Qualquer registro pode ser usado como endereço 
base
Exemplo: Carregue os dados armazenados na 
posição de memória 1 e armazenar a 
informação em $s3.
Endereço: ($0 + 1) = 1
$s3 = 0xF2F1AC07 depois de finalizar o 
procedimento.
Código Assembly
lw $s3, 1($0) # Palavra lida do endereço em 
memoria -- 1 é carregada em $s3
Operandos: Memória
Operandos: Memória
• Escrita na memória: write
• Mnemônico: Salvar palavra (sw)
• Formato: sw $s0, 0x7($t1)
• Cálculo de endereço:
• Adicione endereço base ($t1) ao offset (7)
• address = ($t1 + 0x7) = 7
• Resultado: $s0 escreve no endereço ($t1 + 0x7)
Exemplo: Armazenar o valor em $t4 no endereço de 
memória 7.
Endereço: ($0 + 0x7) = 7
O offset pode ser escrito em decimal (padrão) ou 
hexadecimal
Código Assembly
sw $t4, 0x7($0) # Escreva a informação que está em 
$t4 no slot de memória 7
Cada byte tem endereço exclusivo
Load/Store palavras ou um único byte: carregar byte (lb) e 
armazenar byte (sb)
Palavra de 32 bits = 4 bytes, então o endereço da 
palavra é incrementado em 4.
Operandos: Memória
Operandos: Memória Exemplo: Carregue a palavra armazenada 
no endereço de memória 4 e armazenar a 
informação em $s3.
Exemplo: Armazenar o valor em $t4 no 
endereço de memória 0x2C (44).
$s3 = 0xF2F1AC07 depois de finalizar o 
procedimento.
Código Assembly
lw $s3, 4($0) # Palavra lida do endereço 
em memoria -- 4 é carregada em $s3
Código Assembly
sw $t4, 0x2C($0) # Escreva a informação 
que está em $t4 no slot de memória 44
Memória Big-Endian e Little-Endian
Como numerar bytes dentro de uma palavra?
Little-Endian: Os números de bytes começam no 
final (menos significativo)
Big-Endian: Os números de bytes começam no 
final grande (mais significativo)
O endereço da palavra é o mesmo para Big ou 
Little-Endian
Exemplo: Suponha que $ t0 seja inicialmente 0x23456789
Depois de executar o código detalhado embaixo em um 
sistema big-endian, qual valor seria o valor de $s0? Qual 
seria o valor de $S0 em um sistema Little-Endian?
sw $t0, 0($0)
lb $s0, 1($0)
Big-Endian: 0x00000045
Little-Endian: 0x00000067
Onde estão localizados fisicamente os 
operandos no computador?
Constantes, também chamadas imediatos.
Registradores
Memorias
Memória Big-Endian e Little-Endian
lw e sw usam constantes ou imediatos, ou seja, 
imediatamente disponíveis a partir da instrução. 
addi: adicionar imediato
Subtrair imediato (subi) necessário?
Princípio para o desenho 4 (Um bom design exige 
bons compromissos)
Vários formatos de instruções permitem flexibilidade
add, sub: Utiliza 3 operandos de registro
lw, sw: Utiliza 2 operandos de registro e uma constante
Número de formatos de instruções mantidos pequenos
Aderir aos princípios de design 1 e 3.
Código em 
linguagem C
Código em linguagem 
MIPS Assembly
𝑎𝑎 = 𝑎𝑎 + 4;
𝑏𝑏 = 𝑎𝑎 − 12;
# $𝑠𝑠𝑠 = 𝑎𝑎; $𝑠𝑠𝑠 = 𝑏𝑏
𝑎𝑎𝑑𝑑𝑑𝑑𝑎𝑎 $𝑠𝑠𝑠, $𝑠𝑠𝑠,4
𝑎𝑎𝑑𝑑𝑑𝑑𝑎𝑎 $𝑠𝑠𝑠, $𝑠𝑠𝑠,−12
Exercícios
1. Suponha que b é uma variável de tamanho 4 bytes e é armazenada em uma memória endereçável 
de um byte no endereço 0xa80. Se a endianidade do processador for little-endian e o processador 
gravar o valor 0xa155f0d3 armazenado na variável b que bytes serão gravados em cada endereço 
de memória.
2. Suponha que x é uma variável do tipo ponteiro que aponta para um único byte. Além disso, assuma 
que b é uma variável de tamanho 4 bytes e é armazenada em endereço de memória 0xa80. Dado 
que o processador usa big-endian, avalie o novo valor de b após a execução do seguinte código: 
a. b = 0x0002F552;
b. x = 0xa81;
c. b = b + * x;
3. Repetir a seção 2 para uma memória endereçável de 4 bytes.
Linguagem de máquina
Representação binária de instruções
• Os computadores só entendem os 1’s e 0’s
• Instruções de 32 bits
• Simplicidade favorece a regularidade: Dados e 
instruções de 32 bits
• 3 formatos de instruções:
• Tipo - R: Operandos Registradores
• Tipo - I: Operando imediato
• Tipo - J: Operandos para pular
Tipo Registro
• Três operandos registradores:
• rs, rt: origem do registrador
• rd: destino do registrador
• Outros campos:
• op: Código de operação ou opcode (0 para 
instruções do tipo R)
• funct: Função com opcode, diz ao computador 
qual operação executar
• shamt: O valor do turno para instruções de turno, 
caso contrário, é 0
Linguagem de máquina
Linguagem de máquina
Código MIPS Assembly
𝑎𝑎𝑑𝑑𝑑𝑑 $𝑠𝑠𝑠, $𝑠𝑠𝑠,$s2
𝑠𝑠𝑠𝑠𝑏𝑏 $𝑡𝑡𝑠, $𝑡𝑡𝑡,$t5
rs = $s1 (17),rt = $s2 (18), rd = $s0 (16). 
Linguagem de máquina
Representação binária de instruções
• Os computadores só entendem os 1’s e 0’s
• Instruções de 32 bits
• Simplicidade favorece a regularidade: Dados e 
instruções de 32 bits
• 3 formatos de instruções:
• Tipo - R: Operandos Registradores
• Tipo - I: operando imediato
• Tipo - J: para pular
Tipo Imediato
• Três operandos registradores: 
• rs, rt: register
• imm: complemento imediato de 16 bits
• Outros campos:
• op: o opcode
• Simplicidade favorece a regularidade: todas as 
instruções têm opcode
• A operação é completamente determinada pelo 
opcode
Linguagem de máquina
Linguagem de máquina
Código MIPS Assembly
𝑎𝑎𝑑𝑑𝑑𝑑𝑎𝑎 $𝑠𝑠𝑠, $𝑠𝑠𝑠,5
𝑎𝑎𝑑𝑑𝑑𝑑𝑎𝑎 $𝑡𝑡𝑠, $𝑠𝑠𝑡,−12
𝑙𝑙𝑙𝑙 $𝑡𝑡𝑡,𝑡𝑡($0)
s𝑙𝑙 $𝑠𝑠𝑠,4($t1)
Linguagem de máquina
Representação binária de instruções
• Os computadores só entendem os 1’s e 0’s
• Instruções de 32 bits
• Simplicidade favorece a regularidade: Dados e 
instruções de 32 bits
• 3 formatos de instruções:
• Tipo - R: Operandos Registradores
• Tipo - I: operando imediato
• Tipo - J: para pular
Tipo Jump
Este tipo de instrução permite que um usuário possa se-
movimentar de forma imediata em qualquer direção da 
memoria.
• Utiliza um único operando: 
• addr: endereço
• Outros campos:
• op: o opcode
• Comece com opcode: diz como analisar o resto
• Se opcode = 0
• Instrução do tipo R
• Bits de funct – Representa operação
• Caso contrario
• opcode estabelece a operação
Interpretando o Código da Máquina
Interpretando o Código da Máquina
• Instruções de 32 bits. Dados armazenados na memória.
• Sequência de instruções.
• Para executar um novo programa:
• Não é necessário religar
• Simplesmente armazene novo programa na memória
• Execução do Programa:
• O processador busca (lê) instruções da memória em 
sequência
• Processador executa a operação especificada
Código MIPS 
Assembly Código de Maquina
𝑙𝑙𝑙𝑙 $𝑡𝑡𝑡,𝑡𝑡($0)
𝑎𝑎𝑑𝑑𝑑𝑑 $𝑠𝑠𝑠, $𝑠𝑠𝑠,$s2
𝑎𝑎𝑑𝑑𝑑𝑑𝑎𝑎 $𝑡𝑡𝑠, $𝑠𝑠𝑡,−12
𝑠𝑠𝑠𝑠𝑏𝑏 $𝑡𝑡𝑠, $𝑡𝑡𝑡,$𝑡𝑡𝑡
0x8C0A0020
0x02328020
0x2268FFF4
0x016D4022
Contador de programas (PC)
Mantém o controle das instruções atuais
Programa armazenado
Traduzir em linguagem de maquina : 
$t0: 8 $s4: 20 $s5: 21
$s3: 19$s4: 20
Exercício: Tipo-R e Tipo-I
Traduzir em linguagem de maquina : 
add $t0, $s4, $s5
lw $s3, -24($s4)
	Tópico 2: Arquitetura (Instruções com Memoria)
	Slide Number 2
	Slide Number 3
	Slide Number 4
	Slide Number 5
	Slide Number 6
	Slide Number 7
	Slide Number 8
	Slide Number 9
	Slide Number 10
	Slide Number 11
	Slide Number 12
	Slide Number 13
	Slide Number 14
	Slide Number 15
	Slide Number 16
	Slide Number 17
	Slide Number 18
	Slide Number 19
	Slide Number 20
	Slide Number 21
	Slide Number 22
	Slide Number 23
	Slide Number 24

Continue navegando