Você está na página 1de 34

MEMRIA

TECNOLOGIAS
As primeiras tecnologias utilizadas em memrias foram as memrias de ncleos magnticos, hoje
apenas uma curiosidade. As memrias modernas so compostas por circuitos semicondutores, com
novas tecnologias sendo criadas a cada ano permitindo que grandes quantidades de clulas de
memria sejam encapsuladas em pequenas pastilhas.
HIERARQUIA DE MEMRIA
A MP no o nico dispositivo de armazenamento de um computador. Em funo de caractersticas
como tempo de acesso, capacidade de armazenamento, custo, etc., podemos estabelecer uma
hierarquia de dispositivos de armazenamento em computadores.
Tipo
Registrador

Capacidade Velocidade Custo Localizao Volatilidade


muito
Bytes
muito alta
UCP
Voltil
alto
Kbytes
alta
alto
UCP/placa Voltil

Memria Cache
Memria
Mbytes
Principal
Memria Auxiliar Gbytes

mdia

mdio Placa

Voltil

baixa

baixo

No Voltil

Externa

A UCP v nesta ordem e acessa primeiro a que est mais prxima. Subindo na hierarquia, quanto
mais prximo da UCP, maior velocidade, maior custo, porm menor capacidade de armazenamento.
REGISTRADORES
Registradores so dispositivos de armazenamento temporrio, localizados na UCP, extremamente
rpidos, com capacidade para apenas um dado (uma palavra). Devido a sua tecnologia de
construo e por estar localizado como parte da prpria pastilha ("chip") da UCP, muito caro. O
conceito de registrador surgiu da necessidade da UCP de armazenar temporariamente dados
intermedirios durante um processamento. Por exemplo, quando um dado resultado de operao
precisa ser armazenado at que o resultado de uma busca da memria esteja disponvel para com ele
realizar uma nova operao.
Mquinas RISC so geralmente construdas com um grande conjunto de registradores, de forma a
trazer os dados para o mais prximo possvel da UCP, de forma a que o programa opere sempre
sobre dados que esto em registradores.
Registradores so VOLTEIS, isto , dependem de estar energizados para manter armazenado seu
contedo.
MEMRIA CACHE
Com o desenvolvimento da tecnologia de construo da UCP, as velocidades foram ficando muito
mais altas que as das memrias, que no tiveram a mesma evoluo de velocidade (o
aperfeioamento das memrias se deu mais no fator capacidade). Desta forma, os tempos de acesso
s memrias foram ficando insatisfatrios e a UCP ao buscar um dado na memria precisa ficar
esperando muitos ciclos at que a memria retorne o dado buscado ("wait states"), configurando um
gargalo ("bottleneck") ao desempenho do sistema.

Por esse motivo, desenvolveram-se outras arquiteturas de memria privilegiando a velocidade de


acesso. A arquitetura da memria cache muito diferente da arquitetura da memria principal e o
acesso a ela muitas vezes mais rpido (p.ex: 5 ns contra 70 ns).
No entanto, o custo de fabricao da memria cache muito maior que o da MP. Desta forma, no
econmico construir um computador somente com tecnologia de memria cache. Criou-se ento
um artifcio, incorporando-se ao computador uma pequena poro de memria cache, localizada
entre a UCP e a MP, e que funciona como um espelho de parte da MP.
Desenvolveram-se ainda algoritmos que fazem com que, a cada momento, a memria cache
armazene a poro de cdigo ou dados (por exemplo, uma sub-rotina) que esto sendo usados pelas
UCP. Esta transferncia (MP <--> Cache) feita pelo hardware: ela independe do software, que
ignora se existe ou no memria cache, portanto ignora essa transferncia; nem o programador nem
o sistema operacional tm que se preocupar com ela.
A memria cache opera em funo de um princpio estatstico comprovado: em geral, os programas
tendem a referenciar vrias vezes pequenos trechos de programas, como loops, sub-rotinas, funes
e s tem sentido porque programas executados linearmente, seqencialmente, so raros. Desta
forma, algoritmos (chamados algoritmos de cache) podem controlar qual parte do cdigo ficar
copiado na cache, a cada momento.
Quando a MP busca um determinado trecho de cdigo e o encontra na cache, d-se um "cache hit" ,
enquanto se o dado no estiver presente na cache ser necessrio requisitar o mesmo MP,
acarretando atraso no processamento e d-se um "cache miss" ou "cache fault". O ndice de cache
hit ou taxa de acerto da cache geralmente acima de 90%.
Memrias cache tambm so VOLTEIS, isto , dependem de estar energizadas para manter
gravado seu contedo.
MEMRIAS AUXILIARES
Memrias auxiliares resolvem problemas de armazenamento de grandes quantidades de
informaes. A capacidade da MP limitada pelo seu relativamente alto custo, enquanto as
memrias auxiliares tem maior capacidade e menor custo; portanto, o custo por bit armazenado
muito menor.
Outra vantagem importante que as memrias auxiliares no so VOLTEIS, isto , no dependem
de estar energizadas para manter gravado seu contedo.
Os principais dispositivos de memria auxiliar so: discos rgidos (ou HD), drives de disquete,
unidades de fita, CD-ROM, DVD, unidades tico-magnticas, etc.
OBS.: Cache de disco no a mesma tecnologia da memria cache. Trata-se do emprego do
mesmo conceito da memria cache, para acelerar a transferncia de dados entre disco, MP e UCP,
usando um programa (um software, por ex.: SmartDrive) para manter um espelho do contedo de
parte do disco (a mais provvel de ser requisitada a seguir pela UCP) gravado em uma parte da
Memria Principal. Recentemente, as unidades de disco passaram a incorpor em sua interface chips
de memria - tipicamente 32 a 64 Kbytes - para acelerar a transferncia de dados, utilizando um
algoritmo de cache.

Memria Principal
Conforme definimos anteriormente, Memria Principal a parte do computador onde programas e
dados so armazenados para processamento. A informao permanece na memria principal apenas
enquanto for necessrio para seu emprego pela UCP, sendo ento a rea de MP ocupada pela
informao pode ser liberada para ser posteriormente sobregravada por outra informao. Quem
controla a utilizao da memria principal o Sistema Operacional.
ESTRUTURA DA MEMRIA PRINCIPAL - CLULAS E ENDEREOS
A memria precisa ter uma organizao que permita ao computador guardar e recuperar
informaes quando necessrio. No teria nenhum sentido armazenar informaes que no fosse
possvel recuperar depois. Portanto, no basta transferir informaes para a memria. preciso ter
como encontrar essa informao mais tarde, quando ela for necessria, e para isso preciso haver
um mecanismo que registre exatamente onde a informao foi armazenada (lembrando nossa
analogia com o computador hipottico, imagine encontrar uma informao guardada ao acaso, se
nosso escaninho tivesse 1 milho de compartimentos ...).
Clula a unidade de armazenamento do computador. A memria principal organizada em
clulas. Clula a menor unidade da memria que pode ser endereada (no possvel buscar uma
"parte" da clula) e tem um tamanho fixo (para cada mquina). As memrias so compostas de um
determinado nmero de clulas ou posies. Cada clula composta de um determinado nmero de
bits. Todas as clulas de um dado computador tem o mesmo tamanho, isto , todas as clulas
daquele computador tero o mesmo nmero de bits.
Cada clula identificada por um endereo nico, pela qual referenciada pelo sistema e pelos
programas. As clulas so numeradas seqencialmente, uma a uma, de 0 a (N-1), chamado o
endereo da clula. Endereo o localizador da clula, que permite identificar univocamente uma
clula. Assim, cada clula pode ser identificada pelo seu endereo.
Unidade de transferncia a quantidade de bits que transferida da memria em uma nica
operao de leitura ou transferida para a memria em uma nica operao de escrita. O tamanho da
clula poderia ser igual ao da palavra, e tambm unidade de transferncia, porm por razes
tcnicas e de custo, so freqentemente diferentes.
OBS.: Uma clula no significa o mesmo que uma palavra; uma clula no necessariamente contm
uma palavra. Palavra a unidade de processamento da UCP. Uma palavra deve representar um dado
ou uma instruo, que poderia ser processada, armazenada ou transferida em uma nica operao.
No entanto, em geral no assim que acontece e os computadores comerciais no seguem um
padro nico para a organizao da UCP e MP. Computadores comerciais (tais como por exemplo
os baseados nos processadores Intel 486) podem ter o tamanho da palavra definido como de 32 bits,
porm sua estrutura de memria tem clulas de 16 bits.
A estrutura da memria principal um problema do projeto de hardware:
- mais endereos com clulas menores ou menos endereos com clulas maiores?
O tamanho mais comum de clula era 8 bits (1 byte); hoje j so comuns clulas contendo vrios
bytes.

Nmero de bits para representar um endereo


Expresso geral: MP com endereos de 0 a (N-1)
N = 2x logo:
x = log2 N
sendo x = n de bits para representar um endereo e N o nmero de endereos.
CAPACIDADE DA MEMRIA PRINCIPAL
A capacidade da MP em bits igual ao produto do n de clulas pelo total de bits por clula.
T=NxM
T = capacidade da memria em bits
N = n de endereos ( como vimos anteriormente, N=2x sendo x = n de bits do endereo)
M = n de bits de cada clula
Para encontrar a capacidade em bytes, bastaria encontrar a capacidade em bits e depois multiplicar
por 8 (cada byte contm 8 bits) ou ento converter o tamanho da clula para bytes e depois
multiplicar pelo nmero de clulas.
O ltimo endereo na memria o endereo N-1 ( os endereos comeam em zero e vo at N-1).
MEMRIA - EXERCCIOS
Numa MP com 1kbyte de capacidade, onde cada clula tem 8 bits:
a) quantas clulas tem a MP?
b) quantos bits so necessrios para representar um endereo de memria?
2) Um computador enderea 1k clulas de 16 bits cada uma. Pede-se:
a) sua capacidade de memria;
b) o maior endereo que o computador pode enderear;
3) A memria de um computador tem capacidade de armazenar 216 bits e possui um barramento de
dados de 16 bits. Pede-se:
a) o tamanho da clula de memria;

4) Calcular e completar os campos:


M - Tamanho x - n de bits
da clula
do endereo
8 bits
16 bits
4 bytes
64 bits

4 bits
-

0 a (N-1) T - Capac. da
Faixa de
memria
endereos
1 K byte
1 K endereos 256 bits
4 Gbytes
1 Mbyte
0 a 65.535
0 a 262.143
N - n de
endereos

UNIDADE CENTRAL DE PROCESSAMENTO


A Unidade Central de Processamento - UCP (em ingls, Central Processing Unity - CPU) a
responsvel pelo processamento e execuo dos programas armazenados na MP. As funes da
UCP so: executar as instrues e controlar as operaes no computador.
A UCP composta de duas partes:
UAL - Unidade Aritmtica e Lgica - tem por funo a efetiva execuo das instrues

UC - Unidade de Controle - tem por funes a busca, interpretao e controle de execuo das
instrues, e o controle dos demais componentes do computador
Obs.: Neste curso, por simplicidade, ser considerado apenas o funcionamento serial em uma UCP.
Outras abordagens sero discutidas no captulo Tpicos Avanados de Arquitetura (UCP's no
pipelined).
A seguir apresentado o diagrama esquemtico de uma UCP.

Registradores Importantes na UCP


Na UC - CI Contador de Instrues (em ingls: PC - Program Counter) - armazena o endereo da
prxima instruo a ser executada - tem sempre o mesmo tamanho do REM.
Na UC - RI Registrador de Instruo (em ingls: IR - Instruction Register) - armazena a instruo
a ser executada.
Na UAL - ACC Acumulador (em ingls:ACC - Accumulator) - armazena os dados (de entrada e
resultados) para as operaes na UAL; o acumulador um dos principais elementos que definem o
tamanho da palavra do computador - o tamanho da palavra igual ao tamanho do acumulador.
Instrues
Para que um programa possa ser executado por um computador, ele precisa ser constitudo de uma
srie de instrues de mquina e estar armazenado em clulas sucessivas na memria principal. A
UCP responsvel pela execuo das instrues que esto na memria.
Quem executa um programa o hardware e o que ele espera encontrar um programa em
linguagem de mquina (uma sequncia de instrues de mquina em cdigo binrio). A linguagem
de mquina composta de cdigos binrios, representando instrues, endereos e dados e est
totalmente vinculada ao conjunto ("set") de instrues da mquina.
Um ser humano usa seu conhecimento e inteligncia para traduzir uma tarefa complexa (tal como,
por exemplo, a tarefa de buscar uma pasta num arquivo) numa srie de passos elementares
(identificar o mvel e gaveta onde est a pasta, andar at o mvel, abrir a gaveta, encontrar a pasta,
retirar a pasta e fechar a gaveta). Para o computador, uma instruo precisa ser detalhada, dividida
em pequenas etapas de operaes, que so dependentes do conjunto de instrues do computador e
individualmente executveis.
Fazendo um paralelo com linguagens de alto nvel, o programa elaborado pelo programador (o
cdigo-fonte, composto de instrues complexas) precisa ser "traduzido" em pequenas operaes

elementares (primitivas) executveis pelo hardware (ver Conceito de Processo). Cada uma das
instrues tem um cdigo binrio associado, que o cdigo da operao.
Formato geral de uma Instruo
Cdigo de operao (OPCODE)

Operando (s) (OP)

Cdigo de Operao ou OPCODE - identifica a operao a ser realizada pelo processador. o


campo da instruo cuja valor binrio identifica ( o cdigo binrio) da operao a ser realizada.
Este cdigo a entrada no decodificador de instrues na unidade de controle. Cada instruo
dever ter um cdigo nico que a identifique.
Operando(s) - ou so o(s) campo(s) da instruo cujo valor binrio sinaliza a localizao do dado
(ou o prprio dado) que ser manipulado (processado) pela instruo durante a operao. Em
geral, um operando identifica o endereo de memria onde est contido o dado que ser
manipulado, ou pode conter o endereo onde o resultado da operao ser armazenado. Finalmente,
um operando pode tambm indicar um Registrador (que conter o dado propriamente dito ou um
endereo de memria onde est armazenado o dado). Os operandos fornecem os dados da instruo.
Obs: Existem instrues que no tem operando. Ex.: Instruo HALT (PARE).
O Captulo Representao de Instrues detalha esse assunto.
Conjunto de Instrues
Quando se projeta um hardware, define-se o seu conjunto ("set") de instrues - o conjunto de
instrues elementares que o hardware capaz de executar. O projeto de um processador centrado
no seu conjunto ("set") de instrues. Essa uma das mais bsicas decises a ser tomada pelo
Engenheiro de projeto. Quanto menor e mais simples for este conjunto de instrues, mais rpido
pode ser o ciclo de tempo do processador.
Funcionalmente, um processador precisa possuir instrues para:
operaes matemticas
aritmticas: +, - , , ...
lgicas: and, or, xor, ...
de complemento
de deslocamento
operaes de movimentao de dados (memria <--> UCP, reg <--> reg)
operaes de entrada e saida (leitura e escrita em dispositivos de E/S)
operaes de controle (desvio de seqncia de execuo, parada)
As estratgias de implementao de processadores so:
CISC - Complex Instruction Set Computer - exemplo: PC, Macintosh; um conjunto de instrues
maior e mais complexo, implicando num processador mais complexo, com ciclo de processamento
mais lento; ou
RISC - Reduced Instruction Set Computer - exemplo: Power PC, Alpha, Sparc; um conjunto de
instrues menor e mais simples, implicando num processador mais simples, com ciclo de
processamento rpido.
Obs.: adotaremos o termo instruo para as instrues de mquina ou em linguagem Assembly e
comando para linguagens de alto nvel.
H hoje uma crescente tendncia a se utilizar um conjunto de instrues reduzido, de vez que os
compiladores tendem a usar em geral apenas uma pequena quantidade de instrues. H tambm
vantagens na implementao do hardware - maior simplicidade, menor tempo de ciclo de

instruo). O projeto de um processador poderia ser resumido em:


a) Definir o conjunto de instrues (todas as possveis instrues que o processador poder
executar)
definir formato e tamanho das instrues
definir as operaes elementares
b) Projetar os componentes do processador (UAL, UC, registradores, barramentos, ...)
Duas estratgias so possveis na construo do decodificador de instrues da UC:
. wired logic (as instrues so todas implementadas em circuito)
. microcdigo (apenas um grupo bsico de instrues so implementadas em circuitos; as demais
so "montadas" atravs de microprogramas que usam as instrues bsicas.
Ciclo de Instruo
As instrues so executadas sequencialmente (a no ser pela ocorrncia de um desvio), uma a uma.
O CI indica a seqncia de execuo, isto , o CI controla o fluxo de execuo das instrues. A
seguir ilustrado o ciclo de processamento de uma instruo.

Descrio do processamento de uma instruo na UCP:


- a UC l o endereo da prxima instruo no CI;
- a UC transfere o endereo da prxima instruo, atravs do barramento interno, para o REM;
COMUNICAO ENTRE MEMRIA PRINCIPAL E UCP
BARRAMENTOS
Os diversos componentes dos computadores se comunicam atravs de barramentos. Barramento
um conjunto de condutores eltricos que interligam os diversos componentes do computador e de
circuitos eletrnicos que controlam o fluxo dos bits. Para um dado ser transportado de um
componente a outro, preciso emitir os sinais de controle necessrios para o componente-origem
colocar o dado no barramento e para o componente-destino ler o dado do barramento. Como um
dado composto por bits (geralmente um ou mais bytes) o barramento dever ter tantas linhas

condutoras quanto forem os bits a serem transportados de cada vez.


Obs.: Em alguns computadores (usando uma abordagem que visa a reduo de custos), os dados
podem ser transportados usando mais de um ciclo do barramento.
Assim, se quisermos transferir um byte - por exemplo, 01001010 - da UCP para a Memria
Principal, os circuitos de controle se encarregaro de colocar o byte 01001010 no barramento, ou
seja, colocariam sinais de tenso "high" nas 2, 4 e 7 linhas do barramento (por conveno, os bits
so sempre ordenados da direita para a esquerda) e de informar memria para ler o dado no
barramento. Os dados so representados no barramento na forma de sinais de tenso, sendo que um
sinal de tenso de uns poucos volts ("high") representa o bit "1" e um sinal prximo de zero volts
("low") representa o bit "0".
REGISTRADORES UTILIZADOS
A comunicao entre MP e UCP usa dois registradores da UCP chamados de Registrador de
Endereos de Memria - REM ou, em ingls, Memory Address Register (MAR), bem o como
Registrador de Dados da Memria - RDM ou, em ingls, Memory Buffer Register (MBR).
x = no de bits do barramento de endereos; em geral (mas no obrigatoriamente) igual ao n de bits
do Registrador de Endereos de Memria - REM.
M = n de bits contidos em uma clula; M em geral (mas no obrigatoriamente) igual ao n de bits
do Registrador de Dados da Memria - RDM.
ESQUEMTICO DE FUNCIONAMENTO DA COMUNICAO MP / UCP

UCP / MP
Barramento de endereos - unidirecional
(s a UCP envia dados - write - ou l dados - read - da MP)
Barramento de dados - bidirecional
Barramento de controle - bidirecional

UCP ---> MP (controles ... - r/w)


MP -----> UCP (wait ... )
ELEMENTOS ENVOLVIDOS:
Barramentos:
de dados - bidirecional
de endereos -unidirecional
de controle - bidirecional
Registradores:
REM - Registrador de Endereos de Memria (MAR - Memory Address Register)
RDM - Registrador de Dados de Memria (MBR - Memory Buffer Register)
Exerccios:
1) Quais das seguintes memrias so passveis de implementao?
N BITS NO N DE
MEMRIA
REM
CLULAS
a
b
c
d
e
f

10
10
9
11
10
1024

1024
1024
1024
1024
10
10

TAMANHO
DA CLULA
EM BITS
8
12
10
10
1024
10

2) Um computador tem 512 endereos e cada clula tem 10 bits. Qual a capacidade:
a) do REM;
b) do RDM;
c) da MP em bits.
3) Um computador tem um RDM de 16 bits e um REM de 20 bits. Sabe-se que a clula desse
computador de 8 bits e que ele tem um nmero de clulas igual sua possibilidade de
endereamento. Pede-se:
a) qual o tamanho da barra de endereos?
b) quantas clulas so lidas da memria em uma nica operao?
c) quantos bits tem a memria desse computador?
PALAVRA (UNIDADE DE INFORMAO)
Palavra a unidade de informao do sistema UCP / MP.
A conceituao mais usada (IBM, Digital) define palavra como sendo a capacidade de manipulao
de bits do ncleo do computador (UCP e MP). Pressupe-se aqui que todos os elementos do ncleo
do computador (o que inclue o tamanho da UAL, do acumulador e registradores gerais da UCP e o
barramento de dados) tenham a mesma largura (processem simultaneamente o mesmo nmero de
bits), o que nem sempre acontece. Muitas vezes encontram-se computadores em que o tamanho da
UAL e do acumulador (e registradores gerais) no o mesmo tamanho dos barramentos. Desta
forma, encontram-se especificaes de "computadores de 64 bits" mesmo quando seu barramento

de dados de 32 bits, nesse caso referindo-se exclusivamente capacidade de manipulao da UCP


de 64 bits (isto , sua UAL e acumulador tem 64 bits). Esta conceituao imprecisa (s vezes,
enganosa) e pode levar a erros de avaliao da capacidade de processamento de um computador.
Como exemplos, citamos os microprocessadores Intel 8086 (16 bits, sendo todos seus elementos de
16 bits) e seu "irmo" mais novo 8088, usado nos primeiros IBM/PC e XT (idntico sob quase
todos os aspectos ao 8086 e tambm dito de 16 bits, sendo que UAL e registradores so de 16 bits
mas o barramento de dados de apenas 8 bits, por economia e razes de compatibilidade com toda
uma gerao de placas de 8 bits). Destaque-se que nesse caso as transferncias de dados atravs do
barramento de dados se fazem em duas etapas, um byte de cada vez, e em conseqncia no 8088
elas consomem o dobro dos ciclos de barramento que o 8086), o que torna suas operaes de
transferncia de dados mais lentas que as de seu "irmo" 8086.
Concluindo, deve-se analisar caso a caso, porque a simples meno ao tamanho da palavra no
uma terminologia que permita definir de forma conclusiva sobre a arquitetura do computador.
Em geral, o termo "clula" usada para definir a unidade de armazenamento (o tamanho de clulas
de memria) e o termo "palavra" para definir a unidade de transferncia e processamento,
significando na prtica quantos bits o computador movimenta e processa em cada operao.
No confundir: clula no sinnimo de palavra, embora em algumas mquinas a palavra seja igual
clula. A palavra de um computador pode ter 1 byte (p.ex, 8080), 2 bytes (p.ex. 80286), 4 bytes
(p.ex. 486, o Pentium, e muitos mainframes IBM) e mesmo 8 bytes (p.ex. o Alpha da DEC).
Clulas de memria muitas vezes tem o tamanho de 1 ou 2 bytes - de 8 a 16 bits.
TEMPO DE ACESSO
Tempo de acesso (ou tempo de acesso para leitura) o tempo decorrido entre uma requisio de
leitura de uma posio de memria e o instante em que a informao requerida est disponvel para
utilizao pela UCP. Ou seja, o tempo que a memria consome para colocar o contedo de uma
clula no barramento de dados. O tempo de acesso de uma memria depende da tecnologia da
memria. As memrias DRAM (Dynamic RAM - as mais comuns hoje) tem tempo de acesso na
faixa de 60 ns.
Tempo de ciclo (ou ciclo de memria conceituado como o tempo decorrido entre dois ciclos
sucessivos de acesso memria. As memrias dinmicas perdem seu contedo em alguns instantes
e dependem de ser periodicamente atualizadas (ciclo de "refresh"). No caso das SRAM (Static RAM
ou memrias estticas), que no dependem de "refresh", o tempo de ciclo igual ao tempo de
acesso. As memrias dinmicas, no entanto, requerem ciclos peridicos de "refresh", o que faz com
que a memria fique indisponvel para novas transferncias, a intervalos regulares necessrios para
os ciclos de "refresh". Assim, as memrias DRAM tem ciclo de memria maior que o tempo de
acesso.
O tempo de acesso de qualquer memria tipo RAM (Random Access Memory ou memria de acesso
aleatrio) independente do endereo a ser acessado (a posio de memria a ser escrita ou lida),
isso , o tempo de acesso o mesmo qualquer que seja o endereo acessado.
ACESSO MEMRIA PRINCIPAL
O acesso MP ALEATRIO, portanto qualquer que seja o endereo (a posio) de memria que
se queira acessar, o tempo de acesso o mesmo (constante).
Obs.: Embora a MP seja endereada por clula, a UCP em geral acessa a MP por palavra.

O endereamento por clula d maior flexibilidade de armazenamento, em compensao o nmero


de acessos em geral maior.
FUNCIONAMENTO
A MP pode ser acessada atravs de duas operaes:
ACESSO Tipo LER ou ESCREVER
a) LEITURA: LER DA MEMRIA
Significa requisitar MP o contedo de uma determinada clula (recuperar uma informao). Esta
operao de recuperao da informao armazenada na MP consiste na transferncia de um
conjunto de bits (cpia) da MP para a UCP e no destrutiva, isto , o contedo da clula no
alterado.
SENTIDO: da MP para a UCP
PASSOS EXECUTADOS PELO HARDWARE:
a.1) a UCP armazena no REM o endereo onde a informao requerida est armazenada;
a.2) a UCP comanda uma leitura;
a.3) o contedo da posio identificada pelo endereo contido no REM transferido para o RDM e
fica disponvel para a UCP.
b) ESCRITA: ESCREVER NA MEMRIA
Significa escrever uma informao em uma clula da MP (armazenar uma informao). Esta
operao de armazenamento da informao na MP consiste na transferncia de um conjunto de bits
da UCP para a MP e destrutiva (isto significa que qualquer informao que estiver gravada
naquela clula ser sobregravada).
SENTIDO: da UCP para a MP
PASSOS EXECUTADOS PELO HARDWARE:
b.1) a UCP armazena no REM o endereo de memria da informao a ser gravada e no RDM a
prpria informao;
b.2) a UCP comanda uma operao de escrita;
b.3) a informao armazenada no RDM transferida para a posio de memria cujo endereo est
contido no REM.
CLASSIFICAO DAS MEMRIAS
Quanto leitura e escrita, as memrias podem ser classificadas como:
R/W - Read and Write (memria de leitura e escrita), comumente (e impropriamente) chamada de
RAM (Random Access Memory ou memria de acesso aleatrio), embora no seja a nica RAM.
Esta memria permite operaes de escrita e leitura pelo usurio e pelos programas. Seu tempo de
acesso da ordem de 70ns e independe do endereo acessado. construda com tecnologia de
semicondutores (bipolar, CCD), pode ser esttica (SRAM) ou dinmica (DRAM) e voltil. A MP
construda com memria R/W.
ROM - Read Only Memory ou memria apenas de leitura
Esta memria permite apenas a leitura e uma vez gravada no pode mais ser alterada. Tambm de
acesso aleatrio (isto , tambm uma RAM), mas no voltil. utilizada geralmente por

fabricantes para gravar programas que no se deseja permitir que o usurio possa alterar ou apagar
acidentalmente (tal como por ex..a BIOS - Basic Input Output System e microprogramas de
memrias de controle). Quando se liga uma mquina, da ROM que vem os programas que so
carregados e processados no "boot" (na inicializao o hardware aponta automaticamente para o
primeiro endereo da ROM). Desta forma, parte do espao de endereamento da MP ocupado por
ROM. A ROM mais lenta que a R/W e barata, porm o processo produtivo depende de ser
programada por mscara ("mask programmed") em fbrica e devido ao alto custo da mscara
somente se torna econmica em grandes quantidades.
Obs.: Boot (ou bootstrap loader) o processo de inicializao e carga dos programas bsicos de
um computador, automtica, sem interveno externa. Este termo vem de uma analogia com um
processo (impossvel) que seria uma pessoa se levantar puxando-se pelos cordes de suas prprias
botas.
PROM - Programmable Read Only Memory ou memria apenas de leitura, programvel. Esta
memria uma ROM programvel (em condies e com mquinas adequadas, chamadas
queimadores de PROM) e geralmente comprada "virgem" (sem nada gravado), sendo muito
utilizada no processo de testar programas no lugar da ROM, ou sempre que se queira produzir ROM
em quantidades pequenas. Uma vez programada (em fbrica ou no), no pode mais ser alterada.
EPROM - Erasable Programmable Read Only Memory ou memria apenas de leitura, programvel
(com queimadores de PROM) e apagvel (com mquinas adequadas, base de raios ultra-violeta).
Esta memria uma PROM apagvel. Tem utilizao semelhante da PROM, para testar
programas no lugar da ROM, ou sempre que se queira produzir ROM em quantidades pequenas,
com a vantagem de poder ser apagada e reutilizada.
EEPROM (ou E2PROM) - Electrically Erasable Programmable Read Only Memory ou memria
apenas de leitura, programvel e eletronicamente altervel. Tambm chamada EAROM
(Electrically Alterable ROM). Esta memria uma EPROM apagvel por processo eletrnico, sob
controle da UCP, com equipamento e programas adequados. mais cara e geralmente utilizada
em dispositivos aos quais se deseja permitir a alterao, via modem, possibilitando a carga de novas
verses de programas distncia ou ento para possibilitar a reprogramao dinmica de funes
especficas de um determinado programa, geralmente relativas ao hardware (p.ex., a reconfigurao
de teclado ou de modem, programao de um terminal, etc).
Lgica Temporizada
Conforme vimos ao analisar a comunicao entre UCP e memria, as instrues, os dados e os
endereos "trafegam" no computador atravs dos barramentos (de dados, de endereos e de
controle), sob a forma de bits representados por sinais eltricos: uma tenso positiva alta ("high" geralmente no entorno de 3 volts) significando "1" e uma tenso baixa ("low" - prxima de zero)
significando "0". Mas os dados no computador no ficam estticos; pelo contrrio, a cada ciclo
(cada "estado") dos circuitos, os sinais variam, de forma a representar novas instrues, dados e
endereos. Ou seja, os sinais ficam estticos apenas por um curto espao de tempo, necessrio e
suficiente para os circuitos poderem detetar os sinais presentes no barramento naquele instante e
reagir de forma apropriada. Assim, periodicamente, uma nova configurao de bits colocada nos
circuitos, e tudo isso s faz sentido se pudermos de alguma forma organizar e sincronizar essas
variaes, de forma a que, num dado instante, os diversos circuitos do computador possam
"congelar" uma configurao de bits e process-las. Para isso, preciso que exista um outro
elemento, que fornece uma base de tempo para que os circuitos e os sinais se sincronizem. Este

circuito chamado clock - o relgio interno do computador. Cada um dos estados diferentes que os
circuitos assumem, limitados pelo sinal do clock, chamado um ciclo de operao.
Clock
A Unidade de Controle da UCP envia a todos os componentes do computador um sinal eltrico
regular - o pulso de "clock" - que fornece uma referncia de tempo para todas as atividades e
permite o sincronismo das operaes internas. O clock um pulso alternado de sinais de tenso,
gerado pelos circuitos de relgio (composto de um cristal oscilador e circuitos auxiliares).
Ciclo de Operao
Cada um destes intervalos regulares de tempo delimitado pelo incio da descida do sinal,
equivalendo um ciclo excurso do sinal por um "low"e um "high" do pulso.
O tempo do ciclo equivale ao perodo da oscilao. A fsica diz que perodo o inverso da
freqncia. Ou seja,
P = 1 / f.
A freqncia f do clock medida em hertz. Inversamente, a durao de cada ciclo chamada de
perodo, definido por P=1/f (o perodo o inverso da freqncia).
Por exemplo, se f = 10 hz logo P = 1/10 = 0,1 s.

1 Mhz (1 megahertz) equivale a um milho de ciclos por segundo. Sendo a freqncia de um


processador medida em megahertz, o perodo ser ento medido em nanosegundos, como vemos no
exemplo abaixo:
f = 10 Mhz = 10 x 106 hz
P = 10 / 106 = 100 ns (1 nanosegundo).
Sempre que se fala sobre mquinas velozes, citamos nmeros em megahertz. Para um melhor
entendimento sobre o que ocorre na mquina, em vez de falar sobre a freqncia do clock seria mais
ilustrativo discutirmos uma outra grandeza: o perodo (isto , o tempo de durao de cada ciclo ou
simplesmente tempo de ciclo).
Quando se diz que um processador de 200 Mhz, est-se definindo a freqncia de operao de seu
processador (seu clock), significando que o processador pode alternar seus estados internos 166
milhes de vezes por segundo. Isto acarreta que cada ciclo (equivalente a um estado lgico) de
operao dura
1 / 200.000.000 s = 5 x 10-9 s ou seja, 5 nanosegundos.
Como podemos ver pelo exemplo a seguir, o processador com o clock ilustrado em (B) teria um
tempo de ciclo cinco vezes menor que o (A) e portanto teria (teoricamente) condies de fazer cinco
vezes mais operaes no mesmo tempo.

Quando analisamos os nmeros de clock de um processador ou barramento, pode ficar uma


impresso que esses nmeros no fazem sentido: 133 MHz, 166 MHz ... Vejamos como ficam seus
perodos, e como esses nmeros apresentam um padro regular:
Freqncia (MHz)
Perodo (ns)
25
40
33
30
40
25
50
20
66
15
100
10
133
7.5
166
6
200
5
266
3.75
Os primeiros computadores tinham um nico sinal de clock geral, vlido para UCP, memria,
barramentos de E/S (entrada / sada), etc. medida que a tecnologia foi se aperfeioando, a
freqncia de clock de operao dos processadores (e, em menor escala, tambm a das memrias)
aumentou em uma escala muito maior que a dos demais componentes. Desta forma, foi necessrio
criar diferentes pulsos de clock para acomodar as freqncias de operao dos diferentes
componentes. A placa-me de um PC utiliza uma freqncia-mestra (hoje em geral de 66 Mhz,
equivalente a um perodo de 15 ns, estando em prancheta placas para 100 MHz) para seu
barramento (ciclo de barramento), a qual multiplicada ou dividida para ser utilizada pelos demais
componentes:
o processador tem essa freqncia multiplicada por 2 (133 Mhz) a 4 (266 MHz),
o barramento PCI usa freqncias reduzidas pela metade (33 Mhz),
as memrias (ciclos da ordem de 60 ns) usam freqncias reduzidas a um quarto e
as cache secundrias (ciclos entre 10 e 20 ns) usam a prpria freqncia da placa-me.
As memrias cache primrias so hoje construdas como parte do processador e usam o mesmo
clock do processador.
O efeito prtico (econmico$$$$) do aumento da freqncia de operao que a preciso de
fabricao dos circuitos tem que ser tambm maior. O tamanho de cada juno de transistor fica
menor (hoje so construdos chips com 0,35 microns e uma nova gerao com 0,25 microns est em
gestao). Uma juno menor requer menor potncia para sua operao, menos eltrons para operar
uma transio de estados, menor tempo de propagao do sinal, menor potncia dissipada.
Em conseqncia da grande preciso exigida, apenas uma pequena parcela dos processadores
fabricados (cerca de 5%) consegue operar na mxima freqncia para a qual foram projetados, e a
maioria certificada para operar a freqncias mais baixas. Isto acarreta que, embora todos os

processadores de um tipo sejam fabricados pelos mesmos processos e nas mesmas mquinas,
apenas alguns sero certificados para a mxima freqncia prevista, o que obriga que o preo dos
processadores de clock mximo seja muito mais caro que o dos muitos outros que no obtiveram
certificao para aquele elevado clock e sero vendidos com "tags" de 166 ou 133 Mhz, a preos
reduzidos.
Instrues por ciclo
Qual a real importncia e significado da freqncia do processador?
Quando se faz uma soma em uma calculadora, basta teclar cada um dos algarismos do 1 nmero,
teclar o sinal de mais, depois teclamos os algarismos do segundo nmero e teclamos o sinal de
igual.
comum pensar que nos computadores as coisas se passam mais ou menos do mesmo jeito. No
entanto, a soma propriamente dita a menor das tarefas que um computador executa quando soma
dois nmeros. Neste exemplo, o computador precisaria localizar a instruo de soma na memria e
mov-la para a UCP. Esta instruo estaria codificada na forma de dgitos binrios e teria que ser
decodificada para determinar a operao a ser realizada (no caso, ADD), o tamanho dos dados
(quantas clulas eles ocupam), determinar a localizao e buscar cada um dos nmeros na memria,
e s ento, finalmente, fazer a soma. Para o computador, a soma realmente a parte mais simples e
mais rpida de toda a operao, j que decodificar a instruo e principalmente obter os dados
tomam a maior parte do tempo (este assunto ser discutido no Captulo sobre Representao de
Instrues).
Cada nova gerao de processadores tem sido capaz de executar as operaes relativas ao
processamento de uma instruo em menor nmero de ciclos do clock (ver seo sobre Pipeline em
Tpicos Avanados de Arquitetura). Por exemplo, na famlia Intel x86:
- 386 - mnimo de 6 ciclos por instruo de soma de 2 nmeros;
- 486 - em geral, 2 ciclos por instruo de soma de 2 nmeros;
- Pentium - 1 ciclo por instruo de soma de 2 nmeros;
- Pentium Pro - 1 ciclo por instruo de soma de 3 nmeros; na soma de mais nmeros, quando um
dos nmeros est em memria de baixa velocidade, o Pentium Pro capaz de "pular" este nmero e,
enquanto busca o nmero que falta, seguir adiante, buscando e somando os demais nmeros para
finalmente incluir o nmero que faltava na soma.
Usando uma analogia com um automvel, para andar mais rpido geralmente mais eficaz trocar
de marcha do que acelerar. Comparativamente, um processador de 66 Mhz hoje equivaleria a uma
pequena presso no acelerador e um de 300 Mhz ao acelerador pressionado at o fundo (p na
tbua!). Mas, se um 8088 fosse a 1 marcha, um Pentium II seria equivalente 5 marcha e seria
certamente muito mais rpido, mesmo que fosse possvel "acelerar" o 8088 ao mesmo clock do
Pentium. Se compararmos um 486 DX4-100 (100 Mhz) com um Pentium tambm de 100 Mhz,
veremos que o Pentium 100 ser substancialmente mais rpido, o que se deve sua arquitetura e
no ao clock.
portanto um engano comparar apenas a freqncia do clock: o desempenho do processador deve
ser avaliado por um conjunto de caractersticas da arquitetura, do qual a freqncia do clock
apenas um deles - e no o mais importante (mais detalhes sero apresentados no captulo Tpicos
Avanados de Arquitetura).

REPRESENTAO DE INSTRUES
INSTRUO DE MQUINA
Quem executa um programa o hardware e o que ele espera encontrar um programa em
linguagem de mquina (uma sequncia de instrues de mquina em cdigo binrio). Um programa
em linguagem de alto nvel no pode ser executado diretamente pelo hardware. Ele tem que ser
transformado (traduzido) para linguagem de mquina por um compilador, antes de ser carregada em
memria, para que o hardware possa execut-lo. A linguagem de mquina composta de cdigos
binrios, representando instrues, endereos e dados e est totalmente vinculada ao conjunto
("set") de instrues da mquina.
Funcionalmente as operaes do computador so:
matemticas (aritmticas, lgicas, de complemento, de deslocamento...)
movimentao de dados (memria <--> registrador)
entrada-sada (leitura e escrita em dispositivos externos - dispositivos de Entrada / Sada)
controle (desvio da sequncia de execuo, parar, etc...)
Obs.: O conjunto de instrues de alguns processadores, como por exemplo o Intel 8080, no possui
instrues para multiplicao ou diviso; portanto, um programa em linguagem de mquina, nestes
processadores, no pode fazer multiplicao ou diviso diretamente (somente atravs de
combinao de outras instrues). J um programa em linguagem de nvel mais alto pode
implementar comandos de multiplicao (ou diviso) que combinem uma srie de instrues
binrias do conjunto de instrues para fazer uma multiplicao (ou diviso) atravs de repetidas
somas (subtraes) ou por deslocamento de bits.
Ex. de um conjunto de instrues de uma mquina hipottica:
Instruo
Significado
Operao
Carregar no
Load
ACC <-- op
acumulador
Store
Salvar na memria
op <-- ACC
Add
Somar
ACC <-- ACC + op
Sub
Subtrair
ACC <-- ACC - op
Mult
Multiplicar
ACC <-- ACC * op
Div
Dividir
ACC <-- ACC / op
Jmp
Desviar
CI <-- op
Desviar, se ACC igual
Jz
CI <-- op, se ACC = 0
zero
Desviar, se ACC no
Jnz
CI <-- op, se ACC != 0
zero
Read
Ler entrada
op <-- entrada
Print
Imprimir
saida <-- op
Stop
Terminar

Cdigo
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1100

Cada uma das instrues tem um cdigo binrio associado, que o cdigo da operao.
Sero usadas as seguintes convenes:
Operador
+
*
/
<-<<
>>

Significado
adio
subtrao
multiplicao
diviso
atribuio
deslocamento
esquerda
deslocamento direita

Operador
~
=
!=
|
^

Significado
not (negao)
igual
diferente
or (AND)
exclusive or (XOR)

&

and (E)

FORMATO DAS INSTRUES


Cdigo de operao (OPCODE)

Operando 1 (OP1)

OP 2 OP 3...

Cdigo de Operao ou OPCODE - identifica a operao a ser realizada pelo processador. o


campo da instruo cuja valor binrio identifica ( o cdigo binrio) da operao a ser realizada.
Este cdigo a entrada no decodificador de instrues na unidade de controle. Cada instruo
dever ter um cdigo nico que a identifique.
Operando(s) - o campo da instruo cujo valor binrio sinaliza a localizao do dado (ou o
prprio dado) que ser manipulado (processado) pela instruo durante a operao. Em geral, um
operando identifica o endereo de memria onde est contido o dado que ser manipulado, ou pode
conter o endereo onde o resultado da operao ser armazenado. Finalmente, um operando pode
tambm indicar um Registrador (que conter o dado propriamente dito ou um endereo de memria
onde est armazenado o dado). Os operandos fornecem os dados da instruo.
Obs: Existem instrues que no tem operando. Ex.: Instruo HALT (PARE).
H diversos formatos de instrues, com caractersticas particulares, vantagens e desvantagens.
O conjunto de instrues de uma mquina pode ser constitudo por instrues de diversos formatos.
Esta flexibilidade permite a escolha da instruo adequada para aplicao em cada caso.
Conjunto de instrues pode ser analisado sob alguns aspectos, por exemplo:
- quantidade de instrues
- quantidade de operandos
- modo de endereamento ( a forma de sinalizar a localizao de um dado - endereamento
imediato, direto, indireto, indexado... ser abordado na prxima seo - Modos de Endereamento).
Exemplos:
ADD OP1 OP2

=>

ADD OP1 OP2


OP3

=>

ADD OP1

=>

(OP1) <-- (OP1) +


(OP2)
(OP3) <-- (OP1) +
(OP2)
(ACC)<--(ACC) +
(OP1)

Soma contedo de OP1 e OP2 e


armazena o resultado em OP1
Soma contedo de OP1 e OP2 e
armazena o resultado em OP3
Soma contedo de OP1 e ACC e
armazena o resultado em ACC

LTR - Linguagem de Transferncia entre Registradores (register transfer language)


A LTR utilizada para sinalizar o processamento de uma operao, mostrando o que acontece com
os registradores e posies de memria como resultado do processamento de uma instruo.
caracteres alfanumricos significam abreviaturas de nomes de registradores ou posies de
memria (ex: REM. MP)
parnteses indicam contedo, no caso de registradores, ou o valor um endereo na MP.
seta indica atribuio (transferncia de contedo entre registradores ou entre registrador e memria
principal)
Ex.: REM <--- (CI) - o contedo do CI copiado para o REM
Ex.: RDM <--- (MP(REM)) - o contedo da clula da MP cujo endereo est no REM copiado
para o RDM
TAMANHO (EM BITS) DE UMA INSTRUO
PROBLEMA DE PROJETO: Escolha do tamanho das instrues
Da escolha do tamanho das instrues depende :
tamanho da memria
tamanho das clulas da MP
velocidade de acesso
organizao do barramento de dados.
A soluo desta equao complexa. Basicamente, o projetista decide entre fatores como economia
de espao em memria, processamento mais rpido das instrues ou um conjunto de instrues
mais completo e poderoso:
Maior Conjunto Instrues
--> requer muitas instrues (para atendimento a diferentes aplicaes) --->muitos bits por opcode
--> requer instrues completas ---> muitos bits para operandos
--> requer hardware mais complexo ---> processamento de instrues mais lento
CDIGO DE OPERAO (OPCODE)
O nmero de bits do cdigo de operao depende de quantas instrues tem o set de instrues da
mquina.
Ex: um processador com 256 instrues (ou 28 instrues) teria necessidade de 8 bits para
representar o cdigo de operao. Lembre-se que cada instruo precisa ter o seu cdigo binrio!
Um processador pode ter suas instrues com cdigo de operaes com tamanho fixo ou varivel.
Cdigos de operao com tamanho fixo so mais fceis de implementar e manipular durante a
execuo de programas.
Se uma mquina com cdigo de operao de tamanho fixo tem N instrues, sero necessrios n
bits para representar suas instrues, sendo:
2n = N
Desta forma, o nmero de bits necessrios ao opcode ser:
n = log2 N
No caso do microprocessador Intel 8080, o cdigo de operao tem 8 bits e so implementadas 78
instrues. Com 8 bits no cdigo de operao, teria sido possvel implementar 2 8 = 256 instrues.
Assim, o projetista poderia ter utilizado apenas 7 bits, no entanto preferiu utilizar 8 bits, mantendo

uma "folga" e os cdigos no utilizados ficaram como reserva para futuras implementaes em
outros processadores da mesma "famlia", o que permitiu manter a compatibilidade entre os
processadores da famlia.
No Intel 8080, o cdigo de operaes varia apenas os 6 bits mais significativos; os 2 bits menos
significativos so utilizados para indicaes da especificidade da instruo, conforme veremos na
seo sobre o Conjunto de Instrues do Intel 8080.
Outros sistemas possuem cdigo de operao de tamanho varivel.
Por exemplo, o IBM/370 tem:
---> 166 instrues com cdigo de operao de 8 bits.
---> 11 instrues com cdigo de operao de 16 bits.
Opcodes com tamanho varivel permitem codificar maior quantidade de instrues com menos bits
e permitem projetar um compromisso mais flexvel entre a quantidade de bits do opcode e do(s)
campo(s) de operando(s). Esta organizao bastante comum.
OPERANDO
A funo do operando identificar / localizar o dado que ser processado.
Quanto ao nmero de operandos, podemos considerar:
Um maior nmero de operandos permite maior completeza, por possibilitar ter todos os operandos
necessrios indicao dos dados para a realizao de operao. Em conseqncia, embora mais
operandos ocupem mais memria, ser necessrio uma menor quantidade de instrues em um
programa, ocupando menor espao em memria.
Com um menor nmero de operandos, as referncias ficam menos completas, e sero necessrias
mais instrues no programa. No entanto, tendo menos operandos, o espao ocupado na memria
pelos operandos ser menor.
A deciso sobre o nmero de operandos tomada pelo projetista, levando em conta esse balano.
Como geralmente o operando contm um endereo da MP, o nmero de bits ocupado por um
operando depende do nmero de clulas endereveis de memria, ou seja, preciso saber quantas
clulas podem ser endereadas na memria principal para saber quantos bits sero necessrios para
o operando.
Obs.: desta forma, pode-se concluir que o nmero de bits de cada operando ser igual ao nmero de
bits do REM e do CI.
Por simplicidade, neste curso vamos considerar que todas as instrues de uma mquina tem o
mesmo tamanho. Esta simplificao muitas vezes no corresponde realidade de uma mquina
comercial, mas atende aos objetivos deste curso.
Exerccio 1:
(Adaptado do livro Organizao Estruturada de Computadores, A. Tanembaum, pg. 250)
Uma certa mquina tem endereos de 6 bits e instrues de 16 bits. Algumas das instrues deste
computador tem um operando e outras tem dois operandos. Se h n instrues de dois operandos,
qual o nmero mximo de instrues de um operando?
Exerccio 2:
As instrues de um certo computador ocupam sempre 1 (uma) palavra de 36 bits. O conjunto de

instrues deste computador deve incluir todas as seguintes instrues:


a) 7 instrues com 3 operandos (duas referncias memria e uma a registrador);
b) 500 instrues com 2 operandos (uma referncia memria e uma a registrador);
c) 50 instrues com 1 operando (uma referncia memria).
Considerando que esta mquina tem endereos de 15 bits e 8 registradores gerais, elabore um
esquema de codificao para os cdigos de instruo.
Exerccio 3:
Comente quais as conseqncias se, no problema anterior, fosse alterado o item a) para ... 8
instrues ...
CICLO DE INSTRUO
Primeiramente, o programa a ser executado precisa ser carregado (armazenado) na MP, o que feito
pelo Sistema Operacional, que tambm se encarrega de informar UCP onde o programa comea.
O Sistema Operacional faz isto "setando" o Contador de Instrues (isto , colocando no CI o
endereo da MP onde est localizada a primeira instruo daquele programa).
A partir da se realiza o processamento automtico, executando-se as instrues seqencialmente
uma a uma, o que obtido atravs do incremento automtico do CI.
Obs: Se o programa inclui uma instruo de desvio, o fluxo seqencial pode ser alterado.
A UCP no diferencia um dado de uma instruo. A UCP no "executa" dados devido ao contedo
do CI, que incrementado pelo tamanho da instruo e fica sempre apontando para a prxima
instruo. Mas se em um programa houver uma instruo de desvio para um endereo em que esteja
contido um dado, a UCP interpretaria o valor binrio do dado como se fosse o cdigo de uma
instruo, tentaria executar e o resultado seria imprevisvel.
Ciclo de Instruo
1 - A UCP busca o cdigo de operao na MP e armazena no Registrador de Instruo da UC
Fase: Busca da instruo - (Instruction Fetch) - ciclo de busca
RI <--- (CI)
Micro-operaes:
- a UC l o contedo do CI (endereo da prxima instruo ) e coloca o endereo no REM;
- a UC envia um sinal memria de operao de leitura (memory read), via barramento de controle;
- a memria l o endereo que est no REM, via barramento de endereos, e busca o contedo da
clula referenciada;
- a memria coloca no RDM, via barramento de dados, o contedo da clula lida;
- a memria envia UC, via barramento de controle, um sinal de "leitura concluda";
- a UC transfere o cdigo de operao (o contedo do RDM) ao RI.
2 - A UC (decodificador de instrues) decodifica o Cdigo de Operao.
Fase: Busca da instruo - (Instruction Fetch) - ciclo de busca
Micro-operaes:
- o Decodificador de Instrues decodifica o opcode;
- o Decodificador de Instrues determina quantas clulas a instruo ocupa;
- a UC incrementa o CI para apontar para a prxima instruo: CI <--- (CI + n), onde n = n de
clulas que a instruo ocupa.
- a UC incrementa o REM para apontar para o operando: REM <--- (REM + 1);
3 - A UC busca (se houver) o(s) operando(s)
Fase: Busca de operandos (Operand Fetch) - ciclo de execuo
RI <--- (Op)
Micro-operaes:

- a UC envia um sinal memria de operao de leitura (memory read), via barramento de controle;
- a memria l o endereo que est no REM, via barramento de endereos, e busca o contedo da
clula referenciada;
- a memria coloca no RDM, via barramento de dados, o contedo da clula lida;
- a memria envia UC, via barramento de controle, um sinal de "leitura concluda";
- a UC transfere o operando (o contedo do RDM) ao RI.
* Se o operando o prprio dado:
-- a UC transfere o dado (o contedo do RDM) ao ACC.
-- vai para operao 4; caso contrrio:
* Se o operando um ponteiro para onde o dado est armazenado:
-- a UC coloca no REM o endereo de onde o dado est armazenado;
-- a UC envia um sinal memria de operao de leitura (memory read), via barramento de
controle;
-- a memria l o endereo que est no REM, via barramento de endereos, e busca o contedo da
clula referenciada;
-- a memria coloca no RDM, via barramento de dados, o contedo da clula lida;
-- a memria envia UC, via barramento de controle, um sinal de "leitura concluda";
-- a UC transfere o dado (o contedo do RDM) ao ACC;
-- vai para operao 4.
4 - A UC comanda a execuo da instruo (a operao executada sobre o dado).
Fase: Execuo da instruo - ciclo de execuo
- UAL executa a instruo.
5 - Se o programa tiver terminado, Para; seno, volta ao passo 1.

Exemplo 1:
Formato da Instruo de Mquina:
Cdigo Operao
Operando
8 bits
8 bits
tamanho da instruo = 16 bits

Contedo da Memria Principal:


MP
ENDEREO
CONTEDO da CLULA
00
2A
01
0C
02
2B
03
04
04
56
.....
.....
0C
01
0D
00
Nesta mquina, considere que o cdigo de operao 2A significa LDA Op ==> ACC <--- (Op)
Obs.: A instruo do exerccio LDA Op (LDA um mnemnico para "load accumulator") significa
"carrega no acumulador o contedo da posio de memria indicada no operando".
Soluo:
Neste exemplo:
O CI tem 8 bits porque o operando tem 8 bits; o mapa de memria tambm mostra isso, com os
endereos ocupando 2 dgitos hexadecimais (cada dgito hexadecimal requer 4 bits).
A clula de memria tem 8 bits, conforme vemos pelo mapa de memria, em que os contedos das
clulas ocupam 2 dgitos hexadecimais.
O RI tem 16 bits porque a instruo tem 16 bits.
ACC - no daria para assegurar porque depende do tamanho da palavra; vamos assumir 8 bits, de
vez que como o operando, o opcode e a clula tm 8 bits, o RDM e o Acumulador provavelmente
tambm tero 8 bits
A instruo LDA Op ocupar 2 clulas, logo o incremento do CI = n = 2
Vamos acompanhar o processamento da instruo LOAD (2A neste exemplo) => colocar o
contedo do endereo indicado pelo operando no ACC (carrega dado no acumulador); T0, T1 e T2
representam os diversos estados dos registradores (nos respectivos tempos do ciclo de busca da
instruo).
n=2 (2 acessos MP para buscar instruo)
CICLO de
CI
ACC
REM
RDM
TEMPO
T0
00
x
00
2A
T1
02
x
01
0C

RI (16 bits)
2Axx
2A0C

OPERAO

L opcode
L operando
Carrega
T2
02
0C
01
0C
2A0C
Acumulador
Obs.: usamos um x para indicar que o contedo de uma clula ou de parte da clula no importa
("don't care") e no considerado ( desprezado) para a presente operao, podendo ser nulo ou
ento conter o resultado de uma operao anterior.

Exemplo 2:
Considerando a mesma mquina do exemplo anterior, qual seria o processamento da instruo
LDIA Op ==> ACC <--- ((Op))
Obs.: A instruo do exerccio LDIA Op (LDIA um mnemnico para "load accumulator indirect")
significa "carrega no acumulador o contedo da posio de memria apontada pela posio indicada
no operando". Portanto, a posio de memria indicada pelo Operando um ponteiro para a posio
onde est o dado e existe uma indireo. Esse assunto ser tratado em detalhe na prxima seo Modo de Endereamento.
CICLO de
CI
ACC REM RDM
RI (16 bits) OPERAO
TEMPO
T0
00
x
00
2A
2Axx
L opcode
T1
02
x
01
0C
2A0C
L operando
T2
02
x
0C
01
2A0C
L dado
Carrega dado no
T3
02
01
0C
01
2A0C
acumulador
Exemplo 3:
Numa mquina de 2 operandos, a MP tem 256 clulas com 20 bits, o RDM tem 20 bits e cada
instruo ocupa 1 clula. Em seu conjunto de instrues, o cdigo binrio 6 tem o seguinte
significado:
6 => ADD Op1, Op2 ==> (Op1) <---- (Op1) + (Op2) - soma o contedo da posio de memria
indicada em Op1 com o contedo da posio de memria indicada em Op2 e coloca o resultado na
posio de memria indicada em Op1.
Mostre o contedo dos registradores da UCP e das posies de memria que se alterarem aps a
execuo da instruo dada.
Mapa da memria:
ENDEREO
10
....
B2
B3
....

MP (T1)
6B2B3
.....
03210
04591
.....

Soluo:
A MP tem 256 clulas = 28 clulas ----> REM = 8 bits ----> CI = 8 bits
Clula = 20 bits e 1 instruo = 20 bits
RDM = 20 bits e RI = 20 bits
Operando = 8 bits ---> 8 bits x 2 operandos = 16 bits (cada instruo tem 2 operandos); logo, o
opcode tem 4 bits.
Cada instruo ocupa uma clula, logo n=1 (o incremento do CI ser sempre 1).
Formato da
operando operando
opcode
instruo:
1
2
(20 bits)
4 bits
8 bits
8 bits
-

CI

REM

RDM

ACC

T0

10

10

6B2B3

OPERAO
L instruo (opcode + 2
operandos)

T1
T2
T3

11
11
11

B2
B3
B2

03210
04591
077A1

03210
077A1
077A1

L 1 dado
L 2 dado
Executa instruo

CLCULO DO VALOR DO ACUMULADOR


03210
04594+
-------077A1
Resp.: A posio de memria B2 ser alterada para o valor 077A1. Nenhuma outra posio de
memria alterada.
Exemplo 4:
Mquina com Instrues de 3 operandos
Resolver a expresso: X = A * (B + C * D - E/F)
Conjunto de Instrues:
ADD X,A,B ===> (X) <--- (A) + (B) => soma contedo das posies de memria A e B e coloca o
resultado em X
SUB A,B,X ===> (X) <--- (A) - (B) => subtrai contedo da posio de memria B da A e coloca o
resultado em X
MULT A,B,X ===> (X) <--- (A) * (B) => multiplica contedo das posies de memria A e B e
coloca o resultado em X
DIV A,B,X ===> (X) <--- (A) / (B) => divide contedo da posio de memria A pela B e coloca o
resultado em X
Soluo:
MULT C, D, X ----> (X) <--- (C) * (D)
DIV E, F, T ------> (T) <--- (E) / (F) (sendo T uma varivel temporria - nenhuma varivel deve ser
sobrescrita)
ADD B, X, X ----> (X) <--- (B) + [(C) * (D)]
SUB X, T, X -----> (X) <--- (B) + [(C) * (D)] - [(E) / (F)]
MULT A, X, X ----> (X) <--- (A) * {(B) + [(C) * (D)] - [(E) / (F)]}
Obs: o nmero de instrues igual ao nmero de operaes da expresso.
Exemplo 4:
Mquina com Instrues de 2 operandos
Resolver a expresso: X = A * (B + C * D - E/F)
Conjunto de Instrues:
ADD X,A ===> (X) <--- (X) + (A) ===> Soma o contedo de X e A e coloca o resultado em X
SUB X,A ===> (X) <--- (X) - (A)
MULT X,A ===> (X) <--- (X) * (A)
DIV X,A ===> (X) <--- (X) / (A)
MOV X,A ===> (X) <--- (A) ==> copia o contedo de A para X.
Obs.: observar que, ao no dispor do 3 operando (o qual indica uma terceira posio de memria,

onde ser colocado o resultado), o contedo do 1 operando sobrescrito (portanto, destrudo)


pela instruo, pois o resultado vai para ele; desta forma, necessrio uma outra instruo, para
mover o contedo de uma posio de memria para outra posio, de forma a permitir salvar o
contedo de uma varivel e tambm mover o resultado, se necessrio:
Soluo:
MOV X, C ==> (X) <--- (C) (copiou o contedo de C para X)
MULT X, D ==> (X) <--- (C) * (D) (desta forma no se perde o contedo de C)
MOV T, E ==> (T) <--- (E) (copiou o contedo de E para uma varivel temporria T)
DIV T, F ==> (T) <--- (E) / (F)
ADD X, B ==> (X) <--- (B) + [(C) * (D)]
SUB X, T ==> (X) <--- (B) + [(C) * (D)] - [(E) / (F)]
MULT X, A ==> (X) <--- (A) * {(B) + [(C) * (D)] - [(E) / (F)]}
OBS: o nmero de instrues maior que o nmero de operaes da expresso
Exemplo 5:
Mquina com Instrues de 1 operando
Resolver a expresso: X = A * (B + C * D - E/F)
Conjunto de Instrues:
ADD X ==> ACC <--- ACC + (X) ==> soma os contedos do acumulador e de X e coloca o
resultado no acumulador.
SUB X ==> ACC <--- ACC - (X)
MPY X ==> ACC <--- ACC * (X)
DIV X ==> ACC <--- ACC / (X)
LOAD X ==> ACC <---- (X) ==> carrega o contedo de X no acumulador
STORE X ==> (X) <--- ACC ==> salva o contedo do acumulador na posio de memria X.
Obs.: Observe que, ao dispor de apenas 1 operando (portanto, teria a indicao de apenas 1 dado da
operao), o 2 dado e o local onde ser colocado o resultado so substitudos pelo
ACUMULADOR que funciona como um OPERANDO IMPLCITO. O contedo do acumulador
sobrescrito (destrudo) pela instruo, pois o resultado vai para ele; desta forma, so necessrias
duas outras instrues, para carregar o contedo de uma posio de memria para o acumulador e
para salvar o contedo do acumulador para outra posio de memria, de forma a permitir mover
dados e o resultado da instruo, entre o acumulador e a a memria:
Soluo:
LOAD E ==> ACC <--- (E) (carregou o contedo de E no acumulador)
DIV F ==> ACC <--- (E) / (F) (no se perde o contedo de E ou F)
STORE X ==> (X) <--- (E) / (F) (salvou o contedo do acumulador em X)
LOAD C ==> ACC <--- (C) (carregou o contedo de C no acumulador)
MULT D ==> ACC <--- (C) * (D) (no se perde o contedo de C ou D)
ADD B ==> ACC <--- (B) + [(C) * (D)]
SUB X ==> ACC <--- (B) + [(C) * (D)] - [(E) / (F)]
MULT A ==> ACC <--- (A) * {(B) + [(C) * (D)] - [(E) / (F)]}
STORE X ==> (X) <--- (A) * {(B) + [(C) * (D)] - [(E) / (F)]} (salva o contedo do acumulador na
posio de memria X)
OBS: o nmero de instrues maior que o nmero de operaes da expresso. No foi necessrio

utilizar qualquer varivel temporria.


Exerccio 6
Compare os exemplos anteriores em relao ao tempo de execuo, nmero de instrues e
memria. Experimente resolver as expresses executando as instrues em ordem diferente, e seus
efeitos em relao ao nmero de instrues e de variveis temporrias usadas.
MODOS DE ENDEREAMENTO
MODO IMPLCITO (Implied Addressing)
A funo da instruo traz implcito o endereamento.
Exemplo
No microprocessador Intel 8080 essas instrues ocupam apenas 1 byte; so as seguintes as
instrues com endereamento implcito:
STC (set carry flag) - "seta" o bit de carry e CMC (complement carry) - complementa o valor do bit
de carry; - o operando implcito o carry flag.
RAL (rotate accumulator left), RAR (rotate accumulator right) - instrues de deslocamento de
bits, esquerda e direita - o operando implcito o acumulador;
RLC (rotate accumulator left through carry) e RRC (rotate accumulator right through carry) instrues de deslocamento de bits, esquerda e direita, atravs do carry flag - os operandos
implcitos so o acumulador e o carry flag;
DAA (decimal adjust accumulator) - instruo para aritmtica em BCD - o operando implcito o
acumulador.
MODO IMEDIATO
O valor do campo operando o prprio dado.
usado para trabalhar com valores constantes. O operando dito operando imediato (o operando
o prprio valor a ser operado, ou seja, o prprio dado a ser processado).
Vantagem
O operando obtido durante o ciclo de busca, em apenas 1 acesso. No necessrio fazer nenhum
acesso MP no ciclo de execuo, acarretando maior rapidez na execuo.
Desvantagens
a) O tamanho do dado fica limitado ao nmero de bits do operando (campo operando da instruo).
A limitao de tamanho do campo operando reduz o valor mximo do dado que pode ser
armazenado. No Intel 8080, o campo Operando tem 8 bits, portanto o maior valor deste campo ser
limitado a 28 = 256. Existem instrues que permitem carregar doublewords, isto , palavras duplas
que ocupam 2 clulas de memria, em que o maior valor ser limitado a 2 16 = 65.536 (64 k).
b) Este modo de endereamento no permite flexibilidade para alterar dados que variam a cada
execuo do programa, portanto no adequado para variveis repetidamente operadas com
diferentes valores a cada execuo do programa.
Utilizao
- Inicializao de contadores
- Constantes
- Armazenamento de ponteiros em registradores
- Indicao de quantidade de posies em operaes de deslocamento de bits (multiplicao e
diviso)
Exemplos

Obs.: Instrues do Intel 8080.


LDI Op ==> ACC <--- Op = carrega o valor (hexadecimal) do operando no acumulador.
LDI 50 (load immediate) ==> ACC <---- 50 (carrega o valor hexadecimal 50 no acumulador)
LDI 'Op' ==> ACC <--- 'Op' = carrega o caractere representado no operando no acumulador.
LDI 'C' (load immediate) ==> ACC <---- C (carrega o caractere C (ASCII 43) no acumulador)
JMI Op (jump immediate) ==> CI <--- Op = carrega o CI com o valor (hexadecimal) do operando
JMI 1000H ==> CI<--- 1000 = causa um desvio para o endereo 1000 (hexadecimal)
Obs.: O Intel 8080 armazena o byte menos significativo do operando na posio de memria que
segue o opcode e o byte mais significativo do operando na segunda posio de memria que segue
o opcode.
MVI R, Op (move immediate) ==> R <--- Op = move o valor do operando para o registrador R
MVI B, 7AC1 ==> B <--- 7AC1 (como o operando de 16 bits, B estar representando o par B, C)
CPI C (compare immediate) ==> compara os valores do ACC com o caractere C (ASCII 43)
LXI Op (load register pair immediate) ==> RP <--- Op = carrega o valor do operando em um par de
registradores.
LXI SP, 31FFH ==> SP <--- 31FF (carrega o valor hexadecimal 31FF no Ponteiro de Pilha - SP)
Nota: No Intel 8080, as instrues com endereamento imediato so sempre codificadas com
mnemnicos de 3 letras terminados pela letra I.
Exemplos
instruo de soma ==> mnemnico para endereamento direto = ADD
instruo de soma ==> mnemnico para endereamento imediato = ADI;
instruo move ==> mnemnico para endereamento direto = MOV
instruo move ==> mnemnico para endereamento imediato = MVI;
instruo load (carrega) ==> mnemnico para endereamento direto): LDA
instruo load ==> mnemnico para endereamento direto = LDI
Obs.: No Intel 8080, quase todas as instrues imediatas usam o acumulador como operador
implcito. As excees so:
MVI (move immediate) - pode mover o dado para qualquer registrador de trabalho ou posio de
memria;
LXI (load register pair immediate) - move um dado de 16 bits (geralmente um endereo) para
qualquer par de registradores.
MODO DIRETO
O valor do campo operando indica o endereo do dado na MP.
No Intel 8080, como um endereo requer 16 bits, o operando (no modo direto) ter 16 bits,
ocupando 2 clulas e as instrues no modo de endereamento direto tero 3 bytes.
Vantagens
a) aplicado em mais situaes que o modo imediato;
b) Requer apenas uma referncia memria para busca do dado (alm de uma para a busca da
instruo), sendo mais rpido que o modo indireto.

Desvantagens
a) Limitao do endereo da MP que pode ser indicado pelo tamanho do campo operando.
b) mais lento que o modo imediato.
Utillizao
Quando o dado varia de valor a cada execuo.
Exemplos de Instrues do Intel 8080:
LDA Op (load accumulator), sendo Op um endereo na memria ==> ACC <--- (Op)
(carrega o contedo da posio de memria indicada pelo operando no acumulador).
LDA 978A ===> ACC <--- (978A) = carrega no acumulador o contedo da posio de memria
978A.
JMP Op ("jump") ==> CI <--- (Op)
JMP 1000H ==> CI<--- (1000H) = causa um desvio para o endereo contido nas posies 1000 e
1001 (hexadecimal) da memria, carregando o contedo das posies 1000 e 1001H no CI
Obs: como o CI contm 16 bits (um endereo), sero necessrias DUAS clulas de memria (uma
clula contm 8 bits), o que requer dois ciclos de busca memria.
MOV R, Op ==> R <--- (Op)
MOV B, 7AC1 ==> B <--- (7AC1), move o contedo da posio de memria (8 bits) indicada pelo
operando - 7AC1 - para o registrador B (8 bits).
Exerccio:
Comparar o efeito das instrues acima no modo direto com as instrues equivalentes no modo
imediato, em termos de acessos memria.
Resp: No modo de endereamento direto, so necessrios mais de 1 acessos MP para a busca do
dado, sendo 1 no ciclo de busca para busca do operando e pelo menos 1 no ciclo de execuo para a
busca do dado propriamente dito. No modo imediato, necessrio apenas um acesso memria no
ciclo de busca para a busca do dado (o operando o prprio dado). No necessrio nenhum acesso
de busca memria no ciclo de execuo.
MODO INDIRETO
O campo operando contm um endereo de memria cujo contedo o endereo do dado a ser
operado.
Portanto, h um duplo endereamento. O endereo intermedirio chamado ponteiro (pointer)
DESENHO (a incluir)
Exemplo:
LDID Op ==> ACC <--- ((Op))
So necessrios 3 ou mais acessos memria: 1 para buscar o opcode, 1 (ou 2, quando for uma
referncia memria) para buscar o operando (Op) e mais 1 para buscar o dado ((Op))
propriamente dito (ou 2, quando o dado for um endereo de memria; por exemplo, quando for uma
instruo de desvio).
Vantagem
a) Permite implementar estruturas de organizao de dados mais complexas, mais sofisticadas.
b) Elimina a limitao de clulas endereveis.

Desvantagem
Requer maior quantidade de acessos MP para completar o ciclo de execuo da instruo,
acarretando que o tempo requerido para a execuo da instruo maior.
Obs.1: possvel haver vrias indirees. Em algumas mquinas, existe 1 bit que sinaliza no caso
de existirem vrias Indirees. Enquanto este bit for 0, continua com as indirees, at encontr-lo
ligado.
Obs.2: O Intel 8080 somente dispe de instrues com modo de endereamento indireto usando
registradores como ponteiro. Os exemplos dessa aplicao so apresentados no item sobre
ENDEREAMENTO POR REGISTRADOR.
Utilizao
Manuteno de ponteiro de dados
Exemplo:
Relao de dados a serem movimentados para novas posies de memria (por exemplo, elementos
de vetores), basta modificar o valor da clula endereada pela instruo (no necessrio mudar o
valor do operando).
ENDEREAMENTO POR REGISTRADOR
Existem outros modos de endereamento, que usam registradores para indicar a posio onde esto
os dados. Os modos de endereamento direto e indireto por registrador funcionam de forma
semelhante aos modos de endereamento direto e indireto vistos anteriormente (em que o operando
aponta para uma posio de memria), porm o operando aponta para um registrador (onde est o
dado - endereamento direto - ou ento faz referncia memria - endereamento indireto).
Modo por registrador direto
O operando aponta para um registrador, o qual contm o dado.
Modo por registrador indireto
O operando aponta para um registrador, o qual contm um endereo de memria (ponteiro) para o
dado.
Vantagens
Maior velocidade / rapidez de execuo - o acesso ao registrador muito mais rpido que o acesso
memria.
Economia de espao de armazenamento de instruo (o tamanho da instruo menor porque como
so poucos registradores, so menos bits para seus endereos).
Desvantagem
No so adequados para transferncia de variveis da MP para ULA.
Pequeno nmero de registradores - se forem muitos os dados endereados por registrador, os
registradores disponveis podem no ser suficientes.
Utilizao
Implementao de contadores.
Exemplo de uso:

vetor E(1) ... E (100)


Ri contm E ( i ) para incrementar e percorrer o vetor
Obs.: No Intel 8080, a identificao do registrador envolvido na operao faz parte do prprio
opcode.
Exemplos
Os exemplos usam instrues do Intel 8080:
ADD r (add register) ==> (ACC) <--- (ACC) + (r) - soma o contedo do registrador r ao contedo
do acumulador (endereamento por registrador, direto)
ADD M (add memory) ==> (ACC) <--- (ACC) + ((M)) - soma o contedo da posio de memria
indicada pelo registrador M ao contedo do acumulador (endereamento por registrador, indireto)
INR M (increment memory) ==> ((M)) <--- ((M)) + 1 - incrementa o contedo da posio de
memria indicada pelo registrador M (endereamento por registrador, indireto)
DCR r (decrement register) ==> (r) <--- (r) - 1 - decrementa o contedo do registrador r
(endereamento por registrador, direto)
MOV r1, r2 (move register) ==> (r1) <--- (r2) - o contedo do registrador r2 copiado para o
registrador r1 (endereamento por registrador, direto).
MOV M, r (move to memory) ==> ((M)) <--- (r) - o contedo do registrador r copiado para a
posio de memria cujo endereo est no registrador M (endereamento por registrador, indireto).
MODO INDEXADO
O endereo de cada elemento obtido atravs da soma do campo Operando com o contedo de um
registrador (Registrador de ndice).
O endereo de cada elemento (por exemplo, de um vetor) a soma (antes da colocao do endereo
no REM) do valor do campo operando com o contedo de um registrador (escolhido como
registrador ndice).
Vantagem
Rapidez na execuo das instrues de acesso aos dados (a alterao dos endereos realizada na
UCP.
Utilizao
Manipulao de estruturas de dados mais sofisticadas (vetores).
Obs.: O Intel 8080 no possui nenhuma instruo com modo de endereamento indexado, o qual
somente foi introduzido na famlia Intel a partir do 8086.
Exemplos
LDX Ri, Op ==> ACC <--- ((Op) + (Ri))
ADX Ri, Op ==> ACC <--- ACC + ((Op) + (Ri))
MODO BASE + DESLOCAMENTO
Utiliza um registrador chamado Registrador de Base, que contm o endereo base na MP e um
operando, que contm o deslocamento do dado em relao base.
Utilizao
usado para relocao de programas: define endereo inicial da rea do programa e o endereo
inicial da rea de dados (pode ser utilizado um registrador para endereos e um para dados)

Nota: Os microprocessadores Intel (aps 8086/8) usam registradores especficos como


registradores-base. Estes Registradores de Base so utilizados para implementar o endereamento
de memria e a segmentao da memria em pginas de 64 kbytes.
Diferenas conceituais entre os modos Indexado e Base + Deslocamento
Modo lndexado
Acesso a diferentes dados pela alterao do endereo atravs do registrador-ndice, com um nico
valor no operando.
utilizado para manipulao de estruturas de dados.
Modo Base + Deslocamento
Um nico valor no registrador-base e valores diferentes no campo deslocamento da instruo.
utilizado para relocao de programas.
IDENTIFICAO DO MODO DE ENDEREAMENTO DA INSTRUO
O Cdigo de Operao identifica o modo de endereamento, atravs de seu mnemnico e do
correspondente cdigo binrio.
Determinados bits no opcode podem indicar o modo de endereamento ou a instruo pode possuir
um campo especfico para indicar o modo de endereamento, atravs de cdigos em bits. O
registrador utilizado no endereamento tambm pode ser indicado por bits determinados no opcode.
Comparao dos Efeitos dos Modos de endereamento - Exemplo (mquina hipottica)
Qual ser o valor carregado no acumulador quando forem executadas as seguintes instrues:
LDI Op ==> (ACC) <--- Op (modo de endereamento Imediato)
LDA Op ==> (ACC) <--- (Op) (modo de endereamento direto)
LDID Op ==> (ACC) <--- ((Op)) (modo de endereamento Indireto)
LDR Op ==> (ACC) <--- (R) (modo de endereamento Direto por Registrador)
LDIR Op ==> (ACC) <--- ((R)) (modo de endereamento Indireto por Registrador)
LDX Op ==> (ACC) <--- ((Ri) + (Op)) (modo de endereamento Indexado)
LDB Op ==> (ACC) <--- ((Rb) + (Op)) (modo de endereamento Base + Deslocamento)
Contedo da memria no incio da instruo:
ENDEREO Contedo
0000
opcode
0001
05
0002
00
0003
00
0004
00
0005
30
0006
00
0007
21
xxx
0015
FF
xxx

0020
xxx
0030

3A
10

Contedo dos registradores no incio da instruo


CI
ACC
Ri
Rb
Reg. B
Reg. M (HL)
0000
xx
02
10
AC
0015
Resposta:
Cont.do ACC
INSTRUO SIGNIFICADO
(aps exec. da instruo
LDI Op (2
(ACC) <--- Op
05
bytes)
LDA Op (3
(ACC) <--- (Op)
30
bytes)
LDID Op (3
(ACC) <--- ((Op))
10
bytes)
LDR Op (1
(ACC) <--- (B)
AC
byte)
LDIR Op (1
(ACC) <--- ((M))
FF
byte)
LDX Op (3
(ACC) <--- ((Ri) + (Op))
21
bytes)
LDB Op (2
(ACC) <--- ((Rb) + (Op)) FF
bytes)
Nota: Algumas instrues usam uma combinao de modos de endereamento.
Instruo CALL - endereamento direto (ou imediato) + por registrador indireto
endereamento direto - especifica o endereo da sub-rotina desejada
endereamento por registrador indireto - o Ponteiro da Pilha
CALL copia (push) o contedo corrente do CI para uma posio da MP especificada pelo
ponteiro da pilha (Stack Pointer).
Ver pginas sobre [Pilha] e [Processamento de Sub-rotinas]
Efeitos de Temporizao dos Modos de Endereamento
O modo de endereamento afeta o tempo requerido para executar uma instruo e a memria
requerida para seu armazenamento
Instrues que usam endereamento implcito ou por registrador so executadas muito rpido, pois
trabalham direto com o hardware do processador e seus registradores. A instruo toda pode ser
buscada (fetched) em um nico ciclo de busca (um nico acesso memria). O nmero de
acessos memria o mais importante fator no consumo de tempo de execuo da instruo.
Cada ciclo de acesso memria busca uma clula e implica em um nmero varivel de estados,
cujo tempo de durao depende da frequncia do clock. Cada instruo consome um determinado
nmero de ciclos de UCP.

Exemplo:
A instruo CALL requer 5 acessos memria, sendo 3 para buscar a instruo (opcode mais
operando de 2 bytes) e mais 2 para salvar ("push") o contedo (2 bytes) do CI (Program Counter)
para o ponteiro da pilha (Stack Pointer).

Você também pode gostar