Convocatoria de ayudas de Proyectos de Investigación (2004)

Anuncio
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
Descargar