Vous êtes sur la page 1sur 0

3-1

Captulo
TRS
Componentes do computador e modelo de von Neumann
3. 1 Breve histrico
Uma das mais importantes investidas na rea computacional, e que merece registro histrico,
foi a do ingls Charles Babbage. Ele projetou dois computadores: Difference Engine
(denominado a seguir Dispositivo Diferencial), iniciado em 1823, e o Analytical Engine
(Dispositivo Analtico), concebido em 1834, tendo ambos representado grandes avanos
cientficos em sua poca, embora nenhuma deles tenha sido concludo. O objetivo do
Dispositivo Diferencial era o cmputo automtico de tabelas matemticas. Sua nica operao
era a adio, mas a mquina podia resolver grande nmero de funes teis pela tcnica de
diferenas finitas. Esta mquina foi projetada para polinmios de grau 6 e nmeros binrios
de 20 dgitos, mas no foi concluda devido a problemas de inadequao da tecnologia
mecnica disponvel. Outra tentativa de Babbage, foi a construo do Dispositivo Analtico,
que deveria realizar qualquer operao matemtica automaticamente. Esta mquina j tinha
mdulos de armazenamento (memria) e uma unidade operadora (realizando 4 operaes
aritmticas). A entrada e sada de dados era feita atravs de cartes perfurados. Esta mquina
permitia a alterao da seqncia dos comandos executados, dependendo do resultado de
testes realizados. Novamente por problemas tcnicos, a construo desta mquina no
chegou ao final. Na tabela a seguir esto reunidas algumas das principais tentativas de valor
histrico no mbito computacional.
Data Inventor:mquina Capacidade Inovaes tcnicas
1642 Pascal adio, subtrao transferncia automtica de vai-um;
representao em complemento
1671 Leibnitz adio, subtrao,
multipl., diviso
mecanismo para multiplicao
e diviso
1827 Babbage:
Difference Engine
avaliao polinomial
por diferenas finitas
operao automtica
com diversos passos
1834 Babbage:
Analytical Engine
computador de
propsitos gerais
mecanismo automtico de controle
de sequncia (programa)
1941 Zuse: Z3 computador de
propsitos gerais
primeiros computadores de
propsitos gerais operacionais
1944 Aiken:
Harward Mark I
computador de
propsitos gerais
primeiros computadores de
propsitos gerais operacionais
Tabela 3.1 - Principais avanos na computao
Uma das primeiras tentativas para construo de computadores eletrnicos foi feita por volta
de 1930 por John Atanasoff, na Universidade Estadual de Iowa. Era uma mquina
construda com base em vlvulas para resoluo de equaes lineares.
O primeiro computador eletrnico de propsitos gerais foi provavelmente o ENIAC
(Eletronic Numerical Integrator and Calculator), construdo entre 1943 e 1946, na
Universidade da Pensilvnia, sob a coordenao de J. Mauchly e J. P. Eckert. Analogamente
primeira mquina de Babbage, parte da motivao do ENIAC foi a necessidade de construir
tabelas de forma automtica, por interesse do sistema militar americano (tabelas balsticas).
Fisicamente, era uma mquina enorme que pesava 30 toneladas e empregava cerca de 18000
3-2
vlvulas. Para se ter uma idia do tempo de execuo nesta mquina, eram necessrios cerca
de 3 ms para realizao de uma multiplicao de 10 dgitos (decimais), o que se constituiu em
grande avano para a poca. Ele trabalhava preponderantemente com valores decimais e no
binrios. Na Figura 3.1 mostrada a estrutura bsica do ENIAC.
Com o avano da pesquisa e o conseqente desenvolvimento tecnolgico, houve grandes
modificaes nos computadores. Basicamente, ao longo do tempo, a tecnologia e os estilos
usados na construo de computadores apresentam pontos comuns, que nos permitem
classific-los em geraes. Na tabela a seguir, so apresentadas as geraes de computadores
de acordo com sua classificao histrica.
Gerao Tecnologias Caracterstica de
hardware
Caracterstica de
software
Exemplo
1
a
(1946 -
54)
Vlvulas,
memria de tubos
catdicos
aritmtica de
ponto fixo
linguagem de
mquina, linguagem
assembler
IAS,
UNIVAC
2
a
(1955 -
64)
Transistores, ncleos
de ferrite, discos
magnticos
ponto flutuante
registrador ndice
processadores E/S
ling. alto-nvel
bibliot. de subrotinas
monitores batch
IBM7094
CDC1604
3
a
(1965 -
74)
Circuitos integrados
(SSI e MSI)
microprogramao
pipeline
memria cache
multiprogramao
multiprocessamento
sistema operacional
memria virtual
IBM
S/360;
DEC
PDP-8
4
a
(1975 -
?)
Circuitos LSI
memrias
semicondutoras
Amdahl
470;
Intel 8748
Tabela 3.2 - Geraes de computadores
Atualmente, esta tabela [HAY78] j poderia ser completada com uma quinta gerao que
incluiria as mquinas maciamente paralelas, os circuitos VLSI, as mquinas data-flow,
etc, dependendo do parmetro escolhido para embasar esta evoluo.
multiplicador
divisor
e raiz
quadrada
tabelas de
funes
a
c
u
m
u
l.
unidade mestre de
programao
leitora de
cartes
impressora e
perf. de cartes
Figura 3.1 - Estrutura bsica do ENIAC
3-3
3. 2 Princpios bsicos
Cada computador tem um conjunto de operaes e convenes nico para determinar as
posies dos dados com os quais a operao ser realizada. Os vrios computadores diferem
nas operaes especficas que fornecem e nos mtodos que eles usam para referenciar dados
que sero manipulados por uma operao. Em geral, uma operao tem a forma
OPERAO OPERANDOS
e denominada de instruo. OPERAO especifica a funo que ser desempenhada.
OPERANDOS fornece a maneira de calcular a posio atual dos dados com os quais a
operao ser realizada.
Um programa constitudo de uma seqncia pr-determinada de instrues, que deve ser
seguida para que seja atingido o objetivo computacional. Este programa e os dados
correspondentes esto armazenados na memria da mquina; o conjunto de instrues (ou
programa) deve ser interpretado para realizao do processamento, isto , a informao
codificada correspondente s aes e operandos deve ser entendida e ento processada.
A memria de um sistema de computador tem a funo de armazenar dados e instrues;
organizada em posies, que podem ser visualizadas como elementos em uma matriz. Cada
elemento tem um endereo. Assim, pode-se falar de uma memria que tenha x posies:
cada posio pode ser referenciada diretamente de acordo com a sua colocao na seqncia.
Por exemplo, se uma memria tem 4096 posies, existem posies de memria 0, 1, 2,
3,...., 4094 e 4095. Quando um destes nmeros aparece nos circuitos de controle
conectados memria, o contedo (o valor que est na posio) ser trazido da memria para
os circuitos da unidade de processamento ou a informao na unidade de processamento ser
armazenada na memria, dependendo do trabalho associado com o endereo.
Instrues em um computador so executadas em uma seqncia determinada por suas
posies de memria. Na maioria dos computadores (que formam a classe das chamadas
mquinas de von Neumann, cujo modelo bsico ser visto na seo 3.5), instrues e dados
so distribudos em posies de memria.
O endereo representa uma posio particular na memria e pode ser formado de vrias
maneiras. A representao trivial de um endereo est na parte de uma instruo chamada
campo de endereo. Contudo, h vrias maneiras de se modificar um campo de endereo por
valores em outras partes do processador (aritmtica de endereos). As diversas
possibilidades e vantagens destas tcnicas sero mostradas mais adiante na disciplina.
A unidade lgica e aritmtica realiza aes indicadas nas instrues, executando operaes
numricas (aritmticas) e no numricas (lgicas) alm da preparao de informaes para
desvios do programa. O controle do programa e a unidade lgica e aritmtica formam a
unidade central de processamento (UCP), ou simplesmente processador.
Busca - decodificao - execuo de instrues
Um elemento no processador, denominado de contador de instrues ou apontador de
instrues, contm a posio da prxima instruo a ser executada. Quando uma seqncia
de execuo de instrues tem incio, a instruo cujo endereo est no contador de
instrues trazida da memria para uma rea de armazenamento chamada registrador de
instruo. Este processo consiste na busca de instruo.
A instruo interpretada por circuitos de decodificao que fazem com que sinais
eletrnicos sejam gerados no processador como resultado do valor do campo de operao,
isto , decodificam a informao correspondente operao a ser realizada.
Esses sinais, ou seqncia de sinais, resultam na execuo da instruo. Execuo a
aplicao da funo do operador nos operandos. Quando a execuo de uma instruo
3-4
terminada, o contador de instrues atualizado para o endereo de memria da prxima
instruo. Esta instruo ento trazida da memria para o registrador de instrues e
executada, repetindo-se assim o ciclo de busca-decodificao-execuo.
A seqncia de instrues pode mudar como resultado de uma instruo que direciona um
desvio (tambm chamada transferncia ou salto). Estas instrues contm o endereo da
prxima instruo a ser executada ao invs do endereo de um operando. Elas causam
mudanas no fluxo do programa como resultados das condies nos dados. O desvio
condicional representado por uma estrutura de programao de alto nvel de IF (teste para
uma condio especificada e alterao do fluxo de programa se a condio atendida) traduz-
se em algum tipo de instruo de desvio.
3. 3 Elementos funcionais bsicos
Um computador composto por blocos convencionalmente chamados de memria, unidades
operacionais, unidades de controle e dispositivos de entrada e sada (Figura 3.2).
A unidade operacional e a unidade de controle tem funcionalidade especfica, conforme ser
visto na seqncia. Reunidas, entretanto, recebem no seu conjunto a denominao de
unidade central de processamento (UCP) ou processador. Memrias, unidades operacionais,
unidades de controle e dispositivos de entrada e sada so formados por elementos de menor
complexidade, tais como registradores, contadores, multiplexadores, seletores,
decodificadores, somadores e portas lgicas (AND, OR, INVERSOR).
Registradores so elementos digitais com capacidade de armazenar dados. Tm associados a
si sinais de carga, que determinam quando sero armazenados novos contedos nestes
elementos; ao ser acionado este sinal (carga), o registrador copia para si o dado que est em
suas linhas de entrada. Contadores, multiplexadores, seletores, decodificadores, somadores
e portas lgicas so elementos com capacidade de operar sobre dados, alterando-os ou
fornecendo um novo dado como resultado da operao que realizam. Elementos digitais
necessitam ser ativados ou habilitados para realizar uma determinada operao. Os sinais
responsveis pela ativao ou habilitao de componentes digitais so conhecidos como
sinais de controle.
controle
unidade
operacional
memria
entrada/
sada
Figura 3.2 - Elementos bsicos de um computador
Dados so transferidos, entre os diversos elementos de um computador, por caminhos
fsicos chamados barramentos. Barramentos so caminhos fsicos que permitem o
transporte de dados entre os vrios elementos da parte operacional, memria e sistema de
3-5
entrada e sada. 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, endereo,
controle) que so por ele transportados.
Cada um dos blocos bsicos do computador comentado, em detalhes, a seguir.
3. 3. 1 Memria
A memria formada por elementos armazenadores de informao. Uma memria est
dividida em palavras. Cada palavra ocupa uma posio de memria e identificada
univocamente por um endereo. O contedo armazenado nas palavras da memria tanto
pode representar dados como instrues. Um esquema da estrutura convencional para a
memria de um computador mostrado na Figura 3.3.
memria
RDM out
RDM in
R
E
M
read
write
Figura 3.3 - Modelo estrutural da memria
Os registradores mostrados na Figura 3.3 so:
REM: registrador de endereos da memria - contm o endereo do
dado a ser lido ou escrito na memria.
RDM
i n
: registrador de dados da memria (entrada) - contm o dado
a ser escrito na memria.
RDM
out
: registrador de dados da memria (sada) - contm o dado
lido da memria.
Os sinais de controle significam:
read: leitura da memria - o contedo da posio de memria
endereada por REM copiada em RDM
out
.
write: escrita na memria - a posio de memria endereada por REM
recebe o contedo de RDM
in
.
Uma memria caracterizada por vrios parmetros. Os mais importantes so: tamanho,
velocidade e tecnologia. No nvel de arquitetura, interessam: tamanho da palavra em bits e
tamanho da memria em palavras. Estes tamanhos geralmente so indicados sob a forma de
potncias de dois. O tamanho da palavra determina o comprimento em bits do RDM
(registrador de dados) e o tamanho da memria o comprimento em bits do REM (registrador
de endereos).
3-6
3. 3. 2 Unidade operacional
A unidade operacional, tambm chamada de bloco operacional, executa as transformaes
sobre dados especificadas pelas instrues de um computador. Compe-se basicamente de
uma unidade lgica e aritmtica, de registradores de uso geral e especfico e dos barramentos
que interligam todos esses elementos.
O nmero, tamanho e uso dos registradores e a quantidade e tipo de operaes que a unidade
lgica e aritmtica realiza so alguns dos fatores que determinam o porte de um processador.
Unidade lgica e aritmtica (ULA)
A ULA realiza operaes aritmticas e operaes lgicas sobre um ou mais operandos.
Exemplos de operaes realizadas pela ULA: soma de dois operandos;

negao de um
operando; inverso de um operando; AND (E lgico) de dois operandos; OR (OU lgico)
de dois operandos; deslocamento de um operando para a esquerda ou direita ; rotao de um
operando para a esquerda ou direita
As operaes da ULA so, geralmente, muito simples. Funes mais complexas, exigidas
pelas instrues da mquina, so realizadas pela ativao seqencial das vrias operaes
bsicas disponveis. Um exemplo a execuo de instrues de multiplicao em alguns
computadores, que compreende a ativao de operaes sucessivas de soma e deslocamento
na ULA.
A ULA fornece o resultado da operao e tambm algumas indicaes sobre a operao
realizada. Tais indicaes so chamadas cdigos de condio. Exemplos de alguns
cdigos de condio comumente gerados na ULA so:
Overflow: (ou estouro de campo) indica que o resultado de uma operao aritmtica no
pode ser representado no espao (tamanho da palavra) disponvel.
Sinal: indica se o resultado da operao negativo ou positivo.
Carry: dependendo da operao realizada (soma ou subtrao) pode representar o bit de
vai-um (carry-out) ou vem-um (borrow-out). Usado muitas vezes tambm
em operaes de deslocamento para guardar ou fornecer o bit deslocado. A
indicao de carry no deve ser confundida com overflow.
Zero: indica se o resultado da operao realizada nulo.
O modelo estrutural da unidade lgica e aritmtica mostrado na Figura 3.4.
operandos
resultado
controle
cdigos de
condio
U L A
Figura 3.4 - Modelo estrutural da ULA
3-7
Os sinais de controle que devem ser fornecidos para a ULA servem para selecionar a
operao desejada entre as operaes bsicas disponveis. Convm salientar que a ULA no
armazena nem o resultado, nem os operandos, nem os cdigos de condio gerados.
Uma ULA se caracteriza por:
comprimento em bits dos operandos
nmero e tipo de operaes
cdigos de condio gerados
Acumulador
O acumulador um registrador e tem por funo armazenar um operando e/ou um
resultado fornecido pela ULA. Nos computadores mais simples encontrado apenas um
acumulador. Em algumas arquiteturas mais complexas vrios registradores podem
desempenhar as funes 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
(obviamente o antigo contedo do acumulador perdido).
Um acumulador, sendo um registrador, se caracteriza ao nvel de arquitetura apenas pelo seu
comprimento em bits.
3. 3. 3 Unidade de controle
Para gerenciar o fluxo interno de dados e o instante preciso em que ocorrem as transferncias
entre uma unidade e outra so necessrios sinais de controle. Esses sinais so fornecidos
por um elemento conhecido por unidade de controle.
Cada sinal de controle comanda uma microoperao. Uma microoperao pode ser
responsvel pela realizao de uma carga em um registrador, uma seleo de um dado para
entrada em um determinado componente, uma ativao da memria, a seleo de uma
operao da ULA ou a habilitao de um circuito lgico, para citar alguns exemplos.
Unidades de controle so mquinas de estado finitas (FSM) realizadas por lgica seqencial.
Lgica seqencial e lgica combinacional so caracterizadas, informalmente, como segue:
Lgica seqencial: os sinais de sada so funo dos sinais de entrada e do estado
anterior do sistema.
Lgica combinacional: os sinais de sada so funo exclusiva dos sinais de
entrada.
Existem vrias formas de implementar lgica seqencial. Tais formas de implementao
caracterizam a organizao da unidade de controle. As duas organizaes usuais so:
Organizao convencional: a unidade de controle composta por componentes
digitais como flip-flops, contadores e decodificadores, que geram, seqencialmente
e nos instantes de tempo adequados, todos os sinais de controle necessrios
ativao da unidade operacional, do sistema de entrada e sada e da memria.
Organizao microprogramada: em uma unidade de controle microprogramada,
os sinais de controle esto armazenados numa memria especial chamada memria
de controle. Vrios sinais de controle so buscados a cada acesso memria de
controle. Esses sinais esto agrupados em longas palavras chamadas
microinstrues. Um conjunto de microinstrues forma um microprograma.
3-8
A unidade de controle, baseada em sinais de entrada obtidos do registrador de estado (RST)
e do registrador de instrues (RI), gera como sada todos os sinais de controle necessrios
para a unidade operacional (Figura 3.5).
O registrador de instrues um elemento do bloco de controle, o registrador de estado um
elemento da interface entre a unidade de controle e a unidade operacional. Em funo de uma
arquitetura especfica, esse ltimo registrador tanto pode aparecer classificado numa unidade
como em outra.
R I unidade
de
controle
R S T
sinais de
controle
Figura 3.5 - Esquema de uma unidade de controle
3. 3. 4 Registradores especiais
Existem, no computador, alguns registradores com funes especiais, conforme ser
explicado a seguir. Dependendo da arquitetura e da organizao de cada mquina, alguns
registradores podem estar posicionados na unidade de controle ou na unidade operacional.
Esta localizao, entretanto, no momento no relevante; aqui ser assumida a posio
adotada por cada mquina estudada.
Apontador de instrues
O apontador de instrues um registrador e tem por funo manter atualizado o
endereo de memria da prxima instruo que deve ser executada. Tambm chamado de
contador do programa (ou PC, do ingls Program Counter). O nome contador do
programa se deve ao fato de, no modelo bsico de um computador, instrues consecutivas
de um programa serem armazenadas em palavras da memria que possuem endereos
tambm consecutivos. Assim, para acessar a prxima instruo, basta contar mais um.
Do ponto de vista de arquitetura, um apontador de instrues se caracteriza pelo seu
comprimento em bits. Como o PC contm um endereo de memria, o comprimento do PC
funo do tamanho da memria onde esto armazenados os programas em execuo.
Registrador de instrues (RI)
O registrador de instrues armazena a instruo que est sendo executada. Em funo
do contedo desse registrador, a unidade de controle determina quais os sinais de controle
devem ser gerados para executar as operaes determinadas pela instruo. Do ponto de vista
de arquitetura, um registrador de instrues se caracteriza pelo seu comprimento em bits. O
comprimento do RI depende do tamanho e codificao das instrues do computador.
Registrador de estado (RST)
O registrador de estado armazena cdigos de condio gerados pela unidade lgica e
aritmtica (e, eventualmente, por outros elementos, como os sinais de interrupo gerados
por dispositivos de entrada e sada). Em funo do contedo desse registrador, a unidade de
controle toma decises sobre a gerao ou no de certos sinais de controle. Do ponto de vista
3-9
de arquitetura, um registrador de estado se caracteriza pelo seu comprimento em bits, que
uma funo do nmero de cdigos de condio implementados na mquina.
3. 3. 5 Conjunto de instrues e modos de endereamento
Uma instruo um conjunto de bits devidamente codificados que indica ao computador que
seqncia de microoperaes ele deve realizar. Instrues so classificadas por semelhana
de propsito e formato. Classificaes comuns incluem, entre outras:
instrues de transferncia de dados
instrues aritmticas e lgicas
instrues de teste e desvio
O conjunto de todas as instrues que um determinado computador reconhece e pode
executar chamado de conjunto de instrues. Qualquer seqncia finita de instrues
de um determinado conjunto de instrues compe um programa.
Muitas da instrues de um computador realizam operaes sobre operandos (p.ex. soma
de dois elementos). Operandos podem estar em qualquer posio da memria ou em
qualquer registrador (inclusive em um registrador pertencente a um dispositivo de entrada e
sada). Para que a unidade de controle saiba onde achar um operando necessrio que o
endereo do operando aparea junto a instruo. Nas instrues de desvio (parecidas
com GOTO e IF-THEN em linguagens de alto nvel) necessrio indicar, ao invs de
endereo de operando, para qual posio ou endereo de programa se quer desviar. As
diversas formas em que o endereo de um operando pode aparecer, somadas s diversas
formas em que um endereo de desvio pode ser encontrado em um computador, caracterizam
os modos de endereamento desse computador.
3. 3. 6 Ciclo de busca-decodificao-execuo de instrues
Busca, decodificao e execuo de instrues so as tarefas bsicas realizadas por um
processador. Caracterizam um ciclo, pois as tarefas so executadas repetidamente, sempre e
sempre, at que seja decodificada uma instruo que indique parada ao computador (halt,
stop, wait, etc).
Busca: na fase de busca lida uma instruo da memria. Essa fase envolve:
copiar o apontador de programa (PC) para o registrador de endereos da
memria (REM),
ler uma instruo da memria,
copiar o registrador de dados da memria (RDM) para o registrador de
instrues (RI),
atualizar o apontador de programa (PC).
Decodificao: nessa fase determinada qual instruo deve ser executada. A
decodificao geralmente realizada por lgica combinacional.
Execuo: na fase de execuo, para cada tipo de instruo realizado, conforme
necessrio:
clculo do endereo de operandos,
busca de operandos da memria,
seleo de operao da ULA,
carga de registradores,
escrita de operandos na memria,
atualizao do PC para desvios.
3-10
O controle de todas as operaes do ciclo de busca-decodificao-execuo de instrues
de responsabilidade da unidade de controle. O programador, mesmo o de baixo nvel (ou
seja, aquele que conhece a linguagem de mquina de seu computador), no precisa se
preocupar com isso, a no ser para calcular os tempos envolvidos na execuo de seu
programa.
3. 3. 7 Programao de um processador
A nica linguagem que um processador entende e tem condies de executar no , ao
contrrio do que muitos pensam, o ingls, mas sim linguagem de mquina. Linguagem
de mquina uma imagem numrica (binria) que representa a codificao do conjunto de
instrues de um computador. Todos os programas objeto de um computador esto
representados e armazenados em linguagem de mquina.
Representaes numricas so de difcil manipulao at mesmo por programadores
experientes. Programas em linguagem de mquina so difceis de elaborar, testar e alterar.
Para facilitar as tarefas de programao e depurao, mnemnicos (em ingls) foram
associados aos cdigos das instrues, nomes aos operandos e rtulos (labels) s
posies ocupadas pelo programa. A partir de ento, no mais necessrio trabalhar com
cdigos numricos, pois toda a programao de baixo nvel feita usando smbolos.
Um programa escrito com auxlio de smbolos, ou seja em linguagem simblica, precisa ser
traduzido em linguagem de mquina para que possa ser executado. Essa traduo recebe o
nome de montagem e, quando automatizada, o programa que a realiza recebe o nome de
montador.
Um montador realiza praticamente apenas uma traduo um para um das instrues da
linguagem simblica para instrues de mquina (ao contrrio de um compilador, que gera
rotinas em linguagem de mquina para cada instruo da linguagem de alto nvel e depois
otimiza cdigo e alocao de variveis). Montadores modernos, para computadores de 16 e
32 bits por exemplo, so bastante poderosos e confortveis, aceitando comandos especficos
(chamados comumente de pseudo-instrues) e tipos de dados no disponveis na
linguagem de mquina.
3. 4 Um computador de primeira gerao: o EDVAC
No ENIAC, e nas mquinas que o antecederam, os programas e os dados eram armazenados
em memrias separadas. O armazenamento inicial de programas e sua alterao constitua-se
em uma atividade extremamente cansativa. A idia de armazenar programas e dados na
mesma unidade de memria - que corresponde ao conceito de programa armazenado -
atribuda ao matemtico hngaro John von Neumann (1903 1957), que atuou como
consultor no projeto do ENIAC. Sua proposta foi publicada em 1945 para um computador
novo, o EDVAC (Electronic Discrete Variable Computer). Alm de facilitar o processo de
programao, o conceito de programa armazenado torna possvel ao programa modificar
suas prprias instrues.
Alm de ser um computador de programa armazenado, o EDVAC trazia outras inovaes:
memria de capacidade bastante aumentada (principal
1
com 1024 palavras, implementada
atravs de uma linha de atraso em mercrio, e secundria magntica de 20k palavras);
representao interna em binrio; e circuitos aritmticos binrios seriais, devido entrada de
dados serial.
A estrutura bsica de um computador de primeira gerao, que pode ser correspondente a
uma mquina semelhante ao EDVAC, mostrada na Figura 3.6.

1
A memria principal deve ser rpida: armazena pelo menos o programa em execuo e os dados
correspondentes. A memria secundria mais lenta e serve para armazenar grandes volumes de dados e
programas que no esto em execuo.
3-11
memria
principal
unidade
lgico-
aritmtica
unidade de
controle de
programa
unidade
central de
processamento
unidades de
memria
secundrias
teletipo
leitora de
cartes
impressora e
perfuradora
de cartes
equipamentos de E/S
Figura 3.6 - Arquitetura de um computador de primeira gerao
Antes da execuo de um programa no EDVAC, todas as instrues e dados eram colocados
na memria principal. Uma instruo aritmtica, por exemplo, tinha o seguinte formato:
A
1
A
2
A
3
A
4
OP
que significava o seguinte: realize a operao OP com o contedo das posies de memria
principal, cujos endereos so A
1
e A
2
e coloque o resultado na posio A
3
. O quarto
endereo, A
4
, especifica a posio da prxima instruo a ser executada.
Uma instruo condicional tinha o seguinte formato:
A
1
A
2
A
3
A
4
C
que significava o seguinte: se o nmero em A
1
no menor do que o nmero em A
2
ento
execute a instruo constante na posio A
3
, seno, execute a instruo em A
4
.
Ainda existia um par de instrues de entrada e sada para a transferncia de informaes
entre as memrias principal e secundria. Nestas instrues, o campo do segundo endereo
era dividido em dois componentes, um modificador de operao m, que indicava a direo da
transferncia de dados, e um nmero n, que representava o endereo do condutor no meio de
armazenamento secundrio a ser usado. O formato da instruo era:
A
1
m, n A
3
A
4
W
significando:
1. Se m = 1, transfira para o condutor n a seqncia de palavras armazenadas na memria
principal nas posies A
1
, A
1
+1, A
1
+2, ....., A
3
.
2. Se m = 2, transfira do condutor n a seqncia de palavras para as posies A
1
, A
1
+1,
A
1
+2, ....., A
3
na memria principal.
Novamente A
4
era o endereo da prxima instruo a ser realizada.
Observe na estrutura do EDVAC, mostrada na Figura 3.6, que h dois conjuntos de linhas
originados na unidade central de processamento que conduzem informaes entre esta
unidade e os equipamentos de entrada e sada. O conjunto de linhas que parte do bloco
3-12
denominado, na figura, de unidade de controle de programa conduz informaes de
controle aos elementos de E/S, determinando quais atividades devem ser realizadas nestes
elementos (por exemplo, indicando leitora de cartes que ela deve efetuar a leitura do
prximo carto, ou indicando impressora que ela deve imprimir o caracter que se encontra
disponvel). O outro conjunto de linhas, que est relacionado ao bloco unidade lgico-
aritmtica conduz dados que sero ou que foram processados. Assim, este conjunto de
linhas transporta dados provenientes da leitora de cartes, transporta dados para a teletipo e
recebidos da mesma, e assim por diante.
O equipamento de entrada e sada do EDVAC consistia de um dispositivo semelhante a uma
mquina de escrever, que transferia informao diretamente para os condutores magnticos,
e uma impressora, que revertia este processo. O EDVAC tornou-se operacional em 1951.
Principais inconvenientes do EDVAC
O formato de instruo utilizado no EDVAC, bem como a arquitetura e organizao
escolhidas para a sua implementao, resultam em problemas, tais como os explicados a
seguir.
Considere o formato de uma instruo aritmtica, por exemplo, de uma soma: tem-se quatro
operandos mais o cdigo de operao. Todos os operandos correspondem a endereos de
memria; dois so endereos das parcelas, um o endereo para o armazenamento do
resultado final, e outro o endereo da prxima instruo. Isto implica em um grande
nmero de interaes com a memria, que no podem ser feitas paralelamente (considerando
a estrutura proposta). Como o tempo de acesso para leitura e escrita de informaes para a
memria grande, se comparado ao tempo empregado para processamento interno UCP,
este constitui-se em um entrave significativo aos ndices de desempenho do computador.
Este entrave referido como gargalo de von Neumann.
Como formas de resolver ou diminuir o problema, pode-se pensar em solues tais como
diminuir o nmero de operandos, fazendo com que alguns deles sejam implcitos. Por
exemplo:
se o resultado de uma operao de soma for armazenado na posio onde inicialmente
est um dos operandos, no necessrio especificar o endereo do resultado
(obviamente neste caso o valor inicial do operando ser perdido);
se o resultado de uma operao de soma for armazenado em uma posio previamente
convencionada, como no endereo seguinte ao de um dos operandos, para citar um
exemplo, ou em uma posio especial de memria destinada s para este fim, no
necessrio especificar o endereo do resultado;
se o endereo da prxima instruo for previamente convencionado, no h
necessidade de inclu-lo na instruo.
Esta especificao explcita de endereos traz outro inconveniente. No caso do EDVAC, a
memria principal tem 1024 palavras: so necessrios 10 bits para endere-la. Portanto,
uma instruo aritmtica necessitar mais de 40 bits para sua representao (4 x 10 de
endereamento mais x bits para definio da operao a ser executada) exigindo palavras de
memria grandes ou esquemas especiais de organizao de informaes.
Estes problemas comearam a ser resolvidos pelo prprio von Neumann na mquina
seguinte, que ficou conhecida pela sigla IAS.
3. 5 Modelo de von Neumann: o computador IAS
Em 1946, Von Neumann e sua equipe iniciaram o projeto de um novo computador de
programa armazenado: o computador IAS, elaborado no Instituto de Estudos Avanados de
Princeton (Princeton Institute for Advanced Studies). Esta mquina usava como memria
principal um tubo de raios catdicos de acesso randmico, o que permitia o acesso a uma
3-13
palavra inteira em uma nica operao. Cada instruo continha somente um endereo de
memria e tinha o seguinte formato:
OP A
Esta mquina foi largamente divulgada, influenciando sobremaneira o projeto subsequente de
outras mquinas. Os blocos bsicos componentes do IAS so:
uma unidade de processamento central, para execuo de operaes aritmticas e
lgicas;
uma unidade de controle de programa, para determinar o sequenciamento das instrues
a serem executadas e gerar os sinais de controle para as outras unidades. Estes sinais
determinam as aes a serem executadas;
uma unidade de memria principal, com capacidade de 4096 palavras;
uma unidade de entrada e sada.
As ligaes entre estas unidades so mostradas na Figura 3.7.
unidade lgica e aritmtica
AC MQ
circuitos
lgico-aritmticos
DR
Unidade Central de Processamento
equipamento
de
entrada e
sada
memria
principal
instrues
e dados
IBR PC
IR AR
Unidade de controle de programa
circuitos de
controle :
: sinais de
controle
endereos
Figura 3.7 - Estrutura do IAS
Na unidade central de processamento do IAS existe um novo elemento de armazenamento de
dados, que o acumulador (AC). Este elemento atua como uma memria rpida que guarda
3-14
de forma imediata o resultado das operaes realizadas na unidade lgico-aritmtica. O
acumulador empregado intensamente em instrues que realizam estas operaes.
Suponha-se a realizao de um programa que executa a soma de dois nmeros. Os dois
nmeros a serem somados esto armazenados nas posies 100 e 101 de memria. O
resultado deve ser guardado na posio 102. Na descrio abaixo, a seta () indica a
transferncia de informao; assim, A B significa que A recebe o contedo de B
Instruo Comentrios
AC M(100)
Transfere contedo da memria, end. 100, para acumulador
AC AC + M(101)
Soma contedo da posio 101 ao contedo do acumulador e
coloca o resultado no acumulador
M(102) AC
Armazena o contedo do acumulador no endereo 102
Figura 3.8 - Exemplo de programa no IAS
Na Figura 3.7 mostrada a estrutura do computador IAS, cuja arquitetura bsica ficou
conhecida como modelo de von Neumann. A terminologia no corresponde exatamente a
utilizada originalmente; os termos esto atualizados para o seu equivalente prximo na
nomenclatura atual.
Organizao da memria
A memria do IAS tinha 2
12
= 4096 palavras, sendo as palavras compostas por 40 bits.
Estes 40 bits, eram a quantidade de informaes que podiam ser transferidas, em cada
momento, da UCP para a memria (em um passo). Estas palavras armazenadas na memria
podiam corresponder a instrues ou a dados.
Formato dos dados
Os dados eram nmeros binrios representados em ponto fixo e codificados em
complemento de dois. Sendo assim, o bit mais a esquerda do nmero correspondia ao sinal
do mesmo e as operaes de soma e subtrao eram ambas executadas por um somador. O
ponto do nmero estava supostamente entre os bits 0 e 1, permitindo assim a representao
direta apenas de nmeros situados no intervalo entre 0 e 1; os demais nmeros deveriam ser
previamente ajustados antes da realizao de clculos. O formato de um dado representado
a seguir.
0 1 39

Bit de sinal
Figura 3.9 - Formato dos dados do IAS
Formato das instrues: cada instruo podia ser representada com 20 bits; portanto,
uma palavra de memria podia acomodar 2 instrues. Oito bits, os mais da esquerda ou
mais significativos eram usados para o cdigo da operao a ser realizada, e os outros doze
bits eram usados para especificar o endereo de uma posio de memria, conforme
mostrado abaixo.
Instruo posicionada esquerda Instruo posicionada direita
0 8 19 20 28 39
cd.operao endereo cd.operao endereo
Figura 3.10 - Formato das instrues do IAS
3-15
Comparando-se esta instruo com o formato de instruo anteriormente apresentado para o
EDVAC, na qual eram expressos 4 endereos, pode-se observar que ocorreu uma reduo
substancial no comprimento da palavra de instruo. As alteraes na organizao do IAS,
que tornaram possvel esta reduo so as seguintes:
h registradores pr-definidos na UCP para armazenarem operandos e resultados,
isto , os endereos dos registradores da UCP esto implcitos no cdigo de
operao. Assim, as instrues do IAS utilizam estes registradores automaticamente.
as instrues de um programa esto armazenadas na memria principal de maneira
quase inteiramente seqencial (excetuando os casos de desvio apenas), considerado o
seguimento que deve ser usado na execuo; portanto, o endereo da prxima
instruo o endereo atual mais 1. Isto elimina a necessidade do campo onde
constava o endereo da prxima instruo. As situaes em que devem ocorrer
desvios so resolvidas por instrues especiais.
3. 5. 1 Organizao da UCP
A UCP do IAS contm alguns registradores para armazenamento temporrio de instrues,
endereos de memria e dados. O processamento de dados realizado pelos circuitos lgico-
aritmticos. Os circuitos de controle decodificam instrues, direcionam a informao atravs
do sistema, e fornecem a temporizao dos sinais para todas as aes. Existe um relgio para
a sincronizao da operao do sistema. Basicamente, existem as seguintes estruturas, cujas
funes so descritas resumidamente:
memria principal M: para o armazenamento de programas e dados;
registrador de dados DR (com 40 bits): recebe dados lidos da posio X da memria
(DR M(X)) ou fornece dados que sero gravados na posio X da memria
(M(X) DR). Tambm pode ser usado para armazenar dados temporariamente,
durante a execuo de uma instruo;
registrador de endereos AR (com 12 bits): armazena o endereo que servir para
apontar posies da memria;
acumulador AC: armazenamento temporrio de operandos;
registrador multiplicador-quociente MQ: armazenamento temporrio de operandos;
registrador IBR: como no IAS so lidas simultaneamente duas instrues da memria,
a que no executada imediatamente armazenada no IBR; a que ser executada em
seguida, o cdigo de operao armazenado no registrador de instrues IR, onde
decodificado. O campo de endereo desta instruo transferido para AR;
contador de programa PC ou registrador de endereo da instruo: armazena o
endereo da prxima instruo a ser executada.
3. 5. 2 Conjunto de instrues
As instrues do IAS esto listadas na Tabela 3.3 a seguir. Elas esto divididas em
agrupamentos de acordo com a sua funo: instrues de transferncia, de desvio
condicional e incondicional, aritmticas e de modificao de endereo.
Para a descrio usada uma linguagem de transferncia a nvel de registradores, que
descreve brevemente as instrues e microoperaes que ocorrem a nvel interno no
computador. As posies de armazenamento so descritas por siglas (como, AR, M), a
transferncia de informaes descrita por uma seta, e os elementos de armazenamento
3-16
matriciais, como a memria, so especificados por ndices entre parnteses. Portanto, na
memria de 4096 x 40, como o caso do IAS, M(X,0:19) indica os bits de 0 a 19 da palavra
na posio ou endereo X da memria.
Conjunto de instrues do computador IAS
Tipo instruo Notao Descrio
Transferncia de
dados
AC MQ
Transfere contedo do reg. MQ para o
acumulador AC
MQ M(X)
Transfere contedo da posio X de
memria para MQ
M(X) AC
Transfere contedo de AC para a posio
de memria X
AC M(X)
Transfere M(X) para AC
AC M(X)
Transfere M(X) para AC
AC |M(X)|
Transfere valor absoluto de M(X) para AC
AC |M(X)| Transfere |M(X)| para AC
Desvio
incondicional
go to M(X, 0:19) busque a prxima instruo da metade
esquerda de M(X)
go to M(X, 20:39) busque a prxima instruo da metade
direita de M(X)
Desvio
condicional
se AC 0 ento desvie
para M(X,0:19)
se o nmero em AC no for negativo,
busque a prxima instruo na metade
esquerda de M(X)
se AC 0 ento desvie
para M(X,20:39)
se o nmero em AC no for negativo,
busque a prxima instruo na metade
direita de M(X)
Aritmtica
AC AC + M(X)
Some M(X) a AC; resultado em AC
AC AC + |M(X)|
Some |M(X)| a AC; resultado em AC
AC AC M(X)
Subtraia M(X) de AC; resultado em AC
AC AC |M(X)|
Subtraia |M(X)| de AC; resultado em AC
AC,MQ MQ * M(X)
Multiplique M(X) por MQ; coloque os bits
mais significativos do resultado em AC e
os menos signif. em MQ
MQ,AC AC M(X)
Divida AC por M(X); coloque o quociente
em MQ e o resto em AC
AC AC x 2
Multiplique AC por 2; i.e., desloque em
um bit esquerda
AC AC 2
Divida AC por 2; i.e., desloque em um bit
direita
Modificao de
endereo
M(X,8:19) AC(28:39)
Substitua campo de endereo esquerda de
M(X) pelos 12 bits mais direita de AC
M(X,28:39) AC(28:39)
Substitua campo de endereo direita de
M(X) pelos 12 bits mais direita de AC
Tabela 3.3 - Conjunto de instrues do computador IAS
As instrues de transferncia possibilitam a transferncia entre posies de memria e
registradores da UCP, sem que haja modificao nas informaes (exceto nos casos em que
alterado o sinal). As instrues de desvio fazem com que seja buscado um novo endereo,
para a prxima instruo, na memria (se atendida uma condio, no caso do desvio
condicional). Estas instrues portanto permitem a alterao da seqncia de execuo de um
programa.
3-17
As instrues aritmticas fornecem os comandos bsicos de processamento de informaes
ao computador. As instrues de modificao de endereo permitem o cmputo de endereos
na unidade lgico-aritmtica e sua insero posterior em instrues armazenadas na memria.
Esta propriedade permite que o computador altere suas prprias instrues, o que se constitui
em uma caracterstica importante das mquinas de programa armazenado.
3. 6 Arquiteturas de 4, 3, 2, 1 e 0 endereos
Enquanto o EDVAC trabalhava basicamente com 4 endereos, o IAS apresentava somente
um endereo. Mesmo assim, ambas arquiteturas possuam as mesmas capacidades. Para
ilustrar como isto possvel, e tambm para analisar como a quantidade de endereos de
memria influencia nas instrues e na prpria arquitetura, so exemplificadas a seguir
mquinas de 4 endereos (como o EDVAC), de 3 endereos, de 2 endereos, de 1 endereo
(como o IAS) e at as mquinas de zero endereos (por endereo entende-se uma referncia
memria). Ao invs de uma anlise detalhada de arquiteturas tpicas de cada caso, ser
apresentada unicamente a programao de uma equao aritmtica:
A = ((B + C)*D + E F) / (G * H)
As letras A at H denotam posies de memria (endereos), e supe-se que a arquitetura
analisada possui as quatro operaes aritmticas (ADD para soma, SUB para subtrao,
MUL para multiplicao e DIV para diviso). O formato exato de cada instruo, assim como
os tamanhos de operandos e instrues so irrelevantes nesta anlise.
3. 6. 1 Arquitetura de 4 endereos
Em uma arquitetura tpica de 4 endereos, as instrues apresentam o formato
OP E
1
E
2
E
3
E
4
onde OP representa a operao a ser realizada, E
1
e E
2
indicam a localizao dos dois
operados fontes desta operao, E
3
indica a localizao do operando destino (onde o
resultado deve ser armazenado) e E
4
indica o endereo onde est localizada a prxima
instruo a ser executada. Note-se que a ordem destes 4 endereos dentro da instruo pode
variar.
Um programa que execute o clculo da equao acima pode ser visto a seguir. Note-se que
este programa foi otimizado para evitar o uso de outras posies adicionais de memria, e
representa somente uma entre inmeras implementaes possveis.
Endereo Instruo Comentrio
e
1
ADD B C A e
2
Soma B com C, resultado em A; vai para e
2
e
2
MUL A D A e
3
Multiplica A por D, resultado em A; vai para e
3
e
3
ADD A E A e
4
Soma A com E, resultado em A; vai para e
4
e4 SUB A F A e
5
Subtrai F de A, resultado em A; vai para e
5
e
5
DIV A G A e
6
Divide A por G, resultado em A; vai para e
6
e
6
DIV A H A e
7
Divide A por H, resultado final em A; vai para e
7
e
7
HALT Fim do programa
Figura 3.11 - Programa em uma mquina de 4 endereos
Como cada instruo traz implicitamente o endereo da prxima instruo, no existe a
necessidade de instrues explcitas de desvio (como JUMP e BRANCH). Alm disto, uma
arquitetura de 4 endereos permite potencialmente a execuo de uma operao de
3-18
manipulao de dados e uma operao de desvio do fluxo do programa em uma nica
instruo.
Entretanto, a prtica demonstrou que normalmente os programas eram escritos
sequencialmente, isto , uma instruo seguindo a anterior. Com isto modificou-se o
mecanismo de sequenciamento das instrues, o que deu origem s arquiteturas de trs
endereos.
3. 6. 2 Arquitetura de 3 endereos
Em uma arquitetura tpica de 3 endereos, as instrues apresentam o formato
OP E
1
E
2
E
3
onde OP representa a operao a ser realizada, E
1
e E
2
indicam a localizao dos dois
operados fontes desta operao e E
3
indica a localizao do operando destino.
Para localizar a prxima instruo a ser executada, criou-se um registrador especfico,
denominado de PC (do ingls Program Counter, veja-se seo 3.3.3). Implicitamente, o PC
aponta para o endereo seguinte ao da instruo sendo executada. Assim, o programa fica:
Endereo Instruo Comentrio
e
1
ADD B C A Soma B com C, resultado em A; incrementa PC
e
1
+1 MUL A D A Multiplica A por D, resultado em A; incrementa PC
e
1
+2 ADD A E A Soma A com E, resultado em A; incrementa PC
e
1
+3 SUB A F A Subtrai F de A, resultado em A; incrementa PC
e
1
+4 DIV A G A Divide A por G, resultado em A; incrementa PC
e
1
+5 DIV A H A Divide A por H, resultado final em A; incrementa PC
e
1
+6 HALT Fim do programa
Figura 3.12 - Programa em uma mquina de 3 endereos
Com a reduo de 4 para 3 endereos, existe uma reduo do tamanho da instruo e uma
consequente reduo do tamanho da memria necessria para armazenar os programas.
Naturalmente, perdeu-se um grau de liberdade: a determinao do endereo da prxima
instruo. Existe agora a necessidade de instrues explcitas de desvio (como JUMP e
BRANCH), e no se pode mais executar simultaneamente uma operao de manipulao de
dados e uma operao de desvio do fluxo do programa em uma nica instruo. A economia
de memria, assim como a obrigatoriedade de desenvolvimento de programas sequenciais
(mais fceis de serem testados, entendidos e corrigidos), entretanto, compensavam este grau
de liberdade perdido.
Instrues de trs endereos, entretanto, ainda consomem muita memria. Alm disto,
observando-se o programa acima, nota-se que na maioria da vezes um dos operandos fonte e
o operando destino indicam o mesmo endereo (como o caso do operando A). Com isto
modificou-se a maneira de indicar os operandos, o que deu origem s arquiteturas de dois
endereos.
3. 6. 3 Arquitetura de 2 endereos
Em uma arquitetura tpica de 2 endereos, as instrues apresentam o formato
OP E
1
E
2
onde OP representa a operao a ser realizada, E
1
e E
2
indicam a localizao dos dois
operados fontes desta operao e E
1
tambm indica a localizao do operando destino.
Assim, E
1
tem dupla funo, e no so mais possveis instrues com trs operandos
3-19
distintos. Isto permite uma maior reduo nos bits necessrios para especificar os endereos
dos operandos, mas introduz uma restrio sria: o resultado da operao ser armazenado
no endereo de um dos dois operandos fonte, ou seja, um destes dois operandos ser
necessariamente alterado. Esta restrio foi contornada com a criao de uma classe extra de
instrues, as instrues de movimentao de dados, que permitem copiar operandos de uma
posio para outra, conforme pode ser visto no programa a seguir:
Endereo Instruo Comentrio
e
1
MOV A B Move B para A
e
1
+1 ADD A C Soma A com C, resultado em A
e
1
+2 MUL A D Multiplica A por D, resultado em A
e
1
+3 ADD A E Soma A com E, resultado em A
e
1
+4 SUB A F Subtrai F de A, resultado em A
e
1
+5 DIV A G Divide A por G, resultado em A
e
1
+6 DIV A H Divide A por H, resultado final em A
e
1
+7 HALT Fim do programa
Figura 3.13 - Programa em uma mquina de 2 endereos
Comparando-se este programa com o da arquitetura de trs endereos, nota-se que a primeira
instruo (ADD B C A) foi substituda por outras duas, uma de movimentao (MOV A B) e
outra de manipulao de dados (ADD A C). O resultado final o mesmo, mas o programa
possui mais instrues. Entretanto, as instrues so menores, o que em termos lquidos
proporciona uma grande economia de bits.
Com a criao de registradores especiais, pode-se reduzir ainda mais o nmero de endereos,
criando-se ento as arquiteturas de um endereo.
3. 6. 4 Arquitetura de um endereo
Em uma arquitetura tpica de um endereo, as instrues apresentam o formato
OP E
1
onde OP representa a operao a ser realizada e E
1
indica a localizao de um operando de
memria (normalmente um dos operandos fontes da operao). O outro operando
implicitamente assumido como sendo um registrador especfico, o acumulador (normalmente
abreviado por AC, veja-se seo 7.2). O Acumulador assume os papis de um dos
operandos fonte e do operando destino. Em relao s arquiteturas de dois endereos, agora
as instrues de movimentao de dados devem ser subdivididas de acordo com o sentido da
transferncia: se da memria para o acumulador (LDA, de LoaD Acumulator), ou se do
acumulador para a memria (STA, de STore Acumulator).O programa exemplo deve ser
conveniente modificado para refletir esta situao (observe-se a instruo extra no fim do
programa):
Endereo Instruo Comentrio
e
1
LDA B Move B para Acumulador
e
1
+1 ADD C Soma Acum. com C, resultado no Acumulador
e
1
+2 MUL D Multiplica Acum. por D, resultado no Acumulador
e
1
+3 ADD E Soma Acum. com E, resultado no Acumulador
e
1
+4 SUB F Subtrai F do Acum., resultado no Acumulador
e
1
+5 DIV G Divide Acum. por G, resultado no Acumulador
e
1
+6 DIV H Divide Acum. por H, resultado no Acumulador
e
1
+7 STA A Armazena Acum. no endereo de A
e
1
+8 HALT Fim do programa
Figura 3.14 - Programa em uma mquina de um endereo
3-20
Comparando-se este programa com o da arquitetura de trs endereos, nota-se que existem
duas instrues adicionais de transferncia de dados, uma no incio do programa (LDA B) e
outra no fim (STA A). A grande vantagem deste tipo de arquitetura est na economia dos
acessos memria: praticamente cada operando foi lido ou escrito uma nica vez, o que no
ocorre nas arquiteturas anteriores. Este justamente o papel dos registradores locais (ou
acumuladores): permitir que resultados intermedirios ou dados muito utilizados no
precisem ser lidos ou escritos da memria a cada vez que forem utilizados.
3. 6. 5 Arquitetura de zero endereos
Em uma arquitetura tpica de zero endereos, as instrues apresentam o formato
OP
ou seja, no existe nenhuma referncia explcita a endereos de memria onde estejam
localizados os operandos. Uma possvel soluo para determinar a posio dos operandos
coloc-los em uma regio especfica de memria, com determinado mecanismo de acesso.
Uma estrutura muito utilizada para estes fins uma pilha: os operandos so sempre retirados
do topo da pilha, e o resultado da operao sempre colocado no topo da pilha. Para facilitar
a operao desta estrutura de pilha, as equaes so escritas utilizando-se notao polonesa
reversa, onde o smbolo da operao escrito aps os dois operandos. Assim, por exemplo,
A+B seria escrito AB+. Com isto, a equao exemplo fica:
H G F E D C B + * + / /
E o programa que a implementa seria:
Endereo Instruo Comentrio
e
1
PUSH H Coloca H no topo (atual) da pilha
e
1
+1 PUSH G Coloca G no topo da pilha
e
1
+2 PUSH F Coloca F no topo da pilha
e
1
+3 PUSH E Coloca E no topo da pilha
e
1
+4 PUSH D Coloca D no topo da pilha
e
1
+5 PUSH C Coloca C no topo da pilha
e
1
+6 PUSH B Coloca B no topo da pilha
e
1
+7 ADD Topo da pilha recebe B+C
(B e C so retirados da pilha)
e
1
+8 MUL Topo recebe (B+C)*D
e
1
+9 ADD Topo recebe (B+C)*D + E
e
1
+10 SUB Topo recebe (B+C)*D + E - F
e
1
+11 DIV Topo recebe ((B+C)*D + E - F)/G
e
1
+12 DIV Topo recebe ((B+C)*D + E - F)/G*H
e
1
+13 POP A Topo da pilha armazenado em A
e
1
+14 HALT Fim do programa
Figura 3.15 - Programa em uma mquina de zero endereos
Note-se que duas instrues (PUSH e POP) na realidade utilizam endereos. Estas so,
entretanto, as duas nicas instrues que necessitam referenciar endereos, e so somente
operaes de transferncia de dados. Uma arquitetura pura de zero endereos no apresenta
vantagens marcantes sobre arquiteturas de um ou dois endereos, e por causa disto no so
muito difundidas. Os computadores atuais, entretanto, possuem estruturas do tipo pilha para
propsitos especficos. Isto ser assunto de outras disciplinas.

Vous aimerez peut-être aussi