O computador é um misto de hardware e software. A maior parte do software é composta por programas utilitários que, teoricamente, nunca se relacionam diretamente com o hardware.
No entanto, existe uma categoria de software que está diretamente envolvida com o funcionamento do hardware. Esse software, relacionado com o hardware, é chamado de driver (no Windows) e de módulo (no
GNU/Linux).
Sem o driver (módulo) apropriado, um hardware simplesmente não funcionará. Quando instalamos uma nova versão do Windows ou um novo kernel
Linux, precisamos atualizar nosso software de driver (módulo) de modo a adequar esse software com a nova versão de sistema operacional.
Um driver (módulo), é um software como outro qualquer e, por isso, está sujeito a erros de programação (bugs). Quando um erro é corrigido, uma atualização de versão é lançada. Neste caso, basta o usuário descarregar a atualização pela Internet e instalar, ou recompilar, o seu kernel Linux com suporte para o novo módulo. Um novo driver (módulo) possui melhoramentos, que podem fazer seu hardware trabalhar melhor e de forma mais estável.
Porém, existem situações em que a simples atualização do driver (módulo) não é suficiente para introduzir correções ou melhorias. Nestes casos mais graves, a falha está em um nível anterior ao carregamento do driver (módulo), sendo necessário atualizar o software embarcado no próprio dispositivo. Esse software embarcado, é chamado de firmware ou
microcode. Conhecemos esse software embarcado, de modo geral, como BIOS.
Os sistemas BIOS estão presentes em vários dispositivos de hardware e muitos são atualizáveis, mas, nem todos. A maioria dos firmwares é armazenada em memórias do tipo EEPROM e podem ser atualizados (a BIOS da placa mãe é um exemplo disso).
Nós, que lidamos com hardware, já estamos acostumados a atualizar a BIOS da placa mãe, o firmware do roteador Wireless ou do gravador de DVD. Isso deve ser feito em casos extremos, por ser uma operação que pode danificar permanentemente seu hardware, se executada de modo errado.
Agora, quando um problema é detectado no funcionamento de um processador, não há como atualizar o software embarcado nele, pois não há uma EEPROM dentro do processador. O microcode original, é implementado no processador na forma de circuitos.
Apesar de extremamente avançados e modernos, os processadores não estão livres de erros em sua programação interna, e isso é muito mais comum do que você pode imaginar!
Erros na programação interna de processadores são muito difíceis de detectar e estão relacionados com comportamentos estranhos e que geram travamentos (telas azuis ou kernel panic) ou reboots aleatórios da máquina.
Quando esses erros aparecem, normalmente atualizamos a BIOS da placa mãe, os drivers (módulos), os softwares utilitários e, por fim, o próprio sistema operacional.
Muitas vezes, o erro desaparece e outras vezes, não. Quando esses travamentos ocorrem, o mais comum é a troca de partes do equipamento como: memórias RAM, fonte de energia, placas PCI, o cooler e, por fim, o próprio processador.
Mas, nem isso é uma garantia de solução ao problema e muitos hardwares acabam simplesmente condenados pela avaliação de um técnico, que não encontra o problema facilmente.