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

< Memórias IX: >
< Estados de Espera >


Já sabemos que a memória RAM de nossos micros é composta por chips do tipo DRAM, formados por um imenso número de capacitores microscópicos cujas cargas tendem a "vazar" e por isto devem ser freqüentemente renovadas através de uma operação denominada "refresh". E sabemos que durante o refresh a memória não pode ser acessada, o que originou o conceito de "tempo de acesso" à memória. Finalmente, vimos que para acessar a memória são necessários pelo menos dois ciclos de máquina, o primeiro para enviar pelo barramento de endereços o endereço da posição de memória a ser acessada, o segundo para receber (ou enviar) pelo barramento de dados o dado a ser lido (ou escrito) no dito endereço .

Pois bem: antigamente, no tempo dos XT "turbo" de 10MHz e dos chips de memória com tempos de acesso de 150ns, as coisas corriam sem problemas. Senão vejamos: 10 MHz significam dez milhões de ciclos por segundo. A duração de um ciclo, portanto, é de 100ns. Como para cada acesso são necessários pelo menos dois ciclos, feito um acesso a CPU precisa de pelo menos 200ns para fazer mais um. Chips de memória de 150ns não podem ser acessados em intervalos menores que 150ns. Portanto, não havia nenhum impedimento para acessos sucessivos a cada 200ns.

Mas as coisas evoluíram. Não apenas aumentaram as freqüências de operação das CPUs como reduziram-se os tempos de acesso dos chips de memória DRAM . O problema é que o ritmo destas evoluções foi muito diferente: enquanto vivemos hoje os tempos dos Pentium de 200MHz, os chips DRAM mais "rápidos" disponíveis (de menores tempos de acesso) andam na casa dos 60ns (há mais rápidos, mas não são muito confiáveis). Quer dizer: enquanto as freqüências de operação das CPU cresceram mais de quarenta vezes (a CPU do PC original era um 8088 de 4,77MHz), os tempos de acesso dos chips de memória reduziram-se a pouco menos da metade. Uma disparidade tamanha que originou o conceito de freqüências interna e externa da CPU, mencionado na coluna do dia nove do mês passado. A freqüência interna, que regula o ritmo de funcionamento da CPU, tornou-se tão rápida que foi necessário adotar um ritmo mais lento para acessar a memória. Este ritmo mais lento é a "freqüência externa", que nas máquinas modernas atinge no máximo a 66MHz (arredondando, Marco Aurélio, arredondando...) Neste ponto, cabe um parênteses: o conceito de freqüências interna e externa nasceu com os (já) velhos 486 DX2, que se chamavam "DX2' justamente porque usavam internamente o dobro da freqüência com que acessavam a memória: um 486 DX2 50 usa freqüências de 50Mhz (interna) e 25MHz (externa). O mesmo ocorre com o DX2 66, com freqüências interna e externa de respectivamente 66MHz e 33MHz. Mas cuidado: por razões que somente a Intel explica, o 486 DX4 100, cuja freqüência interna é 100MHz, usa uma freqüência de 33MHz quando acessa a memória (e não 25MHz, como o nome parece indicar).

Porém, mesmo operando interna e externamente com diferentes freqüências, a disparidade entre freqüências de operação e tempos de acesso à memória ainda é muito grande. Vejamos um caso típico: uma máquina moderna cuja freqüência externa é de, digamos, 60MHz, usando chips de memória DRAM com tempos de acesso de 60ns. A duração de cada ciclo de máquina é de 17ns. Como são necessários pelo menos dois ciclos para acessar a memória, a CPU está pronta para novo acesso a cada 34ns. Porém os chips de memória somente podem aceitar acessos sucessivos a cada 60ns. Resultado: feito o acesso, a CPU precisa aguardar mais dois ciclos de máquina apenas para que decorram os 60ns e a memória seja liberada para novo acesso. Estes dois ciclos adicionais denominam-se "estados de espera". Que, como o nome indica, nada mais são que uma pura perda de tempo: durante um "estado de espera" a CPU nada faz além de aguardar o transcurso do tempo de acesso à memória. Mas toda máquina que ostenta uma CPU rápida inclui no setup a opção de introduzir estados de espera para compatibilizar a freqüência de operação da CPU com os tempos de acesso dos chips de memória que utiliza.

Com a tecnologia atual é impossível eliminar os estados de espera. Mas há duas formas de reduzir seus efeitos: o emprego de cache de memória e o uso dos novos chips de memória denominados EDO RAM. Assunto das próximas colunas.

PS: Amanhã, terça-feira dia 8, às 19 hs, no auditório do RDC da PUC, durante a II InfoPUC que se estende por toda esta semana, farei uma palestra sobre como enfrentar as dificuldades que a rápida evolução da indústria cria para o usuário que deseja fazer o upgrade de sua máquina (o tema original versaria sobre sistemas operacionais, mas garanto que o novo é muito mais interessante). Coincidentemente, a palestra será realizada no mesmo local, dia e hora tradicionalmente reservados para a reunião mensal do Grupo de Usuários do OS/2, o que me dará a oportunidade de rever velhos amigos. Apareçam. Garanto que vão gostar.

 

B. Piropo