You are on page 1of 184

C-1

CIRCUITOS LÓGICOS BÁSICOS


C.1 - INTRODUÇÃO À LÓGICA DIGITAL

A informação pode ser veiculada segundo 2 tipos de


sinais com características diferentes: sinais
analógicos ou sinais digitais.
C.1.1 - Características essenciais

Sinal analógico - Variação contínua ao longo do


tempo, sem saltos bruscos.

Fig 1

Ex.: saída de um microfone, sinal de vídeo, etc.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C-2
Sinal digital - Variação por saltos de uma forma
descontínua. Toma apenas um
determinado número de valores.

V
4
3
2
1
0
-1
-2

nível ALTO 1

nível BAIXO 0
Fig 2

Ex.: informação gravada num CD, fluxo de dados


entre um computador e uma impressora, etc.

Aos circuitos electrónicos que funcionam baseados


apenas em 2 valores de amplitude chamam-se Digitais
Binários.

Normalmente utiliza-se a lógica positiva que


atribui ao valor mais elevado de tensão o nível 1
(ou verdadeiro) e ao valor mais baixo de tensão o
nível 0 (ou falso).

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C-3
C.1.2 - Circuitos Digitais Binários

Uma grande vantagem dos circuitos digitais binários


é que com apenas 2 níveis de tensão bem separados
consegue-se uma grande imunidade ao ruído.

Na figura seguinte apresenta-se uma situação com as


correspondências seguintes

Nível 1 → 5 Volt
Nível 0 → 0 Volt
Ruído → ±1 Volt

V
5
3.5
1.5
0
t

V
5

0
t
Fig 3

Se considerarmos que

tensão inferior a 1.5 Volt ⇒ nível 0


tensão superior a 3.5 Volt ⇒ nível 1

então o sinal original corrompido pelo ruído pode


ser facilmente regenerado.

De notar que um sinal analógico afectado por ruído


não pode ser regenerado.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C-4
C.2 - IMPLEMENTAÇÃO DE UM SISTEMA LÓGICO

Um circuito digital ou lógico pode ser encarado


como uma caixa com n entradas e m saídas que
realiza uma determinada função lógica.

Entrada 1 Saída 1
Entrada 2 Circuito
Saída 2
Lógico
Entrada n Saída m
Fig 4

Um circuito lógico pode ser materializado com


interruptores, com relés, com electroímans, com
díodos, com transistores ou com circuitos
integrados.

No entanto, tanto as entradas como as saídas apenas


podem tomar 2 valores ou estados, opostos um ao
outro.

Exemplo de um circuito lógico AND realizado com


interruptores.
I1 I2

Interruptores

Bateria Lâmpada

Fig 5

Neste caso as entradas são os interruptores e podem


tomar os valores aberto ou fechado. A saída é uma
lâmpada que toma os valores acesa ou apagada.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C-5
C.3 - PORTA "AND"

C.3.1 - Generalidades

O circuito anterior pode ser representado pela


tabela de verdade seguinte.

Entradas Saída
I1 I2 L
Aberto Aberto Apagada
Aberto Fechado Apagada
Fechado Aberto Apagada
Fechado Fechado Acesa

Em termos de lógica binária podemos simplificar a


tabela anterior se adoptarmos a correspondência
seguinte:

Interruptores: Aberto ↔ 0
Fechado ↔ 1

Lâmpada: Apagada ↔ 0
Acesa ↔ 1

Entradas Saída
I1 I2 L
0 0 0
0 1 0
1 0 0
1 1 1

Este circuito tem o nome de porta E ou gate AND e


realiza a função de produto lógico pois apenas tem
saída 1 quando as entradas são ambas 1.
C.3.2 - Materialização electrónica

O circuito AND pode ser realizado com díodos.


Na figura abaixo, as entradas são A e B e a saída é
o ponto S.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C-6
5 V

A
S
B

Fig 6

Num circuito electrónico os valores 1 e 0


representam tensões.

De seguida aplicaremos às entradas deste circuito


todas as combinações possíveis de valores lógicos
utilizando as seguintes correspondências:

0 volt ↔ 0 lógico
5 volts ↔ 1 lógico

Observando a tensão obtida em S para cada caso,


poderemos construir a tabela de verdade deste
circuito.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C-7
1º caso: A=B=0

5 V

A=0
S
B=0

0,6 V

Fig 7

Analisando a curva característica do díodo conclui-


-se que enquanto a tensão no sentido directo for
inferior a 0,6V o díodo não conduz. Para além desse
valor a corrente aumenta sem que a tensão sofra
grande variação. Assim, a tensão na saída S é 0,6V
que se encontra na zona do nível lógico 0.

I
D

I
D

0,6 V

0,6 V V
D
Fig 8

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C-8
2º caso: A=1 e B=0
5 V

A=1
S
B=0

Fig 9

O díodo da entrada A está ligado aos 5 volts. Isto


significa que está ao corte pois o seu ânodo (S)
nunca poderá ter uma tensão superior a 5V.
Por outro lado o díodo de B está ligado à massa
forçando S a ficar a 0,6 V - nível lógico 0.

3º caso: A=B=1
5 V

A=1
S
B=1

Fig 10

Nenhum dos díodos conduz pois têm o ânodo e cátodo


ligados ao mesmo potencial. Logo a tensão em S é
5V.
Tabela lógica ou de verdade de um circuito AND
A B S
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C-9
0 0 0
0 1 0
1 0 0
1 1 1

São possíveis outras materializações de circuitos


AND utilizando outros componentes electrónicos.

No entanto, num projecto de sistemas digitais não


interessa conhecer a estrutura interna de cada
porta, mas apenas a função lógica por ela
realizada.

Para além disso é necessário conhecer as


características eléctricas das entradas e saídas de
cada porta - impedâncias de entrada e saída,
correntes de entrada e saída, tempos de propagação.

C.3.3 - Simbologia

• Símbolos usados para representar os circuitos


lógicos AND de 2 e 3 entradas

A
S S = A . B
B

A
B T T = A . B . C
C
Fig 11

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C - 10
Tabela de verdade do circuito AND de 3 entradas

A B C T
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1

C.4 - PORTA "OR"

C.4.1 - Generalidades

O circuito Inclusive OR ou simplesmente OR é outro


elemento lógico básico.

Exemplo de implementação electromecânica


I2

I1

Bateria Lâmpada
Interruptores

Fig 12

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C - 11
Tabela de verdade correspondente

Entradas Saída
I1 I2 L
0 0 0
0 1 1
1 0 1
1 1 1

C.4.2 - Implementação electrónica

Na implementação seguinte mantém-se o valor lógico


0 para 0 volt e o valor lógico 1 para 5 volts.

B S
C

Fig 13

Se todas as entradas forem ligadas à massa, a saída


é 0 uma vez que não há tensão no circuito.

Se uma das entradas for ligada a 5 volts (nível


lógico 1), o díodo respectivo fica polarizado
directamente (conduz).
Logo a saída S terá uma tensão de 4,4 volts devido
à queda de tensão no díodo de 0,6 volt, o que
corresponde ao nível 1 na saída.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C - 12
5 V

0,6 V
A=1
4,4 V
B=0 S
C=0

Fig 14

Basta, portanto, que uma entrada seja 1 para que a


saída tenha o valor 1. É o circuito lógico OR.

C.4.3 - Simbologia

Símbolos usados para representar os circuitos OR de


2 e 4 entradas

A
S S = A + B
B

A
B
C T T = A + B + C +
D
Fig 15

Tabela de verdade do circuito OR de 2 entradas

A B S
0 0 0
0 1 1
1 0 1
1 1 1
C.5 - CIRCUITO "NOT" OU INVERSOR

C.5.1 - Generalidades

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C - 13
Um circuito seguinte representa uma negação
realizada a partir de um relé.

S
E

Fig 16

A entrada E deste circuito, quando actuada (nível


lógico 1), puxa o interruptor. Neste caso o
circuito fica aberto e a lâmpada apaga-se saída S a
0.

Quando a entrada não está actuada (nível lógico 0)


o circuito está fechado, mantendo-se acesa a
lâmpada.

A tabela de verdade deste circuito é a tabela da


negação.

E S
0 1
1 0

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C - 14
C.5.2 - Materialização electrónica

Não é possível realizar um circuito NOT com díodos,


mas pode utilizar-se um transistor.
5 V I =βI
C B

5 V
R =1K Ω I = = 5 mA
C C máx 1K Ω
IC
R =10K Ω
B Para V > 0,6V :
IB B
β =20
V V -0,6V V -0,6V
V C B B
B I = =
0,6V C R
B 10K Ω

Fig 17

Aplicando 0 volt em VB, a corrente de base IB é nula


pois a junção base-emissor precisa de 0,6 volts
para conduzir. Deste modo IC também é nula, pois
IC=βIB. Nesta situação o transistor não conduz (está
ao corte) e a tensão VC é 5V.

Aplicando 5 volts na entrada VB o transistor passa


a conduzir. A queda de tensão na junção base-
emissor é de 0,6 volts, logo a queda de tensão em
RB é de 4,4 volts. Assim a corrente IB será:

4,4V
IB = = 0,44mA
10kΩ

Pela expressão IC=βIB a corrente IC seria 8,8mA que


é um valor superior ao seu valor máximo. Diz-se
neste caso que o transistor está saturado.

A corrente IC atinge o seu valor máximo para


IB=0,25mA que corresponde a uma tensão VB=3,1 V.

A este valor máximo de IC corresponde o valor mais


baixo de VC.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C - 15
Característica entrada-saída do circuito com
transistor

V
C
5

0,6 3,1 5V V
B
Fig 18

A electrónica analógica utiliza a zona linear


(intermédia) do funcionamento do transistor.

Em sistemas digitais utiliza-se o transistor como


chave pelo que apenas são relevantes as zonas de
funcionamento em que o transistor está cortado ou
saturado.

Símbolo do inversor e variantes

Fig 19

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C - 16
C.6 - CIRCUITOS LÓGICOS INTEGRADOS

Circuito integrado - bloco de cerâmica cinzenta ou


preta com o formato paralelipipédico ou prismático.
As dimensões variam de poucos mm até alguns cm. O
número de pernos vai de algumas unidades até várias
dezenas.

Os circuitos integrados mais simples contêm apenas


algumas portas lógicas elementares.

Exemplo de circuitos integrados da família TTL


série 7400.

• 4 portas AND de 2 entradas


14 13 12 11 10 9 8
V
CC

7408
GND
1 2 3 4 5 6 7

A B S S = A . B
Fig 20

• 4 portas OR de 2 entradas
14 13 12 11 10 9 8
V
CC

7432
GND
1 2 3 4 5 6 7

A B S S = A + B
Fig 21

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C - 17

• 6 portas NOT

14 13 12 11 10 9 8
V
CC

7404
GND
1 2 3 4 5 6 7

A S S = A
Fig 22

• 3 portas AND de 3 entradas

14 13 12 11 10 9 8
V
CC

7411
GND
1 2 3 4 5 6 7

A B C S S = A . B . C
Fig 23

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
C - 18
C.7 - PORTA "NAND"

O circuito NAND é composto por 2 circuitos básicos:


o circuito NOT precedido do circuito AND.

Símbolo e equação lógica do circuito NAND

A
S S = A . B
B
Fig 24

A bolinha significa uma negação, pelo que a tabela


de verdade do circuito NAND se deduz de imediato.

A B S
0 0 1
0 1 1
1 0 1
1 1 0

C.8 - PORTA "NOR"

O circuito NOR é um circuito OR com a saída negada,


pelo que o seu símbolo corresponde a um circuito
NOT precedido de um OR.
A
S S = A + B
B
Fig 25

Tabela de verdade do circuito NOR

A B S
0 0 1
0 1 0
1 0 0
1 1 0

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B-1

ÁLGEBRA DE BOOLE
B.1 - DIAGRAMA DE VENN

No século passado Georges Boole desenvolveu uma


teoria matemática com base nas leis da lógica - a
Álgebra de Boole - cuja aplicação nos circuitos
digitais e computadores é de primordial
importância.

A lógica matemática tem por base a teoria dos


conjuntos, podendo utilizar-se meios gráficos como
forma de representar propriedades.

Diagrama de Venn

A A
Fig 26

Admitindo que o conjunto Universo é o dos números


inteiros, pode definir-se:

A - conjunto dos números pares


B - conjunto dos múltiplos de 3

Aplicando sobre estes conjuntos as operações


lógicas básicas, obtém-se:

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B-2
A.B - Conjunto dos números pares e múltiplos de 3
Conjunção, intersecção ou produto lógico

A B
Fig 27

A+B - Conjunto dos números pares ou múltiplos de 3


União, disjunção ou soma lógica

A B
Fig 28

_
A - Conjunto dos números ímpares
Complemento ou negação

A B
Fig 29

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B-3
B.2 - AXIOMAS DA ÁLGEBRA DE BOOLE

Sendo B≠∅, definem-se as propriedades seguintes


para a estrutura {B, +, .}.
B.2.1 - Soma e produto são operações fechadas
∀a, b ∈ B : a+b ∈ B

∀a, b ∈ B: a. b ∈ B

B.2.2 - Comutatividade
∀a, b ∈ B : a+b = b+a

∀a, b ∈ B: a. b = b. a

B.2.3 - Existência de elemento neutro


∃u ∈ B, ∀a ∈ B : a + u = a

∃v ∈ B, ∀a ∈ B : a . v = a

B.2.4 - Distributividade das duas operações uma em


relação à outra
∀a, b, c ∈ B : a + (b . c) = (a + b) . (a + c)

∀a, b, c ∈ B : a . (b + c) = (a . b) + (a . c)
B.2.5 - Complementação
∀a ∈ B, ∃ a ∈ B : a + a
_ _
= v

∀a ∈ B, ∃ a ∈ B : a .
_ _
a = u

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B-4
B.3 - TEOREMAS DA ÁLGEBRA DE BOOLE

B.3.1 - Unicidade dos elementos neutros

• O elemento u é único.

Demonstração

Sejam u1 e u2 dois elementos neutros da soma.

u1 + u2 = u1 (B.2.3)
u1 + u2 = u2 (B.2.3)
u1 + u2 = u2 + u1 (B.2.2)
u1 = u2

• O elemento v é único.

Demonstração

Sejam v1 e v2 dois elementos neutros do produto.


v1 . v2 = v1 (B.2.3)
v1 . v2 = v2 (B.2.3)
v1 . v2 = v2 . v1 (B.2.2)
v1 = v2

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B-5
B.3.2 - Idempotência

• ∀a ∈ B : a + a = a
Demonstração

a + a = (a + a) . 1 (B.2.3)
a + a = (a + a) . (a + a ) (B.2.5)
= a + (a . a ) (B.2.4)
= a + 0 (B.2.5)
= a (B.2.3)

• ∀a ∈ B : a . a = a
Demonstração

a . a = (a . a) + 0 (B.2.3)
a . a = (a . a) + (a . a ) (B.2.5)
= a . (a + a ) (B.2.4)
= a . 1 (B.2.5)
= a (B.2.3)
B.3.3 - Elementos absorventes

• ∀a ∈ B : a + 1 = 1
Demonstração

a + 1 = (a + 1) . 1 (B.2.3)
= (a + 1) . (a + a ) (B.2.5)
= a + (1 . a ) (B.2.4)
= a + a (B.2.3)
= 1 (B.2.5)

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B-6

• ∀a ∈ B : a . 0 = 0
Demonstração

a . 0 = (a . 0) + 0 (B.2.3)
= (a . 0) + (a . a ) (B.2.5)
= a . (0 + a ) (B.2.4)
= a . a (B.2.3)
= 0 (B.2.5)
B.3.4 - Absorção

• ∀a, b ∈ B : a + (a . b) = a
Demonstração

a + (a . b) = (a . 1) + (a . b) (B.2.3)
= a . (1 + b) (B.2.4)
= a . 1 (B.3.3)
= a (B.2.3)
• ∀a, b ∈ B : a . (a + b) = a
Demonstração

a . (a + b) = (a + 0) + (a + b) (B.2.3)
= a + (0 . b) (B.2.4)
= a + 0 (B.3.3)
= a (B.2.3)

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B-7
B.3.5 - Princípio da dualidade

Toda a afirmação ou identidade algébrica dedutível


dos axiomas e definições de uma Álgebra de Boole
permanece válida se as operações (+) e (.), e os
elementos neutros u e v forem trocados.

Este princípio resulta da simetria das definições e


axiomas em relação às duas operações e aos dois
elementos neutros.

B.3.6 - Unicidade do elemento a

Demonstração

Supor que a 1 e a 2 são ambos complementos de a.

a1 . 1 = a1 (B.2.3)
a 1 . (a + a 2) = a 1 (B.2.5)
a1 . a + a1 . a2 = a1 (B.2.4)
0 + a1 . a2 = a1 (B.2.5)
a1 . a2 = a1 (B.2.3)
a2 . a1 = a1 (B.2.2)
a2 . a1 + 0 = a1 (B.2.3)
a2 . a1 + a2 . a = a1 (B.2.5)
a 2 . (a 1 + a) = a 1 (B.2.4)
a2 . 1 = a1 (B.2.5)
a2 = a1 (B.2.3)

B.3.7 - Involução
Pela definição de complemento conclui-se que

a = a

B.3.8 - Leis de De Morgan

a1 + a2 = a1 . a2

a1 . a2 = a1 + a2

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B-8
Prova-se o teorema recorrendo às igualdades

(a1 + a2) + (a 1 . a 2) = 1
(a1 + a2) . (a 1 . a 2) = 0
que por B.3.6 e B.2.5 permitem concluir que a 1 . a 2
é o complemento único de a1 + a2.
Para a demonstração recorre-se aos lemas:

L1a : a1 + (a 1 + a2) = 1
L1b : a1 . (a 1 . a2) = 0

Demonstração de L1a

a1 + (a 1 + a2) = 1 . [a1 + (a 1 + a2)] (B.2.3)


= (a1 + a 1).[a1 + (a 1 + a2)] (B.2.5)
= a1 + [a 1 . (a 1 + a2)] (B.2.4)
= a1 + a 1 (B.3.4)
= 1 (B.2.5)

A demonstração de L1b é dual de L1a.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B-9
Demonstração de B.3.9

(a1+a2)+(a 1.a 2)=[(a1+a2)+a 1].[(a1+a2)+a 2] (B.2.4)


= 1 . 1 (L1a)
= 1 (B.2.3)

(a1+a2).(a 1.a 2)=a1.(a 1.a 2)+a2.(a 1.a 2) (B.2.4)


= 0 . 0 (L1a)
= 0 (B.2.3)

Por B.2.5 e B.3.6 conclui-se que

a1 + a2 = a1 . a2

A demonstração de a1 . a2 = a1 + a2 é dual da
anterior.

As leis de De Morgan generalizam-se para n


elementos.

a1 + ... + an = a1 . ... . an

a1 . ... . an = a1 + ... + an

B.3.9 - Associatividade
∀a, b, c ∈ B : (a + b) + c = a + (b + c)

∀a, b, c ∈ B : (a . b) . c = a . (b . c)

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 10
B.4 - ÁLGEBRA DE BOOLE A DOIS VALORES

A Álgebra de Boole a dois valores baseia-se na


utilização de 2 estados - 0 e 1, ou verdadeiro e
falso - tal como o funcionamento dos circuitos
digitais binários.

Convenciona-se representar o conjunto vazio por 0 e


o universo por 1.

B.4.1 - Tabelas das operações

Soma lógica Produto lógico Complementação

0 + 0 = 0 0 + 0 = 0
0 + 1 = 1 0 + 1 = 0 0 = 1
1 + 0 = 1 1 + 0 = 0 1 = 0
1 + 1 = 1 1 + 1 = 1

B.4.2 - Leis da Álgebra de Boole a 2 valores

Soma lógica Produto lógico

El. neutro 0 + a = a 1 . a = a
El. absorvente 1 + a = 1 0 . a = 0
Idempotência a + a = a a . a = a
Complementaridade a + a = 1 a . a = 0
Comutatividade a + b = b + a a . b = b . a
Associatividade a + (b + c) = (a + b) + c a . (b . c) = (a . b) . c
Distributividade a + b.c = (a + b).(a + c) a.(b + c) = a.b + a.c
Absorção a + a.b = a a.(a + b) = a
Absorção a + a .b = a + b a.( a + b) = a.b
Leis de De Morgan a1 + a 2 = a 1 . a 2 a1 . a 2 = a 1 + a 2
Leis de De Morgan a1 + ... + a n = a1 . ... . a n a1 . ... . a n = a1 + ... + a n

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 11
B.4.3 - Simplificação algébrica de funções lógicas

A um circuito lógico corresponde uma determinada


expressão lógica ou booleana.

Simplificar uma expressão corresponde a chegar-se a


um circuito menos complexo e com menos portas.

• Exemplo de simplificação

d = c.b.a + c. b .a + b.a + c.b.a


Utilizando as propriedades comutativa (B.2.2) e
distributiva (B.2.4) obtém-se

d = c.a.(b + b ) + b.a .(1 + c)


Pela propriedade de complementação (B.2.5) e
elemento absorvente (B.3.3) vem

d = c.a.1 + b.a .1
Assim

d = c.a + b.a

O método algébrico não garante a obtenção da


expressão mais simples. Para tal utiliza-se um
método gráfico de simplificação.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 12
B.4.4 - Aplicação da Álgebra de Boole aos circuitos
digitais

• Exemplo de aplicação da propriedade do elemento


neutro do produto lógico para transformar uma porta
AND de 3 entradas numa porta AND de 2 entradas.
1
A S
B
Fig 30

A equação do circuito é S = 1 . A . B

A saída S só é 1 quando A e B são simultaneamente


1. Logo pode-se considerar que o circuito acima é
equivalente a um circuito AND de 2 entradas.

1 A
A S S
B B
Fig 31

Prova-se deste modo que o 1 lógico é o elemento


neutro do AND ou produto lógico.

• Se ligarmos uma das entradas do circuito AND ao 0


lógico, a equação S = A.B.C fica

S = A.B.0

Pela definição do AND basta haver uma entrada a


zero para que a saída seja 0.
Assim vem S = A.B.0 = 0.

Esta propriedade indica que 0 é o elemento


absorvente do circuito AND ou produto lógico.

• Uma outra aplicação da propriedade do elemento


neutro permite a transformação de um circuito NAND
numa porta NOT.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 13
1
S S = A . 1
A
Fig 32

Sendo A.1 = A a equação do circuito reduz-se a

S = A

Logo, o circuito anterior é equivalente a uma


negação, desde que a outra entrada esteja ligada ao
1 lógico.

• Outra forma de realizar uma negação pode ser com


base num circuito NAND ou NOR.
A
S S = A . A = A

A
S S = A + A = A
Fig 33

• Uma outra propriedade, a involução, pode ser


verificada com 2 circuitos NOT.

A A A
S
Fig 34

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 14

Quando A=0 então A =1 e A =0, pois é a negação de A .


Quando A=1 então A =0 e A =1, pois é a negação de A .
Fica assim provado que duas negações seguidas
formam uma afirmação, ou seja

A = A

• Também as leis de De Morgan podem ser aplicadas


aos circuitos digitais.

A 1ª lei de De Morgan diz que um AND com saída


negada é equivalente a um OR com entradas negadas.

A A
S T
B B

S = A . B T = A + B
Fig 35

O 2º circuito é dual do 1º mas são ambos NAND.

Tabela de verdade dos símbolos NAND

A B A . B A + B
0 0 0 . 0 = 0 = 1 0 + 0 = 1 + 1 = 1
0 1 0 . 1 = 0 = 1 0 + 1 = 1 + 0 = 1
1 0 1 . 0 = 0 = 1 1 + 0 = 0 + 1 = 1
1 1 1 . 1 = 1 = 0 1 + 1 = 0 + 0 = 0

As duas colunas da direita são iguais pelo que fica


provada a igualdade

A . B = A + B
A 2ª lei de De Morgan afirma que um OR com a saída
negada é equivalente a um AND com as entradas
negadas.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 15
A A
S T
B B

S = A + B T = A . B
Fig 36

O 2º circuito é dual do 1º mas são ambos NOR.

Tabela de verdade dos símbolos NOR

A B A + B A · B
0 0 0 + 0 = 0 = 1 0 . 0 = 1 . 1 = 1
0 1 0 + 1 = 1 = 0 0 . 1 = 1 . 0 = 0
1 0 1 + 0 = 1 = 0 1 . 0 = 0 . 1 = 0
1 1 1 + 1 = 1 = 0 1 . 1 = 0 . 0 = 0

As duas colunas da direita são iguais pelo que fica


provada a igualdade

A + B = A . B

• Exemplo de realização de um AND a partir apenas


de portas NOR.

A A A + B
1

3 A + B = A . B
B
2
B
Fig 37

Os circuitos NOR 1 e 2 são utilizados para fazer as


negações dos sinais de entrada.
Tem-se assim à entrada do NOR 3: A e B .
Considerando o NOR 3 composto por um OR seguido de
um NOT, à saída do OR tem-se a soma A + B .
À saída do circuito total tem-se então A + B .

A 2ª lei de De Morgan diz que A + B = A . B .


____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 16

Do ponto de vista prático pode utilizar-se a


seguinte regra: o 2º membro obtém-se do 1º
dividindo em duas a barra por cima do sinal (+) e
trocando-o por (·).

Aplicando esta regra à expressão A + B obtém-se

A . B

que por sua vez é A · B .

• Do mesmo modo pode realizar-se um circuito OR a


partir apenas de portas NAND.

A A

A . B = A + B
B

B
Fig 38

Aplicando a 1ª lei de De Morgan divide-se a barra e


substitui-se o (·) pelo (+).

A . B = A + B = A + B
• Exemplo de circuito típico em sistemas digitais

A A.B
B S = A.B + C.D

C
D C.D
Fig 39

O circuito da figura acima tem a equação

S = A.B + C.D

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 17
Para realizar este circuito é necessário utilizar 2
caixas de circuitos integrados: uma com portas OR e
outra com portas AND.

Através de um artifício pode alterar-se esta


situação, uniformizando o tipo de portas a usar.
Sabendo que 2 negações seguidas são uma afirmação
vem

A A.B
B S = A.B + C

C
D C.D
Fig 40

Apesar do circuito ser diferente, a função lógica


realizada é a mesma.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 18
Substituindo agora a porta da direita (NAND) por
outra equivalente tem-se

A A.B
B S = (A.B) . (C.D)

C
D C.D
Fig 41

Aplicando a 1ª lei de De Morgan à saída deste


circuito seguida da involução fica

A.B . C.D = A.B + C.D = A.B + C.D

Os circuitos NAND e NOR são os mais largamente


utilizados pois permitem construir quaisquer
circuitos básicos, nomeadamente AND, OR e NOT. Para
além disso têm uma estrutura electrónica mais
simples o que é vantajoso em termos de espaço e
energia consumida.

B.4.5 - Portas "XOR" e Equivalência

Um circuito que existe também na forma integrada é


o somador de 1 bit, "ou exclusivo" ou XOR
(exclusive or).

A
S S = A⊕ B
B
Fig 42

Este circuito tem saída 1 quando uma das entradas é


1, mas tem saída 0 se ambas as entradas forem
simultaneamente 0 ou 1.
Tabela de verdade do circuito XOR

A B S
0 0 0
0 1 1
1 0 1
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 19
1 1 0

Como a saída é 1 quando A=0 e B=1 ou A=1 e B=0,


então o circuito XOR pode ser realizado pela
expressão seguinte:

S = A .B + A. B

A B S = A .B + A. B
0 0 0.0 + 0.0 = 0 + 0 = 0
0 1 0.1 + 0.1 = 1 + 0 = 1
1 0 1.0 + 1.0 = 0 + 1 = 1
1 1 1.1 + 1.1 = 0 + 0 = 0

Para a realização deste circuito são necessários


dois AND, um OR e dois NOT.

A A.B
S = A.B + A

B A.B
Fig 43

Pode, no entanto, realizar-se a mesma função XOR só


com circuitos NAND.

A A.A.B
A.B S = (A.A.B).(B.A.B

B
B.A.B
Fig 44

Confirmação:

A.A.B . B.A.B = A.A.B + B.A.B (B.3.8)


= A.A.B + B.A.B (B.3.7)
= A.( A + B ) + B.( A + B ) (B.3.8)
= A. A + A. B + B. A + B. B (B.2.4)
= 0 + A. B + B. A + 0 (B.2.5)
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 20
= A. B + B. A (B.2.3)

Outro circuito simples existente na forma de


circuito integrado é o circuito equivalência.
É um circuito com 2 entradas que tem saída 1 quando
A=B, ou seja, quando A=1 e B=1 ou A=0 e B=0.

O circuito equivalência tem uma tabela de verdade


que é a negação da tabela do cirucito NOR, logo
pode obter-se negando a saída do NOR.

A
S S = A ⊕ B = A⊗ B
B
Fig 45

Tabela de verdade do circuito equivalência

A B S
0 0 1
0 1 0
1 0 0
1 1 1
B.4.6 - Funções booleanas de 2 variáveis

Tabela de funções
x1 0 1 0 1 Designação
x2 0 0 1 1
y0 0 0 0 0 zero
y1 0 0 0 1 produto lógico, ou AND (y = x1.x2)
y2 0 0 1 0 inibição, ou NIX (y = x1 NIX x2)
y3 0 0 1 1 x2 (y = x2)
y4 0 1 0 0 inibição, ou NIX (y = x2 NIX x1)
y5 0 1 0 1 x (y = x)
y6 0 1 1 0 soma módulo 2, ou exclusivo, ou
XOR (y = x1 ⊕ x2)
y7 0 1 1 1 soma lógica, ou OR (y = x1 OR x2)
y8 1 0 0 0 NOR (y = x1 NOR x2 ,
ou y = x1 + x2)
y9 1 0 0 1 equivalência (y = x1 ⊗ x2)
y10 1 0 1 0 complementação de x1, (y = x1)
y11 1 0 1 1 implicação material (x1 ⇒ x2)
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
B - 21
y12 1 1 0 0 complementação de x2, (y = x2)
y13 1 1 0 1 implicação material (x2 ⇒ x1)
y14 1 1 1 0 NAND (y = x1 NAND x2 ,
ou y = x1 . x2)
y15 1 1 1 1 unidade ou identidade

Estas funções podem ser escritas com base nas 3


operações básicas AND, OR e NOT.
y0 = 0 y8 = x1 + x2
y1 = x1.x2 y9 = x1. x2 + x1.x2
y2 = x1.x2 y10 = x1
y3 = x2 y11 = x1 + x2
y4 = x2.x1 y12 = x2
y5 = x1 y13 = x1 + x2
y6 = x1. x2 + x1.x2 y14 = x1 . x2
y7 = x1 + x2 y15 = 1

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T-1

SISTEMAS DE NUMERAÇÃO
N.1 - INTRODUÇÃO

Sendo os circuitos digitais constituídos por


elementos dotados de 2 estados distintos, o sistema
de numeração binário tem um papel importante no seu
estudo. Os sistemas octal (base 8) e hexadecimal
(base 16) desempenham também um papel importante
para compactar a escrita de um número binário.
N.2 - CONVERSÃO DA BASE B PARA A BASE 10

Seja X um número com a seguinte representação na


base b.

X = an-1an-2 ... a0,a-1 ... a-p (b)

Cada um dos n+p símbolos ai exprime um número


inteiro entre 0 e b-1, tendo um peso igual a bi.

O valor numérico de X será então:

X = an-1bn-1+an-2bn-2+...+aibi+...+a0b0+a-1b-1+...+a-pb-p

Esta expressão permite conhecer a representação


decimal de qualquer número desde que se conheça a
representação decimal de b e ai.

Exemplos

111000,1100101(2) = 25 + 24 + 23 + 2-1 + 2-2 + 2-5 + 2-7


= 56,7890625(10)

55,46(8) = 5×81 + 5 + 4×8-1 + 6×8-2 = 45,59(10)

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T-2
Símbolos usados nas bases 2, 8, 10 e 16

Base Símbolos
2 0, 1
8 0, 1, 2, 3, 4, 5, 6, 7
10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
16 0, 1, 2, 3, 4, 5, 6, 7,
8, 9, A, B, C, D, E, F

Exemplo

2D,9A(16) = 2×16 + 13 + 9×16-1 + 10×16-2


= 45,60...

Tabela de potências de 2

2i i 2-i
2 1 0,5
4 2 0,25
8 3 0,125
16 4 0,0625
32 5 0,03125
64 6 0,015625
128 7 0,0078125
256 8 0,00390625
512 9 0,001953125
1024 10 0,0009765625
2048 11 0,00048828125
4096 12 0,000244140625

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T-3
N.3 - CONVERSÃO DA BASE 10 PARA A BASE B

As partes inteira e fraccionária do número são


consideradas separadamente.
N.3.1 - Método da divisão-multiplicação
Parte inteira

Considere-se um número cuja parte inteira é


constituída por 5 símbolos

I = a4a3a2a1a0(b)
I = a4b4 + a3b3 + a2b2 + a1b1 + a0b0

Se se dividir I por b e todos os quocientes


sucessivamente obtidos, também por b obtém-se

I = b.(a4b3 + a3b2 + a2b + a1) + a0 = b.Q1 + a0

Q1 = b.(a4b2 + a3b + a2) + a1

Q2 = b.(a4b + a3 ) + a2

Q3 = b.a4 + a3

Q4 = a4
Verifica-se que os sucessivos restos correspondem
aos símbolos que representam I no sistema de base
b.
Deste modo é possível a conversão de um sistema
onde se tenha prática operatória, para qualquer
outro sistema. Basta efectuar as operações no
primeiro sistema e saber representar no segundo
sistema os restos das divisões.

Exemplo: Converter 66(10) para a base 2

66 2
06 33 2
0 13 16 2
1 0 8 2
0 4 2
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T-4
0 2 2
0 1

66(10) = 1000010(2)
Para hexadecimal será

66 16
02 4
66(10) = 42(16)
Parte fraccionária

Considere-se a parte fraccionária do número com 4


símbolos

F = 0,a-1a-2a-3a-4

Multiplicando-se sucessivamente F e as partes


fraccionárias resultantes por b vem

b.F = b.(0,a-1a-2a-3a-4) = a-1,a-2a-3a-4


b.(0,a-2a-3a-4) = a-2,a-3a-4
b.(0,a-3a-4) = a-3,a-4
b.(0,a-4) = a-4

Obtém-se uma sucessão de números cujas partes


inteiras correspondem aos sucessivos símbolos de
representação de F.
Exemplo: Passar 0,468(10) para base 2

2 × 0,468 = 0,936
2 × 0,936 = 1,872
2 × 0,872 = 1,744
2 × 0,744 = 1,488
2 × 0,488 = 0,976
2 × 0,976 = 1,952
2 × 0,952 = 1,904
2 × 0,904 = 1,808

0,468(10) = 0,01110111...(2)

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T-5
Salvo algumas excepções a dízima na conversão da
base 10 para a base 2 é infinita.
N.3.2 - Método da subtracção

Subtrai-se, do número decimal dado, o peso da base


mais elevado possível, o que dá um 1 na posição
binária correspondente a esse peso. Continuam-se as
subtracções até que o número dado tenha um valor
inferior à base.

Exemplo: Converter 4645(10) para base 2


O peso de base 2 mais elevado que se pode subtrair
de 4645 é 212=4096, que dá 1 na 13ª (12+1) posição à
esquerda da vírgula.
Resta 549 (4645-4096), sendo agora o peso mais
elevado 29=512, dando um 1 na 10ª posição.
Fica 37; subtraindo 25=32 dá um 1 na 6ª posição.
Fica 5; subtraindo 22=4 dá um 1 na 3ª posição.
Fica 1 que dá origem a um 1 na primeira posição.

Então:
4645(10) = 1001 000 100 101(2)

Se o número for fraccionário, utiliza-se o mesmo


método mas com pesos inferiores a 1.

Por exemplo 0,52(10) dá origem a 0,100 001 010(2).

N.3.3 - Capacidade de numeração

Um sistema de base b em que os números inteiros são


representados por uma quantidade n de símbolos tem
uma capacidade de numeração

m = bn

Para que na mudança de base não resulte uma redução


da capacidade de numeração, deve observar-se

b'n' ≥ bn
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T-6

em que b' é a nova base e n' os símbolos do número


inteiro de base b'.

• Em particular na conversão de decimal em binário


deve ter-se para a parte inteira

2n' ≥ 10n

para o que é suficiente

n' ≥ 3,33.n

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T-7
Critério de paragem de dízimas infinitas na
conversão de base 10 para base 2

Admitindo para um número na base 10 um erro igual


ou inferior ao peso da posição menos significativa
(10-p), deve observar-se para a posição menos
significativa da posição binária um erro

2-p ≤ 10-p ⇒ p' ≥ 3,33.p

Portanto, se o número se escrever com p símbolos na


base 10, deve-se escrever com p' símbolos na nova
base, que para o caso da base 2 será p' ≥ 3,33p.

Exemplo: Converter 0,468(10) para base 2

0,468(10) = 0,011 101 1110(2)

pois p=3, p' ≥ 3,33×3=9,99, que se arredonda para o


inteiro imediatamente superior, ou seja p'=10.

Exemplo: Converter 0,52(10) para base 2

0,52(10) = 0,100 0011(2)

pois p=2 ⇒ p'=7.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T-8
N.4 - SISTEMA BINÁRIO, OCTAL E HEXADECIMAL

N.4.1 - Relação entre as bases 8 e 2

Considerem-se 3 símbolos sucessivos dum número


binário. Seja 23k o peso do menos significativo.

a3k+2.23k+2 + a3k+1.23k+1 + a3k.23k =


(a3k+2.22 + a3k+1.21 + a3k.20).23k =
(a3k+2.22 + a3k+1.21 + a3k.20).8k

A expressão entre parentesis tem um valor


correspondente a um símbolo do sistema octal, com a
representação binária

a3k+2 a3k+1 a3k

A representação binária dos 8 símbolos do sistema


octal é

Octal Binário
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1

Usando esta correspondencia a conversão mútua


binário-octal é imediata.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T-9
Dado um número na forma binária, converte-se em
octal do seguinte modo:

• decompõe-se o número a partir da vírgula nos dois


sentidos, em grupos de 3 símbolos;

• quando o número de símbolos não for múltiplo de


3, completa-se à esquerda e à direita com zeros;

• substitui-se cada grupo pelo respectivo símbolo


octal.

A conversão inversa é evidente.

Exemplos

111000,110010100(2) =
111 000,110 010 100(2)=
70,624(8)
1 110,101 10 (2) =
001 110,101 100(2) =
16,54(8)

N.4.2 - Relação entre as bases 16 e 2

Consideram-se agora grupos de 4 dígitos para a


conversão hexadecimal-binário.

Os sistemas octal e hexadecimal utilizam-se


normalmente como representação abreviada do sistema
binário, permitindo reduzir o número de símbolos a
1/3 e 1/4 respectivamente.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 10
Relação entre os símbolos hexadecimais e binários
Hexadecimal Binário
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
A 1 0 1 0
B 1 0 1 1
C 1 1 0 0
D 1 1 0 1
E 1 1 1 0
F 1 1 1 1

A conversão decimal-binário também é muito


facilitada por qualquer dos 2 processos seguintes:

• Conversão decimal-octal
Conversão octal-binário

• Conversão decimal-hexadecimal
Conversão hexadecimal-binário

Exemplo: Converter 54,1(10) para base 2

54,1(10) = 66,06(8)
66,06(8) = 110 110,000 110(2)

Para a parte fraccionária p(10)=1, basta p'(2)=4,


portanto
54,1(10) = 110 110,000 1(2)
N.5 - ESTUDO DE ALGUNS CÓDIGOS

N.5.1 - Teoria dos códigos - definições

Dada uma fonte de informação caracterizada por m


mensagens

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 11
M1 M2 ... Mi ... Mm

e dado um conjunto de b símbolos chamado alfabeto

s1 s2 ... si ... sb

faz-se corresponder a cada mensagem Mi um arranjo


diferente Xi desses símbolos

M1 → X1 (s1 s2 s3 s4)
M2 → X2 (s1 s3 s5)
.....................
Mi → Xi (s1 s2 s3 s5)
.....................
Mm → Xm (s1)

A esta lei de correspondência chama-se código.

Cada arranjo de símbolos é uma palavra.

Ao número b de símbolos distintos utilizados chama-


-se valência do código.

Ao número n de símbolos existente numa palavra


chama-se comprimento da palavra. Por exemplo, o
comprimento da palavra X2 no código anterior é 3.

Normalmente admite-se que as mensagens são


independentes e equiprováveis e formam-se códigos
em que todas as palavras têm o mesmo comprimento -
códigos regulares.
Neste caso, o número máximo de palavras que é
possível formar é bn.

Ter-se-à sempre a desigualdade

m ≤ bn, ou seja n ≥ log m


log b

O comprimento mínimo das palavras será então

nmín = log m
log b

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 12
Redundância define-se como

R = n - n mín
n
Quando o comprimento das palavras é mínimo R=0.

Quando o comprimento tende para infinito, R tende


para 1.

Num código redundante (R>0) o número de símbolos


por palavra é superior ao estritamente necessário.

No caso de nmín ser fraccionário, a redundância do


código será maior que 0, pois tem que se usar um
comprimento superior a nmín.

A redundância pode ser aumentada intencionalmente


no sentido de preservar a quantidade de informação,
quando o ruído produz a destruição de alguns
símbolos.

A redundância constitui pois um meio de reduzir o


efeito do ruído.
N.5.2 - Formação de códigos regulares

Dado um alfabeto de b símbolos formam-se bn


palavras distintas de comprimento n.

O número de maneiras como essas bn palavras se


ordenam é (bn)!. Podem assim formar-se (bn)! códigos
regulares diferentes.
Pode obter-se um novo código, a partir de um código
dado, trocando duas linhas, duas colunas ou dois
símbolos.

No exemplo abaixo, cada matriz representa um código


diferente e cada linha uma palavra de código, sendo
que o número de colunas é igual ao comprimento das
palavras e o número de linhas igual ao número de
mensagens.

Exemplo: Partindo do código de valência 3

A B C A C B
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 13
A C B pode formar-se outro, A B C
A A B por troca das duas A A B
A B A primeiras linhas: A B A
A A A A A A
B B A B B A

por troca das duas últimas colunas:

A C B B A C
A B C B C A
A B A ou por troca dos B B A
A A B símbolos A e B: B A B
A A A B B B
B A B A A B

N.5.3 - Códigos ponderados e não ponderados

Os códigos dizem-se ponderados quando cada símbolo


tem um significado quantitativo dependendo da
coluna em que se encontre.

Os sistemas de numeração são exemplos de códigos


ponderados.

A linguagem escrita é um código não ponderado.

N.5.4 - Códigos contínuos

N.5.4.1 - Adjacência

Considerando um conjunto ordenado de b símbolos

X1 X2 X3 ... Xi ... Xb-1 Xb

Diz-se que 2 símbolos Xi e Xi+1 são adjacentes


quando não existir nenhum símbolo Xj que satisfaça
as condições

Xj < Xi+1 , Xj > Xi


Consideram-se também adjacentes o primeiro e último
símbolos do conjunto X1 e Xb.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 14
Um conjunto assim definido é um alfabeto contínuo.

• Num código construído com base num alfabeto


contínuo, 2 palavras são adjacentes quando os seus
símbolos diferem numa única coluna, sendo
adjacentes os símbolos nessa coluna.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 15
Exemplo: palavras adjacentes

X1 X3 X4 X5
X1 X3 X5 X5
palavras não adjacentes

X1 X2 X3 X2 X1 X4 X5
X1 X3 X2 X6 X1 X4 X5

• Com um alfabeto contínuo de valência superior a 2


podem formar-se, em relação a cada palavra de
comprimento n, 2n palavras adjacentes.

• Com um alfabeto contínuo de valência 2, apenas se


podem formar n palavras adjacentes.

Exemplo: Em relação a X1 X2 X1 podem formar-se as


três palavras adjacentes X2 X2 X1 ,
X1 X1 X1 , X1 X2 X2.

N.5.4.2 - Códigos contínuos

Num código contínuo, palavras consecutivas são


adjacentes.

X1 X2 X3
X2 X2 X3
X3 X2 X3
X3 X2 X1
X2 X2 X1

Se num código contínuo a última palavra for


adjacente da primeira, esse código diz-se cíclico.

X1 X2 X3
X2 X2 X3
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 16
X3 X2 X3
X3 X2 X1
X2 X2 X1
X1 X2 X1

N.5.4.3 - Códigos reflectidos

Nos sistemas de numeração, os algarismos de cada


coluna sucedem-se pela ordem natural, repetindo-se
um número de vezes igual ao peso da respectiva
coluna.

pesos ... 32 31 30
0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
Sistema de 0 1 2
numeração 0 2 0
base 3 0 2 1
0 2 2
1 0 0
1 0 1
.. .. ..
2 2 1
2 2 2

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 17
Os sistemas de numeração não constituem códigos
cíclicos, pois 2 números consecutivos podem diferir
em mais do que 1 algarismo.

No entanto, a partir de um sistema de numeração


pode construir-se um código contínuo especial,
substituindo cada transição de b-1 para 0 pela
repetição b-1 b-1, prosseguindo-se então pela ordem
inversa até 0. Depois repete-se o 0 e recomeça-se
pela ordem natural.

Os códigos assim formados dizem-se reflectidos.

Exemplo de código reflectido obtido a partir do


código anterior

0 0 0
0 0 1
0 0 2
0 1 2
0 1 1
0 1 0
0 2 0
0 2 1
0 2 2
1 2 2
1 2 1
1 2 0
.. .. ..
2 2 1
2 2 2

Os códigos reflectidos não são códigos ponderados


embora sejam obtidos a partir de códigos
ponderados.

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 18
N.5.5 - Códigos binários

Os códigos binários são códigos de valência 2.


Utilizam-se normalmente os símbolos 1 e 0.

Há 2 tipos de códigos binários: código binário


natural e códigos decimais binários.

• Código binário natural

Traduz-se a palavra escrita num dado sistema de


numeração para o sistema de base 2.

Exemplo: 12(10) = 1100(2)

• Código decimal binário

Faz-se a correspondência entre cada caracter


decimal da palavra inicial e a sua configuração
binária.

Se a palavra tiver n símbolos decimais, na sua


codificação obtêm-se 4n símbolos binários.

Exemplo: Considerando a correspondência seguinte

0 → 0 0 0 0
1 → 0 0 0 1
2 → 1 0 0 0
3 → 1 0 0 1
4 → 1 1 0 0
5 → 1 1 0 1
6 → 1 1 1 1
7 → 0 0 1 1
8 → 0 1 1 1
9 → 0 1 0 0

a palavra decimal 532(10), é codificada como

1101 1001 1000

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 19
N.5.5.1 - Código binário natural

O código binário natural é um código ponderado.


Corresponde ao sistema de numeração de base 2, em
que os pesos são sucessivamente 2n-1 2n-2...22 21 20.

Exemplo: Comprimento de palavra = 3

22 21 20 ← pesos
0 0 0 0
1 0 0 1
2 → 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1

N.5.5.2 - Código binário reflectido ou de Gray

Regra de conversão de natural para reflectido:

• O bit mais significativo da palavra natural


mantém-se como sendo o bit mais à esquerda da
palavra reflectida.

• Em seguida, o bit mais significativo da palavra


natural adiciona-se ao bit seguinte, e o resultado,
independentemente de qualquer transporte, é o bit
seguinte da palavra reflectida.

• Então adiciona-se o segundo e terceiro bits do


natural e obtém-se o terceiro bit do reflectido,
desprezando sempre o transporte, e assim por
diante.

Exemplo: Conversão de 111001(binário natural)

→ → → → →
Binário natural 1 + 1 + 1 + 0 + 0 + 1
↓ ↓ ↓ ↓ ↓ ↓
Binário reflectido 1 0 0 1 0 1
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 20

Comparação do código binário natural para palavras


de comprimento n=4 com o seu homólogo reflectido.

pesos → 23 22 21 20
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 1
0 0 1 1 0 0 1 0
0 1 0 0 0 1 1 0
0 1 0 1 0 1 1 1
0 1 1 0 0 1 0 1
0 1 1 1 0 1 0 0
1 0 0 0 1 1 0 0
1 0 0 1 1 1 0 1
1 0 1 0 1 1 1 1
1 0 1 1 1 1 1 0
1 1 0 0 1 0 1 0
1 1 0 1 1 0 1 1
1 1 1 0 1 0 0 1
1 1 1 1 1 0 0 0
Binário natural Reflectido
Um código reflectido não é ponderado. Se tiver
valência par é cíclico.
N.5.5.3 - Códigos decimais-binários

Num código decimal-binário pretende-se substituir


cada símbolo decimal por uma configuração de
dígitos binários.

Como existem 10 símbolos decimais diferentes, é


necessário que cada configuração binária apresente
4 bits.

No entanto com 4 bits formam-se 16 combinações


possíveis e só 10 são necessárias.

O número total de códigos decimais-binários


distintos que se podem obter será então dado por

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 21

= 16! = 3.1010
16
10!.C 10
6!

Dada a grande variedade de códigos decimais-


-binários possíveis, apresentam-se de seguida os
mais usuais.

N.5.5.3.1 - Código decimal-binário 8421 ou DCB

Escrevem-se em binário os 10 primeiros números.

Apresenta a vantagem de permitir uma parte das


simplificações do código binário natural
(simplificação nas regras das operações
aritméticas).

8 4 2 1 ← pesos
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 → 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1

N.5.5.3.2 - Código D+3 ou excedente 3


0 0 0 1 1
1 0 1 0 0
2 0 1 0 1
3 0 1 1 0
4 → 0 1 1 1
5 1 0 0 0
6 1 0 0 1
7 1 0 1 0
8 1 0 1 1
9 1 1 0 0

Não é um código ponderado.


____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 22

N.5.5.3.3 - Código 2421 ou de Aiken

2 4 2 1 ← pesos
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 → 0 1 0 0
5 1 0 1 1
6 1 1 0 0
7 1 1 0 1
8 1 1 1 0
9 1 1 1 1
N.5.5.3.4 - Código 7421

7 4 2 1 ← pesos
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 → 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 1 0 0 0
8 1 0 0 1
9 1 0 1 0

Este código tem um número muito pequeno de 1's.

N.5.5.4 - Códigos decimais-binários detectores de


erros

Em qualquer sistema podem ser introduzidos erros


devido à presença de ruído. Num código binário, tal
alteração é a tranformação de 1 em 0 e vice-versa.

Aumentando a redundância é possível detectar, ou


mesmo corrigir erros.

O controle de paridade é um método geral que se


utiliza frequentemente. Consiste em acrescentar a
cada configuração binária um bit suplementar de
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 23
controle ao qual se dá o valor 0 ou 1, de modo que
o número de 1's em todas as palavras seja da mesma
paridade.

Normalmente usa-se a paridade ímpar para que nunca


surja a combinação formada só por zeros, que
poderia surgir devido a uma avaria num dispositivo.

Exemplo de códigos 8421 e D+3 modificados de forma


a detectarem erros.
8421 det. D+3 det. erros
erros
C 8 4 2 1 C
1 0 0 0 0 1 0 0 1 1
0 0 0 0 1 0 0 1 0 0
0 0 0 1 0 1 0 1 0 1
1 0 0 1 1 1 0 1 1 0
0 0 1 0 0 0 0 1 1 1
1 0 1 0 1 0 1 0 0 0
1 0 1 1 0 1 1 0 0 1
0 0 1 1 1 1 1 0 1 0
0 1 0 0 0 0 1 0 1 1
1 1 0 0 1 1 1 1 0 0
C - coluna de controle

Se existir uma palavra que não tenha um número


ímpar de 1's, existiu um erro na codificação ou no
processamento dessa palavra.

Este código permite apenas detectar (e não


localizar) um número ímpar de erros.

O código biquinário, que é um código ponderado,


permite a detecção de mais do que 1 erro.
pesos 5 0 4 3 2 1 0
0 1 0 0 0 0 1
0 1 0 0 0 1 0
0 1 0 0 1 0 0
0 1 0 1 0 0 0
0 1 1 0 0 0 0
1 0 0 0 0 0 1
1 0 0 0 0 1 0
1 0 0 0 1 0 0
1 0 0 1 0 0 0
1 0 1 0 0 0 0

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 24
No entanto não detecta a situação, de troca de 2
símbolos, seguinte: 0100100 → 0101000.
N.5.6 - Códigos alfanuméricos

A informação a processar pode não ser


exclusivamente numérica. Existe frequentemente a
necessidade de codificar além de números, letras e
símbolos especiais (+, !, ?, ...).

Um código alfanumérico estabelece uma


correspondência entre os vários símbolos e
combinações de um certo número de bits.

As letras do alfabeto e os dígitos decimais formam


um conjunto de 36 elementos, sendo pois necessário
palavras de código de comprimento pelo menos igual
a 6.

De seguida exemplifica-se um código alfanumérico de


6 bits utilizado pela Univac.

0000 0001 0010 0011 0100 0101 0110 0111


00 Ignora Espaço - 0 1 2 3 4
01 Retorno ' . ; A B C D
10 Γ // | ) J K L M
11 Σ ! : + / S T U

1000 1001 1010 1011 1100 1101 1110 1111


00 5 6 7 8 9 , & (
01 E F G H I # ⊄ @
10 N O P Q R / * ?
11 V W X Y Z % = Delete

Usando uma configuração binária de comprimento 6


podem codificar-se 64 caracteres, pelo que as
combinações para além das 36 inicialmente
necessárias podem ser usadas para codificar
símbolos especiais tais como os sinais das
operações, de pontuação, etc.

Actualmente não existe um código universalmente


aceite, embora os códigos ASCII (American Standard
Committee on Information Interchange) e EBCDIC
____________________________________________________________________________________________________________
Sistemas Digitais ASP93
T - 25
(Extended Binary Coded Decimal Interchange Code)
sejam muito utilizados. São ambos códigos de 8
bits, ou seja, permitem uma codificação de 256
caracteres diferentes.

Tabela ASCII para os primeiros 128 caracteres

0000 0001 0010 0011 0100 0101 0110 0111


000 NUL SOH STX ETX EOT ENQ ACK BEL
001 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
010 Espaço ! " # $ % & '
011 0 1 2 3 4 5 6 7
100 @ A B C D E F G
101 P Q R S T U V W
110 ` a b c d e f g
111 p q r s t u v w

1000 1001 1010 1011 1100 1101 1110 1111


000 BS HT LF VT FF CR SO SI
001 CAN SUB ESC FS GS RS US
010 ( ) * + , - . /
011 8 9 : ; < = > ?
100 H I J K L M N O
101 X Y Z [ \ ] ^ _
110 h i j k l m n o
111 x y z { | } ~

____________________________________________________________________________________________________________
Sistemas Digitais ASP93
Apresentação

ARQUITECTURA DE COMPUTADORES

• Introdução
• Organização de Sistemas Computorizados
Programa:
• Nível Convencional da Máquina
• Linguagem Assembly
• Nível da Microprogramação
• Sistema Operativo

• "Computer Architecture and Organization",


John P. Hayes, McGraw Hill, 1978
• "Structured Computer Organization",
Bibliografia: Andrew S. Tanenbaum, Prentice-Hall, 1990
• "IA-32 Intel® Architecture Software
Developer’s Manual

• 1º trabalho (25%)
1º Caso: • 1ª frequência (25%)
Avaliação: • 2º trabalho (25%)
• 2ª frequência (25%)

2º Caso: • Exame (100%)

Nota de aprovação na cadeira: 10 (dez valores)

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I-1

INTRODUÇÃO
I.1 - PRINCIPAIS TIPOS DE ORGANIZAÇÃO

As arquitecturas de computadores podem ser


classificadas segundo várias perspectivas.

No entanto a mais usada é a classificação de Flynn.

Baseia-se no número de sequências de dados e


instruções.

Sequência de dados

Simples Múltipla

Sequência Simples SISD SIMD

de instruções
Múltipla MISD MIMD

SISD - Single Instruction - Single Data


SIMD - Single Instruction - Multiple Data
MISD - Multiple Instruction - Single Data
MIMD - Multiple Instruction - Multiple Data

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I-2
I.1.1 - MONOPROCESSAMENTO

SISD - Computadores convencionais (modelo de Von


Neumann)
I

D
UC P M
Fig 1

I - Instruções
UC - Unidade de Controle
P - Processador
D - Dados
M - Memória

A arquitectura de Von Neumann pode evoluir de forma a


libertar o processador das acções de entrada e saída
de dados (gestão do ecrã, disco e teclado).

Para tal recorre-se a controladores específicos ou a


processadores de âmbito geral.
I

D
UC P M

UC Pio M
Fig 1a

Pio - Processador de entrada e saída

Exemplos de máquinas: IBM PC, Sun Sparc Station.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I-3
I.1.2 - PROCESSAMENTO COM OPERAÇÕES MÚLTIPLAS

A rapidez de um computador pode ser aumentada se se


introduzir:

• componentes mais rápidos (memória mais rápida ou


processador mais rápido);

• organização diferente.

A execução de mais do que uma operação


simultaneamente é a maneira mais usual de aumentar a
velocidade.

• Factor de aumento de velocidade de computação:

T1 A
Sp A = ≥ 1
Tp A

p - nº de operações simultâneas
Tp[A] - tempo para a computação A na máquina multi-
operação
T1[A] - tempo para a computação A na máquina série

• Eficiência de computação:

Sp A
Ep A = ≤ 1
p

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I-4
I.1.2.1 - SIMD - Paralelismo de array

P1 D1

D2
P2
UC M

Dn
Pn

I
Fig 2

Os processadores são todos iguais e executam a mesma


operação ao mesmo tempo sobre dados diferentes.

A memória tem que estar particionada de forma a ser


possível o acesso simultâneo a diferentes endereços.

As máquinas SIMD só correm um programa de cada vez,


estando todos os processadores dedicados a esse
programa.

A instrução seguinte (em linguagem FORTRAN):

DO 10 I = 1, 50
10 A(I) = B(I) * C(I)
seria executada apenas numa instrução se o computador
tivesse 50 multiplicadores.

Exemplos de máquinas: ILLIAC IV (64 processadores),


Connection Machine (64 k processadores).

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I-5
I.1.2.2 - MISD - Paralelismo de pipeline

D D
D
P1 P2 Pn

UC1 UC2 UCn

I1 I2 In
Fig 3

O paralelismo de pipeline é muito usado nas linhas de


montagem industriais.
As ideias fundamentais são:

• Decompor uma operação complexa em N passos de


igual duração

• Efectuar cada operação num elemento de


processamento diferente

• O tempo de operação mantém-se, mas o número de


operações executadas por segundo multiplica-se
por N.

A dificuldade é manter o pipeline cheio.


Praticamente todos os computadores utilizam
paralelismo de pipeline, executando em paralelo o
fetch / descodificação / execução de instruções.

Exemplos de máquinas: Cray, Cyber 205.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I-6
I.1.2.3 - MIMD - Paralelismo funcional
D1
UC1 P1

D2
UC2 P2
M

Dn
Ucn Pn

In
I2
I1

Fig 4

• Existem vários processadores não forçosamente


iguais a executar operações diferentes
independentemente.

• Paralelismo funcional:
* Processamento multi-função - o processador
inclui vários elementos de processamento
especializados mas não autónomos que podem
funcionar em paralelo (somador,
multiplicador, etc.);
* Multiprocessamento - os elementos de
processamento são processadores completos,
capazes de executar programas completos
autonomamente.

Exemplos de máquinas: iPSC (16-128 processadores),


Supernode (16 transputers T800).
I.2 - MEMÓRIA

Em sistemas de multiprocessadores (MIMD) o acesso a


memória implica o recurso a uma rede de interligação.
____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I-7

I.2.1 - Memória partilhada

Os processadores não possuem memória própria, podendo


todos aceder a qualquer endereço de memória.
A memória pode ter vários bancos para evitar a
contenção.

M M M M

Rede de interligação

P P P P
Fig 11

I.2.2 - Memória privada

Os processadores possuem memória privada, sendo que


qualquer informação pode ser partilhada por meio de
mensagens entre processadores.

Rede de interligação

P P P P

M M M M
Fig 12

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I-8
I.3 - Redes de interligação

Definem-se as características seguintes:

• Atraso - tempo de trânsito para uma mensagem.

• Largura de banda - número máximo de bytes por


segundo que a rede consegue transmitir.

• Concetividade de um nó - número de ligações que


ligam cada nó aos nós adjacentes.

• Diâmetro - número máximo de ligações a percorrer


por uma mensagem entre dois processadores
quaisquer.
I.3.1 - Crossbar

É a melhor forma de interligar os processadores à


memória.

A memória é dividida em vários bancos, e é possível


vários processadores acederem a bancos diferentes
simultaneamente.

P P P P
Fig 13

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I-9
I.3.2 - Hipercubo

A topologia mais popular em multiprocessadores de


memória privada é o hipercubo.

Tem um baixo diâmetro e alta largura de banda.

Fig 14

I.3.3 - Hiperbus

Uma das desvantagens do hipercubo é que o número de


ligações por nó varia com a dimensão.

O hiperbus é uma topologia que se obtém do hipercubo


substituindo nós por ligações e ligações por nós.
1
2
3
4

P1 P2 P3 P4 P5
Fig 15

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I - 10
I.4 - ORGANIZAÇÃO DE SISTEMAS

I.4.1 - Redes de computadores

Existem várias arquitecuras possíveis para a


interligação de computadores: estrela, multiponto,
anel, etc.

No entanto as arquitecturas de rede mais comuns são:

• multiponto - Ethernet;

Fig 16

• anel - Token Ring, FDDI.

Fig 17

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I - 11
I.4.2 - Computação distribuída

Os sistemas operativos distribuídos aparecem da


necessidade de:

• partilhar recursos distribuídos;

• garantir uma maior disponibilidade desses recursos


em situações de tráfego intenso;

• fornecer tolerância a faltas.

Para além disso os sitemas operativos distribuídos


devem possuir as seguintes características:

• transparência - dar ao utilizador a ideia de que


todo o conjunto de máquinas é apenas um processador
multi-tarefa;

• desempenho - uma aplicação deverá correr tão bem


num sistema distribuído como num só processador;

• escalabilidade - o sistema deverá poder suportar um


número cada vez maior de máquinas.

Exemplos de alguns sistemas distribuídos:

• AFS, NFS - sistemas de ficheiros distribuídos;

• Amoeba - micro-kernel (número reduzido de serviços)

• ISIS - comunicação inter-grupos.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
I - 12
I.5 - MÁQUINAS MULTI-NÍVEL

Seis níveis que estão presentes na maioria dos


computadores modernos

Nível da linguagem
Nível 5
orientada ao problema

Tradução (compilador)

Nível 4 Nível da linguagem


assembly

Tradução (assemblador)

Nível da máquina
Nível 3
sistema operativo
Interpretação parcial
(sistema operativo)
Nível da máquina
Nível 2
convencional
Interpretação
(micro-programa)
Nível da micro-
Nível 1
-programação
Os micro-programas são executados
directamente pelo hardware
Nível lógico
Nível 0
digital
Fig 17a

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P-1

A UNIDADE CENTRAL DE PROCESSAMENTO


P.1 - ORGANIZAÇÃO DA CPU

Unidade Central de Processamento (CPU) = Processador


+ Unidade de Controle

Unidade de
Memória Central Controle

Registos
Processador

Operações Operações
Aritméticas Lógicas

Fig 5

• Os registos do processador podem ou não ser


acessíveis ao programador.

• A existência de registos no processador poupa


ciclos de acesso à memória. Por outro lado um número
elevado de registos torna difícil um manuseamento
eficiente.

• Exemplos:
PDP-11 tem 6 registos de 16 bit
I8085 tem 7 registos de 8 bit
I8086 tem 8 registos de 16 bit
S/370 tem 16 registos de 32 bit + 4 reg. 64 bit

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P-2

Unidade de Controle Síncrona

Relógio
Processador de Instruções

1 6
Contador de Incrementador
Programa

1
Registo de Instrução

6
Processador de
Operações
4 Processador 3
de Endereços Descodificador 2

4
Sequenciador
5

Processador

Memória Central (MAR, MDR)


Fig 6

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P-3

1 - Endereço da instrução a ser executada está no PC


(contador de programa). Endereço vai para
memória (MAR - Registo de endereço de memória).
A instrução é trazida para IR (registo de
instrução) a partir de MDR (registo de dados de
memória).

2 - A instrução é dividida em endereço e código de


operação (englobando tipo de endereçamento) que
são respectivamente mandados para o processador
de endereços e de operações. Código de operação
e tipo de endereçamento são descodificados.

3 - O processador de endereços calcula o endereço


efectivo que será utilizado para:

i) aceder a um operando em memória (MDR) ou num


registo;
ii) aceder à próxima instrução no caso de um
salto.

4 - O operando é lido de memória (MDR), caso seja


exigido pelo código de operação.

5 - O sequenciador implementa a operação (podendo


incluir um armazenamento em memória).

6 - O endereço da próxima instrução fica no PC:

i) se a instrução for um salto, um novo endereço


vai para o PC;
ii) caso contrário, o incrementador incrementa o
PC.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P-4

Função da CPU: Executar sequência de instruções


armazenadas em memória.
Ciclo de instrução: sequência de instruções
envolvidas no processamento de uma instrução.

O ciclo de instrução consiste de uma fase de


aquisição e de uma fase de execução.
Fase de aquisição: a instrução é lida da memória para
IR.
Fase de execução: inclui a descodificação da
instrução, aquisição dos operandos necessários e
execução das operações especificadas no código de
operação.

O comportamento da CPU durante um ciclo de instrução


pode ser definido como uma sequência de micro-
operações, cada uma das quais envolve uma
transferência entre registos.
Tempo de ciclo da CPU (tCPU): tempo necessário para a
execução da micro-operação mais rápida.

tCPU é a unidade de tempo para medir acções na CPU.

fCPU = 1 / tCPU é a frequência do relógio.

fCPU depende directamente da tecnologia da CPU.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P-5

Interacção da CPU com a Memória Central

i) A CPU é normalmente tão rápida quanto a tecnologia


permitir, dentro das condicionantes de custo.

ii) Como a capacidadede memória é normalmente


elevada, esta é constituída com uma tecnologia mais
lenta e menos dispendiosa que a da CPU.

Tempo de ciclo de memória (tM): tempo mínimo que


medeia entre duas operações consecutivas de acesso à
memória.

Extensões à organização básica da CPU

i) Registos adicionais

ii) ALU's com mais funções


iii) Existência de cache se tM >> tCPU e se se
pretender uma performance elevada

iv) Existência de controlo automático de stack

v) Organização de multi-operação (p.ex. pipeline)

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P-6
P.2 - REPRESENTAÇÃO DA INFORMAÇÃO

Instruções Vírgula fixa


Informação Números

Dados Vírgula flutuante

Dados não numéricos

P.2.1 - Dados não numéricos

Normalmente são cadeias de caracteres ("strings") com


comprimento variável. Os caracteres são usualmente
representados pelos códigos ASCII (American Standard
Committee on Information Interchange) ou EBCDIC
(Extended Binary Coded Decimal Interchange Code).

P.2.2 - Dados numéricos

Na escolha de representação atender aos seguintes


factores:

i) tipo de números a serem representados (inteiros,


reais, complexos);

ii) gama de valores representáveis;

iii) precisão do número;

iv) custo de hardware para armazenar e processar os


números.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P-7
P.2.2.1 - Nomenclatura

w - comprimento da palavra

gama de representação - quantidade de nos


representados distintamente
P.2.2.2 - Formatos dos números

Para um mesmo w:

Vírgula fixa - gama limitada, maior precisão,


hardware simples;

Vírgula flutuante - gama extensa, menor precisão,


hardware complexo.
P.2.2.2.1 - Vírgula fixa

Nos positivos
n
b= ∑ b .2
i=-m
i
i
= bn ...b2b1b0 .b-1b-2 ...b-m

O ponto decimal não tem representação interna na


máquina, é implícito pelo utilizador.
Nos negativos

i) sinal e módulo
ii) complemento para 1
iii) complemento para 2

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P-8
Representação de números

Característica Sinal e módulo Complemento Complemento


para 1 para 2

Zero 000....0 000....0 000....0


100....0 111....1

Amplitude -2N-1+1 a 2N-1-1 -2N-1+1 a 2N-1-1 -2N-1 a 2N-1-1

Adição Não trivial Usa EAC Trivial


Subtracção

Multiplicação Relativamente Difícil Difícil


Divisão simples

Inversão de Trivial Trivial Necessita


sinal adição

P.2.2.2.2 - Vírgula flutuante

Também conhecida por notação científica.


3 quantidades estão associadas a esta representação:
mantissa M, expoente E, base B.

Um nº vírgula flutuante é guardado como um par de


dois números vírgula fixa: M, E.

M - fracção ou inteiro
E - inteiro

A precisão é determinada pelo nº de bits de M.

A gama é determinada por B e E.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P-9
NORMALIZAÇÃO

Diferentes representações em vírgula flutuante são


possíveis para o mesmo número.

Considere-se B = 2.

• Se a mantissa for uma fracção representada por


módulo e sinal, diz-se normalizada se o bit para a
direita do ponto binário não for zero.
P. ex.: (0.1011101).

Se a mantissa for uma fracção representada em


complemento para 2, diz-se normalizada se o bit de
sinal diferir do bit imediatamente à sua direita.
P. ex.: (1.01101)

• Para mantissas normalizadas: 1/2 ≤ |M| < 1

• Mantissas não normalizadas podem normalizar-se


deslocando o ponto binário para a esquerda ou direita
e incrementando ou decrementando o expoente
apropriadamente.

REPRESENTAÇÃO DO ZERO

k: nº de bits do expoente

i) O expoente convém ser o menor número negativo


possível (-2(k-1))

ii) O expoente convém ser representado só por zeros,


por causa dos testes a zero

Utiliza-se algumas vezes um expoente deslocado. O


expoente é codificado num código excesso 2(k-1), em
que 2(k-1) é o deslocamento.

Exemplo (K=4)
____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 10

Expoente Número
representado
1111 7
1110 6
1101 5
1100 4
1011 3
1010 2
1001 1
1000 0
0111 -1
0110 -2
0101 -3
0100 -4
0011 -5
0010 -6
0001 -7
0000 -8

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 11
EXEMPLOS DE FORMATOS VÍRGULA FLUTUANTE

HP-1000
15 14 0 15 8 7 0
M E
Precisão simples E
S S

M (23 bit)

M E
Precisão estendida E
S S

M (39 bit)

M E
Precisão dupla E
S S

M (55 bit)
Fig 7

I 8086/8087
31 30 23 22 16 15 0
M E
Real curto
S

M (23 bit)
63 52 48 47 32 31 16 15 0
M
Real longo E
S

M (52 bit)
Fig 8

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 12

IBM S/370

0 1 7 8 31
M E
Precisão simples M (24 bit)
S

M E
Precisão dupla
S

M (56 bit)

M E
Precisão estendida
S

M (110 bit)
Fig 9

PDP-11

0 1 8 9 15 16 31
M E
Precisão simples
S

M (23 bit)

M
Precisão dupla E
S

M (55 bit)
Fig 10

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 13
P.2.3 - Formatos de instruções (máquina)

• Cada instrução deve especificar de algum modo:

1. Operação a ser executada.

2. Um ou mais operandos da operação.

3. Destino do resultado.

4. Localização da próxima instrução.

• i) O código da operação deve ser sempre


especificado
ii) A localização da próxima instrução só precisa
de ser indicada em instruções de salto.

iii) Os endereços são normalmente apontadores para


memória ou para registos que contêm operandos.

Variações principais: endereços imediato,


indexado, indirecto e relativo (PC, SP).

Exemplos: EE = E + (IX) - indexado

EE = (E) - indirecto

iv) Existem instruções de 1, 2 e 3 endereços (0


endereços é um caso particular em máquinas de
stack).

Poucos endereços - Instruções mais simples,


programas mais longos e com maior tempo de
execução e unidades de controle mais simples.
• Instruções com 3 endereços

Instruções normais: 2 campos para endereços de


operando + 1 campo para endereço de
resultado

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 14
Instruções de salto: 2 campos para endereços de
operando + 1 campo para endereço de
salto

Exemplo de programa fonte:

X := A + B * C;
Y := F + G;

Programa máquina
correspondente

MPY B C T
ADD A T X
ADD F G Y

Ex. de máquina: CDC 6600

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 15

• Instruções com 2 endereços

Instruções normais: 2 endereços de operandos

Instruções de salto: 1 end. operando + 1 end. salto

Existe normalmente um acumulador que recebe o


resultado. Alternativamente o resultado pode ir para
um dos endereços especificados.

Exemplo MPY B C
ADD A Acc
STO Acc X
ADD F G
STO Acc Y

Ex. de máquina: IBM S/370

• Instruções com 1 endereços

Instruções normais: endereço de operando

Instruções de salto: endereço de salto


O resultado é deixado no acumulador

Exemplo de máquinas: FETCH B


HP 1000, DEC 10 MPY C
ADD A
STO X
FETCH F
ADD G
STO Y

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 16

• Instruções com 0 endereços

Requer uma máquina de "stack"

Necessário: i) um stack
ii) uma instrução PUSH
iii) uma instrução POP
iv) operações diádicas usando os 2
registos do topo como operandos e deixando
o resultado no topo do stack

O compilador transformará as expressões aritméticas


para Reverse Polish Notation.

No exemplo
X := A + B * C; → X = B C * A +
Y := F + G; (RPN) Y = F G +

Código máquina
correspondente

PUSH C
PUSH B
MPY
PUSH A
ADD
POP X
PUSH G
PUSH F
ADD
POP Y

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 17
P.3 - UNIDADES ARITMÉTICAS E LÓGICAS

P.3.1 - Adição, Subtracção e Operações lógicas

As operações lógicas são normalmente realizadas bit a


bit pelo que os circuitos não apresentam qualquer
dificuldade.

Exemplo de um circuito AND de 8 bits.


x0
z0
y0

x1
z1
y1

x2
z2
y2

x7
z7
y7
Fig 18a

A adição é realizada bit a bit também, mas entrando


em conta com o bit de carry.

O somador de 1 bit é definido pelas duas equações


seguintes:

zi = xi ⊕ yi ⊕ ci+1
ci = xi yi + xici+1 + y ici+1

Os circuitos lógicos e símbolo correspondentes são


mostrados abaixo.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 18

xi
yi
c(i+1)

xi
yi
c(i+1)

zi

xi
yi Soma
c(i+1)
zi

xi
yi
c(i+1)
ci + c(i+1)

Carry out Carry in

xi
yi xi yi

xi
ci
c(i+1)

yi
c(i+1)
Fig 18

A adição pode ser acelerada com "carry look ahead


adders".

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 19

P.3.2 - Multiplicação

Circuito multiplicador

Acumulador Multiplicador Multiplicando


7 A 0 7 Q 0 7 M 0

Somador
paralelo

Bus Saída
Bus Entrada

ADD Sinais de
START Controle RIGHT-SHIFT controle
CPU END
interno
CLOCK

Contador
Fig 19

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 20

i) Multiplicação em módulo e sinal

START

A <- 0
COUNT <- 0
M <- Mcando

Q <- Mcador

S
COUNT <- COUNT + 1 Q(0) = 0

A <- A(0:6) + M(0:6)

Right Shift A,Q

COUNT = 7
N

Bus Saída <- A

Bus Saída <- Q

STOP

Diag 1

No final da operação
A Q
S
7 0 7 0

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 21

ii) Multiplicação em complemento para 2

Pode usar-se o algoritmo de multiplicação em M e S e


adaptá-lo para complemento para 2, mas torna-se
necessário corrigir o resultado quando o
multiplicador é negativo.

Utiliza-se normalmente o algoritmo de Booth que trata


igualmente nos positivos e nos negativos sem ser
necessária a correcção, e além disso sequências de
0's e 1's no multiplicador são saltadas sem se
efectuarem adições ou subtracções o que acelera a
execução.
(Demonstração: HAYES, 183-185)

Hardware semelhante ao multiplicador em M e S mas com


mais um andar em Q e possibilidade de soma e
subtracção.

Operação básica: Multiplicador é inspeccionado


sequencialmente da direita para a esquerda. Dois bits
são inspeccionados de cada vez, se QiQi+1 = 10 (01) o
multiplicando é somado (subtraído) ao produto parcial
e o resultado é deslocado. Se QiQi+1 = 00 ou 11 só se
verifica o deslocamento.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 22

Multiplicação (Algoritmo de Booth)

START

A <- 0
COUNT <- 0
M <- Mcando
Q(-1) <- 0

Q(7:0) <- Mcador

A(7) <- A(7) Q(-1) = 1 N


Right Shift A,Q Q(0) = 0

S Q(-1) = 0 N
Q(0) = 1

S
COUNT <- COUNT + 1 A <- A + M A <- A - M

COUNT = 7
N

Bus Saída <- A

Bus Saída <- Q(7:1)

STOP

Diag 2

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 23
P.3.3 - Divisão

D=QxV+R

Objectivo: determinar Q e algumas vezes R.

Nº de bits em Q limitado por questão de hardware.

Algoritmos e circuitos semelhantes aos da


multiplicação podem ser utilizados.

• Na multiplicação efectuam-se adições sucessivas do


multiplicando ao produto parcial para obter o
produto.

• Na divisão o divisor deslocado é subtraído do resto


parcial para obter o quociente.
Em cada passo i, 2-i.V (divisor deslocado de i bits
para a direita) é comparado com o resto parcial Ri.

Qi = 1 se 2-i.V ≥ Ri , Qi = 0 se 2-i.V < Ri

Ri+1 ← Ri - Qi.2-i.V

Na implementação prefere-se deslocar o resto parcial.


Ri+1 ← 2.Ri - Qi.V

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 24
Algoritmo de divisão para inteiros positivos

START

Q <- Dividendo
COUNT <- 0

M <- Divisor
A <- 0

Left Shift A,Q

A <- A - M

COUNT <- COUNT + 1

S
A < 0

Q(0) <- 0
Q(0) <- 1
A <- A + M

COUNT = 7
N

STOP

Diag 3

No final da operação: (A) = resto


(Q) = quociente

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 25

Circuito divisor

Acumulador Quociente Divisor


7 A 0 7 Q 0 7 M 0

Somador
paralelo

Bus Saída
Bus Entrada

A(7) Q(0)

START Controle Sinais de


CPU END controle
CLOCK interno

Contador
Fig 20

Início: A,Q - Dividendo


M - Divisor

Fim: Q - Quociente
A - Resto

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 26

P.3.4 - ALU vírgula fixa (típica)

Acumulador Multiplicador-Quociente Registo de dados

7 AC 0 7 MQ 0 7 RD 0

Somador
paralelo

Bus Saída
Bus Entrada

ADD
SUB Controle Sinais de
MPY
CPU DIV controle
START interno
END
CLOCK
Contador
Fig 21

ADD : AC ← AC + RD
SUB : AC ← AC - RD
MPY : AC,MQ ← RD × MQ
DIV : AC,MQ ← AC,MQ ÷ RD

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 27
P.3.5 - Operações em vírgula flutuante

X = (XM, XE) ⇒ X = XM . BXE

São feitas as seguintes suposições:

• XM é uma fracção com NM bits em complemento para 2.

• XE é um inteiro com NE bits em código excesso 2 NE-1.

• B = 2.

• Operandos e resultados são normalizados.

Operações Aritméticas Básicas

X + Y = ( XM . 2 (XE-YE) + YM ) . 2YE

X - Y = ( XM . 2 (XE-YE) - YM ) . 2YE

X . Y = ( XM . YM ) . 2(XE+YE)

X ÷ Y = (XM ÷ YM) . 2(XE-YE)

Adição e subtracção requerem, supondo que XE ≤ YE

• Calcular YE - XE (subtracção vírgula fixa)

• Deslocar XM de (YE - XE) bits para a direita para


formar XM . 2(XE-YE)

• Calcular XM . 2(XE-YE) ± YM
Multiplicação e divisão requerem:

• Multiplicação ou divisão vírgula fixa das


mantissas.
____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 28

• Soma ou subtracção vírgula fixa dos expoentes.

Em qualquer das 4 operações é necessário normalizar o


resultado.

Correcções necessárias por causa do deslocamento do


expoente:

• Se os expoentes são somados (subtraídos) o expoente


vem com um deslocamento duplo e o resultado tem que
ser corrigido por subtracção (soma) do deslocamento.

Exemplo: desloc. = 8 , NE = 4 , XE = 7 , YE = -3

XE = 1111
YE = 0101
------------
XE + YE = 10100
Correcção - 1000
------------
01100

• Se na multiplicação um dos factores for zero o


resultado não tem necessáriamente um expoente zero. É
então necessário um outro passo na operação para
colocar o expoente a zero.

ALU vírgula flutuante

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 29
Unidade de expoente Unidade de mantissa

E1 E2 AC MQ RD

Somador Somador

BUS de Dados

Fig 22

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 30
P.4 - UNIDADES DE CONTROLE MICROPROGRAMADAS

P.4.1 - Introdução

Controle hardwired - processador de operações


implementado exclusivamente em hardware

Controle microprogramado - processador de operações


implementado com base numa memória, normalmente do
tipo ROM.

Controle hardwired é muito mais rápido, mas


dispendioso e não flexível.

Microprogamação - método de desenho do processador de


operações em que os sinais de controle e de
informação para a sequência de controle estão
armazenados numa memória de controle (MC).

Microinstrução - uma palavra da MC.

Cada microinstrução especifica de algum modo os


sinais de controle e a próxima microinstrução a ser
executada.

Controle microprogramado é mais lento que o


hardwired, mas bastante mais flexível e com uma
implementação estruturada.

Firmware - Software e hardware envolvidos na unidade


de controle microprogramada.

Microprograma - conjunto de microinstruções que


interpretam uma instrução máquina.

Emulador da linguagem L - conjunto de microprogramas


que interpretam o repertório de instruções da
linguagem L.
P.4.2 - Modelo de WILKES

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 31
Endereço
Externo

Campo de
Registo Endereço
Endereço

Matriz
Comandos

Matriz
Endereços
Descodif.

Condição
Sinais de externa
controle
Fig 23

MEMÓRIA DE CONTROLE = MATRIZ DE COMANDOS + MATRIZ DE ENDEREÇOS

P.4.3 - Comprimento da microinstrução

Comprimento da microinstrução depende de:

• Grau de paralelismo exigido ao nível da


micrinstrução;

• Modo como a informação de controle é codificada;


• Modo como o próximo endereço é especificado (vulgar
existir num µPC).

Microinstruções i) formatos longos


horizontais ii) implementam um elevado grau
de paralelismo
iii) pouca codificação no campo de
controle

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 32
Microinstruções i) formatos curtos
verticais ii) pequena capacidade de
implementar operações
paralelas
iii) codificação considerável no
campo de controle

Definições extremas:

microinstrução horizontal - não há qualquer


codificação de informação de controle

microinstrução vertical - especifica só uma micro-


operação (nenhum paralelismo)

Campo de controle Campo de controle

Descodificador
Horizontal

Vertical
Fig 24

P.4.4 - Organização de uma unidade de controle


microprogramada

Formato da microinstrução

T S C
Fig 25
T - Campo de teste
S - Endereço de salto
C - Campo de controle

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 33
Endereço
externo
End. salto

Condições Load
externas MPX µ PC Contador de
microprograma
Increment

Memória de
Selector
de
MC controle
condição

T S C CMDR (Control
Memory
Data
Register)
Descodif.

Sinais de controle
Fig 26

P.4.5 - Escrita de microprogramas

A escrita de microprogramas pode ser comparada à


escrita de programas em Assembly, embora seja
necessário ter um conhecimento profundo da máquina.

Utilizam-se linguagens do tipo MICRO ASSEMBLY.

O tradutor será o MICRO ASSEMBLER.

P.4.6 - Exemplo de CPU microprogramada

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 34

AC=0
C0(ADD)
C1(AND) ALU
C2(COMP)

AC C12
C3(READ)
C4(WRITE)
C5 C6
Memória
MDR
Central
C7 C8 C11

PC C9 IR

C10
MAR
C0
Circuitos
AC=0 de controle
C12
Fig 27

Repertório de instruções máquina


Mnemónica Descrição
LOAD X AC ← M(X)
STORE X M(X) ← AC
ADD X AC ← AC + M(X)
AND X AC ← AC ∧ M(X)
JUMP X PC ← X
JUMPZ X if AC=0 then PC ← X
COMP AC ← AC/
RSHIFT Right Shift AC

Micro-operações para interpretação do repertório de


instruções

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 35
START

MAR ← PC

READ M

PC ← PC + 1
IR ← MDR (OP)

N N N N N N N
LOAD STORE ADD AND JUMP JUMPZ COMP

S S S S S S S
MAR ← MAR ← MAR ← MAR ←
MDR(AD) MDR(AD) MDR(AD) MDR(AD)
N
AC = 0

READ M MDR ← AC READ M READ M


S

AC ← AC ← PC ← PC ← SHIFT
AC ← MDR WRITE M AC + MDR AC ∧ MDR MDR (AD) MDR (AD) AC ← AC/ AC

Diag 4

Emulador (linguagem simbólica)

FETCH: MAR ← PC
READ M
PC ← PC +1 , IR ← MDR (OP)
goto IR

LOAD: MAR ← MDR (AD)


READ M
AC ← MDR , goto FETCH

STORE: MAR ← MDR (AD)


MDR ← AC
WRITE M , goto FETCH

ADD: MAR ← MDR (AD)


____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 36
READ M
AC ← AC + MDR , goto FETCH

AND: MAR ← MDR (AD)


READ M
AC ← AC ∧ MDR , goto FETCH

JUMP: PC ← MDR (AD) , goto FETCH

JUMPZ: if AC 0 then goto FETCH


PC ← MDR (AD) , goto FETCH

COMP: AC ← AC/ , goto FETCH

RSHIFT: Right-Shift (AC) , goto FETCH

Sinais de Operação controlada


controle
C0 AC ← AC + MDR
C1 AC ← AC ∧ MDR
C2 AC ← AC/
C3 MDR ← M(MAR) [READ M]
C4 M(MDR) ← MDR [WRITE M]
C5 MDR ← AC
C6 AC ← MDR
C7 MAR ← MDR (AD)
C8 PC ← MDR (AD)
C9 PC ← PC + 1
C10 MAR ← PC
C11 IR ← MDR (OP)
C12 Right-Shift AC

P.4.7 - O processador HP 21 MX

Formatos das µinstruções (HP 21 MX)

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 37
0 4 9 14 19 23
OP CODE ALU Funct Source reg Dest reg Special
1. Common

0 4 6 14 19 23
OP CODE Modi Immediate operand Dest reg Special
2. Immediate
fier

0 4 9 10 19 23
3. Conditional OP CODE Cond Select C 9 bit relative addr Special
jump S

0 4 7 19 23
4. Unconditional OP CODE 12 bit absolute address Jump modif
jump

Fig 29

Formato das instruções em µAssembly


tipo campo 1 campo 2 campo 3 campo 4 campo 5 campo 6 campo 7
common label op code special alu dest. source comment
function register reg.
immediate label imm special modifiers dest. operand comment
register
conditional label jmp cnd x condition condition branch comment
jump select sense address
unconditional label jmp ou jump branch
jump jsb ou modifier unused unused address comment
rtn

Estrutura do HP 21 MX

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
P - 38
T-BUS (16 bit)

Descodificadores Sinais
e lógica de de
controle controle
PC (P) ALU
X fixed
point CMDR
Y
S12
Memória A B
Memória
Central de
controle
L
S2

S1 CMAR SAVE
(M) MAR MDR (T)
S
15 16 16
IR

S-BUS (16 bit)

COUNT
I / O
Fig 28

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X-1

A FAMÍLIA 8086
X.1 - INTRODUÇÃO

A família de microprocessadores 8086 inclui os CPU's


i8086 e i8088.

Algumas características:

O 8088 comunica externamente com a memória e I/O


através de um canal de 8 bits.

O 8086 comunica com a memória e I/0 por um canal de


16 bits.

Ambos podem endereçar até 1 Mbyte de memória (20


linhas de endereço).

Ambos possuem um pipeline de instruções interno que


faz a pré-aquisição de instruções (prefetch) durante
os ciclos livres do BUS, o que aumenta muito o
desempenho.

Ambos possuem canais internos de dados de 16 bits.

4 12
Endereço Endereço

16 8
8086 Dados/Endereço 8088 Dados/Endereço

Controle Controle

Fig 30

X.2 - A ARQUITECTURA DOS PROCESSADORES

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X-2
Unidade de interface
Unidade de execução (EU) com o BUS (BIU)
Registos Registos de
Gerais segmento
Ap Instr (IP)

Geração de
endereços e
controle do BUS
BUS Multiplexado
Operandos

Fila de
instruções
ALU

Flags
Fig 31

Os endereços manipulados pela EU são de 16 bits.

A BIU realiza uma relocação de endereços que permite


o acesso a um espaço de memória de 1 Mbyte.

A BIU executa todas as operações com o BUS do


sistema:

• Troca de dados entre a EU e a memória do sistema e


dispositivos de I/O.

• Enquanto a EU está ocupada a executar instruções, a


BIU lê na memória central as próximas instruções a
realizar (prefetch).
X.2.1 - Registos gerais

O 8086 tem um conjunto de 8 registos gerais de 16


bits organizados da seguinte forma:

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X-3

15 8 7 0
AX
AH AL Acumulador
BX
Grupo Base
BH BL
de
dados CX
CH CL Contador

DX
Dados
DH DL
15 0
Apontador
SP
de Stack
Apontador
Grupo de BP
de base
apontadores
e índices Índice
SI
de origem
Índice
DI
de destino

Fig 32

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X-4
Algumas instruções usam os registos de forma
implícita.

Registo Operações
AX Multiplicação, divisão, I/O (Word)
AL Multiplicação, divisão, I/O (Byte)
AH Multiplicação, divisão (Byte)
BX Tradução
CX Loops, operações com strings
CL Rotação e deslocamento de variáveis
DX Multiplicação, divisão, (Word);
I/O indirecto
SP Operações de stack
SI Operações com strings
DI Operações com strings

X.2.2 - Registos de segmento e apontador de instrução

O espaço de memória do 8086 está dividido em


segmentos lógicos de até 64 kbyte cada um.

O CPU tem acesso a 4 segmentos em simultâneo. Os seus


endereços de base estão contidos nos registos de
segmento.
15 0
Segmento
CS
de código
Segmento
DS
de dados
Segmento
SS
de Stack
Segmento
ES
extra
Fig 33
O apontador de instrução (IP) é um registo de 16 bits
que

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X-5

• em execução normal tem o offset relativo a CS da


próxima instrução a ser fetched pela BIU;

• quando é guardado na stack tem o valor da próxima


instrução a ser executada.

X.2.3 - Flags

O 8086 tem 3 flags de controle que podem ser


alteradas pelos programas para alterar as operações
do processador, e 6 flags de estado que reflectem
certas propriedades do resultados das operações
aritméticas ou lógicas.
Flags de controle Flags de estado

TF DF IF OF SF ZF AF PF CF

Carry

Paridade

Auxiliar
Zero
Sinal
Overflow
Interrupt
Enable
Direcção
Trap
Fig 34

• carry - carry ou borrow no bit mais significativo


(MSB) de um resultado (8 ou 16 bits)

• paridade - paridade par quando activa

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X-6

• auxiliar - carry ou borrow entre nibbles (usada por


aritmética decimal)

• zero - o resultado da operação é 0

• sinal - o MSB é 1 (número negativo)

• overflow - perda de um bit significativo

• interrupt enable - permite que o CPU reconheça


interrupções externas (mascaráveis)

• direcção - quando activa provoca o auto-decremento


nas intruções sobre strings, de contrário
provoca o auto-incremento

• trap - põe o processador no modo single-step para


debugging

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X-7
X.3 - MEMÓRIA

X.3.1 - Organização

O espaço de memória do 8086 está organizado em


conjuntos de bytes (8 bits).

• Instruções e dados podem ser guardados em quaisquer


endereços sem ter em atenção alinhamento algum. O
código fica densamente arrumado, poupando memória.

No entanto, variáveis de 16 bits com endereços


ímpares (não alinhadas) não aproveitam a capacidade
de transferência de 16 bits em simultâneo do 8086.

As instruções não precisam de estar alinhadas.

• Variáveis de 16 bits (word) são guardadas em


memória com o byte menos significativo na posição de
memória mais baixa.

Apontadores (doubleword) são compostos por 2 words. A


word de endereço mais baixo contém um offset. A word
de endereço mais elevado contém o endereço base do
segmento.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X-8
X.3.2 - Segmentação

O espaço de memória de 1 Mbyte do 8086 é visto pelos


programas como um grupo de segmentos de até 64 kbytes
definidos por cada aplicação.

Os segmentos têm endereços base múltiplos de 16


bytes.

Os segmentos podem ser adjacentes, disjuntos,


parcialmente ou totalmente sobrepostos. Um endereço
físico pode estar contido num ou mais segmentos.

FFFFFH
A

B
C
Dados: DS: B

D
Código: CS: E

E
Stack: SS: H
F
G
Extra: ES: J H

I
J

K
0H
Fig 35

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X-9
X.3.3 - Geração de endereços físicos

Cada posição de memória tem apenas um endereço


físico, mas pode ter vários endereços lógicos.

Um endereço físico pode variar entre 0H e FFFFFH.

Um endereço lógico é dado por 2 valores: base do


segmento e offset.

Deslocar 4 bits
à esquerda Base do
1 2 3 4
segmento
15 0 Endereço
1 2 3 4 0 lógico
19 0 0 0 2 2 Offset
15 0
0 0 2 2
15 0

1 2 3 6 2 Endereço físico
19 0

Para a memória
Fig 36

Origens dos endereços lógicos

Base de Base de
Tipo de referência a memória segmento por segmento Offset
omissão alternativo
Aquisição de instrução (fetch) CS Nenhum IP
Operação em stack SS Nenhum SP
Variável (excepto seguintes) DS CS,ES,SS Endereço efectivo
String de origem DS CS,ES,SS SI
String de destino ES Nenhum DI
BP como registo de base SS CS,DS,ES Endereço efectivo

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 10
X.3.4 - Implementação da Stack (pilha)

A stack no 8086 encontra-se em memória e é


referenciada pelos registos SS (stack segment) e SP
(stack pointer).
Um sistema pode ter um número ilimitado de stacks, e
uma stack pode ter até 64 kbytes de capacidade.
Apenas se pode endereçar uma stack de cada vez.
As operações na stack são sempre sobre 16 bits.
Um valor é carregado (PUSHed) em stack decrementando
o SP 2 unidades e escrevendo o valor na stack.
Um valor é retirado (POPed) da stack lendo-o do topo
da stack e incrementando o SP 2 unidades.
POP AX
PUSH AX POP BX
Fim da stack
AX 1 2 3 4 AX 1 2 3 4
BX 1 2 3 4

1062 0 0 1 1 1062 0 0 1 1 1062 0 0 1 1


1060 2 2 3 3 1060 2 2 3 3 1060 2 2 3 3
105E 4 4 5 5 105E 4 4 5 5 105E 4 4 5 5
105C 6 6 7 7 105C 6 6 7 7 105C 6 6 7 7
TOS
105A 8 8 9 9 105A 8 8 9 9 105A 8 8 9 9
TOS
1058 A A B B 1058 A A B B 1058 A A B B
TOS
1056 0 1 2 3 1056 1 2 3 4 1056 1 2 3 4
1054 4 5 6 7 Fora 1054 4 5 6 7 1054 4 5 6 7
1052 8 9 A B da 1052 8 9 A B 1052 8 9 A B
stack
1050 C D E F 1050 C D E F 1050 C D E F

1 0 5 0 SS 1 0 5 0 SS 1 0 5 0 SS

0 0 0 8 SP 0 0 0 6 SP 0 0 0 A SP
Fig 37

Operação em stack para a sequência de código

PUSH AX
POP AX
POP BX
X.4 - INSTRUÇÕES

X.4.1 - Instruções de transferência de dados


____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 11

Âmbito Geral
MOV destino, origem Move byte ou word
PUSH origem Carrega word na stack
POP destino Retira word da stack
XCHG destino, origem Troca byte ou word
XLAT tabela Traduz byte
Entrada / Saída
IN acc, porto Lê byte ou word
OUT porto, acc Escreve byte ou word
Endereço
LEA destino, origem Carrega endereço efectivo
LDS destino, origem Carrega apontador usando DS
LES destino, origem Carrega apontador usando ES
Transferência de flags
LAHF Coloca as flags em AH
SAHF Coloca AH nas flags
PUSHF Carrega as flags na stack
POPF Retira flags da stack

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 12

X.4.2 - Instruções aritméticas

Adição
ADD destino, origem Adiciona byte ou word
ADC destino, origem Adiciona byte ou word com carry
INC destino Incrementa byte ou word 1 unidade
AAA Ajusta ASCII para adição
DAA Ajusta decimal para adição
Subtracção
SUB destino, origem Subtrai byte ou word
SBB destino, origem Subtrai byte ou word com borrow
DEC destino Decrementa byte ou word 1 unidade
NEG destino Nega byte ou word
CMP destino, origem Compara byte ou word
AAS Ajusta ASCII para subtração
DAS Ajusta decimal para subtacção
Multiplicação
MUL origem Multiplica byte ou word sem sinal
IMUL origem Multiplicação inteira de byte ou word
AAM Ajuste ASCII para multiplicação
Divisão
DIV origem Divide byte ou word sem sinal
IDIV origem Divisão inteira de byte ou word
AAD Ajuste ASCII para divisão
CBW Converte byte em word
CWD Converte word em doubleword

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 13

X.4.3 - Instruções de manipulação de bits

Lógicas
NOT destino Complementa byte ou word
AND destino, origem Produto lógico de byte ou word
OR destino, origem Soma lógica de byte ou word
XOR destino, origem Ou exclusivo de byte ou word
TEST destino, origem Teste (AND) de byte ou word
Deslocamentos
SHL / SAL destino, count Deslocamento lógico / aritmético de byte
ou word à esquerda
SHR destino, count Deslocamento lógico de byte ou word à
direita
SAR destino, count Deslocamento aritmético de byte ou word
à direita
Rotações
ROL destino, count Roda byte ou word à esquerda
ROR destino, count Roda byte ou word à direita
RCL destino, count Roda byte ou word com carry à esquerda
RCR destino, count Roda byte ou word com carry à direita

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 14

X.4.4 - Instruções sobre strings

REP Repete
REPE / REPZ Repete enquanto for igual / zero
REPNE / REPNZ Repete enquanto não for igual / não zero
MOVS destino, origem Move string de bytes ou words
MOVSB / MOVSW Move string de bytes ou words
CMPS destino, origem Compara string de bytes ou words
SCAS destino Pesquisa string de bytes ou words
LODS origem Lê string de bytes ou words
STOS destino Escreve string de bytes ou words

Registos e flags utilizados

SI Índice (offset) da string origem


DI Índice (offset) da string destino
CX Contador de repetições
AL / AX Valor para pesquisa
Destino para LODS
Origem para STOS
DF 0 = auto-incrementa SI, DI
1 = auto-decrementa SI, DI
ZF Termina pesquisa ou comparação

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 15
Fluxo das operações com strings

Inicializa
SI, DI,
CX e DF

Prefixo Ausente
REPEAT

Presente

S
CX = 0

Decrementa
CX 1 unidade

Opera String DF delta


string
usando Byte 0 1
SI / DI Byte 1 -1
Word 0 2
Word 1 -2

Prefixo z
Ajusta
SI / DI REPE 1
de delta REPZ 1
REPNE 0
REPNZ 0

CMPS S S
ou ZF = z
SCAS

N N

Presente Prefixo
REPEAT

Ausente

Próxima
instrução

Diag 5

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 16
X.4.5 - Instruções de transferência de controle

Transferências incondicionais
CALL nome-de-rotina Chama procedimento
RET valor-a-retirar (op) Volta de um procedimento
JMP endereço Salta
Transferências condicionais
JA / JNBE rótulo Salta se superior / não inferior nem igual
JAE / JNB rótulo Salta se superior ou igual / não inferior
JB / JNAE rótulo Salta se inferior / não superior nem igual
JBE / JNA rótulo Salta se inferior ou igual / não superior
JC rótulo Salta se carry
JE / JZ rótulo Salta se igual / zero
JG / JNLE rótulo Salta se superior / não inferior nem igual
JGE / JNL rótulo Salta se superior ou igual / não inferior
JL / JNGE rótulo Salta se inferior / não superior nem igual
JLE / JNG rótulo Salta se inferior ou igual / não superior
JNC rótulo Salta se não carry
JNE / JNZ rótulo Salta se não for igual / não zero
JNO rótulo Salta se não overflow
JNP / JPO rótulo Salta se não paridade / paridade ímpar
JNS rótulo Salta se não tiver sinal
JO rótulo Salta se overflow
JP / JPE rótulo Salta se paridade / paridade par
JS rótulo Salta se tiver sinal
Controle de iteração
LOOP rótulo Ciclo
LOOPE / LOOPZ rótulo Ciclo se igual / zero
LOOPNE / LOOPNZ rótulo Ciclo se não igual / não zero
JCXZ rótulo Salta se CX = 0
Interrupções
INT tipo Interrupção
INTO Interrupção se overflow
IRET Volta de interrupção

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 17

Mnemónica Condições testadas


JA / JNBE (CF ou ZF) = 0
JAE / JNB CF = 0
JB / JNAE CF = 1
JBE / JNA (CF ou ZF) = 1
JC CF = 1
JE / JZ ZF = 1
JG / JNLE ((SF xor OF) ou ZF) = 0
JGE / JNL (SF xor OF) = 0
JL / JNGE (SF xor OF) = 1
JLE / JNG ((SF xor OF) ou ZF) = 1
JNC CF = 0
JNE / JNZ ZF = 0
JNO OF = 0
JNP / JPO PF = 0
JNS SF = 0
JO OF = 1
JP / JPE PF = 1
JS SF = 1

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 18

X.4.6 - Instruções de controle do processador

Operações com flags


STC Activa flag de carry
CLC Desactiva flag de carry
CMC Complementa flag de carry
STD Activa flag de direcção
CLD Desactiva flag de direcção
STI Activa flag de interrupt enable
CLI Desctiva flag de interrupt enable
Sincronização externa
HLT Pára até interrupção ou reset
WAIT Espera até pino TEST/ estar activo
ESC Escape para processador externo
LOCK Prende o bus para a próxima instrução
Sem efeito
NOP Não efectua nenhuma operação

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 19

X.5 - MODOS DE ENDEREÇAMENTO

Cálculo dos endereços de memória

Índice simples Índice duplo


BX BX SI
ou ou ou
Codificado BP BP DI
na ou
instrução SI EU
ou
DI
Explícito
na Endereço
deslocamento
instrução efectivo

CS 0
ou
Assumido SS 0
por ou
omissão
DS 0 BIU
ou
ES 0

Ender. físico

Fig 38

O endereço efectivo é calculado pela EU. É um número


de 16 bits que representa a distância do operando ao
início do segmento onde reside.

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 20
X.5.1 - Operandos em registo e imediato

As instruções com operandos apenas em registo são as


mais compactas e rápidas. São executadas inteiramente
na CPU.

Exemplo: ADD AX, BX

Os operandos imediatos são constantes contidas na


instrução, sendo por isso de acesso rápido. Servem
apenas como origem, nunca como destino.

Exemplo: ADD AL, 5

X.5.2 - Endereçamento directo

É o modo de endereçamento mais simples. É usado para


endereçar variáveis simples (escalares).

OP CODE R/M MOD deslocamento

End. efectivo
Fig 39

Exemplo: ADD CX, alfa

ADD alfa, 6

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 21

X.5.3 - Endereçamento indirecto

Uma instrução pode operar em diferentes posições de


memória se o registo de base ou índice for
actualizado. Instruções aritméticas e LEA podem ser
usadas para o efeito.

OP CODE R/M MOD

BX
ou
BP
ou End. efectivo
SI
ou
DI
Fig 40

Exemplo: ADD BL, [BX]

ADD [SI], 12

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 22
X.5.4 - Endereçamento com registo de base

O endereço efectivo é a soma do deslocamento com o


conteúdo do registo BX ou BP. É usado para endereçar
estruturas.
OP CODE R/M MOD deslocamento

BX
ou
BP

End. efectivo
Fig 41

Acesso a uma estrutura usando endereçamento com base


Endereços altos
deslocamento deslocamento
(Data_de_inscrição) (Data_de_inscrição)
Propina Atraso

Data_de_inscrição

Curso Turma

Registo base Idade Estado Registo base


Número_de_aluno

End. efectivo End. efectivo

Propina Atraso

Data_de_inscrição

Curso Turma

Idade Estado

Número_de_aluno

Endereços baixos
Fig 41a

Exemplo: ADD [vector].alfa, AH

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 23
X.5.5 - Endereçamento indexado

O endereço efectivo é a soma do deslocamento com o


conteúdo de SI ou DI. É usado para o endereçamento de
vectores.

OP CODE R/M MOD deslocamento

SI
ou
DI

End. efectivo
Fig 42

Acesso a um vector usando endereçamento indexado


Endereços altos

deslocamento deslocamento
Array (11)

Array (10)

Array (9)
Registo de índice Registo de índice
20 Array (8) 6
Array (7)

Array (6)
End. efectivo End. efectivo
Array (5)

Array (4)

Array (3)

Array (2)

Array (1)

Array (0)

1 word

Endereços baixos
Fig 42a
Exemplo: ADD CX, alfa[SI]
ADD alfa[DI+2], 10

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 24
X.5.6 - Endereçamento indexado e com registo de base

O endereço efectivo é a soma do registo de base com


um registo de índice e um deslocamento.

OP CODE R/M MOD deslocamento

BX
ou
BP

SI
ou
DI

End. efectivo
Fig 43

Exemplo: ADD [BX].alfa[SI], AL


ADD SI, [BP+4][DI]
X.5.7 - Endereçamento de strings

Os registos de índice são usados implicitamente.


Em operações repetidas a CPU ajusta SI e DI
automaticamente de modo a obter bytes ou words.

OP CODE

SI End. efectivo (origem)

DI End. efectivo (destino)


Fig 44

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 25
X.5.8 - Endereçamento de portos de I/O

No endereçamento directo o número do porto é um


operando de 8 bits imediato.

OP CODE Dado

End. do porto
Fig 45

Exemplo: IN AL, 30

No endereçamento indirecto o número do porto é lido


de DX e utiliza 16 bits.

OP CODE

DX End. do porto
Fig 46

Exemplo: OUT DX, AX

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 26
X.6 - PROGRAMAÇÃO EM ASSEMBLY 86

X.6.1 - Definição de dados

Constantes

Podem ser números binários, decimais, octais ou


hexadecimais.

Todos os números devem ser representados em 16 bits


incluindo um bit de sinal.

Os números negativos são representados em complemento


para 2.

Exemplos:

letra_A EQU 'A' ;caracter

hexa_A EQU 41H ;equivalente em hex.

hexa_196 EQU 0C4H ;hexadecimal

octal_8 EQU 10O ;octal

tudo_uns EQU 11111111B ;binário

menos_5 EQU -5 ;decimal

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 27

Variáveis

Podem ser do tipo byte , word ou doubleword. As


directivas DB, DW e DD servem para reservar o
respectivo espaço em memória.

Exemplos:

dados_1 SEGMENT

alfa DB ? ;não inicializada


beta DW ? ;não inicializada
gama DD ? ;não inicializada
delta DB ? ;não inicializada
epsilon DW 5 ;contém 05H

dados_1 ENDS

dados_2 SEGMENT AT 55H ;especifica endereço de base

iota DB 'HELLO' ;contém 48 45 4C 4C 4F H


kapa DW 'AB' ;contém 42 41 H
lambda DD dados_1 ;contém 0000 5500 H
mu DB 100 DUP (0) ;contém (100 x) 00H

dados_2 ENDS

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 28
O assembly 86 guarda três atributos de cada variável
e fornece dois operadores que podem ser usados em
programação.

Atributos Operadores
Variável Segmento Offset Tipo LENGTH SIZE
alfa dados_1 0 1 1 1
beta dados_1 1 2 1 2
gama dados_1 3 4 1 4
delta dados_1 7 1 1 1
epsilon dados_1 8 2 1 2
iota dados_2 0 1 5 5
kapa dados_2 5 2 1 2
lambda dados_2 7 4 1 4
mu dados_2 11 1 100 100

Estruturas

Uma estrutura é uma entidade que dá um nome e


atributos a um conjunto de campos.

Exemplo:

empregado STRUC

num_cont DB 9 DUP(?)
dept DB 1 DUP(?)
ano_contr DW 1 DUP(?)

empregado ENDS

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 29
X.6.2 - Directivas

Um programa em assembly 86 compreende uma série de


segmentos: segmento de código, segmento de dados,
segmento de stack.
As directivas SEGMENT e ENDS iniciam e terminam o
segmento.
A directiva ASSUME diz ao assemblador quais os
endereços que serão colocados nos registos de
segmento durante a execução do programa.

Exemplo:
dados SEGMENT
;definição dos dados
dados ENDS

pilha SEGMENT
DW 100 DUP(?)
topo_da_pilha LABEL WORD
pilha ENDS

codigo SEGMENT

ASSUME CS: codigo


DS: dados
ES: dados
SS: pilha

inicio: MOV AX, dados


MOV DS, AX
MOV ES, AX
MOV AX, pilha
MOV SS, AX
MOV SP, OFFSET topo_da_pilha

; programa principal

codigo ENDS

END inicio
X.6.3 - Procedimentos

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 30
Um procedimento em assembly 86 é invocado com a
instrução CALL. O procedimento termina com a
instrução RET que transfere o controle para a
instrução seguinte ao CALL.

Os parâmetros para o procedimento podem ser passados


por registo ou por stack.

Exemplo:
savebp MACRO ; definição de uma macro
PUSH BP ; guarda o valor de bp
MOV BP, SP
ENDM ; fim da definição de macro

deccount PROC NEAR ; definição de um procedimento


num EQU WORD PTR [BP+4]
savebp
PUSH num
CALL _lercount
ADD SP, 2
DEC AX
PUSH AX
PUSH num
CALL _esccount
ADD SP,4
POP BP ; repõe o valor de bp
RET
deccount ENDP ; fim da definição de
; procedimento

; Programa principal

...

PUSH indice
CALL deccount
ADD SP,2

...
X.6.4 - Strings

Exemplo de cópia (deslocada de 10 bytes) de 20 bytes


da string linha_1 para a string linha_2.
____________________________________________________________________________________________________________
Arquitectura de Computadores AP
X - 31
LEA SI, linha_1 ;inicializa
LEA DI, linha_2 + 10 ;registos de índice
MOV CX, 20 ;contador de repetições
CLD ;auto-incrementa
REP MOVS linha_2, linha_1

Exemplo de comparação alfabética de 2 nomes.


MOV SI, OFFSET nome_1 ;alternativo ao LEA
MOV DI, OFFSET nome_2
MOV CX, SIZE nome_2 ;contador
CLD ;auto-incrementa
REPE CMPS nome_2, nome_1 ;enquanto for igual
JB nome_2_menor
nome_1_menor: ;não é relevante para
nome_2_menor: ;o exemplo

Exemplo de procura do último ponto ('.') numa string.


MOV DI, OFFSET frase +
& LENGTH frase ;começa pelo fim
MOV CX, SIZE frase ;contador
STD ;auto-decrementa
MOV AL, '.' ;argumento de procura
REPNE SCAS frase
JCXZ nao_ha_ponto
ha_ponto: ;não é relevante para
nao_ha_ponto: ;o exemplo

____________________________________________________________________________________________________________
Arquitectura de Computadores AP
M-1

MEMÓRIA
M.1 - HIERARQUIA DE MEMÓRIAS NUM COMPUTADOR DIGITAL

Unidade ROM MC
de
controle Registos

CPU

Processador Reg ALU

CACHE
(RAM bipolar) Cache CAM
Ta ~ 20 ns

Memória Central
(RAM MOS) RAM 1 RAM n
Ta ~ 80-100 ns

Memória Secundária
(Tecnologia Discos
Electromecânica)
Ta ~ ms
Fig 47

Quando se caminha no sentido da memória secundária


encontramos memórias com maior capacidade, maior
tempo de acesso e mais baixo custo/bit.

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M-2
M.2 - TECNOLOGIA

M.2.1 - Características das principais memórias

Modos de acesso

i) Acesso aleatório
Tempo de acesso é o mesmo para todas as palavras.
Modo típico de acesso em memória central.
Ex.: Memória semicondutora (MOS, bipolar)

ii) Acesso sequencial


Tempo de acesso depende da localização em memória
da palavra à qual se pretende aceder. Típico de
memória secundária.
Ex.: discos e banda magnética.

iii) Acesso associativo


Acesso feito só a palavras que tenham um dado
conteúdo parcial.
Típicamente usado em tabelas de cache ou na
memória central em aplicações especiais.

Tecnologias

Tecnologia Custo/bit Ta (s) Modo de Permanência Meio


relativo acesso físico
Semicondutor
a 10 10-8 Aleatório Volátil Electrónico
bipolar
Semicondutor
a 1 10-7 Aleatório Volátil Electrónico
MOS
Discos Série
magnéticos 10-2 10-2 (Série-Aleatório) Não-volátil Magnético
Bandas
magnéticas 10-3 10-1 Série Não-volátil Magnético
M.2.2 - Memórias de acesso aleatório

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M-3
UNIDADE DE MEMÓRIA
Driver de
endereços
Descodificador Células de
de endereços memória

Sinais de Driver de Driver de


controle interno escrita leitura

MAR Controle MDR1 MDR2

BUS de endereços BUS de controle BUS de dados

Fig 48

MAR - Memory Address Register


MDR - Memory Data Register
UCM - Unidade de Controle de Memória

• MDR1 e MDR2 formam normalmente um único registo


MDR.

• Drivers, descodificador e UCM formam os circuitos


de acesso da unidade de memória.

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M-4
Organização das células de memória

Organização a 1 dimensão

C1
BUS de
endereços DESCO
DIFI
CADOR

Cn
Fig 49

• cada célula está ligada a uma linha do endereço


descodificado

• capacidade de N bits ⇒ descodificador com N saídas


e n drivers de endereço

Organização a 2 dimensões

C00 C01 C02 C03

DESCO C10 C11 C12 C13


DIFI
CADOR C20 C21 C22 C23

X
C30 C31 C32 C33

BUS de
endereços DESCODIFICADOR Y

Fig 50

• campo de endereços dividido em 2 componentes X e Y,


cada um com ax e ay bits respectivamente

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M-5

• as células estão dispostas num array rectangular


com Nx ≤ 2ax linhas e Ny ≤ 2ay colunas. O número
total de células é N=Nx.Ny.

• Uma célula é seleccionada por coincidência de


sinais nas suas linhas de endereço X e Y.

• A organização 2-D requer menor número de circuitos


de acesso que a 1-D.

Ex: Nx=Ny= N ⇒ 2 N drivers e 2 descodificadores com


N saídas.

Implementação

Uma célula de memória semicondutora pode ser


implementada com:

• um flip-flop MOS ou bipolar (estática);


• um transistor e um condensador (dinâmica).

As RAM's dinâmicas são mais baratas e têm alta


densidade de integração. Requerem circuitos especiais
para refrescamento das células.

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M-6
Desenho de um array de memória
Um problema comum a resolver é ter CI's (circuitos
integrados) com capacidade de m × n bits e precisar de
uma memória m'× n', sendo m'≥ m e n'≥ n.
Símbolo para um circuito de 4 × 2 bits de memória
AE WE Linhas de controle

Linhas de
A0 Z0 Saída de
endereço
M 4x2 dados
A1 Z1

X0 X1 Entrada de dados
Fig 51

Array de memória de 16 × 4 bits


WE

M 4x2 M 4x2

A0
M 4x2 M 4x2
A1

A2
Descod.
A3 M 4x2 M 4x2
Enable

AN
M 4x2 M 4x2

X2 X1 X0
X3
Z0 Z1
Z2 Z3
Fig 52
M.2.3 - Memórias de acesso sequencial

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M-7

• Disco magnético é uma das memórias de acesso


sequencial mais usada.

• Outras tecnologias: tambor magnético, banda


magnética, disquetes, etc.

O disco é coberto com um material magnetizável.


Existem sistemas com cabeças fixas e com cabeças
móveis.

O disco gira por debaixo das cabeças de


leitura/escrita por acção de um motor eléctrico,
definindo-se pistas na superfície do disco.
Geralmente ambos os lados do disco são usados para
guardar informação.

• Cabeças fixas - para aceder a uma dada palavra a


lógica de controle do disco tem que esperar que seja
atingido o ângulo de rotação correcto do disco.

• Cabeças móveis - para aceder a uma palavra, o mesmo


que para cabeças fixas e adicionalmente é necessário
posicionar a cabeça na pista correcta.

Cilindro - conjunto de pistas acessíveis por todas as


cabeças numa dada posição.

Os discos com cabeças móveis são geralmente mais


lentos do que os com cabeças fixas, embora sejam os
mais utilizados.

Características físicas

• Bits estão armazenados em pistas concêntricas na


superfície e em densidades de 1000 a vários milhares
de bits por polegada.

• Densidades de pista entre 50 a várias centenas de


pistas por polegada.
____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M-8
Exemplo 1

Considere-se um "disk pack" com cabeças móveis de 18


polegadas (in) de diâmetro e 20 superfícies (s) de
armazenamento. Cada superfície tem uma faixa de 5 in
de informação gravada com a densidade de 2000 bits/in
(b/i) na pista mais interior e 100 pistas/in (t/i).

Capacidade = nº de pistas . b/i . circunferência

nº de pistas = s . t/i . 5 = 20.100.5 = 104

Capacidade ≈ 104 . 2 . 103 . 25 = 5.108 bits

Exemplo 2

Considere-se o mesmo sistema de discos, supondo que


se tem um motor a rodar a 2400 rpm.

= 60 × 10 ms / min = 25 ms
3
Tempo de rotação = 1
vel. motor 2400 rpm

"Head rate" =
bits por pista
= 50 × 10 3
bit = 2 × 10 6 bit / s
tempo de rotação 25 ms

Disco com cabeças móveis

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M-9
Pré-amplificadores
Cabeça de
escrita/leitura PA Lógica de
selecção
PA de
cabeças

PA

Um
cilindro Controlador
de
disco

Motor de Lógica de
posiciona- selecção
mento de de
MOTOR cilindro cilindro
Fig 53

Acesso a uma palavra no disco (cabeças móveis)


• A cabeça deve ser colocada na pista correcta. É a
chamada operação de busca (seek). Todas as cabeças se
movimentam solidariamente.
• É necessário aceder à palavra na pista. A
identificação do endereço é feita conjuntamente por
secções de informação especialmente formatadas e por
informação existente na pista quanto à posição
angular (circunferência dividida em sectores).

Tempo de acesso máximo e tempo de acesso médio em


discos, são normalmente indicados pelos fabricantes.
O Ta máx é o tempo de busca mais longo mais o tempo de
uma rotação. O Ta med é determinado de diferentes
modos de fabricante para fabricante.
M.3 - MEMÓRIA CENTRAL

M.3.1 - Generalidades

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 10

CPU ou canal
endereços controle dados

UCM

MAR MDR

Desc.
End. RAM

Fig 54

Tempo de ciclo de memória - período mínimo que tem


que mediar entre dois acessos consecutivos a memória.

A Unidade de Controle de Memória (UCM) é um conjunto


de circuitos lógicos (variável de máquina para
máquina) que aceita endereços do exterior e lê ou
armazena informação na memória.

Funções principais da UCM

• Interface entre a memória e o resto da máquina


• Fiscalizar a integridade da informação
• Gestão de memória
• Protecção de memória
M.3.2 - Protecções no acesso a memória central

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 11
Endereço

Teste
Registos N
Delimi-
tadores
Acesso a
uma região Endereço
S rejeitado
de memória

Teste
Chave,
Fechadura N

Acesso a
um bloco S
na região

TEST N Estado de espera


and SET ou nova tentativa

Leitura Escrita

Leitura
N Teste
"tag bits"

Teste N Acção
"tag bits" adequada Escrita

Acesso a
uma
palavra

Palavra lida Palavra escrita


Diag 6

i) Teste dos registos delimitadores

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 12
Restrigem o acesso a certas zonas fixas de memória
para um programa.
O hardware está localizado no processador de
endereços na CPU.
Endereço gerado
pelo programa

Somador Registo
Base

Registo
Comparador
Interrupção Delimitador
ao Sist. Oper. Endereço efectivo
válido

End. Base

End. Limite

Fig 55

ii) Teste de chave e fechadura (lock and key)


Protecção a nível mais baixo que a dos registos
delimitadores.

Protege blocos dentro de uma região de memória.

Exemplos

• Acesso negado (tabelas de sistema)

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 13

• Acesso só de leitura (a um programa de outro


utilizador)

• Acesso leitura/escrita

Blocos de memória são protegidos por uma fechadura


(combinação de bits associada ao bloco). Acesso é
permitido se o utilizador tiver a chave respectiva
assignada pelo sistema operativo.

Exemplo do IBM 370


Cada bloco de 2 Kbyte tem associada uma fechadura de
4 bits (storage key) e 1 bit de protecção (read/write
ou write protected).

A cada utilizador é assignada uma chave (protection


key) de 4 bits pelo sistema operativo quando o seu
programa está a correr. Permite até 16 utilizadores
simultâneos.

Chave : Fechadura Bit de protecção Acções permitidas


Iguais 0 Leitura/Escrita
Iguais 1 Leitura/Escrita
Diferentes 0 Só leitura
Diferentes 1 Não há acesso

Uma chave 0000 permite aceder a qualquer fechadura. É


utilizada pelo sistema operativo.
iii) Teste de "TEST and SET"
Nalgumas circunstâncias desejamos que vários
utilizadores tenham acesso aos mesmos blocos de
memória mas só um de cada vez.

Alguns computadores têm uma instrução do tipo "TEST


and SET" (IBM 370, UNIVAC 1108).

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 14
Uma área de memória está protegida por um bit de
controle.

Se o bit de controle=0 quando TEST and SET é


executado, o bit é passado a 1 e o programa acede a
essa área.

Se o bit de controle=1, é negado o acesso à área.

Após completar o acesso, o programa deve fazer o


reset do bit de controle.

iv) "Tag bits"

É um conjunto de bits associados a uma palavra de


memória e contendo informação sobre essa palavra.

As tags protegem palavras e não blocos.

Exemplos:
• bits de paridade;
• distinção entre palavras de programa e dados.
v) Detecção e correcção de erros
Para detectar um erro basta acrescentar um bit de
paridade à palavra. Aumentando o número de bits de
paridade teremos possibilidades de detectar mais
erros e de corrigi-los.
Nas máquinas actuais é normal existir controle de
erros a nível de periféricos, memória central e
memória secundária.

Exemplo de código corrector de 1 erro (código de


Hamming)
Suponhamos palavras de 4 bits: d4 d3 d2 d1
São necessários 3 bits de paridade: p3 p2 p1
• p1 controla as posições 1, 3, 5, 7
• p2 controla as posições 2, 3, 6, 7
____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 15

• p3 controla as posições 4, 5, 6, 7

Controlando a paridade nestes três grupos de


posições, com um circuito combinatório, obtém-se a
quantidade c3 c2 c1 que indica a posição do erro, ou se
for igual a zero, indica não haver erro.

Se enviar a palavra p1p2p3d1d2d3d4=1101001 e receber


1101011, detecto um erro em p2 e p3. Isto dá-me a
indicação de um erro no bit 6 da palavra.

Para corrigir 1 erro numa palavra com n bits são


necessários k bits extra, tal que:
2k ≥ n + k + 1
k ≥ log2(n + k + 1)
M.4 - ORGANIZAÇÃO DE MEMÓRIA DE ALTA VELOCIDADE

Se o tempo de ciclo de memória for satisfatório pode-


-se usar a organização tradicional de memória.

Se o processador for muito rápido e pretendermos


atingir uma maior velocidade de acesso, e admitindo
que não se usa uma tecnologia mais rápida teremos que
usar memórias paralelas ou cache, ou ambas.

Em ambas as organizações se tem por objectivo


aumentar a largura de banda da memória.

Ambas envolvem o uso de hardware adicional e


necessitam que haja uma certa regularidade no seu
endereçamento para que se possa atingir o seu
objectivo.
M.4.1 - Memórias paralelas

Memória central com 2 módulos

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 16

CPU
endereços dados

Unidade de controle
UCM de memória

MAR0 MDR0 MDR1 MAR1

R A M 0 R A M 1
Endereços pares Endereços ímpares
Fig 56

• Sistema de memórias paralelas ou multi-memória

É qualquer sistema de memória que contenha um número


de unidades de memória endereçáveis separadamente.

• Sistema de memória com endereçamento entrelaçado

É um sistema multi-memória com m unidades em que os


endereços sucessivos são assignados através das
unidades, módulo m.

Regra de entrelaçamento - assignar o endereço Ai à


unidade Mj se i=j(mod m).
Unidade 0: A0, A3, A6, ...
m=3 Unidade 1: A1, A4, A7, ...
Unidade 2: A2, A5, A8, ...

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 17
Geralmente: m=2p,
os p bits menos significativos do
endereço identificam imediatamente a unidade à qual o
endereço pertence.

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 18
M.4.2 - Memórias paralelas em multiprocessadores e
processadores paralelos

Multiprocessador com memórias de endereço entrelaçado


CPU 0 CPU 1 CPU n-1

n-1
U Unid.
1 C Mem.
porto 0 M 0

n-1
U Unid.
1 C Mem.
porto 0 M 1

n-1
U Unid.
1 C Mem.
porto 0 M m-1

Fig 57

Processador paralelo com memórias múltiplas


Unidade
Proc 0 Proc 1 Proc n-1
de
controle

Rede de interligações

UCM UCM UCM


Unid. Unid. Unid.
Mem 0 Mem 0 Mem m-1
Fig 58
Como evitar conflitos nos acessos a arrays de dados?

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 19
Por uma disposição adequada dos arrays em memória,
conforme o acesso que se pretende.
Arrays uni-dimensionais

Suponhamos m=4

0 1 2 3 Unidades de memória
a1 a2 a3 a4
a5 a6 a7 a8
a9 a10 a11 a12
a13 - - -
- - - -

Acedendo só aos elementos ímpares, a largura de banda


é reduzida para metade.

Sendo m primo, quaisquer n elementos que estejam


distanciados entre si de um valor primo com m podem
ser acedidos simultaneamente sem conflitos.

Exemplo: m=5

a1 a2 a3 a4 a5
a6 a7 a8 a9 a10
a11 a12 a13 a14 a15
a16 a17 a18 a19 a20

Elementos distanciados entre si de 2, 3 ou 4 podem


ser acedidos simultaneamente sem conflito.
Arrays bidimensionais

m unidades de memória

Pretende-se aceder a vectores com n elementos

m=4, n=4

0 1 2 3 Unidades de memória
____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 20
a00 a01 a02 a03
a10 a11 a12 a13 Straight storage
a20 a21 a22 a23
a30 a31 a32 a33

Acesso a linhas e diagonais sem conflitos, mas não a


colunas.

0 1 2 3 Unidades de memória
a00 a01 a02 a03
a13 a10 a11 a12 Skewed storage
a22 a23 a20 a21
a31 a32 a33 a30

Acesso a linhas e colunas sem conflitos, mas não a


diagonais.

Não é possível armazenar uma matriz (n×n) em m=n


unidades de memória, quando m é par de modo a que se
possa aceder arbitrariamente a linhas, colunas e
diagonais sem conflitos.

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 21
M.4.3 - Memórias cache

Cache - é uma memória de pequena capacidade existente


entre a memória central e a CPU, com um tempo de
acesso mais rápido do que a memória central e que
funciona como um buffer entre CPU e memória central.

Objectivo: fazer com que o tempo de acesso médio a


memória do ponto de vista do processador seja tão
próximo quanto possível do tempo de acesso da cache.

"Locality of reference" - durante um curto espaço de


tempo os endereços gerados por um programa típico
tendem a ficar confinados a pequenas regiões do seu
espaço de endereçamento lógico.
M.4.3.1 - Configuração de um sistema com memória
cache

UCM

Cache
Memória
CPU Central
Fig 59

A UCM através de hardware especial, faz a gestão da


cache.

Se quando a CPU acede à cache a palavra não existe


lá, um bloco completo é transferido da memória
central para a cache.

Existirá uma tabela que indica quais os blocos


existentes na cache.
Algoritmos mais usuais i) FIFO
para troca de blocos ii) LRU
iii) Aleatório

A escrita em memória de blocos alterados na cache


(dirty blocks) pode ser feita de duas maneiras:
____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 22

• "write back" - espera-se até que o bloco volte à


memória central e todo o bloco é ali escrito;

• "write through" - qualquer escrita numa palavra da


cache pela CPU é também efectuada na palavra
correspondente de memória central.
M.4.3.1.1 - Organização sectorial

TAG 1 sector

Blocos
Sectores
bit de
tags validade

Sectores

CACHE Memória CACHE


Central
Fig 60

• Cache e Memória Central estão divididas em sectores


ou páginas.

• Sectores são divididos em blocos de poucas palavras.

• No caso de memórias entrelaçadas é típico a


dimensão do bloco estar ligada ao número de módulos,
de modo a que todo o bloco possa ser transferido num
ciclo de memória, ou num número múltiplo de ciclos de
memória.

• Existe um bit de validade associado a cada bloco


para indicar se o bloco pertence ou não ao sector
referenciado.

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 23

• O algoritmo de substituição trabalha sector a


sector e dentro do sector os blocos têm posições
fixas. Uma tag está associada a cada sector,
indicando o sector de Memória Central ao qual
pertence.

Acesso da CPU à cache

Endereço: (si, bj, dk)

si - sector
Busca associativa de uma tag que indique que o sector
existe na cache

bj - índice para um bloco no sector


Verificar se o bit de validade é válido.

dk - índice para uma palavra no bloco

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 24
Falta de bloco - trazer o bloco de MC para cache e
colocar o "bit de validade" válido.
Falta de sector - depois de o algoritmo de
substituição escolher o sector a substituir na cache,
trazer da cache o bloco bj (si), modificar a tag do
sector e bit de validade só válido no bloco bj, nos
outros blocos do sector será inválido.
É utilizado "write through", pois não se pode fazer
"write back" bloco a bloco (um bloco inválido pode
fazer parte de um sector já substituído e cujo
endereço se perdeu na cache).

M.4.3.1.2 - Organização de correspondência directa


(Direct Mapping)
• Não existem sectores.
• Cada bloco tem a sua própria tag, e tem um lugar
fixo na cache. Numa cache de n blocos, os blocos k,
k+n, k+2n, etc. da MC são assignados à mesma posição
da cache.
• Quando a CPU acede à cache tem que ver se no
endereço (si, bj, dk) os si bits são iguais aos da
tag.
Não há busca associativa, não há bit de validade nem
algoritmo de substituição.
• Organização simples mas com problemas de eficiência
(baixo "hit ratio") se 2 ou mais blocos
frequentemente utilizados têm a mesma posição na
cache.
Exemplo: PDP-11 / 60 com blocos de 1 w
A cache tem 1024 w

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 25
Data BUS
Address BUS

A0-A9
CPU
TAG DATA
CACHE
AREA AREA

Address BUS A0-A23


(24 bits)
Cache
Comp
Control

Equal
Fig 61

M.4.3.2 - Eficiência no acesso à cache

Cache Hit Ratio (∅) - fracção dos endereços da


memória central emitidos pela unidade de controle que
podem ser satisfeitos quando do acesso à cache
(inclui acesso a instruções e dados).

Te = Tc.∅ + (1 - ∅).Tm

Tc - tempo de ciclo de cache


Tm - tempo de ciclo de memória central
Te - tempo de ciclo efectivo da memória
1-∅ − "Miss Ratio"

Sc - Aumento de velocidade devido à cache


Sc = Tm
Te
Tm 1 1
Sc = = =
φ .Tc + (1 − φ ).Tm φ Tc T
+ (1- φ ) 1- (1- c )φ
Tm Tm

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 26
Sc
Tm/Tc

2Tm
Tm+Tc
1

1/2 1 ∅
Fig 62

Exemplo
Estamos a projectar uma cache e pretendemos
determinar a sua capacidade. Medimos ∅ para um
conjunto de programas, supondo caches de 4k e
8Kbytes.

∅4k = 0,93
Tc
∅8k = 0,97 Supondo =0,12
Tm

Sc4k = 1 ≅ 5,5
1- 0,88 × 0,93
S8k = 1 ≅ 6,85
c 1- 0,88 × 0,97

Aumentando a capacidade da cache de 4 Kbyte obteve-se


uma melhoria no aumento da velocidade de:
S8k - Sc4k
c ≅ 0,24
Sc4k

Exemplos de cache em máquinas IBM


Tm Tc Tm/Tc Capacid. Dimensão
cache(w) bloco(w)
____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 27
360/85 1,04µs 80ns 13 2k→4k 8
360/195 756ns 54ns 14,2 4k 8
370/165 2µs 80ns 25 1k→2k 16

M.4.4 - Memórias associativas

Acesso associativo - acesso feito pelo conteúdo ou


parte do conteúdo e não pelo endereço.

Memória associativa ou CAM - memória com acesso


associativo, examinando simultaneamente todas
as posições de memória e seleccionando as que
satisfazem a condição.

Chave - campo escolhido para endereçamento de


memória.

Chave, Dado - estrutura de uma palavra numa memória


associativa.

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 28

Memória associativa (2×2)


Endereço vindo do circuito de selecção

S S WE
0 1

IE S WE S WE
Registo 0
de IE OD IE OD
máscara W W
IE 00 10
1 ID M ID M

OD
0

Registo
S WE S WE
Registo ID0 IE OD IE OD de
de W W saída
entrada ID1 01 11
ID M ID M

OD
1

Palavra 0 Palavra 1
M M
0 1

Sinais de "match"
Fig 63

Estrutura de uma memória associativa


Entrada

Reg. Entrada

Reg. Máscara

ID IE
Match
Circuito
Memória de
Select selecção

OD

Reg. Saída

Saída
Fig 64
Célula de uma memória associativa (1 bit)
____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 29

S WE
OD
S - Select
WE - Write enable
IE - Input enable
ID - Input data
OD - Output data
M - Match
M

IE
S WE
IE OD

ID M

ID
Fig 65

M.5 - PROCESSAMENTO DE ENDEREÇOS

O processador de endereços determina o endereço


efectivo.
O processamento de endereços feito na CPU está
intimamente ligado ao método de gestão de memória
feito pelo sistema operativo.
M.5.1 - Sistema mono-programado

Sistema
Operativo

Utilizado
Disponível pelo
para o programa
utilizador

Fig 66
Vantagens: i) Simplicidade, sistema operativo pode
necessitar só de 1Kb, em contraste com

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 30
sistema operativos multiprogramação que
podem atingir centenas de Kb.
ii) Fácil compreensão e utilização.

Desvantagens: i) Memória não é completamente


utilizada.
ii) Programa limitado ao tamanho da
memória.

Exemplos: IBM OS/360 Primary Control Program


IBM 1130 Disk Monitor System

Loader Relocador - Soma ao campo de endereço uma


constante de relocação igual ao endereço de base no
qual é carregado a primeira instrução do programa.

Os endereços modificáveis são os que dependem da


posição do programa em memória.

O loader relocador pode também fazer a operação de


linkagem (linking loader).

Este tipo de relocação é conhecido por Relocação


Estática.

M.5.2 - Sistemas multi-programados

Sistema que pode ter vários processos em estado de


execução.

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 31
M.5.2.1 - Sistema de partições

Situação de memória partilhada, em que a memória


central é dividida em partições.
(i) (ii)
10K 10K
20K PROG 5 20K PROG 5
30K PROG 4 30K PROG 4
15K PROG 3 PROG 1 15K
20K PROG 2 PROG 3 20K PROG 2
10K PROG 1 Saem 10K
20K SISTEMA 20K SISTEMA

Memória fragmentada
Fig 67

Supondo que em ii) temos um programa para executar


maior do que qualquer das áreas livres, podemos
escolher uma das opções (considerando só relocação
estática):

• Esperar que outra área de memória contígua


fique livre
• Carregar o programa em áreas não contíguas
• Compactar a memória ← melhor solução

A compactação é difícil de executar com relocação


estática, pois o espaço de endereçamento dos
programas é alterado na relocação.

Para compactar a memória, num sistema de gestão


baseado em partições, o melhor será usar Relocação
Dinâmica.
Relocação dinâmica - a relocação do espaço de
endereçamento é feita durante a execução do programa
e não durante o carregamento.

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 32

End. efectivo Registo de base

Somador

Endereço de
memória
Fig 68

Hardware existente no processador de endereços da


CPU.

O espaço de endereçamento do programa fica


independente da localização do programa em memória.

Exemplo

R.Base R.Base

S1

S2
A+S1
MPY A A A+S2
MPY A A

Programa movimentado
Fig 69
A relocação dinâmica não resolve 3 problemas:
• Fragmentação continua a existir, a não ser que
existam sucessivas compactações
• A compactação pode demorar um tempo substancial a
ser executada
____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 33

• O espaço de endereçamento lógico está limitado pela


dimensão física da memória central
Exemplo: DEC PDP-10 e UNIVAC 1108

M.5.2.2 - Paginação

O espaço de endereçamento é dividido em partes iguais


com comprimento fixo, normalmente de 1Kb a 4Kb. A
cada uma dessas partes chama-se página.
Bloco - área de memória central com limites de
endereçamento fixos e com a dimensão de uma página.
Paginação - método que permite movimentar páginas de
disco para blocos de memória e vice-versa, por uma
combinação de hardware e software.

A paginação evita a fragmentação (excepto


fragmentação interna) sem fazer compactação.

Problemas

• Existência de fragmentação interna (última


página parcialmente vazia).
• Todo o programa em memória, a não ser que
esteja "overlayed".
Exemplo: Sistema com memória paginada

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 34
Nº de Nº de
PROG 1 página bloco
0 0 5 0
1000 Sistema
1 6 1000
Operativo
2000 2000
2 9
3000
PROG 2 Livre
0 4000
0 2
1000 5000
1 4
2000 6000
2 7
7000
PROG 3
0 8000
0 8
9000
10000
Livre
Programas dos 11000
Tabelas de Livre
utilizadores páginas
Memória Central
Fig 70

Exemplos: XDS Sigma 7, CDC 3300

Em resumo:

• O espaço de endereçamento de um processo é


dividido em páginas.
• A memória é dividida em blocos.
As páginas de um processo devem estar todas em
memória. Há uma tabela de páginas para cada
processo.
As tabelas de páginas existem normalmente em
memória mas também poderão existir em registos.
Existe também uma tabela de blocos, indicando
quais os blocos livres.
M.5.2.3 - Memória virtual baseada em paginação

Nem todas as páginas de um processo precisam de estar


em memória. As tabelas de páginas são estendidas com
mais 1 bit, revelando se a página está ou não em
memória.
____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 35

Uma cópia completa do espaço de endereçamento do


processo existe em disco. Existirá uma tabela de
ficheiros (gestão de informação pelo sistema
operativo) por cada processo, que indica para cada
página do processo qual o endereço em disco.

Não estando a página em memória, é originada uma


interrupção ao sistema operativo, que delega a troca
de páginas num programa especial de E/S
(entradas/saídas).

Se não houver blocos livres (tabela de blocos) é


feita a troca de páginas segundo um dado algoritmo.

Normalmente quando um processo se inicia, só a


primeira página é trazida para memória.

Memória Virtual - Sistema em que o programador pode


referenciar mais posições do que as que estão
assignadas ao seu programa em memória central, i. e.,
pode referenciar posições de memória saecundária.

• A gestão do espaço de memória é feita pelo sistema


operativo.
O princípio de "locality of reference" favorece a
implementação de memória virtual.
Endereçamento de memória virtual

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 36
Tabela de Memória Central Memória Virtual
p v
páginas (2 ) (2 )
γk δs p-l v-l
página 2 página 2

αq γk
γj αq página k
γi αp
αp γj
página j

γ1 δr
página 1 página i γi

Memória Secundária
v p
(2 -2 ) página 1 γ1

δs

δr

l
tamanho do bloco = 2
δ1
Fig 71

page
fault
Tabela de Endereço de Pedido de
páginas memória página
secundária

Actualização Troca de
de tabela página com
de páginas M. Central

Nº de Nº de Nº de Nº de
página linha page frame linha

v-l l p-l l

endereço virtual endereço em


do programa memória central
Fig 72
Algoritmos para troca de páginas
____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 37

• Estratégia de troca óptima


• First-in first-out (FIFO)
• Least Recently Used (LRU)

Parâmetros a considerar em memória virtual

• Custo por bit


C1S1 + C 2S2 Ci - custo por bit
C=
S1 + S2
Si - capacidade

• "Hit Ratio"
N1 N1 - nº de referências a
H = memória central
N1 + N
2 N2 - nº de referências a
memória secundária

• Tempo de acesso

tA = H.tA1 + (1-H).tA2
tA2 = tB + tA1
tA = tA1 + (1-H).tB

O primeiro sistema de memória virtual paginada foi o


ATLAS (Universidade de Manchester) com 32 blocos de
512 palavras. A memória secundária era um tambor
magnético.

Exemplos actuais: VS/1, VS/2 (IBM) e VAX/VMS


M.5.2.4 - Memória virtual segmentada

Segmento - conjunto de palavras contíguas


relacionadas logicamente.

Uma palavra num segmento é identificada pelo endereço


de base do segmento e um endereço relativo a essa
base.
____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93
M - 38
Segmentação - técnica de gestão de memória que faz a
alocação de memória por segmentos.

Existirá uma tabela de segmentos semelhante à tabela


de páginas, mas que indicará a dimensão de cada
segmento, a sua existência ou não em memória central
e o respectivo endereço.

Comparação com memória virtual paginada

Vantagens

• Módulos de programa são trocados e não páginas.

• Facilita partilha de segmentos por vários


processos.
Desvantagens

• Dimensão variável dos segmentos complica a


gestão.

• Necessita compactação.

____________________________________________________________________________________________________________
Arquitectura de Processadores
ASP93

You might also like