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