tag picard musicbrainz mac kid3 español editar easytag linux assembly intel

linux - picard - ¿Qué es el microcódigo Intel?



musicbrainz picard español (3)

Por lo que he leído, se usa para corregir errores en la CPU sin modificar el BIOS. De mis conocimientos básicos de ensamblaje, sé que las instrucciones de ensamblaje se dividen en microcódigos internamente por la CPU y se ejecutan en consecuencia. Pero Intel de alguna manera da acceso para hacer algunas actualizaciones mientras el sistema está en funcionamiento.

¿Alguien tiene más información sobre ellos? ¿Existe alguna documentación sobre qué se puede hacer con los microcódigos y cómo se pueden usar?

EDITAR: He leído el artículo de wikipedia: no descubrí cómo puedo escribir algunos por mi cuenta y qué usos tendría.


En tiempos antiguos, el microcódigo se usaba mucho en la CPU: cada instrucción se dividía en microcódigo. Esto habilitó conjuntos de instrucciones relativamente complejas en una CPU modesta (considere que un Motorola 68000 , con sus muchos modos de operando y ocho registros de 32 bits, cabe en 40000 transistores, mientras que un x86 moderno de un solo núcleo tendrá más de cien millones ). Esto ya no es verdad. Por motivos de rendimiento, la mayoría de las instrucciones ahora están "cableadas": su interpretación se realiza mediante circuitos inflexibles, fuera de cualquier microcódigo.

En un x86 reciente, es plausible que algunas instrucciones complejas como fsin (que calcula la función seno en un valor de coma flotante) se implementen con microcódigo, pero las instrucciones simples (incluida la multiplicación de enteros con imul ) no lo son. Esto limita lo que se puede lograr con microcódigo personalizado.

Dicho esto, el formato de microcódigo no solo es muy específico para el modelo de procesador específico (por ejemplo, el microcódigo para un Pentium III y un Pentium IV no se pueden intercambiar libremente) y, por supuesto, usar microcódigo Intel para un procesador AMD está fuera de la pregunta), pero también es un secreto severamente protegido. Intel ha publicado el método mediante el cual un sistema operativo o un BIOS de la placa base puede actualizar el microcódigo (debe realizarse después de cada restablecimiento completo, la actualización se mantiene en RAM volátil) pero los contenidos del microcódigo no están documentados. El Manual del desarrollador de software Intel® 64 e IA-32 Architectures (volumen 3a) describe el procedimiento de actualización (sección 9.11 "instalaciones de actualización de microcódigo") pero establece que el microcódigo real está "encriptado" y repleto de sumas de comprobación. La redacción es tan vaga que casi cualquier tipo de protección criptográfica puede estar oculta, pero la conclusión es que actualmente no es posible, para personas que no sean Intel, escribir y probar algunos microcódigos personalizados.

Si el "cifrado" no incluye una firma digital (asimétrica) y / o si las personas en Intel estropearon el sistema de protección de alguna manera, entonces es posible que algún esfuerzo notable de ingeniería inversa podría potencialmente permitirle a uno producir dicho microcódigo, pero , dada la aplicabilidad probablemente limitada (ya que la mayoría de las instrucciones están cableadas), lo más probable es que no se compre mucho, en lo que se refiere a la potencia de programación.


Normalmente no escribe microcódigo. Para hacerlo, se requiere un conocimiento profundo de la microarquitectura de la CPU. Intel no divulga en general ninguna información ni en su microarquitectura ni en su microcódigo.


Piense libremente en una máquina virtual o simulador donde, por ejemplo, qemu-arm puede simular un procesador de brazo en un host x86, idealmente, el software que se ejecuta en el brazo simulado no tiene idea de que no es un brazo real. Lleve esta idea al nivel en que está diseñado el chip completo, de modo que siempre parezca que usted es un x86, el software nunca sabe que hay algunos elementos programables dentro del chip. Y que algún otro procesador en su interior está diseñado para el propósito de implementar / simular un x86. Supuestamente, la popular línea de productos AMD 29000 simplemente se fue porque el equipo de hardware y tal vez el procesador / núcleo se convirtieron en las entrañas de un clon x86 temprano. Transmeta, donde Linus trabajaba, tenía un procesador vliw que estaba hecho para ser de baja potencia x86. En ese caso, la capa de traducción no era (tanto de) un secreto. Vliw, palabra de instrucción muy larga, RISC llevada al extremo, es el tipo de cosa que construyes para este tipo de tarea.

No, no es tanto una capa de emulación como estoy implicando, no hay algo de Linux corriendo allí con un programa qemu dentro de cada chip. Está en algún lugar entre cableado donde no hay software / microcódigo en el medio y una emulación completa. Los bits programables pueden ser como un fpga, puertas programables, o puede ser software o máquinas de estado programables, es decir, puertas no programables, lo que se ejecuta en las puertas es programable.

Sus procesadores de tipo de hierro no grandes x86. Tome ARM por ejemplo, están cableados, no microcódigo. Los microcontroladores, PIC, MSP430, AVR, asumen que estos no están microcodificados. Básicamente no asuma que todos los procesadores están microcodificados, pocas o ninguna familia de procesadores lo están. Es solo que los que manejamos en las PC han sido y pueden seguir siéndolo, por lo que puede parecer que todos lo son.

Por divertido que suene jugar con este microcódigo, es probable que sea muy específico para la familia de procesadores, y es probable que nunca tenga acceso a cómo funciona a menos que trabaje para Intel o AMD, cada uno de los cuales probablemente tenga sus propios internos. Entonces necesitarías conseguir un trabajo en uno de los dos, luego trabajar en las trincheras para convertirte en uno de lo que probablemente sea un equipo de elite que hace este trabajo. Y una vez que llegas tan lejos, tu carrera queda atrapada, tus habilidades pueden estar limitadas a un trabajo en una compañía. Puede que te diviertas más programando gpus individuales en una tarjeta de video, algo que está documentado o al menos tiene herramientas, algo que puedes hacer hoy sin pasar 10 años en AMD o Intel para posiblemente no llegar a ninguna parte.