stringtranslate.com

Arquitectura de los ADPIC

VIAJES del procesador.

TRIPS era una arquitectura de microprocesador diseñada por un equipo de la Universidad de Texas en Austin en conjunto con IBM , Intel y Sun Microsystems . TRIPS utiliza una arquitectura de conjunto de instrucciones diseñada para dividirse fácilmente en grandes grupos de instrucciones (gráficos) que pueden ejecutarse en elementos de procesamiento independientes. El diseño recopila datos relacionados en los gráficos, intentando evitar costosas lecturas y escrituras de datos y manteniendo los datos en una memoria de alta velocidad cerca de los elementos de procesamiento. El prototipo de procesador TRIPS contiene 16 de estos elementos. Los ADPIC esperaban alcanzar 1 TFLOP en un solo procesador por artículo publicado entre 2003 y 2006. [1]

BORDE

TRIPS es un procesador basado en el concepto Explicit Data Graph Execution (EDGE). EDGE intenta superar ciertos obstáculos de rendimiento que han llegado a dominar los sistemas modernos. [2]

EDGE se basa en que el procesador sea capaz de comprender mejor el flujo de instrucciones que se le envía, no viéndolo como un flujo lineal de instrucciones individuales, sino como bloques de instrucciones relacionadas con una sola tarea utilizando datos aislados. EDGE intenta ejecutar todas estas instrucciones como un bloque, distribuyéndolas internamente junto con los datos que necesitan procesar. [3] Los compiladores examinan el código y encuentran bloques de código que comparten información de una manera específica. Luego, estos se ensamblan en "hiperbloques" compilados y se introducen en la CPU. Dado que el compilador garantiza que estos bloques tengan interdependencias específicas entre ellos, el procesador puede aislar el código en una única unidad funcional con su propia memoria local .

Por ejemplo, con un programa que suma dos números de la memoria y luego suma ese resultado a otro valor en la memoria, un procesador tradicional tendría que notar la dependencia y programar las instrucciones para que se ejecuten una tras otra, almacenando los resultados intermedios en los registros. . En un procesador EDGE, el compilador notaría las interdependencias entre los datos del código y compilaría estas instrucciones en un solo bloque. Luego, ese bloque se introduciría, junto con todos los datos que necesitaba para completar, en una única unidad funcional y su propio conjunto privado de registros. Esto garantiza que no se requiera recuperación de memoria adicional, además de mantener los registros físicamente cerca de la unidad funcional que necesita esos valores.

El código que no dependiera de estos datos intermedios se compilaría en hiperbloques separados. Por supuesto, es posible que un programa completo use los mismos datos, por lo que los compiladores también buscan casos en los que los datos se pasan a otro código y luego el bloque original los abandona efectivamente, lo cual es un patrón de acceso común. En este caso, el compilador seguirá produciendo dos hiperbloques separados, pero codificará explícitamente la transferencia de los datos en lugar de simplemente dejarlos almacenados en alguna ubicación de memoria compartida. Al hacerlo, el procesador puede "ver" estos eventos de comunicación y programarlos para que se ejecuten en el orden adecuado. El compilador reorganiza los bloques que tienen interdependencias considerables para distribuir las comunicaciones y evitar cuellos de botella en el transporte.

Esto aumentó considerablemente el aislamiento de las unidades funcionales individuales. Los procesadores EDGE tienen un paralelismo limitado por las capacidades del compilador, no por los sistemas en el chip. Mientras que los procesadores modernos están alcanzando un nivel de paralelismo de cuatro anchos, los diseños EDGE pueden ampliarse mucho más. También pueden escalar "más profundamente", entregando bloques de una unidad a otra en una cadena que está programada para reducir la contención debido a valores compartidos.

EXCURSIONES

La implementación del concepto EDGE de la Universidad de Texas en Austin es el procesador TRIPS , el sistema de procesamiento Tera-op, confiable e inteligentemente adaptable . Una CPU TRIPS se construye repitiendo una única unidad funcional básica tantas veces como sea necesario. El uso de hiperbloques que se cargan en masa en el diseño TRIPS permite ganancias espectaculares en la ejecución especulativa . Mientras que un diseño tradicional podría tener unos cientos de instrucciones para examinar para una posible programación en las unidades funcionales, el diseño TRIPS tiene miles, cientos de instrucciones por hiperbloque y cientos de hiperbloques en examen. Esto conduce a una utilización de la unidad funcional muy mejorada; Al escalar su rendimiento a un diseño superescalar típico de cuatro cuestiones, TRIPS puede procesar aproximadamente tres veces más instrucciones por ciclo.

Mientras que los diseños tradicionales utilizan unidades variables, lo que permite más paralelismo del que permitirían los programadores de cuatro anchos, TRIPS, para mantener todas las unidades activas, incluye todo tipo de instrucciones en el flujo de instrucciones. Como esto no suele ser el caso en la práctica, las CPU tradicionales suelen tener muchas unidades funcionales inactivas. En TRIPS, las unidades individuales son de propósito general, lo que permite que cualquier instrucción se ejecute en cualquier núcleo. Esto no sólo evita la necesidad de equilibrar cuidadosamente el número de diferentes tipos de núcleos, sino que también significa que se puede construir un diseño TRIPS con cualquier número de núcleos necesarios para alcanzar un requisito de rendimiento particular. Una CPU TRIPS de un solo núcleo, con un programador simplificado (o eliminado), ejecutará un conjunto de hiperbloques exactamente como uno con cientos de núcleos, sólo que más lento.

El rendimiento tampoco depende de los tipos de datos que se introducen, lo que significa que una CPU TRIPS ejecutará una variedad mucho más amplia de tareas con el mismo nivel de rendimiento. Por ejemplo, si una CPU tradicional recibe una gran carga de trabajo matemática, se atascará tan pronto como todas las unidades de punto flotante estén ocupadas, con las unidades de números enteros inactivas. Si se alimenta con un programa intensivo de datos, como un trabajo de base de datos, las unidades de punto flotante permanecerán inactivas mientras que las unidades de números enteros se atascarán. En una CPU TRIPS, cada unidad funcional contribuirá al rendimiento de cada tarea, porque cada tarea puede ejecutarse en cada unidad. Los diseñadores lo llaman "procesador polimórfico".

Al igual que TRIPS, los DSP obtienen rendimiento adicional al limitar las interdependencias de datos, pero a diferencia de TRIPS, lo hacen al permitir que solo se ejecute un flujo de trabajo muy limitado en ellos. TRIPS sería tan rápido como un DSP personalizado en estas cargas de trabajo, pero igualmente capaz de ejecutar otras cargas de trabajo al mismo tiempo. Aunque es probable que un procesador TRIPS no pueda usarse para reemplazar diseños altamente personalizados como las GPU en las tarjetas gráficas modernas , es posible que puedan reemplazar o superar en rendimiento a muchos chips de menor rendimiento como los que se usan para el procesamiento de medios.

La reducción del fichero de registro global también produce ganancias no evidentes. La incorporación de nuevos circuitos a los procesadores modernos ha significado que su tamaño general se haya mantenido más o menos igual incluso cuando pasan a tamaños de proceso más pequeños. Como resultado, la distancia relativa al archivo de registro ha aumentado y esto limita la posible velocidad del ciclo debido a retrasos en las comunicaciones. En EDGE, los datos son generalmente más locales o aislados en enlaces entre núcleos bien definidos, lo que elimina grandes retrasos "entre chips". Esto significa que los núcleos individuales pueden funcionar a velocidades más altas, limitados por el tiempo de señalización de rutas de datos mucho más cortas.

La combinación de estos dos efectos de cambios de diseño mejora enormemente el rendimiento del sistema. Sin embargo, a partir de 2008, las GPU de ATI y NVIDIA ya superaron la barrera de 1 teraflop (aunque para aplicaciones especializadas). En cuanto a las CPU tradicionales, una Mac Pro contemporánea (2007) que utiliza un Intel Xeon de 2 núcleos sólo puede realizar unos 5 GFLOP en aplicaciones individuales. [4]

En 2003, el equipo de TRIPS empezó a implementar un prototipo de chip. Cada chip tiene dos núcleos completos, cada uno con 16 unidades funcionales en una disposición de cuatro de ancho y cuatro de profundidad. En la implementación actual, el compilador construye "hiperbloques" de 128 instrucciones cada uno y permite que el sistema mantenga ocho bloques "en vuelo" al mismo tiempo, para un total de 1024 instrucciones por núcleo. El diseño básico puede incluir hasta 32 chips interconectados, acercándose a los 500 GFLOPS. [5]

Referencias

  1. ^ ADPIC: un billón de cálculos por segundo para 2012
  2. ^ Tutorial sobre ADPIC en ISCA 2005
  3. ^ Descripción técnica de los ADPIC
  4. ^ Puntuación de Mac Pro Geekbench
  5. ^ Sistema prototipo ADPIC