Uno de los puntos más críticos de las nuevas CPU Intel Alder Lake es el problema que representa tener en una arquitectura general con dos micro arquitecturas de núcleo distintas y en un mismo die. Lo realizado por el equipo de Pat Gelsinger ha sido realmente revolucionario, pero presenta un problema clave que también incluye al software de por medio: la gestión de la carga y asignación por parte del programador de tareas para cada tipo de núcleo. Así es EHFI.
La pregunta más obvia sería: ¿cómo sabe el procesador a qué tipo de núcleo y cuál de ellos debe de asignar cada carga de trabajo y con qué instrucciones debe de trabajar? Es sin duda una gran pregunta, pero para ello tenemos que poner en contexto la profundidad del problema.
La complejidad entre hardware y software
Una de las particularidades que tiene la nueva arquitectura de Intel es que con sistemas operativos «antiguos» no se lleva demasiado bien. Funciona sin problemas, pero el rendimiento no es exactamente el mismo y esto es culpa en su totalidad del software.
Windows 10 y las versiones actuales de Linux no tienen, por ahora, un kernel adaptado a un nuevo programador de tareas del gigante azul llamado Thread Director, del cual ya hablamos a fondo en su correspondiente artículo, pero que al mismo tiempo está ligado totalmente al protagonista de este.
Entonces, si solo Windows 11 está listo para Alder Lake, ¿qué ocurre con los demás SO? Pues como decimos no están optimizados y requieren un profundo cambio si se quiere aprovechar las nuevas bondades de estas CPU. El problema radica en el programador del sistema operativo, ya que este es el que decide cuál de todos los procesadores lógicos libres puede trabajar con el subproceso de software que se pretende asignar.
Las opciones en este caso son solo dos:
- El SO decide que el procesador lógico libre será uno con el máximo rendimiento porque es lo que menos tiempo va a tardar con esa clase de subproceso porque el sistema es de alto rendimiento.
- El SO decide que el procesador lógico libre tiene que ser uno de alta eficiencia porque para esa clase de subproceso es más óptimo ya que el sistema está programado para ser lo más eficiente posible.
Y aquí entra la explicación de Intel para el cálculo simple de una tarea, ya que cuando se da esta tesitura de elección por parte del programador del sistema operativo entre dos procesadores lógicos de la CPU, tanto unos como otros son variables a modo de i, j, k1 y k2.
La relación de rendimiento se calcularía según Intel como: Perfijkx = Perfikx / Perfjkx, mientras que el ratio de eficiencia de este problema vendría calculado como Energyijkx = Energyikx / Energyjkx. Por lo tanto, el SO tiene mucho que decir aquí puesto que siguiendo el ejemplo de arriba el programador podría determinar en el caso hipotético que Perfijk1 > Perfijk2.
Entonces, el subproceso de software k1 iría al procesador lógico j, mientras que el K2 va determinado al procesador lógico j. ¿Qué ocurre si dos subprocesos de software pertenecen a la misma ID? Pues muy simple, ya que el programador del SO puede escoger varios procesadores lógicos de rendimiento o eficiencia para realizar las asignaciones.
Así se distribuye correctamente por parte del sistema operativo Windows 11 la carga y balance de subprocesos de software.
Entonces, ¿qué es EHFI?
EHFI es la abreviatura de Enhanced Hardware Feedback Interface o traducido a nuestro idioma sería Interfaz de retroalimentación de hardware mejorada y es precisamente el conjunto de instrucciones que logran orientar al programador del kernel (Windows 11 por ahora en exclusiva) sobre la ubicación de las cargas de trabajo que determina el SO entre los procesadores lógicos del sistema, es decir entre núcleos e hilos.
Estas instrucciones se cargan cuando el sistema operativo inicia y se alojan como una memoria no paginada. Estas instrucciones se almacenan como una tabla que se asigna a la memoria de escritura diferida de manera que una vez termina dicha carga y se habilitan por parte del SO y el programador de tareas de Intel (Thread Director), es cuando entra a funcionar para distribuir las cargas de trabajo del SO.
Hay que añadir que lógicamente hay un componente clave en esto y no es más que la limitación que supone para EHFI y TD las restricciones térmicas y de energía en las tablas SKU de cada procesador. El microcódigo de Intel fija la disponibilidad de asignación en estas tablas para EHFI y TD, de manera que si un valor sobrepasa el umbral de alguno de los dos valores da paso a los sistemas de seguridad del procesador para dichas tareas.
Pero, ¿cómo sabe EHFI y TD dónde tienen que ir a buscar en la memoria? Según la patente filtrada del sistema existe un indicador de registro de notificaciones que está dentro de Thread Director, el cual detecta cuando ha habido un cambio en la información y cuándo se ha escrito en la memoria, así que el SO no volverá a solicitar ni escribir en dicha región hasta que TD no dé el visto bueno para borrar el indicador pertinente.
El control al que está sometido EHFI
Como hemos comentado más arriba, todo gira en torno a la temperatura y a la eficiencia, no en vano es uno de los aspectos fundamentales de Alder Lake. Los sensores de corriente que implementan ambos tipos de Cores son indispensables para decirle al controlador de energía el consumo de corriente que está teniendo cada núcleo o hilo.
Según las patentes, el nivel de energía total que encuentra registrado el controlador es el equiparable al TDP de procesador y no podrá ser superado, donde además ahora sabemos que Intel ha igualado el PL1 al PL2 y el valor de dicho TDP es la suma de ambos al mismo tiempo.
Entendiendo esto, hay que dividir las acciones del controlador en cuatro secciones a revisar por el mismo:
- Dominio de los Cores
- Dominio de los gráficos
- Domino de interconexión
- Dominio del uncore
Por lo tanto, la suma de ellos nunca puede exceder el PL1=PL2, pero sí que se puede gestionar de manera independiente de forma que el controlador puede asignar más energía a unos que a otros dependiendo de cómo se comporte la carga. Hay que añadir a esto que lógicamente el EHFI tiene un tiempo asignado que marca el ritmo de actualización de la tabla y del registro de los controladores, para que así haya un equilibrio en las asignaciones.
Por lo tanto y llegados hasta este punto, EHFI solo tiene que comunicarse con TD para discernir el tipo de núcleo, el rendimiento del mismo y la medida de rendimiento y eficiencia que ostenta, donde en este último paso ya se le dice al programador de Windows 11 dónde tiene que enviar el subproceso de software.