Arquitectura del conjunto de instrucciones
La computación con instrucciones explícitamente paralelas ( 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 los años 1980. [2] Este paradigma también se denomina arquitecturas Independence . 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 a los microprocesadores ejecutar instrucciones de software en paralelo mediante el uso del compilador , en lugar de circuitos complejos en la matriz , para controlar la ejecución de instrucciones en paralelo. Esto tenía como objetivo 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 de computadoras con conjunto de instrucciones reducido (RISC) estaban llegando a 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 la 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 desde el 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 trazas). 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 impiden convertirse en algo común:
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 agregan varias características para superar 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 subsiguiente depende de este conjunto de operaciones. Con esta capacidad, se pueden crear implementaciones futuras para emitir múltiples paquetes en paralelo. La información de dependencia la calcula el compilador, por lo que el hardware no tiene que realizar una comprobación de dependencia de operandos.
- Una instrucción de precarga de software se utiliza como un tipo de precarga de datos. Esta precarga aumenta las posibilidades de que se produzca un acierto en la caché para las 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án (evitando las dependencias de control) o si se modificarán antes de utilizarlos (evitando las dependencias de datos).
- Una instrucción de carga de verificación facilita las cargas especulativas al verificar si una carga especulativa dependía de un almacenamiento posterior y, por lo tanto, debe volver a cargarse.
La arquitectura EPIC también incluye una serie de conceptos arquitectónicos para aumentar el ILP :
- La ejecución con predicados se utiliza para reducir la ocurrencia 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 eliminar los resultados de las instrucciones ejecutadas del lado de la bifurcación que no se toma.
- Las excepciones retrasadas, que utilizan un bit "nada" dentro de los registros de propósito general, permiten la ejecución especulativa más allá de posibles excepciones.
- Los archivos de registros arquitectónicos muy grandes evitan la necesidad de cambiar el nombre de 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 de Itanium también agregó archivos de registros rotativos , una herramienta útil para la canalización de software ya que evita tener que desenrollar y renombrar registros manualmente.
Otras investigaciones y desarrollos
Se han realizado otras investigaciones sobre arquitecturas EPIC que no están directamente relacionadas con el 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 PlayDoh de HP-labs fue otro importante proyecto de investigación.
- 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.
Véase también
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 . 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 en todo momento mediante el procesamiento paralelo de instrucciones de bajo nivel que tienen concurrencias naturales", publicado el 11 de julio de 1989, asignado a MCC Development Ltd.
- ^ ab "Inventing Itanium: How HP Labs Helped Create the Next-Generation Chip Architecture" (Inventando Itanium: cómo los laboratorios de HP ayudaron a crear la arquitectura de chips de próxima generación). HP Labs . Junio de 2001. Archivado desde el original el 4 de marzo de 2012. 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"