Saltar al contenido

¿Cómo se carga el microcódigo en el procesador?

Posterior a observar en diversos repositorios y sitios webs de internet finalmente hemos hallado la respuesta que te compartimos más adelante.

Solución:

Las CPU modernas vienen con un microcódigo completo ya instalado. Este microcódigo reside en un área especial de ROM en la propia CPU y no se puede cambiar/borrar. Por lo tanto, la CPU puede funcionar de forma inmediata.

El BIOS del sistema y/o el sistema operativo pueden entonces iniciar la carga de un microcódigo actualizar en la CPU. Tal actualización es no un microcódigo completo, sino más bien un pequeño parche para corregir errores. La CPU contiene una pequeña área de RAM volátil para este propósito.

Una referencia útil: https://www.dcddcc.com/pubs/paper_microcode.pdf

Leí que el microcódigo se carga en el procesador en cada reinicio.

El BIOS puede emitir una actualización de microcódigo durante el arranque. También puede hacerlo el sistema operativo. Con frecuencia, estas actualizaciones son necesarias, especialmente con las CPU Intel posteriores.

Reside en la memoria flash y cuando se inicia la máquina, se copia en la CPU. O en el caso de Linux, el propio sistema operativo tiene la copia del microcódigo para el procesador. Pero, ¿cómo se copia el microcódigo en el procesador?

Intel y las CPU modernas tienen un mecanismo llamado “Registros específicos del modelo” e instrucciones especiales de la CPU para leer (RDMSR) y escribir en ellos (WRMSR). Si bien estos registros afectan la configuración de la CPU, escribir en uno específico con la dirección del nuevo microcódigo le indica a la CPU que lea una región de la memoria y la aplique sobre el microcódigo existente.

Todos los datos se mueven en una computadora con el consentimiento de la CPU. La CPU recibe instrucciones en lenguaje máquina. Como el microcódigo es imperativo para la ejecución de estas instrucciones en lenguaje de máquina, entonces sin que el microcódigo esté presente en el procesador, ¿cómo la CPU realiza las instrucciones para acceder a la memoria flash y realizar las operaciones consiguientes?

Siempre hay un microcódigo. El mecanismo anterior actualiza el microcódigo. Intel/AMD realmente no publica detalles sobre cómo funciona, solo proporciona un mecanismo de actualización. Obviamente, de alguna manera está copiando un microcódigo de ROM en algún tipo de memoria interna de la CPU. Pero hay algo de microcódigo allí cuando se inicia la CPU. Algunas CPU recientes de Intel y posiblemente AMD no funcionarán de manera confiable después del arranque sin una actualización de microcódigo realizada por el BIOS, pero evidentemente funcionarán lo suficientemente bien como para realizar una actualización inicial de microcódigo.

¿Significa esto que las instrucciones no microcodificadas por cable copian el microcódigo en modo real?

La CPU realiza internamente la configuración inicial del microcódigo y no se ejecutan instrucciones para lograrlo. Se configura antes de que se ejecute la primera instrucción de la CPU.

Para actualizar el BIOS, se deben ejecutar las instrucciones RDMSR y WRMSR apropiadas.

Referencia: “Esta instrucción debe ejecutarse en el nivel de privilegio 0 o en modo de dirección real; de lo contrario, se generará una excepción de protección general #GP(0)”. Si no se ejecuta en modo real, debe hacerse en modo anillo 0 o kernel. Puede actualizar el microcódigo en cualquier momento.

La pregunta está mal formulada. Hay muchos “microcódigos” en la CPU x86/IA64 moderna, y hay una diferencia entre “parche de microcódigo” y microcódigo.

El microcódigo en su interpretación clásica (como elementos paso a paso de la ejecución de largas instrucciones de la CPU) casi con seguridad está tallado en silicio, ya que no hay razón para mantener los errores sin corregir a lo largo de muchas generaciones de CPU, cuando el nuevo silicio/RTL se compila con cada nuevo nodo de fabricación.

Sin embargo, todas las CPU recientes tienen varias unidades internas que están controladas por microprocesadores independientes que están integrados dentro del chip de la CPU x86.

La más notable/conocida es la llamada “unidad P”, un procesador que controla la administración dinámica de energía de la CPU. A medida que aumentaban las frecuencias centrales y aumentaban las fugas con una mayor miniaturización de los transistores de la CPU, la única forma de mantener la potencia en un límite razonable es mediante la aceleración agresiva del reloj y la activación dinámica de la potencia. El problema es que la CPU puede ejecutar infinitas variedades de códigos de software y cada uno alcanza un cierto pico de consumo de energía. Es posible que algunos patrones de “virus de potencia” no se conozcan en el momento en que se finalizó la CPU para la venta al por menor, y es necesario corregir algunos parámetros de los algoritmos de gestión. Esto se hace a través de “parches de microcódigo” dedicados.

Hay varios microprocesadores más de este tipo que controlan otros bloques de CPU como gráficos y memoria.

Los detalles del proceso de aplicación de parches son de alto secreto para evitar interferencias maliciosas. Aquí hay un informe de un hacker sobre el intento de aplicar ingeniería inversa al mecanismo.

En resumen, el microcódigo de arquitectura x86 no se carga en las CPU modernas, pero los microcódigos para varios microprocesadores incorporados auxiliares pueden tener parches.

Nos encantaría que puedieras dar visibilidad a este enunciado si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *