Sítio do Piropo

B. Piropo

< Coluna em Fórum PCs >
Volte
01/10/2007

< Computadores XLII: >
<
Placas controladoras do PC >


Na coluna anterior vimos o aspecto de uma placa-mãe do velho IBM PC e identificamos alguns de seus componentes. Antes já havíamos mencionado seu “mapa da memória”, um diagrama esquemático dos trechos do espaço de endereçamento que os desenvolvedores do DOS dedicaram a fins específicos. E, para refrescar nossa memória, o exibimos na Figura 1, onde os trechos dedicados a programas, memória de vídeo, memória das controladoras de periféricos e memória para uso exclusivo do sistema estão destacados em cores distintas, com seus endereços limítrofes mostrados em decimal e em hexadecimal.

Figura 1: Mapa da memória do PC.

Mas não era apenas na placa-mãe do velho IBM PC que se podia encontrar memória. Ela também poderia existir nas placas controladoras encaixadas nos “slots”.

Como vimos na coluna anterior, embora o PC original da IBM pudesse usar até 640 KB de memória para programas, sua placa-mãe podia receber no máximo 256 KB. Isso porque memória RAM era cara e naquela época 256 KB de RAM eram mais do que suficientes (tanto que o PC vinha de fábrica com apenas um banco de 64 KB preenchido e a memória adicional, quando necessária, era vendida como opcional na forma de CIs de memória avulsos que se encaixavam nos soquetes vazios da placa-mãe, nove de cada vez para completar um banco). E como o barramento era único, a memória principal poderia estar localizada em qualquer ponto que se comunicasse com este barramento. Inclusive em placas de circuito impresso encaixadas nos mesmos “slots” destinados às placas controladoras dos dispositivos periféricos (o que nos micros modernos é impossível, já que a memória deve estar ligada à seção do barramento denominada barramento frontal enquanto as placas controladoras de periféricos se conectam ao um dos barramentos de E/S, como PCI, AGP e outros). E podia consistir de qualquer tipo de chip que permitisse o acesso do tipo aleatório.

Portanto, se o feliz proprietário de um PC precisasse de mais de 256 KB de memória RAM (o que, naqueles tempos, era raro), poderia comprar uma placa de circuitos de memória DRAM (ou “placa de expansão de memória”) e encaixá-la em um dos “slots” destinados às placas controladoras (que, não esqueçam, no PC estavam ligadas ao mesmo barramento da MP). Mas a soma das capacidades de todos os “chips” de memória DRAM instalada não deveria ultrapassar os 640 KB, o total destinado aos programas.

Veja, na Figura 2, o aspecto de uma destas placas de expansão de memória que pode conter até 256 KB (quilobytes) adicionais em seus 36 chips de 64 Kb (quilobits) que formam os quatro “bancos” de memória DRAM que ocupam a parte posterior da placa. No caso da figura, todos os soquetes estão ocupados por chips e a placa oferece sua capacidade máxima, 256 KB. Mas de um a três de seus “bancos” de 64 KB (formados por nove chips cada, como sabemos) poderiam estar “vazios”, o que reduziria a capacidade instalada na placa de expansão para 192 KB, 128 KB ou 64 KB, respectivamente (a Figura 2, assim como as demais que ilustram esta coluna, foi originalmente obtida no excelente sítio < http://www.yesterpc.com/ > “Yesterpc.com”).

Figura 2: Placa de expansão da MP de um PC.

A memória de vídeo do PC (me refiro aqui à memória física, ou seja, aos “chips” de memória que armazenam o conteúdo digitalizado das telas) era fornecida juntamente com a placa controladora de vídeo, em CIs soldados diretamente nela. Já no que toca à memória lógica, de acordo com o “mapa de memória” do PC mostrado na Figura 1, os endereços das posições de memória usadas para vídeo tinham obrigatoriamente que se situar acima de 640 K, nos dois primeiros segmentos da “memória superior”. Veja, na Figura 3, o aspecto de uma placa controladora de vídeo CGA e note o chip de memória ROM usado para armazenar o “desenho” dos caracteres usados nas telas texto, assim como o grande CI de controle do CRT (tubo de raios catódicos, o “cinescópio” dos antigos monitores CGA) e os dois conectores, um tipo RGB para monitores de vídeo e um tipo “vídeo composto” que poderia ser ligado a uma televisão ou monitor de vídeo composto. O padrão CGA usava apenas os primeiros 16 KB dos 128 KB destinados à memória de vídeo ocupando o trecho do espaço de endereçamento que se estendia entre os endereços 640 K e 656 K -1.

Figura 3: Placa controladora CGA.

Se o usuário desejasse agregar periféricos, como acionadores de discos flexíveis (que eram opcionais e não vinham com o PC; discos rígidos somente foram aceitos no modelo seguinte, o IBM XT) precisava encaixar a placa controladora correspondente em um dos “slots” de E/S. E todas as rotinas de programação necessárias para controlar o dispositivo vinham gravadas de fábrica em “chips” de memória não-volátil de acesso aleatório (ROM) soldados a estas placas controladoras. O conteúdo destas memórias era acessado pela UCP através de seus endereços de memória. Do ponto de vista lógico, estes endereços eram obrigatoriamente situados nos “segmentos” da “memória superior” destinados às rotinas de controle de dispositivos periféricos (entre 768 K a 896 K – 1).

O aspecto de uma placa controladora de acionadores de discos flexíveis do PC é mostrado na Figura 4, onde está assinalado o chip de memória ROM (no caso da figura, o CI D765AC) que armazena as rotinas de controle e cujos endereços ocupavam o trecho de 16 K do espaço (lógico) de endereçamento que se estendia de 800 K até 816 K -1 (sim, elas poderiam ocupar os primeiros 16 KB de posições de memória imediatamente acima de 768 K, mas por padrão os endereços das rotinas de controladores de discos iniciam em 800 K, deixando vagos os endereços compreendidos entre 768 K e 800 K -1).

Figura 4: Controladora de disquetes do IBM PC.

O ponto mais importante a ressaltar aqui é que estas 16 K posições de memória, além de se localizarem fisicamente fora da placa-mãe, não integram um “chip” memória volátil tipo RAM como os vistos até agora mas sim um CI de memória permanente (ROM), um tipo de memória que só pode ser lido, já que as rotinas de controle do dispositivo não precisam – na verdade, não devem – ser alteradas.

Finalmente, havia algumas rotinas usadas pelo sistema operacional para acessar os demais itens de hardware como portas paralelas e seriais (ou assíncronas), além de diversos outros (como o acionador de fitas cassete). Estas rotinas dependiam dos componentes usados para fabricar a placa-mãe e por isso não eram fornecidas pelo desenvolvedor do sistema operacional, mas sim pelo fabricante da placa-mãe (naturalmente, de acordo com diretrizes estabelecidas pelos responsáveis pelo desenvolvimento do sistema operacional). Por isso elas vinham gravadas diretamente da fábrica, em “chips” de memória permanente tipo ROM soldados na placa-mãe. Eram as famosas rotinas que constituíam o sistema básico de Entrada e Saída (Basic Input/Output System, ou BIOS) e os chips que as continham eram conhecidos como “ROM BIOS”. No PC as rotinas do ROM BIOS ocupavam 16 KB e vinham gravadas em um chip de memória ROM, ou apenas para leitura (veja na Animação 1 da coluna anterior). Do ponto de vista lógico, esta memória ocupava as posições de memória de endereços mais altos, os últimos 16 KB dos dois segmentos situados acima de 896 K no trecho do espaço de endereçamento destinado para uso exclusivo do sistema operacional.

Ainda nestes segmentos e geralmente imediatamente abaixo dos endereços ocupados pelo ROM BIOS havia 64 KB de memória que os desenvolvedores do PC reservaram para armazenar um programa. Na verdade, um “programa para criar programas”, mais especificamente as rotinas de programação de uma linguagem denominada BASIC (cujo nome, para surpresa de alguns, é o acrônimo de Beginner’s All-purpose Symbolic Instruction Code). Esta rotinas eram gravadas em um conjunto de CIs do tipo ROM conhecidos por “ROM BASIC” soldados diretamente na placa-mãe do PC (e que quando não estavam presentes eram responsáveis por uma curiosa mensagem de erro de inicialização, “NO ROM BASIC”, sobre a qual falaremos adiante e que deixava muito “ténico” perplexo).

Mas nem toda placa controladora dispunha de memória. Por exemplo: a figura 5 mostra duas placas utilizadas para conexão de periféricos ao velho PC, à esquerda a controladora conhecida por “porta paralela” e à direita a “porta serial” ou “assíncrona”. Elas serviam meramente para controlar a troca de dados entre o PC e alguns dispositivos de entrada e saída. Nelas se podia conectar qualquer periférico que aderisse ao padrão de troca de dados correspondente (em geral se conectavam impressoras à porta paralela e modems – e, mais tarde, mouses – à porta serial). Mas, como vimos acima, as rotinas de controle destas portas vinham integradas às demais rotinas de controle de entrada e saída do próprio sistema operacional que eram fornecidas gravadas no chamado ROM BIOS, um chip soldado à placa-mãe. Portanto as placas controladoras continham apenas circuitos auxiliares que ensejavam a troca de dados e nelas não havia chips de memória volátil nem permanente.

Figura 5: Portas paralela e serial.

Parece complicado? Pois era mesmo.

Mas certamente a coisa ficará mais clara se dermos nomes aos bois, ou melhor, se dermos números aos endereços em um exemplo prático.

O que faremos na próxima coluna.

 

B. Piropo