stringtranslate.com

Microoperación

Una ilustración de alto nivel que muestra la descomposición de instrucciones de máquina en microoperaciones, realizadas durante ciclos típicos de búsqueda, decodificación y ejecución [1] : 11 

En las unidades centrales de procesamiento de computadoras , las microoperaciones (también conocidas como microoperaciones o μops , históricamente también como microacciones [2] ) son instrucciones detalladas de bajo nivel que se utilizan en algunos diseños para implementar instrucciones complejas de máquina (a veces denominadas macroinstrucciones). en este contexto). [3] : 8–9 

Por lo general, las microoperaciones realizan operaciones básicas con datos almacenados en uno o más registros , incluida la transferencia de datos entre registros o entre registros y buses externos de la unidad central de procesamiento (CPU) y la realización de operaciones aritméticas o lógicas en registros. En un ciclo típico de búsqueda, decodificación y ejecución , cada paso de una macroinstrucción se descompone durante su ejecución para que la CPU determine y realice una serie de microoperaciones. La ejecución de microoperaciones se realiza bajo el control de la unidad de control de la CPU , que decide sobre su ejecución mientras realiza diversas optimizaciones como reordenamiento, fusión y almacenamiento en caché. [1]

Optimizaciones

Varias formas de μops han sido durante mucho tiempo la base de las rutinas de microcódigo tradicionales utilizadas para simplificar la implementación de un diseño de CPU particular o tal vez simplemente la secuenciación de ciertas operaciones de varios pasos o modos de direccionamiento. Más recientemente, los μops también se han empleado de una manera diferente para permitir que los procesadores CISC modernos manejen más fácilmente la ejecución asincrónica paralela y especulativa: al igual que con el microcódigo tradicional, se realizan una o más búsquedas en tablas (o equivalentes) para ubicar el μop apropiado. secuencia basada en la codificación y la semántica de la instrucción de la máquina (el paso de decodificación o traducción), sin embargo, en lugar de tener secuencias μop rígidas que controlan la CPU directamente desde un microcódigo- ROM , las μops aquí se almacenan dinámicamente en un buffer para reprogramarlas antes de ser ejecutadas. [4] : 6–7, 9–11 

Este almacenamiento en búfer significa que las etapas de búsqueda y decodificación pueden estar más separadas de las unidades de ejecución de lo que es factible en un diseño microcodificado (o cableado) más tradicional. Como esto permite un grado de libertad con respecto al orden de ejecución, hace posible cierta extracción del paralelismo a nivel de instrucción de un programa normal de un solo subproceso (siempre que se verifiquen las dependencias, etc.). Se abre para un mayor análisis y, por lo tanto, también para el reordenamiento de secuencias de código con el fin de optimizar dinámicamente el mapeo y la programación de μops en los recursos de la máquina (como ALU , unidades de carga/almacenamiento, etc.). Como esto sucede en el nivel μop, las suboperaciones de diferentes instrucciones de máquina (macro) a menudo pueden entremezclarse en una secuencia μop particular, formando instrucciones de máquina parcialmente reordenadas como consecuencia directa del envío desordenado de microinstrucciones desde varios instrucciones macro. Sin embargo, esto no es lo mismo que la fusión de microoperaciones , que apunta al hecho de que una microinstrucción más compleja puede reemplazar algunas microinstrucciones más simples en ciertos casos, generalmente para minimizar los cambios de estado y el uso de la cola y reordenar. espacio de buffer , reduciendo así el consumo de energía. La fusión microoperativa se utiliza en algunos diseños de CPU modernos. [3] : 89–91, 105–106  [4] : ​​6–7, 9–15 

La optimización de la ejecución ha ido aún más lejos; los procesadores no sólo traducen muchas instrucciones de la máquina en una serie de μops, sino que también hacen lo contrario cuando corresponde; combinan ciertas secuencias de instrucciones de la máquina (como una comparación seguida de un salto condicional) en una μop más compleja que se ajusta mejor al modelo de ejecución y, por lo tanto, puede ejecutarse más rápido o con menos recursos de la máquina involucrados. Esto también se conoce como fusión de macrooperaciones . [3] : 106–107  [4] : ​​12–13 

Otra forma de intentar mejorar el rendimiento es almacenar en caché las microoperaciones decodificadas en un caché de microoperaciones , de modo que si se ejecuta nuevamente la misma macroinstrucción, el procesador pueda acceder directamente a las microoperaciones decodificadas desde la caché, en lugar de decodificarlas. de nuevo. El caché de seguimiento de ejecución que se encuentra en la microarquitectura Intel NetBurst ( Pentium 4 ) es un ejemplo generalizado de esta técnica. [5] El tamaño de esta caché puede expresarse en términos de cuántos miles (o estrictamente múltiplos de 1024) de microoperaciones puede almacenar: Kμops . [6]

Referencias

  1. ^ ab "Organización y arquitectura de la computadora, Capítulo 15. Operación de la unidad de control" (PDF) . umcs.maine.edu . 2010-03-16 . Consultado el 29 de diciembre de 2014 .
  2. ^ Computadora con microcircuito FM1600B Ferranti Digital Systems (PDF) . Bracknell, Berkshire, Reino Unido: Ferranti Limited , Departamento de Sistemas Digitales. Octubre de 1968 [septiembre de 1968]. Lista DSD 68/6. Archivado (PDF) desde el original el 19 de mayo de 2020 . Consultado el 19 de mayo de 2020 .
  3. ^ a b c Agner Fog (19 de febrero de 2014). "La microarquitectura de las CPU Intel, AMD y VIA: una guía de optimización para programadores de ensamblaje y fabricantes de compiladores" (PDF) . Agner.org . Consultado el 21 de marzo de 2014 .
  4. ^ a b C Michael E. Thomadakis (17 de marzo de 2011). "La arquitectura del procesador Nehalem y las plataformas SMP Nehalem-EP" (PDF) . Universidad Texas A & M. Archivado desde el original (PDF) el 11 de agosto de 2014 . Consultado el 21 de marzo de 2014 .
  5. ^ "Intel Pentium 4 de 1,4 GHz y 1,5 GHz". AnandTech. 2000-11-20 . Consultado el 6 de octubre de 2013 .
  6. ^ Baruc Salomón; Avi Mendelson; Doron Orenstein; Yoav Almog; Ronny Ronen (agosto de 2001). "Caché de microoperaciones: una interfaz con reconocimiento de energía para ISA de longitud de instrucción variable" (PDF) . ISLPED'01: Actas del Simposio internacional de 2001 sobre diseño y electrónica de baja potencia (IEEE Cat. No.01TH8581) . Intel . págs. 4–9. doi :10.1109/LPE.2001.945363. ISBN 1-58113-371-5. S2CID  10934861 . Consultado el 21 de marzo de 2014 .