Documente Academic
Documente Profesional
Documente Cultură
DE COMPUTADORES
Janeiro - 2004
DE COMPUTADORES__________________________________________________________ 1
2
3.2.1 Tabela Verdade _____________________________________________________ 25
3.2.2 Operadores Lógicos __________________________________________________ 25
3.2.3 Operação Lógica ou Porta AND (E)_____________________________________ 26
3.2.4 Porta OR (OU) ______________________________________________________ 27
3.2.5 Porta NOT (Inversor) ________________________________________________ 27
3.2.5 Porta NAND – NOT AND _____________________________________________ 28
3.2.6 Porta NOR – NOT OR________________________________________________ 28
3.2.7 Porta XOR – EXCLUSIVE OR ________________________________________ 28
3
5.6. FUNCIONAMENTO DA UCP – O CICLO DA INSTRUÇÃO: ____________________ 69
7.2. MOUSE:__________________________________________________________________ 96
7.4. IMPRESSORA:____________________________________________________________ 98
4
Capítulo 1 – Evolução Histórica dos Computadores
1.1 INTRODUÇÃO:
1.1.1 Conceituação:
“Dado pode ser definido como a matéria-prima originalmente obtida de uma ou mais fontes (etapa
da coleta).”
1.1.2 Sistemas:
“Sistema de informação de uma empresa pode ser conceituado como o conjunto de métodos,
processos e equipamentos necessários para se obter, processar e utilizar informações dentro da
empresa.”
Os sistemas de informações se desenvolvem segundo duas dimensões:
a) componentes da organização: diversos setores funcionais;
b) nível de decisão: operacional, gerencial e alto nível da organização.
“Sistema de informações gerenciais (SIG) é o sistema que engloba todos os componentes e todos
os níveis de decisão de uma organização.”
5
1.1.3 Sistemas de Computação:
Essa linguagem também chamada de linguagem de máquina, é, para os seres humanos, tediosa de
manipular, difícil de compreender e fácil de acarretar erros. Por essa razão, foram desenvolvidas
outras linguagens, mais próximas do entendimento dos operadores, genericamente chamadas de
Linguagens de programação.
“Software consiste em programas, de qualquer tipo e em qualquer linguagem, que são introduzidos
na máquina para fazê-la trabalhar, passo a passo, e produzir algum trabalho.”
1.2 HISTÓRICO:
É comum encontrar uma divisão histórica da evolução dos computadores segundo o elemento
básico de sua organização: Válvulas, transistores, circuito integrado, pastilhas de alta e muito alta
integração.
6
1.2.2. Época dos dispositivos Eletromecânicos (1888-1930)
Com a invenção do motor elétrico surgiu uma grande quantidade de máquinas de somar acionadas
por motores elétricos, baseados no princípio de funcionamento da máquina de Pascal.
Em 1889, Hollerith desenvolveu o cartão perfurado para guardar dados e uma máquina tabuladora
mecânica, acionada por um motor elétrico, que contava, classificava e ordenava informações
armazenadas no cartão perfurado.
Em 1914, foi criada a IBM.
Até a década de 1980, os cartões perfurados foram um dos principais elementos de entrada de dados
dos computadores digitais, tais como IBM/360/370.
Em 1945 foi iniciada a construção do IAS (Von Neumann), que para os estudos de arquitetura de
computadores, ele é fundamental.
• Era constituído de quatro unidades principais: a memória, a UCP, a UC e dispositivos
de entrada e saída;
• memória de 1.000 posições, chamadas de palavras, cada uma podendo armazenar 40
dígitos binários (bits);
• tantos dados como instruções eram representados na forma binária r armazenados na
mesma memória;
Resumindo, o IAS possuía características de arquitetura que permaneceram ao longo do tempo. As
máquinas evoluíram consideravelmente em velocidade, capacidade de armazenamento,
miniaturização, consumo de energia e calor, mas a arquitetura básica permaneceu.
7
1.2.4.3. Terceira Geração: Computadores com Circuitos Integrados
Em Outubro de 1958, Jack Kilby, da Texas Instruments Co., colocou dois circuitos em uma só peça
de germânio. O dispositivo resultante era rudimentar e a interconexão tinha que ser realizadas por
fios externos, mas é reconhecido como o primeiro circuito integrado, CI, fabricado no mundo.
Robert Noyce utilizou tecnologia para integrar vários circuitos em uma só partilha de silício.
Em 1964, a IBM lançou a sua mais famosa família, a série 1360.
1.2.4.4. Quarta Geração: Computadores que utilizam VLSI (Very Large Scale Integration)
Integração em larga escala, caracteriza uma classe de dispositivos eletrônicos capazes de armazenar,
em um único invólucro, milhares e milhares de diminutos componentes.
8
Capítulo 2 – Sistemas de Numeração e Aritmética Computacional
Ou seja, eleva-se a base a converter à potência cujo valor é sua posição no número e multiplica-se
pelo símbolo.
Assim, de binário (base 2) para decimal (base 10), podemos fazer, por exemplo:
Ex1:
(100101)2 = 1 x 25 + 0 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20
= 32 + 0 + 0 + 4 + 0 + 1
= 37
Ex2:
(110,10)2 = 1 x 22 + 1 x 21 + 0 x 20 + 1 x 2-1 + 0 x 2-2
= 4 + 2 + 0 + 0,5 + 0
= 6,5
E de octal (base 8) para decimal:
Ex1: Ex2:
(473)8 = 4 x 82 + 7 x 81 + 3 x 80 (115,2)8 = 1 x 82 + 1 x 81 + 5 x 80 + 2 x 8-1
= 256 + 56 + 3 = 64 + 8 + 5 + 0,25
= 315 = 77,25
Para converter números da base 10 para outras bases, segue-se a seguinte regra:
parte inteira: divide-se o número a ser convertido pela base desejada; toma-se o quociente
resultante e divide-se novamente pela base até que o quociente seja zero; os restos das divisões
formam a parte inteira do número convertido; o primeiro resto representa o último dígito da parte
inteira do número; o último quociente representa o primeiro dígito da parte inteira;
parte fracionária: multiplica-se a parte fracionária do número a ser convertido pela base desejada;
toma-se a parte fracionária do número resultante e repete-se a operação; a parte inteira dos produtos
obtidos representam a parte fracionária do número procurado.
10
Basta converter cada três símbolos binários em um octal, partindo-se da vírgula. Caso faltem
símbolos para completar três, completa-se com zeros. Exemplo:
(010 101,110 1)2 = (25,64)8
O oposto do método anterior: pega-se cada valor e converte-se pela tabela em três símbolos
binários. Exemplo:
(356,71)8 = (11 101 110,111 001)2
Semelhante a conversão de octal, apenas pegando cada quatro símbolos binários para um
hexadecimal, convertidos a partir da tabela. Exemplo:
(1101 1010 0100,1010 11)2 = (DA4,AC)16
TABELA DE CONVERSÃO
DECIMAL BINÁRIO OCTAL HEXADECIMAL
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
Todo sistema de computação moderno é construído de modo a ser capaz de armazenar, interpretar e
manipular informações codificadas na forma binária. Além disso, muitos deles possuem a
capacidade de representar valores e efetuar operações aritméticas utilizando recursos de outras
11
bases da potência de 2 (mais especialmente as bases octal - base 8 e hexadecimal - base 16). Esse é
o caso, por exemplo, de representação e aritmética de números em ponto flutuante; alguns sistemas
de computação IBM empregam a base 16 quando efetuam aritmética em ponto flutuante.
Tendo em vista que toda representação de valores nos computadores digitais é realizada no sistema
binário, é obvio, então, que as operações aritméticas efetuadas pela máquina sejam também
realizadas na mesma base de representação, a base 2.
As operações de adição nas bases 2, 8 e 16 são realizadas de modo idêntico ao que estamos
acostumados a usar para a base 10, exceto no que refere à quantidade de algarismos disponíveis
(que, em cada base, é diferente). Esse fato acarreta diferença nos valores encontrados, mas não no
modo como as operações são realizadas.
A operação de soma de dois números em base 2 é efetuada de modo semelhante à soma decimal,
levando-se em conta, apenas, que só há dois algarismos disponíveis (0 e 1). Assim:
0+0=0
0+1=1
1+0=1
1 + 1 = 0, com "vai 1"
Ex1: Ex2:
111111 1 vai 1 1 11 1 vai 1
101101,01 11001,1101
+100111,11 +11100,1110
1010101,00 110110,1011
Do mesmo modo que operamos na base decimal, a soma é efetuada algarismo por algarismo, de
maneia que, quando somamos 1 com 1, obtemos como algarismo resultante 0 e sobra o valor 1 para
ser somado aos algarismos da parcela imediatamente seguinte à esquerda (valor de uma base - 2);
esse é o valor que denominamos "vai 1". Se os dois algarismos serem somados são de valor igual a
1, e ainda temos o "vai 1" para o algarismo da esquerda.
Resumindo:
1 + 1 + 1 = 1 com "vai 1";
1 + 0 + 1 = 0 com "vai 1".
Os procedimentos para adição nas bases 8(octal) e 16(hexadecimal) também não diferem da base
10, exceto quanto à quantidade de algarismos diferentes em cada base, conforme já mencionamos
anteriormente.
No caso da base octal, temos 7 algarismos disponíveis e, portanto, a soma de 2 algarismos
produzindo um valor superior a 7 implica a utilização do conceito de "vai 1" consiste em um valor
igual a 8 na ordem inferior).
Para a base 16, o "vai 1" somente ocorre quando a soma de 2 algarismos excede o valor da base, 16.
12
Ex1: Ex2: Ex3:
11 1 11 111 1
3463 422,74 27,416
+1524 +513,74 +55,635
5207 1136,70 105,253
A execução detalhada do algoritmo de soma para o Ex1 é apresentada a seguir, de modo que se
possa compreender melhor o processo:
3 + 4 = 7, valor colocado na coluna, em resultado;
6 + 2 = 8 (não há algarismo na base 8 - o maior algarismo é 7). Assim, temos: 8 = 8 + 0; o 0 é
colocado na coluna como resultado e o 8 é passado para a esquerda com valor 1 (é o "vai 1"), pois 8
unidades de uma ordem representam apenas 1 unidade de ordem superior - mais à esquerda);
4 + 5 +1 ("vai 1") = 10 (10=8 + 2); logo, é 2 na coluna de resultado e "vai 1" à esquerda,
representando o valor 8).
3 + 1 + 1 ("vai 1") = 5, colocado na coluna resultado.
O processo é semelhante para os exemplos (2) e (3).
A execução detalhada do algoritmo de soma para o Ex1 é apresentada a seguir, de modo que se
possa compreender melhor o processo:
10(A) + 11(B) = 21, que excede 5 da base 16. Logo, coloca-se 5 na linha "soma" e "vai 1" para a
esquerda;
7 + 3 + 1 = 11 (algarismo B);
8 + 4 = 12 (algarismo C);
14(E) + 5 = 19, que excede de 3 a base 16. Logo, coloca-se na linha "soma" e "vai 1" para a
esquerda;
10(A) + 11(B) + 1 = 22, que excede 6 da base 16 e "vai 1";
1 + 3 + 1 = 5.
Os procedimentos para execução da operação de subtração em bases 2, 8, 16, ou qualquer outra não
decimal seguem as mesmas regras adotadas para a base 10, variando, conforme já mencionado
diversas vezes, quanto à quantidade de algarismos existentes em cada base.
Essas regras são:
minuendo - subtraendo = diferença;
operações realizada algarismo por algarismo;
se o algarismo do minuendo for menor que o algarismo do subtraendo, adiciona-se ao minuendo um
valor igual ao da base (2 ou 8 ou 16). Esse valor corresponde a uma unidade subtraída (empréstimo)
do algarismo à esquerda do minuendo;
resultado é colocado na coluna, na parcela diferença.
13
A subtração em base 2, na forma convencional usada também no sistema decimal (minuendo -
subtraendo = diferença), é relativamente mais complicada por dispormos apenas dos algarismos 0 e
1. Assim, 0 menos 1 necessita de um "empréstimo" de um valor igual à base (no caso é 2), obtido
do primeiro algarismo diferente de zero, existente à esquerda. Se estivéssemos operando na base
decimal, o "empréstimo" seria de valor igual a 10.
Ex1: 2 Ex2: 1
002 02 022
101101 100110001
- 100111 - 010101101
000110 010000100
A execução detalhada do algoritmo de soma para o Ex2 é apresentada a seguir, de modo que se
possa compreender melhor o processo:
1–1=0
0–0=0
0 – 1 não é possível. Retira-se 1 da 5a ordem, a partir da direita, ficando 2 unidades na 4a ordem.
Dessas 2 unidades, retira-se 1 para a 3a ordem (nesta 3a ordem ficam, então, 2), restando 1 nesta 4a
ordem. Logo 2-1 = 1.
1–1=0
0–0=0
1–1=0
0–0=0
0 – 1 não é possível. Retira-se 1 da ordem à esquerda, que fica com zero e passa-se 2 para a direita.
Logo 2 – 1 = 1
0–0=0
Ex1: 8 Ex2: 88
248 48 6208
3526,53 7312
- 2764,36 - 3465
0542,15 3625
Ex1: 16 Ex2: 16
3B16 D16 3816A 16C16
4C7BE8 49AB,8D5
- 1E9 27A - FC8,AB8
2DE96E 39E2,E1D
14
Multiplicação de Números Binários
O processo de multiplicação é realizado na forma usualmente efetuada para a base 10, isto é, somas
sucessivas, visto que os algarismos do multiplicador somente podem ser 0 ou 1
Ex:
1011 multiplicando
x 101 multiplicador
1011 primeiro produto parcial
+0000 segundo produto parcial
1011 terceiro produto parcial
110111 produto final
*8 0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 10 12 14 16
3 0 3 6 11 14 17 22 25
4 0 4 10 14 20 24 30 34
5 0 5 12 17 24 31 36 43
6 0 6 14 22 30 36 44 52
7 0 7 16 25 34 43 52 61
Ex1: Ex2:
1 372
712 x 21
x 5 372
4362 664
7232
*16 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 A B C D E F
2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E
3 0 3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D
4 0 4 8 C
5 0 5 A F
6 0 6 C 12
7 0 7 E 15
8 0 8 10 18
15
9 0 9 12 1B
A 0 A 14 1E
B 0 B 16 21
C 0 C 18 24
D 0 D 1A 27
E 0 E 1C 2A D2
F 0 F 1E 2D D2 E1
Ex1: Ex2:
13 15BC
F3C x 8A
x 5 D958
4C2C ADE0
BB 7 58
Como nas demais operações aritméticas, a divisão binária é efetuada de modo semelhante à divisão
decimal, considerando-se apenas que:
0/1=0
1/1=1
e que a divisão por zero acarreta erro.
Podemos efetuar uma divisão binária pelo método comum, isto é, dividendo / divisor = quociente e
resto. Ou podemos realizá-la através de sucessivas subtrações, um processo mais simples de
implementação em circuitos digitais.
Nesse caso, o desejado quociente será a quantidade de vezes que o divisor poderá ser subtraído do
dividendo, até que se obtenha um quociente igual a zero.
O outro método consiste na execução do algoritmo a seguir apresentado, o qual é o detalhamento do
processo usado para executarmos essa operação no lápis e papel, na base decimal.
a partir da esquerda, avançam-se tantos algarismos quantos necessários para obter-se um valor igual
ou maior que o divisor; encontrado esse valor, registra-se 1 para o quociente; subtrai-se do valor
obtido no dividendo o valor do divisor (na divisão, como o quociente somente pode ser de valor
igual a 1, a subtração é sempre com o próprio valor do divisor); ao resultado acrescentam-se mais
algarismos do dividendo (se ainda houver algum), até obter-se um valor igual ou maior que o
divisor (como no item a). Se o(s) algarismo(s) for(em) zero, acrescenta-se zero(s) ao quociente;
repete-se o processo a partir do item 2, até que se esgotem os algarismos do dividendo.
Ex1: Ex2:
1002 / 102 = 102 100102 / 112 = 1102
10’0 10 100’1’0 11
-10 10 - 11 110
00 011
00
16
O Meio normal para representar números com sinal (+ ou -) é adicionando-se um BIT ao número,
chamado BIT de sinal (BIT mais representativo).
Convenção:
0: BIT DE SINAL que representa um número positivo;
1: BIT DE SINAL que representa um número negativo.
Ex:
0 0111 = (+7)10
1 0111 = (-7)10
↑
Bit de sinal
* Complemento Aritmético: É definido como sendo o que falta a um número para atingir o seu
módulo. Módulo de um número de um dígito é a quantidade de números diferentes que podemos
distinguir.
Ex: Sistema Decimal ⇒ Módulo 10
2⇒8
4⇒6
No sistema binário, composto por dois símbolos, isto é, os BITS 0 e 1, um é complemento do outro.
Figura 2.1
Portanto há 2n-1 – 1 números positivos (1 a 15), há 2n-1 números negativos (-1 a -16), e um zero.
Daí : Maior número positivo = 2n-1 – 1
Menor número negativo = -2n-1
Números reais são aqueles com parte fracionária (por exemplo, 57,683). Estamos acostumados a
representar esses números no formato parte inteira, vírgula (ou ponto), parte fracionária:
Esta representação, embora cômoda para cálculos no papel, não é adequada para processamento no
computador.
18
2.4.1 Representação em Ponto Flutuante:
Consideremos o número 57,683 usado acima como exemplo. Este número pode ser também
expresso como 57,683 x 100. E também poderia ser expresso com 57683 x 10-3 ou ainda 0,57683 x
102. Na realidade, qualquer número - inteiro ou fracionário - pode ser expresso neste formato
número x base expoente, em que variamos duas coisas: a posição da vírgula (que delimita a parte
fracionária) e a potência à qual elevamos a base. Essa representação é denominada representação
em ponto flutuante, pois o ponto varia sua posição, modificando, em conseqüência, o valor
representado.
Representação Normalizada:
Na representação normalizada, o número é preparado movendo a vírgula para a direita ou para a
esquerda de forma que o número seja menor que 1, o mais próximo possível de 1, obviamente
multiplicado por uma potência da base de forma a manter o valor do número. Em geral, isso
significa que o primeiro dígito significativo seguirá imediatamente ao ponto (ou vírgula).
Por exemplo:
57,68310 --> normalizando ==> 0,57683 x 102
0,000462810 --> normalizando ==> 0,4628 x 10-3
0,000010112 --> normalizando ==> 0,1011 x 2-4
De forma genérica, podemos representar a forma normalizada:
± número x base ±expoente
A parte do número representado dessa forma normalizada (os algarismos significativos), damos o
nome de mantissa.e portanto podemos representar:
± 0,M x B ± e
onde M é a mantissa, B é a base e e é o expoente.
Uma forma comum de representação de números reais no computador pode ser expressa como
segue:
Pode-se notar que a base não é expressa. Como a base, para cada computador, será sempre a
mesma, não há necessidade de apresentar a base na representação (no exemplo, a base é 2).
Dizemos que a base é implícita.
Para cada computador, o número total M de bits para a representação, o número de bits para SN
(sinal do número), para SE (sinal do expoente), para a mantissa e para o expoente, são pré-definidos
em projeto.
Assim, podemos concluir que, quanto maior o número de bits para o expoente, maior será a faixa de
números que o computador pode representar (maior alcance); e quanto maior o número de bits para
a mantissa, maior a precisão da representação. Porém, reduzindo-se a mantissa, perde-se precisão e
19
há maior a necessidade de truncar o número (truncar um número é cortar algarismos significativos
que não podem ser representados).
Considerando-se a representação acima, na base implícita 2:
maior expoente possível E: 2x - 1
maior mantissa possível: 2y - 1
maior número real: +(0.111...1 x 2E) sendo E = 2x - 1
menor número real: -(0.111...1 x 2E) sendo E = 2x - 1
menor real positivo: +(0.100...0 x 2 -E sendo E = 2x - 1
maior real negativo: -(0.100...0 x 2 -E sendo E = 2x - 1
Faixa de Representação
20
Se CARACTERÍSTICA = EXPOENTE + EXCESSO,
sendo M o número de bits para a representação da característica, temos:
0 = - 2M-1 + EXCESSO logo: EXCESSO = + 2M-1
sendo
SN = sinal do dado
CARACTERÍSTICA = o expoente, representado na forma de excesso de n, ou seja,
CARACTERÍSTICA = EXPOENTE + EXCESSO
No caso da IBM, o excesso é de 6410, portanto: CARACTERÍSTICA = EXPOENTE + 6410
Exemplificando: expoente = 810, logo característica = 810 + 6410 = 7210
Assim, uma característica entre 0 e 6310 significa que o expoente é negativo, enquanto uma
característica entre 65 e 127 significa que o expoente é positivo (característica igual a 6410 significa
expoente igual a 0)..
Exemplo: Representar 25,510
Como a base implícita é 16, vamos converter para hexadecimal: 25 / 16 = 1, resto 9 logo: 2510 =
1916
Parte fracionária: 0.5 x 16 = 8,0
Logo: 25,510 = 19,816 x 160
Normalizando: 19,816 x 160 = 0,19816 x 162. Em binário com 24 bits, a mantissa normalizada será:
0,19816 = 0001.1001.1000.0000.0000.0000
Obs.: Como o número 0,19816 será representado em 24 bits, os bits não representativos (à direita)
serão preenchidos com zeros.
Como o expoente é 2, a característica será: 210 + 6410 = 6610. Em binário com 7 bits, será: 100.0010
Portanto, a representação será:
21
b) Representação no PDP 11
Os microcomputadores PDP 11 representam os dados em ponto flutuante com base implícita = 2,
no seguinte formato:
sendo
SN = sinal do dado
CARACTERÍSTICA = o expoente, representado na forma de excesso de n, ou seja,
CARACTERÍSTICA = EXPOENTE + EXCESSO
No caso do PDP 11, o excesso é de 12810, portanto: CARACTERÍSTICA = EXPOENTE + 12810
Exemplificando: expoente = - 28 logo característica = - 2810 + 12810 = 10010
Assim, uma característica entre 0 e 12710 significa que o expoente é negativo, enquanto uma
característica entre 129 e 255 significa que o expoente é positivo (característica igual a 1280
significa expoente igual a 0).
Exemplo: Representar 25,510
Como a base implícita é 2, vamos converter para binário: 2510 = 110012
Parte fracionária: 0.5 x 2 = 1,0
Logo: 25,510 = 11001,12 x 20
Normalizando: 11001,12 x 20 = 0,1100112 x 25.
Obs.: Como a base implícita no PDP 11 é 2, o número normalizado começará SEMPRE por 0,1.
Assim, como o primeiro dígito da mantissa será sempre 1, o PDP 11 economiza um bit na mantissa
não armazenando o primeiro bit da mantissa, já que está implícito que todos os números terão
mantissa iniciando com 1. O bit economizado dessa forma permite que, embora a mantissa no PDP
seja representada com 23 bits e no IBM /370 com 24 bits, a precisão na representação é a mesma.
Obs.1: Leia-se o SEMPRE da obs. acima como quase sempre. A única exceção corre por conta do
zero, que nesse caso tem um tratamento especial. Em binário com 23 bits, a mantissa normalizada
será (lembrando que o primeiro bit 1 não é representado):
0,1100112 = 100.1100.0000.0000.0000.0000
Obs.: Como o número 0,1100112 será representado em 23 bits, os bits não representativos (à direita)
serão preenchidos com zeros.
22
Como o expoente é 5, a característica será: 510 + 12810 = 13310. Em binário com 8 bits, será:
1000.0101
Portanto, a representação será:
Qual das representações de ponto flutuante nos dois computadores exemplificados acima tem o
maior alcance?
Resposta.: O alcance de uma representação depende do valor da base implícita, elevado ao maior
valor que a característica pode assumir. O maior alcance será o que tiver o maior valor de Be ou
seja, base elevada ao maior valor possível da característica.
O IBM /370 tem 7 bits para característica (maior característica = 63) e base implícita 16, portanto
1663 = (24) 63 = 2252
O PDP 11 tem 8 bits para característica (maior característica = 127) e base implícita 2, portanto 2127
Conclusão: A representação em ponto flutuante do IBM /370 tem maior alcance que a do PDP 11.
23
Capítulo 3 – Conceitos de Lógica Digital
3.1 CONCEITUAÇÃO:
A Lógica Digital, ou Lógica Binária, tem fascinado inúmeras pessoas ao longo dos anos. A idéia de
um sistema numérico baseado em apenas dois valores como sendo a base para os sofisticados e
potentes computadores atuais soa de forma assustadora, a princípio.
Exatamente tudo no mundo digital é baseado no sistema numérico binário. Numericamente, isso
envolve apenas dois símbolos: 0 e 1. Na lógica digital, podemos especificar que:
0 = Falso = Não
1 = Verdadeiro = Sim
Computadores digitais (binários) são construídos com circuitos eletrônicos digitais - as portas
lógicas (circuitos lógicos).
Os sistemas lógicos são estudados pela álgebra de chaveamentos, um ramo da álgebra moderna ou
álgebra de Boole, conceituada pelo matemático inglês George Boole (1815 - 1864). Boole construiu
sua lógica a partir de símbolos, representando as expressões por letras e ligando-as através de
conectivos - símbolos algébricos.
A álgebra de Boole trabalha com apenas duas grandezas: falso ou verdadeiro. As duas grandezas
são representadas por 0 (falso) e 1 (verdadeiro).
Nota: nos circuitos lógicos do computador, os sinais binários são representados por quantidades
físicas, sinais elétricos, os quais são gerados e mantidos internamente ou recebidos de elementos
externos, em dois níveis de intensidade, cada um correspondendo a um valor binário, como
exemplificado na figura 3.1 a seguir:
Volts
4,0
Binário
3,0
(bit) 1
2,0
1,0
Binário
0,5
(bit) 0
Tempo
Enquanto cada elemento lógico ou condição é representado por um valor “0” ou “1”, faz-se
necessário que tenhamos meios de combinar diferentes sinais lógicos ou condições para gerar um
resultado útil.
Uma porta lógica (“gate”) é um circuito eletrônico, portanto uma peça de hardware, que se constitui
no elemento básico e mais elementar de um sistema de computação. Grande parte do hardware do
sistema é fabricado através da adequada combinação de milhões desses elementos.
São tabelas que representam todas as possíveis combinações das variáveis de entrada de uma
função, e os seus respectivos valores de saída. Uma tabela verdade possui, então, tantas linhas de
informação quantas são as possíveis combinações de valores de entrada que se tenha.
Uma operação lógica realizada sobre um ou mais valores lógicos produz um certo resultado
(também um valor lógico), conforme a regra definida para a operação lógica, como exemplificado
pela figura 3.2.
Assim como na álgebra comum, é necessário definir símbolos matemáticos e gráficos para
representar as operações lógicas (e os operadores lógicos). A figura 3.3 mostra os símbolos
matemáticos e gráficos referentes às operações lógicas (portas) que iremos analisar:
X
AND X=A.B B
B X
OR X=A+B
25
A
X
NOT X=A
A
X
NAND X = A•B B
NOR B
X = A+B
A
B X
XOR X=A⊕B
A porta AND combina dois ou mais sinais de entrada de forma equivalente a um circuito em série,
para produzir um único sinal de saída, ou seja, ela produz uma saída 1, se todos os sinais de entrada
forem 1; caso qualquer um dos sinais de entrada for 0, a porta AND produzirá um sinal de saída
igual a zero.
X = A.B
A
A B X
0 0 0
X
B 0 1 0
1 0 0
Figura 3.4 – Porta lógica AND 1 1 1
Não existe limite para o número de entradas que podem ser aplicadas em uma porta AND. Porém,
por razões práticas, portas AND comerciais são usualmente manufaturadas com 2, 3 ou 4 portas.
Um circuito integrado (CI) padrão contém 14 ou 16 pinos, para praticidade de tamanho e
manipulação. Um CI de 14 pinos, por exemplo, pode conter 4 portas de 2 entradas ou 3 portas de 3
entradas ou 2 portas de 4 entradas, sendo reservadas duas portas para as conexões de força.
A figura 3.5 mostra um exemplo de aplicação da porta AND como elemento de controle em
transferências de dados. Para cada bit do registrador, um sinal da unidade de controle (UC) serve de
entrada, juntamente com o sinal correspondente ao bit do registrador origem (registrador A);
quando o sinal da UC for igual a 1, a combinação dos sinais de entrada produz na saída um valor,
sempre igual ao do bit do registrador de entrada, o qual será armazenado no registrador de destino
(registrador B). Com isso, obteve-se a transferência dos bits do registrador origem para o registrador
de destino durante o período em que a linha da UC esteve com o bit 1 ativo.
26
Registrador A
0 1 1 0 1 0
= 1 (sinal da UCP)
0 1 1 0 1 0
Registrador B
Figura 3.5 – Exemplo de utilização de porta AND na movimentação de dados de um registrador para outro
A porta OR é definida para produzir um resultado verdade (=1) na sua saída, se pelo menos uma das
entradas for verdade. Esta definição pode ser expressa pela tabela verdade e símbolos mostrados na
figura 3.6:
X = A+ B
A A B X
X 0 0 0
B 0 1 1
1 0 1
1 1 1
Figura 3.6 – Porta lógica OR
Tal como a porta AND, a porta OR pode ter qualquer número de entradas. Porém, portas OR
comerciais são limitadas a 2, 3 e 4 entradas, tais como as portas AND.
A porta NOT é um circuito lógico que requer apenas um valor na entrada: inverte o sinal de entrada
(executa a negação do sinal de entrada), ou seja, se o sinal de entrada for 0 ela produz uma saída 1,
se a entrada for 1 ela produz uma saída 0.
X = NOT(A)
A A X
X
0 1
1 0
27
3.2.5 Porta NAND – NOT AND
A porta NAND equivale a uma porta AND seguida por uma porta NOT, isto é, ela produz uma
saída que é o inverso da saída produzida pela porta AND. Esta porta produzirá uma saída falsa se e
somente se todas as entradas forem verdade.
A X = A•B
X
A B X
B 0 0 1
0 1 1
1 0 1
Figura 3.8 – Porta lógica NAND 1 1 0
Esta porta é muito comum de ser encontrada em complexos circuitos lógicos, visto que é possível
simplificar a fabricação de circuitos lógicos, reduzindo a quantidade de componentes eletrônicos, se
usarmos apenas circuitos NAND.
A porta NOR equivale a uma porta OR seguida por uma porta NOT, isto é, ela produz uma saída
que é o inverso da saída produzida pela porta OR. Esta porta produzirá uma saída verdade se e
somente se todas as entradas forem falsas.
X = A+B
A
A B X
B 0 0 1
0 1 0
1 0 0
Figura 3.9 – Porta lógica NOR 1 1 0
A porta (ou operação lógica) XOR, abreviação do termo EXCLUSIVE OR, pode ser considerada
um caso particular da função OR, ou seja, sua definição: “a saída será verdade se exclusivamente
uma ou outra entrada for verdade”. A porta XOR compara os bits: ela produz saída 0 quando todos
os bits de entrada são iguais e saída 1 quando pelo menos um dos bits de entrada é diferente dos
demais.
X=A⊕B
A
A B X
B X 0 0 0
0 1 1
1 0 1
Figura 3.10 – Porta lógica XOR 1 1 0
Ao contrário das portas OR/NOR e AND/NAND, a porta XOR tem exatamente duas entradas. Com
as portas XOR, é possível se fabricar um testador de igualdade entre valores, por exemplo, para
28
testar de modo rápido se duas palavras são iguais (ver figura 3.11). Se as duas palavras forem
iguais, as saídas dos circuitos XOR serão todas falsas. A figura mostra o exemplo completo do
teste, que inclui uma porta NOR para receber, como entrada, a saída de todos os circuitos XOR e
produzir uma única saída.
Palavra 1
Bit
... Bit 1 Bit 0
m-1
RF
...
...
Bit
... Bit 1 Bit 0
m-1
Palavra 2
Figura 3.11 – Exemplo de emprego de circuitos XOR para teste de igualdade entre palavras
Uma expressão lógica ou função lógica pode ser definida como sendo uma expressão algébrica
formada por variáveis lógicas (binárias), por símbolos representativos de uma operação lógica (+, .,
⊕, etc.), por parênteses (às vezes) e por um sinal de igual.
Por exemplo:
F = X + Y .Z
F, que é uma função lógica, é representada pela expressão lógica mostrada. E como função lógica,
somente poderá assumir os valores 0 ou 1, dependendo dos valores das variáveis X, Y e Z. É
possível representar F de duas maneiras:
E o valor do resultado de uma expressão lógica pode ser obtido por uma tabela verdade construída
com todas as possibilidades de entrada e as correspondentes saídas. A figura 3.12 mostra a função F
representada das duas maneiras citadas e sua correspondente tabela verdade. Esta, por se tratar de 3
entradas (X, Y e Z), possui 23 combinações possíveis.
X Y Z F
F = X + Y .Z
0 0 0 0
0 0 1 1
(a) Expressão lógica da função F
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
29
X F
Assim como podemos obter todos os possíveis resultados de uma expressão lógica para cada um
dos valores de entrada componentes da expressão (através da construção progressiva da tabela
verdade), também poderemos obter o valor da expressão para um valor específico de cada uma das
entradas (usar apenas uma linha da tabela verdade).
a) Uma expressão pode ou não conter parênteses; quando contêm, eles têm a mesma prioridade
que nos cálculos da álgebra comum;
b) A prioridade da operação AND é maior que a do cálculo de uma operação OR, como na
aritmética comum.
Assim: X+ Y .Z = X + ( Y .Z)
c) A prioridade da operação OR é maior que a operação XOR
Exemplos:
a) B.C = 0.1 = 0
b) B.C = 1
c) A + B.C = 1 + 1 = 1
d) (A + B.C ) ⊕ D = 1 ⊕ 1 = 0
Resultado: X = 0
30
Resultado: X = 0110
Álgebra Booleana é uma área da Matemática que trata de regras e elementos de Lógica.
O projeto de elementos digitais está relacionado com a conversão de idéias em hardware real, e os
elementos encontrados na álgebra booleana permitem que uma idéia, uma afirmação, possa ser
expressa matematicamente. Permitem também que a expressão resultante da formulação
matemática da idéia possa ser simplificada e, finalmente, convertida no mundo real do hardware de
portas lógicas e outros elementos digitais.
Solução:
31
A
Usando as propriedades apresentadas, todo e qualquer circuito pode ser representado usando
exclusivamente as funções NAND ou NOR.
Qual a razão para tal artimanha? Há neste caso uma razão maior que a comodidade ou a aparente
dificuldade: a razão econômica. Por diversas razões construtivas, fica mais barato construir todos os
circuitos de um computador usando apenas um único tipo de circuito. Aceitando essa afirmação,
vamos representar os circuitos já conhecidos usando apenas funções NAND ou os NOR:
Circuito Inversor
A A
A A
Circuito AND
32
A
A
B
B
Usando apenas portas NAND
A.B = A.B
Usando apenas portas NOR
A.B = A.B = A + B
Circuito OR
A A
B
B
Usando apenas portas NOR
A+B=A+B
Usando apenas portas NAND
A + B = A + B = A.B
Circuito XOR
A⊕B
33
a) Combinatório - a saída é função dos valores de entrada correntes; esses circuitos não têm
capacidade de armazenamento.
b) Seqüencial - a saída é função dos valores de entrada correntes e dos valores de entrada no
instante anterior; é usada para a construção de circuitos de memória (chamados "flip-flops";
esses circuitos não serão estudados neste curso, mas apresentamos uma breve introdução no
final deste capítulo.
Um circuito combinatório é definido como um conjunto de portas cuja saída em qualquer instante
de tempo é função somente das entradas. A figura 3.13 mostra um diagrama exemplificando o
emprego de circuitos combinatórios (este circuito serve para fazer funcionar a unidade de controle
das UCP).
Entrada de dados
Entrada de dados
a) Os módulos das funções 1 e 2 representam circuitos que realizam algum tipo de operação como,
por exemplo, soma de dois valores que cheguem na entrada (módulo 1) ou soma de um valor e
uma constante (módulo 2).
b) Cada módulo é acionado para executar a ação que lhe corresponde quando um sinal de controle
(C1 para o módulo 1 e C2 para o módulo 2) assume o valor 1 (ativado) , nada acontecendo se o
valor for igual a zero.
c) O circuito combinatório produzirá a saída adequada, de acordo com os sinais de tempo
(condições de controle) que aparecem em suas entradas.
d) Supondo, por exemplo, que as condições de ativação da saída 1 do circuito combinatório sejam
3 seqüências de tempo, T1, T2 e T3, mais as variáveis x e y, geradas internamente. Os sinais de
tempo ocorrem em sequência, de modo que, em um instante de relógio, T1 = 1 e T2=T3 = 0; no
período seguinte (outro pulso de relógio), T1 = 0, T2 = 1 e T3 = 0; em seguida, T1 = T2 = 0 e T3 =
1 e depois tudo se repete. As variáveis internas x e y são resultantes de outras operações
previamente realizadas, como, por exemplo, o resultado de uma operação aritmética ser igual a
zero (x = 1) ou diferente de zero (x = 0).
e) As condições que definem o valor das variáveis de controle C1 e C2 podem ser especificadas por
expressões booleanas. Por exemplo, vamos considerar as seguintes expressões:
C1 = x.T1 + T2 + y.T3
C2 = y .T3
f) A interpretação do processo seria:
34
i) Se x e T1 forem iguais a 1 ou T2 for 1 ou y e T3 forem iguais a 1, então C1 = 1, senão C1
= 0.
ii) Quando C1 = 1, a função digital 1 é realizada com os dados de entrada.
iii) Se y = 1 e T3 = 1, então C2 = 1. Senão, C2 = 0.
iv) Quando C2 = 1, a função digital 2 é realizada com os dados de entrada.
T1
T2 C1
T3
C2
A seguir, serão mostrados os passos para o projeto de um circuito multiplicador de 2 bits. Este
circuito receberá dois valores numéricos de 2 bits cada (representando os valores 0, 1, 2 e 3) e
produzirá, em sua saída, um valor de 4 bits igual ao produto dos valores de entrada (podendo
representar valores numéricos de 0 a 15).
A0
R0
A1
Multiplicador de 2 bits R1
(circuito combinatório) R2
B0
B1 R3
35
1.2 = 2 0 1 1 0 0 0 1 0
1.3 = 3 0 1 1 1 0 0 1 1
2.0 = 0 1 0 0 0 0 0 0 0
2.1 = 2 1 0 0 1 0 0 1 0
2.2 = 4 1 0 1 0 0 1 0 0
2.3 = 6 1 0 1 1 0 1 1 0
3.0 = 0 1 1 0 0 0 0 0 0
3.1 = 3 1 1 0 1 0 0 1 1
3.2 = 6 1 1 1 0 0 1 1 0
3.3 = 9 1 1 1 1 1 0 0 1
Tabela 3.2 – Tabela verdade do circuito multiplicador de 2 bits
Para criar o circuito combinatório que implemente a tabela verdade acima, devem ser construídas 4
expressões lógicas, uma para cada saída. Assim, temos:
R0 = A0A1B0B1
R1 = A 0 A 1 B 0 B1 + A 0 A 1 B 0 B1 + A 0 A 1 B 0 B1
Simplificando, temos:
R1 = A 0 A 1 B 0 ( B1 + B1 ) + A 0 A 1 B 0 B1
= A 0 A 1 B 0 + A 0 A 1 B 0 B1
= A 0 B 0 ( A 1 + A 1 B1 )
= A 0 B 0 ( A 1 + B1 )
= A 0 A 1 B 0 + A 0 B 0 B1
R2 = A 0 A 1 B 0 B1 + A 0 A 1 B 0 B1 + A 0 A 1 B 0 B1 + A 0 A 1 B 0 B1 + A 0 A 1 B 0 B1 + A 0 A 1 B 0 B1
= A 0 A 1 B 0 + A 1 B 0 B1 + A 0 A 1 B1 + A 0 B 0 B1
R3 = A 0 A 1 B 0 B1 + A 0 A 1 B 0 B1 + A 0 A 1 B 0 B1 + A 0 A 1 B 0 B1
= A1B1
O circuito que implementa as expressões lógicas acima está representado na figura 3.16:
36
A0 A1 B0 B1
R0
R1
R2
R3
37
3.7 CIRCUITOS INTEGRADOS
Um circuito integrado (CI) é um pequeno dispositivo, às vezes denominado chip ou microchip, que
contém em seu interior dezenas e ate milhares de componentes eletrônicos: transistores, diodos,
resistores, capacitores e suas interligações. Estes componentes são os formadores das portas lógicas
que, interligadas, formam um determinado circuito combinatório. A pastilha é encapsulada em um
pacote de cerâmica ou plástico e as conexões com o exterior são soldadas aos pinos externos para
completar o dispositivo.
A figura 3.17 mostra um CI típico, e logo a seguir o diagrama lógico de seu interior.
14 13 12 11 10 9 8
Vcc
1 2 3 4 5 6 7 (terra)
38
Capítulo 4 – Organização Interna de um Computador
Vimos que um sistema de computador é um conjunto de componentes que são integrados para
funcionar como um único elemento e tem por objetivo realizar manipulações com dados; isto é,
realizar algum tipo de operação com os dados de modo a obter informações úteis.
Para procurar identificar melhor cada um dos componentes utilizamos um exemplo simples:
Uma manipulação de dados pode ser exemplificada através do teorema de Pitágoras, onde é
informado os comprimentos dos lados de um triângulo retângulo (vamos chamar de LADO1 e
LADO2), e queremos determina e imprime o valor do terceiro lado (HIPOTENUSA).
Neste nosso exemplo o passo seguinte seria codificar o algoritmo em comandos de uma linguagem
de programação, temos então o que se denomina de Programa de Computador, e este precisa ser
interpretado pelo computador, e logicamente precisam ser introduzidos no hardware. Trata-se da
primeira etapa do processamento – Entrada – que requer um componente ou equipamento
específico. Por exemplo, podemos digitar caracter por caracter do programa em questão, usando um
componente denominado TECLADO, bastante semelhante aos teclados das máquinas de escrever.
Há inúmeros componentes que podem ser utilizados como componentes de entrada de dados eme
sistema de computação, tais como, um mouse, uma unidade de disco magnético, um sensor ótico ou
um sensor magnético. Para que uma máquina seja capaz de realizar várias instruções, é preciso que
ela seja de algum modo instruída para identificar cada uma delas e o que fazer com elas, tais
instruções chamamos de instruções de máquina. O componente do computador que é capaz de
entender e realizar uma operação definida por uma instrução de máquina denomina-se UNIDADE
CENTRAL DE PROCESSAMENTO – UCP (ou simplesmente, processador central). Uma UCP é
constituída de milhões de pequeninos circuitos e componentes eletrônicos (transistores, resistores,
capacitores, etc.) cujas funções básicas são ler, interpretar e realizar instruções de máquina.
Já vimos que um programa é sempre constituído de várias instruções e para que ele seja
rapidamente executado, é necessário que ele execute todas as instruções, recebendo e manipulando
os dados e expondo todos os resultados, de forma totalmente automática. Em outras palavras, antes
da execução, o programa e os dados deve ser guardado na própria máquina para, um a um, serem
localizados pelo processador, entendidos e executados. O componente responsável pelo
armazenamento das informações introduzidas pelo componente de ENTRADA é denominado de
MEMÓRIA.
Após a realização de todas as operações, os resultados devem ser apresentados ao usuário
interessado e de forma inteligível para ele (caracteres alfanuméricos, algarismos decimais, etc.) e
39
não na linguagem de computador. Esses resultados podem ser apresentados por um vídeo, como
mostrado na Figura 4.1, ou impressora, ou qualquer outro dispositivo de SAÍDA.
Unidade Central
de Processamento
UCP
Escrita Leitura
41
e) Palmtops.
42
Capítulo 5 – Funções de cada Componente de um Computador
Toda a lógica dos computadores é construída a partir de chaves liga/desliga. Inicialmente foram
usados chaves mecânicas, depois relés eletro-mecânicos - o Z-1 construído por Konrad Zuse em
1941 e o MARK 1 de Howard Aiken em 1944 (capazes de executar até 5 chaveamentos por
segundo). Posteriormente, foram substituídos pelas válvulas no ENIAC em 1946 (capazes de
100.000 de chaveamentos por segundo), e finalmente pelos transistores (semicondutores)
inventados em Stanford em 1947. Os circuitos integrados (ou CI's) são encapsulamentos compactos
(LSI - Large Scale Integration e VLSI - Very Large Scale Integration) de circuitos constituídos de
minúsculos transistores.
43
Memória Principal:
A Memória Principal tem por finalidade armazenar toda a informação que é manipulada pelo
computador - programas e dados. Para que um programa possa ser manipulado pela máquina, ele
primeiro precisa estar armazenado na memória principal.
Dispositivos de Entrada e Saída (E/S):
Tem por finalidade permitir a comunicação entre o usuário e o computador.
OBS.: Para executar um programa, bastaria UCP e MP; no entanto, sem os dispositivos de E/S não
haveria a comunicação entre o usuário e o computador.
5.1 MEMÓRIA:
Ao longo do tempo, diversas tecnologias vêm sendo desenvolvidas para a fabricação de memória.
Atualmente algumas dessas tecnologias já são obsoletas, como as memórias de núcleo de ferrite
(magnéticas), algumas das tecnologias mais conhecidas são:
Memória de semicondutores → são dispositivos fabricados com circuitos eletrônicos e
baseados em semicondutores. São rápidas e relativamente caras, se comparadas com outros tipos.
Registradores e memória principal são exemplos de memórias de semicondutores ou, mais
simplesmente, memórias eletrônicas.
Memórias de meio magnético → são dispositivos, como os disquetes, discos rígidos e fitas
magnéticas, fabricados de modo a armazenar informações sob a forma de campos magnéticos.
Eles possuem características magnéticas semelhantes às das fitas cassetes de som, as quais são
memórias não voláteis.
Custo alto
Velocidade alta
Baixa capacidade
Registradores
Memória cache
Memória principal
44
A pirâmide em questão é projetada com base larga, que simboliza a elevada capacidade, o tempo de
uso e o custo do componente que a representa.
A seguir serão definidos os principais parâmetros para análise das características de cada tipo de
memória componente da hierarquia apresentada na Figura 5.2.
Tempo de Acesso → é o período de tempo gasto decorrido desde o instante em que foi iniciada
a operação de acesso até que a informação requerida (instrução ou dado) tenha sido
efetivamente transferida. Pode ser chamado tempo de acesso para leitura ou simplesmente
tempo de leitura. É dependente do modo como o sistema de memória é constituído e da
velocidade dos seus circuitos. Ele varia bastante de acordo com o tipo de memória analisado,
sendo valores típicos entre 50 e 150 nanossegundos (ns), por exemplo, para uma memória
principal (tipo DRAM) e de 12 a 60 milissegundos (ms) para discos magnéticos (memória
secundária).
Capacidade → é a quantidade de informação que pode ser armazenada em uma memória; a
unidade de medida mais comum é o byte, embora também possam ser usadas outras unidades
como células (no caso da memória principal e cache), setores (no caso de discos) e bits (no caso
de registradores). Dependendo do tamanho (tamanho refere-se a quantidade de informação que
pode ser armazenada e não no tamanho físico) da memória, isto é, de sua capacidade, indica-se
o valor numérico total de elementos de forma simplificada, através da inclusão de K (kilo), M
(mega), G (giga) ou T (tera).
Exemplo de nomenclatura para valores de capacidade de memória:
a) O registrador R1 tem 16 bits;
b) A ROM do microcomputador A tem 32 Kbytes;
c) A RAM do computador B tem capacidade para endereçar 32 Mcélulas;
d) O disco C tem capacidade para armazenar 4.5 Gbytes.
e) O CD-ROM E tem capacidade de armazenamento igual a 650 Mbytes.
Volatilidade → memórias podem ser do tipo volátil ou não volátil. Uma memória não volátil é
a que retém a informação armazenada quando a energia elétrica é desligada. Memória volátil é
aquela que perde a informação armazenada quando a energia elétrica desaparece (interrupção de
energia elétrica ou desligamento da chave ON/OFF do equipamento).
Temporariedade → trata-se de uma característica que indica o conceito de tempo de
permanência da informação em um dado tipo de memória. Por exemplo, informações
(programas e dados) podem ser armazenadas em discos ou disquetes e lá permanecerem
armazenadas indefinidamente (mas há sempre a possibilidade de perda de magnetismo com o
passar do tempo) a este tipo de memória define-se como permanente. Ao contrário dos
registradores, que armazenam um dado por um tempo extremamente curto (nanossegundos), a
este tipo chamamos de transitória.
Custo → o custo de fabricação de uma memória é bastante variado em função de diversos
fatores, tipo: tecnologia de fabricação, tempo de acesso, e outros. Uma boa forma de medida de
custo é o preço por byte armazenado, em vez do custo total.
45
O quadro a seguir mostra mais características:
A UCP vê nesta ordem e acessa primeiro a que está mais próxima. Subindo na hierarquia, quanto
mais próximo da UCP, maior velocidade, maior custo, porém menor capacidade de
armazenamento.
5.2.2.1 – Registradores:
Uma das principais características definidas no projeto de arquitetura do sistema de Von Neumann,
o qual se constitui na primeira geração de computadores, consistia no fato de ser uma máquina “de
programa armazenado”. O fato de as instruções, uma após a outra, poderem ser imediatamente
acessadas pela UCP é o que garante o automatismo do sistema e aumenta a velocidade de execução
dos programas.
Tempo de acesso: possuem tempo de acesso entre 50 ns e 150 ns.
Capacidade: os valores típicos para microcomputadores, minicomputadores e de grande
porte, estão na faixa de 16 até 128M byte, embora eles possam endereçar memória de 4G byte.
Volatilidade: sendo construído com semicondutores e circuitos eletrônicos correlatos, este
tipo de memória também é volátil.
Temporalidade: para que um programa seja executado é necessário que ele seja armazenado
na memória principal. Atualmente esta afirmação é parcialmente verdadeira, visto que não é mais
necessário que o programa completo esteja na MP, e sim apenas armazenado a instrução que será
acessada pela UCP. No entanto, a transitoriedade com que as informações permanecem
armazenadas na MP é, em geral, mais duradoura que na memória cache e registradores.
A tabela abaixo mostra os modelos típicos.
Nome
SIMM 16Mb -72 vias EDO
SIMM 32Mb -72 vias EDO
DIMM 64Mb SDRAM 100 MHz
DIMM 64Mb SDRAM 133 MHz
DIMM 128Mb SDRAM 100 MHz
DIMM 128Mb SDRAM 133 MHz
DIMM 256Mb SDRAM 100 MHz
DIMM 256Mb SDRAM 133 MHz
47
5.2.2.4. Memória Secundária:
Conforme foi definido anteriormente, Memória Principal é a parte do computador onde programas e
dados são armazenados para processamento. A informação permanece na memória principal apenas
enquanto for necessário para seu emprego pela UCP, sendo então a área de MP ocupada pela
informação pode ser liberada para ser posteriormente sobregravada por outra informação. Quem
controla a utilização da memória principal é o Sistema Operacional.
A memória precisa ter uma organização que permita ao computador guardar e recuperar
informações quando necessário. Não teria nenhum sentido armazenar informações que não fosse
possível recuperar depois. Portanto, não basta transferir informações para a memória. É preciso ter
como encontrar essa informação mais tarde, quando ela for necessária, e para isso é preciso haver
um mecanismo que registre exatamente onde a informação foi armazenada.
Célula: é a unidade de armazenamento do computador. A memória principal é organizada em
células. Célula é a menor unidade da memória que pode ser endereçada (não é possível buscar
uma "parte" da célula) e tem um tamanho fixo (para cada máquina). As memórias são
compostas de um determinado número de células ou posições. Cada célula é composta de um
determinado número de bits. Todas as células de um dado computador têm o mesmo tamanho,
isto é, todas as células daquele computador terão o mesmo número de bits.
Cada célula é identificada por um endereço único, pela qual é referenciada pelo sistema e pelos
programas. As células são numeradas seqüencialmente, uma a uma, de 0 a (N-1), chamado o
endereço da célula.
48
Endereço: é o localizador da célula, que permite identificar univocamente uma célula. Assim,
cada célula pode ser identificada pelo seu endereço.
A capacidade da MP em bits é igual ao produto do nº de células pelo total de bits por célula.
T=NxM
T = capacidade da memória em bits
N = nº de endereços (como vimos anteriormente, N=2x sendo x = nº de bits do endereço)
M = nº de bits de cada célula
49
Para encontrar a capacidade em bytes, bastaria encontrar a capacidade em bits e depois multiplicar
por 8 (cada byte contém 8 bits) ou então converter o tamanho da célula para bytes e depois
multiplicar pelo número de células.
O último endereço na memória é o endereço N-1 ( os endereços começam em zero e vão até N-1).
EXERCÍCIOS
1) Numa MP com 1 kbyte de capacidade, onde cada célula tem 8 bits:
a) quantas células tem a MP?
b) quantos bits são necessários para representar um endereço de memória?
4) Uma memória de um computador tem um espaço máximo de endereçamento de 2K. Cada célula
pode armazenar 16 bits. Qual o valor total de bits que podem ser armazenados nesta memória e qual
o tamanho de cada endereço?
5) Uma memória é fabricada com a possibilidade de armazenar um máximo de 256K bits. Cada
célula pode armazenar 8 bits. Qual é o tamanho de cada endereço e qual é o total de células que
podem ser utilizadas na memória?
A operação de leitura não destrói o conteúdo da memória, ela apenas providencia a transferência de
uma cópia do que está armazenado, enquanto a informação desejada continuar armazenada.
Somente a operação de escrita é destrutiva.
Vamos descrever, com um pouco mais de detalhe, como se acontece uma operação de leitura e uma
escrita na MP de um sistema de computação.
Para tanto, há necessidade de se definir os elementos que compõem a estrutura UCP/MP e que são
utilizados naquelas operações, veja Figura 5.4.
50
UCP MP
RDM REM UC
Barramento de controle
Barramento de endereços
Barramento de dados
Figura 5.4 – Estrutura UCP/MP e a utilização de barramento para comunicação entre elas.
A Figura 5.5 mostra um exemplo de operação de leitura de um dado armazenado no endereço 1324
da MP (o valor do dado é 5C) para a UCP.
Os passos que descrevem a referida operação de leitura são:
1. (REM) ← (outro registrador)
o endereço é colocado no barramento de endereços.
2. Sinal de leitura na barra de controle
3. (RDM) ← (MP(REM)) pelo barramento de dados
4. (outro registrador) ← (RDM)
end 0000
≈ ≈
UCP
Outro Outro
end 1324 5C
reg. reg.
RDM REM
5C 1324 UC end FFFF
Barramento de controle
Barramento de endereços
Barramento de dados
end 0000
≈ ≈
UCP
end 21C8 F7
RDM REM
F7 21C8 UC end FFFF
Barramento de controle
Barramento de endereços
Barramento de dados
Nos primeiros passos a UC coloca o endereço desejado no REM e o dado a ser transferido no RDM.
O endereço é colocado no barramento de endereço, o dado no barramento de dados e o sinal de
escrita (WRITE) é acionado no barramento de controle.
Como resultado da decodificação do endereço pelos dispositivos de controle da memória, o valor
F7 é colocado na célula desejada, de endereço 21C8.
Conforme explicado para a operação de leitura, a realização dos passos necessários à efetivação de
uma operação de escrita gastas um tempo de acesso e a MP pode ou não estar preparada para
imediatamente realizar nova operação.
EXERCÍCIO:
6) Um computador, cuja a MP tem capacidade máxima de 2K palavras de 16 bits cada, possui um
REM e um RDM. Qual o tamanho destes registradores; qual o valor do maior endereço dessa MP e
qual a quantidade total de bits que nela podem ser armazenados?
53
5.2.4 Tipos de Memória Principal:
Conforme já mencionamos diversas vezes a memória principal da maioria dos computadores atuais
é fabricada com tecnologia de semicondutores. Tendo em vista as características desses elementos
eletrônicos, este tipo de dispositivo possui uma particularidade muito importante e única: o tempo
de acesso a qualquer célula é igual, independente da localização física da célula.
Em outras palavras, se o tempo de acesso de uma determinada memória de semicondutor é 70 ns,
isto significa que este será o tempo para acessar a célula de endereço 0 (1a célula) ou para acessar a
20a célula.
Qualquer que seja o endereço, aleatoriamente ou randomicamente escolhido, o tempo de acesso será
o mesmo. Esse tipo de memória é denominado memória de acesso aleatório, sendo, no entanto,
mais conhecida pela sigla de seu nome em Inglês: RAM - Random Access Memory. Memória
RAM são normalmente utilizadas na implementação do espaço de endereçamento da MP dos
computadores. No que se refere ao processo de fabricação e desempenho, há dois tipos de RAM no
mercado: memórias RAM Estáticas (Static RAM – SRAM) e memórias RAM Dinâmicas
(Dynamic RAM – DRAM).
A MP é a memória de trabalho da UCP, onde os programas (e seus dados) se sucedem em
execução, uns após os outros. Além de a MP ter de permitir que um programa seja armazenado em
seguida ao outro (isto significa que são realizadas sucessivas operações de escrita nas mesmas
células) durante a execução normal de um programa, suas instruções são sucessivamente lidas pela
UCP, que, por sua vez, também realiza operações de escrita sobre a MP, armazenando resultados
das operações realizadas.
Desta forma, a MP, utilizada para armazenamento dos programas e dados rotineiramente
executados em um sistema de computação, deve ser do tipo leitura/escrita (R/W – Read/Write).
Por outro lado, memórias de semicondutores são do tipo RAM, sendo usadas como MP dos
computadores. Se uma memória é de acesso aleatório (RAM) para leitura, invariavelmente também
o será para realizar ciclos de escrita.
Assim, as memórias do tipo RAM, que permitem leitura/escrita, são usadas como MP e este termo –
RAM – passou a ser tão comum com estas memórias que se confundem com o próprio nome da
memória (comumente se usa no comércio e na indústria o termo RAM quando se refere à MP).
Embora seja rápida e de acesso aleatório, a RAM possui algumas desvantagens, entre as quais a
volatilidade.
Por outro lado, as memórias R/W apresentam o inconveniente de permitindo que se escreva
normalmente em suas células, ser possível a acidental eliminação do conteúdo de uma ou mais de
suas células.
Uma vez que o processador nada realiza sem as instruções, é óbvio que ele deve possuir uma certa
quantidade de memória não volátil. Isto é, um local onde estejam permanentemente armazenadas
instruções que automaticamente iniciam a operação e a inicialização do sistema, tão logo a
alimentação elétrica seja ligada. Em microcomputadores costuma-se chamar de programa
bootstrap ou simplesmente boot, alguns fabricantes chamam de IPL – Initial Program Load
(Carregamento do Programa Inicial).
Esse tipo de memória além de ter que ser não-volátil, também não deve permitir que haja
eliminações acidentais. Trata-se de um programa que deve estar permanentemente armazenado e
não sofrer alterações por parte de nenhum outro programa. Em outras palavras, memórias que
armazenam este tipo de programa devem permitir apenas leitura. Chamam-se estas memória de
ROM – Read Only Memory (memória somente para leitura) e elas devem ser não voláteis.
No entanto, o tempo de acesso em memória ROM também é constante, independentemente da
localização física da célula, logo elas também são memória RAM. Porém, o mercado caiu no
engano de chamar de RAM apenas as memórias R/W, talvez para claramente diferença-las do outro
tipo, ROM (somente para leitura), já que as siglas são bem parecidas.
A Figura 5.7 apresenta a distribuição espacial das memórias R/W, RAM e ROM em um
microcomputador, indicando o conceito correto e o conceito usado na prática pelo mercado.
54
Endereço 0 Endereço 0
Leitura/ RAM
escrita (Leitura/escrita)
≈ ≈ ≈ ≈
RAM
ROM ROM
PROM - Programmable Read Only Memory ou memória apenas de leitura, programável. Esta
memória é uma ROM programável (em condições e com máquinas adequadas, chamadas
queimadores de PROM) e geralmente é comprada "virgem" (sem nada gravado), sendo muito
utilizada no processo de testar programas no lugar da ROM, ou sempre que se queira produzir
ROM em quantidades pequenas. Uma vez programada (em fábrica ou não), não pode mais ser
alterada.
Agente Secreto 89
O Agente Secreto 89 está tentando descobrir quantos dias faltam para um certo líder mundial ser
assassinado. O seu contato lhe diz que esta informação está localizada em uma série de caixas
postais. Para assegurar que ninguém mais tenha acesso à informação, ela está espalhada em 10
caixas. O seu contato lhe dá as 10 chaves, acompanhadas das seguintes instruções:
O Agente Secreto 89 pega as 10 chaves e vai para a agência do correio, com o livro de códigos em
mãos.
A Tabela abaixo mostra os conteúdos das 10 caixas de correio, depois de terem sido decodificados.
Suponha que você é o Agente Secreto 89; comece pela caixa 1 e percorra a seqüência das operações
para encontrar o número de dias que faltam para a tentativa de assassinato.
(1) (2)
Some o número armazenado na caixa (9) ao seu Divida o resultado pelo número armazenado na
número de código secreto caixa (10)
(3) (4)
Subtraia o número armazenado na caixa (8) Se o resultado anterior não for igual a 30, vá
para a caixa (7); caso contrário, vá para a caixa
seguinte.
(5) (6)
Subtraia 13 do resultado anterior PARE. Você já tem a resposta.
(7) (8)
20
BOMBA!!!
(9) (10)
11 2
Se você procedeu corretamente, você deve ter terminado na caixa 6, com uma resposta igual a 17.
Se você cometeu algum erro, você pode ter aberto a caixa 7, não estando mais conosco, neste caso.
À medida que você passou pela seqüência de operações, você duplicou, essencialmente, os tipos de
operações e encontrou muito dos conceitos que fazem parte de um computador. Iremos discutir,
agora, estas operações e conceitos no contexto da analogia com o agente secreto e ver como eles
estão relacionados com os computadores reais.
56
As caixas postais são como a memória em um computador, onde são armazenados instruções e
dados. As caixas postais de 1 a 6 contém instruções a serem executadas pelo agente secreto, e as
caixas de 8 a 10 contém os dados referenciados pelas instruções (o conteúdo da caixa 7, pelo que
sabemos, não tem equivalente em computadores). Os números de cada caixa são os endereços das
locações na memória.
Três classes diferentes de instruções estão presentes nas caixas de 1 a 6. As caixas 1, 2, 3 e 5 são
instruções que “chamam” operações aritméticas. A caixa 4 contém uma instrução de decisão,
chamada de desvio condicional. Esta instrução diz ao agente (ou computador) para decidir se pula
para o endereço 7 ou continua para o endereço 5, dependendo do resultado da operação aritmética
anterior. A caixa 6 contém uma simples instrução de controle que não precisa de dados, nem faz
referência a outro endereço (número de caixa). Essa instrução, pare, diz ao agente que o problema
está terminado (o programa está completado) e que não deve continuar adiante.
Cada uma das operações aritméticas e de desvio condicional consiste em duas partes – uma
operação e um endereço. Por exemplo, a primeira parte da primeira instrução especifica a operação
de adição. A segunda parte dá o endereço (caixa 9) dos dados a serem usados na adição. Estes dados
são, usualmente, chamados de operandos e seu endereço é chamado de endereço de operando. A
instrução na caixa 5 é um caso especial em que não há especificação de endereço de operando. Em
vez disso, o operando (dado) a ser usado na operação de subtração é incluído como parte da
instrução.
Um computador, assim como o agente secreto, decodifica e, então, executa as instruções
armazenadas na memória, seqüencialmente, começando pela primeira locação. As instruções são
executadas na ordem, a não ser que algum tipo de instrução de desvio (como a caixa 4) cause
desvio, ou pulo, para um novo endereço para obter a próxima instrução. Uma vez ocorrido o desvio,
as instruções são executadas seqüencialmente, começando do novo endereço.
A Unidade Central de Processamento - UCP (em inglês, Central Processing Unity - CPU) é a
responsável pelo processamento e execução dos programas armazenados na MP. As funções da
UCP são: executar as instruções e controlar as operações no computador.
Um programa, para ser efetivamente executado pelo processador, deve ser constituído de uma série
de instruções de máquina. Para que a execução tenha início, as instruções
devem ser armazenadas em células sucessivas, na MP.
A função da UCP consiste, então, em:
a) Buscar uma instrução na memória (operação de leitura), uma de cada
vez;
b) Interpretar que operação a instrução está explicitando (pode ser soma
de dois números, uma multiplicação, uma operação de entrada ou de
saída de dados, ou ainda uma operação de movimentação de um dado
de uma célula para outra);
c) Buscar os dados onde estiverem armazenados, para trazê-los até a
UCP;
d) Executar efetivamente a operação com os dados, guardar o resultado
(se houver algum) no local definido na instrução; e, finalmente;
e) Reiniciar o processo apanhando nova instrução.
Vimos que processamento de dados é a ação de manipular um ou mais valores (dados) em certa
seqüência de ações, de modo a produzir um resultado útil. O resultado muda conforme o tipo de
operação realizada. Por exemplo, se uma instrução define que deve ser realizada uma operação de
adição sobre os valores A = 5 e B = 3, o sistema, ao interpretar a instrução, gera as ações
subseqüentes que redundarão no resultado igual a 5+3 = 8. Por outro lado, se o sistema interpretar
uma outra instrução que define a operação de subtração, ele deve gerar outras ações de modo que o
resultado seja 5-3 = 2 (e não mais 8).
Processar o dado é executar com ele uma ação que produza algum tipo de resultado. Este é, pois, a
atividade-fim do sistema; ele existe para processar dados. O dispositivo principal desta área de
atividade de uma UCP é chamado ULA – Unidade Lógica e Aritmética. Os demais componentes
relacionados com a função processamento são os registradores, que servem para armazenar dados
(ou para guardar resultados) a ser usados pela ULA. A interligação entre estes componentes é
efetuada pelo barramento interno da UCP.
É o dispositivo que realmente executa as operações matemáticas com os dados. Tais operações
podem ser:
Soma Subtração Multiplicação Divisão
Op. Lógica AND Op. Lógica OR Op. Lógica XOR Op. Complemento
Deslocamento à direita Deslocamento à esquerda Incremento Decremento
Tais operações podem utilizar dois valores (operações aritméticas e lógicas), por isso a ULA possui
duas entradas, ver Figura 5.9, ou apenas um valor (operações com complemento). A ULA é um
aglomerado de circuitos lógicos e componentes eletrônicos simples que, integrados, realizam as
operações já mencionadas.
58
Figura 5.9 – Esquema da UCP, destacando-se os elementos que contribuem para a realização da função processamento.
5.4.1.2. Registradores:
Para que o dado seja transferido para a ULA, é necessário que ele permaneça, mesmo que por um
breve instante, armazenado em um registrador (a memória da UCP). Além disso, o resultado de uma
operação aritmética ou lógica realizada na ULA deve ser armazenado temporariamente, de modo
que possa ser reutilizado mais adiante (por outra instrução) ou apenas para ser, em seguida,
transferido para a memória.
Para atender a este propósito, a UCP é fabricada com certa quantidade de registradores, destinados
ao armazenamento de dados. Serve de memória auxiliar da ULA. Há sistemas nos quais um desses
registradores, denominado Acumulador – ACC, além de armazenar dados, serve de elemento de
ligação da UAL com os restantes dispositivos da UCP.
Em geral, os registradores de dados da UCP têm uma largura (quantidade de bits que podem
armazenar) igual à da palavra. O tamanho dos processadores IBM/370 era de 32 bits, a mesma
largura dos 16 registradores de emprego geral neles existentes. O microprocessador Intel 8088, que
moveu os primeiros sistemas IBM PC, possui registradores de 16 bits cada um, tamanho idêntico ao
definido para a palavra.
A quantidade e o uso dos registradores variam bastantes de modelo para modelo de UCP. As
Figuras 5.10 e 5.11 apresentam exemplos de organização de registradores de dados em algumas
UCP.
Além dos registradores de dados, a UCP possui sempre outros registradores (que não participam
diretamente da função processamento), com funções específicas ou que funcionam para a área de
controle. Entre estes registradores podemos citar desde já o Registrador de Instrução – RI e o
contador de instrução – CI, além do Registrador de Endereço de Memória – REM e o Registrador
de Dados de Memória – RDM.
Barramento Interno
Figura 5.10 – Diagrama (simplificado) em bloco da UCP Intel 8085, apenas com os
dispositivos básicos da área de processamento.
Reg. Temp.
A Figura 5.12 mostra este exemplo em um digrama em bloco de uma UCP semelhante à do sistema
1, com a transferência dos valores sendo efetuada de 8 em 8 bits de cada vez.
A Figura 5.13 mostra este exemplo em um digrama em bloco de uma UCP semelhante à do sistema
2, com a transferência dos valores sendo efetuada de 16 em 16 bits de cada vez.
Considere que a operação de soma no sistema 1 é realizada em duas etapas e a mesma operação no
sistema 2 é realizada em uma etapa, o tempo T2 deve ser aproximadamente a metade do tempo T1.
Isto torna a capacidade da UCP do sistema 2 bem maior que a capacidade do sistema 1.
NOTA: Nos exemplos anteriores foram consideradas várias simplificações, não somente na
arquitetura dos dois sistemas, como também no processo de soma, visando não complicar a
60
explicação do essencial – a influência do tamanho da palavra na variação da capacidade de
processamento dos sistemas. Nenhuma das simplificações feitas comprometeu a conclusão final.
UCP MP
8 bits 0 8 bits
8 bits
25+2C (1a) 3A
3A+17 (2a) 25 A
17
B
2C
ULA ≈ ≈
ACC = 8 bits
8 bits
Barramento de dados
Figura 5.12 – Exemplo de uma operação de soma de 2 números, A e B, em um computador com palavra de 8 bits.
UCP MP
16 bits 0 8 bits
8 bits
3A25+172C (1a) 3A
25 A
17 B
2C
ULA ≈ ≈
ACC = 16 bits
16 bits
Barramento de dados
61
Figura 5.13 – Exemplo de uma operação de soma de 2 números, A e B, em um computador com palavra de 16 bits.
No projeto de uma UCP, a definição do tamanho da palavra tem enorme influência no desempenho
global de toda a UCP e, por conseguinte, do sistema como um todo. Vejamos:
a) Influencia no desempenho devido ao maior ou menor tempo na execução de instruções com
operações matemáticas na ULA, conforme demonstrado no exemplo anterior;
b) Influencia no desempenho devido ao tamanho escolhido para o barramento interno e externo da
UCP. Em geral, obtém-se o máximo de desempenho quando a largura (tamanho) do barramento
de dados é, no mínimo, igual ao tamanho da palavra (como nos exemplos mostrados). Se a
largura do barramento for, p. ex., igual a 16 bits em um sistema com palavra de 32 bits (ULA e
registradores de 32 bits), então o movimento de 4 bytes de um dado tipo caractere requererá
dois ciclos de tempo do barramento, ao passo que em barramento de 32 bits requereria apenas
um ciclo de tempo;
c) Influencia também na implementação física do acesso à memória. Embora atualmente a
capacidade das memórias seja medida em bytes (porque as células são sempre de largura igual a
8 bits), o movimento de dados entre UCP e memória é normalmente medido em palavras,
porque o barramento de dados que une o RDM (ou MBR) à memória deve acompanhar em
largura o valor da palavra. Para uma UCP de 32 bits de palavra, p. ex., é desejável que a
memória seja organizada de modo que sejam acessadas 4 células contíguas (4 bytes = 32 bits)
em um único ciclo de memória. Se isto não ocorrer, a UCP deverá ficar em estado de espera
(“wait state”).
A área de controle de uma UCP é a parte funcional que realiza (uma etapa de cada vez, em sistemas
de execução serial, ou várias etapas simultaneamente, em sistemas de execução “pipelining”) as
atividades de:
a) Busca de instrução que será executada, armazenando-a em um registrador especialmente
projetado para esta finalidade;
b) Interpretação das ações a serem desencadeadas com a execução da instrução (se é uma soma,
uma subtração, uma complementação, etc.); e
c) Geração de sinais de controle apropriado para ativação requerida para a execução propriamente
dita da instrução identificada. Esses sinais de controle são enviados aos diversos componentes
do sistema, sejam internos da UCP (como a ULA) ou externos (como a memória ou E/S).
Em outras palavras, a área de controle é projetada para entender o que fazer, como fazer e comandar
quem vai fazer no momento adequado. Podemos fazer uma analogia com os seres humanos,
imaginando que a área de controle é o cérebro que comanda o ato de andar, e as áreas do
processamento são os músculos e ossos das pessoas que realizam efetivamente o ato. Os nervos são
análogos ao barramento de interligação entre os diversos elementos.
Na Figura 5.9 apresentada anteriormente, os elementos em Azul são os que contribuem para a
realização da função de controle.
Os dispositivos básicos que devem fazer parte daquela área funcional são:
Unidade de controle (UC);
Decodificador;
Registrador de instrução (RI);
Contador de Instrução (CI) ou PC – Program Counter;
Relógio ou Clock;
Registradores de endereço de memória (REM) e de dados da memória (RDM).
62
A quantidade, a complexidade e a disposição dos componentes que realizam as funções de controle
variam consideravelmente de UCP para UCP, porém, essencialmente, os dispositivos indicados (em
azul na Figura 5.9) são os mesmos.
É o dispositivo mais complexo da UCP. Possui a lógica necessária para realizar a movimentação de
dados e instrução de e para a UCP, através de sinais de controle, que emite em instantes de tempo
programados. Este dispositivo controla a ação da ULA. Os sinais de controle emitidos pela UC
ocorrem em vários instantes durante o período de realização de um ciclo de instrução e, de modo
geral, todos possuem uma duração fixa e igual, originada em um gerador de sinais usualmente
conhecido como relógio (clock).
5.4.2.2. O Relógio:
É o dispositivo gerador de pulsos cuja duração é chamada de ciclo. A quantidade de vezes em que
este pulso básico se repete em um segundo define a unidade de medida do relógio, denominada
freqüência, a qual também usamos para definir velocidade na UCP. A Figura 5.14 mostra um
exemplo de um relógio (em geral, é um gerador de cristal de quartzo) e os pulsos por ele gerados.
Um ciclo de relógio ou de máquina é o intervalo de tempo entre o início de um pulso e o início do
seguinte. Este ciclo está relacionado à realização de uma operação elementar, durante o ciclo de
uma instrução (operação elementar pode ser, p. ex., uma microinstrução, que é parte do ciclo de
uma instrução de máquina, que veremos posteriormente). No entanto, mesmo esta operação
elementar não se realiza em um só passo e, por essa razão, costuma-se dividir o ciclo de máquina
em ciclos menos (subciclos), defasados no tempo, de modo que cada um aciona um passo diferente
da operação elementar. A Figura 3.14 mostra o ciclo básico e os 5 subciclos gerados por um
retardador (exemplo dos ciclos do processador Intel 8085).
É o registrador que tem a função específica de armazenar a instrução a ser executada pela UCP. Ao
se iniciar um ciclo de instrução, a UC emite o sinal de controle que acarretará a realização de um
ciclo de leitura para buscar a instrução na memória (uma cópia dela), e que, via barramento de
dados e RDM, será armazenado no RI.
É o registrador cuja função específica é armazenar o endereço da próxima instrução a ser executada.
Tão logo a instrução que vai ser executada seja buscada (lida) da memória para a UCP (início do
ciclo de instrução), o sistema providencia a modificação do conteúdo do CI de modo que ele passe a
armazenar o endereço da próxima instrução na seqüência. Por isso, é comum definir a função CI
como sendo a de “armazenar o endereço da próxima instrução”, que é o que realmente ele faz
durante a maior parte da realização de um ciclo de instrução.
O CI é um registrador crucial para o processo de controle e de seqüenciamento da execução dos
programas.
T1
Gerador T2 Unidade
Relógio T0 T3
De T4 De
Tempo T5 Controle
63
(a) Diagrama em Bloco do conjunto de tempo da área de controle.
1 Subciclo = T0/5
T0
T1
T2
T3
T4
T5
1 Ciclo = T0
(b) Diagrama de tempo do ciclo do processador (T0) e seus 5 subciclos.
Figura 5.14 – Diagrama em bloco da UC, mostrando o relógio e um conjunto de ciclos de tempo.
S0 a S15
E0 a E2
Registrador Sinais de
de Instrução Decodificador UC
Controle
E – Entrada
S – Saída
64
E0 E1 E2 E3 S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Uma instrução de máquina pode executar tarefas complicadas e sucessivas se for “instruída” sobre o
que fazer e em que seqüência isso deve ser jeito. Os seres humanos, se receberem uma instrução do
tipo “trazer a pasta da funcionária Maria”, são capazes de localizar o arquivo onde as pastas de
todos os funcionários estão arquivadas – em geral por ordem alfabética – e achar a pasta, trazendo-a
a quem pediu. O nosso cérebro realizou uma série de ações intermediárias para que a tarefa fosse
concluída com êxito.
No entanto, se a mesma “instrução” fosse dada a uma máquina (e ela não tivesse qualquer
orientação prévia armazenada), ela não conseguiria “trazer a pasta desejada”.
Para a máquina, é necessário que a “instrução” seja detalhada em pequenas etapas, visto que ela é
construída para ser capaz de entender só dessa forma, ou seja, em pequenas operações.
No exemplo em questão, a máquina deveria receber um conjunto de instruções como o da Figura
5.16, específicas para ela, sendo, chamadas de instruções de máquina.
65
1 • achar arquivo. Se não houver arquivo, vá p/3; senão, prosseguir
• comparar número arquivo com arquivo que contém as pastas dos funcionários
• se números iguais, então prosseguir; senão, voltar para 1
2 • achar uma pasta. Se não houver mais pastas, vá p/3; senão, prosseguir
• comparar nome da pasta com nome dado
• se forem iguais, então prosseguir; senão, voltar a 2
• retirar a pasta
• abrir a pasta para quem pedir
3 • parar
Figura 5.16 – Exemplo de instruções primitivas para uma máquina localizar e buscar uma pasta de documentos de um
arquivo.
O programa da Figura 5.16 – não está completo nem estruturado – tem apenas o propósito de
mostrar, por comparação simbólica, a diferença entre a generalidade de uma instrução para o
funcionário e o detalhe de uma instrução para a máquina. Com os sistemas de computação isto não
é diferente.
Uma instrução de máquina é a especificação de uma operação básica (ou primitiva) que o hardware
é capaz de realizar diretamente. Podemos, p. ex., fabricar um processador com uma ULA capaz de
somar ou de multiplicar dois números, mas ainda não se fabricou uma ULA capaz de executar:
X=A+B*C
de uma só vez. A ULA tem que ser instruída para executar, separadamente:
T=B*C
A+T
O projeto de um processador é centrado no conjunto de instruções de máquina que se deseja que ele
execute. Uma das mais fundamentais análise e decisões do projeto envolve o tamanho e a
complexidade do conjunto de instruções. Quanto menor e mais simples o conjunto de instruções,
mais rápido é o ciclo de tempo do processador.
Atualmente, há duas tecnologias de projeto de processadores empregadas pelos fabricantes de mini,
microcomputadores e de estações de trabalho:
Sistemas com conjunto de instruções complexo (complex instruction set computers – CISC); e
Sistemas com conjunto de instruções reduzido (reduced instruction set computers – RISC).
Por enquanto, será tratado basicamente dos sistemas que se utilizam de tecnologia CISC (como
todos os microprocessadores do tipo PC ou Macintosh), e posteriormente será descrito os sistemas
RISC e uma comparação entre essas tecnologias.
Na realidade, todo o projeto do processador se resume em:
Definir o conjunto de instruções (qual o formato e tamanho de cada uma e quais as operações a
realizar – o que caracteriza a quantidade);
Implementar os componentes do processador em função da definição anterior (ULA,
registrador, barramento etc.).
Fisicamente falando (do ponto de vista do hardware), uma instrução de máquina é um grupo de bits
que indica ao processador uma operação ou ação que ele deve realizar. Um processador é fabricado
com a capacidade de realizar uma certa quantidade de operações bem simples (primitivas), cada
uma delas associada a uma instrução de máquina.
Funcionalmente, um processador possui instruções capazes de realizar os seguintes tipos de
operações:
Operações matemáticas (aritméticas, lógicas, de complemento, de deslocamento);
Movimentação de dados (memória – UCP e vice-versa);
Entrada e saída (leitura e escrita em dispositivo de E/S); e
66
Controle (desvio da seqüência de execução, parar etc.).
Quando se escreve “conjunto de instruções”, estamos nos referindo a todas as possíveis instruções
que podem ser interpretadas e executadas por um processador.
De modo geral, podemos separar o grupo de bits que constitui a instrução em dois campos:
Um campo (um subgrupo de bits) chama-se código de operação;
O restante grupo de bits (se houver) denomina-se campo do(s) operando(s) ou, simplesmente,
operando(s).
Pode existir um ou mais campos “operando” na instrução, isto é, se a operação for realizada com
mais de um dado, a instrução poderá conter o endereço de localização de cada um dos dados
referidos nela. Por exemplo, uma instrução que define uma operação de adição de dois valores pode
indicar explicitamente o endereço de cada um dos dois valores (operando 1 e operando 2), bem
como o endereço onde o resultado será armazenado (operando 3). Nesse caso, o formato seria:
A mesma operação (necessitando da mesma forma de três operandos) pode ser realizada com ouro
tipo de instrução
67
Neste caso, a instrução pode indicar (através do C.Op. específico e diferente do C.Op. da instrução
anterior) que se deve somar o valor indicado pelo operando 1 com o valor indicado pelo operando 2,
e que o resultado deve ser armazenado no operando 1 (poderia também ser no operando 2).
Também poderíamos utilizar o registrador acumulador (ACC) para aguardar inicialmente um dos
valores e depois armazenar o resultado. Como em processadores dotados de ACC, ele tende a ser
um só, não há necessidade de explicitar seu endereço; basta programar a UC para utilizá-lo quando
decodificar o C.Op. específico. A instrução teria o seguinte formato:
C.Op. Operando 1
Verificou-se quantos formatos diferentes de instruções um processador pode ter no mesmo conjunto
de instruções. Os formatos apresentados são apenas uma parte muito pequena da quantidade de
formatos que existem distribuídos pelos atuais processadores.
O valor binários do(s) campo(s) operando(s) pode ter mais de um significado. Ou seja, o modo de
localizar o dado pode variar de instrução para instrução. Chama-se a isto de modo de
endereçamento; atualmente há vários destes modos sendo empregados nos processadores.
68
se criar um conjunto de instruções que atenda ao requisito da mais instruções, com quantidades
diferentes de operandos sem aumentar demasiadamente o tamanho total das instruções.
Nos processadores Intel 8086, 8088, 80286 o código de operação tinha 1 byte de tamanho, enquanto
que nos processadores Intel 386, 486 e Pentium, o código de operação pode ter 1 ou 2 bytes de
tamanho. Os Motorola, da família 68000, possuem instruções com código de operação de tamanho
variável entre ½ e 2 bytes.
A base do projeto de uma UCP é a escolha do conjunto de instruções que ela irá executar (trata-se
de definir que operações o hardware será capaz de realizar diretamente através de seus circuitos),
para em seguida definir e especificar os demais componentes da arquitetura e da organização, os
quais contribuirão para o processo de interpretar e executar cada instrução.
Para descrever com clareza as etapas individuais de um ciclo de instrução e permitir o entendimento
do sentido individual e global do processo de funcionamento da UCP, vamos utilizar um subsistema
UCP/MP hipotético, mais simples que os modelos comerciais. A Figura 5.18 relaciona as
características básicas do subsistema UCP/MP hipotético, o qual será utilizado no decorrer das
explicações deste item. As instruções JZOp, JPOp, JNOp, JMOp, mostradas nessa figura,
denominam-se instruções de desvio. Desvio é uma alteração forçada da seqüência de execução de
um programa.
69
A Figura 5.19 descreve, com mais detalhes, o fluxo de ações que constituem um ciclo de instrução,
ampliando o fluxo mostrado na Figura 5.8.
INÍCIO
Buscar a próxima
Ciclo Instrução
de
busca
Incrementar o CI
Cálculo de Decodificação
endereço da do C.Op.
Instrução
O ciclo de instrução apresentado pelo fluxo da Figura 5.19 pode ser descrito em LTR (Linguagem
de Transferência entre Registradores), de modo que possamos acompanhar sua realização com a
movimentação de informações nos componentes da UCP/MP da Figura 5.18:
Iniciar
RI ← (CI) buscar a instrução, cujo endereço está no CI
(CI) ← (CI) + 1 conteúdo de CI é incrementado para o endereço da
próxima instrução
Interpretar o C.Op. o decodificador recebe os bits do C.Op. e gera uma
saída para a UC
Buscar Op. (se houver)
Executar a instrução
Retornar
Não vamos, neste momento, considerar alguns aspectos como a possibilidade de ocorrer a detecção
de um sinal de interrupção (fenômeno que será discutido posteriormente) ou a execução de vários
ciclos de instrução de modo paralelo (método de pipelining, que será abordado posteriormente,
também), ainda com o mesmo propósito de simplificação do modelo para facilitar a explicação.
Para que a explicação seja mais interessante, vamos considerar a execução de duas das instruções
definidas no modelo UCP/MP da Figura 5.18:
LDA Op e ADD Op
e, utilizando a organização de MP e UCP dessa mesma figura, vamos considerar alguns valores
iniciais (Figura 5.20 mostra os detalhes) existentes ao iniciar a execução do 1º ciclo de instrução –
da instrução LDA.
70
a) A instrução LDA está armazenada na MP no endereço decimal 2, que é igual a 0216 e a
000000102. Sua descrição em binário é: 000110110100 ou 1B4
0001 10110100
C.Op. Op
Sendo: C.Op. = 116 (Figura 3.18) e Op. = B416 (considerado no exemplo).
b) O valor do dado armazenado na célula de endereço B4 é igual a 42310 ou 1A716 (valor
assumido).
c) A instrução ADD está armazenada no endereço 0316 e sua descrição em binário é:
001110110101 ou 3B516
0011 10110101
C.Op. Op
Sendo: C.Op. = 316 (Figura 3.18) e Op. = B516 (também assumido para o exemplo).
d) O valor armazenado em B516 é 07D16.
e) O valor armazenado no CI = 0216 (este valor é considerado como tendo sido atribuído pelo
sistema operacional).
f) O valor armazenado no RI = 31716 (provavelmente é o valor da instrução anteriormente
executada).
g) O valor armazenado no ACC = 20B16 (também um valor de operação anterior).
h) O valor armazenado no REM = B3 e no RDM = 7BC.
00 MP
UCP 01
ULA 02 1B4
03 3B5
ACC ≈ ≈
2∅B RI
B4 1A7
CI 317
B5 ∅7D
02 B6
REM ≈ ≈
B3
RDM FF
7BC Controle
Barramento de controle
Barramento de dados
Barramento de endereço
Figura 5.20 – Dados iniciais para a execução do ciclo das instruções LDA e ADD.
1 – RI ← (CI)
Resultado: RI = 1B4 (02) (Figura 3.21)
a) A UC aciona a transferência dos bits do CI para o REM (cópia), pelo barramento interno.
71
Resultado: REM = CI = 02 (Figura 5.21)
b) A UC ativa a linha READ (Leitura) do barramento de controle, o qual é reconhecido pelo
circuito decodificado de endereço da MP.
c) Decodificado o endereço, o circuito de controle da MP transfere os bits (cópia) da célula 02 – o
valor é 1B4 – para o RDM, pelo barramento de dados.
Resultado: RDM = 1B4 (Figura 5.21)
d) No instante seguinte, o valor 1B4 é transferido do RDM para o RI, pelo barramento interno do
processador.
NOTA: Observe a notação usada, (RI) e (CI), para indicar conteúdo, porque (02) significa “trazer
o conteúdo do endereço 02”. Se fosse usado o termo CI apenas (sem parênteses), o valor 02 seria
transferido para o RI.
UCP 00 MP
01
UC 02 1B4
03
≈ ≈
RI
CI
1B4
02 03
REM RDM ≈ ≈
B3 02 7BC 1B4
FF
Controle
Barramento de controle
Barramento de dados
Barramento de endereço
2 – (CI) ← (CI) + 1
Resultado: CI = 03 (Figura 5.21)
Como cada instrução ocupa uma célula da MP (especificação da Figura 5.18), a próxima instrução
deverá ocupar a célula seguinte, a do endereço 02. Portanto, 02 + 01 = 03 é o endereço seguinte.
No entanto, em quase todos os sistemas em funcionamento, não há processadores tão “bem
comportados” quanto o especificado na Figura 5.18, especialmente no que se refere à relação entre
o tamanho das instruções e das células de MP. Por conseguinte, a realidade está mais para:
(CI) ← (CI) + n n = quantidade de células ocupadas por uma única instrução
do que para: (CI) (CI) + 1
Além disso, em sistemas (e não são poucos hoje em dia) onde o tamanho das instruções é variável,
o valor de n é variável também e a UC deve ser preparada para este fato.
b) O decodificador seleciona, através da lógica nele existente, a linha de saída correspondente para
a UC, a qual emitirá os sinais adequados e na seqüência preestabelecida que conduzirão a execução
da operação definida pela instrução.
4 – Se tiver operandos, buscá-lo(s); senão, passar para o item 5 (Figura 5.22). não há
operando a ser previamente buscado.
UCP MP
UC
≈ ≈
ACC
2∅B 1A7 RI
B4 1A7
1B4
REM
03 B4
RDM ≈ ≈
1B4 1A7
FF
Controle
Figura 5.22 – Fluxo de dados e de endereços durante a realização do ciclo de busca da instrução LDA.
5 – Execução da operação.
Resultado: ACC = 1A7 (Figura 5.22)
73
O que, na prática, realmente diferencia o desempenho de uma instrução em relação a outra é a
quantidade de ciclos de memória (acessos) que cada uma realiza durante seu ciclo de instrução,
visto que o ciclo de memória é um tempo ponderável se comparado com o ciclo do processador.
Vamos, em seguida, descrever o ciclo de instrução ADD Op, considerando que é a instrução
seguinte na seqüência da execução (a Figura 5.20 mostra a instrução no endereço 03 da MP,
justamente o valor atualmente armazenado no CI, após a execução do ciclo de LDA Op. – ver
Figura 5.22).
A Figura 5.23 mostra o subciclo de busca de ADD Op, e a Figura 5.24 mostra o subciclo da
execução. Nesta instrução será usado o passo 4 do ciclo de instrução (buscar operando) e haverá
efetivamente a realização de uma operação (operação aritmética de adição), com a conseqüente
ação da ULA.
Dados a serem inicialmente considerados, referentes ao término da instrução anterior:
CI = 03 RI = 1B4 ACC = 1A7 REM = B4 RDM = 1A7
Seguindo as etapas na Figura 5.18, teremos:
1 – RI ← (CI)
REM RDM ≈ ≈
B4 03 1A7 3B5
FF
Controle
Barramento de controle
Barramento de dados
Barramento de endereço
2 – (CI) ← (CI) + 1
CI = 03 + 1 = 04 (Figura 5.23)
74
a) Decodificador ← (RI(C.Op.))
A definição da saída decodificada correspondente à operação ADD é enviada para a UC.
b)A UC emite sinais apropriados para a realização dos passos 4 e 5.
4 – Buscar operando na MP (Figura 5.24).
Como a instrução determina que o valor armazenado no ACC (1A7) seja somado a um valor que
está na MP; no endereço B5, este valor (operando) deve ser trazido da MP para a ULA de modo
que, em seguida, possa ser somado. Trata-se, então, de realizar um ciclo de memória para leitura.
a) A UC emite sinal de controle de modo que:
REM ← Op ou REM ← B5
b) O valor B5 é colocado no barramento de endereço (UC) e a UC ativa a linha READ.
c) O controle da MP decodifica o endereço B5 e, em seguida, os bits armazenados no endereço B5
(07D) são transferidos para o RDM.
RDM ← (M(REM)) RDM ← (M(B5)) RDM = 07D
d) ULA ← ACC (1A7) 1o operando
ACC ← RDM (07D)
ULA ← ACC (07D) 2o operando
UCP MP
UC
≈ ≈
ACC
1A7 224 RI
3B5
REM B5 07D
03 B5
RDM ≈ ≈
3B5 07D
FF
Controle
Figura 5.24 – Fluxo de dados/endereços durante a realização do ciclo de busca da instrução ADD.
75
O resultado, valor 224, é transferido para o ACC, concluindo a execução do subciclo de execução e
o ciclo completo da instrução. Se o programa continuasse em execução, neste momento seria
iniciado um outro ciclo de instrução, correspondente ao valor armazenado no endereço 04.
A instrução ADD realizou dois ciclos de memória (para leitura), um para a busca da instrução e
outro para a busca do 2o operando.
Em termos comparativos, seu tempo básico de execução é praticamente o mesmo da instrução
LDA, visto que ambas realizaram a mesma quantidade de acessos à MP – 2. A pequena diferença
existente reside na operação aritmética realizada pela instrução ADD. No entanto, se a instrução a
ser executada possuísse dois operandos, sendo, p. ex., do tipo:
(Op1) (Op1) + (Op2)
então, a completa realização de seu ciclo de instrução consumiria 4 ciclos de memória (4 acessos), o
dobro das duas instruções exemplificadas: um ciclo de memória para buscar a instrução e armazená-
la no RI; um ciclo de memória para buscar o primeiro operando (Op1); um terceiro ciclo para buscar
o segundo operando e, finalmente, o último ciclo de memória para armazenar o resultado da
operação na memória, no endereço indicado por Op2.
76
Capítulo 6 – Representação de Instrução
C.op Op
Veremos aqui que o formato de um operando não é o único utilizado nos sistemas de computação
atualmente no mercado.
Em uma UCP pode existir um conjunto de instruções constituído por vários formatos, e cada
formato é aconselhável para cada caso.
Para melhor entendermos a representação de uma instrução de máquina, analisaremos os seguintes
aspectos:
Quantidade de Operandos;
Modo de interpretação do valor armazenado no campo operando (modo de endereçamento).
Vimos que Instruções de Máquina são formadas por um conjunto de bits, agrupado em um
subconjunto chamado código de operação, que identifica a operação a ser realizada pelo hardware.
Este código é decodificado pela Unidade de Controle gerando pulsos (sinais) de controle que
acionarão as portas lógicas adequadas para a execução da operação desejada. Além de um outro
subconjunto chamado Campo do Operando (também chamado Operando) que identifica e localiza
o dado a ser processado.
Um dos primeiros formatos de instrução projetados possuía quatro operandos, conforme
Figura 6.2.
A instrução da Figura 6.2 (fora de uso) era completa; além de possuir a localização de todos os
operandos, também trazia a localização da próxima instrução a ser executada. Com este formato é
possível ter uma instrução de soma do tipo (em Assembler):
77
ADD Op1,Op2,Op3,P (Op3) (Op1) + (Op2), P end. próx. instr.
Então poderíamos, em uma única instrução, realizar a expressão abaixo:
C=A+B
Podendo ser representada em linguagem Assembly como:
ADD A,B,C,P
A vantagem desse tipo de formato de instrução é:
A instrução possui todos os operandos necessários à realização de uma operação aritmética,
dispensando até instruções de desvio incondicional, pois o endereço de desvio consta no campo
P;
Menor quantidade de instruções em um programa, em comparação ao uso de instruções com
menor quantidades de operando.
A desvantagem desse tipo de instrução está na grande quantidade de espaço em memória que ela
ocupa, principalmente pelo fato de que uma grande quantidade de instruções não necessita de três
operandos.
Existe uma instrução que transfere um valor da MP para a UCP (LOAD) que necessita apenas de
dois campos: um para armazenar o endereço do dado e o outro para indicar o endereço da próxima
instrução, restariam dois operandos.
Um dos fatores mais importantes no projeto de uma UCP consiste na escolha do tamanho das
instruções. E que depende de várias características da máquina, tais como:
Tamanho da memória;
Tamanho e organização das células da MP;
Velocidade de acesso;
Organização da barra de dados.
O ponto crucial a ser analisado por ocasião do projeto reside na comparação entre dois fatores
adversos:
Economia de espaço X conjunto completo e poderoso de instruções
Um bom conjunto de instruções requer muitas instruções (para atender os diferentes tipos
de aplicações), o que implica muitos bits para o código de operação. Requer também que as
instruções sejam completas e, nesse caso, há necessidade de muitos bits na instrução, de modo a
atender aos diversos campos de operandos.
A Figura 6.3 apresenta o formato de instrução de três operandos, onde, em geral, os campo
Operando 1 e Operando 2 representam o endereço de cada dado utilizado como operando e um uma
operação aritmética ou lógica e o operando 3 contém o endereço de onde o resultado da operação
deve ser armazenado.
C.Op. Op1 Op2 Op3
Figura 6.3 – Exemplo de formato de instruções com três operandos.
As instruções de três operando aplicadas as operações aritméticas são utilizadas como segue:
ADD Op1,Op2,Op3 (Op3) (Op1) + (Op2)
SUB Op1,Op2,Op3 (Op3) (Op1) -(Op2)
MPY Op1,Op2,Op3 (Op3) (Op1) * (Op2)
78
DIV Op1,Op2,Op3 (Op3) (Op1) / (Op2)
Para exemplificar sua utilização, consideremos que um programa escrito em linguagem de alto nível
(por exemplo, Delphi) contenha o comando mostrado na Equação 6.1, o qual calcula o valor de uma
expressão algébrica:
X = A * (B + C* D – E / F) (6.1)
Como resultado do processo de compilação, o referido comando será convertido em instruções de
máquina que, em conjunto, representam um programa com resultado idêntico ao do comando já
apresentado. Suponha que tenhamos disponíveis essas instruções de três operandos, teremos, em
Assembly, o seguinte programa equivalente:
MPY C,D,T1
DIV E,F,T2
ADD B,T1,X
SUB X,T2,X
MPY A,X,X
T1 E T2 foram empregadas como variáveis temporárias; todas as letras usadas representam
endereços simbólicos de memória. A ordem de execução foi a normal: da esquerda para a direita, de
acordo com a prioridade matemática.
Observamos que há operandos com endereços iguais, o que é um desperdício de espaço de
memória. Também deve ser observado que o número de instruções é igual ao de operações; isso
sempre acontecerá com instruções de três operandos, pois cada uma delas resolve por completo
uma operação.
Ainda que se tenha reduzido a quantidade de operandos (de quatro para três), continuamos a
consumir demasiado espaço de memória para a efetiva utilização dos operandos.
Pelo exemplo anterior pode ser observado que a maioria das instruções exige apenas dois
endereços, visto que o outro é repetido. Considerando a importância do problema de economia de
espaço de armazenamento, foram criados instruções com dois campos de operando, como mostrado
na Figura 6.4:
C.Op. Op1 Op2
Figura 6.4 – Exemplo de formato de instruções com dois operandos.
As instruções de dois operando aplicadas as operações aritméticas são utilizadas como segue:
ADD Op1,Op2 (Op1) (Op1) + (Op2)
SUB Op1,Op2 (Op1) (Op1) -(Op2)
MPY Op1,Op2 (Op1) (Op1) * (Op2)
DIV Op1,Op2 (Op1) (Op1) / (Op2)
Neste caso, o conteúdo de Op1 será destruído com o armazenamento, naquele endereço, do
resultado da operação. Pode-se evitar, quando necessário, essa destruição, salvando-se o valor da
variável, antes da execução da instrução.
Esse salvamento de variável pode ser realizado através de uma nova instrução:
MOVE Op1,Op2 (Op1) (Op1)
79
A seguir é mostrado o programa em linguagem Assembly, correspondente a equação 6.1, para
instruções de dois operandos:
MPY C,D
DIV E,F
ADD B,C
SUB B,E
MPY A,B
MOVE X,A
Observe que agora o programa contém uma instrução a mais que o número de operações da
expressão; e também, podemos observar que foram destruídos os valores armazenados nos
endereços correspondentes às variáveis A, B, C e E.
80
SUB Y
MPY A
Exercício:
1 - Crie um conjunto de instruções de dois operandos, definidas em linguagem Assembly,
necessárias para a realização de operações aritméticas e elabore programas para cálculo das
seguintes equações:
a) C = A * (B * (C – A) + (D – E / B) * D)
b) Y = A + B * (C – D * (E / (B – F)) + B) * E
2 - Considere instruções Assembly de um operando e elabore programas para cálculo das equações
do exercício anterior.
81
b) toda instrução consiste em uma ordem codificada (código de operação), para a UCP executar
uma operação qualquer sobre dados. No contexto da interpretação de uma instrução, o dado
pode ser um valor numérico, um caractere alfabético, um endereço (instrução de desvio);
c) a localização do(s) dado(s) pode estar explicitamente indicada na própria instrução, por um ou
mais conjuntos de bits, denominados campo do operando, ou implicitamente (quando o dado
está armazenado no acumulador, que não precisa ser endereçado por ser único na UCP).
Todos os exemplos apresentados até esse ponto definiram o campo operando como contendo o
endereço da MP onde está localizado o dado referido na instrução; no entanto, essa não é a única
maneira de indicar a localização de um dado, havendo outros modos de endereçamento.
Conforme será demonstrado a seguir, há instruções em que é ineficiente usar o dado armazenado na
MP, como por exemplo, no caso de um contador, o qual tem um valor fixo inicial e, durante a
execução do programa, é sistematicamente atualizado. Nesse caso, melhor seria se o referido
contador (dado) fosse inicialmente transferido para um registrador disponível na UCP e lá
permanecer (sendo diretamente atualizado na UCP) até o final da execução do programa, em vez de
ir da MP para a UCP e vice-versa (para atualização de seu valor), o que acarretaria considerável
gasto de tempo para os repetidos ciclo de leitura e gravação.
Por outro lado, a manipulação de vetores acarreta a necessidade de se estabelecer um método eficaz
de endereçamento para variáveis que ocupam posições contíguas de memória. E assim por diante.
Dentre os diversos modos de endereçamento atualmente empregados, os principais são:
imediato;
direto;
indireto;
por registrador;
indexado;
base mais deslocamento.
É o método mais simples e rápido de obter um dado, pois seu valor é indicado no campo do
operando da instrução, em vez de buscá-la na memória. A vantagem desse modo reside no curto
tempo de execução da instrução, pois não gasta ciclo de memória para sua execução, exceto o único
requerido para a busca da instrução.
Este modo é útil para inicialização de contadores; na operação com constantes matemáticas; para
armazenamento de ponteiros em registradores da UCP; ou para indicação da quantidade de posições
em que determinado número será deslocado para a direita ou para a esquerda (em operações de
multiplicação e divisão).
Uma de suas desvantagens consiste na limitação do tamanho do campo operando das instruções, o
que reduz o valor máximo do dado a ser manipulado.
Outra desvantagem é o fato de que, em programas repetidamente executados, com valores de
variáveis diferentes a cada execução, esse método acarretaria o trabalho de alteração do valor do
campo operando a cada execução.
Praticamente, todo computador (seja de grande porte ou micro) possui uma ou mais instruções que
empregam o modo de endereçamento imediato: para instruções de desvio, de movimentação de um
dado; para operações aritméticas com uma constante etc.
Ex1:
JMP Op CI Op
C. Op = A 82
C.Op. Op1
4 8 bits
Instrução: A35 (significa armazenar o valor 35 no
CI)
Ex2:
MOV R, Op R Op
C. Op R Op1 C. Op = 5
4 4 8 bits
É o mais antigo e um dos mais utilizados em arquitetura de UCP. Neste modo, o valor binário
contido no campo do operando da instrução indica o endereço de memória onde se localiza o dado.
O endereço pode ser o de uma célula onde o dado está inteiramente contido ou pode indicar o
endereço da célula inicial, quando o dado está armazenado em múltiplas células.
Quando um dado varia de valor a cada execução do programa, a melhor maneira de utilizá-lo é,
inicialmente, armazená-lo na MP (do dispositivo de entrada para a memória). O programa, então,
usa o dado através do modo direto, onde a instrução indica apenas o endereço onde ele se localiza.
Uma possível desvantagem desse modo está na limitação de memória a ser usada, conforme o
tamanho do campo operando. Isto é, se o campo tiver um valor, como, por exemplo, de 12 bits, com
o emprego do modo direto, somente se pode acessar as células de endereço na faixa de 0 a 4096
(decimal), correspondente aos valores binários 000000000000 a 111111111111.
Atualmente, onde o espaço de endereçamento de MP vem crescendo bastante (usa-se MP com
espaço de endereçamento da ordem de 32M células, 64M, 256M, etc.), não é desejável criar
instruções com campo de operando de tantos bits – para endereçar 64M células, seriam necessários
26 bits para endereço direto.
Ex3:
MP
C.Op. Op1
4 8 bits
LDA Op ACC (Op) ´´
C. Op = 7 ´´
Instrução: 73B (significa que após a execução dessa ´´
instrução, o ACC conterá o valor 05A) 3B 05A
´´
Ex2: ´´
C. Op Op1 Op2 ´´
4 8 8 bits 5C 103 15D
´´
ADD Op1, Op2 (Op1) (Op1) + (Op2) ´´
C. Op = B ´´
Instrução: B5C3B (somar o dado 103 armazenado na célula de
endereço 5C (Op1) com o dado 05A armazenado na célula de
endereço 3B (Op2) e armazenar o resultado (15D) na célula de
endereço 5C (Op1).)
83
6.2.3. Modo Indireto:
Neste modo, o valor binário do campo operando representa o endereço de uma célula, mas o
conteúdo da referida célula não é o valor de um dado (como no modo direto), é um outro endereço
de memória, cujo conteúdo é o valor do dado.
Assim, há um duplo endereçamento para o acesso a um dado e, conseqüentemente, mais ciclos de
memória para buscar o dado.
O endereço intermediário (conteúdo da célula endereçada pelo valor do campo operando) é
conhecido como ponteiro, pois indica a localização do dado (aponta para o dado); conceito de
ponteiro de dado é largamente empregado em programação.
MP
Ex3:
C.Op. Op1 ´´
4 8 bits ´´
74 05D
LDA Op ACC ((Op)) ´´
C. Op = 7 ´´
Instrução: 774 (74 é o endereço da célula, cujo conteúdo (5D) é o
endereço do dado (1A4). Após a execução, o valor 1A4 estará 5D 1A4
armazenado no ACC.) ´´
Com esse método, elimina-se o problema do modo direto, de limitação do valor do endereço do
dado, pois estando o endereço armazenado na memória (pode ocupar uma ou mais células), se
estenderá ao tamanho necessário à representação do maior endereço da MP do sistema de
computação em uso.
Um dos empregos do modo indireto é na manutenção de ponteiros de dados. Se tivermos uma
relação de dados a serem movimentados para novas posições de memória (caso, por exemplo, de
elementos de vetores) usando o modo indireto, basta apenas modificar o valor da célula endereçada
no primeiro nível (campo do operando), isto é, modificar o endereço de acesso ao dado, sem alterar
o valor do campo operando.
A grande desvantagem desse modo é, obviamente, a maior quantidade de ciclos de memória
requerida para completar o ciclo da instrução.
Observações:
1 – Há dois métodos de modo de endereçamento de instrução:
a) cada código de operação estabelece não só o tipo da instrução como também o modo de
endereçamento (ver Figura 6.6);
C. Op. Op1
4 8 bits
C. Op. Sigla Descrição
2 LDI Op ACC Op (imediato)
3 LDA Op ACC (Op) (direto)
33C A5D
4 LDID Op ACC
33D ((OP))
43E
33E (indireto)
341
33F 03C
340 33D
Instrução 341 ACC
2AB
84
HEX. Binário (Após execução)
233E 0010001100111110 033E
333E 0011001100111110 0341
433E 0100001100111110 02AB
85
6.2.4. Endereçamento por Registrador:
Este modo tem características semelhantes aos modos direto e indireto, exceto que a célula (ou
palavra) de memória referenciada na instrução é substituída por um dos registradores da UCP. Com
isso, o endereço mencionado na instrução passa a ser o de um dos registradores, e não mais de uma
célula da MP.
A primeira vantagem, logo observada, consiste no menor número de bits necessários para endereçar
os registradores, visto que esses existem em muito menor quantidade que as células de memória.
Um computador que tenha uma UCP projetada com 16 registradores (como alguns sistemas IBM e
DEC) requer apenas 4 bits para endereça-los.
Outra vantagem está no próprio emprego do dado, que passa a ser armazenado em um meio
(registrador) cujo acesso é muito mais rápido que o acesso à memória.
Para mostrar, de modo mais objetivo, a utilidade e as vantagens do uso de registradores no
endereçamento de instruções, vamos considerar a execução do conjunto de instruções mostrado a
seguir (pode ser parte de programa), através de dois modos diferentes: com emprego do modo de
endereçamento por registradores e sem emprego desse modo de endereçamento.
As instruções LDI R1,1 e LDI R2,100 armazenam em registradores, respectivamente, o valor inicial
(1) e o valor final (100) do contador. No exemplo foram indicados os registradores R1 e R2, mas
podem ser usados quaisquer registradores disponíveis.
As instruções SUBR R1,R2 e INC R1 serão executadas manipulando-se os valores armazenados
dentro da UCP, nos registradores escolhidos, R1 e R2, cujos endereços constam da instrução
(campo R); não há, portanto, acesso à MP.
Outra vantagem do emprego do modo de endereçamento por registrador – economia de bits nas
instruções – pode ser verificada pela seguinte comparação:
Instrução com uso de registradores
16 bits
C.Op. R1 R2
8 4 4 bits
No primeiro caso, o registrador endereçado na instrução contém o dado a ser manipulado; no outro,
o registrador referenciado armazena o endereço de uma célula de memória onde se encontra o dado;
a instrução conterá, como sempre, o endereço do registrador.
A Figura 6.9 mostra dois tipos de instruções que empregam o modo de endereçamento por
registrador.
Em 6.9 (a) observa-se que a instrução possui dois campos contendo, cada um, o endereço de um
registrador (um dos 16 possíveis), o qual poderá ter armazenado o dado (direto) ou o endereço da
MP onde estará o dado (indireto).
Em 6.9 (b), a instrução possui dois campos de operando, um dos quais é o endereço de um
registrador (que contém o dado) e o outro é o endereço de uma célula da MP, que armazena o dado
(direto); pode-se, ainda, ter uma variação desse formato, onde o campo operando pode conter o
próprio valor do dado (imediato).
87
C.Op. R1 R2 C.Op. R Operando
(a) (b)
Nesse caso, haveria necessidade de se escrever instruções para cada uma das 100 operações de
soma a serem efetivamente realizadas pela máquina. Exemplificando com as instruções de um
operando adotadas nesse texto, teríamos um programa semelhante ao mostrado na Figura 6.10.
Evidentemente, essa técnica de programação é ineficiente e trabalhosa, usando o computador
apenas como calculadora, já que o programador terá toda a carga de trabalho.
LDA A(1)
ADD B(1)
STA C(1)
LDA A(2)
ADD B(2)
STA C(2)
---------------
---------------
LDA A(100)
ADD B(100)
STA C(100)
HLT
Figura 6.10 – Prog-1, em Assembly, usando modo de endereçamento direto.
MP
C. Op. Op1 103A 11A00
4 16 bits 103B 21A64
Cont. do
LDA Op C. Op = 1 trecho do
ADD Op C. Op = 2 Programa
STA Op C. Op = 3
(N) 19FF
------------------------------ A(1) 1A00
INC Op C. A(2) 1A01
A(3) 1A02
Op = 8
“ “
DCR Op C. Op = 9
------------------------------- B(1) 1A64
B(2) 1A65
JMP Op C. Op = C
“ “
JNZ Op C.
Op = D
C(1) 1AC8
HLT C. Op = F C(2) 1AC9
“ “
Sua grande desvantagem, porém, reside no fato de que o valor de uma instrução (o campo
operando) é alterado durante a execução do programa. Caso houvesse alguma interrupção anormal
no meio da execução, seria preciso reinicializar os valores iniciais, bem como em toda nova
execução do programa, pois ele termina com os valores de A(100), B(100) e C(100).
90
C. Op. Op1 MP
4 16 bits 103A
103B
T LDA A(1)
ADD B(1)
1503 Ponteiro para
STA C(1) 1504 Área de dados
INC A 1505
INC B
INC C (N) 19FF
DCR N A(1) 1A00
JNZ T
HLT B(1) 1A64
C(1) 1AC8
O programa é basicamente semelhante ao do exemplo anterior (modo direto), exceto que a primeira
execução das instruções INC somaria 1 aos valores 1A00, 1A64 e 1aC8 (respectivamente, conteúdo
das células de endereços 1503, 1504 e 1505). Isso permitiria apontar para os elementos A(2), B(2) e
C(2).
Outra diferença fundamental em relação ao método anterior é que, nesse caso, os valores de
endereços dos elementos não fazem parte das instruções; estão armazenados na MP e, portanto, as
instruções não são alteradas durante a execução do programa.
Essa é a técnica mais “limpa” e eficiente, em termos de programação, embora haja um gasto maior
de tempo na execução do programa, devido à maior quantidade de acessos do modo indireto.
91
A grande vantagem dessa técnica reside na rapidez de execução das instruções de acesso aos dados,
visto que a alteração do endereço dos elementos é realizada na própria UCP.
Muitos computadores modernos possuem instruções no modo indexado, cujo exemplo de emprego
é apresentado nas Figuras 6.14 e 6.15 (ainda a mesma soma dos vetores A, B e C, dos métodos
anteriores – Prog-1).
Em primeiro lugar, move-se (MVI) o valor inicial do índice para o registrador escolhido como Rx
(foi escolhido como exemplo o registrador R4) e, assim, teremos a instrução, em linguagem de
máquina:
0 4 0 0 0 116
MVI (R4),1
MVI (R2),100
T LDA (R4), 19FF
ADD (R4), 1A63
STA (R4), 1AC7
INC (R4)
DCR (R2)
JZR (R2), T
HLT
92
UCP
Assumimos que um dos 16 reg. da UCP
ULA será usado como Rx. Seu endereço consta
do campo R da instrução
ACC
Rx MP
103A
“
“
C.Op. R Operando
4 4 16 bits A(1) 1A00
“
0 – MVI Rx, Op (Rx) Op “
1 – LDA Rx, Op ACC (Op + (Rx))
2 – STA Rx, Op (Op + (Rx)) ACC B(1) 1A64
3 – ADD Rx, Op ACC ACC + (Op + (Rx)) “
4 – JMP Op CI Op “
5 – JZR Rx, Op CI Op, se (Rx) = 0
6 – DCR Rx (Rx) (Rx) – 1 C(1) 1AC8
7 – INC Rx (Rx) (Rx) + 1
8 – END Parar
0
4K
Rb1 8 000 8K
12K
16K
Rb2 20 000 20K
24K
28K
Rb3 36 564 32K
36K
40K
Rb4 57 400 44K
48K
52K
Da descrição dos modos indexado e base mais deslocamento, podemos observar que o processo de
cálculo do efetivo endereço de acesso é idêntico em ambos os modos. A diferença está no conceito
de cada um, não na sua implementação.
A indexação é empregada quando se deseja acessar diferentes dados, através de alterações do
endereço, por incremento (ou decremento) do valor do registrador índice. Quando a modificação de
endereço é realizada para relocação de programa, basta uma única alteração do conteúdo do
registrador base (no modo base mais deslocamento).
Sobre o que realmente acontece na máquina, podemos observar:
a) vários dados são acessados com diversos valores de registrador índice e um único valor no
campo operando;
b) vários dados são acessados com um único valor de registrador base e valores diferentes no
campo deslocamento da instrução.
94
Capítulo 7 – Dispositivos de Entrada e Saída - Periféricos
Periféricos são todos os dispositivos de entrada e saída que fornecem qualquer meio para que o
usuário tenha acesso ao computador.
Hoje em dia existe uma vasta variedade de periféricos tanto para a entrada quanto para a saída de
dados, neste trabalho tentamos abordar os mais usados e as novidades, dentre eles estão os
dispositivos mais básicos como o teclado que dá entrada nas informações da maioria dos
microcomputadores como o monitor e impressoras que dão saídas dessas informações.
Com o passar do tempo foi surgindo a necessidade de criar novos periféricos para atender as
necessidades dos usuários, como as placas de modem e rede que dia após dia estão sendo mais
usadas tanto para a entrada de informações como para a saída, também existe os periféricos que
armazenam as informações, como os disquetes, Zip drivers, discos rígido e DVDs.
Com essa tecnologia foram surgindo periféricos como scanner, camera de vídeo e fotográficas
digitais que capturam caracteres e imagens dando a possibilidade para que a entrada e saída de
informações passem á ser enviadas de qualquer parte do mundo, ampliando e facilitando assim a
comunicação entre homem máquina.
7.1. TECLADO:
Entramos em contato direto com o teclado do PC mais do que com qualquer outro componente.
Podemos passar anos sem sequer ver – quanto mais tocar – o processador do PC ou seu disco
rígido, mas a maioria das pessoas presta muito mais atenção nestes componentes que a uma parte do
computador que determina não se o computador funciona bem, mas quão eles funcionam.
Um teclado mal projetado age – constantemente como um empecilho à produtividade e pode até
mesmo causar problemas de saúde. Um teclado bem projetado é aquele que nunca pensamos os
pensamentos parecem fluir diretamente de nossa mente para a tela de o computador sem nos darmos
conta do que estão fazendo nossos dedos.
Apesar da importância do teclado, grande parte dos fabricantes - e quase todos os usuários –
prestam pouca atenção a ele. Alguns teclados de hoje estão equipados com trackball integrado ou
algum tipo de dispositivo de indicação e outros oferecem inclinações diferentes, com que os
projetistas esperam evitar a síndrome dos movimentos repetitivos. Algumas poucas alterações
radicais têm aparecido - teclado côncavos com suas teclas eqüidistantes dos dedos ou teclados que
podem ser operados com uma mão – não tiveram sucesso.
Seja porque os fabricantes não têm imaginação ou porque os usuários de computadores não se
interessam, a forma básica com que um teclado funciona não se alterou significativamente desde
que o primeiro IBM PC foi introduzido no inicio dos anos 80. Embora a disposição de todas as
teclas exceto as alfanuméricas é válida em geral particularmente em teclados de notebooks - a única
diferença prática em como funcionam os teclados é o mecanismo que converte o movimento da
tecla em um sinal enviado ao computador. Exceto por esta diferença, a movimentação do sinal
através do resto do teclado e do PC é uma tecnologia comprovada pelo tempo.
95
Figura 7.1 - Teclado
7.2. MOUSE:
Trata-se de uma caixinha com um ou mais pulsadores na parte superior, conectado mediante um
cabo (a cauda) ao computador. Recebe este nome pôr seu aspecto semelhante ao de um ratinho (lhe
faltam as orelhas).
96
5. Os sinais são enviados do PC para o programa através do cabo do mouse, que converte o
número, a combinação e a freqüência dos sinais dos dois codificadores na distância, direção e
velocidade necessária para mover o cursor na tela.
6. Pressionar um dos botões localizados na parte superior do mouse faz com que o sinal seja
enviado ao PC, que por sua vez o passa para o programa. Baseado em quantas vezes você clica e
na posição do cursor no momento do clique o programa executa a tarefa para o qual foi
projetado.
7.3. MONITOR:
Alguns anos, monitores coloridos para computadores eram considerados frívolos mais
próprios para jogos que para um um trabalho real. A maioria dos programas baseava – se em textos
e o texto produzido pelos monitores coloridos era grosseiro e de difícil leitura. Mesmo em
aplicações gráficas, os monitores CGA ( do inglês color graphics adapter, ou adaptador gráfico
1colorido), que foram os primeiros monitores coloridos para os computadores Dos, foram
seriamente afetados por sua incapacidade de apresentar mais que quatro cores entre dezesseis
possíveis na máxima resolução do monitor – uma resolução repleta de zigzags em lugar de curvas e
linhas retas.
Hoje, tudo mudou. A cor não apenas é considerada aceitável para a computação profissional,
mas é preferível em uma arena computacional que, com ambientes como windows e OS/2, é cada
vez mais gráfico. Os programas de hoje empregam cores não apenas para se tornar mais bonitos,
mas transmitir mais informações.
Os monitores coloridos de hoje são uma imagem distante dos monitores limitados e com
cores e gráficos grosseiros de há apenas uma década. Em lugar de quatro cores, uma palheta de
pelo menos 256 cores é comum e alguns monitores apresentam milhares de cores. Em lugar da
resolução mais rápida para um esboços de 200 linhas de altura por 640 pixels de largura dos
monitores CGA, os modernos monitores proporcionam resoluções de 768 linhas de altura por 1024
pixels de largura sem grande esforços. ( Um pixel, abreviação do inglês para picture element, ou
elemento da figura, é a menor unidade lógica que pode ser usada para construir uma imagem na
tela. Um único pixel é criado usualmente por diversos pontos de luz adjacentes. Quando menos
pontos de luz usados para criar um pixel, maior a resolução do monitor).
O segredo dos melhores monitores de hoje é uma combinação do adaptador VGA ( do inglês
variable – graphics – array, ou matriz gráfica variável ) e monitores versáteis que podem trabalhar
com uma diversidade de sinais da placa adaptadora. Monitores mais antigos usavam exclusivamente
informações digitais, o que significa que um pixel estava ou não ligado ou desligado, sendo difícil
atingir diminutas variações de cor. O VGA emprega um sinal analógico que converte a informação
digital em diferentes níveis de tensão que variam o brilho de um pixel. O processo requer menos
memória e é mais versátil. Monitores Super VGA usam conjuntos especiais de microcircuitos e
mais memória para aumentar ainda mais a quantidade de cores e a resolução.
97
Os novos monitores começam a chegar ao Brasil, visando inicialmente alguns segmentos do
mercado corporativo, como bancos, hospitais e consultórios médicos e odontológicos. Os monitores
de tela plana ainda são uma tecnologia nova, que só deve ser popularizada daqui a quatro, cinco
anos ”.
O alto custo de produção dos monitores LCD acaba refletindo no preço final do produto.
Como não há produtividade em larga escala e o material usado na fabricação dos LCD é muito
delicado, susceptível a perdas por excesso de calor e umidade, um monitor TFT de tela fina pode
custar até o dobro de uma estação de trabalho completa, equipada com processador Pentium MMX
de 200MHZ e 32 MB de RAM. Há linhas de produção em que as perdas chegam a 80% o que
também acaba encarecendo os notebooks, que utilizam o LCD como um dos principais
componentes.
Embora a beleza dos monitores de painel fino pese na decisão da compra, de acordo com os
fabricantes, é a versatilidade que eles proporcionam aos usuários seu principal atrativo. Eles podem
ser pendurados na parede ou acoplados a braços moveis, consomem menos energia do que os
monitores convencionais e não emitem radiação nem ondas eletromagnéticas que interfiram no
funcionamento de outros aparelhos eletrônicos. Alem disso, por serem em média 60% mais finos do
que os monitores de cinescópio vem atender principalmente à necessidade mundial de economia de
espaço, tanto no mercado corporativo quanto no doméstico.
7.4. IMPRESSORA:
Impressora é um equipamento que permite criar cópias em papel de gráficos, textos, desenhos,
planilhas e outros trabalhos criados no computador.
Existem vários tipos de impressoras profissionais. Cada uma delas possui características específicas
para valorizar a qualidade de imagem produzida.
Drivers de Impressora
98
As impressoras deixaram de ser apenas complementos para o computador, ganhando a
capacidade de interpretar, armazenar e responder aos comandos recebidos. Muitos modelos têm
memória, processador e até disco rígido comparáveis aos dos computadores.
Com linguagens de impressão: essas impressoras utilizam uma linguagem especial para descrever o
conteúdo e a formatação de página a ser impressa. Linguagens desse tipo são conhecidas com PDLs
(Page Description Language – Linguagem de Descrição de Páginas), ou simplismente linguagens de
impressoras, e são usadas na comunicação entre o computador e a impressora.
Isso é importante em empresas que têm muitos equipamentos diferentes. Uma impressora pode
ser usada, por exemplo, apenas para fazer cópias de um trabalho que ainda será avaliado. Depois
de aprovado, o trabalho é enviado para uma impressora de melhor qualidade que produz o
impresso final.
Com o uso de uma dessas linguagens, a impressão dos documentos é o resultado de um trabalho
conjunto entre o driver da linguagem instalado no computador e o interpretador da linguagem
que está na impressora. Sendo assim, após criar um documento, o usuário seleciona o comando
Imprimir no menu Arquivo de seu programa e o driver da linguagem entra em ação. Ele traduz
todo o conteúdo do documento, seja textos ou imagens, para a linguagem de descrição da
pagina. A seguir, esta página codificada é enviada para a impressora, equipada com um
interpretador de linguagem que conhece as capacidades da impressora, assim, o interpretador
permite que os comandos solicitados na descrição da página sejam executadas de forma
otimizada, tirando o máximo de proveitos dos recursos da impressora, como resolução e
capacidade de cores.
As linguagens de impressoras mais comuns são:Adobe, PostScript e PCL ( Printer Control
Language) da HP
Impressoras de Rede
As impressoras de rede podem ser conectadas diretamente a uma rede de computadores e atendem
aos pedidos de impressão enviados pelo usuário ligado (conectado) à rede, dispensando o
computador que atua como servidor de impressão, o que normalmente é necessário. Os trabalhos de
impressão são enviados via rede para o servidor de impressão, que repassa para a impressora a ele
ligada.
Impressora Matricial
99
Esta impressora monta os caracteres a partir de uma série de pequenos pontos que são impressos
muito próximos uns dos outros; máquina que imprime informações de um computador, imprimindo
uma linha de cada vez, é abastecida por uma fita semelhante a fita de uma máquina de escrever.
Solução de impressão matricial de pontos de baixo custo e alta confiabilidade. Com velocidade de
impressão de até 600 cps, possui capacidade flexível no manuseio de formulário.
A tecnologia de jato de tinta tem evoluído continuamente. Cada novo modelo que chega ao mercado
produz imagens um pouco mais próximas da qualidade fotográfica, e com rapidez cada vez maior.
E o melhor é que não se paga mais por isso – o preço dessas máquinas até se reduziu ao longo
desses anos. Ao mesmo tempo, a cor, que era um item opcional ou inexistente em muitos modelos,
tornou-se uma característica básica dessas impressoras.
Impressora Laser
Impressora de computador de alta resolução que usa uma fonte de laser para imprimir padrões de
caracteres matriciais de alta qualidade no papel (estas impressoras têm uma resolução muito maior
que as impressoras normais). As impressoras a laser imprimem em maior velocidade do que a
matricial e a jato de tinta, sua resolução é de altíssima qualidade, seu preço também é mais alto do
que as outras duas, pois contém mais recursos e maior velocidade
Controlada pela Advanced Function Common Control Unit (AFCCU) que consegue imprimir
documentos complexos em alta velocidade, assim como a troca de fluxo de dados para aplicações
que utilizam IPDS, HP PCL ou PostScript
Sempre que enviamos uma página à impressora laser, colocamos em movimento uma complexa
série de passos tão eficientemente organizados como uma fábrica e tão precisos quanto a
coreografia de um ballet.
Precisa interpretar os sinais vindos do computador, traduzir estes sinais em instruções que
controlam o disparo e deslocamento do raio laser, controlar o movimento do papel, polarizar o
papel para que possa receber o toner negro que cria a imagem e fundir esta imagem no papel.
O resultado é uma impressão de alta qualidade. Não apenas a impressora laser produz cópias mais
rapidamente do que a impressora matricial, mas as páginas impressas a laser têm detalhes mais
nítidos do que a maioria das impressoras matriciais. A impressora laser, para o futuro visível,
represente o padrão para a impressão computadorizada de alta qualidade, somente agora sendo
rivalizadas pelos avanços na tecnologia de impressão à jato de tinta.
O sistema operacional do PC ou o programa envia sinais para a impressora laser determinando onde
cada ponto do toner de impressão deve ser colocado no papel. Os sinais são de dois tipos - ou um
simples código ASCII ou um comando de linguagem de descrição de página.
Ao mesmo tempo em que o cilindro começa a girar, um sistema de engrenagens e roletes alimenta
uma folha de papel no módulo de impressão através de um trajeto denominado cadeia do papel. A
cadeia do papel faz o papel passar por um fio eletrificado para transferir carga elétrica estática para
o papel. A carga pode ser positiva ou negativa, dependendo do projeto da impressora. Neste
exemplo, assumimos que a carga seja positiva.
No local onde cada ponto de luz atingiu o cilindro, provoca uma modificação em um filme
carregado negativamente - geralmente feito de óxido de zinco e outros materiais - na superfície do
cilindro alterando sua carga de forma que os pontos tenham a mesma carga elétrica que a folha de
papel. Neste exemplo, a luz modificaria a carga de negativa para positiva. Cada carga positiva
marca um ponto que depois será impresso em preto no papel. As áreas do cilindro que permanecem
intocadas pelo raio laser mantêm sua carga negativa e resultam em áreas brancas na cópia impressa.
A cerca da metade da rotação do cilindro, o OPC passa a ter contato com uma bandeja que contém
um pó negro denominado toner. O toner neste exemplo possui uma carga elétrica negativa - o
oposto das cargas criadas no cilindro pelo raio laser. Como partículas de carga estática oposta se
atraem mutuamente, o toner adere ao cilindro em uma disposição de pequenos pontos nos locais
onde o laser criou uma carga.
À medida que o cilindro continua a girar, é pressionado contra a folha de papel que está sendo
alimentada pela cadeia do papel. Embora a carga elétrica no papel seja a mesma que a carga do
cilindro criada pelo raio laser, a carga no papel é maior e remove o toner do cilindro para o papel.
A rotação do cilindro deixa sua superfície próxima a um fio fino, denominado fio corona. É assim
denominado porque a eletricidade, ao passar pelo fio, cria um anel, uma coroa, em torno de si que
possui uma carga positiva. O corona retorna toda a superfície do cilindro a seu estado original com
cargas negativas, de modo que uma nova página pode ser desenhada na superfície do cilindro pelo
raio laser.
Outro conjunto de roletes puxa o papel por uma parte do módulo de impressão denominado unidade
fusora. Ali, pressão e calor fixam o toner permanentemente no papel pela fusão e pressionante de
uma cera que faz parte do toner. O calor da unidade fusora faz com que o papel recém saído de uma
impressora laser esteja morno.
A cadeia do papel empurra o papel para fora da impressora, visualmente com o lado impresso para
baixo para que as páginas na bandeja de saída fiquem na ordem correta.
102
Figura 7.4 Impressora Laser
Na descrição acima, as cargas elétricas em todas as etapas podem ser invertida e o resultado será
praticamente o mesmo. O método descrito aqui é verdadeiro para a maioria das impressoras que
usam o módulo de impressão Canon, como os modelos Hewlett-Packard (HP), que são o padrão
entre as impressoras laser. Este enfoque é denominado escrita em preto porque todos os pontos
gravados no cilindro pelo raio laser marcam um local que será preto na cópia impressa. Entretanto,
há uma forma alternativa de funcionamento de uma impressora laser e que produz resultados
perceptivelmente diferentes. O outro método, usado em impressão Ricoh, é denominado escrita em
branco, porque onde quer que o raio laser atinja, cria a mesma carga que a do toner - o toner é
atraído para as áreas não afetadas pelo raio de luz. Impressoras de escrita em branco geralmente
produzem áreas negras mais escuras e impressoras de escrita em preto geralmente produzem
detalhes mais perfeitos.
7.5. SCANNER:
Eles permitem que o PC converta uma foto ou imagem em um código de forma que o programa
gráfico ou de editoração eletrônica possa produzi-la na tela, imprimi-la através de uma impressora
ou converter páginas datilografadas em páginas possíveis e editoradas. Existem três principais tipos
de Scanners:
A imagem é capturada com maior precisão, mas existe a limitação de se trabalhar somente com
folhas de papel de tamanho normal.
Scanner de mesa:
Necessita de uma série de espelhos para guardar a imagem capturada pela cabeça de varredura em
movimento e focalizada nas lentes que alimentam a imagem para um banco de sensores. Como
nenhum espelho é perfeito, a imagem sofre uma certa degradação cada vez que é refletida.
Scanner manual:
Os Scanners manuais dependem da mão humana para mover a cabeça de varredura. O mais barato
por que não precisa de um mecanismo para mover a cabeça da varredura e nem o papel.
Os três tipos de Scanners diferem principalmente quanto à forma em que a imagem e a cabeça de
varredura movimentam-se. Alguns Scanners são capazes de distinguir somente preto e branco, estes
103
sendo mais utilizados para textos. Outros distinguem o cinza. Scanners em cores utilizam filtros
vermelhos, verdes e azuis para detectar as cores na luz refletida.
Os disquetes, assim como os winchesters são periféricos de acesso aos dados aleatórios. A fita
magnética é um meio de armazenamento seqüencial, ou seja, temos que passar por todos os dados
gravados para acessarmos um byte no final da fita.
Os floppy drives utilizam discos magnéticos para a gravação e leitura de dados. Seu acesso é lento
(0.06 Mbps em discos de 1.44 KB) e tem capacidade limitada até 2.88 MB por disquete. São
conectados ao conector de unidades de disco flexível. Cada interface de conexão, localizada na
placa-mãe, pode ter até duas unidades de disco.
As chamadas mídias de armazenamento removíveis vêm tendo grande aceitação no mercado com o
Zip Drive da Iomega. É um drive externo ligado a porta paralela (ou interno quando conectado a
uma placa SCSI) que aceita pequenos discos com capacidade para armazenar até 100 MB de
informação. Em agosto de 97, foi lançado o SuperDisk LS-120 da O. R. Technology, que lê os
disquetes tradicionais de 3½" e discos de 120 MB. Ao contrário do Zip Drive, o LS-120 é embutido
no computador.
O drive HiDF (High Capacity Floppy Disk) que aceita discos com capacidade de armazenar 200
MB em cada lado com taxa de transferência de dados estimada em 3.6 Mbps. Usando tecnologia de
cabeça voadora para leitura de dados, recurso usado hoje para discos rígidos, o disco do HiFD
atinge 3.600 rpm, podendo também ler disquetes de 3. As informações nos disquetes dividem-se
basicamente em trilhas que são compostas de setores. Os setores formam o cluster (explicado
abaixo).
7.7. HD:
Utiliza também discos magnéticos montados internamente em um eixo de rotação comum (splindle
motor) de 4500/7200 rpm e tem uma performance muito melhor que a dos drives. Seu acesso é
medido em ms (milisegundos ou 10-3 segundos) e tem capacidade de até vários GB.
O Winchester divide-se primeiramente em cilindros. Cada cilindro é dividido em trilhas e estas em
setores (geralmente, de 512 KB). Os setores são organizados em clusters ou unidade alocável. O
cluster é a maior parte endereçável nos discos magnéticos, ou seja, é a menor unidade de espaço em
disco que pode ser atribuída a um arquivo.
Em uma partição de 1024 MB ou mais, cada cluster tem 64 setores (32 KB), enquanto discos de 512
MB até 1024 MB adotam clusters de 32 setores. Isto significa que, em uma partição com mais de
1024 MB, se for gravado um arquivo de 1 KB serão disperdiçados 31 KB, já que nenhum outro
arquivo poderá ocupar aquele cluster.
104
Um cluster pode ter o tamanho máximo de 64 setores (32 KB) o que obriga que uma partição, em
FAT16 (explicada abaixo), tenha no máximo 2 GB. Veja tabela abaixo:
Se você dividir o espaço ocupado no seu disco (em bytes) pelo tamanho do cluster correspondente a
capacidade do Winchester, terá como resultado um número inteiro.
Para diminuir o desperdício de espaço nos discos de alta capacidade (mais de 1024 MB) ou , por
obrigação, discos com mais de 2 GB, é recomendável o particionamento do disco. Dessa forma, o
sistema operacional passa a reconhecer o Winchester como várias unidades (C:, D:, E:, etc.). Como
cada unidade terá um tamanho menor do que o Winchester inteiro, os clusters serão também
menores, refletindo no desperdício.
Como os arquivos têm diferentes tamanhos, o S.O reparte o mesmo em vários pedaços distribuindo-
os pelos espaços livres no disco. Os programas desfragmentadores fazem justamente o serviço de
reordenar o arquivo em clusters contínuos, ou seja, em sequência, aumentando a velocidade de
acesso aos arquivos.
A FAT16 (16 bits) é uma estrutura criada no MS-DOS para a localização dos clusters nos disquetes
e winchesters. A FAT de 16 bits é capaz de endereçar 65526 clusters. Na chamada FAT32 (32 bits),
utilizada no Windows 9X, 4 bits são reservados e 228 clusters podem ser endereçados. Isto permite
criar desde partições de 8 GB com clusters de 4 KB de tamanho até partições de 2 TB (2048 GB)
com clusters de 32 KB.
Atualmente temos dois padrões principais de Hard-Disk quanto a interface, EIDE e SCSI. Os HD
EIDE são mais comuns atualmente e os SCSI apresentam uma melhor performance e
confiabilidade. A interface IDE original suporta transferência de dados de 3.3 MB por segundo e
tem um limite de 538 MB por acessório (disco). A recente versão da IDE, chamada enhanced IDE
(EIDE) ou Fast-IDE, suporta transferência de dados de até 16.6 MB por segundo e dispositivos de
armazenamento de até 8.4 GB. Estes números se comparam ao que a interface SCSI oferece.
Atualmente, como as interfaces IDE (original) estão em desuso, é comum referir-se as interfaces e
discos EIDE como simplesmente IDE. Veja Interfaces de Winchester para mais detalhes.
Os hard-disk podem também se diferenciar pelo seu tamanho (fator de forma). Atualmente temos os
HD de 3½", mais comuns, e os HD de 2½" utilizados nos notebooks.
105
7.7. CD-ROM:
A memória de armazenamento, mais conhecida como buffer, vem incorporada com a unidade de
CD-ROM e é responsável por acumular grandes segmentos de dados lidos antes do envio para
processamento pela placa-mãe do sistema computacional. Quanto maior a capacidade do buffer,
melhor a performance do aparelho a mais alto o seu custo.
Recomenda-se, atualmente, um mínimo de 64 kilobytes.
O formato de gravação empregado nos CD-ROMs também baseia-se em trilhas subdivididas em
setores e em uma tabela de alocação de arquivos. As trilhas porêm, são elípticas, formando uma
"espiral infinita", ao invés de concêntricas.
Os drives de CD-R (Recordable) utilizam CDs especiais para gravar dados. Uma vez gravados,
esses dados não podem ser apagados nem reescritos. A gravação das informações se baseia em
diferentes níveis de aquecimento da área de disco. Os drives de CD-RW (Rewritable), podem ser
utilizados com discos do seu padrão para gravar e apagar dados (como um disco rígido por
exemplo). A superfície da mídia pode ser requentada até 1000 vezes. Os atuais gravadores de CD-R
e RW dispõem do recurso de multisseção, que permite adicionar dados a um disco já gravado.
Todos eles permitem leitura dos discos CD-ROM tradicionais. Sobre as características de
velocidade, esses drives possuem taxas de transferência diferentes de escrita (mais lenta) e leitura.
106
7.7. DVD:
A procura por mais memória é uma constante na informática e motiva as indústrias desenvolver
novos dispositivos de armazenamento com o DVD. Existem 3 tipos de DVD: o DVD VÍDEO (para
filmes), DVD ÁUDIO (para músicas) e o DVD ROM (para aplicações em computadores).
Estaremos dando enfoque somente ao DVD ROM.
O atrativo do DVD é sua flexibilidade, pois podemos executar software em CD-ROM, CDs de
música, programas em DVD ou assistir filmes. Alguns aparelhos não lêem CD-R.
Projetados para substituir os drives de CD-ROM, o DVD-ROM oferece como vantagem a sua
capacidade de armazenagem com discos que guardam de 4,7 a 17 GB (de 7 a 26 vezes mais que um
CD-ROM) contra os 700 MB das mídias de CD. Através desses aparelhos podemos ver imagens
nítidas de alta qualidade em som estéreo acompanhados é claro de seus acessórios (placa MPEG
para descompressão de vídeo, cabo, manuais e o software de reprodução). Aplicações que antes se
espalhavam por vários CDs, como bibliotecas, de mapas, jogos e grandes bases de dados cabem
num só DVD.
Comparativo entre as duas mídias:
DVD Parâmetro CD
1 ou 2 Número de lados 1
1 ou 2 Número de camadas 1
600 KB/s Filmes - 1,3 Taxa de transferência 150 KB/s básico - 1,8
MB/s Dados média MB/s (12x)
107