Baixe o app para aproveitar ainda mais
Prévia do material em texto
2011/1 MATA48 - Arquitetura de Computadores 1 Instituto de Matemática Departamento de Ciência da Computação Arquitetura de Computadores Conjunto de instruções Prof. Marcos E Barreto 2011/1 MATA48 - Arquitetura de Computadores 2 Tópicos ● Características das instruções de máquina ● Tipos de operandos (dados) ● Tipos de operações ● Estudo de casos: x86, ARM ● Referências: ● Stallings. Arquitetura e organização de computadores. 8 ed. Cap. 8. ● Hennessy, Patterson. Arquitetura de computadores – uma abordagem quantitativa. 4 ed. Apêndice B. 2011/1 MATA48 - Arquitetura de Computadores 3 Contextualização ● O conjunto de instruções da máquina representa as capacidades funcionais do processador. ● Implementar um processador significa, em termos gerais, implementar o conjunto de instruções projetado para ele. ● O contexto envolve a estrutura de registradores e da memória, os tipos de dados suportados diretamente pela máquina e como são representados, o funcionamento da ULA, entre outros aspectos. 2011/1 MATA48 - Arquitetura de Computadores 4 Conjunto de instruções ● A operação do computador é determinada pelo conjunto de instruções que ele executa. ● Elementos de uma instrução de máquina: ● Código da operação (opcode) ● Referência aos operandos fonte e destino ● Referência à próxima instrução 2011/1 MATA48 - Arquitetura de Computadores 5 Conjunto de instruções (2) ● Localização dos operandos fonte e destino ● Memória principal ou virtual ● Registradores do processador – Registrador implícito ou referenciado por um nome/número ● Imediato – O valor do operando está contido na instrução ● Dispositivo de E/S – Referência ao módulo e ao dispositivo de E/S ou, no caso de E/S mapeada em memória, o endereço de memória associado ao dispositivo. 2011/1 MATA48 - Arquitetura de Computadores 6 Representação de instruções ● Cada instrução é representada por uma sequência de bits, organizados em campos. ● Mais de um formato pode ser utilizado (com diferente número de operandos). ● Adoção de uma representação simbólica – mnemônicos para representar os opcodes. – Exemplos: ADD, SUB, DIV, LOAD, STOR, MOVE – Operandos também pode ser referenciados simbolicamente – Exemplo: ADD R, Y => R: registrador Y: endereço memória 2011/1 MATA48 - Arquitetura de Computadores 7 Tipos de instrução ● Linguagem de alto nível: X = X + Y ● Instruções de máquina: 1. carregar um registrador com o valor de X 2. somar o valor de Y a esse registrador 3. armazenar o resultado (valor do registrador) em X ● Tipos de instruções ● Processamento de dados (aritméticas e lógicas) ● Armazenamento de dados (memória ↔ registradodores) ● Movimentação de dados (instruções de E/S) ● Controle (instruções de teste e desvio) 2011/1 MATA48 - Arquitetura de Computadores 8 Quantidade de endereços ● Qual o número máximo de endereços necessários em uma instrução? ● Instruções aritméticas e lógicas contêm um ou dois operandos fonte ● O resultado de uma operação deve ser armazenado – necessidade de um terceiro operando (de destino) ● O endereço da próxima instrução deve ser conhecido pelo processador – o que justificaria um quarto campo de endereço – na prática, uso do contador de programa (PC) 2011/1 MATA48 - Arquitetura de Computadores 9 Quantidade de endereços (2) Y= A−BCD∗E ACUMULADOR 2011/1 MATA48 - Arquitetura de Computadores 10 Quantidade de endereços (3) ● Interpretação das instruções 2011/1 MATA48 - Arquitetura de Computadores 11 Projeto do conjunto de instruções ● Corresponde à definição das funções realizadas pelo processador. ● Deve levar em consideração os requisitos dos programadores, para tornar a programação do sistema eficiente e mais fácil. ● Questões básicas ● Repertório de operações (quantas e quais operações oferecer) ● Tipos de dados ● Formato da instrução (tamanho em bits, quantidade de endereços etc) ● Registradores (número de registradores que podem ser acessados) ● Endereçamento de operandos 2011/1 MATA48 - Arquitetura de Computadores 12 Tipos de dados ● Categorias gerais de dados ● Endereços – Memória principal ou virtual ● Números – Representações em ponto fixo, ponto flutuante e decimal agrupado (BCD) ● Caracteres – Representações em IRA/ASCII ou EBCDIC ● Dados lógicos – Quando os dados são vistos como n itens de dados de 1 bit ● Listas ou strings de caracteres 2011/1 MATA48 - Arquitetura de Computadores 13 Tipos de operações ● Classificação geral dos tipos de operações ● Transferência de dados ● Aritmética ● Lógica ● Conversão ● E/S ● Controle do sistema ● Trasnferência de controle 2011/1 MATA48 - Arquitetura de Computadores 14 Tipos de operações ● Transferência de dados ● Instrução deve definir local dos operandos origem e destino, extensão dos dados a serem transmitidos e o modo de endereçamento dos operandos. 2011/1 MATA48 - Arquitetura de Computadores 15 Tipos de operações ● Transferência de dados ● Exemplo: IBM EAS/390 – Último mainframe da IBM com endereços de 31 bits e dados de 32 bits lançado em 1990. – Sucedido pela linha zSeries (ESAME) a partir de 2000 (arquitetura de 64 bits). 2011/1 MATA48 - Arquitetura de Computadores 16 Tipos de operações ● Aritméticas ● Operações básicas: adição, subtração, multiplicação e divisão. ● Outras operações: módulo/valor absoluto, negação, incremento e decremento. 2011/1 MATA48 - Arquitetura de Computadores 17 Tipos de operações ● Lógicas ● Operações para manipulação de bits individuais de uma palavra. ● Baseadas na álgebra Booleana. ● NOT, AND, OR, XOR, EQUAL (=) etc. 2011/1 MATA48 - Arquitetura de Computadores 18 Tipos de operações ● Lógicas ● Deslocamento lógico – Insere 0 em uma extremidade. Bit da outra extremidade é perdido. – Ex. transmissão de caracteres para dispositivo de E/S. ● Deslocamento aritmético – A esquerda → X 2 – A direita → / 2 ● Rotação – Trazer todos os bits para uma posição para testá-los. 2011/1 MATA48 - Arquitetura de Computadores 19 Tipos de operações ● Lógicas ● Deslocamento lógico ● Deslocamento aritmético ● Rotação 2011/1 MATA48 - Arquitetura de Computadores 20 Tipos de operações ● Conversão ● Operam sobre o formato dos dados. ● Usadas para a conversão de formatos => decimal para binário ou EBCDIC para IRA/ASCII. 2011/1 MATA48 - Arquitetura de Computadores 21 Tipos de operações ● Entrada e saída ● Diversas técnicas de E/S: programada mapeada em memória, programada independente, acesso direto a memória (DMA) e uso de processadores de E/S. ● As instruções de E/S têm ações específicas controladas por parâmetros, códigos ou palavras de comando. 2011/1 MATA48 - Arquitetura de Computadores 22 Tipos de operações ● Controle do sistema ● Instruções reservadas para uso do sistema operacional enquanto o processador está em determinados estados de operação ou está executando em área protegida de memória. ● Exemplos: – Leitura ou alteração de registradores de controle. – Leitura ou alteração de chaves de proteção de armazenamento. – Acesso para processamento de blocos de controle em ambientes multiprogramados. 2011/1 MATA48 - Arquitetura de Computadores 23 Tipos de operações ● Transferência de controle ● Instruções para mudar a sequência de execução das instruções de um programa. ● Necessárias para o suporte de laços, comandos de decisão e subprogramas (divisão do programa em tarefas menores). 2011/1 MATA48 - Arquitetura de Computadores 24 Tipos de operações ● Transferência de controle ● Desvio condicional – Desvio é tomado (atualizar o contador de programa com o endereço da instrução especificadano operando) somente se uma condição for satisfeita. – A condição a ser testada pode ser gerada através de códigos de condição (BRP, BRN, BRZ, BRO), definidos como resultado de algumas operações ou estar incorporada no formato da instrução (BRE R1, R2, X). ● Desvio incondicional – Desvio sempre é tomado. 2011/1 MATA48 - Arquitetura de Computadores 25 Tipos de operações ● Transferência de controle ● Instruções de salto (skip) – A instrução inclui um endereço implícito. – Normalmente, o salto implica que uma instrução seja pulada; dessa forma, o endereço implícito é igual ao endereço da próxima instrução + o tamanho de uma instrução. – Ex: 301 .... 309 ISZ R1 /* increment and skip if zero 310 BR 301 /* desvia de volta ao início do laço (301) 311 laço 2011/1 MATA48 - Arquitetura de Computadores 26 Tipos de operações ● Transferência de controle ● Chamada de procedimento – Instruções para chamada de um subprograma, a partir de um local, e para o retorno a esse local após execução do subprograma. 1 2 34 5 6 2011/1 MATA48 - Arquitetura de Computadores 27 Tipos de operações ● Transf. de controle: chamada de procedimento ● Onde armazenar o endereço de retorno? – Registrador específico ● CALL X => RN PC + ← ; PC X;Δ ← – Início do procedimento chamado ● CALL X => X PC + ← ; PC X + 1;Δ ← – Topo da pilha RN: reg. específico Δ: tamanho da instrução PC: contador de programa X: endereço do procedimento 2011/1 MATA48 - Arquitetura de Computadores 28 Tipos de operações ● Transf. de controle: chamada de procedimento ● Passagem de parâmetros para o procedimento chamado – Registradores – Memória – Pilha Uso da pilha possibilita o suporte a procedimentos reentrantes 2011/1 MATA48 - Arquitetura de Computadores 29 Estudo de caso: x86 ● Tipos de dados ● O x86 pode lidar com tipos de dados de 8 (byte), 16 (palavra), 32 (doubleword), 64 (quadword) e 128 (double quadword). ● Palavras não precisam ser alinhadas em endereços de número par; porém, as transferências de dados em barramentos de 32 bits ocorrem em unidades de palavras duplas (doubleword) => processador converte a requisição para valores desalinhados em uma sequência de solicitações de transferência de barramento. ● Usa notação little endian => byte menos significativo é armazenado na memória em um endereço mais baixo e o byte mais significativo num endereço mais alto. – Ex.: Byte3 Byte2 Byte1 Byte0 será armazenado como – Endereço base+0 Byte0 – Endereço base+1 Byte1 – Endereço base+2 Byte2 – Endereço base+3 Byte3 2011/1 MATA48 - Arquitetura de Computadores 30 Ver próximo slide 2011/1 MATA48 - Arquitetura de Computadores 31 ● Tipos de dados numéricos ● Inteiros: complemento de dois com 16, 32 ou 64 bits ● Ponto flutuante: padrão IEEE 754 Estudo de caso: x86 2011/1 MATA48 - Arquitetura de Computadores 32 Estudo de caso: x86 ● Tipos de dados SIMD ● Single Instruction, Multiple Data ● Introduzidos na arquitetura x86 a partir de extensões para otimização do desempenho de aplicações multimídia (MMX e SSE). ● Ideia: múltiplos operandos são agrupados num único item de memória e são operados em paralelo. ● Tipos de dados – Byte agrupado e inteiro de byte agrupado – Palavra agrupada e inteiro de palavra agrupado – Doubleword agrupado e inteiro de doubleword agrupado – Quadword agrupado e inteiro de quadword agrupado – Ponto flutuante de precisão simples/dupla agrupado 2011/1 MATA48 - Arquitetura de Computadores 33 Estudo de caso: x86 ● Tipos de operação ● Complexa gama de tipos de operação. ● Suporte à programação de compiladores. ● Diversos montadores para diferentes sistemas operacionais – (MASM, NASM, gas, ald). ● Conjunto de registradores – AX multiplicar/dividir (acumulador) – BX indicador para MOVE (registrador de base) – CX contador – DX endereço de porta para IN e OUT (registrador de dados) – IP (ponteiro de instrução) – EFLAGS – registradores de segmento (CS, DS, ES, FS, GS, SS) – registradores de extensão SIMD (MMX, SSE, etc). 2011/1 MATA48 - Arquitetura de Computadores 34 2011/1 MATA48 - Arquitetura de Computadores 35 2011/1 MATA48 - Arquitetura de Computadores 36 2011/1 MATA48 - Arquitetura de Computadores 37 Estudo de caso: x86 ● Flags de status e códigos de condição ● Flags de status: bits em registradores especiais que são definidos para algumas operações (aritméticas, comparação e transferêncai de dados) e usados em instruções de desvio. ● Códigos de condição: combinações de valores de flags. 2011/1 MATA48 - Arquitetura de Computadores 38 Códigos de condição 2011/1 MATA48 - Arquitetura de Computadores 39 Estudo de caso: x86 ● Instruções SIMD ● Instruções otimizadas para processamento multimídia, introduzidas em 1996/1997 na família Pentium / Pentium Pro. ● 57 novas instruções que manipulam dados no padrão SIMD. ● Ganhos médios de 2 a 8 vezes se comparados aos algoritmos sequenciais. ● Novos tipos de dados: – Pacote de bytes – Pacote de palavras – Pacote de palavras duplas ● Introdução da arquitetura x86 de 64 bits, com operandos de quatro palavras duplos (double quadwords – 128 bits) e operações de ponto flutuante. 2011/1 MATA48 - Arquitetura de Computadores 40 2011/1 MATA48 - Arquitetura de Computadores 41 2011/1 MATA48 - Arquitetura de Computadores 42 Estudo de caso: ARM Tipos de dados ● 8 (byte), 16 (meia-palavra) e 32 (palavra) bits de extensão. ● Acessos devem ser alinhados de acordo com o tipo de palavra. Para acessos desalinhandos, são usadas técnicas de truncagem e rotação de dados. ● Sem hardware para ponto flutuante => operações devem ser emuladas em SW ou deve-se usar um coprocessador. ● Posicionamento de bytes (little-endian X big-endian) 2011/1 MATA48 - Arquitetura de Computadores 43 Estudo de caso: ARM Tipos de operações ● Instruções LOAD/STORE – Somente instruções LOAD/STORE acessam locais de memória => arquitetura RISC. – Duas instruções gerais que carregam ou armazenam o valor de um único registrador, ou de um par de registradores, de/ou para memória. ● Instrução de desvio – Desvio condicional para frente ou para trás em até 32 MB (instrução BL – branch with link) ● Instruções de processamento de dados – Lógicas (AND, OR, XOR), adição, subtração, testes e comparação. ● Instruções de multiplicação – Operandos de palavra ou meia-palavra que podem gerar resultados normais ou grandes. 2011/1 MATA48 - Arquitetura de Computadores 44 Estudo de caso: ARM Tipos de operações ● Instruções paralelas de adição e subtração – Partes dos dois operandos são processadas em paralelo. – Ex: ADD16 soma as meias-palavras do topo dos dois registradores para formar a meia-palavra superior do resultado e soma as meias-palavras inferiores dos mesmos dois registradores para formar a meia-palavra inferior do resultado. – Processamento de imagens (semelhantes ao MMX do x86). ● Instruções de extensão – Instruções para desagrupar dados, estendendo com zeros, de bytes para meia-palavra ou palavras, de meia-palavra para palavra. ● Instruções de acesso ao registrador de status – Leitura e escrita no registrador de status. 2011/1 MATA48 - Arquitetura de Computadores 45 Estudo de caso: ARM Códigos de condição ● Quatro flags de condição: N, Z, C e V (negativo, zero, carry e overflow) gravados no registrador de status. ● Todas as instruções, não apenas as de desvio, incluem um campo de código de condição, o que significa que todas as instruções podem ser executadas condicionalmente. ● Todas as instruções de processamento (aritméticas, lógicas) incluem um bit que indica se a instrução atualiza os flags de condição.2011/1 MATA48 - Arquitetura de Computadores 46 ARM: códigos de condição Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46
Compartilhar