La computación de instrucciones explícitamente paralelas ( EPIC ) es un término acuñado en 1997 por la alianza HP-Intel [ 1 ] para describir un paradigma de computación que los investigadores habían estado investigando desde principios de la década de 1980. [ 2 ] Este paradigma también se denomina arquitecturas de independencia . Fue la base para el desarrollo de la arquitectura Intel Itanium por parte de Intel y HP , [ 3 ] y HP afirmó posteriormente que "EPIC" era simplemente un término antiguo para la arquitectura Itanium. [ 4 ] EPIC permite que los microprocesadores ejecuten instrucciones de software en paralelo utilizando el compilador , en lugar de circuitos complejos en el chip , para controlar la ejecución de instrucciones paralelas. Esto tenía como objetivo permitir una simple escalabilidad del rendimiento sin recurrir a frecuencias de reloj más altas .
Orígenes en VLIW
En 1989, los investigadores de HP reconocieron que las arquitecturas de computadoras con conjunto de instrucciones reducido (RISC) estaban alcanzando un límite de una instrucción por ciclo . Comenzaron una investigación sobre una nueva arquitectura, posteriormente denominada EPIC . [ 3 ] La base de la investigación fue VLIW , en la que múltiples operaciones se codifican en cada instrucción y luego son procesadas por múltiples unidades de ejecución.
Uno de los objetivos de EPIC era trasladar la complejidad de la planificación de instrucciones del hardware de la CPU al compilador de software , que puede realizar dicha planificación de forma estática (con la ayuda de información de retroalimentación de trazas). Esto elimina la necesidad de circuitos de planificación complejos en la CPU, lo que libera espacio y energía para otras funciones, incluidos recursos de ejecución adicionales. Un objetivo igualmente importante era aprovechar aún más el paralelismo a nivel de instrucción ( ILP ) mediante el uso del compilador para encontrar y explotar oportunidades adicionales de ejecución paralela .
VLIW (al menos en sus formas originales) tiene varias deficiencias que impidieron que se popularizara:
- Los conjuntos de instrucciones VLIW no son compatibles con versiones anteriores entre implementaciones. Cuando se crean implementaciones más amplias (con más unidades de ejecución ), el conjunto de instrucciones para las máquinas más amplias no es compatible con versiones anteriores de implementaciones más limitadas.
- Las respuestas de carga de una jerarquía de memoria que incluye cachés de CPU y DRAM no presentan un retardo determinista, ya que el compilador no puede predecir de antemano en qué nivel de la jerarquía estará disponible un dato (más concretamente, cuándo faltarán datos en todas las cachés y será necesario obtenerlos de la memoria principal). Esto dificulta enormemente la planificación estática de las instrucciones de carga por parte del compilador.
La arquitectura EPIC evolucionó a partir de la arquitectura VLIW, pero conservó muchos conceptos de la arquitectura superescalar .
Más allá de VLIW
Las arquitecturas EPIC añaden varias características para sortear las deficiencias de VLIW:
- Cada grupo de instrucciones de software se denomina paquete . Cada paquete tiene un bit de parada que indica si el siguiente paquete depende de este conjunto de operaciones. Gracias a esta capacidad, las futuras implementaciones pueden ejecutar varios paquetes en paralelo. El compilador calcula la información de dependencia, por lo que el hardware no tiene que realizar comprobaciones de dependencia de operandos.
- La instrucción de precarga de software se utiliza como un tipo de precarga de datos. Esta precarga aumenta las probabilidades de acierto en la caché para las cargas y puede indicar el grado de localidad temporal necesario en los distintos niveles de la caché.
- Una instrucción de carga especulativa se utiliza para cargar datos de forma especulativa antes de saber si se utilizarán (evitando las dependencias de control) o si se modificarán antes de su uso (evitando las dependencias de datos).
- Una instrucción de verificación de carga ayuda a las cargas especulativas al comprobar si una carga especulativa dependía de un almacenamiento posterior y, por lo tanto, debe recargarse.
La arquitectura EPIC también incluye un conjunto heterogéneo de conceptos arquitectónicos para aumentar el ILP :
- La ejecución con predicados se utiliza para disminuir la frecuencia de bifurcaciones y aumentar la ejecución especulativa de instrucciones. En esta función, las condiciones de bifurcación se convierten en registros de predicados que se utilizan para anular los resultados de las instrucciones ejecutadas desde el lado de la bifurcación que no se toma.
- Las excepciones retardadas, mediante el uso de un bit de "no es nada" dentro de los registros de propósito general, permiten la ejecución especulativa más allá de las posibles excepciones.
- Los archivos de registro arquitectónico muy grandes evitan la necesidad de renombrar los registros .
- Las instrucciones de bifurcación multidireccional mejoran la predicción de bifurcaciones al combinar muchas bifurcaciones alternativas en un solo paquete.
La arquitectura Itanium también incorporó archivos de registro rotativos , una herramienta útil para la segmentación de software, ya que evita tener que desenrollar y renombrar los registros manualmente.
Otras investigaciones y desarrollo
Se han realizado otras investigaciones sobre arquitecturas EPIC que no están directamente vinculadas al desarrollo de la arquitectura Itanium:
- El proyecto IMPACT de la Universidad de Illinois en Urbana-Champaign , dirigido por Wen-mei Hwu , fue la fuente de muchas investigaciones influyentes sobre este tema.
- La arquitectura Play-Doh de HP-labs fue otro proyecto de investigación importante.
- Gelato era una comunidad de desarrollo de código abierto en la que investigadores académicos y comerciales trabajaban para desarrollar compiladores más eficaces para aplicaciones Linux que se ejecutaban en servidores Itanium.
Véase también
- Computadora con conjunto de instrucciones complejo (CISC)
- Computadora con conjunto de instrucciones reducido (RISC)
- Computadora con conjunto mínimo de instrucciones (MISC)
- Palabra de instrucción muy larga (VLIW)
- Computación sin conjunto de instrucciones
- Computadora con un conjunto de instrucciones
- Arquitectura de computadoras
- Superescalar
- Edición de amplia tirada
Referencias
- ↑ Schlansker y Rau (febrero de 2000). "EPIC: una arquitectura para procesadores paralelos a nivel de instrucción" (PDF) . HP Laboratories Palo Alto, HPL-1999-111 . Archivado del original (PDF) el 19 de mayo de 2022. Consultado el 8 de mayo de 2008 .
- ↑ US 4847755 , Morrison, Gordon E.; Brooks, Christopher B. y Gluck, Frederick G., "Método y aparato de procesamiento paralelo para aumentar el procesamiento mediante el procesamiento paralelo de instrucciones de bajo nivel con concurrencias naturales", publicado el 11 de julio de 1989, asignado a MCC Development Ltd.
- 1 2 "Inventando Itanium: Cómo HP Labs ayudó a crear la arquitectura de chips de próxima generación" . HP Labs . Junio de 2001. Archivado del original el 4 de marzo de 2012. Recuperado el 14 de diciembre de 2007 .
- ↑ De Gelas, Johan (9 de noviembre de 2005). "Itanium : ¿Hay luz al final del túnel?" . AnandTech . Archivado del original el 13 de enero de 2006. Consultado el 8 de mayo de 2008 .
Enlaces externos
- Antecedentes históricos de EPIC
- Mark Smotherman (2002) " Comprensión de las arquitecturas e implementaciones de EPIC "
- Procesamiento de instrucciones
- Informática con palabras de instrucción muy largas