440 likes | 543 Views
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;
E N D
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 Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 Características e funções
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
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
Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 Características de instruções de máquina
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
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
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
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
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
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
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
Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 Tipos de operandos
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
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
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
Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 Tipos de operações
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
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
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
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
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
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
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
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
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
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
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
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
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
Instruções de chamada de procedimento Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013
Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 Linguagem de montagem
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
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
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
Linguagem de montagem • Em binário seria: Carrega Adiciona Adiciona Grava Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 I J K N
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
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
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
Linguagem de montagem Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013
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
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
Linguagem de montagem • Mais um exemplo de programa em Assembly: Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013