Escolar Documentos
Profissional Documentos
Cultura Documentos
Microprocessadores
Guilherme Arroz
Jos Monteiro
23 de Maio de 2003
Arlindo Oliveira
Contedo
Prefcio
Introduo
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Funes Lgicas
3.1 lgebra de Boole Binria . . . . . . . . . . . . . . . . . . . . . . .
3.1.1 Funes Lgicas de Uma Varivel . . . . . . . . . . . . .
3.1.2 Funes de Duas Variveis . . . . . . . . . . . . . . . . .
3.1.3 As Funes AND e OR . . . . . . . . . . . . . . . . . . . .
3.1.4 Funo Conjuno . . . . . . . . . . . . . . . . . . . . . .
3.1.5 Funo Disjuno . . . . . . . . . . . . . . . . . . . . . . .
3.1.6 Princpio da Dualidade . . . . . . . . . . . . . . . . . . .
3.1.7 Prioridade na Execuo de Operaes . . . . . . . . . . .
3.1.8 Teoremas Envolvendo Conjuno e Disjuno . . . . . .
3.1.9 Definio Formal de lgebra de Boole . . . . . . . . . . .
3.1.10 Funes NAND e NOR . . . . . . . . . . . . . . . . . . . .
3.1.11 Funo XOR . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.12 Funes de Variveis . . . . . . . . . . . . . . . . . . . .
3.1.13 Manipulao de Expresses Lgicas . . . . . . . . . . . .
3.2 Representao de Funes Lgicas . . . . . . . . . . . . . . . . .
3.2.1 Forma Cannica Normal Disjuntiva . . . . . . . . . . . .
3.2.2 Forma Cannica Normal Conjuntiva . . . . . . . . . . . .
3.2.3 Representao de Funes Usando um s Tipo de Funo
i
5
5
6
7
11
14
14
16
16
18
18
19
21
25
27
27
28
29
30
30
31
33
33
34
36
37
38
39
40
43
45
47
49
CONTEDO
ii
3.3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
52
53
71
83
83
83
83
83
83
83
83
83
83
83
83
85
86
86
86
86
86
86
86
86
86
86
86
86
86
6 Circuitos aritmticos
6.1 Somadores . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1 Semi-somador de um bit . . . . . . . . . . . . . .
6.1.2 Somador de um bit . . . . . . . . . . . . . . . . .
6.1.3 Interligao em cadeia de somadores de um bit
6.1.4 Subtraco usando somadores . . . . . . . . . .
6.1.5 Somadores rpidos . . . . . . . . . . . . . . . . .
6.2 Nmeros com sinal . . . . . . . . . . . . . . . . . . . . .
6.2.1 Codificao . . . . . . . . . . . . . . . . . . . . .
6.2.2 Operaes com nmeros com sinal . . . . . . . .
6.3 Multiplicadores e Divisores . . . . . . . . . . . . . . . .
6.4 Representaes em vrgula fixa . . . . . . . . . . . . . .
6.4.1 Operaes em vrgula fixa . . . . . . . . . . . . .
87
88
88
88
88
88
88
88
88
88
88
88
88
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
86
86
86
86
CONTEDO
6.5
iii
.
.
.
.
.
.
.
.
.
.
.
.
88
88
88
88
88
88
Circuitos Sequenciais
7.1 Comportamento Sequencial de Circuitos . . . . . . . . .
7.2 Bsculas Sensveis ao Nvel . . . . . . . . . . . . . . . .
7.2.1 Bscula SR . . . . . . . . . . . . . . . . . . . . . .
7.2.2 Realizao de Bsculas SR com Sinal de
7.2.3 Bscula Tipo D . . . . . . . . . . . . . . . . . . .
7.3 Sinal de Relgio . . . . . . . . . . . . . . . . . . . . . . .
7.3.1 Circuitos Sequenciais Sncronos e Assncronos .
7.3.2 Caractersticas do Sinal de Relgio . . . . . . . .
7.4 Bsculas Actualizadas no Flanco do Relgio . . . . . . .
7.4.1 Tipos de Amostragem . . . . . . . . . . . . . . .
7.4.2 Tipos de Bsculas . . . . . . . . . . . . . . . . . .
7.4.3 Sinais de Controlo Imediato . . . . . . . . . . . .
7.5 Registos . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.5.1 Registos Bsicos . . . . . . . . . . . . . . . . . . .
7.5.2 Registos de Deslocamento . . . . . . . . . . . . .
7.5.3 Contadores . . . . . . . . . . . . . . . . . . . . .
7.5.4 Mtodos de Interligao de Registos . . . . . . .
7.6 Memrias . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
89
90
91
91
93
95
96
97
97
98
98
101
104
105
106
106
106
106
110
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
111
111
111
111
111
111
111
111
111
111
111
111
111
111
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
113
114
116
116
119
121
121
122
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
CONTEDO
iv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
125
129
131
132
133
135
137
139
140
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
145
145
147
147
149
151
153
154
11 Conjuntos de Instrues
11.1 Linguagens de Programao . . . . . . . . . . . . . .
11.2 Instrues Assembly . . . . . . . . . . . . . . . . . . .
11.3 Especificao dos Operandos . . . . . . . . . . . . . .
11.3.1 Registos Internos . . . . . . . . . . . . . . . . .
11.3.2 Constantes Especificadas na Prpria Instruo
11.3.3 Memria e Portos de Entrada/Sada . . . . . .
11.3.4 Modos de Endereamento . . . . . . . . . . .
11.3.5 Utilizao de Pilhas . . . . . . . . . . . . . . .
11.4 Codificao das Instrues . . . . . . . . . . . . . . .
11.5 Controlo da Sequncia de Execuo . . . . . . . . . .
11.5.1 Instrues de Salto . . . . . . . . . . . . . . . .
11.5.2 Chamadas a Subrotinas . . . . . . . . . . . . .
11.5.3 Interrupes . . . . . . . . . . . . . . . . . . .
11.6 Conjunto de Instrues do Processador P3 . . . . . .
11.6.1 Instrues Aritmticas . . . . . . . . . . . . . .
11.6.2 Instrues Lgicas . . . . . . . . . . . . . . . .
11.6.3 Instrues de Deslocamento . . . . . . . . . . .
11.6.4 Instrues de Controlo . . . . . . . . . . . . .
11.6.5 Instrues de Transferncia de Dados . . . . .
11.6.6 Outras Instrues . . . . . . . . . . . . . . . . .
11.6.7 Exemplos de Utilizao . . . . . . . . . . . . .
11.7 Formato das Instrues do Processador P3 . . . . . .
11.7.1 Instrues sem Operandos . . . . . . . . . . .
11.7.2 Instrues com Um Operando . . . . . . . . .
11.7.3 Instrues com Dois Operandos . . . . . . . .
11.7.4 Instrues de Controlo . . . . . . . . . . . . . .
11.7.5 Exemplos de Codificao . . . . . . . . . . . .
11.8 Um Assembler para o Processador P3 . . . . . . . . . .
11.9 Programao em Linguagem Assembly . . . . . . . . .
11.9.1 Programao Estruturada em Assembly . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
155
155
158
160
160
161
161
162
164
166
169
169
172
173
175
176
178
179
180
182
182
183
184
185
186
187
187
188
189
192
193
9.4
10 Arquitectura de um Computador
10.1 Perspectiva Histrica . . . . . . . . . . . .
10.2 Tipos de Computadores . . . . . . . . . .
10.3 Organizao Interna de um Computador
10.4 Interaco com o Exterior . . . . . . . . .
10.5 Nveis de Abstraco de um Computador
10.6 Componentes de um Computador . . . .
10.7 Sumrio . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
CONTEDO
193
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
201
202
203
204
205
205
206
206
208
209
211
213
215
218
220
221
222
223
226
227
228
229
13 Sistemas de Memria
13.1 Organizao de Sistemas de Memria . . . . . . . . . .
13.1.1 Planos de Memria . . . . . . . . . . . . . . . . .
13.1.2 Mapas de Memria . . . . . . . . . . . . . . . . .
13.1.3 Gerao dos Sinais de Controlo . . . . . . . . . .
13.2 Hierarquia de Memria . . . . . . . . . . . . . . . . . .
13.2.1 Caches . . . . . . . . . . . . . . . . . . . . . . . .
13.2.2 Memria Virtual . . . . . . . . . . . . . . . . . .
13.3 Organizao de Sistemas de Cache . . . . . . . . . . . .
13.3.1 Mapeamento de Dados em Caches . . . . . . . .
13.3.2 Blocos de Cache . . . . . . . . . . . . . . . . . . .
13.3.3 Polticas de Substituio . . . . . . . . . . . . . .
13.3.4 Polticas de Escrita . . . . . . . . . . . . . . . . .
13.3.5 Bits de Controlo . . . . . . . . . . . . . . . . . . .
13.4 Memria Virtual . . . . . . . . . . . . . . . . . . . . . .
13.4.1 Tabelas de Pginas . . . . . . . . . . . . . . . . .
13.4.2 Poltica de Substituio . . . . . . . . . . . . . .
13.4.3 Poltica de Escrita . . . . . . . . . . . . . . . . . .
13.4.4 Bits de Controlo . . . . . . . . . . . . . . . . . . .
13.4.5 Translation Lookaside Buffers . . . . . . . . . . . .
13.4.6 Interligao da Memria Virtual com as Caches
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
233
234
234
236
239
242
244
246
248
248
251
254
255
255
256
257
260
260
261
261
262
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
CONTEDO
267
268
268
270
272
272
274
277
279
280
280
286
287
288
291
293
294
294
303
309
311
312
312
312
312
312
312
312
312
312
312
312
312
312
312
312
312
312
312
Glossrio
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
313
112
CONTEDO
Captulo 9
114
Mais Abstracto
Sistema
Menos Detalhe
Transferncia
entre Registos
Porta Lgica
Transistor
Mais Concreto
Layout
Mais Detalhe
115
esconde os detalhes de implementao, permitindo que o projectista se concentre em conseguir a melhor soluo possvel a esse nvel.
At ao captulo anterior, toda a anlise se debruou sobre circuitos descritos
ao nvel da porta lgica. Este o nvel de abstraco intermdio, como se pode
observar na hierarquia da Figura 9.1. Referiu-se atrs que a realizao de portas
lgicas feita com o uso de transistores que, como se pode ver na figura,
um nvel de abstraco imediatamente abaixo. No entanto, para a definio
das tcnicas de projecto apresentadas, nunca foi necessrio saber em concreto
como que as portas lgicas iriam ser realizadas em termos de transistores.
Aps obtida uma especificao ao nvel de portas lgicas, o passo seguinte
convert-las para transistores e fazer as ligaes elctricas. Para uma dada tecnologia de fabrico de circuitos, a cada porta lgica corresponde um esquema
elctrico de interligao de transistores. No entanto, para alm deste mapeamento necessrio fazer o dimensionamento dos transistores de maneira a
garantir, por exemplo, determinados tempos de atraso e consumos de potncia.
Embora se possam realizar sistemas digitais com elementos discretos,
cada vez mais comum que a realizao dos sistemas digitais seja em termos
de circuito integrado. Neste caso, o passo final converter esta descrio a nvel de transistor, que no fundo uma descrio de um circuito elctrico, para
mscaras que so usadas directamente no fabrico de circuitos integrados, a que
se chama nvel de layout. Estas mscaras definem linhas por onde passam certo
tipos de elementos que constituem o circuito final. Por exemplo, as interliges
so normalmente realizadas por linhas de metal, podendo existir vrias camadas destas linhas e correspondendo a cada camada uma mscara. No caso da
tecnologia CMOS, os transistores so formados pelo cruzamento de uma linha de polisilcio por outra de dopagem de substracto, correspondendo a mais
duas mscaras diferentes. Tipicamente, na passagem do nvel de transistor
para o nvel de layout, o objectivo escolher o caminho de cada linha de forma
minimizar a rea total ocupada pelo circuito. Estes dois nveis de abstraco,
assim como o nvel de sistema, saem fora do mbito deste livro e portanto no
sero discutidos.
Neste captulo apresenta-se o nvel de transferncia entre registos, nvel
imediatamente acima do nvel de porta lgica. De acordo com a filosofia dos
nveis de abstraco, usam-se mdulos de complexidade mais elevada, mas
sem detalhar a forma como so construdos. Por exemplo, so utilizados directamente somadores sem haver a preocupao de como esses somadores sero
realizados em termos de portas lgicas.
De referir que, para a maior parte das operaes de projecto e optimizao
a cada nvel de abstraco, o projectista pode recorrer a ferramentas de sntese
de circuitos. A partir de uma descrio do circuito a um dado nvel, estas
ferramentas geram automaticamente o circuito correspondente num nvel de
abstraco mais baixo, optimizando-o tendo em conta um conjunto de parmetros que o projectista pode especificar. A rea de investigao de algoritmos de
sntese lgica uma rea de intensa actividade, mas este tambm um tema
que sai fora do mbito deste livro.
116
Entradas de
Controlo
Sadas de
Controlo
Palavra de
Controlo
Unidade de
Controlo
Bits de
Estado (flags)
Unidade de
Processamento
Resultados
Operandos
Figura 9.2: Estrutura de um sistema digital em termos de unidade de processamento e de unidade de controlo.
LD
LD
Dec
Zero
LD
LD
Reset
LD
P
(a)
(b)
Figura 9.3: Circuitos multiplicadores: (a) bloco combinatrio; (b) somas sucessivas.
cao. Na Seco 6.3 discutiu-se a realizao lgica de multiplicadores, nomeadamente o facto de serem mdulos complexos que requerem muito hardware.
Na Figura 9.3(a) apresentada a realizao directa para uma operao de
multiplicao P=A B. Uma alternativa trivial a este circuito realizar esta multiplicao atravs de somas sucessivas, somando A vezes o valor de B, conforme Figura 9.3(b). Assim, em vez de um mdulo multiplicador ser necessrio apenas um somador, mdulo significativamente mais simples. Para este
exemplo, o circuito da Figura 9.3(b) funciona como a sua unidade de processamento.
O preo a pagar pela simplificao do hardware do circuito a necessidade
de um mdulo adicional de controlo capaz de realizar a seguinte sequncia de
operaes:
1. colocar registo P a zero.
2. carregar em P a soma de P com B.
3. decrementar o registo A.
4. se o registo A no chegou a zero, voltar para 2.
Para facilitar estas operaes, os registos utilizados tm algumas funcionalidades adicionais. Assim, o registo A de facto um contador, com uma entrada de
controlo
para fazer a sua decrementao e uma sada de estado
que
fica activa quando este registo contm o valor 0. Por seu lado, o registo P tem
um sinal de controlo
que permite coloc-lo a zero.
Tendo disponveis estes sinais de controlo, a unidade de controlo ser um
circuito sequencial que gera a sequncia de sinais para realizar o algoritmo
apresentado atrs. Na Figura 9.4 apresenta-se este algoritmo sob a forma
de
um fluxograma, ao qual foram adicionados dois sinais. A entrada serve
para indicar quando se deve dar incio operao. A sada
indica quando
a operao terminou. Este sinal til porque o nmero de ciclos de relgio
necessrios para esta operao no fixo. Para cada operao de multiplicao
118
0
inicio
1
Reset P
Load P
Dec A
0
Zero A
1
fim
Figura
9.5: Unidade de processamento para realizar a operao
.
120
121
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 definir 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. Embora 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 unidades de controlo assentem em controladores micro-programados, estudados na
Seco 8.3.3.
122
R1
R2
.
ou
A primeira destas instrues ser realizada pelo circuito lgico da Figura 9.8.
Quando se do duas transferncias em simultneo, podem-se agrupar micro-operaes separando-as por vrgulas:
R5
n
+
R2
123
R1
R6
R3
n
x
R4
.
R2
2n
R9
,
poder por seu lado ser um valor constante ou um registo. Exemplos possveis
de micro-operaes sero:
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
R1
R2
.
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,
R1
T1
T2
T1
125
OE
OE
R2
LD
T2
R1
0
1
Sel MUX
LD
R0
(a)
R0
(b)
Como discutido na Seco 7.5.4, estes registos podem estar ligados atravs de
multiplexadores ou atravs de barramentos. Estas duas situaes tm a representao 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.
126
T0
fim
0
inicio
1
Ry=0
T1
0
0
Rx
Ry,Ry
Rx
Rx>=Ry
Rx
Rx-Ry
:
:
:
:
,
,
Rx Rx Ry
Rx Ry, Ry
127
,
Rx
128
1
Sel
MUX
n
LDx
LD
LDy
Rx
LD
Ry
Zy
n
n
A
A>=B
A-B
n
xMy
129
T0
fim
0
inicio
1
Zy
T1
LDx
1
xMy
0
LDy
Figura 9.17: Fluxograma da unidade de controlo para o mximo divisor comum tendo em vista a unidade de processamento da Figura 9.16.
xMy
LDy
Zy
LDx
D Q
inicio
fim
130
Clk
Estado
T0
T1
T1
T1
T1
T1
T1
T0
T0
Rx
54
54
18
36
18
18
18
18
Ry
36
36
36
18
18
18
Inicio
Fim
LDx
LDy
xMy
Zy
Figura
9.19: Diagrama
temporal para o clculo do mximo divisor comum entre
e
.
as funcionalidades bsicas, em termos de operaes quer aritmticas quer lgicas, associado a um conjunto de registos genricos. Ao circuito que realiza as
operaes chama-se Unidade Lgica e Aritmtica ou ULA (em ingls, Arithmetic
and Logic Unit ou ALU). O nmero, tipo e complexidade das micro-operaes
includas numa ULA pode variar grandemente dependendo do problema em
vista. Aplica-se aqui o princpio referido na Seco 9.2.2 de que possvel
simplificar a unidade de processamento por transferncia de alguma complexidade para a unidade de controlo. As operaes mais complexas so assim
realizadas por uma sequncia de micro-operaes disponveis numa unidade
de processamento mais simples.
A ULA trabalha normalmente junto com um banco de registos (ver Seco 7.5.4) para guardar os operandos, resultados das operaes e valores temporrios, necessrios quando uma operao complexa substituda por uma
sequncia de operaes mais simples. Tambm aqui pode haver uma grande
variao de caso para caso em termos do nmero de registos disponveis neste
banco.
Uma unidade de processamento deste tipo est representada na Figura 9.20.
Assume-se o caso mais geral, em que a ULA aceita 2 operandos e tem um
resultado nico. A palavra de controlo conter informao para a seleco de
quais os 2 registos que servem como operandos e qual o registo destino para
guardar o resultado. A especificao da micro-operao a realizar pela ULA
tambm parte da palavra de controlo. Por seu lado, a ULA gera um conjunto
de bits de estado que, tal como referido anteriormente, podem ser usados pela
unidade de controlo para tomar decises em termos de execuo dependendo
131
Banco
de
Registos
Palavra de
Controlo
Operandos
ULA
Bits de
Estado
Resultado
132
B
n
Unidade
Aritmtica
p
Palavra de
Controlo
Unidade
Lgica
q
Unidade de
Deslocamento
r
0 1 2 3
Sel MUX
n
Resultado
B
n
SelB
Y
Cout
+
Cout
133
Cin
2
Cin
SelC
134
00
01
10
11
Bn-1
B1
B0
G2
...
G0
1
0
...
Yn-1
Y1
Y0
(a)
(b)
Figura 9.23: Bloco combinatrio SelB (a) Descrio funcional. (b) Circuito
lgico.
00
01
10
11
0
1
G0
Cin
G1
C
(a)
(b)
Figura 9.24: Bloco combinatrio SelC (a) Descrio funcional. (b) Circuito
lgico.
000
001
010
011
100
101
110
111
1
0
1
0
0
1
0
1
135
Micro-Operao
soma
subtraco
soma com bit de transporte
subtraco com bit de transporte
decremento
incremento
decremento, se
incremento, se
136
Ai
Ai
Bi
Ai
MUX
Ri
3 SS
0 1
Bi
Ai
Bi
H0 H1
00
01
10
11
Micro-Operao
complemento
conjuno
disjuno
ou exclusivo
(a)
C
C
(b)
(c)
C
(d)
Figura 9.26: Tipos de deslocamento: (a) Deslocamento lgico; (b) Deslocamento aritmtico; (c) Rotao; (d) Rotao com transporte.
137
138
A0 An-1
An-2
3
S1
S0
J2
J1
J0
An-3
An-1
A0
A2
An-1
S MUX
S1
S0
MUX
...
S MUX
A1
MUX
S MUX
A n-1
A0
S MUX
1
S MUX
Rn-1
Rn-2
R1
R0
000
001
010
011
100
101
110
111
Micro-Operao
deslocamento lgico direita
deslocamento lgico esquerda
deslocamento aritmtico direita
deslocamento aritmtico esquerda
rotao direita
rotao esquerda
rotao direita com transporte
rotao esquerda com transporte
SHR
SHL
SHRA
SHLA
ROR
ROL
RORC
ROLC
00000
00001
00010
00011
00100
00101
00110
00111
01-00
01-01
01-10
01-11
10000
10001
10010
10011
10100
10101
10110
10111
11- - -
SHR
SHL
SHRA
SHLA
ROR
ROL
RORC
ROLC
139
Micro-Operao
soma
subtraco
soma com bit transporte
subtraco com bit transporte
decremento
incremento
decremento, se
incremento, se
complemento
conjuno
disjuno
ou exclusivo
deslocamento lgico direita
deslocamento lgico esquerda
deslocamento aritmtico direita
deslocamento aritmtico esquerda
rotao direita
rotao esquerda
rotao direita com transporte
rotao esquerda com transporte
transferncia
140
para controlar os sinais de seleco do multiplexador. Arbitrariamente definese que a combinao 00 selecciona a unidade aritmtica, a combinao 01 a
unidade lgica e 10 a unidade de deslocamento. A combinao
11 fica dispo
nvel, tendo-se optado por fazer seleccionar a entrada de forma a se fornecer
uma micro-operao que se limita a copiar um operando directamente para
a sada. A Tabela 9.4 apresenta as micro-operaes disponibilizadas por esta
ULA e qual a palavra de controlo que as define.
A forma como os bits de estado so actualizados depende de qual das unidades da ULA usada. Os bits zero ( ) e sinal ( ) so calculados de igual
forma para todas as unidades, de acordo com o definido na Seco 9.4.2. O bit
zero um NOR de todos os bits do resultado. Apesar de no ter muito significado para as micro-operaes lgicas, o bit de sinal sempre calculado devido
a ser simplesmente igual
ao bit mais significativo do resultado.
J o bit de transporte ( ) calculado para as unidades aritmtica e de deslocamento, e de forma diferente para estas. No casoda unidade aritmtica, este
bit o bit de transporte sada do somador, o sinal
da Figura 9.22. A forma
de clculo deste bit na unidade de deslocamento foi definida na Seco 9.4.5.
Tipicamente o bit que sai do operando devido operao de deslocamento.
Por ltimo, o bit excesso ( ) s tem sentido nas micro-operaes da unidade aritmtica e nas micro-operaes de deslocamento aritmtico da unidade
de deslocamento. Nesta ltima, foi tambm explicado na Seco 9.4.5 que o
bit excesso fica a 1 quando uma operao de deslocamento aritmtico provoca
uma mudana do bit de sinal. Para a unidade aritmtica, este bit calculado
atravs de um EXOR entre os dois bits de transporte mais significativos do somador da Figura 9.22, como explicado no Captulo 6.
Assume-se que os bits de transporte e excesso no so definidos quando a
micro-operao executada utiliza uma unidade em que eles no so calculados.
Naturalmente, est aqui includa a micro-operao de transferncia, ,
pois no utiliza nenhuma destas unidades. Na prtica, uma possibilidade, to
boa como qualquer outra, assumir que estes ficam a zero.
O hardware necessrio gerao destes bits de estado e sua seleco
sada da ALU no est representado explicitamente nas figuras desta seco
apenas para as no sobrecarregar.
141
:
. :
,
1.
2.
3.
4.
5.
6.
7.
8.
R1 R1 R2,
,
,
R3 R1 R2, ,
R1 R2,
,
R2 R3,
,
. :
. :
:
:
:
,
,
operao ULA
reg A
reg B
dest
O nmero de estados no fluxograma da Figura 9.29 cinco, o que corresponde ao nmero de posies na ROM de controlo, pelo que o nmero de bits
para os endereos de controlo ser trs. Pode-se verificar neste fluxograma
pode ter 3 estados seguintes diferentes. Portanto, na microque o estado
instruo tero de existir pelo menos dois endereos seguintes (assumindo que
o terceiro pode ser obtido por incremento do CAR). Outra consequncia desta
observao que para decidir entre 3 endereos so necessrios 2 bits para a
escolha do endereo seguinte a carregar
no CAR. Por ltimo, as condies de
no estado
salto
so:
o
sinal
de
controlo
; os bits de estado e em
; o estado seguinte em e
(sem salto); salto incondicional em
. Para
cobrir estas quatro hipteses so necessrios 2 bits de controlo para seleccionar
a condio de salto. Finalmente, ter que existir um bit para a sada de controlo
142
T0
fim
0
inicio
1
T1
R1
R1-R2
1
Z
0
0
N
1
R3
T2
R1+R2
T3
R1
R2
T4
R2
R3
18
ES0
17
16
15
ES1
14
13
12
SEL
11
10
operao ULA
reg A
reg B
dest
143
destino
reg B
reg A
2
Op ULA
5
fim
SEL
2
3
3
2
2
3
+1
2
1
MUX
C
C
A
R
ROM de
Controlo
19
0 Sel
ES0
ES1
N
Z
inicio
0
1
0
0
0
3
2
MUX
S
1
0
Sel
e
. Se:
.
.
Falta agora definir o micro-programa que realiza o fluxograma da Figura 9.29 (as posies sublinhadas indicam valores que so de facto indiferenas):
Posio
ROM
0:
1:
2:
3:
4:
ES0
ES1
00
01
00
01
SEL
10
11
01
01
00
1
0
0
0
0
op
ULA
reg
A
reg
B
00001
00000
11000
11000
01
01
10
11
10
10
reg
dest
00
01
11
01
10
Neste micro-programa existe uma correspondncia entre a posio de endereo da ROM de controlo e o ndice do estado do fluxograma. Assim:
Posio 0:
1, : CAR 0, : CAR CAR+1
Neste estado a unidade de controlo
est constantemente a carregar o CAR
com 0 at que a entrada venha a 1, altura em que se deixa incrementar o CAR. Para isso, o campo SEL tem que ter o valor 10 de forma
144
Captulo 10
Arquitectura de um
Computador
Embora um sistema digital para qualquer funo especfica possa ser concebido de raiz interligando registos e blocos funcionais, usando as tcnicas estudadas 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 sequncia de instrues guardadas em memria. Atravs desta sequncia de instrues, o computador instrudo para executar operaes elementares de manipulao 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 circuito 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 manipulao de dados que so necessrias para a execuo de tarefas de processamento de dados, por mais complexas que estas sejam.
146
147
Computer.
148
tem um certo nmero de caractersticas comuns. A UCP constituda por circuitos combinatrios que permitem efectuar operaes lgicas e aritmticas, e
por registos que permitem guardar os dados e os resultados dessas operaes.
Nos computadores modernos, a sequncia de instrues a executar guardada em memria. Segundo o modelo de Von Neumann, esta memria serve
tambm para guardar os dados, quer os de entrada no programa quer os que
resultam da execuo do mesmo.
As instrues esto guardadas sequencialmente em memria, e so, de uma
forma geral, executadas pelo ordem em que se encontram. No entanto, existem tambm instrues que alteram a ordem de execuo. Por exemplo, uma
dada instruo poder especificar que a prxima instruo a ser executada a
instruo guardada na posio de memria AAF0h.
A memria encontra-se ligada unidade central de processamento atravs
de dois barramentos, tal como est descrito na Figura 10.1.
UNIDADE
CENTRAL DE
PROCESSAMENTO
ENDEREOS
E CONTROLO
DADOS
MEMORIA
149
150
UNIDADE
CENTRAL DE
MEMRIA
DADOS
ENDEREOS E CONTROLO
PROCESSAMENTO
PORTO SRIE
PORTO PARALELO
PLACA GRFICA
151
CABO VDEO
LINHA PARALELA
LINHA SRIE
152
NVEL 5
APLICAO
NVEL 4
PROGRAMA EM
LINGUAGEM DE ALTO NVEL
NVEL 3
PROGRAMA EM
LINGUAGEM ASSEMBLY
NVEL 2
PROGRAMA EM
LINGUAGEM MQUINA
PROGRAMADOR
COMPILADOR
ASSEMBLER
NVEL 1
NVEL 0
MICRO-PROGRAMA EM LINGUAGEM
DE TRANSFERNCIA DE REGISTOS
PROJECTISTAS DO
PROCESSADOR
PROJECTISTAS DE
SISTEMAS DIGITAIS
SISTEMA DIGITAL
153
154
10.7 Sumrio
Este captulo introduz o conceito de computador como um sistema digital programvel 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 unidade 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 computador pode ser conceptualizado, nveis estes que vo desde o nvel da aplicao at ao nvel da transferncia de dados entre registos de um sistema digital.
Captulo 11
Conjuntos de Instrues
Este captulo dedicado ao estudo de algumas alternativas possveis para a
arquitectura do conjunto de instrues de um processador. Como caso de estudo
concreto, utiliza-se o conjunto de instrues do processador P3, um processador de 16 bits, micro-programado, concebido unicamente com fins didcticos,
mas que exibe muitas das caractersticas de processadores comerciais simples.
Para cada processador ou famlia de processadores definido um conjunto
de instrues. A escolha de quais as instrues que devem ser includas no
conjunto de instrues de um processador representa um problema complexo
e intimamente relacionado com as funcionalidades pretendidas e a tecnologia
utilizada. Este problema resolvido por equipas de projectistas, os arquitectos do conjunto de instrues, aps efectuarem uma anlise das alternativas
existentes e das limitaes impostas pelas especificaes.
156
Endereo
Base 2
0001000000000000
0001000000000001
0001000000000010
0001000000000011
0001000000000100
0001000000000101
0001000000000110
0001000000000111
0001000000001000
Base 16
1000
1001
1002
1003
1004
1005
1006
1007
1008
Valor
Base 2
1010111001110000
0000000010100000
1000011001110000
0000000010110000
1000011001110000
0000000010110001
0100000000000001
1010110001110000
1111000000000000
Base 16
AE70
00A0
8670
00B0
8670
00B1
4001
AC70
F000
Cdigo assembly
MOV R1, M[00A0h]
ADD
R1, M[00B0h]
ADD
R1, M[00B1h]
NEG
MOV
R1
M[F000h], R1
Cdigo mquina
AE70
00A0
8670
00B0
8670
00B1
4070
AC70
F000
1000h
EQU
EQU
EQU
EQU
00A0h
00B0h
00B1h
F000h
MOV
ADD
ADD
NEG
MOV
R1, M[N1]
R1, M[N2]
R1, M[N3]
R1
M[N4], R1
157
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 instruo 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 semelhantes 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 efectuada por um programa chamado assembler. O assembler aceita um programa escrito 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. Programas escritos nestas linguagens tm de ser traduzidos para linguagem assembly e da para linguagem mquina, antes de serem executados pelo processador. Este processo de traduo muito mais complexo que o referido anteriormente, e efectuado por programas chamados compiladores. Em geral, a cada
instruo de uma linguagem de alto nvel correspondem vrias instrues assembly. Em alguns casos, uma linguagem de alto nvel poder ser interpretada
directamente por um programa, o interpretador, no havendo assim necessidade de compilao, mas conduzindo a uma execuo do programa consideravelmente mais lenta. Linguagens que, embora possam ser compiladas, so
muitas vezes utilizadas desta forma so o LISP e o Scheme, para as quais existem interpretadores muito eficientes. Tambm o Java por vezes usado com
um interpretador, embora o programa original seja, neste caso, traduzido para
158
159
onde se encontra a prxima instruo a ser executada. Tipicamente, as instrues de transferncia e de manipulao de dados incrementam o contador de
programa para o valor correspondente posio de memria onde se inicia a
instruo que se segue na sequncia normal de execuo, o que faz com que
essa instruo seja a prxima a ser executada.
As instrues de controlo permitem alterar a ordem de execuo de instrues, incondicionalmente ou, em alternativa, apenas se a operao anterior
produzir um resultado que satisfaa certas condies. Mais especificamente,
as instrues de controlo permitem especificar qual o endereo da prxima
instruo a executar, atravs da alterao do registo contador de programa, PC.
Estas instrues so estudadas em mais detalhe na Seco 11.5. Este tipo de
instrues permite tomar decises em funo dos resultados de clculos anteriores ou de acontecimentos externos, sendo portanto fundamentais para o
funcionamento correcto de qualquer programa.
Um exemplo de uma instruo de controlo no processador P3 a instruo
JMP. Por exemplo, a instruo JMP 00CCh faz com que a prxima instruo a
ser executada seja a instruo na posio de memria 00CCh.
A combinao de bits que corresponde a cada instruo codifica, de forma
nica, quais as operaes a executar, quais os operandos e qual a localizao
onde deve ser guardado o resultado. Assim, cada instruo mquina contm,
necessariamente, trs componentes, que se reflectem na estrutura da instruo:
O cdigo de operao (operation code ou opcode), que especifica qual a operao a executar. Por exemplo, no processador P3, o cdigo para somar
dois nmeros representado pela combinao de bits
.
A especificao dos operandos aos quais deve ser aplicada a operao.
Por exemplo, se num processador com 8 registos se pretender somar o
registo R1 com o registo R2, seria possvel usar 6 bits (3 + 3) para repre
sentar os dois operandos, o que corresponderia sequncia
. O
nmero de operandos de cada instruo varia com o tipo de instruo e
com o processador, desde processadores em que as instrues no tm
operandos explcitos (todos os operandos so guardados em localizaes
pr-estabelecidas) at processadores em que as instrues aceitam um,
dois ou trs operandos.
A especificao da localizao (registo ou memria) onde dever ser guardado o resultado da operao. Por exemplo, se se pretender guardar o
resultado no registo R1, num processador com 8 registos, a sequncia de
bits
poder ser usada para o indicar.
A ttulo de exemplo, no processador P3, a instruo ADD R1,M[N2], usada
no exemplo da Seco 11.1, codificada com duas palavras de 16 bits. A pri
meira palavra contm o cdigo de operao (
) nos bits mais significativos. Contm ainda, nos trs bits menos significativos, o nmero do registo que
deve ser usado como primeiro operando e como destino do resultado (
).
Os restantes bits indicam, usando uma codificao que ser discutida na Seco 11.7.3, que o segundo operando deve ser obtido a partir da posio de memria cujo endereo est guardado na segunda palavra desta instruo. Assim,
esta instruo codificada com as palavras 8670h e 00B0h, que correspondem
aos valores em binrio 1000011001110000 e 0000000010110000.
160
161
162
163
Operao
op RX
op M[RX]
op W
op M[W]
op M[RX+W]
op M[PC+W]
op M[SP+W]
op M[M[W]]
op M[M[RX]]
164
ltimos, que no so suportados por este processador. No entanto, no processador P3, apenas um dos operandos pode usar um dos modos mais complexos,
enquanto que o outro operando deve usar necessariamente o modo de endereamento por registo, opo esta muito comum em processadores comerciais.
Diferentes processadores comerciais exibem diferentes filosofias no que respeita aos modos de endereamento suportados e forma como o endereo
dos operandos da instruo obtido a partir dos dados codificados na mesma.
Em particular, a utilizao do conceito de memria segmentada, utilizada, por
exemplo, nos processadores da Intel, implica a existncia de registos que so
usados implicitamente no processo de endereamento. Estes e outros mecanismos de endereamento sero estudados em mais detalhe no Captulo 13.
POP R3
0055h
FF03h
FF02h
00CCh
00CCh
00CCh
FF01h
00BBh
00BBh
00BBh
FF00h
00AAh
00AAh
00AAh
FF02h
FF03h
FF02h
SP
SP
SP
165
166
Resultado
Modo Reg Ender
2
3
16
Operando 1
Modo Reg Ender
2
3
16
Operando 2
Modo Reg Ender
2
3
16
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:
ADD
ADD
NEG
Direco
1
Modo
2
Reg
3
Reg
3
Ender
16
Figura 11.3: Codificao de uma instruo em que um dos operandos deve ser
endereado por registo.
de memria. Como contrapartida, j no possvel representar uma instru-
168
R1, M[N1]
R1, M[N2]
R1, M[N3]
R1
M[N4], R1
Reg
3
Reg
3
Reg
3
Reg
3
Ender
16
169
R1, M[N1]
R2, M[N2]
R3, M[N3]
R4, R1, R2
R4, R4, R3
R4, R4
M[N4], R4
170
INC
BR
R1
Etiq1
Etiq:
DEC
BR.Z
MOV
ADD
R1
Etiq
R1, 55AAh
R2,R1
171
Etiq1:
Etiq2:
MOV
SUB
BR.Z
BR.N
NOP
NOP
R1, 0003h
R1, 0004h
Etiq1
Etiq2
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 obtido 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 geral, 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 diversos 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 directamente 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 usados menos bits que os necessrios para descrever um endereo arbitrrio em
memria, uma vez que muitos saltos so para posies de memria relativamente 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 instruo 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 especificao, cabendo ao assembler escolher, de forma transparente para o programador, 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
173
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 interrupo.
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 amostra, 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 impe 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 instrues deve ser interrompida e que o controlo deve ser transferido para uma
174
subrotina de atendimento. Em sistemas complexos, este dispositivo geralmente um controlador de interrupes, que centraliza os pedidos provenientes
de diversas fontes, os codifica, e os envia para o processador, de acordo com as
suas prioridades.
Embora o mecanismo exacto atravs do qual as interrupes so sinalizadas, identificadas e atendidas varie de processador para processador, a seguinte descrio de alto nvel aplica-se maioria dos processadores comerciais
e ao P3.
Em primeiro lugar, cada processador disponibiliza uma ou mais linhas de
interrupo, que so activadas pelos dispositivos exteriores. O nmero de linhas no corresponde, porm, ao nmero total de origens de interrupes possveis que , em geral, muito superior. Isto possvel porque, aps ter recebido
indicao que a interrupo vai ser atendida, o dispositivo utiliza um dos barramentos exteriores para identificar qual a interrupo que foi activada. Desta
forma possvel, por exemplo, usar apenas uma linha de interrupo e 8 linhas
do barramento de dados para assinalar 256 tipos diferentes de interrupo.
Aps receber a interrupo e o nmero que a identifica, o processador acede
a uma tabela que indica qual o endereo da subrotina que deve ser usada para
atender o pedido. O controlo de execuo ento transferido para esta subrotina, aps salvaguarda do contedo do contador do programa e de outra
informao sobre o estado do processador. Esta informao inclui necessariamente o valor dos bits de estado do processador, mas pode tambm incluir o
valor de outros registos internos cujo contedo possa ser destrudo pela subrotina de interrupo. A salvaguarda desta informao necessria para que a
execuo possa continuar, sem alteraes, na instruo seguinte que estava a
ser executada quando a interrupo foi recebida.
Repare-se que, ao contrrio das chamadas a subrotinas, as interrupes externas ocorrem em qualquer momento sem que o programador o possa prever.
Assim, as interrupes podem surgir em qualquer instante, por exemplo entre
a execuo de uma instruo aritmtica e uma instruo de salto condicional
que testa o resultado dessa instruo.
No processador P3, como na maioria dos outros processadores, o programador pode actuar um bit de estado por forma a impedir que as interrupes
sejam atendidas. Isto pode ser necessrio em zonas de cdigo onde a ocorrncia de uma interrupo pudesse causar comportamentos indesejados.
Existem numerosas variaes a este modo de operao e diversos detalhes
de funcionamento que variam de processador para processador, mas o princpio geral de funcionamento comum a todos eles. O mecanismo de interrupes do processador P3 ser estudado em mais detalhe quando forem descritas
as instrues que controlam o atendimento das mesmas.
Uma funcionalidade tambm existente em muitos processadores consiste
em disponibilizar uma instruo (por exemplo, INT ou TRAP) que aceita um
argumento (o nmero da interrupo) e que faz com que o processador se comporte exactamente como se tivesse recebido uma interrupo. Embora esta instruo possa, em princpio, ser substituda por uma instruo de chamada a
subrotina, algumas diferenas nos detalhes de funcionamento so suficientes
para justificar a sua existncia como uma instruo separada. Este tipo de instrues tambm til na fase de depurao de um programa, em que as rotinas
de interrupo podem ser usadas para analisar o valor de diversos registos e
variveis internas que podem no ser acessveis de outra forma.
175
Em geral, as interrupes podem ter 3 origens distintas: podem ser externas, causadas pelo hardware; podem ser internas, despoletadas por uma instruo de TRAP; ou, em processadores mais complexos que o P3, podem ser
causadas por excepes, como por exemplo um acesso incorrecto a memria
ou a execuo de uma diviso por zero.
176
Lgicas
Deslocamento
NEG
INC
DEC
ADD
ADDC
SUB
SUBB
CMP
MUL
DIV
COM
AND
OR
XOR
TEST
SHR
SHL
SHRA
SHLA
ROR
ROL
RORC
ROLC
Controlo
BR
BR.cond
JMP
JMP.cond
CALL
CALL.cond
RET
RETN
RTI
INT
Transferncia
Genricas
MOV
MVBH
MVBL
XCH
PUSH
POP
NOP
ENI
DSI
STC
CLC
CMC
Mnemnica
NEG
INC
DEC
ADD
ADDC
SUB
SUBB
CMP
MUL
DIV
Exemplo
NEG R1
INC M[R2]
DEC M[R3+A5A5h]
ADD R3, M[R5+4]
ADD R3, M[R6]
SUB R3, M[R5+4]
SUBB R1, R2
CMP R1,R2
MUL R3,R4
DIV R3,R4
177
R2, R4
R1, R3
178
Loop:
MOV
INC
CMP
BR.NZ
R2, 0
R2
R1, M[R2]
Loop
Mnemnica
AND
OR
XOR
COM
TEST
Exemplo
AND R1, M[R3]
OR R1, 00FFh
XOR M[R1], R2
COM M[R2+4]
TEST R5, M[R4]
179
Mnemnica
SHR
SHL
SHRA
SHLA
ROR
ROL
RORC
ROLC
Exemplo
SHR R1, 4
SHL M[R1], 2
SHRA M[R1], 2
SHLA M[R2], 4
ROR R4, 15
ROL R4, 1
RORC R4, 15
ROLC R2, 15
180
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.
Mnemnica
BR
BR.cond
JMP
JMP.cond
CALL
CALL.cond
RET
RETN
INT
RTI
Exemplo
BR Pos1
BR.cond R3
JMP M[R3+1]
JMP.cond Rot1
CALL Rotina1
CALL.cond Rot2
RET
RETN 4
INT 55
RTI
Mnemnica
Z
NZ
C
NC
N
NN
O
NO
P
NP
I
NI
181
Descrio
ltima operao deu resultado zero
ltima operao deu resultado no zero
ltima operao gerou transporte
ltima operao no gerou transporte
ltima operao deu resultado negativo
ltima operao deu resultado no negativo
ltima operao gerou excesso (overflow)
ltima operao no gerou excesso (overflow)
ltima operao deu resultado positivo
ltima operao no deu resultado positivo
Existe uma interrupo pendente
No existe interrupo pendente
182
Mnemnica
MOV
MVBL
MVBH
XCH
PUSH
POP
Exemplo
MOV R1, M[R2]
MVBL M[Pos1], R3
MVBL R3, R4
XCH R1, M[R2]
PUSH R1
POP M[R5+4]
183
Mnemnica
ENI
DSI
STC
CLC
CMC
NOP
Ciclo:
MOV
MOV
ADD
DEC
BR.NN
R1, 9
R2, R0
R2, M[Start+R1]
R1
Ciclo
; Limpa o registo R2
; Continua se R1>=0
184
Ciclo:
MOV
MOV
ADD
INC
CMP
BR.NZ
R1, R0
R2, R0
R2, M[Start+R1]
R1
R1, 10
Ciclo
; Limpa o registo R2
; Compara R1 com 10
; Continua se R1-10 <> 0
14
13
12
OPCODE
11
10
7 6 5 4 3 2 1
Descrio dos Operandos ?
W : Operando imediato ?
Figura 11.7: Formato genrico das instrues do processador P3.
da primeira palavra de cada instruo especificam qual o cdigo da operao
a executar (em ingls, operation code, ou mais simplesmente, opcode). A lista
completa dos cdigos de operao para o processador P3 encontra-se na Tabela 11.12. As instrues que no tm operandos nem parmetros apenas usam
o campo que especifica o cdigo de operao. Nas instrues que tm um
operando, existe, na descrio dos operandos, um campo
com dois bits, que
controla o modo de endereamento usado, de acordo com a Tabela 11.13.
Cdigo
000000
000001
000010
000011
000100
000101
000110
000111
001000
001001
010000
010001
010010
010011
010100
010101
011000
011001
011010
011011
011100
011101
011110
011111
Mnemnica
CMP
ADD
ADDC
SUB
SUBB
MUL
DIV
TEST
AND
OR
XOR
MOV
MVBH
MVBL
XCH
JMP
JMP.cond
CALL
CALL.cond
BR
BR.cond
185
Cdigo
100000
100001
100010
100011
100100
100101
100110
100111
101000
101001
101010
101011
101100
101101
101110
110000
110001
110010
110011
111000
111001
Endereamento
Por registo
Por registo indirecto
Imediato
Indexado, directo, relativo ou baseado
00
01
10
11
Operao
op = RX
op = M[RX]
op = W
op = M[RX+W]
186
IR1
X
W?
IR1
X
W?
187
IR2
IR1
X
W?
IR1
X
W?
e so interpretados
Os campos
da mesma forma do que nas instrues de um operando. O campo
, quando necessrio, codificado de
acordo com a Tabela 11.14.
As instrues de controlo BR e BR.cond so codificadas de acordo com o
esquema da Figura 11.14. O valor do campo
especifica um valor,
relativo ao PC. Um valor de
igual a 0 equivalente instruo de
NOP.
Como discutido na Seco 11.5.1, esta instruo tem a vantagem de ocupar sempre apenas uma posio de memria. A limitao que, como campo
tem apenas 6 bits, os saltos relativos s so possveis at 32 posies
de memria atrs e 31 posies de memria frente da posio actual do PC.
188
Condio
Zero
No zero
Transporte
No transporte
Negativo
No negativo
Excesso
No excesso
Positivo
No positivo
Interrupo
No interrupo
Mnemnica
Z
NZ
C
NC
N
NN
O
NO
P
NP
I
NI
Cdigo
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
OFFSET
(Tabela 11.12).
Isto conduz a que a codificao desta instruo seja conseguida com uma s pa
lavra que obtida por concatenao destes valores, ou seja,
o que equivalente a C443h.
Considere-se agora a instruo ADD R1,M[R7+00A0h], ligeiramente mais
complexa, que tem dois operandos e usa um modo de endereamento diferente. A codificao desta instruo obtida considerando que:
189
O valor do campo
, especificando o registo usado na definio do primeiro operando.
O valor do campo
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 Seco 11.1, que contm o cdigo em linguagem mquina do P3 e o correspondente cdigo em assembly.
190
start
ORIG
EQU
; Procura:
;
; Entradas:
; Sadas:
Procura:
CProcura:
MOV
CMP
BR.Z
INC
BR
RET
FimProc:
0A00h
0F00h
R2, start
R1, M[R2]
FimProc
R2
CProcura
;
;
;
;
;
;
Inicializa R2
Compara os valores
Termina se encontrou
Incrementa o ponteiro
Prxima iterao
R2 contm o resultado
Programa 11.12: Programa em Assembly que localiza a primeira posio de memria cujo contedo igual ao do registo R1.
Esta constante pode ser usada mais tarde em qualquer posio onde for necessrio usar o valor 0F00h. As definies de constantes devem vir no incio do
programa, para que possam ser facilmente alteradas. Os nomes das constantes 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 actualizado. 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 comentrio 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 correspondam a estas directivas. O resultado das directivas s visvel quando se analisa 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 memria. 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 subrotina Procura poder ser efectuada atravs da instruo CALL Procura,
no necessitando o programador de conhecer o endereo onde esta rotina ir
Instruo
1010111010100000b
0000111100000000b
1000001001010010b
1110010000000010b
0100010000000010b
1110000000111100b
0001100000000000b
AEA0h
0F00h
8252h
E402h
4402h
E03Ch
1800h
191
Mnemnica
MOV R2, start
CMP R1,M[R2]
BR.Z FimProc
INC R2
BR CProcura
RET
ficar localizada.
O assembler do processador P3 aceita vrias directivas, descritas na Tabela 11.16. Alm das directivas ORIG e EQU, j usadas, o assembler do processador
ORIG
EQU
WORD
STR
TAB
WORD
WORD
STR
TAB
0055h
0011h
Hel,lo
3
192
Instruo
0055h
0011h
0048h
0065h
006Ch
006Ch
006Fh
0000h
0000h
0000h
193
mais simples, sem a preocupao de conhecer detalhes relacionados com a linguagem de programao.
194
L Texto
Processa Texto
Escreve Texto
195
Inicializa Apontador
L Caracter
Sim
Fim Texto ?
No
Copia para Memria
Incrementa
Apontador
Sim
Max. Car ?
No
FimLeTexto:
196
; Ciclo de espera
; L o caracter
Inicializa Apontador
Incrementa
Apontador
Sim
No
Fim Texto ?
Sim
Espao ?
No
Torna Maiscula
Torna Minscula
Incrementa
Apontador
No
Fim Texto ?
Sim
Espao ?
No
Sim
197
CicloExt:
Incr1:
Incr2:
FimProcTexto:
198
Inicializa Apontador
Imprime Caracter
Incrementa
Apontador
Sim
Fim Texto ?
No
Imprime:
Entradas:
Sadas:
Efeitos:
Imprime:
CicloImp:
R3, R0
R4, M[R1]
M[out_port], R4
R1
R3
R3, R2
CicloImp
; inicializa R3
; escreve caracter
; verifica terminou
e subrotinas.
Sumrio
Neste captulo estudaram-se algumas das possveis alternativas para a arquitectura do conjunto de instrues de micro-processadores e apresentou-se o
conjunto de instrues do processador didctico P3. Este conjunto de instrues, tpico de processadores simples de segunda gerao, inclui instrues de
controlo, transferncia e manipulao de dados. Foi tambm descrita a lin-
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
Inicio:
ORIG
MOV
MOV
CALL
CALL
MOV
CALL
BR
0000h
R1, F000h
SP, R1
LeTexto
ProcTexto
R1, Texto
Imprime
Inicio
; Inicializa a pilha
200
Captulo 12
Estrutura Interna de um
Processador
No captulo anterior definiu-se a arquitectura do conjunto de instrues do
processador P3. A arquitectura do conjunto de instrues define a interface
visvel para o programador, especificando as instrues que esto disponveis,
quais os registos internos, os modos de acesso memria e outras caractersticas relevantes do processador.
Para uma dada arquitectura do conjunto de instrues, existem muitas realizaes possveis para a estrutura do processador. As numerosas realizaes
possveis resultam do grande nmero de escolhas que esto disponveis ao
projectista de sistemas digitais e implicam diferentes compromissos entre o nmero de ciclos de relgio necessrios para executar cada instruo, a frequncia
mxima de relgio possvel para o sistema e a rea ocupada em silcio para a
realizao fsica do processador.
Este captulo descreve em detalhe uma realizao particular do processador
P3 e descreve os diversos compromissos que so inerentes s escolhas tomadas,
focando, quando tal julgado oportuno, as alternativas mais bvias e as razes
pelas quais as mesmas foram preteridas em detrimento da implementao descrita.
Como qualquer circuito complexo, til analisar o processador P3 considerando separadamente duas componentes principais, tal como foi estudado no
Captulo 9: o circuito de dados e o circuito de controlo.
No circuito de dados encontra-se toda a lgica regular que usada para armazenar e processar dados do utilizador, lgica esta que opera, de uma forma
geral, sobre conjuntos de dados organizados em octetos e palavras. Fazem
parte do circuito de dados o banco de registos, a unidade lgica e aritmtica,
os circuitos de acesso a memria e portos de entrada/sada e ainda os barramentos de interligao internos.
O circuito de controlo gera os sinais que controlam o circuito de dados, por
forma a que este execute a sequncia de operaes que so necessrias para
carregar e executar cada instruo assembly, tendo em conta o estado do circuito
de dados.
201
202
Banco de
Registos
Reset
16
16
0
MA
MUXA
16
0
MB
MUXB
WM
16
FIN
LF
16
FR
CULA
ULA
FM
BUS B
16
BUS A
16
Estado
Memria
Endereo
Escrita de dados
Leitura de dados
16
RE
Registo de Estado
FOUT
5
000h
11
16
MD
2
MUXD
12
CONST
LI
RI
0000
203
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 ligaes 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 controlo, sendo o funcionamento de cada um dos blocos descrito em detalhe nas
seces seguintes.
204
Descrio
Constante 0
Registo de uso geral
Registo de uso geral
Registo de uso geral
Registo de uso geral
Registo de uso geral
Registo de uso geral
Registo de uso geral
Registo de uso restrito
Registo de uso restrito
Registo de uso restrito
Operando (SD)
Endereo destino (EA)
Resultado (RD)
Apontador da pilha (SP)
Contador programa (PC)
B
n
Unidade
Aritmtica
p
Palavra de
Controlo
Unidade
Lgica
q
Unidade de
Deslocamento
r
0 1 2 3
Sel MUX
n
Resultado
205
FM 3
FM 2
FM 1
FM 0
206
FIN
FR
4
LF
ZR
0 1
MUX
FM 3
LF
LD
CR
LF
LF
E
0 1
MUX
FM 2
LD
LF
OR
0 1
MUX
FM 1
LD
0 1
MUX
LF
FM 0
LD
LF
Z
NR
LD
LF
C
LF
N
FOUT
# bits
1
4
4
1
1
2
1
1
1
1
4
5
12
207
Funo
Inicializa o contedo dos registos a
Controla os portos A e D do banco de registos
Controla o porto B do banco de registos
Controlo do multiplexador A
Controlo do multiplexador B
Controlo do multiplexador D
Escrita no banco de registos
Escrita em memria
Carrega os bits de estado
Carrega o registo de instruo
Controla a actualizao dos bits de estado
Controla operao a executar na ULA
Valor de constante numrica
e
Em primeiro lugar, para que
o banco de
registos coloque nos portos
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 .
chePara que os valores presentes nos portos e do banco de registos
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,
dever tomar o valor
tira-se que
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
, activando 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
R3 R3+R7
0
0011
0111
0
0
00
1
0
0
0
1100
00000
xxxxxxxxxxxx
R3 M[R5]
0
0011
0101
1
x
01
1
0
0
0
0000
xxxxx
xxxxxxxxxxxx
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].
209
CIRCUITO
DE
MAPEAMENTO
TESTE
CONTROLO
DO
BANCO
DE
REGISTOS
DE
CONDIES
MICRO
SEQUENCIADOR
MEMRIA DE
CONTROLO
MICRO-INSTRUO
210
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9
M5
S
R
1
S
R
2
I
A
K
FM
S
R
1
S
R
2
L
S
MCOND
CALU
M
A
M
B
M
2
M
R
B
RB
MD
M
A
D
RAD
MD
M
A
D
RAD
M5
C
C
L
I
L
F
CONST/NA
W
R
211
16
WR
SelAD
SelB
Banco de
Registos
Reset
16
16
0
MA
MUXA
16
0
MB
WM
MUXB
Endereo
Escrita de dados
16
FM
BUS A
BUS B
16
FIN
ULA
Leitura de dados
16
RE
FR
CULA
5
16
F
LF
16
Memria
Estado
Registo de Estado
FOUT
5
000h
11
16
CONST
12
MD
2
MUXD
4
0000
LI
F
RI
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
sequenciador pode, em cada ciclo de relgio, executar uma das seguintes operaes, 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 microEND A
9
END B
F
SBR
LS
9
COND
MUX4
1
M5
MUX5
CAR
9
+1
NA
9
ENDEREO
DA MEMRIA
DE CONTROLO
= : CAR incrementado se
for , e carregado com o valor
de
(o endereo da memria de controlo para onde se deve saltar), se
213
=
: CAR carregado com o valor contido em SBR, sendo assim
executado um retorno de micro-rotina.
=
: CAR carregado com o valor especificado em
unidade de mapeamento.
=
: CAR carregado com o valor especificado em
unidade de mapeamento.
pela
pela
EINT
INT
E
RI15
RI14
S
M0
M1
CC
COND
MCOND
INT
MUX6
RI6
MUXCOND
214
6
7
3
RI97
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 endereamento 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 multiplexador 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 condio 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
215
condio correcta. Isto leva a que o teste de uma destas condies seja efectuado 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
,
e o endereo de
formato esto disponveis os campos
salto
.
Caso a micro-instruo seja do tipo , o valor de
colocado a e o
micro-sequenciador incrementa sempre o contador de micro-programa.
216
SR1
OPCODE
SR2
MUX1
MEMRIA
A
9
END A
MEMRIA
B
9
END B
SR1
0
1
-
S
0
1
217
Endereo seleccionado
Micro-rotina de leitura de um operando
Micro-rotina de escrita do resultado
Micro-rotina de leitura de dois operandos para S=0
Micro-rotina de leitura de dois operandos para S=1
0000
0100
1000
1100
0000
0001
0010
0011
218
IR2
RI15
M2
MUX3
RAD
4
MAD
WBR
4
1
M2
MUX2
RB
4
0
MUXAD
MRB
MUXRB
SelAD
SelB
RI
0
1
1
1
1
S
0
0
1
1
M2
0
1
0
1
WBR
IR1
IR1
IR2
IR2
IR1
219
Valor seleccionado
Registo usado pelo primeiro ou nico operando
Registo usado pelo segundo operando, quando exista
Valor
0
00
1
0
0
0
0000
11XXX
220
REGISTO DE INSTRUO
IR2
0
SR2
MUX1
EINT
E
RI15
M0
RI14
M1
2
3
4
SelAD
4
RAD
F
SBR
MAD
9
RI15
MCOND
MUX6
LS
COND
INT
RI6
4
4
MUXCOND
c
INT
END A
CC
MRB
WBR
0
END B
RB
M2
0
MEMRIA
B
MUX3
MEMRIA
A
SelB
4
IR1
MUXRB
MUXAD
S
SR1
MUX2
OP
MUX4
1
M5
MUX5
M2 S
CAR
+1
NA
3
RI97
MEMRIA
Controlo
32
MICROINSTRUO
12.3. MICRO-PROGRAMAO
221
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 circuito 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 executada 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
OPCODE=01...
OPCODE=00...
Execuo
da Instruo
OPCODE=10...
OPCODE=11...
Carregamento
do Operando
Carregamento
dos Operandos
Carregamento
do Operando
Execuo
da Instruo
Execuo
da Instruo
Execuo
da Instruo
(PUSH)
Escrita
Resultado
(TEST, CMP)
Teste de
Interrupes
222
RI M[PC]
PC PC+1, CAR ROMA[OPCODE]
; Carrega RI
; Incrementa PC
12.3. MICRO-PROGRAMAO
223
Cada micro-instruo corresponde a uma ou mais operaes de transferncia entre registos, que so executadas sempre os que sinais de controlo correspondentes a essa micro-instruo esto activos. Para evitar a listagem exaustiva de todos os sinais de controlo que se encontram activos em cada microinstruo, cada micro-instruo precedida de um rtulo simblico. Este rtulo corresponde aos valores dos sinais de controlo que se encontram activos
durante a execuo dessa micro-instruo.
Embora cada micro-instruo seja descrita como um conjunto de transferncias de valores entre registos, a programao da memria de controlo
feita com uma sequncia de zeros e uns que especificam o valor de cada microinstruo, de acordo com o formato descrito na Figura 12.6. Os valores de cada
bit da micro-instruo devero ser tal que causem as transferncias entre registos indicadas.
A transformao do micro-programa, descrito ao nvel de transferncia entre registos, na combinao de bits que controla adequadamente os circuitos do
processador pode ser feita manualmente ou com o auxlio de um programa,
que, neste caso, se chama micro-assembler. Na prtica, e dado que a programao a este nvel requer um conhecimento profundo dos sinais e circuitos
envolvidos, a utilidade de um micro-assembler consideravelmente mais reduzida que a de um assembler, pelo que esta transformao feita, na maior parte
dos casos, manualmente.
No caso presente, ilustra-se o funcionamento das micro-rotinas usando a
linguagem de transferncia entre registos, sendo a Seco 12.3.6 dedicada ao
estudo do processo de traduo entre a micro-instruo e o micro-cdigo em
formato binrio.
224
12.3. MICRO-PROGRAMAO
225
F1R0:
; Copia operando
F1RI0:
F1RI1:
EA R[IR1]
RD M[EA], CAR SBR
; Carrega o endereo
; Copia operando
F1IM0:
F1IM1:
RD M[PC]
PC PC+1, CAR SBR
; Carrega o operando
; Incrementa o PC
F1IN0:
F1IN1:
F1IN2:
F1IN3:
EA M[PC]
PC PC+1
EA EA+R[IR1]
RD M[EA], CAR SBR
;
;
;
;
Carrega a constante W
Incrementa PC
Guarda o endereo
Carrega o operando
RD R[IR1]
SD R[IR2], CAR SBR
F2RI0:
F2RI1:
F2RI2:
EA R[IR1]
RD M[EA]
SD R[IR2], CAR SBR
; Guarda endereo
; Copia primeiro operando
; Copia segundo operando
F2IM0:
F2IM1:
F2IM2:
RD M[PC]
PC PC+1
SD R[IR2], CAR SBR
F2IN0:
F2IN1:
F2IN2:
F2IN3:
F2IN4:
EA M[PC]
PC PC+1
EA EA+R[IR1]
RD M[EA]
SD R[IR2], CAR SBR
;
;
;
;
;
Carrega a constante W
Incrementa o PC
Guarda o endereo
Copia primeiro operando
Copia segundo operando
O primeiro conjunto de micro-rotinas, descrito no Programa 12.3, utilizado quando o valor de . Neste caso, o modo de endereamento aplica-se
ao primeiro operando, como, por exemplo, na instruo ADD M[R1+30],R3.
O procedimento a adoptar semelhante ao que foi utilizado nas instrues de
um operando, existindo, tal como antes, quatro casos distintos: endereamento
por registo, indirecto, imediato e indexado. A diferena consiste fundamentalmente em copiar para o registo SD o valor do segundo operando, por forma
226
F2RS0:
F2RS1:
SD R[IR1]
RD R[IR2], CAR SBR
F2RIS0:
F2RIS1:
F2RIS2:
EA R[IR1]
SD M[EA]
RD R[IR2], CAR SBR
F2IMS0:
F2IMS1:
F2IMS2:
SD M[PC]
PC PC+1
RD R[IR2], CAR SBR
F2INS0:
F2INS1:
F2INS2:
F2INS3:
F2INS4:
EA M[PC]
PC PC+1
EA EA+R[IR1]
SD M[EA]
RD R[IR2], CAR SBR
;
;
;
;
;
Carrega a constante W
Incrementa PC
Guarda endereo
Copia segundo operando
Copia primeiro operando
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 diferente. 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 codifica o segundo operando, no o primeiro. Estas micro-rotinas esto descritas
no Programa 12.4.
12.3. MICRO-PROGRAMAO
227
; Copia Ops
; Adio
; Copia operando
; Escrita
; Salto para IH
;
;
;
;
Carregar endereo
Push do PC
Carregamento do PC
Salto para IH
228
ser escrito na posio de memria apontada pelo registo EA, caso o modo de
endereamento seja indirecto ( = ) ou indexado ( = ). Uma vez que s
WBR0:
WBR1:
R[WBR] RD
CAR IH0
; Escrita em registo
; Tratamento de interrupes
WBM0:
WBM1:
WBM2:
S: CAR WBR0
M[EA] RD
CAR IH0
; Escrita em registo se
= 1
; Escrita do resultado
; Tratamento de interrupes
12.3. MICRO-PROGRAMAO
229
O vector de interrupo serve como ndice para esta tabela. Assim, este valor 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 utilizado 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.
IH0:
IH1:
IH2:
IH3:
IH4:
IH5:
IH6:
IH7:
; Guarda RE
RI M[PC]
; Carrega RI
230
Uma vez que o formato da micro-instruo o formato , isso fora automaticamente 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 necessrio 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 entrada 0 do multiplexador
MUXCOND
e
colocando
o
sinal
a , por
seja .
forma a que
M5
00
S
R
1
S
R
2
L
S
MCOND
C
C
L
I
L
F
000
CONST/NA
7
W
R
MD
M
A
D
RAD
1111
12.3. MICRO-PROGRAMAO
231
M5
10
S
R
1
S
R
2
I
A
K
FM
0000
CALU
00101
M
A
M
B
M
2
M
R
B
RB
MD
M
A
D
RAD
00
1111
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 barramentos 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 13
Sistemas de Memria
Nos captulos anteriores, foi examinado o funcionamento de um processador,
sendo a memria encarada como um conjunto uniforme de registos, cada um
dos quais enderevel individualmente. Esta viso simplista no corresponde
realidade excepto em sistemas muito simples mas permitiu descrever o funcionamento do processador sem entrar em linha de conta com as complexidades
do sistema de memria.
Em particular, qualquer computador actual, quer seja um sistema embarcado, um computador pessoal ou um servidor, utiliza numerosos dispositivos
para armazenamento de dados. Estes dispositivos consideram-se usualmente
divididos em duas grandes classes: memria primria e memria secundria.
A memria primria, tambm referida como memria principal, construda
com base em circuitos integrados, tem um tempo de acesso mais curto, mas
mais cara (por bit) e de menor dimenso, no tendo a capacidade de guardar
os dados quando o sistema se encontra desligado.
A memria secundria, tambm conhecida como memria auxiliar, que recorre
a dispositivos baseados em tecnologia magntica (discos e fitas magnticas) ou
pticas (CDROMs e DVDs) mais lenta, mas tem um custo por bit menor,
maior capacidade e a possibilidade de conservar os dados mesmo sem o computador estar ligado. Esta memria, alm de poder ser utilizada pelo processador na execuo de programas, atravs do uso de memria virtual, tambm
usada para guardar dados em sistemas de ficheiros. Esta utilizao da memria secundria no ser estudada neste captulo, uma vez que implica um
conhecimento de sistemas operativos que vai para alm do mbito de um livro
introdutrio.
Neste captulo, ser analisado o sistema de memria de um computador,
comeando pela organizao da memria primria, que, em alguns sistemas
simples, representa a nica forma de armazenamento de dados.
Sistemas mais complexos exibem outras componentes, que sero estudados
nas seces seguintes. Em particular, sero estudados os sistemas de cache, que
tm como objectivo acelerar os acessos a memria primria, e os sistemas de
memria virtual, que permitem utilizar a memria secundria de forma transparente para o processador.
233
234
235
R/W
Mem Enable
CS
Dados
Endereos
DATA
ADDR
2m
Dados
Endereos
O primeiro tipo de ligao, ilustrado na Figura 13.2, permite compor diversos mdulos de memria, por forma a conseguir um nmero de bits em
cada posio superior ao que disponibilizado por cada mdulo de memria
isoladamente. Neste tipo de ligao, as palavras devolvidas por cada um dos
mdulos so concatenadas numa palavra de maior dimenso.
Mem Read
Mem Enable
D 2m1Dm
A n1A0
R/W
R/W
CS
CS
DATA
ADDR
D m1D0
A n1A0
DATA
ADDR
Dados
236
R/W
CS
DATA
ADDR
Mem Read
A n1
R/W
CS
Mem Enable
DATA
A n2A0
ADDR
Mem Enable
S1
S0
EN
Descodificador
0
237
Mem Read
A14
D7D0
A15
A13A0
14
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.
octetos, de 00000h a FFFFFh (superior capacidade do mdulo de memria),
o projectista tem, em primeiro lugar, de decidir o espao de endereamento
que dever corresponder
memria. Suponha-se que a opo do projectista
a de que as posies de memria devero estar localizadas nas posies
F0000h a FFFFFh, isto , no topo do espao de endereamento utilizvel pelo
processador.
correspondncia que necessrio realizar entre endereos de memria e
mdulos habitual chamar-se o mapa de memria. Muitas vezes, este mapa
ilustrado de forma grfica, como o caso da Figura 13.6, que corresponde ao
exemplo em estudo. Para conseguir que a memria fique visvel nesta zona do
espao de endereamento, h que criar um circuito de descodificao, ilustrado
na Figura 13.7. A porta lgica utilizada faz com que apenas os endereos que
tm os 4 bits mais significativos a 1 activem a memria.
Em geral, os mapas de memria de um processador so mais complexos e
no so usadas portas lgicas individuais, mas sim descodificadores ou ROMs
para seleccionar mdulos individuais.
Quando se projecta o circuito que faz a descodificao dos endereos e a
Mem Enable
S0
Descodificador
0
D7D0
S1
EN
Mem Read
A14
A13A0
A15
D15D8
238
14
8
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
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:
1. Cada mdulo de memria seleccionado quando o endereo corresponde
a uma posio de memria guardada nesse mdulo e existe uma operao de acesso memria.
2. Os bits que so usados para enderear as palavras dentro do mdulo
so adequadamente controlados pelas linhas correspondentes do barramento de endereos.
Considere-se, por exemplo, um sistema baseado no mesmo processador do
exemplo anterior, em que se pretende realizar o mapa de memria da Figura 13.8. Neste mapa de memria, existe uma memria ROM de 32k octetos
na parte baixa da memria, e duas reas de RAM no contguas, ambas de
64k octetos. A realizao da descodificao deste sistema de memria poderia
tambm ser feita com portas lgicas discretas, mas isso resultaria num circuito
relativamente complexo.
239
FFFFFh
RAM
F0000h
EFFFFh
00000h
Figura 13.6: Mapa de memria de um processador um espao de endereamento de octetos, mas com apenas 64k octetos de memria RAM instalada
entre as posies F0000h e FFFFFh.
Mem Read
R/W
Mem Enable
A19
CS
A18
UCP
20
Endereos
A17
A16
16
ADDR
A15A0
Dados
DATA
240
FFFFFh
RAM
F0000h
...
1FFFFh
RAM
10000h
...
07FFFh
ROM
00000h
R/W
Mem Enable
CS
UCP
Dados
Endereos
A15A0
20
16
16
RAM
DATA
ADDR
R/W
A19A16
CS
4
8
A15
Descodificador
EN
15
.
.
.
16
RAM
DATA
ADDR
1
0
CS
8
15
ROM
DATA
ADDR
241
T2
T3
T0
T1
Relgio
Mem Enable
Read / Write
Endereos
Dados
Endereos vlidos
Dados
Tempo de acesso = 25ns
242
10ns
T1
T2
T3
T0
T1
Relgio
Mem Enable
Read / Write
Endereos vlidos
Endereos
Dados
Vlidos
Tempo de acesso = 25ns
UCP
Cache
L1
Cache
L2
Memria
Primria
Memria
Secundria
243
Do ponto de vista do desempenho do processador, a situao ideal corresponde a ter a maior quantidade de memria disponvel possvel a funcionar
velocidade mais rpida possvel. Porm, como o custo por bit e a velocidade
de funcionamento esto inversamente relacionados, a soluo adoptada passa,
geralmente, pelo uso de diversos tipos de memria, com diferentes velocidades de acesso. O sistema de memria est estruturado por forma a que os
dados e instrues mais comummente utilizados, em cada passo da execuo
de um programa, estejam em memrias mais rpidas, enquanto que os menos
frequentemente acedidos estejam em memrias mais lentas.
Na sequncia, ir ser analisada uma hierarquia de memria simples, onde
existe apenas um nvel de cache, uma memria principal de grande capacidade e uma memria secundria que usada como memria virtual. No caso
geral, podem existir vrios nveis de cache, mas isso no altera o mecanismo
de funcionamento.
Quando feito um acesso a uma posio de memria, quer para leitura
quer para escrita, o sistema comea por verificar se essa posio est disponvel na memria mais rpida, que denominada de cache. Se essa posio
no estiver disponvel na cache, consultada a memria principal, que geralmente do tipo RAM dinmica. Se a posio tambm no estiver disponvel
na memria principal, feito um acesso memria secundria, maior e mais
lenta, e geralmente a funcionar com base em discos magnticos.
Se o sistema de memria estiver bem estruturado, este sistema hierrquico
apenas ligeiramente mais lento, em mdia, que um sistema de memria em
que a totalidade da memria funcionasse velocidade da cache. O custo total,
porm, muito menor, uma vez que as memrias mais lentas tm um custo
por bit muito inferior ao das memrias mais rpidas.
Como possvel conseguir um objectivo prximo do original (memria
muito grande e muito rpida) investindo apenas uma fraco do montante
que seria necessrio se toda a memria fosse rpida? A possibilidade de obter
este resultado prende-se com um facto que se verifica em praticamente todos
os programas, e que conhecido pelo princpio da localidade. Este princpio
baseia-se na verificao emprica de que os acessos a memria feitos por um
processador so altamente correlacionados entre si, e no so distribudos uniformemente pela memria disponvel. Existem dois tipos de localidade:
Localidade temporal: se feito um acesso a um determinado endereo de
memria, muito provvel que haja um novo acesso a este mesmo endereo num futuro prximo.
Localidade espacial: se feito um acesso a um determinado endereo de
memria, muito provvel que haja um novo acesso a um endereo prximo deste.
A localidade temporal pode ser utilizada para acelerar os acessos a dados e
instrues, mantendo nas memrias mais rpidas as posies de memria que
foram utilizadas mais recentemente. Com efeito, uma fraco muito significativa do tempo de execuo de um programa gasta em ciclos de dimenso
relativamente pequena, onde so executadas repetidamente as mesmas instrues e re-utilizadas as mesmas variveis.
A localidade espacial pode ser utilizada com o mesmo fim, copiando para
memrias mais rpidas posies que esto, espacialmente, prximas daqueles
244
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 memria 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 memrias dinmicas, cujos tempos de acesso se encontram tipicamente na gama dos
60ns a 70ns. As memrias de cache encontram-se muitas vezes no mesmo circuito integrado que o processador, e tm assim tempos de acesso compatveis
com a velocidade do processador. Em processadores modernos, comum existirem 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 computacional que tem apenas um nvel de cache e uma memria primria.
245
Para usar um exemplo concreto, admita-se que um dado processador funciona a 500 MHz, que faz um acesso memria de dados em cada instruo e que
cada instruo demora 4 ciclos de relgio a ser executada. Nestas condies, o
processador faz um acesso memria de dados em cada 8ns1 .
Admita-se que a memria primria tem um tempo de acesso mdio de 70ns,
enquanto que a cache, realizada com uma tecnologia semelhante do processador, disponibiliza os dados em 2ns, o que corresponde ao perodo de relgio
do processador. Admita-se ainda que, neste sistema, os acessos a memria tm
um padro tal que 95% dos acessos feitos a memria podem ser substitudos
por um acesso cache, ou seja, que a cache exibe um taxa de sucesso (em ingls,
hit-rate) de 95%.
Nestas condies, possvel calcular o nmero de ciclos de relgio que demora, em mdia, a executar cada instruo, neste sistema e num sistema semelhante mas em que no fosse utilizada a cache.
Cada instruo demora 4 ciclos de relgio a ser executada, dos quais um
ciclo de acesso memria. O tempo mdio para um acesso memria dado
por
(13.1)
Onmero
mdio de ciclos
de relgio por cada instruo executada assim
, ou seja,
(esta medida de desempenho denominada de
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 memria primria.
Isto significa que o processador demoraria, para executar cada
instruo,
ciclos de relgio, ou seja, ciclos de relgio. O processa
MIPS, o que significa que ficaria aproximador executaria assim apenas
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 aparece, indirectamente, no valor da taxa de sucesso, que maior para caches de
maior dimenso, e menor para caches mais pequenas. Em geral, no dimensionamento de uma cache para um sistema de memria, necessrio considerar
dois factores fundamentais:
A velocidade da cache, que condiciona a velocidade mxima de funcionamento do sistema.
A dimenso da cache, que condiciona a taxa de sucesso da mesma, e,
consequentemente, o nmero de acessos memria principal.
1 Ignore-se, por agora, que o processador precisa tambm de aceder s instrues, que tambm
esto guardadas em memria.
246
247
248
249
10 9
Etiqueta
0
ndice
ndice
Etiquetas
Dados
=
Sucesso
Dados
250
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 representa 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 completamente 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 correspondem posio onde a etiqueta coincide com o valor usado para enderear
a memria. A Figura 13.15 ilustra o esquema interno de uma memria totalmente associativa.
Etiqueta
Etiquetas
Dados
Etiquetas
Dados
...
Etiquetas
Dados
Dados
Dados
Sucesso
Dados
Dados
251
Por essa razo, caches de dimenso significativa no so, geralmente, completamente associativas. Existe, no entanto, uma forma de obter muitas das
vantagens do mapeamento totalmente associativo mantendo a velocidade de
acesso e o custo de uma cache de mapeamento directo.
Uma cache de mapeamento associativo por conjuntos consiste num conjunto
de caches de mapeamento directo, endereadas em paralelo. Todas elas so
acedidas, em simultneo, com o campo ndice do endereo, mas apenas aquela
que tiver a etiqueta correcta disponibiliza os dados. Se existirem caches de
mapeamento directo em paralelo, uma dada posio de memria pode ser mapeada para qualquer uma caches, na posio que corresponde ao valor do
ndice. A este tipo de cache chama-se cache de mapeamento associativo de vias.
Estes trs tipos de caches podem ser vistos como pertencendo todas ao
mesmo tipo, variando apenas o nmero de vias de associatividade. Numa
cache de mapeamento directo, o nmero de vias de associatividade . Numa
cache
totalmente associativa, o nmero de vias de associatividade , onde
o nmero de posies da cache. O endereo partido em dois campos,
cuja dimenso varia com o tamanho das caches e o nmero de vias de associa , onde
tividade. Em particular, o nmero de bits no ndice igual a
a dimenso da cache e o nmero de vias de associatividade.
Em caches que tenham diversas vias de associatividade, a escrita de novos
dados em cache tem de ser antecedida da escolha da via que ir conter esses
dados. Com efeito, qualquer das vias poder ser escolhida, dependendo a deciso da poltica de substituio, que ir ser estudada na Seco 13.3.3.
Por exemplo, uma cache de 4096 posies usar 12 bits de ndice se for de
mapeamento directo, 10 bits de ndice se for associativa de 4 vias e nenhum bit
de ndice se for totalmente associativa. Neste ltimo caso, o nmero de vias de
associatividade igual ao nmero de posies na cache.
252
12 11
Etiqueta
4 3
ndice
Deslocamento
ndice Deslocamento
0000000h
0000001h
0000002h
0000003h
Cache
Etiqueta
Dados
0
0000h
F
00h
1FC0FE2h
01h
1FC0FE3h
02h
256 blocos
Memria
1FC0FE1h
3FFFFF9h
FDh
3FFFFFAh
3FFFFFBh
1FC0h
FEh
3FFFFFCh
3FFFh
FFh
3FFFFFDh
3FFFFFEh
3FFFFFFh
253
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
Dados
Descodificador
Etiquetas
=
Multiplexador
Sucesso
Dados
254
Etiqueta
ndice
Deslocamento
Dados
Etiquetas
Dados
Descodificador
Etiquetas
Multiplexador
Multiplexador
Codificador
Hit
Multiplexador
Dados
255
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 blocos de cache, que incrementado sempre que o seu contedo igual ao nmero
do bloco que acedido. Desta forma, blocos frequentemente acedidos tm menos probabilidade de serem substitudos, uma vez que o contador permanece
pouco tempo a apontar para eles.
256
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 computador pode estar a comear a executar um programa, situao em que todos
os dados esto invlidos. Podem tambm existir outros dispositivos que alterem 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 invlidos 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.
257
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 atravs da execuo de uma rotina especfica para o efeito, pode demorar diversos
milisegundos, tempo suficiente para executar milhes de instrues num processador moderno. Isto significa que o processador fica livre para outras tarefas, 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 diversas estruturas fsicas e lgicas no seu funcionamento. As mais importantes
so a tabela de pginas e a TLB (do ingls, Translation Look-Aside Buffer).
258
Nmero da pgina virtual
Deslocamento
Memria Primria
Tabela de pginas
00000h
0001h
00001h
0003h
00002h
0000h
00003h
0002h
0000 000h
0001 000h
0002 000h
0003 000h
.
.
.
NULL
...
0003 FFFh
FFFE 000h
FFFF 000h
FFFFEh
FFFFh
FFFFFh
FFFEh
259
ndice na tabela
22 21
Deslocamento
12 11
Tabelas
000h
0001h
001h
0003h
Memria Primria
0000 000h
0001 000h
002h
Directrio
000h
3FEh
001h
3FFh
002h
3FEh
3FFh
0002 000h
0002h
.
.
.
000h
FFFEh
001h
FFFFh
0003 000h
0003 FFFh
...
FFFE 000h
002h
FFFF 000h
3FEh
NULL
3FFh
NULL
260
Em geral, trs nveis de tabelas so suficientes para todos os sistemas, independentemente da dimenso da memria virtual e fsica do sistema, embora
existam arquitecturas que disponibilizam j, para futuras realizaes, a utilizao de quatro nveis de tabelas.
Regra geral, com a excepo do directrio, as tabelas de pginas tm a
mesma dimenso de uma pgina. Esta situao permite que tabelas de traduo que no estejam a ser utilizadas possam ser guardadas em disco, tal como
as pginas de dados e cdigo, reduzindo a fraco de memria ocupada pelas
tabelas de traduo.
Existem tambm sistemas que utilizam outras formas de mapeamento de
tabelas de pginas, denominadas de tabelas invertidas. No entanto, esta tcnica,
pouco utilizada em sistemas recentes, no ser estudada neste texto.
261
existncia de um bit nos descritores de pgina das tabelas de traduo que indica 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 primria. 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.
262
cache ir ter uma taxa de sucesso muito elevada, pois o nmero de pginas diferentes 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.
263
Deslocamento
Dados
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 seleccionar 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
a
do bloco de cache pode ser iniciada (usando as linhas de endereo
) 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
no foi activada, e desencadeia um acesso memria primria de
linha 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 utilizados 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 considerar que, em sistemas reais, existem diversos nveis de caches, caches separadas
para endereos e dados, arquitecturas complexas de memria primria e interligao 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
Pgina
UCP
Deslocamento
12
Cache Hit
v w e d Etiq Pgina
Dados
Ready
TLB
TLB Hit
20
16
=
20
32
32
8 Indice v d Etiqueta Dados
CACHE
20
2
Etiqueta
Deslocamento
En
Sel MUX
32
Hit
MEMRIA
Controlo
Controlador
12 Endereos
DIMM
32
DIMM
32
DIMM
32
DIMM
32
265
tem usar a memria secundria para alargar o espao de endereamento utilizvel para alm do que seria possvel se apenas se usasse a memria primria.
266
Captulo 14
Entradas, Sadas e
Comunicaes
Nos captulos anteriores definiram-se dois dos componentes principais de um
computador, a unidade central de processamento e o sistema de memria. Embora todo o processamento se efectue entre estas duas unidades, tal seria de utilidade reduzida caso no existisse alguma forma de interaco com o mundo
exterior, que por um lado permita introduzir os dados a processar e por outro
lado torne acessvel os resultados.
Nos primeiros computadores, esta interface era rudimentar. As entradas
eram especificadas por interruptores que definiam o seu valor bit a bit e o resultado era visualizado em lmpadas que indicavam o seu valor tambm ao
nvel do bit. Desde ento houve grande evoluo no s nas interfaces pessoamquina como nas interfaces entre diferentes mquinas. O desenvolvimento
de novas formas de interaco com os computadores cada vez mais um assunto de intensa investigao.
O termo perifricos normalmente utilizado para designar de forma genrica os dispositivos de entrada e sada de um computador. Hoje em dia existe
uma grande diversidade de perifricos, com caractersticas muito diferentes a
variados nveis. Para simplificar a interface do lado da UCP o acesso aos diferentes perifricos definido como tendo o mesmo protocolo de um acesso a
uma posio de memria (Seco 13.1.3). Devido ao protocolo de acesso ser o
mesmo, indiferente para o processador aceder a uma posio de memria ou
a um perifrico, possibilitando, portanto, o mapear no espao de memria dos
diferentes perifricos (Seco 14.1). Esta simplificao do lado do processador
implica a existncia do lado de cada perifrico de um circuito de interface que
converta a informao proveniente do perifrico para o protocolo utilizado no
acesso memria.
Neste captulo comea-se por descrever o funcionamento de alguns dos perifricos mais conhecidos. Em seguida, apresentam-se diferentes modos de
comunicao entre o computador e os perifricos. Finalmente, discutem-se as
formas como se transfere a informao para perifricos com diferentes ritmos
de transmisso de informao.
267
268
Barramento de Controlo
Interface
Interface
Perifrico
Perifrico
...
Interface
Memria
Perifrico
14.1.1 Interfaces
A ligao dos perifricos , na maior parte dos casos, assegurada por um mdulo que pode assumir diversos graus de complexidade, denominado interface.
A interface existe para isolar o processador das particularidades dos perifricos. De entre as funcionalidades pedidas interface, podem ser referidas, nesta
fase, as seguintes:
Promover as adaptaes necessrias do ponto de vista fsico, nomeadamente ao nvel das tenses e correntes envolvidas na comunicao entre
o processador e os perifricos.
269
Permitir esconder ao processador a velocidade dos perifricos, tipicamente mais baixa que a do processador.
Descodificar os endereos presentes no respectivo barramento por forma
a identificar uma transferncia de dados que envolve o perifrico a que
est ligada.
Controlar o perifrico nos casos em que podem existir vrios modos de
funcionamento.
Controlar a comunicao fsica com o perifrico atravs de lgica adequada, diminuindo, assim as tarefas a desempenhar pelo processador.
Sinalizar ao processador, atravs do barramento de controlo, a presena
de dados provenientes do perifrico ou a disponibilidade deste para receber dados atravs do sistema de interrupes do computador. Este tema
ser tratado adiante na Seco 14.5.2
Permitir ao perifrico participar em modos de transferncia mais avanados com envolvimento reduzido do processador como o caso do acesso
directo memria que ser analisado na Seco 14.5.3.
Descodificao
de endereos
Barramento de
Controlo
Barramento de
Dados
Barramento de
Endereos
...
Controlo
Registos
Comunicao
com o Perifrico
270
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 aspectos 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 diferentes. Conceptualmente o mdulo de descodificao de endereos responsvel por identificar a presena no barramento de dados do endereo correspondente 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 significativos do barramento de endereos em nmero necessrio para enderear os
diversos portos internos da interface, sejam portos de dados, controlo ou estado. 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 (Seco 14.5.2) ou o acesso directo memria (Seco 14.5.3).
271
Barramento de Endereos
Barramento de Dados
Barramento de Controlo
Ai a An-1
Descodificao
Externa
A0 a Ai-1
...
Interface A
Interface X
...
En
Descodificao
Interna
0
n-1
Controlo
Escrita
...
Leitura
Perifrico X
Porto 0
...
OEn
Porto n-1
Perifrico A
Figura 14.3: Descodificao de endereos para acesso aos portos de uma interface.
para as interfaces de entrada/sada fisicamente separado dos barramentos de
memria. Essa opo permitiria um aumento do desempenho do computador,
uma vez que, simultaneamente com uma comunicao com um perifrico
possvel manter os acessos memria, quer para transferir dados, quer para
ler instrues.
Esta opo, obriga, porm, para ser til, a uma nova concepo do processador que passaria a ter uma capacidade de processamento paralelo que
muito complicaria a sua arquitectura. Essa no uma soluo frequente. No
entanto, o uso de um processador dedicado apenas s entradas/sadas, partilhando a memria com o processador principal, permite levar prtica esta
soluo com menor complicao e de uma forma perfeitamente satisfatria do
ponto de vista do desempenho global. Este tipo de arquitectura ser referida
com um pouco mais de detalhe no Seco 14.5.4.
Assumindo, portanto, uma arquitectura com um nico conjunto de barramentos partilhados entre a memria e as interfaces de entrada/sada, podem
ainda ser conceptualizadas duas formas de organizao.
Em muitas arquitecturas, como tambm o caso do P3, assume-se a existncia de um nico espao de endereamento que, tal como os barramentos,
partilhado por memria e perifricos. Nesse tipo de arquitectura haver endereos atribudos a posies de memria e outros atribudos a portos. Trata-se,
como j se referiu no Seco 11.3.3 de uma arquitectura com os portos mapeados em memria (em ingls, memory mapped). Em arquitecturas deste tipo o
endereamento de um porto faz-se colocando no barramento de endereos o
respectivo endereo e actuando no barramento de controlo uma linha que indique a direco da transferncia pretendida. Isso conseguido habitualmente
pela utilizao de uma linha de escrita/leitura
que estar a , ou me-
272
14.2 Perifricos
Nas seces seguintes descreve-se o funcionamento bsico de alguns dos perifricos 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 computacionais 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
scan code
8
3
D
e
s
c
o
d
274
Placa Grfica
Memria
Modo Texto
UCP
Monitor
ROM
Caracteres
ASCII
Memria
Modo Grfico
Gerador
Varrimento
Monitor
RGB
.
.
.
14.2.2 Monitores
semelhana do teclado, o monitor ocupa o lugar principal na classe dos perifricos 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, programveis pela UCP: modo texto e modo grfico. Em qualquer dos modos de funcionamento, 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
276
14.2. PERIFRICOS
Disco Rgido
277
Cilindro
Pista
Sector
278
279
280
necessrio sincronizar completamente a comunicao entre a interface e o perifrico de modo a, para alm de sinalizar o envio, garantir que os dados so
recebidos.
Por outro lado, a comunicao entre o processador e a interface pode, igualmente, necessitar de algum grau de sincronizao.
Os exemplos apresentados em seguida permitem ter uma viso de interfaces com diferentes complexidades. No se pretende ser exaustivo nesta questo, mas antes ilustrar alguns tipos de problemas encontrados neste contexto e
solues comuns para esses problemas.
281
Barramento de Endereos
Barramento de Dados
Barramento de Controlo
Descodificao
Externa
...
Controlo
Enable da
Interface
Leitura
OEn
282
Descodificao
Externa
...
Controlo
Enable da
Interface
Escrita
283
Barramento de Endereos
Barramento de Dados
Barramento de Controlo
A0 a An-1
Descodificao
Externa
A0 A1
...
Interface A
En
Descodificao
Interna
0 1 2 3
Controlo
D0
Escrita
Leitura
OEn
Porto 2
Porto 0
S
R
1D
C1
Clock
DOUTVAL
DINVAL
Conversor
D/A
Conversor
A/D
284
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 interface 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 protocolo de comunicao entre a interface e perifrico que tem por designao
handshake. Nesse protocolo, a entidade geradora de dados (por exemplo, a interface, numa comunicao com um perifrico de sada) sinaliza que os dados
esto disponveis por uma linha
, por exemplo, e a entidade receptora (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 mudanas de nvel de uma linha. Na Figura 14.12 ilustra-se o protocolo utilizando
mudanas de nvel das linhas.
Dados
Dados a enviar
Dados a enviar
DADVAL
ACK
12
45
285
Dados a enviar
DADVAL
ACK
12
56
286
Dados a enviar
DADVAL
PEDDAD
23
Figura 14.14: Exemplo de um protocolo de duplo aperto de mo com a iniciativa na unidade receptora.
287
Um aspecto importante a ter em conta neste tipo de interfaces o que resulta do facto da interface ser interligada a dois barramentos, o barramento
interno do computador e o barramento de ligao aos perifricos que tm, em
geral, relgios de diferentes frequncias. Isso conduz a uma maior complexidade interna deste tipo de interfaces, em relao s interfaces simples anteriormente descritas. No cabe dentro dos objectivos deste livro explorar este tema
em mais detalhe.
288
A comunicao srie apresenta a vantagem, como foi atrs sugerido, de facilitar a ligao entre dois processadores atravs de linhas srie que interligam
interfaces de entrada/sada dos dois computadores. Se bem que uma ligao
deste tipo seja concebvel com interfaces de comunicao paralela, a utilizao
de comunicao srie facilita muito a tarefa.
Quanto aos sentidos de comunicao entre duas entidades que comunicam
em srie, sejam uma interface e um perifrico, sejam dois computadores, h
trs tipos de ligao. Quando a comunicao se faz apenas numa direco, por
exemplo, de uma interface para um perifrico de sada, chama-se comunicao
simplex. No , actualmente, comum excepto em aplicaes muito especficas. A comunicao half-duplex, por sua vez, realiza-se nos dois sentidos, mas
separadamente, isto , com a entidade A a enviar dados para a entidade B e,
posteriormente, com a entidade B a enviar dados para a entidade A. Neste caso
nunca h comunicao simultaneamente nos dois sentidos. Embora em comunicaes envolvendo computadores de uso geral seja j pouco usado, este tipo
de comunicao frequente em aplicaes de controlo e automao. Por fim,
quando entre duas entidades se permite a troca simultnea de comunicao
nos dois sentidos, trata-se de comunicao full-duplex. a mais frequente hoje
em dia. Repare-se que uma comunicao full-duplex do ponto de vista lgico,
pode ser fisicamente suportada em comunicaes simplex, como acontece, por
exemplo, na comunicao entre um processador e um terminal (incluindo monitor e teclado) ou com um modem.
Na comunicao srie surge, tal como sucede com a comunicao paralela,
a necessidade de sincronizar as duas entidades que trocam informao entre
si. H dois modos fundamentais de o fazer: na comunicao sncrona, para alm
de se transmitirem os sucessivos bits de informao igualmente transmitido
uma sequncia de impulsos de relgio que permitem ao receptor extrair os
bits de informao do sinal recebido; na comunicao assncrona, pelo contrrio,
no transmitido qualquer sinal de relgio e tm de ser assumidos pelas duas
entidades envolvidas certos pressupostos no que diz respeito s caractersticas
temporais do sinal transmitido.
289
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.
Pontos de amostragem
Bit de arranque
Durao de um bit
Bits de informao
290
com erro. Repare-se, contudo, que este mtodo tem uma limitao: se ocorrerem 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 incluindo j o bit de paridade (com paridade par) e dois bits de guarda.
Pontos de amostragem
Bit de arranque
Durao de um bit
Bits de informao
Bits de guarda
Bit de paridade
Bit de arranque
291
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 formas de transmitir informao transmitem vrios bits simultaneamente levando
a que baud corresponde a vrios bits.
292
a quem pretenda aprofundar o assunto. Inicialmente desenvolveram-se protocolos orientados ao caracter, protocolos em que se assume que a informao a
transmitir constituda por caracteres de texto. Com o desenvolvimento da
necessidade de transmitir outro tipo de informao, foram desenvolvidos protocolos orientados ao bit.
Protocolos Orientados ao Caracter
Protocolos deste tipo so j pouco usados, mas so aqui referidos por serem
um passo importante que faz a ponte da comunicao assncrona para os modernos protocolos orientados ao bit. Neste tipo de protocolos assume-se que a
informao til constituda por texto sob a forma de um cdigo e, eventualmente, por alguns caracteres de controlo como os que constam da Tabela 2.13
do cdigo ASCII apresentada na Seco 2.3.3.
Na ausncia de dados transmitido sucessivamente o caracter SYN (synchronization), que mantm a sincronizao entre a entidade emissora e a receptora. Quando h dados para transmitir, que no caso destes protocolos ,
normalmente, texto, a transmisso inicia-se por um cabealho com informao liagada ao controlo de transmisso. O cabealho precedido pelo caracter
SOH (Start Of Header), incio de cabealho. O texto , por sua vez, precedido
do caracter STX (Start of TExt), incio de texto e seguido do caracter ETX (End
of TExt), fim de texto. O fim do pacote de informao um caracter BCC (Block
Check Character), caracer de verificao do bloco. Este no um caracter especfico mas sim um caracter calculado de forma a servir de deteco de erros
de transmisso. A informao a transmitir segmentada em blocos com um
comprimento mximo definido. Na Figura 14.18 ilustra-se a estrutura de um
pacote de informao neste tipo de protocolo.
1 caracter
...
SYN SOH
Cabealho
h caracteres
STX
Texto
ETX
BCC SYN
...
t caracteres
293
... Flag
Cabealho
h bits
Informao
n bits
CRC Flag
...
2 octetos
294
295
L o porto
de estado
da interface
Isola bit de
estado de
perifrico pronto
pronto?
no
sim
L posio
de memria
para um registo
Escreve registo
no porto de escrita
da interface
Incrementa posio
de memria e total
de transferncias
fim?
no
sim
296
L posio
de memria
para um registo
Escreve registo
no porto de escrita
da interface
Incrementa posio
de memria e total
de transferncias
Figura 14.21: Fluxograma de rotina de tratamento de interrupo numa transferncia de dados por interrupo.
perifricos mais prioritrios possam interromper rotinas de interrupo com
menor prioridade. De qualquer forma, pode acontecer a UCP no responder
de imediato interrupo de um perifrico caso tenha sido interrompida por
outro h pouco tempo e assim ainda esteja a tratar dessa transferncia. Em geral, cada dispositivo tem um tempo de resposta mximo (em ingls, timeout). O
comportamento caso esse tempo seja excedido especfico a cada dispositivo,
desde o abortar a comunicao com um cdigo de erro, passando pelos que fazem uma nova tentativa de comunicao (at se atingir um nmero mximo de
tentativas), at ao ignorar puro e simples deste erro de transmisso e passagem
imediata aos dados seguintes.
Como as rotinas de tratamento interrupo utilizadas nas transferncia
de dados so extremamente simples (conforme Figura 14.21), logo com um
tempo de execuo muito baixo, este no normalmente um problema srio.
Portanto, mesmo em caso de conflito, os tempos de resposta a uma interrupo
no excedem, em geral, os tempos de resposta mximos dos dispositivos.
O segundo problema que surge quando existe mais do que uma transferncia a decorrer em simultneo que quando a UCP recebe uma interrupo
tem que ter mecanismos para poder identificar qual foi o dispositivo que gerou
essa interrupo. Esta identificao tem como finalidade a seleco da rotina
de tratamento interrupo que deve ser executada, especfica para cada perifrico.
Uma soluo simples para este problema a UCP disponibilizar para o exterior um conjunto de linhas de interrupes independentes, atribuindo-se a
cada perifrico do sistema uma dessas linhas. Esta soluo pode no ser prtica quando o nmero de perifricos elevado. A alternativa usar uma linha
de interrupo nica (como no caso do P3 estudado no Captulo 12), mas nesse
caso a UCP ter que passar por um processo para a identificao do perif-
297
n
m
UCP
IntN
Int2
Int1
Int0
Disco
Rato
Teclado
...
Memria
Figura 14.22: Diagrama de processador e perifricos ligados com linhas de interrupo individuais.
rico aps a recepo de uma interrupo. Estas alternativas so analisadas em
detalhe em seguida. Notar que possvel um processador conjugar as duas
alternativas, com um conjunto de linhas de interrupo em que uma ou mais
destas partilhem perifricos.
Finalmente, um terceiro problema est relacionado com a possibilidade de
vrios perifricos gerarem simultaneamente uma interrupo, colocando-se a
questo de qual destas interrupes deve ser tratada em primeiro lugar.
necessrio, portanto, definir uma ordem de prioridades no atendimento das
interrupes. Ao contrrio do que se poderia pensar partida, os dispositivos
com maior prioridade no so, em geral, os que interagem com o utilizador.
Normalmente, os dipositivos mais rpidos (por exemplo, o disco) tm maior
prioridade do que os mais lentos (por exemplo, o teclado), que, como foi observado atrs (ver Seco 14.2), so tipicamente os que fazem a interface com
o utilizador. A razo desta ordem de prioridades deve-se a que os dipositivos
mais rpidos exigem tempos de resposta mximos menores, pois necessitam
que a sua informao seja lida ou escrita rapidamente para que possam ficar
prontos para os prximos dados que chegam a ritmo elevado. A maneira como
o tratamento destas prioridades realizado depende da forma de identificao
das interrupes e ser discutido dentro de cada uma das seces que segue.
Linhas de Interrupo Independentes
A soluo conceptualmente mais simples em termos de identificar o dispositivo que gera uma interrupo o processador disponibilizar linhas individuais de interrupo. Nestas condies, basta ligar a linha de interrupo de cada
perifrico a uma das linhas de interrupo do processador, como exemplificado
na Figura 14.22.
Cada linha de interrupo ter associado um endereo de incio da rotina
de tratamento interrupo. Este endereo
pode ser fixo e definido partida.
Por exemplo, a interrupo dalinha da Figura 14.22 saltar sempre para o
endereo
h, a da linha no endereo
h, etc. Portanto no endereo
h dever estar o incio da rotina de tratamento interrupo do perifrico
ligado a essa linha. No caso da Figura 14.22 seria a rotina de tratamento das
298
interrupes do disco.
Uma alternativa mais flexvel, e tambm mais comum, atravs da utilizao 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 processador. 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
h , ou seja,
de memria
.
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 interrupo 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.
Linha de Interrupo Partilhada
A abordagem apresentada atrs limita o nmero de perifricos capazes de gerar interrupes ao nmero de linhas de interrupo disponveis. Uma alternativa ter uma nica linha de interrupo partilhada por todos os perifricos.
Quando esta linha activada, a primeira tarefa da UCP identificar qual o perifrico que a gerou e em seguida executar a rotina de tratamento interrupo
correspondente.
Este processo pode, por sua vez, ser resolvido por duas formas. As interrupes podem ser vectorizadas ou no. Com interrupes vectorizadas, o
perifrico responsvel pela interrupo informa a UCP que foi ele quem a gerou. No caso das interrupes no vectorizadas, ter que ser a UCP a varrer
os perifricos at identificar aquele que gerou a interrupo. Analisam-se em
seguida estas duas alternativas.
Interrupes No Vectorizadas
Como referido, com uma linha de interrupo nica e com interrupes no
vectorizadas ser necessrio a UCP por software ter um processo de identificar
o perifrico que requisitou a sua ateno. A forma de o fazer ler em sequncia
o registo de estado na interface de cada um dos perifricos at encontrar um
299
Inicializa
endereo E/S
para o primeiro
perifrico
L o porto
de estado
da interface
Isola bit de
estado de
perifrico pronto
sim
pronto?
no
Passa para
endereo E/S do
perifrico seguinte
Figura 14.23: Fluxograma da fase inicial da rotina de interrupo para interrupes no vectorizadas que identifica qual o perifrico que deve ser servido.
que esteja pronto a transferir informao. Este procedimento est ilustrado na
Figura 14.23.
Este processo tambm chamado de polling, apesar de ser uma forma diferente polling da apresentada na Seco 14.5.1. Aqui sabe-se partida que
haver um perifrico pronto a transferir informao e o objectivo do polling
identidicar qual. Anteriormente, o polling foi usado no contexto de uma espera
activa, em que se fica em ciclo at o perifrico com quem se est a realizar a
transferncia esteja pronto.
Portanto, no caso de interrupes no vectorizadas, a rotina de interrupo
nica, sendo o fluxograma da sua fase inicial o apresentado na Figura 14.23.
No entanto, uma vez identificado o perifrico a servir, esta salta para uma zona
de cdigo de tratamento da interrupo especfico a esse perifrico.
Neste mtodo de interrupes, a maneira de definir prioridades conseguida atravs da ordem com que os perifricos so testados. fcil observar
que, caso tenha havido mais do que um perifrico a gerar uma interrupo,
ser atendido primeiro o que for testado em primeiro lugar. De facto, nessa altura, o processador nem se chega a aperceber que h mais perifricos a requerer a sua ateno. Depois de ter tratado do primeiro perifrico, como a linha
de interrupo continuar activa, haver uma nova chamada rotina de tra-
300
301
Interrupes
Pendentes
Int0
Int1
Codificador
com
prioridades
Int2
Vector de
interrupo
Int3
Int4
Int5
Int6
Int7
Linha de
interrupo
(INT)
Mscara de
Interrupes
302
Int0
Int1
Int2
Int3
Int4
Int5
Int6
Int7
Interrupes
Pendentes
Mscara de
Interrupes
Interrupo
Servida
Resolvedor
de
Interrupes
Vector de
interrupo
Linha de
interrupo
(INT)
Figura 14.25: Diagrama da organizao interna de um controlador de interrupes com registo de informao do vector a ser servido.
303
304
Endereos
Dados
MRD/MWR
IORD/IOWR
UCP
Perifrico A
Memria
Primria
DMAR_A
Controlador
DMA
BUS_REQUEST
Perifrico B
DMAG_A
DMAR_B
...
DMAG_B
BUS_GRANT
_
Repare-se
os
sinais
_
/
_
como os
que
tanto
_ /
sinais
_ seguem um protocolo de double hand-shaking.
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. Nomeadamente, 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
Endereos
305
n
LD
OE
Endereo
Read
Lgica
de
Controlo
Write
BUS_REQUEST
LD
OE
Contador
de Acessos
BUS_GRANT
LD
OE Registo de
Controlo
Dados
DMAR
DMAG
2. activa a linha
ou
, conforme se trate de leitura da memria para o perifrico ou o inverso;
3. activa a linha
(DMA Grant) do perifrico, o que o leva a receber a palavra proveniente da memria pelo barramento de dados ou a
transferir a sua palavra interna para o barramento de dados.
Acabado este ciclo, o controlador:
1. retira o pedido
_
306
Pede controlo
dos
barramentos
Transfere
uma palavra
Cede
controlo dos
barramentos
sim
Fim
Transfer.?
no
Perif.
pronto?
no
sim
307
Pede controlo
dos
barramentos
Transfere
uma palavra
sim
Fim
Transfer.?
no
Perif.
pronto?
sim
no
Cede
controlo dos
barramentos
Cede
controlo dos
barramentos
Perif.
pronto?
no
sim
308
Pede controlo
dos
barramentos
Transfere
uma palavra
sim
Fim
Transfer.?
no
Cede
controlo dos
barramentos
Perif.
pronto?
no
sim
309
Endereos
Dados
MRD/MWR
UCP
Memria
Primria
BUS_REQUEST
Processador
Entradas/Saidas
BUS_GRANT
Endereos
Dados
Interrupao
IORD/IOWR
Perifrico A
Perifrico B
...
Glossrio
313