La informática de instrucción explícitamente paralela ( EPIC ) es un término acuñado en 1997 por la alianza HP-Intel [1] para describir un paradigma informático 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 Intel y HP de la arquitectura Intel Itanium , [3] y HP afirmó más tarde que "EPIC" era simplemente un término antiguo para la arquitectura Itanium. [4] EPIC permite a los microprocesadores ejecutar instrucciones de software en paralelo mediante elcompilador , en lugar de complejo situ matriz de circuitos, para controlar la ejecución de instrucciones en paralelo. Esto tenía la intención de permitir un escalado de rendimiento simple sin recurrir a frecuencias de reloj más altas .
Raíces en VLIW
En 1989, los investigadores de HP reconocieron que las arquitecturas informáticas con conjuntos de instrucciones reducidos (RISC) estaban alcanzando un límite de una instrucción por ciclo . [ aclaración necesaria ] Comenzaron una investigación sobre una nueva arquitectura, más tarde llamada EPIC . [3] La base de la investigación fue VLIW , en el que se codifican múltiples operaciones en cada instrucción y luego se procesan mediante múltiples unidades de ejecución.
Uno de los objetivos de EPIC era trasladar la complejidad de la programación de instrucciones del hardware de la CPU al compilador de software , que puede realizar la programación de instrucciones de forma estática (con la ayuda de la información de retroalimentación de seguimiento). Esto elimina la necesidad de circuitos de programación complejos en la CPU, lo que libera espacio y energía para otras funciones, incluidos los recursos de ejecución adicionales. Un objetivo igualmente importante fue aprovechar aún más el paralelismo a nivel de instrucción ( ILP ) mediante el uso del compilador para encontrar y aprovechar oportunidades adicionales para la ejecución en paralelo .
VLIW (al menos las formas originales) tiene varias deficiencias que le impidieron convertirse en la corriente principal:
- Los conjuntos de instrucciones VLIW no son compatibles con versiones anteriores entre implementaciones. Cuando se construyen implementaciones más amplias (más unidades de ejecución ), el conjunto de instrucciones para las máquinas más amplias no es compatible con versiones anteriores y más estrechas.
- Las respuestas de carga de una jerarquía de memoria que incluye cachés de CPU y DRAM no tienen un retraso determinista. Esto dificulta la programación estática de las instrucciones de carga por parte del compilador.
La arquitectura EPIC evolucionó a partir de la arquitectura VLIW, pero retuvo muchos conceptos de la arquitectura superescalar .
Yendo más allá de VLIW
Las arquitecturas EPIC agregan varias características para sortear las deficiencias de VLIW:
- Cada grupo de múltiples instrucciones de software se denomina paquete . Cada uno de los paquetes tiene un bit de parada que indica si el paquete posterior depende de este conjunto de operaciones. Con esta capacidad, se pueden construir implementaciones futuras para emitir múltiples paquetes en paralelo. El compilador calcula la información de dependencia, por lo que el hardware no tiene que realizar una comprobación de dependencia de operandos.
- Una instrucción de captación previa de software se utiliza como un tipo de captación previa de datos. Esta captación previa aumenta las posibilidades de un acierto de caché para las cargas y puede indicar el grado de localidad temporal necesaria en varios niveles de la caché.
- Una instrucción de carga especulativa se usa para cargar datos de manera especulativa antes de que se sepa si se usarán (omitiendo las dependencias de control) o si se modificará antes de usarse (omitiendo las dependencias de datos).
- Una instrucción de carga de verificación ayuda a las cargas especulativas al verificar si una carga especulativa dependía de una tienda posterior y, por lo tanto, debe recargarse.
La arquitectura EPIC también incluye una bolsa de sorpresas de conceptos arquitectónicos para aumentar la ILP :
- La ejecución predefinida se usa para disminuir la ocurrencia de bifurcaciones y para aumentar la ejecución especulativa de instrucciones. En esta función, las condiciones de la rama se convierten en registros de predicado que se utilizan para eliminar los resultados de las instrucciones ejecutadas desde el lado de la rama que no se toma.
- Las excepciones retrasadas, utilizando un bit de 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ónicos muy grandes evitan la necesidad de cambiar el nombre del registro .
- Las instrucciones de bifurcación multidireccionales mejoran la predicción de bifurcaciones al combinar muchas bifurcaciones alternativas en un solo paquete.
La arquitectura de Itanium también agregó archivos de registro rotativos , una herramienta útil para la canalización de software, ya que evita tener que desenrollar y cambiar el nombre de los registros manualmente .
Otra investigación y desarrollo
Ha habido otras investigaciones sobre arquitecturas EPIC que no están directamente relacionadas con el desarrollo de la arquitectura Itanium:
- El proyecto IMPACT en la Universidad de Illinois en Urbana – Champaign , dirigido por Wen-mei Hwu , fue la fuente de mucha investigación influyente sobre este tema.
- La arquitectura PlayDoh 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 efectivos para aplicaciones Linux que se ejecutaban en servidores Itanium.
Ver también
Referencias
- ^ Schlansker y Rau (febrero de 2000). "EPIC: una arquitectura para procesadores en paralelo de nivel de instrucción" (PDF) . Laboratorios HP Palo Alto, HPL-1999-111 . Consultado el 8 de mayo de 2008 .
- ^ US 4847755
- ^ a b "Inventar Itanium: cómo HP Labs ayudó a crear la arquitectura de chips de próxima generación" . Laboratorios HP . Junio de 2001 . Consultado el 14 de diciembre de 2007 .
- ^ De Gelas, Johan (9 de noviembre de 2005). "Itanium - ¿Hay luz al final del túnel?" . AnandTech . 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 "