Introdução a Arquitetura de Computadores

Propaganda
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
I.1. O SER HUMANO E O COMPUTADOR
Desde o seu aparecimento na Terra o homem percebeu que para dominar a natureza e os outros
animais necessitava de ferramentas (próteses) para ampliar sua capacidade física. Desta forma, inventou
a alavanca, o machado, a lança e a faca, entre outras ferramentas.
Com a evolução o homem começou a construir objetos que o auxiliavam no cálculo, como, por
exemplo o ábaco. E desde então o homem vem tentando construir máquinas cada vez mais poderosas
que sejam como próteses para o seu próprio cérebro, auxiliando-o na solução de problemas cada vez
mais complexos.
De forma simplificada, e sem preocupação com exatidão biológica, podemos analisar o homem
segundo o esquema abaixo:
M
O
CÉREBRO
SENTIDOS
PARTE
DECISÓRIA
MEMÓRIA
MÚSCULOS
E
N
SER HUMANO
I
O
E
X
T
E
R
Figura I.1
Como visto acima, o homem é composto de sentidos, cérebro e músculos. O cérebro, por sua
vez, é subdividido em memória e parte decisória.
Através dos sentidos o homem recebe do meio externo todas as informações. Estas podem ser
captadas por meio da visão, da audição, do olfato, do paladar e do tato.
As informações podem ser armazenadas na memória, que pode guardar informações visuais
(memória visual), auditivas (memória auditiva) e assim por diante.
Os músculos, que são comandados pela parte decisória do cérebro, são os instrumentos através
dos quais o homem age sobre o meio externo.
Um exemplo de comportamento pode mostrar de que forma se relacionam os quatro
componentes básicos do ser humano. Um centro-avante de futebol, dentro da pequena área adversária vê
uma bola alta que lhe é cruzada da linha de fundo. Na memória deste jogador existe a lembrança de que,
toda vez que a bola vem pelo alto, ele deve pular e cabecea-la de encontro ao gol adversário. Em frações
de segundo ele busca na memória esta informação e a parte decisória de seu cérebro decide que ele deve
pular. O cérebro então comanda os músculos de seu corpo a saltar e atingir a bola com a cabeça, de
forma a marcar o gol.
O computador é muito semelhante a este esquema simplificado do ser humano. Um computador
é composto basicamente de processador, memória, dispositivos de entrada e dispositivos de saída. A
seguir temos o esquema simplificado de um computador.
___________________________________________________________________________________
I.1
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
O
DISPOSITIVOS
M
DISPOSITIVOS
PROCESSADOR
DE
DE
ENTRADA
SAÍDA
N
E
MEMÓRIA
COMPUTADOR
I
R
O
E
X
T
E
Figura I.2
O processador é a parte do computador que faz os cálculos e controla todas as outras partes.
Podemos fazer uma analogia entre o processador e a parte decisória do cérebro humano.
A memória do computador funciona de forma semelhante à memória do homem, guardando
informações que podem ser colocadas e retiradas pelo processador a qualquer momento.
Através dos dispositivos de entrada é possível fazer entrar informações no computador. Como
um exemplo de dispositivo de entrada temos o teclado. Através do teclado uma pessoa pode digitar
informações que serão utilizadas pelo computador. Como outros exemplos de dispositivos de entrada
temos "mouse", "scanner", unidade de disco flexível, "joystick" etc. Comparando com os seres
humanos, os dispositivos de entrada são os sentidos (visão, audição etc).
Os dispositivos de saída são os responsáveis pela atuação do computador no mundo externo (da
mesma forma que os músculos no ser humano). Como exemplos de dispositivos de saída temos:
impressora, "plotter", monitor de vídeo, unidade de disco flexível etc.
A relação entre as partes do computador pode ser exemplificada na figura I.3.
Uma secretária digita um relatório utilizando um teclado (dispositivo de entrada). O processador
controla a entrada do texto e armazena-o organizadamente na memória. Ao final da digitação, a
secretária digita um comando para imprimir o relatório. Este comando é interpretado pelo processador,
que irá transferir o texto, que está na memória, para a impressora (dispositivo de saída). Após isto a
secretária pode digitar um outro comando para salvar (gravar) em disco este relatório.
___________________________________________________________________________________
I.2
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
RELATÓRIO
astrudud
astrudud
astrudud
SECRETÁRIA
PROCESSADOR
IMPRESSORA
TECLADO
RELATÓRIO
HD... CD...PD
(memória de massa)
askskclclclcl
askskclclclcl
askskclclclcl
askskclclclcl
MEMÓRIA
Figura I.3
___________________________________________________________________________________
I.3
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
I.2. O SURGIMENTO DOS COMPUTADORES
Em 1822, o matemático inglês Charles Babage criou uma máquina que executava
automaticamente uma seqüência pré definida de operações matemáticas. Esta máquina é considerada
como o primeiro computador e é conhecida hoje como máquina de Babage. A máquina de Babage era
inteiramente mecânica, e deste fato resultava em uma precisão pequena devido às dificuldades
tecnológicas da época. No entanto o que diferia a máquina de Babage das calculadoras mecânicas, já
existentes na época de suainvenção era a introdução do conceito de programação. Este conceito muito
importante só veio a ser implementado na prática mais de um século depois.
Durante a Segunda Grande Guerra, esforços de ambas as partes resultaram na construção de
computadores eletromecânicos que eram usados para cálculos de balística.
O computador eletrônico surgiu dois anos após o fim da guerra, em 1947. Dois pesquisadores da
Universidade da Pensilvânia desenvolveram um computador que chamaram de ENIAC. O ENIAC
possuía nada menos de 18.000 válvulas a vácuo. Por ser totalmente eletrônico as informações eram
transferidas em velocidade milhares de vezes maior que nos seus precursores eletromecânicos.
Os mesmos pesquisadores que criaram o ENIAC começaram a desenvolver uma nova versão de
computador eletrônico que foi comercializada pela Sperry Rand Corporation em 1951, sendo portanto o
primeiro computador comercial.
Com o surgimento e aplicação da tecnologia dos semicondutores as válvulas dos computadores
foram substituídas por circuitos transistorizados, diminuindo o tamanho e o consumo dos computadores.
Desde o inicio dos anos 50 até os dias de hoje, empresas como a IBM, a Burroughs, entre outras
milhares de empresas no mundo todo, vêm lançando todo ano computadores cada vez mais velozes, que
consumem cada vez menos energia elétrica e ocupam espaços cada vez menores.
___________________________________________________________________________________
I.4
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
I.3. OS SISTEMA DE NUMERAÇÃO E O COMPUTADOR:
I.3.1. O SISTEMA DECIMAL
O sistema de numeração que usamos no dia-a-dia é o decimal, ou sistema de base 10. A origem
do sistema decimal foi o costume adquirido pelos homens de contar usando os dedos das mãos. Como
são dez dedos o sistema decimal possui dez dígitos ou algarismos (0,1,2,3,4,5,6,7,8,9). No sistema
decimal cada algarismo tem um valor absoluto e um valor relativo. O valor absoluto do algarismo é a
quantidade que o algarismo representa. Já o valor relativo depende da posição em que o algarismo está
colocado dentro do número. Para esclarecer melhor o valor relativo dos algarismos dentro de um
número, vejamos o seguinte exemplo:
O número 8579 possui 4 algarismos. O algarismo "9", que está colocado mais a direita,
representa a quantidade de unidades, o algarismo "7" representa a quantidade de dezenas, o "5" a
quantidade de centenas e o "8" a quantidade de milhares. Podemos então afirmar que 8579 são 8
milhares (ou 8 conjuntos de mil unidades) mais 5 centenas (ou 5 conjuntos de cem unidades) mais 7
dezenas (ou 7 conjuntos de dez unidades) mais 9 unidades, ou seja:
8579 = 8 X 1000 + 5 X 100 + 7 X 10 + 9 X 1
ou
8579 = 8 X 103 + 5 X 102 + 7 X 101 + 9 X 100
Portanto, qualquer número decimal pode ser decomposto em componentes de potências de base
10.
I.3.2. O SISTEMA BINÁRIO
Um computador para armazenar números em base 10 teria de ser capaz de possuir circuitos que
assumissem dez estados de tensão distintos, que representariam os algarismos decimais (0,1,..,9). É
óbvio que um computador assim seria de implementação complicada. Por esta razão, desde o início os
computadores foram idealizados para que as quantidades neles armazenadas estivessem em sistema
binário (base 2), onde só existem dois algarismos (0 e 1) e, portanto, os circuitos eletrônicos só
necessitam assumir dois estados distintos.
Assim como na base 10, os algarismos em base 2 têm um valor absoluto e um valor relativo que
depende da posição em que o algarismo está colocado no número.
Também de forma similar ao sistema decimal, qualquer número no sistema binário pode ser
decomposto em componentes de base 2, como por exemplo:
(1101)2 = 1 X 23 + 1 X 22 + 0 X 21 + 1 X 20
ou
(1101)2 = 1 X 8 + 1 X 4 + 0 X 2 + 1 X 1 = 13
Como no exemplo acima, toda vez que representarmos um número em uma base que não a base
10, este número estará entre parênteses e com a base expressa à direita e abaixo do parêntese mais à
direita. Outra notação utilizada para representar um número binário é a colocação de uma letra bê
___________________________________________________________________________________
I.5
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
minúscula ("b") ou maiúscula ("B") ao final da seqüência de algarismos binários. Veja o exemplo
abaixo:
(1101)2 = 1101b = 1101B
I.3.3. CONVERSÃO DE DECIMAL PARA BINÁRIO E VICE VERSA
A decomposição de um número binário em suas componentes de base 2, como visto no exemplo
anterior, é a forma de conversão da base 2 para a base 10. Portanto, o número binário (1101)2 equivale a
13 em decimal.
A conversão de decimal para binário é realizada dividindo-se sucessivamente o número decimal
que se deseja converter por 2 até que o resultado da divisão seja 0. O número binário convertido é
composto pelos restos das divisões sucessivas postos em ordem inversa. Vejamos o exemplo da
conversão do número decimal 13 para base 2:
13
2
1
6
2
0
3
2
1
1
2
1
0
Ou seja (13)10 = (1101)2
Esta regra é uma regra de conversão geral da base 10 para qualquer base. Para mostrar que esta
regra é correta podemos fazer a conversão de um número decimal para a própria base 10. Embora isto
não tenha utilidade prática nenhuma, esta conversão poderá ajudar a esclarecer o porquê da regra.
4813 10
3 481 10
1
48 10
8
4
10
4
0
___________________________________________________________________________________
I.6
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
I.3.4. O SISTEMA HEXADECIMAL:
Outra base muito utilizada pelo computador é a base 16 ou sistema hexadecimal.
O sistema hexadecimal possui 16 algarismos (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E e F). Pode parecer
estranho à primeira vista termos letras como algarismos, mas como a base 16 começou a ser usada com
o advento do computador e como na época só haviam disponíveis 10 algarismos indo-arábicos
(0,1,2,.,8,9), havia a opção de se criar mais 6 representações nova para os 6 algarismos restantes, no
entanto optou-se por utilizar as 6 primeiras letras do alfabeto.
Como fomos treinados desde pequenos a raciocinar na base 10 a tabela abaixo nos mostra o
valor absoluto em decimal de cada algarismo hexadecimal.
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Como na base 10, os números hexadecimais são compostos por algarismos justapostos onde a
posição de cada algarismo representa o seu valor relativo. Portanto, o número (9A5C)16 pode ser
decomposto em componentes de potências de base 16, como visto a seguir:
(9A5C)16 = 9 X 163 + A X 162 + 5 X 161 + C X 160
ou
(9A5C)16 = 9 X 4096 + 10 X 256 + 5 X 16 + 12 X 1
= 39516
No exemplo acima utilizamos a notação de colocarmos o número hexadecimal entre parênteses e
a indicação da base 16 como subescrito. A outra forma de representarmos um número hexadecimal é
colocando-se a letra agá maiúscula ("H") ou minúscula ("h") no final da seqüência de algarismos
hexadecimais. Veja o exemplo abaixo:
(9A5C)16 = 9A5Ch = 9A5CH
___________________________________________________________________________________
I.7
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
I.3.5. CONVERSÃO DE DECIMAL PARA HEXADECIMAL E VICE VERSA
A conversão de decimal para hexadecimal e de hexadecimal para decimal segue as mesmas
regras que as conversões de binário para decimal e de decimal para binário.
Para converter um número hexadecimal para decimal basta decompor o número em
componentes de potências de base 16, como já visto em exemplo anterior.
Para converter um número decimal para hexadecimal basta dividir sucessivamente o número por
16 até que o resultado da divisão seja zero. Os restos das divisões sucessivas postos em ordem inversa
formam o número em hexadecimal. Vejamos o exemplo abaixo:
39772 16
12 2485 16
(C)
5 155 16
11
(B)
9
16
9
0
Ou seja (39772)10 = (9B5C)16
I.3.6. CONVERSÃO DE HEXADECIMAL PARA BINÁRIO E VICE VERSA
Podemos notar pela tabela abaixo que com 4 algarismos binários se pode representar
quantidades de 0 a 15 em decimal ou de 0 a F em hexadecimal.
Binário
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Utilizando esta propriedade podemos converter números binários em números hexadecimais
com o simples agrupamento de conjuntos de 4 algarismos binários e utilizando a tabela acima para
converter estes conjuntos de algarismos binários em algarismos hexadecimais. Por exemplo:
___________________________________________________________________________________
I.8
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
(0111110011011000)2
(0111 1100 1101 1000)2
↓
(7
↓
C
↓
D
↓
8)16
Para converter de hexadecimal para binário utilizamos o processo inverso substituindo cada
algarismo hexadecimal pelo conjunto de 4 algarismos binários correspondentes.
Não é por acaso que utilizamos o sistema hexadecimal quando lidamos com o computador. Na
verdade, todos os valores guardados e processados pelo computador estão no sistema binário. No
entanto quantidades muito grandes necessitam de sequências muito grandes de algarismos binários. Só
para termos uma noção, para armazenarmos o número 39516 no computador precisamos da seguinte
seqüência de algarismos binários:
1001101001011100
É claro que ao entrarmos estas sequências de zeros e uns no computador a possibilidade de
cometermos um erro é muito grande. O sistema hexadecimal, ao agrupar conjuntos de 4 algarismos
binários, torna-se uma forma mais resumida de se introduzir os dados nos computadores. É muito mais
simples digitarmos "9A5C", que é a representação hexadecimal da quantidade 39516, do que
"1001101001011100", que é a representação binária desta mesma quantidade. Como o computador
internamente só armazena valores 0 ou 1, após digitarmos os algarismos hexadecimais tem que haver
internamente uma conversão automática para a seqüência de algarismos binários correspondente.
I.3.7. O SISTEMA OCTAL:
Outra base utilizada em sistemas computacionais é a base 8 ou sistema octal. A base 8 é
utilizada na programação dos PLCs da Sistema.
O sistema octal possui 8 algarismos (0,1,2,3,4,5,6 e 7). Portanto um número representado na
base 8 não pode ter os algarismos 8 e 9 , que são utilizados somente nas bases 10 e 16.
Os valores absolutos dos algarismos na base 8 são exatamente os mesmos que na base 10, como
podemos ver na tabela abaixo. A única diferença é que na base 8 os valores acima de 7 não são
representados por um único algarismo e sim por um conjunto de algarismos.
Octal
0
1
2
3
4
5
6
7
Decimal
0
1
2
3
4
5
6
7
___________________________________________________________________________________
I.9
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
Como na base 10, os números octais são compostos por algarismos justapostos onde a posição
de cada algarismo representa o seu valor relativo. Portanto, o número (7452)8 pode ser decomposto em
componentes de potências de base 8, como visto a seguir:
(7452)8 = 7 X 83 + 4 X 82 + 5 X 81 + 2 X 80
ou
(7452)8 = 7 X 512 + 4 X 64 + 5 X 8 + 2 X 1
= 3882
I.3.8. CONVERSÃO DE DECIMAL PARA OCTAL E VICE VERSA
A conversão de decimal para octal e de octal para decimal segue as mesmas regras que as
conversões de binário para decimal e de decimal para binário.
Para converter um número octal para decimal basta decompor o número em componentes de
potências de base 8, como já visto em exemplo anterior.
Para converter um número decimal para octal basta dividir sucessivamente o número por 8 até
que o resultado da divisão seja zero. Os restos das divisões sucessivas postos em ordem inversa formam
o número em octal. Vejamos o exemplo abaixo:
3882
2
8
485
5
8
60
4
8
7
8
7
0
Ou seja (3882)10 = (7452)8
I.3.9. CONVERSÃO DE OCTAL PARA BINÁRIO E VICE VERSA
Podemos notar pela tabela abaixo que com 3 algarismos binários se pode representar
quantidades de 0 a 7 em decimal ou em octal.
Binário
000
001
010
011
100
101
110
111
Octal
0
1
2
3
4
5
6
7
Decimal
0
1
2
3
4
5
6
7
___________________________________________________________________________________
I.10
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
Utilizando esta propriedade podemos converter números binários em números octais com o
simples agrupamento de conjuntos de 3 algarismos binários e utilizando a tabela acima para converter
estes conjuntos de algarismos binários em algarismos octais. Por exemplo:
(111100101000)2
(111 100 101 000)2
↓
(7
↓
4
↓
5
↓
0)8
Para converter de octal para binário utilizamos o processo inverso substituindo cada algarismo
octal pelo conjunto de 3 algarismos binários correspondentes.
Assim como o sistema hexadecimal a representação de quantidades no sistema octal é uma
forma mais resumida de introdução de dados nos sistemas computacionais.
omputadores. É muito mais simples digitarmos "7450", que é a representação octal da quantidade 3880,
do que "111100101000", que é a representação binária desta mesma quantidade. Como o computador
internamente só armazena valores 0 ou 1, após digitarmos os algarismos octais tem que haver
internamente uma conversão automática para a seqüência de algarismos binários correspondente.
I.3.10. ARITMÉTICA BINÁRIA
A aritmética binária é análoga com a aritmética decimal. Neste item iremos ver a adição,
subtração, multiplicação e divisão binária.
I.3.10.1. ADIÇÃO BINÁRIA
Assim como na adição decimal, para facilitar, podemos ter a tabuada da soma binária.
TABUADA DA SOMA
BINÁRIA:
0+0=0
0+1=1
1+0=1
1 + 1 = 0 e VAI UM
A partir da tabuada poderemos fazer qualquer adição de dois ou mais números binários com
qualquer quantidade de algarismos. O processo é semelhante a adição decimal. Coloca-se um número
em baixo do outro alinhando-se pelo algarismo de menor valor, ou seja o algarismo mais a direita. Vai
se somando dois a dois os algarismos na mesma posição em ambos os números. Quando a soma de dois
algarismos ultrapassa 1 então soma-se 1 aos algarismos da casa imediatamente a esquerda.
___________________________________________________________________________________
I.11
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
Vejamos o exemplo a seguir.
(110101010)2 + (111110011)2
110101010
+111110011
PASSO 1
______________________________
1
1 ← VAI UM
110101010
+111110011
PASSO 2
______________________________
01
1
110101010
+111110011
PASSO 3
______________________________
101
110101010
+111110011
PASSO 4
______________________________
1101
110101010
+111110011
PASSO 5
______________________________
11101
1 ←VAI UM
110101010
+111110011
PASSO 6
______________________________
011101
↓VAI UM
11
110101010
+111110011
PASSO 7
_______________________________
0011101
↓VAI UM
11
110101010
+111110011
PASSO 8
_______________________________
10011101
___________________________________________________________________________________
I.12
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
↓VAI UM
11
110101010
+ 111110011
PASSO 9
________________________________
110011101
1
110101010
+ 111110011
PASSO 10
_______________________________
1110011101
I.3.10.2. SUBTRAÇÃO BINÁRIA
Como os circuitos eletrônicos são mais apropriados para realizarem soma a subtração binária é
normalmente realizada utilizando uma regra prática que coloca o subtrator em sua representação
complemento a 2 e depois ao invés de uma subtração realizaremos uma soma.
O complemento a dois de um número binário é obtido seguindo-se os seguintes passos:
1. Coloca-se um zero não significativo a esquerda do um mais significativo do número.
2. Inverte-se todos os algarismos, ou seja, troca-se zeros por uns e uns por zeros.
3. Soma-se um.
Vejamos um exemplo:
Então 10101 é o complemento a dois de 1011 e portanto a subtração e a soma abaixo são
similares quando despreza-se o último VAI UM.
1 0 0 0 1 (17)10 1 0 0 0 1
- 1 0 1 1 (11)10 +
____________________________
0 1 1 0 (06)10
10101
____________________
100110
↑DESPREZA-SE
___________________________________________________________________________________
I.13
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
I.3.10.3. MULTIPLICAÇÃO BINÁRIA
A multiplicação binária é também muito simples. Coloca-se os dois números um em baixo do
outro, alinhado pela direita e vai se multiplicando o de cima por cada algarismo do de baixo. O resultado
de cada uma destas multiplicações vão sendo colocadas uma em baixo da outra deslocando-se sempre
uma casa para a esquerda. Abaixo fornecemos a tabuada de multiplicação binária:
TABUADA DA
MULTIPLICAÇÃO
BINÁRIA:
0x0=0
0x1=0
1x0=0
1x1=1
Vejamos o exemplo a seguir:
1100110
x
1010
PASSO 1
____________________
0000000
1100110
x
1010
PASSO 2
_____________________
0000000
1100110
1100110
x
1010
PASSO 3
____________________
0000000
1100110
0000000
1100110
x
1010
PASSO 4
____________________
0000000
1100110
0000000
1100110
1100110
x
1010
PASSO 5
_____________________
0000000
1100110
+0000000
1100110
_______________________________
1111111100
___________________________________________________________________________________
I.14
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
I.3.10.4. DIVISÃO BINÁRIA
A divisão é realizada da mesma forma que em decimal. A seguir damos um
exemplo de divisão binário 1 1 0 1 1 1 (55) ÷ 1 0 1 (5):
1 1 0'1 1 1
-101
101
PASSO 1
1
001
1 1 0 1'1 1
-101
101
PASSO 2
10
001 1
1 1 0 1 1'1
-101
101
PASSO 3
101
00111
- 101
010
110111
-101
101
PASSO 4
101 1
00111
-101
010 1
101
000
___________________________________________________________________________________
I.15
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
I.3.11 EXERCÍCIOS:
1. Converta os seguintes números binários para a base 10:
a). (10010010)2 =
b). (01100011)2 =
c). (11110010)2 =
d). (10000000)2 =
2. Converta os seguintes números decimais para a base 2:
a). 129 =
b). 35647 =
c). 65535 =
3. Converta os seguintes números hexadecimais para a base 10:
a). (9AB3)16.=
b). (12EF)16 =
c). (1000)16 =
4. Converta os seguintes números octais para a base 10:
a). (6523)8.=
b). (1267)8 =
c). (1000)8 =
5. Converta os seguintes números decimais para as bases 16 e 8:
a). 127 =
b). 4876 =
c). 13876 =
6. Converta os seguintes números de hexadecimal para binário:
a). (9AB3)16 =
b). (12EF)16 =
c). (1000)16 =
7. Converta os seguintes números de binário para hexadecima e para octal:
a). (1001101100011110)2 =
b). (110111000110011)2 =
c). (1001110011010)2 =
d). (1110000000)2 =
___________________________________________________________________________________
I.16
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
7.Efetue as seguintes operações:
b). (11001110001)2
a). (10010110)2
-
+
(01111011)2
__________________________________
(11001101110)2
__________________ ____________________
c).
(11110010)2
x (110110)2
_____________________________
d) 11011000
e). (A43C)16
+ (CDEF)16
______________________________
(
)16
1100
→ (
→+ (
)2
←
)2
______________________________________________________________
(
)2
Sugestão: Converta para a base 2, some na base 2 e converta de volta para a base 16.
___________________________________________________________________________________
I.17
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
I.4. O PROCESSADOR
O processador, normalmente chamado de CPU (Central Processing Unit) é a parte do
computador que controla todo o sistema. No entanto, não é o processador que decide o que deve ser
feito pelo sistema. O usuário, ou programador, é que deve informar ao processador quais são os passos
que ele deve executar para desempenhar uma determinada tarefa. Na realidade, o processador é um
executor de tarefas.
A seqüência de passos ou instruções (comandos) denomina-se programa e é introduzida no
computador através de um dispositivo de entrada (como, por exemplo, o teclado) e armazenada na
memória. Após armazenada na memória, o processador busca uma a uma as instruções e as vai
executando. Esta situação é semelhante a um recruta que no início do dia recebe do sargento uma série
de ordens. O recruta vai memorizando as instruções e, depois que o sargento acaba de dar as instruções,
ele inicia a execução das tarefas na ordem em que o sargento as deu.
Tem de ficar bem entendido que o processador não faz nada que não seja ordenado pelo
programa.
As instruções (de um programa) armazenadas na memória nada mais são que números binários
(ou seqüência de zeros e uns), na verdade as únicas coisas que são entendidas pelo computador.
Portanto, para cada função que queremos que o processador execute, deveremos fornecer a ele um
conjunto de zeros e uns que ele previamente conheça. Este conjunto é conhecido como código de
máquina.
Códigos de máquina
100011100
100011110
PROCESSADOR
(CPU)
MEMÓRIA
Figura I.4 - Códigos deMáquina
Quando um processador é projetado e implementado (construído), o projetista determina uma
tabela de instruções e seus respectivos códigos de máquina. Esta tabela é fornecida aos programadores,
que então podem colocar na memória uma seqüência de códigos de máquina a serem interpretados pelo
processador.
A codificação de instruções é semelhante ao cardápio de alguns restaurantes que possuem
códigos (números) para os diversos pratos servidos. O cliente pede ao garçom, por exemplo, um filé
com fritas e uma lazanha. O garçom anota o pedido pelos códigos dos pratos e então entrega esses
códigos para o cozinheiro. Este decodifica, ou seja, interpreta os pedidos e prepara a comida.
Os códigos dos pratos são diferentes para cada restaurante. Portanto, se no restaurante A o filé
com fritas tem código 23, no restaurante B o mesmo filé com fritas pode ter código 55. Imaginemos que
um garçom novato no restaurante A, que tenha trabalhado durante muito tempo no restaurante B,
___________________________________________________________________________________
I.18
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
entregue ao cozinheiro um pedido utilizando os códigos do cardápio do restaurante B. Provavelmente o
cliente não terá no final o prato desejado.
Algo semelhante acontece com os processadores. Cada processador possui seu próprio conjunto
de códigos de máquina e funções e que geralmente não coincidem com os códigos de outro processador.
Portanto uma seqüência de códigos de máquina (ou programa) "escrita" para que o processador A
execute uma determinada tarefa não irá funcionar do mesmo modo se aplicada ao processador B.
No início da utilização dos computadores, a programação era feita diretamente, escrevendo-se
em binário o código de máquina das instruções que se desejava que o processador executasse. Esta
tarefa, além de enfadonha e muito propensa a erros, possuía o inconveniente de só servir para o
processador que se estava utilizando.
Este inconveniente impossibilitava a utilização, por um processador, de programas escritos para
outro processador. Outro inconveniente em se escrever programas diretamente utilizando os códigos de
máquina é que os programas se tornam muito extensos e de difícil compreensão quando se deseja que o
computador execute tarefas mais complexas.
IBM XT
COMPILADOR
PASCAL 8088
CÓDIGO DE
MÁQUINA
8088
PROGRAMA FONTE
ESCRITO EM
PASCAL
APPLE MACINTOSH
COMPILADOR
PASCAL 68000
CÓDIGO DE
MÁQUINA
68000
Figura I.5
Para solucionar estes tipos de inconvenientes foram criadas linguagens-padrão de programação,
tais como FORTRAN, Pascal e C, cuja sintaxe independe do processador que se vai utilizar para
executar o programa. Os programas escritos nestas linguagens são iguais para qualquer tipo de
processador. A diferença só se dá no momento em que o programa é traduzido para os códigos de
máquina do processador utilizado. Esta tradução é chamada de compilação e os programas que
executam esta tradução são conhecidos como compiladores. Para cada tipo de processador existe um
compilador diferente, no entanto as linguagens-padrão (ditas de alto nível) são iguais. Por exemplo: um
mesmo programa escrito em Pascal pode ser compilado (traduzido) em código de máquina do
processador 8088 (utilizado nos microcomputadores IBM XT compatíveis) ou do processador 68000
(utilizado nos microcomputadores Apple Macintosh). A diferença é que para gerar o código de máquina
8088 é utilizado um compilador Pascal para o processador 8088 e para gerar o código de máquina
68000 é utilizado um compilador Pascal para o processador 68000, como visto na figura I.5.
___________________________________________________________________________________
I.19
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
I.5. MEMÓRIA
A memória é a parte do computador que armazena informações.
Como visto no item anterior uma das funções básicas da memória é armazenar as sequências de
códigos de máquinas (ou programas), que serão interpretados e executados pelo processador.
Outra função da memória é armazenar os dados. Por dados entendem-se todas as informações a
serem processadas pelo computador, bem como as respostas deste processamento.
Por exemplo, se o processador executar um programa simples que some dois números inteiros,
tanto os dois números a serem somados quanto o resultado da soma são considerados dados e podem
ser armazenados na memória.
I.5.1. CLASSIFICAÇÃO DAS MEMÓRIAS:
A memória de um sistema computacional pode ser dividida em dois tipos básicos: memória
primária e memória secundária. A memória primária é composta de dispositivos semicondutores
("chips") que podem ser acessados, a qualquer momento, diretamente pelo processador. A memória
secundária, também conhecida como memória de massa é composta de dispositivos de armazenamento
magnético (discos flexíveis, discos rígidos ou Winchesters, fitas magnéticas, etc.) ou ótico (CD ROM)
que armazenam a maior parte das informações (programas e dados). Todos os programas que podem ser
executados pelo processador ficam guardados na memória de massa até o momento de sua execução.
Neste instante o programa é transferido da memória de massa para a memória principal e a partir desta é
executado. Por ter de armazenar muita informação a memória secundária normalmente tem uma
capacidade de armazenamento centenas ou milhares de vezes maior que a memória principal, que só
precisa guardar a cada momento os dados e o programa que estão sendo executados pelo processador.
A memória principal pode ser classificada quanto a função, volatilidade e tipo de acesso.
I.5.1.1. Quanto a função:
Quanto a função as memórias podem ser:
I.5.1.1.1. Memória de programas
As memórias de programas armazenam códigos de máquina que serão lidos e executados pelo
processador.
I.5.1.1.2. Memória de dados:
As memórias de dados armazenam dados de entrada e dados de saída do processamento.
___________________________________________________________________________________
I.20
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
I.5.1.2. Quanto ao tempo de retenção das informações (ou volatilidade):
I.5.1.2.1. Memórias permanentes:
Memórias permanentes são aquelas cuja manutenção das
informações nela armazenadas
independe do fornecimento de energia elétrica externa. Este tipo de memória só necessita de energia
elétrica externa no momento em que desejamos "escrever" (colocar) ou "ler" (retirar) as informações.
I.5.1.2.2. Memórias voláteis:
Memória volátil é aquela que só mantém as informações enquanto há alimentação de energia
elétrica externa. Como na memória permanente, as informações só podem ser lidas ou escritas com a
alimentação de energia elétrica externa.
Podemos transformar uma memória volátil em memória permanente colocando-se uma bateria
para alimentá-la. Desta forma, enquanto a bateria não perder a sua carga as informações se mantêm.
Portanto, o conjunto memória volátil mais bateria pode ser considerado como memória permanente.
I.5.1.3. Quanto ao tipo de acesso:
I.5.1.3.1. Memórias de Apenas Leitura:
As memórias de apenas leitura ou ROM (Read Only Memory) como são conhecidas
popularmente, como o próprio nome já diz só podem ser lidas pelo processador. O processador não pode
escrever informações em uma ROM. As informações são escritas na ROM durante a sua fabricação e
não podem jamais ser alteradas pelo usuário. A ROM é classificada quanto a volatilidade como
memória permanente, pois uma vez cortado o fornecimento de energia elétrica o conteúdo da ROM se
mantém intacto.
PROM (Programmable Read Only Memory):
Uma versão modificada de ROM é a PROM (Programmable Read Only Memory). Como seu
nome diz, a PROM vem vazia de fábrica e pode ser programada (ou gravada) uma única vez pelo
usuário, ou seja, pelo projetista de sistemas digitais.
As PROMs são formadas por circuitos semicondutores especiais que funcionam como fusíveis.
Assim comos os fusíveis estes circuitos especiais conduzem corrente elétrica. No entanto eles podem se
queimar interrompendo o fluxo de corrente. Os dois níveis lógicos são representados pelos fusíveis
intactos (nível lógico um) ou queimados (nível lógico zero). As PROMs são fabricadas e
comercializadas com todos estes fusíveis intactos (conduzindo corrente), ou seja, com todos os bits em
nível lógico um. Cabe ao usuário "queimar" os fusíveis, nas posições necessárias, para formar o
conteúdo desejado.
Para programar a PROM o usuário necessita de um aparelho especial. Este aparelho aplica, nas
posições desejadas, pulsos de tensão (12,5 ou 21 volts) bem acima da tensão de operação (5 volts). Estas
tensões altas fazem com que os fusíveis se queimem, por este motivo chama-se "queimar uma PROM" o
___________________________________________________________________________________
I.21
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
ato de programar através destes aparelhos especiais, que também são conhecidos vulgarmente como
queimadores de PROMs, o conteúdo de uma memória PROM. Se houver um erro na programação de
uma PROM não é possível apagar este erro e nem escrever nada por cima. A única alteração possível é
transformar o conteúdo de um bit de nível um (fusível intacto) para nível zero (fusível queimado). Como
de forma geral as alterações necessárias também envolvem transformações de zero para um o usuário,
neste caso, deverá jogar fora a PROM com o erro e gravar uma outra.
EPROM (Erasable Programmable Read Only Memory):
No sentido de se evitar o desperdício citado anteriormente, foi desenvolvida a EPROM
(Erasable Programmable Read Only Memory). A informação é gravada na EPROM com um aparelho
semelhante ao utilizado para gravação de PROMs, no entanto estas informações podem ser apagadas
expondo um pequeno orifício existente na parte superior da EPROM à luz ultravioleta. Normalmente as
EPROMs gravadas têm uma pequena etiqueta cobrindo este orifício de forma a não permitir que a luz
ultravioleta presente na luz do sol e das lâmpadas em geral, apague, com o passar dos anos, as
informações gravadas. Os circuitos semicondutores que compõem uma EPROM também podem ser
comparados a fusíveis, só que fusíveis renováveis.
E2PROM (Electrically Erasable Programmable Read Only Memory):
Uma versão melhorada e mais cara da EPROM é a EEPROM (Electrically Erasable
Programmable Read Only Memory). A única diferença entre as duas é o método de apagamento das
informações. Enquanto na EPROM a forma de se apagar é a exposição à luz ultravioleta, como descrito
acima, na EEPROM ou E2PROM (como também é conhecida) o apagamento se dá por aplicação de
pulsos elétricos.
Esta característica de poder ser apagada por pulsos elétricos permite que a E2PROM possa ter o
seu conteúdo alterado sem que seja necessário retirá-la do circuito. As memórias E2PROM são
largamente utilizadas em equipamentos de controle de processo guardando a configuração necessária ao
funcionamento do sistema.
Para alterar o conteúdo de uma posição de uma E2PROM é necessário apaga-la através de um
pulso elétrico, que nas primeiras E2PROM eram de níveis superior aos 5 volts (padrão TTL) comuns em
qualquer sistema digital, o que fazia com que os equipamentos tivessem circuitos especiais para gerar
estes níveis. Em E2PROM mais modernas o pulso de apagamento é de 5 volts e internamente a
E2PROM através de circuitos especiais gera os níveis necessários ao apagamento.
Um inconveniente das E2PROMs é que o tempo de apagamento e escrita de um novo conteúdo é
muito grande (na ordem de milisegundos) quando comparados aos tempos de acesso de memórias
RAM.
I.5.1.3.2. Memórias de Leitura e Escrita:
As Memórias de Leitura e Escrita, como o próprio nome já diz, são aquelas que podem ser
escritas e lidas pelo processador. Este tipo de memória é comum e imprecisamente chamada de RAM
(Random Access Memory - Memória de Acesso Aleatório). As RAMs necessitam sempre de energia
___________________________________________________________________________________
I.22
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
elétrica tanto para manter os dados nelas armazenados quanto para se lerem ou se escreverem
informações. Existem basicamente dois tipos de RAMs: RAM estática e RAM dinâmica.
RAM Dinâmica:
Nas RAM dinâmicas os dois nível lógicos (0 ou 1) são implementados por circuitos
semicondutores especiais, que são capazes de armazenar cargas elétricas. Então a presença ou não
destas cargas elétricas define respectivamente os níveis lógicos um e zero.
Estes circuitos especiais funcionam de forma semelhante a capacitores. Os capacitores, como
visto na figura I.6, são componentes compostos por duas placas metálicas paralelas, separadas por um
isolante elétrico. Aplicando-se cargas positivas a uma das placas, pela atração de cargas opostas
induzem-se cargas negativas na outra placa.
Carga Positiva
Placas
Metálicas
Paralelas
+ + ++ +
+ + + +
- -- - - -
Isolante Elétrico
Carga Negativa
Figura I.6 - Capacitor
A tendência natural é que as cargas sejam trocadas entre as placas até atingir-se o equilíbrio
elétrico. No entanto o isolante entre as placas impede esta troca.
Como não existe isolante elétrico perfeito as cargas, mesmo que lentamente, vão sendo trocadas
chegando-se ao equilíbrio e portanto descarregando o capacitor.
Os dispositivos semicondutores especiais que armazenam as cargas dentro das memórias
dinâmicas são capazes de manter a sua carga por apenas alguns mili segundos. Estes mili segundos que
para nós parece pouco, é muito tempo para os microprocessadores, que executam tarefas em tempos
10.000 vezes menor (centenas de nano segundos).
As RAM Dinâmicas necessitam além do fornecimento de energia elétrica, que as informações
nelas armazenadas sejam atualizadas (ou refrescadas) de tempos em tempos. O processador ou um
circuito destinado para este fim tem que de tempos em tempos ( da ordem de milissegundos) ler o
conteúdo de cada posição e reescrevê-lo. Esta função de reavivar a memória é conhecida como "refresh"
(refrescamento).
___________________________________________________________________________________
I.23
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
RAM Estática:
Ao contrário da RAM Dinâmica, a RAM Estática não perde o seu conteúdo com o tempo e
portanto não precisa ser reavivada. A RAM Estática só perde o seu conteúdo se interrompermos o
fornecimento de energia elétrica.
Enquanto a memória dinâmica armazena cargas elétricas em circuitos semicondutores especiais,
a memória estática sinaliza os dois níveis lógicos alternando o trajeto de corrente entre dois caminhos
possíveis. Esta comutação é obtida por chaves eletrônicas, que podem ser facilmente implementadas por
intermédio de transistores. Como estas chaves eletrônicas uma vez acionadas só mudam de estado
quando recebem um novo comando, não é necessário refrescamento e os dados serão mantidos enquanto
se mantiver o fornecimento de energia elétrica. Com a interrupção da energia, todos as chaves assumem
um único estado e a memória perde todos os dados.
Por ter circuitos mais elaborados as maiores memórias estáticas comerciais possuem capacidade
de armazenamento muito inferior as memórias dinâmicas comerciais.
Em 1993 a maior memória estática comercial com preço acessível era a 62256 que possui a
capacidade de armazenar 256 quilo bits, enquanto que a maior RAM dinâmica possui capacidade de 16
mega bits.
___________________________________________________________________________________
I.24
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
I.5.1.3.3. NVRAM (Non volatily RAM):
Um outro tipo de memória não volátil, também muito utilizada em equipamentos de controle de
processo é a NVRAM. As vantagens da NVRAM sobre a E2PROM é que seu acesso é feito com se a
mesma fosse uma RAM estática comum (não necessitando pulso especial de apagamento) e com um
tempo de acesso igual às memórias RAM estáticas comuns.
Na verdade a NVRAM é composta internamente por duas memórias. A figura I.6 mostra o
diagrama funcional da NVRAM X20C04 da Xicor. Ligado diretamente aos barramentos de dados e
endereço está uma memória RAM estática (SRAM = Static RAM) de 512 posições de 8 bits. Por trás
existe uma memória E2PROM de mesmo tamanho que possui uma cópia do conteúdo da SRAM. Os
valores escritos diretamente na SRAM são guardados na E2PROM através de ciclos chamados
"STORE" espaçados um do outro em pelo menos 5 ms. Por sua vez cada byte armazenado na E2PROM
é copiado para a SRAM através de ciclos chamados "RECALL" espaçados um do outro em pelo menos
5 μs.
X20C04
SELEÇÃO
DE
LINHA
A3
a
A6
CE
OE
WE
NE
A0
A1
A2
A7
A8
E2 PROM
SRAM
STORE
512 x 8
RECALL
LÓGICA DE
CONTROLE
SELEÇÃO
DE
COLUNA
I/O
D0
D7
Figura I.7 - NVRAM X20C04 - 512 x 8
As NVRAMs não substituem as E2PROM, como poderia parecer. Equipamentos de controle de
processo, como os PLCs, normalmente possuem os quatro tipos de memórias diferentes: EPROM,
RAM, E2PROM e NVRAM, como pode ser visto na figura a seguir.
No PLC da Sistema a E2PROM guarda o programa aplicativo (diagrama ladder) que o PLC irá
executar. Quando o PLC é energizado o programa é imediatamente transferido para a memória RAM, de
onde o programa (que está na EPROM), que o processador está executando, vai buscar as informações
para executar o Ladder programado pelo usuário. Estas buscas são feitas nas velocidades máximas (sem
tempo de espera) pois a memória RAM tem tempos de acessos compatíveis com o processador.
___________________________________________________________________________________
I.25
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
EPROM
SISTEMA OPERACIONAL
C
RAM
D
APLICATIVO DO USUÁRIO
(LADDER) - UTILIZADO
VARIÁVEIS DE PROGRAMA
PROCESSADOR
D
EEPROM
APLICATIVO DO USUÁRIO
(LADDER) - CÓPIA
D
NVRAM
D - Dados
C - Código de Máquina
ALTERAÇÕES NO APLICATIVO
(CÓPIA DE SEGURANÇA)
VARIÁVEIS DE RETENÇÃO
Figura I.8 - Diagrama de Memórias de um PLC típico.
Quando é necessário fazer uma mudança em algum parâmetro deste programa aplicativo esta
mudança é realizada diretamente na RAM, refletindo-se em imediata alteração na execução do programa
aplicativo. Estas mudanças são guardadas também na memória NVRAM e só então é iniciada a
gravação na E2PROM. Esta cópia na NVRAM é uma segurança para que caso haja uma falta de energia
durante a gravação das alterações na E2PROM (que leva um tempo relativamente alto) estas alterações
não sejam perdidas.
Além da cópia de segurança a NVRAM também armazena as variáveis de retenção e dos pontos
de E/S do sistema.
___________________________________________________________________________________
I.26
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
I.5.2. ENDEREÇAMENTO DE MEMÓRIA
Como vimos anteriormente, memória é o dispositivo que armazena informações. Antes de
prosseguirmos, temos que introduzir algumas definições importantes.
BIT é um algarismo binário que está armazenado na memória. O termo bit vem da abreviação
de digito binário (bynary digit). É a menor unidade de informação possível.
BYTE é o conjunto de 8 bits.
QUILO BYTE (KByte) é o conjunto de 1024 (210 ) bytes.
MEGA BYTE (MByte) é o conjunto de 1024 KBytes, ou seja
1 MByte = 1024 KBytes = 210 KBytes = 210 * 210 Bytes = 220 Bytes.
Imaginemos a memória como se fosse um grande gaveteiro. Cada gaveta pode armazenar um
certo número de algarismos binários (ou bits), como mostrado na figura I.9.
GAVETA 0 (000)
GAVETA 1 (001)
01011001
GAVETA 0 (000)
GAVETA 2 (010)
GAVETA 3 (011)
GAVETA 3 (011)
GAVETA 4 (100)
GAVETA 4 (100)
GAVETA 5 (101)
GAVETA 5 (101)
GAVETA 6 (110)
GAVETA 6 (110)
GAVETA 7 (111)
GAVETA 7 (111)
Figura I.9 - Endereçamento de Memória
Chamamos de palavra de memória o conjunto de bits que cada gaveta (ou posição de memória)
pode armazenar. Na figura I.6 a palavra de memória tem 8 bits (ou 1 byte).
Cada gaveta recebe um número que chamamos de endereço. Portanto para acessarmos o
conteúdo de uma posição de memória precisamos saber o seu endereço.
Na figura I.5 a nossa memória possui 8 posições de memória portanto com apenas 3 bits
podemos representar o endereço de qualquer posição desta memória. Com quatro bits poderíamos
representar 16 endereços diferentes de (0000)2 até (1111)2 (ou de 0 a 15).
Assim, com n bits de endereço podemos endereçar uma memória de até 2n posições.
Agora iremos analisar exemplos de memórias comerciais, mostrando suas pinagens, ciclos de
acesso, para identificarmos as principais características de cada tipo de memória.
I.5.2.1. SRAM 62256:
A SRAM 62256 que é uma memória utilizada em equipamentos industriais de um modo geral.
Cada posição de uma memória SRAM pode ter seu conteúdo lido ou escrito pelo processador. A
memória SRAM 62256 é um chip de 28 pinos, como mostra a figura I.10. A seguir, iremos analisar a
função de cada pino da memória SRAM 62256.
___________________________________________________________________________________
I.27
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
A11
A12
A7
A6
A5
A4
A3
A2
A1
A0
D0
D1
D2
Gnd
6
2
2
5
6
Vcc
A14
A13
A8
A9
WR
RD
A10
CS
D7
D6
D5
D4
D3
Figura I.10 - Pinagem da RAM 62256
Os pinos A0,A1,A2,...,A14 são os bits de endereçamento. A inicial "A" nas indicações dos pinos
vem de Address (Endereço em inglês). Como temos 15 bits de endereço a memória RAM 62256 possui
32K (32.768) posições. O conjunto destes bits de endereçamento chamamos de Via de Endereços ou
Barramento de Endereços.
Os pinos D0,D1,D2,...,D7 são os pinos onde se colocam os bits do conteúdo de cada posição da
memória. A inicial "D" nas indicações dos pinos vem de "Data" (Dado em inglês). Como são 8 pinos a
palavra de memória é de 8 bits. O conjunto destes bits de dados chamamos de Via de Dados ou
Barramento de Dados.
Portanto a memória RAM 62256 possui 32 768 posições de 8 bits cada uma, ou seja é uma
memória de 32.768 X 8 (que se lê: "memória de 32.768 por 8") ou de 32KBytes X 8 (que se lê:
"memória de 32 cá bytes por 8").
Os pinos de Vcc e Gnd são os pinos de alimentação do chip. Nestes dois pinos deverão ser
colocados respectivamente + 5 volts e terra.
O pino de WR é utilizado para ligarmos um sinal de controle que é gerado pelo processador que
irá acessar esta memória.. Um pulso de nível baixo (0) significa que o processador deseja escrever
(WRite em inglês) um dado na memória. A seqüência de escrita de um dado na memória é a seguinte:
1. O processador coloca no Barramento de Endereço (pinos A0,A1,...,A14) o endereço da
posição que ele deseja escrever. Esta ação chamamos de endereçar a memória.
2. O processador coloca no Barramento de Dados (pinos D0,D1,..,D7) o dado que ele deseja
escrever na posição endereçada.
3. O processador dá um pulso de nível baixo no pino WR .
4. A memória armazena o dado na borda de subida do pulso do pino WR .
A figura I.11 mostra o esquema de ligação do processador com a memória RAM 62256 e o
diagrama de tempo de um ciclo de escrita em memória.
___________________________________________________________________________________
I.28
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
A0
A0
P
R A1
..
O
C A14
E D0
S
S D1
A
D D7
O
R RD
..
.
..
6
A14
2
D0
..
.
D1
D7
RD
WR
BARRAMENTO DE
ENDEREÇOS
A1
2
5
6
WR
ENDEREÇO VÁLIDO
COLOCADO PELO PROCESSADOR
WR
BARRAMENTO
DE DADOS
DADO VÁLIDO
COLOCADO PELO
PROCESSADOR
Figura I.11 - Ciclo de Escrita em Memória
O pino de RD é utilizado para ligarmos um sinal de controle que é gerado pelo processador. Um
pulso de nível baixo (0) significa que o processador deseja ler (ReaD em inglês) um dado da memória.
A seqüência de leitura de um dado da memória é a seguinte:
1.
O processador coloca no Barramento de Endereço (pinos A0,A1,...,A14) o endereço
cujo conteúdo se deseja ler.
2.
O processador dá um pulso de nível baixo no pino RD .
3.
A memória coloca no Barramento de Dados (pinos D0,D1,..,D7) o conteúdo da posição
endereçada.
4.
O processador captura este dado na borda de subida do pulso do pino RD .
A figura I.12 mostra o diagrama de tempo de um ciclo de leitura de memória. Observe que o
tempo entre a colocação pelo processador do endereço da posição que ele quer acessar e a resposta por
parte da memória, colocando o dado no barramento de dados é conhecido por tempo de acesso. Os
componentes de memória vem com este tempo usualmente codificado como prefixo do número do
componente. Por exemplo um componente 62256-12 é uma memória RAM de 32K X 8 com tempo de
acesso de 120 ns.
O temp de acesso de memórias SRAM comercialmente disponíveis pode variar de 5 a 150ns.
Quanto menor o tempo de acesso, mais caras são as SRAMs. As versões de 15 a 25 ns de SRAMs são
___________________________________________________________________________________
I.29
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
utilizadas como memórias cache em placas de microcomputadores IBM compatíveis baseados nos
microprocessadores 386, 486 e Pentium e também em workstations RISC.
BARRAMENTO DE
ENDEREÇOS
ENDEREÇO VÁLIDO
COLOCADO PELO PROCESSADOR
RD
DADO VÁLIDO
COLOCADO PELA
MEMÓRIA
BARRAMENTO
DE DADOS
TEMPO DE
ACESSO
Figura I.12 - Ciclo de Leitura de Memória
Observe a direção das setas no esquema de ligação da figura I.11.
O Barramento de Endereços, bem como os sinais de RD e WR , têm sempre a mesma direção,
ou seja do processador para a memória. Por este motivo dizemos que o Barramento de Endereços e os
sinais de controle RD e WR são unidirecionais.
O Barramento de Dados pode ter duas direções. Pode estar direcionado do processador para a
memória (escrita) ou da memória para o processador (leitura). Por este motivo dizemos que o
Barramento de Dados é bidirecional.
Estados de Espera (Wait States):
Como os sinais do barramento de endereços e RD são gerados pelo processador, o tempo
decorrido desde o endereçamento até a subida do sinal de RD só dempende da velocidade do
processador. Na verdade as mudanças ocorridas nos barramentos e sinais de RD e WR são
sincronizadas por um outro sinal de entrada no processador que é o "clock". Este sinal é uma onda
quadrada que cujas subidas e descidas fazem com que uma operação do processador seja realizada. O
período deste sinal de clock da-se o nome de estado e portanto para executar um ciclo de leitura de
memória são necessários alguns estados, como visto na figura abaixo. Quanto mais rápido, ou seja
quanto maior a frequência (medida em MegaHertz) do sinal de clock, menor será o intervalo de tempo
entre o endereçamento e a subida do sinal de RD . Se a memória não for suficientemente rápida, quando
o RD subir o barramento de dados não conterá ainda o valor do conteúdo da posição acessada e
portanto o processador irá capturar o "lixo" presente no barramento na hora da subida do RD , como
visto na figura I.13.
___________________________________________________________________________________
I.30
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
ESTADO
CLK
BARRAMENTO DE
ENDEREÇOS
ENDEREÇO VÁLIDO
COLOCADO PELO PROCESSADOR
RD
Momento em que o processador captura
o conteúdo do barramento de dados (lixo)
DADO VÁLIDO
COLOCADO PELA
MEMÓRIA
BARRAMENTO
DE DADOS
TEMPO DE
ACESSO
Figura I.13 - Ciclo de Leitura com perda de informação
Existe um sinal de entrada no microprocessador que tem o nome de READY (pronto) que
possibilita a interligação de dispositivos de memória cujo tempo de acesso não é apropriado ao
funcionamento do processador. Quando o sinal de READY é mantido em nível lógico "1" o acesso a
memória se dá normalmente como visto na figura I.12. Quando o processador acessar uma memória
"lenta" (cujo tempo de acesso é maior que o pulso RD gerado pelo processador) o sinal é colocado em
nível lógico "0" até que a memória responda ao acesso de leitura quando então o sinal de READY volta
a nível lógico "1", fazendo com que o pulso de RD acabe. Veja a figura I.14. O alargamento do pulso
de RD é obtido pela inserção de um período (estado) a mais durante o ciclo de leitura. Este estado é
chamado de estado de espera, ou em inglês: "wait state". Dependendo da velocidade do processador
(frequência de trabalho) e dependendo do tempo de acesso da memória utilizada podem ser inseridos
um, dois ou mais wait states. O acesso a memória sem necessidade de estados de espera é dito um
acesso com "zero wait states".
___________________________________________________________________________________
I.31
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
ESTADO DE ESPERA
(WAIT STATE)
CLK
BARRAMENTO DE
ENDEREÇOS
RD
ENDEREÇO VÁLIDO
COLOCADO PELO PROCESSADOR
Sinal de RD alaragado pelo sinal de READY
READY
DADO VÁLIDO
COLOCADO PELA
MEMÓRIA
BARRAMENTO
DE DADOS
TEMPO DE
ACESSO
Figura I.14 - Ciclo de Leitura com Wait State.
Cabe apenas uma dúvida, mostrada no esquema da figura I.15. Quem gera o sinal de READY ?
A0
A0
P
R A1
..
O
C A14
E D0
S
S D1
A
D D7
O RD
R
..
.
A1
..
A14 2
D0
..
.
D1
D7
RD
WR
CLK
READY
6
2
5
6
WR
?
Figura I.15 - Gerador de Wait States (?).
___________________________________________________________________________________
I.32
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
Associação de Chips de Memória SRAM:
No sentido de aumentarmos a capacidade de armazenamento de um sistema utilizando
processadores podemos associar vários chips de memória. Por exemplo, se um sistema necessita de
65536 Bytes (64KBytes), podemos associar 2 RAM 62256, cada uma com 32 768 Bytes (32KBytes),
como mostra a figura I.16.
P
R
O
C
E
S
S
A
D
O
R
A0
...
..
.
A0
..
.
A12
A12
D0
D0
..
.
D1
D7
..
.
..
.
D1
D7
RD
OE
WR
WE
A15 A14 A13
CI 2
CS
..
.
A0
..
.
A12
CI 1
D0
..
.
D1
..
.
CI 3
D7
OE
CS
Figura I.16 - Associação de Memórias SRAM
O esquema da figura I.16 mostra a associação de 2 SRAM 62256. No entanto se você observar
bem existe uma dúvida a ser esclarecida. Se o processador , por exemplo, quiser escrever em um
determinado endereço um dado, ele colocará o endereço desejado no Barramento de Endereços, o dado
a ser escrito no Barramento de Dados, e dará um pulso no pino de WR . Como os Barramentos de
Endereços e Dados das duas RAM 62256 estão em paralelo o dado será escrito em ambas. A forma de
esclarecermos este problema é utilizando o único pino da 62256 que ainda não teve a sua função
explicada, ou seja, o pino CS .
O pino de CS (Chip Select = Seleção do Chip) é utilizado para que o processador selecione
entre várias memórias interligadas a ele qual será lida ou escrita. Quando o processador quer acessar
___________________________________________________________________________________
I.33
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
uma entre duas ou mais memórias ele coloca um nível baixo (0) no pino CS da memória que deseja
acessar. Se existir apenas uma memória, este pino pode ser colocado permanentemente em nível baixo.
No circuito da figura I.16, o processador tem um barramento de endereços de 16 pinos (de A0
até A15), portanto a capacidade de endereçamento é de 65.536 (do endereço 0000h até o endereço
FFFFh). O pino A15 do barramento de endereços, por ser o único pino do barramento de endereços que
não é ligado diretamente às memórias, é utilizado como entrada do circuito de seleção que irá definir
qual das memórias será acessada. Dependendo do valor de A15 o circuito de seleção irá colocar nível
baixo (0), no pino de CS de uma da outra memória 62256. Este tipo de endereçamento fará com que o
processador leia a memória 62256 de cima com A15 = 0, ou seja do endereço 0000h até o endereço
7FFFh. Quando A15 = 1, ou seja do endereço 8000h até FFFFh, o processador acessa a memória de
baixo.
O circuito de seleção que poderá ser utilizado para implementar o endereçamento descrito acima
seria simplesmente um inversor, como visto na figura I.17.
PROCESSADOR
A15
CS da (62256)
1
CS da (62256)
2
Figura I.17 - Circuito de Seleção
Circuito Gerador de Wait States:
Pode-se agora entender quem irá gerar o sinal de READY, que permite a utilização de memórias
lentas. Quando se projeta um sistema computacional se sabe a priori quais memórias necessitarão wait
states e quais serão acessada com zero wait states. Se por exemplo no sistema da figura I.16 uma das
memórias é mais lenta que a outra e necessita de um wait state, o circuito decodificador quando
selecionar a memória mais lenta irá informar ao circuito Gerador de “Wait States", como mostrado na
figura I.18. O Circuito Gerador de “Wait States” que então irá gerar o sinal READY, fazendo com que
sejam inseridos um, dois ou mais estados de espera. Nos microcomputadores pessoais o número de
"wait states" necessários para cada memória é configurada por software (setup).
___________________________________________________________________________________
I.34
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
P A0
R
...
O
C A14
E D0
S
S D1
A
D D7
O
R RD
WR
READY
..
.
A0
..
.
A14
..
.
6
D0
2
D1
2
D7
5
RD
WR
6
CS
A15
A0
..
.
A14
CIRCUITO
DECODIFICADOR
D0
2
D1
2
D7
5
RD
GERADOR DE
WAIT STATES
6
WR
6
CS
Figura I.18 - Circuito Gerador de “Wait States”.
___________________________________________________________________________________
I.35
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
I.5.2.2. EPROM 27128:
A EPROM 27128 é um chip de 28 pinos, como mostra a figura I.19, podendo armazenar 128
KBits (16 Kposições com 8 bits cada) de memória permanente de apenas leitura.
VPP
A12
A7
A6
A5
A4
A3
A2
A1
A0
D0
D1
D2
Gnd
2
7
1
2
8
Vcc
PGM
A13
A8
A9
A11
RD
A10
CS
D7
D6
D5
D4
D3
Figura I.19 - Pinagem da EPROM 27128
Os pinos A0,A1,A2,...,A13 são os bits de endereçamento. Como temos 14 bits de endereço a
memória EPROM 27128 possui 16K (16.536) posições.
Os pinos D0,D1,D2,...,D7 são os pinos onde se colocam os bits do conteúdo de cada posição da
memória.
Portanto a memória EPROM 27128 possui 16 536 posições de 8 bits cada uma, ou seja é uma
memória de 16 536 X 8 (que se lê: "memória de 16.536 por 8") ou de 16KBytes X 8 (que se lê:
"memória de 16 cá bytes por 8").
Os pinos de Vcc e Gnd são os pinos de alimentação do chip. Nestes dois pinos deverão ser
colocados respectivamente + 5 volts e terra.
O pino de RD é utilizado para ligarmos um sinal de controle que é gerado pelo processador. Um
pulso de nível baixo (0) significa que o processador deseja ler um dado da memória.
O pino CS tem a função de selecionar o chip. Se CS = 1 nenhuma das posições da EPROM
pode ser acessada.
A seqüência de leitura de um dado da memória EPROM é igual ao ciclo de acesso de um dado
contido em uma memória SRAM, e é a seguinte:
1.
O processador coloca no Barramento de Endereço (pinos A0,A1,...,A13) o endereço
cujo conteúdo se deseja ler.
2.
O processador dá um pulso de nível baixo no pino RD .
3.
A memória coloca no Barramento de Dados (pinos D0,D1,..,D7) o conteúdo da posição
endereçada.
4.
O processador captura este dado na borda de subida do pulso do pino RD .
A figura I.20 mostra o diagrama de tempo de um ciclo de leitura de uma memória EPROM.
___________________________________________________________________________________
I.36
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
A0
P A0
R A1
..
O
C A13
E
S D0
S D1
A
D D7
O
R RD
BARRAMENTO DE
ENDEREÇOS
..
.
A1
..
A13 7
D0
..
.
2
D1
D7
1
2
8
RD
ENDEREÇO VÁLIDO
COLOCADO PELO PROCESSADOR
RD
DADO VÁLIDO
COLOCADO PELA
MEMÓRIA
BARRAMENTO
DE DADOS
TEMPO DE
ACESSO
Figura I.20 - Ciclo de Leitura de Memória EPROM
O Barramento de Endereços, bem como o sinal de RD , têm sempre a direção do processador
para a EPROM.
O Barramento de Dados, que no caso da ligação do processador com uma memória SRAM é
bidirecional, no caso da interligação do processador com uma memória EPROM é unidierecional, só
que na direção inversa à do barramento de endereços, ou seja da EPROM para o processador. Isto se
deve ao fato da memória ser só de leitura e portanto nenhum dado pode sair do processador para
"entrar" na memória, o que corresponderia a um ciclo de escrita.
As memórias EPROM tem tempo de acesso maior que as memórias SRAMs. A memória
EPROM comercialmente disponível mais rápida possui tempo de acesso de 120 ns.
Os pinos de VPP e PGM são utilizados na hora de gravação do conteúdo da EPROM. A
gravação de uma EPROM é feita por um equipamento especial chamado gravador de EPROMs que
normalmente é interligado serial ou paralelamente a um microcomputador como visto na figura I.21.
___________________________________________________________________________________
I.37
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
VPP
A12
A7
A6
A5
A4
A3
A2
A1
A0
D0
D1
D2
Gnd
2
7
1
2
8
Vcc
PGM
A13
A8
A9
A11
RD
A10
CS
D7
D6
D5
D4
D3
FONTE DE
TENSÃO
12.5 V ou 21 V
GERADOR DE
PULSOS
SOQUETE ZERO FORCE
GRAVADOR DE EPROMS
PORTA SERIAL OU
PLACA DEDICADA
Figura I.21 - Gravador de EPROMs
Existem no mercado basicamente dois tipos de gravadores de EPROMs.
No primeiro tipo os sinais de VPP e PGM são gerados por circuitos que estão colocados em um
equipamento a parte, que além destes circuitos possui um soquete zero force onde será conectada a
EPROM a ser gravada, como visto na figura I.21. Existe um cabo padrão RS232 que interliga o
gravador de EPROMs à porta serial do microcomputador. Os valores a serem gravados são armazenados
temporariamente em arquivos nos discos flexíveis ou rígidos do microcomputador e transferidos
serialmente na hora da gravação.
___________________________________________________________________________________
I.38
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
O segundo tipo se assemelha ao primeiro, no entanto os circuitos geradores dos sinais de VPP e
PGM estão em uma placa plugada em um dos slots de expansão dentro do microcomputador.
Externamente só existe uma caixa com um soquete zero force onde será conectada a EPROM e um cabo
de ligação próprio.
Para ambos os tipos cada byte a ser gravado necessita um ciclo de gravação que pode demorar
de 1 a 60 ms dependendo do tipo de EPROM. Durante todos os ciclos de gravação os pinos CS é
mantido em nível lógico 0 enquanto o pino VPP é mantido em uma tensão alta, que pode variar de 12.5
a 21 Volts dependendo da EPROM. Cada ciclo de gravação é seguido de um ciclo de leitura de
verificação. O ciclo de gravação se inicia com o endereçamento da posição a ser gravada, seguida da
colocação no barramento de dados do conteúdo a ser gravado nesta posição. Em seguida é gerado um
pulso de nível baixo no pino PGM , que pode durar de 1 a 60 ms seguido de um pulso de nível baixo no
pino RD que realiza a leitura de verificação. O pulso de RD é de duração igual a um ciclo de leitura
normal. Veja na figura I.22.
BARRAMENTO DE
ENDEREÇOS
BARRAMENTO
DE DADOS
ENDEREÇO DA POSIÇÃO A SER GRAVADA
DADO A SER GRAVADO
COLOCADO PELO
PROGRAMADOR DE EPROMs
DADO LIDO
COLOCADO
PELA EPROM
12.5 ou 21 V
VPP
1 a 60 ms
CS
PGM
RD
CICLO DE GRAVAÇÃO
CICLO DE LEITURA DE
VERIFICAÇÃO
Figura I.22 - Ciclos de Gravação e Verificação
A figura I.23 mostra a associação de uma EPROM 27128 e uma SRAM 62256 a um
microprocessador.
___________________________________________________________________________________
I.39
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
P A0
..
.
R
O A13
C A14
E D0
S
S D1
A
D D7
O
R RD
WR
..
.
A0
..
.
A13
6
A14
..
.
D0
2
D1
2
D7
5
RD
WR
6
CS
A15
A0
CIRCUITO
DECODIFICADOR
..
2
A13
7
D0
D1
D7
RD
1
2
8
CS
Figura I.23 - Associação de EPROM e SRAM.
___________________________________________________________________________________
I.40
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
I.5.2.3. DRAM 411000:
As associações vistas anteriormente visam aumentar a capacidade de armazenamento da
memória. Outra forma de associação de chips de memória decorre do fato de alguns chips de memória
terem o seu Barramento de Dados menor do que o Barramento de Dados do processador. A seguir
veremos o exemplo das RAM dinâmicas, utilizadas nos computadores tipo IBM PC, onde cada
componente só possui um pino de dado, ou seja para formarmos uma memória de palavra de 8 bits
necessitamos associar pelo menos 8 componentes.
A figura I.24 mostra a associação de 8 memórias RAM dinâmicas 41.1000 de 1.048.576
posições de 1 bit.
P
R
O
C
E
S
S
A
D
O
R
A0
CIRCUITO
A1
DE
..
.
A0
CONTROLE
..
4
1
1
RAS
0
0
CAS
0
A9
A18
DE
A19
ACESSO
RD
DE
WR
MEMÓRIA
WR
A0
..
4
1
1
RAS
0
0
CAS
0
A9
WR
D
D0
D1
.
..
..
.
A0
..
A9
...
(0)
D
(1)
D7
4
1
1
0
0
CAS
0
RAS
WR
D
(7)
Figura I.24 - Associação de Memória RAM dinâmicas
Para acessarmos uma memória de 1 MByte necessitamos de 20 bits de endereço. As memórias
de 1 MByte (41 1000) mostradas na figura I.24 possuem apenas 10 linhas de endereços (A0 a A9). Este
fato faz com que esta memória tenha apenas 18 pinos. A memória dinâmica funciona da seguinte forma:
A memória está dividida em 1024 linhas e 1024 colunas como mostra a figura I.25. Na
interseção de cada linha com cada coluna está um capacitor que armazena um bit. Para acessarmos cada
posição precisamos fornecer ao componente o endereço da linha e o endereço da coluna da posição que
se quer acessar.
___________________________________________________________________________________
I.41
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
D
E
A
N
D C
E
R
E
Ç
O
L
U
N
O A
CAS
0
1
2
3
1021 1022 1023
+++++++
RAS
E D
N A
D
E
R
E
Ç
L
I
N
H
0
1
2
3
-- --
4
5
O A
1021
1022
1023
Figura I.25 - Estrutura Interna da Memória Dinâmica
O circuito de acesso de memória dinâmica coloca nas 10 linhas de endereços das memórias (A0
a A9) o endereço da linha da posição que se quer acessar e gera um pulso negativo no pino RAS (Row
Address Strobe). Logo após, o circuito de acesso de memória coloca nas 10 linhas de endereços das
memórias o endereço da coluna da posição que se quer acessar e gera um pulso negativo no pino de
CAS (Column Address Strobe).
A figura I.26 mostra os diagramas de tempo de leitura e escrita de uma memória RAM dinâmica
41 1000. Tanto no ciclo de escrita, como no ciclo de leitura, as subidas dos sinais de RAS e CAS
sincronizam a captura do dado. No ciclo de escrita estas subidas fazem com que a memória capture o
valor presente no barramento de dados. No ciclo de leitura, as subidas de RAS e CAS determinam a
captura pelo processador do valor colocado pela memória no barramento de dados.
___________________________________________________________________________________
I.42
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
RAS
CAS
A0-A9
LINHA
COLUNA
WR
DADO
VÁLIDO
HI Z
D
HI Z
TEMPO DE ACESSO
Ciclo de Leitura
RAS
CAS
A0-A9
LINHA
COLUNA
WR
D
DADO COLOCADO
PELO PROCESSADOR
Ciclo de Escrita
Figura I.26 - Ciclos de Leitura e Escrita de Memória Dinâmica
Como dito anteriormente, a memória dinâmica necessita de ter seu conteúdo refrescado de
tempos em tempos. Portanto é necessário que o processador ou o dispositivo de controle de acesso a
memória realize ciclos de refresh. O intervalo entre dois ciclos de refresh é da ordem de mili segundos.
Por exemplo, a memória dinâmica TMS4164 da Texas Instruments especifica em seu "Data Sheet" que
o intervalo entre ciclos de refresh deve ser no máximo 4 mili segundos.
Um ciclo de refresh realiza o refrescamento de uma linha inteira da matriz interna da RAM,
portanto, como visto no diagrama de tempo da figura I.27, no ciclo de refresh só é necessário especificar
no barramento de endereços o endereço da linha que se vai refrescar. O que diferencia um ciclo de
acesso normal de um ciclo de refresh é a presença de um pulso de RAS sem pulso de CAS .
___________________________________________________________________________________
I.43
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
RAS
CAS
A0-A9
LINHA
WR
D
Ciclo de Refresh (Refrescamento)
Figura I.27
Existem memórias dinâmicas que possuem um modo de acesso mais rápido chamado Page
Mode. Uma destas memórias é a 21010 da Intel. Este modo de acesso mais rápido consiste em se
acessar vários bits de uma mesma linha. Desta forma só é necessário colocar o endereço da linha e
abaixar a linha de RAS uma única vez e depois ir colocando, para cada acesso, o endereço da coluna
junto com o pulso de CAS . Veja os esquemas da figura I.28.
___________________________________________________________________________________
I.44
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
RAS
CAS
A0-A9
LINHA
COLUNA
COLUNA
COLUNA
COLUNA
WR
D
dado
válido
HI Z
HI Z
dado
válido
HI Z
dado
válido
HI Z
dado
válido
Ciclo de Leitura em Page Mode
RAS
CAS
A0-A9
LINHA
COLUNA
COLUNA
COLUNA
COLUNA
WR
D
dado colocado
pelo processador
dado colocado
pelo processador
dado colocado
pelo processador
dado colocado
pelo processador
Ciclo de Escrita em Page Mode
Figura I.28
___________________________________________________________________________________
I.45
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
Em computadores baseados em processadores a partir do 386 a memória dinâmica não vem
soquetada na placa mãe, como acontece com os XTs e ATs 286. Os componentes DRAM do tipo do
411000 são agrupados em placas que são plugadas em conectores especiais de 30 pinos ou 72 pinos,
chamadas de SIMM (Single Inline Memory Modules = Módulos de memória em linha simples). A
figura I.29 mostra uma placa SIMM de 30 pinos.
Figura I.29 -Memória SIMM de 30 pinos
Cada placa SIMM de 30 pinos possui 8 bits de dados e mais um bit de paridade que é testado por um
circuito a parte. Uma placa SIMM de 1 Megabyte utilizando DRAMs 411000 necessita ter portanto 9
chips.
9 X 411000
.
.
.
A0 ... A9
paridade D7
D6
D5
D4
D3
D2
D1
D0
RAS CAS
Figura I.30 - Sinais de uma placa SIMM de 1 MBytes
Em processadores com barramento de dados maior que 8 bits como por exemplo os 386SX (com
16 bits de barramento de dados) e os 386DX, 486SX, 486DX, 486DX2, 486DX4 (com 32 bits de
barramento de dados) são necessárias mais de uma placa SIMM de 30 pinos para atender à todos os bits
do barramento de dados.
Para placas mãe com processador 386SX são necessárias no mínimo 2 placas SIMM de 30 pinos
como mostrado no esquema da figura I.31. Se cada placa SIMM de 30 pinos tiver 1 Mbyte então o
sistema terá no total 2 Mbytes. A figura I.31 mostra módulos SIMM de 1 Mbytes que utilizam cada um
9 DRAMs 411000.
___________________________________________________________________________________
I.46
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
A0 ... A9, RAS, CAS
386SX
CTLE
DE
ACESSO
DE
MEMÓRIA
D0
.
.
A0 .
D7
.
CIRCUITO
GERADOR
E
TESTADOR
DE
PARIDADE
.
A23 D8
.
.
.
D15
ERRO
A0 ... A9, RAS, CAS
Figura I.31 - Memórias SIMM de 30 pinos com 386SX.
Quando o processador está escrevendo um byte em uma posição de memória o circuito
gerador testador de paridade gera o nono bit (bit de paridade) que completa com um bit "0"ou com
um bit "1" para que os nove bits assim formados possuam um número par de bits "1". Por exemplo
se o processador estiver escrevendo um byte “10110101” (que contém 5 bits “1”) o gerador testador
de paridade irá gerar um bit “1”que com os 8 bits de dados completam 6 bits “1”.
dados
paridade
10110101
1
Os nove bits são escritos na memória e quando o processador realizar uma leitura desta
posição o circuito gerador testador de paridade irá ler os bits de dados mais o bit de paridade para
testar se existe um número par de bits “1” neste conjunto de 9 bits. Caso tenha ocorrido uma troca
de um bit será gerado um sinal de erro que será detectado pelo sistema operacional que irá exibir
uma mensagem de erro.
Existem DRAMs que ao invés de terem 1 bit possuem 4 bits de barramento de dados. Por
exemplo a DRAM 441000 possui 1 Mega posições (intercessões de linha e coluna) e cada posição
contém 4 bits. Placas SIMM de 30 pinos utilizando este tipo de componente possui apenas 3 chips, dois
___________________________________________________________________________________
I.47
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
chips 44100 para os 8 bits de dados e um chip 411000 para o bit de paridade como pode-se ver na figura
I.32.
441000
441000
411000
1 Mega
posições
A0 ... A9
RAS CAS
D0
.
.
.
D7
paridade
Figura I.32 - Módulos utilizando DRAMs 441000.
A estrutura interna do 441000 também possui 10 bits de endereço com 1024 linhas e 1024
colunas só que na interseção de cada linha e cada coluna existem 4 capacitores que armazenam os 4 bits
de cada uma das 1.048.576 (1024 x 1024) insterseções.
Aumentando-se um bit de endereçamento (incluindo A10) dobra-se o número de linhas e
colunas internas da memória DRAM fazendo com que se quadruplique a quantidade de posições
(interseções). No caso 4194304 (2048 x 2048) ou seja 4 Mega como visto na figura I.33.
Podem existir em cada insterseção 1 capacitor (1 bit), caso do componente 414000, ou 4
capacitores (4 bits), caso do componente 444000.
Normalmente placas SIMM 30 pinos de 4Mbytes possuem 2 componentes 444000 e 1
componente 414000. Como mostrado na figura I.34.
___________________________________________________________________________________
I.48
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
E
N
D
A
D C
E O
R L
E U
Ç N
O A
CAS
0
1
2
3
2045 2046 2047
RAS
0
1
E D
2
N A
3
D
4
E L
5
R I
E N
Ç H
O A
2045
2046
2047
Figura I.33 - Memória DRAM com 4 Mega posições.
444000
444000
414000
4 Mega
posições
A0 ... A10 RAS CAS
D0
.
.
.
D7
paridade
Figura I.34 - Placa SIMM de 4 Mbytes
___________________________________________________________________________________
I.49
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
Se por exemplo temos 2 placas SIMM 30 pinos, cada uma com 4 MBytes conectadas a uma
placa mãe de 386SX, como visto na figura I.35, o sistema terá no total 8 Mbytes.
444000
444000
414000
A0 ... A10, RAS, CAS
386SX
CTLE
DE
ACESSO
DE
MEMÓRIA
D0
.
.
A0 .
D7
.
CIRCUITO
GERADOR
E
TESTADOR
DE
PARIDADE
.
A23 D8
.
.
.
D15
ERRO
A0 ... A10, RAS, CAS
444000
444000
414000
Figura I.35 - 386SX com 8 Mbytes de DRAM
Para se expandir é necessário a colocação de no mínimo mais 2 placas que podem ser por
exemplo de 1MBytes cada uma, perfazendo um total de 10 Mbytes,como visto na figura I.36.
___________________________________________________________________________________
I.50
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
A0 ... A10, RAS0, CAS0,
RAS1, CAS1
A0..A10
4M x 9
386SX
CTLE
DE
ACESSO
DE
MEMÓRIA
A0...A9
1M x 9
D0
.
.
A0 .
D7
.
CIRCUITO
GERADOR
E
TESTADOR
DE
PARIDADE
.
A23 D8
.
.
.
D15
4M x 9
ERRO
A0..A10
A0 ... A10, RAS0, CAS0,
1M x 9
A0...A9
RAS1, CAS1
Figura I.36 - 386SX com 10 Mbytes de DRAM
No acesso aos primeiros 8 Mbytes da memória o circuito de controle de acesso de memória
irá gerar RAS0 e CAS0, enquanto que no acesso dos últimos 2 MBytes o circuito de controle de
acesso de memória irá gerar RAS1 e CAS1.
O circuito de controle de acesso de memória é que funciona como circuito selecionador de
memória já que as memórias DRAM não possuem pino de CS (Chip Select).
Na verdade no acesso do primeiro megabyte em um microcomputador IBM compatível,
algumas áreas de endereços gerados pelo processador não acessam posições da memória DRAM e
sim de memórias do tipo EPROM ou ROM.
Como estas memórias possuem pino de CS, no momento que o processador endereçar
posições nestas áreas será gerado um dos sinais CS para selecionar uma destas memória e não será
gerado nenhum sinal de RAS e nem de CAS (que selecionam as memórias DRAM). Veja a figura
I.37.
Estas memórias EPROM só possuem 8 bits de barramento de dados que serão ligados aos 8
bits menos significativos (D0 a D7) do barramento do processador. O acesso a estas memórias é
feito ao se ligar o equipamento e neste instante o processador só irá realizar leituras através dos 8
bits menos significativos do seu barramento de dados.
Existe uma opção no SETUP dos microcomputadores que permite que sejam feitas cópias
dos conteúdos destas memórias EPROM (que são mais lentas que as DRAMs) para os espaços
correspondentes dentro do primeiro megabyte de memória DRAM. Esta opção é chamada ROM
BIOS Shadow.
___________________________________________________________________________________
I.51
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
A0 ... A15, RAS0, CAS0,
RAS1, CAS1
A0..A10
4M x 9
386SX
CTLE
DE
ACESSO
DE
MEMÓRIA
A0...A9
1M x 9
D0
.
.
A0 .
D7
.
EPROM
A0...A15
64K x 8
CIRCUITO
GERADOR
E
TESTADOR
DE
PARIDADE
.
A23 D8
.
.
.
D15
4M x 9
A0..A10
1M x 9
A0...A9
ERRO
A0 ... A10, RAS0, CAS0,
RAS1, CAS1
Figura I.37
Se existirem na placa mãe 386SX mais conectores livres para memórias SIMM de 30 pinos
pode-se expandir a memória RAM colocando-se placas 2 a 2 de acordo com o manual da placa
mãe.
Para placas mãe de processadores 386DX, 486SX, 486DX, 486DX2 e 486DX4, que
possuem barramento de dados de 32 bits, são necessários no mínimo 4 placas SIMM de 30 pinos
como podemos ver na figura I.38.
Normalmente estas placas mãe possuem 8 conectores para placas SIMM de 30 pinos. A
expansão de memória da placa da figura I.38 é portanto limitada a colocação de mais 4 placas que,
se forem de 4 Mbytes faz com que o sistema fique com 32 Mbytes, que é a capacidade máxima que
uma placa mãe com 8 conectores SIMM de 30 pinos pode ter. Esta limitação não é do processador,
que tendo 32 bits de endereço pode endereçar até 4 Gbytes, mas da placa mãe. Como a placa mãe só
possui 8 conectores SIMM de 30 pinos e como só existem placas SIMM de 30 pinos com no
máximo 4mbytes, a quantidade máxima de memória é de 8 x 4M = 32mbytes.
Existem ainda placas SIMM 30 pinos de 256kbytes onde tem-se 9 DRAMs com 9 pinos de
endereço (A0...A8) com 512 linhas x 512 colunas.
___________________________________________________________________________________
I.52
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
A0 ... A10
, RAS0, CAS0
386DX
ou
486
CTLE
DE
ACESSO
DE
MEMÓRIA
RAS0,CAS0
A0..A10
4M x 9
A0...A10
4M x 9
D0
.
D7
CIRCUITO
GERADOR
E
TESTADOR
DE
PARIDADE
A0 D8
.
.
.
D15
A31
D16
.
D23
D24
.
D31
4M x 9
A0..A10
ERRO
A0 ... A10
RAS0, CAS0
4M x 9
A0...A10
RAS0,CAS0
Figura I.38 - Placa mãe 386DX ou 486 com memórias SIMM 30 pinos
Em placas mãe com 8 conectores SIMM de 30 pinos pode-se ter várias combinações de
placas SIMM de 256K, 1M e 4 Mbytes. Pode-se ter:
4 de 256K
perfazendo um total de 1MBytes
8 de 256K
perfazendo um total de 2 MBytes
4 de 1M
perfazendo um total de 4 MBytes
4 de 256K e 4 de 1M
perfazendo um total de 5 MBytes
8 de 1M
perfazendo um total de 8 Mbytes
4 de 4M
perfazendo um total de 16 Mbytes
4 de 256K e 4 de 4M
perfazendo um total de 17 MBytes
4 de 1 M e 4 de 4M
perfazendo um total de 20 MBytes
8 de 4M
perfazendo um total de 32 MBytes
Outro padrão de expansão de memória utilizado em placas mãe a partir do 486DX2 são as
que utilizam conectores para placas SIMM de 72 pinos. Neste padrão as placas já tem componentes
suficientes para suprir 32 bits e portanto para processadores com barramento de 32 bits só é
necessário a colocação de uma única placa. A figura I.39 mostra um módulo SIMM de 72 pios com
4M x 36 e uma placa mãe 486 com 2 placas SIMM de 72 pinos, uma com 16 Mbytes (4M x 36) e
outra com 4 Mbytes (1M x 36)
___________________________________________________________________________________
I.53
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
4M x 4
4M x 4
4M x 4
4M x 1
4M x 4
4M x 4
4M x 1
4M x 4
4M x 4
4M x 1
4M x 4
4M x 1
Módulo SIMM de 72 pinos com 4M x 36
4 bits de paridade
A0 ... A10, RAS0, CAS0,
RAS1, CAS1
A0..A10
486
CTLE
DE
ACESSO
DE
MEMÓRIA
D0
.
.
A0 D31
4M x 36
A0...A9
1M x 36
4 bits de paridade
.
.
A31
CIRCUITO
GERADOR
E
TESTADOR
DE
PARIDADE
Placa mãe com 2 placas SIMM de 72 pinos com 20 MBytes
Figura I.39
Para processadores com barramento de 64 bits como o Pentium e o Power PC são
necessárias no mínimo 2 placas SIMM de 72 pinos.
___________________________________________________________________________________
I.54
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
A0 ... A10, RAS0, CAS0,
Pentium
ou
PowerPC
CTLE
DE
ACESSO
DE
MEMÓRIA
RAS1, CAS1
A0..A10
4M x 36
A0...A9
1M x 36
D0
.
.
A0 .
D31
.
CIRCUITO
GERADOR
E
TESTADOR
DE
PARIDADE
.
A31 D32
.
.
.
D63
4M x 36
ERRO
A0..A10
A0 ... A10, RAS0, CAS0,
1M x 36
A0...A9
RAS1, CAS1
Figura I.40 - Placa mãe Pentium ou PowerPC com 40mbytes de memória.
Em placas baseadas no processador AlphaPC da Digital que possui barramento de dados de
128 bits são necessárias no mínimo 4 placas SIMM de 72 pinos para completar o barramento. Veja
a figura I.41
___________________________________________________________________________________
I.55
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
A0 ... A10
RAS0, CAS0
Alpha
CTLE
DE
ACESSO
DE
MEMÓRIA
RAS0,CAS0
A0..A10
4M x 36
D0
.
D31
A0
.
.
A34
D32
.
D63
4 bits de
id d
.
D127
4M x 36
ERRO
4 bits de
CIRCUITO
GERADOR
E
TESTADOR
DE
PARIDADE
4 bits de
id d
D64
.
D95
D96
A0 ... A10
A0...A10
4M x 36
A0..A10
RAS0, CAS0
4M x 36
A0...A10
4 bits de paridade
RAS0,CAS0
Figura I.41 - Placa mãe Alpha com memórias SIMM de 72 pinos
___________________________________________________________________________________
I.56
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
___________________________________________________________________________________
I.57
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
I.6. DISPOSITIVOS DE ENTRADA E SAÍDA (I/O - Input/Output):
Como visto anteriormente, os dispositivos de entrada e saída, conhecidos normalmente pela
iniciais I/O (Input/Output), são os componentes do computador que fazem a interação do mundo
externo com o computador.
Para esclarecer como um dispositivo de I/O interage com o microprocessador, vejamos o
exemplo do teclado, que é um dos dispositivos essenciais de qualquer microcomputador.
O teclado de qualquer sistema computacional é, simplificadamente falando, composto de uma
matriz de linhas e colunas (veja figura I.42) onde em cada cruzamento de uma linha com uma coluna é
colocada uma chave acionada por uma das teclas.
+5V
1
L
I
2
N
H
A
M-1
S
M
1
2
C
3
O
L
4
U
N-1
N
A
N
S
Figura I.42 - Esquema Interno de Teclado de Varredura
Um sistema muito utilizado para se identificar uma tecla acionada é a varredura de sinais nas
linhas enquanto se observa o nível das colunas. Este sistema de varredura consiste basicamente em se
colocar a cada intervalo de tempo uma das linhas em nível baixo e todas as outras em nível alto, ao
mesmo tempo que se verificam os níveis presentes nas colunas. A cada intervalo de tempo trocamos a
linha que receberá o nível baixo. Esta operação de sucessivamente ir-se colocando uma a uma as linhas
em nível baixo, como mostra a figura I.43, é denominada varredura ou "scan" do teclado.
___________________________________________________________________________________
I.58
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
LINHA 1
LINHA 2
LINHA 3
..
.
..
.
LINHA M-1
LINHA M
Figura I.43 - Varredura do Teclado
Se nenhuma tecla estiver pressionada em qualquer instante da varredura todas as colunas terão
nível alto, proveniente dos resistores de pull-up que estão ligados a + 5 V, como mostra a figura I.44.
+5V
1
L
I
1
1
2
N
H
0
M-1
A
1
M
1
S
1
1
1
2
C
O
1
3
L
1
N-1
U
N
A
N
S
Figura I.44
Ao pressionarmos uma tecla e ao chegar o instante da varredura na qual a linha a que pertence a
tecla pressionada for colocada em nível baixo, a coluna da tecla pressionada apresentará nível baixo,
como mostra a figura I.45.
___________________________________________________________________________________
I.59
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
+5V
1
1
L
I
0
2
N
H
A
1
M-1
S
1
M
1
1
1
2
C
1
0
3
O
L
1
4
U
N-1
N
A
1
N
S
Figura I.45
Portanto, se sabemos o instante da varredura, ou seja, qual linha está colocada em nível baixo, e
a coluna na qual está presente o nível baixo, podemos determinar com precisão qual foi a tecla
pressionada.
Nos sistemas computacionais, em geral, existem componentes dedicados que geram o sinal de
varredura e percebem uma tecla pressionada. Estes dispositivos, conhecidos como controladores de
teclado, após perceberem uma tecla pressionada, precisam informar ao processador através de um
código (diferente para cada tecla). Assim, o processador terá que ler o conteúdo deste dispositivo. Deve,
portanto, existir uma ligação entre o controlador de teclado e o processador. A figura I.46 mostra um
esquema simples de ligação de um controlador de teclado genérico e o processador.
Embora pudesse parecer que no barramento de dados as informações (códigos de teclas
pressionadas) devessem fluir apenas em um sentido (do controlador para o processador), também
existem condições onde o processador precisa escrever informações no controlador. Na inicialização do
sistema do processador precisa inicializar (escrever) alguns registradores internos ao controlador de
teclado, para fazer com que ele trabalhe no modo apropriado. Para estes ciclos de escrita é necessário o
sinal de WR . No entanto existe ainda uma dúvida: Como o controlador de teclado informa ao
processador que existe uma tecla pressionada ? Existe outros sinais interligando o controlador de
teclado e o processador, este sinais fazem parte da estrutura de interrupção. O funcionamento desta
estrutura é explicado nos items I.6 e II.8.
___________________________________________________________________________________
I.60
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
+5V
P
R
O
C
E
S
S
A
D
O
R
D0
D0
D1
D1
..
.
D2
D7
D2
CONTROLADOR
D7
DE
TECLADO
RD
RD
WR
WR
TECLADO
Figura I.46
O sistema controlador de teclado é um exemplo de dispositivo de entrada. Veremos agora um
exemplo de dispositivo de saída, a Impressora.
As impressoras paralelas normalmente utilizadas em sistemas computacionais devem receber do
processador os códigos de 8 bits correspondentes ( segundo a tabela ASCII) aos caracteres a serem
impressos. Estes códigos (nas impressoras paralelas) são transferidos byte a byte através de 8 linhas que
interligam o processador e a impressora, como visto na figura I.47
P
R
D0
D0
O
D1
D1
C
D2
D2
E
D3
D3
S
D4
D4
S
A
D5
D6
D5
D6
D
D7
D7
IMPRESSORA
O
R
Figura I.47
Como os códigos são colocados sucessivamente nas 8 linhas que interligam o processador e a
impressora, é necessário que o processador informe à impressora toda vez que um novo código é
colocado no barramento. Para este fim, uma nova linha, conhecida como strobe ( STB ), é adicionada às
8 iniciais. O processador envia um pulso negativo através da linha STB para indicar à impressora que
existe no barramento o código de um caracter a ser impresso. A figura I.48 mostra a ligação entre o
___________________________________________________________________________________
I.61
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
processador e a impressora com a inserção da linha de STB e o diagrama de tempo da impressão de dois
caracteres.
P
R
O
C
E
S
S
A
D
O
R
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
IMPRESSORA
D4
D5
D6
D7
STB
STB
Esquema de Ligação
D0 - D7
CÓDIGO DE UM CARACTER
CÓDIGO DE OUTRO CARACTER
STB
Diagrama de Tempo
Figura I.48
Outra questão importante a ser considerada é que a velocidade de impressão é muito menor que
a velocidade de processamento do computador. Durante o tempo que a impressora estiver ocupada com
a impressão de um caracter, ela não poderá receber nenhum outro caracter.
Assim, é necessário que a impressora avise ao processador que ela está ocupada e que, portanto,
o processador não poderá enviar um novo caracter. Para este fim existe uma outra linha interligando o
processador e a impressora, conhecida como BUSY. O sinal de BUSY é colocado em nível alto pela
impressora para avisar ao processador que a impressora está ocupada.
Na verdade toda impressora possui memória, também chamada de buffer, para armazenar os
caracteres recebidos do microcomputador. Então os circuitos lógicos de uma impressora realizam duas
funções simultâneas. A primeira destas funções é a de receber os bytes enviados na velocidade rápida do
microcomputador e armazenar no buffer. A segunda é a de ir lendo o buffer e comandando as ações
mecânicas necessárias a impressão de cada caracter.
Como existe uma grande diferença de velocidades de entrada e de saída dos dados no buffer da
impressora, poderá haver um transbordo de dados assim como pode acontecer um transbordo de água de
uma caixa d’água em que a velocidade de entrada de água é maior do que a velocidade de saída. O sinal
de BUSY funciona como se fosse uma boia de caixa d’água que fecha a entrada da água assim que o
nível chega próximo ao seu limite máximo. Assim quando o buffer da impressora está cheio a mesma
sinaliza com o sinal BUSY para impedir que o microcomputador envie mais caracteres, o que causaria
um transbordo. A figura I.49 mostra o esquema de ligação e o diagrama de tempo levando em
consideração a inclusão do sinal de BUSY. Observe que o sinal de BUSY ficará ativo o tempo
necessário a impressão de um conjunto de caracteres de forma a liberar um conjunto de posições de
memória para receber novos caracteres. Se ao invés disto a impressora mantivesse o sinal de BUSY
___________________________________________________________________________________
I.62
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
ativo somente o tempo necessário para impressão de um caracter, logo após o recebimento do primeiro
caracter a impressora sinalizaria BUSY novamente pois o buffer estaria novamente cheio.
Permanecendo o sinal de BUSY ativado o tempo necessário a impressão de um conjunto de caracteres o
sistema de comunicação micro-impressora trabalha em rajadas (forma mais eficiente) e não byte a byte.
Podemos comparar esta maior eficiência com a situação de um funcionário mais experiente ajudando
um funcionário novato a realizar uma determinada tarefa. O funcionário novato a cada vez que tem uma
dúvida ao invés de interromper o experiente anota as dúvidas e interrompe o funcionário experiente
apenas duas vezer ao dia e tira todas as dúvidas anotadas. Assim também para o computador é melhor
que a impressora fique BUSY por um tempo maior, tempo no qual o microcomputador poderá realizar
outras tarefas, e depois descarregue de uma só vez uma rajada de caracteres.
P
R
O
D0
D0
C
D1
D2
D1
D2
E
S
S
D3
D4
D5
D3
IMPRESSORA
D4
D5
A
D
O
D6
D7
D6
D7
STB
STB
R
BUSY
BUSY
Esquema de Ligação
D0 - D7
código de um caracter
código de um caracter
cód
STB
BUSY
Tempo necessário à
impressão de um caracter
Tempo necessário à
impressão de um caracter
Diagrama de Tempo do modo byte a byte
D0 - D7
primeiro caracter
da rajada
código do caracter que
preenche o buffer
último caracter
da rajada
STB
BUSY
Tempo necessário à impressão
de um conjunto de caracteres
Diagrama de Tempo do modo rajada
Figura I.49
___________________________________________________________________________________
I.63
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
Na realidade existem outros sinais (que na figura I.48 estão representados pelas linhas
tracejadas), mas estes dois ( STB e BUSY) são os fundamentais.
Por questões de segurança, capacidade de fornecimento de corrente e principalmente por não
terem os processadores a capacidade de controlar estes sinais adicionais, é colocado, entre a impressora
e o processador, um dispositivo conhecido vulgarmente por porta paralela ou pela sigla LPT (Line
PrinTer). A figura I.50 mostra o esquema de ligação do processador com a porta paralela e desta com a
impressora.
P
R
O
C
E
S
S
A
D
O
R
D0
D0
D1
D2
D1
D2
D3
D3
D4
D5
D4
D5
D6
D6
D7
D7
WR
WR
RD
RD
P
O
R
T
A
P
A
R
A
L
E
L
A
D0
D0
D1
D2
D1
D2
D3
D3
D4
D5
D4
D5
D6
D6
D7
D7
STB
BUSY
..
.
IMPRESSORA
STB
BUSY
Figura I.50
Basta que o processador escreva o código do caracter a ser impresso na porta paralela, que esta
controlará os sinais de strobe e busy e os outros não mencionados aqui.
É óbvio que a porta paralela precisa "avisar" ao processador quando a impressora está ocupada
(BUSY). Veremos mais adiante que normalmente é utilizada uma estrutura de interrupção para controlar
este tipo de aviso.
Na verdade a porta paralela também pode ser lida pelo processador. Por este motivo é que o
sinal de RD também está ligado a porta paralela. O byte que o processador pode ler da porta paralela
indica o estado da impressora e é conhecido como registrador de status da impressora (printer status
register). Cada bit deste registrador de status contém uma informação sobre o estado da impressora. Por
exemplo, no caso dos computadores da linha IBM PC, os bits do registrador de status tem as funções
mostradas na figura I.51. Portanto um programa pode ficar, de tempos em tempos, lendo na porta
paralela este registrador de status e observando pelo bit 7 se a impressora está ocupada ou não.
REGISTRADOR DE STATUS
7
6 5 4 3 2 1 0
1 = erro
1 = impressora em linha
1 = impressora sem papel
0 = impressora ocupada (busy)
Figura I.51
___________________________________________________________________________________
I.64
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
A figura I.52 mostra um sistema composto de uma porta paralela ligada a uma impressora e um
controlador de teclado ligado a um teclado.
P
R
O
C
E
S
S
A
D
O
R
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
WR
WR
RD
RD
P
O
R
T
A
P
A
R
A
L
E
L
A
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
IMPRESSORA
D4
D5
D6
D7
STB
BUSY
STB
BUSY
CS
A0 .. .A15
+5V
...
CIRCUITO
DE
SELEÇÃO
D0
D1
D2
D3
D4
D5
D6
D7
WR
RD
C
O
N
T
R
O
L
A
D
O
R
CS
D
E
T
E
C
L
A
D
O
TECLADO
Figura I.52
No caso do sistema da figura I.52 é necessário um circuito selecionador, como o visto na página
I.33 (Associação de Chips de SRAM) pois ao processador executar um ciclo de leitura é preciso
especificar qual dos dispositivos (controlador de teclado ou porta paralela) deverá responder a este
pedido. O circuito de seleção então, a partir do endereço gerado pelo processador que está presente no
barramento de endereços (A0 ... A15), irá ativar uma de suas saídas em nível baixo, selecionando ou a
porta paralela ou o controlador de teclado. Portanto existe um endereço que seleciona a porta paralela e
um endereço que seleciona o controlador de teclado.
___________________________________________________________________________________
I.65
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
Portanto, se o processador "deseja" ler o código de uma tecla pressionada ele realizará um ciclo
de leitura especificando um endereço que ao entrar no circuito de seleção irá resultar em um nível baixo
na saída que está ligada ao pino de CS (Chip Select) do controlador de teclado. Se, em outro momento,
o processador "deseja" ler o registrador de status da impressora ele irá gerar um ciclo de leitura com um
endereço que fará com que a saída do circuito de seleção que está ligada ao pino CS (Chip Select) da
porta paralela seja ativada.
Em outro exemplo podemos ter um sistema com 2 impressoras paralelas com se vê na figura
I.53. O circuito selecionador de dispositivos de saída irá selecionar a partir das linhas de endereço
(A0...A15) do processador qual das portas paralelas (LPT1 ou LPT2) será escrita. Portanto, cada porta
paralela terá um endereço fixo para ser acessada.
P
R
O
C
E
S
S
A
D
O
R
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
WR
WR
RD
RD
P
O
R
T
A
P
A
R
A
L
E
L
A
D0
D1
D2
D3
D4
D5
D6
D7
STB
BUSY
D0
D1
D2
D3
IMPRESSORA
D4
D5
D6
D7
STB
BUSY
A0 ... A15
CS
CIRCUITO
DE
SELEÇÃO
D0
D1
D2
D3
D4
D5
D6
D7
WR
LPT1
P
O
R
T
A
P
A
R
A
L
E
L
A
D0
D1
D2
D3
D4
D5
D6
D7
STB
BUSY
D0
D1
D2
D3
IMPRESSORA
D4
D5
D6
D7
STB
BUSY
RD
CS
LPT2
Figura I.53
___________________________________________________________________________________
I.66
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
I.7. ARQUITETURA INTERNA SIMPLIFICADA DE UM
MICROPROCESSADOR GENÉRICO:
P. C.
REGISTRADORES
DE USO GERAL
S. P.
REG. ENDs.
BUS DE END.
BARRAMENTO INTERNO
OP. 1
U
L
OP.2
A
REG. DADOS
REG. STATUS
...
.
.
.
I.R.
ULC
BUS DE DADOS
CF PF ZF SF
...
BUS DE CONTROLE
Figura I.54 - Arquitetura Interna Simplificada de um Microprocessador Genérico
De maneira geral, todos os microprocessadores, dos mais simples aos mais complexos, possuem
cinco componentes básicos:
1. Unidade Lógica Aritmética (ULA)
2. Registradores
3. Barramento(s) Interno(s)
4. Barramentos Externos
5. Unidade Lógica de Controle (ULC)
I.7.1. Unidade Lógica Aritmética (ULA):
A ULA realiza todas as operações aritméticas (soma, subtração etc.) e lógicas (AND, OR, XOR
etc.). A operação a ser efetuada é determinada pela instrução que está sendo executada pela ULC.
Os valores a serem efetuados, que podem estar em qualquer registrador de uso geral ou posição
de memória externa, são transferidos para dois registradores (posições de memória interna) que na
arquitetura simplificada denominamos de Op. 1 e Op. 2.
O resultado da operação pode ser colocado em qualquer um dos registradores de uso geral ou
em uma posição de memória externa. O resultado da operação afeta os bits do registrador de status
(flags), que por sua vez podem alterar a ULC na execução das próximas instruções.
___________________________________________________________________________________
I.67
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
I.7.2. Registradores:
Os registradores são posições de memória internas ao microprocessador. Na arquitetura
simplificada da figura I.54, cada retângulo representa uma posição de memória interna que pode ter 8,
16 ou mais bits, dependendo do microprocessador em questão.
Existem dois tipos básicos de registradores:
- Registradores de Uso Especial
- Registradores de Uso Geral.
I.7.2.1. Registradores de Uso Especial:
Este tipo de registrador cumpre funções específicas dentro do microprocessador. Na figura I.54
estão
assinalados
os
Registradores
de
Uso
Especial
mais
comumente
encontrados
em
microprocessadores, tais como: PC (Program Counter), SP (Stack Pointer) etc. A seguir iremos analisar
os registradores de Uso Especial presentes na arquitetura simplificada de nosso microprocessador
genérico.
I.7.2.1.1. Program Counter (PC) (Apontador de Programa):
O PC é um registrador que tem como função guardar o endereço da memória onde estão
armazenados os códigos de máquina que serão lidos e executados pelo processador. Cada vez que o
processador vai buscar um código de máquina na memória, o conteúdo do registrador PC é transferido
através do Barramento Interno para o Registrador de Endereço que está diretamente ligado ao
barramento de endereços. Normalmente, após a execução da instrução o PC é incrementado para
apontar a próxima instrução a ser lida e executada.
I.7.2.1.2. Stack Pointer (SP) (Apontador de Pilha):
O SP contém um endereço de memória que corresponde ao topo de uma "pilha". A pilha é uma
área de memória usada para armazenar dados que serão retirados na seqüência inversa em que foram
armazenados, como visto na figura I.55.
COLOCAÇÃO NA PILHA
DADO C
SP
SP
SP
DADO A
DADO B
DADO A
DADO B
DADO A
RETIRADA DA PILHA
DADO C
SP
DADO B
DADO A
DADO B
SP
DADO A
SP
DADO A
Figura I.55
___________________________________________________________________________________
I.68
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
É na pilha que são armazenados o endereço de retorno e o "contexto" do microprocessador
quando o mesmo recebe um pedido de interrupção. Por "contexto" entende-se o conteúdo de todos os
registradores que estão em uso quando do pedido de interrupção.
No item I.7 iremos analisar detalhadamente o funcionamento da pilha.
I.7.2.1.3. Registrador de Endereço:
O Registrador de Endereço está ligado diretamente aos pinos do barramento de endereços. É no
Registrador de Endereço que o microprocessador coloca o endereço de uma posição de memória ou de
um dispositivo de entrada ou saída (I/O), que será lida ou escrita.
I.7.2.1.4. Registrador de Dados:
Este registrador está ligado diretamente aos pinos da Via de Dados. É através dele que o
microprocessador escreve ou lê um byte da memória ou I/O. É neste registrador que é colocado o dado a
ser transferido para memória ou I/O (ciclo de escrita). Quando o processador realiza um ciclo de leitura
de memória ou I/O, o dado capturado pelo processador é armazenado inicialmente no registrador de
dados antes de ser transferido para o registrador de destino.
I.7.2.1.5. Instruction Register (IR) (Registrador de Instrução):
É neste registrador que são colocados os códigos de máquina a serem interpretados e executados
pela ULC.
I.7.2.1.6. Registrador de Status ou Flags:
O registrador de status, também conhecido como flags, tem seus bits afetados pelas operações
aritméticas e lógicas. Cada um destes bits é chamado de flag (que em português significa indicador ou
bandeira) e tem um significado/função diferente.
REGISTRADOR DE SATUS
...
CF
PF
ZF
SF
...
Figura I.56
Como exemplo de flags geralmente encontrados nos registradores de status de todos os
microprocessadores, temos:
Carry Flag (CF):
O carry flag (indicador de vai-um), nas operações de soma, um vai-um a partir do bit mais
significativo do resultado e nas operações de subtração indica um "pedido de empréstimo" (borrow) a
partir do bit mais significativo do resultado.
___________________________________________________________________________________
I.69
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
Geralmente as operações de rotação podem transferir para este flag os bits de registradores ou de
posições de memória.
Parity Flag (PF):
O parity flag (indicador de paridade) indica a paridade, ou seja, se o número de bits 1 do
resultado é par ou ímpar.
Zero Flag (ZF):
O zero flag (indicador de zero) indica quando o resultado de uma operação da ULA é zero.
Sign Flag (SF):
O sign flag (indicador de sinal) indica se o resultado de uma operação é positivo (bit mais
significativo igual a zero) ou negativo (bit mais significativo igual a um).
I.7.2.2. Registradores de Uso Geral:
Os Registradores de Uso Geral podem ser utilizados pelo programador para armazenar dados
intermediários de operações. Em algumas instruções, também estes registradores podem cumprir
funções específicas.
I.7.3. Barramento Interno:
O Barramento Interno é por onde fluem os dados que são transferidos entre os registradores
internos.
I.7.4. Barramentos Externos:
É através destes barramentos, também conhecidos como buses (plural de bus) ou vias, que o
microprocessador se relaciona com o resto do sistema.(memória e dispositivos de I/O).
Existem três diferentes tipos de barramentos: Barramento de Endereços, Barramento de Dados e
Barramento de Controle.
I.7.4.1. Barramento de Endereços:
O barramento de endereços é utilizado para selecionar a posição de memória ou de dispositivo
de I/O que o processador deseja acessar (escrever ou ler). O tamanho (número de linhas) do barramento
de endereços define a capacidade de endereçamento do processador. Se o número de linhas do
barramento de endereços for n, então a capacidade de endereçamento é de 2n.
O barramento de endereços é unidirecional, pois o endereço sempre é colocado pelo
processador, ou seja, a direção é do processador para a memória ou dispositivos de I/O.
I.7.4.2. Barramento de Dados:
O barramento de dados é uma via bidirecional através da qual fluem as instruções e dados.
Como esta via é bidirecional, os dados tanto podem fluir do processador para a memória ou dispositivos
de I/O (ciclo de escrita) como podem fluir da memória ou dispositivos de I/O para o processador (ciclo
de leitura). A figura I.57 mostra o esquema dos ciclos de leitura (read) e escrita (write). O tamanho do
___________________________________________________________________________________
I.70
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
barramento de dados, do barramento interno e da ULA define a categoria do microprocessador, isto é:
processadores com barramentos de dados de 8 bits (1 byte) são considerados processadores de 8 bits
(p.ex. 8085, Z80, 8031 etc.); processadores com barramento de dados de 16 bits são considerados
processadores de 16 bits (p.ex. 8086, 68000 etc.). O processador 8088 é considerado um processador de
16 bits pois apesar de ter um barramento de dados de 8 bits, possui barramento interno e ULA de 16
bits.
BUS DE DADOS
MEMÓRIA
OU
DISPOSITIVO
I/O
BUS DE DADOS
MEMÓRIA
OU
DISPOSITIVO
I/O
CICLO DE
LEITURA
PROCESSADOR
(READ)
CICLO DE
ESCRITA
PROCESSADOR
(WRITE)
Figura I.57
I.7.4.3. Barramento de Controle:
O barramento de controle contém os sinais que controlam o fluxo de dados entre o processador e
a memória ou dispositivos de I/O. Estes sinais definem quando, em que direção (leitura ou escrita) e
para onde vão ou de onde vêm os dados ou instruções. Os sinais de controle mais comummente
encontrados em barramentos de controle de microprocessadores em geral são:
Read ( RD ) (Leitura) - Quando o processador coloca esta linha de saída em nível baixo, significa que
ele quer receber pelo barramento de dados o dado que está na memória ou em um dispositivo de I/O,
endereçado pelo barramento de endereços.
Write ( WR ) (Escrita) - De forma similar quando o processador coloca esta linha de saída em nível
baixo, significa que o barramento de dados tem um dado a ser colocado em uma posição de memória ou
em um dispositivo de I/O, endereçado pelo barramento de endereços.
Memória / Dispositivo de I/O ( M / IO ) - Este sinal de saída determina se o que está presente no
barramento de endereços é um endereço de memória ou de dispositivo de I/O. Geralmente quando está
em nível alto indica acesso de dispositivo de I/O e quando em nível baixo indica acesso de memória.
Podemos, portanto, resumir em um quadro (figura I.58) as cinco situações na relação entre o
processador, a memória e os dispositivos de I/O.
___________________________________________________________________________________
I.71
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
WR
SITUAÇÃO
0
RD
1
M / IO
1
Escrita em dispositivo de I/O
1
0
1
Leitura de dispositivo de I/O
0
1
0
Escrita em memória
1
0
0
Leitura de memória
1
1
X
Não há acesso externo
Figura I.58
As situações que contêm WR = 0 e RD = 0 não estão incluídas na tabela pois não são
permitidas pelo hardware do microprocessador, já que resultariam em um conflito no barramento de
dados. A letra "X" na tabela indica um "don't care" (tanto faz), ou seja, o "X" tanto pode ser "0" como
pode ser "1".
A figura I.59 mostra o esquema de um sistema composto por um processador com 20 linhas de
endereços e 8 linhas de dados, memórias, porta paralela e controlador de teclado. Como as memórias
utilizadas são de 32 K posições, as linhas de A0 a A14 são ligadas diretamente às memórias. As linhas
de A15 à A19 em conjunto com a linha de M / IO , são entradas do circuito de seleção de memória, que
irá habilitar um dos sinais de CS de uma das duas memórias. Existem ainda um outro circuito de
seleção reservado só para dispositivos de entrada e saída (I/O), que tem como entradas as linhas A0, A1
e A2 do barramento de endereços e o sinal de M / IO e como saídas os sinais que selecionarão um dos
dois dispositivos de I/O (controlador de teclado e porta paralela).
O sinal de M / IO sendo entrada dos dois circuitos selecionadores age como habilitador destes
circuitos. Portanto se M / IO = 1 então apenas o circuito selecionador de dispositivos de I/O estará
habilitado e um dos dispositivos de I/O será selecionado , de acordo com o conteúdo do barramento de
endereço. De outra feita se M / IO = 0 apenas o circuito de seleção de memória estará habilitado e o
chip de memória bem como a posição (gaveta) dentro deste chip a ser acessada será definida pela
conteúdo do barramento de endereços.
Como veremos mais adiante existem instruções que acessam memória e instruções que acessam
dispositivos de entrada e saída. As primeiras geram ciclo de escrita ( WR = 0) ou ciclo de leitura ( RD =
0) com o sinal de M / IO em nível baixo, as seguintes geram estes mesmos ciclos com o sinal de
M / IO em nível alto. O motivo pelo qual é necessário diferenciar um acesso de memória de um acesso
de I/O é explicado no exemplo a seguir:
Se o endereço que irá selecionar a controladora de teclado for 303h, quando a instrução que fará
uma leitura nesta controladora colocar no barramento de endereços a seqüência de zeros e uns que
forma o valor 303h (1100000011) este mesmo endereço estará presente também nos pinos das
memórias. Quando então o processador der o pulso para zero no pino de RD , se não houvesse o sinal de
M / IO para habilitar apenas o circuito de seleção de I/O, sem habilitar o de memória, tanto o conteúdo
___________________________________________________________________________________
I.72
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
do controlador de teclado (código da tecla pressionada) quanto o conteúdo da posição 303h da memória
seriam colados no barramento, gerando um conflito.
A0
.
.
.
A14
..
.
..
.
6
D0
2
D1
2
D7
5
RD
6
WR
CS
A19
..
.
DE
A0
.
.
.
A14
SELEÇÃO
D0
2
DE
D1
2
D7
5
CIRCUITO
A15
M/ IO
MEMÓRIA
RD
6
6
WR
CS
.. .A0
. ..
A14
.. ..A15
. .
A19
P
R
O
C
E
S
S
A
D
O
R
D0
D1
D2
D3
D4
D5
D6
D7
M / IO
D0
D1
D2
D3
D4
D5
D6
D7
WR
WR
RD
RD
P
O
R
T
A
P
A
R
A
L
E
L
A
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
STB
BUSY
STB
BUSY
I
M
P
R
E
S
S
O
R
A
CS
+5V
A0
..
.
CIRCUITO
DE
A14
SELEÇÃO
DE
M/IO
I/O
D0
D1
D2
D3
D4
D5
D6
D7
WR
RD
CS
C
O
N
T
R
O
L
A
D
O
R
D
E
T
E
C
L
A
D
O
TECLADO
Figura I.59
___________________________________________________________________________________
I.73
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
Interrupt Request (INTR) (Pedido de Interrupção) - É um sinal de entrada que é colocado em nível
alto por algum dispositivo de I/O no sentido de solicitar que o processador interrompa o que está
fazendo para atendê-lo.
Quando o processador está predisposto a aceitar está interrupção, ele termina a execução da
instrução em curso, salva na pilha os dados que ele estava manipulando e o endereço da próxima
instrução e desvia para um endereço geralmente preestabelecido. Neste endereço deverá ter sido
carregada a rotina de tratamento do dispositivo que solicitou a interrupção.
Interrupt Acknowledge ( INTA ) (Reconhecimento de Interrupção) - Este sinal de saída é colocado
em nível baixo pelo processador para informar ao dispositivo de I/O que o processador aceitou o pedido
de interrupção. Em alguns processadores, como por exemplo os da família 86, este sinal funciona como
um sinal de leitura da identificação do dispositivo que solicitou a interrupção. Ao receber o pulso de
INTA o dispositivo de I/O coloca no barramento de dados um vetor que aponta a rotina de tratamento.
As ações ocorrem como no diagrama de tempo mostrado na figura I.60.
PEDIDO DE INTERRUPÇÃO FEITO POR UM DISPOSITIVO DE I/O
INTR
ACEITAÇÃO DA INTERRUPÇÃO FEITA PELO PROCESSADOR
INTA
BUS DE
DADOS
ENDEREÇO DA ROTINA DE
TRATAMENTO DE INTERRUPÇÃO
COLOCADA PELO DISP. DE I/O
Figura I.60
Um exemplo de dispositivo de I/O que utiliza interrupção é o controlador de teclado, como visto
na figura I.61.
Ao detectar uma tecla pressionada o controlador ativa a linha de solicitação de interrupção que
fará com que o processador termine a execução da instrução em curso, guarde na pilha o endereço da
próxima instrução que seria executada caso não fosse requisitada uma interrupção e responda com o
sinal de INTA . O controlador de teclado colocará no barramento de dados um valor que indica o tipo
da interrupção, que por sua vez indica em que endereço o processador irá encontrar a rotina de
tratamento de interrupção de teclado. Neste caso esta rotina irá ler o controlador de teclado para obter
deste o código do caracter que foi digitado. Ao final desta rotina o processador irá retornar para o ponto
onde ele estava no momento em que foi interrompido. Este retorno só é possível porque antes de atender
a interrupção o processador salvou na pilha o endereço da instrução seguinte.
___________________________________________________________________________________
I.74
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
+5V
P
R
O
C
E
S
S
A
D
O
R
D0
D0
D1
D1
D2
..
.
D7
D2
CONTROLADOR
DE
D7
TECLADO
RD
RD
WR
WR
INTR
INTR
INTA
INTA
TECLADO
Figura I.61
No item II.8, iremos analisar como se processam as interrupções nos processadores da família
86.
I.7.5. Unidade Lógica de Controle (ULC):
A ULC decodifica (interpreta) o código de máquina colocado no Registrador de Instrução (IR) e
comanda todas as ações dentro do microprocessador no sentido de executar a instrução que este código
representa. Um sinal de clock, advindo geralmente de um oscilador a cristal, sincroniza as ações da
ULC
___________________________________________________________________________________
I.75
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
I.8. CODIFICAÇÃO E EXECUÇÃO DE PROGRAMAS:
Como mencionado anteriormente os programas nada mais são do que sequências de códigos
binários (usualmente chamados de códigos de máquina) colocados na memória e buscados pelo
processador para serem executados. Veremos agora como se dão a elaboração, codificação e execução
de programas.
Para exemplificar, podemos querer que o nosso microprocessador genérico execute uma função
simples, tal como somar dois números (p. ex. 3 e 5).
O programador pode escolher qualquer um dos vários compiladores existentes (Basic, Fortran,
Pascal, C etc.) ou utilizar um assembler (montador).
O assembler é um programa que traduz as instruções escritas de forma mnemônica para os
respectivos códigos de máquina. Como o próprio nome já diz, uma forma mnemônica de representarmos
uma instrução é através de siglas que lembrem o significado da ação que esta instrução realiza. Chamase de linguagem ASSEMBLY a série de mnemônicos relativos a um determinado microprocessador.
Portanto, um programa escrito de forma mnemônica é um programa escrito em linguagem ASSEMBLY.
Como exemplo de mnemônicos veremos as instruções de transferência de dados e soma
(necessárias para escrevermos o programa da soma de dois números). Os códigos utilizados como
exemplo serão os códigos do microprocessador 8088 da Intel.
A instrução de transferência geralmente possui o mnemônico MOV (do verbo inglês move, que
significa mover). A instrução MOV requer dois operandos, o operando-destino e o operando-fonte. O
operando-fonte indica onde está o byte (ou word) a ser transferido. O operando-destino indica para onde
está indo este byte (ou word).
A instrução de soma geralmente possui o mnemônico ADD (do verbo inglês add, que significa
somar). A instrução ADD também requer dois operandos que indicam onde estão os dois dados (bytes,
words etc.) a serem somados. Normalmente, ao final da operação de soma o resultado é colocado na
posição indicada pelo primeiro operando da instrução.
Em linguagem assembly o nosso programa é como visto abaixo:
MOV AL,3
ADD AL,5
Este programa deverá ser editado em um editor de textos que gerará um arquivo-texto (figura
I.62) onde cada caracter ocupa um byte, segundo a tabela ASCII. O Anexo D trás a tabela ASCII
completa..
___________________________________________________________________________________
I.76
Conceitos Gerais de Sistemas Computacionais
___________________________________________________________________________________
4D
M
44
D
4F
O
44
D
56
V
20
20
41
A
41
A
4C
L
4C
L
2C
,
2C
,
35
5
33
3
0D
CR (Retorno do Carro)
0D
CR (Retorno do Carro)
0A
LF (Mudança de Linha)
0A
LF (Mudança de Linha)
41
A
Figura I.62
Para criar (montar) um arquivo contendo os bytes de código de máquina é necessário passar este
arquivo texto por um programa montador (assembler), como visto na figura I.63. O arquivo-texto é
conhecido como programa-fonte e o arquivo contendo os bytes de código de máquina é conhecido como
programa-objeto.
PROGRAMA
FONTE
(ARQUIVO TEXTO)
MONTADOR
(ASSEMBLER)
PROGRAMA OBJETO
(ARQUIVO COM
CÓDIGOS DE MÁQUINA )
Figura I.63
A tabela que relaciona cada instrução com o(s) byte(s) de código correspondente é fornecida
pelo fabricante do microprocessador. As instruções utilizadas no programa da soma de dois números
com os respectivos códigos de máquina para o microprocessador 8088 são dadas na tabela mostrada na
figura I.64.
INSTRUÇÃO (Linguagem Assembly)
CÓDIGO DE MÁQUINA
MOV AL,<valor de 8 bits>
B0 <valor de 8 bits>
ADD AL,<valor de 8 bits>
04 <valor de 8 bits>
Figura I.64
Portanto, quando o programa-fonte passar pelo montador será gerado um programa-objeto que
será um arquivo contendo os seguintes bytes mostrados na figura I.65:
___________________________________________________________________________________
I.77
Arquitetura de Microcomputadores
Victor Paulo Peçanha Esteves
___________________________________________________________________________________
Programa-fonte:
4D
M
4F
O
56
V
Programa-objeto:
MOV AL,
→
PROGRAMA
MONTADOR
20
41
A
4C
L
2C
,
33
3
0D
CR (Retorno do Carro)
0A
LF (Mudança de Linha)
41
A
44
D
44
D
→
B0
03
ADD AL,
04
5
05
20
41
A
4C
L
2C
,
35
5
0D
CR (Retorno do Carro)
0A
LF (Mudança de Linha)
Figura I.65
___________________________________________________________________________________
I.78
Download