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