Kevin Botelho Carlos
1 Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores Prof a Joseana Macêdo Fechine Régis de Araújo Carga Horária: 60 horas
2 Tópicos Máquinas Multiníveis Conceitos Básicos 2
3 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. 3
4 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. 4
5 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) 5
6 Problema: Complexidade do que as pessoas precisam fazer versus simplicidade do conjunto de instruções do computador 6
7 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-computador 7
8 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. 8
9 Como solucionar: As pessoas devem fazer X, mas os computadores só podem fazer Y 9
10 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? Existem 2 soluções (tradução e interpretação) usar um tradutor usar um interpretador Pode ser utilizada uma metodologia híbrida: tradutor + interpretador 10
11 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. 11
12 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. 12
13 É 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. 13
14 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. 14
15 Máquina de vários níveis 15
16 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). 16
17 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. 17
18 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. 18
19 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. 19
20 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. 20
21 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. 21
22 Nível 5: Nível das linguagens orientadas para solução dos problemas Conhecidas como linguagens de alto nível. Exemplos: C, Python, Java,... Programas são geralmente traduzidos para os níveis 3 e 4 por compiladores. Alguns são interpretados: Exemplo: programas em Java. 22
23 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. 23
24 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. 24
25 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. 25
26 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. 26
27 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 viceversa - 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. 27
28 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. 28