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 nível BAIXO

1 0
Fig 2

Ex.: informação gravada num CD, fluxo de entre um computador e uma impressora, etc.

dados

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 0 t V 5 0 t
Fig 3

3.5 1.5

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 Entrada 2 Circuito Lógico Entrada n Saída m
Fig 4

Saída 1 Saída 2

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 tabela de verdade seguinte. Entradas I1 Aberto Aberto Fechado Fechado I2 Aberto Fechado Aberto Fechado ser representado Saída L Apagada Apagada Apagada Acesa pela

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 Saída L 0 0 0 1

Entradas I1 I2 0 0 0 1 1 0 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 representam tensões.

os

valores

1

e

0

De seguida aplicaremos às entradas deste circuito todas as combinações possíveis de valores lógicos utilizando as seguintes correspondências: 0 volt 5 volts ↔ ↔ 0 lógico 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 1 1

0 1 0 1

0 0 0 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 lógicos AND de 2 e 3 entradas
A B S S = A . B

os

circuitos

A B C

T

T = A . B . C
Fig 11

____________________________________________________________________________________________________________ Sistemas Digitais ASP93

C - 10

Tabela de verdade do circuito AND de 3 entradas A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 T 0 0 0 0 0 0 0 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 Lâmpada

Bateria

Interruptores

Fig 12

____________________________________________________________________________________________________________ Sistemas Digitais ASP93

C - 11

Tabela de verdade correspondente Entradas I1 I2 0 0 0 1 1 0 1 1 Saída L 0 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.

A B C
S

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 A=1 B=0 C=0
0,6 V

4,4 V S

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 B A B C D S = A + B

T

T = A + B + C +
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 realizada a partir de um relé.

uma

negação

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 0 1 S 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 B C R =1K Ω C R =10K Ω B
IC Para V B > 0,6V :

5 V I = C máx 1K Ω = 5 mA

IB

β =20

V B 0,6V

V C I = C

V -0,6V B R = B

V -0,6V 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 baseemissor é de 0,6 volts, logo a queda de tensão em RB é de 4,4 volts. Assim a corrente IB será:
IB = 4,4V = 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 transistor

entrada-saída

do

circuito

com

V C
5 4 3 2 1

0,6

3,1

5V

V B
Fig 18

A electrónica analógica utiliza a zona (intermédia) do funcionamento do transistor.

linear

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 série 7400. circuitos integrados da família TTL

• 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 B S S = A . B
Fig 24

A bolinha significa uma negação, pelo que a tabela de verdade do circuito NAND se deduz de imediato. A 0 0 1 1 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. B 0 1 0 1 S 1 1 1 0

A S B
Fig 25

S = A + B

Tabela de verdade do circuito NOR A 0 0 1 1 B 0 1 0 1 S 1 0 0 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 lógicas básicas, obtém-se: as operações

____________________________________________________________________________________________________________ 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 para a estrutura {B, +, .}. propriedades seguintes

B.2.1 - Soma e produto são operações fechadas

∀a, b ∀a, b

∈ B : a+b ∈ B ∈ B: a. b ∈ B

B.2.2 - Comutatividade

∀a, b ∀a, b

∈ B : a+b = b+a ∈ B: a. b = b. a

B.2.3 - Existência de elemento neutro

∃u ∈ B, ∀a ∈ B : a + u ∃v ∈ B, ∀a ∈ B : a . v

= a = a

B.2.4 - Distributividade das duas operações uma em relação à outra

∀a, b, c ∀a, b, c

∈ B : a + (b . c) = (a + b) . (a + c) ∈ B : a . (b + c) = (a . b) + (a . c)
_ _

B.2.5 - Complementação

∀a ∈ B, ∃ a ∈ B : a + a ∀a ∈ B, ∃ a ∈ B : a .
_ _

= v

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 + u2 = u1 + u2 = u1 = u1 u2 u2 + u1 u2 (B.2.3) (B.2.3) (B.2.2)

• O elemento v é único. Demonstração Sejam v1 e v2 dois elementos neutros do produto. v1 . v2 = v1 . v2 = v1 . v2 = v1 = v1 v2 v2 . v1 v2 (B.2.3) (B.2.3) (B.2.2)

____________________________________________________________________________________________________________ Sistemas Digitais ASP93

B-5

B.3.2 - Idempotência •

∀a ∈ B : a + a

= a

Demonstração a + a = (a + a) . 1 a + a = (a + a) . (a + a ) = a + (a . a ) = a + 0 = a • (B.2.3) (B.2.5) (B.2.4) (B.2.5) (B.2.3)

∀a ∈ B : a . a

= a

Demonstração a . a = (a . a) + 0 a . a = (a . a) + (a . a ) = a . (a + a ) = a . 1 = a B.3.3 - Elementos absorventes • (B.2.3) (B.2.5) (B.2.4) (B.2.5) (B.2.3)

∀a ∈ B : a + 1

= 1

Demonstração a + 1 = = = = = (a + 1) . 1 (B.2.3) (a + 1) . (a + a ) (B.2.5) (B.2.4) a + (1 . a ) a (B.2.3) a + 1 (B.2.5)

____________________________________________________________________________________________________________ Sistemas Digitais ASP93

∀a ∈ B : a .

B-6

0 = 0

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

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

= a

Demonstração (a . 1) + (a . b) a . (1 + b) a . 1 a (B.2.3) (B.2.4) (B.3.3) (B.2.3)

∀a, b ∈ B : a .

(a + b) = a

Demonstração a . (a + b) = = = = (a + 0) + (a + b) a + (0 . b) a + 0 a (B.2.3) (B.2.4) (B.3.3) (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 a 1 . (a + a 2) = a 1 a1 . a + a1 . a2 = a1 0 + a1 . a2 = a1 a1 . a2 = a1 a2 . a1 = a1 a2 . a1 + 0 = a1 a2 . a1 + a2 . a = a1 a 2 . (a 1 + a) = a 1 a2 . 1 = a1 a2 = a1
B.3.7 - Involução

(B.2.3) (B.2.5) (B.2.4) (B.2.5) (B.2.3) (B.2.2) (B.2.3) (B.2.5) (B.2.4) (B.2.5) (B.2.3)

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)] = (a1 + a 1).[a1 + (a 1 + a2)] = a1 + [a 1 . (a 1 + a2)] = a1 + a 1 = 1 A demonstração de L1b é dual de L1a. (B.2.3) (B.2.5) (B.2.4) (B.3.4) (B.2.5)

____________________________________________________________________________________________________________ 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] = 1 . 1 = 1 (a1+a2).(a 1.a 2)=a1.(a 1.a 2)+a2.(a 1.a 2) = 0 . 0 = 0 Por B.2.5 e B.3.6 conclui-se que
a1 + a2
=

(B.2.4) (L1a) (B.2.3) (B.2.4) (L1a) (B.2.3)

a1 . a2

A demonstração anterior. As leis de elementos. De

de

a1 . a2

=

a1 + a2

é

dual para

da n

Morgan
+ an
=
=

generalizam-se
a1 .
.. .

a1 +

.. .

. an

a1 .

.. .

. an

a1 +

.. .

+ an

B.3.9 - Associatividade

∀a, b, c ∀a, b, c

∈ B : (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 0 0 1 1 + + + + 0 1 0 1 = = = = 0 1 1 1 Produto lógico 0 0 1 1 + + + + 0 1 0 1 = = = = 0 0 0 1 Complementação

0 = 1 1 = 0

B.4.2 - Leis da Álgebra de Boole a 2 valores Soma lógica
El. neutro El. absorvente Idempotência Complementaridade Comutatividade Associatividade Distributividade Absorção Absorção Leis de De Morgan Leis de De Morgan 0 + a = a 1 + a = 1 a + a = a a + a = 1 a + b = b + a a + (b + c) = (a + b) + c a + b.c = (a + b).(a + c) a + a.b = a a + a .b = a + b a1 + a 2 = a 1 . a 2
. a1 + .. + a n = . a1 . .. . a n

Produto lógico
1 . a = a 0 . a = 0 a . a = a a . a = 0 a . b = b . a a . (b . c) = (a . b) . c a.(b + c) = a.b + a.c a.(a + b) = a a.( a + b) = a.b a1 . a 2 = a 1 + a 2
. 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 distributiva (B.2.4) obtém-se d = c.a.(b + b ) + b.a .(1 + c)

(B.2.2)

e

Pela propriedade de complementação elemento absorvente (B.3.3) vem d = c.a.1 + b.a .1 Assim d = c.a + b.a

(B.2.5)

e

O método algébrico não garante a obtenção expressão mais simples. Para tal utiliza-se método gráfico de simplificação.

da um

____________________________________________________________________________________________________________ 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 B S
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 B A S B S
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 A

S

S = A . 1
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, verificada com 2 circuitos NOT.

pode

ser

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 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 B S = A . B S B T = A + B
Fig 35

negações

seguidas

A T

O 2º circuito é dual do 1º mas são ambos NAND. Tabela de verdade dos símbolos NAND A 0 0 1 1 B 0 1 0 1
A . 0 = 1 = 0 = 1 = B 0 0 0 1 A = = = =

0 0 1 1

. . . .

= = = =

1 1 1 0

0 0 1 1

+ + + +

0 1 0 1

+ 1 1 0 0

B + + + +

1 0 1 0

= = = =

1 1 1 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 S B S = A + B

A B T = A . B
Fig 36

T

O 2º circuito é dual do 1º mas são ambos NOR. Tabela de verdade dos símbolos NOR A 0 0 1 1 B 0 1 0 1
A 0 1 0 1 + = = = = B 0 1 1 1
A = = = =

0 0 1 1

+ + + +

= = = =

1 0 0 0

0 0 1 1

. . . .

0 1 0 1

· 1 1 0 0

B . . . .

1 0 1 0

= = = =

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 1 3 B 2 B
Fig 37

A

A + B A + B = A . B

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 B C D

A.B S = A.B + 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 B C D

A.B S = A.B + C

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 B C D C.D
Fig 41

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

Aplicando a 1ª lei de De Morgan circuito seguida da involução fica

à

saída

deste

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 B

S = A⊕ 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 0 0 1 B 0 1 0 S 0 1 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 0 0 1 1

B 0 1 0 1

0.0 0.1 1.0 1.1

S + + + +

= A .B 0.0 = 0.1 = 1.0 = 1.1 =

+ 0 1 0 0

A. B + 0 + 0 + 1 + 0

= = = =

0 1 1 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.B A.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 A.A.B + B .A.B A.( A + B ) + B.( A + B ) A. A + A. B + B. A + B. B 0 + A. B + B. A + 0

(B.3.8) (B.3.7) (B.3.8) (B.2.4) (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 B

S = A ⊕ B = A⊗ B
Fig 45

Tabela de verdade do circuito equivalência A 0 0 1 1 B.4.6 - Funções booleanas Tabela de funções x1 x2 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 Designação zero produto lógico, ou AND (y = x1.x2) inibição, ou NIX (y = x1 NIX x2) x2 (y = x2) inibição, ou NIX (y = x2 NIX x1) x (y = x) soma módulo 2, ou exclusivo, ou XOR (y = x1 ⊕ x2) soma lógica, ou OR (y = x1 OR x2) NOR (y = x1 NOR x2 , ou y = x1 + x2) equivalência (y = x1 ⊗ x2) complementação de x1, (y = x1) implicação material (x1 ⇒ x2) B 0 1 0 1 de 2 S 1 0 0 1 variáveis

____________________________________________________________________________________________________________ Sistemas Digitais ASP93

B - 21

y12 y13 y14 y15

1 1 1 1

1 1 1 1

0 0 1 1

0 complementação de x2, (y = x2) 1 implicação material (x2 ⇒ x1) 0 NAND (y = x1 NAND x2 , ou y = x1 . x2) 1 unidade ou identidade

Estas funções podem ser escritas com base nas 3 operações básicas AND, OR e NOT. y0 y1 y2 y3 y4 y5 y6 y7 = = = = = = = = 0 x1.x2 x1.x2 x2 x2.x1 x1 x1. x2 + x1.x2 x1 + x2 y8 = x1 + x2 y9 = x1. x2 + x1.x2 y10 = x1 y11 = x1 + x2 y12 = x2 y13 = x1 + x2 y14 = 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 2 8 10 16 Símbolos 0, 0, 0, 0, 8, 1 1, 1, 1, 9, 2, 2, 2, A, 3, 3, 3, B, 4, 4, 4, C, 5, 5, 5, D, 6, 6, 6, E, 7 7, 8, 9 7, F

Exemplo 2D,9A(16) = 2×16 + 13 + 9×16-1 + 10×16-2 = 45,60...

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

____________________________________________________________________________________________________________ Sistemas Digitais ASP93

T-3

N.3 - CONVERSÃO DA BASE 10 PARA A BASE B As partes inteira e fraccionária consideradas separadamente. do número são

N.3.1 - Método da divisão-multiplicação Parte inteira Considere-se um número cuja 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 06 0 2 33 13 1 2 16 0 parte inteira é

2 8 0

2 4

2

____________________________________________________________________________________________________________ Sistemas Digitais ASP93

T-4

0

2 0

2 1

66(10) = 1000010(2) Para hexadecimal será 66 02 16 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 fraccionárias resultantes por b vem b.F = b.(0,a-1a-2a-3a-4) b.(0,a-2a-3a-4) b.(0,a-3a-4) b.(0,a-4) = = = = e as partes

a-1,a-2a-3a-4 a-2,a-3a-4 a-3,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 2 2 2 2 2 2 2 × × × × × × × × 0,468 0,936 0,872 0,744 0,488 0,976 0,952 0,904 = = = = = = = = 0,936 1,872 1,744 1,488 0,976 1,952 1,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 conversão de base 10 para base 2

infinitas

na

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 0 1 2 3 4 5 6 7 Binário 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 a conversão mútua

Usando esta correspondencia 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 conversão hexadecimal-binário. 4 dígitos para a

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 0 1 2 3 4 5 6 7 8 9 A B C D E F Binário 0 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 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 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 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

p'(2)=4,

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 palavras distintas de comprimento n. formam-se bn

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 A A A B

C A B A B

B B A A A

pode formar-se outro, por troca das duas primeiras linhas:

A A A A B

B A B A B

C B A A A

por troca das duas últimas colunas: A A A A A B C B B A A A B C A B A B B B B B B A A C B A B A C A A B B B

ou por troca dos símbolos A e 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 X1 X3 X2

X2 X1 X4 X5 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 adjacentes. contínuo, X1 X2 X3 X3 X2 palavras X2 X2 X2 X2 X2 X3 X3 X3 X1 X1 consecutivas são

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 X3 X2 X1

X2 X2 X2 X2

X3 X1 X1 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 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 .. .. .. 2 2 1 2 2 2

Sistema de numeração base 3

____________________________________________________________________________________________________________ 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 Utilizam-se normalmente os símbolos 1 e 0. Há 2 tipos de códigos binários: código 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) 2.

binário

• 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, codificação obtêm-se 4n símbolos binários. na sua

Exemplo: Considerando a correspondência seguinte 0 1 2 3 4 5 6 7 8 9 → → → → → → → → → → 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 1 1 1 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 0 1 2 3 4 5 6 7 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 ← pesos

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 Binário natural Binário reflectido
natural)

→ → → → → 1 + 1 + 1 + 0 + 0 + 1 ↓ ↓ ↓ ↓ ↓ ↓ 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 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0

Binário natural Um código reflectido não valência par é cíclico. é

Reflectido ponderado. Se tiver

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 possíveis e só 10 são necessárias. 16 combinações

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

10!.C

16 10

! = 16 = 3.1010 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 simplificações do (simplificação nas aritméticas). de permitir uma parte das código binário natural regras das operações

0 1 2 3 4 5 6 7 8 9

8 0 0 0 0 0 0 0 0 1 1

4 0 0 0 0 1 1 1 1 0 0

2 0 0 1 1 0 0 1 1 0 0

1 0 1 0 1 0 1 0 1 0 1

← pesos

N.5.5.3.2 - Código D+3 ou excedente 3
0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0

Não é um código ponderado.
____________________________________________________________________________________________________________ Sistemas Digitais ASP93

T - 22

N.5.5.3.3 - Código 2421 ou de Aiken 2 0 0 0 0 0 1 1 1 1 1 7 0 0 0 0 0 0 0 1 1 1 4 0 0 0 0 1 0 1 1 1 1 4 0 0 0 0 1 1 1 0 0 0 2 0 0 1 1 0 1 0 0 1 1 2 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 ← pesos

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

← pesos

0 1 2 3 4 5 6 7 8 9

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. erros D+3 det. erros

C 1 0 0 1 0 1 1 0 0 1

8 0 0 0 0 0 0 0 0 1 1

4 0 0 0 0 1 1 1 1 0 0

2 0 0 1 1 0 0 1 1 0 0

1 0 1 0 1 0 1 0 1 0 1

C 1 0 1 1 0 0 1 1 0 1

0 0 0 0 0 1 1 1 1 1

0 1 1 1 1 0 0 0 0 1

1 0 0 1 1 0 0 1 1 0

1 0 1 0 1 0 1 0 1 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 localizar) um número ímpar de erros. (e não

O código biquinário, que é um código ponderado, permite a detecção de mais do que 1 erro.
pesos 5 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 4 0 0 0 0 1 0 0 0 0 1 3 0 0 0 1 0 0 0 0 1 0 2 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 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 00 01 10 11
Retorno

0001 ' // ! 1001 6 F O W

Ignora Espaço

Γ Σ 1000 5 E N V

0010 . | : 1010 7 G P X

0011 0 ; ) + 1011 8 H Q Y

0100 1 A J / 1100 9 I R Z

0101 2 B K S 1101 , # / %

0110 3 C L T 1110 & ⊄ * =

0111 4 D M U 1111 ( @ ?
Delete

00 01 10 11

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 000 001 010 011 100 101 110 111 0000 NUL DLE
Espaço

0 @ P ` p 1000 BS CAN ( 8 H X h x

0001 SOH DC1 ! 1 A Q a q 1001 HT ) 9 I Y i y

0010 STX DC2 " 2 B R b r 1010 LF SUB * : J Z j z

0011 ETX DC3 # 3 C S c s 1011 VT ESC + ; K [ k {

0100 EOT DC4 $ 4 D T d t 1100 FF FS , < L \ l |

0101 ENQ NAK % 5 E U e u 1101 CR GS = M ] m }

0110 ACK SYN & 6 F V f v 1110 SO RS . > N ^ n ~

0111 BEL ETB ' 7 G W g w 1111 SI US / ? O _ o

000 001 010 011 100 101 110 111

____________________________________________________________________________________________________________ Sistemas Digitais ASP93

Apresentação

ARQUITECTURA DE COMPUTADORES
• • • • • •

Programa:

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

Bibliografia:

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

Avaliação:

• 1º Caso: • • •

1º 1ª 2º 2ª

trabalho (25%) frequência (25%) trabalho (25%) frequência (25%) (100%)

2º Caso: • Exame

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 classificadas segundo várias perspectivas. ser

No entanto a mais usada é a classificação de Flynn. Baseia-se no instruções. número de sequências de dados e

Sequência de dados Simples Sequência de instruções Múltipla SISD SIMD MISD MIMD MISD MIMD Simples SISD Múltipla SIMD

Single Instruction Single Instruction Multiple Instruction Multiple Instruction

Single Data Multiple Data - Single Data - Multiple Data

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

I-2

I.1.1 - MONOPROCESSAMENTO SISD - Computadores Neumann) convencionais
I D

(modelo

de

Von

UC

P

M
Fig 1

I UC P D M

-

Instruções Unidade de Controle Processador Dados 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:
Sp A = T1 A ≥ 1 Tp A

p - nº de operações simultâneas Tp[A] - tempo para a computação A na máquina multioperação T1[A] - tempo para a computação A na máquina série • Eficiência de computação:
Ep A = Sp A ≤ 1 p

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

I-4

I.1.2.1 - SIMD - Paralelismo de array
P1 D1

P2 UC

D2 M

Pn I

Dn

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

M D P1 UC1 I1 D P2 UC2 I2 Pn UCn In
Fig 3

D

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 processamento diferente num elemento de

• 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
UC1 P1 D1

UC2 P2

D2 M

Ucn Pn

Dn

In I2 I1
Fig 4

• Existem vários processadores não iguais a executar operações independentemente.

forçosamente diferentes

• 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 Supernode (16 transputers T800). I.2 - MEMÓRIA processadores),

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 segundo que a rede consegue transmitir. bytes por

• 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.
M

M

M

M

P

P

P

P
Fig 13

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

I-9

I.3.2 - Hipercubo A topologia mais popular em memória privada é o hipercubo. multiprocessadores de

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 interligação de anel, etc. arquitecuras computadores: possíveis para a estrela, multiponto,

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 necessidade de: distribuídos aparecem da

• 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 computadores modernos presentes na maioria dos

Nível 5

Nível da linguagem orientada ao problema Tradução (compilador)

Nível 4

Nível da linguagem assembly Tradução (assemblador)

Nível 3

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

Nível 2

Nível 1

Nível 0

____________________________________________________________________________________________________________ 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 Controle

Memória Central

Registos Processador

Operações Aritméticas

Operações Lógicas

Fig 5

• Os registos do processador acessíveis ao programador.

podem

ou

não

ser

• 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 1

Processador de Instruções 6 Contador de Programa Incrementador

1 Registo de Instrução 6 Processador de Operações 4

Processador de Endereços

3 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 armazenadas em memória.

sequência

de

instruções

Ciclo de instrução: sequência de instruções envolvidas no processamento de uma instrução. O ciclo de instrução consiste de aquisição e de uma fase de execução. uma fase de

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 microoperaçõ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 pretender uma performance elevada >> tCPU e se se

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 Informação Dados Números Vírgula flutuante Dados não numéricos Vírgula fixa

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 factores: de representação atender aos seguintes

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 representados distintamente de nos

P.2.2.2 - Formatos dos números Para um mesmo w: Vírgula Vírgula fixa - gama limitada, hardware simples; flutuante - gama extensa, hardware complexo. maior menor precisão, precisão,

P.2.2.2.1 - Vírgula fixa Nos positivos

b=

i=-m

∑ b .2
i

n

i

= bn ...b2b1b0 .b-1b-2 ...b-m
interna na

O ponto decimal não tem representação 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 para 1 000....0 111....1 -2N-1+1 a 2N-1-1 Usa EAC Complemento para 2 000....0

Zero

000....0 100....0 -2N-1+1 a 2N-1-1 Não trivial

Amplitude Adição Subtracção Multiplicação Divisão Inversão de sinal

-2N-1 a 2N-1-1 Trivial

Relativamente simples Trivial

Difícil

Difícil

Trivial

Necessita 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 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

flutuante

são

|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 possível (-2(k-1)) ser o menor número negativo

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 1111 1110 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000

Número representado

7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

P - 11

EXEMPLOS DE FORMATOS VÍRGULA FLUTUANTE HP-1000
15 14 Precisão simples M S 0 15 8 7 E 0 E S

M (23 bit)

Precisão estendida

M S

E

E S

M (39 bit)

Precisão dupla

M S

E

E S

M (55 bit)
Fig 7

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

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

M (52 bit)
Fig 8

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

P - 12

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

Precisão dupla

M S

E

M (56 bit)

Precisão estendida

M S

E

M (110 bit)
Fig 9

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

M (23 bit)

Precisão dupla

M S

E

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 especificado da operação deve ser sempre

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) EE = (E) indexado 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 ADD ADD Ex. de máquina: CDC 6600 B A F C T G T X Y

____________________________________________________________________________________________________________ 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 ADD STO ADD STO IBM S/370 B C A Acc Acc X F G Acc Y

Ex. de máquina:

• 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: HP 1000, DEC 10 FETCH MPY ADD STO FETCH ADD STO B C A X F G 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; → Y := F + G; (RPN) Código máquina correspondente PUSH C PUSH B MPY PUSH A ADD POP X PUSH G PUSH F ADD POP Y X = B C * A + Y = F G +

____________________________________________________________________________________________________________ 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 y0 z0

x1 y1

z1

x2 y2

z2

x7 y7

z7
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 c(i+1)

yi

xi c(i+1)

yi zi

xi c(i+1)

yi

Soma zi

xi c(i+1)

yi ci Carry out

+

c(i+1) Carry in

xi yi xi yi

xi c(i+1)

ci

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 7 A 0 7

Multiplicador Q 0

Multiplicando 7 M 0

Somador paralelo
Bus Saída Bus Entrada

CPU

START END CLOCK

Controle

ADD RIGHT-SHIFT

Sinais de controle interno

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

COUNT <- COUNT + 1

Q(0) = 0

S

N

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

Right Shift A,Q

COUNT = 7
N

S

Bus Saída <- A

Bus Saída <- Q

STOP

Diag 1

No final da operação
A S 7 Q

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) Right Shift A,Q

Q(-1) = 1 Q(0) = 0

N

S

Q(-1) = 0 Q(0) = 1

N

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

COUNT = 7 N S 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 multiplicação podem ser utilizados.

aos

da

• 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 Ri+1

se

2-i.V

Ri ,

Qi = 0

se

2-i.V < Ri

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

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

COUNT = 7 N S

STOP
Diag 3

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

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

P - 25

Circuito divisor

Acumulador 7 A 0 7

Quociente Q 0 7

Divisor M 0

Somador paralelo
Bus Saída Bus Entrada

A(7)

Q(0)

CPU

START END CLOCK

Controle

Sinais de controle interno

Contador
Fig 20

Início:

A,Q - Dividendo M - Divisor Q A - Quociente - Resto

Fim:

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

P - 26

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

Acumulador 7 AC 0

Multiplicador-Quociente 7 MQ 0

Registo de dados 7 RD 0

Somador paralelo
Bus Saída Bus Entrada

CPU

ADD SUB MPY DIV START END CLOCK

Controle

Sinais de controle interno

Contador
Fig 21

ADD SUB MPY DIV

: : : :

AC ← AC AC ← AC AC,MQ ← AC,MQ ←

+ RD - RD RD × 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 mantissas. ou divisão vírgula fixa das

____________________________________________________________________________________________________________ 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 E1 E2 AC

Unidade de mantissa MQ RD

Somador

Somador

E

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 implementado exclusivamente em hardware operações

Controle microprogramado - processador de operações implementado com base numa memória, normalmente do tipo ROM. Controle hardwired é muito dispendioso e não flexível. mais rápido, mas

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 interpretam uma instrução máquina. que

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 Registo Endereço Matriz Comandos Campo de Endereço

Matriz Endereços Descodif.

Sinais de controle

Condição externa
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 micrinstrução; exigido ao nível da

• Modo como a informação de controle é codificada; • Modo como o próximo endereço é especificado (vulgar existir num µPC). Microinstruções horizontais i) formatos longos ii) implementam um elevado grau de paralelismo iii) pouca codificação no campo de controle

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

P - 32

Microinstruções verticais

i) formatos curtos 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 codificação de informação de controle há qualquer

microinstrução vertical - especifica só uma microoperação (nenhum paralelismo)
Campo de controle Campo de controle

Descodificador Horizontal

Vertical
Fig 24

P.4.4

-

Organização de microprogramada

uma

unidade

de

controle

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 externas

MPX

Load Increment

µ PC

Contador de microprograma

Selector de condição

MC

Memória de controle

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) C2(COMP)

ALU

AC
C3(READ) C4(WRITE) C5

C12

C6

Memória Central

MDR
C7 C8 C11

PC

C9

IR

C10

MAR AC=0 Circuitos de controle
C0 C12
Fig 27

Repertório Mnemónica LOAD X STORE X ADD X AND X JUMP X JUMPZ X COMP RSHIFT

de instruções máquina Descrição AC ← M(X) M(X) ← AC AC ← AC + M(X) AC ← AC ∧ M(X) PC ← X if AC=0 then PC ← X AC ← AC/ 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
LOAD

STORE

N
ADD

N
AND

N
JUMP

N
JUMPZ

N
COMP

N

S
MAR ← MDR(AD)

S
MAR ← MDR(AD)

S
MAR ← MDR(AD)

S
MAR ← MDR(AD)

S

S

S

N
AC = 0 MDR ← AC

READ M

READ M

READ M

S
PC ← MDR (AD) PC ← MDR (AD) AC ← AC/ SHIFT AC

AC ← MDR

WRITE M

AC ← AC + MDR

AC ← AC ∧ MDR

Diag 4

Emulador (linguagem simbólica) FETCH: MAR ← PC READ M PC ← PC +1 , goto IR LOAD:

IR ← MDR (OP)

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 , AND: MAR ← MDR (AD) READ M AC ← AC ∧ MDR ,

goto FETCH

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 goto FETCH Operação controlada AC ← AC + MDR AC ← AC ∧ MDR AC ← AC/ MDR ← M(MAR) [READ M] M(MDR) ← MDR [WRITE M] MDR ← AC AC ← MDR MAR ← MDR (AD) PC ← MDR (AD) PC ← PC + 1 MAR ← PC IR ← MDR (OP) Right-Shift AC

RSHIFT: Right-Shift (AC) , Sinais de controle C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12

P.4.7 - O processador HP 21 MX Formatos das µinstruções (HP 21 MX)

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

P - 37

0 1. Common OP CODE

4 ALU Funct

9 Source reg

14 Dest reg

19 Special

23

0 2. Immediate OP CODE

6 4 Modi Immediate operand fier 4 9 10 C S

14 Dest reg

19 Special

23

0 3. Conditional jump 0 4. Unconditional jump OP CODE OP CODE

19 Special

23

Cond Select

9 bit relative addr

4

7 12 bit absolute address

19

23

Jump modif
Fig 29

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

comment

Estrutura do HP 21 MX

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

P - 38
T-BUS (16 bit) Descodificadores e lógica de controle PC X Y S12 Memória Central L CMAR SAVE A B Memória de controle S2 (M) MAR 15 16 MDR (T) 16 IR S1 S (P) ALU fixed point Sinais de controle

CMDR

S-BUS (16 bit) 8

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 através de um canal de 8 bits. com a memória e I/O

O 8086 comunica com a memória e I/0 por um canal de 16 bits. Ambos podem endereçar linhas de endereço). até 1 Mbyte de memória (20

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 16 12 Endereço Dados/Endereço Controle Endereço 8

8086

8088

Dados/Endereço Controle
Fig 30

X.2 - A ARQUITECTURA DOS PROCESSADORES

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

X-2

Unidade de execução (EU) Registos Gerais

Unidade de interface com o BUS (BIU) Registos de segmento Ap Instr (IP)

Geração de endereços e controle do BUS Operandos Fila de instruções

BUS Multiplexado

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 sistema: todas as operações com o BUS do

• 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 AH

8 7 AX AL BX BL CX CH DX DH DL CL

0 Acumulador Base Contador Dados 0

Grupo de dados

BH

15 SP Grupo de apontadores e índices

Apontador de Stack Apontador de base Índice de origem Índice de destino
Fig 32

BP SI
DI

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

X-4

Algumas instruções implícita. Registo AX AL AH BX CX CL DX SP SI DI

usam

os

registos

de

forma

Operações Multiplicação, divisão, I/O (Word) Multiplicação, divisão, I/O (Byte) Multiplicação, divisão (Byte) Tradução Loops, operações com strings Rotação e deslocamento de variáveis Multiplicação, divisão, (Word); I/O indirecto Operações de stack Operações com strings 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 segmentos lógicos de até 64 kbyte cada um. em

O CPU tem acesso a 4 segmentos em simultâneo. Os seus endereços de base estão contidos nos registos de segmento.
15 CS DS SS ES 0 Segmento de código Segmento de dados Segmento de Stack Segmento 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 conjuntos de bytes (8 bits). está organizado em

• 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 bytes. têm endereços base múltiplos de 16

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: Stack: Extra: SS: ES: E E H G J H I J K 0H
Fig 35

F

____________________________________________________________________________________________________________ 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

1 15

2

3

4 0

Base do segmento

1 19

2

3

4

0 0 0 15 0 2 2 0 Offset

Endereço lógico

0 15 1 19 2

0

2

2 0

3

6

2 0

Endereço físico

Para a memória
Fig 36

Origens dos endereços lógicos
Tipo de referência a memória Aquisição de instrução (fetch) Operação em stack Variável (excepto seguintes) String de origem String de destino BP como registo de base Base de segmento por omissão CS SS DS DS ES SS Base de segmento alternativo Nenhum Nenhum CS,ES,SS CS,ES,SS Nenhum CS,DS,ES Offset IP SP Endereço efectivo SI DI 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.
Fim da stack PUSH AX AX 1 2 3 4 POP AX POP BX AX 1 2 BX 1 2 1062 1060 105E 105C 105A 1058 1056 1054 1052 1050 0 2 4 6 8 A 0 4 8 C 0 2 4 6 8 A 1 5 9 D 1 3 5 7 9 B 2 6 A E 1 3 5 7 9 B 3 7 B F 1062 1060 105E 105C 105A 1058 1056 1054 1052 1050 0 2 4 6 8 A 1 4 8 C 0 2 4 6 8 A 2 5 9 D 1 3 5 7 9 B 3 6 A E 1 3 5 7 9 B 4 7 B F 1062 1060 105E 105C 105A 1058 1056 1054 1052 1050 0 2 4 6 8 A 1 4 8 C 0 2 4 6 8 A 2 5 9 D 3 4 3 4 1 3 5 7 9 B 3 6 A E 1 3 5 7 9 B 4 7 B F

TOS

TOS

TOS Fora da stack

1 0 0 0

5 0 SS 0 8 SP

1 0 0 0

5 0 SS 0 6 SP

1 0 0 0

5 0 SS 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

MOV destino, origem PUSH origem POP destino XCHG destino, origem XLAT tabela IN acc, porto OUT porto, acc LEA destino, origem LDS destino, origem LES destino, origem LAHF SAHF PUSHF POPF

Âmbito Geral Move byte ou word Carrega word na stack Retira word da stack Troca byte ou word Traduz byte Entrada / Saída Lê byte ou word Escreve byte ou word Endereço Carrega endereço efectivo Carrega apontador usando DS Carrega apontador usando ES Transferência de flags Coloca as flags em AH Coloca AH nas flags Carrega as flags na stack Retira flags da stack

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

X - 12

X.4.2 - Instruções aritméticas

ADD destino, origem ADC destino, origem INC destino AAA DAA SUB destino, origem SBB destino, origem DEC destino NEG destino CMP destino, origem AAS DAS MUL origem IMUL origem AAM DIV origem IDIV origem AAD CBW CWD

Adição Adiciona byte ou word Adiciona byte ou word com carry Incrementa byte ou word 1 unidade Ajusta ASCII para adição Ajusta decimal para adição Subtracção Subtrai byte ou word Subtrai byte ou word com borrow Decrementa byte ou word 1 unidade Nega byte ou word Compara byte ou word Ajusta ASCII para subtração Ajusta decimal para subtacção Multiplicação Multiplica byte ou word sem sinal Multiplicação inteira de byte ou word Ajuste ASCII para multiplicação Divisão Divide byte ou word sem sinal Divisão inteira de byte ou word Ajuste ASCII para divisão Converte byte em word Converte word em doubleword

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

X - 13

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

NOT destino AND destino, origem OR destino, origem XOR destino, origem TEST destino, origem SHL / SAL destino, count SHR destino, count SAR destino, count

ROL destino, count ROR destino, count RCL destino, count RCR destino, count

Lógicas Complementa byte ou word Produto lógico de byte ou word Soma lógica de byte ou word Ou exclusivo de byte ou word Teste (AND) de byte ou word Deslocamentos Deslocamento lógico / aritmético de byte ou word à esquerda Deslocamento lógico de byte ou word à direita Deslocamento aritmético de byte ou word à direita Rotações Roda byte ou word à esquerda Roda byte ou word à direita Roda byte ou word com carry à esquerda Roda byte ou word com carry à direita

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

X - 14

X.4.4 - Instruções sobre strings

REP REPE / REPZ REPNE / REPNZ MOVS destino, origem MOVSB / MOVSW CMPS destino, origem SCAS destino LODS origem STOS destino

Repete Repete enquanto for igual / zero Repete enquanto não for igual / não zero Move string de bytes ou words Move string de bytes ou words Compara string de bytes ou words Pesquisa string de bytes ou words Lê string de bytes ou words Escreve string de bytes ou words

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

DF ZF

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

X - 15

Fluxo das operações com strings
Inicializa SI, DI, CX e DF

Prefixo REPEAT

Ausente

Presente

CX = 0

S

N

Decrementa CX 1 unidade

Opera string usando SI / DI

String Byte Byte Word Word

DF 0 1 0 1

delta 1 -1 2 -2

Prefixo

z 1 1 0 0

Ajusta SI / DI de delta

REPE REPZ REPNE REPNZ

CMPS ou SCAS

S

ZF = z

S

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 JA / JNBE JAE / JNB JB / JNAE JBE / JNA JC JE / JZ JG / JNLE JGE / JNL JL / JNGE JLE / JNG JNC JNE / JNZ JNO JNP / JPO JNS JO JP / JPE JS

Condições testadas (CF ou ZF) = 0 CF = 0 CF = 1 (CF ou ZF) = 1 CF = 1 ZF = 1 ((SF xor OF) ou ZF) = 0 (SF xor OF) = 0 (SF xor OF) = 1 ((SF xor OF) ou ZF) = 1 CF = 0 ZF = 0 OF = 0 PF = 0 SF = 0 OF = 1 PF = 1 SF = 1

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

X - 18

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

STC CLC CMC STD CLD STI CLI HLT WAIT ESC LOCK NOP

Operações com flags Activa flag de carry Desactiva flag de carry Complementa flag de carry Activa flag de direcção Desactiva flag de direcção Activa flag de interrupt enable Desctiva flag de interrupt enable Sincronização externa Pára até interrupção ou reset Espera até pino TEST/ estar activo Escape para processador externo Prende o bus para a próxima instrução Sem efeito 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
BX ou BP ou SI ou DI

Índice duplo
BX ou BP

Codificado na instrução

SI ou DI

EU

Explícito na instrução

deslocamento CS ou 0 0 ou DS ou ES 0 0

Endereço efectivo

Assumido por omissão

SS

BIU

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 SI ou DI
Fig 40

End. efectivo

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
(Data_de_inscrição)

deslocamento
(Data_de_inscrição)

Propina

Atraso

Data_de_inscrição
Curso
Registo base

Turma
Estado

Idade

Registo base

Número_de_aluno
End. efectivo

End. efectivo

Propina

Atraso

Data_de_inscrição
Curso
Idade

Turma
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)
Registo de índice

Array (9) Array (8) Array (7)

Registo de índice 6

20

End. efectivo

Array (6) Array (5) Array (4) Array (3) Array (2) Array (1) Array (0)

End. efectivo

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 automaticamente de modo a obter bytes ou words.
OP CODE

DI

SI DI

End. efectivo End. efectivo

(origem) (destino)
Fig 44

____________________________________________________________________________________________________________ Arquitectura de Computadores AP

X - 25

X.5.8 - Endereçamento de portos de I/O No endereçamento directo o operando de 8 bits imediato.
OP CODE

número

do

porto

é

um

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 hexadecimais. binários, decimais, octais ou

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 hexa_A hexa_196 octal_8 tudo_uns menos_5 EQU EQU EQU EQU EQU EQU 'A' 41H 0C4H 10O 11111111B -5 ;caracter ;equivalente em hex. ;hexadecimal ;octal ;binário ;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 alfa beta gama delta epsilon dados_1

SEGMENT DB DW DD DB DW ENDS ? ? ? ? 5 ;não inicializada ;não inicializada ;não inicializada ;não inicializada ;contém 05H

dados_2 iota kapa lambda mu dados_2

SEGMENT AT 55H DB DW DD DB ENDS 'HELLO' 'AB' dados_1 100 DUP (0)

;especifica endereço de base ;contém 48 45 4C 4C 4F H ;contém 42 41 H ;contém 0000 5500 H ;contém (100 x) 00H

____________________________________________________________________________________________________________ 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 Offset 0 1 3 7 8 0 5 7 11 Operadores LENGTH 1 1 1 1 1 5 1 1 100

Variável alfa beta gama delta epsilon iota kapa lambda mu

Segmento dados_1 dados_1 dados_1 dados_1 dados_1 dados_2 dados_2 dados_2 dados_2

Tipo 1 2 4 1 2 1 2 4 1

SIZE 1 2 4 1 2 5 2 4 100

Estruturas Uma estrutura é uma entidade que atributos a um conjunto de campos. Exemplo:
empregado num_cont dept ano_contr empregado STRUC DB DB DW 9 1 1 DUP(?) DUP(?) DUP(?)

um

nome

e

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 dados pilha SEGMENT ;definição dos dados ENDS SEGMENT DW 100 DUP(?) topo_da_pilha LABEL ENDS

WORD

pilha

codigo ASSUME

SEGMENT CS: codigo DS: dados ES: dados SS: pilha MOV MOV MOV MOV MOV MOV AX, dados DS, AX ES, AX AX, pilha SS, AX SP, OFFSET topo_da_pilha

inicio:

; programa principal codigo ENDS END inicio

X.6.3 - Procedimentos
____________________________________________________________________________________________________________ Arquitectura de Computadores AP

X - 30

Um procedimento em assembly 86 é invocado com instrução CALL. O procedimento termina com instrução RET que transfere o controle para instrução seguinte ao CALL.

a a a

Os parâmetros para o procedimento podem ser passados por registo ou por stack. Exemplo:
savebp MACRO PUSH MOV BP BP, SP ; definição de uma macro ; guarda o valor de bp ; fim da definição de macro PROC NEAR 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 RET ENDP ; definição de um procedimento

ENDM deccount num

; repõe o valor de bp ; fim da definição de ; procedimento

deccount

; Programa principal ... PUSH CALL ADD ... indice deccount 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

REP

LEA SI, linha_1 LEA DI, linha_2 + 10 MOV CX, 20 CLD MOVS linha_2, linha_1

;inicializa ;registos de índice ;contador de repetições ;auto-incrementa

Exemplo de comparação alfabética de 2 nomes.
MOV MOV MOV CLD REPE CMPS JB nome_1_menor: nome_2_menor: SI, OFFSET nome_1 DI, OFFSET nome_2 CX, SIZE nome_2 ;alternativo ao LEA ;contador ;auto-incrementa ;enquanto for igual

nome_2, nome_1 nome_2_menor ;não é relevante para ;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 de controle CPU

ROM Registos

MC

Processador

Reg

ALU

CACHE (RAM bipolar) Ta ~ 20 ns

Cache

CAM

Memória Central (RAM MOS) Ta ~ 80-100 ns

RAM 1

RAM n

Memória Secundária (Tecnologia Electromecânica) Ta ~ ms

Discos
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 Semicondutor a bipolar Semicondutor a MOS Discos magnéticos Bandas magnéticas Custo/bit relativo 10 Ta (s) Modo de acesso Aleatório Permanência Meio físico Electrónico

10-8

Volátil

1

10-7

Aleatório Série (Série-Aleatório) Série

Volátil

Electrónico

10-2 10-3

10-2 10-1

Não-volátil Não-volátil

Magnético Magnético

M.2.2 - Memórias de acesso aleatório

____________________________________________________________________________________________________________ Arquitectura de Processadores ASP93

M-3

Descodificador de endereços

Driver de endereços

UNIDADE DE MEMÓRIA Células de memória

Sinais de controle interno

Driver de escrita

Driver de 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 DIFI CADOR X

C10

C11

C12

C13

C20

C21

C22

C23

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 sinais nas suas linhas de endereço X e Y. de

• 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 implementada com: memória semicondutora pode ser

• 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 A0 M 4x2 A1 X0 X1 Z1
Entrada de dados
Fig 51

Linhas de controle

Linhas de endereço

Z0

Saída de dados

Array de memória de 16 × 4 bits
WE

M 4x2

M 4x2

A0 A1 A2
Descod.

M 4x2

M 4x2

A3
Enable

M 4x2

M 4x2

AN M 4x2 X0 X2 X1 X3 M 4x2 Z0 Z1 Z2 Z3
Fig 52

M.2.3 - Memórias de acesso sequencial
____________________________________________________________________________________________________________ Arquitectura de Processadores ASP93

M-7

• Disco magnético é uma sequencial mais usada.

das

memórias

de

acesso banda

• Outras tecnologias: tambor magnética, disquetes, etc.

magnético,

O disco é coberto com um material magnetizável. Existem móveis. sistemas com cabeças fixas e com cabeças

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.

Tempo de rotação =

3 1 = 60 × 10 ms / min = 25 ms 2400 rpm vel. motor

bits por pista 50 × 10 3 bit = 2 × 10 6 bit / s = "Head rate" = tempo de rotação 25 ms

Disco com cabeças móveis

____________________________________________________________________________________________________________ Arquitectura de Processadores ASP93

M-9

Cabeça de escrita/leitura

Pré-amplificadores PA PA Lógica de selecção de cabeças

PA Um cilindro Controlador de disco

MOTOR

Motor de posicionamento de cilindro

Lógica de selecção de 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 Delimitadores Acesso a uma região de memória S

N

Endereço rejeitado

Teste Chave, Fechadura Acesso a um bloco na região

N

S

TEST and SET

N

Estado de espera ou nova tentativa

S

Leitura Leitura

Escrita

N

Teste "tag bits"

S

Teste "tag bits"

N

Acção 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á endereços na CPU. localizado no processador de

Endereço gerado pelo programa

Somador

Registo Base

Comparador Interrupção ao Sist. Oper. Endereço efectivo válido

Registo Delimitador

End. Base

End. Limite

Fig 55

ii) Teste de chave e fechadura (lock and key) Protecção a nível delimitadores. mais baixo que a dos registos

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, 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: o programa deve fazer o

• 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 Hamming) Suponhamos palavras de 4 bits: d4 d3 d2 d1 São necessários 3 bits de paridade: p3 p2 p1 de

• 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 aumentar a largura de banda da memória. objectivo

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 de memória

UCM

MAR0

MDR0

MDR1

MAR1

R A M 0
Endereços pares

R A M 1
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). m=3 Unidade 0: A0, A3, A6, ... Unidade 1: A1, A4, A7, ... Unidade 2: A2, A5, A8, ...

____________________________________________________________________________________________________________ Arquitectura de Processadores ASP93

M - 17

Geralmente: os p bits menos significativos do endereço identificam imediatamente a unidade à qual o endereço pertence.

m=2p,

____________________________________________________________________________________________________________ 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 C M Unid. Mem. 0

1 porto 0 n-1 1 porto 0

U C M

Unid. Mem. 1

n-1 U C M Unid. Mem. m-1
Fig 57

1 porto 0

Processador paralelo com memórias múltiplas
Unidade de controle Proc 0 Proc 1 Proc n-1

Rede de interligações

UCM Unid. Mem 0

UCM Unid. Mem 0

UCM Unid. 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 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 Unidades de memória

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 a6 a11 a16 a2 a7 a12 a17 a3 a8 a13 a18 a4 a5 a9 a10 a14 a15 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 a10 a20 a30

a01 a11 a21 a31

a02 a12 a22 a32

a03 a13 a23 a33

Straight storage

Acesso a linhas e diagonais sem conflitos, mas não a colunas. 0 a00 a13 a22 a31 1 a01 a10 a23 a32 2 a02 a11 a20 a33 3 a03 a12 a21 a30 Unidades de memória Skewed storage

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 tempo os tendem a espaço de M.4.3.1 cache of reference" - durante um curto espaço de endereços gerados por um programa típico ficar confinados a pequenas regiões do seu endereçamento lógico. Configuração de um sistema com memória

-

UCM

Cache

CPU

Memória 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 existentes na cache. Algoritmos mais usuais i) FIFO para troca de blocos ii) LRU iii) Aleatório os blocos

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 tags bit de validade

Sectores

CACHE

Memória Central

CACHE
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 (Direct Mapping) de correspondência directa

• 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

CPU

A0-A9

TAG AREA
Address BUS (24 bits) A0-A23 Comp

DATA AREA

CACHE

Cache 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 Tm Te 1-∅ − tempo tempo tempo "Miss de ciclo de cache de ciclo de memória central de ciclo efectivo da memória Ratio"

Sc - Aumento de velocidade devido à cache Sc = Tm Te Tm 1 1 = = Sc = T φ Tc φ .Tc + (1 − φ ).Tm + (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 ∅8k = 0,97
1 ≅ 5,5 1- 0,88 × 0,93 1 S8k = ≅ 6,85 c 1- 0,88 × 0,97
4k Sc =

Supondo

Tc =0,12 Tm

Aumentando a capacidade da cache de 4 Kbyte obteve-se uma melhoria no aumento da velocidade de: 4k S8k - Sc c ≅ 0,24 4k Sc Exemplos de cache em máquinas IBM Tm Tc Tm/Tc Capacid. cache(w) Dimensão bloco(w)

____________________________________________________________________________________________________________ Arquitectura de Processadores ASP93

M - 27

360/85 360/195 370/165

1,04µs 756ns 2µs

80ns 54ns 80ns

13 14,2 25

2k→4k 4k 1k→2k

8 8 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. - campo memória. escolhido para endereçamento de

Chave

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 0 S 1 WE

Registo de máscara

IE 0 IE IE 1

S

WE OD IE

S

WE OD

W 00 ID M ID

W 10 M

OD 0

S Registo de entrada ID0 ID1 IE

WE OD IE

S

WE OD

W 01 ID M ID

W 11 M

Registo de saída

OD 1 Palavra 0 M 0 Sinais de "match" Palavra 1 M 1

Fig 63

Estrutura de uma memória associativa
Entrada

Reg. Entrada

Reg. Máscara ID IE Match Memória Select Circuito de 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 IE ID ID
Fig 65

WE OD M

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

Disponível para o utilizador

Utilizado pelo programa

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 podem atingir centenas de Kb. ii) Fácil compreensão e utilização.

que

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 posição do programa em memória. os que dependem da

O loader relocador pode também fazer a operação de linkagem (linking loader). Este tipo Estática. de relocação é conhecido por Relocação

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, central é dividida em partições.
(i) 10K 20K 30K 15K 20K 10K 20K PROG 5 PROG 4 PROG 3 PROG 2 PROG 1 SISTEMA PROG 1 PROG 3 Saem 10K 20K 30K 15K 20K 10K 20K SISTEMA PROG 2 PROG 5 PROG 4

em

que

a

memória

(ii)

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 CPU.

existente

no

processador

de

endereços

da

O espaço de endereçamento do programa fica independente da localização do programa em memória. Exemplo
R.Base S1 S2 A+S1 R.Base

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, existam sucessivas compactações

a

não

ser

que

• 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 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 e UNIVAC 1108

• Existência de fragmentação página parcialmente vazia).

interna não

(última ser que

• Todo o programa em memória, a esteja "overlayed". Exemplo: Sistema com memória paginada

____________________________________________________________________________________________________________ Arquitectura de Processadores ASP93

M - 34

PROG 1
0 1000 2000

Nº de Nº de página bloco

0 1 2 PROG 2 0 1 2 PROG 3 0

5 6 9 2 4 7 8

0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000

Sistema Operativo

Livre

0 1000 2000

0

Programas dos utilizadores

Tabelas de páginas

11000

Livre Livre
Fig 70

Memória Central

Exemplos: XDS Sigma 7, CDC 3300 Em resumo:

• O espaço de endereçamento dividido em páginas.

de

um

processo

é

• 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, primeira página é trazida para memória. só a

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 páginas

γk

δs

Memória Central p (2 ) p-l página 2

Memória Virtual v (2 ) v-l página 2

γj γi

αq αp

αq αp

página k

γk γj γi γ1

página j

γ1

δr
página 1
Memória Secundária v p (2 -2 )

página i

página 1

δs δr

δ1
page fault

tamanho do bloco = 2

l
Fig 71

Tabela de páginas

Endereço de memória secundária

Pedido de página

Actualização de tabela de páginas

Troca de página com M. Central

Nº de página
v-l

Nº de linha
l

Nº de page frame
p-l

Nº de linha
l

endereço virtual do programa

endereço em 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
C= C1S1 + C 2S2 S1 + S2

Ci - custo por bit Si - capacidade

• "Hit Ratio"

H =

N1 N1 + N

2

N1 - nº de memória N2 - nº de memória

referências a central referências a 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 relacionadas logicamente. de palavras contíguas

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 processos. de segmentos por vários

Desvantagens

Dimensão gestão.

variável

dos

segmentos

complica

a

• Necessita compactação.

____________________________________________________________________________________________________________ Arquitectura de Processadores ASP93

Sign up to vote on this title
UsefulNot useful