Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
11/03/1996
< EIDE e Fast ATA XVIII: >
< Enhanced BIOS >

Hoje, afinal, veremos como o "padrão" EIDE logrou romper o infame limite de 504 Mb dos discos IDE. Limite que, como vimos, deve-se à necessidade de obedecer simultaneamente às limitações do BIOS (1024 cilindros, 63 setores por trilha e 256 cabeças) e do padrão ATA (65536 cilindros, 255 setores por trilha e 16 cabeças). O que resultou em um máximo de 1024 cilindros (condição do BIOS), 63 setores (ainda condição do BIOS) e 16 cabeças (condição do padrão ATA), valores que multiplicados entre si e pelos 512 bytes contidos em um setor, resultam em 504 Mb.

A coisa se resolveu, evidentemente, alterando o BIOS. Mas pode tirar o cavalo da chuva e recolher o muxôxo de desprezo e o ar de "ora, assim até eu", porque a coisa não foi tão fácil como parece. Pois simplesmente alterar os limites do BIOS (por exemplo, aumentar o número de cilindros suportados pelo BIOS para os mesmos 65536 suportados pelo padrão ATA) não resolveria o problema. Ou melhor: até poderia resolver se todos passassem a usar os novos sistemas operacionais como OS/2 e Linux. Mas para os usuários de DOS e Windows (inclusive Windows 95), ou seja, para a imensa maioria dos usuários, não adiantaria nada. Porque como bem sabemos, nestes sistemas operacionais todas as operações de acesso a disco são feitas usando a famosa Int 13h. E ela está indissoluvelmente ligada aos limites do BIOS original.

Assim sendo, por mais maravilhosa que fosse, a solução não faria sentido se não mantivesse compatibilidade com a dupla DOS/Windows. De que adiantaria um método tecnicamente perfeito que somente pudesse ser usado por uma fração mínima do mercado? Portanto, para ser aceitável, a coisa teria que ser mais sutil: a mudança no BIOS deveria ser feita de forma que o DOS não "percebesse". Ou seja: deveria aceitar os acessos a disco solicitados através da velha Int 13h do DOS.

A solução foi muito engenhosa. Tanto, que manteve compatibilidade com tudo o que existia anteriormente, permitindo ao mesmo tempo elevar a capacidade máxima de um disco rígido EIDE para perto de oito Gigabytes. E foi feita utilizando um velho recurso, já adotado pelo padrão ATA desde sua primeira implementação: a "tradução". Que, para os de memória curta, consiste no expediente de usar uma geometria lógica diferente da geometria física. Esqueceu? Pois recordemos, então:

"Geometria" é o nome que se dá à distribuição dos setores pelas trilhas e faces do disco. Geometria física é a distribuição real, ou seja, o número de trilhas efetivamente existentes em cada face e o número de setores efetivamente existentes em cada trilha (número que nos discos IDE, como sabemos, é maior nas trilhas externas que nas internas). A geometria física é usada pela interface para se comunicar com o drive, ou seja, para efetivamente ler ou gravar dados no disco. Já a geometria lógica é uma distribuição fictícia, usada pela interface para se comunicar com a CPU na qual o número de setores por trilha é sempre igual em todas as trilhas, como exigido pelo BIOS. A condição essencial é que o número total de setores seja o mesmo em ambas as geometrias, de forma a haver uma correspondência biunívoca entre eles (cada setor da geometria física deve corresponder a um e somente um setor da geometria lógica). Assim, quando o sistema operacional pede para acessar um certo setor usando a geometria lógica, a interface faz a "tradução" do pedido para a geometria física (ou seja, verifica a que setor real de que trilha efetivamente existente no disco corresponde o setor solicitado) e acessa o setor onde os dados desejados realmente estão gravados.

Discos IDE usam necessariamente a tradução, pois adotam o esquema de MZR (Multiple Zone Recording) onde as trilhas externas abrigam mais setores que as internas. O recurso adotado pelos idealizadores do esquema EIDE foi acrescentar mais um estágio de tradução na comunicação entre interface, CPU e drive, executado diretamente pelo BIOS. Um expediente engenhoso que logo examinaremos em detalhe.

Os BIOS que usam este recurso denominam-se "Enhanced BIOS" e permitem usar discos rígidos com mais de 504 Mb sob DOS e Windows (e sob sistemas operacionais mais avançados também, é claro). Infelizmente a coisa não foi padronizada, de modo que implementações diferentes de BIOS usam diferentes esquemas de tradução. IBM e Microsoft, antes de seu rumoroso divórcio, emitiram um documento intitulado "Int 13 Extensions" que quase se tornou um padrão de fato e foi seguido por Phoenix, AMI e Award, os maiores desenvolvedores de BIOS. Mas a Western Digital, por exemplo, adota uma implementação diferente nos BIOS de algumas de suas controladoras.

Como sabemos, um BIOS não Enhanced contém uma tabela (FDPT, ou Fixed Disk Parameter Table) com os parâmetros que definem a geometria dos discos rígidos da máquina (que corresponde aproximadamente aos dados da tabela usada durante o setup para informar à máquina sobre os tipos de discos rígidos instalados). Os Enhanced BIOS contém ainda uma segunda tabela, uma extensão da FDTP denominada EDTP (Enhanced Disk Parameter Table), com parâmetros e informações adicionais sobre os modos de tradução utilizados pelo BIOS e pela interface ATA.

Que serão discutidos semana que vem.

B. Piropo