ARQUITETURA DE COMPUTADORES
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- Aula 1 ARQUITETURA DE COMPUTADORES
Em arquitetura de computadores serão estudados aspectos da estrutura e do
funcionamento dos computadores.
O objetivo é apresentar de forma clara e abrangente a natureza e as características dos
sistemas de computação modernos.
O grande problema que encontramos nesta disciplina é acompanhar as novas tecnologias
que vem surgindo e se aperfeiçoando dia-a-dia.
1. INTRODUÇÃO
Um sistema de computação consiste em um conjunto de componentes interrelacionados,
por isso é mais fácil entender o funcionamento dos computadores se o estudarmos de forma
estruturada, de acordo com sua estrutura hierárquica.
Do ponto de vista da arquitetura é importante conhecer os atributos que são visíveis para
um programador em linguagem de máquina, e do ponto de vista da organização as unidades
operacionais e suas interconexões.
Neste sentido, o conceito de computador digital é que norteará todo o estudo da
arquitetura e organização dos computadores.
Computador digital é uma máquina que pode resolver problemas executando uma série
de instruções que lhe são fornecidas (programas).
Partindo do princípio que o computador é um equipamento que não pode resolver
problemas sem que haja instruções para tal é preciso que haja recursos de hardware ou de
software para que o computador adote determinado comportamento.
As instruções fornecidas, ou o programa, é um conjunto de instruções que descreve como
o computador realizará tal tarefa. Um exemplo perfeito disso é um robô, que realiza somente um
conjunto de instruções previamente estabelecidas.
Ainda neste prisma, é importante ressaltar que o computador não é capaz de entender
nossa linguagem de instruções, nem mesmo aquelas linguagem que usamos para programar
(Java, Pascal, C, C++, etc). É necessário que tais instruções, escritas em linguagens de
programação, sejam traduzidas para uma linguagem conhecida pela máquina, denominada
linguagem de máquina. A Linguagem de máquina é um conjunto de instruções muito básicas
e simples implementadas pelos projetistas a fim de dar funcionalidade ao computador. Devido a
sua simplicidade, sua utilização é difícil e tediosa. A linguagem de máquina (binária - baixo nível)
está muito distante de uma linguagem natural (humana - alto nível).
Devido a esta dificuldade foi que surgiu a proposta de uma maneira estruturada de
organizar os computadores, denominada Organização Estruturada de Computadores.
Os circuitos de um computador (Hardware) reconhecem e executam um conjunto limitado e
simples de instruções (linguagem de máquina - binária), como por exemplo, a soma, comparação,
transferência de dados de uma parte da memória para outra.
1
ARQUITETURA DE COMPUTADORES
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
As instruções da linguagem de máquina devem:
- Ser simples;
- Ser compatível com o uso da máquina;
- Ser compatível com a performance requerida;
- Ter custo e complexidade da eletrônica reduzida (aplicação).
2. 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)
Um questionamento a ser respondido é como compatibilizar L1 com L0?
Existem duas soluções:
- Usar um tradutor, ou
- Usar um interpretador
2.1. Tradutor
-
Cada instrução de L1 é substituída por um conjunto de instruções equivalentes de L0;
Assim, o processador executa o programa em L0;
Todo programa em L0 é carregado em memória e é executado;
O Programa pode ser traduzido uma única vez e executado várias vezes.
2.2. Interpretador
- Cada instrução de L1 é substituída por um conjunto de instruções equivalentes de L0;
- O Processador executa instrução de L1 (transformada para L0) antes de executar a
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.
No entanto, é possível utilizar 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:
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;
2
ARQUITETURA DE COMPUTADORES
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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, um em cima do outro, como mostra a figura que
se segue.
Figura 1- Máquina Multinível
3. MÁQUINAS MULTINÍVEIS CONTEMPORÂNEAS
A grande maioria dos computadores modernos é formada por dois ou mais níveis. A Figura
2 mostra o esquema de um computador com seus níveis:
3
ARQUITETURA DE COMPUTADORES
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Figura 2 - Máquina Multiníveis (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)1.
3.1. Nível 0: Nível da Lógica Digital
Este é o Nível mais baixo da estrutura. Os objetos de interesse são conhecidos como
portas lógicas, onde cada porta lógica tem uma ou mais entradas digitais (0 ou 1) e calculam
funções lógicas simples sobre essas entradas.
Embora construídas com componentes analógicos, como transistores, as portas podem ser
modeladas com precisão como dispositivos digitais. Cada porta tem uma ou mais entradas digitais
(sinais que representam O ou 1) e computa como saída alguma função simples dessas entradas,
como E (AND) ou OU (OR). Cada porta é composta de, no máximo, um conjunto de transistores.
Um pequeno número de portas pode ser combinado para formar uma memória de 1 bit, que pode
armazenar um 0 ou um 1. As memórias de 1 bit podem ser combinadas em grupos de, por
exemplo, 16, 32 ou 64 para formar registradores. Um registrador pode conter de um único número
binário até algum valor máximo. Portas também podem ser combinadas para formar o próprio
mecanismo principal de computação.
1
Tanenbaum, 2001
4
ARQUITETURA DE COMPUTADORES
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
3.2. Nível 1: Nível da Microarquitetura
Normalmente, um conjunto de 8 a 32 registradores que formam uma memória local e um
circuito denominado ALU (Arithmetic Logic Unit), ou ULA (Unidade Lógica e Aritmética), que é
capaz de executar operações aritméticas simples. Os registradores são conectados à ALU para
formar um caminho de dados através do qual os dados transitam.
A operação básica do caminho de dados consiste em selecionar um ou dois registradores,
fazendo com que a ALU efetue algo com eles (por exemplo, some-os) e armazene o resultado em
algum registrador.
Em algumas máquinas a operação do caminho de dados é controlada por um programa
denominado microprograma2. Em outras, ela é controlada diretamente por hardware.
No princípio este nível era denominado “nível de microprogramação” porque, no passado,
ele era quase sempre um interpretador de software. Atualmente o caminho de dados costuma ser,
de modo parcial, controlado diretamente por hardware.
Em máquinas nas quais o caminho de dados é controlado por software, o microprograma é
um interpretador para as instruções no nível 2. Ele busca, examina e executa instruções uma por
uma, usando o caminho de dados para fazê-lo. Por exemplo, no caso de uma instrução ADD
(SOME), a instrução seria buscada, seus operandos, localizados e trazidos para dentro do
registrador, a soma seria calculada pela ALU e, por fim, o resultado seria enviado de volta ao lugar
a que pertence. Em uma máquina com controle incorporado do caminho de dados, ocorreriam
etapas semelhantes, mas sem um programa explícito armazenado para controlar a interpretação
das instruções do nível 2.
3.3. Nível 2: Nível da Arquitetura do Conjunto de Instruções ( nível ISA - Instruction Set
Architeture)
É um nível definido pelo fabricante e dependente da arquitetura da máquina.
Os fabricantes disponibilizam um "Manual de Referência da Linguagem de Máquina" ou
"Princípios de operação do Computador Modelo XYZ4W), ou algo similar. Nestes manuais deve
constar a descrição de como as instruções são executadas interpretativamente pelo
microprograma ou como elas são executadas diretamente pelo hardware. Quando descrevem o
conjunto de instruções da máquina, estão de fato descrevendo as instruções executadas por
interpretação pelo microprograma ou pelos circuitos de execução do hardware.
Essas informações são necessárias para os desenvolvedores de sistemas operacionais.
3.4. Nível 3: Nível do Sistema Operacional
No nível 3 as instruções da linguagem deste nível também podem conter instruções do
nível ISA.
2
Microprograma é um interpretador para as instruções do nível 2.
5
ARQUITETURA DE COMPUTADORES
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Suporta uma organização diferente de memória e tem capacidade de rodar dois ou mais
programas simultaneamente, suportando inclusive 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 são chamados
programadores de aplicação.
3.5. Nível 4: Nível da linguagem do montador ou de montagem (Assembly language)
Neste nível encontra-se a Linguagem de montagem que é uma forma simbólica de
representação das linguagens do nível mais baixo.
Esse nível fornece um método para as pessoas escreverem programas para os níveis 1,2 e
3 em uma forma que não seja tão desagradável quanto as linguagens de máquina real em si.
Programas em linguagem de montagem são primeiro traduzidos para linguagem de nível 1, 2 ou
3, e em seguida interpretados pela máquina real ou real adequada. O programa que realiza a
tradução é denominado assembler (montador).
3.6. Nível 5: Nível das linguagens orientadas para solução dos problemas
O nível 5 habitualmente consiste em linguagens projetadas para ser usadas por
programadores de aplicações que tenham um problema a resolver. Essas linguagens costumam
ser denominadas linguagens de alto nível. Neste nível encontram-se as conhecidas linguagens
de alto nível como Basic, C, Pascal, Java, LISP, etc;
Os Programas construídos por estas ferramentas são geralmente traduzidos para os níveis
3 e 4 por compiladores; Alguns são interpretados: Exemplo: programas em Java, MatLab, etc.
OBSERVAÇÕES IMPORTANTES
- Computadores são projetados como uma série de níveis, cada um deles é construído em
cima de seu precursor.
- 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 há 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,
como por exemplo, a disponibilidade de memória.
4. EVOLUÇÃO DAS MÁQUINAS DE VÁRIOS NÍVEIS
Os programas escrito na verdadeira linguagem de máquina de um computador (Nível 1)
podem ser executados diretamente pelos circuitos eletrônicos/hardware (nível 0) desse
computador sem necessidade da intervenção de interpretadores ou de tradutores.
6
ARQUITETURA DE COMPUTADORES
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Em contraste ao hardware, o software é composto de algoritmos e por suas representações
computacionais, que podem ser armazenados em discos, sendo sua essência o conjunto de
instruções e não o meio físico no qual eles são gravados.
Com a evolução dos sistemas, a fronteira entre hardware e software tem desaparecido, por
conta do acréscimo, da remoção e da combinação de níveis.
Hardware e software são equivalentes logicamente
Qualquer operação realizada por software pode também ser realizada por hardware, pois o
hardware é simplesmente o software petrificado. Neste caso, a recíproca é verdadeira e o
inverso pode ocorrer. Exemplo claro são os DVD's e placas criptográficas.
A decisão em deixar algumas funções a cargo de hardware ou de software baseia-se em
fatores como custo, velocidade, confiabilidade e freqüência esperada de mudanças.
4.1. A invenção da microprogramação
Na década de 40 os computadores tinham somente dois níveis: O nível ISA, onde toda
programação é realizada e o nível da lógica digital, onde os programas são executados. Os
circuitos do nível da lógica digital eram complicados, difíceis de entender e construir, além de
pouco confiáveis.
Na década de 50, surgiu a idéia de se construir um computador em três níveis. Este
deveria ter acoplado a si um interpretador (microprograma) com a função de executar programas
escritos no nível ISA por interpretação, fazendo com que os computadores precisassem de menos
circuitos eletrônicos. Há de se considerar que os computadores da época eram construídos com
válvulas e sua diminuição aumentava a confiabilidade dos sistemas.
Em 1970 essa prática tornou-se comum.
4.2. A invenção do Sistema Operacional
Nos primórdios, os computadores eram operados pelo próprio programador, o qual com
seus cartões perfurados carregavam um programa na memória e ele executava sua tarefa.
Por volta de 1960, pare reduzir o tempo gasto na execução de programas, automatizando
os trabalhos de operação da máquina, foi criado o sistema operacional. Este era mantido na
memória do computador durante todo o tempo automatizava e gerenciava as atividades antes
desenvolvidas pelo programador.
Com o tempo os sistemas operacionais evoluíram incorporando novas funções ao nível ISA,
incluindo novas operações para tratamento de entrada e saída. Estas instruções foram conhecidas
como macros do sistema operacional ou como chamadas ao supervisor. Atualmente é usada
a expressão chamada de sistema.
Os primeiros Sistemas Operacionais eram conhecidos como sistemas batch e consumiam
algumas horas para execução de alguns programas.
Ainda em 1960, foram concebidos os primeiros sistemas de tempo compartilhado,
onde vários usuários poderiam compartilhar o uso do processador.
7
ARQUITETURA DE COMPUTADORES
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
4.3. Migração de Funcionalidade para o Microcódigo
Nos idos de 1970 o conceito de microprograma tornou-se muito comum, oportunidade em
que os projetistas acrescentaram novas instruções ao conjunto de instruções do processador
simplesmente expandindo o microprograma.
Instruções como as abaixo relacionadas foram incorporadas:
- Instruções para multiplicação e para divisão de números inteiros;
- Aritmética em ponto flutuante;
- Chamada e retorno de procedimentos;
- Acelerar a execução de loops;
- Manipular strings e caracteres.
Pela facilidade incluíram algumas funcionalidades:
- Funcionalidade para acelerar o processamento de programa envolvendo cálculo matricial;
- Funcionalidade para permitir que os programas pudessem ser deslocados de posição na
memória pós o início da execução;
- Sistemas de interrupção que enviam um sinal para o processador tão logo uma operação
de entrada ou de saída termine;
- Capacidade de suspender a execução de um programa e iniciar a execução de outro,
usando para isso um número muito pequeno de instruções.
4.4. A Eliminação da Microprogramação
Durante a chamada era de ouro da microprogramação (1960-1970), os microprogramas
cresceram muito e tornaram-se muito lentos. Em alguns casos, o projeto dos computadores dava
uma volta de 360º voltando à situação anterior à invenção da microprogramação.
Com isso, pode-se provar que a fronteira entre o hardware e o software é arbitrária e está
sempre em mudança.
Do ponto de vista do programador não interessa muito como uma instrução é realmente
implementada, exceto se a implementação influir na velocidade de execução da instrução.
5. CONCLUSÃO
Com isso, verificamos principalmente os níveis de organização dos sistemas computacionais
bem como um breve relato de sua evolução. Sabe-se que tal posicionamento nunca é constante,
podendo evoluir no decorrer dos tempos de acordo com a evolução da tecnologia, como visto com
a eliminação da microprogramação. Contudo, tais circunstâncias sevem para nos trazer uma noção
de como os sistemas computacionais estão estruturados e organizados em níveis bastante
distintos.
6. BIBLIOGRAFIA
TANENBAUM, Andrew S. de. Organização Estruturada de Computadores, 4ª Edição, 2001
STALLINGS, William. Arquitetura de Computadores.
8
Download

(Aula 1 - Introdução