# Errors hardware en microprocessadors

Els primers errors hardware en microprocessadors es van detectar fa més de vint anys, gràcies a un investigador de Virginia, EUA, que va descobrir un error en les divisions del Pentium P5. Avui en dia els fabricants reconeixen els erros fins a tal punt que la nova generació d'Intel té més de 150 errors reconeguts de diferents tipus. Tot i així, els fabricants dediquen una part important del temps en evitar aquests errors.

## Origen

La majoria d'errors es produeixen en dissenyar el xip, com en el cas de l'error FDIV dels Pentiums, l'error més famós, que va ser degut a unes entrades dolentes en unes taules necessàries per fer les divisions en coma flotant. La majoria d'errors es produeixen amb el compliment de diverses condicions que fan alterar algun bus i alteren comptadors hardware. Altres errors augmenten els cicles de certes instruccions o presenten vulnerabilitats.
D'altra banda, en el procés de fabricació es produeixen molts errors, ja que el sistema de fabricació no és perfecte. Per exemple, és comú que d'un processador amb 4 nuclis existeixin versions amb 2 nuclis perquè a l'hora de la fabricació un dels nuclis podria haver tingut algun tipus d'error. A més, la mida de les caches varien molt degut també a aquest fenomen. Per aquests motiu, sempre es fabrica amb més memòria de la dissenyada per intentar aprofitar el màxim.

## Repercussions

En el millor dels casos l'error repercutirà en un comptador hardware que per als investigadors en el món de la informàtica els pot afectar greument però a la resta de la població no els afecta gaire. Alguns errors afegeixen cicles amb algunes instruccions i repercuteix en l'usuari trigant més temps a executar cada programa. Finalment, altres errors poden fer aturar el sistema.

## Solucions

La majoria dels errors hardware no se solucionen. Per exemple, Intel els classifica com "fixed" ("arreglat") o "no fixed". Això implica que, si hi ha errors que no són importants es reporten i punt, si es poden solucionar fàcilment per software se solucionen, però si és un error greu de disseny i no hi ha cap altra opció que tornar a dissenyar el xip arreglant els bugs, en aquest cas, i segons les polítiques de les empreses, es retiren els xips defectuosos i es canvien o compensen econòmicament.
Si es poden solucionar, actualment tant Intel com AMD ofereixen actualitzacions del microcodi que controla el microprocessador. Si l'error és important, s'actualitza el més aviat possible. Actualment aquestes actualitzacions permeten canviar molts paràmetres, fins i tot de temps, per a fer front a diversos tipus d'errors.

## Història

El primer error hardware mundialment famós va ser descobert per un professor matemàtic anomenat Thomas Nicely l'any 1994. Estava treballant en nombres primers i va notar uns errors en els seus càlculs. Va trigar quatre mesos en aïllar el problema. L'error va ser reconegut en la manca d'unes entrades en la "Look Up Table" del mòdul de coma flotant. En concret, l'error es mostrava clarament en l'operació FDIV.
D'altra banda, en la història d'Intel també hi ha altres casos d'errors en els processadors. Per exemple, el 2014 les arquitectures Haswell i Broadwell van tindre problemes amb les instruccions de TSX (Transactional Synchronization Extensions). Intel va decidir inhabilitar-les temporalment.
Un processador més simple com l'Atom tampoc es va alliberar dels errors i en la seva unitat de coma flotant podia arribar a injectar una NOP cada certs cicles fent baixar el rendiment d'operacions en coma flotant d'una forma important. Com que ningú va comprar un Atom pel rendiment de la unitat de coma flotant, no es va donar a conèixer gaire.
L'últim gran error trobat en processadors Intel és en l'arquitectura Skylake. És un error que només és visible en certs processadors en determinades condicions de càrrega molt gran que fa aturar el sistema. És factible veure'l executant un test de prova anomenat Prime95 utilitzant les instruccions AVX i no AVX2. Intel va arreglar l'error amb una actualització de microcodi.
Per altra banda, AMD, tot i ser un fabricant més modest si el comparem amb Intel, tampoc es lliura d'errors. Un dels més famosos que va afectar les seves vendes va ser l'error de la TLB en l'arquitectura Phenom.
Un altre error bastant important és en l'arquitectura PileDriver, que permetia a la màquina virtual prendre control de la màquina real. També va tindre problemes amb aquesta arquitectura amb les instruccions 256-bit AVX, que podien trigar entre 18-20 cicles més del normal.

## Referències

* ↑ https://www-ssl.intel.com/content/dam/www/public/us/en/documents/specification-updates/desktop-6th-gen-core-family-spec-update.pdf
* ↑ https://www-ssl.intel.com/content/dam/www/public/us/en/documents/specification-updates/4th-gen-core-family-desktop-specification-update.pdf
* ↑ https://wiki.archlinux.org/index.php/microcode
* ↑ https://www.cs.earlham.edu/\~dusko/cs63/fdiv.html%5BEnllaç+no+actiu%5D
* ↑ http://arstechnica.com/gadgets/2016/01/intel-skylake-bug-causes-pcs-to-freeze-during-complex-workloads/
* ↑ https://www.dcddcc.com/docs/2014_paper_microcode.pdf
* ↑ http://www.zdnet.com/article/amd-owns-up-to-cpu-bug/