Computadores XLIII: Localizando a MP A9 – Texto 7

Propaganda
Computadores XLIII: Localizando a MP
A9 – Texto 7
Sítio Fórum PCs /Colunas
Coluna: B. Piropo – Publicada em 08/10/2007
http://www.forumpcs.com.br/viewtopic.php?t=221949
Autor: B.Piropo
No ponto em que estamos já dispomos de conhecimento suficiente para descobrir onde
(em que local da placa-mãe ou das placas controladoras) se situa cada “chip” de
memória que ocupa determinados endereços. Ou seja: já podemos unir os conceitos de
memória física e memória lógica.
Porém, como dissemos no final da <
http://www.forumpcs.com.br/viewtopic.php?t=221359 > coluna anterior, certamente a
coisa ficará mais clara se dermos nomes aos bois, ou melhor, se dermos números aos
endereços. Vejamos então um exemplo prático “montando” o mapa da memória
principal de um micro do tipo PC equipado com, digamos, 512 KB de memória DRAM,
uma placa controladora de vídeo obedecendo ao padrão CGA e uma placa controladora
de disco flexível. Além delas, o micro disporá também de duas placas controladoras
adicionais, uma para controle de uma “porta paralela” e a outra para controle de uma
“porta serial”, uma configuração bastante comum no início dos anos 80.
Veja, na Figura 1, uma foto (obtida no sítio < http://www.yesterpc.com/ >
“Yesterpc.com”) que exibe o gabinete aberto deste micro, onde se vê a placa-mãe e,
encaixadas nos slots, as cinco placas controladoras acima mencionadas.
Figura 1: Placa-mãe e placas controladoras de um IBM PC
O que nos interessa saber é:
 de que tipo são os “chips” que constituem a MP desta máquina?
 onde (fisicamente) estão situados?
(Para acompanhar melhor o raciocínio desenvolvido adiante, consulte o diagrama
esquemático exibido na Figura 2, mais abaixo).
Comecemos pelo início, como convém: os primeiros endereços, a partir de zero na base
do espaço de endereçamento até o endereço 640 K, fazem parte dos primeiros dez
segmentos (destinados aos programas) portanto as posições de memória que recebem
estes endereços devem, obrigatoriamente, estar situadas em “chips” de memória volátil
do tipo RAM (senão, como os programas poderiam escrever neles?). Mas acontece que
nosso PC tem 512 KB de memória instalada e nas primeiras placas-mãe de PCs só havia
soquetes para receber 256 KB de memória RAM. Onde ficariam os 256 KB restantes?
Ora, em uma placa controladora encaixada em um “slot” (reiterando para tornar mais
claro: isso não pode acontecer nos micros modernos onde a memória deve
necessariamente estar ligada eletricamente ao barramento frontal e os “slots” destinados
às placas controladoras estão ligados ao barramento de E/S; mas lembre que nos
primeiros PCs havia apenas um barramento onde se conectava tanto a memória quanto
os slots das placas controladoras). Então, no nosso exemplo, teríamos que somar a
memória RAM instalada na placa-mãe com aquela instalada na placa controladora para,
assim, preencher (“povoar”) com “chips” de memória RAM os endereços que vão de
zero a 512 K (para ser exato: de zero a [512 K – 1]; pense e descubra o porquê disso).
Acima do endereço 512 K somente teremos memória instalada a partir do endereço 640
K, o início da memória de vídeo. Portanto, no mapa da memória, teríamos um “buraco”
(um trecho vazio no espaço de endereçamento), correspondente aos endereços de 512 K
até [640 K - 1], cujos endereços lógicos existem, mas cujas posições de memória (física)
correspondentes não, já que não há “chips” ocupando estes endereços.
A partir do endereço 640 K situa-se a memória de vídeo. Placas controladoras de vídeo
no padrão CGA eram fornecidas geralmente com somente 16 KB de memória (bons
tempos, aqueles...) que ocupavam apenas um pequeno trecho do primeiro dos dois
segmentos de 64 KB reservados à memória de vídeo, cujos endereços começam em 640
K (uma imposição do sistema operacional DOS do velho PC). Portanto, acima do
endereço 656 K (640 K + 16 KB) haverá outro “buraco” de pelo menos 112 K no
espaço de endereçamento (de 656 K até [768 K -1]).
Os próximos 128 KB a partir do endereço 768 K são reservados para as rotinas que
controlam os periféricos. Elas vinham gravadas de fábrica em um chip de memória não
volátil (na verdade, de memória permanente do tipo ROM) localizado na própria placa
controladora do periférico. Neste trecho do espaço de endereçamento alguns endereços
podem ser ocupados por rotinas de controle de periféricos gravadas em “chips” de
memória permanente situados na placa controladora de cada periférico. No nosso
exemplo, como o micro não dispõe de nenhum periférico além do acionador de
disquetes, estes endereços permanecem vagos. Portanto os endereços do trecho 800 K
até [896 K -1], totalizando 96 KB, permanecem vazios já que não há outra placa
controladora contendo memória (as rotinas de controle das duas placas adicionais, serial
e paralela, fazem parte do BIOS e estão gravadas no chip de ROM BIOS que será
discutido adiante).
Chegamos, finalmente, aos dois últimos segmentos, reservados egoisticamente pelo
sistema operacional para seu uso exclusivo e cujos endereços começam em 896 K.
Como nos demais segmentos da memória superior, grande parte deste espaço de
endereçamento permanece ocioso.
Os primeiros endereços ocupados correspondiam aos chips de memória permanente
(memória ROM) que continham as rotinas da linguagem de programação BASIC
fornecida com o sistema e ocupavam 64 KB (geralmente vinham em quatro chips de
memória ROM de 16 KB cada) correspondentes aos endereços 944 K até [1008 K -1],
deixando mais um “buraco” vazio de 48 K no início do trecho final de 128 K.
Restam os últimos 16 KB do espaço de endereçamento de memória do PC. Por
determinação dos desenvolvedores do sistema operacional DOS, eles devem ser
obrigatoriamente ocupados pelas rotinas do BIOS (que incluem as rotinas controladoras
das portas paralela e serial) e algumas outras rotinas auxiliares cujo papel é
extremamente importante para o processo de inicialização da máquina, sendo
responsáveis pelo aparente milagre do “boot”. A peculiaridade é que todas elas (BIOS e
rotinas auxiliares) vêm gravadas em um chip de memória permanente do tipo ROM
soldado diretamente na placa-mãe (nos micros modernos este chip não é mais do tipo
ROM, contém muito mais que as rotinas do BIOS mas, por tradição, ainda é designado
como “ROM BIOS”).
Bem, se você conseguiu chegar até aqui, parabéns. Tentei explicar as coisas da forma
mais elementar possível, mas reconheço que o tema é árido, tem números demais para
atrapalhar e a compreensão não é fácil. Mas seu entendimento é crucial para que se
possa compreender não apenas o papel (geralmente mal entendido) daquilo que se
convencionou chamar de memória principal como também do próprio funcionamento
do computador.
Com o que vimos até agora podemos unir o “mapa da memória” (lógica) com a
localização (física) dos CIs que contêm memória em nosso PC tomado como exemplo.
Figura 2: PC – Memória lógica e física
Figura 2 exibe uma visão panorâmica da memória, tanto lógica quanto física, do IBM
PC. Á esquerda aparece um diagrama esquemático do “mapa da memória principal”,
com os trechos “povoados” (ocupados por “chips” que contêm posições de memória) e
não “povoados” (marcados como “vagos”). Seria interessante comparar este diagrama
com o mostrado na Figura 1 da < http://www.forumpcs.com.br/viewtopic.php?t=221359
> coluna anterior, que exibe os trechos reservados do espaço de endereçamento do PC.
À direita da figura aparece o interior do PC usado como exemplo, mostrando sua placamãe e placas controladoras com a localização dos diversos CIs (“chips”) de memória,
tanto na placa-mãe quanto nas placas controladoras que os contêm.
Note as linhas coloridas que unem os trechos ocupados (preenchidos por chips) do
espaço de endereçamento do PC com os chips correspondentes, seja na placa-mãe ou
em uma das placas controladoras. E repare na localização e no tipo dos chips que a
compõem.
Neste ponto já conhecemos razoavelmente a memória principal de nossos computadores
e podemos ressaltar os pontos mais importantes deste conhecimento.
O primeiro é que, embora o espaço de endereçamento seja um contínuo que se estende
desde o endereço zero até o maior suportado pela máquina (aquele expresso no maior
número binário que cabe nas linhas de endereço do barramento frontal, no caso do IBM
PC de nosso exemplo, o endereço [1024 K -1]), nem todo ele está preenchido por
memória física (na verdade quase nunca está), havendo intervalos vagos, cujos
endereços não correspondem a posições de memória física. Quando o controlador de
memória tenta acesso a um destes endereços, o sistema emite uma mensagem de erro e
segue adiante.
O segundo ponto importante é que, ao contrário do que muita gente pensa (a ponto de
usar indiferentemente as expressões “memória principal” e “memória RAM” como se
tivessem o mesmo significado), nem toda a memória principal é constituída por “chips”
de memória volátil do tipo RAM. Como vimos, alguns trechos do mapa de endereços
são preenchidos por “chips” de memória não volátil (EPROM, EEPROM ou “flash”
sobre as quais falaremos adiante) ou de memória permanente ou semi-permanente
(ROM ou PROM). Quando o controlador da memória tenta ler o conteúdo de um destes
endereços, o dado é fornecido sem retardo já que todas estas memórias permitem leitura
do tipo acesso aleatório. Mas quando tenta escrever em um deles, uma mensagem de
erro é emitida e o processamento prossegue, já que o conteúdo destes CIs não pode ser
alterado.
Pronto. Agora já podemos esclarecer o mistério do boot.
Na próxima coluna, naturalmente.
Coluna anterior: < http://www.forumpcs.com.br/viewtopic.php?t=221359 >
Computadores XLII: Placas controladoras do PC
Próxima coluna: Em breve
Download