El microcódigo de Intel es un microcódigo propietario diseñado por Intel para implementar la arquitectura del conjunto de instrucciones x86 y controlar otros comportamientos de las CPU x86. En las primeras generaciones de CPU x86, la mayoría de las instrucciones de la CPU se implementaban internamente mediante una o más microoperaciones , lo que permitía construir instrucciones complejas componiendo otras más simples. El primer procesador x86, el 8086 , define 512 palabras de microcódigo [ 1 ].
Originalmente, el microcódigo de Intel se implementaba como una ROM fija dentro del chip de la CPU. Desde la introducción de la microarquitectura P6 a mediados de la década de 1990, los programas de microcódigo pueden ser parcheados por el sistema operativo o el firmware de la BIOS para solucionar errores encontrados en la CPU después de su lanzamiento. [ 2 ] Intel había diseñado originalmente actualizaciones de microcódigo para la depuración del procesador dentro de su iniciativa de diseño para pruebas (DFT). [ 3 ]
Tras el error FDIV del Pentium , la función de microcódigo parcheable adquirió un propósito más amplio para permitir la actualización en campo sin necesidad de realizar una retirada del producto . [ 2 ]
En las microarquitecturas P6 y posteriores, las instrucciones x86 se convierten internamente en microoperaciones más simples al estilo RISC que son específicas de un procesador y un nivel de revisión particulares . [ 2 ]
Microcódigo anterior a P6
Microoperaciones P6 y posteriores
A partir del Pentium Pro, en la mayoría de los procesadores Intel x86, las instrucciones son convertidas por la unidad de búsqueda y decodificación de instrucciones en secuencias de microoperaciones específicas del procesador que este ejecuta directamente. Para las instrucciones implementadas en microcódigo, este consiste en microoperaciones obtenidas de la memoria integrada en el chip. [ 8 ]
En el Pentium Pro, cada microoperación tiene un ancho de 72 bits, [ 9 ] : 43 [ 10 ] , las CPU más nuevas derivadas del Intel P6 agregan algunos bits más, algunos de ellos se comparten para todas las microoperaciones en una tríada. Otras fuentes dicen que las microoperaciones tienen un ancho de 118 bits. [ 11 ] : 2 [ 12 ] : 14 Esto incluye un código de operación, dos campos de origen y un campo de destino, [ 13 ] : 7 con la capacidad de almacenar un valor inmediato de 32 bits. [ 11 ] [ 12 ] : 14 El Pentium Pro puede detectar errores de paridad en su ROM de microcódigo interno e informarlos a través de la arquitectura de verificación de máquina . [ 14 ]
Las microoperaciones tienen un formato consistente con hasta tres entradas de origen y dos salidas de destino. [ 15 ] El procesador realiza un cambio de nombre de registros para asignar estas entradas al archivo de registros real (RRF) y viceversa, antes y después de su ejecución. [ 15 ] Se utiliza la ejecución fuera de orden , por lo que las microoperaciones y las instrucciones que representan pueden no aparecer en el mismo orden.
Durante el desarrollo del Pentium Pro, se incluyeron varias correcciones de microcódigo entre las revisiones A2 y B0. [ 16 ] Para el Pentium II (basado en el Pentium Pro P6), se agregaron microoperaciones adicionales para admitir el conjunto de instrucciones MMX . [ 17 ] En varios casos, se agregaron "asistencias de microcódigo" para manejar casos límite poco frecuentes de manera confiable. [ 17 ]
El Pentium 4 puede tener 126 microoperaciones en ejecución al mismo tiempo. [ 18 ] : 10 Las microoperaciones se decodifican y almacenan en una caché de traza de ejecución con 12 000 entradas, para evitar la decodificación repetida de las mismas instrucciones x86. [ 18 ] : 5 Grupos de seis microoperaciones se empaquetan en una línea de traza. [ 18 ] : 5 Las microoperaciones pueden tomar prestado espacio de datos inmediatos adicional dentro de la misma línea de caché. [ 19 ] : 49 Las instrucciones complejas, como el movimiento de cadenas, dan como resultado un salto a la ROM de microcódigo. [ 18 ] : 6 Durante el desarrollo del Pentium 4, el microcódigo representó el 14 % de los errores del procesador frente al 30 % de los errores del procesador durante el desarrollo del Pentium Pro. [ 20 ] : 35
La microarquitectura Intel Core introducida en 2006 añadió la " fusión de macrooperaciones " para algunos pares de instrucciones comunes, incluyendo la comparación seguida de un salto. [ 21 ] Los decodificadores de instrucciones en el Core convierten las instrucciones x86 en microcódigo de tres maneras diferentes:
Para la implementación hyper-threading de Intel de multihilo simultáneo , la ROM de microcódigo, la caché de trazas y los decodificadores de instrucciones se comparten, pero la cola de microoperaciones no se comparte. [ 22 ]
Instalación de actualización
A mediados de la década de 1990, una función para suministrar nuevo microcódigo se denominó inicialmente Función de actualización de BIOS de Pentium Pro . [ 23 ] [ 24 ] Se pretendía que las aplicaciones en modo usuario realizaran una llamada de interrupción de la BIOS para suministrar un nuevo "Bloque de datos de actualización de BIOS", que la BIOS validaría parcialmente y guardaría en la memoria no volátil de la BIOS ; esto podría suministrarse a los procesadores instalados en el siguiente arranque. [ 23 ]
Intel distribuyó un programa llamado BUP_UTIL.EXE, renombrado CHECKUP3.EXEque podía ejecutarse bajo DOS . Las colecciones de múltiples actualizaciones de microcódigo se concatenaban y numeraban con la extensión .PDB, como PEP6.PDB. [ 25 ] : 79
Interfaz del procesador
El procesador arranca utilizando un conjunto de microcódigo contenido dentro del procesador y almacenado en una ROM interna . [ 2 ] Una actualización de microcódigo llena una SRAM separada y un conjunto de "registros de coincidencia" que actúan como puntos de interrupción dentro de la ROM de microcódigo, para permitir saltar a la lista actualizada de microoperaciones en la SRAM. [ 2 ] Se realiza una coincidencia entre el puntero de instrucción de microcódigo (UIP) y todos los registros de coincidencia, y cualquier coincidencia resulta en un salto a la dirección de microcódigo de destino correspondiente. [ 3 ] : 3 En la arquitectura P6 original hay espacio en la SRAM para 60 microoperaciones y múltiples pares de registros de coincidencia/destino. [ 2 ] [ 3 ] : 3 Se necesita un ciclo de instrucción del procesador para saltar del microcódigo ROM al microcódigo parcheado contenido en la SRAM. [ 2 ] Los registros de coincidencia constan de una dirección de coincidencia de microcódigo y una dirección de destino de microcódigo. [ 26 ]
El procesador debe estar en el anillo de protección cero (" Anillo 0 ") para poder iniciar una actualización del microcódigo. [ 26 ] : 1 Cada CPU en una configuración de multiprocesamiento simétrico necesita actualizarse individualmente. [ 26 ] : 1
Una actualización se inicia colocando su dirección en eaxel registro, estableciendo ecx = 0x79y ejecutando una wrmsr(Escritura en el registro específico del modelo ). [ 27 ] : 435
Formato de actualización de microcódigo
Intel distribuye las actualizaciones de microcódigo como un bloque binario de 2048 (2 kilobytes) para CPU hasta Pentium M, con muchos bytes de relleno dependiendo de CPUID y MSR de la plataforma. [ 2 ] . Las microarquitecturas más recientes derivadas de P6 hasta Core2Duo usan 4096 o 5120 bytes. La actualización contiene información sobre para qué procesadores está diseñada, de modo que esto se puede verificar con el resultado de la instrucción CPUID . [ 2 ] La estructura es un encabezado de 48 bytes, seguido de 2000 bytes destinados a ser leídos directamente por el procesador que se va a actualizar: [ 2 ]
- Un programa de microcódigo que es ejecutado por el procesador durante el proceso de actualización del microcódigo. [ 2 ] Este microcódigo puede reconfigurar y habilitar o deshabilitar componentes usando un registro especial, y debe actualizar los registros de coincidencia de puntos de interrupción. [ 2 ]
- Hasta sesenta microoperaciones parcheadas que se almacenarán en la SRAM. [ 2 ]
- Relleno compuesto por valores aleatorios, para dificultar la comprensión del formato de la actualización del microcódigo. [ 2 ]
Cada bloque se codifica de forma diferente, y la mayoría de los 2000 bytes no se utilizan como programa de configuración; además, el contenido de las microoperaciones de la SRAM es mucho menor. [ 2 ] La determinación y validación final de si se puede aplicar una actualización a un procesador se realiza durante el descifrado a través del procesador. [ 23 ] Cada actualización de microcódigo es específica de una revisión particular de la CPU y está diseñada para ser rechazada por CPUs con un nivel de revisión diferente . Las actualizaciones de microcódigo se cifran para evitar manipulaciones y permitir la validación. [ 28 ]
Con el Pentium hay dos capas de cifrado y los detalles precisos no están documentados explícitamente por Intel, sino que solo los conocen menos de diez empleados. [ 29 ] . El formato del archivo de parche para las CPU Intel P6 y derivadas fue completamente sometido a ingeniería inversa [ 30 ] . Las actualizaciones de microcódigo para Intel Atom , Nehalem y Sandy Bridge contienen además un encabezado adicional de 520 bytes que contiene un módulo RSA de 2048 bits con un exponente decimal de 17. [ 26 ] : 7, 8
Se ha descubierto que las CPU Intel Goldmont y posiblemente otras generaciones descifran el contenido del microcódigo con RC4 -drop512, aplican una función hash SHA256 al contenido descifrado y luego verifican la firma del hash con RSA-2048. La propia CPU contiene una semilla de 64 bytes a partir de la cual se deriva la clave RC4 y un hash SHA256 del módulo RSA-2048, por lo que no se puede intercambiar por otra en el blob del microcódigo. [ 31 ]
Depuración
Se puede cargar un microcódigo especial específico para depuración para habilitar el rastreo de ejecución extendida, que luego genera información adicional a través de los pines del monitor de puntos de interrupción. [ 32 ] En el Pentium 4, la carga de un microcódigo especial puede dar acceso al modo de rastreo de ejecución extendida de microcódigo. [ 32 ] Al usar el puerto de acceso de prueba JTAG (TAP), un par de registros de control de puntos de interrupción permiten detener la ejecución en direcciones de microcódigo. [ 32 ]
A mediados de la década de 1980, NEC e Intel mantuvieron un largo litigio en un tribunal federal estadounidense sobre derechos de autor de microcódigo. [ 33 ] NEC había estado actuando como proveedor secundario de las CPU Intel 8086 con su NEC μPD8086, y mantenía acuerdos de licencia cruzada de patentes y derechos de autor a largo plazo con Intel. En agosto de 1982, Intel demandó a NEC por infracción de derechos de autor sobre la implementación del microcódigo. [ 34 ] [ 35 ] NEC prevaleció al demostrar, mediante ingeniería de software de sala limpia, que las similitudes en la implementación del microcódigo en sus procesadores V20 y V30 eran el resultado de las restricciones exigidas por la arquitectura, y no de una copia. [ 33 ]
El Intel 386 puede realizar una autoprueba integrada del microcódigo y de las matrices lógicas programables , cuyo valor se almacena en el EAXregistro. [ 36 ] Durante la BIST, el contador del microprograma se reutiliza para recorrer todas las ROM, cuyos resultados se recopilan mediante una red de registros de firma de entrada múltiple (MISR) y registros de desplazamiento con retroalimentación lineal. [ 37 ] Al arrancar el Intel 486 , una BIST controlada por hardware se ejecuta durante 220 ciclos de reloj para comprobar varias matrices, incluida la ROM del microcódigo, tras lo cual el control se transfiere al microcódigo para realizar autopruebas adicionales de los registros y las unidades de cálculo. [ 38 ] La ROM del microcódigo del Intel 486 tiene 250.000 transistores. [ 38 ]
AMD tenía un contrato a largo plazo para reutilizar el microcódigo 286, 386 y 486 de Intel. [ 39 ] En octubre de 2004, un tribunal dictaminó que el acuerdo no cubría la distribución por parte de AMD del microcódigo de emulación en circuito (ICE) 486 de Intel. [ 39 ]
Pruebas de acceso directo
Las pruebas de acceso directo (DAT) se incluyen en las CPU de Intel como parte de las iniciativas de diseño para pruebas (DFT) y diseño para depuración (DFD), lo que permite realizar pruebas de cobertura completa de las CPU individuales antes de su venta. [ 40 ]
En mayo de 2020, se utilizó un script que leía directamente del bus de registro de control (CRBUS) [ 41 ] (después de explotar "Red Unlock" en JTAG USB-A a USB-A 3.0 con capacidades de depuración, sin D+, D− y Vcc [ 42 ] ) para leer del puerto de prueba de acceso directo local (LDAT) de la CPU Intel Goldmont y se leyeron las matrices de microcódigo y parches cargadas. [ 43 ] Estas matrices solo son accesibles después de que la CPU se haya puesto en un modo específico y constan de cinco matrices a las que se accede a través del desplazamiento 0x6a0: [ 44 ]
- ROM: Tríadas de microcódigo
- ROM: Secuencia de palabras
- RAM: Palabras de secuencia (actualizable)
- RAM: Pares de coincidencia/parche (actualizables)
- RAM: Tríadas de microcódigo (actualizables)
Referencias
- 1 2 Jenner, Andrew (3 de septiembre de 2020). "Desensamblado del microcódigo 8086" . Blog de Reenigne . Recuperado el 24 de mayo de 2026 .
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Gwennap , Linley (15 de septiembre de 1997). "El microcódigo P6 se puede parchear" (PDF) . Microprocessor Report . Archivado del original (PDF) el 21 de diciembre de 2009. Recuperado el 23 de enero de 2018.
Intel ha implementado una capacidad de parcheo de microcódigo en sus
procesadores
P6 , incluidos
Pentium Pro
y
Pentium II
... permite alterar el microcódigo después de que el procesador se fabrica, reparando errores que se encuentran después del diseño del procesador. ... originalmente se pretendía que la característica se utilizara solo para depuración, pero después de lidiar con el costo del
error FDIV del Pentium
... Intel decidió hacerlo utilizable en el campo. … El chip P6 contiene un conjunto completo de microcódigo en una
ROM
interna … La BIOS escribe una dirección de memoria en un registro especial de la CPU para activar una secuencia de descarga… Los procesadores P6 contienen una pequeña
SRAM
que almacena hasta 60 microinstrucciones. El código de parche se descarga en esta SRAM… También contiene un conjunto de registros de "coincidencia" que provocan una interrupción cuando se encuentra una dirección de microcódigo particular. (Esto es similar a la capacidad de "
punto de interrupción
de instrucción " utilizada para depurar
código ensamblador
). Esta interrupción, que tarda un solo ciclo en procesarse, dirige la ejecución del microcódigo a la RAM de parche. … El microcódigo descargado consta de dos segmentos. … El primero es una rutina de inicialización que se ejecuta inmediatamente… También inicializa los registros de coincidencia, si es necesario. … El segundo segmento contiene uno o más parches que permanecen en la RAM de parche durante el funcionamiento normal y se accede a través de una interrupción de registro de coincidencia. … El microcódigo original se almacena en la ROM, … Los registros de coincidencia permiten cambiar el funcionamiento del microcódigo. De esta manera, se puede reparar una
instrucción x86
que funciona incorrectamente, suponiendo que esté implementada en microcódigo. … se crea un parche para reemplazar una sección del microcódigo original, realizando la operación correcta y luego
regresando
. … número de registros de coincidencia, … más de uno. … un solo error, … podría requerir varios parches, y algunos errores son demasiado complejos para reparar … el mecanismo podría permitir que se corrijan varios errores, … las características del procesador P6 se pueden deshabilitar a través de un registro especial … bloque de datos de 2048 bytes. El bloque contiene un encabezado de 48 bytes, que incluye un código de fecha, el
ID de la CPU
(que incluye el
nivel de paso) .
) del procesador objetivo, y una suma de verificación—y 2000 bytes de datos que el procesador descargará. … suma de verificación … no es utilizada por la CPU. … 2000 bytes de datos están cifrados de una manera que Intel afirma que será extremadamente difícil de romper. Los bytes están divididos en bloques de longitudes variables, cada uno de los cuales está codificado de manera diferente. … normalmente mucho más pequeños que 2000 bytes, los datos restantes son ruido aleatorio destinado a confundir a cualquiera que intente romper el cifrado. … Intel no ha publicado ninguna información sobre el formato de su microcódigo, … está diseñado deliberadamente para ser difícil de entender. Solo un pequeño número de empleados de Intel conocen los formatos del microcódigo P6.
- 1 2 3 Yeoh Eng Hong; Lim Seong Leong; Wong Yik Choong; Lock Choon Hou; Mahmud Adnan (20 de abril de 1998). Chao, Lin (ed.). "Una descripción general de las técnicas avanzadas de análisis de fallas para los microprocesadores Pentium y Pentium Pro" (PDF) . Intel Technology Journal (Q2).
Microprocesador Pentium Pro... Característica
DFT
de microparcheo . ... consta de dos elementos clave: la RAM de parche de microcódigo y varios pares de registros de coincidencia y destino. ... El puntero de instrucción de microcódigo (UIP) coincide con el contenido de un registro de coincidencia, el UIP se recargará con una nueva dirección del registro de destino. ...
El UIP
para la subrutina de reinicio se puede establecer en el registro de coincidencia... omitiendo así por completo la subrutina de reinicio.
- ↑ "Desensamblaje del microcódigo 8088/8086" . Foros de la Federación de Computadoras Vintage . Consultado el 24 de mayo de 2026 .
- ↑ "Intel 80286-10" . Siliconpr0n . Consultado el 24 de mayo de 2026 .
- ↑ Jenner, Andrew (23 de mayo de 2026). "Desensamblaje del microcódigo 80386" . Blog de Reenigne . Consultado el 24 de mayo de 2026 .
- ↑Trumbull, Patricia V. (1994-10-07). Intel Corporation v. Advanced Micro Devices (Findings of fact and conclusions of law following "ICE" module of trial). United States District Court for the Northern District of California. San Jose. Retrieved 2021-05-10– via Advanced Micro Devices.
Twelve pins are affiliated with the "ICE" circuitry. … AMD 486DXL and DXLV connect three pins associated with "ICE" in order to implement its "SMM" feature. … 250 lines or 12,032 bits of the "ICE" microcode in the 486. "ICE" constitutes about five percent of the total 486 microcode. … two lines … (used to set the "ICE" mode "flip flop") … blue coded lines of microcode are associated with production testing and not used for "ICE" related purposes. … Seventy-five red coded lines were used by Intel to perform "SMM" in its 486SL, a data sheet function of this version of the chip. About 32 yellow coded lines perform routine operations which are not unique to "ICE." About two lines remain dedicated solely to "ICE."
- ↑"A Tour of the Pentium Pro Processor Microarchitecture". Intel. Archived from the original on 1996-12-20.
- ↑Kubiatowicz, John (3 May 2004). "Dynamic Scheduling in P6 (Pentium Pro, II, III)"(PDF). Low Power Design, Advanced Intel Processors. CS152 Computer Architecture and Engineering (Lecture 25).
Complex 80x86 instructions are executed by a conventional microprogram (8K x 72 bits) that issues long sequences of micro-operations
- ↑"P6 microoperations".
- 12Gwennap, Linley (16 February 1995). "Intel's P6 Uses Decoupled Superscalar Design"(PDF). Microprocessor Report. Vol. 9, no. 2. MicroDesign Resources. pp. 1–7. S2CID 14414612. Archived from the original(PDF) on 8 October 2018.
P6 uops have a fixed length of 118 bits, using a regular structure to encode an operation, two sources, and a destination. The source and destination fields are each wide enough to contain a 32-bit operand.
- 1 2 Asanovic, Krste (2002). "P6 uops" (PDF) . Evolución de los microprocesadores: del 4004 al Pentium Pro (Primavera): 14. Recuperado el 23 de enero de 2018.
Cada uop tiene un formato fijo de alrededor de 118 bits... – código de operación, dos fuentes y destino... – los campos de fuentes y destino tienen 32 bits de ancho para contener el inmediato o el operando.
- ↑ Colwell, Robert P.; Steck, Randy L.; Intel Corporation (1995-04-12). "Un procesador BiCMOS de 0,6 μm con ejecución dinámica" (PDF) . pág. 7. Recuperado el 27-05-2020 .
Las microoperaciones son la unidad atómica de trabajo en el procesador P6 y se componen de un código de operación, dos operandos de origen y uno de destino. Estas microoperaciones tienen una longitud fija y son más generales que el microcódigo del procesador Pentium(R) ya que necesitan ser programadas.
- ↑ 16.6.1. Códigos de error simples (PDF) . Arquitectura de verificación de máquina (Informe). Manual del desarrollador de la familia Pentium® Pro. Vol. 3: Guía del escritor del sistema operativo. 3 de enero de 1996. pág. 401. Archivado del original el 6 de septiembre de 2001. Consultado el 1 de octubre de 2018.
Los códigos únicos indican información de error global… Error de paridad de la ROM del microcódigo
- 1 2 Ronen, Ronny; Intel Labs (18 de enero de 2005). Microoperaciones (Uops) (PDF) . El procesador Pentium II/III "Compilador en un chip" (Informe). Haifa: Universidad de Tel Aviv . págs. 26, 31, 32, 43, 44, 46. Archivado del original (PDF) el 16 de abril de 2007. Recuperado el 23 de enero de 2018.
Cada
instrucción "
CISC
"
se divide en una o más
uops
... Representación canónica de
src
/
dest
(3
src
, 2
dest
)... p. ej.,
se convierte en
...
ID
: Convertir instrucciones en
uops
. Almacena hasta 6
uops
…
Asignación
y
RAT
… capaz de trabajar en hasta 3
uops
por ciclo… Estación de reserva (RS)… Grupo de todas
las uops
"aún no ejecutadas" (hasta 20)… Retiro en orden:… Retira hasta 3
uops
por ciclo… Clúster
OOO
… Se seleccionan y despachan hasta 5
uops
listas para usar por ciclo
pop eaxesp1<-esp0+4, eax1<-[esp0] - ↑ Papworth, David B.; Intel Corporation (abril de 1996). "Ajuste de la microarquitectura del Pentium Pro" (PDF) . IEEE Micro . pág. 14. ISSN 0272-1732 . Archivado del original (PDF) el 8 de octubre de 2018. Consultado el 8 de octubre de 2018.
La revisión B0 incorporó varios errores de microcódigo y correcciones de ruta de velocidad para problemas descubiertos en el silicio de la revisión A.
- 1 2 Kagan, Michael; Gochman, Simcha; Orenstien, Doron; Lin, Derrick (1997). "Microarquitectura MMX de procesadores Pentium con tecnología MMX y microprocesadores Pentium II" (PDF) . Intel Technology Journal (Q3): 6, 7.
La microarquitectura del procesador Pentium II es similar a la del microprocesador Pentium Pro... modificada para convertir las nuevas instrucciones
MMX
en uops específicas del procesador Pentium Pro (se agregaron nuevas uops de instrucción única, datos múltiples [SIMD] para implementar la nueva funcionalidad). ... Se creó una asistencia de microcódigo para corregir el problema y rehacer la operación. Una asistencia es un evento invisible para el cliente que vacía la máquina y permite que el microcódigo maneje problemas raros pero difíciles de manejar. Dado que todas las instrucciones MMX ponen a cero el
TOS
, la asistencia necesita escribir el
TOS
a cero y reiniciar la operación. … Los códigos de operación ilegales que constituyen huecos en el mapa de códigos de operación de instrucciones MMX se definen para generar una llamada de asistencia de una microoperación. Esta llamada de asistencia ordena al ROB que borre la máquina y provoca un flujo de microcódigo de asistencia para que el procesador gestione los fallos de los códigos de operación ilegales.
- 1 2 3 4 Hinton, Glenn; Sager, Dave; Upton, Mike; Boggs, Darrell; Carmean, Doug; Kyker, Alan; Roussel, Patrice (2001). Chao, Lin (ed.). "La microarquitectura del procesador Pentium 4" (PDF) . Intel Technology Journal . No. Q1.
Los bytes de instrucción IA-32 se decodifican en operaciones básicas llamadas uops (microoperaciones)... forma avanzada de una caché de instrucciones de nivel 1 (L1) llamada caché de traza de ejecución... entre la lógica de decodificación de instrucciones y el núcleo de ejecución... para almacenar las uops ya decodificadas. ... las instrucciones se decodifican una vez... y luego se usan repetidamente desde allí... tiene capacidad para contener hasta 12K uops... tasa de aciertos similar a una caché de instrucciones convencional de 8K a 16K bytes. … agrupa las microoperaciones en grupos de seis microoperaciones por línea de traza … ROM de microcódigo … para instrucciones IA-32 complejas, como el movimiento de cadenas, y para el manejo de fallas e interrupciones … La caché de traza salta a la ROM de microcódigo, que luego emite las microoperaciones … Después de que la ROM de microcódigo termina de secuenciar las microoperaciones … el front-end de la máquina reanuda la obtención de microoperaciones de la caché de traza. … almacenamiento en búfer profundo del procesador Pentium 4 (126 microoperaciones y 48 cargas en curso)
- ↑ Fog, Agner (25 de mayo de 2020). "La microarquitectura de las CPU de Intel, AMD y VIA" (PDF) (Una guía de optimización para programadores de ensamblador y creadores de compiladores). Universidad Técnica de Dinamarca. pág. 49.
… Si una μop tiene un operando inmediato de 32 bits fuera del intervalo ±2
15
de modo que no se puede representar como un entero con signo de 16 bits, entonces utilizará dos entradas de caché de traza a menos que pueda tomar prestado espacio de almacenamiento de una μop cercana. … Una μop que necesita espacio de almacenamiento adicional puede tomar prestados 16 bits de espacio de almacenamiento adicional de una μop cercana que no necesita su propio espacio de datos.
- ↑ Bentley, Bob; Gray, Rand (2001). Chao, Lin (ed.). "Validación del procesador Intel® Pentium® 4" (PDF) . Intel Technology Journal (Q1): 29–26 .
Discusión sobre errores
- 1 2 De Gelas, Johan (1 de mayo de 2006). "Intel Core versus la arquitectura K8 de AMD" . AnandTech . pág. 3. Archivado del original el 12 de agosto de 2010. Recuperado el 23 de enero de 2018.
La arquitectura Core está equipada con cuatro decodificadores x86, 3 decodificadores simples y 1 decodificador complejo... para traducir las instrucciones x86 de longitud variable de 1 a 15 bytes en... instrucciones de longitud fija tipo RISC (llamadas microoperaciones). ... las instrucciones x86 comunes se traducen en una sola microoperación... el decodificador complejo es responsable de las instrucciones que producen hasta 4 microoperaciones. ... las instrucciones x86 realmente largas y complejas son manejadas por un secuenciador de microcódigo. ... fusión de macrooperaciones... la instrucción de comparación x86 (
) se fusiona con un salto (
).
CMPJNE TARG - ↑ Kim, Dongkeun; Shih-wei Liao, Steve; Wang, Perry H.; del Cuvillo, Juan; Tian, Xinmin; Zou, Xiang; Wang, Hong; Yeung, Donald; Girkar, Milind; Shen, John P. (11 de enero de 2004). "Experimentación física con subprocesos auxiliares de precarga en procesadores Hyper-Threaded de Intel" (PDF) . págs. 4, 5. Recuperado el 24 de enero de 2018.
Caché de trazas L1: 12K microoperaciones, asociativo de conjuntos de 8 vías, 6 microoperaciones por línea... Compartido: caché de trazas,...
decodificación de instrucciones
IA-32 , ROM de microcódigo, lógica de retiro de
Uop
,... Particionado: cola de Uop
- 1 2 3 8: Función de actualización del BIOS del procesador Pentium Pro (PDF) (Informe). 2.0. Intel. 12 de enero de 1996. pág. 45. Recuperado el 3 de noviembre de 2020.
El procedimiento de autenticación se basa en el descifrado proporcionado por el procesador para verificar una actualización de fuentes potencialmente hostiles.
- ^ Más quieto, Andreas; Paul, Matías R. (12 de mayo de 1996). "Prozessorgeflüster" . c't – revista para tecnología informática . Tendencias y noticias / aktuell - Prozessoren (en alemán). vol. 1996, núm. 6. Verlag Heinz Heise GmbH & Co. KG . pag. 20. ISSN 0724-8679 . Archivado desde el original el 28 de agosto de 2017 . Consultado el 28 de agosto de 2017 .
- ↑ Mueller, Scott; Zacker, Craig (septiembre de 1998). Minatel, Jim; Byus, Jill; Kughen, Rick (eds.). Actualización y reparación de PC (PDF) (Edición del décimo aniversario ). Que Publishing . pág. 79. ISBN 0-7897-1636-4. Recuperado el 1 de octubre de 2018 .
Revisiones del procesador y revisiones de actualización del microcódigo compatibles con el archivo de base de datos de actualización PEP6.PDB … Usando la utilidad de actualización del procesador (CHECKUP3.EXE), … puede verificar fácilmente … la actualización correcta del microcódigo
- 1 2 3 4 5 Chen, Daming Dominic; Ahn, Gail-Joon (11 de diciembre de 2014). "Análisis de seguridad del microcódigo del procesador x86" (PDF) . Universidad Estatal de Arizona . págs. 1, 5, 7. Recuperado el 23 de enero de 2018 .
Se requieren privilegios de supervisor (anillo cero) para actualizar el microcódigo del procesador… Desde la década de 1970, los fabricantes de procesadores han decodificado el x86… en una secuencia de… microoperaciones (uops) (RISC)… introdujeron memoria de parches escribible para proporcionar un mecanismo de actualización para implementar capacidades de depuración dinámica y corregir erratas del procesador, especialmente después del infame
error FDIV del Pentium
de 1994. … microarquitectura P6 (Pentium Pro) en 1995, …
microarquitectura K7
en 1999… con
multiprocesamiento simétrico
(SMP)… debe ejecutarse síncronamente en cada procesador lógico… RAM de parches además de la
MROM
… hasta 60 microinstrucciones, con parcheo implementado por pares de registros de coincidencia y destino. … un bloque de 520 bytes que contiene un módulo RSA de 2048 bits que parece ser constante dentro de cada familia de procesadores. A esto le sigue un exponente RSA de cuatro bytes con el valor fijo 11h
- ↑ Shanley, T. (1998). Arquitectura del sistema Pentium Pro y Pentium II . Addison-Wesley Professional. pág. 435. ISBN 9780201309737.
- ↑ Wolfe, Alexander (30 de junio de 1997). "Intel prepara un plan para eliminar errores en las MPU Pentium" . EE Times . N.° 960. Archivado del original el 13 de noviembre de 1999. Recuperado el 3 de octubre de 2018 a través de Techweb .
apodo oscuro "Función de actualización de BIOS". ... "Cada actualización de BIOS está diseñada para una revisión particular de [un] procesador," ... el bloque de datos se asigna directamente, ... después del descifrado, al propio microcódigo.
- ↑ Wolfe, Alexander (30 de junio de 1997). "Se detecta un fallo en la función de Intel para la detección de errores" . EE Times . Santa Clara. Archivado del original el 9 de marzo de 2003.
Ajay Malhortra, gerente de marketing técnico del grupo de microprocesadores de Intel, afirma: "No solo está cifrado el bloque de datos que contiene el parche de microcódigo, sino que, una vez que el procesador examina el encabezado de la actualización del BIOS, deben aplicarse dos niveles de cifrado antes de que la actualización se cargue correctamente". … secreto celosamente guardado. "No existe documentación", declaró Frank Binns, arquitecto del grupo de microprocesadores de Intel. "No es como si se pudiera conseguir un 'Libro Rojo' de Intel con toda esta información escrita. En realidad, está en la cabeza de menos de 10 personas en toda Intel".
- ↑ "Formato de archivos de actualización de microcódigo Intel P6" .
- ↑ Borrello, Pietro; Easdon, Catherine; Schwarzl, Martin; Czerny, Roland; Schwarz, Michael (2023), CustomProcessingUnit: Ingeniería inversa y personalización del microcódigo de Intel , doi : 10.60882/CISPA.24614721.V1 , consultado el 10 de noviembre de 2025
- 1 2 3 "Detalles del modo Intel Probe" . Hardice . Recuperado el 23 de enero de 2018.
emite un paquete a través del
BPM
cuando se ejecutan instrucciones especiales... Para habilitar el rastreo de ejecución extendida, se deben aplicar parches de microcódigo especiales... Solo para el Pentium 4, existe un segundo tipo... llamado rastreo de ejecución extendida de microcódigo... El bus de registro de control a su vez permite el acceso a matrices y funciones internas en el procesador, como el acceso al
LLC
y al microcódigo/ PROM
de fusible virtual
. ... que se encuentra en el paquete de la CPU pero no está dentro del chip de silicio de la CPU. Esta PROM también contiene el microcódigo que la CPU carga durante el arranque en frío. ... punto de interrupción en una dirección de microcódigo de 48 bits... a la que se accede mediante los
comandos
TAP
BRKPTCTLA
y
BRKPTCTLB
.
- 1 2 Elkins, David S. (Invierno de 1990). "NEC v. Intel: Una guía para usar los procedimientos de "sala limpia" como evidencia" . Computer/Law Journal . 10 (4): 453.
El uso por parte de NEC de sus
procedimientos de sala limpia
como evidencia en el juicio...
El juez Gray
definió el microcódigo... dentro de la definición de "programa informático" de la Ley de Derechos de Autor,... El microcódigo de Intel es susceptible de protección por derechos de autor. ... El microcódigo de Intel no contenía el aviso de derechos de autor requerido. ... Los derechos de autor habían sido confiscados. ... Intel se quedó sin fundamento para su reclamo de copia.
- ↑ Hinckley, Robert C. (enero de 1987). "NEC v. Intel: ¿Se verá el hardware atraído al agujero negro de los editores de derechos de autor?"" . Revista de Derecho de Alta Tecnología de Santa Clara . 3 (1).
Apéndice: Formatos de microcódigo; Formato 8086 /8088; Formato V20 /V30
- ↑ Leong, Kathy Chin (28 de marzo de 1988). "Testigo de inteligencia se retracta de su historia" . Computerworld . Vol. 22, n.º 13. San José. págs. 83, 84. ISSN 0010-4841 . Consultado el 2 de octubre de 2018 .
- ↑ "Microprocesador Intel386 DX de 32 bits CHMOS con gestión de memoria integrada" (PDF) . Diciembre de 1995. Archivado del original el 3 de septiembre de 2004.
La autocomprobación verifica el funcionamiento de toda la ROM de control... El registro EAX contendrá una firma de 00000000h, lo que indica que el Intel386 DX superó su autocomprobación del microcódigo y
del contenido principal
de la PLA.
- ↑ "5.1 Prueba exhaustiva en el Intel 80386" (PDF) . Autodiagnóstico integrado (BIST) para sistemas embebidos . Pruebas de sistemas embebidos. IIT Kharagpur : 21. 7 de octubre de 2006. Recuperado el 6 de octubre de 2018.
Para las ROM, los patrones son generados por el contador de microprograma que forma parte de la lógica normal.
- 1 2 Gelsinger, Patrick ; lyengar, Sundar; Krauskopf, Joseph; Nadir, James; Intel (1999). Diseño asistido por computadora y autodiagnóstico integrado en la CPU i486™ (PDF) . Conferencia internacional IEEE de 1989 sobre diseño de computadoras: VLSI en computadoras y procesadores. IEEE. págs. 200–201 .
- 1 2 "El fallo judicial contra AMD causa cierta preocupación" . InfoWorld . 17 de octubre de 1994. pág. 5. Recuperado el 24 de enero de 2018. La decisión del tribunal federal de distrito en San José, California ,
dijo que AMD no tiene derecho a usar el código
de emulación en circuito
(ICE) de Intel en los microprocesadores AMD. Este código está presente en todos los AMD 486 pero solo se usa en los procesadores de bajo consumo 486-DXL y 486-DXLV. … AMD ha comenzado a rediseñar toda su línea de 486 para eliminar el código.
- ↑ Wu, David M.; Lin, Mike; Reddy, Madhukar; Jaber, Talal; Sabbavarapu, Anil; Thatcher, Larry; Intel Corporation (2004). "Una estrategia optimizada de generación de patrones de prueba y DFT para un microprocesador Intel de alto rendimiento" (PDF) . págs. 38, 43, 44.
Prueba de acceso directo (DAT) para acceso y diagnóstico de matrices y modo de prueba de escritura débil programable (PWWTM) para prueba de estabilidad de celdas de memoria para reducir el tiempo de prueba. … La estrategia de prueba
DFT
de la matriz consiste en usar PBIST (Autodiagnóstico integrado programable) para probar la caché de segundo nivel y usar DAT para probar las matrices restantes … PBIST está disponible a través del controlador JTAG TAP. … Modo DAT en PX como se muestra en la Figura 4 … PX tiene más matrices (>110) … la cobertura de prueba de matriz de PX es del 99,3 %, la más alta en la familia Pentium 4
- ↑ Equipo, uCode Research (25 de mayo de 2020). "chip-red-pill/crbus_scripts" . GitHub . Consultado el 26 de mayo de 2020 .
- ↑ Positive Research (21/07/2020), ptresearch/IntelTXE-PoC , consultado el 25/07/2020
- ↑ Ermolov, Mark [@_markel___] (19 de mayo de 2020). "Utilizando la función DFT de prueba de acceso directo local (LDAT) de la CPU Intel Atom, volcamos la ROM del secuenciador de microcódigo. Además, extrajimos lo que creemos que es IROM (inmediatos para uops) e incluso logramos modificar la RAM de parches MS y los registros Match/Patch" ( Tweet ) – vía Twitter .
- ↑ Bosch, Peter (22 de mayo de 2020). "Notas de Intel LDAT" . Recuperado el 26 de mayo de 2020.
PDAT CR: 0x6A0; Selección de matriz: 0‒4
Lecturas adicionales
- Patente estadounidense 5404473 , Papworth, David B.; Fetterman, Michael A. y Glew, Andrew F. et al., "Aparato y método para manejar operaciones de cadena en un procesador segmentado", publicada el 4 de abril de 1995, asignada a Intel : "La primera instrucción Cuops en una operación de oscilación REP carga el contador de bucle MS con el número de iteraciones restantes después de que se ejecuten las iteraciones desenrolladas. ... Se envía un pequeño número de iteraciones (por ejemplo, siete) durante el tiempo que tarda en cargarse el contador de bucle en el MS. Este código desenrollado se ejecuta condicionalmente en función del valor de (E)CX ... Las tres iteraciones restantes se convierten en instrucciones NOPS ".
- Patente estadounidense 5559974 , Boggs, Darrell D.; Brown, Gary L. y Hancock, Michael M. et al., "Decodificador con registros de micro-alias y macro-alias cargados independientemente y accesibles simultáneamente mediante una microoperación", publicada el 24 de septiembre de 1996, asignada a Intel.
- Patente estadounidense 5566298 , Boggs, Darrell D.; Brown, Gary L. y Hancock, Michael M. et al., "Método para la recuperación de estado durante la asistencia y el reinicio en un decodificador con un mecanismo de alias", publicada el 15 de octubre de 1996, asignada a Intel "... el control regresa a la unidad de secuencia de microoperaciones (MS) para emitir microoperaciones de control de corrección de errores (Cuops) adicionales. Para simplificar el reinicio, las Cuops que se originan a partir de la macroinstrucción que causa el error proporcionada por las matrices lógicas programables de traducción (XLAT PLAs) se cargan en los registros Cuop, con sus bits válidos desactivados."
- Patente estadounidense 5600806 , Brown, Gary L. y Parker, Donald D., "Método y aparato para alinear un límite de instrucción en macroinstrucciones de longitud variable con un búfer de instrucciones", publicada el 4 de febrero de 1997, asignada a Intel. "ADD, XOR, SUB, AND y OR, que se implementan con un Cuop genérico. Otro grupo de instrucciones representables por un solo Cuop incluye ADC y SBB.
- Patente estadounidense 5630083 , Carbine, Adrian L.; Brown, Gary L. y Parker, Donald D., "Decodificador para decodificar múltiples instrucciones en paralelo", publicada el 1 de marzo de 2013, asignada a Intel.
- Patente estadounidense 6055656 , Wilson, Jr., James A.; Miller, Anthony C. y Rhodehamel, Michael W. et al., "Acceso al bus de registro de control a través de un puerto de acceso de prueba estandarizado", publicada el 25 de abril de 2000, asignada a Intel
- Patente estadounidense 20030196096 , Sutton, James A., "Autenticación de parches de microcódigo", publicada el 16 de octubre de 2003.
- Patente estadounidense 5948097 , Glew, Andrew y Rodgers, Scott Dion, "Método y aparato para cambiar los niveles de privilegio en un sistema informático sin usar una puerta de llamada", publicada el 7 de septiembre de 1999, asignada a Intel. "SYSENTER y SYSEXIT son instrucciones en lenguaje ensamblador que pueden ejecutarse en un procesador con arquitectura Intel, como el procesador Pentium Pro... Se determina que una microoperación está lista cuando sus campos fuente se han llenado con los datos apropiados... La unidad de decodificación de instrucciones comprende una o más matrices lógicas programables (PLA) de traducción (XLAT) que decodifican cada instrucción en una o más microoperaciones... Las instrucciones SYSENTER y SYSEXIT se decodifican en microoperaciones que realizan los pasos ilustrados en las figuras 5 y 6, respectivamente."
- "Interfaz de actualización de microcódigo sysctl" (
ucode.ccontrolador) . XNU . Consultado el 24 de enero de 2018 .#define IA32_BIOS_UPDT_TRIG (0x79) /* microcode update trigger MSR */ - Sivaram, AT; Fan, Daniel; Yiin, A. (10 de octubre de 2002). "Pruebas eficientes de memoria integrada con APG". Actas de la Conferencia Internacional de Pruebas . Vol. 1. Baltimore, Maryland: IEEE. págs. 47–54 . doi : 10.1109/TEST.2002.1041744 . ISBN 0-7803-7542-4. ISSN 1089-3539 . S2CID 19579807 .
- Bosch, Peter (1 de octubre de 2020). "Bajo el capó de una CPU: Ingeniería inversa del microcódigo P6" . YouTube . Países Bajos . Consultado el 1 de noviembre de 2020 .
Enlaces externos
- uCodeDisasm — Desensamblador de microcódigo de Intel en Python (desde CRBUS), nombres de uops
- Microprocesadores Intel x86
- microarquitecturas de Intel