1 / 44

Arquitetura de computadores

Arquitetura de computadores. Prof. Edivaldo Serafim Curso: Tecnólogo em Análise e Desenvolvimento de Sistemas - 2013 IFSP – Campus Capivari. Conjunto de instruções. 22/05/2013. Conjunto de instruções. Características e funções. Tópicos abordados. Objetivos;

hope-gibbs
Download Presentation

Arquitetura de computadores

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquitetura de computadores Prof. Edivaldo Serafim Curso: Tecnólogo em Análise e Desenvolvimento de Sistemas - 2013 IFSP – Campus Capivari

  2. Conjunto de instruções 22/05/2013

  3. Conjunto de instruções Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 Características e funções

  4. Tópicos abordados • Objetivos; • Características de instruções de máquina. • Tipos de operandos; • Tipos de dados; • Tipos de operações; • Linguagem de montagem. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  5. Objetivos • O conjunto de instruções da máquina é o limite entre o projetista e o programador para visualização da mesma máquina: • Para o projetista, implementar uma CPU significa por em prática o conjunto de instruções daquela CPU em projeto; • Para o programador de linguagem de montagem (ASSEMBLY) significa conhecer os registradores, estrutura de memória, tipos de dados e o funcionamento da ULA; • Para tentar aproximar essas duas formas de visualizar o problema, abordaremos o conjunto de instruções para poder chegarmos no funcionamento da CPU. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  6. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 Características de instruções de máquina

  7. Características de instruções de máquinas • O funcionamento da CPU depende das instruções que ela pode executar; • Essas instruções são chamadas de instruções de máquina ou instruções do computador; • A variedade de instruções que a CPU pode operar é conhecido como conjunto de instruções da CPU; • Podemos ter dois tipos de CPU de acordo com o conjunto de instruções : • Processadores CISC; • Processadores RISC; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  8. Elementos de instruções de máquina • As instruções devem ter as informações necessárias para a CPU operar; • Geralmente as instruções são formadas por: • Código de operação: • Determina o que deve ser feito pela CPU. • Operando fonte: • Dados de entrada; • Operandos de destino: • Dados de saída; • Endereço da próxima instrução: • Indica onde a CPU deve buscar a próxima instrução; • Normalmente incrementada automaticamente pelo PC, mas pode ser indicada caso haja um desvio. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  9. Representação das instruções • Instruções são uma sequência de bits divididos em campos referentes aos elementos da instrução; • Na maioria do conjunto de instruções temos vários formatos para elas, de acordo com sua funcionalidade; • Adição – ADD; • Subtração – SUB; • Multiplicação – MPY; • ... • Durante a execução, uma instrução é lida no IR; • A CPU deve extrair o conteúdo dos seus vários campos para decodificá-la. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  10. Representação das instruções • Instrução de 16 bits hipotética 0 3 4 15 código da operação Endereço Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 0001 11110010100

  11. Tipos de instruções • Vamos considerar um trecho de código em Java: publicclasssomando{ publicstaticvoidmain(Stringargs[]){ Integerx, y; x =x + y;   }   } • O comando soma acima faz com que o valor contido em Y seja adicionado ao valor contido em X e armazenado em X novamente; • Como podemos representar essa soma em linguagem de máquina? Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  12. Tipos de instruções • Primeiramente vamos supor que o compilador atribuiu dois endereços de memória para as duas variáveis: • X = 513; • Y = 514. • Considerando um conjunto simples de instruções de máquina, esse comando (x= x + y) pode ser efetuado em três instruções: • Carrega um registrador com o conteúdo de 513; • Adiciona o conteúdo do registrador ao conteúdo de 514; • Armazena o conteúdo do registrador em 513. • Assim, uma única instrução de alto nível implica em três de baixo nível; • Qualquer programa de alto nível deve ser traduzido em linguagem de máquina para ser executado. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  13. Tipos de instruções • Podemos então determinar os tipos de instruções de máquina como: • Processamento de dados: • Instruções aritméticas ou lógicas. • Armazenamento de dados: • Instruções de memória. • Movimentação de dados: • Instruções de I/O. • Controle: • Instruções de teste e desvio. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  14. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 Tipos de operandos

  15. Tipos de operandos • Os tipos de dados mais importantes são: • Endereços; • Números; • Caracteres e ; • Dados lógicos. • Os endereços são colocados nessa categoria, pois geralmente para determiná-los, cálculos são efetuados; • Endereços serão discutidos em aula futura. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  16. Tipos de operandos - Números • Números são muito utilizados e possui limitação em dois sentidos: • Limite para a magnitude; • Limite para a precisão em caso de ponto flutuante. • Geralmente podemos ter três tipos de números: • Inteiro; • Ponto flutuante e; • Decimal. • Decimal são empacotados em grupos de 4 bits (BCD). • 0 = 0000, 1 = 0001, ..., 8 = 1000, 9 = 1001 • Exemplo: 0255 em binário = 11111111 0255 em BCD = 0000 0010 0101 0101 Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  17. Tipos de operandos - Caractere • Texto é uma sequencia de caracteres; • Um caractere é uma sequência de bits para representar um número, um símbolo ou uma letra. • Existem diversos códigos para representar caracteres em bits; • O código mais conhecido é o ASCII (American Standard Code for InformationInterchange); • 7 bits para representar um caractere – 128 caracteres diferentes. • Um bit extra para paridade; • Outro código é o ISO 8859 (InternationalOrganization for Standardization) • 8 bits para representar um caractere – 255 caracteres • Outro é o UNICODE, que pode chegar a 17 mil caracteres. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  18. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 Tipos de operações

  19. Tipos de operações • O número de códigos de operação distintos varia muito de máquina para máquina, mas algumas são comuns a todas: • Operações de transferência de dados; • Operações aritméticas; • Operações lógicas; • Operações de conversão; • Operações de E/S; • Operações de controle de sistema; • Operações de transferência de controle; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  20. Operações de transferência de dados • É o tipo mais importante de instrução de máquina devendo especificar várias informações como: • Endereços dos operandos fonte e de destino; • O tamanho dos dados a serem transferidos; • O modo de endereçamento de cada operando; • As operações de transferência de dados são o tipo mais simples de operação, em termos da ação tomada pela CPU; • Se o operando fonte e de destino são registradores, a CPU simplesmente transfere dados de um registrador para outro, uma operação interna da CPU; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  21. Operações de transferência de dados • Se um ou ambos os operandos estão na memória, a CPU tem de efetuar algumas ou todas as ações a seguir: • Calcule o endereço de memória; • Se o endereço se refere à memória virtual, traduza esse endereço para um endereço de memória real; • Determine se o item endereçado está na memória cache; • Se não estiver, emita um comando para o módulo de memória; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  22. Operações aritméticas • A maioria das máquinas fornece operações aritméticas básicas para soma, subtração, multiplicação e divisão; • Essas operações são oferecidas, invariavelmente, para números inteiros; • Muitas vezes, elas são também oferecidas para números na representação decimal e números de ponto flutuante; • Outras possíveis operações por exemplo são: • Tomar o valor absoluto do operando; • Negar o operando; • Incrementar o operando de 1; • Decrementar o operando de 1. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  23. Operações lógicas • A maioria das máquinas fornece também uma variedade de operações para manipular bits individuais ou de uma palavra; • Essas operações são baseadas em operações booleanaspodendo ser NOT, AND, OR, XOR e EQUAL: • NOT (NÃO) inverte um bit. • AND (E), OR (OU) e XOR (ou-exclusivo) são as funções lógicas mais comuns com dois operandos; • A operação EQUAL é um teste de igualdade binária, bastante útil. • Outra operações lógicas são o deslocamento lógico, deslocamento aritmético e a rotação; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  24. Operações de conversão • Mudam ou operam sobre o formato de dados; • Um exemplo simples é a conversão de um número decimal para binário; • Outro exemplo é a conversão de código ASCII em EBCDIC. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  25. Operações de I/O • As instruções de entrada / saída (I/O) foram discutidas na aula de I/O; • Como vimos, existe uma variedade de abordagens, incluindo E/S programada, E/S mapeada na memória, DMA e uso de processadores de E/S. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  26. Operações de controle de sistema • Instruções de controle tipicamente são reservadas para uso pelo sistema operacional; • Exemplos podem ser: • Uma instrução de controle de sistema pode servir para ler ou modificar o conteúdo de um registrador de controle; • Outro exemplo, ainda, seria o acesso a blocos de controle de processo, em um sistema de multiprogramação. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  27. Operações de transferência de controle • Têm como função alterar a sequência de execução de instruções; • Nessas instruções, a CPU atualiza o contador de programa com o endereço de alguma outra instrução armazenada na memória; • As operações de transferência de controle encontradas mais comumente em um conjunto de instruções são: • As operações de desvio; • Salto e ; • Chamada de procedimento. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  28. Instrução de desvio • Uma instrução de desvio tem como um de seus operandos o endereço da próxima instrução a ser executada; • Com frequência, essa instrução é um desvio condicional, isto é, o desvio será feito apenas se uma dada condição for satisfeita; • Um desvio pode ser aleatório em relação ao endereçamento de memória, ou seja, tanto para a frente como para trás; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  29. Instrução de salto • Tipicamente, um salto indica que a execução de uma instrução da sequência de instruções deve ser omitida; • O endereço da próxima instrução a ser executada é obtido somando o endereço da instrução corrente com um valor para chegar a próxima instrução; • Não ocorre informando o endereço da próxima instrução, mas sim calculando um novo valor para PC; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  30. Instruções de chamada de procedimento • Um procedimento é um subprograma que é incorporado em um programa maior; • Existem por questões de economia, modularidade e reutilização de código; • Pode ser invocado, ou chamado, em qualquer ponto do programa; • Uma chamada a um procedimento instrui o processador a executar todo o procedimento e, então, retornar ao ponto em que ocorreu a chamada; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  31. Instruções de chamada de procedimento • O mecanismo de controle de procedimentos envolve duas instruções básicas: • Chamada de procedimento: • Desvia a execução do programa para o procedimento; • Retorno da execução: • Retorna no ponto onde foi invocado o procedimento; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  32. Instruções de chamada de procedimento Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  33. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 Linguagem de montagem

  34. Linguagem de montagem • Programadores desenvolvem em linguagens de alto nível, como, Java, C, .NET, etc. • Computadores interpretam apenas código binário, devendo o código de alto nível ser convertido em linguagem de máquina; • Se desejássemos programar diretamente em linguagem de máquina seria muito trabalhoso e propenso a erros: • Um exemplo simples: N = I + J + K Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  35. Linguagem de montagem • Programadores desenvolvem em linguagens de alto nível, como, Java, C, .NET, etc. • Computadores interpretam apenas código binário, devendo o código de alto nível ser convertido em linguagem de máquina; • Se desejássemos programar diretamente em linguagem de máquina seria muito trabalhoso e propenso a erros: • Um exemplo simples: N = I + J + K Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  36. Linguagem de montagem N = I + J + K • Quantas instruções de máquina devem ser executadas? • 1 – Carrega I para AC; • 2 – Adiciona I em J e guarda em AC; • 3 – Adiciona AC em Ke guarda em AC; • 4 – Grava AC na memória; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  37. Linguagem de montagem • Em binário seria: Carrega Adiciona Adiciona Grava Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 I J K N

  38. Linguagem de montagem • Como desenvolver dessa forma seria praticamente impossível atualmente, podemos ir subindo o nível em programação; • Uma primeira melhoria seria utilizar hexadecimal, ficando assim: Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  39. Linguagem de montagem • Um terceiro nível é a linguagem simbólica; • Utiliza símbolos para representar as operações; • Aumenta a complexidade pois necessita de um programa para traduzir os símbolos em binário; • Ainda assim a programação é complicada; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  40. Linguagem de montagem • Um quarto nível seria um programa simbólico mas sem uso de endereços absolutos, e sim com símbolos para representá-los; • Essa linguagem é chamada de Assembly e o programa é Montado por um montador (assembler) para se tornar código binário; • Representa um grande marco evolução das linguagens de programação; • Permitiu o surgimento de linguagens de alto nível. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  41. Linguagem de montagem Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  42. Linguagem de montagem • Exemplo de programa em Assembly: • 1 Copiar para o acumulador o conteúdo da posição de memória com o endereço 64; • 2 Adicionar ao acumulador o conteúdo da posição de memória com o endereço 65 (ficando o resultado no acumulador); • 3 Copiar para a posição de memória com o endereço66 o valor que ficou no acumulador. • Em linguagem Assembly consta de três instruções e ocupa seis bytes. Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  43. Linguagem de montagem • Exemplo de programa em Assembly: • código máquina em hexadecimal E5 40 25 41 F5 42 • Linguagem Assembly: MOV A,64 ADD A,65 MOV 66,A Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

  44. Linguagem de montagem • Mais um exemplo de programa em Assembly: Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

More Related