Articulo de referencia

Ejecución fuera de orden

En ingeniería informática , la ejecución fuera de orden (o, más formalmente, ejecución dinámica ) es un paradigma de planificación de instrucciones utilizado en unidades central...

En ingeniería informática , la ejecución fuera de orden (o, más formalmente, ejecución dinámica ) es un paradigma de planificación de instrucciones utilizado en unidades centrales de procesamiento (CPU) de alto rendimiento para aprovechar los ciclos de instrucción que de otro modo se desperdiciarían. En este paradigma, un procesador ejecuta las instrucciones en un orden determinado por la disponibilidad de datos de entrada y unidades de ejecución, [ 1 ] en lugar de por su orden original en un programa. [ 2 ] [ 3 ] De esta manera, el procesador puede evitar permanecer inactivo mientras espera a que se complete la instrucción anterior y, mientras tanto, puede procesar las siguientes instrucciones que pueden ejecutarse de forma inmediata e independiente. [ 4 ]

Historia

La ejecución fuera de orden es una forma restringida de arquitectura de flujo de datos , que fue un área de investigación importante en la arquitectura de computadoras en los años 70 y principios de los 80.

Uso temprano en supercomputadoras

Podría decirse que la primera máquina en utilizar la ejecución fuera de orden fue la CDC 6600 (1964), que utilizaba un marcador para resolver conflictos. Sin embargo, la 6600 carecía de manejo de conflictos WAW , optando en su lugar por detenerse. Esta situación fue denominada "Conflicto de Primer Orden" por Thornton. [ 5 ] Si bien contaba con resolución de conflictos RAW (denominada "Conflicto de Segundo Orden" [ 6 ] ) y resolución de conflictos WAR (denominada "Conflicto de Tercer Orden" [ 7 ] ), lo cual es suficiente para declararla capaz de una ejecución fuera de orden completa, la 6600 no tenía un manejo preciso de excepciones. Era posible una forma temprana y limitada de predicción de bifurcaciones siempre que la bifurcación fuera a ubicaciones en lo que se denominó la "Pila de Instrucciones", que estaba limitada a una profundidad de siete palabras desde el Contador de Programa. [ 8 ]

Aproximadamente dos años después, el IBM System/360 Modelo 91 (1966) introdujo el cambio de nombre de registros con el algoritmo de Tomasulo , [ 9 ] que disuelve las dependencias falsas (WAW y WAR), haciendo posible la ejecución fuera de orden completa. Una instrucción que apunta a una escritura en un registro r n puede ejecutarse antes de que se ejecute una instrucción anterior que usa el registro r n , escribiendo realmente en un registro alternativo (renombrado) alt-r n , que se convierte en un registro normal r n solo cuando se han ejecutado todas las instrucciones anteriores que apuntan a r n , pero hasta entonces se da r n para las instrucciones anteriores y alt-r n para las posteriores que apuntan a r n .

En el Modelo 91, el cambio de nombre de los registros se implementa mediante un bypass denominado Common Data Bus (CDB) y búferes de operandos de la fuente de memoria, lo que deja los registros arquitectónicos físicos sin usar durante muchos ciclos, ya que el estado más antiguo de los registros a los que apunta cualquier instrucción no ejecutada se encuentra en el CDB. Otra ventaja del Modelo 91 sobre el 6600 es la capacidad de ejecutar instrucciones fuera de orden en la misma unidad de ejecución , no solo entre las unidades como el 6600. Esto se logra mediante estaciones de reserva , desde las cuales las instrucciones van a la unidad de ejecución cuando están listas, a diferencia de la cola FIFO de cada unidad de ejecución del 6600. El Modelo 91 también es capaz de reordenar las cargas y los almacenamientos para que se ejecuten antes que las cargas y los almacenamientos precedentes, [ 10 ] a diferencia del 6600, que solo tiene una capacidad limitada para mover cargas más allá de cargas, y almacenamientos más allá de almacenamientos, pero no cargas más allá de almacenamientos y almacenamientos más allá de cargas. [ 11 ] Solo se renombran los registros de punto flotante del Modelo 91, lo que lo sujeta a las mismas limitaciones WAW y WAR que el CDC 6600 al ejecutar cálculos de punto fijo. Tanto el 91 como el 6600 también sufren excepciones imprecisas , que debían resolverse antes de que la ejecución fuera de orden pudiera aplicarse de forma general y hacerse práctica fuera de las supercomputadoras.

Excepciones precisas

Para tener excepciones precisas , el estado correcto de ejecución del programa debe estar disponible cuando se produzca una excepción. En 1985 se desarrollaron varios enfoques, como los descritos por James E. Smith y Andrew R. Pleszkun. [ 12 ] El CDC Cyber ​​205 fue un precursor, ya que ante una interrupción de memoria virtual, todo el estado del procesador (incluida la información sobre las instrucciones parcialmente ejecutadas) se guarda en un paquete de intercambio invisible , de modo que pueda reanudarse en el mismo estado de ejecución. [ 13 ] Sin embargo, para que todas las excepciones sean precisas, debe haber una forma de cancelar los efectos de las instrucciones. El CDC Cyber ​​990 (1984) implementa interrupciones precisas mediante el uso de un búfer de historial, que almacena los valores antiguos (sobrescritos) de los registros que se restauran cuando una excepción requiere la reversión de las instrucciones. [ 12 ] Mediante simulación, Smith determinó que añadir un búfer de reordenamiento (o búfer de historial o equivalente) al Cray-1S reduciría el rendimiento de la ejecución de los primeros 14 bucles de Livermore (no vectorizados) en solo un 3 %. [ 12 ] Yale Patt lideró una importante investigación académica sobre este tema con su simulador HPSm . [ 14 ]

En la década de 1980, muchos microprocesadores RISC de la época presentaban escrituras fuera de orden en los registros, lo que invariablemente generaba excepciones imprecisas. El Motorola 88100 fue uno de los pocos microprocesadores de la época que no sufrió excepciones imprecisas a pesar de las escrituras fuera de orden, aunque sí permitía excepciones de punto flotante tanto precisas como imprecisas. [ 15 ] Las instrucciones comenzaban su ejecución en orden, pero algunas (por ejemplo, las de punto flotante) requerían más ciclos para completarse. Sin embargo, la ejecución en un solo ciclo de las instrucciones más básicas redujo considerablemente el alcance del problema en comparación con el CDC 6600.

Desacoplamiento

Smith también investigó cómo hacer que las diferentes unidades de ejecución operaran de manera más independiente entre sí y de la memoria, el front-end y las bifurcaciones. [ 16 ] Implementó esas ideas en el Astronautics ZS-1 (1988), que presentaba un desacoplamiento de la tubería de enteros/carga/almacenamiento de la tubería de punto flotante, lo que permitía la reordenación entre tuberías. El ZS-1 también era capaz de ejecutar cargas antes que almacenamientos precedentes. En su artículo de 1984, opinó que aplicar las excepciones precisas solo en la tubería de enteros/memoria debería ser suficiente para muchos casos de uso, ya que incluso permite la memoria virtual . Cada tubería tenía un búfer de instrucciones para desacoplarla del decodificador de instrucciones, para evitar el bloqueo del front-end. Para desacoplar aún más el acceso a la memoria de la ejecución, cada una de las dos tuberías estaba asociada con dos colas direccionables que efectivamente realizaban un renombrado limitado de registros. [ 10 ] Una arquitectura desacoplada similar se había utilizado un poco antes en el Culler 7. [ 17 ] El ISA del ZS-1, al igual que el POWER posterior de IBM, ayudó a la ejecución temprana de bifurcaciones.

La investigación llega a buen término

Con el POWER1 (1990), IBM volvió a la ejecución fuera de orden. Fue el primer procesador en combinar el cambio de nombre de registros (aunque de nuevo solo registros de punto flotante) con excepciones precisas. Utiliza un archivo de registros físico (es decir, un archivo reasignado dinámicamente con valores tanto confirmados como no confirmados) en lugar de un búfer de reordenamiento, pero la capacidad de cancelar instrucciones solo es necesaria en la unidad de bifurcación, que implementa un búfer de historial (llamado pila de contador de programa por IBM) para deshacer cambios en los registros de conteo, enlace y condición. La capacidad de reordenamiento incluso de las instrucciones de punto flotante sigue siendo muy limitada; debido a la incapacidad del POWER1 para reordenar las instrucciones aritméticas de punto flotante (los resultados estaban disponibles en orden), sus registros de destino no se renombran. El POWER1 tampoco tiene estaciones de reserva necesarias para el uso fuera de orden de la misma unidad de ejecución. [ 18 ] [ 19 ] Al año siguiente, el modelo 900 ES/9000 de IBM incorporó el cambio de nombre de registros para los registros de propósito general. También cuenta con estaciones de reserva con seis entradas para la unidad de enteros duales (en cada ciclo, se pueden seleccionar y ejecutar hasta dos instrucciones de entre seis) y seis entradas para la FPU. Otras unidades tienen colas FIFO simples. La distancia de reordenamiento es de hasta 32 instrucciones. [ 20 ] El A19 de la serie A de mainframes de Unisys también se lanzó en 1991 y se afirmó que tenía ejecución fuera de orden, y un analista dijo que la tecnología del A19 estaba de tres a cinco años por delante de la competencia. [ 21 ] [ 22 ]

Adopción generalizada

Los primeros procesadores de un solo chip superescalares ( Intel i960CA en 1989) utilizaban una planificación de marcador simple como la que tenía el CDC 6600 un cuarto de siglo antes. En 1992-1996 un rápido avance de las técnicas, posibilitado por el aumento del número de transistores , vio su proliferación hasta las computadoras personales . El Motorola 88110 (1992) utilizaba un búfer de historial para revertir instrucciones. [ 23 ] Las cargas podían ejecutarse antes que los almacenamientos precedentes. Mientras los almacenamientos y las bifurcaciones esperaban para comenzar la ejecución, las instrucciones subsiguientes de otros tipos podían seguir fluyendo a través de todas las etapas de la tubería, incluida la escritura diferida. La capacidad de 12 entradas del búfer de historial imponía un límite a la distancia de reordenamiento. [ 24 ] [ 25 ] [ 26 ] El PowerPC 601 (1993) fue una evolución del RISC Single Chip , que a su vez era una simplificación del POWER1. El 601 permitía que las instrucciones de salto y de punto flotante superaran a las instrucciones enteras que ya estaban en la cola de instrucciones obtenidas, cuyas cuatro entradas más bajas se escaneaban para determinar su capacidad de despacho. En caso de un fallo de caché, las cargas y los almacenamientos podían reordenarse. Solo los registros de enlace y de conteo podían renombrarse. [ 27 ] [ 28 ] [ 29 ] [ 30 ] [ 31 ] En otoño de 1994, NexGen e IBM con Motorola llevaron el renombrado de registros de propósito general a las CPU de un solo chip. El Nx586 de NexGen fue el primer procesador x86 capaz de ejecución fuera de orden y presentaba una distancia de reordenamiento de hasta 14 microoperaciones . [ 32 ] El PowerPC 603 renombró tanto los registros de propósito general como los de punto flotante. Cada una de las cuatro unidades de ejecución sin salto puede tener una instrucción en espera delante de ella sin bloquear el flujo de instrucciones a las otras unidades. Un búfer de reordenamiento de cinco entradas permite que no más de cuatro instrucciones superen a una instrucción no ejecutada. Gracias a un búfer de almacenamiento, una carga puede acceder a la caché antes que un almacenamiento precedente. [ 33 ] [ 34 ]

PowerPC 604 (1995) fue el primer procesador de un solo chip con reordenamiento a nivel de unidad de ejecución , ya que tres de sus seis unidades tenían cada una una estación de reserva de dos entradas que permitía que la entrada más nueva se ejecutara antes que la más antigua. La capacidad del búfer de reordenamiento es de 16 instrucciones. Una cola de carga de cuatro entradas y una cola de almacenamiento de seis entradas rastrean el reordenamiento de cargas y almacenamientos en caso de fallos de caché. [ 35 ] HAL SPARC64 (1995) superó la capacidad de reordenamiento del modelo ES/9000 900 al tener tres estaciones de reserva de 8 entradas para enteros, punto flotante y unidad de generación de direcciones , y una estación de reserva de 12 entradas para carga/almacenamiento, lo que permite un mayor reordenamiento del acceso a caché/memoria que los procesadores anteriores. Hasta 64 instrucciones pueden estar en un estado reordenado a la vez. [ 36 ] [ 37 ] Pentium Pro (1995) introdujo una estación de reserva unificada , que con una capacidad de 20 micro-OP permitía una reordenación muy flexible, respaldada por un búfer de reordenación de 40 entradas. Las cargas se pueden reordenar antes que las cargas y los almacenamientos. [ 38 ]

La tasa de ejecución por ciclo prácticamente alcanzable aumentó aún más cuando SGI / MIPS ( R10000 ) y HP PA-RISC ( PA-8000 ) adoptaron la ejecución fuera de orden completa en 1996. Ese mismo año, Cyrix 6x86 y AMD K5 introdujeron técnicas avanzadas de reordenamiento en las computadoras personales convencionales. Desde que DEC Alpha obtuvo la ejecución fuera de orden en 1998 ( Alpha 21264 ), los núcleos de procesador fuera de orden de mayor rendimiento no han sido igualados por los núcleos en orden, excepto HP / Intel Itanium 2 e IBM POWER6 , aunque este último tenía una unidad de punto flotante fuera de orden . [ 39 ] Los otros procesadores en orden de gama alta se quedaron muy atrás, a saber, Sun UltraSPARC III / IV y los mainframes de IBM que habían perdido la capacidad de ejecución fuera de orden por segunda vez, permaneciendo en orden hasta la generación z10 . Posteriormente, los grandes procesadores de ejecución secuencial se centraron en el rendimiento multihilo, pero finalmente las series SPARC T y Xeon Phi cambiaron a la ejecución fuera de orden en 2011 y 2016, respectivamente.

Casi todos los procesadores para teléfonos y otras aplicaciones de gama baja siguieron siendo de ejecución en orden hasta aproximadamente 2010. Primero, el Scorpion de Qualcomm (distancia de reordenamiento de 32) se envió en Snapdragon , [ 40 ] y un poco más tarde el A9 de Arm sucedió al A8 . Para las computadoras personales x86 de gama baja, la microarquitectura Bonnell de ejecución en orden en los primeros procesadores Intel Atom fue desafiada primero por la microarquitectura Bobcat de AMD , y en 2013 fue sucedida por una microarquitectura Silvermont de ejecución fuera de orden . [ 41 ] Debido a que la complejidad de la ejecución fuera de orden impide lograr el consumo de energía, el costo y el tamaño mínimos, la ejecución en orden sigue siendo predominante en microcontroladores y sistemas embebidos , así como en núcleos de clase de teléfono como el A55 y el A510 de Arm en configuraciones big.LITTLE .

Concepto básico

Fondo

La ejecución fuera de orden es más sofisticada que la ejecución en orden. En los procesadores con ejecución en orden segmentada, la ejecución de instrucciones se superpone de forma secuencial, requiriendo cada una varios ciclos de reloj para completarse. Como consecuencia, los resultados de una instrucción anterior se retrasan cuando se necesitan en la siguiente. La ejecución en orden también debe gestionar estas dependencias. Sin embargo, su enfoque es bastante simple: se detiene en cada paso. La ejecución fuera de orden utiliza técnicas de seguimiento de datos mucho más sofisticadas, como se describe a continuación.

Procesadores en orden

En los procesadores más antiguos, el procesamiento de instrucciones se realiza en un ciclo de instrucciones que normalmente consta de los siguientes pasos:

  1. Obtención de instrucciones .
  2. Si los operandos de entrada están disponibles (por ejemplo, en los registros del procesador), la instrucción se envía a la unidad funcional correspondiente . Si uno o más operandos no están disponibles durante el ciclo de reloj actual (generalmente porque deben obtenerse de la memoria ), el procesador se detiene hasta que estén disponibles.
  3. La instrucción es ejecutada por la unidad funcional correspondiente.
  4. La unidad funcional escribe los resultados de vuelta al archivo de registros .

A menudo, un procesador de ejecución en orden dispone de un vector de bits que registra en qué registros se escribirá mediante una tubería. [ 42 ] Si alguno de los operandos de entrada tiene activado el bit correspondiente en este vector, la instrucción se detiene. En esencia, el vector cumple una función muy simplificada de protección contra riesgos de registro. Por lo tanto, la ejecución fuera de orden utiliza matrices bidimensionales, mientras que la ejecución en orden utiliza un vector unidimensional para evitar riesgos.

Procesadores fuera de orden

Este nuevo paradigma divide el procesamiento de instrucciones en estos pasos: [ 43 ]

  1. Obtención de instrucciones.
  2. Decodificación de instrucciones.
  3. Cambio de nombre de la instrucción.
  4. Envío de instrucciones a una cola de instrucciones (también llamada búfer de instrucciones o estaciones de reserva ).
  5. La instrucción permanece en la cola hasta que sus operandos de entrada estén disponibles. La instrucción puede salir de la cola antes que las instrucciones más antiguas.
  6. La instrucción se emite a la unidad funcional correspondiente y es ejecutada por dicha unidad.
  7. Los resultados están en cola.
  8. Solo después de que todas las instrucciones anteriores hayan registrado sus resultados en el archivo de registro, este resultado se vuelve a registrar en dicho archivo. Esto se conoce como la etapa de graduación o de retiro.

El concepto clave del procesamiento fuera de orden consiste en permitir que el procesador evite una serie de bloqueos que se producen cuando no se dispone de los datos necesarios para realizar una operación. En el esquema anterior, el procesador evita el bloqueo que se produce en el paso 2 del procesamiento en orden cuando la instrucción no está completamente lista para ser procesada debido a la falta de datos.

Los procesadores de ejecución fuera de orden llenan estos espacios en el tiempo con otras instrucciones que están listas, luego reordenan los resultados al final para que parezca que las instrucciones se procesaron normalmente, registran y aplican el orden original del programa , o confirman en lotes ininterrumpibles donde el orden no causará corrupción de datos. La forma en que se ordenan las instrucciones en el código informático original se conoce como orden del programa ; en el procesador se manejan en orden de datos , el orden en que los datos están disponibles en los registros del procesador. Se necesita un circuito bastante complejo para convertir de un orden a otro y mantener un orden lógico de la salida.

La ventaja del procesamiento fuera de orden aumenta a medida que la tubería de instrucciones se profundiza y la diferencia de velocidad entre la memoria principal (o memoria caché ) y el procesador se amplía. En las máquinas modernas, el procesador funciona mucho más rápido que la memoria, por lo que, durante el tiempo que un procesador en orden pasa esperando la llegada de datos, teóricamente podría haber procesado una gran cantidad de instrucciones.

El desacoplamiento entre despacho y emisión permite la emisión fuera de orden.

Una de las diferencias que introduce el nuevo paradigma es la creación de colas que permiten desacoplar la etapa de despacho de la etapa de emisión y la etapa de graduación de la etapa de ejecución. Un nombre inicial para este paradigma fue arquitectura desacoplada . En los primeros procesadores en orden , estas etapas operaban de forma bastante sincronizada , en modo de segmentación.

En un procesador segmentado , las etapas de búsqueda y decodificación se separan de la etapa de ejecución mediante un búfer . El propósito del búfer es particionar el acceso a la memoria y ejecutar funciones en un programa informático, logrando un alto rendimiento al aprovechar el paralelismo de grano fino entre ambas. [ 44 ] De esta manera, oculta eficazmente toda la latencia de la memoria desde la perspectiva del procesador.

En teoría, un búfer de mayor tamaño puede aumentar el rendimiento. Sin embargo, si el procesador detecta un error de predicción de bifurcación , es posible que sea necesario vaciar todo el búfer, lo que supone un gran desperdicio de ciclos de reloj y reduce la eficacia. Además, los búferes de mayor tamaño generan más calor y ocupan más espacio en el chip . Por este motivo, los diseñadores de procesadores actuales prefieren un enfoque de diseño multihilo .

Generalmente se considera que las arquitecturas desacopladas no son útiles para la computación de propósito general, ya que no manejan bien el código con control intensivo. [ 45 ] El código con control intensivo incluye elementos como las bifurcaciones anidadas que ocurren con frecuencia en los núcleos de los sistemas operativos . Las arquitecturas desacopladas desempeñan un papel importante en la planificación en arquitecturas de palabras de instrucción muy largas (VLIW). [ 46 ]

El desacoplamiento de ejecución y escritura permite reiniciar el programa.

La cola de resultados es necesaria para resolver problemas como predicciones erróneas de bifurcaciones y excepciones. Permite reiniciar los programas tras una excepción y completar las instrucciones en el orden previsto. También permite descartar resultados debido a predicciones erróneas en instrucciones de bifurcación anteriores y excepciones en dichas instrucciones. La capacidad de ejecutar instrucciones más allá de bifurcaciones que aún no se han resuelto se conoce como ejecución especulativa .

Opciones microarquitectónicas

¿Las instrucciones se envían a una cola centralizada o a varias colas distribuidas?

Los procesadores IBM PowerPC utilizan colas distribuidas entre las distintas unidades funcionales, mientras que otros procesadores de ejecución fuera de orden utilizan una cola centralizada. IBM utiliza el término estaciones de reserva para referirse a sus colas distribuidas.

¿Existe una cola de resultados propiamente dicha o los resultados se escriben directamente en un archivo de registros? En este último caso, la función de cola se gestiona mediante mapas de registros que almacenan la información de cambio de nombre de los registros para cada instrucción en ejecución.

Los primeros procesadores Intel fuera de orden utilizan una cola de resultados llamada búfer de reordenamiento , [ a ] mientras que la mayoría de los procesadores fuera de orden posteriores utilizan mapas de registros. [ b ]

Véase también

Notas

  1. Los microprocesadores de la familia Intel P6 cuentan con un búfer de reordenamiento (ROB) y una tabla de alias de registros (RAT). El ROB se implementó principalmente para la recuperación de predicciones erróneas de bifurcación. La familia Intel P6 se ​​encuentra entre los primeros microprocesadores con ejecución fuera de orden, pero fue reemplazada por la arquitectura NetBurst . Años después, NetBurst resultó ser un callejón sin salida debido a su larga tubería, que suponía la posibilidad de frecuencias de operación mucho más altas. Los materiales no pudieron cumplir con los ambiciosos objetivos de reloj del diseño debido a problemas térmicos, y los diseños posteriores basados ​​en NetBurst, como Tejas y Jayhawk, fueron cancelados. Intel volvió al diseño P6 como base de lasmicroarquitecturas Core y Nehalem .
  2. Las microarquitecturas posteriores Sandy Bridge , Ivy Bridge y Haswell se apartan de las técnicas de reordenamiento utilizadas en P6 y emplean técnicas de reordenamiento de EV6 y P4 , pero con una tubería algo más corta. [ 47 ] [ 48 ]

Referencias

  1. Kukunas, Jim (2015). Potencia y rendimiento: análisis y optimización de software . Morgan Kaufman. pág.  37. ISBN 9780128008140.
  2. "Ejecución fuera de orden" (PDF) . cs.washington.edu . 2006. Consultado el 17 de enero de 2014. No espere a que se ejecuten las instrucciones anteriores si esta instrucción no depende de ellas .
  3. "La celebración del centenario" . Regis High School . 14 de marzo de 2011. Consultado el 25 de junio de 2022. El algoritmo "permite que las instrucciones secuenciales que normalmente se detendrían debido a ciertas dependencias se ejecuten de forma no secuencial" (también conocida como ejecución fuera de orden).
  4. Kozierok, Charles M. (17 de abril de 2001). "Ejecución fuera de orden" . The PC Guide. Archivado del original el 18 de febrero de 2019. Consultado el 17 de enero de 2014. Esta flexibilidad mejora el rendimiento, ya que permite la ejecución con menos tiempo de espera.
  5. Thornton (1970 , pág. 125) 
  6. Thornton (1970 , pág. 126) 
  7. Thornton 1970 , pág. 127 
  8. Thornton 1970 , págs. 112, 123 
  9. Tomasulo, Robert Marco (1967), "Un algoritmo eficiente para explotar múltiples unidades aritméticas" (PDF) , IBM Journal of Research and Development , 11 (1): 25–33 , CiteSeerX 10.1.1.639.7540 , doi : 10.1147/rd.111.0025 , S2CID 8445049 , archivado del original (PDF) el 12 de junio de 2018  
  10. 1 2 Smith, James E. (julio de 1989). "Programación dinámica de instrucciones y el Astronautics ZS-1" (PDF) . Computer . 22 (7): 21– 35. doi : 10.1109/2.30730 . S2CID 329170 . 
  11. Thornton (1970 , págs. 48-50) 
  12. 1 2 3 Smith, James E. ; Pleszkun, Andrew R. (junio de 1985). "Implementación de interrupciones precisas en procesadores segmentados" . 12.ª ISCA .(Versión ampliada publicada en mayo de 1988 con el título " Implementación de interrupciones precisas en procesadores segmentados ").
  13. ^ Moudgill, maya; Vassiliadis, Stamatis (enero de 1996). "Sobre interrupciones precisas" . pag. 18. CiteSeerX 10.1.1.33.3304 . Archivado desde el original (pdf) el 13 de octubre de 2022.  
  14. Hwu, W.; Patt, Yale N. (1986). HPSm, una arquitectura de flujo de datos restringido de alto rendimiento con funcionalidad mínima . ACM . págs. 297–306 . ISBN  978-0-8186-0719-6. Consultado el 06-12-2013 .{{cite book}}: |work=ignorado ( ayuda )
  15. "Microprocesador RISC MC88100 - Manual del usuario, segunda edición" (PDF) . www.bitsavers.org .
  16. Smith, James E. (noviembre de 1984). "Arquitecturas informáticas de acceso/ejecución desacopladas" (PDF) . ACM Transactions on Computer Systems . 2 (4): 289– 308. doi : 10.1145/357401.357403 . S2CID 13903321 . 
  17. Smotherman, Mark. "Culler-7" . Universidad de Clemson .
  18. Grohoski, Gregory F. (enero de 1990). "Organización de la máquina del procesador IBM RISC System/6000" (PDF) . IBM Journal of Research and Development . 34 (1): 37– 58. doi : 10.1147/rd.341.0037 . Archivado del original (PDF) el 9 de enero de 2005.
  19. ^ Smith, James E .; Sohi, Gurindar S. (diciembre de 1995). "La microarquitectura de procesadores superescalares" (PDF) . Actas del IEEE . 83 (12): 1617. doi : 10.1109/5.476078 .
  20. Liptay, John S. (julio de 1992). «Diseño del procesador de gama alta del IBM Enterprise System/9000» (PDF) . IBM Journal of Research and Development . 36 (4): 713–731 . doi : 10.1147/rd.364.0713 . Archivado del original (PDF) el 17 de enero de 2005.
  21. Ziegler, Bart (7 de marzo de 1991). "Unisys presenta las computadoras centrales 'Top Gun'" . AP News .
  22. "El nuevo mainframe de Unisys deja atrás a Big Blue" . Bloomberg . 25 de marzo de 1991. El nuevo A19 se basa en técnicas "superescalares" de las computadoras científicas para ejecutar muchas instrucciones simultáneamente. El A19 puede superponer hasta 140 operaciones, más de 10 veces más que los mainframes convencionales.
  23. Ullah, Nasr; Holle, Matt (marzo de 1993). "La implementación de excepciones precisas en una arquitectura superescalar del MC88110" (pdf) . ACM SIGARCH Computer Architecture News . 21. Motorola Inc.: 15–25 . doi : 10.1145/152479.152482 . S2CID 7036627 . 
  24. Smotherman, Mark (29 de abril de 1994). "Descripción general del Motorola MC88110" .
  25. Diefendorff, Keith ; Allen, Michael (abril de 1992). "Organización del microprocesador RISC superescalar Motorola 88110" (PDF) . IEEE Micro . 12 (2): 40–63 . doi : 10.1109/40.127582 . S2CID 25668727. Archivado del original (PDF) el 21 de octubre de 2022. 
  26. Smotherman, Mark; Chawla, Shuchi; Cox, Stan; Malloy, Brian (diciembre de 1993). "Programación de instrucciones para el Motorola 88110" . Actas del 26.º Simposio Internacional Anual sobre Microarquitectura . págs. 257–262 . doi : 10.1109/MICRO.1993.282761 . ISBN  0-8186-5280-2. S2CID 52806289 . 
  27. "Resumen técnico del microprocesador RISC PowerPC 601" (PDF) . Consultado el 23 de octubre de 2022 .
  28. Moore, Charles R .; Becker, Michael C. et al. "El microprocesador PowerPC 601" . IEEE Micro . 13 (5). Septiembre de 1993.
  29. Diefendorff, Keith (agosto de 1993). "Microprocesador PowerPC 601" (PDF) . Hot Chips .
  30. Smith, James E. ; Weiss, Shlomo (junio de 1994). "PowerPC 601 y Alpha 21064: una historia de dos RISC" (PDF) . IEEE Computer . 27 (6): 46– 58. doi : 10.1109/2.294853 . S2CID 1114841 . 
  31. Sima, Dezsö (septiembre-octubre de 2000). "El espacio de diseño de las técnicas de renombramiento de registros" . IEEE Micro . 20 (5): 70–83 . CiteSeerX 10.1.1.387.6460 . doi : 10.1109/40.877952 . S2CID 11012472 .  
  32. Gwennap, Linley (28 de marzo de 1994). "NexGen entra en el mercado con el Nx586 de 66 MHz" (PDF) . Microprocessor Report . Archivado del original (PDF) el 2 de diciembre de 2021.
  33. Burgess, Brad; Ullah, Nasr; Van Overen, Peter; Ogden, Deene (junio de 1994). "El microprocesador PowerPC 603" . Communications of the ACM . 37 (6): 34– 42. doi : 10.1145/175208.175212 . S2CID 34385975 . 
  34. "Resumen técnico del microprocesador RISC PowerPC 603" (PDF) . Consultado el 27 de octubre de 2022 .
  35. Song, S. Peter; Denman, Marvin; Chang, Joe (octubre de 1994). "El microprocesador RISC PowerPC 604" (PDF) . IEEE Micro . 14 (5): 8. doi : 10.1109/MM.1994.363071 . S2CID 11603864 . 
  36. "SPARC64+: Procesador SPARC de 64 bits de segunda generación de HAL" (PDF) . Hot Chips .
  37. "Le Sparc64" . Instituto de Investigación en Ciencias de la Computación y Sistemas Aleatorios (en francés).
  38. Gwennap, Linley (16 de febrero de 1995). "El P6 de Intel utiliza un diseño superscalar desacoplado" (PDF) . Microprocessor Report .
  39. Le, Hung Q. et al. "Microarquitectura de IBM POWER6" (PDF) . IBM Journal of Research and Development . 51 (6). Noviembre de 2007.
  40. Mallia, Lou. "Núcleo de procesador y plataforma de alto rendimiento de Qualcomm para aplicaciones móviles" (PDF) . Archivado del original (PDF) el 29 de octubre de 2013.
  41. Anand Lal Shimpi (06-05-2013). "Se revela la arquitectura Silvermont de Intel: tomándose en serio el sector móvil" . AnandTech .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  42. "Dentro del modelo de CPU menor: Marcador" . 9 de junio de 2017. Consultado el 9 de enero de 2023 .
  43. González, Antonio; Latorre, Fernando; Magklis, Grigorios (2011). "Microarquitectura del procesador" . Conferencias de Síntesis sobre Arquitectura de Computadores . doi : 10.1007/978-3-031-01729-2 . ISBN 978-3-031-00601-2ISSN 1935-3235 
  44. Smith, JE (1984). "Arquitecturas informáticas de acceso/ejecución desacopladas". ACM Transactions on Computer Systems . 2 (4): 289– 308. CiteSeerX 10.1.1.127.4475 . doi : 10.1145/357401.357403 . S2CID 13903321 .  
  45. Kurian, L.; Hulina, PT; Coraor, LD (1994). "Efectos de la latencia de la memoria en arquitecturas desacopladas" (PDF) . IEEE Transactions on Computers . 43 (10): 1129– 1139. doi : 10.1109/12.324539 . S2CID 6913858. Archivado del original (PDF) el 12 de junio de 2018. 
  46. Dorojevets, MN; Oklobdzija, V. (1995). "Arquitectura desacoplada multihilo" . International Journal of High Speed ​​Computing . 7 (3): 465– 480. doi : 10.1142/S0129053395000257 .
  47. Kanter, David (25-09-2010). "Microarquitectura Sandy Bridge de Intel" .
  48. "El front-end de Haswell: Análisis de la arquitectura Haswell de Intel: Construyendo un nuevo PC y un nuevo Intel" . Archivado del original el 7 de octubre de 2012.
  • Thornton, James (1970). Diseño de una computadora: La Control Data 6600 (PDF) . ISBN 9780673059536.

Lecturas adicionales

  • Smith, James E.; Pleszkun, AR (junio de 1985). "Implementación de interrupciones precisas en procesadores segmentados". ACM SIGARCH Computer Architecture News . 13 (3): 36– 44. doi : 10.1145/327070.327125 .