Ciências da Computação Disciplina: Ciência da Computação e Profissão Professora: Simone Jaqueline Ferreira de Almeida Aula 3 Máquina Multinível
Máquina Multinível - Computador Visão Tradicional de um computador: Periféricos: dispositivos de entrada e saída (monitor, teclado, mouse, impressora, caixa de som); Gabinete: placa mãe, placas adicionais (vídeo, rede, Captura de TV, etc.), memórias, processador, fonte de alimentação, discos rígido, etc.
Máquina Multinível - Computador Um computador digital é uma máquina capaz de solucionar problemas através da execução de instruções que lhe são fornecidas, problemas que são: De diferentes naturezas (matemática, engenharia, administração, comércio, indústria, etc.); De variados graus de complexidade, executando uma série de instruções simples reconhecidas por seus circuitos internos. Denomina-se programa uma sequência de instruções que descreve como o computador deve executar uma determinada tarefa.
Máquina Multinível - Computador Os circuitos eletrônicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instruções simples para as quais todos os programas devem ser convertidos antes que eles possam ser executados. As instruções são classificadas como primitivas, pois são simples e precisas, visando reduzir a complexidade e o custo dos circuitos internos da máquina, por exemplo: Somar dois números; copiar um conjunto de dados de uma parte da memória para outra; verificar o resultado se uma operação é zero.
Máquina Multinível - Computador Juntas, as instruções primitivas do computador, formam uma linguagem que torna possível as pessoas se comunicarem com o computador. Tal linguagem é denominada linguagem de máquina. Linguagem de Máquina é o conjunto finito de instruções, que os circuitos eletrônicos de um determinado computador pode reconhecer e executar diretamente (é a linguagem de programação que a máquina realmente entende). As instruções primitivas são tão simples quanto possível, consistentes com o uso pretendido e necessidades de desempenho, a fim de reduzir a complexidade e o custo da eletrônica empregada.
Máquina Multinível - Computador Como a maioria das linguagens de máquina são muito simples, é difícil e tedioso utilizá-las. Este problema pode ser resolvido de duas maneiras principais, ambas envolvendo o projeto de um novo conjunto de instruções de uso mais conveniente para as pessoas do que o conjunto de instruções embutidas da máquina. Juntas, estas novas instruções formam uma linguagem que chamaremos de L2, exatamente como as instruções embutidas de máquina formam uma linguagem, que chamaremos de L1.
Máquina Multinível - Computador Os dois conceitos diferem na maneira com que os programas escritos em L2 são executados pelo computador, que pode apenas executar programas escritos em sua linguagem de máquina, L1. 1ª Alternativa: Tradução Método que consiste na substituição de cada instrução do programa escrito na linguagem L2 por uma sequência de instruções equivalente na linguagem L1. O computador executa o programa em L1.
Máquina Multinível - Computador 2a Alternativa: Interpretação Método onde um programa escrito na linguagem L1 recebe os programas escritos em L2, e cada instrução em L2 é executada por uma sequência equivalente em L1. O computador executa o programa em L1. Comparação entre Tradução e Interpretação: Similares. Ambas executam sequências equivalentes em L1 de cada instrução em L2. Na tradução, o programa em L2 é descartado, obtendose um programa equivalente em L1.
Máquina Multinível - Computador Em vez de pensar em termos de tradução e interpretação, é muitas vezes mais adequado imaginar a existência de um computador hipotético ou máquina virtual cuja linguagem de máquina seja L2. Máquina Virtual: é um computador hipotético de linguagem de máquina de um nível mais elevado do que a linguagem inerente do computador. Pode-se escrever programas para máquinas virtuais como se elas realmente existissem. Pode-se ter também máquinas virtuais baseadas em outras máquinas virtuais.
Máquina Multinível - Computador Para tornar práticas a tradução e a interpretação, as linguagens L1 e L2 não devem ser "muito" diferentes. Esta restrição significa muitas vezes que L2, embora melhor que L1, estará ainda longe do ideal para a maioria das aplicações. E isso é desencorajante em vista do objetivo original de criar L2, que é livrar o Programador da carga de ter que expressar os algoritmos em uma linguagem mais adequada às máquinas do que às pessoas. A solução óbvia é criar um outro conjunto de instruções que seja mais dirigido às pessoas e menos dirigido à máquina do que aquele de L2.
Máquina Multinível - Computador Este terceiro conjunto também constitui uma Linguagem, que chamaremos L3. Podem-se escrever programas em L3 como se uma máquina virtual cuja Linguagem de máquina fosse L3 realmente existisse. Tais programas podem tanto ser traduzidos para L2 quanto executados por um interpretador. A invenção de toda uma série de linguagens, cada uma delas mais conveniente do que suas predecessoras, pode continuar indefinidamente até que uma adequada seja finalmente conseguida. Cada Linguagem utiliza sua predecessora como base, assim temos um computador que utiliza esta técnica como uma série de camadas ou níveis, um sobre o outro.
Máquina Multinível - Computador Máquina Multinível: é um computador que possui máquinas virtuais dispostas em camadas ou níveis, umas sobre as outras. Cada linguagem utiliza a sua predecessora como base.
Máquina Multinível - Computador Considerações Sobre Máquinas Virtuais: Se uma máquina de linguagem L2 pudesse ser construída a um custo baixo, a máquina de linguagem L1 não existiria. As linguagens L1 e L2 não devem ser muito diferentes, para facilitar a tradução/interpretação. Cada máquina virtual ou real tem a sua linguagem de máquina (instruções que a máquina é capaz de executar). O programador de um determinado nível não precisa conhecer os níveis inferiores. O termo Organização Estrutural de Computadores vem desta forma de se visualizar o computador, como um conjunto hierárquico de níveis.
Máquina Multinível - Computador Uma pessoa cujo trabalho fosse escrever programas para a máquina virtual de nível n não precisaria estar ciente dos interpretadores e tradutores subjacentes. A estrutura da máquina assegura que estes programas serão de algum modo executados. A maioria dos programadores que utilizam uma máquina de nível n está apenas interessada no nível do topo, que lembra o mínimo possível a linguagem de máquina situada lá embaixo. As pessoas interessadas em projetar novos computadores ou novos níveis (isto é, novas máquinas virtuais) devem também estar familiarizadas com outros níveis além do nível do topo.
Máquinas Multiníveis Máquinas Modernas A maioria dos computadores modernos possui dois ou mais níveis. Máquinas com seis ou mais níveis são as mais comuns, quando se trata de computação; são eles: Nível de lógica digital; Nível de microprogramação ou microarquitetura; Nível convencional de máquina; Nível de sistema operacional; Nível de linguagem de montagem; Nível de linguagem orientada à programação.
Máquinas Multiníveis Máquinas Modernas A maioria dos computadores modernos possui dois ou mais níveis. Máquinas com seis ou mais níveis são as mais comuns, quando se trata de computação; são eles: Nível de lógica digital; Nível de microprogramação ou microarquitetura; Nível convencional de máquina; Nível de sistema operacional; Nível de linguagem de montagem; Nível de linguagem orientada à programação.
Máquinas Multiníveis Máquinas Modernas
Máquinas Multiníveis Máquinas Modernas Nível 0 nível de Lógica Digital: Composto por circuitos lógicos digitais. Os objetos de interesse são as portas lógicas. Portas básicas: NAND, NOR (portas completas); NOT, AND, OR e XOR. Formam os elementos primários dos circuitos lógicos do computador.
Máquinas Multiníveis Máquinas Modernas Nível 1 Nível de Microarquitetura: É nesse nível que se inicia o conceito de programa como uma sequência de instruções a serem executadas diretamente pelos circuitos eletrônicos. É o nível real de linguagem de máquina. Cada computador tem seu nível de microprogramação. Em geral, o número de instruções (micro-instruções) não ultrapassa 20. Maior parte: movimentação de dados. Possui microprogramas executados neste nível: define uma linguagem de nível 2 e Interpreta as instruções de nível 2.
Máquinas Multiníveis Máquinas Modernas Nível 2 Nível de Máquina Convencional: A arquitetura varia conforme a tecnologia usada pelo fabricante do chip. Deve ser o mais simples possível, para facilitar projeto do hardware. Deve facilitar a geração de código por parte do compilador. Projeto do nível de linguagem de máquina deve dar suporte aos níveis superiores, possibilitando o uso de estruturas de dados tais como procedimentos, variáveis locais, variáveis globais, constantes, etc., utilizados pelas linguagens de alto nível.
Máquinas Multiníveis Máquinas Modernas Nível 3 Nível do Sistema Operacional: Esse nível suporta um conjunto de novas instruções, uma organização diferente da memória, a capacidade de rodar dois ou mais programas de forma simultânea, entre outros. Fornece serviços básicos para os níveis acima: Interface (gráfica ou linha de comando) com o usuário;; Gerenciamento de memória; Escalonamento de processos; Acionamento de dispositivos de entrada e saída de dados, etc.
Máquinas Multiníveis Máquinas Modernas Nível 3 Nível do Sistema Operacional: Geralmente é desenvolvido de forma híbrida, ou seja, parte em uma linguagem de alto nível (como C ou C++, por exemplo), e parte em linguagem de montagem. 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.
Máquinas Multiníveis Máquinas Modernas Nível 4 Nível de Linguagem de Montagem: Uma forma simbólica de representação das linguagens dos níveis mais baixos. Provê um método para as pessoas escreverem programas para os níveis 1, 2, e 3 de uma maneira não tão desconfortável. Os programas escritos em linguagem de montagem (Assembly) são traduzidos para as linguagens de nível 1, 2 ou 3 e interpretados pela máquina virtual ou real. Quem faz a tradução é o programa montador.
Máquinas Multiníveis Máquinas Modernas Nível 4 Nível de Linguagem de Montagem: Uma forma simbólica de representação das linguagens dos níveis mais baixos. Provê um método para as pessoas escreverem programas para os níveis 1, 2, e 3 de uma maneira não tão desconfortável. Os programas escritos em linguagem de montagem (Assembly) são traduzidos para as linguagens de nível 1, 2 ou 3 e interpretados pela máquina virtual ou real. Quem faz a tradução é o programa montador.
Máquinas Multiníveis Máquinas Modernas Nível 4 Nível de Linguagem de Montagem: Razões para uso da linguagem de montagem: Melhorar o desempenho. Algumas máquinas podem não ter um compilador disponível. Cada comando em linguagem resulta em um comando em linguagem de máquina: uma linha de programa fonte = uma linha de programa objeto. Ao contrário da programação em alto nível, o programador de linguagem de montagem dispõe de todos os recursos do Nível 2 Nível de Máquina Convencional. Programa não portável (válido apenas para uma mesma família de processadores).
Máquinas Multiníveis Máquinas Modernas Nível 5 Nível de Linguagem de Alto Nível: Linguagens projetadas para serem utilizadas por programadores de aplicação com problemas a serem resolvidos. Exemplos de linguagens de alto nível: Basic, C, Cobol, Fortran, Lisp, Pascal, C++, Python, Java, etc. Os programas escritos nessas linguagens são geralmente traduzidos para o nível 3 ou nível 4 por tradutores conhecidos como compiladores, embora às vezes sejam interpretados (como no caso de Java e Python).
Máquinas Multiníveis Máquinas Modernas Nível 6 Mais Níveis? Acima do nível 5 encontram-se coleções de programas projetados para criar máquinas especialmente adequadas para certas aplicações (ou domínios), contendo grandes quantidades de informação acerca da aplicação ou características específicas; Máquinas virtuais voltadas às aplicações: administração, educação, projeto de computadores, realidade virtual, etc.;
Máquinas Multiníveis Considerações Computadores são projetados como uma série de níveis. Cada nível é construído em cima de seus antecessores. Cada nível representa uma abstração distinta, com diferentes objetos e operações presentes. 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: Arquitetura do Nível representa o conjunto de tipos de dados, instruções e características do nível.
Máquinas Multiníveis Considerações
Padrão Von Neumann Matemático húngaro, naturalizado norte-americano, propôs nos anos 40 do século XX, um padrão de arquitetura de computadores que ainda hoje é seguido, sendo hoje em dia altamente pesquisada uma alternativa a esse padrão. A característica de máquinas Von Neumann é a composição do sistema a partir de três subsistemas básicos: CPU; Memória principal; Sistema de entrada e saída;
Hardware, Software e Máquinas Multinível O hardware é composto de objetos tangíveis - circuitos integrados, cabos, fontes de alimentação, memórias, leitoras de cartões, impressoras e terminais - em lugar de ideias abstratas, algoritmos ou instruções. O software, ao contrário, consiste em algoritmos (instruções detalhadas que dizem como fazer algo) e suas representações para o computador, ou seja, os programas. Os programas podem estar representados em cartões perfurados, fita magnética, filme fotográfico e outros meios, mas a essência do software está no conjunto de instruções que constitui os programas, não nos meios físicos sobre os quais eles estão gravados.
Hardware, Software e Máquinas Multinível O hardware é composto de objetos tangíveis - circuitos integrados, cabos, fontes de alimentação, memórias, leitoras de cartões, impressoras e terminais - em lugar de ideias abstratas, algoritmos ou instruções. O software, ao contrário, consiste em algoritmos (instruções detalhadas que dizem como fazer algo) e suas representações para o computador, ou seja, os programas. Os programas podem estar representados em cartões perfurados, fita magnética, filme fotográfico e outros meios, mas a essência do software está no conjunto de instruções que constitui os programas, não nos meios físicos sobre os quais eles estão gravados.
Hardware, Software e Máquinas Multinível Um tema central que sempre aparecerá é: Hardware e software são logicamente equivalentes. Qualquer operação efetuada pelo software pode também ser implementada diretamente em hardware, e qualquer instrução executada pelo hardware pode também ser simulada pelo software. A decisão de se colocar certas funções em hardware e outras em software baseia-se em fatores tais como: custo, velocidade, confiabilidade e frequência esperada de alterações. Não há regras rígidas e diretas para se dizer que X deve ser implementado em hardware e Y deve ser programado explicitamente.
Hardware, Software e Máquinas Multinível O fato de o programador não estar ciente de como o nível que ele está utilizando é implementado leva ao conceito de projeto estruturado de máquinas. Um nível é muitas vezes chamado de máquina virtual porque o programador pensa nele como uma máquina física real, mesmo se ela não existir realmente. Estruturando uma máquina como uma série de níveis, os programadores que trabalham no nível n não precisam saber de todos os detalhes dos níveis inferiores. Esta estruturação simplifica enormemente a produção de máquinas (virtuais) complexas.
Bibliografia Básica MONTEIRO, M. A. Introdução à organização de computadores. 5ª ed. Rio de Janeiro: Livros Técnicos e Científicos: GEN: São Paulo: 2007. STALLINGS, William. Arquitetura e organização de computadores : projeto para o desempenho. 8. ed. São Paulo Prentice Hall Brasil 2010. BARGER, Robert N. Ética na computação : uma abordagem baseada em casos. Rio de Janeiro Bibliografia Complementar: NASH, Laura L. Ética nas empresas. São Paulo Makron Books 2001.