Convocatoria de ayudas de Proyectos de Investigación MEMORIA TÉCNICA PARA PROYECTOS DE LA CONVOCATORIA DE I+D TIPO A ó B 1 RESUMEN DE LA PROPUESTA (Debe rellenarse también en inglés) INVESTIGADOR PRINCIPAL: Antonio González Colás TITULO DEL PROYECTO: Microarquitectura y Compiladores para Futuros Procesadores RESUMEN (debe ser breve y preciso, exponiendo sólo los aspectos más relevantes y los objetivos propuestos): El principal objetivo de este proyecto es investigar el diseño de los procesadores de la próxima década teniendo en cuenta los condicionantes de la tecnología que se estima viable para estos próximos años. Hasta hace pocos años el rendimiento de los procesadores venía determinado principalmente por dos factores: los avances tecnológicos en su fabricación y el uso de nuevas y más eficientes propuestas arquitectónicas y de compilación. Recientemente se están abordando nuevos retos como por ejemplo: el alto consumo, la disipación de calor, el retardo de las interconexiones, la complejidad del diseño y el limitado paralelismo a nivel de instrucción. En este proyecto vamos a considerar la influencia de estos aspectos en la investigación de los futuros procesadores. En concreto, abordaremos siete áreas que consideramos fundamentales: (i) la reducción del consumo y control de temperatura; (ii) la explotación de paralelismo especulativo a nivel de thread; (iii) el diseño de microarquitecturas clusterizadas; (iv) la implementación eficiente de extensiones en el ISA de procesadores fuera de orden; (v) la implementación eficiente de máquinas virtuales co-diseñadas; (vi) el estudio de nuevas técnicas para el diseño del banco de registros y de las caches para tolerar la creciente brecha entre las velocidades del procesador y de la memoria; y (vii) el diseño eficiente de circuitos en presencia de variaciones imprevistas en sus parámetros de funcionamiento. PROJECT TITLE: Microarquitecture and Compilers for Future Processors SUMMARY: The main objective in this project is to research the design of next decade processors considering the requirements of the technology which is estimated to be feasible for the next years. Till recently, processor performance was mainly determined by two factors: technological advances in microprocessor manufacturing and the use of new and more efficient microarchitectural and compiler techniques. Now, new challenges are approached, for instance: high power consumption, heat dissipation, wire delays, design complexity, and the limited instruction-level parallelism. In this project we are going to address the influence of these issues in the research of future processors. Specifically, we will focus on seven areas which we consider to be fundamental: (i) the reduction in power consumption and better approaches for heat dissipation; (ii) the exploitation of thread-level speculative parallelism; (iii) the design of clustered microarchitectures; (iv) the efficient implementation of ISA extensions for out-of-order processors; (v) the efficient implementation of co-designed virtual machines; (vi) the study of new techniques in the register file and cache memory design to tolerate the increasing gap between processor and memory speeds; and (vii) the efficient circuit design in the face of unexpected variations of their working parameters. 1 2. INTRODUCCIÓN Con el constante avance en los niveles de integración, los procesadores del futuro dispondrán de miles de millones de minúsculos transistores [SIA97]. Ante esta perspectiva, una importante cuestión que se plantea la comunidad científica es cómo deben ser los procesadores para hacer un uso eficiente de esta tecnología. La finalidad principal de este proyecto, así como la del grupo de investigación ARCO en su conjunto, es investigar en el diseño arquitectónico de los futuros procesadores teniendo en cuenta especialmente los nuevos aspectos tecnológicos que lo van a condicionar, tanto en el campo de los procesadores de alto rendimiento como en los destinados a la electrónica de consumo. Como es bien conocido, las mejoras de rendimiento obtenidas en sucesivas generaciones de procesadores se deben principalmente a dos factores: los avances tecnológicos en la implementación de procesadores, y el empleo de nuevas y más eficientes técnicas arquitectónicas y de compilación. Entre los avances tecnológicos cabe destacar el incremento de la frecuencia de los procesadores así como el paulatino aumento de la escala de integración, con el consiguiente crecimiento del número de transistores por chip. Hasta ahora, la mayor disponibilidad de transistores ha potenciado el aumento del tamaño de diversos componentes del procesador con el objeto de obtener mayor rendimiento y también ha servido para incorporar al diseño múltiples nuevos elementos arquitectónicos. Todas las previsiones apuntan que en los próximos 10 años vamos a seguir viendo una reducción del tamaño de los componentes de un procesador en un factor aproximado de un 30% cada dos años [SIA97]. Sin embargo, también es previsible que los avances tecnológicos condicionaran cada vez más la validez de las soluciones arquitectónicas, y soluciones que antes eran válidas no lo sean para futuras tecnologías. Así por ejemplo, una parte importante de los recursos del procesador se han venido empleando en estructuras que permiten explotar el paralelismo a nivel de instrucción, permitiendo la ejecución fuera de orden de múltiples instrucciones a la vez. Sin embargo, diversos estudios han mostrado que esta arquitectura no escala bien con un simple crecimiento de la ventana de instrucciones y del ancho de búsqueda y de emisión de instrucciones, pues cada vez se requieren mayores aumentos de complejidad para obtener mejoras de rendimiento más exiguas. En conclusión, se necesitan nuevos paradigmas arquitectónicos que hagan un mejor uso de los transistores para permitir mejorar el rendimiento. Uno de los condicionantes tecnológicos con mayor impacto en el diseño arquitectónico es el aumento del consumo de energía provocado por el mayor número de transistores, la mayor frecuencia de conmutación y la disminución de la tensión umbral. Además, con la creciente miniaturización de los transistores ha aumentado también la densidad de consumo, lo cual se traduce en un aumento de la temperatura del procesador. Este aumento puede llegar incluso a causar fallos irrecuperables en el funcionamiento del procesador. Otro importante problema tecnológico para las futuras generaciones de procesadores es el de los retardos en las interconexiones [Boh95]. Mover un dato desde un extremo a otro del chip no puede hacerse ya en un solo ciclo de reloj. Mientras que la progresiva miniaturización de los transistores viene acompañada de una reducción en el tiempo de conmutación, el retardo de las conexiones por unidad de longitud apenas disminuye. Es decir, que la latencia de las comunicaciones va a aumentar progresivamente, en relación al retardo de la lógica. Así, los retardos de las conexiones van a suponer un porcentaje creciente del retardo total en estructuras de memoria tales como bancos de registros, tablas, búffers, caches, etc., Puesto que este retardo no disminuye al mismo ritmo que el de los transistores, la latencia en ciclos de estos componentes tiende a aumentar progresivamente. Por último, con la progresiva miniaturización, las limitaciones en el proceso de fabricación introducen un mayor indeterminismo en la geometría de los transistores, y por tanto en su comportamiento. Además, el voltaje, la temperatura, y el tamaño de los datos de entrada de un circuito oscilan, causando cambios dinámicos en la latencia y el consumo. Para garantizar el funcionamiento correcto ante esta variabilidad, las estrategias convencionales de diseño para el caso peor resultan ineficientes. A partir de este conjunto de condicionantes que sabemos van a afectar a las futuras generaciones de procesadores, en este proyecto nos planteamos el desarrollo de soluciones que permitan mantener el constante crecimiento de las prestaciones de los procesadores. Concretamente, este proyecto aborda algunos de los temas que consideramos van a ser fundamentales en el diseño de los procesadores de la próxima década: el diseño de arquitecturas de bajo consumo y sensibles a la temperatura; el diseño de arquitecturas capaces de reducir el tiempo de ejecución de un proceso mediante threads especulativos; el diseño de arquitecturas clusterizadas capaces de tolerar los crecientes retardos de las conexiones; extensiones en el conjunto de instrucciones de la arquitectura para mejorar el rendimiento de procesadores con planificación dinámica; técnicas microarquitectónicas para mejorar el rendimiento del banco de registros y de la memoria cache ante los crecientes retardos de las conexiones y la siempre creciente diferencia de velocidades entre CPU y memoria; técnicas de diseño de circuitos que exploten la variabilidad; y técnicas mixtas de hardware y software para el diseño de un sistema eficiente con una máquina virtual co-diseñada. A continuación pasamos a describir cuales son los objetivos principales de cada uno de estos temas así como su estado del arte. 2 Reducción del consumo y control de la temperatura Uno de los elementos clave en estos futuros procesadores es el control del consumo y la temperatura [Bor99]. Las altas frecuencias a las que operaran dichos procesadores no se verán acompañadas por una reducción del voltaje acorde para mantener controlado el consumo. Por lo tanto se deberán incorporar mecanismos que controlen la energía disipada así como la temperatura. Estos mecanismos serán más o menos agresivos en función del segmento de mercado al que vayan dirigidos (servidores, sobremesa o portátiles). El consumo de energía de un procesador se divide en dos grandes factores: el consumo dinámico y el consumo estático. El consumo dinámico depende de la tecnología empleada, la frecuencia del procesador, la actividad del mismo y el voltaje de alimentación. Las mejoras en la capacidad de integración hacen que el tamaño del transistor, y por lo tanto la potencia disipada cuando conmuta, sean cada vez más pequeños, pero por otro lado, el creciente número de transistores por chip y el constante aumento de la frecuencia del procesador hace que el consumo dinámico de energía se esté incrementando en cada nueva generación de procesadores [DB00]. El consumo estático de potencia tiene su componente más importante en el producido por las corrientes de fuga (leakage power). Hasta ahora, este tipo de consumo apenas repercutía en el consumo total del procesador. Sin embargo, el consumo estático tiene una relación exponencial con la tensión umbral (threshold voltage). Para reducir el consumo dinámico, el voltaje de alimentación disminuye de una generación a la siguiente. Para poder mantener/subir la frecuencia del procesador, la tensión umbral tiene que disminuir también, y eso hace que aumente el consumo de potencia estático exponencialmente. El consumo estático se prevé que represente alrededor del 50% del consumo total en próximas generaciones (menos de una década) [Bor99][DB00]. Finalmente la densidad de consumo se incrementa en cada nueva generación de procesadores debido al incremento de frecuencia y de corrientes de fugas principalmente. La densidad de consumo se traduce directamente en calor, y dicho calor se ha de eliminar (disipar) de alguna manera del procesador. De hecho el coste de disipar el calor emitido por el procesador está aumentando en la misma proporción que la densidad de consumo. Se estima que, a partir de 40W, el coste para disipar 1 vatio está entre 1 y 3 dólares [GBC+01] . Un incremento drástico de la temperatura en un área concreta del procesador puede provocar un fallo transitorio o incluso un error irrecuperable. Además, el consumo estático debido a las corrientes de fuga tiene una relación exponencial con la temperatura, por lo tanto, un incremento de la temperatura conlleva un incremento de consumo, lo que incrementa a su vez la temperatura, resultando en un peligroso ciclo de retroalimentación. En la actualidad, las técnicas que tratan de reducir el consumo dinámico se centran en reducir la actividad del procesador cuando no se requiere la máxima potencia, o deshabilitar unidades que no se usan, o cambiar dinámicamente la frecuencia y el voltaje del procesador en función de los requerimientos del procesador [PKG00][CG01][CGS00][SAD+02]. Para reducir el consumo estático las técnicas propuestas se basan en apagar complemente ciertas zonas de la cache de datos o instrucciones (con la consecuente pérdida de la información almacenada), o implementar circuitos con diferentes velocidades y diferentes tensiones umbral [FKM+00][KC00][KMN+01]. El campo de reducción de la temperatura es novedoso, y las técnicas propuestas hasta ahora se centran en la reducción del número de veces que se detecta una emergencia térmica en el procesador. Cada vez que esto ocurre, se pasa control al sistema operativo el cual para el procesador completamente –o reducen su frecuencia (velocidad)- hasta que se enfría, incurriendo en una penalización importante. Las técnicas propuestas tratan de evitar que esto ocurra a través de un control estricto de la actividad del procesador cuando éste se encuentra cerca de la temperatura límite [HB04][SAS02][SSH+03]. El grupo ya ha realizado trabajos previos en la utilización de compresión de datos para la reducción de consumo [CG00] [CG01] [CGS00] [CGS04] y también una primera evaluación de arquitecturas multi-núcleo [MCG06]. Procesadores multithreaded especulativo Cada vez más, los beneficios obtenidos por el mero hecho de aumentar la frecuencia y la complejidad de los procesadores superescalares actuales están siendo más bajos. Esto ha llevado ha varios fabricantes de procesadores a iniciar un proceso de búsqueda en nuevos paradigmas como los procesadores multinúcleo. Este tipo de arquitectura en donde varios núcleos están integrados en un mismo chip, puede beneficiar claramente a aplicaciones paralelas donde el paralelismo a nivel de thread es explícito. Sin embargo, no se espera grandes beneficios para aplicaciones secuenciales ya que al no tener este paralelismo explícito quedarán limitadas a ejecutarse en un único núcleo. El multithreading especulativo fue propuesto hace varios años como un paradigma capaz de aumentar el rendimiento de este tipo de procesadores multinúcleo para aplicaciones secuenciales. En un procesador multithreaded especulativo, diferentes trozos de una aplicación secuencial son ejecutados en paralelo de forma concurrente. Los elementos más importantes de este paradigma son fundamentalmente 1) el particionado efectivo del código y el uso de técnicas de 3 especulación para reducir el coste de las dependencias de control y de datos que haya entre los threads y 2) mecanismos para una correcta recuperación del estado arquitectónico en caso de fallos de especulación. Durante los últimos años, el multithreading especulativo ha sido un área de investigación bastante activa. Algunos de los trabajos más significativos hechos en esta área son el Multiscalar propuesto por la Universidad de Wisconsin[SBV95], el SpMT propuesto en la UPC[MG99][GMS+05], el proyecto Stampede en CMU[SCZ+02] y el proyecto I-ACOMA en la Universidad de Illinois[CMT00]. Nuestra investigación se va a centrar en extender el estado del arte en esta área proponiendo nuevos diseños y soluciones a diferentes problemas que afectan a este tipo de arquitecturas, como el particionado de código, la gestión de las dependencias de datos entre los threads concurrentes, que puede ayudar a este paradigma a ser una solución viable para futuros procesadores. Procesadores clusterizados El aumento del número de transistores y de la frecuencia del procesador provoca que las señales de reloj no puedan alcanzar todos los puntos del chip en un ciclo. Así futuras tecnologías tendrán latencias cada vez más altas con relación al número de puertas lógicas. Además el consumo de energía se está convirtiendo en una restricción de primer orden [AHK00]. Para solucionar estos problemas se adopta el diseño en clustering, esto es, el procesador se divide en subunidades (los clusters) que trabajan de forma autónoma. El menor tamaño de los clusters permite que las señales los crucen en un ciclo. Además disminuye la complejidad de diseño y se mejora la eficiencia energética del diseño [ZK01]. Por contra, aparece una nueva dificultad: el procesador tiene que distribuir la carga de trabajo entre todos los clusters para aprovechar al máximo el potencial de cálculo y a menudo es necesario comunicar valores entre los diferentes clusters. A tal efecto, es necesaria una red de interconexión de clusters que tiene una latencia mayor. Además, el ancho de banda es limitado. Varias arquitecturas cluster superescalares han sido propuestas. Se pueden clasificar por su manera de asignar instrucciones a clusters. Algunas usan dependencias de control (y podrían ser clasificadas alternativamente como especulativas de múltiples hilos) [SBV95] [RJS97], otras están basadas en dependencias de datos. El último grupo se puede clasificar también por el momento en el que se asignan las instrucciones a los clusters. Un primer grupo depende del compilador para este trabajo (antes de que se ejecute el programa) [NSB01] [FCJ97], mientras un segundo grupo asigna instrucciones dinámicamente usando hardware durante la ejecución del programa [KF96] [PJS97] [K99] [ZK01] [KS02] [BDA03]. La unidad de memoria ha recibido especial atención de la literatura porque es una de las unidades más complejas y de las que más energía consume en un procesador superescalar. La mayoría de la investigación se concentra especialmente en la unidad de desambiguación y la cache de datos de primer nivel. Algunas propuestas también incluyen un predictor [YMR+99] para encontrar un mapeo de instrucciones a clusters que minimice las latencias de comunicación [ZK01] [RP03] [B04] mientras otras propuestas no lo incluyen [FS96] [SNM+06]. Por lo que respecta a las arquitecturas VLIW, los trabajos se centran en la etapa de generación de código del compilador que se encarga de distribuir las instrucciones entre los clusters, planificar las instrucciones y las comunicaciones necesarias y asignar registros. Encontramos varias propuestas que se pueden dividir por el orden de ejecución de las tres tareas mencionadas. Algunas propuestas realizan las tareas de forma independiente [E86] [CDN92] [D98] [JCSK98] [NE98] [CFM03]; otras proponen la unificación de las dos primeras tareas [OBC98] [SG00a] [LPSA02], y más recientemente algunos grupos han propuesto técnicas para unificar las tres tareas [KEA01] [CSG01] [ACSG01] [ZLAV01] [ACS+02]. Paralelamente, se han estudiado técnicas para mejorar la asignación de registros [ACGK05] y para reducir el impacto de las comunicaciones mediante replicación de código [SG00a][ACGK03a]. Por otra parte, trabajos recientes proponen alternativas para la distribución de la jerarquía de memoria en una arquitectura cluster [WTS+97] [SG00b] [GSG02a], así como técnicas para la generación de código para estas nuevas organizaciones [GSG02b] [GSG03a] [GSG03b]. Extensiones del ISA en procesadores de planificación dinámica El objetivo de la planificación de instrucciones es obtener el máximo grado de paralelismo para poder maximizar el uso de recursos del procesador y minimizar el tiempo de ejecución. Durante proceso de planificación estática, el compilador dispone de toda la información contenida en el programa permitiendo extraer paralelismo de diversa granularidad. Sin embargo, cierta información es únicamente accesible en tiempo de ejecución, limitando la extracción de paralelismo por parte del compilador. Para superar dichas limitaciones, se han introducido extensiones en el conjunto de instructiones de la arquitectura (ISA) para desarrollar técnicas que mejoran el rendimiento y la adaptabilidad al entorno de ejecución: predicación, ventanas de registos, etc. Dichas extensiones no introducen cambios semánticos en la ejecución final del programa. Este tipo de extensiones se encuentran principalmente en procesadores en orden[MD03][HL99]. Sin embargo, estas técnicas pueden también ser complementadas con técnicas de planificación dinámica para obtener un mayor paralelismo en diversos grados de granularidad. 4 If-conversion[JK83] es una técnica de compilación que aprovecha al máximo la predicación. If-conversion se ha mostrado como una técnica eficiente en procesadores fuera-de-orden para reducir las severas penalizaciones de rendimiento causadas por fallos en la predicción de saltos[MBG+94][CHPC95][AHM97]. Son varios los grupos que han investigado técnicas que permiten la ejecución de código predicado en procesadores fuera-de-orden: generación de micro-operaciones para la desambiguación de multiples definiciones[WWK+01], prediccion del valor del predicado[CC03][QPG06] o la introducción de nuevas extensiones en la ISA[KMSP05]. Otro problema asociado a if-conversion es la perdida de información de correlacion, necesaria para la implementacion de ciertos predictores de saltos[ACGH97]. Se han realizado varias propuestas que permiten recuperar la información de correlación perdida mediante la inserción de información de predicación en las estructuras del predictor[ACGH97][SCF03][QPG07]. Las ventanas de registros[Sit79] son el conjuntos de registros logicos privados accesibles por cada función. El paso de parametros de una función a otra se realiza mediante el solapamiento de ventanas[MD03][HL99]. Cuando el número de registros lógicos libres en un procesador son insuficientes para una nueva ventana, es necesario activar un mecanismo de spill que guarde los valores vivos de funciones previas. Mediante las ventanas de registros se puede dar al procesador la ilusión de tener un número ilimitado de registros físicos[DM82][HL91][ND95][OBMR05]. Jerarquía de memoria y arquitectura del banco de registros La innovación y las mejoras tecnológicas en el diseño de los procesadores de los últimos diez años han sobrepasado los avances en el diseño del sistema de memoria. Por lo tanto, la cada vez más grande diferencia de velocidades de procesador y memoria, ha motivado que, los actuales procesadores de alto rendimiento se centren en el banco de registros y las organizaciones cache para tolerar las altas latencias de memoria [BGK96], [BKG95], [SD95], [SPN96]. Tanto el banco de registros como las memorias cache solventan en parte esta diferencia de velocidades, pero a cambio introducen un aumento de área del procesador, un incremento del consumo energético y una mayor demanda de ancho de banda de memoria, de manera que pueden llegar a limitar el rendimiento del procesador. Las actuales tendencias en el diseño de procesadores conducen a suponer que el tiempo de acceso a un banco de registros será significativamente mayor que otras operaciones, tales como sumas. Todo ello implica que difícilmente se podrán leer los datos del banco de registros en un único ciclo de reloj como se hace actualmente. Estos diseños aceptan que la latencia del banco de registros sea superior a 1 ciclo, asumiendo que habrá una pérdida de rendimiento pero obteniendo una mejora en el consumo disipado por el procesador [BDA01], [BS03] [MGV99], [STR02]. Por otro lado, los diseños actuales de organizaciones cache intentan obtener un compromiso entre coste y rendimiento [BM99], [PSR00], [YZG00], [ZYG00]. Para altos volúmenes de producción, el coste puede ser asociado al área, por lo tanto una manera de reducir el coste es reducir los requerimientos de área. Además el consumo disipado por el procesador comienza a ser un aspecto crítico en los microprocesadores ya que determina el coste del sistema de refrigeración y en última instancia puede limitar el rendimiento del procesador. La finalidad de este trabajo será proponer diferentes técnicas microarquitectónicas que puedan ser aplicadas en diversos componentes de los diseños de procesadores actuales para mejorar la jerarquía de memoria y para acelerar la ejecución de las instrucciones. Algunas de estas técnicas intentarán reducir la diferencia de velocidad existente entre el procesador y la memoria, mientras que otras intentarán aliviar la serialización que causan las dependencias de datos. Arquitecturas tolerantes a variaciones Debido a las variaciones en las tecnologías actuales y futuras, el comportamiento de los circuitos ha dejado de ser determinista. Las limitaciones del proceso de fabricación introducen indeterminismo en la geometría de los transistores (longitud, anchura y grosor), y por tanto, en su comportamiento. Además, el voltaje y la temperatura oscilan, y los datos de entrada de los circuitos cambian constantemente. En consecuencia, la latencia y el consumo de los circuitos cambia dinámicamente. En este escenario tan variable debe garantizarse que los circuitos funcionan siempre. Esto se suele hacer asumiendo por defecto el peor escenario posible, pero eso es ser pesimista la mayor parte del tiempo, y por tanto, ineficiente en rendimiento y consumo. El objetivo de nuestra investigación es encontrar soluciones para aumentar la eficiencia de los circuitos en presencia de variaciones. Los frutos serán un conjunto de estrategias, técnicas y diseños de circuitos para mejorar el rendimiento y consumo de dichos circuitos adaptando su funcionamiento al caso habitual en vez de asumir siempre el caso peor. Hasta ahora se han propuesto algunos trabajos para considerar las variaciones. TIMERRTOL [Uht00] y Razor [EKD+03] explotan las variaciones asumiendo la latencia habitual para usar los resultados pronto y comprobando la corrección de dicha acción después de la latencia del caso peor. Las variaciones en los datos de entrada también se han explotado detectando los valores pequeños [BM99], que se pueden operar con latencias más cortas. 5 Los grupos principales en el área de la arquitecturas tolerantes a variaciones son el Department of Electrical and Computer Engineering en la University of Rhode Island, el Department of Electrical Engineering en la Princeton University, la Division of Engineering and Applied Sciences en la Harvard University, y el Department of Electrical Engineering and Computer Science en la University of Michigan. Máquina virtual co-diseñada Las máquinas virtuales co-diseñadas [SN05] suponen una atractiva alternativa para el diseño de procesadores simples pero a la vez eficientes. Este tipo de sistemas son el resultado de un diseño conjunto de hardware y software. La capa software encapsula el hardware ofreciendo una interfaz de éste al mundo exterior (aplicaciones y sistema operativo). Esta capa permite realizar traducción dinámica de un ISA de origen (visible al sistema operativo y a las aplicaciones) a otro ISA de destino (el ofrecido por la capa hardware), y a la vez realizar mejoras en el código de destino (optimización) para una mejor adaptación de éste en el hardware donde se van a ejecutar. Existen algunas propuestas para el uso de los conceptos básicos de máquina virtual co-diseñada y de optimización dinámica. Este es el caso de los procesadores Crusoe de Transmeta [Kla00], o de los proyectos DAISY [EA96] y BOA [AGS+99] de IBM, en los cuales se propone el uso de un procesador VLIW simple en cuanto a diseño y de menor consumo que un procesador Superescalar para la ejecución de código x86 de propósito general. Para el correcto funcionamiento de estos sistemas, la traducción de código x86 a código VLIW es una parte muy importante en la capa software y supone un importante coste ya que toda instrucción del código original debe ser convertida a una de código destino mediante software. Las propuestas de RePlay [FBC+01] y PARROT [RAM+04] eliminan el coste de la traducción de toda instrucción y se centran en la optimización dinámica de las secciones de código más frecuentemente ejecutas. No obstante, en estos proyectos la entidad encargada de realizar las optimizaciones es el propio hardware, lo cual impone limitaciones de flexibilidad del sistema (un optimizador software puede realizar análisis de código más sofisticados que el hardware y puede ser modificado una vez el chip está fabricado), a la vez que añade una importante complejidad en el hardware, con el consiguiente aumento de consumo y dificultad en la verificación. Nuestro objetivo al investigar en esta área es el de proponer un diseño completo de un sistema basado en un esfuerzo conjunto de hardware y software. Para ello, primero se estudiará una implementación eficiente y flexible de un sistema codiseñado. Después, investigaremos en nuevas técnicas de optimización de código para la capa software que permitan una mejor adaptación del código de propósito general al procesador que la capa software encapsula. Finalmente, investigaremos y propondremos una capa hardware con los cambios oportunos para que ésta, junto a la capa software, forme un sistema de baja complejidad pero de alta potencia de cálculo. A demás de los proyectos anteriormente nombrados, el grupo de investigación de Jim Smith [SN05], con el que existe una estrecha relación de colaboración desde hace casi 10 años, está trabajando activamente en esta área de conocimiento. Bibliografía [AHK00] V. Agarwal, M.S. Hrishikesh, S.W. Keckler and D. Burger. "Clock Rate versus IPC: The End of the Road for Conventional Microarchitectures". In Proc. of the 27th Ann. Int. Symp. on Computer Architecture, June 2000. [ACGK03a] A. Aletà, J.M. Codina, A. González and D. Kaeli, "Instruction Replication for Clustered Microarchitectures", in Procs. of 36th Int. Symp. on Microarchitecture (MICRO-36), Dec. 2003. [ACGK05] A. Aletà, J.M. Codina, , A. González and D. Kaeli. “Demistifying On-the-fly Spill Code”, in Procs. of the Conf. on Programming Languages and Implementation Design, 2005. [ACSG01] A. Aletà, J.M. Codina, J. Sánchez and A. González. "Graph-Partitioning Based Instruction Scheduling for Clustered Processors", in Proc. of 34th Int. Symp. On Microarchitecture, Dec 2001. [ACS+02] A. Aletà, J.M. Codina, J. Sánchez, A. González and D. Kaeli. "Exploiting Pseudo-schedules to Guide Data Dependence Graph Partitioning", in Proc. of the Int. Conf. on Parallel Archirectures and Compilation Techniques (PACT'02), Sept 2002. [JKW83] J. R. Allen, K. Kennedy, C. P. Warren. “Conversion of Control Dependence to Data Dependence”. POPL'83: Proceedings of 10th ACM SIGACTSIGPLAN symposium on Principles of Programming Languages, pages 177-189. [AGS+99] E. Altman, M. Gschwind, S. Sathaye, S. Kosonocky, A. Bright, J. Fritts, P. Ledak, D. Appenzeller, C. Agricola, Z. Filan, “BOA: The Architecture of a Binary Translation Engine”, IBM Research Report RC 21665 (97500), 1999 [ACGH97] D. August, D. Connors, J. Gyllenhaal, W. M. Hwu, “Architectural Support for Compiler-Synthesized Dynamic Branch Prediction Strategies: Rationale and Initial Results”. In HPCA '97: Proceedings of the 3th international Symposium on High-Performance Computer Architecture, page 84 - 93, 1997. [AHM97] D. August, W. M. W. Hwu, S. A. Malhke. “A Framework for Balancing Control Flow and Predication”. In MICRO 30: International Symposium on Microarchitecture, pages 92-103, 1997. [BS03] S. Balakrishnan and G. S. Sohi. "Exploiting Value Locality in Physical Register Files", Proceedings of the 36th International Symposium on Microarchitecture, 2003 [B04] R. Balasubramonian, "Cluster prefetch: tolerating on-chip wire delays in clustered microarchitectures". 18th Annual International Conference on Supercomputing (ICS), pp. 326-335, June, 2004. 6 [BDA01] [BDA03] [Bor99] [BTM00] [BGK96] [BKG95] [BM99] [CG00] [CG01] [CGS00] [CGS04] [CDN92] [CHPC95] [CFM03] [CC03] [CMT00] [CSG01] [DB00] [D98] [DM82] [EA96] [E86] [EKD+03] [FBC+01] [FCJ97] [FKM+00] [FS96] [GMS+05] [GSG02a] [GSG02b] [GSG03a] [GSG03b] [GBC+01] [HB04] [HL99] [HL91] [JCSK98] R. Balasubramonian, S. Dwarkadas, and D. Albonesi. "Reducing the complexity of the register file in dynamic superscalar processors". In Proc. of the 34th Annual Intl. Symp. On Microarchitecture, pages 237-248, 2001. R. Balasubramonian, S. Dwarkadas and D. Albonesi. “Dynamically Managing the Communication-Parallelism Trade-off in Future Clustered Processors”. In Proc. of the 30th. Ann. Intl. Symp. on Computer Architecture, pp. 275-286, June 2003. S. Borkar. “Design Challenges of Technology Scaling”. IEEE Micro, 19(4), 1999. D. Brooks, V. Tiwari and M. Martonosi, “Wattch: a framework for architectural-level power analysis and optimizations”, 27th Annual International Symposium on Computer Architecture, pp. 83-94, 2000. D. Burger, J. R. Goodman, and A. Kägi, “Quantifying Memory Bandwidth Limitations of Current and Future Microprocessors”, In Proceedings of the 23rd International Symposium on Computer Architecture, May 1996. D. Burger, A. Kägi and J. R. Goodman, “The Declining Effectiveness of Dynamic Caching for General Purpose Microprocessors“, Technical Report 1261, Computer Sciences Departament, University of Wisconsin, Madison, WI, January 1995. D. Brooks and M. Martonosi, “Dynamically Exploiting Narrow Width Operands to Improve Processor Power and Performance”, In Proceedings of the 5th International Symposium on High-Performance Computer Architecture, January 1999. R. Canal, A. González. “A Low Complexity Issue Logic”. Proceedings of the 2000 International Conference on Supercomputing, June 2000. R. Canal, A. González. “Reducing the Complexity of the Issue Logic”. Proceedings of the 2001 International Conference on Supercomputing, pp. 312-320, June 2001. R. Canal, A. González and J.E. Smith, “Very Low Power Pipelines using Significance Compression”, in Proceedings of the 33rd International Symposium on Microarchitecture, pp. 181-190, December 2000. R. Canal, A. González and J. E. Smith, "Software- Controlled Operand Gating", Proc. of the International Symposium on Code Generation and Optimization (CGO-2), Palo Alto (CA-USA), pp. 125-136, March 2004 A. Capitanio, D. Dytt and A. Nicolau, "Partitioned Register Files for VLIWs: A Preliminary Analysis of Tradeoffs", in Procs. of 25th. Int. Symp. on Microarchitecture, pp. 192-300, 1992. P. Chang, E. Hao, Y. Patt, P. Chang. Using Predicate Execution to Improve the Performance of a Dinamically Scheduled Machine with Speculative Execution”. In PACT '95: Proceedings of the IFIP WG10.3 working conference on Parallel Architecture and Compilation Techniques, pages 99-108. UK. 1995. M. Chu, K. Fan and S. Mahlke, "Region-based Hierarchical Operation Partitioning for Multicluster Processors", in Procs. on Conf. on Programming Languages and Implementation Design, 2003. W. Chuang, B. Calder. “Predicate Prediction for Efficient Out-of-Order Execution”. In ICS'03: Proceedings of the 17th annual international conference on Supercomputing”, pages 183 – 192, 2003. M. Cintra, J.F. Martinez and J. Torrellas, “Architectural Support for Scalable Speculative Parallelization in Shared-Memory Systems”, in Proc. of the 27th Int. Symp. on Computer Architecture, 2000. J.M. Codina, J. Sánchez and A. González, "A Unified Modulo Scheduling and Register Allocation Technique for Clustered Processors", in Procs. of Int. Conf. on Parallel Architectures and Compilation Techniques (PACT'01), Sept. 2001. V. De and S. Borkar. “Technology and Design Challenges for Low Power and High Performance”. Proceedings of the International Symposium on Low Power Electronics Design, 2000. G. Desoli, "Instruction Assignment for Clustered VLIW DSP Compilers: A New Approach", Technical Report HPL-98-13, HP Laboratories, February 1998. D. R. Ditzel, H. R. McLellan. “Register Allocation for Free: The C Machine Stack Cache”. In Proceeding of Symposium on Architectural Support for Programming Languages and Operating Systems, pages 48-56, 1982 K. Ebcioglu, E. R. Altman, “DAISY: Dynamic Compilation for 100% Architectural Compatibility”, IBM Research Report RC 20538, 1996. R. Ellis, "Bulldog: A Compiler for VLIW Architectures", MIT Press, pp. 180-184, 1986. D. Ernst, N. S. Kim, S. Das, S. Pant, R. Rao, T. Pham, C. Ziesler, D. Blaauw, T. Austin, K. Flautner, T. Mudge. Razor: A Low-Power Pipeline Based on Circuit-Level Timing Speculation. Proceedings of the 36th Annual IEEE/ACM International Symposium on Microarchitecture, 2003. B. Fahs. S. Bose, M. Crum, B. Slechta, F. Spadini, T. Tung, S. Patel, S. Lumetta, “Performance Characterization of a Hardware Mechanism for Dynamic Optimization”, in Procs. of 34th International Symposium On Microarchitecture (MICRO-34), 2001 K. Farkas, P. Chow, N.P. Jouppi, and Z. Vranesic, “The Multicluster Architecture: Reducing Cycle Time Through Partitioning”, In Proc. of the 30th. Int. Symp. on Microarchitecture, pp. 149-159, Dec. 1997. K. Flautner, N.S. Kim, S. Martin, D. Blaauw and T. Mudge. “Drowsy Caches: Simple Techniques for Reducing Leakage Power”. Proceedings of the International Symposium on Computer Architecture, 2002. M. Franklin, G.S. Sohi, "ARB: A Hardware Mechanism for Dynamic Reordering of Memory References". IEEE Trans. Computers 45(5), pp. 552571, May, 1996. C. García, C. Madriles, J. Sánchez, P. Marcuello, A. González and D.M. Tullsen, “Mitosis Compiler: An Infrastructure for Speculative Threading Based on Pre-computation Slices”, in Proc. of the Int. Conf. on Programming Language Design and Implementation, pp. 269-278, 2005 E. Gibert, J. Sánchez and A. González, "An Interleaved Cache Clustered VLIW Processor", in Procs. of 16th Int. Conf. on Supercomputing, June 2002. E. Gibert, J. Sánchez and A. González, "Effective Instruction Scheduling Techniques for an Interleaved Cache Clustered VLIW Processor", in Procs. of 35th Int. Symp. on Microarchitecture, Desember 2002. E. Gibert, J. Sánchez and A. González, "Local Scheduling Techniques for Memory Coherence in a Clustered VLIW Processor with a Distributed Data Cache", in Procs. of 1st Int. Symp. on Code Generation and Optimization (CGO'03), March 2003. E. Gibert, J. Sánchez and A. González, "Flexible Compiler-Managed L0 Buffers for Clustered VLIW Processors", in Procs. of 36th Int. Symp. on Microarchitecture (MICRO-36), Dec. 2003. S. Gunther, F. Binns, D. M. Carmean and J.C. Hall. “Managing the Impact of Increasing Microprocessor Power Consumption”. Intel Technology Journal, Q1, 2001. K. Hazelwood and D. Brooks, “Eliminating Voltage Emergencies via Microarchitectural Voltage Control Feedback and Dynamic Optimization”, Proceedings of the International Symposium on Low-Power Electronics and Design, pp. 326-331, August 2004. T. Horel, G. Lauterbach. “UltraSparc-III: Designing Third-Generation 64-Bit Performance”. IEEE MICRO. May – June 1999. M. Huguet, T. Lang. “Architectural Support for Reduced Register Saving/Restoring in Single-Window Register Files”. ACM Trans. Computer Systems, 9(1):66 – 67. Feb. 1991. S. Jang, S. Carr, P. Sweany and D. Kuras, "A Code Generation Framework for VLIW Architectures with Partitioned Register Banks", in Procs. of 3rd. Int. Conf. on Massively Parallel Computing Systems, April 1998. 7 [KEA01] [KC00] [KF96] [KMN+01] [K99] [KMSP05] [KS02] [Kla00] [LPSA02] [MBG+94] [MG99] [MD03] [MCG06] [MGV99] [NSB01] [ND95] [NE98] [OBMR05] [OBC98] [PJS97] [PKG00] [PSR00] [QPG06] [QPG07] [RP03] [RAM+04] [RJS97] [SG00a] [SG00b] [SNM+06] [SPN96] [SAD+02] [SIA97] [STR02] [SCF03] [Sit79] [SAS02] K. Kailas, K. Ebcioglu and A. Agrawala, "CARS: A New Code Generation Framework for Clustered ILP Processors", in Procs. of the 7th Int. Symp. on High-Performance Computer Architecture, Jan. 2001. J.T. Kao and A. P. Chandrakasan. “Dual-Threshold Voltage Techniques for Low-Power Digital Circuits”. IEEE Journal of Solid State Circuits, 37(5), 2000. G.A. Kemp, and M.Franklin. “PEWs: A Decentralized Dynamic Scheduler for ILP Processing". In Proc. of Int. Conf. on Parallel Processing, pp. 239-246, August 1996. A. Keshavarzi, S. Ma, S. Naredra, B. Bloechel, K. Mistry, T. Ghani, S. Borkar and V. De. “Effectiveness of Reverse Body Bias for Leakage Control in Scaled Dual Vt CMOS ICs.” Proc. of the International Symposium on Low Power Electronics Design, 2001. R.E. Kessler. "The Alpha 21264 Microprocessor”. IEEE Micro, 19(2):24-36, 1999. H. Kim, O. Mutlu, J. Stark, Y. N. Patt. “Wish Branches: Combining Conditional Branching and Predication for Adaptive Predicated Execution”. In MICRO 38: International Symposium on Microarchitecture, pages 43 – 54, 2000. H-S.Kim and J.E.Smith. “An Instruction Set and Microarchitecture for Instruction Level Distributed Processing”. In Proc. of the 29th Ann. Intl. Symp. on Computer Architecture, 2002. A. Klaiber, “The Technology Behind the CrusoeTM Processors”, white paper, http://www.transmeta.com/pdfs/paper_aklaiber_19jan00.pdf, January 2000 W. Lee, D. Puppin, S. Swenson, S. Amarasinghe, "Convergent Scheduling", in Procs. of 35th Int. Symp. on Microarchitecture, December 2002. S. A. Mahlke, R.H. Bringmann, J. Gyllenhyaal, D. Gallagher, Wen M. H. Hwu. “Characterizing the impact of predicate execution on branch prediction”. In MICRO 27: Proceedings of 27th annual ACM/IEE international symposium on Microarchitecture, pages 217 – 227. 1994. P. Marcuello and A. González, “Clustered Speculative Multithreaded Processors”, in Proc. of the 13th Int. Conf. on Supercomputing, pp. 365372, 1999. C. McNairy, D. Soltis. “Itanium 2 Processor Micrarchitecture”. IEEE MICRO. (pag. 44-55). March – April 2003. M. Monchiero, R. Canal and A. González , " Design Space Exploration for Multicore Architectures: A Power/Performance/Thermal View", 20th ACM International Conference on Supercomputing (ICS'06), Cairns (Australia) T. Monreal, A. Gonzalez, M. Valero, J. Gonzalez and V. Viñals "Delaying Physical Register Allocation Through Virtual-Physical Registers", Proceedings of the 32th International Symposium on Microarchitecture, 1999 R. Nagarajan, K. Sankalingam, D. Burger S.W. Keckler. “A Design Space Evaluation of Grid Processor Architectures”. Proc. 34th International Symposium on Microarchitecture. 2001. R. Nuth, W. J. Dally. “The Named-State Register File: Implementation and Performance”. In proceedings of international symposium on High Performance Computer Architecture, pages 4 – 13, 1995 E. Nystrom and A.E. Eichenberger, "Effective Cluster Assignement for Modulo Scheduling", in Procs. of the 31st Int. Symp. on Microarchitecture, pp. 103-114, 1998. D. W. Oehmke, N. L. Binkert, T. Mudge, S. K. Reinhardt, “How to Fake 1000 Registers”. In MICRO 38: international symposium in microarchitecture, 2005. E. Özer, S. Banerjia, T. Conte, "Unified Assign and Schedule: A New Approach to Scheduling for Clustered Register File Microarchitectures", in Procs. of the 31st Int. Symp. on Microarchitecture, 1998. A.S. Palacharla, N.P. Jouppi, and J.E. Smith, “Complexity-Effective Superscalar Processors”, In Proc. of the 24th. Int. Symp. on Computer Architecture, pp. 206-218, June 1997. D. Ponomarev, G. Kucuk, K. Ghose. “Reducing Power Requirements of Instruction Scheduling through Dynamic Allocation of Multiple Datapath Resources”. Proc of International. Symposium on Microarchitecture, 2000. Z. Purser, K. Sundaramoorthy, and E. Rotenberg. "A Study of Slipstream Processors". In Proceedings of the 33rd International Symposium on Microarchitecture, December 2000. E. Quiñones, J.M. Parcerisa, A. Gonzalez. “Selective Predicate Prediction for Out-of-Order Processors”. In ICS'06: Proceedings of the 20th annual international conference on Supercomputing, pages 46 – 66. 2006 E. Quiñones, J.M. Parcerisa, A. Gonzalez. “Improving Branch Prediction and Predicated Execution in Out-of-Order Processors”. In HPCA '07: Proceedings of the 13th international Symposium on High-Performance Computer Architecture, 2007. P. Racunas, Yale N. Patt, "Partitioned first-level cache design for clustered microarchitectures". 17th annual international conference on Supercomputing (ICS), June, 2003. R. Rosner, Y. Almog, Micha Moffie, Naftali Schwartz, Avi Mendelson, “Power Awareness through Selective Dynamically Optimized Traces”, in Procs. of 31st International Symposium on Computer Architecture (ISCA-21), 2004 Eric Rotenberg, Quinn Jacobson, Yiannakis Sazeides, Jim Smith. “Trace Processors”. Proc. 30th International Symposium on Microarchitecture. 1997. J. Sánchez and A. González, "The Effectiveness of Loop Unrolling for Modulo Scheduling in Clustered VLIW Architectures", in Procs. of the 29th Int. Conf. on Parallel Processing, Aug. 2000. J. Sánchez, and A. González, "Modulo Scheduling for a Fully-Distributed Clustered VLIW Architecture", in Procs. of 33rd Int. Symp. on Microarchitecture, Dec. 2000. K. Sankaralingam, R. Nagarajan, R. McDonald, et al. "Distributed Microarchitectural Protocols in the TRIPS Prototype Processor". 39th International Symposium on Microarchitecture (MICRO), December, 2006. A. Saulsbury, F. Pong and A. Nowatzyk, “Missing the Memory Wall: The Case for Processor/Memory Integration”, In Proceedings of the 23rd International Symposium on Computer Architecture, May 1996. G. Semeraro, D. H. Albonesi, S.G.Dropsho, G. Magklis, S. Dwarkadas and M.L. Scott. “Dynamic Frequency and Voltage Control for a Multiple Clock Domain Microarchitecture”. Proc. Int. Symposium on Microarchitecture, 2002. Semiconductor Industry Association, “The National Technology Roadmap for Semiconductors”, 1997. A. Seznec, E. Toullec and O. Rochecouste "Register Write Specialization Register Read Specialization: A Path to Complexity-Effective WideIssue Superscalar Processors", Proceedings of the 35th International Symposium on Microarchitecture,2002. B. Simon, B. Calder, J. Ferrante. “Incorporating Predicate Information into Branch Predictors”. In HPCA '03: Proceedings of the 9th international Symposium on High-Performance Computer Architecture, 2003. R. L. Sites. “How to Use 1000 Registers”. In Caltech Conference on VLSI, pages 527-532. 1979 K. Skadron, T. Abdelzahe amd M. R. Stan. “Control-Theoretic Techniques and Thermal-Rc Modeling for Accurate and Localized Dynamic Thermal Management”. Proceedings of the International Symposium on High Performance Computing, 2002. 8 [SSH+03] K. Skadron, M. R. Stan, W. Huang, S. Velusamy, K. Sankaranarayanan and D. Tarjan. “Temperature-Aware Microarchitecture”. Proceedings of the International Symposium on Computer Architecture, pp. 2-13 2003. [SN05] J. E. Smith, and R. Nair, “Virtual Machines: Versatile Platforms for Systems and Processes”, Morgan Kaufmann Publishers, 2005 [SBV95] G.S. Sohi, S.E. Breach and T.N. Vijaykumar, “Multiscalar Processors”, in Proc. of the 22nd Int. Symp. on Computer Architecture, pp.414-425, 1995. [SCZ+02] J. Steffan, C. Colohan, A. Zhai and T. Mowry, “Improving Value Communication for Thread-Level Speculation”, in Proc. of the 8th Int. Symp. on High Performance Computer Architecture, pp. 58-62, 2002. [SD95] C. L. Su and A. M. Despain, “Cache Design Tradeoffs for Power and Performance Optimization: A Case Study”, In Proceedings of the International Symposium on Low Power Electronics and Design, April 1995. [Uht00] Uht, A. K. Achieving typical delays in synchronous systems via timing error toleration. Tech. Rep. Dept. of Electrical and Computer Engineering, No. 032000-0100, University of Rhode Island. 2000 [WTS+97] E. Waingold, M. Taylor, D. Srikrishna, V. Sarkar, W. Lee, V. Lee, J. Kim, M. Frank, P. Finch, R. Barua, J. Babb, S. Amarasinghe, and A. Agarwal, "Baring it all to Software: Raw Machines", IEEE Computer, pp. 86-93, September 1997. [WWK+01] P. H. Wang, H. Wang, R. M. Klim, K. Ramakrishnan, J. P. Shen. “Register Renaming and Scheduling for Dynamic Execution of Predicated Code”. In HPCA '01: Proceedings of the 7th international Symposium on High-Performance Computer Architecture, page 15, 2001. [YZG00] J. Yang, Y. Zhang, and R. Gupta, “Frequent Value Compression in Data Caches”, In Proceedings of the 33rd International Symposium on Microarchitecture, December 2000. [YMR+99] A. Yoaz, E. Mattan, R. Ronen, and S. Jourdan., “Speculation Techniques for Improving Load Related Instruction Scheduling,“ in Proc. of 26th ISCA, pp. 42-53, May 1999. [ZLAV01] J. Zalamea, J. Llosa, E. Ayguadé, and M. Valero, "Modulo Scheduling with integrated register spilling for Clustered VLIW Architectures," Proc. 34th Ann. Int'l Symp. on Microarchitecture (MICRO-34), December 2001. [ZYG00] Y. Zhang, J. Yang, and R. Gupta, “Frequent Value Locality and Value-Centric Data Cache Design”, In Proceedings of the 33rd International Conference on Architectural Support for Programming Languages and Operating Systems, November 2000. [ZK01] V. Zyuban and P.M. Kogge, “Inherently Lower-Power High-Performance Superscalar Architectures,“ IEEE Trans. on Computers, vol. 50, no. 3, pp. 268-285, March 2001. 9 3. OBJETIVOS DEL PROYECTO 3.1 HIPÓTESIS DE PARTIDA (máximo 20 líneas) Con el constante avance en los niveles de integración, los procesadores del futuro dispondrán de miles de millones de transistores. Ante esta perspectiva, una importante cuestión que se plantea la comunidad científica es cómo deben ser los procesadores para hacer un uso eficiente de esta tecnología. Nuestra hipótesis de partida es que para obtener las máximas prestaciones en dichos procesadores va a ser necesario plantear y resolver las siguientes cuestiones: 1.- Reducción del consumo y control de temperatura. Las altas frecuencias a las que operaran dichos procesadores no se verán acompañadas por una reducción del voltaje acorde para mantener controlado el consumo. Por lo tanto se deberán incorporar mecanismos que controlen la energía disipada así como la temperatura. Estos mecanismos serán más o menos agresivos en función del segmento de mercado al que vayan dirigidos (servidores, sobremesa o portátiles). 2.- Explotación de paralelismo especulativo a nivel de thread. Para reducir el tiempo de ejecución de códigos irregulares y por lo tanto difíciles de paralelizar, estos procesadores serán capaces de paralelizar código de forma especulativa. 3.- Diseño clusterizado. Los crecientes retardos en las conexiones, empeorados por la creciente complejidad de las estructuras del procesador, propiciarán arquitecturas particionadas con gestión inteligente de las comunicaciones. 4.- Extensiones del ISA. Debido a los rendimientos decrecientes de las arquitecturas superescalares, éstas deberán adoptar nuevas técnicas para explotar el ILP, tales como predicación de instrucciones o ventanas de registros. 5.- Jerarquía de memoria. Se necesitarán nuevas técnicas para el diseño de banco de registros y caches para tolerar la creciente brecha entre velocidades del procesador y memoria. 6.- Arquitecturas tolerantes a variaciones. Se necesitarán nuevas técnicas para la explotación del indeterminismo en la geometría de los transistores, así como la variación dinámica de sus parámetros de fiuncionamiento. 7.- Las máquinas virtuales co-diseñadas seran una alternativa para el diseño de procesadores simples pero a la vez eficientes. 3.2. ANTECEDENTES Y RESULTADOS PREVIOS El equipo solicitante tiene experiencia en gran parte de las materias que se van a investigar en este proyecto. 1 - En el campo del bajo consumo el interés ha sido creciente en los últimos años y son numerosas las publicaciones sobre este tema que han ido apareciendo en los congresos del área. El equipo solicitante tiene amplia experiencia en el tema y ha publicado numerosos artículos en congresos y revistas en los últimos 5 años. Entre las principales contribuciones podemos destacar las propuestas para reducir la complejidad de la lógica de emisión, el uso de estructuras dinámicamente adaptativas a las características del código, y el uso de compresión de valores. Dos tesis doctorales han sido defendidas en estos temas y otras dos están en proceso de realización. En estas propuestas se demuestra la viabilidad de controlar el consumo y la temperatura a nivel de microarquitectura. 2 - En el área de procesadores multithreaded especulativo, el grupo ha sido uno de los primeros grupos en proponer este paradigma. Varios miembros del equipo investigador llevan años trabajando en el tema donde tienen múltiples publicaciones en congresos notables del área y dos tesis han sido completadas en este tema. Algunas de estas propuestas demuestran que este tipo de organización puede proporcionar enormes beneficios en términos de rendimiento. 3 - En el área de los procesadores clusterizados, el grupo tiene numerosos trabajos publicados, se han leído tres tesis doctorales en estos temas, y dos más están en curso de realización. Entre las principales contribuciones relacionadas con procesadores superescalares podemos destacar las propuestas para la distribución eficiente de instrucciones, para la reducción de comunicaciones por medio de predicción de valores, así como para el diseño de la red de interconexión. Relativas a arquitecturas VLIW destacan las propuestas de algoritmos para la asignación y planificación de instrucciones, para la reducción de comunicaciones por medio de replicación de código, para la asignación de registros y código de spill, así como técnicas para la mejora de rendimiento de la memoria con caches distribuidas. 4 - En el tema de las extensiones ISA, la experiencia es reciente pero ya se ha publicado una propuesta, relativa a la predicación de instrucciones en procesadores fuera de orden. 5 - El interés de la comunidad científica por el tema de la jerarquía de memoria y el diseño del banco de registros ha sido siempre muy elevado y sigue siéndolo, prueba de ello es la gran cantidad de trabajos recientes en esta área. La experiencia del grupo en este tema viene avalada por diversos trabajos, donde se han estudiado arquitecturas de registros multibanco y multinivel, se han propuesto técnicas de compresión de valores y de eliminación de redundancia para mejorar el consumo y rendimiento de la cache, se han propuesto técnicas de reserva y liberación de registros para reducir el tamaño del banco, así como técnicas para reducir los conflictos en los accesos a cache. 6 - En el tema de arquitecturas tolerantes a variaciones, la experiencia del grupo es bastante reciente, pero ya se han publicado dos propuestas. 7 - Finalmente, en el tema de las máquinas virtuales co-diseñadas, otros grupos han demostrado la viabilidad y el potencial de esta solución arquitectónica. Aunque nuestra experiencia es reciente en este campo, nuestro grupo está situado en óptimas condiciones para abordarlo, pues hemos investigado durante años y hemos realizado notables contribuciones en el campo de la generación y optimización de código a nivel estático a través del compilador además de realizar contribuciones en el campo de la arquitectura de computadores. 10 OBJETIVOS CONCRETOS DEL PROYECTO 1. Reducción del consumo y control de la temperatura 1.1 Investigar nuevos algoritmos de adaptación de las unidades activas en un procesador a fin de minimizar la energía consumida por el procesador utilizando compresión de valores. 1.2 Reducir el consumo a través de algoritmos de adaptación de la frecuencia y el voltaje de forma independiente en los diferentes clusters y combinarlo con políticas inteligentes de distribución de instrucciones a fin de minimizar la pérdida de rendimiento. 1.3 Reducir el consumo estático a través de control de temperatura y del diseño de circuitos con múltiples tensiones umbrales o tensiones umbrales dinámicas. Adaptar la configuración y distribución de instrucciones en el procesador cluster a fin de minimizar la pérdida de rendimiento. 1.4 Controlar la temperatura máxima y reducir la temperatura media de un procesador a través de técnicas inteligentes de reparto de instrucciones, migración activa de la ejecución de programas y apagado de unidades dinámicamente. 2. Procesadores multithreaded especulativo 2.1 Desarrollo de las herramientas de simulación. El objetivo es implementar un simulador de una arquitectura multithreaded especulativo para poder investigar diferentes propuestas arquitectónicas, como jerarquías de memorias que sean capaces de mantener múltiples versiones independientes para cada flujo de control. Adicionalmente necesitaremos un analizador de trazas para ayudarnos en el particionado del código en threads especulativos. 2.2 Caracterización de la microarquitectura: Evaluar el rendimiento de las diferentes propuestas tanto a nivel arquitectónico como de políticas de particionado en el simulador y encontrar posibles cuellos de botella de la arquitectura para poder solucionarlos. 2.3 Mecanismos de recuperación: Proponer nuevos mecanismos de recuperación en caso de fallo de especulación e investigar de que manera se pueden aplicar a nuestro procesador multithreading especulativo. 3. Procesadores clusterizados 3.1 Modelar el uso de energía y rendimiento de una unidad de memoria distribuida, identificar las estructuras que consumen más energía, y proponer diseños alternativos con mejor relación consumo/rendimiento. 3.2 Investigar esquemas de reserva de recursos en una unidad de memoria distribuida para una arquitectura cluster superescalar 3.3 Diseño de arquitecturas cluster VLIW heterogéneas, donde no todos los clusters serán iguales, con el fin de aumentar su rendimiento a la vez que reducir su consumo. Habrá algunos clusters más rápidos que tendrán un mayor consumo y otros a menor frecuencia que ahorrarán energía. 3.4 Investigar nuevos algoritmos de compilación para un procesador cluster VLIW que tengan en cuenta las diferentes características de los clusters heterogéneos a la hora de asignar y planificar las instrucciones. 3.5 Adaptar técnicas que mejoran el rendimiento de arquitecturas VLIW homogéneas a los diseños heterogéneos, con el fin de reducir el número de comunicaciones y mejorar la asignación de registros. 4. Extensiones del ISA en procesadores de planificación dinámica 4.1 Diseño e implementación de un simulador con ejecución fuera-de-orden que soporte una ISA con las siguientes extensiones: predicación y ventanas de registros. 4.2 Proponer y evaluar nuevas técnicas para la ejecución de código predicado en procesadores fuera de orden. Desarrollar una propuesta válida para atacar todos los aspectos negativos de la predicación. 4.3 Proponer nuevas técnicas que permitan la implementación eficiente de ventanas de registros en procesadores fuera de orden. Investigar nuevos usos de la ventana de registros en procesadores fuera de orden, prestando especial atención al uso eficiente del banco de registros y al acceso a memoria en operaciones de spill. 5. Jerarquía de memoria y arquitectura del banco de registros 5.1 Obtener una arquitectura del banco de registros de un único nivel más eficiente en tiempo y consumo energético. 5.2 Obtener algoritmos de precarga más eficientes para el banco de registros. 5.3 Modificar las implementaciones convencionales de las organizaciones cache para reducir el consumo con un mínimo impacto en el rendimiento y proponer nuevas organizaciones cache donde el principal objetivo sea reducir el consumo energético. 5.4 Modificar las implementaciones convencionales del banco de registros y las organizaciones cache para reducir el tráfico que se produce entre ellos, y proponer nuevos mecanismos hardware que permitan combinar las mejores características del banco de registros y del primer nivel de la memoria cache para evitar latencias innecesarias . 6. Arquitecturas tolerantes a variaciones 6.1 Analizar y cuantificar las principales fuentes de variaciones y su impacto en el rendimiento y el consumo de los circuitos CMOS. 6.2 Proponer técnicas para adaptar el tiempo de ciclo de distintos circuitos en un microprocesador a la latencia habitual en vez de operar siempre asumiendo la peor latencia posible. 6.3 Incrementar la eficiencia (mayor rendimiento y menor consumo) de los circuitos mediante la propuesta de nuevos diseños sensibles a variaciones que produzcan sus resultados en el menor tiempo posible y con el mínimo consumo. 11 7. Máquina virtual co-diseñada 7.1 Proponer una implementación eficiente de una máquina virtual co-diseñada. Para ello, propondremos un sistema flexible, donde el coste adicional de añadir la capa software sea bajo. 7.2 Investigar en técnicas de generación y optimización de código para una máquina virtual co-diseñada. Estas técnicas deberán adaptar el código de las aplicaciones para que estas mejoren su rendimiento en el hardware que la capa software encapsula. 7.3 Proponer mejoras para la capa hardware de un sistema con una máquina virtual co-diseñada. Este objetivo supone proponer cambios en la capa hardware para que se adapte mejor a la capa software que la envuelve. 3.4. En el caso de Proyectos Coordinados (máximo dos páginas): - el coordinador deberá indicar: - los objetivos globales del proyecto coordinado, la necesidad de dicha coordinación y el valor añadido que se espera alcanzar con la misma - los objetivos específicos de cada subproyecto - la interacción entre los distintos objetivos, actividades y subproyectos - los mecanismos de coordinación previstos para la eficaz ejecución del proyecto 12 4. METODOLOGÍA Y PLAN DE TRABAJO METODOLOGÍA La metodología que seguiremos para la investigación se basa dos fases: primero el desarrollo de herramientas que nos permitan evaluar el comportamiento de los procesadores y después la implementación, evaluación y refinamiento de las diferentes propuestas y soluciones usando dichas herramientas. Las herramientas a desarrollar consisten básicamente en simuladores parametrizables de los procesadores, ya sea para el repertorio de instrucciones x86 como IPF (Itanium Processor Family) o bien Alpha. En algunos casos se han construido estos simuladores sobre la base de otras herramientas existentes, como el SimpleScalar (simulador ciclo a ciclo de un procesador superescalar sencillo), el SMTSIM de la Universidad de California en San Diego (para procesadores multithreaded), el Liberty de la Universidad de Princeton (infraestructura para la construcción de simuladores), o el PTLsim de la Universidad de Binghamton en Nueva York (para la ejecución de códigos x86). También vamos a necesitar diseñar un analizador de trazas, usando una herramienta de instrumentación tal como ATOM (para código Alpha). También se van a tener que extender y modificar compiladores existentes tales como ICTINEO (proyecto llevado a cargo en la Universitat Politècnica de Catalunya) o ORC (de Intel, para código IPF), para evaluar las propuestas a nivel de compilación. Otras herramientas a utilizar para la evaluación de propuestas a nivel de circuito van a ser el simulador de circuitos a nivel eléctrico HSPICE, un generador de descripción de circuitos a bajo nivel y un generador de layouts para una determinada tecnología (90nm), así como la herramienta de libre distribución CACTI (de HP Labs), la cual constituye un modelo analítico para la evaluación del área, consumo y tiempo de acceso de estructuras de memoria del procesador, ya sean de acceso directo o asociativo, tales como caches, bancos de registros, predictores, etc. Habitualmente, el desarrollo de estas herramientas consume un tiempo y esfuerzo importantes por parte de los investigadores. Sería muy beneficioso para el proyecto la contratación de una persona experta en programación que pudiera descargar parte de este trabajo, a fin de sacar mayor provecho del potencial investigador del grupo. Por otra parte, esta persona debería encargarse también del soporte informático para la creación y mantenimiento de una base de datos administrativa del grupo, así como de una página web para el grupo a fin de realizar la difusión de las actividades de investigación (ver apartado 5: Plan de Difusión). Para evaluar nuestras propuestas utilizaremos como cargas de prueba (benchmarks) tanto el repertorio de los SPEC2000 (o el más reciente SPEC2006) como los Mediabench (cargas multimedia). En algunos casos, el tiempo de ejecución de los simuladores es tan grande que recurriremos a conjuntos de datos de entrada reducidos (el MinnesSpec, desarrollado en la universidad de Illinois) o bien a la ejecución de fragmentos representativos de los programas (seleccionados mediante la herramienta PinPoint). Para la evaluación de propuestas a nivel de circuito se van a usar diseños de sumadores y otros circuitos publicados, por ejemplo carry ripple, carry look-ahead, Kogge-Stone. El objetivo de dichos estudios es corroborar nuestras hipótesis de partida acerca de las limitaciones de las arquitecturas del futuro así como estudiar los límites de rendimiento/consumo/temperatura que se pueden obtener para los diferentes tipos de aplicaciones. Una vez que se tenga una visión de los diferentes factores limitadores, se pasará a un estudio de las diferentes soluciones propuestas en este proyecto. Dichas propuestas serán tanto a nivel de compilación (lo cual va a requerir la modificación del compilador para su implementación), como de la microarquitectura (implementadas directamente sobre los simuladores) como a nivel de circuito (lo que requerirá su implementación utilizando herramientas de simulación tales como HSPICE). Con ello se analizará el impacto de dichas propuestas sobre el funcionamiento del procesador, tanto a nivel del tiempo de ejecución, como del consumo y de la temperatura. Para explorar el comportamiento de las arquitecturas así como evaluar las técnicas propuestas se requiere de computadores con gran capacidad de cálculo, las cuales acostumbran a ser torres o clusters de procesadores con un gran número de nodos. Además, para desarrollar las herramientas de nuestra investigación (simuladores, analizadores de trazas, etc.) se necesitan en algunos casos estaciones de trabajo capaces de alojar programas de diseño de cierta potencia. Todas estas máquinas tienen una vida útil de un número reducido de años, pues además del desgaste, se vuelven obsoletas por la rápida evolución del software y el crecimiento de las necesidades de computación (con cada nueva versión de las cargas de prueba crece su volumen de memoria y su tiempo total de ejecución), por lo que no sólo se requiere comprarlas y mantenerlas, sino también renovarlas periódicamente. El presupuesto de pequeño equipamiento que se detalla en la solicitud contempla pues estas necesidades. En nuestro departamento (DAC) existe afortunadamente desde hace años una política de compartición de recursos informáticos entre los diversos grupos de investigación, lo cual redunda en un aprovechamiento más eficiente para todos, científica y económicamente. El equipamiento del que disponemos actualmente y que se relaciona en la solicitud está en realidad compartido por 126 investigadores este departamento y alrededor de 100 de becarios predoctorales asociados a 13 ellos. Siguiendo esa política que tan buenos resultados ha dado, una parte del equipamiento solicitado va a compartirse también con los otros investigadores del departamento, en justa correspondencia con el beneficio obtenido fruto de esa colaboración. PLAN DE TRABAJO La consecución de los diversos objetivos desglosados en el apartado 3 de este documento se realizará en base a 25 tareas, las cuales se describen en los siguientes subapartados, agrupadas en 7 actividades. Para cada actividad se relacionan las personas involucradas en las tareas correspondientes. Para todas las actividades, la duración total de las tareas correspondientes es de tres años, ya que todas las actividades incluyen fases de estudio, propuesta, desarrollo, evaluación y generación de resultados. Al final se ofrece un desglose más preciso, en forma de cronograma. El grupo solicitante mantiene una colaboración muy estrecha con otros miembros del laboratorio UPC-Intel Barcelona Research Center que actualmente forman parte de la plantilla de Intel Corporation. Tanto unos como otros forman parte del mismo grupo de investigación ARCO. Tal y como aparece en la descripción de las tareas, estos investigadores tienen una participación activa en las tareas de este proyecto y por esa razón han sido incluidos como colaboradores. Además, varios de ellos codirigen tesis a algunos estudiantes del grupo junto a otras personas pertenecientes al grupo solicitante. De igual forma, alguno de estos investigadores de Intel Corporation está realizando actualmente la tesis y está siendo dirigida por miembros del grupo solicitante. Dichos colaboradores son: José A. Piñeiro, Carlos Madriles, Fernando Latorre, Josep M. Codina, Grigorios Magklis, F. Jesús Sánchez, José González, Pedro Chaparro, Pedro Marcuello y F. Javier Vera. Otros colaboradores del proyecto son Antonio Rubio y Francesc Moll, del departamento de Enginyería Electrònica de la UPC, los cuales vienen trabajando desde hace algún tiempo con nosotros en el tema de arquitecturas tolerantes a variaciones y asesorando la tesis de Marc Pons. Aunque nuestro grupo de investigación lleva muchos años forjándose (véase historial en la sección 6), su creación formal es bastante reciente (2004) y su crecimiento desde entonces ha sido muy rápido (actualmente 32 miembros). No ha habido tiempo de consolidar una infraestructura para la gestión eficaz de las tareas burocráticas (solicitud de ayudas, proyectos, informes, etc). Una de las tareas que queremos abordar pues es la creación de una base de datos junto con un sistema informático para la gestión de información relativa al grupo. En segundo lugar, como se menciona en el Plan de Difusión (en la sección 5), otra pretensión del grupo es la creación de una página web que sea eficaz para la difusión de los resultados de nuestra investigación, que mejore la visibilidad del grupo como tal, y que facilite los lazos con otros grupos de investigación. En tercer lugar, quisiéramos implementar nuevas herramientas web (o adaptar las existentes) para la redacción compartida de documentos entre miembros del grupo. Para todas esas tareas necesitamos contratar temporalmente a una persona, con perfil de Ingeniero Informático, el cual se encargaría además de tareas de desarrollo de software de instrumentación, simulación y evaluación para la investigación. ACTIVIDAD 1: Reducción del consumo y control de la temperatura Equipo: Doctores: Ramon Canal, José González , Grigorios Magklis, Qiong Cai, Antonio González No doctores: Enric Herrero, David Oro, Pedro Chaparro, Jaume Vila El trabajo en esta actividad tratará de encontrar soluciones a los problemas de escalado que nos encontraremos en las futuras nanotecnologías de final de década. Para llegar a este fin, se ha dividido el proyecto en las siguientes tareas: Tarea 1.1 Desarrollo de herramientas de simulación En esta tarea se desarrollará la herramienta de simulación necesaria para llevar a cabo la investigación. Dicha herramienta consiste en un simulador de rendimiento, consumo y características termales parametrizable de microarquitecturas multinúcleo. Este simulador parte de los simuladores públicos (HotSpot [SAS02] y Wattch [BTM00]) el cual se extenderá para simular a una microarquitectura con un front-end y varios back-ends. Finalmente, se le añadirá la capacidad de funcionar con múltiples relojes y voltajes de alimentación. Esta tarea será trabajo previo a la estancia para así poder dedicar la estancia a la investigación en nuevas técnicas. Tarea 1.2 Reducción del consumo dinámico del procesador Se investigarán técnicas de bajo consumo a diferentes niveles. Se estudiarán mecanismos adaptativos, a fin de activar sólo de los recursos que cada aplicación necesita. Se analizarán técnicas que deshabiliten el reloj de ciertas colas de emisión de algunos núcleos si se detecta que su utilización es menor de la adecuada. Se investigarán maneras de medir la energía dinámicamente en los procesadores mediante la inclusión de contadores de actividad y consumo – semejantes a los 14 actuales contadores de eventos. También se analizarán técnicas de ajuste dinámico del voltaje y la frecuencia de los diferentes núcleos de la arquitectura a fin de hacerla más efectiva en términos de energía consumida. Se propondrán tanto técnicas activas como reactivas. Las técnicas activas tratarán de mantener la energía consumida por el procesador lo más baja posible, haciendo que la unidad de distribución de instrucciones se encargue de mantener el rendimiento alto. Las técnicas reactivas mantendrán el algoritmo de distribución de instrucciones y simplemente bajarán el voltaje y la frecuencia de aquellas unidades que parecen menos usadas. Finalmente, propondremos arquitecturas multi-núcleo heterogéneas, y mecanismos adaptativos para el uso de los back-ends dependiendo del código ejecutado cada momento. Tarea 1.3 Reducción del consumo estático del procesador Se analizarán las fuentes del consumo estático en arquitecturas multi-núcleo, poniendo especial énfasis en memorias y bancos de registros. Se propondrá el diseño de unidades con múltiples niveles de tensión umbral y por lo tanto latencia variable aprovechando las características de las arquitecturas particionadas y se evaluarán propuestas de control del consumo a través de circuitos con tensión umbral dinámica. Se investigarán técnicas para medir la variabilidad en el tamaño del canal de los transistores que puede afectar en gran medida a la corriente de fuga, provocando grandes diferencias entre transistores similares dentro del mismo chip. Tarea 1.4 Control de temperatura En esta tarea investigaremos en técnicas que controlen tanto la temperatura media del procesador como la temperatura máxima, tratando de evitar que se llegue a temperaturas límites que hagan intervenir al sistema operativo. Primero evaluaremos los mapas de temperatura de las arquitecturas multi-núcleo de final de década, que son bastante diferentes de los mapas térmicos actuales, debido al particionado de los recursos. Después evaluaremos algoritmos de distribución de instrucciones en arquitecturas a fin de que la temperatura entre los diferentes núcleos esté lo más equilibrada posible. También usaremos el control de temperatura para controlar las corrientes de fuga dentro del chip y por lo tanto el consumo estático. Investigaremos en técnicas de migración activa de la ejecución de los programas y de cambio de las tensiones y las frecuencias a fin de reducir el número de veces que se generan emergencias térmicas. Finalmente investigaremos la relación entre nuestras propuestas de control de temperatura y el posible abaratamiento que se puede conseguir en el package del chip, al poder fabricarlo para temperaturas máximas menores de las actuales. ACTIVIDAD 2. Procesadores multithreaded especulativo Equipo: Doctores: Pedro Marcuello, F.Jesús Sánchez, Jordi Tubella, Antonio González No doctores: Rakesh Ranjan, Carlos Madriles En esta actividad se investigará sobre el diseño de procesadores que puedan ejecutar múltiples threads especulativos. El objetivo investigar en dos grandes áreas, primero nos centraremos en investigar las limitaciones de las jerarquías de memoria existentes en este tipo de arquitecturas y proponer nuevas soluciones para soliviantar dichos problemas. Posteriormente, tambien estamos interesados en investigar mecanismos eficientes de recuperacion en caso de fallo de especulación para este tipo de procesadores, ya que con el peso tan importante que lleva la especulación en este tipo de arquitecturas, va a ser un punto clave. Tarea 2.1 Diseño de la microarquitectura e implementación de las herramientas de simulación Se definirá una nueva microarquitectura cuya principal característica será la definición una jerarquía de memorias multiversión, de forma que ambos sean capaces de almacenar múltiples versiones de cada variable, cada una correspondiente al valor visible por cada thread. Tomando como partida el simulador SMTSIM de la Universidad de California en San Diego, se extenderá para poder soportar un modelo de ejecución con threads especulativos. Además, para hacer el particionado de códigos en threads especulativos, también diseñaremos un analizador de trazas. Tarea 2.2 Análisis de rendimiento y caracterización de la microarquitectura Se realizará un primer análisis de las técnicas y esquemas propuestos inicialmente. Se estudiará el rendimiento de los threads seleccionados por el analizador de trazas viendo la utilización de las diferentes unidades de thread. También se estudiará el efecto de los diferentes overheads que conlleva la arquitectura y de los mecanismos de validación y cancelación de threads, y especialmente del comportamiento de la jerarquía de memoria. Tarea 2.3. Mecanismos de recuperación En esta tarea propondremos nuevos mecanismos para, por una parte detectar posibles fallos de especulación lo más pronto posible y evitar hacerlo en la fase de validación y por otra parte, en caso de producirse, mecanismos que intenten devolver la máquina a un estado correcto evitando eliminar trabajo correcto o perdiendo el menor número de ciclos posible. 15 ACTIVIDAD 3: Procesadores clusterizados Equipo: Doctores: Joan Manuel Parcerisa, José A. Piñeiro, Antonio González No doctores: Stefan Bieschewsky, Josep M. Codina, Alexandre Aletà, Pedro López, Fernando Latorre En esta actividad investigaremos técnicas para simplificar las estructuras de microarquitecturas clusterizadas y mejorar su eficiencia energética. Tarea 3.1 Análisis y cuantificación del consumo de energía En esta tarea se va a desarrollar en primer lugar un simulador de una arquitectura clusterizada con especial hincapié en el modelado detallado de la unidad de memoria distribuida. El principal objetivo será el análisis y la cuantificación del consumo de las diversas estructuras involucradas, en especial aquellas que presentan una mayor complejidad. Para evaluar los compromisos entre rendimiento y consumo de energía vamos a modelar el consumo de la unidad de memoria así como una estimación de su impacto relativo en el consumo de todo el procesador. Tarea 3.2 Mejora del compromiso entre rendimiento y consumo de energía Vamos a investigar técnicas para evitar el envío de las direcciones de store a todos los clusters, así como para limitar el alcance de la especulación en instrucciones load, a fin de reducir el consumo excesivo de energía. Investigaremos también soluciones para sustituir las estructuras más complejas por otras más simples a fin de reducir su consumo. Algunas de las estructuras en las que nos centraremos van a ser las CAM utilizadas en la cola de loads y stores para detectar dependencias de memoria y el CAM usado en el TLB para asignar direcciones virtuales a físicas. También estudiaremos los compromisos entre coste, rendimiento y consumo para diferentes políticas de reserva de recursos en la cola distribuida de loads y stores. Fruto de este estudio, pretendemos proponer nuevas soluciones para la reserva eficiente de recursos. Tarea 3.3 Propuesta de una arquitectura cluster VLIW heterogénea Nos proponemos estudiar una arquitectura cluster VLIW heterogénea, esto es, los clusters serán diferentes. Algunos de ellos utilizarán una frecuencia mayor y serán más rápidos mientras el resto usarán un voltaje reducido para minimizar el consumo. Nuestro objetivo es aprovechar los clusters rápidos para planificar las instrucciones críticas y desplazar el resto de instrucciones a los clusters de bajo consumo. Este diseño plantea nuevas dificultades en el fetch de instrucciones, el tratamiento de saltos, excepciones y cache misses. Además desarrollaremos un modelo para elegir los voltajes y las frecuencias para cada cluster en función de la carga de trabajo que deba soportar un procesador. Tarea 3.4 Planificación de instrucciones para arquitecturas VLIW heterogéneas Para aprovechar el potencial de las arquitecturas heterogéneas que queremos proponer necesitaremos adaptar el compilador. En particular la técnica de planificación de instrucciones tiene que ser consciente de la heterogeneidad del procesador para asignar las instrucciones críticas a los clusters rápidos y el resto de instrucciones a los clusters de bajo consumo. Además nos proponemos adaptar técnicas que mejoran el rendimiento de arquitecturas homogéneas para arquitecturas heterogéneas como replicar instrucciones para evitar comunicaciones o heurísticas de spill code. ACTIVIDAD 4: Extensiones del ISA en procesadores de planificación dinámica Equipo: Doctores: Joan Manuel Parcerisa, Antonio González No doctores: Eduardo Quiñones Se investigará sobre la aplicación de extensiones de la ISA, que típicamente han sido implementadas en procesadores en orden, sobre procesadores fuera de orden. En concreto, vamos a centrar nuestras investigaciones en dos extensiones: predicación y ventana de registros. Se propondrán nuevas microarquitecturas que soporten dichas extensiones. Se estudiarán nuevas posibles aplicaciones de estas técnicas para mejorar el rendimiento general del procesador. Tarea 4.1 Diseño de una microarquitectura y herramientas de simulación para nuestro estudio Se diseñará una nueva microarquitectura con planificación dinámica capaz de ejecutar código con las extensiones que queremos investigar. Utilizaremos IPF como ISA para realizar nuestras investigaciones. Deberemos, por tanto, prestar especial atención en ejecutar las peculiaridades de una arquitectura en orden sobre un procesador fuera de orden. Tarea 4.2 Predicación en fuera de orden 16 Una vez definida una microarquitectura base, y en paralelo a la tarea anterior, se diseñaran nuevas técnicas microarquitectónicas capaces de ejecutar código predicado en procesadores fuera de orden. Este diseño deberá tener en cuenta problemas de ambigüedad en el renombramiento debido a las multiples definiciones, así como el consumo innecesario de recursos del procesador por parte de instrucciones predicadas evaluadas a falso y la pérdida de información de correlación en predictores de salto. Tarea 4.3 Ventanas de registros Igual que la anterior tarea, esta tarea va a desarrollarse en paralelo a la primera tarea. Se diseñarán nuevos mecanismos capaces de gestionar varias ventanas activas de registros a la vez. Estas técnicas deberán tener en cuenta operaciones de flush producidas por excepciones ocurridas durante una ejecución. Asimismo, se desarrollarán nuevas técnicas para mantener el número de registros lógicos y físicos libres en niveles óptimos. ACTIVIDAD 5: Jerarquía de memoria y arquitectura del banco de registros Equipo: Doctores: José González, Carlos Molina, Jordi Tubella, Antonio González No-doctores: Josep-Llorenç Cruz, Carles Aliagas Tarea 5.1 Diseño del banco de registros En esta actividad se diseñarán dos tipos de bancos de registros: Un banco de registros multi-nivel organizado de manera jerárquica y un banco de registros multi-banco uni-nivel. En el primer caso se estudiarán nuevos algoritmos de precarga y reemplazo así como el de filtrado de valores a almacenar en cada nivel. En el segundo caso se estudiará la organización de cada banco y técnicas dinámicas para asignar valores a cada banco con el objetivo de maximizar el rendimiento. Para ambos bancos se diseñará la lógica de interconexión entre el banco de registros y las unidades funcionales así como la lógica de wake-up en un procesador que use estas nuevas arquitecturas para el banco de registros. También se diseñarán mecanismos de renombre alternativos que eviten tener reservados los registros durante un tiempo innecesario. Se buscarán gestiones más eficaces del banco de registros, que permitan utilizar un banco de registros menor sin pérdida en rendimiento ó que con el mismo tamaño del banco de registros mejoren las prestaciones del procesador. Puesto que el banco de registros es un elemento que está en el camino crítico, los ahorros por uso eficiente pueden tener efectos beneficiosos en frecuencia, área y consumo. Tarea 5.2 Diseño de las organizaciones cache En esta actividad se aplicarán técnicas de compresión de valores para reducir el área necesaria para almacenar los datos e instrucciones, consiguiendo por tanto una reducción del consumo energético. Además se desarrollarán nuevos mecanismos hardware que permitan desactivar las zonas de memoria con una menor actividad reduciendo así el consumo dinámico que representa una parte importante del consumo total disipado por el procesador. Tarea 5.3 Diseño combinado del banco de registros y las organizaciones cache En esta actividad se analizará el comportamiento repetitivo de los programas (acceso a datos e instrucciones) para evitar el tráfico redundante entre los distintos niveles de la jerarquía. Del mismo modo se modificarán las implementaciones convencionales del banco de registros y las organizaciones cache para que exploten de forma eficiente la reducción del tráfico repetitivo con un impacto poco significativo en el área y consumo del procesador. Tarea 5.4 Implementación de las herramientas de simulación En esta actividad, una vez definidas las características básicas de las microarquitecturas, se desarrollarán los simuladores necesarios para evaluar el rendimiento y el consumo energético del procesador. Esta tarea comenzará una vez finalizados los diseños del banco de registros y las organizaciones cache enfocados a reducir el consumo. Además se desarrollará en paralelo al diseño de la jerarquía enfocada a reducir el tráfico de memoria. Para realizar estos simuladores se utilizarán diversas herramientas: ATOM que permite instrumentalizar de manera eficiente el código de los programas, la herramienta de libre distribución SimpleScalar que proporciona un simulador detallado de un procesador superescalar y la herramienta CACTI que permite evaluar el consumo de la jerarquía de memoria. Tarea 5.5 Análisis de Rendimiento En esta actividad se analizarán los resultados obtenidos por los diferentes simuladores para comprobar si se cumplen los estudios de potencialidad sobre cada técnica propuesta. Una vez determinada la potencialidad de cada técnica se analizarán las posibilidades de mejora y optimización para obtener el máximo rendimiento de todas ellas. 17 ACTIVIDAD 6: Arquitecturas tolerantes a variaciones Equipo: Doctores: Jaume Abella, F. Javier Vera, Antonio González, Antonio Rubio, Francesc Moll No doctores: Marc Pons, Javier S. Carretero En esta actividad se investigará el diseño de nuevos circuitos que se adapten mejor a las variaciones de manera que se pueda aumentar el rendimiento y reducir el consumo de dichos circuitos. También se propondrán técnicas para adaptar los circuitos actuales con mínimas modificaciones de manera que puedan explotar el margen existente entre el peor caso para variaciones y el caso medio. Tarea 6.1 Análisis y cuantificación de las variaciones Esta tarea requiere instalar las herramientas necesarias para generar el diseño eléctrico de un circuito a partir de su descripción en un lenguaje de alto nivel, generar sus características específicas para una determinada tecnología, y simular eléctricamente la latencia y consumo de dicho circuito. El siguiente paso será identificar los circuitos donde las variaciones pueden tener un mayor impacto en el procesador para proceder a la implementación de varias alternativas de diseño realistas en un lenguaje de alto nivel. Una vez hecho esto, se tomarán aquellos circuitos que sean objetivo de estudio para mejorar su comportamiento en presencia de variaciones y se caracterizará cual es el impacto en latencia y consumo de cada tipo de variación por separado y de todas ellas en conjunto para entender cuales son las implicaciones de las distintas variaciones y los posibles escenarios que se pueden presentar. Tarea 6.2 Mejora del rendimiento de diseños actuales en presencia de variaciones Dado que las compañías fabricantes de microchips son reticentes a la utilización de nuevos diseños de los circuitos porque requieren un proceso de evaluación y verificación, es interesante adaptar los circuitos actuales a los entornos con variaciones. Con la información del impacto de las distintas fuentes de variación en cada diseño de los circuitos a mejorar, se propondrán técnicas para adaptar estos diseños a los escenarios posibles en un entorno con variaciones. La idea es que la implementación utilizada sea aquella que posibilite unos mayores beneficios, y que dinámicamente el circuito se adapte a las condiciones de voltaje, temperatura y operandos de entrada, así como a las propias características físicas de los transistores que componen el circuito, para proporcionar el resultado en el menor tiempo posible y con el mínimo consumo necesario. Tarea 6.3 Propuesta de nuevos diseños de circuitos sensibles a variaciones Para aumentar más el beneficio de adaptar los circuitos a las variaciones existentes, se propondrán nuevos diseños de circuitos que, aunque puedan resultar menos eficientes que los actuales en el caso peor, resulten más eficientes en el caso medio cuando consideramos las variaciones, lo que dará lugar a un mayor beneficio en términos de rendimiento y consumo. ACTIVIDAD 7: Máquina virtual co-diseñada Equipo: Doctores: Enric Gibert, F. Jesús Sánchez, Antonio González No doctores: Abhishek Deb, Indu Bhagat, Josep M. Codina, Fernando Latorre En esta actividad se investigará en procesadores diseñados a base de un esfuerzo conjunto entre hardware y software, en el que la máquina virtual que compone la capa software encapsula la capa hardware. El objetivo es el de proponer un diseño eficiente y flexible basado en este paradigma, haciendo especial hincapié en el estudio de técnicas para la optimización de código a nivel de la capa software, a la vez que se proponen mejoras para adaptar la capa hardware al software que la encapsula. Tarea 7.1. Diseño de un sistema eficiente con una máquina virtual co-diseñada Se definirá un sistema cuya principal característica es la inclusión de una capa sofware que encapsula la capa hardware y que permita la optimización de código de forma dinámica. El objetivo es proponer y estudiar un sistema que tenga: (1) la flexibilidad que ofrece la máquina virtual co-diseñada para adaptar las aplicaciones al hardware que las ejecuta; (2) la potencia de cálculo que permita ejecutar eficientemente aplicaciones de propósito general; (3) la menor complejidad posible. 18 En esta tarea se destinará un importante esfuerzo en primer término para conseguir una infraestructura base para iniciar las tareas que a continuación se describirán. Esta se retomará una vez las otras tareas estén muy avanzadas para poder refinar la definición del sistema. Tarea 7.2. Desarrollo de técnicas de generación y optimización de código Esta tarea empieza una vez se ha definido el sistema básico donde se incluye el concepto de máquina virtual co-diseñada. El objetivo es generar una capa software capaz de mejorar el rendimiento de las aplicaciones de propósito general cuando estas se ejecuten en el hardware que forma parte de nuestro sistema. Para ello, se propondrá un conjunto de optimizaciones dinámicas de código que adapten estas aplicaciones a las características de la capa hardware. Una vez la tarea de estudio y propuesta de técnicas de generación esté ya sensiblemente avanzada, esta se compaginará con la tarea 5.3 en la que se propondrán mejoras en la capa hardware. Durante esta fase temporal en la que estas dos tareas convivirán se pretende explotar de forma máxima el paradigma co-diseñado entre hardware y software. Tarea 7.3. Desarrollo de mejoras en la capa hardware En esta tarea se estudiará como la capa hardware puede ser mejorada para una mejor adaptación a las aplicaciones modificadas mediante la capa software de nuestro sistema co-diseñado. El objetivo es obtener una capa hardware con una baja complejidad a nivel de estructuras, pero que a la vez sea capaz de procesar las aplicaciones a máximo rendimiento. Esta tarea se combinará con la tarea 5.2 para poder explotar las posibilidades que ofrece el paradigma co-diseñado, y más tarde se realizará en paralelo a la tarea 5.1 para la definición final de un sistema simple pero a la vez eficiente. 19 4.1 MODELO DE CRONOGRAMA (ORIENTATIVO) Actividades/Tareas Tarea 1.1. Desarrollo de herramientas de simulación Centro Ejecutor UPC Tarea 1.2 Reducción del consumo dinámico del procesador UPC Tarea 1.3 Reducción del consumo estático del procesador Tarea 1.4 Control de temperatura UPC UPC Tarea 2.1 Diseño de la microarquitectura e implementación UPC de las herramientas de simulación Tarea 2.2 Análisis de rendimiento y caracterización de la microarquitectura UPC Tarea 2.3 Mecanismos de recuperación UPC Tarea 3.1 Análisis y cuantificación del consumo de energía UPC Tarea 3.2 Mejora del compromiso entre rendimiento y con- UPC sumo de energía Tarea 3.3 Propuesta de una arquitectura VLIW heterogénea UPC Persona responsable y otras involucradas Ramon Canal, José González, Qiong Cai Grigorios Magklis, P. Chaparro, J.Vila Enric Herrero, David Oro, A. González Ramon Canal, José González, Qiong Cai Grigorios Magklis, P. Chaparro, J.Vila Enric Herrero, David Oro, A. González Ramon Canal, José González, Qiong Cai Grigorios Magklis, P. Chaparro, J.Vila Enric Herrero, David Oro, A. González Ramon Canal, José González, Qiong Cai Grigorios Magklis, P. Chaparro, J.Vila Enric Herrero, David Oro, A. González Pedro Marcuello, Rakesh Ranjan Carles Madriles, F.Jesús Sánchez Jordi Tubella, Antonio González Pedro Marcuello, Rakesh Ranjan Carles Madriles, F.Jesús Sánchez Jordi Tubella, Antonio González Pedro Marcuello, Rakesh Ranjan Carles Madriles, F.Jesús Sánchez Jordi Tubella, Antonio González Joan M. Parcerisa, José A. Piñeiro Stefan Bieschewsky, Pedro López Fernando Latorre, Antonio González Joan M. Parcerisa, José A. Piñeiro Stefan Bieschewsky, Pedro López Fernando Latorre, Antonio González Josep M. Codina, Alexandre Aletà Antonio González 20 Primer año (*) Segundo año (*) Tercer año (*) X|X|X|X|X|X|X|X|X|X|X| X|X|X|X| | | | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X | | | | | | | | | | | X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X | | | | | | | |X|X|X|X X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X|X|X| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X X|X|X|X|X|X|X|X|X|X| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X X|X|X|X|X|X|X|X|X|X| X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X | | | | | | | | | | | | | | | |X|X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X| | | | | | | | | | | | | | | | Actividades/Tareas Centro Ejecutor Persona responsable y otras involucradas Primer año (*) Tarea 3.4 Planificación de instrucciones para arquitecturas VLIW heterogéneas Josep M. Codina, Alexandre Aletà Antonio González Tarea 4.1 Diseño de una microarquitectura y herramientas UPC de simulación Joan M. Parcerisa, Eduardo Quiñones Antonio González X|X|X|X|X|X|X|X|X|X|X Tarea 4.2 Predicación en fuera de orden Joan M. Parcerisa, Eduardo Quiñones Antonio González | | | | | | |X|X|X|X|X Joan M. Parcerisa, Eduardo Quiñones Antonio González Tarea 4.3 Ventanas de registros Tarea 5.1 Diseño del banco de registros Tarea 5.2 Diseño de las organizaciones cache UPC UPC UPC UPC Tarea 5.3 Diseño combinado del banco de registros y las organizaciones cache UPC Tarea 5.4 Implementación de las herramientas de UPC simulación Tarea 5.5 Análisis de rendimiento Tarea 6.1 Análisis y cuantificación de las variaciones Tarea 6.2 Mejora del rendimiento de diseños actuales en presencia de variaciones UPC UPC UPC | | | | | | | | | | | Segundo año (*) X|X|X|X|X|X|X|X|X|X|X Tercer año (*) X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X| | | | | | | | | | | | | | | | X|X|X|X|X|X|X|X|X|X|X | | | | | | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X José González, Josep-Ll. Cruz Antonio González X|X|X|X|X|X|X|X|X|X|X | | | | | | | |X|X|X|X | | | | | | | | | | | Carlos Molina, Carles Aliagas Jordi Tubella, Antonio González X|X|X|X|X|X| | | | | | | |X|X|X| | | | | | | | | | | | | | | | | | | | | | | | | | | X|X|X|X|X|X| | | | | | | | | | | |X|X| | | | | | | | | |X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X | | | | | | | | | | | X|X|X|X|X|X| | | | | X|X|X|X|X|X|X|X|X|X|X | | | | | | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X | | | | | | | | | | | José González, Carles Aliagas Jordi Tubella, Antonio González Carlos Molina, Josep-Llorenç Cruz Carlos Molina, Carles Aliagas Jordi Tubella, Antonio González José González, Josep-Llorenç Cruz Carlos Molina, Carles Aliagas Jordi Tubella, Antonio González José González, Josep-Llorenç Cruz Jaume Abella, F. Javier Vera Marc Pons, Javier S. Carretero Antonio González, A. Rubio, F. Moll Jaume Abella, F. Javier Vera Marc Pons, Javier S. Carretero Antonio González, A. Rubio, F. Moll 21 X|X|X|X|X|X| | |X| | | | | | | |X|X|X|X|X|X Actividades/Tareas Tarea 6.3 Propuesta de nuevos diseños de circuitos sensibles a variaciones Centro Ejecutor UPC Tarea 7.1 Diseño de un sistema eficiente con una máquina UPC virtual co-diseñada Tarea 7.2 Desarrollo de técnicas de generación y optimización de código UPC Tarea 7.3 Desarrollo de mejoras en la capa hardware UPC Persona responsable y otras involucradas Jaume Abella, F. Javier Vera Marc Pons, Javier S. Carretero Antonio González, A. Rubio, F. Moll Enric Gibert, Indu Bhagat F.Jesús Sánchez, Josep M. Codina Fernando Latorre, Abhishek Deb Antonio González Josep M. Codina, Indu Bhagat Enric Gibert, F.Jesús Sánchez Fernando Latorre, Abhishek Deb Antonio González Fernando Latorre, Indu Bhagat Enric Gibert, F.Jesús Sánchez Abhishek Deb, Josep M. Codina Antonio González (*) Colocar una X en el número de casillas (meses) que corresponda 22 Primer año (*) Segundo año (*) Tercer año (*) | | | | | | | | | | | | | | | | | | | | | | X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X| | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X|X | | | |X|X|X|X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X|X | | | | | | | | | | | X|X|X|X|X|X|X|X|X|X|X|X X|X|X|X|X|X|X|X|X|X|X|X 5. BENEFICIOS DEL PROYECTO, DIFUSIÓN Y EXPLOTACIÓN EN SU CASO DE LOS RESULTADOS (máximo una página) CONTRIBUCIONES ESPERABLES DEL PROYECTO La contribución principal de este proyecto será la propuesta de microarquitecturas y técnicas de compilación que hagan un uso eficiente de las futuras tecnologías disponibles alrededor del 2012. En concreto, esperamos hacer contribuciones en los siguientes campos de la arquitectura de computadores: Propuesta de nuevos diseños de microarquitecturas multi-núcleo que reduzcan el consumo y la temperatura respeto a los actuales. Así como nuevas técnicas de distribución de trabajo entre los núcleos. Propuesta de nuevos mecanismos más eficientes de gestión de memoria y de recuperación de fallos de especulación para arquitecturas multithreaded especulativas. Nuevas técnicas para el diseño de unidades de memoria distribuidas con alta eficiencia energética para arquitecturas cluster superescalares. Establecimiento de nuevos conocimientos que permitan comprender mejor los compromisos entre especulación y uso de energía. Diseño de una arquitectura cluster VLIW heterogénea que alcance un mayor rendimiento que las homogéneas, a la vez que reduzca el consumo. Además, se desarrollará un algoritmo efectivo de asignación y planificación de instrucciones para estas arquitecturas que permita aprovechar las características del modelo propuesto. Propuesta de nuevas técnicas para incorporar mecanismos de predicación de instrucciones en procesadores fuera de orden, tanto en el ámbito de la microarquitectura (renombramiento, predicción de saltos), como en el del compilador. Propuesta de nuevas técnicas para incorporar el mecanismo de ventanas de registros en procesadores fuera de orden, de modo que hagan un uso eficiente del banco de registros y de las operaciones de spill a memoria. Nuevas propuestas de bancos de registros y algoritmos de precarga con un nivel más eficiente en tiempo y consumo energético. Nuevas propuestas de organizaciones cache con menor consumo energético y mínimo impacto en el rendimiento del procesador Nuevos diseños combinados de banco de registros y organizaciones cache capaces de reducir el tráfico de la jerarquía de memoria. Nuevas técnicas para adaptar los circuitos actuales a los entornos con variaciones de manera que se aumente el rendimiento y se reduzca el consumo de los procesadores. Nuevos diseños de circuitos que sean más eficientes en rendimiento y consumo en un entorno sujeto a variaciones. En el área de las máquinas virtuales co-diseñadas, el resultado de la investigación será en primer lugar un sistema simple pero a la vez eficiente, compuesto por una capa software y una capa hardware. Nuevas técnicas de optimización dinámica, que permitan que las aplicaciones de propósito general puedan ser ejecutadas eficientemente en un sistema co-diseñado. Nuevos diseños en la capa hardware de un sistema co-diseñado que permitan una reducción en la complejidad de ésta, a la vez que permitan -conjuntamente con la capa software- mejorar el rendimiento de las aplicaciones en el sistema. ADECUACIÓN DEL PROYECTO El objetivo principal del proyecto presentado es el de diseñar los procesadores de la próxima década investigando en las principales áreas que afectarán su rendimiento. Este objetivo forma parte del Programa Nacional de Tecnologías Informáticas y más concretamente del subprograma 7 referente a computación de altas prestaciones. Dentro de este subprograma, las líneas temáticas abordadas en este proyecto son especialmente la 7.1 y la 7.5, referidas respectivamente a arquitecturas de procesadores y multiprocesadores y a herramientas y entornos para la evaluación del rendimiento y la escalabilidad de los computadores de altas prestaciones. 23 PLAN DE DIFUSIÓN Como plan de difusión, se pretende en primer lugar la publicación de artículos en congresos y revistas internacionales del máximo nivel en las áreas de la microarquitectura del procesador y de compilación. Nuestra actividad científica es muy alta en cuanto a publicación de artículos en congresos. Tan sólo en los últimos cinco años los miembros del grupo hemos publicado más de 60 artículos en congresos internacionales y más de 20 en revistas, y esperamos mantener este nivel e intentar superarlo. En el área de la Arquitectura de Computadores las mejores publicaciones se realizan en un conjunto reducido de congresos. Los artículos se envían en su versión completa de alrededor de 6000 palabras, y pasan por un proceso de revisión por parte de no menos de 4 expertos internacionales y una posterior selección a cargo del Comité de Programa. La tasa de aceptación suele estar entre el 15% y el 20% de los artículos enviados, lo que suele suponer entre entre 20 y 30 artículos. Los congresos más importantes son los siguientes, ordenados según el índice de impacto en el Citeseer (http://citeseer.ist.psu.edu/): MICRO (International Symposium on Microarchitecture), HPCA (International Symposium on High-Performance Computer Architecture), ISCA (International Symposium on Computer Architecture), ICS (International Conference on Supercomputing), PACT (Parallel Architectures and Compiler Techniques), ICPP (Internacional Conference on Parallel Processing), ICCD (International Conference of Computer Design) y IPDPS (Internacional Parallel and Distributed Processing Symposium). La mayoría de estos congresos están coorganizados por las prestigiosas sociedades del IEEE (The Institute of Electrical and Electronics Engineers) y del ACM (Association for Computing Machinery). Las revistas también son utilizadas como vehículo de difusión de resultados, aunque suelen ser menos usadas que los congresos por los investigadores del área. La principal razón para esta preferencia es que el tiempo medio de publicación en estas revistas es de aproximadamente 3 años y, dado que este es un campo de un gran dinamismo, las nuevas ideas que aparecen deben ser revisadas a corto plazo para adecuarlas a los rápidos avances tecnológicos. El hecho es que, independientemente de lo anterior, existe como un acuerdo entre los investigadores de este campo de valorar, fundamentalmente, lo publicado en los buenos congresos. Existen buenas revistas en este campo tales como: IEEE MICRO, IEEE Transactions on Computers, IEEE Transactions on Parallel and Distributed Systems, Transactions on Computer Systems, ACM Transactions on Computer Systems, and IEEE Computer. En cuanto a los libros, no es frecuente el encontrar libros con temas de investigación. Lo que sí ocurre es que en algunos congresos se editan sus actas como libros de editoriales conocidas tales como IEEE y Springer Verlag En segundo lugar, se incorporará la investigación realizada en los cursos de doctorado del DAC, pues otro de los objetivos principales de nuestro grupo es la formación de personal investigador. Tan sólo en los últimos 5 años se han dirigido 9 tesis doctorales y se estan dirigiendo actualmente otras 14. También se impartirán cursos en algunos workshops y congresos del área, a fin de explicar al resto de la comunidad científica los avances realizados en los diferentes campos, así como charlas y seminarios en universidades españolas y extranjeras a fin de explicar las actividades que se realizan en el mismo. Y por otro lado, se va a hacer la difusión por medio de enlaces con otros grupos, tanto nacionales como internacionales que trabajan en temas similares. Finalmente, tenemos prevista la creación de una pàgina web del grupo, diseñada para proporcionar el fácil acceso a los resultados del proyecto por parte de la comunidad científica. Y finalmente, la difusión se va a hacer también por medio de enlaces con otros grupos, tanto nacionales como internacionales que trabajan en temas similares. PLAN DE EXPLOTACIÓN Para la explotación de los resultados de este proyecto de investigación el grupo cuenta con el apoyo activo de la empresa multinacional Intel, que se constituye en EPO de este proyecto (se adjunta carta de soporte). Esta empresa es líder mundial en el ámbito de los microprocesadores, y colabora con nuestro grupo a través de un convenio firmado con la Universidad Politécnica de Catalunya en febrero de 2002, en virtud del cual se constituye el laboratorio de investigación Intel-UPC Barcelona Research Center, dirigido por el Investigador Principal de este proyecto, y al cual pertenecen algunos de los miembros del grupo. La gran ventaja de nuestro grupo de investigación es que está formado por miembros de la comunidad universitaria algunos de los cuales colaboran estrechamente con miembros de la empresa Intel en el marco del laboratorio Intel-UPC Barcelona Research Center. Debido a esa estrecha relación, dichos miembros han sido incluidos como colaboradores en las tareas descritas en el Plan de Trabajo (ver sección 4). Mediante este vínculo, la transferencia tecnológica de los resultados encuentra un cauce natural y efectivo. El convenio firmado por Intel asegura la colaboración del grupo con los Microprocessor Technology Labs de Intel, que son los encargados de investigar en los procesadores del futuro. Con la investigación realizada dentro del grupo esperamos asesorar e influir a los grupos de diseño en las decisiones que han de tomar de cara a futuros diseños. 24 Por otra parte, y como hemos venido haciendo en el pasado (véase apartado 6.), el grupo espera colaborar en el futuro con otras empresas que por medio del establecimiento de los convenios pertinentes con la universidad, estén interesadas en la transferéncia de la investigación realizada. 25 6. HISTORIAL DEL EQUIPO SOLICITANTE EN EL TEMA PROPUESTO (En caso de Proyecto Coordinado, los apartados 6. y 6.1. deberán rellenarse para cada uno de los equipos participantes) (máximo dos páginas) Nuestro grupo de investigación se constituyó formalmente en julio de 2004, con el nombre Microarquitecturas y Compiladores (ARCO), aunque en realidad el grupo se venía forjando desde principios de los años noventa, aglutinándose a partir de la colaboración de sus miembros con el investigador principal Antonio González, quien ha dirigido las tesis de buena parte de los doctores del grupo. El grupo está formado por miembros del Departamento de Arquitectura de Computadores de la UPC (14), del Departamento de Informática de la URV (2), de la Universitat de Vic (1) y del Intel-UPC Barcelona Research Center (5). El grupo está formado por profesores (8) cinco de los cuales son doctores, estudiantes de doctorado (12) e investigadores postdoctorales (2). El presente proyecto es la continuación del anterior proyecto titulado “Microarquitectura y compiladores para futuras nanotecnologías” financiado por el Ministerio de Ciencia y Tecnología (TIN2004-03072), y supone un importante crecimiento del grupo (22) en relación al anterior (12), debido en parte a la adscripción al proyecto de miembros del grupo que en la anterior ocasión no participaron en él y en parte al crecimiento del grupo con nuevos miembros. En febrero del año 2002 se constituyó el laboratorio UPC-Intel Barcelona Research Center, dirigido por Antonio González investigador principal en este proyecto. Algunos de los investigadores del grupo se integraron en este laboratorio, uniéndose a otros investigadores procedentes de la UPC y de otras universidades. Desde el punto de vista de la UPC, el laboratorio UPC-Intel IBRC pertenece a la unidad estructural del Departamento de Arquitectura de Computadores, mientras que desde el punto de vista de Intel Corporation el laboratorio está vinculado a los MTL (Microprocessor Technology Labs, anteriormente MRL). Para Intel este centro es el primer centro de investigación en Europa. Este tipo de acuerdo permite al centro tener una estrecha relación tanto con la universidad (colaboración con profesores, becarios, etc.) como con la empresa (soporte de personal de Intel, acceso a tecnología punta, etc.). Es por ello que tanto para la UPC como para Intel las ventajas son muchas. El objetivo del centro es la investigación a largo plazo en las áreas de microarquitectura y compilación. CONTRIBUCIONES REALIZADAS La actividad científica de nuestro grupo es muy alta en cuanto a publicación de artículos en congresos. Tan sólo en los últimos cinco años los miembros del grupo hemos publicado más de 60 artículos en congresos internacionales y más de 20 en revistas. Diversos miembros del equipo investigador han trabajado durantes los últimos años en temas muy relacionados con los del proyecto que se solicita. Casi todos ellos han investigado en temas relacionados con varias de las tareas de este proyecto durante su tesis doctoral, lo cual se ha visto reflejado en diversas publicaciones internacionales. Para describir la actividad investigadora de los últimos años relacionada con los temas propuestos, agruparemos las publicaciones por temas. Para cada tema se ha incluido una lista de las referencias más relevantes en las que hay miembros del proyecto involucrados. Reducción del consumo y control de la temperatura En este tema se han propuesto mecanismos para la reducción del consumo de la lógica de emisión de instrucciones, se han hecho trabajos en la utilización de compresión de datos para la reducción de consumo, así como también una primera evaluación de arquitecturas multi-núcleo: Matteo Monchiero, Ramon Canal and Antonio González, "Design Space Exploration for Multicore Architectures: A Power/Performance/Thermal View", 20th ACM International Conference on Supercomputing (ICS'06), Cairns (Australia), June 2006. Jaume Abella, Antonio González. "SAMIE-LSQ: Set-Associative Multiple-Instruction Entry Load/Store Queue". In the 20th International Parallel and Distributed Processing Symposium (IPDPS'06), Rhodes (Greece), April 2006. Jaume Abella, Antonio González. "Heterogeneous Way-Size Cache". In the 20th International Conference on Supercomputing (ICS'06), Cairns (Australia), June 2006. Enric Gibert, Jaume Abella, Jesús Sánchez, Xavier Vera, Antonio González. "Variable-Based Multi-module Data Caches for Clustered VLIW Processors". In the 14th International Conference on Parallel Architectures and Compilation Techniques (PACT'05), Saint Louis (Missouri), September 2005. Timothy Jones, Michael F.P. O'Boyle, Jaume Abella, Antonio González, Oguz Ergin. "Compiler Directed Early Register Release". In the 14th International Conference on Parallel Architectures and Compilation Techniques (PACT'05), Saint Louis (Missouri), September 2005. 26 Jaume Abella, Antonio González, Xavier Vera, Michael F.P. O'Boyle. "IATAC: A Smart Predictor to Turn-off L2 Cache Lines". In ACM Transactions on Architecture and Code Optimization (TACO), March 2005. Timothy Jones, Michael F.P. O'Boyle, Jaume Abella, Antonio González. "Software Assisted Issue Queue Power Reduction". In the 11th International Symposium on High Performance Computer Architecture (HPCA'05), San Francisco (California), February 2005. Ramon Canal, Antonio González and James E. Smith, "Software- Controlled Operand Gating", Proc. of the International Symposium on Code Generation and Optimization (CGO-2), Palo Alto (CA-USA), pp. 125-136, March 2004 Jaume Abella and Antonio González, “Low-Complexity Distributed Issue Queue”, in Procs. of the 10th Int. Symp. on High Performance Computer Architecture, Feb. 2004 Jaume Abella and Antonio González. “On Reducing Register Pressure and Energy in Multiple-Banked Register Files”. In 21st International Conference on Computer Design (ICCD 2003), pp. 14-20, January 2003. Jaume Abella, Ramon Canal and Antonio González. Power- and Complexity-Aware Issue Queue Designs. IEEE Micro, pp. 50-58, vol. 23, no. 5, September 2003. Special Issue on Power & Complexity Aware Design. Jaume Abella and Antonio González. “Power Efficient Data Cache Designs”. In 21st International Conference on Computer Design (ICCD 2003), pp. 8-13, October 2003. Jaume Abella and Antonio González. “Power-Aware Adaptive Issue Queue and Register File”. In 10th International Conference on High Performance Computing (HiPC 2003), pp. - , 2003. R. Canal, A. González. “Reducing the Complexity of the Issue Logic”. Proceedings of the 2001 International Conference on Supercomputing, pp. 312-320, June 2001. Daniele Folegnani and Antonio González, “Energy-Effective Issue Logic”, in Procs. of the 28th Int. Symp. on Computer Architecture (ISCA-28), July 2001 R. Canal, A. González and J.E. Smith, “Very Low Power Pipelines using Significance Compression”, in Proceedings of the 33rd International Symposium on Microarchitecture, pp. 181-190, December 2000. R. Canal, A. González. “A Low Complexity Issue Logic”. Proceedings of the 2000 International Conference on Supercomputing, June 2000. Procesadores multithreaded especulativo En este tema se ha propuesto una microarquitectura que es capaz de ejecutar múltiples threads de forma especulativa, lo que permite obtener paralelismo de grano grueso en aplicaciones que usualmente el compilador no es capaz de paralelizar. Se han propuesto diversos esquemas de generación de threads especulativos, así como diferentes tipos de predictores de valores para reducir las sincronizaciones entre threads, tanto hardware como software. C. Garcia, C. Madriles, J. Sánchez, P. Marcuello, A. González and D. Tullsen, “Mitosis Compiler: An Infrastructure for Speculative Threading based on Pre-computation Slices”, in Proc. of the Int. Conf. on Programming Languages Design and Implementation, pp. 269-278, Junio 2005. Pedro Marcuello and Antonio González, “Thread-Spawning Schemes for Speculative Multithreading”, in Procs. of the 8th Int. Symp. on High Performance Computer Architecture (HPCA-8), pp. 55-64, Feb. 2002 Pedro Marcuello and Antonio González, “A Quantitative Assessment of Thread-Level Speculation Techniques”, in Procs. on the Int. Parallel Processing Symposium (IPPS´2000), May 2000 Pedro Marcuello and Antonio González, “Clustered Speculative Multithreaded Processors”, in Procs. of the Int. Conf. on Supercomputing (ICS'1999), pp. 365-372, June 1999. Pedro Marcuello, Antonio González and Jordi Tubella, “Speculative Multithreaded Processors”, in Procs. of the Int. Conf. on Supercomputing (ICS'1998), pp. 77-84, July 1998. También se han propuesto diversos mecanismos para predecir valores y ejecutar especulativamente las instrucciones que sirven, tanto para acelerar la ejecución de instrucciones aritméticas, como para mejorar los predictores de salto. Asimismo se han propuesto mecanismos de poca complejidad para la recuperación en caso de fallo de predicción. También se han propuesto mecanismos para explotar el reúso tanto a nivel de instrucciones como a nivel de trazas. C. Molina, J. Tubella and A. González, "Reducing Misspeculation Penalty in Trace-Level Speculative Multithreaded Architectures", In Proceedings of the 6th International Symposium on High Performance Computing, September 2005. C. Molina, A. González and J. Tubella, "Compiler Analysis for Trace-Level Speculative Multithreaded Architectures", In Proceedings of the 9th Annual Workshop on Interaction between Compilers and Computer Architectures, San Francisco, United States, February 2005. C. Molina, A. González and J. Tubella, "Trace-Level Speculative Multithreaded Architecture", In Proceedings of the International Conference on Computer Design, September 2002. 27 A. González, J. Tubella and C. Molina, "Trace Level Reuse", In Proceedings of the International Conference on Parallel Processign, September 1999. Pedro Marcuello and Antonio González, “Value Prediction for Speculative Multithreaded Architectures”, in Proc. of the 32nd Int. Symp. on Microarchitecture, pp. 230-236, Noviembre 1999. José González and Antonio González, “Control-flow Speculation through Value Prediction for Superscalar Processors”, in Procs. of the Int. Conf. on Parallel Architectures and Compilation Techniques (PACT'99), pp. 57-65, October 1999. C. Molina, A. González and J. Tubella, "Dynamic Removal of Redundant Computations", In Proceedings of the International Conference on Supercomputing, June 1999. Jordi Tubella and Antonio González, “Control Speculation in Multithreaded Processors through Dynamic Loop Detection”, in Procs. of the 4th Int. Symp. on High-Performance Computer Architecture (HPCA'98), pp. 14-23, January 1998. José González and Antonio González, “The Potential of Data Value Speculation to Boost ILP”, in Procs. of the Int. Conf. on Supercomputing (ICS'1998), pp. 21-28, July 1998. José González and Antonio González, “Speculative Execution via Address Prediction and Data Prefetching”, in Procs. of the Int. Conf. on Supercomputing (ICS'97), pp. 196-203, July 1997. Procesadores clusterizados En el tema de las arquitecturas clusterizadas se han hecho contribuciones principalmente en dos ámbitos: arquitecturas cluster superescalares y arquitecturas cluster VLIW, los cuales relacionamos por separado: En el ámbito de las arquitecturas cluster superescalares, se han propuesto diversos mecanismos dinámicos para la distribución de instrucciones, a fin de minimizar las comunicaciones y maximizar el equilibrio de carga entre clusters. Se han propuesto mecanismos basados en predicción de valores para la reducción de las comunicaciones entre clusters, se han propuesto diversos modelos eficientes de redes de interconexión punto a punto entre clusters, de bajo coste y complejidad, y se ha hecho un estudio detallado de técnicas de predicción de bancos para el diseño de una unidad de memoria distribuida. Stefan Bieschewski, Joan Manuel Parcerisa, Antonio González, “Memory Bank Predictors”. International Conference on Computer Design, pp. 666-668, San Jose, USA, October, 2005. Jaume Abella, Antonio González. "Inherently Workload-Balanced Clustered Microarchitecture". In the 19th International Parallel and Distributed Processing Symposium (IPDPS'05), Denver (Colorado), April 2005. Joan-Manuel Parcerisa, Julio Sahuquillo, Antonio González and José Duato. “On-Chip Interconnects and Instruction Steering Schemes for Clustered Microarchitectures”. IEEE Transactions on Parallel and Distributed Systems, 16(2):130144, IEEE Computer Society, February 2005, ISSN 1045-9219 Joan-M. Parcerisa, Julio Sahuquillo, Antonio González and José Duato. Efficient Interconnects for Clustered Microarchitectures. In Proc. of the 2002 Intl. Conf. On Parallel Architectures and Compilation Techniques (PACT’02), pp.291-300, Sept. 2002. Ramon Canal, Joan-M. Parcerisa and Antonio González, “Dynamic Code Partitioning for Clustered Architectures”. International Journal of Parallel Programming, pp. 59-79, vol. 29, no. 1, February 2001. Ramon Canal, Joan-Manuel Parcerisa and Antonio González. Dynamic Cluster Assignament Mechanisms. In Sixth International Symposium on High-Performance Computer Architecture (HPCA'2000), pp. 133-142, January 2000. Joan M. Parcerisa and Antonio González, “Reducing Wire Delay Penalty through Value Prediction”, in Procs. Of the 33th Int. Symp. on Microarchitecture (MICRO-33), pp. 317-326, December 2000. Ramon Canal, Joan-M. Parcerisa and Antonio González, “A Cost-Effective Clustered Architecture”, in Procs. of the Int. Conf. on Parallel Architectures and Compilation Techniques (PACT'99), pp. 160-168, October 1999. En el ámbito de las arquitecturas cluster VLIW, se han propuesto diversas arquitecturas VLIW planificadas estáticamente por parte del compilador. En estas arquitecturas se ha estudiado el particionado tanto del banco de registros como del primer nivel de memoria cache, y se han propuesto técnicas de compilación que permiten aumentar el rendimiento de estos procesadores. En primer lugar, se han propuesto algoritmos para asignación y planificación de instrucciones: J.M. Codina, J. Sánchez and A. González.. A Compartive Study of Modulo Scheduling Techniques, in Proceedings of the International Conference on Supercomputing (ICS’02), June 2002. J.M. Codina, J. Sánchez and A. González, "A Unified Modulo Scheduling and Register Allocation Technique for Clustered Processors", in Procs. of Int. Conf. on Parallel Architectures and Compilation Techniques (PACT'01), Sept. 2001. A. Aletà, J.M. Codina, J. Sánchez and A. González. "Graph-Partitioning Based Instruction Scheduling for Clustered Processors", in Proc. of 34th Int. Symp. On Microarchitecture, Dec 2001. En segundo lugar, se han propuesto técnicas para la mejora de la planificación centrados en la reducción del número de comunicaciones mediante replicación de código, y en la asignación de registros y spill code: 28 A. Aletà, J.M. Codina, A. González and D. Kaeli. “Demistifying On-the-fly Spill Code”, in Procs. of the Conf. on Programming Languages and Implementation Design, 2005. A. Aletà, J.M. Codina, A. González and D. Kaeli, "Removing Communications in Clustered Microarchitectures through Instruction Replication", in Transactions on Architecture and Code Optimization, Volume 1 , Issue 2, June 2004. A. Aletà, J.M. Codina, A. González and D. Kaeli, "Instruction Replication for Clustered Microarchitectures", in Procs. of 36th Int. Symp. on Microarchitecture (MICRO-36), Dec. 2003. A. Aletà, J.M. Codina, J. Sánchez, A. González and D. Kaeli. "Exploiting Pseudo-schedules to Guide Data Dependence Graph Partitioning", in Proc. of the Int. Conf. on Parallel Archirectures and Compilation Techniques (PACT'02), Sept 2002. Josep M. Codina, Jesús Sánchez and Antonio González. “URACAM: A Unified Register Allocation, Cluster Assignment and Modulo Scheduling Approach”. In 9th International Workshop on Compilers for Parallel Computers (CPC 2001), pp. 23-33, June 2001. J. Sánchez and A. González, "The Effectiveness of Loop Unrolling for Modulo Scheduling in Clustered VLIW Architectures", in Procs. of the 29th Int. Conf. on Parallel Processing (ICPP-2000), pp. 555-562, Aug. 2000. Y en tercer lugar, se han propuesto técnicas para la mejora del rendimiento de la memoria con caches distribuídas: E. Gibert, J. Sánchez and A. González, "Flexible Compiler-Managed L0 Buffers for Clustered VLIW Processors", in Procs. of 36th Int. Symp. on Microarchitecture (MICRO-36), Dec. 2003. E. Gibert, J. Sánchez and A. González, "Local Scheduling Techniques for Memory Coherence in a Clustered VLIW Processor with a Distributed Data Cache", in Procs. of 1st Int. Symp. on Code Generation and Optimization (CGO'03), March 2003. E. Gibert, J. Sánchez and A. González, "Effective Instruction Scheduling Techniques for an Interleaved Cache Clustered VLIW Processor", in Procs. of 35th Int. Symp. on Microarchitecture, Desember 2002. E. Gibert, J. Sánchez and A. González, "An Interleaved Cache Clustered VLIW Processor", in Procs. of 16th Int. Conf. on Supercomputing, June 2002. Jesús Sánchez and Antonio González. “Modulo Scheduling for a Fully-Distributed Clustered VLIW Architecture”. In 33th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO-33), pp. 124-133, December 2000. Extensiones del ISA en procesadores de planificación dinámica Este es un tema en el que llevamos poco tiempo trabajando, por lo que hay sólo una publicación. Hasta el momento, se ha propuesto una técnica para la ejecución de instrucciones predicadas, basada en la predicción de predicados. Eduardo.Quiñones, Joan M. Parcerisa, Antonio Gonzalez. “Selective Predicate Prediction for Out-of-Order Processors”. In ICS'06: Proceedings of the 20th annual international conference on Supercomputing, pages 46 – 66. June 2006. Jerarquía de memoria y arquitectura del banco de registros Nuestro principal objetivo en estos últimos años ha sido proponer novedosos diseños para la cache de datos y para el banco de registros que decrementan sensiblemente el tráfico de memoria, producen reducciones significativas en el área ocupada por el circuito, acortan las latencias de los caminos críticos y reducen considerablemente el consumo de energía del procesador. Concretamente se ha demostrado que una parte importante del tráfico entre el primer y el segundo nivel de la jerarquía de memoria puede ser evitado sin coste adicional significativo. Además los requerimientos de capacidad de las caches de datos y del banco de registros se pueden reducir explotando la enorme cantidad de replicación existente en los programas convencionales. C. Aliagas, C. Molina, M. García, A. González and J. Tubella, "Value Compression to Reduce Power in Data Caches", In Proceedings of the 9th International Conference on Parallel and Distributed Computing (Euro-Par), August 2003. R. Desikan, D. Bourger, S.W. Keckler, José Lorenzo Cruz, Fernando Latorre, Antonio González and Mateo Valero. “Errata on Measuring Experimental Error in Microprocessor Simulation.”, ACM, Computer Architecture News, pp. 2-4, vol. 30, no. 1, March 2002. J. L. Cruz, A. González, M. Valero and N. Topham, “Multiple-Banked Register File Architectures”, Proc. of 27th. Ann. Int. Symposium on Computer Architecture (ISCA 2000), Vancouver (Canada), June 12-14, 2000. J. L. Cruz, A. González, M. Valero and N. Topham, “A Register File Cache”, X Jornadas de Paralelismo, Murcia, September 13-15, 1999. C. Molina, C. Aliagas, M. García, J. Tubella and A. González, "Non Redundant Data Cache", In Proceedings of the International Symposium on Low Power Electronics and Design, August 2003. Carlos Molina, Antonio González and Jordi Tubella, “Reducing Memory Traffic via Redundant Store Instructions”, in 7th Int. Conf. on High-Performance, Computing and Networking (HPCN'99), pp. 1246-1249, Abril 1999. 29 Nigel Topham and Antonio González. Randomized Cache Placement for Eliminating Conflicts. IEEE Transactions on Computers, vol. 48, no. 2, February 1999. Teresa Monreal, Antonio González, Mateo Valero, José González and Victor Viñals. Delaying Physical Register Allocation Through Virtual-Physical Registers. In 32nd Annual ACM/IEEE International Symposium on MicroArchitecture (MICRO32), pp. 186-192, November 1999. Jesus Sanchez and Antonio Gonzalez. A Locality Sensitive Multi-Module Cache with Explicit Management. In Procs. of Int. Conf. on Supercomputing (ICS'99), pp. 51-59, June 1999. A. González, J. Tubella and C. Molina, "The Performance Potential of Data Value Reuse", Technical Report UPC-DAC1998-23, Universitat Politècnica de Catalunya, September 1998. Arquitecturas tolerantes a variaciones Este es un tema en el que llevamos poco tiempo trabajando, por lo que hay todavía un número reducido de publicaciones. Hasta el momento se han realizado las siguientes contribuciones: X. Vera, J. Abella, O. Unsal, A. González, E. Ergin. Checker Backend for Soft and Timing Error Detection and Recovery. En el Second Workshop on System Effects of Logic Soft Errors (SELSE’06), Urbana-Champaign (Illinois), Abril 2006. X. Vera, O. Unsal, A. González. X-Pipe: An Adaptive Resilient Microarchitecture for Parameter Variations. En el First Workshop on Architectural Support for Gigascale Integration (ASGI’06), Boston (Massachussets), Junio 2006. Máquina virtual co-diseñada El equipo de investigación que abordará este tema ha empezado recientemente la investigación activa en el área de máquinas virtuales, razón por la cual todavía no tiene publicaciones reseñables. No obstante, el grupo ha investigado durante años y ha realizado notables contribuciones en el campo de la generación y optimización de código a nivel estático a través del compilador, además de realizar contribuciones en el campo de la arquitectura de computadores. Ambos conjuntamente permiten al grupo estar en una perfecta situación para el trabajo de investigación en un área, la de los sistemas co-diseñados, donde el grupo puede utilizar de forma simultánea los conocimientos y experiencia adquiridos a lo largo de estos años para estudiar nuevas alternativas para los procesadores del futuro. Algunos ejemplos de las anteriores contribuciones son: A. Aletà, J. M. Codina, J. Sánchez, A. González, "Graph-Partitioning Based Instruction Scheduling for Clustered Processors", in Proceedings of the 34th International Symposium on Microarchitecture, pp. 150-159, Dec. 2001 J. M. Codina, J. Sánchez, A. González, “A Unified Modulo Scheduling and Register Allocation Technique for Clustered Processors”, in Proceedings of International Conference on Parallel Architectures and Compilation Techniques, pp. 175184 , Sept. 2001 E. Gibert, J. Abella, J. Sánchez, X. Vera, A. González, “Variable-Based Multi-Module Data Caches for Clustered VLIW Processors”, to appear in Proceedings of 14th International Conference on Parallel Architectures and Compilation Techniques, pp. 207-217, Sept. 2005 J. Llosa, A. González, E. Ayguadé, M. Valero, "Swing Modulo Scheduling", in Proceedings of International Conference on Parallel Architectures and Compilation Techniques, pp.80-86, Oct. 1996 F. Latorre, J. González, A. González, "Back-End Assignment Schemes for Clustered Multithreaded Processors", in Proceedings of International Conference on Supercomputing, pp. 316-325, June 2004 J. Sánchez, A. González, “A Locality-Sensitive Multi-Module Cache with Explicit Management”, in Proceedings of International Conference on Supercomputing, pp. 51-59, June 1999 COLABORACIÓN CON OTROS GRUPOS DE INVESTIGACIÓN Diversos miembros de grupo han realizado parte de su trabajo de investigación en colaboración con otros grupos internacionales. A continuación se listan estos contactos, especificando el tema en el que se han realizado: Prof. David Padua (University of Illinois at Urbana-Champaign). Desarrollo de ICTINEO y definición de su representación intermedia. Prof. Nigel Topham (Edimburgh University). Investigación en temas de organización de registros, memorias cache, y paralelismo a nivel de instrucciones. Prof. Olivier Temam (Universidad de Versailles, Francia). Investigación en jerarquía de memoria para superescalares. Prof. Jim Smith (University of Wisconsin-Madison). Investigación en temas de procesadores vectoriales. 30 Dr. Jaime Moreno (IBM Thomas Watson). Investigación en temas de arquitecturas para bajo consumo. Prof. Mike O’Boyle (Edinburgh University). Investigación en temas de compilación para bajo consumo. Prof. David Kaeli (Northeatern University). Investigación en temas de planificacion de instrucciones. Prof. José Duato (Universidad Politécnica de Valencia). Investigación en redes on-chip. Prof. Victor Viñals (Universidad de Zaragoza). Investigación en arquitectura del fichero de registros. Prof. David Brooks (Universidad de Stanford). Investigación en temas de reducción del consumo. Prof. Antonio Rubio and Francesc Moll (Depto. de Electrónica, UPC). Investigación en temas de Arquitecturas tolerantes a variaciones de los circuitos. RELACIONES CON EMPRESAS Diversos miembros del grupo han colaborado durante los últimos años con diferentes empresas de diferentes formas: colaboraciones en proyectos europeos de investigación, estancias de varios meses y colaboración como becarios financiados por parte de las empresas. Una descripción de esta colaboración es la siguiente: Intel. Intel, empresa líder en el sector de los microprocesadores, participa activamente en el presente proyecto aportando personal y financiación al centro UPC-IBRC, al cual pertenecen algunos investigadores de este grupo. Además Intel financia con becas a varios estudiantes de doctorado del grupo para investigación sobre los futuros procesadores. Se ha participado en varios proyectos europeos, como ANTITESYS i MHAOTEU. Este último es un proyecto de investigación básica, muy relacionado con el actual proyecto, en el que hemos sido los coordinadores. En dicho proyecto, se han desarrollado herramientas que permiten detectar y optimizar, los cuellos de botella de la jerarquía de la memoria. Para ello se ha colaborado con la empresa EPC (Edinburg Portable Compilers) IBM. Se ha obtenido financiación para investigar en el desarrollo de arquitecturas de bajo consumo. Analog Devices. Se ha colaborado en el tema de generación de código para arquitecturas VLIW. ST Microelectronics. Se ha colaborado en el tema de procesadores embedded para DSPs. Varios de los investigadores del grupo han hecho estancias (durante la realización de su tesis doctoral) de 3 meses para el verano en empresas fabricantes de microprocesadores tales como Sun, Compaq e Intel. Allí han participado en proyectos de futuros microprocesadores de forma que ha sido un buen complemento para su formación académica. 31 6.1 FINANCIACIÓN PÚBLICA Y PRIVADA (PROYECTOS Y CONTRATOS DE I+D) DE LOS MIEMBROS DEL EQUIPO INVESTIGADOR Debe indicarse únicamente lo financiado en los últimos cinco años (2000-2004), ya sea de ámbito autonómico, nacional o internacional. Deben incluirse las solicitudes pendientes de resolución. Subvención concedida o solicitada EURO Periodo de vigencia o fecha de la solicitud (2) Título del proyecto o contrato Relación con la solicitud que ahora se presenta (1) Investigador Principal Computación de altas prestaciones-3 1 Mateo Valero 1,101,938 € CICYT TIC2001-0995 01-04 C Computación de altas prestaciones IV 1 Mateo Valero 1,190,000 € TIN2004-07739-C02-01 05-07 C Microarquitectura y compiladores para futuras nanotecnologías 1 Antonio González 155,000 € TIN2004-03072 04-07 C Grupo de Investigación Consolidado 1 Antonio González 37600 € 2005SGR00950 05-07 C Acuerdo UPC-Intel para la creación de UPC-IBRC 2 Antonio González A Networked Training Initiative for Embedded Systems Design (ANTITESYS) 1 Antonio González 83,616 € European Commission IST Program 02-05 C Embedded Processors 1 Antonio González 105,177 € ST Microelectronics 00-05 C 33 Entidad financiadora y referencia del proyecto 02-07 C Ultra-Low Power Microprocessors 1 Antonio González 43,273 € IBM T.J. Watson 00-03 C Smart Register File Extension for High-level Semantics 1 Antonio González, Josep Llosa y Mateo Valero 29,449 € Intel Corporation 00-03 C Low-power High Performance Microarchitecture and Compilation 1 Antonio González, Mike O’Boyle 115,093 £ The Engineering and Physical Sciences Research Council (UK) 02-05 C Speculative Vector Processors 1 Antonio González y Mateo Valero 75,000 $ Intel Corporation 01-04 C Memory Architectures for Multithreaded Processors 1 Antonio González y Mateo Valero 50,000 $ Intel Corporation 01-03 C Customized Memory Architectures for Embedded Processors 1 Antonio González 28,900 € ST Microelectronics 01-02 C Adaptative Microarchitectures for Power Reduction 1 Antonio González 75,000 $ Intel Corporation 02-05 C Memory Architecture and Compiler Support for Clustered EPIC Processors 1 Antonio González y Jesús Sánchez 75,000 $ Intel Corporation 03-06 C Power and Communication-Aware Microarchitectures 1 Antonio González y Joan Manel Parcerisa 75,000 $ Intel Corporation 03-06 C Variations-Aware Circuit Designs for Microprocessors 1 Antonio González 25,000 $ Intel Corporation 05-08 C 34 Mejora de las prestaciones y servicios ofrecidos por las redes de computadores personales. Desarrollo de aplicaciones multimedia distribuidas 2 José Manuel García Carrasco 82,458 € CICYT 01-03 C Automatic Optimization of Parallel Routines 2 Domingo Giménez 11,419 € Fundación Séneca 02-03 C (1) Escríbase 0, 1, 2 o 3 según la siguiente clave: 0 = Es el mismo proyecto 1 = está muy relacionado 2 = está algo relacionado 3 = sin relación (2) Escríbase una C o una S según se trate de una concesión o de una solicitud. 35 7. CAPACIDAD FORMATIVA DEL PROYECTO Y DEL EQUIPO SOLICITANTE (En caso de Proyecto Coordinado deberá rellenarse para cada uno de los equipos participantes) El equipo solicitante está compuesto por investigadores con diferente nivel de experiencia. Actualmente consta de 22 miembros, 8 de los cuales son doctores, y otros 14 están realizando tesis doctorales y/o cursando estudios de doctorado en el Departamento de Arquitectura de Computadores de la UPC. El grupo ha venido participando activamente en la docencia del programa de doctorado del DAC, y tiene amplia experiencia en la dirección de tesis doctorales. Antonio González ha dirigido 13 tesis leídas en los últimos 10 años y Jordi Tubella ha dirigido 1 tesis leída en 2005. De los doctores que forman parte del equipo, 6 de ellos están actualmente dirigiendo o co-dirigiendo tesis. En total, el grupo en su conjunto está dirigiendo un total de 14 tesis doctorales del programa de doctorado del Departamento de Arquitectura de Computadores de la UPC. Este programa de doctorado ha recibido la Mención de Calidad del Ministerio de Educación, Cultura y Deporte, referencia MCD2003-00126 (BOE del 28 de mayo del 2003) y renovada para los cursos académicos 2004/05, 2005/06 y 2006/07. Por un lado, la vinculación de nuestro grupo con el Departamento de Arquitectura de Computadores de la Universitat Politècnica de Catalunya facilita la integración de los becarios del Programa de Formación de Investigadores en el programa de doctorado de Arquitectura y Tecnología de Computadores que se imparte en dicho departamento, y en el recientemente iniciado master Arquitectura de Computadores, Redes y Sistemas (CANS). Y por otro lado, la vinculación del grupo tanto con la UPC como con la empresa Intel favorecere la posibilidad de que dichos estudiantes puedan realizar estancias en el extranjero con grupos de investigación afines al equipo solicitante. 36