Intel reducirá en hasta un 40% la latencia de actualización del microcódigo de sus procesadores en caliente
Los administradores de sistemas tendrán a cuenta algo tan básico como la actualización del microcódigo del procesador mientras el servidor o equipo está funcionando a pleno rendimiento. Pero a poco que estén ilustrados en la materia también sabrán que este proceso tiene una latencia que puede ser muy perjudicial en el momento de dicha actualización, y no en pocas ocasiones ha dado fallo y colapsado el sistema. Por ello, y para evitar este y otros problemas, Intel prepara una nueva función llamada Staging, la cual reducirá la latencia en todo este proceso de actualización del microcódigo haciéndolo más seguro.
Si hay una parte crítica en cualquier PC o servidor es el microcódigo de la CPU. En escritorio no tenemos problema, ya que flasheamos BIOS incluso desde la propia BIOS o desde un pendrive, reiniciamos cuando acabe y listo, aplicada la actualización. Pero en un entorno crítico donde no se puede desperdiciar ni un milisegundo por la sincronía de los datos y el volumen de los mismos esto se torna como una operación clave.
Intel Staging, una nueva función para mejorar la latencia de la actualización del microcódigo de la CPU
La técnica es simbólicamente parecida a lo que conocemos como cambio de BIOS en caliente o Hot Swap BIOS. En un entorno como el del microcódigo en caliente está denominado como Hot Patching y se basa en actualizarlo mientras el sistema funciona con normalidad, evitando el reinicio y una pérdida de capacidad de cálculo y rendimiento de minutos. Cualquier administrador que se precie sabrá que hay dos fases para hacer este Hot Patching:
- La verificación inicial del software y las condiciones del servidor o equipo: clave para garantizar que todo está funcionando como debe, no hay errores en el sistema previos, y en general, se garantiza tanto la estabilidad como la compatibilidad del microcódigo con la CPU.
- La carga del microcódigo o Buffering: no es más que la carga de la versión en concreto que tenemos entre manos para actualizar del susodicho microcódigo, la cual se "vuelca", normalmente en un buffer del sistema en post del paso previo a la actualización.
Cuando le damos la orden al microcódigo para que se actualice suceden varias cosas. En primer lugar se genera un pico de latencia que normalmente es muy alto y tiene unas consecuencias anexas que no se pueden evitar, pero sí que se pueden reducir.
Los microcódigos cada vez "pesan" más y son más complejos
Cuando se da este pico de latencia y se comienza a actualizar dicho microcódigo la realidad es que la ejecución de la CPU se detiene por un instante, dependiendo de la arquitectura será mayor o menor, donde además se detienen los núcleos al completo para poder vaciar las cachés y que la aplicación del microcódigo sea efectiva.
Sobra decir que es básicamente una interrupción momentánea de toda la carga de trabajo del servidor, lo que puede generar desde inestabilidad, hasta congelaciones, o incluso puede generarse una vulnerabilidad en el proceso, y por tanto, podemos decir sin riesgo a equivocarnos que es crítico.
¿Qué intenta hacer Intel entonces? Pues mediante una nueva función de Staging, esta permite que la actualización del microcódigo se procese en una gran parte sin que los núcleos se tengan que apagar ni la caché se tenga que vaciar, para que así no sea un proceso de carga del código, validación, aceptación y activación del procesador. Intel lo explica así:
"A medida que las imágenes de microcódigo han aumentado de tamaño, se ha vuelto inevitable un aumento correspondiente en la latencia de carga. Este pico de latencia afecta significativamente la carga tardía, que sigue en uso a pesar de las precauciones destacadas en la documentación. El problema es especialmente crítico para cargas de trabajo y máquinas virtuales que se ejecutan de forma continua, donde las demoras excesivas pueden provocar tiempos de espera.
== Preparación para la reducción de la latencia ==
Actualmente, escribir en MSR_IA32_UCODE_WRITE activa todo el proceso de actualización (carga, validación y activación), todo lo cual contribuye a la latencia durante la detención de la CPU. La función de preparación mitiga esto al refactorizar todos los pasos, excepto el de activación, fuera de la ruta crítica, lo que permite que las CPU sigan prestando servicio a las cargas de trabajo mientras se lleva a cabo la preparación".
El procesador tiene que soportar esta función, la latencia disminuye ostensiblemente
Por supuesto, esto es algo que la CPU en cuestión tiene que poder soportar, y aunque no hay una lista de arquitecturas, series o familias de procesadores que pueda decirnos quién sí y quién no lo tendrá habilitado, de momento lo que podemos decir es que los ingenieros de Intel han confirmado en pruebas preliminares una mejora ostensible.
Según ellos, en un sistema de pro-producción (a saber a qué se refieren en concreto) lograron una reducción del 40% en la latencia de carga, lo cual es una gran reducción. Por tanto, a falta de saber qué CPU soportarán esta función, lo cierto es que ayudará a los administradores de sistemas para aplicar con mayor seguridad la actualización del microcódigo gracias a esta reducción de la latencia de Intel.