Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
21/10/1996

< Memória X: >
< Fast Page Mode >


As memórias modernas ordenam internamente os dados sob a forma de uma matriz bidimensional. Como? Não sabe o que é uma "matriz bidimensional" e por isto acha que não vai dar para acompanhar a coluna? Pois matrizes são um assunto tão importante que há até um ramo inteiro da matemática, o cálculo matricial, dedicado somente a elas. E as matrizes bidimensionais são as mais simples dentre seus pares.

Na verdade você somente pensa que não sabe de que se trata. Mas sabe. Quer ver? Já jogou alguma vez batalha naval? Pois bem: na batalha naval cada esquadra é arrumada no interior de uma matriz bidimensional: uma das dimensões corresponde ao número da linha, a outra à letra da coluna. E é justamente aquele conjunto de pontos que pode ser identificado por um par de coordenadas, ou seja, pela linha e coluna onde cada um está situado, que constitui uma matriz bidimensional. E se, mesmo em um longínquo dia chuvoso de sua infância, você jamais jogou batalha naval e continua ignorando o que seja uma matriz bidimensional, lamento muito mas só posso resolver parte do problema dando outro exemplo do que seja uma matriz (a parte referente ao fato de você não ter tido infância não há quem resolva). Então carregue em seu micro uma planilha eletrônica qualquer e preste atenção na forma como se consegue identificar cada célula, fornecendo o número de sua linha e coluna. As células estão dispostas na folha da planilha sob a forma de uma matriz bidimensional (e se a planilha é moderna, composta por diversas "folhas" superpostas, o conjunto de "folhas" constitui uma matriz tridimensional já que cada célula pode ser identificada por três dimensões, os números da linha coluna e folha onde se localiza - mas isto já é outra história).

Voltando ao assunto: como eu disse lá em cima, as máquinas modernas ordenam os dados na memória em uma matriz bidimensional. Então, como na batalha naval, a localização de cada dado pode ser identificada por um conjunto de dois números, o da linha e da coluna onde está armazenado. O que torna o processo de localização um pouco mais complicado do que o que foi aqui descrito há algumas semanas. Veja lá: para acessar um dado em um determinado endereço, a CPU precisa antes enviar o endereço pelo barramento de endereços. Mas para encontrar de fato o byte na memória, este endereço tem que ser decodificado, ou seja, desmembrado nos números da linha e da coluna correspondentes. Quem decodifica o endereço não é a CPU, mas um circuito independente que controla a memória. Na verdade é por isto que são necessários no mínimo dois ciclos de máquina para ler um byte na memória: no primeiro o circuito controlador da memória fornece o número da linha, no segundo o da coluna. Mais adiante, quando discutirmos as memórias EDO, detalharemos um pouco mais este procedimento. Para o assunto de hoje, este nível de detalhe nos basta. Porque hoje vamos examinar um tipo de memória denominada "Fast Page Mode", capaz de acelerar bastante o acesso aos dados.

Neste tipo de memória, uma "página" ("page") consiste no conjunto de dados contidos em uma mesma "linha". Portanto seus endereços têm o número da linha em comum. Para acelerar ainda mais as coisas, a quantidade mínima de informação que pode ser lida em um acesso à memória é uma "palavra", ou seja, um conjunto de dois bytes. Quer dizer: mesmo que você só precise de recuperar o conteúdo de um único byte, terá que ler também seu vizinho, fornecido no mesmo acesso (como os dois bytes são transportados ao mesmo tempo pelo barramento de dados e depositados concomitantemente em um dos registradores da CPU, o fato de ler um ou dois é absolutamente irrelevante no que toca ao tempo gasto para lê-los). "Páginas", em geral, são formadas por quatro "palavras" - portanto por oito bytes ou 64 bits.

Agora fica fácil entender como o acesso por página acelera o processo. Vejamos: efetuando acessos "palavra" a "palavra", cada acesso gastaria no mínimo dois ciclos de máquina, um para fornecer o número da linha, o seguinte para o da coluna. Portanto, para ler quatro palavras sucessivas seriam necessários oito ciclos de máquina, dois por palavra, dispostos na ordem 2-2-2-2. Mas se estas quatro palavras estiverem na mesma página, elas têm em comum o mesmo número de linha. E, lida a primeira, para ler cada uma das demais basta fornecer o número de sua coluna. O que pode ser feito em um único ciclo de máquina. Para ler as quatro, portanto, bastariam cinco ciclos ao invés de oito, dois para a primeira (um para fornecer o número da linha, outro para o da coluna) e apenas um para as demais (somente o número da coluna), em uma rajada ("burst") de ciclos na ordem 2-1-1-1. Uma notável economia de quase 40% do tempo.

Este modo de acesso rápido por página (ou Fast Page Mode) é adotado na memória de praticamente todas as nossas máquinas. É claro que ele somente acelera acessos a posições de memória contíguas, armazenadas em endereços sucessivos. O que não representa grande problema, já que a esmagadora maioria dos acessos são assim.

B. Piropo