Computación de instrucciones explícitamente paralela
Computación de instrucciones explícitamente paralela (EPIC) es un término acuñado en 1997 por la alianza HP-Intel para describir un paradigma informático que los investigadores habían estado investigando desde principios de los años 1980.. 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, y HP afirmó más tarde que "EPIC" Era simplemente un término antiguo para la arquitectura Itanium. EPIC permite a los microprocesadores ejecutar instrucciones de software en paralelo utilizando el compilador, en lugar de complejos circuitos integrados, para controlar la ejecución de instrucciones en paralelo. Esto tenía como objetivo permitir un escalamiento simple del rendimiento sin recurrir a frecuencias de reloj más altas.
Raíces 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, más tarde llamada EPIC. 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 ayuda de información de seguimiento de retroalimentación). Esto elimina la necesidad de circuitos de programació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 explotar aún más el paralelismo a nivel de instrucción (ILP) mediante el uso del compilador para encontrar y explotar oportunidades adicionales para la ejecución paralela.
VLIW (al menos las formas originales) tiene varias deficiencias que le impidieron convertirse en algo común:
- Los conjuntos de instrucciones VLIW no son compatibles atrasados entre implementaciones. Cuando se construyen implementaciones más amplias (más unidades de ejecución), la instrucción establecida para las máquinas más amplias no es compatible con implementaciones más antiguas y más estrechas.
- Las respuestas de carga de una jerarquía de memoria que incluye caches CPU y DRAM no tienen un retraso determinista. Esto hace que la programación estática de instrucciones de carga por el compilador sea muy difícil.
La arquitectura EPIC evolucionó a partir de la arquitectura VLIW, pero conservó muchos conceptos de la arquitectura superescalar.
Más allá de VLIW
Las arquitecturasEPIC añaden varias características para solucionar las deficiencias de VLIW:
- Cada grupo de múltiples instrucciones de software se llama a paquete de paquetes. Cada uno de los paquetes tiene un poco de parada indicando si este conjunto de operaciones depende del paquete posterior. Con esta capacidad, se pueden construir implementaciones futuras para emitir múltiples paquetes en paralelo. La información de dependencia es calculada por el compilador, por lo que el hardware no tiene que realizar comprobaciones de dependencia.
- Una instrucción prefetch de software se utiliza como un tipo de prefetch de datos. Este prefetch aumenta las posibilidades de un golpe de caché para cargas, y puede indicar el grado de localidad temporal necesario en varios niveles de la caché.
- Una instrucción de carga especulativa se utiliza para cargar datos especulativamente antes de que se sepa si se utilizará (dependencias de control de bypassing), o si se modificará antes de que se utilice (dependencias de datos de bypassing).
- Una instrucción de carga de control ayuda a cargas especulativas comprobando si una carga especulativa dependía de una tienda posterior, y por lo tanto debe ser recargada.
La arquitectura EPIC también incluye una bolsa de sorpresas de conceptos arquitectónicos para aumentar el ILP:
- La ejecución predicada se utiliza para disminuir la ocurrencia de ramas y aumentar la ejecución especulativa de instrucciones. En esta característica, las condiciones de las ramas se convierten en registros predicados que se utilizan para matar resultados de instrucciones ejecutadas del lado de la rama que no se toma.
- Excepciones tardías, utilizando una cosa no dentro de los registros de propósito general, permiten la ejecución especulativa pasadas las posibles excepciones.
- Los archivos de registro arquitectónico muy grandes evitan la necesidad de renombrar registro.
- Las instrucciones de la rama multi-way mejoran la predicción de la rama combinando muchas ramas alternativas en un solo paquete.
La arquitectura 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, liderado por Wen-mei Hwu, fue la fuente de investigación muy influyente sobre este tema.
- El juego La arquitectura Doh de HP-labs fue otro importante proyecto de investigación.
- Gelato fue una comunidad de desarrollo de código abierto en la que investigadores académicos y comerciales trabajaron para desarrollar compiladores más eficaces para aplicaciones Linux en servidores Itanium.
Contenido relacionado
Historia de la cámara
Tubo de vacío
Señales de humo