Organização Estruturada de Computador
- Aula 1
Nesta aula abordaremos os temas de linguagens de computadores, níveis
e máquinas virtuais e máquinas multiníveis contemporâneas.
O texto abaixo é um resumo dos seções 1.1.1 e 1.1.2
do capítulo 1 do lívro: Organização Estruturada
de Computadores de Andrew S. Tanenbaum, 4a Edição, 2001.
Importante: O resumo abaixo deve ser complementado, pelo
aluno, com a leitura do texto original do livro.
Tópicos
Introdução
O computador :
- é uma máquina de solução de problemas
- executa programas - Conjunto de instruções
que descrevem como realizar uma tarefa
Os circuitos de um computador (Hardware)
- reconhecem e executam um conjunto limitado e simples de instruções
(linguagem de máquina- binária)
- exemplo: soma, comparação, transferência de
dados de uma parte da memória para outra parte
Instruções da linguagem de máquina
(decidida pelos projetistas de computadores) devem:
- ser simples
- ser compatível com o uso da máquina
- ser compatível com a performance requerida
- ter custo e complexidade da eletronica reduzidos (aplicação)
A linguagem de máquina (binária-baixo
nível) está muito distante de uma linguagem natural (humana-alto
nível)
O que as pessoas precisam fazer é complexo
X o conjunto de instruções do computador é
simples
- Exemplo: o usuário quer calcular a correção
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
Solução: Criar uma hierarquia
de abstrações de níveis mais altos baseadas nos níveis
mais baixos.
Criar uma organização estruturada de computadores
para facilitar a comunicação homem-máquina
Linguagens, Níveis e Máquinas Virtuais
Supondo 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? Temos
2 soluções:
- usar um tradutor
- usar um interpretador
TRADUTOR:
- Cada instrução
de L1 é substituída por um conjunto de instruções
equivalents 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
INTERPRETADOR:
- Cada instrução
de L1 é substituída por um conjunto de instruções
equivalents de L0
- Processador executa 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
Observação: Pode ser utilizada uma metodologia
híbrida: tradutor + interpretador
Ao invés de pensar em tradução
ou interpretação, pode-se imaginar 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:
- serem executados diretamente em M1 se esta máquina
fosse de custo de construção baixo, ou
- serem traduzidos ou interpretados para L0 e executados
em M0
Na prática se implementa a solução
2 acima. 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 um em cima do outro
como mostra a figura que segue.
Figura 1.1 Máquina de vários níveis
(Obtida do material, disponível na internet, do livro do Tanenbaum,
2001)
Máquinas Multiníveis Contemporâneas
A grande maioria dos computadores modernos é formada por 2 ou mais
níveis. A Figura abaixo mostra o esquema de um computador com 6 níveis:
Figura 1.2 Computador com 6 níveis. O método por meio do
qual cada nível é suportado aparece indicado abaixo do nível
(junto com o nome do nível que o suporta). (Obtida do material, disponível
na internet, do livro do Tanenbaum, 2001)
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 tem 1 ou mais entradas digitais (aceitam
0 ou 1) e calculam funções lógicas simples sobre essas
entradas. Exemplo: AND, OR, XOR,...
- Portas lógicas são combinadas para formar o Processador
- principal dispositivo do computador
Nível 1: Nível da Microarquitetura
- Enxergamos uma memória local (8 a 32 registradores)
e a UAL (Unidade Aritmética Lógica) que realiza operações
aritméticas muito simples
- Os registradores são conectados a UAL formando
o caminho dos dados
- Operações são controladas por um microprograma
ou diretamente por hardware
- Microprograma é um interpretador para as instruções
do nível 2. (ver exemplo no livro)
Nível 2: Nível da Arquitetura do
Conjunto de Instruções (nível
ISA - Instruction Set
Architeture)
- 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 XYZ4W), ou algo similar.
- Manuais descrevem como as instruções são executadas
interpretativamente pelo microprograma ou como elas são executadas
diretamente pelo hardware.
- Essas informações são necessárias para
os desenvolvedores de sistemas operacionais.
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.
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 primeiro 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 essa tradução é chamado
de montador
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: Exemplo: programas em Java, MatLab,
...
Observações finais importantes:
- Computadores são projetados como uma série de níveis,
cada um deles construídos em cima de seus precursores.
- Cada nível representa uma abstração distinta,
com diferntes 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.
- O conjunto de tipos de dados, operações e características
de cada um dos níveis é chamado arquitetura do nível.
- São parte da arquitetura, as características que um
programador do nível deve enxergar, por exemplo, a disponibilidade
de memória