Introdução à Organização e Arquitetura de Computadores (Parte I)

Documentos relacionados
AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Arquitetura e Organização de computadores

Arquitetura e Organização de computadores

Aula 3 Máquina Multinível

Introdução à Computação

Computador Digital Circuitos de um computador (Hardware)

Introdução. (Aula 2) Organização Estruturada de Computadores

Introdução (Aula 2) Introdução Arquitetura de Hardware. Organização Estruturada de Computadores. Introdução Conceitos (2) Introdução Conceitos (1)

ARQUITETURA DE COMPUTADORES

Introdução à Computação: Máquinas Multiníveis

Introdução à Computação: Máquinas Multiníveis

Organização e Arquitetura de Computadores I. de Computadores

Introdução à Computação: Máquinas Multiníveis

ORGANIZAÇÃO DE COMPUTADORES

Sistemas Operacionais. Visão Geral

ORGANIZAÇÃO DE COMPUTADORES

Arquiteturas RISC e CISC. Adão de Melo Neto

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

Sistemas Operacionais

UNIP - UNIVERSIDADE PAULISTA. Arquitetura de computadores

Sistemas Operacionais

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Compiladores. Introdução à Compiladores

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

AGT0001 Algoritmos Aula 01 O Computador

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06

Projeto Lógico de Computadores. Profa. MSc. Carolina Melo Santana

Sistemas Operacionais e Introdução à Programação. Módulo 1 Sistemas Operacionais

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Introdução à Computação

Sistema Computacional

Introdução à Computação

Unidade I. Organização de Computadores. Prof. Renato Lellis

a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1.

Programação de Computadores:

2. Conceitos Básicos. Introdução à Ciência da Computação.

SISTEMAS OPERACIONAIS

PROGRAMAÇÃO I. Introdução

Sistemas Operacionais. Conceitos de Hardware e Arquitetura de computadores

Prof. Sandro Wambier

Sâmia Rodrigues Gorayeb. Arquitetura de Computadores Linguagem de Máquina

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura

Arquitetura e Organização de Computadores. Processador Registrador Memória. Professor Airton Ribeiro

Paradigmas de Programação

Organização Estruturada de Computadores

Linguagens de Programação Classificação

ELETRÔNICA DIGITAL II. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR

Estruturas de Sistemas Operacionais

Organização e Arquitetura de Computadores I

SSC510 Arquitetura de Computadores 1ª AULA

Sistemas Operacionais I

Algoritmos Computacionais

Aula 06 - Máquina Multinível e Von Neumann

Desenvolvimento de Aplicações Desktop

SSC304 Introdução à Programação Para Engenharias

Introdução à Programação de Computadores Fabricação Mecânica

Introdução à Informática Engenharia Agrícola

Organização de Sistemas de Computadores

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Métodos de implementação de linguagens. Kellen Pinagé

Sistemas Operacionais. Visão Geral

Aula 2 - Programação de Computadores - CI208 1/21

Introdução aos Sistemas Operacionais

SISTEMAS OPERACIONAIS. TÁSSIO JOSÉ GONÇALVES GOMES

Arquitetura e Organização de Computadores. Processador Registrador Memória. Professor Airton Ribeiro

Organização e Arquitetura de Computadores I

Linguagens de Programação

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores

Arquitetura e organização de computadores Uma visão geral

ORGANIZAÇÃO DE COMPUTADORES

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Gerência de Dispositivos. Adão de Melo Neto

Programação I A Linguagem C. Prof. Carlos Alberto

Arquitetura de Computadores. Conjunto de Instruções

Professor: M. Sc. Cristiano Mariotti

Sistemas Operacionais. Sistema de entrada e Saída

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA

Gerência de Dispositivos. Adão de Melo Neto

Conceitos básicos sobre computadores (continuação)

Arquitetura de Computadores

Evolução dos computadores

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

MC-102 Aula 01. Instituto de Computação Unicamp

Elementos básicos de uma Arquitetura Computacional

2. A influência do tamanho da palavra

Universidade de Brasília Histórico e Introdução

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

MAC2166 Introdução à Computação Aula 1 Como Funciona um Computador

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

Introdução ao Fortran 90

O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho

Sistemas Operacionais. Adão de Melo Neto

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM INTRODUÇÃO A SISTEMAS DIGITAIS. Lista de Exercícios 01

Organização e Arquitetura de Computadores INTRODUÇÃO

Transcrição:

Instituto Federal de Educação, Ciência e Tecnologia Paraíba Unidade Acadêmica de Informação e Comunicação Curso Superior de Tecnologia em Redes de Computadores Introdução à Organização e Arquitetura de Computadores (Parte I) Prof.a Maria de Lourdes do Nascimento Neta Joseana Macêdo Fechine Régis de Araújo Carga Horária: 83 horas

Computador Digital Máquina que pode resolver problemas executando uma série de instruções que lhe são fornecidas. Executa Programas conjunto de instruções que descrevem a maneira de realizar determinada tarefa. 2

Circuitos de um computador (Hardware) Reconhecem e executam um conjunto limitado e simples de instruções (linguagem de máquinabinária). Exemplo: soma, comparação, transferência de dados de uma parte da memória para outra parte. 3

Instruções da linguagem de máquina (decidida pelos projetistas de computadores) devem: ser simples ser compatíveis com o uso da máquina ser compatíveis com o desempenho requerido ter custo e complexidade da eletrônica reduzidos (aplicação). A linguagem de máquina (binária-baixo nível) está muito distante de uma linguagem natural (humana-alto nível) 4

Problema: Complexidade do que as pessoas precisam fazer versus simplicidade do conjunto de instruções do computador Exemplo: o usuário quer calcular a trajetória de um foguete até a lua. Como o usuário pode fazer isso em linguagem de máquina? Trabalho difícil e tedioso para os humanos 5

Solução: Criar uma hierarquia de abstrações de níveis mais altos baseados nos níveis mais baixos. Criar uma organização estruturada de computadores para facilitar a comunicação homem-máquina. 6

Sistema hierárquico Constituído de um conjunto de subsistemas interrelacionados, cada qual, possuindo também uma estrutura hierárquica, contendo, em seu nível mais baixo, subsistemas elementares. O comportamento de cada nível depende apenas de uma caracterização abstrata e simplificada do sistema de nível imediatamente inferior. 7

Considerações do projetista Estrutura modo como os componentes estão inter-relacionados. Função a operação de cada componente individual como parte da estrutura. 8

Computador Estrutura interna Unidade Central de Processamento (CPU) Memória Principal Entrada/Saída Sistema de interconexão 9

Computador - Funções básicas Processamento de dados Armazenamento de dados Transferência de dados Controle 10

Visão Geral Como solucionar: As pessoas devem fazer X, mas os computadores só podem fazer Y 11

Linguagens, Níveis e Máquinas Virtuais Supor a existência das linguagens: L1: linguagem natural, do usuário (alto nível e complexa) L0: linguagem da máquina (baixo nível e simples) Como compatibilizar L1 com L0? usar um tradutor usar um interpretador Pode ser utilizada uma metodologia híbrida: tradutor + interpretador 12

Tradutor: Cada instrução de L1 é substituída por um conjunto de instruções equivalentes de L0. Processador executa programa em L0. Todo programa em L0 é carregado em memória e é executado. Programa pode ser traduzido uma única vez e executado várias vezes. Alguns autores usam o termo tradução em sentido genérico, englobando os conceitos de compilação e interpretação. Aqui, ele está sendo empregado como sinônimo de compilação. 13

Interpretador: Cada instrução de L1 é substituída por um conjunto de instruções equivalentes de L0. Processador executa uma instrução de L1 (transformada para L0) antes de executar próxima instrução. Cada instrução de L1, transformada para L0, é carregada na memória e executada. Não é criado um programa em L0. Programa deve ser novamente interpretado para ser executado. 14

É possível não pensar em tradução ou interpretação, imaginando-se a existência de um computador hipotético, ou de uma máquina virtual M1, cuja linguagem de máquina seja L1 (e uma máquina real M0 com linguagem L0) Os programas poderiam ser escritos em L1, para a máquina M1 e: 1. serem executados diretamente em M1 se esta máquina fosse de custo de construção baixo ou 2. serem traduzidos ou interpretados para L0 e executados em M0. 15

Na prática se implementa a solução 2. As pessoas escrevem programas para máquinas virtuais como se elas realmente existissem. Muitos níveis de máquinas virtuais podem ser implementados. Cada linguagem usa a sua linguagem antecessora como base, de modo que um computador que use essa técnica pode ser visto como um conjunto de camadas ou níveis. 16

Máquina de vários níveis 17

Máquinas Multiníveis Modernas Computador com 6 níveis Método por meio do qual cada nível que é suportado é indicado abaixo do nível (junto com o nome do programa que o suporta). Obs.: Existe um outro nível situado abaixo do Nível 0 nível dos dispositivos. Nesse nível o projetista trabalha com os elementos básicos do projeto (transistores). 18

Máquinas Multiníveis Modernas Computador com 6 níveis Método por meio do qual cada nível que é suportado é indicado abaixo do nível (junto com o nome do programa que o suporta). Obs.: Existe um outro nível situado abaixo do Nível 0 nível dos dispositivos. Nesse nível o projetista trabalha com os elementos básicos do projeto (transistores). 19

Nível 0: Nível da Lógica Digital Nível mais baixo da estrutura. Objetos de interesse são conhecidos como portas lógicas. Cada porta lógica possui 1 ou mais entradas digitais (aceitam 0 ou 1) e calculam funções lógicas simples sobre essas entradas. Exemplos: AND, OR, XOR,... Portas lógicas são combinadas para formar memórias de um bit registradores o processador - principal dispositivo do computador. 20

Nível 1: Nível da Microarquitetura Uma memória local (8 a 32 registradores) e a UAL (Unidade Aritmética Lógica) que realiza operações aritméticas muito simples. Registradores - conectados a UAL formando o caminho dos dados. Operações são controladas por um microprograma ou diretamente por hardware. Microprograma - interpretador para as instruções do Nível 2. Busca, decodifica e executa as instruções, uma a uma, usando o caminho de dados para a realização desta tarefa. 21

Nível 2: Nível da Arquitetura do Conjunto de Instruções Nível ISA Instruction Set Architecture. Definida pelo fabricante e dependente da arquitetura da máquina. Fabricantes disponibilizam Manual de Referência da Linguagem de Máquina ou Princípios de operação do Computador Modelo XYZW (ou algo similar). Manuais descrevem como as instruções são executadas interpretativamente pelo microprograma ou como são executadas diretamente pelo hardware. Essas informações são necessárias para os desenvolvedores de sistemas operacionais. 22

Nível 3: Nível do Sistema Operacional Instruções da linguagem deste nível também podem conter instruções do nível ISA. Suporta uma organização diferente de memória. Suporta capacidade de rodar 2 ou mais programas simultaneamente. Suporta sistemas de comandos ou de janelas (windows). Programadores deste nível, e também dos níveis mais baixos, são conhecidos como programadores de sistema. Os programadores dos níveis mais altos que este são chamados programadores de aplicação. 23

Nível 4: Nível da linguagem do montador ou de montagem (Assembly language) Linguagem de montagem: forma simbólica de representação das linguagens do nível mais baixo. Programas nessa linguagem são, inicialmente, traduzidos para as linguagens dos níveis 1, 2 e 3 e depois interpretados pela máquina virtual apropriada ou pela própria máquina real. Programa que realiza a tradução - montador. 24

Nível 5: Nível das linguagens orientadas para solução dos problemas Conhecidas como linguagens de alto nível. Exemplos: Basic, C, Pascal, Java, LISP,... Programas são geralmente traduzidos para os níveis 3 e 4 por compiladores. Alguns são interpretados: Exemplos: programas em Java, MatLab,... 25

Observações finais importantes: Computadores são projetados como uma série de níveis, cada um deles construído em cima de seus precursores. Cada nível representa uma abstração distinta, com diferentes objetos e operações. A abstração permite ignorar, "abstrair", temporariamente detalhes irrelevantes, de níveis mais baixos, reduzindo uma questão complexa a algo muito mais fácil de ser entendido. 26

Observações finais importantes: Conjunto de tipos de dados, operações e características de cada um dos níveis - arquitetura do nível. Partes da arquitetura - as características que um programador do nível deve enxergar, por exemplo, a disponibilidade de memória. 27

Evolução das máquinas de vários níveis Primeiros computadores fronteira entre o hardware e o software era muito clara. Atualmente muito difícil separar o hardware do software. 28

Evolução das máquinas de vários níveis Hardware e software são equivalentes logicamente. Qualquer operação realizada por software pode ser realizada diretamente por hardware. Qualquer instrução executada por hardware pode ser simulada em software. O hardware é simplesmente o software petrificado 29

Evolução das máquinas de vários níveis Fatores que influenciam na decisão de se colocar funções em hardware ou software: Custo Velocidade Confiabilidade Frequência esperada de mudanças A decisão muda com a evolução da tecnologia e da própria utilização do computador. 30

Invenção da Microprogramação Década de 40 - Primeiros computadores: 2 níveis - Nível ISA + Nível da Lógica Digital Década de 50 Ideia de construção de um computador de 3 níveis simplificação de hardware Acoplar à máquina um interpretador (microprograma) para executar programas do nível ISA (por interpretação). Consequências: número de circuitos (hardware + simples) confiabilidade da máquina (circuitos à válvula) 31

Invenção da Microprogramação Década de 1960 - surgiram muitas máquinas com a filosofia de 3 níveis. Década de 1970 - uso do nível ISA interpretado por microprograma, ao invés de executado diretamente por circuitos eletrônicos, tornou-se uma prática comum. 32

Invenção do Sistema Operacional Primórdios: Computadores eram operados e gerenciados pelo próprio programador. Computadores executavam apenas um programa por vez (disponível para um único usuário). Mecanismo de entrada de dados 33

Exemplo de execução de um programa em FORTRAN 1. Colocar cartões do compilador FORTRAN na leitora + mandar executar (botão de início de operação da leitora); 2. Colocar cartões do programa na leitora (1a vez) + executar; 3. Colocar cartões do programa na leitora (2a vez) + executar (compilador de 2 passos); 4. Se programa não tem erro, o compilador perfurava cartões com código de máquina. Senão, corrige programa e volta ao passo 1; 5. Colocar programa em linguagem de máquina + cartões da biblioteca Fortran e executar; 6. Programa é executado. Se há erro de lógica, corrige e volta ao passo 1. 34

Invenção do Sistema Operacional Por volta de 1960, foi criado o Sistema Operacional (SO) Objetivo: facilitar a operação do computador. O Sistema operacional era mantido na memória do computador durante todo o tempo de utilização. Cartões de controle comandavam instruções do SO. 35

Exemplo de um Job para o Sistema Operacional FMS (FORTRAN Monitor System) Cartões de controle: *JOB - identifica o usuário. *FORTRAN - carrega compilador. *DATA - executa o programa com os dados que seguem. Programa é executado em sistema BATCH. Programa FORTRAN Cartões de dados 36

Invenção do Sistema Operacional Unidade de Fita Entrada da Fita Sistema de Fitas Saída de Fita Leitora de Impressora cartões 1401 7094 1401 Um sistema batch antigo. ( a ) Programadores levam cartões ao 1401. ( b ) 1401 lê batch de jobs em fita. ( c ) A operadora acopla fita de entrada no 7094. ( d) O 7094 faz o processamento. ( e ) A operadora acopla fita de saída no 1401. ( f ) O 1401 imprime a saída. 37

Invenção do Sistema Operacional Evolução do SO - incorpora, além de algumas instruções do ISA, tratamento de Entrada/Saída. As instruções do SO eram conhecidas por macros do SO ou chamadas ao supervisor (atualmente: chamadas ao sistema). 1960 (MIT) - SO com compartilhamento de vários usuários (terminais ligados ao computador por linhas telefônicas) - Sistemas de Tempo Compartilhado. 38

Migração de funcionalidades para o Microcódigo 1970 - explosão nos conjuntos de instruções das máquinas, expandindo-se o microprograma Adicionar hardware (novas instruções de máquina) por meio de programação. Exemplos de novas funcionalidades, instruções para: multiplicação e divisão de inteiros aritmética em ponto flutuante chamada e retorno de procedimentos acelerar a execução de loops manipulação de strings (cadeias) de caracteres 39

Migração de funcionalidades para o Microcódigo Facilidade da microprogramação incorporação de novas funcionalidades para: acelerar o processamento de programas envolvendo cálculo matricial (indexação e endereçamento indireto); permitir que os programas pudessem ser deslocados de posição de memória, após o início da execução (realocação); tratar interrupções que enviam um sinal para o processador logo que uma operação de E/S termine; suspender a execução de um programa e iniciar a execução de outro (troca de contexto entre processos). 40

A eliminação da Microprogramação Décadas de 1960 a 1970 Microprogramas cresceram muito. Consequência: tornaram-se lentos. Retorna a ideia instruções e funcionalidades executadas por hardware. 41

Conclusões: Fronteira entre o hardware e o software pode ser arbitrária e está sempre mudando. O que hoje está implementado em software poderá em breve estar implementado em hardware, e vice-versa - O software de hoje pode ser o hardware de amanhã e vice-versa. As fronteiras entre os demais níveis não estão bem definidas e podem também ser alteradas. 42

Conclusões: Do ponto de vista do programador, não tem muita importância a maneira como uma instrução é realmente implementada. Programador de um nível, em geral, não deve se preocupar com implementações de níveis inferiores. 43