terça-feira, 22 de junho de 2021

Gravado em Silício

Há um vídeo na Internet em que Peter Hochschild, um pesquisador da Google, descreve a identificação de comportamentos erráticos em módulos de processamento. O adjetivo que ele usa para isso é interessante: “comportamento mercurial”. O romano Mercúrio, Hermes dos gregos, era o deus da comunicação e também do comércio. Dotado de sandálias aladas, era rápido mas muitas vẽzes errático e incerto. E de comportamento imprevisível nem sempre claro: uma comunicação “hermética” refere-se a algo obscuro, não facilmente inteligíveil… O mercúrio, metal fluido e vivaz, prata-líquida ou prata-viva, faz jus ao nome.

Não é nenhuma novidade que a crescente miniaturização dos componentes de circuitos integrados de silício cria fragilidades. Uma célula de memória atualmente é tão pequena, e com tão pouca carga elétrica associada, que eventos de radiação cósmica ionizante, partículas alfa, ou mesmo alguma radioatividade do invólucro poderiam alterar algum “um” para “zero”, ou vice-versa. Há diversas formas de proteção contra esses riscos: a inclusão de algum tipo de verificação de consistência dos dados que detecte alterações ou, em casos mais críticos e sofisticados, a adição de informação redundante que permita não apenas apontar uma corrupção nos dados, mas consertá-la, desde que pontual e não disseminada. Do lado dos processadores, em aplicações muito críticas, ou onde há exposição a agressões maiores, como em aplicações espaciais, pode-se aumentar a segurança provendo a triplicação de recursos computacionais. Desta forma, em caso de alguma discrepância, haverá uma “maioria” que permita descartar o dissonente e dar mais segurança ao resultado.

Poderia haver aí uma analogia com as formas da evolução biológica? Afinal, somos o que somos porque uma infinidade de transformações aleatórias, devidamente filtradas e sancionadas pelo ambiente, nos trouxe a esse estágio. O risco de alterações inesperadas pode ser devastador, mas é atenuado quando se dispõe de alguma redundância. Há mecanismos que buscam automaticamente consertar “erros” em DNA, e biólogos poderão falar disso muito melhor mas, para um mero engenheiro, o fato do DNA ser uma fita dupla já parece uma ajuda importante em prevenir mutações caóticas: uma fonte adicional de dados provê aos reparadores automáticos uma segunda referência...

Problemas causados por fatores exteriores não se confundem com erros gerados por deficiências no projeto do “hardware” ou falhas na programação em “firmware” ou “software”. Há diversos casos bem documentados de erros encontrados em versões de equipamentos e que, uma vez indentificados, foram corrigidos nas versões seguintes. Um caso famoso, por exemplo, é o relacionado a problemas de cálculo em divisões em ponto flutuante de processadores Pentium em 1995, que foi rapidamente consertado. Uma outra fonte de surpresas, mas que não seria um “erro de projeto”, é a existência de instruções ocultas, não documentadas nos manuais. Como exemplo pessoal, lembro que o processador Motorola 6800 tinha uma instrução não documentada conhecida como HCF (Halt and Catch Fire, ou “pare e pegue fogo”), que fazia o processador transformar-se num simples e impávido contador sequencial.

A preocupação suscitada agora não é comportamento errático gerado por falhas de projeto ou de programação, e nem mesmo o efeito corruptor que elementos externos como radiação e partículas incidentes possam causar na exatidão do processamento, mas uma característica errática, não especialmente rara, que vem sendo detectada em processadores de alta capacidade e alta densidade. Um ponto de alerta preocupante: parece que nem o que está “escrito em siício” é imutável ou plenamente confiável.

===
Mercúrio, muito adequadamente, é símbolo de algumas bolsas de valores (abaixo, a da Argentina)
https://www.bcba.sba.com.ar/el-clasico-emblema-de-la-bolsa/




===
Vídeo citado, artigo sobre ele, e bits que mudam:
https://www.youtube.com/watch?v=QMF3rqhjYuM
https://www.theregister.com/2021/06/04/google_chip_flaws/
https://www.johndcook.com/blog/2019/05/20/cosmic-rays-flipping-bits/

===
DNA e seus reparos:
https://courses.lumenlearning.com/boundless-biology/chapter/dna-repair/

===
O "bug" de ponto flutuante do Pentium
https://en.wikipedia.org/wiki/Pentium_FDIV_bug

História do Motorola 6800 e a descrição da instrução (HCF) não documentada
https://www.embarcados.com.br/40-anos-motorola-mc6800/

=== 
"Mercurial", em:
https://nepe.wab.com.br/pesquisa-dicionario?query=mercurial
"Cujas reações ou comportamentos são intempestivos, intensos; que reage de maneira inesperada, impulsiva, repentina ou sem reflexão, diante de alguma situação; temperamental, impulsivo."

===
No Link:
https://link.estadao.com.br/noticias/geral,comportamento-erratico-em-processadores-e-preocupante,70003754428


Nenhum comentário: