ORGANIZAÇÃO ESTRUTURADA DE COMPUTADORES

Propaganda
Resumo do 1.Cap - ORGANIZAÇÃO ESTRUTURADA DE
COMPUTADORES
Segundo Tanenbaum, um computador é uma máquina capaz de solucionar
problemas através da execução de instruções que lhe são fornecidas. As
instruções são normalmente passadas através de um programa, que nada
mais é que uma sequência de instruções descrevendo como executar uma
determinada tarefa.
Os circuitos eletrônicos que compõem o computador são capazes de reconhecer
e executar diretamente um conjunto limitado de simples. Estas instruções
constituem uma linguagem (linguagem de máquina) através da qual se é
possível "comunicar" com a máquina. A escolha deste conjunto de instruções
primitivas é uma tarefa importante e delicada, envolvendo:
o
o
o
Simplicidade. Por uma questão de custo da máquina o conjunto
de instruções deve ser tão simples quanto possível.
Consistência: A simplicidade não deve interferir com a
consistência do conjunto de instruções em relação ao uso
prioritário da máquina.
Desempenho: Mesmo para usos domésticos espera-se de toda
máquina um desempenho mínimo. O conjunto de instruções deve
contribuir com o desempenho.
Normalmente as linguagens de máquina obtidas com a observância dos itens
acima são de utilização tediosa e complexa. Em outras palavras máquinas com
as quais só é possível "dialogar" através do uso das linguagens de máquina
teriam pouco sucesso comercial. A solução para este problema envolve sempre
a definição de outra linguagem de uso mais simples e agradável. Chame de L1
a linguagem de máquina com a qual é possível "dialogar" diretamente com o
computador. A definição de uma linguagem mais simples L2 gera o seguinte
problema.
Como interagir com uma máquina que só aceita comandos na linguagem L1,
utilizando comandos da linguagem L2?
Basicamente dois métodos permitem a utilização de linguagens diferentes pelo
usuário e a máquina:
o
o
Tradução: Neste método, o programa escrito em linguagem L2 é
inteiramente traduzido por um conjunto de instruções
equivalentes na linguagem L1. O programa traduzido (linguagem
L1) é então fornecido a máquina que o executa como se o
programa em linguagem L2 não existisse.
Interpretação: Com este método, um programa escrito em
linguagem L1 recebe os programas escritos em linguagem L2 e,
instrução por instrução, executa uma sequência de instruções L1
equivalentes à instrução L2 lida.
A diferença básica dos dois métodos está no tempo de geração da sequência de
instruções L1 equivalentes ao programa escrito em linguagem L2. Na tradução
todo um programa L1 equivalente é gerado antes que qualquer execução seja
iniciada. Na interpretação não há geração de programa equivalente em L1,
cada instrução L2 é examinada e uma sequência de instruções L1 é executada.
Estes dois métodos são largamente utilizados, inclusive em linguagens de alto
nível. Temos, por exemplo, que a linguagem C e traduzida, pois um
compilador gera um programa equivalente em uma linguagem de máquina
específica antes que a execução seja iniciada. Por sua vez a linguagem HTML é
traduzida, pois os comandos HTML são interpretados para a construção de uma
imagem da página.
Máquinas Virtuais
Sabe-se então que as linguagens de máquina são definidas em observância a
princípios de simplicidade, consistência e desempenho. A observância destes
princípios pode, entretanto, conduzir a definição de máquinas cuja
programação é complexa e tediosa. Definindo-se uma linguagem L2 de uso
mais simples e agradável, podemos, em vez de pensar em termos de tradução
e interpretação, pensar em termos da existência de uma máquina virtual cuja
linguagem de maquina seja L2. Obviamente este computador não pode ser
construído fisicamente, pois, certamente, seus circuitos eletrônicos não seriam
simples e não apresentariam desempenho satisfatório. Também é possível que
a linguagem L2 não possa ser muito diferente da linguagem L1, caso contrário
à tradução ou interpretação não seriam praticáveis. Seguindo esta linha de
raciocínio pode-se pensar em máquinas virtuais de vários níveis (1, 2, 3,...,
n). Ressalte-se, porem, que apenas a máquina virtual de nível 1 existe
fisicamente, todas as outras são resultadas de traduções ou interpretações, que
culminam com a execução de programas na linguagem L1.
Máquinas Multinível Contemporâneas
Tanenbaum classifica as máquinas contemporâneas como sendo máquinas
multinível. Na sua descrição seis níveis são apresentados:
o
o
Nível de lógica digital (nível 0): Neste nível encontra-se a
descrição da máquina como uma malha de portas lógicas
interconectadas. Subconjuntos destas portas lógicas definem
dispositivos lógicos com binacionais e sequenciais, que podem ser
formalmente descritos através da álgebra booleana. Neste nível
não existe o conceito de programa como uma sequência de
instruções.
Nível de Micro programação (nível 1): Neste nível
encontram-se dispositivos e recursos, tais como, ULAs,
registradores, decodificadores, multiplexadores, vias de dados,
etc. Cada um destes dispositivos e recursos é capaz de executar
um número limitado de operações, definidas por sinais de
controle. O nível de micro programação já suporta o conceito de
programa (micro programa) como uma sequência instruções a
o
o
o
o
serem executadas. Pode-se dizer também que o nível de micro
programação oferece uma visão detalhada do
processador/microprocessador (microarquitetura ou caminho de
dados).
Nível de máquina convencional (nível 2): Neste nível existe o
que normalmente conhecemos como linguagem de máquina. Ou
seja, para cada microprocessador, este nível define uma ou mais
máquinas virtuais, cuja linguagem é interpretada por um ou mais
micro programas. Para se tiver uma ideia mais clara, quando um
fabricante define a instrução de nível 2 ADD R, que adiciona o
conteúdo do registrador R ao conteúdo de um acumulador
(default), nada é especificado sobre a estrutura de hardware,
ou a sequência de micro operações capaz de executa-la. O micro
programa, por sua vez, é inteiramente baseado nesta informação.
O nível de máquina convencional oferece uma visão do macro
arquitetura da máquina (interação do
processador/microprocessador com barramentos externos,
unidades de memória, dispositivos de I/O, etc.).
Nível de sistema operacional (nível 3): Este nível é a
fronteira entre o hardware e o software. O sistema operacional,
normalmente, assume as funções de gerenciar os recursos de
hardware e oferecer uma interface simplificada. Os usuários deste
nível podem ser programas do nível 4 ou usuários humanos.
Nível de linguagem de montagem (nível 4): Este é o
primeiro nível desenvolvido para usuários (programadores)
comuns (aqueles que simplesmente traduzem a solução de
problema em programas). O nível 4, ao contrário dos níveis 1, 2 e
3 oferecem linguagens orientadas à utilização humana,
constituídas de palavras e mnemônicos, que permitem uma
compreensão mais simbólica dos problemas tratados. Outra
diferença básica entre os níveis 1, 2 e 3, de um lado, e os níveis 4
e 5, de outro, é que, estes últimos, são normalmente suportados
por tradução, enquanto que os demais são normalmente
suportados por interpretação.
Nível de linguagem de programação (nível 5): Não há um
nome de aceitação gera para este nível, pode ser chamado, come
o faz Tanenbaum, de "nível de linguagem orientada para
problemas", ou qualquer outro nome que indique que este é um
nível de linguagem voltada para o usuário final. Neste nível a
máquina virtual oferecida é suficientemente abstrata para que
possa ser utilizadas por qualquer programador com
conhecimentos razoáveis em algoritmos, estruturas e na
linguagem disponível a este nível. Bons exemplos para este nível
de máquina virtual são as ditas linguagens de alto nível. Para
estas linguagens, tais como, C, C++, Java, pascal, FORTRAN, etc.
A máquina virtual neste nível é, como dito anteriormente,
suportadas por tradução, através dos compiladores destas
linguagens.
Embora a apresentação acima possa ser feita sem constrangimento, não há
uma definição demasiadamente rígida sobre o que está presente em cada nível.
Cabe aos projetistas decidirem o que colocar em cada nível. O estudo da
evolução das arquiteturas de computadores, durante os últimos 60 anos,
mostra que já ocorreram muitas mudanças nas preferências dos projetistas
quanto ao melhor nível para disponibilizar certos recursos. Os lemas "toda
complexidade é do software" e "toda complexidade é do hardware", usados
separadamente em épocas distintas, reflete bem as variações das preferências
dos projetistas. O importante desta questão é estudas as justificativas que
norteiam cada projeto, baseados nos princípios da simplicidade, consistência,
desempenho e acrescente-se relação custo/desempenho.
Download