Arquitetura de computadores

Slides:



Advertisements
Apresentações semelhantes
Contadores e Registradores
Advertisements

Programação em Java Prof. Maurício Braga
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Arquitetura de Computadores
WebDesign Redes de Computadores Aula 05
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
Arquitetura e organização de computadores.
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
A Arquitetura: conjunto de instruções
Funcionamento Interno dos Computadores (CPU e Memória)
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 03: Computador.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes
Arquitetura dos Microprocessadores 8086 e 8088
Assembly Language for Intel-Based Computers, 5th Edition
Algoritmos e Programação Linguagens de Programação Teoria Aula 5 (05/05) Universidade Federal do Vale do São.
EXPRESSÕES ARITMÉTICAS
CISC e RISC.
EXPRESSÕES ARITMÉTICAS
Introdução à Informática
Professor: Erivelto Tschoeke – UDESC/CEPLAN
O MICROPROCESSADOR INTEL 8080
Sistemas Digitais Microprocessados
REPRESENTAÇÃO DE INSTRUÇÕES
Arquitetura de Computadores
Aula 4 Nomes, Vinculações, Tipos e Escopos
Programação Baseada em Objectos Desenho de TAD
Classes e objetos P. O. O. Prof. Grace.
Sistemas Operacionais
Sistemas Operacionais
Introdução à Programação
Sistemas Operacionais
PROGRAMAÇÃO I UNIDADE 1.
Funcionamento básico de um computador
Representação de Instruções
Arquitetura de computadores
Unidade Central de Processamento UCP
Arquitetura de computadores
ORGANIZAÇÃO DE COMPUTADORES
Sistemas Operacionais
Arquitetura de computadores
Organização e Arquitetura de Computadores
Organização e Arquitetura de Computadores
Campus de Caraguatatuba Aula 8: Noções Básicas sobre Erros (2)
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Agenda Modos de Endereçamento.
Processamento de dados na UCP e memória UCP
Máquina de Turing Universal
Arquitetura de Computadores
Unidade Central De Processamento: Processador
SISTEMAS OPERACIONAIS I Memória Virtual e Paginação
Geração de Código aula-12-geração-de-código.pdf.
Organização de Computadores
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Organização e Arquitetura de Computadores
Unidade Central De Processamento: Processador
Planilha Eletrônica - Excel
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
Unidade de Controle.
Tudo sobre o Processador
Fundamentos de linguagens de programação
1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos.
Arquitetura de Computadores
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
Arquitetura de computadores
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
A linguagem de Máquina – Instruções Básicas
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
Transcrição da apresentação:

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

Características e funções 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

Características de instruções de máquina 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 Operandos FONTE e DESTINO podem estar em registradores, na memória principal ou na memória virtual, bem como em um dispositivo de I/O

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: public class somando{   public static void main(String args[]){        Integer x, 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 BCD = Binary coded decimal Decimal é usado para evitar o custo de conversão.

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 Information Interchange); 7 bits para representar um caractere – 128 caracteres diferentes. Um bit extra para paridade; Outro código é o ISO 8859 (International Organization 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 booleanas podendo 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 K e guarda em AC; 4 – Grava AC na memória; Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013

Linguagem de montagem Em binário seria: I J K N Carrega Adiciona Grava Prof. Edivaldo Serafim - Arquitetura de Computadores - IFSP 2013 I 201 em binário – 11001001 201 em BCD – 0010 0000 0001 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 DAT é um pseudocódigo inventado pelo autor para representar um dado na memória A complicação está nos endereços absolutos 201, 02, 203, 204 das 4 primeiras linhas.

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 Rótulos de instruções são implícitas, pois geralmente são incrementadas pelo PC Rótulo de dados substituem endereços absolutos.

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ço 66 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