Baixe o app para aproveitar ainda mais
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
Compartilhar