ARQUITETURA DE COMPUTADORES

Tamanho: px
Começar a partir da página:

Download "ARQUITETURA DE COMPUTADORES"

Transcrição

1 ARQUITETURA DE COMPUTADORES Conjuntos de instruções Prof Daves Martins Msc Computação de Alto Desempenho

2 William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 10 Conjuntos de instruções: Características e funções slide 2

3 O que é um conjunto de instruções? A coleção completa de instruções que são entendidas por uma CPU. Código de máquina. Binário. Normalmente, representado por códigos em assembly. slide 3

4 Elementos de uma instrução Código de operação (Op code): Faça isto. Referência a operando fonte: Nisto. Referência a operando de destino: Coloque a resposta aqui. Referência à próxima instrução: Quando tiver feito isso, faça isto... slide 4

5 Diagrama de estado do ciclo de instrução slide 5

6 Representação da instrução Em código de máquina, cada instrução tem um padrão de bits exclusivo. Para consumo humano (bem, para programadores), uma representação simbólica é utilizada. P.e., ADD, SUB, LOAD. Operandos também podem ser representados desta maneira: ADD A,B. slide 6

7 Formato de instrução simples slide 7

8 Tipos de instrução Processamento de dados. Armazenamento de dados (memória principal). Movimentação de dados (E/S). Controle de fluxo do programa. slide 8

9 Número de endereços (a) 3 endereços: Operando 1, Operando 2, Resultado. a = b + c. Pode ser uma instrução for-next (normalmente implícita). Não é comum. Precisa de palavras muito longas para manter tudo. slide 9

10 Número de endereços (b) 2 endereços: Um endereço servindo como operando e resultado. a = a + b. Reduz tamanho da instrução. Requer algum trabalho extra. Armazenamento temporário para manter alguns resultados. slide 10

11 Número de endereços (c) 1 endereço: Segundo endereço implícito. Normalmente, um registrador (acumulador). Comum nas primeiras máquinas. slide 11

12 Número de endereços (d) 0 (zero) endereços: Todos os endereços implícitos. Usa uma pilha. p.e. push a. push b. add. pop c. c = a + b. slide 12

13 Número de endereços slide 13

14 Número de endereços slide 14

15 Quantos endereços Mais endereços: Instruções mais complexas (poderosas?). Mais registradores. Operações entre registradores são mais rápidas. Menos instruções por programa. Menos endereços: Instruções menos complexas (poderosas?). Mais instruções por programa. Busca/execução de instruções mais rápida. slide 15

16 Decisões de projeto Repertório de operações: Quantas operações? O que elas podem fazer? Qual a complexidade delas? Tipos de dados. Formatos de instrução: Tamanho do campo de código de operação. Número de endereços. slide 16

17 Registradores: Número de registradores da CPU disponíveis. Quais operações podem ser realizadas sobre quais registradores? RISC v CISC. slide 17

18 Tipos de operando Endereços. Números: Inteiro/ponto flutuante. Caracteres: ASCII etc. Dados lógicos: Bits ou flags slide 18

19 Tipos de dados do x86 Byte de 8 bits. Word de 16 bits. Palavras duplas de 32 bits. doubleworld Quatro palavras de 64 bits. quadworld Quatro palavras duplas de 128 bits. double quadworld Endereçamento por unidade de 8 bits. Palavras não precisam alinhar em endereço com número par. Dados acessados pelo barramento de 32 bits em unidades de palavras duplas lidas em endereços divisíveis por 4. Little endian. Bytes menos significativos é armazenado no endereço mais baixo slide 19

20 Tipos de dados SMID Tipos inteiros: Interpretados como campo de bit ou inteiro. Byte agrupado e inteiro de byte agrupado: Bytes agrupados em quadword de 64 bits ou double quadword de 128 bits. Palavra agrupada e inteiro de palavra agrupada: Palavras de 16 bits agrupadas em quadword de 64 bits ou double quadword de 128 bits. Doubleword agrupado e inteiro de doubleword agrupado. Doubleword de 32 bits agrupados em quadword de 64 bits ou double quadword de 128 bits. Quadword agrupado e inteiro de quadword agrupado: Duas quadwords de 64 bits agrupadas em double quadword de 128 bits. Ponto flutuante de precisão simples agrupado e ponto flutuante de precisão dupla agrupada: Quatro valores de ponto flutuante de 32 bits ou dois valores de ponto flutuante de 64 bits em uma double quadword de 128 bits. slide 20

21 Formatos de dados numéricos do x86 slide 21

22 Tipos de operação Transferência de dados. Aritmética. Lógica. Conversão. E/S. Controle do sistema. Transferência de controle. slide 22

23 Transferência de dados Especificam: Origem. Destino. Quantidade de dados. Podem ser instruções diferentes para diferentes movimentações. P.e., IBM 370. Ou uma instrução e diferentes endereços. P.e., VAX. slide 23

24 Aritmética Adição, Subtração, Multiplicação, Divisão. Inteiro com sinal. Ponto flutuante? Pode incluir: Incremento (a++). Decremento (a--). Negação (-a). slide 24

25 Operações de deslocamento e rotação slide 25

26 Lógica Operações bit a bit. AND, OR, NOT. slide 26

27 Conversão P.e., binário para decimal. slide 27

28 Entrada/saída Podem ser instruções específicas. Pode ser feita usando instruções de movimentação de dados (mapeadas na memória). Pode ser feita por um controlador separado (DMA). slide 28

29 Controle do sistema Instruções privilegiadas. CPU precisa estar em estado específico: Anel 0 no Modo kernel. Para uso dos sistemas operacionais. slide 29

30 Transferência de controle Desvio: P.e., desvio para x se resultado for zero. Salto: P.e., incrementa e salta se for zero. ISZ Registrador 1. Desvia xxxx. ADD A. Chamada de sub-rotina: C.f. chamada de interrupção. slide 30

31 Instrução de desvio slide 31

32 Chamadas de procedimento aninhadas slide 32

33 Uso da pilha slide 33

34 Crescimento do frame de pilha usando procedimentos de exemplo P e Q slide 34

35 RISC e CISC slide 35 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 35/143

36 CISC Complex Instruction Set Computer Arquiteturas projetadas para facilitar a programação (assembly), e com acesso eficiente a memória Memória cara e lenta representava na época situação ideal para CISC Exemplos de arquiteturas da época incluem o PDP-11 e o DEC system 10 e 20 Por razões semelhantes, arquiteturas de microprocessadores largamente utilizados no passado tais como o Intel 80x86 e o Motorola 68K também seguiram a filosofia CISC Avanços na tecnologia de software e hardware levaram a uma reavaliação na filosofia CISC, resultando em novas arquiteturas híbridas implementando princípios RISC CISC foi desenvolvido para facilitar o desenvolvimento de compiladores. Por exemplo, o compilador não precisa gerar longas seqüências de instruções para calcular uma raiz quadrada, uma vez que existe no hardware das arquiteturas CISC instruções com essa funcionalidade. slide 36 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 36/143

37 CISC Complex Instruction Set Computer Restrições de projeto/tecnológicas que direcionaram o desenvolvimento da arquitetura CISC (programas em assembly e memória lenta, escassa e cara) resultaram em algumas características marcantes. Formato de instruções com dois operandos (fonte, destino). Instruções do tipo Registrador/Registrador, Registrador/Memória e Memória/Registrador. Diversos modos de endereçamento a memória, incluindo modos especiais para acesso a arrays indexados. Instruções de tamanho variável, de acordo com o modo de endereçamento. Instruções que necessitam diversos ciclos de clock. O Pentium é um exemplo de arquitetura CISC da atualidade. slide 37 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 37/143

38 CISC Complex Instruction Set Computer Arquiteturas CISC compartilham diversas características. Lógica de decodificação de instruções complexa devido a necessidade de suporte a instruções com vários modos de endereçamento. Conjunto reduzido de registradores de uso geral, devido a existência de instruções que acessam diretamente a memória. Área reduzida no chip para lógica de decodificação de instruções, execução e armazenamento de microcódigo. Diversos registradores de uso especial ponteiros para pilha, manipulação de interrupções, strings, entre outros. Isso facilita o projeto do hardware, porém o conjunto de instruções se torna mais complexo. Registrador de condição para armazenar o resultado da última operação (informando se foi igual a zero, se menor ou igual a,...). slide 38 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 38/143

39 CISC Complex Instruction Set Computer Desvantagens das arquiteturas CISC Aumento na complexidade do conjunto de instruções e hardware de novas gerações de processadores, que incluem as gerações anteriores na forma de um subconjunto por questões de compatibilidade binária. Devido aos requisitos de memória, arquiteturas CISC tendem a armazenar o máximo possível de instruções, de tamanhos diferentes, evitando qualquer desperdício. Dessa forma, instruções diferentes irão necessitar de número de ciclos de clocks diferentes para execução, reduzindo a velocidade de processamento. Instruções especializadas não são executadas com frequência suficiente para justificar sua existência. Apenas 20% do total de instruções são utilizadas em um programa. A atualização dos flags de condição realizada por diversas instruções representa custo de processamento, e o programador precisa lembrar de verificar esses flags antes que a próxima instrução seja os altere. slide 39 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 39/143

40 RISC Reduced Instruction Set Computer Processadores RISC possuem um número reduzido de instruções, e altamente otimizadas Primeiros projetos RISC foram desenvolvidos pela IBM (IBM 801), Stanford (MIPS) e Berkeley (RISC 1 e 2) no final dos anos 70 e início dos anos 80. Uma instrução por ciclo: processadores RISC possuem CPI = 1, devido a otimização das instruções na CPU e também pelo uso de pipeline. Pipeline: técnica que possibilita a execução em paralelo de parte (ou estágios) das instruções. Aumento na quantidade de registradores: utilizados, por exemplo, para evitar acessos seguidos a memória. slide 40 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 40/143

41 RISC slide 41 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 41/143

42 RISC Reduced Instruction Set Computer Processadores CISC: Número considerável de instruções Instruções complexas e eficientes Diversos modos de endereçamento para operações na memória Poucos registradores Processadores RISC possuem características opostas: Quantidade reduzida de instruções Instruções simples, menos complexas Poucas opções de endereçamento a memória, basicamente por meio de instruções LOAD e STORE Quantidade considerável de registradores simétricos, organizados em uma tabela de registradores slide 42 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 42/143

43 RISC Reduced Instruction Set Computer Desvantagens do RISC: Comunidade RISC defende que a arquitetura é rápida e econômica, sendo a escolha ideal para os computadores do futuro Porém, ao simplificar o hardware, arquiteturas RISC transferem uma grande responsabilidade para o software Com os avanços tecnológicos, arquiteturas não RISC acabam se tornado também rápidas e econômicas, vale a pena o esforço a nível de software imposto pelas arquiteturas RISC? slide 43 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 43/143

44 CISC e RISC Implementações CISC e RISC vem se tornando cada vez mais similares Arquiteturas RISC da atualidade possuem um número de instruções equivalente as arquiteturas CISC de gerações anteriores Com o aumento da velocidade da tecnologia atual, arquiteturas CISC passaram a executar mais de uma instrução por ciclo, utilizando pipeline Com o aumento da densidade de transistores em um chip, arquiteturas RISC passaram a incorporar instruções mais complexas, semelhantes as CISC Com esses avanços tecnológicos, CISC e RISC passaram a possuir diversas similaridades, e a distinção entre as mesmas deixa de ser tão relevante Porém, apesar do aumento no conjunto de instruções, RISC continua utilizando instruções de um ciclo, com um grande número de registradores. Além disso, continua utilizando apenas instruções LOAD/STORE para acesso a memória. slide 44 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 44/143

45 CISC e RISC CISC Ênfase no hardware Instruções complexas multi-ciclo Memória para memória: "LOAD" e "STORE" incorporados nas instruções Binários (executáveis) reduzidos, alta taxa de ciclos por segundo Transistores usados para armazenar instruções complexas RISC Ênfase no software Instruções simples de um ciclo (pipeline) Registrador para registrador: "LOAD" e "STORE" são instruções independentes Binários (executáveis) longos, baixa taxa de ciclos por segundo Transistores utilizados na implementação de registradores slide 45 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 45/143

46 CISC e RISC CISC mov ax, 10 mov bx, 5 mul bx, ax CISC: Inicio: RISC mov ax, 0 mov bx, 10 mov cx, 5 add ax, bx loop Inicio (2 movs x 1 ciclo) + (1 mul x 30 ciclos) = 32 ciclos RISC: (3 movs x 1 ciclo) + (5 adds x 1 ciclo) + (5 loops x 1 ciclo) = 13 ciclos slide 46 EEL Microprocessadores Pearson Prentice Hall. Todos os direitos reservados. 46/143