EPIC (informática)

EPIC (informática)

EPIC (informática)

Procesamiento de instrucciones explícitamente en paralelo (del inglés EPIC: Explicitly Parallel Instruction Computing) es un paradigma de programación que comenzó a investigarse a principios de los años 80 y se convirtió en una patente estadounidense 4,847,755 (Gordon Morrison, et. al).[1] Este paradigma también se conoce como arquitecturas de Independencia. Fue utilizado por Intel y HP para el desarrollo de la arquitectura de Intel IA-64 y se ha implementado en la línea de procesadores de servidor Intel Itanium e Itanium 2. El objetivo de EPIC era aumentar la capacidad de los microprocesadores para ejecutar instrucciones de software en paralelo mediante el uso del compilador, en lugar de la compleja circuitería en cápsula (die), para identificar y aprovechar las oportunidades para la ejecución en paralelo. Esto permitiría escalar el rendimiento más rápidamente en los futuros diseños de procesadores, sin tener que recurrir a frecuencias de reloj cada vez más altas, las cuales se han convertido desde ese momento en una problemática importante debido a problemas de alimentación y refrigeración.

Contenido

Sus orígenes: VLIW

La ejecución fuera de orden y la ejecución especulativa se han utilizado con éxito durante muchos años para incrementar la ejecución en paralelo del código de software de los microprocesadores más comunes. Sin embargo, debido a la complejidad creciente que supone el escalamiento de estos enfoques, la industria de microprocesadores a mediados de los años 90 comenzó a reexaminar los conjuntos de instrucciones que codificaban explícitamente múltiples operaciones por instrucción. El fundamento de dicha investigación es VLIW (Very Long Instruction Word o palabra de instrucción muy larga), en el que se codifican múltiples operaciones en cada instrucción para procesarse después mediante unidades de ejecución múltiple.

Uno de los objetivos de esta estrategia es desplazar la complejidad de la programación de instrucciones desde el componente hardware, la CPU, al componente software, el compilador, que puede realizar la programación de instrucciones de forma estática (con la ayuda de la información de retroalimentación de rastros). Elimina así la necesidad de una circuitería de programación compleja en la CPU, lo que a su vez ahorra espacio y consumo eléctrico utilizable en otras funciones, incluidos recursos de ejecución adicionales. Otro objetivo igualmente importante es conseguir una mayor explotación del ILP (paralelismo en el nivel de instrucciones) mediante el uso del compilador para encontrar y explotar oportunidades adicionales para la ejecución en paralelo.

VLIW (al menos en su forma original) contaba con muchas desventajas que evitaron que se convirtiera en un estándar extendido:

  • Los conjuntos de instrucciones VLIW no permiten la compatibilidad con implementaciones anteriores. Cuando se construyen implementaciones más amplias (más unidades de ejecución), el conjunto de instrucciones para estas máquinas más amplias no es compatible con implementaciones más antiguas o más estrechas.
  • Las respuestas de carga desde una jerarquía de memoria que incluye cachés de CPU y DRAM no tienen un retardo determinístico. Esto convierte la programación estática de instrucciones de carga por parte del compilador en una tarea muy difícil.

Más allá de VLIW

Las arquitecturas EPIC añaden numerosas características para paliar las deficiencias de VLIW:

  • Cada grupo de instrucciones de software múltiples recibe el nombre de paquete (bundle en inglés). Cada uno de los paquetes contiene información que indica si algún paquete subsiguiente depende de este conjunto de operaciones. Con esta habilidad, se pueden construir implementaciones posteriores que envíen varios paquetes en paralelo. El compilador se encarga de calcular la información de dependencia de modo que libere al hardware de la tarea de ejecutar comprobaciones sobre la dependencia de operandos.
  • Se utiliza una instrucción de carga especulativa como un tipo de búsqueda anticipada de datos. Esta búsqueda anticipada aumenta las probabilidades de éxito de encontrar los datos requeridos en la caché primaria para las cargas normales.
  • Así mismo, una instrucción de carga de comprobación ayuda a las cargas especulativas mediante la comprobación de que una carga no depende de un almacenamiento anterior.

La arquitectura EPIC también incluye un cajón desastre de conceptos sobre arquitecturas para aumentar el ILP (paralelismo en el nivel de instrucciones):

  • Se utiliza la ejecución de saltos predicados para reducir el número de ocurrencias de los saltos y para incrementar la ejecución especulativa de instrucciones. Gracias esta característica, las condiciones de los saltos se convierten en registros de predicados que se utilizan para terminar los resultados de instrucciones ejecutadas desde la parte del salto que se desprecia.
  • Las excepciones retardadas (mediante el uso de un bit Not-A-Thing, Negación de algo, dentro de los registros de propósito general) también permiten una mayor ejecución especulativa incluso después de posibles excepciones.
  • El uso de archivos de registro de arquitectura muy amplios elimina la necesidad de renombrar los registros.
  • Instrucciones de salto de múltiples direcciones.

La arquitectura IA-64 añadió, asimismo, la rotación de registros: un concepto de procesamiento digital de señales útil para el despliegue de bucles y la segmentación de software.

Investigación y desarrollo en proceso

  • El proyecto del grupo IMPACT de la Universidad de Illinois en Urbana-Champaign dirigido por Wen-mei Hwu se ha convertido en la fuente de gran parte de la investigación de mayor repercusión llevada a cabo sobre este tema.
  • La arquitectura PlayDoh de los laboratorios HP es otro de los mayores proyectos de investigación.
  • Gelato.org es una comunidad de desarrollo de código abierto en la que investigadores comerciales y académicos trabajan para desarrollar compiladores más eficaces para las aplicaciones de Linux ejecutadas en servidores Itanium.

Véase también

Referencias

  1. Plantilla:Cite patent

Enlaces externos

Plantilla:CPU

Obtenido de "EPIC (inform%C3%A1tica)"

Wikimedia foundation. 2010.


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»