Era uma vez, o BIOS…

Era uma vez, o BIOS…

Uma vez, lá pelos idos de 1995 (época em que quase nada entendia de Informática), fui à casa de um primo para “arrumar algo para fazer” (sim, eu era um típico “pós-adolescente” desocupado). Quando cheguei, vi que ele estava revirando algumas configurações do seu computador; então, perguntei-lhe o que ele estava fazendo: “ajustando o BIOS do computador”. Novamente, perguntei: “o que é BIOS?”. Ele prontamente respondeu “Besta Idiota Operando o Sistema”! (…) Bem, deixando o “causo” engraçado de lado, o que me motivou a escrever sobre o BIOS foi o seu iminente fim. Isso mesmo: em breve, o BIOS será aposentado…

Convivemos com ele há mais de 20 anos, desde o surgimento do PC desktop. Na época, o BIOS – Basic Input / Output System – era uma simples peça de firmware responsável pela integração dos recursos disponíveis do PC XT.

Nos primeiros anos, os recursos de hardware disponíveis (IRQs, DMAs, portas e endereços de I/O), bem como a integração com os periféricos do sistema e todo o ecossistema de protocolos e padrões de interoperabilidade, eram configurados diretamente no hardware da placa-mãe e periféricos, através da utilização (e disposição) de jumpers e dip-switches. Dada a complexa técnica e a pouca usabilidade de prover perfis de configuração, a criação de um sistema de configuração baseado em software embutido seria um passo natural. Pouco a pouco, a configuração dos endereços, ajuste dos clocks, ativação e desativação de periféricos integrados e outras foram sendo integradas no BIOS, dando origem às versões contemporâneas:

o BIOS contém todo o software básico, necessário para inicializar a placa-mãe, checar os dispositivos instalados e carregar o sistema operacional, o que pode ser feito a partir do HD, CD-ROM, pendrive, ou qualquer outra mídia disponível. o BIOS inclui também o Setup, o software que permite configurar as diversas opções oferecidas pela placa. O processador é programado para procurar e executar o BIOS sempre que o micro é ligado, processando-o da mesma forma que outro software qualquer. (…) Por definição, o BIOS é um software, mas, como de praxe, ele fica gravado em um chip espetado na placa-mãe. Na grande maioria dos casos, o chip combina uma pequena quantidade de memória Flash (256, 512 ou 1024 KB), o CMOS, que é composto por de 128 a 256 bytes de memória volátil e o relógio de tempo real. — [Hardware – Guia Prático].”

Além do BIOS propriamente dito, temos também outros elementos importantes a serem considerados: o SETUP, um programa responsável pela configuração dos parâmetros suportados pelo BIOS; o CMOS, uma pequena quantidade de memória RAM volátil responsável pelo armazenamento destas configurações e o POST, um sistema de testes que faz uma verificação de rotina em todos os dispositivos integrados ao sistema, quando este é ligado.

Porém a computação pessoal – tal como conhecemos atualmente – evoluiu consideravelmente. Quando o BIOS foi idealizado, convivíamos com simples computadores baseados na arquitetura IBM XT, os quais eram comercializados apenas com os componentes essenciais. Placas de expansão e outros periféricos eram pouco acessíveis e a maioria das tecnologias que conhecemos nos dias de hoje sequer existiam. Portanto, os softwares básicos de gerenciamento dos recursos, designados para computadores simples, em geral não eram sofisticados. Nos dias de hoje, por outro lado, quando existem uma enorme gama de recursos e possibilidades, o BIOS já se revela decadente…

Assim que os “novos” processadores de 16 bits Intel 80286, a sua interação com o hardware passou dos 8 para os 16 bits, o que trouxe mudanças consideráveis na forma como os recursos do sistema eram gerenciados. Antes, tínhamos apenas 8 IRQs; mas agora, necessitávamos de 16 IRQs para “acomodar” as requisições dos “novos” que foram surgindo no mercado. Eis então, a primeira “gambiarra” da arquitetura: foi acrescentado um segundo controlador secundário, que por sua vez era interligado ao primeiro através das IRQs 2 e 9. E foi assim durante muito tempo, até o surgimento do APIC (Advanced Programmable Interrupt Controller) e de outros recursos interessantes, como o compartilhamento de IRQs, para atender as necessidades crescentes da computação em acomodar mais dispositivos. Embora o BIOS tenha acompanhado a esta evolução, ele ficou estacionado no que se refere ao modo de funcionamento, legada à arquitetura de 16 bits.

O mesmo se deu à partir do momento em que muitos PCs desktop começavam a superar a casa dos 1 MB de memória RAM. Antes, os PCs desktops mantinham os 640 KB de memória RAM originais disponíveis, enquanto que os 384 KB seguintes – chamados de memória alta – eram designados para o sistema, onde o BIOS tinha o papel fundamental de utilizá-la para mapear as informações gerais dos dispositivos de sistema (os endereços de I/O, designados em formato hexadecimal, compreendem esta região da memória). Anos depois, devido à quebra de compatibilidade na adoção de arquiteturas mais modernas, a memória total passava a ser enxergada de modo uniforme através do modo protegido. No entanto, o BIOS ainda mantém distintas as regiões de memória convencional e extendida, pois precisava manter a compatibilidade de processadores modernos com sistemas antigos. Hoje em dia, praticamente não utilizamos mais aplicações que requeiram o modo real; mas, o suporte legado do BIOS ainda sobrevive.

Mas, a situação mais crítica, foi quando as unidades de armazenamento com alta capacidade, começaram à surgir. Entenda “alta capacidade” como um valor qualquer acima de 504 MB, algo que era considerado bastante alto para os padrões da época, pois os PCs desktops dispunham de discos rígidos que variaram entre 20 e 170 MB. Pois bem: tais unidades precisavam ser endereçadas pelo sistema, que por sua vez contava com o BIOS para realizar o mapeamento; mas, devido à implementação limitada do padrão INT 13h, que combinada com as limitações do padrão ATA original, o limite final para endereçamento de discos rígidos ficou estacionados nos 504 MB. Novas gambiarras foram necessárias, como a implementação dos modos Extended CHS e LBA, além da necessidade de usar softwares especiais para burlar as limitações do BIOS, fornecidos pelos fabricantes de HDs (por isso, tais softwares só deveriam ser usados em modelos específicos). Mesmo com as atualizações de BIOS, tais problemas tornariam a voltar em tempos futuros, já com limites mais largos (7.88 GB e 137 GB, respectivamente). Enfim: para não estender muito o assunto, recomendo a leitura da postagem “Limites de capacidade para os HDs”, escrita pelo Carlos E. Morimoto.

Até a esta altura, os leitores já devem ter percebido que o design original do BIOS – bem como as constantes redefinições da arquitetura x86 – saíram do contexto do desenvolvimento tecnológico: ao invés de acompanhar as mudanças, o BIOS sempre procurou manter a retrocompatibilidade com tecnologias, softwares e modos de operações antigos (devido em boa parte por culpa da arquitetura x86). Com isto, acabou se tornando um elemento “travado”, que cria mais dificuldades a facilidades, no que concerne ao processo de desenvolvimento como um todo. Portanto, uma profunda reformulação do conceito de interface para a interação com o hardware (firmware). Entra em cena, a EFI…

A EFI é uma especificação que define uma interface de software entre o sistema operacional e a plataforma de firmware. A EFI destina-se a ser um substituto significativamente melhorado para o velho BIOS firmware interface, historicamente usado por todos os computadores pessoais IBM PC compatíveis. A especificação EFI foi originalmente desenvolvida pela Intel, e é atualmente gerida pelo Unified EFI Forum que é oficialmente conhecido como Unified EFI (UEFI). (…) As limitações do PC BIOS (modo 16-bits, espaço de endereçamento de 1MB, dependências de hardware PC AT, etc.) foram vistas como claramente inaceitáveis para a grande plataforma de servidores visada como alvo.” — [by Wikipedia].

Depois de alguns anos, quando o BIOS estiver praticamente erradicado e o EFI assumir o seu lugar, muitos entusiastas nostálgicos (como eu) certamente sentirão saudades do tempo em que hackeavamos os parâmetros do SETUP, para deixar nossos PCs desktops “envenenados”! Como exemplo, cito o uso de tempos de latência e timings mais agressivos para a RAM, o uso de modos de operações mais velozes para os caches L1/L2, a adoção de protocolos e tecnologias de maior performance para o armazenamento, a aceleração do tempo de inicialização do sistema, o cacheamento das instruções do BIOS para a memória, o compartilhamento de diversos outros recursos, enfim: uma infinidade de opções que só para aqueles corajosos, os quais estavam dispostos a assumir riscos para se beneficiar das possibilidades oferecidas! Dos leitores do GdH, quantos aqui não passaram uma tarde (ou noite) inteira aumentando gradativamente a velocidade do barramento FSB e incrementando aos poucos a tensão de alimentação do processador, só para ver o quão longe o seu overclock iria ir? Ou ainda, quantos aqui não tiveram aquele frio na barriga porque o sistema não inicializou mais? Sim, sei que o EFI certamente oferecerá estas (e outras) possibilidades, mas acredite: certamente não será como era antigamente…

Era uma vez, o BIOS… &;-D

Por Ednei Pacheco <ednei.pacheco [at] gmail.com>

http://by-darkstar.blogspot.com/

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X