Un bug de procesadores Intel relacionado con el Hyper-Threading puede provocar todo tipo de problemas, desde corrupción de datos a bloqueos aleatorios.

La moda entre los fabricantes es ofrecer la mayor cantidad de núcleos en un procesador; el sistema operativo y el software se encarga de asignar un proceso diferente a cada núcleo, y así todo puede terminar más rápido, al menos en teoría.

Hyper-Threading, multihilo con un sólo núcleo

En 2002, cuando tener un procesador de más de un núcleo era todo un lujo, a Intel se le ocurrió una idea para aprovechar las capacidades multiproceso de los sistemas operativos sin comprar una CPU de varios núcleos.

intel hyper-threading

Así nació el Hyper-Threading de Intel, la posibilidad de ejecutar más de un proceso en un sólo núcleo; para el sistema, es como si tuviésemos un procesador de dos núcleos. La idea es aprovechar el tiempo en el que el procesador está inactivo porque el proceso en el que está ocupado necesita más datos; ese tiempo se puede dedicar a otro proceso mientras tanto.

Después de una temporada, Intel decidió revivir la tecnología Hyper-Threading para sus últimos modelos; sin embargo, esta tecnología puede provocar más problemas de los que soluciona, según han descubierto en Debian.

Estamos hablando de una de las distros Linux más veteranas, y en la que se basan muchos proyectos como Ubuntu. Sin embargo, hay que dejar claro que el problema descubierto afecta a todos los sistemas, incluso Windows, porque es un problema de hardware, no de software.

El bug de procesadores Intel que afecta al Hyper-Threading

Según informan en la lista de correo oficial, los procesadores de Intel de las gamas Skylake y Kaby Lake (es decir, sexta y séptima generación) tienen una versión “rota” de Hyper-Threading.

Esto puede provocar un comportamiento impredicible del sistema, generando errores aparentemente aleatorios y que pueden afectar no solo al funcionamiento del ordenador, sino también a nuestros datos.

El problema se da sólo en ciertas condiciones, en concreto cuando el procesador ejecuta ciclos cortos de menos de 64 instrucciones y los dos núcleos lógicos del procesador están activos al mismo tiempo; en esos casos, el Hyper-Threading puede comportarse de manera errática, ejecutando procesos erróneamente.

 

Para el usuario, es poco menos que imposible controlar que no se de esa situación. El mayor peligro es que los efectos son impredecibles;no sabemos qué procesos pueden estar ejecutándose en el momento del problema. Así que puede suponer que el sistema operativo se bloquee, que los datos en los que estamos trabajando acaben como una hilera ininteligible, o puede simplemente que no pase nada.

Cómo saber si nos afecta, y cómo solucionarlo

intel-core

Los procesadores afectados son los Skylake y Kaby Lake; para saber si tienes uno de estos procesadores, fíjate en su nombre. Suele ser “Intel Core i3”, “i5” o “i7” seguido de una cifra; si la cifra empieza por 6 o por 7, entonces es Skylake y Kaby Lake respectivamente. Por ejemplo, “Intel Core i5-6600” o “Intel Core i3-7100”.

No todos los Skylake y Kaby Lake son compatibles con Hyper-Threading. En la página de Intel tienes una lista de procesadores compatibles.

Debido a que no es un bug de software, es algo más difícil luchar contra este problema de hardware. Lo primero que deberíamos hacer es desactivar el Hyper-Threading desde la BIOS o UEFI de la placa base; suele estar en una sección avanzada, relacionada con la CPU como “CPU Configuration”. El nombre será diferente en cada placa base, así que recomendamos buscar en el manual.

Lo único que podemos hacer es actualizar los drivers de nuestra placa base en cuanto salgan nuevas versiones. El bug ya se ha hecho público y los fabricantes ya deberían estar trabajando en ello.

Noticias relacionadas