Un desarrollador de OCaml ha encontrado un fallo en la implementación del Hyper Threading de las dos últimas generaciones de Intel.
Hyper Threading es una tecnología que se estrenó en la época del Pentium 4. Consiste en separar un procesador físico en dos lógicos y el objetivo es aprovechar todos los recursos del micro disponibles que a través de la segmentación no es posible aprovechar. El aumento de rendimiento a veces es mínimo, pero otras se pueden conseguir resultados bastante interesantes tal y como podéis comprobar en los resultados del HLBM.
El fallo se ha detetectado en la sexta y séptima generación de los procesadores para escritorio, móviles, Xeon v5, Xeon v6 y algunos Pentium. El problema hace que el sistema se comporte de una forma inesperada provocando errores como corrupción de datos o pérdida de datos cuando se dan las condiciones.
El defecto se detectó por primera vez en enero de este año por un desarrollador de OCaml aunque sólo para los Skylake. En ese momento se sacó un parche para el microcódigo de esa generación. Además se avisó a Intel del fallo aunque estos ni siquiera tuvieron la amabilidad de responder. A pesar de ello, documentaron el error a su manera. La descripción que da la compañía es que al usar bucles cortos usando los registros AH/BH/CH/DH, se puede producir un comportamiento impredecible del sistema. Esto sólo se produce cuando se usan los dos núcleos lógicos de un mismo núcleo físico.
El aviso ha aparecido en las listas de correo de Debian y el consejo que dan es desactivar HT si tienes un micro de alguna de esas generaciones. Existe una forma de solucionarlo pero eso depende de la generación que tengas. Si tienes un Kaby Lake, deberás actualizar la BIOS/UEFI a una versión que tenga el microcódigo actualizado, lo que significa que habrá modelos de placas que no tengan de momento solución. Para los poseedores de un Skylake (en concreto si el modelo es el 78 o 94 y el stepping es 3), la solución es más sencilla en caso de que uses Linux: tan solo tienes que instalar el microcódigo de Intel actualizado de los repositorios de tu distro.
Para terminar, no queda más que quitarse el sombrero antes este desarrollador, ya que depurar un programa normalmente es un dolor de muelas. Si además añades que el fallo es de hardware (uno normalmente confía en que su código se ejecute correctamente), el problema se vuelve muy frustrante.