Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Organização e Arquitetura de Computadores
Capítulos 9 e 10 Conjunto de Instruções
2
O que é um conjunto de instruções?
Coleção completa das instruções que são entendidas por uma CPU Código de máquina Binário Representada por códigos em assembly (linguagem de montagem) 2
3
Elementos de uma instrução
Código de operação (Cod.Op ou Opcode) Especifica a operação a ser efetuada Ex. ADD Referência a operando fonte Operandos para a operação Dados de entrada Referência a operando de resultado Resultado da operação Referência à próxima instrução Indica onde a CPU deve buscar a próxima instrução Normalmente a próxima instrução Excessões: jumps 3
4
Localização dos Operandos
Memória principal (ou virtual ou cache) Registradores da CPU Dispositivos de I/O 4
5
Ciclo de instruções
6
Representação de Instruções
Cada instrução é representada por um único padrão de bits Para a compreensão humana, uma representação simbólica é usada: mnemônicos e.x. ADD, SUB, LOAD Operandos também podem ser representados dessa maneira ADD A,B 5
7
Quantos endereços utilizar???
Número de endereços Instruções podem ser analisadas de acordo com o número de endereços de operandos Operações aritméticas podem demandar um maior número de operandos Considere a operação: Y=(A-B)/(C*D*E) Quantos endereços utilizar??? 7
8
3, 2 ou 1 endereços?
9
Número de endereços 3 endereços Operando 1, Operando 2, Resultado
a = b + c; Pouco utilizadas Necessita de palavras grandes para armazenar todos os parâmetros da instrução 7
10
Número de endereços 2 endereços
Um endereço funciona duplamente como operando e resultado a = a + b Reduz o comprimento da instrução Necessita de algum trabalho extra Armazenamento temporário de alguns resultados 8
11
Número de endereços 1 endereço Segundo endereço é implícito
Normalmente é um registrador (ex: acumulador) Comum nas máquinas mais simples 9
12
Número de endereços 0 (zero) endereços
Todos os endereços são implícitos Usa uma pilha e.g. push a push b add pop c c = a + b 10
13
Vantagens/Desvantagens
Mais endereços Instruções mais complexas Mais registradores Operações entre registradores são mais rápidas Menos instruções por programa Menos endereços CPU mais simples Instruções menos complexas Mais instruções por programa Busca/execução mais rápidas 11
14
Decisões de projeto Algumas decisões de projeto devem ser levadas em conta Efeito significativo sobre a implementação da CPU Complexidade Custos Necessidades do programador 12
15
Decisões de projeto Repertório das operações Tipos de dados
Quantas operações? O que elas podem fazer? Quão complexas são? Tipos de dados Formato das instruções Comprimento do código de operação (quantos bits) Número de endereços 12
16
Decisões de projeto Registradores Modos de endereçamento
Número de registradores disponíveis na CPU Quais operações podem ser feitas em quais registradores? Gerais ou específicos Modos de endereçamento RISC versus CISC 13
17
Trabalho 3 Pesquisa Arquiteturas RISC x Arquiteturas CISC Tópicos:
Características dos dois grupos de arquiteturas Vantagens e Desvantagens Exemplos de arquiteturas (número de registradores, instruções, desempenho) Dupla Páginas: entre 4 e 6 páginas (formato artigo) Entrega: último dia de aula de OAC (2006) Consultar no mínimo 4 referências (citá-las no texto)
18
Tipos de operando Endereços (detalhes Cap. 10) Números Caracteres
Inteiros Ponto Flutuante Decimais (BCD: binary coded decimal) 4 bits para cada dígito decimal Caracteres ASCII EBCDIC Lógicos Bits or flags Cap. 8 8 bits por caracter 14
19
Tipos de operação Quantidade de instruções varia de acordo com a máquina Mas a classe de instruções é basicamente a mesma: Transferência de dados Aritmética Lógica Conversão E/S Controle Transferência de controle 18
20
Transferência de dados
Especificar Fonte Destino Quantidade de dados Em alguns casos diferentes instruções para diferentes movimentos e.x. IBM 370 19
21
Exemplos
22
Aritmética Adição, subtração, multiplicação e divisão Exemplo
Inteiros com sinais Floating point Exemplo 20
23
Lógica Operações aplicadas a bits AND, OR, NOT Exemplo 21
24
Conversão E.x. Binário para decimal 22
25
Input/Output Instruções específicas
Pode ser executadas instruções de movimentação de dados Pode ser executado por uma controladora separada (DMA) 23
26
Controle Instruções privilegiadas
CPU deve estar em um estado específico Para uso do sistema operacional 24
27
Transferência de controle
3 motivos Decisão Repetição Modularidade Tipos de intruções: Desvio/Saltos (jumps) Chamadas de procedimento 25
28
Instruções de Desvio/Salto
Comumente instruções são executadas em seqüência Pode haver a necessidade de desviar (pular) uma instrução (ou algumas) Intruções: Desvio feito se alguma condição é satisfeita (desvio condicional) Desvio incondicional 25
29
Chamadas de procedimento
Desenvolvimento em módulos Procedimentos Vantagens: Modularidade Economia de código 25
31
Retorno de procedimentos
3 possibilidades Registrador Área de memória Pilha (também usada para passagem de parâmetros) Registro de ativação
32
Modos de Endereçamento
Imediato Direto Indireto Registrador Indireto a Registrador Indexado (Displacement) Pilha (Stack)
33
Endereçamento Imediato (cap 10)
Operando é parte da instrução Operando = campo do endereço e.x. ADD 5 Soma 5 ao conteúdo do acumulador 5 é o operando Nenhuma referência à memória para buscar dados Rápido
34
Endereçamento Direto Campo de endereços contém o endereço do operando
Endereço efetivo (EA) = campo de endereço efetivo(A) e.x. ADD A Adiciona o conteúdo de uma célula A ao acumulador Olha na memória o no endereço A para um operando Referencia uma memória única para acessar os dados Não apresenta cálculos adicionais para trabalhar com o endereço efetivo Espaço de endereçamento limitado
35
Endereçamento Direto Instrução Cod.Op Endereço A Memória Operando
36
Endereço Indireto Células de memória apontadas por um campo do endereço que contém o endereço (ponteiro) do operando EA = (A) Olhe em A, encontre o endereço(A) e procure lá pelo operando e.x. ADD (A) Soma o conteúdo da célula apontada ao conteúdo de A ao acumulador
37
Endereço Indireto Instrução Cod.Op Endereço A Memória Operando
Ponteiro para operando Operando
38
Endereçamento a registrador
Operando émantido num registrador definido no campo de endereço EA = R Número limitado de registradores Campo de endereços necessário é pequeno Instruções menores (tamanho menor) Busca da instrução mais rápida Nenhum acessoà memória Execução muito rápida Espaço de endereçamento limitado
39
Endereçamento a registrador
Instrução Banco de Registradores Cod.Op Endereço do Registrador R Operando
40
Endereçamento Indireto a Registrador
EA = (R) O operando está na memória apontado pelo conteúdo de um registrador R Maior espaço de endereçamento (2n) Um acesso a menos na memória do que o modo de endereçamento indireto (puro)
41
Endereçamento Indireto a Registrador
Instrução Cod.Op Registrador de Endereços R Memória Banco de Registradores Ponteiro para operando Operando
42
Endereçamento a Deslocamento
EA = A + (R) Campo de endereços armazena dois valores A = valor base R = registrador que armazena o deslocamento ou vice versa
43
Endereçamento a Deslocamento
Instrução Cod.Op Registrador R Endereço A Memória Banco de Registradores + Ponteiro para Operando Operando
44
Endereçamento Relativo
Uma versão de endereçamento a deslocamento R = contador de instruções (PC) EA = A + (PC) i.e. pega o operando da célula A da posição corrente apontada pelo PC Vantagens: princípio da localidade e uso do cache
45
Endereçamento base-registrador
A armazena o deslocamento R armazena um ponteiro para o endereço base R pode ser explícito ou implícito e.x. registradores de segmento do 80x86
46
Endereçamento Indexado
A = base R = deslocamento EA = A + R Bom para fazer acessos a arrays R++
47
Endereçamento à pilha Operando está implicitamente no topo de uma pilha
48
Comparativo
49
Tamanho da instrução (cap. 10)
Afetado por e afeta: Tamanho da memória Organização da memória Estrutura do barramento Complexidade da CPU Velocidade da CPU Compromisso entre um repertório variado de instruções e a economia de espaço Memórias são baratas
50
Alocação de bits Número de modos de endereçamento Número de operandos
Registradores versus memória Número de conjuntos de registradores Faixa de endereçamento Granularidade do endereçamento
51
Novos conjuntos de intruções
MMX SSE e SSE2 3DNOW! Características Multimídia Operações sobre múltiplos dados (vetorial) Registradores maiores (SSE)
52
Linguagem de Montagem CPU: linguagem de máquina
Simplificar a escrita de programas
54
Ordenação de Bytes Little endian: Big endian:
escreve dados com a seguinte ordenação: [lo-bytes] [hi-bytes] Big endian: [hi-bytes] [lo-bytes] 28
55
Exemplo Endereço de memória: byte Palavra: 16 bits (2 bytes)
Uma palavra: será armazenada da seguinte forma: - Little endian: 1600: 1599: - Big endian 1600: 1599:
56
Exemplos Pentium (80x86), VAX: little-endian
IBM 370, Motorola 680x0 (Mac), e a maioria dos RISC: big-endian 30
57
Atividade Prática: Neander
58
Arquitetura Largura de dados e endereços de 8 bits
Dados representados em complemento de dois 1 acumulador de 8 bits (AC) 1 apontador de programa de 8 bits (PC) 1 registrador de estado com 2 códigos de condição: negativo (N) e zero (Z)
59
Instruções Código Instrução Comentário 0000 NOP nenhuma operação
0001 STA end armazena acumulador - (store) 0010 LDA end carrega acumulador - (load) 0011 ADD end soma 0100 OR end “ou” lógico 0101 AND end “e” lógico 0110 NOT inverte (complementa) acumulador 1000 JMP end desvio incondicional - (jump) 1001 JN end desvio condicional - (jump on negative) 1010 JZ end desvio condicional - (jump on zero) 1111 HLT término de execução - (halt)
60
Programando... Soma de dois valores
As variáveis e o resultado estão dispostos segundo o mapa de memória abaixo: posição: 128: variável A posição: 129: variável B posição: 130: resultado R
61
Resolução – R=A+B Endereço Instr. Significado
0 LDA AC recebe 1.o valor 2 ADD Soma 2.o valor ao acumulador 4 STA Armazena o valor na posição 130 6 HLT Finaliza o programa A B R
62
Exercícios Desenvolva um programa que some dois números e teste se o resultado é negativo Desenvolva um programa que some dois números (nas posições 128 e 129), armazene o resultado em (130) e armazene o valor 1 em (131) se não houver overflow, 255 caso contrário Desenvolva um programa para ordenar 3 números armazenados inicialmente nas posições 128, 129 e 130 Entregar: Fluxograma de execução Código (.mem)
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.