Escolar Documentos
Profissional Documentos
Cultura Documentos
Introducao Aos Sistemas Digitais e Microprocessadores
Introducao Aos Sistemas Digitais e Microprocessadores
Microprocessadores
23 de Maio de 2003
Contedo
Prefcio 2
1 Introduo 3
3 Funes Lgicas 27
3.1 lgebra de Boole Binria . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.1 Funes Lgicas de Uma Varivel . . . . . . . . . . . . . 28
3.1.2 Funes de Duas Variveis . . . . . . . . . . . . . . . . . 29
3.1.3 As Funes AND e OR . . . . . . . . . . . . . . . . . . . . 30
3.1.4 Funo Conjuno . . . . . . . . . . . . . . . . . . . . . . 30
3.1.5 Funo Disjuno . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.6 Princpio da Dualidade . . . . . . . . . . . . . . . . . . . 33
3.1.7 Prioridade na Execuo de Operaes . . . . . . . . . . . 33
3.1.8 Teoremas Envolvendo Conjuno e Disjuno . . . . . . 34
3.1.9 Definio Formal de lgebra de Boole . . . . . . . . . . . 36
3.1.10 Funes NAND e NOR . . . . . . . . . . . . . . . . . . . . 37
3.1.11 Funo XOR . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.12 Funes de Variveis . . . . . . . . . . . . . . . . . . . . 39
3.1.13 Manipulao de Expresses Lgicas . . . . . . . . . . . . 40
3.2 Representao de Funes Lgicas . . . . . . . . . . . . . . . . . 43
3.2.1 Forma Cannica Normal Disjuntiva . . . . . . . . . . . . 45
3.2.2 Forma Cannica Normal Conjuntiva . . . . . . . . . . . . 47
3.2.3 Representao de Funes Usando um s Tipo de Funo 49
i
ii CONTEDO
6 Circuitos aritmticos 87
6.1 Somadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.1.1 Semi-somador de um bit . . . . . . . . . . . . . . . . . . . 88
6.1.2 Somador de um bit . . . . . . . . . . . . . . . . . . . . . . 88
6.1.3 Interligao em cadeia de somadores de um bit . . . . . 88
6.1.4 Subtraco usando somadores . . . . . . . . . . . . . . . 88
6.1.5 Somadores rpidos . . . . . . . . . . . . . . . . . . . . . . 88
6.2 Nmeros com sinal . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.1 Codificao . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.2 Operaes com nmeros com sinal . . . . . . . . . . . . . 88
6.3 Multiplicadores e Divisores . . . . . . . . . . . . . . . . . . . . . 88
6.4 Representaes em vrgula fixa . . . . . . . . . . . . . . . . . . . 88
6.4.1 Operaes em vrgula fixa . . . . . . . . . . . . . . . . . . 88
CONTEDO iii
7 Circuitos Sequenciais 89
7.1 Comportamento Sequencial de Circuitos . . . . . . . . . . . . . . 90
7.2 Bsculas Sensveis ao Nvel . . . . . . . . . . . . . . . . . . . . . 91
7.2.1 Bscula SR . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.2.2 Realizao de Bsculas SR com Sinal de . . . . . 93
7.2.3 Bscula Tipo D . . . . . . . . . . . . . . . . . . . . . . . . 95
7.3 Sinal de Relgio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.3.1 Circuitos Sequenciais Sncronos e Assncronos . . . . . . 97
7.3.2 Caractersticas do Sinal de Relgio . . . . . . . . . . . . . 97
7.4 Bsculas Actualizadas no Flanco do Relgio . . . . . . . . . . . . 98
7.4.1 Tipos de Amostragem . . . . . . . . . . . . . . . . . . . . 98
7.4.2 Tipos de Bsculas . . . . . . . . . . . . . . . . . . . . . . . 101
7.4.3 Sinais de Controlo Imediato . . . . . . . . . . . . . . . . . 104
7.5 Registos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.5.1 Registos Bsicos . . . . . . . . . . . . . . . . . . . . . . . . 106
7.5.2 Registos de Deslocamento . . . . . . . . . . . . . . . . . . 106
7.5.3 Contadores . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.5.4 Mtodos de Interligao de Registos . . . . . . . . . . . . 106
7.6 Memrias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Glossrio 313
112 CONTEDO
Captulo 9
113
114 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS
Transferncia
entre Registos
Porta Lgica
Transistor
Palavra de
Entradas de Controlo
Controlo
Unidade de
Sadas de Controlo Unidade de
Controlo Bits de Processamento Resultados
Estado (flags)
Operandos
LD LD LD Zero
A B Dec
A LD
B
X +
LD
Reset
LD P
P
(a) (b)
Figura 9.3: Circuitos multiplicadores: (a) bloco combinatrio; (b) somas suces-
sivas.
3. decrementar o registo A.
0
inicio
Reset P
Load P
Dec A
0
Zero A
1
fim
A B C
Figura
9.5: Unidade de processamento para realizar a operao
.
A B C
da Figura 9.4. Neste caso, como o tempo de clculo no fixo, mas sim
dependente dos valores dos operandos, necessrio que o sistema informe o
exterior acerca do estado do clculo, nomeadamente, se este j terminou ou
no.
Estando definida a unidade de processamento, o projectista tem que defi-
nir a sequncia de micro-operaes necessrias para realizar a funcionalidade
pretendida para o sistema. O projecto da unidade de controlo no mais do
que o projecto de um circuito sequencial, como estudado no Captulo 8. Em-
bora a sua realizao possa ser feita usando qualquer das tcnicas apresentadas
nesse captulo, o nmero de entradas (bits de estado e entradas de controlo) e
sadas (largura da palavra de controlo e sadas de controlo) em geral muito
elevado, levando a que as tcnicas mais comuns usadas no projecto de unida-
des de controlo assentem em controladores micro-programados, estudados na
Seco 8.3.3.
R1 R2
n
ou
A primeira destas instrues ser realizada pelo circuito lgico da Figura 9.8.
Quando se do duas transferncias em simultneo, podem-se agrupar mi-
cro-operaes separando-as por vrgulas:
R5 n
+ R1
n
R2
n
Figura 9.8: Circuito lgico correspondente instruo .
R6
n
R3
n
R2
n
x R9
2n
R4
n
poder por seu lado ser um valor constante ou um registo. Exemplos possveis
de micro-operaes sero:
Pela forma como esto expressas, as micro-operaes apresentadas at aqui
ocorrem em todos os ciclos de relgio. Num sistema digital no se pretende
normalmente que uma transferncia, com ou sem processamento, ocorra sem-
pre que surge um impulso de relgio. Para indicar que uma certa operao s
deve ocorrer na presena de certas condies, usa-se o formato condio: micro-
operao. Por exemplo, uma instruo como
tem uma traduo num circuito lgico como o da Figura 9.10. Para haver ape-
nas uma transferncia, a linha tem que permanecer a 1 apenas durante uma
transio ascendente do sinal de relgio. Um exemplo de uma situao deste
tipo
est ilustrada na Figura 9.11, onde a transferncia se d apenas no instante
.
A condio de activao da micro-operao pode ser uma expresso lgica
genrica. Por exemplo,
124 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS
K1
LD
R1 R2
n
Figura 9.10: Circuito lgico correspondente instruo .
Clk
K1
t
que neste caso indica que o octeto menos significativo de R6 copiado para o
octeto mais significativo de R3. Naturalmente, ter que haver o cuidado de ser
consistente no nmero de bits envolvidos numa micro-operao.
Por outro lado, pode ser necessrio fazer a concatenao de vrios registos
para uma dada operao, o que indicado pelo operador |. Por exemplo,
R2 R1 T1
T2 OE OE
R2 R1
0 1
T1 Sel MUX
LD
LD R0
T2 R0
(a) (b)
Maior_Divisor_Comum(X, Y)
1. enquanto (Y 0){
2. se X Y
3. ento X=X-Y
4. se no, troca X com Y
5. }
6. resultado em X
Como discutido na Seco 7.5.4, estes registos podem estar ligados atravs de
multiplexadores ou atravs de barramentos. Estas duas situaes tm a repre-
sentao em termos de circuito lgico indicada nas Figuras 9.12(a) e 9.12(b),
respectivamente. Notar que no caso do barramento se usa menos hardware,
mas h que ter o cuidado de garantir que os sinais e nunca esto activos
em simultneo.
T0
fim
0
inicio
1
T1
1
Ry=0
0 1
Rx>=Ry
Rx Ry,Ry Rx Rx Rx-Ry
um algoritmo muito eficiente pois, por vezes, demora muito a terminar, mas
simples de realizar.
Assume-se que na especificao do sistema se indica que os operandos e
se encontram inicialmente guardados em dois registos, designados por Rx e
Ry. Alm disso, essa especificao indica que existem dois sinais de controlo,
um sinal de entrada para indicar que os registos Rx e Ry foram carre-
gados com os operandos e que se deve dar incio ao clculo do maior divisor
comum entre eles, um sinal de sada
que assinala o fim deste clculo. Para
um funcionamento correcto do sistema, o sinal e os registos Rx e Ry s
devem ser alterados do exterior quando o sinal
estiver activo.
Tendo em conta estas especificaes, o algoritmo da Figura 9.13 pode ser
apresentado sob a forma de fluxograma, como o apresentado na Figura 9.14. O
estado representa um estado de espera, onde nada acontece at que seja
accionado o sinal . Neste estado a sada de controlo
est activa.
Quando a entrada vai a 1, o sistema avana para o estado , onde todo
o processamento realizado. O sistema mantm-se neste estado enquanto Ry
no chegar a zero, situao em que terminou o clculo, regressando o sistema a
. Enquanto em , em cada ciclo os valores relativos de Rx e Ry so testados
e, de acordo com este teste, ou se trocam os valores destes ou se subtrai Ry a
Rx. Neste fluxograma os registos Rx e Ry esto a ser re-utilizados durante a
operao uma vez que a cada ciclo de relgio no h novos valores a serem
criados que necessitem de novos registos.
Neste ponto necessrio decidir a funcionalidade da unidade de proces-
samento, ou seja, quais as micro-operaes que estaro disponveis. Para este
exemplo, as micro-operaes necessrias so simples, optando-se por inclu-las
na unidade de processamento. Em geral, no entanto, poder no ser este o caso,
quer pela complexidade das operaes quer por se estar a usar uma unidade
de processamento predefinida. Nesse caso ter-se- que subdividir as operaes
9.3. LINGUAGEM DE DESCRIO DE HARDWARE 127
1.
2.
:
3.
: ,
,
4.
: ,
5.
: Rx Rx Ry
6. : Rx Ry, Ry Rx
1 0
Sel MUX
LDx LD LDy LD Z Zy
Rx Ry
n
n
A B A B
A>=B A-B
xMy
activa quando Rx Ry, subtraindo-se Ry a Rx. A linha 6 fica activa quando
Rx Ry, activando-se a troca dos valores de Ry e Rx.
Traduzindo para circuito lgico a descrio a nvel de transferncia entre re-
gistos da Figura 9.15, apresenta-se na Figura 9.16 a unidade de processamento
para este problema. Os sinais e formam a palavra de controlo da
unidade de controlo, indicando em que ciclos de relgio os registos so actua-
lizados. Os sinais e so os bits de estado da unidade de processamento
e so entradas para a unidade de controlo. De notar que o controlo do multiple-
xador entrada do registo Rx feito directamente pela sada do comparador
pois o carregamento para este registo controlado pelo sinal . Enquanto
estiver inactivo no importa qual o valor que est entrada de Rx, e sem-
pre que estiver activo a sada do multiplexador ser a correcta.
O controlo desta unidade de processamento est indicado na Figura 9.17 e
foi obtido a partir do fluxograma da Figura 9.14 por simples substituio das
operaes pelos sinais de controlo das micro-operaes correspondentes e dos
testes
pelos bits de estado.
Assim, o teste Ry=0 corresponde a testar se =1 e
Rx Ry a testar se
=1. Por seu lado, para a operao Rx Rx Ry basta
activar o sinal de do registo Rx, e para a operao
de troca de valores
entre os registos activam-se ambos os sinais de . Notar que a seleco do
valor entrada de Rx, Rx Ry ou Ry, controlado directamente na unidade de
processamento pelo sinal .
Esta unidade de controlo to simples que no so necessrias tcnicas
sofisticadas para a sua construo. Usando a tcnica de sntese de mquinas de
estados da Seco 8.3.1, basta usar uma bscula tipo D para guardar o estado,
codificando-se os estados da seguinte forma: 0 corresponde a ;e1a . A
sntese da lgica trivial, chegando-se ao circuito da Figura 9.18.
Os circuitos das Figuras 9.16 e 9.18 juntos, conforme a Figura 9.2, realizam
a funcionalidade pretendida de clculo do mximo divisor comum entre dois
nmeros.
A Figura
9.19 ilustra o funcionamento destes circuitos para o caso de
e , em que se assumiu que os registos so actualizados no flanco
9.4. UNIDADES LGICAS E ARITMTICAS 129
T0
fim
0
inicio
1
T1
1
Zy
0
LDx
1
xMy
0
LDy
xMy
LDy
Zy
LDx
D Q
inicio
Q fim
Clk
Estado T0 T1 T1 T1 T1 T1 T1 T0 T0
Rx 54 54 18 36 18 0 18 18 18
Ry 36 36 36 18 18 18 0 0 0
Inicio
Fim
LDx
LDy
xMy
Zy
Figura
9.19: Diagrama
temporal para o clculo do mximo divisor comum en-
tre e .
Banco
de
Registos
Palavra de
Controlo Operandos
Bits de ULA
Estado
Resultado
A B
n n
p n q n r n
Palavra de
Controlo k
0 1 2 3
Sel MUX
2
Resultado
A B
n n
SelB G
2 3
Y
n
2
+ Cin
Cout Cout Cin SelC C
n
R
B
n
Bn-1 B1 B0
G2
...
00
01 G0
10 1 ...
11 0
Yn-1 Y1 Y0
n
Y
(a) (b)
Figura 9.23: Bloco combinatrio SelB (a) Descrio funcional. (b) Circuito
lgico.
00 0 G0
01 1 Cin G1
10 C
11
(a) (b)
Figura 9.24: Bloco combinatrio SelC (a) Descrio funcional. (b) Circuito
lgico.
e a entrada do sinal de transporte, permite utilizar o somador para executar
um conjunto interessante de micro-operaes.
Como foi discutido na Seco 6.2.2, um somador pode ser facilmente con-
vertido num subtractor por aplicao do complemento para 2 de um dos ope-
randos. Este complemento para 2 pode ser obtido por complementao lgica
bit a bit desse operando e por colocao do bit de transporte entrada a
1. Os blocos combinatrios SelB e SelC, apresentados nas Figuras 9.23 e 9.24
respectivamente,
foram definidos
de forma a que, com os sinais de controlo
e , o sinal seleccione se a operao uma soma ou uma sub-
traco. Como j referido, uma porta EXORpode ser vistacomo um inversor
controlado. Se o sinal estiver a 0, ento . Com tambm a 0, esta
unidade
realiza uma soma normal. Se o sinal estiver
a 1, ento cada bit de
o complemento do bit correspondente de . Como
, ento
tem-se o
complemento para 2 de e esta unidade realiza a subtraco .
Por vezes, pretende-se fazer uma soma entre operandos com um nmero
de bits superior aos permitidos pela unidade aritmtica, . Uma forma
simples de conseguir este objectivo comear por somar os bits menos sig-
nificativos dos operandos e guardar o bit de transporte. Depois somam-se os
bits seguintes, tendo agora em conta o bit de transporte anterior. Este procedi-
mento pode-se repetir indefinidamente, permitindo a soma de operandos com
9.4. UNIDADES LGICAS E ARITMTICAS 135
Micro-Operao
000 0 soma
001 1 subtraco
010 soma com bit de transporte
011 subtraco com bit de transporte
100 1 0 decremento
101 0 1 incremento
110 1 decremento, se
111 0 incremento, se
Ai
Ai 0
Bi 1
MUX Ri
Ai 2
Bi 3 SS
0 1
Ai
Bi
H0 H1
Micro-Operao
00 complemento
01 conjuno
10 disjuno
11 ou exclusivo
ra 9.25 quanto o nmero de bits dos operandos. Os sinais de controlo e
escolhem qual das micro-operaes tem o seu resultado seleccionado sada.
A Tabela 9.2 indica qual a correspondncia entre a combinao destes sinais e
a micro-operao seleccionada.
C 0 0 C
(a)
C 0 C
(b)
C C
(c)
C C
(d)
C 0 A C 0 0
n
1 0 1 0 1 0 1 0 A n-1 A0
S MUX S MUX ... S MUX S MUX
1 0
S MUX
Rn-1 Rn-2 R1 R0
n
C
R
fica igual ao bit de entrada ou consoante 0 ou 1. Este tambm
o nico sinal de controlo para a gerao do bit de estado transporte, que se
carrega com o bit mais ou menos significativo dependendo se o deslocamento
esquerda ou direita, respectivamente.
Os sinais e servem para definir qual o tipo de deslocamento a execu-
tar, o que se consegue pelo controlo do bit que entra, o bit mais significativo
nos deslocamentos direita e o bit menos significativo nos deslocamentos
esquerda. No caso de um deslocamento direita, para um:
Micro-Operao
00000 soma
00001 subtraco
00010 soma com bit transporte
00011 subtraco com bit transporte
00100 decremento
00101 incremento
00110 decremento, se
00111 incremento, se
01-00 complemento
01-01 conjuno
01-10 disjuno
01-11 ou exclusivo
10000 SHR deslocamento lgico direita
10001 SHL deslocamento lgico esquerda
10010 SHRA deslocamento aritmtico direita
10011 SHLA deslocamento aritmtico esquerda
10100 ROR rotao direita
10101 ROL rotao esquerda
10110 RORC rotao direita com transporte
10111 ROLC rotao esquerda com transporte
11- - - transferncia
10 9 8 7 6 5 4 3 2 1 0
.
142 CAPTULO 9. CIRCUITOS PARA TRANSFERNCIA DE DADOS
T0
fim
0
inicio
1
T1
R1 R1-R2
1
Z
0
N
1
T2
R3 R1+R2
T3
R1 R2
T4
R2 R3
19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
destino
2
reg B
2 reg A
3 2 Op ULA
C 5
+1 2 MUX ROM de fim
A SEL
1 C 3 3 Controlo 19
R 2
0 Sel 3
3
ES0
ES1
N 3
Z
inicio
2
0 MUX
1 S 2
1
0
0 0
0 Sel
a permitir que o sinal passe no multiplexador MUXS para servir de
seleco no MUXC. Enquanto for 0, o multiplexador MUXC selecci-
ona a entrada
0, campo ES0 da micro-instruo que contm o endereo 0.
Se vier a 1, ento a entrada 3 do MUXC que seleccionada. Nesta
espera activa, a sada de controlo
mantida a 1 e a unidade de pro-
cessamento no faz nenhuma operao, o que se consegue especificando
como registo destino um registo no existente, neste caso utilizou-se o
ndice 0.
Posio 1: R1 R1 R2, : CAR 0, : CAR 1, : CAR CAR+1
Aqui a ULA faz a subtraco entre R1 e R2, guardando-se o resultado
em R1. Caso o resultado seja 0, o algoritmo terminou e portanto carrega-
se no CAR atravs do campo o endereo 0 para voltar ao incio (no
multiplexador MUXS seleccionada a entrada 3 e no MUXC a entrada 1).
Enquanto o resultado for positivo (bit de estado ), a unidade de
controlo mantm-se no endereo 1 por carregamento do campo no
CAR. Se o resultado for negativo, em vez da subtraco deve-se trocar
os valores de R1 e R2, o que feito a partir do endereo 2, ou seja, por
incremento do CAR. O teste que determina qual destes trs endereos se-
guintes usado conseguido por SEL=11.
Posio 2: R3 R1 R2, CAR CAR+1
Neste estado, colocado em R3 o valor que R1 tinha antes da subtraco,
somando-lhe R2. O CAR simplesmente incrementado, o que se consegue
fixando a entrada 1 do multiplexador MUXS.
Posio 3: R1 R2, CAR CAR+1
Aqui h uma simples transferncia entre registos, o valor de R2 copiado
para R1. Novamente incrementa-se o CAR.
Posio 4: R2 R3, CAR 1
Finalmente neste estado, efectua-se outra simples transferncia entre re-
gistos, copiando-se o valor de R3 para R2. Executa-se um salto incon-
dicional para o estado no endereo 1, o que se consegue seleccionando a
entrada 0 do multiplexador MUXS, obrigando seleco do campo ES0 da
micro-instruo.
Captulo 10
Arquitectura de um
Computador
Embora um sistema digital para qualquer funo especfica possa ser conce-
bido de raiz interligando registos e blocos funcionais, usando as tcnicas es-
tudadas no Captulo 9, por razes de flexibilidade prefervel dispor de um
sistema adaptvel e facilmente reprogramvel. Um computador exactamente
isso, um sistema digital cujo funcionamento especificado por um programa
guardado em memria. Este captulo descreve de uma maneira resumida a
evoluo dos computadores e a sua organizao interna.
Um computador um sistema digital programvel atravs de uma sequn-
cia de instrues guardadas em memria. Atravs desta sequncia de instru-
es, o computador instrudo para executar operaes elementares de ma-
nipulao de dados. Um elemento crucial num computador a sua unidade
central de processamento, ou processador.
O processador, em si mesmo, um sistema digital constitudo por um cir-
cuito de dados e um circuito de controlo, tal como os sistemas estudados no
captulo anterior. A sua flexibilidade resulta do facto de estes circuitos serem
projectados por forma a poderem executar todas as operaes bsicas de ma-
nipulao de dados que so necessrias para a execuo de tarefas de proces-
samento de dados, por mais complexas que estas sejam.
145
146 CAPTULO 10. ARQUITECTURA DE UM COMPUTADOR
UNIDADE
CENTRAL DE
PROCESSAMENTO
ENDEREOS
E CONTROLO DADOS
MEMORIA
Esta descrio deve ser vista como uma descrio do princpio geral do fun-
cionamento, podendo no se aplicar directamente a processadores modernos,
que so extremamente complexos e que usam um nmero de diferentes tcni-
cas para acelerar a velocidade de processamento.
10.4. INTERACO COM O EXTERIOR 149
UNIDADE
CENTRAL DE
PROCESSAMENTO
ENDEREOS E CONTROLO
MEMRIA
DADOS
PORTO SRIE
PORTO PARALELO
PLACA GRFICA
pelo rato pela linha srie so lidos do porto de entrada/sada pela UCP quando
faz um acesso ao porto correspondente.
Outros portos de entrada/sada tratam os dados de forma diferente. Um
porto paralelo pode ser usado para comunicar com uma impressora, atravs de
um conjunto de linhas. Outros portos correspondem a perifricos mais comple-
xos, como, por exemplo, placas grficas e controladores de disco. Uma placa
grfica interpreta os dados recebidos como comandos para desenhar pontos
no monitor e gera o sinal vdeo que faz aparecer no mesmo a imagem corres-
pondente, enquanto que um controlador de disco escreve os dados recebidos
em localizaes especficas do disco magntico ou l os dados guardados nas
localizaes especificadas pela UCP. Na prtica, por razes de desempenho e
de modularidade do sistema, existem diversas alternativas para a leitura e es-
crita de dados em portos de entrada/sada, que sero estudadas em detalhe no
Captulo 14.
A Figura 10.3 descreve a forma como os perifricos exteriores so ligados ao
computador. Note-se que, embora os perifricos sejam por vezes ligados uni-
dade central atravs de cabos, existem diversos perifricos que se encontram
fisicamente dentro da unidade que alberga a UCP. Em geral, discos magnticos,
leitores de discos compactos e unidades de discos flexveis esto alojadas den-
tro da unidade onde se encontra a unidade central de processamento, embora
sejam perifricos ligados da mesma forma que um rato ou uma impressora,
que so externos.
10.5. NVEIS DE ABSTRACO DE UM COMPUTADOR 151
CABO VDEO
LINHA PARALELA
LINHA SRIE
NVEL 5 APLICAO
PROGRAMADOR
NVEL 4 PROGRAMA EM
LINGUAGEM DE ALTO NVEL
COMPILADOR
NVEL 3 PROGRAMA EM
LINGUAGEM ASSEMBLY
ASSEMBLER
NVEL 2 PROGRAMA EM
LINGUAGEM MQUINA PROJECTISTAS DO
PROCESSADOR
10.7 Sumrio
Este captulo introduz o conceito de computador como um sistema digital pro-
gramvel e descreve, de forma breve, a evoluo histrica dos computadores.
Descreveu-se brevemente a arquitectura de um computador em termos dos
seus diversos componentes, entre os quais se contam necessariamente a uni-
dade central de processamento (UCP, ou processador), a memria e os portos
de entrada/sada ligados a dispositivos perifricos.
Finalmente, foram referidos os diversos nveis de abstraco a que um com-
putador pode ser conceptualizado, nveis estes que vo desde o nvel da aplica-
o at ao nvel da transferncia de dados entre registos de um sistema digital.
Captulo 11
Conjuntos de Instrues
155
156 CAPTULO 11. CONJUNTOS DE INSTRUES
Endereo Valor
Base 2 Base 16 Base 2 Base 16
0001000000000000 1000 1010111001110000 AE70
0001000000000001 1001 0000000010100000 00A0
0001000000000010 1002 1000011001110000 8670
0001000000000011 1003 0000000010110000 00B0
0001000000000100 1004 1000011001110000 8670
0001000000000101 1005 0000000010110001 00B1
0001000000000110 1006 0100000000000001 4001
0001000000000111 1007 1010110001110000 AC70
0001000000001000 1008 1111000000000000 F000
ORIG 1000h
N1 EQU 00A0h
N2 EQU 00B0h
N3 EQU 00B1h
N4 EQU F000h
svel e fcil de editar, depurar ou modificar. Note-se que a cada instruo pode
corresponder uma ou mais palavras de memria, dependendo do tipo de ins-
truo e dos seus operandos. Pode tambm observar-se que as directivas no
se traduzem directamente para instrues de linguagem mquina, mas podem
traduzir-se na ocupao de uma ou mais posies de memria.
Quando programa em assembly, o programador continua a ter de conhecer
a arquitectura e os recursos do processador de forma detalhada, uma vez que
as instrues assembly s fazem sentido para aquele processador. Embora se-
melhantes entre si, as linguagens assembly so diferentes de processador para
processador.
A traduo de um programa escrito em assembly para um programa escrito
em linguagem mquina um processo relativamente simples, uma vez que a
cada instruo assembly corresponde uma e uma s instruo em linguagem
mquina. Esta traduo pode ser feita manualmente, mas geralmente efectu-
ada por um programa chamado assembler. O assembler aceita um programa es-
crito em assembly e gera um programa em linguagem mquina, processando as
directivas e traduzindo as instrues descritas no ficheiro fonte. A Seco 11.8
descreve em detalhe o funcionamento de um assembler para o processador P3.
Como foi referido no captulo anterior, a programao de um computador
pode ser feita utilizando nveis de abstraco superiores usando linguagens de
alto nvel que so, na maior parte dos casos, independentes do processador.
Exemplos de linguagens deste tipo so as linguagens C, Pascal e Java. Progra-
mas escritos nestas linguagens tm de ser traduzidos para linguagem assem-
bly e da para linguagem mquina, antes de serem executados pelo processa-
dor. Este processo de traduo muito mais complexo que o referido anterior-
mente, e efectuado por programas chamados compiladores. Em geral, a cada
instruo de uma linguagem de alto nvel correspondem vrias instrues as-
sembly. Em alguns casos, uma linguagem de alto nvel poder ser interpretada
directamente por um programa, o interpretador, no havendo assim necessi-
dade de compilao, mas conduzindo a uma execuo do programa conside-
ravelmente mais lenta. Linguagens que, embora possam ser compiladas, so
muitas vezes utilizadas desta forma so o LISP e o Scheme, para as quais exis-
tem interpretadores muito eficientes. Tambm o Java por vezes usado com
um interpretador, embora o programa original seja, neste caso, traduzido para
158 CAPTULO 11. CONJUNTOS DE INSTRUES
Localizaes de memria
Portos de entrada/sada
Para que seja possvel especificar de forma flexvel qualquer uma destas lo-
calizaes so geralmente utilizadas formas mais complexas de codificao. A
Seco 11.7 descreve o mecanismo de codificao das instrues no processa-
dor P3.
Muitos processadores comerciais possuem a possibilidade de executar ins-
trues mais complexas. Por exemplo, o processador 8086 dispe de uma ins-
truo que copia um determinado nmero de posies de memria para uma
outra zona de memria. Uma instruo deste tipo requer pelo menos trs ope-
randos: dois para especificar os endereos de origem e destino, e um para es-
pecificar o nmero de posies de memria a copiar.
Para instrues complexas deste tipo, muitas vezes um ou mais operandos
so fixos e pr-definidos, para evitar a necessidade de codificar todos os ope-
randos na instruo. Este tipo de endereamento, chamado endereamento im-
plcito, tambm usado em instrues mais simples mas muito comummente
utilizadas, como por exemplo as instrues de manipulao da pilha descri-
tas na Seco 11.3.5. Existem tambm processadores, chamados processadores
de pilha, em que todos os operandos so guardados numa pilha, e todas as
operaes aritmticas operam sobre os dois operandos guardados no topo da
pilha. Estes operandos so, assim, especificados de forma implcita. Noutras
mquinas, um dos operandos sempre um registo especial, denominado o acu-
mulador, pelo que uma operao aritmtica apenas necessita ter um operando
definido explicitamente.
PUSH R1 POP R3
FF03h 0055h
um formato uniforme deste tipo clara, uma vez que esta abordagem permite
uma total flexibilidade na especificao dos operandos, que podem estar em
qualquer localizao. Note-se, porm, que esta codificao exige um total de
11.4. CODIFICAO DAS INSTRUES 167
69 bits por cada instruo o que implica que cada instruo ocupe 5 palavras
de memria, ou seja, 10 octetos.
Considere-se, por exemplo, o Programa 11.2, que, utilizando instrues
deste hipottico processador, soma o contedo das posies de memria N1,
N2 e N3, e guarda o resultado, complementado, na posio de memria N4:
Note-se que, embora este cdigo contenha apenas trs instrues, o cdigo
mquina correspondente utiliza 15 palavras de memria.
Em termos de desempenho, esta opo revela-se, em geral, desvantajosa,
uma vez que, no s os programas em linguagem mquina ocupam mais me-
mria do que seria realmente necessria, como acabam por se tornar mais len-
tos. Com efeito, a superior flexibilidade dos modos de endereamento per-
mitidos contrabalanada pelo tempo que demora a carregar da memria e a
executar uma instruo.
assim vantajoso restringir o nmero de operandos e os modos de en-
dereamento permitidos, ou, pelo menos, permitir a existncia de instrues
com modos de endereamento mais limitados. Uma restrio comummente
adoptada consiste em obrigar a que o resultado da operao seja guardado na
mesma localizao que o primeiro operando. Embora isto implique a destrui-
o do valor guardado neste operando, esta restrio reduz consideravelmente
o nmero de bits necessrio para codificar cada instruo.
Adicionalmente, possvel obrigar a que pelo menos um dos operandos
esteja disponvel em registo. Novamente, isto reduz fortemente o nmero de
bits necessrio para codificar a instruo, embora implique uma considervel
restrio no tipo de operaes que podem ser efectuadas.
Com estas duas restries, possvel usar um formato mais compacto para
representar cada instruo. necessrio utilizar um bit de direco que indi-
car se o modo de endereamento sem restries aplicado ao primeiro ou ao
segundo operando. Por exemplo, a instruo ADD M[R1+N1],R2 ter o va-
lor deste bit igual a para indicar que o modo de endereamento genrico se
aplica ao primeiro operando e, consequentemente, localizao do resultado.
Com esta abordagem, agora possvel utilizar o formato descrito na Figu-
ra 11.3. Com esta codificao, cada instruo gasta agora apenas duas palavras
Figura 11.3: Codificao de uma instruo em que um dos operandos deve ser
endereado por registo.
Etiq1: INC R1
BR Etiq1
DEC R1
BR.Z Etiq
MOV R1, 55AAh
Etiq: ADD R2,R1
Programa 11.7: Efeitos da instruo SUB nos valores dos bits de estado.
no registo R1.
Esta operao activa os bits de estado negativo, N, uma vez que o valor ob-
tido negativo, e o bit de transporte, C, uma
vez que a subtraco conseguida
somando o complemento aritmtico de . Ao mesmo tempo, coloca os bits de
estado Z, P e O a , uma vez que o resultado no foi zero, no positivo, nem
resultou num valor no representvel.
Desta forma, a instruo BR.Z Etiq1 no vai transferir controlo para a
instruo com rtulo Etiq1, uma vez que o bit de estado Z est inactivo. J
a instruo BR.N Etiq2 vai transferir controlo para a instruo com rtulo
Etiq2, dado que o bit de estado N est activo. Note-se que, de uma forma ge-
ral, s as instrues de manipulao de dados que envolvem a unidade lgica
e aritmtica (Seco 9.4) alteram os valores dos bits de estado.
Muitos processadores permitem tambm condies de salto que testam di-
versos bits de estado do processador, para alm dos referidos acima. Pode,
por exemplo, testar-se se o resultado de uma operao foi par, ou se uma dada
condio interna ao processador se verifica.
Existem duas possibilidades para a especificao do endereo de salto. A
primeira possibilidade especificar o endereo de forma absoluta, dando di-
rectamente um endereo em memria que contm a prxima instruo a ser
executada. A segunda possibilidade consiste em especificar este endereo de
forma relativa, sendo que a constante usada representa um valor que deve ser
adicionado ao PC. Quando esta possibilidade utilizada, so muitas vezes usa-
dos menos bits que os necessrios para descrever um endereo arbitrrio em
memria, uma vez que muitos saltos so para posies de memria relativa-
mente prximas da instruo que est a ser executada.
A vantagem da primeira abordagem permitir que qualquer endereo em
memria seja especificado, independentemente da sua proximidade da instru-
o que est a ser executada. A segunda abordagem, alm de permitir poupar
espao na codificao das instrues, permite que o programa seja realojvel.
Isto significa que o programa continua a funcionar mesmo que seja copiado
para posies de memria diferentes daquela onde foi inicialmente localizado.
Na prtica, muitos processadores suportam ambos os mtodos de especifi-
cao, cabendo ao assembler escolher, de forma transparente para o programa-
dor, qual o tipo de salto que resulta da codificao de uma dada instruo.
No processador P3, existem os dois tipos de instrues de salto. Quando
o salto especificado com a instruo de BR, trata-se de uma salto relativo, e
o valor especificado adicionado ao contedo do PC. Quando o salto espe-
172 CAPTULO 11. CONJUNTOS DE INSTRUES
CALL Etiq1
ADD R1,R2
...
...
...
RET
11.5.3 Interrupes
Uma outra situao em que a sequncia normal de execuo das instrues
alterada acontece quando o processador recebe e atende um pedido de interrup-
o.
Em muitos sistemas, o processador tem de reagir a sinais vindos do exterior,
que sinalizam a necessidade de efectuar algum processamento especfico ou
operaes de entrada/sada. Por exemplo, um perifrico pode querer sinalizar
o processador que uma tecla foi premida, ou que uma palavra foi recebida num
porto srie.
Uma alternativa ao uso de interrupes garantir que o processador amos-
tra, a intervalos regulares, o valor de alguma linha, ou linhas, de entrada/sada.
A esta amostragem regular chama-se, em ingls, polling. O uso de polling im-
pe uma sobrecarga grande ao processador, uma vez que necessrio garantir
que um ou mais portos de entrada/sada so lidos a intervalos de tempo que
no podem ser demasiado longos, conforme discusso na Seco 14.5.1.
Por esta razo, a esmagadora maioria dos processadores permite que um
dispositivo exterior sinalize, de alguma forma, que a sequncia normal de ins-
trues deve ser interrompida e que o controlo deve ser transferido para uma
174 CAPTULO 11. CONJUNTOS DE INSTRUES
ADD R2, R4
ADDC R1, R3
MOV R2, 0
Loop: INC R2
CMP R1, M[R2]
BR.NZ Loop
na Seco 9.4.5, que deve ser consultada para uma descrio mais detalhada
do funcionamento das mesmas.
Para todas estas instrues, um deslocamento direita significa um deslo-
camento na direco dos bits menos significativos. Estas instrues tm dois
operandos. O primeiro necessariamente um registo ou posio de memria
que o objecto do deslocamento, enquanto que o segundo uma constante
positiva que especifica o nmero de bits do deslocamento que deve ser apli-
cado ao primeiro operando. A constante pode tomar um valor entre 1 e 15. Em
todas as operaes de deslocamento, o bit de transporte C fica com o valor que
sai do registo.
As instrues de SHR e SHL deslocam direita e esquerda, respectivamente,
o seu operando. Na operao SHR o bit mais significativo preenchido com o
valor . O mesmo acontece para o bit menos significativo na operao SHL.
O deslocamento aritmtico direita semelhante ao deslocamento lgico,
excepto no valor que introduzido no bit mais significativo. No deslocamento
aritmtico, o valor do bit mais significativo aps o deslocamento igual ao seu
valor antes do deslocamento. A diferena entre os deslocamentos lgicos e arit-
mticos importante quando os mesmos so aplicados a nmeros com sinal.
Com efeito, um deslocamento aritmtico direita tem como efeito dividir por
dois o nmero deslocado, quer o mesmo seja positivo ou negativo. Pelo con-
trrio, o deslocamento lgico direita no corresponde a uma diviso por dois
quando aplicado a um nmero negativo. Os deslocamentos esquerda l-
gicos e aritmticos so equivalentes no que respeita ao resultado, mas alteram
os bits de estado de forma diferente, uma vez que o primeiro considerado
uma operao lgica, alterando apenas os bits de estado Z, N, e C enquanto que
o segundo, tal como o deslocamento aritmtico direita, considerado uma
operao aritmtica, alterando todos os bits de estado.
As operaes de rotao ROR e ROL representam deslocamentos circulares,
onde os bits que so deslocados para fora do registo so re-injectados pelo
outro extremo do registo. As operaes de rotao com transporte aplicam
uma operao de rotao ao conjunto do operando mais o bit de transporte.
Assim, numa rotao direita, o bit de transporte injectado na parte alta do
180 CAPTULO 11. CONJUNTOS DE INSTRUES
registo, e o bit menos significativo passa para o bit de transporte. Numa rotao
esquerda passa-se o oposto. Estas operaes afectam os bits de estado Z, N e
C.
Instruo Mnemnica
Activar interrupes ENI
Desactivar interrupes DSI
Activar bit de transporte STC
Desactivar bit de transporte CLC
Complementar bit de transporte CMC
Operao nula NOP
MOV R1, 9
MOV R2, R0 ; Limpa o registo R2
Ciclo: ADD R2, M[Start+R1]
DEC R1
BR.NN Ciclo ; Continua se R1>=0
MOV R1, R0
MOV R2, R0 ; Limpa o registo R2
Ciclo: ADD R2, M[Start+R1]
INC R1
CMP R1, 10 ; Compara R1 com 10
BR.NZ Ciclo ; Continua se R1-10 <> 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OPCODE Descrio dos Operandos ?
W : Operando imediato ?
0 0 0 X X X
posies definidas com X X X tem um valor diferente para cada uma destas
instrues, de acordo com os valores descritos na Tabela 11.12. Para estas ope-
raes, os 10 bits menos significativos no so usados e o seu valor ignorado.
186 CAPTULO 11. CONJUNTOS DE INSTRUES
ARG
0 0 1 X X X
M IR1
0 1 0 X X X
W?
PAR M IR1
0 1 1 X X X
W?
S IR2 M IR1
1 0 X X X X
W?
COND M IR1
1 1 0 X X X
W?
COND OFFSET
1 1 1 X X X
O valor do campo , para indicar modo de endereamento
indexado.
O valor do campo , para indicar que o modo de endereamento
se aplica ao segundo operando.
O valor do campo ,que,
neste caso, usado na especificao do
segundo operando, , uma vez que o registo utilizado R7.
O valor do campo , especificando o registo usado na defi-
nio do primeiro operando.
Esta instruo assim codificada com duas palavras de memria, que con-
tm os valores e , ou seja, 8677h e 00A0h.
Para outros exemplos de codificao, pode consultar-se o exemplo da Sec-
o 11.1, que contm o cdigo em linguagem mquina do P3 e o correspon-
dente cdigo em assembly.
ORIG 0A00h
start EQU 0F00h
Esta constante pode ser usada mais tarde em qualquer posio onde for neces-
srio usar o valor 0F00h. As definies de constantes devem vir no incio do
programa, para que possam ser facilmente alteradas. Os nomes das constan-
tes permitem tornar a leitura do cdigo mais fcil por serem mais inteligveis
que um valor numrico. Para alm disso, se se pretender alterar o valor da
constante basta alterar a definio e todo o cdigo fica automaticamente actua-
lizado. Por esta razo, no devem existir constantes numricas dispersas pelo
programa, devendo sempre ser usadas definies das mesmas no princpio do
programa ou mdulo respectivo.
Foram tambm usados comentrios para documentar o programa. Um co-
mentrio comea pelo caracter ;, que indica ao assembler que todo o texto que
se segue nessa linha dever ser ignorado no processo de traduo do cdigo
assembly.
Note-se que as directivas ORIG e EQU no so instrues assembly. Uma
anlise da Tabela 11.15, que contm o cdigo mquina resultante deste cdigo
assembly, revela que no foram geradas nenhumas instrues que correspon-
dam a estas directivas. O resultado das directivas s visvel quando se ana-
lisa a primeira instruo mquina gerada (Tabela 11.15), verificando-se que esta
instruo equivalente instruo assembly MOV R2, 0F00h e se localiza na
posio de memria 0A00h. De uma forma geral, podem ser usadas constantes
tanto como operandos de instrues como para especificar endereos de me-
mria. Em segundo lugar, repare-se que foram usados nomes simblicos para
trs endereos de instrues, os rtulos Procura, CProcura e FimProc. Dois
destes rtulos foram utilizados no programa, nas instrues com mnemnica
BR.Z e BR. Desta forma, o programador no tem de lidar com o valor numrico
dos endereos das instrues para onde pretende transferir controlo. O rtulo
Procura, por outro lado, no usado dentro da subrotina, mas poder ser
usado mais tarde por outra subrotina que pretenda usar esta. A chamada su-
brotina Procura poder ser efectuada atravs da instruo CALL Procura,
no necessitando o programador de conhecer o endereo onde esta rotina ir
11.8. UM ASSEMBLER PARA O PROCESSADOR P3 191
ficar localizada.
O assembler do processador P3 aceita vrias directivas, descritas na Tabe-
la 11.16. Alm das directivas ORIG e EQU, j usadas, o assembler do processador
P3 aceita trs outras directivas, cujo uso est exemplificado no Programa 11.13.
A directiva WORD reserva uma posio de memria para conter uma vari-
vel, que pode mais tarde ser referenciada usando um nome simblico. Permite
ainda inicializar essa posio de memria. No exemplo acima, reserva uma
posio de memria para a varivel Abc, que inicializada a 0055h e uma
posio de memria para a varivel Xyz, inicializada a 0011h.
A directiva STR permite guardar uma cadeia de caracteres em memria. No
caso acima, so reservadas 5 posies de memria, que so preenchidas com
os valores ASCII da cadeia de caracteres Hello e o nome simblico Texto1
fica definido com o valor do endereo da posio de memria onde comea a
cadeia. O terceiro argumento desta directiva consiste numa lista de elementos,
separada por vrgulas, onde cada elemento pode ser uma cadeia de caracteres,
comeada e terminada pelo smbolo ou uma constante numrica. As cadeias
de caracteres so substitudas pelos seus valores ASCII, concatenadas umas
com as outras (ou com argumentos numricos, caso existam) e o resultado
guardado em memria.
192 CAPTULO 11. CONJUNTOS DE INSTRUES
Endereo Instruo
0000h 0055h
0001h 0011h
0002h 0048h
0003h 0065h
0004h 006Ch
0005h 006Ch
0006h 006Fh
0007h 0000h
0008h 0000h
0009h 0000h
A sua funcionalidade
Com uma boa estruturao do trabalho, cada subrotina pode e deve ser
desenvolvida e testada independentemente do resto do cdigo. Isto permitir
que a construo do programa final, obtido atravs da ligao de subrotinas,
seja feita com relativa simplicidade e rapidez uma vez que a maioria dos erros
de programao j foram detectados na fase de teste de cada mdulo. Pelo
contrrio, sempre de evitar o procedimento que consiste em juntar vrias
subrotinas ainda no testadas, com o objectivo de depurar o programa na sua
totalidade. Verifica-se que os erros so extremamente difceis de identificar e
resolver nesta fase, mesmo que sejam relativamente simples quando analisados
ao nvel de uma subrotina.
Dada a relativa ilegibilidade de um programa em assembly, o uso de comen-
trios que documentem o funcionamento das subrotinas e de partes importan-
tes das mesmas fundamental.
Cada subrotina dever, assim, ter um cabealho que documente devida-
mente cada um dos trs pontos identificados acima. Alm disso, partes com-
plexas ou menos bvias de cada subrotina devero ser comentadas indepen-
dentemente.
A utilizao de constantes numricas embebidas no cdigo dificulta a ma-
nuteno e alterao posterior do mesmo, alm de ser uma fonte de possveis
erros que so difceis de identificar. A metodologia que dever ser adoptada
a definio de todos os valores de constantes numricas no incio do programa
utilizando a directiva EQU.
Embora seja possvel usar os registos ou posies de memria para passar
parmetros para subrotinas, esta soluo no permite a utilizao de subrotinas
recursivas. Por essa razo, em muitos casos utilizada a pilha para efectuar
a passagem de parmetros. Quando se utiliza esta abordagem, os parmetros
devero ser colocados na pilha e, dentro da rotina, devero ser acedidos atravs
de acessos pilha. O tipo de parmetros aceites e a ordem pela qual eles devem
ser passados deve ser documentados no cabealho da subrotina.
L Texto
Processa Texto
Escreve Texto
simples, define que, numa primeira fase o texto lido do porto de entrada e
escrito em memria; na segunda fase, o texto processado em memria; e na
terceira fase, o texto modificado em memria escrito para o porto de sada.
Nesta fase, deve tambm ser definido que a subrotina que l o texto retorna o
nmero de caracteres lidos, para uso dos mdulos seguintes. Os trs passos
indicados na figura ainda no so to simples que a sua realizao seja bvia,
pelo que cada um desses blocos deve agora ser refinado.
O bloco que l o texto pode ser realizado de acordo com o fluxograma da
Figura 11.16. Esta subrotina l o texto, caracter a caracter, e escreve-o em me-
mria, testando cada caracter para ver se o caracter que indica o fim do texto
e verificando se se atingiu o tamanho mximo permitido para o texto4 . Com
este nvel de detalhe j fcil transpor o fluxograma para linguagem assembly
e criar a subrotina correspondente, descrita no Programa 11.14. Uma vez que o
programa em assembly geralmente escrito usando um editor de ficheiros que
no tem suporte especial para a programao neste ambiente, conveniente
utilizar uma formatao que melhore a legibilidade do programa. Em geral,
cdigo assembly escrito em quatro colunas: rtulos, mnemnica da instruo
assembly, operandos e comentrios.
Note-se que no programa no aparecem constantes numricas, mas sim
constantes que sero definidas no cabealho do programa. Neste caso, de-
finiram-se: fim_txt, cdigo do caracter que indica o fim de texto; Texto,
primeira posio de memria reservada para o texto; e max_car, nmero de
4 Nesta soluo simples para o problema no devolvida qualquer indicao se a leitura ter-
minou por ter sido recebido o carcter @ ou por ter sido atingido o nmero mximo de caracteres
possvel.
11.9. PROGRAMAO EM LINGUAGEM ASSEMBLY 195
Inicializa Apontador
L Caracter
Sim No
Fim Texto ?
Incrementa
Apontador
Sim No
Max. Car ?
ficar o bloco que processa o texto. Um possvel fluxograma para esse bloco
o da Figura 11.17. Neste bloco avana-se caracter a caracter, em memria,
Inicializa Apontador
Incrementa
Apontador
Sim No Sim
Fim Texto ? Espao ?
No
Torna Maiscula
Torna Minscula
Incrementa
Apontador
No No
Fim Texto ? Espao ?
Sim Sim
o cdigo.
Finalmente, falta especificar o bloco de impresso do texto. Um possvel
fluxograma para este bloco o da Figura 11.18. Dada a simplicidade deste
bloco, possvel fazer uma traduo imediata para linguagem assembly, resul-
tando no cdigo do Programa 11.16.
O programa principal, descrito no Programa 11.17, corresponde ao fluxo-
grama da Figura 11.15, ser simplesmente uma sequncia de chamadas s su-
brotinas j definidas, antecedido das directivas necessrias, que definem a ori-
gem do programa e os valores das constantes e variveis usadas no programa
198 CAPTULO 11. CONJUNTOS DE INSTRUES
Inicializa Apontador
Imprime Caracter
Incrementa
Apontador
Sim No
Fim Texto ?
e subrotinas.
Sumrio
Neste captulo estudaram-se algumas das possveis alternativas para a arqui-
tectura do conjunto de instrues de micro-processadores e apresentou-se o
conjunto de instrues do processador didctico P3. Este conjunto de instru-
es, tpico de processadores simples de segunda gerao, inclui instrues de
controlo, transferncia e manipulao de dados. Foi tambm descrita a lin-
11.9. PROGRAMAO EM LINGUAGEM ASSEMBLY 199
; Definio de constantes
fim_texto EQU @
controlo EQU FFFDh
max_car EQU 100h
in_port EQU FFFFh
out_port EQU FFFEh
mascara EQU 0020h
; Definio de variveis
ORIG 8000h
Texto TAB max_car
ORIG 0000h
Inicio: MOV R1, F000h
MOV SP, R1 ; Inicializa a pilha
CALL LeTexto
CALL ProcTexto
MOV R1, Texto ; Parmetro para Imprime
CALL Imprime
BR Inicio
Estrutura Interna de um
Processador
201
202 CAPTULO 12. ESTRUTURA INTERNA DE UM PROCESSADOR
16
WR D
4
SelAD
4 Banco de
SelB Registos
Reset A B
16 16
16
0 1 MB 0 1
MA MUXA MUXB WM W Memria
Endereo
16 16 Escrita de dados
BUS A 4 Leitura de dados
FM 5
BUS B FIN
LF 16
RE
16 16 FR
Registo de Estado
CULA FOUT
4 5
5 ULA Estado
000h
11
16
12
MD CONST
0 1 2 3 4 LI
2 RI
MUXD 0000
dereos e por dois barramentos de dados, um para escrita, outro para leitura.
O barramento de endereos est ligado ao porto do banco de registos, en-
quanto que o barramento de dados est ligado ao porto . O barramento de
leitura de dados est ligado ao porto de escrita do banco de registos. Estas li-
gaes permitem executar uma leitura de memria para o banco de registos,
atravs do controlo dos portos e do banco
de registos, ou uma escrita na
mesma, atravs do controlo dos portos e .
O funcionamento do circuito de dados controlado pela palavra de con-
trolo, sendo o funcionamento de cada um dos blocos descrito em detalhe nas
seces seguintes.
Registo Descrio
R0 Constante 0
R1 Registo de uso geral
R2 Registo de uso geral
R3 Registo de uso geral
R4 Registo de uso geral
R5 Registo de uso geral
R6 Registo de uso geral
R7 Registo de uso geral
R8 Registo de uso restrito
R9 Registo de uso restrito
R10 Registo de uso restrito
R11 Operando (SD)
R12 Endereo destino (EA)
R13 Resultado (RD)
R14 Apontador da pilha (SP)
R15 Contador programa (PC)
A unidade lgica e aritmtica (ULA) usada por este processador a que foi
estudada na Seco 9.4, e que se reproduz na Figura 12.2.
A B
n n
p n q n r n
Palavra de
Controlo k
0 1 2 3
Sel MUX
2
Resultado
A unidade lgica e aritmtica controlada por 5 bits de controlo, .O
valor destes 5 bits especifica, de acordo com a Tabela 9.1, qual a operao que
a ULA executa sobre os dois operandos na sua entrada. Estes dois operandos
so provenientes dos portos e do banco de registos.
Os quatro bits de estado gerados pela ULA esto ligados ao registo de es-
tado, cujo funcionamento ser detalhado na Seco 12.1.4.
12.1. CIRCUITO DE DADOS 205
FM 3 FM 2 FM 1 FM 0
Z C N O
Figura 12.3: Bits da mscara que controla a actualizao dos bits de estado.
FIN FR
5 4 ZR CR NR OR
LF 0 1 LF 0 1 LF 0 1 LF 0 1
MUX MUX MUX MUX
FM 3 FM 2 FM 1 FM 0
LF LD LD LD LD LD
LF LF LF LF
E Z C N O z c
5 P
FOUT
Alm dos bits Z, C, N e O, cujo significado foi descrito na Seco 11.6.4, existe
ainda o bit E que controla se o processador deve ou no responder a interrup-
es e cujo valor no vem da ULA, mas sim atravs da entrada . Note-se
que o sinal P no corresponde a um bit no registo de estado, uma vez que este
bit gerado pela lgica representada a partir dos valores dos bits Z e N.
Em primeiro lugar, para que o banco de registos coloque nos portos e
os registos R3 e R7, os sinais e devem tomar os valores e
, respectivamente. Adicionalmente, e como se pretende que tenha lugar
uma escrita no banco de registos, o valor do sinal dever ser .
Para que os valores presentes nos portos e do banco de registos
che-
guem s entradas da unidade lgica e aritmtica, o valor dos sinais e
dever ser .
A operao da ULA controlada pelo valor do sinal . Da Tabela 9.1,
tira-se que dever tomar o valor para que seja realizada uma
operao de adio. Para conseguir que os bits de estado sejam actualizados
com os valores desta operao, o sinal dever tomar o valor e o sinal
dever tomar o valor .
Finalmente, e para que o porto de escrita do banco de registos receba o valor
de sada da unidade lgica e aritmtica, necessrio controlar por forma a
que o multiplexador seleccione na sua sada o valor da sua entrada , o que
consegue colocando a .
Resta agora controlar o valor dos sinais ainda no definidos por forma a que
no se realizem operaes indesejadas. Uma vez que no se pretende escrever
na memria nem no registo de instruo os sinais e devero tomar o
valor . O campo constante, no utilizado, pode tomar qualquer valor.
Conclu-se assim que a micro-operao R3 R3+R7 executada se os sinais
de controlo tomarem os valores da segunda coluna da Tabela 12.3.
Para um segundo exemplo, suponha-se agora que se pretende enderear
a memria usando o contedo do registo R5 e guardar o valor dessa posio
de memria no registo R3, sem mexer no contedo de qualquer dos outros
registos.
Nestas condies, ser necessrio forar a e a , acti-
vando tambm o sinal .
O multiplexador MUXA dever agora seleccionar a sua entrada , pelo que
o valor do sinal dever ser . Para efectuar uma leitura de memria e
seleccionar o valor lido como aquele que entra no porto do banco de registo,
208 CAPTULO 12. ESTRUTURA INTERNA DE UM PROCESSADOR
o sinal dever tomar o valor e o sinal o valor .
Para que no haja escrita no registo de instruo nem no registo de estado,
os sinais e devero tomar o valor . Tambm o sinal dever ter
todos os seus bits a .
Neste exemplo, como em muitos outros, os valores de alguns dos sinais so
irrelevantes, uma vez que controlam partes do circuito de dados
que no so
lidos nem guardados. o caso dos sinais de controlo , e ,
que podem tomar qualquer valor sem afectar o funcionamento do circuito. A
terceira coluna da Tabela 12.3 descreve os valores que os sinais devem tomar
para que seja executada a micro-operao R3 M[R5].
CIRCUITO
DE
MAPEAMENTO CONTROLO
DO
BANCO
DE
TESTE REGISTOS
DE
CONDIES MICRO
SEQUENCIADOR
MEMRIA DE
CONTROLO
MICRO-INSTRUO
unidade de controlo.
O controlo do banco de registos feito por um circuito dedicado, controlado
directamente por bits do registo de instruo e do registo de micro-instruo.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
S S I M M
M M M W W
0 M5 R R A FM CALU R RB MD A RAD
A B 2 M R
1 2 K B D
F
S S M
M5 L MCOND
C L L
CONST/NA
W
MD RAD
1 R R
S C I F R
A
1 2 D
16
WR D
4
SelAD
4 Banco de
SelB Registos
Reset A B
16 16
16
0 1 0 1
MA MB WM
MUXA MUXB W Memria
F F
Endereo
16
Escrita de dados
FM 4 4 16
BUS A Leitura de dados
F 5
FIN
BUS B LF 16
RE
16 16 FR
F Registo de Estado
CULA FOUT
4 5
5 ULA Estado
000h
11
16
12 CONST
MD LI
0 1 2 3 4
2 F RI
MUXD 0000
12.2.2 Micro-Sequenciador
No centro da unidade de controlo encontra-se o micro-sequenciador, que gera a
sequncia de endereos de micro-instrues que deve ser executada. O micro-
212 CAPTULO 12. ESTRUTURA INTERNA DE UM PROCESSADOR
sequenciador pode, em cada ciclo de relgio, executar uma das seguintes ope-
raes, de acordo com os sinais de controlo:
Incrementar o endereo da micro-instruo a executar ou saltar para um
endereo
especificado na micro-instruo, de acordo com o valor do sinal
, gerado pela unidade de teste de condies.
Retornar de uma micro-rotina.
Saltar para um dos endereos fornecidos pela unidade de mapeamento.
A estrutura do micro-sequenciador est descrita na Figura 12.8. O micro-
END A END B
9
9 9
F
LS SBR
9
COND MUX4 M5 0 1 2 3
1 0
2
MUX5
9 9 CAR
+1 9
NA
ENDEREO
DA MEMRIA
DE CONTROLO
sequenciador usa dois registos. O registo CAR (Control Address Register) con-
tm o endereo da memria de micro-instrues onde est a micro-instruo
que est a ser executada. Este registo desempenha para um micro-programa o
mesmo papel que o contador de programa desempenha para um programa em
assembly e pode tambm ser referido por contador de micro-programa. O registo
SBR guarda o endereo de micro-programa para onde dever ser transferido
controlo aps terminar a execuo de uma micro-rotina. Uma vez que existe s
um registo para guardar o endereo de retorno, apenas possvel utilizar um
nvel de profundidade de micro-rotinas, o que significa que uma micro-rotina
no pode chamar outra.
importante sublinhar que no existe qualquer relao entre uma micro-
rotina e uma subrotina definida ao nvel do assembly.
O funcionamento do micro-sequenciador controlado pelos dois bits do
sinal que controla o carregamento do registo CAR, da seguinte forma:
= : CAR incrementado se for , e carregado com o valor
de (o endereo da memria de controlo para onde se deve saltar), se
12.2. UNIDADE DE CONTROLO 213
for , permitindo assim a execuo de saltos condicionais dentro
de micro-programas.
= : CAR carregado com o valor contido em SBR, sendo assim
executado um retorno de micro-rotina.
= : CAR carregado com o valor especificado em pela
unidade de mapeamento.
= : CAR carregado com o valor especificado em pela
unidade de mapeamento.
1 0
CC F
z 1
COND
c 2
INT EINT
MUXCOND
3
E
RI15 M0 4
RI14
M1 5
S
Z 0 6
RI6
C
MUX6
1
7
N 2
O 3 MCOND
P 4
3
INT 5
3
RI97
Os bits e do registo de estado. Estes bits so tambm conhecidos por
bits de micro-estado. O bit est a se a ltima operao na ULA deu
resultado zero, enquanto que o bit est a se a ltima operao na ULA
gerou transporte.
A conjuno do bit E do registo de estado com o sinal que assinala
a presena de uma interrupo, indicando se deve atender uma interrup-
o presente.
Os bits do campo do registo de instruo, que codificam o modo de
endereamento da instruo assembly que est a ser executada.
O bit do registo de instruo, mascarado pela expresso que
indica qual o operando ao qual deve ser aplicado o modo de enderea-
mento da instruo, no caso de instrues de dois operandos.
Um dos bits do registo de estado, mais os sinais e , escolhido de
acordo com o valor dos bits a do registo de instruo.
A entrada do multiplexador MUXCOND controlada pela sada do multi-
plexador MUX6. Uma vez que os bits a do registo de instruo especificam,
conforme Figura 11.13) e de acordo com a Tabela 11.14, qual a condio que
testada numa dada instruo, possvel seleccionar directamente qual a con-
dio que dever ser testada pelo micro-sequenciador.
Uma anlise da Tabela 11.14 revela que os bits , e do registo de instruo
seleccionam qual a condio, enquanto que o bit indica se a condio deve
ser complementada. A ligao do multiplexador MUX6 conforme indicado na
figura e o uso de uma porta XOR, que funciona como uma negao condicional,
permite que, na entrada do multiplexador MUXCOND, esteja j seleccionada a
12.2. UNIDADE DE CONTROLO 215
condio correcta. Isto leva a que o teste de uma destas condies seja efec-
tuado numa s micro-instruo, no sendo necessrio efectuar diversos testes
aos valores dos bits de estado e do valor dos bits a do registo de instruo.
Quando se pretende que o micro-sequenciador execute as instrues de
forma sequencial, dever ser colocado o valor na sada . Isto conse-
guido
colocando
o valor no campo da micro-instruo e o valor
no campo da micro-instruo.
Caso se pretenda que o micro-sequenciador
execute um salto incondicional,
dever ser colocado o valor na sada , colocando em e
em .
Finalmente, caso se pretenda que o micro-sequenciador execute um salto
na condio de um dado bit tomar um dado valor, o multiplexador MUXCOND
dever ser controlado de forma a seleccionar o bit pretendido, enquanto que o
sinal define se a condio dever ser complementada ou no.
Tanto o salto incondicional como o salto condicional s podem ser executa-
dos pelo micro-sequenciador quando a micro-instruo dotipo
= , uma vez
que s neste
formato esto disponveis os campos , e o endereo de
salto .
Caso a micro-instruo seja do tipo , o valor de colocado a e o
micro-sequenciador incrementa sempre o contador de micro-programa.
S M
SR1
OPCODE
0 1
SR2 MUX1
6
2
MEMRIA MEMRIA
A B
9 9
END A END B
1000
Rotinas de leitura de dois operandos para S=0
1100
Rotinas de leitura de dois operandos para S=1
IR1
0
4
IR2
RI15 3 4
1 0 1 0
M2 MUX3 M2 MUX2
S RAD WBR RB 4
4
4 4
MAD 1 0 MRB 1 0
MUXAD MUXRB
4 4
SelAD SelB
M2 Valor seleccionado
0 Registo usado pelo primeiro ou nico operando
1 Registo usado pelo segundo operando, quando exista
Sinal Valor
MB 0
MD 00
WR 1
WM 0
LF 0
LI 0
FM 0000
CULA 11XXX
LI REGISTO DE INSTRUO
OP S M IR1 IR2
SR1 0 3
0 1
0
MUX2
SR2 MUX1 SelB
MUXRB
6 4
0
1
2 4
1
4
4 4
MEMRIA MEMRIA RB
A B M2 MRB
1 0
WBR
0
MUX3
END A END B
0
CC SelAD
MUXAD
z 1 4
1
4 4
c
1
2
F 9 RAD
INT EINT 9
MUXCOND
3
9
E F
RI15 M0 4 SBR MAD
LS
RI14 9
M1 5
S RI15
Z 0 6
COND MUX4 M5 0 1 2 3
RI6 1 0
2
C MUX5
MUX6
1
7
N 2
O 3 MCOND 9 9 M2 S
CAR
P 4
3 +1 9
INT 5
NA
3
RI97 MEMRIA
Controlo
32
MICROINSTRUO
12.3 Micro-Programao
Uma vez percebido o funcionamento da unidade de controlo, a programao
da memria de controlo relativamente simples. Com efeito, por anlise do cir-
cuito de controlo, possvel identificar o valor que cada bit da micro-instruo
deve tomar para se obtenha o funcionamento desejado do circuito de dados,
assim como um comportamento correcto do prprio circuito de controlo.
O primeiro passo para a definio do contedo da memria de controlo a
definio da estrutura de alto nvel dos micro-programas. Esta estrutura , em
grande parte, imposta pelas caractersticas do circuito de controlo e pelos tipos
de operaes que podem ser efectuados por este.
A sequncia de operaes efectuada quando uma instruo assembly exe-
cutada foi descrita na Seco 12.2.4. A esta sequncia de operaes corresponde
o fluxograma da Figura 12.14. A execuo de uma instruo do processador
Carregamento
da Instruo
OPCODE
Teste de
Interrupes
a que as instrues passem a dispor dos dois operandos nos registos RD e SD.
Nos casos em que tal se aplique, o registo EA deve, tal como anteriormente, ser
carregado com o valor do endereo onde se encontrava o primeiro operando.
Este valor ser mais tarde utilizado pelo micro-cdigo de escrita do resultado,
descrito no Programa 12.8.
Quando o valor do bit do registo de instruo , o tratamento algo di-
ferente. Neste caso, o modo de endereamento aplica-se ao segundo operando,
como, por exemplo, na instruo ADD R3,M[R4+30]. Neste caso, o papel dos
registos RD e SD deve ser trocado, e no h necessidade de guardar o endereo
do operando no registo EA. Note-se que o modo de endereamento continua a
aplicar-se ao registo especificado em , s que, neste caso, o campo co-
difica o segundo operando, no o primeiro. Estas micro-rotinas esto descritas
no Programa 12.4.
micro-rotinas est guardado nas posies a da memria B (ver Tabela 12.4)
da unidade de mapeamento, esta transferncia faz-se carregando o registo CAR
com o contedo
desta memria, endereada com os bits mais significativos
( e ) a .
ser escrito na posio de memria apontada pelo registo EA, caso o modo de
endereamento seja indirecto ( = ) ou indexado ( = ). Uma vez que s
O vector de interrupo serve como ndice para esta tabela. Assim, este va-
lor dever ser somado a FE00h para se obter o endereo de memria onde se
encontra o endereo
com que dever ser carregado no contador de programa
(notar que +FE00h= -0200h e este estratagema utili-
zado por,
ao contrrio de FE00h, o valor 0200h ser possvel de representar no
campo de 12 bits). Finalmente, dever ser transferido controlo para
a primeira micro-instruo da micro-rotina de carregamento de instruo, que,
neste caso, executar a primeira instruo da subrotina de interrupo.
Uma vez que o formato da micro-instruo o formato , isso fora automati-
camente os valores pretendidos nos sinais que controlam a escrita na memria
e o multiplexador MUXA.
Analisando o circuito de controlo, na Figura 12.13, verifica-se que neces-
srio garantir que:
1. O registo CAR seja incrementado. Para tal, necessrio:
Controlar o multiplexador MUX5 com o valor
Colocar no controlo do multiplexador MUX4, seleccionando
a en-
trada 0 do multiplexador
MUXCOND e colocando o sinal a , por
forma a que seja .
2. O multiplexador MUXAD dever seleccionar a sua entrada , que
de-
ver tomar o valor , uma vez que se pretende este valor em .
Chega-se assim concluso que, nesta micro-instruo, os seguintes valores
devero estar
definidos:
=
=
=
=
=
=
=
=
=
=
Estes valores definem a micro-instruo ilustrada na Figura 12.15, onde os
valores que no so relevantes foram deixados em branco. Arbitrando agora
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
S S M
L C L L W
1 M5 R R MCOND CONST/NA MD A RAD
S C I F R
1 2 D
1 00 0 000 1 1 0 0 1 1111
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
S S I M M
M M M W W
M5 FM CALU RB MD RAD
0 R R A
A B 2
R
M R
A
1 2 K B D
Sumrio
Este captulo descreveu a estrutura interna do processador P3, um processador
micro-programado de 16 bits, cujo conjunto de instrues tinha sido estudado
no captulo anterior.
As duas componentes mais importantes deste processador so o circuito
de dados e a unidade de controlo. O circuito de dados constitudo por um
banco de registos e uma unidade lgica e aritmtica, j estudadas em captulos
anteriores, alm dos registos de instruo e de estado e dos diversos barramen-
tos de interligao. A unidade de controlo baseada num micro-sequenciador
que gera a sequncia de sinais que controlam o funcionamento do circuito de
dados. O micro-sequenciador usa uma unidade de teste de condies, uma
unidade de mapeamento e uma unidade que controla o banco de registos.
A parte final do captulo foi dedicada a estudar a forma como se definem
os micro-programas que controlam o funcionamento deste micro-processador
e a forma como realizada cada uma das suas instrues.
232 CAPTULO 12. ESTRUTURA INTERNA DE UM PROCESSADOR
Captulo 13
Sistemas de Memria
233
234 CAPTULO 13. SISTEMAS DE MEMRIA
Mem Read
R/W
Mem Enable
CS
Dados m
DATA
Endereos n
ADDR
2m
Mem Read
R/W R/W
Mem Enable
CS CS
DATA DATA
D 2m1Dm D m1D0
ADDR ADDR
A n1A0 A n1A0
Endereos
Dados
R/W
CS
n m
DATA
ADDR
Mem Read
A n1 R/W
CS
Mem Enable
DATA
ADDR
A n2A0
Mem Read
A13A0
D7D0
A15 A14
S1 S0
Mem Enable EN 14
Descodificador
0 1 2 3 8
R/W
CS
DATA
ADDR
R/W
CS
DATA
ADDR
R/W
CS
DATA
ADDR
R/W
CS
DATA
ADDR
Figura 13.4: Esquema de uma memria de 64k octetos, construda com quatro
mdulos de 16k octetos cada.
Mem Read
D15D8
A13A0
D7D0
A15 A14
Mem Enable S1 S0
EN
14
Descodificador
0 1 2 3
8
R/W 8 R/W
CS CS
DATA DATA
ADDR ADDR
R/W R/W
CS CS
DATA DATA
ADDR ADDR
R/W R/W
CS CS
DATA DATA
ADDR ADDR
R/W R/W
CS CS
DATA DATA
ADDR ADDR
Figura 13.5: Esquema de uma memria de 128k octetos, organizada como 64k
palavras de 2 octetos cada.
gerao dos sinais de controlo dos mdulos de memria, h que garantir que:
FFFFFh
RAM
F0000h
EFFFFh
00000h
Mem Read
R/W
Mem Enable
A19
A18 CS
UCP
A17
20
A16 16
Endereos ADDR
A15A0
DATA
Dados 8
FFFFFh
RAM
F0000h
...
1FFFFh
RAM
10000h
...
07FFFh
ROM
00000h
Mem Read
R/W
Mem Enable
CS
UCP RAM
Dados 8 8
DATA
Endereos
ADDR
20 A15A0 16 16
R/W
A19A16
CS
4
RAM
8
A15 DATA
EN ADDR
.
15
16
Descodificador
.
.
1
0
CS
ROM
8
DATA
ADDR
15
10ns
T1 T2 T3 T0 T1
Relgio
Mem Enable
Read / Write
Dados Dados
10ns
T1 T2 T3 T0 T1
Relgio
Mem Enable
Read / Write
Dados Vlidos
13.2.1 Caches
A funo de uma cache num sistema de memria permitir que a maioria dos
acessos a memria sejam feitos mais rapidamente do que possvel utilizando
directamente a memria primria do computador. Este conceito de uma me-
mria pequena e mais rpida pode ser generalizado para incluir vrios nveis
de cache, como descrito na Figura 13.12. Os nveis de cache mais prximos do
processador so feitos com memrias mais rpidas, mas de menor capacidade.
Os nveis mais exteriores so realizados com memrias progressivamente mais
lentas.
A memria primria do computador , tipicamente, realizada com mem-
rias dinmicas, cujos tempos de acesso se encontram tipicamente na gama dos
60ns a 70ns. As memrias de cache encontram-se muitas vezes no mesmo cir-
cuito integrado que o processador, e tm assim tempos de acesso compatveis
com a velocidade do processador. Em processadores modernos, comum exis-
tirem diversos nveis de cache internos ao processador, que podem ser ou no
complementados com caches exteriores. Estas caches podem ter tempos de
acesso da ordem da durao do ciclo de relgio do processador, que, com a
presente tecnologia, menor que 1ns.
Numa operao de leitura, a funo da cache disponibilizar dados e/ou
instrues num perodo de tempo mais curto do que o que possvel quando
o acesso feito memria principal. Numa operao de escrita, a cache deve
poder ser acedida rapidamente para guardar os dados, devendo os mesmos
ser posteriormente escritos em memria.
Uma vez que a cache tem menor dimenso que a memria principal, s
uma pequena fraco da totalidade do contedo da memria est presente, em
cada momento, na cache. Assim, necessrio substituir frequentemente dados
e instrues presentes na cache por outros, que esto a ser mais recentemente
acedidos.
Para quantificar a acelerao que possvel conseguir atravs do uso de
uma cache, considere-se um exemplo simplificado de um sistema computacio-
nal que tem apenas um nvel de cache e uma memria primria.
13.2. HIERARQUIA DE MEMRIA 245
Onmero
mdio de ciclos
de relgio por cada instruo executada assim
de , ou seja, (esta medida de desempenho denominada de
CPI, ciclos por instruo, ou, em ingls, cicles per instruction). Significa isto que
este processador executa uma instruo a cada ciclos de relgio, ou seja,
a cada ns. Este processador executa assim milhes de instrues por
segundo (ou MIPS, outra medida de desempenho de processadores - em ingls,
millions of instructions per second).
Se no existisse uma cache, cada acesso a memria teria de ser feito me-
mria primria.
Isto significa que o processador demoraria, para executar cada
instruo, ciclos de relgio, ou seja, ciclos de relgio. O processa-
dor executaria assim apenas MIPS, o que significa que ficaria aproxima-
damente 7 vezes mais lento.
Este exemplo ilustra bem a importncia das caches no desempenho de um
sistema computacional, e mostra como a incluso de uma memria pequena e
rpida entre o processador e a memria principal aumenta significativamente
a velocidade com que as instrues so executadas.
Nestas anlises, no foi focado o aspecto crtico da dimenso das caches,
mas apenas a sua velocidade. A dimenso das caches, no entanto, crtica para
um bom funcionamento do sistema de memria. O impacto da dimenso apa-
rece, indirectamente, no valor da taxa de sucesso, que maior para caches de
maior dimenso, e menor para caches mais pequenas. Em geral, no dimensio-
namento de uma cache para um sistema de memria, necessrio considerar
dois factores fundamentais:
2 Em certos sistemas, a cache funciona directamente com os endereos virtuais, situao em que
31 10 9 0
Etiqueta ndice
Etiqueta ndice
Etiquetas Dados
Sucesso Dados
dados tem grande probabilidade de vir a ser usados dentro de pouco tempo, h
que enviar os dados no s para o processador, mas tambm para esta posio
da cache, e actualizar o valor da etiqueta.
Este tipo de mapeamento, a que se chama mapeamento directo, no repre-
senta a nica possibilidade de mapear o espao total de endereamento para
um conjunto mais reduzido de posies de cache.
As caches de mapeamento directo so as mais simples. No entanto, so
as mais restritivas pois, como cada posio de memria s pode estar numa
dada posio da cache, o desempenho ser muito mau se o programa aceder
consecutivamente a duas posies de memria que, por azar, calhem na mesma
posio da cache.
Uma alternativa s caches de mapeamento directo so as caches completa-
mente associativas. As caches associativas so uma consequncia da seguinte
observao: o ideal, de um ponto de vista de flexibilidade da cache, que uma
dada posio de memria possa ser colocada em qualquer posio da cache.
Neste caso, o endereo interpretado na totalidade como uma etiqueta, no
existindo o campo ndice. A identificao da posio correcta da cache faz-se,
unicamente atravs da comparao das etiquetas. Se existir uma posio da
cache que contenha uma etiqueta com valor igual etiqueta do endereo que
est a ser acedido, ento essa posio de cache contm o valor pretendido.
Para realizar estas caches usam-se memrias associativas, cujo funcionamento
diferente das habituais. Numa memria associativa o valor que usado para
enderear a memria no corresponde a uma posio, mas sim ao contedo de
uma posio de memria. Cada posio nas memrias associativas tem no
s os dados, mas tambm uma etiqueta. O endereo que colocado entrada
de uma memria associativa comparado simultaneamente com as etiquetas
de todas as posies de memria, sendo disponibilizados os dados que corres-
pondem posio onde a etiqueta coincide com o valor usado para enderear
a memria. A Figura 13.15 ilustra o esquema interno de uma memria total-
mente associativa.
Etiqueta
= = =
Sucesso Dados
31 12 11 4 3 0
Etiqueta ndice
Deslocamento
0000000h
0000001h
0000002h Cache
0000003h Etiqueta Dados
0 1 2 E F
1FC0FE2h 01h
Memria
1FC0FE3h 02h
256 blocos
3FFFFF9h
3FFFFFAh FDh
3FFFFFDh
3FFFFFEh
3FFFFFFh
cache, uma vez que o nmero de bits de ndice menor, mas os bits retirados ao
ndice so utilizados para enderear dentro do bloco de cache. Porm, passa a
ser necessria apenas uma etiqueta para cada conjunto de posies na cache,
o que significa que existe uma penalizao mais pequena pela necessidade de
guardar as etiquetas, alm dos dados propriamente ditos.
agora possvel perceber a estrutura interna de uma cache de mapeamento
directo, que se encontra representada na Figura 13.18. A cache consiste num
conjunto de blocos, cada um dos quais contm diversas posies de memria e
um conjunto de bits que guarda a etiqueta que corresponde ao referido bloco.
Etiqueta ndice
Deslocamento
Etiquetas Dados
Descodificador
=
Multiplexador
Sucesso
Dados
Etiqueta ndice
Deslocamento
Codificador
Multiplexador
Hit Dados
dados para a cache. Se no for usada lgica trs-estados, ser necessrio usar
um codificador cuja sada controla um multiplexador que selecciona a via que
dever estar activa, como representado na Figura 13.19.
cionar de forma aleatria uma das vias como aquela que contm o bloco que
dever ser substitudo. Uma outra soluo bastante eficaz, mas ligeiramente
mais complexa, consiste em manter um contador, para cada conjunto de blo-
cos de cache, que incrementado sempre que o seu contedo igual ao nmero
do bloco que acedido. Desta forma, blocos frequentemente acedidos tm me-
nos probabilidade de serem substitudos, uma vez que o contador permanece
pouco tempo a apontar para eles.
Outro bit de controlo presente em todas as caches o valid bit, que indica
se os dados que esto nessa posio da cache so vlidos ou no. Existem
diversas razes pelas quais os dados podem deixar de estar vlidos. O com-
putador pode estar a comear a executar um programa, situao em que todos
os dados esto invlidos. Podem tambm existir outros dispositivos que alte-
rem posies de memria, situao em que a cpia em cache fica invlida. Em
sistemas operativos que possam executar mais de um programa de cada vez
(multi-tasking), os blocos de cache podero tambm ser marcados como invli-
dos quando existe uma mudana de contexto.
Podero existir outros bits de controlo, que controlam o funcionamento da
cache em outros aspectos. Por exemplo, podero existir bits de controlo que
permitem realizar a poltica de substituio, ou bits que permitam implementar
mecanismos de proteco de memria. O nmero e a funo desses bits varia
de sistema para sistema.
tiver, diz-se que houve uma falta de pgina (em ingls, page fault) e a pgina
carregada para memria. O carregamento de uma pgina, desencadeado atra-
vs da execuo de uma rotina especfica para o efeito, pode demorar diversos
milisegundos, tempo suficiente para executar milhes de instrues num pro-
cessador moderno. Isto significa que o processador fica livre para outras tare-
fas, tais como executar outros programas (em sistemas multi-tarefa) ou atender
a pedidos pendentes.
O processo de traduo de endereos virtuais para endereos fsicos usa di-
versas estruturas fsicas e lgicas no seu funcionamento. As mais importantes
so a tabela de pginas e a TLB (do ingls, Translation Look-Aside Buffer).
Memria Primria
Tabela de pginas
0000 000h
00000h 0001h
00001h 0003h 0001 000h
00002h 0000h
00003h 0002h 0002 000h
0003 000h
+
.
0003 FFFh
. ...
. NULL
FFFE 000h
FFFF 000h
FFFFEh FFFFh
FFFFFh FFFEh
que sepretende aceder. A memria fsica tem capacidade para pginas
( ). Por simplicidade, admita-se que todas as pginas so alinhadas em
memria, o que significa que o primeiro endereo de cada pgina tem os l-
timos bits a . Neste caso, basta guardar os bits mais significativos do
endereo na tabela de pginas, logo cada descritor de pgina necessita de, pelo
menos, dois octetos.
Isto significa que uma tabela desta dimenso ir ocupar um espao de me-
mria pelo menos igual a M octetos, qualquer que seja a dimenso do pro-
grama que est a ser executado. Isto representa um uso muito ineficiente de
recursos, especialmente no caso em que o programa que est a ser executado
usa pouca memria.
3FEh NULL
3FFh NULL
existncia de um bit nos descritores de pgina das tabelas de traduo que in-
dica se essa pgina foi alterada em memria ou no, chamado aqui tambm de
dirty bit.
Na substituio de uma dada pgina, este bit testado. Se estiver a 0, isso
indica que a pgina no foi alterada desde que foi trazida para memria pri-
mria. Neste caso, a cpia em disco continua vlida, significando que se pode
simplesmente escrever por cima da cpia da pgina em memria primria. Se,
pelo contrrio, esse bit estiver a 1, ento antes de escrever por cima da pgina
necessrio escrev-la para disco.
Um bit que indica se o endereo fsico vlido. Caso no seja, isso signi-
fica que a pgina est em disco e que ter de ser carregada para memria
principal antes de o seu contedo ser utilizado pelo processador.
Um bit que indica se a pgina foi alterada enquanto em memria, o que
implica que dever ser modificada em disco, quando for substituda.
Bits de proteco, que indicam se a pgina acessvel para escrita, leitura
e execuo, em modo utilizador.
Bits de proteco, que indicam se a pgina acessvel para escrita, leitura
e execuo, em modo sistema.
Um bit que indica que a pgina foi acedida recentemente.
cache ir ter uma taxa de sucesso muito elevada, pois o nmero de pginas di-
ferentes que so usadas num dado troo de programa tipicamente pequeno,
dada a propriedade da localidade dos acessos.
A existncia desta cache permite evitar, na maior parte das tradues, os
acessos tabela de pginas que so necessariamente mais lentos.
Uma vez que a primeira fase de acesso a uma cache que no seja totalmente
associativa utiliza apenas os bits de ndice para escolher o bloco onde esto os
dados, poder ser possvel iniciar o acesso cache antes de o ndice da tabela
ter sido traduzido pela TLB. Para tal, basta que o nmero de bits de ndice e
de deslocamento usados pela cache no seja superior ao nmero de bits ne-
cessrios para especificar o deslocamento dentro de cada pgina de memria
virtual. A Figura 13.23 representa, de forma muito simplificada, o sistema de
memria de um processador de 32 bits, com memria virtual, TLB e um nvel
de cache endereada fisicamente.
Neste exemplo, o processador tem um espao de endereamento virtual de
4G octetos ( octetos) com pginas de 4k octetos. O endereo de pgina
enviado para uma TLB de mapeamento directo, com 16 entradas, que envia o
endereo fsico da pgina para uma cache
de 4k octetos. Este endereo
sepa-
rado em 4 componentes: 20 bits ( ) para a etiqueta, 8 bits ( ) para
13.4. MEMRIA VIRTUAL 263
CACHE
TLB
ndice
Etiqueta
o ndice e 2 bits (
)
para o deslocamento dentro do bloco. Os dois bits
menos significativos ( e ) no so utilizados, sendo apenas usados para se-
leccionar o octeto dentro da palavra, o que no foi considerado neste esquema.
Como o nmero de bits necessrios para especificar o deslocamento dentro de
cada pgina de 12, e as pginas se encontram alinhadas em memria, ase-
leco
do bloco de cache pode ser iniciada (usando as linhas de endereo a
) ainda antes da TLB traduzir o endereo da pgina de virtual para fsico. Se
os dados estiverem presentes em cache, estes so enviados directamente para o
processador. Caso contrrio, o controlador da memria primria verifica que a
linha de no foi activada, e desencadeia um acesso memria primria de
64M octetos. Este acesso feito activando as linhas de controlo das memrias
dinmicas e os respectivos endereos de linhas e colunas.
Neste esquema muito simplificado, no esto ilustrados os circuitos utiliza-
dos para as operaes de escrita na cache de dados e na TLB, nem os diversos
sinais de controlo necessrios para controlo das memrias dinmicas (DIMM).
O leitor poder no entanto observar que a complexidade de um sistema de
memria rivaliza com a do prprio processador, especialmente se se conside-
rar que, em sistemas reais, existem diversos nveis de caches, caches separadas
para endereos e dados, arquitecturas complexas de memria primria e inter-
ligao dos barramentos de dados com dispositivos de entrada/sada.
Sumrio
Neste captulo, estudaram-se os diversos componentes do sistema de memria
de um processador tpico.
Foi analisada a forma como a memria primria constituda a partir de
mdulos simples, interligados entre si por forma a permitir a construo da
estrutura de memria desejada. Cada um destes mdulos corresponde a uma
dada parte da memria visvel pelo processador, podendo a organizao lgica
dos mdulos ser descrita pelo mapa de memria do processador.
264 CAPTULO 13. SISTEMAS DE MEMRIA
Cache Hit
TLB 4 v w e d Etiq Pgina
TLB Hit
Ready
Dados
12
16
= 20
32
32
20
2
Etiqueta En
= Sel MUX
Deslocamento
32
Hit
MEMRIA
Controlo
Controlador
12 Endereos
DIMM 32
DIMM 32
DIMM 32
DIMM 32
Entradas, Sadas e
Comunicaes
267
268 CAPTULO 14. ENTRADAS, SADAS E COMUNICAES
Barramento de Endereos
Barramento de Dados
Processador Barramento de Controlo
14.1.1 Interfaces
A ligao dos perifricos , na maior parte dos casos, assegurada por um m-
dulo que pode assumir diversos graus de complexidade, denominado interface.
A interface existe para isolar o processador das particularidades dos perifri-
cos. De entre as funcionalidades pedidas interface, podem ser referidas, nesta
fase, as seguintes:
Barramento de
Endereos
Controlo
Dados
Comunicao
com o Perifrico
O facto dos dados serem escritos nestes portos e deles lidos, em vez de
tal ser feito no perifrico propriamente dito permite que a operao seja feita
velocidade possvel por parte do processador. Se, de facto, a escrita ou a leitura
fossem feitas envolvendo directamente o perifrico, o processador teria que
realizar o seu ciclo de leitura ou escrita velocidade permitida pelo perifrico,
tipicamente algumas ordens de grandeza abaixo da velocidade possvel nos
barramentos internos.
Muitas interfaces, possuem, para alm dos portos de dados, isto , os portos
destinados a transferir dados, alguns outros portos onde o processador pode
escrever informaes de controlo que permitem configurar determinados as-
pectos do funcionamento do perifrico ou da comunicao com ele, bem como
ler informao sobre o estado do perifrico, da ligao ou da prpria interface.
Trata-se, respectivamente, de portos de controlo e portos de estado.
Cada um destes portos naturalmente acedido atravs de endereos dife-
rentes. Conceptualmente o mdulo de descodificao de endereos respons-
vel por identificar a presena no barramento de dados do endereo correspon-
dente a cada um dos registos presentes na interface por forma a que o porto
seleccionado seja escrito ou lido conforme a aco especificada no barramento
de controlo. Na prtica, as interfaces s descodificam os bits menos signifi-
cativos do barramento de endereos em nmero necessrio para enderear os
diversos portos internos da interface, sejam portos de dados, controlo ou es-
tado. Estes portos tm, em geral, endereos seguidos. Tal como no caso da
descodificao de endereos de memria parte da descodificao realizada
exteriormente s interfaces e em comum para todas elas.
O mdulo de controlo da interface coordena as diversas aces desta com
relevo para a gesto da comunicao com o perifrico e, nos casos em que
isso relevante, nas transferncias implicando o sistema de interrupes (Sec-
o 14.5.2) ou o acesso directo memria (Seco 14.5.3).
Barramento de Endereos
Barramento de Dados
Barramento de Controlo
Ai a An-1
Descodificao A0 a Ai-1
Externa
...
Interface A Interface X
...
En
Descodificao
Interna Controlo
0 n-1
... Escrita
Leitura
Perifrico X
OEn
Porto 0 Porto n-1
...
Perifrico A
Figura 14.3: Descodificao de endereos para acesso aos portos de uma inter-
face.
14.2 Perifricos
Nas seces seguintes descreve-se o funcionamento bsico de alguns dos peri-
fricos mais importantes nos computadores de uso genrico. De sublinhar que,
apesar da importncia que estes tm nos computadores com que a maioria das
pessoas trabalha diariamente, existem muitos outros sistemas computacionais
em que estes perifricos nem sequer existem. o caso dos sistemas computaci-
onais existentes em muitos dos electrodomsticos. Para estes, a entrada e sada
de dados processa-se atravs de perifricos especficos ao sistema em que esto
integrados.
14.2.1 Teclados
O teclado o perifrico de entrada de dados mais importante nos computadores
de uso genrico, ao ponto de ser normal os computadores no arrancarem caso
14.2. PERIFRICOS 273
Interface
x
interrupo Mux
3
M M M M M M M M
scan code D M M M M M M M M
e M M M M M M M M
8 y
s M M M M M M M M
c
M M M M M M M M
3
o
M M M M M M M M
M M M M M M M M
d M M M M M M M M
M
Placa Grfica
dado scan code. esta operao que permite que um teclado com a mesma dis-
posio de teclas possa ter disposies diferentes de smbolos e assim adaptar-
se facilmente a diferentes lnguas. Por exemplo, o smbolo - no teclado por-
tugus est na mesma tecla do smbolo /no teclado ingls. A configurao
do device driver permitir associar essa tecla ao scan code correspondente para a
lngua para a qual o sistema est configurado.
Outro aspecto dos scan codes que no indicam se a letra pretendida pelo
utilizador maiscula ou minscula. Ser o device driver que ter que ve-
rificar se o make code de uma letra ocorre entre um shift_premida e um
shift_liberta. Se sim, ento a letra ser maiscula, caso contrrio ser
minscula.
A converso de scan codes para cdigo ASCII normalmente da responsa-
bilidade da aplicao.
Sempre que existe uma alterao do estado de uma tecla, o controlador do
teclado envia uma interrupo para a UCP indicando que tem dados para en-
viar. Por vezes, a UCP est ocupada com outras actividades e no consegue
dar ateno imediata. Para evitar a perda de dados, o controlador do teclado
possui um buffer capaz de armazenar uma sequncia de eventos do teclado.
Esta soluo no resolve completamente o problema, pois este buffer tem tipica-
mente uma capacidade reduzida. Nos casos em que a UCP demora um pouco
mais a ler os dados do teclado, pode acontecer que o buffer encha, fazendo com
que todos os eventos posteriores sejam descartados. comum o controlador
do teclado fazer soar um aviso sonoro para indicar que essas teclas esto a ser
ignoradas.
14.2.2 Monitores
semelhana do teclado, o monitor ocupa o lugar principal na classe dos peri-
fricos de sada de dados. A interface entre o monitor e a UCP realizada pela
placa grfica. Um diagrama da organizao interna de uma placa grfica e sua
ligao a um monitor est apresentada na Figura 14.5.
As placas grficas tm, em geral, dois modos de funcionamento, program-
veis pela UCP: modo texto e modo grfico. Em qualquer dos modos de funciona-
mento, do ponto de vista da UCP o monitor uma matriz (linha,coluna). No
caso do modo texto, os elementos desta matriz so caracteres ASCII. No modo
14.2. PERIFRICOS 275
exemplo, para uma definio de (1280 colunas por 1024 linhas)
com uma palete de 256 cores (8 bits) necessrio que a placa grfica tenha uma
memria de pelo menos bits, ou seja, 1,25M octetos. Se com esta
memria se pretender uma maior quantidade de cores, ser necessrio reduzir
a definio. Supondo que se pretende aumentar o tamanho da palete para
64k
cores (16 bits), no possvel
usara definio padro abaixo da anterior,
, pois exigiria bits, ou seja, 1,5M octetos. Assim, ter-
se-ia que optar pela definio padro seguinte, , a que corresponde a
memria bits, portanto, 0,9M octetos.
A UCP define a cor de cada pixel escrevendo na correspondente posio
de memria grfica. Para facilitar a tarefa aos programadores, existem nor-
malmente bibliotecas grficas que fornecem rotinas de alto nvel para definir
objectos complexos no monitor. Estas rotinas so especficas para cada sistema.
A ligao entre a placa grfica e o monitor depende do tipo de monitor.
Ainda hoje, a maioria dos monitores so baseados num tubo de raios catdicos
( semelhana das televises). Nestes monitores, um feixe de electres emi-
tido contra uma tela de fsforo, elemento que tem a propriedade de se tornar
luminoso ao ser atingido pelo feixe. Por controlo do varrimento do feixe, e
da intensidade deste durante o varrimento, possvel definir padres na tela.
Tipicamente, este feixe de electres varre o monitor por linhas da esquerda
para a direita, desligando-se quando faz o retorno da direita para a esquerda,
avanando para a linha seguinte, como apresentado na Figura 14.5. Durante
o varrimento de uma linha, o feixe modulado de forma a acender ou apagar
cada pixel dessa linha.
Esta descrio aplica-se a monitores monocolores. Nos monitores a cores,
para cada pixel existem trs telas de fsforo, correspondentes s trs cores ele-
mentares: vermelho, verde e azul. Trs feixes de electres permitem controlar
independentemente cada uma destas telas, atravs da intensidade do feixe cor-
respondente. Assim, possvel definir para cada pixel um valor diferente de
luminosidade para cada uma das trs cores elementares, permitindo assim de-
finir, em princpio, qualquer cor.
Para controlar o monitor, a placa grfica l em sequncia as posies de me-
mria interna e gera um sinal analgico para o monitor com os valores para as
componentes vermelho, verde e azul de cada pixel. Este sinal tem o nome RGB,
pois estas trs cores elementares em ingls tm os nomes Red, Green e Blue, res-
pectivamente. Em geral, a intensidade de cada uma destas cores elementares
com um octeto. Por esta razo, a utilizao de uma palete de cores
definida
com entradas chamada de cor verdadeira (em ingls, true color), pois define
univocamente cada cor possvel no monitor.
De forma a que uma pessoa no se aperceba do varrimento, o monitor deve
ser completamente escrito pelo menos 24 vezes por segundo. Caso contrrio o
utilizador ter uma sensao de piscar do monitor. Esta exigncia implica uma
grande largura de banda entre a placa grfica e o monitor, pois necessrio
enviar 24 vezes por segundo
trs octetos para todos os pixels. Por exemplo,
para uma definio , transferem-se 90M octetos/s.
Hoje em dia, comeam a ficar populares os monitores baseados em LCD
(do ingls, Light Coupled Device). Nestes monitores, cada pixel um elemento
activo cuja cor pode ser controlada independentemente. A interface com estes
monitores diferente em dois aspectos. Por um lado, em princpio no ne-
cessrio a placa grfica ter memria, pois os valores definidos para os pixels do
14.2. PERIFRICOS 277
o tempo de procura (em ingls, seek time), que o tempo que a cabea mag-
ntica demora at chegar pista onde o sector se encontra.
Apesar das distncias serem curtas e das cabeas magnticas serem muito
leves, e portanto demorarem pouco tempo a deslocarem-se para a pista
correcta, o tempo de procura mesmo assim uma componente impor-
tante no tempo total de acesso ao disco. Um valor mximo tpico para
esta componente para os discos de hoje 8ms, correspondendo ao tra-
jecto maior da cabea. Naturalmente, em mdia este valor ser menor e
perto de metade deste.
o tempo rotacional (em ingls, rotational latency), que o tempo que demora
desde que a cabea magntica se encontra em posio at que o sector
desejado passe por baixo desta.
Actualmente, um valor tpico para a velocidade de rotao de um disco
rgido de 10.000 rotaes por minuto. Isto significa que uma rotao
completa de um cilindro demora 6ms. Como em mdia se tem que es-
perar meia volta do cilindro para que o sector certo passe por baixo da
cabea, o tempo rotacional mdio ser de 3ms.
o tempo de leitura/escrita (em ingls, access time), que o tempo que demora
a leitura ou a escrita de um sector.
Para estimar o tempo de leitura/escrita necessrio saber o nmero de
sectores por pista. Para um valor tpico de 64 sectores por pista, e assu-
mindo as mesmas 10.000 rotaes por minuto, o tempo de leitura/escrita
ser 6ms/64=0,09ms.
Barramento de Endereos
Barramento de Dados
Barramento de Controlo
Descodificao
Externa
...
Enable da
Controlo Interface
Leitura
OEn
Barramento de Endereos
Barramento de Dados
Barramento de Controlo
Descodificao
Externa
...
Enable da
Controlo Interface
Escrita
Barramento de Endereos
Barramento de Dados
Barramento de Controlo
A0 a An-1
Descodificao A0 A1
Externa
...
Interface A
En
Descodificao
Interna
Controlo
0 1 2 3 D0
Escrita
Leitura
OEn
Porto 0 Porto 2
1D R
C1
Clock
DOUTVAL DINVAL
Conversor Conversor
D/A A/D
Dados
DOUTVAL
1 2 3 4
Dados
SendData
1 2 3 4
Protocolos de Handshaking
H, como se pode ver, vrias formas de sincronizao entre a interface e o
perifrico. Nas formas apresentadas tem de haver, implcito nas interfaces um
conhecimento das temporizaes dos interlocutores, uma vez que no h, por
parte destes, nenhuma confirmao explcita de que a comunicao se realizou
com xito. Isto quer dizer que da responsabilidade da entidade que gera
os dados saber que o receptor j est pronto para receber novos dados. Em
algumas aplicaes impossvel, porm, ter esse conhecimento porque no se
conhece as caractersticas temporais do perifrico a que uma interface pode ser
ligada.
Para resolver este problema tem de existir, na comunicao entre a inter-
face e o perifrico, no s a indicao da entidade geradora de dados que estes
se encontram disponveis, mas tambm, por parte da entidade destinatria,
a indicao de que os dados foram aceites. Isso conduz a um tipo de pro-
tocolo de comunicao entre a interface e perifrico que tem por designao
handshake. Nesse protocolo, a entidade geradora de dados (por exemplo, a in-
terface, numa comunicao com um perifrico de sada) sinaliza que os dados
esto disponveis por uma linha , por exemplo, e a entidade recep-
tora (no exemplo referido, o perifrico) sinaliza que os dados foram aceites por
uma linha reconhecimento, (do ingls, acknowledge). A forma concreta
como a sinalizao feita pode variar. Podemos considerar impulsos ou mu-
danas de nvel de uma linha. Na Figura 14.12 ilustra-se o protocolo utilizando
mudanas de nvel das linhas.
DADVAL
ACK
12 3 45 6
Na figura os dados a enviar so colocados no barramento no instante e
isso assinalado pela mudana de nvel da linha no instante mar-
cado com . A entidade
receptora reconhece a recepo no instante alterando
o nvel da linha . Assumiu-se que os dados deixavam de estar estveis a
partir do instante assinalado com . Nos instantes a , repete-se o processo
de envio com novos dados. O nvel das linhas associadas ao protocolo, neste
caso, no tem significado e so apenas as suas transies que suportam a in-
formao. Como j referido podiam ter sido usados impulsos para garantir a
sinalizao.
Um caso mais interessante um protocolo que garante uma dupla sincroni-
zao: para alm da capacidade de dar entidade geradora de dados a confir-
mao de que a entidade receptora, de facto, recebeu os dados, como acontece
no caso anterior, garante-se ainda, que a entidade receptora sinalizada de
que a entidade emissora recebeu aquela confirmao. Este protocolo habitu-
almente designado por duplo handshaking e uma das suas possveis variantes
est representada na Figura 14.13.
DADVAL
ACK
12 3 4 56
DADVAL
PEDDAD
1 23 4 5 6
se pode designar por sincronizao de bit, esta nova forma pode ser designada
por sincronizao de caracter ou sincronizao de octeto.
Uma forma clssica de resolver os problemas apontados est ilustrada na
Figura 14.15.
Bits de informao
Bit de arranque
com erro. Repare-se, contudo, que este mtodo tem uma limitao: se ocorre-
rem dois erros, ou mais geralmente, um nmero par de erros, a determinao
da paridade no indica qualquer erro. A utilizao do bit de paridade , em
geral, deixada como opcional numa transmisso assncrona.
Na Figura 14.16 est ilustrada a estrutura da informao transmitida in-
cluindo j o bit de paridade (com paridade par) e dois bits de guarda.
Bits de guarda
Bits de informao
Bit de arranque
Bit de paridade
Bit de arranque
vezes, designada por baud rate, embora esta designao seja incorrecta. O baud
corresponde mais simples quantidade de informao transmitida. Sempre
que baud equivale a bit, a designao est correcta. No entanto, certas for-
mas de transmitir informao transmitem vrios bits simultaneamente levando
a que baud corresponde a vrios bits.
1 caracter
... SYN SOH Cabealho STX Texto ETX BCC SYN ...
h caracteres t caracteres
1 octeto
L o porto
de estado
da interface
Isola bit de
estado de
perifrico pronto
no
pronto?
sim
L posio
de memria
para um registo
Escreve registo
no porto de escrita
da interface
Incrementa posio
de memria e total
de transferncias
no
fim?
sim
L posio
de memria
para um registo
Escreve registo
no porto de escrita
da interface
Incrementa posio
de memria e total
de transferncias
Enderecos
n
Dados
m
UCP
IntN
Int2
Int1
Int0
Memria
Disco Rato Teclado ...
interrupes do disco.
Uma alternativa mais flexvel, e tambm mais comum, atravs da utiliza-
o de uma tabela de rotinas de interrupo. Esta tabela reside numa posio fixa
em memria e ter tantas entradas quantas as linhas de interrupo do proces-
sador. Cada entrada est associada a uma das linhas de interrupo e contm
o endereo do incio da rotina de tratamento ao perifrico ligado nessa linha.
possvel por software definir as entradas nessa tabela, dando portanto maior
flexibilidade no posicionamento das rotinas de tratamento s interrupes.
Para exemplificar, e voltando Figura 14.22, considere-se que o processador
tem 16 linhas de interrupo, de a . Neste caso, a tabela de rotinas
de interrupo ocupar 16 posies de memria, estando cada posio desta
tabela associada ao ndice da linha de interrupo. Considere-se ainda que foi
definido para esta UCP que esta tabela comea no endereo h. Caso surja
uma interrupo na linha de interrupo , a execuo da rotina de interrupo
ter lugar a partir do valor guardado na posio
de memria h , ou seja,
ser realizada a transferncia .
Com esta organizao, est definida partida uma prioridade fixa para as
linhas de interrupo. Por exemplo, tm maior prioridade as linhas de inter-
rupo com ndice menor. Assim, caso surja mais do que uma interrupo
em simultneo, ser atendida aquela com ndice menor. As restantes ficaro
pendentes e sero tratadas aps a execuo da rotina de interrupo desta.
Este funcionamento possvel graas inibio automtica das interrupes
quando se entra numa rotina de tratamento a uma interrupo. Portanto, como
referido atrs, os dispositivos mais rpidos devero ser ligados s linhas de
interrupo com ndice menor. No caso da Figura 14.22, pela forma como os
perifricos foram ligados s linhas de interrupo, o disco ser o perifrico com
maior prioridade, seguido pelo rato.
Interrupes No Vectorizadas
Inicializa
endereo E/S
para o primeiro
perifrico
L o porto
de estado
da interface
Isola bit de
estado de
perifrico pronto
sim no
pronto?
Interrupes Vectorizadas
O caso mais comum para gerir as interrupes num computador atravs de
interrupes vectorizadas. Com esta abordagem, aps a UCP ter activado o si-
nal de confirmao de interrupo, o dispositivo que gerou a interrupo ter
que se identificar, colocando o seu vector de interrupo no barramento de da-
dos. Este vector de interrupo no mais do que um valor numrico nico,
atribudo a cada perifrico do sistema. Da mesma forma que com linhas de
interrupo independentes, a UCP utiliza este identificador para obter o ende-
reo da rotina a executar a partir de uma tabela de rotinas de interrupo.
Para gerir as interrupes e o dilogo com a UCP, utilizam-se normalmente
circuitos controladores de interrupes, PIC (em ingls, Programmable Interrupt Con-
troller). As funcionalidades tpicas de um PIC so:
aceitar um conjunto de linhas de pedido de interrupo.
gerir a interface com o processador.
fornecer um vector correspondente interrupo mais prioritria, quando
pedido pelo processador.
permitir o mascaramento de interrupes.
Uma estrutura interna possvel para um PIC com oito linhas de interrupo
est representada na Figura 14.24.
As linhas so as linhas provenientes das interfaces dos perifricos,
em que define o vector do perifrico a ligado. A cada valor de est associ-
ada a prioridade da linha. Assuma-se, por exemplo, que a um valor menor de
est associada uma maior prioridade da linha. Nesta situao, os perifricos
de maior prioridade devero estar ligados s linhas de ndice menor.
Todas as linhas de interrupo ficam memorizadas no registo que mantm
as interrupes pendentes. Na forma mais simples, bastaria uma porta OR
entre todas as sadas deste registo para gerar o sinal para a UCP. No en-
tanto, em geral, o PIC permite fazer o mascaramento de interrupes. Para
isso, est disponvel um registo de mscara de interrupes que permite filtrar as
interrupes e assim impedir que parte das linhas gerem de facto uma
interrupo. Para isso, basta colocar a 0 o bit deste registo com peso igual ao
vector de interrupo que se pretende inibir. Este registo est mapeado no es-
pao de entradas/sadas da UCP, e portanto, por software, possvel definir a
cada passo de um dado programa quais so os perifricos de que se aceitam
interrupes.
As sadas do registo de interrupes pendentes entram tambm num co-
dificador com prioridades, como o descrito na Seco 5.2.2. Este codificador
gera na sua sada o valor binrio correspondente entrada com menor ndice
14.5. MODOS DE TRANSFERNCIA DE DADOS 301
Interrupes
Pendentes
Int0
Int4
Int5
Int6
Int7
Linha de
interrupo
(INT)
Mscara de
Interrupes
que est a 1 (caso a ordem das prioridades fosse o contrrio da definida atrs,
bastaria trocar a ordem de prioridades deste codificador). A sada deste codi-
ficador colocada no barramento de dados quando a UCP envia o sinal
indicando que est a responder a um pedido de interrupo e que pretende
saber o vector dessa interrupo.
At esta altura do texto, assumiu-se sempre que uma rotina de servio a
uma interrupo no pode ser interrompida, pois o bit de estado que habilita
as interrupes automaticamente colocado a 0 quando se serve uma inter-
rupo. Por vezes, este no o comportamento ideal. Nomeadamente, num
sistema com perifricos com diferentes prioridades fcil perceber que pode
ser desejvel permitir que um dispositivo de maior prioridade interrompa a
rotina de servio interrupo de outro perifrico menos prioritrio.
Para este fim, o PIC tem, regra geral, um registo extra que mantm infor-
mao de qual (ou quais, pois abriu-se agora a porta para uma rotina de inter-
rupo poder ser por sua vez interrompida) o vector de interrupo que est a
ser servido, como mostra esquematicamente a Figura 14.25. Este actualizado
com o valor do vector de interrupo activo com maior prioridade na altura em
302 CAPTULO 14. ENTRADAS, SADAS E COMUNICAES
Int0
Int1
Int2
Int3
Int4 Interrupes
Int5 Pendentes 8
Int6
Int7
Vector de
Mscara de Resolvedor interrupo
3
Interrupes 8 de
Interrupes Linha de
interrupo
(INT)
Interrupo
Servida
8
que vez o sinal da UCP. Se entretanto chegar uma nova interrupo com
prioridade inferior que est a ser tratada, esta ignorada at que termine o
tratamento da interrupo actual. Caso a prioridade seja mais elevada, ento a
linha de interrupo para a UCP imediatamente reactivada.
Para que este processo funcione correctamente, a UCP tem que ter um com-
portamento diferente do que foi apresentado para o caso do processador P3 do
Captulo 12 em dois pontos:
1. o bit de estado E que permite ou no o atendimento de novas interrup-
es no deve ser colocado a zero automaticamente quando da entrada
numa rotina de servio a uma interrupo. Em alternativa, possvel
manter o mesmo comportamento do Captulo 12 desde que a primeira
instruo de cada rotina de servio a interrupes seja um ENI.
2. a UCP tem que avisar o PIC do fim da rotina de interrupo, para que
este possa limpar a entrada correspondente no registo que mantm in-
formao das interrupes activas.
Naturalmente, existem alternativas ao modelo de PIC aqui apresentado.
Nomeadamente, possvel realizar este modo de funcionamento em termos
distribudos. Um exemplo simples o sistema de daisy-chain, em que o peri-
frico mais prioritrio recebe sempre o sinal de confirmao de interrupo,
. Se no tiver sido ele a gerar a interrupo, ele prprio envia o para
o segundo mais prioritrio, e assim sucessivamente at se chegar ao dispositivo
que gerou a interrupo.
14.5. MODOS DE TRANSFERNCIA DE DADOS 303
Arquitectura de DMA
Endereos
n
Dados
m
MRD/MWR
UCP
IORD/IOWR
BUS_GRANT
2. O perifrico A, por exemplo, tem uma palavra de dados que deve ser
transferida para a memria. A interface deste perifrico activa a linha
_ (em ingls, DMA Request), pela qual pede ao controlador de
DMA autorizao para a operao.
3. O controlador de DMA activa, por seu lado, a linha _ e
espera por autorizao da UCP.
O Controlador de DMA
O controlador de DMA funciona, durante um ciclo de DMA, como mestre dos
barramentos, mas durante o resto do tempo funciona como escravo. Nomea-
damente, antes de realizar ciclos de DMA tem que ser programado pela UCP
para conhecer os endereos para/de onde transferir dados na memria, qual a
quantidade de informao a transferir e qual o tipo de DMA.
Para que esta programao seja possvel, o controlador de DMA dispe
internamente de um conjunto de registos que podem ser escritos ou lidos pela
14.5. MODOS DE TRANSFERNCIA DE DADOS 305
Endereos
n
LD
OE Endereo
Read
Write Lgica
de LD
Controlo OE Contador
de Acessos
BUS_REQUEST
BUS_GRANT
LD
OE Registo de
Controlo
Dados
m
DMAR DMAG
Pede controlo
dos
barramentos
Transfere
uma palavra
Cede
controlo dos
barramentos
Fim
sim Transfer.?
no
Perif.
pronto?
no
sim
Tipos de DMA
H vrios aspectos que permitem definir as caractersticas de DMA. Uma trans-
ferncia por DMA pode ser:
De memria para perifrico.
14.5. MODOS DE TRANSFERNCIA DE DADOS 307
Pede controlo
dos
barramentos
Transfere
uma palavra
Fim
sim Transfer.?
no
Perif.
pronto? sim
no
Cede
controlo dos
barramentos
Cede Perif.
controlo dos pronto?
barramentos no
sim
Pede controlo
dos
barramentos
Transfere
uma palavra
Fim
sim Transfer.?
no
Cede Perif.
controlo dos pronto? no
barramentos
sim
Endereos
n
Dados
m
UCP MRD/MWR
Memria
Primria
Processador
BUS_REQUEST Entradas/Saidas
BUS_GRANT
Endereos
Dados
Interrupao
IORD/IOWR
Glossrio