Você está na página 1de 11

8

série livros didáticos informática ufrgs

fundamentos
de arquitetura
de computadores
4 ª e d i çã o

raul fernando weber


o autor
Raul Fernando Weber é engenheiro eletrônico e mestre em ciência da computação pela
UFRGS e doutor em ciência da computação pela Universidade de Karlsruhe, Alemanha. É
professor associado do Instituto de Informática da UFRGS. Participa ativamente da comissão
de graduação do curso de ciência da computação, da câmara de graduação e do conselho
de ensino, pesquisa e extensão, todos da UFRGS. Suas áreas de interesse são arquitetura de
computadores, segurança de sistema de computação, criptografia, programação segura e
história da computação.

W373f Weber, Raul Fernando.


Fundamentos de arquitetura de computadores [recurso
eletrônico] / Raul Fernando Weber. – 4. ed. – Dados eletrônicos.
– Porto Alegre : Bookman, 2012.

Editado também como livro impresso em 2012.


ISBN 978-85-407-0143-4

1. Ciência da computação. 2. Arquitetura dos computadores.


I. Título.

CDU 004.2

Catalogação na publicação: Fernanda B. Handke dos Santos – CRB 10/2107


34 Fundamentos de Arquitetura de Computadores

3.1 breve histórico

Máquinas de calcular e computadores vêm sendo inventados e desenvolvidos ao longo da


história da humanidade. Na Tabela 3.1 estão reunidas algumas das principais tentativas de
valor histórico no âmbito computacional. Uma das mais importantes investidas na área com-
putacional, e que merece registro histórico, foi a do inglês Charles Babbage. Ele projetou dois
computadores: Difference Engine (“Dispositivo Diferencial”), iniciado em 1823, e o Analyti-
cal Engine (“Dispositivo Analítico”), concebido em 1834, tendo ambos representado grandes
avanços científicos em sua época, embora nenhum deles tenha sido concluído. O objetivo do
Dispositivo Diferencial era o cômputo automático de tabelas matemáticas. Sua única operação
era a adição, mas a máquina podia resolver muitas funções úteis pela técnica de diferenças fi-
nitas. Esta máquina foi projetada para polinômios de grau 6 e números binários de 20 dígitos,
mas não foi concluída devido a problemas de inadequação da tecnologia mecânica disponível.
Outra tentativa de Babbage foi a construção do Dispositivo Analítico, que deveria realizar
qualquer operação matemática automaticamente. Esta máquina já tinha módulos de arma-
zenamento (memória) e uma unidade operadora (realizando quatro operações aritméticas).
A entrada e saída de dados era feita por meio de cartões perfurados. Esta máquina permitia a
alteração da sequência dos comandos executados, dependendo do resultado de testes realiza-
dos. Novamente por problemas técnicos, sua construção não chegou ao final.

tabela 3.1 Principais avanços na computação

inventor:
data máquina capacidade inovações técnicas

1642 Pascal: adição, subtração transferência automática de vai-um;


Calculadora representação em complemento
1671 Leibnitz: adição, subtração, mecanismo para multiplicação e
Calculadora multiplicação, divisão divisão
1827 Babbage: avaliação polinomial por operação automática com diversos
Difference Engine diferenças finitas passos
1834 Babbage: computador de mecanismo automático de controle
Analytical Engine propósitos gerais de sequência (programa)
1941 Zuse: computador de primeiros computadores de
Z3 propósitos gerais propósitos gerais operacionais
1944 Aiken: computador de primeiros computadores de
Harward Mark I propósitos gerais propósitos gerais operacionais

Uma das primeiras tentativas para a construção de computadores eletrônicos foi feita por
volta de 1930 por John Atanasoff, na Universidade Estadual de Iowa. Era uma máquina cons-
truída com base em válvulas para a resolução de equações lineares.
O primeiro computador eletrônico de propósitos gerais foi provavelmente o ENIAC (Eletro-
nic Numerical Integrator and Calculator), construído entre 1943 e 1946, na Universidade da
Pensilvânia, sob a coordenação de J. Mauchly e J. P. Eckert. Analogamente à primeira máquina
Capítulo 3 Componentes do Computador e Modelo de Von Neumann 35

de Babbage, parte da motivação do ENIAC foi a necessidade de construir tabelas de forma


automática, por interesse do sistema militar americano (tabelas balísticas). Fisicamente, era
uma máquina enorme, que pesava 30 toneladas e empregava cerca de 18 mil válvulas. Para
se ter uma ideia do tempo de execução nesta máquina, eram necessários cerca de 3 ms para
a realização de uma multiplicação de dez dígitos (decimais), o que se constituiu em grande
avanço para a época. Ela trabalhava preponderantemente com valores decimais e não biná-
rios. Na Figura 3.1 é mostrada a estrutura básica do ENIAC.

leitora de impressora e
cartões perfuradora de cartões

divisor
tabelas de acumuladores
multiplicador e raiz
funções (registradores)
quadrada

unidade mestre
de programação

figura 3.1 Estrutura básica do ENIAC

Com o avanço da pesquisa e o consequente desenvolvimento tecnológico, houve grandes


modificações nos computadores. Ao longo do tempo, a tecnologia e os estilos usados na
construção e programação formaram várias gerações de computadores. A Tabela 3.2 apre-
senta as gerações de computadores de acordo com sua evolução histórica.

tabela 3.2 Gerações de computadores

característica de característica de
geração tecnologias hardware software exemplo

1a válvulas, memória aritmética de ponto linguagem de máquina, IAS, UNIVAC


(1946-1954) de tubos catódicos fixo linguagem assembler
2a transistores, núcleos ponto flutuante, linguagens de alto nível, IBM7094
(1955-1964) de ferrite, discos registrador índice, bibliotecas de rotinas, CDC1604
magnéticos processadores E/S processamento em lote
3a circuitos integrados microprogramação, multiprogramação, IBM S/360;
(1965-1974) (SSI e MSI) pipeline, memória multiprocessamento, DEC PDP-8
cache sistema operacional,
memória virtual
4a circuitos LSI, Amdahl 470;
(1975-?) memórias Intel 8748
semicondutoras
36 Fundamentos de Arquitetura de Computadores

Atualmente, essa tabela (Hayes, 1978) já poderia ser completada com uma quinta geração,
que incluiria as máquinas maciçamente paralelas, os circuitos VLSI, as máquinas “data-flow”,
etc., dependendo do parâmetro escolhido para embasar esta evolução. Entretanto, não surgiu
um marco notável que caracterizasse perfeitamente uma “máquina de quinta geração” (em-
bora vários projetos neste sentido tenham iniciado na década de 1980, nenhum foi concluído
com sucesso).

3.2 princípios básicos

Cada computador tem um conjunto de operações e convenções único para determinar as


posições dos dados com os quais a operação será realizada. Os vários computadores diferem
nas operações específicas que fornecem e nos métodos que usam para referenciar os dados a
serem manipulados por uma operação. Em geral, uma operação tem a forma
OPERAÇÃO OPERANDOS
e é denominada de instrução. OPERAÇÃO especifica a função que será desempenhada;
OPERANDOS fornece a maneira de calcular a posição atual dos dados com os quais a opera-
ção será realizada.
Um programa é constituído de uma sequência predeterminada de instruções, que deve
ser seguida para que seja alcançando o objetivo computacional. Este programa e os dados
correspondentes estão armazenados na memória da máquina; o conjunto de instruções (ou
programa) deve ser interpretado para a realização do processamento, isto é, a informação co-
dificada correspondente às ações e aos operandos precisa ser entendida e então processada.
A memória de um sistema de computador tem a função de armazenar dados e instru-
ções; é organizada em posições, que podem ser visualizadas como elementos em uma
matriz. Cada elemento tem um endereço. Assim, pode-se falar de uma memória que
tenha x posições: cada posição pode ser referenciada diretamente de acordo com a sua co-
locação na sequência. Por exemplo, se uma memória tem 4096 posições, existem posições
de memória 0, 1, 2, 3,...., 4094 e 4095. Quando um destes números aparece nos circuitos
de controle conectados à memória, o conteúdo (o valor que está na posição) será trazido
da memória para os circuitos da unidade de processamento ou a informação na unidade
de processamento será armazenada na memória, dependendo do trabalho associado com
o endereço.
Instruções em um computador são executadas em uma sequência determinada por suas po-
sições de memória. Na maioria dos computadores (que formam a classe das chamadas má-
quinas de von Neumann, cujo modelo básico será visto na seção 3.5), instruções e dados são
distribuídos em posições de memória.
O endereço representa uma posição particular na memória e pode ser formado de vários mo-
dos. A representação trivial de um endereço está na parte de uma instrução chamada campo
de endereço. Contudo, há várias maneiras de modificar um campo de endereço por valores
Capítulo 3 Componentes do Computador e Modelo de Von Neumann 37

em outras partes do processador (aritmética de endereços). As diversas possibilidades e van-


tagens destas técnicas serão mostradas em capítulos posteriores.
A unidade lógica e aritmética realiza ações indicadas nas instruções, executando operações
numéricas (aritméticas) e não numéricas (lógicas), além da preparação de informações para
desvios do programa. O controle do programa e a unidade lógica e aritmética formam a uni-
dade central de processamento (UCP), ou simplesmente processador.

Busca – decodificação – execução de instruções


Um elemento no processador, denominado de contador de instruções ou apontador de ins-
truções, contém a posição da próxima instrução a ser executada. Quando uma sequência de
execução de instruções tem início, a instrução cujo endereço está no contador de instruções
é trazida da memória para uma área de armazenamento chamada registrador de instrução.
Este processo é conhecido como busca de instrução.
A instrução é interpretada por circuitos de decodificação que geram sinais eletrônicos no pro-
cessador como resultado do valor do campo de operação, isto é, decodificam a informação
correspondente à operação a ser realizada.
Esses sinais, ou essa sequência de sinais, resultam na execução da instrução. Execução é
a aplicação da função do operador nos operandos. Quando a execução de uma instrução é
terminada, o contador de instruções é atualizado para o endereço de memória da próxima
instrução. Esta instrução é então trazida da memória para o registrador de instruções e execu-
tada, repetindo-se assim o ciclo de busca-decodificação-execução.
A sequência de instruções pode mudar como resultado de uma instrução que direciona um
desvio (também chamado transferência ou salto). Instruções deste tipo contêm o endereço
da próxima instrução a ser executada, em vez do endereço de um operando. Elas causam mu-
danças no fluxo do programa como resultado das condições nos dados. O desvio condicional
representado por uma estrutura de programação de alto nível de IF (teste para uma condição
especificada e alteração do fluxo de programa se a condição é atendida) traduz-se em algum
tipo de instrução de desvio.

3.3 elementos funcionais básicos

Um computador é composto por blocos convencionalmente chamados de memória, unida-


des operacionais, unidades de controle e dispositivos de entrada e saída (Figura 3.2).
A unidade operacional e a unidade de controle têm funções específicas. Reunidas, entretan-
to, recebem no seu conjunto a denominação de unidade central de processamento (UCP)
ou processador. Memórias, unidades operacionais, unidades de controle e dispositivos de
entrada e saída são formados por elementos de menor complexidade, como registradores,
contadores, multiplexadores, seletores, decodificadores, somadores e portas lógicas (AND,
OR, INVERSOR).
38 Fundamentos de Arquitetura de Computadores

Registradores são elementos digitais com capacidade de armazenar dados e têm associados a
si sinais de carga, que determinam quando serão armazenados novos conteúdos neles. Ao ser
acionado o sinal de carga, o registrador copia para si o dado que está em suas linhas de entrada.
Contadores, multiplexadores, seletores, decodificadores, somadores e portas lógicas são ele-
mentos com capacidade de operar sobre dados, alterando-os ou fornecendo um novo dado
como resultado da operação que realizam.
Elementos digitais necessitam ser ativados ou habilitados para realizar uma determinada ope-
ração. Os sinais responsáveis pela ativação ou habilitação de componentes digitais são conhe-
cidos como sinais de controle.

memória

unidade
controle
operacional

entrada/
saída

figura 3.2 Elementos básicos de um computador.

Dados são transferidos, entre os diversos elementos de um computador, por caminhos físicos
chamados barramentos. Barramentos são caminhos que permitem o transporte de da-
dos entre os vários elementos da parte operacional, memória e sistema de entrada e saída.
Um barramento só pode receber dados de uma fonte de cada vez. Do ponto de vista de
arquitetura, um barramento se caracteriza pela sua largura em bits. A largura em bits do
barramento deve corresponder ao comprimento dos elementos (dados, endereço, controle)
que são por ele transportados.
Cada um dos blocos básicos do computador é comentado, em detalhes, a seguir.

3.3.1 memória

A memória é formada por elementos armazenadores de informação. Uma memória está divi-
dida em palavras. Cada palavra é identificada univocamente por um endereço. O conteúdo
armazenado nas palavras da memória tanto pode representar dados como instruções. Um es-
quema da estrutura convencional para a memória de um computador é mostrado na Figura 3.3.
Capítulo 3 Componentes do Computador e Modelo de Von Neumann 39

read
R
E memória
M write

RDM

figura 3.3 Modelo estrutural da memória.

Os registradores mostrados na Figura 3.3 são:


REM: registrador de endereços da memória – contém o endereço do dado a ser lido ou
escrito na memória.
RDM: registrador de dados da memória – contém o dado a ser escrito na memória, no
caso de uma operação de escrita (write), ou o dado lido da memória, no caso de uma
operação de leitura (read).
Os sinais de controle significam:
read: leitura da memória – o conteúdo da posição de memória endereçada por REM é
copiado em RDM.
write: escrita na memória – a posição de memória endereçada por REM recebe o conteúdo
de RDM.
Uma memória é caracterizada por vários parâmetros, mas os mais importantes são tamanho,
velocidade e tecnologia. No nível de arquitetura, interessam somente o tamanho da palavra
em bits e o tamanho da memória em palavras. Estes tamanhos geralmente são indicados
sob a forma de potências de dois. O tamanho da palavra determina o comprimento em bits
do RDM (registrador de dados), o tamanho da memória, o comprimento em bits do REM
(registrador de endereços).

3.3.2 unidade operacional

A unidade operacional, também chamada de bloco operacional, executa as transformações


sobre dados especificadas pelas instruções de um computador. Compõe-se basicamente de
uma unidade lógica e aritmética, de registradores de uso geral e específico e dos barramentos
que interligam todos esses elementos.
O número, tamanho e uso dos registradores e a quantidade e o tipo de operações que a
unidade lógica e aritmética realiza são alguns dos fatores que determinam o porte de um
processador.
40 Fundamentos de Arquitetura de Computadores

Unidade lógica e aritmética (ULA)


A ULA realiza operações aritméticas e operações lógicas sobre um ou mais operandos. Exem-
plos de operações realizadas pela ULA: soma de dois operandos; negação de um operando;
inversão de um operando; AND (“E” lógico) de dois operandos; OR (“OU” lógico) de dois
operandos; deslocamento de um operando para a esquerda ou para a direita; rotação de um
operando para a esquerda ou para a direita.
As operações da ULA são, geralmente, muito simples. Funções mais complexas, exigidas pelas
instruções da máquina, são realizadas pela ativação sequencial das várias operações básicas
disponíveis. Um exemplo é a execução de instruções de multiplicação em alguns computado-
res, que compreende a ativação de operações sucessivas de soma e de deslocamento na ULA.
A ULA fornece o resultado e algumas indicações da operação realizada, chamadas de códi-
gos de condição. Exemplos de alguns códigos de condição comumente gerados na ULA
são:
■ overflow: (ou estouro de campo) indica que o resultado de uma operação aritmética
não pode ser representado no espaço (tamanho da palavra) disponível.
■ sinal: indica se o resultado da operação é negativo ou positivo.
■ carry: dependendo da operação realizada (soma ou subtração) pode representar o
bit de vai-um (carry-out) ou vem-um (borrow-out). Usado muitas vezes em
operações de deslocamento para guardar ou fornecer o bit deslocado. A indi-
cação de carry não deve ser confundida com overflow.
■ zero: indica se o resultado da operação realizada é nulo.
O modelo estrutural da unidade lógica e aritmética é mostrado na Figura 3.4.

operandos

códigos de
controle
ULA condição

resultado

figura 3.4 Modelo estrutural da ULA.

Os sinais de controle que devem ser fornecidos para a ULA servem para selecionar a operação
desejada entre as operações básicas disponíveis. Convém salientar que a ULA não armazena o
resultado, nem os operandos e os códigos de condição gerados.
Capítulo 3 Componentes do Computador e Modelo de Von Neumann 41

Uma ULA se caracteriza por:


■ comprimento em bits dos operandos
■ número e tipo de operações
■ códigos de condição gerados

Acumulador
O acumulador é um registrador e tem por função armazenar um operando e/ou um resul-
tado fornecido pela ULA. Nos computadores mais simples é encontrado apenas um acumu-
lador. Em algumas arquiteturas mais complexas vários registradores podem desempenhar as
funções de um acumulador.
Como todos os registradores, o acumulador é ativado por um sinal de controle de carga.
A cada sinal de carga, o dado na entrada do registrador é copiado para o seu interior (obvia-
mente, o antigo conteúdo do acumulador é perdido).
Um acumulador, sendo um registrador, é caracterizado ao nível de arquitetura apenas pelo
seu comprimento em bits.
Encerra aqui o trecho do livro disponibilizado para
esta Unidade de Aprendizagem. Na Biblioteca Virtual
da Instituição, você encontra a obra na íntegra.

Você também pode gostar