Você está na página 1de 21

Arquitetura e Organizao de Computadores

Captulo 10 Conjuntos de instrues: Caractersticas e funes

slide 1

2010 Pearson Prentice Hall. Todos os direitos reservados.

O que um conjunto de instrues?

A coleo completa de instrues que so entendidas por uma CPU. Cdigo de mquina. Binrio. Normalmente, representado por cdigos em assembly.

Elementos de uma instruo


Cdigo de operao (Opcode): Faa isto. Referncia a operando fonte: Nisto. Referncia a operando de destino: Coloque C l a resposta t aqui. i Referncia prxima instruo: Quando tiver feito isso, faa isto...

Para aonde foram todos os operandos?

Muito tempo se passando. (Se voc no entende, ento muito novo!) Memria principal (ou memria virtual ou cache). Registrador da CPU. Dispositivo de E/S.

Diagrama de estado do ciclo de instruo

Representao da instruo

Em cdigo de mquina, cada instruo tem um padro de bits exclusivo. Para consumo humano (bem, para programadores), uma representao simblica utilizada. P.e., ADD, SUB, LOAD. Operandos tambm podem ser representados desta maneira: ADD A,B.

Formato de instruo simples

Tipos de instruo

Processamento de dados. Armazenamento de dados (memria principal). Movimentao de dados (E/S). Controle de fluxo do programa.

Nmero de endereos (a)


Instrues de 3 endereos: Operando 1, Operando 2, Resultado. a = b + c. Pode ser uma instruo for-next (normalmente implcita). No No comum. comum Precisa de palavras muito longas para manter tudo.

Nmero de endereos (b)


Instrues de 2 endereos: Um endereo servindo como operando e resultado. a = a + b. Reduz tamanho da instruo. Requer algum trabalho extra. Armazenamento temporrio para manter alguns resultados.

Nmero de endereos (c)


Instrues de 1 endereo: Segundo endereo implcito. Normalmente, um registrador (acumulador). Comum nas primeiras mquinas.

Nmero de endereos (d)


0 (zero) endereos: Todos os endereos implcitos. Usa uma pilha. p.e. push a. push b. add. pop c. c = a + b.

Quantos endereos
Mais endereos: Instrues mais complexas (poderosas?). Mais registradores. Operaes entre registradores so mais rpidas. Menos instrues por programa. Menos endereos: Instrues menos complexas (poderosas?). Mais instrues por programa. Busca/execuo de instrues mais rpida.

Decises de projeto do Conjunto de Instrues


Repertrio de operaes: Quantas operaes? O que elas podem fazer? Qual a complexidade delas? Tipos de dados. Formatos de instruo: Tamanho do campo de cdigo de operao. Nmero de endereos.

Registradores: g Nmero de registradores da CPU disponveis. Quais operaes podem ser realizadas sobre quais registradores? Modos de endereamento (mais adiante). RISC v CISC.

Tipos de operando
Endereos. Nmeros: Inteiro/ponto flutuante. Caracteres: ASCII etc. Dados lgicos: Bits ou flags

Tipos de dados do x86


Byte de 8 bits. Word de 16 bits. Palavras duplas de 32 bits (double word). Quatro palavras de 64 bits (quad word). Quatro palavras duplas de 128 bits. Endereamento por unidade de 8 bits. Palavras no precisam alinhar em endereo com nmero par. Dados acessados pelo barramento de 32 bits em unidades de palavras duplas lidas em endereos divisveis por 4. Little endian (armazena o byte + significativo no endereo numrico + alto).

Tipos de dados SIMD (Single Instruction Multiple Data)


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 preciso simples agrupado e ponto flutuante de preciso 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.

Formatos de dados numricos do x86

Tipos de dados do ARM


8 (byte), 16 (meia-palavra), 32 (palavra) bits. Acessos de meia-palavra e palavra devem ser alinhados por palavra. Alternativas de acesso no alinhado. Default: Tratado como truncado. Bits[1:0] tratado como zero para word. Bit[0] tratado como zero para meia-palavra. Carrega instrues de nica palavra, gira para direita dados alinhados por palavra transferidos por endereo no alinhado por palavra com um, dois ou trs bytes. Verificao de alinhamento. Sinal Si l d de abortar b dados d d indica i di falta f l d de alinhamento li h para tentar acesso desalinhado. Acesso desalinhado. Processador usa um ou mais acessos memria para gerar transferncia de bytes adjacentes de forma transparente ao programador.

Interpretao de inteiro desalinhado aceita para todos os tipos. Interpretao de inteiro com sinal de complemento a dois aceita para todos os tipos. Maioria das implementaes no oferece hardware de ponto flutuante. Economiza energia e superfcie. Aritmtica de ponto flutuante implementada no software. Coprocessador de ponto flutuante. Tipos Ti d de d dados d d de ponto flutuante fl IEEE 754 de d preciso simples e dupla.

Suporte a endian no ARM


Bit E no registrador de controle do sistema. Sob controle do programa.

Tipos de operao no Conjunto de Instrues


Transferncia de dados. Aritmtica. Lgica. Converso. E/S. Controle do sistema. sistema Transferncia de controle.

Transferncia de dados
Especificam: Origem. Destino. Quantidade de dados. Podem ser instrues diferentes para diferentes movimentaes. P e IBM 370. P.e., 370 Ou uma instruo e diferentes endereos. P.e., VAX.

Aritmtica
Adio, Subtrao, Multiplicao, Diviso. Inteiro com sinal. Ponto flutuante? Pode incluir: Incremento (a++). Decremento D t (a--). ( ) Negao (-a).

Operaes de deslocamento e rotao

Lgica
Operaes bit a bit. AND, OR, NOT.

Converso
P.e., binrio para decimal.

Entrada/sada
Podem ser instrues especficas. Pode ser feita usando instrues de movimentao de dados (mapeadas na memria). Pode ser feita por um controlador separado (DMA).

Controle do sistema
Instrues privilegiadas. CPU precisa estar em estado especfico: Modo kernel. Para uso dos sistemas operacionais.

Transferncia de controle
D Desvio: i 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 interrupo.

Instruo de desvio

Chamadas de procedimento aninhadas

Uso da pilha

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

Exerccio para o leitor


Descubra sobre o conjunto de instrues do Pentium e ARM. Comece com Stallings. Visite Web sites.

Ordem do byte (Uma repartio dos chips?)


Em que ordem lemos nmeros que ocupam mais de um byte? P.e., nmeros em hexa para facilitar a leitura. 12345678 pode ser armazenado em 4 locais de 8 bits da forma a seguir bits, seguir.

Ordem do byte (exemplo) Supondo valor de 32 bits = 12345678


Endereo 184 185 186 186 Valor (1) 12 34 56 78 Valor (2) 78 56 34 12

Ou seja, ler de cima para baixo ou de baixo para cima?

Nomes de ordem de byte


O problema se chama Endian. O mapeamento esquerda tem o byte mais significativo no endereo numrico mais baixo. Isso chamado de big-endian. O mapeamento direita tem o byte menos significativo no endereo numrico mais baixo. baixo Isso chamado de little-endian.

Exemplo de estrutura de dados em C

Viso alternativa do mapa de memria

Padro Que padro?


Pentium (x86), (x86) VAX so little-endian. IBM 370, Motorola 680x0 (Mac) e a maioria dos RISCs so big-endian. Internet big-endian. Torna a escrita de programas para Internet no PC mais desajeitada! WinSock oferece funes htoi e itoh (Host to Internet & Internet to Host) para converso.

Você também pode gostar