Buscar

08 Instr. Memoria 20180823 2038

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 28 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 28 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 28 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

Arquitetura e Organização de Computadores I
1
Manipulação da memória
Registradores versus memória
3
• Os operandos das instruções aritméticas precisam ser registradores —
apenas 32 registradores fornecidos;
• O compilador associa variáveis com registradores;
• E quanto aos programas com muitas variáveis?
Memória
Entrada
Saída
Processador
E/S
Organização da memória
4
• Vista como um array grande e unidimensional, com um endereço;
• Um endereço de memória é um índice para o array;
• “Endereçamento de byte” significa que o índice aponta para um byte da 
memória;
8 bits de dados
8 bits de dados
8 bits de dados
8 bits de dados
8 bits de dados
8 bits de dados
8 bits de dados
Organização da memória
5
• Os bytes são bons, mas a maioria dos itens de dados usam “words” maiores;
• Para o MIPS, uma word possui 32 bits ou 4 bytes;
32 bits de dados
32 bits de dados
32 bits de dados
32 bits de dados
Os registradores armazenam 32 bits de dados
232 bytes com endereços de byte de 0 a (2^32)-1
230 words com endereços de byte 0, 4, 8, ... 2^(32)-4
•Memória principal usada para dados compostos
• Matrizes, estruturas, dados dinâmicos
•Para aplicar operações aritméticas
• Carrega valores da memória para registradores
• Armazena o resultado do registro na memória
•Memória é endereçada por byte
• Cada endereço identifica um byte de 8 bits
•Palavras estão alinhadas na memória
• O endereço deve ser um múltiplo de 4
•MIPS é Big Endian
• Byte mais significativo no endereço menos significativo de uma palavra
• c.f. Little Endian: byte menos significativo, no endereço menos significativo
Memory Operands
Chapter 2 — Instructions: Language of the 
Computer — 6
•Valores devem ser buscados a partir da memória antes que as 
instruções possam operar sobre eles;
•Carregar palavra:
• lw $t0, memory-address
•Guardar palavra:
• sw $t0, memory-address
Operadores de memória
7
Register Memory
Register Memory
Formato
8
• O formato dos operadores de memória é:
destination register
lw $t0, 8($t3)
registrador
uma constante
• lw $t0, 4($t2)
• lw $t1, -4($t3)
•sw $t0, 0($t2)
•sw $t1, 0($t2)
•Considere:
•T2 = 12
•T3 = 16
Exemplo
Simule
•Registradores são mais rápidos para acessar do que memória
•Operar em dados de memória requer carregar e armazenar
•Mais instruções para serem executadas
•O compilador deve usar registros para variáveis o máximo possível
•Apenas desperdiçar tempo na memória para variáveis usadas com menos 
frequência
•Otimizar o uso dos registradores é importante!
Registers vs. Memory
Chapter 2 — Instructions: Language of the 
Computer — 10
Vetores
•Primeiro passo é reservar espaço para o array:
• Isso vai reservar um bloco continuo de bytes;
•O label é um símbolo que guarda o endereço inicial do array;
Array em MIPS
•O tamanho é especificado em bytes, mas poderia ser usado:
•Array de 1000 char (ASCII);
•Array de 250 inteiros;
•Array de 125 doubles.
Array em MIPS
•É possível declara o array com valores iniciais:
Array em MIPS
• Instruções load word (lw) e store word (sw);
• Exemplo (considere o endereço inicial de A em $s3, e que o valor de h já esta em s2):
Código C: A[6] = h + A[4]; ?
Código MIPS: lw $t0, 16($s3)
add $t0, $s2, $t0
sw $t0, 24($s3)
• A instrução store word tem o destino por último
• Lembre-se de que os operandos são registradores, não memória!
Não podemos escrever: add 24($s3), $s2, 16($s3)
Instruções
15
•Seja A um vetor de 100 palavras e as variáveis g e h associadas aos 
registradores $s1 e $s2 e sabendo que o endereço de base de A está 
armazenado no registrador $s3, traduza os códigos em C :
1. g = h + A[8];
2. A[0] = A[1] + A[2]
•MIPS 1:
lw $t0, 32($s3)
add $s1, $s2, $t0
•MIPS 2:
lw $t0, 4($s3)
lw $t1, 8($s3)
add $t0, $t0, $t1
sw $t0, 0($s3)
Exemplo
16
•Para o código anterior, como ficaria a declaração dos dados?
•Como carregar o endereço do vetor em $s3?
Exemplo
Até agora, para o ISA do MIPS...
Hennessy • Patterson 18
• Immediate arithmetic and load/store instructions
• rt: destination or source register number
• Constant: –215 to +215 – 1
• Address: offset added to base address in rs
MIPS I-format Instructions
Chapter 2 — Instructions: Language of the 
Computer — 19
op rs rt constant or address
6 bits 5 bits 5 bits 16 bits
Exercícios + Patterson (5 ed.)
•Escreva um programa em Assembly que traduza o seguinte código C, 
considerando que: $t1 possui a base do Array e $s2 corresponde a h.
A[300] = h + A[300]
•Traduza o código resultante para linguagem de máquina, utilizando o 
MIPS reference card.
Exercícios
21
Perguntas?
23/08/2018 27
See ya!
23/08/2018 28

Outros materiais