ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES

Janeiro - 2004 Prof. Welfane Kemil Tao FAVI

ÍNDICE:
ARQUITETURA E ORGANIZAÇÃO ______________________________________________ 1 DE COMPUTADORES__________________________________________________________ 1

CAPÍTULO 1 – EVOLUÇÃO HISTÓRICA DOS COMPUTADORES _______ 5
1.1 INTRODUÇÃO:__________________________________________________________ 1.1.1 Conceituação: ________________________________________________________ 1.1.2 Sistemas: ____________________________________________________________ 1.1.3 Sistemas de Computação: ______________________________________________ 1.2 HISTÓRICO: ____________________________________________________________ 1.2.1. Época dos dispositivos mecânicos (500 a.c – 1880) __________________________ 1.2.2. Época dos dispositivos Eletromecânicos (1888-1930) ________________________ 1.2.3. Época dos componentes eletrônicos – Primeiras Invenções (1930-1945) ________ 1.2.4. Época dos componentes eletrônicos (1945 - ?)______________________________ 5 5 5 6 6 6 7 7 7

CAPÍTULO 2 – SISTEMAS DE NUMERAÇÃO E ARITMÉTICA COMPUTACIONAL ___________________________________________________ 9
2.1 SISTEMAS DE NUMERAÇÃO: ____________________________________________ 9

2.2 CONVERSÃO ENTRE BASES: ____________________________________________ 9 2.2.1 De binário, octal, e hexadecimal para decimal: ____________________________ 9 2.2.2 Conversão de decimal para binário, octal e hexadecimal: __________________ 10 2.2.3 Conversão de binário para octal _______________________________________ 10 2.2.4 Conversão de octal para binário: ______________________________________ 11 2.2.5 Conversão de binário para hexadecimal: ________________________________ 11 2.2.6 Conversão de hexadecimal para binário: ________________________________ 11 2.3 ARITMÉTICA COMPUTACIONAL: ______________________________________ 2.3.1 Procedimento de Adição: _____________________________________________ 2.3.2 Procedimento de Subtração: __________________________________________ 2.3.3 Procedimento de Multiplicação: _______________________________________ 2.3.4 Procedimento de Divisão:_____________________________________________ 2.3.5 Adição Utilizando Números Com Sinal: _________________________________ 2.3.6 Aritmética Complementar: ___________________________________________ 2.4 NÚMEROS REAIS:______________________________________________________ 2.4.1 Representação em Ponto Flutuante: ____________________________________ 2.4.2 Representação de números reais no computador: _________________________ 2.4.3 Exemplo de Representação em Ponto Flutuante: _________________________ 11 12 13 14 16 16 17 18 19 19 21

CAPÍTULO 3 – CONCEITOS DE LÓGICA DIGITAL ____________________ 24
3.1 3.2 CONCEITUAÇÃO: ______________________________________________________ 24 PORTAS E OPERAÇÕES LÓGICAS ______________________________________ 25 2

3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.5 3.2.6 3.2.7

Tabela Verdade _____________________________________________________ Operadores Lógicos __________________________________________________ Operação Lógica ou Porta AND (E)_____________________________________ Porta OR (OU) ______________________________________________________ Porta NOT (Inversor) ________________________________________________ Porta NAND – NOT AND _____________________________________________ Porta NOR – NOT OR________________________________________________ Porta XOR – EXCLUSIVE OR ________________________________________

25 25 26 27 27 28 28 28

3.3 EXPRESSÕES LÓGICAS – APLICAÇÕES DE PORTAS _____________________ 29 3.3.1 Cálculo de Expressões Lógicas _________________________________________ 30 3.4 ÁLGEBRA BOOLEANA _________________________________________________ 31 3.4.1 Regras Básicas da Álgebra Booleana ____________________________________ 31 3.5 3.6 3.7 REPRESENTAÇÃO DE CIRCUITOS COM AS FUNÇÕES NAND E NOR_______ 32 CIRCUITOS COMBINATÓRIOS__________________________________________ 33 CIRCUITOS INTEGRADOS ______________________________________________ 38

CAPÍTULO 4 – ORGANIZAÇÃO INTERNA DE UM COMPUTADOR _____ 39
4.2 4.3 4.4 BIT, CARACTERE, BYTE E PALAVRA: __________________________________ 41 CLASSIFICAÇÃO DE SISTEMAS DE COMPUTAÇÃO: _____________________ 41 MEDIDAS DE DESEMPENHO DE SISTEMA DE COMPUTADORES: _________ 42

CAPÍTULO 5 – FUNÇÕES DE CADA COMPONENTE DE UM COMPUTADOR ______________________________________________________ 43
5.1 MEMÓRIA: ____________________________________________________________ 44 5.1.1 Tecnologia de fabricação: _____________________________________________ 44 5.2.2 Hierarquia de Memória: ______________________________________________ 44 5.2 MEMÓRIA PRINCIPAL: ________________________________________________ 5.2.1. Estrutura da Memória Principal – Células e Endereços: ______________________ 5.2.2 Capacidade da Memória Principal______________________________________ 5.2.3 Operações com Memória Principal _____________________________________ 5.2.4 Tipos de Memória Principal: __________________________________________ 5.3 48 48 49 50 54

OS COMPUTADORES NÃO PENSAM! ____________________________________ 55

5.4 UNIDADE CENTRAL DE PROCESSAMENTO _____________________________ 57 5.4.1 Função Processamento _______________________________________________ 58 5.4.2 Função Controle_____________________________________________________ 62 5.5 INSTRUÇÕES DE MÁQUINA ____________________________________________ 5.5.1. O que é uma Instrução de Máquina?: ______________________________________ 5.5.2. Formato das Instruções: _________________________________________________ 5.5.3. Considerações sobre o Formato das Instruções:______________________________ 65 65 67 68 3

5.6. FUNCIONAMENTO DA UCP – O CICLO DA INSTRUÇÃO: ____________________ 69

CAPÍTULO 6 – REPRESENTAÇÃO DE INSTRUÇÃO___________________ 77
6.1. QUANTIDADE DE OPERANDOS: ___________________________________________ 6.1.1. Instruções com três operandos: ___________________________________________ 6.1.2. Instruções com dois operandos: ___________________________________________ 6.1.3. Instruções com um operando:_____________________________________________ 6.2. MODOS DE ENDEREÇAMENTO: ___________________________________________ 6.2.1. Modo Imediato: ________________________________________________________ 6.2.2. Modo Direto: __________________________________________________________ 6.2.3. Modo Indireto: _________________________________________________________ 6.2.4. Endereçamento por Registrador: __________________________________________ 6.2.5. Modo Indexado: ________________________________________________________ 6.2.6. Modo Base Mais Deslocamento: ___________________________________________ 77 78 79 80 81 82 83 84 86 88 93

CAPÍTULO 7 – DISPOSITIVOS DE ENTRADA E SAÍDA - PERIFÉRICOS 95
7.1. TECLADO: _______________________________________________________________ 95 7.2. MOUSE:__________________________________________________________________ 96 7.3. MONITOR: _______________________________________________________________ 97 7.4. IMPRESSORA:____________________________________________________________ 98 7.5. SCANNER: ______________________________________________________________ 103 7.6. FLOPPY DISK:___________________________________________________________ 104 7.7. HD: _____________________________________________________________________ 104 7.7. CD-ROM: _______________________________________________________________ 106 7.7. DVD:____________________________________________________________________ 107

4

Capítulo 1 – Evolução Histórica dos Computadores
1.1 INTRODUÇÃO:

1.1.1 Conceituação: “Um computador é uma máquina (composta de partes eletrônicas e eletromecânicas) capaz de sistematicamente coletar, manipular e fornecer resultados das manipulações de informações para um ou mais objetivos.” “Processamento de dados consiste em uma série de atividades ordenadamente realizadas, com o objetivo de produzir um arranjo determinado de informações a partir de outras obtidas inicialmente.” “Dado pode ser definido como a matéria-prima originalmente obtida de uma ou mais fontes (etapa da coleta).” “Informação é o resultado do processamento, isto é, o dado processado ou “acabado”.”

Dados

Processamento

Resultado: Informação

Figura 1.1 – Etapas básicas de um processamento de dados.

1.1.2 Sistemas: “Um sistema é um conjunto de partes coordenadas que concorrem para a realização de um determinado objetivo.” O enfoque sistemático se faz presente em várias áreas do desenvolvimento comercial, científico, industrial e social. “Sistema de processamento de dados (SPD) são aqueles responsáveis pela coleta, armazenamento, processamento e recuperação, em equipamento eletrônico, dos dados necessários ao funcionamento de um outro sistema maior: o sistema de informação.” a) Sistema de computação; b) Sistema de aplicação. “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: “Programa é um conjunto de instruções.”
1. 2. 3. 4. 5. 6. 7. Escrever e guardar N = 0 e SOMA = 0; Ler número da entrada; Somar valor do número ao de SOMA e guardar resultado como SOMA; Somar 1 ao valor de N e guardar resultado como novo N; Se valor de N for menor que 100, então passar para item 2; Senão: imprimir valor de SOMA; Parar.
Figura 1.2 – Algoritmo para soma de 100 números.

Um programa de computador é a formalização de um algoritmo em linguagem inteligível pelo computador. “Linguagem binária é a linguagem de comunicação dos computadores.” Na linguagem binária os caracteres inteligíveis não são A, B, +, 0, etc., mas apenas zero(0) e um (1). 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. Instruções de máquinas entendidas pelos computadores: a) executar operações aritméticas sobre dois números; b) executar operações lógicas sobre dois números; c) mover um conjunto de bits (um número ou parte) de um ponto para outro do computador; d) desviar a seqüência do programa; e) comunicação com algum dispositivo de entrada ou saída de dados. “Hardware é o conjunto formado pelos circuitos eletrônicos e partes eletromecânicas de um computador.” “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. 1.2.1. Época dos dispositivos mecânicos (500 a.c – 1880) O conceito de efetuar cálculo surgiu com os babilônios e sua invenção o Ábaco. A primeira evolução do ábaco aconteceu em 1642, quando o filosofo e matemático Blaise Pascal construiu um contador mecânico que realizava soma e subtraçã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. 1.2.3. Época dos componentes eletrônicos – Primeiras Invenções (1930-1945) O problema dos computadores mecânicos era: a) baixa velocidade de processamento; b) falta de confiabilidade dos resultados. 1.2.4. Época dos componentes eletrônicos (1945 - ?) 1.2.4.1. Primeira Geração: Computadores à válvula O 1o computador eletrônico digital – ENIAC (Electronic Numerical Integrator And Computer): • Projetado de 1943 a 1946; • Funcionou até 1955; • Possuía 17.000 válvulas e 8000 Km de cabos; • Pesava 30 toneladas; • Consumia grande quantidade de energia e válvulas que queimava freqüentemente; • 10.000 operações por segundo; • 20 registradores que guardavam valor numérico de 10 dígitos; • Era uma máquina decimal, não binária, cada dígito é representado por um anel de 10 válvulas; • Programação feita através da recolocação dos fios. 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. 1.2.4.2. Segunda Geração: Computadores Transistorizados A eletrônica moderna surgiu em 23 de Dezembro de 1947. Os transistores se tornaram não só sucesso em toda a industria eletrônica (custo, tamanho e desempenho melhores que os dispositivos a válvula), como também formaram a base de todos os computadores digitais. O fato de que se pode ligar e desligar a corrente elétrica em um dispositivo é a base de toda a lógica digital. A primeira companhia a lançar comercialmente um computador transistorizado foi a NCR. A IBM também teve grande participação transformou a série 700 em 7000. 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. 1.2.5. Computadores Pessoais - Microcomputadores Em 1971, a Intel Corporation, produziu uma CPU em uma só pastilha de circuito integrado, denominado INTEL-4004, que possuía palavra de 4 bits e tinha cerca de 2.300 transistores na pastilha. Logo em seguida, a Intel lançou o INTEL 8008 com 8 bits de palavra e 16 K de memória. Quadro Comparativo de características de microprocessadores INTEL Microprocessador Data de Palavra de Endereçamento Quantidade de Lançamento Dados Máximo Transistores Intel 4004 1971 4 1K bytes 2300 Intel 8080 1974 8 64K bytes 6000 Intel 8086 1978 16 1M bytes 29 K Intel 80286 1982 16 16M bytes 134 K Intel 80386 1985 32 4G bytes 275 K Intel 80486 1989 32 4G bytes 1.2 M Intel Pentium 1993 32 4G bytes 3.1 M Intel Pentium Pro 1995 32 4G bytes 5.5 M Intel Pentium II 1997 32 4G bytes 7.5 M Intel Pentium III 1999 32 4G bytes 9.5 M Intel Pentium IV 2002 32 4G bytes 42 M

8

Capítulo 2 – Sistemas de Numeração e Aritmética Computacional
2.1 SISTEMAS DE NUMERAÇÃO:

Sistemas de numeração são formas de representação de valores. Existem os sistemas nãoposicionais e os posicionais. Nos não-posicionais o símbolo não depende da posição. Por exemplo, os numerais romanos: o símbolo X vale 10 em qualquer posição que estiver no número, seja IX ou LXV. Já nos posicionais, o valor do símbolo muda com a posição. Por exemplo: o símbolo 6 dentro do número 625 significa o valor 600, mas no número 461 significa 60. Diariamente trabalhamos com o sistema posicional decimal, assim chamado por ter dez símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Como tem dez símbolos, dizemos também que possui base 10. Como sabemos, o computador funciona em binário, ou seja, representações de número somente com os símbolos 0 e 1. Este é um sistema de numeração com base 2 ou binário. Na eletrônica ainda é comum trabalhar-se com o sistema octal, que possui base 8, cujos símbolos são: 0, 1, 2, 3, 4, 5, 6, 7. Para o endereçamento da memória do computador é utilizado o sistema de numeração hexadecimal, de base 16, formado pelos símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. São estes quatro sistemas de numeração que serão o fundamento do estudo da computação, sendo necessários para compreensão da organização de sua arquitetura. Para compreendermos melhor a relação entre eles, devemos estudar a conversão de uma base para outra. 2.2 2.2.1 CONVERSÃO ENTRE BASES: De binário, octal, e hexadecimal para decimal:

Segue-se a regra simples: símbolo x baseposição 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 Finalmente, de hexadecimal (base 16) para decimal: Ex1: Ex2: (B108)16 = B x 163 + 1 x 162 + 0 x 161 + 8 x 160 (F0,1)16 = F x 161 + 0 x 160 + 1 x 16-1 9

= 45056 + 256 + 0 + 8 = 45320 2.2.2

= 240 + 0 + 0,0625 = 240,0625

Conversão de decimal para binário, octal e hexadecimal:

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. Para conversão de decimal para binário, temos o exemplo: (174,25)10: 174 / 2 = 87 resto 0 87 / 2 = 43 resto 1 43 / 2 = 21 resto 1 21 / 2 = 10 resto 1 10 / 2 = 5 resto 0 5 / 2 = 2 resto 1 2 / 2 = 1 resto 0 último quociente: 1 ==> parte inteira: 10101110 0,25 x 2 = 0,50 inteiro 0 0,50 x 2 = 1,0 inteiro 1 ==> parte fracionária: 01 (174,25)10 = (10101110,01)2 De decimal para octal: (749,97)10: 749 / 8 = 93 resto 5 93 / 8 = 11 resto 5 11 / 8 = 1 resto 3 último quociente: 1 ==> parte inteira: 1355 0,97 x 8 = 7,76 inteiro 7 0,76 x 8 = 6,08 inteiro 6 0,08 x 8 = 0,64 inteiro 0 ==> parte fracionária: 760 (749,97)10 = (1355,760)8 E de decimal para hexadecimal: (155,742)10: 155 / 16 = 9 resto 11 (B) último quociente: 9 ==> parte inteira: 9B 0,742 x 16 = 11,872 inteiro 11 (B) 0,872 x 16 = 13,952 inteiro 13 (D) 0,952 x 16 = 15,232 inteiro 15 (F) ==> parte fracionária: BDF (155,742)10 = (9B,BDF)16 2.2.3 Conversão de binário para octal

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 2.2.4 Conversão de octal para binário:

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 2.2.5 Conversão de binário para hexadecimal:

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 2.2.6 Conversão de hexadecimal para binário:

Oposto do método anterior. Exemplo: (CAFE,01)16 = (1100 1010 1111 1110,0000 0001)2

DECIMAL 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

TABELA DE CONVERSÃO BINÁRIO OCTAL HEXADECIMAL 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 10 8 1001 11 9 1010 12 A 1011 13 B 1100 14 C 1101 15 D 1110 16 E 1111 17 F

2.3

ARITMÉTICA COMPUTACIONAL:

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. 2.3.1 Procedimento de Adição:

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. Adição de Números Binários 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: 111111 1 101101,01 +100111,11 1010101,00 vai 1 Ex2: 1 11 1 vai 1 11001,1101 +11100,1110 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". Adição de Números Octais e Hexadecimais 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. Ex: Soma com aritmética em base 8: 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). Ex: Soma com aritmética em base 16: Ex1: 11 1 3A54,3B + 1BE8,7A 563C,B5 Ex2: 1 11 3A943B +23B7D5 5E4C10 Ex3: 11 1 1 2AC79 +B7EEC E2 B65

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. 2.3.2 Procedimento de Subtração:

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. Subtração de Números Binários 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 Subtração de números Octais e Hexadecimais Os procedimentos para realização da operação de subtração com valores representados em base 8 (octal) ou 16 (hexadecimal) são os mesmos das bases 2 ou 10, porém com a já conhecida diferença em termos de algarismos disponíveis. Ex: Subtração com valores em base 8: Ex1: 8 248 48 3526,53 - 2764,36 0542,15 Ex2: 88 6208 7312 - 3465 3625

Ex: Subtração com valores em base 16: Ex1:
16

Ex2:

16

3B16 D16 4C7BE8 - 1E9 27A 2DE96E 2.3.3 Procedimento de Multiplicação:

3816A 16C16 49AB,8D5 - FC8,AB8 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 Multiplicação de Números Octais A tabuada para a operação de multiplicação de números Octais é mostrada a seguir: *8 0 1 2 3 4 5 6 7 Ex1: 1 712 x 5 4362 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 Ex2: 372 x 21 372 664 7232 6 0 6 14 22 30 36 44 52 7 0 7 16 25 34 43 52 61

Multiplicação de Números Hexadecimais A tabuada para a operação de multiplicação de números Hexadecimais é mostrada a seguir: *16 0 1 2 3 4 5 6 7 8 0 0 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 7 8 2 0 2 4 6 8 A C E 10 3 0 3 6 9 C F 12 15 18 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 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 F 0 F 1E 2D

15

9 A B C D E F Ex1:

0 0 0 0 0 0 0

9 A B C D E F 13 F3C x 5 4C2C

12 14 16 18 1A 1C 1E

1B 1E 21 24 27 2A 2D Ex2: 15BC 8A D958 ADE0 BB 7 58 x

D2

D2 E1

2.3.4

Procedimento de Divisão:

Divisão de Números Binários 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: 1002 / 102 = 102 10’0 10 -10 10 00 Ex2: 100102 / 112 = 1102 100’1’0 11 - 11 110 011 00

2.3.5

Adição Utilizando Números Com Sinal: 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 2.3.6 Aritmética Complementar:

* 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. * Subtração no sistema complemento-de-2: Obtenção do complemento-de-2 de um número binário: - Troca-se cada 0 por 1 e vice-versa (complemento-de-1); - Soma-se 1 ao resultado. Ex.: 1001 ⇒ 0110 (complemento-de-1) + 1 0111 (complemento-de-2) OBS: A principal vantagem do uso de complemento é executar a SUBTRAÇÃO pelo processo da ADIÇÃO. Dois números positivos (+7) 0 0111 + (+3) 0 0011 (+10) 0 1010 Número positivo e número negativo (+7) 0 0111 + (-3) 1 0011 Complemento-de-2 Dois números negativos (-7) 1 0111 + (-3) 1 0011 0 0111 +1 1101 100100 ⇒ (+4) 1 1001 +1 1101 17

Complemento-de-2

11 0110 Descomplementar (1 1010) ⇒ (-10)

* Fazer complemento-de-2 no número negativo; * Somar os números; * Descomplementar o resultado da soma. A figura 2.1 mostra a distribuição dos números positivos e negativos (complemento de 2) de um número com 5 bits.

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 Complemento de dois em 8 bits +127 = 01111111 = 27 -1 -128 = 10000000 = -27 Complemento de dois em 16 bits +32767 = 011111111 11111111 = 215 - 1 -32768 = 100000000 00000000 = -215 2.4 NÚMEROS REAIS:

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. 2.4.2 Representação de números reais no computador:

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

Como vimos anteriormente, a representação em ponto flutuante tem limites de alcance e de precisão. O alcance é limitado pelo número de bits do expoente. A precisão é determinada pelo número de bits da mantissa. Ocorre overflow quando o valor absoluto do dado a ser representado excede a capacidade de representação, porque o número de bits do expoente (neste caso, positivo) é insuficiente para representar o dado. Um outro problema ocorre na região de números próximos de zero, que tem o maior expoente negativo possível. Ocorre underflow quando o valor absoluto do dado a ser representado é tão pequeno que fica menor que o menor valor absoluto representável. Nesse caso, o expoente é negativo mas não representa os números muito próximos de zero e ocorre uma descontinuidade na representação, com os números próximos a zero não sendo representados. Underflow não é o mesmo que imprecisão. Dados na faixa de underflow não podem ser representados, ocorrendo estouro no expoente. No caso de imprecisão, a normalização permite que o dado seja representado, porém com perda de precisão. Característica Característica é o expoente, representado na forma de excesso de n, ou seja, CARACTERÍSTICA = EXPOENTE + EXCESSO A representação substituindo expoente por característica acarreta que todas as características serão positivas, de forma que é possível eliminar a representação do sinal do expoente.

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 2.4.3 Exemplo de Representação em Ponto Flutuante:

a) Representação no IBM /370. A família IBM /370 representa os dados em ponto flutuante com base implícita = 16, 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 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 Todos as complexas operações de um computador digital acabam sendo combinações de simples operações aritméticas e lógicas básicas: somar bits, complementar bits (para fazer subtrações), comparar bits, mover bits. Estas operações são fisicamente realizadas por circuitos eletrônicos, chamados circuitos lógicos ou gates - "portas" lógicas. 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

3,0

Binário (bit) 1

2,0

1,0 0,5

Binário (bit) 0
Tempo

Figura 3.1 – Exemplo de um sinal binário

24

3.2

PORTAS E OPERAÇÕES LÓGICAS

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. 3.2.1 Tabela Verdade 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. 3.2.2 Operadores Lógicos 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.

Figura 3.2 – Circuito Lógico

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: Porta Lógica AND Símbolo Matemático X=A.B Símbolo Gráfico
A B X

A

OR

X=A+B

B

X

25

A

NOT

X=A
A

X

NAND

X = A•B

B

X

A

NOR

X = A+B

B

A

XOR

X=A⊕B

B

X

Figura 3.3 – Símbolos gráficos e matemáticos de portas lógicas

3.2.3 Operação Lógica ou Porta AND (E) 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
X
Figura 3.4 – Porta lógica AND

A B

A 0 0 1 1

B 0 1 0 1

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

3.2.4 Porta OR (OU) 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 B X

A 0 0 1 1

B 0 1 0 1

X 0 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. 3.2.5 Porta NOT (Inversor) 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 0 1

A

X

X 1 0

Figura 3.7 – Porta lógica NOT

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

Figura 3.8 – Porta lógica NAND

A 0 0 1 1

X = A•B B 0 1 0 1

X 1 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. 3.2.6 Porta NOR – NOT OR 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.
A B

Figura 3.9 – Porta lógica NOR

A 0 0 1 1

X = A+B B 0 1 0 1

X 1 0 0 0

3.2.7 Porta XOR – EXCLUSIVE OR 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.
A B X

X=A⊕B A 0 0 1 1 B 0 1 0 1 X 0 1 1 0

Figura 3.10 – Porta lógica XOR

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 m-1 ... Bit 1 Bit 0

RF

...

...

Bit m-1 Palavra 2

...

Bit 1

Bit 0

Figura 3.11 – Exemplo de emprego de circuitos XOR para teste de igualdade entre palavras

3.3

EXPRESSÕES LÓGICAS – APLICAÇÕES DE PORTAS

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: Pela expressão algébrica ou expressão lógica acima mostrada; e Por um diagrama interligando os símbolos gráficos correspondentes às operações lógicas. 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. F = X + Y .Z (a) Expressão lógica da função F X 0 0 0 0 1 1 1 1 Y 0 0 1 1 0 0 1 1 Z 0 1 0 1 0 1 0 1 F 0 1 0 0 1 1 1 1 29

X Y Z

F

(b) Diagrama lógico da função F 3.3.1 Cálculo de Expressões Lógicas

(c) Tabela verdade da função F

Figura 3.12 – Exemplo de emprego de circuitos XOR para teste de igualdade entre palavras

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). Na avaliação de uma expressão lógica, as seguintes regras devem ser seguidas: 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: 1) Seja A=1, B=0, C=1 e D=1. Calcular X = A + B.C ⊕ D Solução: a) b) c) d) B.C = 0.1 = 0 B.C = 1 A + B.C = 1 + 1 = 1 (A + B.C ) ⊕ D = 1 ⊕ 1 = 0 Resultado: X = 0 2) Seja A = 1001, B = 0010, C = 1110 e D = 1111. Calcular X = A ⊕ (B.C + D) + (B⊕D) Solução: a) b) c) d) e) f) g) B.C = 0010 . 1110 = 0010 B.C = 1101 ( B.C + D) = 1101 + 1111 = 1111 D = 0000 (B ⊕ D ) = 0010 ⊕ 0000 = 0010 ( B.C + D) + (B ⊕ D ) = 1111 + 0010 = 1111 A ⊕ ( B.C + D) + (B ⊕ D ) = 1001 ⊕ 1111 = 0110 30

Resultado: X = 0110 3.4 ÁLGEBRA BOOLEANA

Á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. 3.4.1 Regras Básicas da Álgebra Booleana A tabela 3.1 apresenta todas as regras básicas da álgebra booleana: 1. X + 0 = X 2. X + 1 = 1 3. X + X = X 4. X + X = 1 5. X . 0 = 0 6. X . 1 = X 7. X . X = X 8. X . X = 0 9. X = X 10. X + Y = Y + X 11. X ⊕ X = 0 12. X.Y = Y.X 13. X+(Y+Z) = (X+Y)+Z 14. X.(Y.Z) = (X.Y).Z 15. X.(Y+Z) = X.Y + X.Z 16. X + X.Z = X 17. X.(X+Y) = X 18. (X+Y).(X+Z) = X + Y.Z 19. X + X .Y = X + Y 20. X.Y + Y.Z + Y .Z = X.Y + Z 21. ( X + Y ) = X . Y 22. ( X.Y ) = X + Y

Tabela 3.1 – Regras Básicas da Álgebra Booleana

Exemplo: simplificar a expressão X = ( A + B).B Solução: ( A + B).B = = = = = A.B + B.B A.B + 0 A.B A+B A+B (regra 17) (regra 8) (regra 1) (regra 22) (regra 9)

Portanto: [( A + B).B ] = A + B O circuito lógico correspondente à expressão original é o seguinte:

31

A B

Após a simplificação, o circuito fica:
A B

Exercício: simplifique as seguintes expressões lógicas: a) X = A.B.C + A.B.C + A.B.C + A.B.C b) A.B + A.B + A.C + A.C c) (A.C + B.C).A.(A+A.B)+C.C+A.B 3.5 REPRESENTAÇÃO DE CIRCUITOS COM AS FUNÇÕES NAND E NOR

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

Usando apenas portas NAND (A . A) = A

Usando apenas portas NOR (A + A) = A

Circuito AND

32

A

A
B

Usando apenas portas NAND

B

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 3.6 CIRCUITOS COMBINATÓRIOS

Um computador é constituído de uma infinidade de circuitos lógicos, que executam as seguintes funções básicas: a) Realizam operações matemáticas. b) Controlam o fluxo dos sinais. c) Armazenam dados. Existem dois tipos de circuitos lógicos: 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

Função Digital 1
C1

Saídas

Circuito Combinatório (implementa uma expressão lógica)
C2

Função Digital 2

Saídas

Entrada de dados

Figura 3.13 – Exemplo de uso de circuito combinatório

O exemplo consiste no seguinte: 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) ii) iii) iv)

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. Quando C1 = 1, a função digital 1 é realizada com os dados de entrada. Se y = 1 e T3 = 1, então C2 = 1. Senão, C2 = 0. Quando C2 = 1, a função digital 2 é realizada com os dados de entrada.

A figura 3.14 mostra o diagrama lógico do circuito combinatório acima exemplificado.

X T1

T2

C1

Y T3

C2

Figura 3.14 – Diagrama lógico do circuito combinatório.

3.6.1 Exemplo Prático – Projeto de um Multiplicador de 2 Bits 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). A figura 3.15 apresenta o diagrama em blocos do multiplicador:
A0 A1 B0 B1 Multiplicador de 2 bits (circuito combinatório) R0 R1 R2 R3

Figura 3.15 – Diagrama em bloco de um multiplicador de 2 bits

Construindo-se a tabela verdade: Entradas A*B = R A A0 A1 B0 0.0 = 0 0 0 0 0.1 = 0 0 0 0 0.2 = 0 0 0 1 0.3 = 0 0 0 1 1.0 = 0 0 1 0 1.1 = 1 0 1 0

B B1 0 1 0 1 0 1 0 0 0 0 0 0 R0 0 0 0 0 0 0 R1

Saídas R R2 0 0 0 0 0 0 0 0 0 0 0 1 35 R3

1.2 = 2 1.3 = 3 2.0 = 0 2.1 = 2 2.2 = 4 2.3 = 6 3.0 = 0 3.1 = 3 3.2 = 6 3.3 = 9

0 0 1 1 1 1 1 1 1 1

1 1 0 0 0 0 1 1 1 1

1 1 0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1 0 1

0 0 0 0 0 0 0 0 0 1

0 0 0 0 1 1 0 0 1 0

1 1 0 1 0 1 0 1 1 0

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

Figura 3.16 – Diagrama em bloco de um multiplicador de 2 bits

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.

Figura 3.17 – Circuito integrado com 14 pinos

14 Vcc

13

12

11

10

9

8

1

2

3

4

5

6

7 (terra)

Figura 3.18 – Diagrama lógico de um pequeno circuito integrado

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. 4.1 DESCRIÇÃO DOS COMPONENTES DE UM SISTEMA DE COMPUTAÇÃO:

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). 1. [Ler lados conhecidos] Leia(LADO1,LADO2) 2. [Calcular os quadrados dos lados conhecidos] Q1 = LADO1*LADO1 Q2 = LADO2*LADO2 3. [Calcular o comprimento do terceiro lado] HIPOTENUSA = RQ(Q1+Q2) (RQ indica a operação de raiz quadrada) 4. [Sair resultados] Escreva(‘HIPOTENUSA=’,HIPOTENUSA) 5. [Terminar] Saída 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 Entrada Memória

Leitura Saída Controle Dados

Figura 4.1 – Componentes de um sistema de Computação.

UCP → é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos com os dados, etc.) e pelo controle de quando e o que deve ser realizado, durante a execução de um programa. Tal controle é realizado através da emissão de sinais apropriados de controle, na Figura 4.1, representados pelas linhas pontilhadas. Memória → é o componente de um sistema de informação cuja função é armazenar as informações que são, foram ou serão manipuladas pelo sistema. Os programa e os dados são armazenados na memória para execução imediata (memória principal) ou para execução ou uso posterior (memória secundária). Há duas únicas ações que podem ser realizadas: 1)a de guardar um elemento na memória, então chamamos de armazenar e a operação associada a esta ação é de escrita ou gravação (“write”) ou 2) recuperação de um elemento da memória, ação de recuperar, e operação de leitura (“read”). Dispositivos de Entrada e Saída → serve basicamente para permitir que o sistema de computação se comunique com o mundo externo, realizando ainda, a interligação, a conversão das linguagens do sistema para a linguagem do meio externo e vice-versa. Os seres humanos entendem símbolos como A, b, *, ?, etc. e o computador entende sinais elétricos que podem assumir um valor de +3Volts para representar 1 e ou outro valor, 0 Volts para representar 0. O teclado (dispositivo de ENTRADA) interliga o usuário e o computador, por exemplo, quando pressionamos a tecla A, os circuitos eletrônicos existentes no teclado “convertem” a pressão mecânica em um grupo de sinais elétricos, alguns com voltagem alta (bit 1) e outras com voltagem baixa (bit 0), que corresponde, para o computador, ao caractere A. Os dispositivos de SAÍDA operam de modo semelhante, porém em sentido inverso, do computador para o mundo exterior, convertendo os sinais elétricos em símbolos conhecidos por nós. A função da UCP consiste, então, em: a) buscar uma instrução na memória, uma de cada vez; b) interpretar que operação a instrução está explicitando (pode ser e soma de dois números, uma multiplicação, etc.); 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 no local definido na instrução; e) reiniciar o processo apanhando nova instrução. 40

4.2

BIT, CARACTERE, BYTE E PALAVRA: Bit → é a menor unidade de informação armazenável em um computador. Bit é a contração das palavras inglesas Binary Digit. O bit pode ter, então, somente dois valores: 0 e 1. Evidentemente, com possibilidades tão limitadas, o bit pouco pode representar isoladamente; por essa razão, as informações manipuladas por um computador são codificadas em grupos ordenados de bits, de modo a terem um significado útil. Caractere → é o menor grupo de bits representando uma informação útil e inteligível para o ser humano. Qualquer caractere a ser armazenado em um sistema de computação é convertido em um conjunto de bits previamente definidos para o referido sistema (chama-se código de representação de caracteres). Cada sistema poderá definir como (quantos bits e como se organizam) cada conjunto de bits irá representar um determinado caractere. Byte → é o grupo de 8 bits, tratados de forma individual, como unidade de armazenamento e transferência. Como os principais códigos de representação de caracteres utilizam 8 bits por caractere, os conceitos de byte e caractere tornam-se semelhantes e as palavras, quase sinônimas.

É costume, no mercado, construírem memória cujo acesso, armazenagem e recuperação de informações são efetuadas byte a byte (ou caractere a caractere). Por exemplo, 16 Kbytes de memória ou 12 Mbytes. O K e M, são letras indicativas de um valor numérico fixo, utilizado para reduzir a quantidade de algarismos representativos de um número, onde K representa mil vezes e M milhões. Como os computadores são binários, toda indicações numéricas referem-se a potência de 2, ou seja, o K representa 210 = 1.024 unidades e M é 1.024 * 1.024 = 1.048.576 caracteres ou bytes. Palavra → é um conjunto de bits que representam uma informação útil, mas estaria associada ao tipo de interação entre a MP (memória principal) e a UCP, que é individual, informação por informação, ou seja, a UCP processa informação por informação, armazena e recupera número a número (cada uma estaria associada a uma palavra). De modo geral, usam-se dois valores diferentes: um relacionado à unidade de armazenamento – o byte e o outro para indicar a unidade de transferência e processamento – a palavra (que na quase totalidade de computadores, possui um número de bits múltiplo de 1 byte – 16 ou 32 bits é o valor mais comum. 4.3 CLASSIFICAÇÃO DE SISTEMAS DE COMPUTAÇÃO: Microcomputadores → surgiram comercialmente por volta de 1974, através do desenvolvimento dos microprocessadores (todos os componentes de uma UCP em uma única pastilha) e o nome foi justamente devido ao tamanho e à capacidade de processamento, ambos pequenos em relação ao que já existia no mercado. Há no mercado várias categorias de microcomputadores, classificadas quanto ao tamanho físico do equipamento e a sua portabilidade: a) Mesa ou desktop; b) Torre (maior disponibilidade para instalação de dispositivos de entrada e saída); c) Laptops; d) Notebooks e sub-notebooks; 41

e) Palmtops. Estação de Trabalho → é essencialmente um microcomputador projetado para realizar tarefas pesadas, em geral na área científica ou industrial, tais como complexas computações matemáticas e a composição, manipulação e apresentação de gráficos e imagens de altíssima resolução. Especialmente no que se refere a velocidade do processador e a capacidade de memória, a potência de uma estação de trabalho é semelhante à de um minicomputador. Ex: IBM RS/6000. Minicomputadores → são máquinas projetadas para atender simultaneamente a demanda por execução de programas de vários usuários, embora a quantidade de usuário e de programas não seja tão grande quanto se pode encontrar em computadores de grande porte. A capacidade de suportar múltiplos usuários e programas requer além de velocidade de processamento e capacidade/velocidade de memória, uma extensa potencialidade para manipular diversos dispositivos de entrada e saída. Ex: IBM AS/400. Computador de Grande Porte → são sistemas projetados para manusear considerável volume de dados e executar simultaneamente programas de uma grande quantidade de usuários. Essas máquinas podem interagir com centenas de usuários em um dado instante, como, por exemplo, um sistema de reserva de passagens aéreas, bem como uma contínua solicitação de processamento por parte dos incontáveis terminais conectados diretamente ao sistema, aos quais os computadores têm que atender e responder em poucos segundos. Ex: IBM 3090 e Control Data CDC 6600. Supercomputadores → são projetados primariamente para atender a um único propósito: realizar grandes quantidades de cálculos matemáticos o mais rapidamente possível, tipo previsão do tempo, simulação, modelagem tridimensional, etc. Ex: IBM 9021 e CRAY Y-MP. 4.4 MEDIDAS DE DESEMPENHO DE SISTEMA DE COMPUTADORES:

A medida geral de desempenho de um sistema de computador depende fundamentalmente da capacidade e velocidade de seus diferentes componentes, da velocidade com que estes se comunicam entre si e do grau de compatibilidade que possa existir entre eles. Desempenho dos Processadores → é medido em termos de sua velocidade de trabalho; como seu trabalho é executar instruções, criou-se a unidade chamada MIPS – milhões de instruções por segundo e também a unidade MFLOPS – milhões de operações de ponto flutuante por segundo, que é uma medida típica de estações de trabalho e de supercomputadores, pois estes costumam trabalhar mais com cálculos matemáticos. Tempo de Acesso → é uma unidade de medida mais apropriada, estando relacionada à velocidade de cada componente e à do canal de interligação entre os dois (UCP e memória). Tempo de Resposta → é a medida ligada ao desempenho global do sistema e não de um ou outro componente. Trata-se do período de tempo gasto entre o instante em que o usuário iniciou uma solicitação ou interrogação e o instante em que o sistema apresentou ao usuário a sua resposta ou atendeu à sua solicitação. Ex: o intervalo de tempo entre a solicitação de um saldo de conta em um terminal bancário e apresentação no vídeo da resposta (o saldo da conta). Vazão (throughput) → define a quantidade de ações ou transações que podem ser realizadas por um sistema na unidade de tempo. Por exemplo, a quantidade de atualizações que podem ser feitas em um sistema de controle do estoque de uma empresa. 42

Capítulo 5 – Funções de cada Componente de um Computador
A arquitetura básica de um computador moderno segue ainda de forma geral os conceitos estabelecidos pelo Professor da Universidade de Princeton, John Von Neumann (1903-1957), um dos construtores do EDVAC. Von Neumann propôs construir computadores que: 1. Codificassem instruções que pudessem ser armazenadas na memória e sugeriu que usassem cadeias de uns e zeros (binário) para codificá-los; 2. Armazenassem na memória as instruções e todas as informações que fossem necessárias para a execução da tarefa desejada; 3. Ao processarem o programa, as instruções fossem buscadas na diretamente na memória. Este é o conceito de PROGRAMA ARMAZENADO.

Figura 5.1 – Diagrama de Blocos 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. Unidade Central de Processamento: A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP. Funções: Executar instruções - realizar aquilo que a instrução determina. Realizar o controle das operações no computador. a) Unidade Lógica e Aritmética (ULA) - responsável pela realização das operações lógicas (E, OU, etc) e aritméticas (somar, etc). b) Unidade de Controle (UC) - envia sinais de controle para toda a máquina, de forma que todos os circuitos e dispositivos funcionem adequada e sincronizadamente.

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:

5.1.1 Tecnologia de fabricação: 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. 5.2.2 Hierarquia de Memória: A MP não é o único dispositivo de armazenamento de um computador. Em função de características como tempo de acesso, capacidade de armazenamento, custo, etc., podemos estabelecer uma hierarquia de dispositivos de armazenamento em computadores. Devido a essa grande variedade de tipos de memória, não é possível implementar um sistema de computação com uma única memória. Na realidade, há muitas memórias no computador, as quais se interligam de forma bem estruturada, constituindo um sistema em si, parte do sistema global de computação, podendo ser denominado subsistema de memória, como mostrado na Figura 5.2.
Custo alto Velocidade alta Baixa capacidade

Registradores Memória cache Memória principal

Custo baixo Velocidade baixa Capacidade elevada

disco fitas
Figura 5.2 – Hierarquia de memória.

Memória secundária

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: Tipo Registrador Memória Cache Memória Principal Memória Auxiliar Capacidade Bytes Kbytes Mbytes Gbytes Velocidade muito alta alta Média Baixa Custo muito alto alto médio baixo Localização UCP UCP/placa Placa Externa Volatilidade Volátil Volátil Volátil Não Volátil

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: São dispositivos de armazenamento temporário, localizados na UCP, extremamente rápidos, com capacidade para apenas um dado (uma palavra). Devido a sua tecnologia de construção e por estar localizado como parte da própria pastilha ("chip") da UCP, é muito caro. O conceito de registrador surgiu da necessidade da UCP de armazenar temporariamente dados intermediários durante um processamento. Por exemplo, quando um dado resultado de operação precisa ser armazenado até que o resultado de uma busca da memória esteja disponível para com ele realizar uma nova operação. Analisando os diversos parâmetros que caracterizam as memórias, temos: Tempo de acesso: possuem o menor tempo de acesso a memória do sistema, algo em torno de 10 a 20 nanossegundos, dependendo de tratar-se da UCP de um supercomputador ou de um microprocessador mais lento. Capacidade: são fabricadas com a capacidade de armazenar um único dado, umas únicas instruções ou até um único endereço. Desta forma, a quantidade de bits de cada um é de uns poucos bits (de 8 a 64), dependendo do tipo de processador. Volatilidade: são memórias semicondutoras, portanto, necessitam de energia elétrica para funcionarem. Temporariedade: os registradores são memórias auxiliares internas à UCP e, portanto, tendem a guardar informações o mais temporariamente possível. Custo: devido à tecnologia mais avançada de sua fabricação, os registradores são os dispositivos de memória de maior custo. 5.2.2.2. Memória Cache: Com o desenvolvimento da tecnologia de construção da UCP, as velocidades foram ficando muito mais altas que as das memórias, que não tiveram a mesma evolução de velocidade (o aperfeiçoamento das memórias se deu mais no fator capacidade). Desta forma, os tempos de acesso às memórias foram ficando insatisfatórios e a UCP ao buscar um dado na memória precisa ficar esperando muitos ciclos até que a memória retorne o dado buscado ("wait states"), configurando um gargalo ("bottleneck") ao desempenho do sistema. Por esse motivo, desenvolveram-se outras arquiteturas de memória privilegiando a velocidade de acesso. A arquitetura da memória cache é muito diferente da arquitetura da memória principal e o acesso a ela é muitas vezes mais rápido (p.ex: 5 ns contra 70 ns). No entanto, o custo de fabricação da memória cache é muito maior que o da MP. Desta forma, não é econômico construir um computador somente com tecnologia de memória cache. Criou-se então um artifício, incorporando-se ao computador uma pequena porção de memória cache, localizada entre a UCP e a MP, e que funciona como um espelho de parte da MP. 46

A memória cache opera em função de um princípio estatístico comprovado: em geral, os programas tendem a referenciar várias vezes pequenos trechos de programas, como loops, sub-rotinas, funções e só tem sentido porque programas executados linearmente, seqüencialmente, são raros. Desta forma, algoritmos (chamados algoritmos de cache) podem controlar qual parte do código ficará copiado na cache, a cada momento. Quando a MP busca um determinado trecho de código e o encontra na cache, dá-se um "cache hit”, enquanto se o dado não estiver presente na cache será necessário requisitar o mesmo à MP, acarretando atraso no processamento e dá-se um "cache miss" ou "cache fault". O índice de cache hit ou taxa de acerto da cache é geralmente acima de 90%. Tempo de acesso: tendo em vista que a UCP acessa primeiro a memória cache, para buscar a informação requerida, possuem tempo de acesso entre 5 e 25 ns. Capacidade: os valores típicos de memória cache oscilam entre 512 K a 2 M em máquinas de grande porte e em máquinas tipo microcomputador de 512 K a 1 M. Volatilidade: são dispositivos constituídos de circuitos eletrônicos, logo requerem energia elétrica para seu funcionamento. Temporariedade: devido a seu tamanho não ser grande e ser utilizada por todo os programas em execução, há a necessidade de alteração periódica da informação armazenada para permitir entrada de novas informações. Custo: o custo de fabricação das memórias cache é alto. 5.2.2.3. Memória Principal: 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: Memórias secundárias resolvem problemas de armazenamento de grandes quantidades de informações. A capacidade da MP é limitada pelo seu relativamente alto custo, enquanto as memórias secundárias têm maior capacidade e menor custo; portanto, o custo por bit armazenado é muito menor. Outra vantagem importante é que as memórias secundárias não são VOLÁTEIS, isto é, não dependem de estar energizadas para manter gravado seu conteúdo. Os principais dispositivos de memória auxiliar são: discos rígidos (ou HD), drives de disquete, unidades de fita, CD-ROM, DVD, unidades ótico-magnéticas, etc. Tempo de acesso: os valores típicos para disco rígidos são faixa de 10 a 40 ms. Discos do tipo CD-ROM trabalham com tempos de acesso ainda maiores, na faixa de 200 a 500 ms, enquanto as fitas magnéticas são ainda mais lentas, podendo ler um arquivo em tempos da ordem de segundos. Capacidade: uma das características que coloca a memória secundária na base da pirâmide é justamente sua grande capacidade de armazenamento. Discos rígidos de microcomputadores podem, atualmente, ser encontrados com capacidade de 10, 15, 20 e 40 Gbytes, etc. Sistema de grande porte são maiores ainda, tipos 360 Gbytes. Os CD-ROM têm capacidade de 650 Mbytes, etc. Volatilidade: as informações não desaparecem com a falta de energia elétrica, logo não são voláteis. Temporariedade: tem caráter permanente, ou pelo menos, de longo período de armazenagem. 5.2 MEMÓRIA PRINCIPAL:

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. 5.2.1. Estrutura da Memória Principal – Células e Endereços: 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.

Figura 5.3 – Estrutura de uma Memória Principal.

Unidade de transferência é a quantidade de bits que é transferida da memória em uma única operação de leitura ou transferida para a memória em uma única operação de escrita. O tamanho da célula poderia ser igual ao da palavra, e também à unidade de transferência, porém por razões técnicas e de custo, são freqüentemente diferentes. OBS.: Uma célula não significa o mesmo que uma palavra; uma célula não necessariamente contém uma palavra. Palavra: é a unidade de processamento da UCP. Uma palavra deve representar um dado ou uma instrução, que poderia ser processada, armazenada ou transferida em uma única operação. No entanto, em geral não é assim que acontece e os computadores comerciais não seguem um padrão único para a organização da UCP e MP. Computadores comerciais (tais como por exemplo, os baseados nos processadores Intel 486) podem ter o tamanho da palavra definido como de 32 bits, porém sua estrutura de memória tem células de 16 bits. A estrutura da memória principal é um problema do projeto de hardware: - mais endereços com células menores ou - menos endereços com células maiores? - O tamanho mais comum de célula era 8 bits (1 byte); hoje já são comuns células contendo vários bytes. Número de bits para representar um endereço Expressão geral: MP com endereços de 0 a (N-1) N = 2x logo: x = log2 N sendo x = nº de bits para representar um endereço e N o número de endereços. 5.2.2 Capacidade da Memória Principal 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? 2) Um computador endereça 1k células de 16 bits cada uma. Pede-se: a) sua capacidade de memória; b) o maior endereço que o computador pode endereçar; 3) A memória de um computador tem capacidade de armazenar 216 bits e possui um barramento de dados de 16 bits. Pede-se: a) o tamanho da célula de memória; 4) Calcular e completar os campos: M - Tamanho da célula 8 bits 16 bits 4 bytes 64 bits x - nº de bits do endereço 4 bits N - nº de endereços 1 K endereços T - Capac. da memória 0 a (N-1) - Faixa de endereços 1 K byte 256 bits 4 Gbytes 1 Mbyte 0 a 65.535 0 a 262.143

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? 5.2.3 Operações com Memória Principal É possível realizar duas operações em uma memória: escrita (“write”) – armazenar informação na memória; leitura (“read”) – recuperar uma informação armazenada 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 RDM REM UC

MP

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.

Registrador de Dados da Memória (RDM) → registrador que armazena temporariamente a informação (conteúdo de uma ou mais células) que está sendo transferida da MP para a UCP (em uma operação de leitura) ou da UCP para a MP (em uma operação de escrita). Permite armazenar a mesma quantidade de bits do barramento de dados. Barramento de dados → interliga o RDM à MP, para transferência de informações entre MP e a UCP (sejam instruções ou dados). É bidirecional, isto é, ora os sinais percorrem o barramento da UCP para a MP (operação de escrita), ora percorrem o caminho inverso (operação de leitura). Registrador de Endereços da Memória (REM) →registrador que armazena o endereço de acesso a uma posição de memória, ao se iniciar uma operação de leitura ou de escrita. Em seguida, o referido endereço é encaminhado à área de controle da MP para codificação e localização da célula desejada. Permite armazenar a mesma quantidade de bits do barramento de endereços. Barramento de Endereços → interliga o REM à MP para transferência dos bits que representam um determinado endereço. É unidirecional, visto que somente a UCP aciona a MP para realização de operações de leitura e escrita. Possui tantos fios (ou linhas de transmissão) quantos são os bits que representam o valor do endereço. Barramento de controle → interliga a UCP (Unidade de Controle) à MP para passagem de sinais de controle durante uma operação de leitura ou escrita. É bidirecional, porque a UCP pode enviar sinais de controle para a MP, como sinal indicador de que a operação é de leitura ou escrita e a MP pode enviar sinais do tipo WAIT (para a UCP se manter aguardando o término de uma operação). Para simplificar a descrição dos procedimentos e operações realizadas internamente em um sistema de computação vamos adotar uma convenção genericamente conhecida como Linguagem de Transferência entre Registradores (LTR), Princípios básicos da LTR: a) Caracteres alfanuméricos significam abreviaturas de nomes de registradores ou posição de memória. EX: REM, MP, R1. b) Parênteses indicam conteúdo, no caso de registradores, ou que o valor entre parênteses é um endereço de MP. c) Uma seta indica atribuição, isto é, transferência de conteúdo de um registrador para outro ou para a MP ou vice-versa. 51

EXEMPLO: (REM) ← (CI) (significa que o conteúdo do registrador cujo nome é CI é transferido para o registrador REM). (RDM) ← (MP(REM)) (significa que o conteúdo da célula da MP cujo o endereço está no REM é transferido para o RDM. 5.2.3.1. Operações de leitura: 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


Outro reg. RDM


5C

UCP
REM

Outro reg.

end 1324

5C

1324

UC

end FFFF

Barramento de controle Barramento de endereços

Barramento de dados
Figura 5.5 – Exemplo da operação de leitura.

No primeiro passo, a unidade de controle – UC da UCP inicia a operação de leitura através da transferência do endereço 1324, de um de seus registradores específicos para a REM e coloca o sinal de leitura (READ) no barramento de controle para indicar aos circuitos de controle da MP o que fazer em seguida. A MP decodifica o endereço recebido e transfere seu conteúdo para o RDM através do barramento de dados. Do RDM, então, a informação é transferida para o elemento da UCP destinatário final. 5.2.3.2. Operações de escrita: A realização de uma operação de escrita segue o procedimento semelhante ao da operação de leitura, mas pelo sentido de transferência inverso, isto é, da UCP para a MP. 52

A Figura 5.6 mostra um exemplo de operação de escrita de um dado, de valor igual a F7, da UCP para a MP, a ser armazenado no endereço 21C8. Os passos que descrevem a referida operação são: 1. (REM) ← (outro registrador) (a UCP coloca o endereço no REM de endereços) endereço é colocado no barramento de endereços. 2. (RDM) ← (outro registrador) (a UCP coloca no RDM o dado a ser transferido) 3. Sinal de escrita (a UCP aciona o sinal WRITE pelo barramento de controle) 4. (MP(REM)) ← (RDM) (o dado é transferido para a célula de memória pelo barramento de dados)
end 0000

≈ UCP
end 21C8 RDM REM F7

F7

21C8

UC

end FFFF

Barramento de controle Barramento de endereços

Barramento de dados
Figura 5.6 – Exemplo da operação de escrita.

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/ escrita

RAM (Leitura/escrita)


RAM

ROM Endereço N-1 Endereço N-1

ROM

(a) nomenclatura correta. Memórias dos Tipos ROM:

(b) nomenclatura popular

Figura 5.7 – Configuração da MP de um microcomputador tipo PC.

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. EPROM - Erasable Programmable Read Only Memory ou memória apenas de leitura, programável (com queimadores de PROM) e apagável (com máquinas adequadas, à base de raios ultra-violeta). Esta memória é uma PROM apagável. Tem utilização semelhante à da PROM, para testar programas no lugar da ROM, ou sempre que se queira produzir ROM em quantidades pequenas, com a vantagem de poder ser apagada e reutilizada. EEPROM (ou E2PROM) - Electrically Erasable Programmable Read Only Memory ou memória apenas de leitura, programável e eletronicamente alterável. Também chamada EAROM (Electrically Alterable ROM). Esta memória é uma EPROM apagável por processo eletrônico, sob controle da UCP, com equipamento e programas adequados. É mais cara e é geralmente utilizada em dispositivos aos quais se deseja permitir a alteração, via modem, possibilitando a carga de novas versões de programas à distância ou então para possibilitar a reprogramação dinâmica de funções específicas de um determinado programa, geralmente relativo ao hardware (p.ex., a reconfiguração de teclado ou de modem, programação de um terminal, etc). 5.3 OS COMPUTADORES NÃO PENSAM!

O programador do computador fornece um programa composto por instruções e dados que especificam cada detalhe do que executar, do que fazer com os dados, e quando fazê-los. O computador é, simplesmente, uma máquina de alta velocidade que pode manipular dados, resolver problemas e tomar decisões, tudo sob o controle do programa. Se o programador cometer um erro no programa ou fornecer dados errados, o computador invariavelmente fornecerá saídas erradas, como na máxima “lixo entra, lixo sai”; 55

Talvez uma melhor questão a ser feita neste ponto seja: Como um computador consegue executar um conjunto de instruções? Tipicamente, respondemos a esta questão mostrando o diagrama da arquitetura de um computador (arranjo de seus vários elementos) e, então, repassando o processo, passo a passo, que o computador segue na execução do programa. Ao invés disso, primeiro iremos observar uma analogia um pouco distante, que contém muitos dos conceitos envolvidos na operação de um computador. 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: 1. 2. 3. 4. A informação em cada caixa está escrita em código Abra a caixa 1, primeiro, e execute a instrução lá localizada. Continue pelo restante das caixas, em seqüência, salvo instrução em contrário. Uma das caixas está preparada para ser explodida ao ser aberta.

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) Subtraia o número armazenado na caixa (8) (5) Subtraia 13 do resultado anterior (7)
BOMBA!!!

(4) Se o resultado anterior não for igual a 30, vá para a caixa (7); caso contrário, vá para a caixa seguinte. (6) PARE. Você já tem a resposta. (8) 20

(9) 11

(10) 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. 5.4 UNIDADE CENTRAL DE PROCESSAMENTO

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. Estas etapas compõem o que se denomina um ciclo de instrução. Este ciclo se repete indefinidamente (ver Figura 5.8) até que o sistema seja desligado, ou ocorra algum tipo de erro, ou seja, encontrada uma instrução de parada.

Figura 5.8 – Ciclo de Instrução.

57

As atividades realizadas pela UCP podem ser divididas em duas grandes categorias funcionais: 1) Função processamento; e 2) Função controle. 5.4.1 Função Processamento 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. 5.4.1.1. Unidade Lógica e Aritmética – ULA: É o dispositivo que realmente executa as operações matemáticas com os dados. Tais operações podem ser: Soma Op. Lógica AND Deslocamento à direita Subtração Op. Lógica OR Deslocamento à esquerda Multiplicação Op. Lógica XOR Incremento Divisão Op. Complemento 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.

Sendo que os elementos em amarelo, da UCP, são os que contribuem para a realização da função processamento.

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 ACC Reg. Temp. Flags Reg. B Reg. C Reg. D Reg. E Reg. H Reg. L B = C = D = E = H = L = 8 bits ULA = 8 bits

ULA

Figura 5.10 – Diagrama (simplificado) em bloco da UCP Intel 8085, apenas com os dispositivos básicos da área de processamento.

Reg. Temp. ULA Reg. Temp. Flags Barramento Interno Reg. de Emprego geral AH AL BH BL CH CL AH + AL += 16 bits DL OH ULA = 16 bits 59

Figura 5.11 – Diagrama (simplificado) em bloco da UCP Intel 8086, mostrando apenas os dispositivos básicos da área de processamento.

5.4.1.2. A Influência do Tamanho da Palavra: A capacidade de processamento de uma UCP (a velocidade com que realiza o ciclo de uma instrução) é em grande parte determinada pelas facilidades embutidas no hardware da ULA (ela é, só hardware) para realizar as operações matemáticas projetadas. Um dos elementos fundamentais para isso é a definição do tamanho da palavra da UCP. O valor escolhido no projeto de fabricação da UCP determinará o tamanho dos elementos ligados à área de processamento, entre estes a ULA. Um tamanho maior ou menor de palavra (e, por conseguinte, da ULA, dos registradores de dados, do barramento interno) acarreta, sem dúvida, diferenças fundamentais de desempenho da UCP. Vejamos um exemplo simples sobre a influência do tamanho da palavra na capacidade de processamento. Vamos realizar a soma de dois valores, A = 3A25 e B = 172C, ambos números inteiros, sem sinal, com 16 bits de tamanho cada um. A referida soma será simulada em 2 sistemas de computação, sistema 1 e sistema 2. O sistema 1 possui palavras de 8 bit, e a memória principal tem 64K células de 8 bits cada uma, conforme mostrado na Figura 5.10. O sistema 2 possui palavras de 16 bits, e a memória principal possui um espaço de endereçamento de 1M células, todas também com 8 bits cada uma, conforme mostrado na Figura 5.11. Operação de soma no sistema 1: a) A operação é realizada em duas etapas lógicas, porque cada valor tem 16 bits e a UCP (ULA, registrador ACC e barramento de dados) só permite armazenar, processar e transferir dados com 8 bits de tamanho. b) Na primeira etapa são transferidos para a ULA, via ACC e barramento de dados, a 1a metade de cada número (25 para o número A e 2C para o número B) e eles são somados. c) Na segunda etapa a operação é realizada de forma idêntica, exceto para a 2a parte dos valores (3A para o número A e 17 para o número B). d) A operação completa gasta um período de tempo igual a T1. 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. Operação de soma no sistema 2: a) A operação é realizada em uma etapa lógica, porque a UCP é fabricada para operar valores de 16 bits de tamanho, mesmo tamanho dos números. b) A operação completa gasta um período de tempo igual a T2. 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
8 bits 25+2C (1a) 3A+17 (2a) 0

MP
8 bits 8 bits A B ≈

ULA
ACC = 8 bits 8 bits Barramento de dados UCP – Palavra de 8 bits Memória de 64K bytes Operação: somar 2 números com 16 bits de tamanho A = 3A25 e B = 172C (realizada em duas etapas)

3A 25 17 2C ≈

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
16 bits 3A25+172C (1a) 0

MP
8 bits 8 bits A B ≈

ULA
ACC = 16 bits 16 bits Barramento de dados UCP – Palavra de 16 bits Memória de 1M bytes Operação: somar 2 números com 16 bits de tamanho A = 3A25 e B = 172C (realizada em uma única etapa)

3A 25 17 2C ≈

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”). 5.4.2 Função Controle 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. 5.4.2.1. A Unidade de Controle: É 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). 5.4.2.3. Registrador de Instrução - RI: É 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. 5.4.2.4. Contador de Instrução - CI: É 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.

Relógio

T0

Gerador De Tempo

T1 T2 T3 T4 T5

Unidade De Controle

(a) Diagrama em Bloco do conjunto de tempo da área de controle.

63

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.

5.4.2.5. Decodificador de Instrução: É um dispositivo utilizado para identificar as operações a serem realizadas, que estão correlacionadas à instrução em execução. Em outras palavras, cada instrução é uma ordem para que a UCP realize uma determinada operação. Como são muitas instrução, é necessário que cada uma possua uma identificação própria e única. A unidade de controle está, por sua vez, preparada para sinalizar adequadamente aos diversos dispositivos da UCP, conforme ela tenha identificado a instrução a ser executada. O decodificador recebe na entrada um conjunto de bits previamente escolhidos e específicos para identificar uma instrução de máquina (cada instrução tem um valor próprio) e possui 2N saídas, sendo N a quantidade de algarismos binários do valor de entrada. A Figura 5.15 mostra um exemplo de configuração de decodificador com entrada de 4 bits e 16 saídas. Cada linha de saída aciona de modo diferente a UC e esta, por sua vez, emite diferentes sinais de controle, conforme a linha de saída decodificada.

S0 a S15 Registrador de Instrução E – Entrada S – Saída
(a) Diagrama em bloco da decodificação em uma UCP.

E0 a E2 Decodificador UC

Sinais de Controle

64

E0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

E1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

E2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

E3 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

S0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

S1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

S2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

S3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0

S4 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0

S5 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0

S6 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

S7 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0

S8 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0

S9 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

S10 S11 S12 S13 S14 S15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1

Figura 5.15 – Exemplo de um decodificador com 4 entradas e 16 saídas.

5.4.2.6. Registrador de Dados de Memória – RDM e Registrador de Endereços de Memória REM: São os registradores utilizados pela UCP e memória para comunicação e transferência de informação conforme já explicado. Em geral, o RDM (ou MBR – Memory Buffer Register) possui um tamanho (capacidade de armazenamento de bits) igual ao da palavra e do barramento de dados, enquanto o REM (ou MAR – Memory Address Register) possui um tamanho igual ao dos endereços da memória (e, consequentemente, do barramento de endereço do sistema). Pela definição de bits do REM podemos calcular qual o espaço máximo de endereçamento da memória principal de um computador. 5.5 INSTRUÇÕES DE MÁQUINA

5.5.1. O que é uma Instrução de Máquina?: 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

2

3

• 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 • 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 • 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. 5.5.2. Formato das Instruções: 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). Código de operando – C.Op – é o campo da instrução cujo valor binário é a identificação (ou código) da operação a ser realizada. Assim, cada instrução possui um único código, o qual servirá de entrada no decodificador da área de controle. A Figura 5.17 apresenta exemplos de tipos de operações primitivas normalmente encontradas na implementação dos processadores. Campo operando – Op – é(são) o(s) campo(s) da instrução cujo valor binário indica a localização do dado (ou dados) que será(ão) manipulado(s) durante a realização da operação. Transferir uma palavra de dados de uma célula para outra; Efetuar a soma entre dois operandos, guardando o resultado em um deles ou em um terceiro operando; Desviar incondicionalmente para outro endereço fora da seqüência; Testar uma condição. Se teste verdadeiro, então desviar para outro endereço fora da seqüência; Realizar uma operação lógica AND entre dois valores; Parar a execução de um programa; Adicionar 1 ao valor de um operando; Transferir um byte de dados de uma porta de E/S para a MP; Transferir um byte de dados da MP para uma porta de E/S; Substituir o operando por seu valor absoluto.
Figura 5.17 – Exemplos de operações primitivas típicas.

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: C.Op. Operando 1 Operando 2 Operando 3

A mesma operação (necessitando da mesma forma de três operandos) pode ser realizada com ouro tipo de instrução

C.Op.

Operando 1

Operando 2 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. 5.5.3. Considerações sobre o Formato das Instruções: No que se refere à definição do código de operação, C.Op., há duas maneiras de se criar um conjunto de instruções de um processador: Instruções com C.Op. de tamanho fixo; e Instruções com C.Op. de tamanho variável. Conjuntos de instruções com C.Op. de tamanho fixo são mais simples de implementar e de manipular durante a execução de um programa. Porém, em sistemas que possuem uma grande quantidade de instruções, o tamanho do C.Op. tem de crescer o suficiente para acomodar todos os códigos necessários, com isso, aumenta o tamanho das instruções e, consequentemente, o tamanho requerido pelo programa na MP, o que é uma desvantagem de um modo geral. Neste tipo de C.Op. pode-se calcular imediatamente a quantidade máxima de instruções que podem ser implementadas no respectivo processador, apenas sabendo-se a quantidade de bits do campo. Por exemplo, um conjunto de instruções que tenham C.Op. de 6 bits pode ter, no máximo, 64 códigos diferentes, ou seja, 64 instruções podem ser criadas. Nunca se deve esquecer que a memória, apesar dos avanços tecnológicos que têm reduzido o seu custo e aumentado a capacidade por partilha, ainda representa uma parcela razoável no preço total de um sistema de computação, não devendo, portanto, ser desperdiçada. Um valor típico de C.Op. de tamanho fixo é 8 bits. Os microprocessadores Intel 8080 e 8085 são exemplos de utilização de código de operação (C.Op.) de tamanho fixo igual a 8 bits. Embora seja possível configurar 256 diferentes códigos com 8 bits, este não foi o caso dois processadores referidos (o 8080 possuía um conjunto de 78 instruções, e o 8085, um conjunto de 80 instruções), visto que, na realidade, cada código variava os 6 bits mais significantes, deixando os 2 bits mais à direita para indicações de especificidade na instrução. Os sistemas da família IBM/370, por outro lado, tinham a memória de suas 166 instruções com código de operação de 8 bits, possuindo apenas 11 instruções com códigos de operação de 16 bits. Instruções que possuem C.Op. de tamanho variável permitem codificar uma quantidade maior de instruções com menor quantidade de bits, embora muitas vezes se personalize o tamanho do campo operando (reduzindo-se, com isso, a quantidade de endereçamento de memória), ou se tenha de aumentar o tamanho total da instrução, acarretando os prejuízos de gasto de memória já mencionados. Basicamente, o C.Op. de tamanho variável permite que se estabeleça um compromisso mais versátil entre a quantidade de bits do código de operação e a quantidade de bits do(s) campo(s) de modo a 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. 5.6. FUNCIONAMENTO DA UCP – O CICLO DA INSTRUÇÃO: 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. CARACTERÍSTICAS DE UM PROCESSADOR SIMPLES E HIPOTÉTICO 1. Palavra: 12 bits 2. Endereços: 8 bits (256 células de memória) 3. Células de 12 bits 4. Instruções de 1 operando apenas, com C.Op. = 4 bits e campo operando = 8 bits 5. O campo operando sempre indica o endereço de memória do dado, exceto em instruções de desvio 6. A UCP possui apenas um registrador de dados - o ACC com 12 bits de tamanho, assim como, o RI, e o RDM cada um, o CI e o REM, com 8 bits cada um. 7. Formato das instruções C.Op. Operando 4 bits 8 bits 8. Instruções disponíveis: C.Op. SIGLA DESCRIÇÃO 0 HLT Parar a execução do programa *** Halt, em Inglês 1 LDA Op ACC ← (Op) *** Load, em Inglês 2 STR OP (Op) ← ACC *** Store, em Inglês 3 ADD Op ACC ← ACC + (Op) 4 Sub Op ACC ← ACC – (Op) 5 JZ Op Se ACC = 0, então CI ← Op 6 JP Op Se ACC > 0, então CI ← Op 7 JN Op Se ACC < 0, então CI ← Op 8 JMP Op CI ← Op 9 GET Op Ler dado da porta de entrada e armazená-la em (Op) A PRT Op Colocar na porta referente à impressora o valor armazenado em (Op).
Figura 5.18 – Descrição das Características Principais de um pequeno processador.

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 Instrução Incrementar o CI Decodificação do C.Op. Buscar e armazenar operando Cálculo do endereço do operando

Ciclo de busca

Cálculo de endereço da Instrução Ciclo de execução

Tem operando? Não Executar a operação

Sim

Figura 5.19 – Fluxograma de um ciclo de 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) (CI) ← (CI) + 1 Interpretar o C.Op. 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 buscar a instrução, cujo endereço está no CI conteúdo de CI é incrementado para o endereço da próxima instrução o decodificador recebe os bits do C.Op. e gera uma saída para a UC

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.

UCP ULA
ACC 2∅B CI 317 02

00 01 02 03

MP
1B4 3B5 1A7 ∅7D ≈ Controle

RI

REM B3

B4 B5 B6 ≈ FF

RDM 7BC

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.

Então, ao terminar um ciclo de uma instrução qualquer, a UC reinicia o processo através da execução do ciclo de uma nova instrução (no caso, será a instrução LDA de nosso exemplo), conforme o fluxo da Figura 5.19. Seguindo as etapas indicadas na referida figura e observando os valores armazenados e alterados na Figura 5.21 (subciclo de busca) e 5.22 (subciclo de execução), teremos (todos valores estão em hexadecimal): 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
UC

00 01 02 03

MP
1B4 ≈ ≈

CI

02 03 RDM 7BC 1B4

RI 1B4 ≈ FF Controle ≈

REM B3 02

Barramento de controle Barramento de dados Barramento de endereço Endereço dados controle

Figura 5.21 – Fluxo de dados e de endereços durante a realização do ciclo de busca da instrução LDA.

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. 3 – Decodificação do Código de Operação – Figura 5.22 a) A UC emite o sinal apropriado para que o RI transfira para o decodificador de instrução os 4 bits mais significativos que correspondem ao valor do C.Op. 72

Resultado: Decodificador 00012 ou 116 (Figura 5.22) 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
UC ACC 2∅B 1A7 REM 03 B4 ≈ RI 1B4 RDM 1B4 1A7 FF B4 ≈ Controle 1A7

MP

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) a) A UC emite o sinal para os bits correspondentes ao valor do campo do operando da instrução – B4 – sejam transferidos para o REM, pelo barramento interno. Na prática, em geral há um cálculo para se achar o valor de um endereço, como acontece nos microprocessadores de 16 e 32 bits atuais (seja Intel ou Motorola) e também nos sistemas de grande porte. No nosso sistema “bem comportado” isto não é necessário, e o endereço B4 é transferido diretamente para o REM. b) A UC ativa a linha READ (leitura) do barramento de controle, o qual aciona o circuito de controle da MP para decodificar o endereço B4. c) Decodificado o endereço, o circuito de controle da MP transfere o valor (o conteúdo) armazenado na célula de endereço B4 – o valor é 1A7 – para o RDM, pelo barramento de dados. Resultado: RDM = 1A7 d) No instante seguinte, a UC emite o sinal apropriado para que este valor seja transferido (cópia) para o ACC pelo barramento interno do processador. Os passos 1 e 2 correspondem ao ciclo de busca (“fetch”), e os seguintes – 3, 4 e 5 – correspondem ao ciclo de execução. O ciclo de instrução realizou 2 acessos à memória para realização de 2 ciclos de leitura. 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) a) REM ← CI = 03 (Figura 3.23) b) Ativação da linha READ pela UC. Decodificação pelo circuito de controle da MP do endereço colocado no barramento de endereços. c) RDM ← 3B5 d) RI ← 3B5

UCP
UC

00 01 02 03

MP
3B5

CI

03 04 RDM 1A7 3B5

RI 3B5 ≈ FF Controle ≈

REM B4 03

Barramento de controle Barramento de dados Barramento de endereço Endereço dados controle

Figura 5.23 – Fluxo de dados/endereços durante a realização do ciclo de busca da instrução ADD.

2 – (CI) ← (CI) + 1 CI = 03 + 1 = 04 (Figura 5.23) 3 – Decodificação do Código de Operação C.Op = (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 Há diversos modos de implementar a colocação na ULA. Certos sistemas usam registradores temporários para armazenar os dois operadores imediatamente antes de serem transferidos para a ULA. Em outros, o barramento interno leva dados diretamente para a ULA, quando desejado. No nosso sistema hipotético, vamos utilizar o ACC como meio de ligação entre o barramento interno e a ULA.

UCP
UC ACC 1A7 224 REM 03 B5 ≈ RI 3B5 RDM 3B5 07D FF B5 ≈ Controle 07D

MP

Figura 5.24 – Fluxo de dados/endereços durante a realização do ciclo de busca da instrução ADD.

5 – Execução da operação - (Figura 5.24) Nesta etapa, a UC emite o sinal correspondente que aciona a entrada dos 2 valores no circuito lógico que realiza uma adição e se obtém o resultado na saída. 1A7 + 07D = 224 A soma foi realizada usando-se aritmética hexadecimal para números inteiros sem sinal. 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
No capítulo 5, foram apresentados os principais componentes da Unidade Central de Processamento e vimos às instruções de máquina no seu formato padrão de um operando, conforma mostrado na Figura 6.1.

Instrução de máquina de um operando C.op Op

Código de Operando (C.op)– indica o tipo da operação a ser realizada Operando (Op) – endereço do dado
Figura 6.1 – Exemplo de formato de instruções de um operando.

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). 6.1. QUANTIDADE DE OPERANDOS: 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. C.Op. Op1 Op2 Op3 End. Próx. Instrução

Opn – endereço do dado ou o próprio valor do dado.
Figura 6.2 – Exemplo de formato de instruções com quatro operandos.

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

(Op3)

(Op1) + (Op2), P

end. próx. instr.

Então poderíamos, em uma única instrução, realizar a expressão abaixo: 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. 6.1.1. Instruções com três 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 SUB Op1,Op2,Op3 MPY Op1,Op2,Op3 (Op3) (Op3) (Op3) (Op1) + (Op2) (Op1) -(Op2) (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 SUB E,F,T2 X,T2,X ADD B,T1,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. 6.1.2. Instruções com dois 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 SUB Op1,Op2 MPY Op1,Op2 DIV Op1,Op2 (Op1) (Op1) (Op1) (Op1) (Op1) + (Op2) (Op1) -(Op2) (Op1) * (Op2) (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 DIV ADD SUB MPY C,D E,F B,C B,E 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. 6.1.3. Instruções com um operando: Considerando as vantagens obtidas com a redução da quantidade de operandos, foram também criadas instruções de apenas um operando (as discutidas na seção 3.3), mostrada na Figura 6.5. C.Op. Op1
Figura 6.5– Exemplo de formato de instruções com um operando.

Com esse tipo, o acumulador (ACC) é empregado como operando implícito (não é necessário especificar seu endereço na instrução, pois só há um ACC), guardando o valor de um dos dados e, posteriormente, o valor do resultado da operação. As instruções de um operando aplicadas as operações aritméticas são utilizadas como segue: ADD Op1 SUB Op1 MPY Op1 DIV Op1 ACC ACC ACC ACC ACC + (Op1) ACC - (Op1) ACC * (Op1) ACC / (Op1)

Para esse tipo de formato, foram criadas duas novas instruções, com o propósito de permitir a transferência de dados entre o ACC e a MP: LDA Op1 STA Op1 ACC (Op1) (Op1) ACC

O mesmo comando mostrado na Equação 6.1 poderia ser convertido no programa linguagem Assembly, mostrado a seguir, e observe que nenhum valor de variável é destruído. LDA MPY STA DIV STA LDA ADD C D X F Y B X 80

SUB MPY Exercício:

Y A

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. 3 – Considere as instruções definidas a seguir (de um operando): ADD Op1 DIV Op1 LDA Op1 ACC ACC ACC ACC + (Op1) ACC /(Op1) (Op1) MPY Op1 SUB Op1 STA Op1 ACC ACC (Op1) ACC *(Op1) ACC -(Op1) ACC

Obtenha a equação que resultou no seguinte programa: LDA A ADD C STA X LDA B MPY D SUB STA E Y

LDA X ADD Y DIV STA F X

6.2. MODOS DE ENDEREÇAMENTO: Na seção 5.3, descrevemos o formato básico de instruções de máquina e o ciclo de execução de cada instrução, concluindo que: a) o endereçamento de uma instrução é sempre realizado através do valor armazenado no contador de instrução (CI). Todo ciclo de instrução é iniciado pela transferência da instrução para o RI (usando-se o endereço contido no CI); 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. 6.2.1. Modo Imediato: É 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 C. Op = A CI Op

82

C.Op. 4 CI) Ex2: C. Op 4 R 4

Op1 8 bits Instrução: A35 (significa armazenar o valor 35 no

Op1 8 bits

MOV R, Op C. Op = 5

R

Op

Instrução: 5307 (significa armazenar o valor 07 no registrador de endereço 3 (R3)) 6.2.2. Modo Direto: É 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: C.Op. 4 Op1 8 bits MP ´´ ´´ ´´ 05A ´´ ´´ ´´ 103 15D ´´ ´´ ´´

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

Ex2: C. Op 4 Op1 8 Op2 8 bits 5C

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. 4 Op1 8 bits 74 5D ´´ ´´ 05D ´´ ´´ 1A4 ´´

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á 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. 4 C. Op. 2 3 4 Sigla LDI Op LDA Op LDID Op

Op1 8 bits Descrição ACC ACC Op (imediato) (Op) (direto)

Instrução

33C A5D ACC ((OP)) 33D 43E 33E (indireto) 341 33F 03C 340 33D 341 2AB ACC

84

HEX. 233E 333E 433E

Binário 0010001100111110 0011001100111110 0100001100111110

(Após execução) 033E 0341 02AB

Figura 6.6– Modo de endereçamento implícito no código de operação.

b) a instrução possui um campo específico para indicar o modo de endereçamento; nesse campo, consta um código binário correspondente ao modo desejado (ver Figura 6.7).

C.Op. 4
C. Op. = A

Modo End. 2
LDA DI ---- A13B LDA IM ---- A43B LDA ID ---- A83B

Op1 10 bits
1010000100111011 1010010000111011 1010100000111011

00 – Direto (DI) 01 – Imediato (IM) 10 – Indireto (ID) 11 – Não Usado

Figura 6.7– Exemplo de instrução com indicação explicita do modo de endereçamento.

2 – Comparando-se as características dos três modos de endereçamento apresentados, pode-se estabelecer que: a) o modo imediato não requer acesso à MP para buscar o dado; o modo direto requer um acesso e o modo indireto, pelo menos dois acessos para busca do dado na MP; b) quanto ao tempo de execução das instruções, as que usam o modo Imediato são mais rápidas, seguidas das que usam o modo direto e, finalmente, as que usam o modo indireto são executadas mais lentamente. A velocidade de execução é diretamente proporcional à quantidade de acessos despendida em cada ciclo da instrução. A Figura 6.8 apresenta um resumo comparativo da definição, vantagens e desvantagens de cada modo de endereçamento. Modo de Endereçamento Imediato Definição Vantagens execução Desvantagens da Limitação do tamanho do dado. Inadequado para o uso com dados de valor de variável.

O campo operando Rapidez na contém o dado. instrução.

Direto

O campo operando Flexibilidade no acesso a Perda de tempo, se o dado é contém o endereço variáveis de valor diferente uma constante. do dado. em cada execução do programa. O campo operando Manuseio de vetores (quando Muitos acessos à MP para contém o endereço o modo indexado não está execução. do dado. disponível). Uso como “ponteiro”.
Figura 6.8 – Quadro demonstrativo das características dos modos de endereçamento.

Indireto

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. for I:=1 to 100 do begin readln(A,B); X = A + B; End; O trecho do programa descrito executa 100 vezes o mesmo tipo de ação: ler dois valores e somá-los. Para implementar sua direta execução, é necessário definir uma variável inteira (chamada de contador); após a execução de cada conjunto de instrução de leitura de dados (GET) e de soma, o contador é incrementado de 1, até atingir o valor 100, quando a execução do trecho de programa se completa. Em linguagem Assembly teríamos: LDI 0 ACC 0 STA I (I) ACC (inicialmente I = 0) In GET A ler valor do dado para (A) GET B ler valor do dado para (B) LDA A ACC (A) ADD B ACC ACC + (B) STA X (X) ACC LDA I ACC (I) INC ACC ACC + 1 (no caso é I + 1) STA I (I) ACC (inicialmente I = 0) DEC 100 ACC ACC – 100 (quando ACC = 0, I = 100, logo :-*deve sair do loop) JZ Fim se ACC = 0 (I=100); vá para Fim JMP In vá para In Fim HLT parar Como podemos observar, as instruções: LDA I e STA I manipulam com a leitura e gravação de cada um dos 100 valores assumidos por I durante a execução do programa; gastam-se, com isso, 200 ciclos de memória. Vamos agora executar o mesmo trecho de programa de outra forma; desta vez utilizar o modo de endereçamento por registrador. O objetivo é armazenar na UCP (em um dos registradores disponíveis) o valor inicial de I e efetuar a soma de I = I + 1, diretamente na UCP. Esse método irá economizar os 200 acessos gastos pelo processo anterior. O novo trecho de programa em linguagem Assembly ficaria assim: 86

In

Fim

LDI R1,1 LDI R2,100 SUBR R1,R2 JZ R1,Fim GET A GET B LDA A ADD B STA X INC R1 JMP In HLT

R1 1 (valor inicial) R2 100 (valor final) R1 R1 – R2 se R1 = 0; vá para Fim ler valor do dado para (A) ler valor do dado para (B) ACC (A) ACC ACC + (B) (X) ACC R1 R1 + 1 vá para In parar

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 C.Op. 8 16 bits R1 4 R2 4 bits

Instrução com acesso a 64 K células de MP 40 bits C.Op. 8 Op1 16 Op2 16 bits

Há duas maneiras de empregar o modo de endereçamento por registrador: modo por registrador direto; modo por registrador indireto. 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. (a) ADD (b) ADR (a) LDR

R1 (a) R1,R2 R,Op R1,R2

R2 (R1) (R) (R1) (R1) + (R2) (R) + (Op) ou (R) ((R2))

C.Op.

R (b)

Operando

(R) + Op

Figura 6.9 – Exemplo de instrução com modo de endereçamento por registrador.

Embora o modo de endereçamento por registrador seja vantajoso em vários aspectos, tais como rapidez de execução da instrução e economia de espaço de armazenamento das instruções, essas vantagens nem sempre são aplicáveis. Há certos casos em que não se observa vantagem alguma no referido método, ocorrendo até desperdício de instruções, o que pode vir a constituir uma desvantagem. No exemplo utilizado, as instruções que efetivamente calculam a equação X = A + B não empregam modo de endereçamento por registrador e sim o modo convencional. Não é eficaz usar registrador apenas para realizar uma transferência do tipo: MP R ULA Como podemos verificar, os dados representados pelas variáveis A e B estarão, em cada uma das 100 execuções, sempre na MP (são lidos do meio exterior para a MP) e terão que ser passados para a ULA as 100 vezes. Assim, se utilizássemos algum registrador para armazenar A ou B, o dispositivo serviria apenas para atrasar a execução da instrução com mais um armazenamento, sem se obter qualquer vantagem. 6.2.5. Modo Indexado: Freqüentemente, durante a execução de programas, há necessidade de se manipular endereços de acesso a elementos de certos tipos especiais de dados. Esses endereços servem, na realidade, de ponteiros para esses elementos. Por exemplo, o acesso aos elementos de um vetor (array) deve considerar que tais elementos são armazenados seqüencialmente na memória e que sua localização pode ser referenciada por um ponteiro (endereço), que é alterado para indicar o elemento desejado (o índice do elemento identifica univocamente cada um). Portanto, é importante que haja, no conjunto de instruções de máquina, algumas capazes de realizar essas manipulações de endereços, permitindo uma localização dos dados mais rápida e eficiente. A maioria dos computadores, tais como IBM, DIGITAL, CDC, possui uma ou mais dessas instruções, sua descrição caracteriza um novo modo de endereçamento denominado indexado. Essa denominação advém do fato de que a obtenção do endereço de um dado (elemento de um array) relaciona-se com seu índice. Nesse tipo de instrução, o endereço do dado é a soma do valor do campo do operando (fixo para todos os elementos de um dado array) e de um valor armazenado em um registrador da UCP (normalmente denominado registrador índice). O valor armazenado nesse registrador varia para o acesso a cada elemento (“aponta” para o elemento desejado). Na verdade, esse modo de endereçamento é uma evolução das técnicas desenvolvidas desde os primórdios da computação para manipulação dessas estruturas de dados especiais. Podemos exemplificar essa assertiva apresentando alguns possíveis métodos, evolutivamente usados para manipulação de arrays, até atingirmos a eficiência do modo indexado. Consideremos, por exemplo, a necessidade de, em certo programa, executar-se a seguinte operação sobre três vetores (arrays) de 100 elementos cada: PROG-1 for I :=1 TO 100 do C[I] := A[I] + B[I]; 88

Usando o Modo Direto sem Alterar as Instruções 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.

Usando o Modo Direto com Alteração Dinâmica das Instruções O cálculo da soma dos 100 elementos pode ser obtido Programa Assembly Programa em línpor um programa com muito menor quantidade de guagem de máquina instruções; emprega-se o automatismo do T LDA A(1) 11A00 computador para realizar a tarefa de executar 100 1 ADD B(1) 21A64 vezes as operações. 2 STA C(1) 31AC8 Para tanto, é necessário que se determine, em tempo INC T 8103A de execução, o endereço de cada um dos 100 INC 1 8103B elementos dos vetores. Como esses elementos são INC 2 8103C armazenados seqüencialmente na MP, basta existir DCR N 919FF uma instrução que incremente o campo do operando JNZ T D103A (endereço do dado). Tal instrução executa uma END F0000 operação aritmética (X = X + 1) sobre um valor Figura 6.11 – Prog-1, em Assembly, usando modo de endereçamento direto com alteração dinâmica das binário (X), que é, na realidade, um endereço. instruções. O programa, em assembly, para resolver o algoritmo definido em Prog-1, seria semelhante ao mostrado na Figura 6.12. Observe a Figura 6.12, onde é apresentada uma MP com 64K células, todas com 20 bits e instruções (de um operando), do tamanho da célula e da palavra. Nessa memória foram armazenados os elementos do vetor A (a partir do endereço 1A00), do vetor B (a partir do endereço 1A64) e, a partir do endereço 1AC8, deverão ser armazenados os elementos do vetor C (resultado da soma). O trecho do programa (Figura 6.11) começa a partir do endereço 103A (instrução 11A00). A primeira execução da instrução INC, código de operação igual a 8 (modo imediato), acarreta a alteração do valor do campo operando das instruções LDA, ADD e STA, respectivamente, para: 1A01 (endereço de A(2)), 1A65 (endereço de B(2)) e 1AC9 (endereço de C(2)). Na passagem seguinte, os valores seriam novamente alterados (somando 1 ao valor atual) para: 1A02, 1A66 e 1ACA, endereços de A(3), B(3) e C(3) e, assim, sucessivamente até alcançar-se o endereço de: A(100), B(100) e C(100). 89

O método é adequado e vantajoso, na medida em que são elaboradas apenas nove instruções (é claro que há outras maneiras de fazer o mesmo programa), e o trabalho de execução fica por conta da máquina.

C. Op. 4 LDA Op ADD Op STA Op INC Op Op = 8 DCR Op JMP Op JNZ Op Op = D HLT

Op1 16 bits C. Op = 1 C. Op = 2 C. Op = 3 C. C. Op = 9 C. Op = C C. C. Op = F

103A 103B Cont. do trecho do Programa (N) 19FF A(1) 1A00 A(2) 1A01 A(3) 1A02 “ “ B(1) 1A64 B(2) 1A65 “ “ C(1) 1AC8 C(2) 1AC9 “ “

MP 11A00 21A64

------------------------------

-------------------------------

Figura 6.12 – Programas e dados de uma soma de vetores no modo direto.

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). Usando o Modo Indireto Essa é uma das aplicações do modo indireto, pois o endereço de cada elemento de vetor está armazenado na MP, em uma célula cujo endereço consta no campo operando da instrução. O processo de obtenção de cada elemento, durante a execução do programa, consiste na alteração (adicionando-se um valor que aponte para o novo elemento) do conteúdo da posição de memória endereçada, no modo indireto, pelo campo operando da instrução. Assim, não há modificação das instruções em tempo de execução (um dos problemas do método anterior). A Figura 6.13 apresenta um exemplo dessa técnica. Os elementos de cada vetor estão armazenados nos mesmos endereços da Figura anterior; as instruções LDA, ADD e STA empregam o modo indireto, enquanto INC usa o modo direto (para incrementar os endereços dos elementos dos vetores).

90

C. Op. 4 T

Op1 16 bits LDA A(1) ADD B(1) STA INC INC INC JNZ HLT C(1) A B C T

MP 103A 103B

1503 1504 1505

Ponteiro para Área de dados

DCR N

(N) 19FF A(1) 1A00

B(1) 1A64

C(1) 1AC8

Figura 6.13 – Soma de vetores (programas e dados) usando o modo indireto.

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. Usando o Modo Indexado Neste modo, o endereço de cada elementos do vetor é obtido através da soma (antes da colocação de seu valor no REM) do valor do campo operando da instrução com o valor armazenado em um dos registradores da UCP (escolhido como registrador índice). O resultado da soma é o endereço efetivo do dado, o qual será, então, transferido para o REM. A escolha de qual registrador será utilizado como registrador índice depende da linguagem que se estiver empregando: caso a linguagem seja Assembly, é responsabilidade do programador administrar o uso dos registradores da UCP; se, por outro lado, for empregada uma linguagem de alto nível, a escolha de uso dos registradores fica por conta do programa compilador. Para utilizar esse modo, é necessário haver instruções que manipulem valores em registradores, tais como: carregar um valor no registrador (armazenar o índice); somar um dado valor ao existente no registrador; desviar para outra instrução, se o valor armazenado no registrador for igual a zero (permite sair de um loop de execução), e assim por diante. 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 MVI T (R4),1 (R2),100

LDA (R4), 19FF ADD (R4), 1A63 STA INC JZR HLT (R4), 1AC7 (R4) (R2), T

DCR (R2)

Figura 6.14 – Prog-1, em Assembly, usando modo indexado.

Em seguida, inicia-se o trecho repetitivo do programa, executando o teste de verificação da saída do looping (quando se atingir a soma do centésimo elemento de cada um dos vetores, A e B). A soma propriamente dita é obtida pela repetição de: LDA Rx, Op ADD Rx, Op STA Rx, Op começa carregando A(1) somar A e B armazenar resultado em C

Em primeiro lugar, o endereço de A(1), (1A00), é indicado na instrução através da soma do campo Op (no caso presente seria, por exemplo, 19FF) com o conteúdo de Rx (no caso presente, é o conteúdo de R4, que deverá ser 0001). O resultado dessa soma, 1A00, será, então, transferida para o REM, iniciando o ciclo de leitura do elemento A(1).

92

UCP ULA

ACC Rx
C.Op. 4 R 4

Assumimos que um dos 16 reg. da UCP será usado como Rx. Seu endereço consta do campo R da instrução MP 103A “ “ A(1) 1A00 “ “ B(1) 1A64 “ “ C(1) 1AC8

Operando 16 bits (Rx) Op ACC (Op + (Rx)) (Op + (Rx)) ACC ACC ACC + (Op + (Rx)) CI Op CI Op, se (Rx) = 0 (Rx) (Rx) – 1 (Rx) (Rx) + 1 Parar

0 – MVI Rx, Op 1 – LDA Rx, Op 2 – STA Rx, Op 3 – ADD Rx, Op 4 – JMP Op 5 – JZR Rx, Op 6 – DCR Rx 7 – INC Rx 8 – END

Figura 6.15 – Exemplo de emprego do modo indexado.

A obtenção de B(1), cujo endereço é 1A64, também será realizado através da soma do valor de 0001 (armazenado em R4) com o valor 1A63 (valor constante do campo Op – sempre o mesmo em todas as instruções que manipulam o vetor B), e assim também para C. O programa prossegue, com o incremento do valor armazenado em R4 (Rx), de modo a permitir a soma de A(2) com B(2). A instrução seria INC Rx. Em seguida, retorna-se ao ponto inicial, para testar se o loop já foi executado 100 vezes; caso negativo, a soma é reiniciada: o valor 19FF será somado ao valor 0002 (para endereço de A(2)), bem como 1A63 e 1AC7 com 0002, respectivamente, para endereços de B(2) e C(2). E assim, sucessivamente, até o final. 6.2.6. Modo Base Mais Deslocamento: É um modo de endereçamento empregado em grande parte das arquiteturas de computadores (Intel 8086/8088, IBM/370 e 486x etc.), com o propósito de reduzir o tamanho das instruções (e, com isso, economizar memória), bem como facilitar o processo de relocação dinâmica de programas. A escolha desse modo decorre de dois fatores: a) durante a execução de uma grande quantidade de programas, as referências a células de memória, onde se localizam os operandos, normalmente são seqüenciais, ocorrendo poucos acessos a outras instruções fora de ordem (exceto desvios); e b) a maioria dos programas ocupa um pequeno espaço da MP disponível. Dessa forma, em vez de ser necessário, em cada instrução, que o campo operando tenha um tamanho correspondente à capacidade total de endereçamento da MP, basta que o endereço desejado seja obtido pela soma de um valor existente em um dos registradores da UCP com um valor contido na instrução. Esse método, chamado de base mais deslocamento, consiste, então, na utilização de dois campos na instrução (que substituem o campo operando): um, com o endereço de um registrador (chamado de base), e outro, com um valor denominado deslocamento (porque contém um valor relativo à primeira instrução). 93

Considerando, por exemplo, o caso dos computadores IBM, em que as instruções possuem campo de endereço de registrador-base com 4 bits (porque ele possui 16 registradores) e o campo deslocamento, com 12 bits. Nesse caso, podem-se endereçar áreas de 4.096 Byte (4K) com um valor armazenado no registrador-base, gastando-se apenas 16 bits (4 + 12), ao contrário dos 24 bits necessário para endereçar diretamente todas as células da MP daqueles computadores (capacidade máxima da MP igual a 16 Mbyte). Economizam-se, assim, 8 bits em cada instrução. A Figura 6.16 apresenta um exemplo desse modo de endereçamento, usando quatro registradoresbase e 12 bits para o campo deslocamento. Pode-se observar, então, que, em um dado instante, há quatro áreas de endereçamento, cada uma correspondente ao valor armazenado em cada registradorbase.

Rb1 Rb2 Rb3 Rb4

8 000 20 000 36 564 57 400

0 4K 8K 12K 16K 20K 24K 28K 32K 36K 40K 44K 48K 52K

Figura 6.12 – Soma de vetores (programas e dados) usando o modo indireto.

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: Para muitos, o teclado ainda é um a barreira ao aprendizado da utilização de um computador e também não é tão intuitivo assim como mouse. Baseado nesta distância pensou-se em inventar um outro meio para tornar o aprendizado cada vez mais próximo. Entretanto, os engenheiros da Xerox Corporatiom desenvolveram um conceito explorado pôr Douglas Engelbert do Cento de Pesquisa de Standard. O conceito era de um dispositivo de apontamento, algo que o usuário pudesse mover com a própria mão, um movimento correspondente na tela. 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). O mouse tornou-se um dispositivo indispensável principalmente por causa da popularidade do windows. Com as gerações mais recentes de ambientes operacionais você controla seu PC apontando imagens em vez de digitar comandos. Este dispositivo é considerado o mais popular entre os dispositivos de apontamento. Como funciona o mouse: 1. Ao movimentar o mouse arrastando pôr uma superfície plana, uma bola projetando-se um pouco para for da parte inferior do mouse gira na direção do movimento. 2. Enquanto a bola gira, ela toa e move dois rolamentos posicionados a um ângulo de 90 um do outro. Um rolamento responde pêlos movimentos para traz e para frente do mouse, correspondente a movimentação vertical pela tela. O outro responde pêlos movimentos laterais correspondentes à movimentação horizontal na tela. 3. Cada movimento está ligado a uma roda, conhecida com codificador, da mesma forma que o jogo da direção de um carro que está ligado por seus eixos às rodas. À medida que os rolamentos giram, eles rolam os codificadores. 4. Nas coroas de cada codificador há minúsculos pontos metálicos de contatos. Dois pares de barras de contatos saem do revestimento do mouse e tocam os pontos de contatos de cada um dos codificadores assim que eles passam. Cada vez que uma barra de contato toca um ponto, gera um sinal elétrico. A quantidades de sinais indica quantos pontos as barras de contatos tocaram - quanto mais sinais, maior o trajeto percorrido pelo mouse. A direção para onde os rolamentos estão girando, combinada com a proporção entre o número de sinais dos rolamentos vertical e horizontal, indicam a direção para onde o mouse está se movendo.

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.

Figura 7.2 – Mouse

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.

Figura 7.3 Monitor

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 No início, a comunicação entre computador e impressora era bastante simples. O computador enviava os caracteres a serem impressos, juntamente com os caracteres de controle, que indicavam, por exemplo, onde havia uma quebra de linha ou onde terminava uma página. Hoje em dia as impressoras têm recursos muito sofisticados: impressão de imagens gráficas, cores, impressão de textos em diversas fontes e diferentes qualidades de impressão. Enfim, possuem todos os recursos de controle e formatação que possibilitam a criação de documentos com excelente qualidade gráfica, mesmo em equipamentos domésticos. Para utilizar esse recurso, é preciso que um programa chamado driver traduza os comandos enviados para a 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. Geralmente, a impressora vem equipada com os drivers adequados. Ao adquiri-la, verifique se traz os drivers certos para o computador e o sistema operacional em que deverá ser utilizado. Características das Impressoras 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. A maior vantagem dessas impressoras é a independência que as linguagens têm em relação à marca e ao modelo da impressora. Isto significa que um mesmo trabalho de impressão pode ser enviado para diferentes impressoras sem necessidade de alteração. 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. As impressoras de rede dispõem de hardware e software capazes de receber e atender diretamente aos pedidos de impressão enviados via rede, reduzindo o custo e aumentando a velocidade e a eficiência dos trabalhos de impressão. 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. Usadas principalmente para imprimir informações de programas executados a partir do MS-DOS e programas primários. Existem vários tipos de impressoras matriciais, veremos a seguir alguns tipos. Impressora Matricial para AS/400 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. • • • • • • • • • • • • • Conexão twinaxial ao AS/400 Velocidade de até 600 cps Impressão de até 6 vias com alta legibilidade Capacidade de combinação de conexão - twinaxial e paralela Opcional para impressão de folhas soltas Simples conexão twinaxial ou serial/paralela ao AS/400 Suporte de conexão LAN disponível Painel de operação com 80 caracteres, fácil de usar Formulários contínuos - de uma até seis vias - envelopes e etiquetas Suporte a código de barras e gráficos Suporta fluxo de dados como ASCII, SCS e IPDS Suporta Code V IGP (versões Printonix*) - opcional Operação extremamente silenciosa

Impressora à Jato de Tinta Para as empresas de informática impressora resume-se em duas: qualidade fotográfica. Há dois anos atras, as impressoras a jato de tinta coloridas ofereciam uma qualidade de impressão ainda muito distante daquela encontrada nas fotografias convencionais. Quem quisesse imprimir, por exemplo, uma versão prévia de um relatório anual de uma empresa, com fotos e ilustrações complexas, precisam investir em máquinas muito caras e difíceis de usar para chegar a um resultado decente. Hoje já não é assim. 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 Impressora Laser Advanced Function IBM 3130 100

Esta impressora Laser de grande confiabilidade foi desenvolvida para ser compatível a um ambiente de múltiplos hosts e múltiplos usuários. Apresenta opções flexíveis para a manipulação de papel, suporte de conexões mais comuns, conexões simultâneas com até três sistemas e troca automática de fluxos de dados, que fazem da 3130 uma impressora superior para grupos de trabalho 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 • • • • • • • • Velocidade de até 30 ppm Ciclo de até 200 mil páginas por mês Modelos de folha solta simplex e duplex Baixo custo de operação Aceita até sete tamanhos diferentes de papel desde a gaveta principal (carta, ofício, duplo A4" x 17" - A3, A4, B4 e B5) Até quatro gavetas de entrada com capacidade total de entrada de 3 mil folhas Compatíveis com todas as versões de sistemas PSF, OS/400, Microsoft Windows, AIX e OS/2 Conexão twinaxial ao AS/400

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. No coração da impressora o módulo de impressão - mecanismo que transfere um pó negro para a página - um dispositivo que tem como ancestral a fotocopiadora. Suas partes representam o mais alto grau da tecnologia de impressão, incluindo a criação da imagem a laser, o preciso movimento do papel e o controle por microprocessador de todas as ações. Para criar uma saída de qualidade próxima à de composição tipográfica que é característica de uma impressora laser, este deve controlar cinco diferentes operações simultaneamente: 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. As instruções do processador da impressora rapidamente ligam e desligam um raio de luz de um laser. Um espelho rotativo deflete o raio laser de forma que a trajetória do raio é uma linha horizontal ao longo da superfície de um cilindro denominado cartucho fotocondutor orgânico (OPC, do inglês, organic photoconducting cartridge), usualmente citado simplesmente como o cilindro. A combinação do raio laser sendo ligado e desligado e o movimento em sua trajetória ao longo do 101

cilindro resulta em que muitos minúsculos pontos de luz atingem a superfície do cilindro numa linha horizontal. Quando o laser termina o disparo de pontos de luz em toda a extensão da largura do OPC, o cilindro gira - geralmente de 1/300 a 1/600 avos de polegada na maioria das impressoras laser - e o raio laser começa a trabalhar na linha de pontos seguinte. 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: Scanner alimentado por folhas: 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. 7.6. FLOPPY DISK: 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).

Figura 7.5 - Diskette

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: Winchester ou Partição (MB) Setores/Cluste Tamanho do Cluster (bytes) r 128 a 256 256 a 512 512 a 1024 1024 a 2048 8 16 32 64 4096 8192 16384 32768

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

Figura 7.6 – Hard Disk

105

7.7. CD-ROM: O CD-ROM (Compact Disc Read-Only Memory) é um dispositivo de armazenamento óptico somente para leitura com capacidade de armazenamento de 700 MB de dados. As unidades de CD-ROM são mais rápidas do que as unidades de disco flexíveis, embora os modelos mais modernos (velocidade de 24x) ainda sejam mais lentos do que as unidades de discos rígidos. As primeiras unidades de CD-ROM eram capazes de transferir dados a 150 KB/s. A unidade de 2 velocidades (2x) possuíam velocidade de 300 KB/s, e assim por diante. Mas essa velocidade (considerada velocidade máxima) só é alcançada para os dados que estão próximos a borda do CD. No que se refere ao tempo médio de acesso (o tempo, medido em milissegundos, gasto para o dispositivo óptico de leitura percorrer o disco do início ao fim dividido por dois), siga a tabela abaixo de acordo com a velocidade do drive. Modelo Velocidade Única 2x 3x 4x 6x 8x 10x 12x 16x Tempo de acesso Taxa de transferência 600 ms 320 ms 250 ms 135-180 ms 135-180 ms 135-180 ms 135-180 ms 100-180 ms 100-180 ms

150 KB/s
300 KB/s 450 KB/s 600 KB/s 900 KB/s 1.2 MB/s 1.5 MB/s 1.8 MB/s 2.4 MB/s

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 120 mm 1,2 mm (0,6 mm x 2) 1 ou 2 1 ou 2 15 mm 0,4 mícrons 0,74 mícrons 650/635 nm Parâmetro Diâmetro do disco Espessura do disco Número de lados Número de camadas Diâmetro do furo central Menor cavidade de dados Distância entre trilhas Comprimento de onda do laser 600 KB/s Filmes - 1,3 MB/s Dados 4,7 GB Taxa de transferência média Capacidade (mono face e densidade simples) 17 GB Capacidade (dupla face e densidade dupla) Não se aplica 150 KB/s básico - 1,8 MB/s (12x) 700 MB CD 120 mm 1,2 mm 1 1 15 mm 0,834 mícrons 3,058 mícrons 780 nm

107

Sign up to vote on this title
UsefulNot useful