Faculdade de Ciências Aplicadas e Sociais de Petrolina FACAPE Conjunto de Parte I Prof. Sérgio Adaptado dos slides de Sistemas Processadores do Prof. Frank Torres - UFMG O que aprenderemos hoje? Barramento Banco de Registradores... Instruções básicas Princípios de projeto de MIPS Armazenamento na memória Representação de instruções Organização de Computadores Organização de Computadores 2 MIPS: Microprocessor without Interlocking Pipeline Stages. Arquitetura tipo RISC. Versões de 32 e 64 bit (usaremos: 32 bit). Cerca de milhões de processadores MIPS fabricados por ano atualmente. Usada pela NEC, Nintendo, Cisco, Silicon Graphics, Sony, impressoras HP e Fuji, etc. Componentes básicos: Barramento Unidade de controle Banco de registradores Unidade lógica e aritmética (ALU) Contador de programa (PC) Memória Registrador de instruções (IR) Organização de Computadores 3 Organização de Computadores 4
:: Diagrama simplificado O processador MIPS éum RISC de 32 Bits: Tamanho da palavra: 32 bits Tamanho dos registradores: 32 bits Tamanho das Instruções: 32 bits Tamanho dos endereços de memória: 32 bits Organização de Computadores 5 Organização de Computadores 6 :: Barramento A interconexão dos componentes básicos (exceto unidade de controle) se dápor meio do barramento (bus). Barramento éum conjunto de condutores por meio dos quais os bits são transmitidos. Maior parte dos barramentos do MIPS tem 32 bits de largura. :: Barramento Na maior parte das situações, énecessário enviar informações de mais de uma fonte para um sódestino (exemplo: dos 32 registradores para a ALU). Tal tarefa éimplementada no hardware pelos multiplexadores (MUX). Organização de Computadores 7 Organização de Computadores 8
:: Unidade de controle Implementado no nível de hardware para buscar uma sequênciade sinais de controle na memória (programa) e executá-las. Envia sinais de controle para orientar os MUX sobre qual barramento de entrada deve ser selecionado para saída. As trilhas de controle não estão mostradas no diagrama simplificado (slide 6). :: Banco de registradores A arquitetura MIPS possui um banco de 32 registradores. Cada um deles comportam valores de 32 bits. O nome de todos os registradores começa com o símbolo do cifrão: $ Organização de Computadores 9 Organização de Computadores :: Banco de registradores Adota-se uma convenção que especifica quais deles devem ser utilizados em certas circunstâncias. Os registradores PC (contador de programas) e IR (registrador de instrução) não fazem parte do banco de registradores. Organização de Computadores Organização de Computadores 2
Convenção de uso dos registradores Registrador Número Uso $zero Valor constante igual a zero $v-$v 2-3 Retorno de funções $a-$a3 4-7 Argumentos de funções $t-$t7 8-5 Temporários, não precisam ser salvos $s-$s7 6-23 Salvos por uma função chamada $t8-$t9 24-25 Mais temporários $gp 28 Apontador global $sp 29 Apontador de pilha $fp 3 Apontador de quadro $ra 3 Endereço de retorno Organização de Computadores 3 :: Unidade lógica e aritmética (ALU) Responsável pela execução (em binário) das seguintes operações: Aritméticas Lógicas (AND, OR, NOT, XOR) A operação a ser realizada depende do código de operação buscado na memória principal. Organização de Computadores 4 :: Contador de programa (PC) Éum registrador que éinicializado pelo sistema operacional com o endereço da primeira instrução do programa armazenado na memória. Todas as instruções têm 32 bits de tamanho. Após uma instrução ser buscada na memória e armazenada no IR, o PC éincrementado em quatro bytes, de forma que o CPU teráo endereço da próxima instrução a ser executada. :: Memória Pode ser vista como um grande arranjo de células: onde informações são armazenadas (store). de onde informações são buscadas (load). Tais operações são realizadas sobre uma palavra por vez. A arquitetura MIPS define palavras de 4 bytes de tamanho. A menor unidade de endereçamento éum byte. Organização de Computadores 5 Organização de Computadores 6
:: Registrador de instrução (IR) Éum registrador de 32 bits que possui uma cópia da mais recente instrução buscada na memória. A depender do código contido no IR, a unidade de controle determinaráqual a operação a ser realizada. Conceito de programa armazenado Criado por John Von Neumann em 942 (também: Arquitetura-von-Neumann ). Instruções são codificadas em bits. add $7, $8, $9 Programas são armazenados na memória. Instruções são lidas e escritas da memória assim como os dados que serão transformados (processados). Ciclo de busca e execução da instrução (simplificado):. Instruções são lidas da memória e carregadas no registrador RI. 2. Os bits da instrução guardada no registrador RI são decodificados e controlam as ações subsequentes. 3. A instrução éexecutada e o endereço para a leitura da próxima instrução é calculado. Organização de Computadores 7 Organização de Computadores 8 Conceito de programa armazenado Arquitetura Harvard Instruções e dados em memórias separadas. Acesso de instruções independente do acesso de dados acesso concorrente (ao mesmo tempo). Havard vs. Programa armazenado Instruções Básicas Organização de Computadores 9 Organização de Computadores 2
Linguagem de Montagem (Assembly) Todas as instruções aritméticas e lógicas possuem três operandos. A ordem dos operandos é fixa (destino primeiro). [label:] Op-Code [operando], [operando], [operando] [#comentário] Sintaxe de instruções assembly: Label: opcional, identifica bloco do programa Código de operação: indicado por um mnemônico Operandos: Registradores ou memória Comentários: opcional, tudo que vem depois do # Linguagem de Montagem (Assembly) :: Exemplo Some bcom ce coloque o resultado em a. de linguagem de montagem: add $s, $s, $s2 Equivalente ao comando em linguagem C: a = b + c Organização de Computadores 2 Organização de Computadores 22 Linguagem de Montagem (Assembly) Em assembly, estamos manipulando registradores do MIPS. Em código C (sem compilação), estamos manipulando posições da memória. º Princípio de projeto MIPS Simplicidade favorece regularidade. Mais que três operandospor instrução exigiria um projeto de hardware mais complicado. Código C: A = B + C + D; E = F A; A associação entre posições da memória e registradores é realizada pelo compilador C. Código MIPS: add $t, $s, $s2 #t = s + s2 add $t, $t, $s3 #t = t + s3 sub $s, $s4, $t #s = s4 t Organização de Computadores 23 Organização de Computadores 24
2º Princípio de projeto MIPS Menor significa mais rápido. Uma quantidade maior que 32 registradores exigiria: um ciclo de clockmaior. formato de instruções maior, para comportar mais bits de endereçamento. :: Armazenamento na memória Operações lógicas e aritméticas sóocorrem entre registradores. Portanto, instruções para transferir dados entre a memória e os registradores são necessárias, antes da execução de tais operações. endereça bytes individuais. Assim, endereços de palavras consecutivas diferem em 4 bytes. Organização de Computadores 25 Organização de Computadores 26 :: Armazenamento na memória O espaço de endereçamento de memória do MIPS éde 2 32 bytes (endereço de 32 bits): :: Armazenamento na memória MIPS exige que todas as palavras comecem em endereços que são múltiplos de 4 bytes. Alinhamento:objetos devem estar em um endereço que éum múltiplo do seu tamanho. Organização de Computadores 27 Organização de Computadores 28
:: Armazenamento na memória Hádois sistemas para numeração dos bytes dentro uma palavra. Big endian byte mais àesquerda marca endereço da palavra. Littleendian byte mais àdireita marca endereço da palavra. :: Armazenamento na memória Big endian Byte mais àesquerda marca endereço da palavra. Littleendian Byte mais àdireita marca endereço da palavra. Exemplo: palavra = 65CE94 h, endereço = F4 h ) Big Endian: 2) Little Endian: Organização de Computadores 29 Organização de Computadores 3 :: Armazenamento na memória Big Endian: IBM 36/37, Motorola 68k, MIPS, Sparc, HP PA Little Endian: Intel 8x86, DEC Vax, DEC Alpha(Windows NT) Nomeação baseado em um artigo publicado em 98: citação do problema e relacionando-o a um episódio mencionado no livro As Viagens de Gulliver povo que foi àguerra para decidir qual a melhor maneira de quebrar ovos, se pelo maior (big) lado ou se pelo menor (little) lado. Organização de Computadores 3 :: Armazenamento na memória Big Endian vs. Little Endian mais fácil de determinar o sinal do número. mais fácil de comparar dois números. mais fácil de fazer a divisão. mais fácil de imprimir. adição e multiplicação dos números de multiprecisão é mais fácil. Organização de Computadores 32
Transferência de Dados Lógicas Controle Suporte a procedimentos Banco de Registradores Memória Organização de Computadores 33 Organização de Computadores 34 Copiar dados de para Memória Registrador Registrador Memória load word(lw) store word(sw) load word(lw) Formato: lw $t,8($s3) instrução registrador de destino Registrador base, que armazena o endereço base offset (em bytes) Organização de Computadores 35 Organização de Computadores 36
load word(lw) store word(sw) Organização de Computadores 37 Organização de Computadores 38 Exemplo Suponha que o valor da variável hesteja armazenado em $s2e que o endereço base da matriz A esteja armazenado em $s3. Qual o código assemblypara: A[2] = h + A[8]? Exemplo 2 Suponha que o endereço base da matriz B esteja armazenado em $s4. Qual o código assemblypara trocar os valores do B[] e do B[]? lw $t, 32($s3) # $t A[8] add $t, $s2, $t # $t $s2 + A[8] sw $t, 48($s3) # A[2] h + A[8] lw $t, 4($s4) lw $t, 44($s4) sw $t, 44($s4) sw $t, 4($s4) # $t B[] # $t B[] # B[] B[] # B[] B[] Organização de Computadores 39 Organização de Computadores 4
load upper immediate(lui) Representando instruções no Instruções do programa assemblydevem ser traduzidas em números binários para que a máquina as execute. Dessa forma, cada instrução e cada registrador devem ser mapeados segundo um código e dispostos segundo um dos seguintes formatos: Formato registrador (R) Formato imediato (I) Formato de jump(j) Organização de Computadores 4 Organização de Computadores 42 Representando instruções no Formato registrador (R) Op-code:sempre zeropara o formato R. Rs: registrador do primeiro operando de origem. Rt: registrador do segundo operando de origem. Rd:registrador que recebe o resultado da operação (destino). Shamt:quantidade de deslocamento (shiftamount). Será abordado mais tarde. Functioncode:especificaqual a operação a ser Op-Code executada. Rs sssss Rt ttttt Rd ddddd Shamt Function Code ffffff Representando instruções no Formato imediato (I) Op-code: especifica qual operação a ser executada. Rs: registrador do operando de origem. Rt:registrador que recebe o resultado da operação (destino). Immediate:endereço de memória ou constante numérica. Op-Code ffffff Rs sssss Rt ttttt Immediate iiiiiiiiiiiiiiii Organização de Computadores 43 Organização de Computadores 44
Representando instruções no Representando instruções no Formato jump(j) Op-code: especifica qual operação a ser executada. Target:local da memória a saltar, onde estão as próximas instruções a serem executadas. Exemplos add $t, $s, $s2 op rs rt 6 bits 5 bits 5 bits add $s $s2 rd 5 bits $t shamt 5 bits -- funct 6 bits add Op-Code f Target tttttttttttttttttttttttttt (decimal) add 7 $s 8 $s2 8 $t -- (2) h add (binário) Organização de Computadores 45 Organização de Computadores 46 Representando instruções no Representando instruções no Exemplos Exemplos lw $t, 32($s2) op rs rt 6 bits 5 bits 5 bits lw $s2 $t immediate 6 bits offset sw $t, 32($s2) op rs rt 6 bits 5 bits 5 bits sw $s2 $t immediate 6 bits offset (decimal) (23) h 8 8 32 lw $s2 $t offset (decimal) (2B) h sw 8 $s2 8 $t 32 offset (binário) (binário) Organização de Computadores 47 Organização de Computadores 48
Representando instruções no Constantes :: Instruções imediatas Exemplos (decimal) (binário) lui $t, 23 op 6 bits lui (F) h lui rs 5 bits -- -- rt 5 bits $t 8 $t immediate 6 bits immediate 23 offset Constantes são utilizadas com frequência em operações. Nesse caso, incluir constantes em uma instrução agiliza as operações, em vez de carregar as constantes a partir da memória. Tais instruções são conhecidas como instruções imediatas. Organização de Computadores 49 Organização de Computadores 5 Constantes :: Instruções imediatas Exemplo: Adição imediata (addi) (decimal) (binário) addi $s3, $s2, 4 # $s3 $s2 + 4 op 8 addi addi rs 8 $s2 $s2 rt 9 $s3 $s3 immediate Organização de Computadores 5 4 constante constante Constantes grandes Como carregar constantes de 32 bits em um registrador? Duas instruções são necessárias: lui(loadupperimmediate) para carregar bits mais significativos. ori(orimmediate) para carregar bits menos significativos. Organização de Computadores 52
Constantes grandes Exemplo: deseja-se carregar o registrador $t com o endereço de memória x4b3c. lui $t, x4b ori $t, $t, x3c 4 4 b b 3 c Questões Converta o código em C seguinte para o código assembly usando o conjunto de instruções MIPS. // Suponha que os valores das variáveis x, ye z estejam armazenados em $s2, $s3 e $s4e que o endereço base da matriz B esteja armazenada em $s6. main() { int x, y, z; int B[2]; B[] = x; y = B[2] + B[3]; } sw$s2, ($s6) # B[] = x lw$t, 8($s6) # t = B[2] lw$t, 2($s6) # t = B[3] add$s3,$t,$t # y = t+t Organização de Computadores 53 Organização de Computadores 54 Questões Converta o código assemblypara o código de máquina usando estas tabelas. Nome Número $zero $v $v 2-3 $a $a3 4-7 $t $t7 8-5 $s $s7 6-23 $t8 $t9 24-25 Nome Adição Carrega word Armazena word Sintaxe add$s, $2, $3 lw $t,c($s) sw $t,c($s) Função $ = $2 + $3 (signed) $t = Memória[$s + C] Memória[$s + C] = $t Formato/Opcode/ funct R I I 23 hex 2B hex 2 hex - - sw $s2, ($s6) lw $t, 8($s6) lw $t, 2($s6) add $s2,$t,$t Organização de Computadores 55