·

Engenharia de Computação ·

Arquitetura de Computadores

Send your question to AI and receive an answer instantly

Ask Question

Preview text

C208 Arquitetura de Computadores Prof Yvo 1 C208 Arquitetura de Computadores Capítulo 1 Introdução à Arquitetura de Computadores parte 2 Prof Yvo Marcelo Chiaradia Masselli C208 Arquitetura de Computadores Prof Yvo Processadores Arquitetura Básica Ciclo de Instrução Conjunto de Instruções Arquiteturas CISC x RISC 2 C208 Arquitetura de Computadores Prof Yvo Arquitetura Básica de um Processador Unidade de Controle UC controla a operação interna e externa da CPU sincronizando todo o sistema Unidade Lógica e Aritmética ALU realiza as operações lógicas e aritméticas da CPU Unidade de Registradores oferece armazenamento interno temporário e de rápido acesso à CPU Unidade de Controle C208 Arquitetura de Computadores Prof Yvo Arquitetura Básica de um Processador Registradores de uso geral Sinais de Controle Memória Programa Dados Dispositivos Entrada Saída internos externos Controles externos Sinais de controle internos estão presentes em todos os blocos internos do processador C208 Arquitetura de Computadores Prof Yvo Processamento das Instruções Instruções São tarefas elementares que podem ser executadas em um processador tais como Somar 2 números Transferir um número da Memória para a CPU Transferir um dado da CPU para uma Porta de ES etc OBS Cada instrução do processador é representada por um código de operação OPCODE C208 Arquitetura de Computadores Prof Yvo Processamento das Instruções Conjunto de Instruções ou SET DE INSTRUÇÕES É o conjunto de todas as Instruções disponíveis do nível ISA OBS cada processador tem o seu próprio Set de Instruções C208 Arquitetura de Computadores Prof Yvo Processamento das Instruções Acesso aos dados na memória externa Ordem de bytes na memória Os números inteiros são normalmente armazenados em sequências de bytes variável int em C tem 32 bits 4 bytes sendo que o valor é obtido por simples concatenação de bytes na memória Os métodos mais comuns são Os bytes são guardados por ordem decrescente do seu peso numérico em endereços sucessivos da memória extremidade maior primeiro ou Bigendian Os bytes são guardados por ordem crescente do seu peso numérico em endereços sucessivos da memória extremidade menor primeiro ou Little endian C208 Arquitetura de Computadores Prof Yvo Processamento das Instruções Acesso aos dados na memória externa Ordem dos bytes na memória Ex o valor 90AB12CD16 armazenado na memória em Bigendian Littleendian Big Endian IBM 360370 Motorola 68k MIPS Sparc HP PA entre outros Little Endian Intel x86 Intel x64 DECVax DECAlpha ARM entre outros C208 Arquitetura de Computadores Prof Yvo Exercício Mostre como o dado 6151CE94h ficará armazenado no endereço de memória 0F40h nos modos Bigendian e Littleendian 9 C208 Arquitetura de Computadores Prof Yvo Resposta 10 C208 Arquitetura de Computadores Prof Yvo O processamento de cada instrução é feito pela atuação da UC Unidade de Controle sobre todos os sinais de controles do Sistema Barramentos de controle interna e externo numa sequência de tempo bem definida baseada na frequência do clock Esta sequência de controles para o processamento da Instrução é chamado de Ciclo de Instrução RESET Busca de Instrução Decodificação da Instrução Execução da Instrução Ciclo de Busca ou FETCH Ciclo de Execução Processamento das Instruções C208 Arquitetura de Computadores Prof Yvo Durante o processamento das instruções dois registradores internos uso específico são muito importantes PC Program Counter nele fica armazenado o endereço de memória de programa onde está o próxima instrução opcode a ser executada IR Instruction Register armazena a instrução opcode em execução na Unidade de Controle UC RESET Busca de Instrução Decodificação da Instrução Execução da Instrução Ciclo de Busca ou FETCH Ciclo de Execução Processamento das Instruções C208 Arquitetura de Computadores Prof Yvo Registradores de uso geral Sinais de Controle Memória Programa Dados Dispositivos Entrada Saída internos externos Controles externos Sinais de controle internos estão presentes em todos os blocos internos do processador Ciclo de Busca FETCH 1º Passo Busca do OpCode na Memória de Programa no endereço apontado pelo PC Processamento das Instruções Opcode Opcode End Memory Request Read C208 Arquitetura de Computadores Prof Yvo Registradores de uso geral Sinais de Controle Memória Programa Dados Dispositivos Entrada Saída internos externos Controles externos Sinais de controle internos estão presentes em todos os blocos internos do processador Ciclo de Busca FETCH 2º Passo Decodificação Interpretação do OpCode Processamento das Instruções Opcode C208 Arquitetura de Computadores Prof Yvo Registradores de uso geral Sinais de Controle Memória Programa Dados Dispositivos Entrada Saída internos externos Controles externos Sinais de controle internos estão presentes em todos os blocos internos do processador Ciclo de Busca FETCH 3º Passo Atualização do PC PC aponta para o endereço da próxima instrução Processamento das Instruções PC PC n C208 Arquitetura de Computadores Prof Yvo Registradores de uso geral Sinais de Controle Memória Programa Dados Dispositivos Entrada Saída internos externos Controles externos Sinais de controle internos estão presentes em todos os blocos internos do processador Ciclo de Execução da Instrução UC utiliza os sinais de controle internos eou externos para sequenciar todas as operações necessárias para a execução da instrução Ex Soma subtração leitura memória etc Processamento das Instruções C208 Arquitetura de Computadores Prof Yvo Processamento das Instruções Exemplo execução da instrução ADD AB A AB Barramento de endereços PC Barramento Controle Memory Req Read IR memória IR opcode UC opcode decodificaçãointerpretação PC PC 1 considerando opcode de 1 byte Acumulador REG A REG temp REG B Acumulador Acumulador ALUSOMA REG temp REG A Acumulador FETCH 1º passo FETCH 2º passo FETCH 3º passo Execução C208 Arquitetura de Computadores Prof Yvo Processamento das Instruções Exercícios Descreva os passos simbólicos para os ciclos de Busca e Execução das instruções abaixo considere acesso à memória no formato Littleendian a ADD CD C CD opcode1byte b LD A3547h A 3547h opcode3bytes c ADD A0258h A A0258h opcode3bytes d ST 4455hA 4455h A opcode3bytes 18 C208 Arquitetura de Computadores Prof Yvo Arquiteturas dos Processadores CISC Complex Instructions Set Computers Computadores com Conjunto de Instruções Complexas Número maior de instruções muitas instruções disponíveis a nível da ISA Modos de endereçamento das instruções por registrador e por memória torna o processo de decodificação uma interpretação onde o opcode tem que ser interpretado em vários passos de sequencia pela unidade de controle microcódigo Interpretação do opcode por software microcódigo ao invés de decodificação por hardware sem microcódigo torna o processo de execução da instrução mais demorado n ciclos de clock um para cada passo da sequencia do microcódigo Em geral tem opcodes menores pois a complexidade de execução está na interpretação microcódigo Porém os opcodes podem ter tamanhos diferentes depende do modo de endereçamento da instrução Quanto ao Conjunto de Instruções Nível ISA C208 Arquitetura de Computadores Prof Yvo Arquiteturas dos Processadores RISC Reduced Instructions Set Computers Computadores com Conjunto de Instruções Reduzidas Número pequeno de instruções poucas instruções disponíveis a nível da ISA Modos de endereçamento das instruções somente por registrador acesso a memória somente com instruções LOAD e STORE Decodificação por hardware das instruções muito rápido e sem execução de microcódigo As instruções possuem tamanho fixo Como as instruções são mais simples muitas vezes é necessário várias instruções para fazer a mesma tarefa de uma instrução CISC porém como a execução das instruções RISC são muito rápidas mesmo assim compensa e tem melhor desempenho Processamento das Instruções é feito de forma muito rápida geralmente 1 instrução por ciclo de clock Quanto ao Conjunto de Instruções Nível ISA C208 Arquitetura de Computadores Prof Yvo Exemplo de Execução CISC x RISC CISC ADD 2352hB Opcode de 3 bytes na memória 13h instrução 52h operando Low 23h operando High No ciclo de execução microcódigo Regend Regend1 aponta operando lowend Reg temp leitura memória end Regend Regend Regend1 aponta operando highend Regend high leitura memória end Regend Regend low Reg temp Acumulador leitura na memória end Regend REG temp REG B Acumulador Acumulador ALUSOMA REG temp Escrita na memória no end Regend Acumulador Ciclo da instrução 5 fetch 9 execução 14 cck RISC LD 2352h ADD B ST 2352h Opcodes LD 3 bytes ADD 3 bytes ST 3 bytes No ciclo de execução decodificação REG temp leitura memória end 2352h REG temp REG B ALUSOMA Reg temp Escrita na memória no end 2352h REG temp Ciclo da instrução 1 cck por instrução Total 3 cck RISC Código na memória maior Opcode decodificado não tem microcódigo Tempo de execução mais rápido menos cck C208 Arquitetura de Computadores Prof Yvo Arquiteturas dos Processadores Atualmente no mercado de processadores existem muitos fabricantes adotando soluções HIBRIDAS entre CISC e RISC Por exemplo a INTEL usa RISC para instruções de uso mais frequente Núcleo RISC e interpretação Núcleo CISC para instruções mais complexas e de uso menos frequente C208 Arquitetura de Computadores Prof Yvo Exercícios 1 Descreva a função de cada um dos barramentos de uma arquitetura genérica dados endereços e controle 2 Qual a influência do barramento de endereços na arquitetura de um processador E do barramento de dados 3 Faça uma comparação entre as arquiteturas CISC e RISC com relação aos aspectos a seguir e justifique a resposta Quanto ao tamanho do programa armazenado na memória Quanto ao tempo de execução das instruções Quanto a implementação da UC Unidade de Controle 4 Podese afirmar que na arquitetura CISC as instruções são decodificadas por software enquanto que na RISC são por hardware Justifique 5 Explique em detalhes o que você entende por microcódigo Fica gravado em alguma memória Em que local do Processador Arquiteturas dos Processadores C208 Arquitetura de Computadores Prof Yvo Arquitetura MIPS Assembly Nível ISA Caminho de Dados e Controle Pipeline C208 Arquitetura de Computadores Prof Yvo Processador MIPS MIPS Microprocessor without Interlocking Pipeline Stages Arquitetura RISC de 32 bits Quase 100 milhões de processadores MIPS fabricados em 2009 Usado pela Toshiba NEC Nintendo Cisco Silicon Graphics Sony HP Fuji etc Os processadores MIPS são usados em aplicações como Computadores da Silicon Graphics Muitos sistemas embarcados Dispositivos com Windows CE Roteadores da Cisco Videogames como Nintendo 64 e PlayStation Impressoras da HP etc C208 Arquitetura de Computadores Prof Yvo MIPS Arquitetura C208 Arquitetura de Computadores Prof Yvo MIPS Memória C208 Arquitetura de Computadores Prof Yvo Assembly do MIPS Estrutura Um programa assembly é um texto a 3 colunas em que a primeira representa de uma forma simbólica endereços de memória labels a segunda coluna as instruções e a última coluna os comentários C208 Arquitetura de Computadores Prof Yvo Assembly do MIPS Estrutura Comentários começam com o caracter e vai até o final da linha Etiquetas ou LABELs Identificadores que ficam no início de uma linha e que são sempre seguidos de dois pontos Servem para dar um nome ao endereço de memória Podese controlar o fluxo de execução do programa criando saltos para os Labels etiquetas Instruções instruções do programa Diretivas Instruções para o Montador Assembly a fim de informar como traduzir o programa São identificadores reservados e iniciamse sempre por um ponto C208 Arquitetura de Computadores Prof Yvo Exercício Dado o seguinte programa em Assembly do MIPS indique as etiquetas Labels as diretivas as instruções e os comentários data Var1 word 1 text global main main li v0 4 chama a system call 4 lw a0 Var1 C208 Arquitetura de Computadores Prof Yvo Para criação de constantes e variáveis na Memória ascii str Armazena uma string em memória sem acrescentar o terminador NULL asciiz str Armazena uma string em memória acrescentando o terminador NULL ascii cadeia A diretiva permite carregar em posições de memória consecutivas cada uma com dimensão de 1 byte o código ASCII de cada um dos caracteres da cadeia byte b1 bn Armazena as grandezas de 8 bits b1 bn em sucessivos bytes de memória Assembly do MIPS Diretivas C208 Arquitetura de Computadores Prof Yvo Para criação de constantes e variáveis na Memória word w1 wn Armazena as grandezas de 32 bits w1 wn em sucessivas palavras de memória float f1 fn armazena os números em ponto flutuante com precisão simples 32 bits f1 fn em posições de memória sucessivas double d1 dn armazena os números em ponto flutuante com precisão dupla 64 bits d1 dn em posições de memória sucessivas space n reserva n bytes na memória de dados inicializando com 0 Assembly do MIPS Diretivas C208 Arquitetura de Computadores Prof Yvo Para controle dos Segmentos de Memória data address Os valores definidos após a diretiva devem ser colocados no segmento de dados do programa 0x10010000 Opcionalmente podem começar a partir de um endereço especificado no campo address Exemplo data segmento de dados palavra1 word 13 decimal palavra2 word 0x15 hexadecimal Assembly do MIPS Diretivas C208 Arquitetura de Computadores Prof Yvo Exercícios 1 Qual o valor dos Labels palavra1 e palavra2 no exemplo anterior 2 Mostre como estes valores serão armazenados na memória Big endian lembrese que o MIPS é um processador de 32 bits 3 Existe alguma diferença no código a seguir em relação ao anterior data segmento de dados palavra1 word 130x15 decimalhexadecimal 4 Como os valores ficarão armazenados na memória de dados no código abaixo represente em Bigendian data val1 byte 0x100x200x300x400x50 val2 word 0x10203040 C208 Arquitetura de Computadores Prof Yvo 5 Como os valores ficarão armazenados na memória de dados no código abaixo data cadeia ascii abcde octeto byte 0xff string asciiz teste 6 Como os valores ficarão armazenados na memória de dados no código abaixo data cadeia ascii abcde word 0x345 octeto byte 0xff string asciiz teste 35 C208 Arquitetura de Computadores Prof Yvo Para controle dos Segmentos de Memória text address Os valores definidos a seguir devem ser colocados no segmento de código do programa opcionalmente a partir do endereço address Exemplo data Var1 word 1 text main li v0 4 chama a system call 4 lw a0 Var1 Assembly do MIPS Diretivas 36 C208 Arquitetura de Computadores Prof Yvo MIPS 32 registradores de 32 bits Cada registrador tem um nome Os nomes começam com s0 s1 s2 s7 correspondem às variáveis de programa t0 t1 t2t9 registradores temporários Zero zero ou 0 Constante 0 ISA Instruction Set Architecture MIPS Registradores s7 23 s6 22 s5 21 s4 20 s3 19 s2 18 s1 17 s0 16 t7 15 t6 14 t5 13 t4 12 t3 11 t2 10 t1 9 t0 8 31 0 37 C208 Arquitetura de Computadores Prof Yvo Nome Real Nome Lógico Descrição ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo Tipos de Instruções 3 formatos Tipo R Rformat envolvendo registradorregistrador Tipo I Iformat envolvendo valor imediado Tipo J Jformat de desvio ISA Instruction Set Architecture MIPS Registradores 6 Bits 31 26 25 21 20 16 15 11 10 6 5 0 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits C208 Arquitetura de Computadores Prof Yvo Tipo R Campos op código da operação opcode rs endereço do primeiro registrador de origem rt endereço do segundo registrador de origem rd endereço do registrador destino shamt quantidade de bits a ser deslocado funct função específica a ser realizada ISA Instruction Set Architecture MIPS Registradores s7 23 s6 22 s5 21 s4 20 s3 19 s2 18 s1 17 s0 16 t7 15 t6 14 t5 13 t4 12 t3 11 t2 10 t1 9 t0 8 31 0 C208 Arquitetura de Computadores Prof Yvo Tipo R exemplos add t2 t1 t0 t2 t1 t0 sub s7 t8 zero s7 t8 0 ISA Instruction Set Architecture MIPS Registradores s7 23 s6 22 s5 21 s4 20 s3 19 s2 18 s1 17 s0 16 t7 15 t6 14 t5 13 t4 12 t3 11 t2 10 t1 9 t0 8 31 0 C208 Arquitetura de Computadores Prof Yvo Tipo I Campos op código da operação opcode rs número do registrador base a ser operado com o valor constante rt número do registrador de destino ou operando constante 215 a 2151 endereço 215 a 2151 ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo 43 Operandos imediatos I São úteis pois frequentemente trabalhamos com constantes em nossos códigos Considere os seguintes comandos i x 0 pi 314 A operação add tem uma versão com operando imediato chamada addi Exemplo addi s3 s3 4 Não é possível a utilização de imediatos com a operação de subtração sub mas addi aceita valores negativos Assim addi s2 s1 1 C208 Arquitetura de Computadores Prof Yvo 44 A constante zero zero A constante zero é tão importante e comum que o MIPS reserva um registrador que sempre contem este valor zero Esse registrador não pode ser sobrescrito É muito útil para efetuar operações muito comuns por exemplo copiar um valor entre um registrador e outro Tradicionalmente essa operação é chamada de move ainda que ela não elimine o valor original add t2 s1 zero C208 Arquitetura de Computadores Prof Yvo Tipo I exemplos addi s1 s2 100 s1 s2 100 beq t0 t1 100 se t0t1 branch salto 100 endereços ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo Tipo J Campos op código da operação opcode endereço endereço destino ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo Tipo J exemplo j 245 jump salto para o endereço absoluto 245 OBS Campo de endereço 26 bits PC 32 bits Como transformar 26 bits de endereço em 32 bits Cada endereço 1 palavra de 32 bits ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo 48 Operações Aritméticas e Lógicas C208 Arquitetura de Computadores Prof Yvo 49 Instruções aritméticas operam apenas com registradores Precisamos então carregar os valores da memória nos registradores Para isto é usada a operação conhecida como Load Também precisamos de uma maneira de levar os valores dos registradores de volta à memória já que a capacidade e quantidade de registradores são limitadas Para isto é usada a operação conhecido como Store C208 Arquitetura de Computadores Prof Yvo 50 C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo Exemplos de OPcodes C208 Arquitetura de Computadores Prof Yvo Operações Aritméticas e Lógicas f g h i j s0 s1 s2 s3 s4 Exemplo f g h i j add t0 s1 s2 t0 g h add t1 s3 s4 t1 i j sub s0 t0 t1 f t0 t1 Exercício mostre o OPCODE em hexadecimal de cada uma das instruções acima ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo Operações Aritméticas e Lógicas Exemplo a b 10 c 5 d e addi s0 s1 10 s0 b 10 addi t0 s2 5 t0 c 5 sub t1 s3 s4 t1 d e add s0 s0 t0 sub s0 s0 t1 a b c d e s0 s1 s2 s3 s4 ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo 55 Operações lógicas Muito úteis para máscaras para inserir ou retirar bits de uma palavra sll Shift left logical Desloca para a esquerda e completa com 0s sll por i bits é o mesmo que multiplicar por 2i srl shift right logical srl por i bits é o mesmo que dividir por 2i Apenas para números sem sinal C208 Arquitetura de Computadores Prof Yvo 56 OPERAÇÃO E Útil para utilizar de máscaras Seleciona alguns bits e limpa os demais and t0 t1 t2 C208 Arquitetura de Computadores Prof Yvo 57 OPERAÇÃO OU Útil para incluir alguns bits em uma palavra Escreve 1 em alguns bits e mantém os demais intocados or t0 t1 t2 C208 Arquitetura de Computadores Prof Yvo OPERADOR NOT Útil para inverter os bits de uma palavra Troca 0 por 1 e 1 por 0 Para seguir o padrão de dois operandos esta instrução de INVERSÃO foi projetada para atuar também em cima de dois operandos por isso usase na verdade a instrução NOR NOT OR e não NOT propriamente dito 58 C208 Arquitetura de Computadores Prof Yvo 59 A instrução funciona da seguinte forma A NOR 0 NOT A OR 0 NOT A Substituindo A pelo valor binário zero 0 0 NOR 0 NOT 0 OR 0 NOT 0 1 Substituindo A pelo valor binário um 1 1 NOR 0 NOT 1 OR 0 NOT 1 0 O comportamento é igual ao da instrução NOT original Quando um operando for zero 0 ele se torna um 1 e viceversa C208 Arquitetura de Computadores Prof Yvo 60 Exemplo not t0 t1 zero A sintaxe desta instrução no MIPS é NOR registradordestino registradorfonte registradorfonte C208 Arquitetura de Computadores Prof Yvo Operações Aritméticas e Lógicas Exemplo a a 0x20 ori s0 s0 0x20 a a 0x20 a b c d e s0 s1 s2 s3 s4 ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo Operações Aritméticas e Lógicas Exemplo a a 1 5 addi t0 zero 1 t0 0 1 sll t0 t0 5 t0 1 5 or s0 s0 t0 a a t0 a b c d e s0 s1 s2 s3 s4 ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo Operações Aritméticas e Lógicas Exercícios 1 Escreva os comandos em Assembly do MIPS para as seguintes expressões a a d e 40 b e e 0x80 2 Escreva os Opcodes gerados em cada uma das instruções das expressões acima a b c d e s0 s1 s2 s3 s4 ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo Transferência de dados memóriaregistrador registradormemória O acesso à memória no MIPS é feito semelhante a um vetor Cada acesso é feito em valores de 1 palavra do MIPS 32 bits Especificase o endereço BASE e um deslocamento offset a partir deste endereço O offset do endereço deve ser um valor múltiplo de 4 bytes 32 bits Endereço base Offset C208 Arquitetura de Computadores Prof Yvo Load Word lw carrega um dado 32 bits da memória para o registrador Exemplo lw t0 4t5 reg 13t5 reg 08t0 14 990A 6574 13 0000 0008 12 3159 D4F8 11 2F6D 851B 10 1F6C 2843 09 5502 0033 08 1234 5678 Banco de Registradores No Valor 00000000 9016 6000 00000004 FF66 6E30 00000008 0000 0000 0000000C 1234 5678 00000010 0000 012F 00000014 4500 5671 00000018 0000 0000 0000001C 0000 0000 Memória Endereço Dados Valores em Hexadecimal ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo Store Word sw carrega o valor do registrador para a memória Exemplo sw t1 8t5 reg 13t5 reg 09t1 14 990A 6574 13 0000 0008 12 3159 D4F8 11 2F6D 851B 10 1F6C 2843 09 5502 0033 08 1234 5678 00000000 9016 6000 00000004 FF66 6E30 00000008 0000 0000 0000000C 1234 5678 00000010 55020033 00000014 4500 5671 00000018 0000 0000 0000001C 0000 0000 Valores em Hexadecimal ISA Instruction Set Architecture MIPS Registradores Banco de Registradores No Valor Memória Endereço Dados C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo Pseudoinstruções instruções que o montador traduz para uma ou várias instruções reais do conjunto ISA C208 Arquitetura de Computadores Prof Yvo Exemplos de OPcodes C208 Arquitetura de Computadores Prof Yvo Exemplo 1 Qual o código Assembly para A12 h A8 OBS Considerar que o valor da variável h esteja em s2 e que o endereço base do vetor A esteja em s3 lw t0 32s3 t0 A8 add t0 s2 t0 t0 h A8 sw t0 48s3 A12 h A8 ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo Exemplo 2 Qual o código Assembly para trocar os valores de B10 com B11 OBS Considerar que o endereço base do vetor B esteja em s4 lw t0 40s4 t0 B10 lw t1 44s4 t1 B11 sw t0 44s4 B11 B10 sw t1 40s4 B10 B11 ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo Exercícios Realize as seguintes operações utilizando a linguagem Assembly do MIPS a A15 h B6 s0 h s1 endereço base de A s2 endereço base de B b A15 A5 B6 B0 s1 endereço base de A s2 endereço base de B c B4 A12 A5 A3 s1 endereço base de A s2 endereço base de B C208 Arquitetura de Computadores Prof Yvo Desvio branch Condicional Branch if equal beq beq reg1 reg2 Label1 Se conteúdo do registrador1 igual ao conteúdo do registrador2 desvie para o Label1 Exemplo beq t1 t0 Loop ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo 103 Seja o comando abaixo if i j goto L1 f g h L1 f f i Supondo que as 5 variáveis correspondam aos registradores s0s4 respectivamente como fica o código MIPS para o comando beq s3s4L1 vá para L1 se i j add s0s1s2 f g h executado se i j L1 sub s0s0s3 f f i executado se i j C208 Arquitetura de Computadores Prof Yvo Desvio branch Condicional Branch if not equal bne bne reg1 reg2 Label1 Se conteúdo do registrador1 é diferente do conteúdo do registrador2 desvie para o Label1 Exemplo bne t1 t0 volta ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo C208 Arquitetura de Computadores Prof Yvo Exemplos de OPcodes C208 Arquitetura de Computadores Prof Yvo Desvio Incondicional jump j Label Salta jump para o Label1 Exemplo j frente ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo if a 0 a a1 else a a1 108 Desvio Condicional e Incondicional Exemplo Como implementar em Assembly a estrutura a seguir if a 0 goto L1 a a 1 goto L2 L1 a a 1 L2 Rearranjar o código ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo if a 0 a a1 else a a1 Desvio Condicional e Incondicional if a 0 goto L1 a a 1 goto L2 L1 a a 1 L2 Considerando a s0 beq s0 zero L1 se a 0 vai para L1 addi s0 s0 1 faz a a 1 j L2 vai para L2 L1 addi s0s01 a a1 L2 ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo 110 ISA Instruction Set Architecture MIPS Registradores Exemplo Compilando um comando ifthenelse Seja a sequência Solução bne s3s4Else vá para Else se i j add s0s1s2 f g h se i j j Exit vá para Exit Else sub s0s1s2 f g h se i j Exit if i j f g h else f g h C208 Arquitetura de Computadores Prof Yvo 111 Exemplo Loop g g Ai i i j if i h go to Loop Solução Loop add t1s3s3 t1 2 i add t1t1t1 t1 4 i add t1t1s5 t1 recebe endereço de Ai lw t00t1 t0 recebe Ai add s1s1t0 g g Ai add s3s3s4 i i j bne s3s2Loop se i h vá para Loop Construção de Loops C208 Arquitetura de Computadores Prof Yvo 112 Loop usando o while Exemplo Escreve o código abaixo em assembly MIPS Considere que ij e k correspondem a s3s4 e s5 respectivamente e que o endereço base do array em s6 while savei k i i j Solução Loop add t1s3s3 t1 2 i add t1t1t1 t1 4 i add t1t1s6 t1 endereço de savei lw t00t1 t0 recebe savei bne t0s5Exit vá para Exit se savei k add s3s3s4 i i j j Loop Exit C208 Arquitetura de Computadores Prof Yvo Exercício Escrever em código Assembly do MIPS a seguinte estrutura Do a a 1 while a 10 OBS considerar a s3 ISA Instruction Set Architecture MIPS Registradores C208 Arquitetura de Computadores Prof Yvo 114 Exercícios 1 Acrescente comentários ao código MIPS a seguir e descreva em uma sentença o que ele calcula Supondo que a0 e a1 sejam usados para a entrada e ambos obtenham inicialmente os inteiros a e b respectivamente Suponha que v0 seja usado para a saída C208 Arquitetura de Computadores Prof Yvo 2 Traduza os seguintes trechos de código para o assembly do MIPS considere as0 bs1 e cs2 a b 0 do b b 5 whileb 50 b if b 10 b b 1 else b b2 c if ab a a 10 else a a 8 d while a0 b b c a a 1 C208 Arquitetura de Computadores Prof Yvo 3 De acordo com as diretivas abaixo pedese a Os dados foram armazenados a partir de qual endereço b Mostre como ficam os dados na memória 116 C208 Arquitetura de Computadores Prof Yvo 4 Analise o programa abaixo e responda text main addi t0 zero 3 addi t1 zero 1 add t2 t0 t1 jr ra a Mostre os valores dos registradores após a execução de cada instrução b Qual a finalidade do jr ra no programa c Identifique no programa registradores constante instruções labels e diretivas 117 C208 Arquitetura de Computadores Prof Yvo O código do serviço deve estar no registrador v0 118 MIPS Serviços do Sistema C208 Arquitetura de Computadores Prof Yvo Exemplo de uso dos Serviços do Sistema data str asciiz INATEL C208 MIPS text main li v04 la a0str syscall li v01 li a00xF5 syscall jr ra MIPS Serviços do Sistema C208 Arquitetura de Computadores Prof Yvo Exercícios 1 Faça um programa em Assembly do MIPS que leia 2 números inteiros e mostre como resultado qual é o maior número 2 Faça um programa em Assembly do MIPS que leia 4 números ABC e D e execute a seguinte expressão X AB CD Mostre o resultado na tela 3Faça um programa em Assembly do MIPS para calcular o fatorial de um número Mostrar o resultado na tela ver algoritmo a seguir 4Faça um programa em Assembly do MIPS que leia 3 números inteiros e mostre como resultado a média aritmética destes números 120 C208 Arquitetura de Computadores Prof Yvo Algoritmo de Fatorial Exercício 3 ALGORITMO FATORIAL declaração de Variáveis Inteiro FAT NUM Inicio FAT 1 Escreva Digite um numero inteiro e positivo Leia NUM Se NUM 0 então Enquanto NUM1 faça inicio FAT FAT NUM NUM NUM 1 fim Fimse Escreva O fatorial de NUM FAT FIM 121