Site hosted by Angelfire.com: Build your free website today!



LOS PRINCIPIOS BASICOS DE ARQUITECTURAS DE VLIW

Mismo - la Palabra de la Instrucción Larga (VLIW) las arquitecturas son una alternativa conveniente por aprovecharse de la instrucción - el paralelismo nivelado (ILP) en los programas, eso está, por ejecutar más de uno básico (primitivo) la instrucción en un momento. Éstos los procesadores contienen las unidades funcionales múltiples, saque de la instrucción esconda un Mismo - Palabra de la Instrucción Larga que contiene varias instrucciones primitivas, y despacha el VLIW entero para la ejecución paralela. Estas capacidades son se aprovechado de por recopiladores que generan código que se ha agrupado las instrucciones primitivas independientes ejecutable en paralelo. Los procesadores tenga la lógica del mando relativamente simple porque ellos no realizan cualquiera planificación dinámica ni pidiendo de nuevo de funcionamientos (como es el caso en la mayoría los procesadores del superscalar contemporáneos).

VLIW se ha descrito como un sucesor natural a RISC, porque mueve la complejidad del hardware al recopilador, permitiendo más simple, los procesadores más rápidos. Como declarado en El Informe del microprocesador (2/14/94).

El objetivo de VLIW es eliminar la instrucción complicada fijando y parangona expedición que ocurre en más moderno los microprocesadores. En la teoría un procesador de VLIW debe ser más rápido y menos caro que una astilla de RISC comparable.

La instrucción puesta para una arquitectura de VLIW tiende a consistir de simple las instrucciones (RISC - gusta). El recopilador debe congregar muchos primitivo los funcionamientos en una sola" palabra de la instrucción" tal que el múltiplo se guardan las unidades funcionales ocupado que requiere bastante la instrucción - el paralelismo nivelado (ILP) en una sucesión del código para llenar el las hendeduras del funcionamiento disponibles. El tal paralelismo es descubierto por el el recopilador a través de fijar el código especulativamente por los bloques básicos, el pipelining del software realizando, reduciendo el número de funcionamientos, ejecutado, entre otros.

VLIW se ha percibido como padecer las limitaciones importantes, tal, como la necesidad para un recopilador poderoso, tamaño del código aumentado que se levanta de aggresive que fija políticas, bandwidth de memoria más grande y registro - el archivo el bandwidth, limitaciones debido a la cerradura - el funcionamiento del paso, binario, la compatibilidad por las aplicaciones con el número variante de funcional las unidades y latencias. En los recientes años, ha habido progreso significante con respecto a estos problemas, debido a los adelantos generales en la tecnología del semiconductor así como a VLIW - las actividades específicas. Por ejemplo, nuestro el árbol - la arquitectura de VLIW basado proporciona el binario la compatibilidad para las aplicaciones de VLIW de anchura variante, y nuestro El recopilador de VLIW contiene el estado - de - el - el arte el parallelizing / perfeccionando los algoritmos.

UNA ARQUITECTURA DE VLIW BASÓ EN EL ÁRBOL - LAS INSTRUCCIONES

En nuestra arquitectura de VLIW, un programa consiste en una sucesión de el árbol - las instrucciones, o simplemente los árboles, a cada uno de que corresponde un la rama del multiway ilimitada con los blancos de la rama múltiples y un el juego ilimitado de primitivo los funcionamientos. Todos los funcionamientos y ramas son independientes y ejecutable en paralelo. La rama del multiway es asociada con los nodos interiores del árbol, considerando que los funcionamientos son asociado con los arcos. La rama del multiway es el resultado de un juego de las pruebas binarias en los códigos de la condición; la salida izquierda forme arco de un nodo del árbol corresponde al resultado falso del la prueba asociada, considerando que el arco saliente correcto corresponde a su el verdadero resultado.

Basado en la evaluación de la rama del multiway, un solo camino dentro de un árbol - la instrucción se selecciona en momento de la ejecución como el camino tomado. Se ejecutan funcionamientos en el camino tomado a la realización, y sus resultados puesto en los registros designado correspondientes o situaciones del almacenamiento. En contraste, funcionamientos no en el camino tomado del multiway - la rama es inhibido de comprometer sus resultados a almacenamiento o registros. Tal los funcionamientos no producen efecto en el estado del procesador.

Los funcionamientos primitivos en un árbol son sujeto a secuencial la semántica para cada camino del árbol, como si cada primitivo el funcionamiento se ejecutó en el orden en que aparece en el árbol - el camino (un árbol - el camino empieza de la raíz del árbol y los extremos en un blanco de la rama). Por consiguiente, un funcionamiento primitivo no pueda usar un recurso que ha sido fijo por un funcionamiento anterior en el mismo árbol - el camino. Si este requisito no se cumple dentro de un árbol - la instrucción, los resultados del funcionamientos tener primitivo, un operando puesto por un funcionamiento anterior en el mismo árbol - el camino es indefinido. La semántica secuencial en cada árbol - las garantías del camino la compatibilidad binaria entre las aplicaciones diferentes de esto la arquitectura, cada uno con los grados variantes de ejecución paralela, las capacidades, permitiendo la descomposición de un árbol grande en, subtrees que se ejecuta en los ciclos diferentes.

Cada funcionamiento primitivo se pone en código como una instrucción primitiva en uno la palabra de memoria. Cada árbol - la instrucción se representa en el almacenamiento principal como un la sucesión inmediata de árbol - los pedazos cortos y gruesos (o simplemente los pedazos cortos y gruesos), con cada pedazo corto y grueso que contiene las instrucciones primitivas. Un pedazo corto y grueso es la unidad mínima de especificación del programa, y el tamaño de un árbol - la instrucción es un múltiplo del tamaño de un pedazo corto y grueso. Para el ejemplo, un pedazo corto y grueso simplemente podría corresponder a una sola palabra de memoria, o a cuatro la memoria formula (un quadword). El tamaño del pedazo corto y grueso determina el tradeoffs en el espacio de memoria y la complejidad descifrando, pero es arreglado para una arquitectura particular.

La sucesión de pedazos cortos y gruesos se obtiene del la profundidad - primero el traversal de un árbol - la instrucción, listando las pruebas en la Condición, Los campos del registro, e instrucciones primitivas que se ejecutan cuando el camino correspondiente del árbol se selecciona. Lo siguiente la sucesión del código representa un 6 - instrucciones de árbol de manera cuyas echan ramas los blancos son (A,B,D,C,C,E) y de quien el tamaño del pedazo corto y grueso es una palabra de memoria:

Probando un campo de Registro de Condición han realizado con un el salto el condicional instrucción que corresponde a un flujo - el mando el funcionamiento dentro del árbol, y qué indica donde el árbol - el camino correspondiendo al verdadero resultado de la prueba continúa en el almacenamiento; como resultado, un salto la instrucción condicional es una rama con un (corto) el desplazamiento positivo. Por otro lado, los blancos de la rama de un el árbol se representa como las instrucciones de la rama incondicionales, qué especifique el próximo árbol en ser ejecutado cuando el camino correspondiente del el árbol actual se selecciona. En el caso cuando el blanco de una instrucción del salto contiene simplemente una rama incondicional a otro árbol, entonces el salto, la instrucción puede reemplazarse por una rama la instrucción condicional (un la composición de un condicional del salto inmediatamente seguida por una rama incondicional).

El recopilador asigna los caminos de la ejecución para obligar a refugiarse en un árbol los caminos en la izquierda - a - el orden correcto; es decir, el más más - el camino probable es el leftmost uno, considerando que el menor - el camino probable es el rightmost uno. Como resultado, todos los funcionamientos en el más más - el camino probable aparece en las situaciones adyacentes en la memoria (de L0 a a" la rama UN" en el ejemplo sobre).

La representación del programa ilustrada sobre es directamente ejecutable por un procesador del superscalar que puede usar la dependencia del hardware - verificando y fijando los recursos para determinar qué funcionamientos pueden ejecutarse simultáneamente. En el caso de un procesador de VLIW, el el extremo de un árbol - la instrucción se delimita por una instrucción primitiva que sigue una rama incondicional que no es ningún reachable por cualquier salto la instrucción condicional dentro del árbol. En el árbol - la instrucción anteriormente, el extremo del árbol se descubre a la etiqueta "L1": porque semejante etiqueta no aparece en cualquiera de las instrucciones del salto. El descubrimiento de este límite en el hardware es simple.

La nota que cualquier palabra dentro de un árbol - la instrucción también puede corresponder a el punto de arranque de otro árbol. Como resultado, echando ramas en un el árbol - la instrucción lleva a la ejecución de un árbol que es un subconjunto de un árbol más grande.

Si el tamaño de un árbol - la instrucción excede los recursos disponible en un la aplicación del procesador (como echar ramas el grado, número de fijo - el punto o flotando - los funcionamientos del punto), entonces el árbol - la instrucción es dinámicamente descompuesto (recortó) para encajar los recursos. El subtrees resultante se ejecuta en los ciclos sucesivos, a menos que el camino tomado es completamente contenido dentro de los primeros subtree. El proceso de la poda transforma arbitrario - el árbol del tamaño - las instrucciones en subtrees que encajó los recursos disponible en una aplicación del procesador. Estos subtrees tienen el mismo la estructura general como los árboles originales (es decir, un multiway - el árbol de la rama con los funcionamientos en el árbol - los caminos), pero su tamaño está limitado. Estos subtrees corresponden a La Instrucción muy Larga Formula (VLIWs) qué se ejecuta directamente por el procesador.

Como un ejemplo del proceso de la poda, considere la ejecución de el árbol - la instrucción listó antes en un procesador de VLIW capaz de ejecutar sólo un 4 - la rama de la manera. Desde el árbol - la instrucción contiene un 6 - la rama de la manera, debe recortarse para encajar el constreñimiento. En este caso, el árbol - la instrucción se recorta a dos del salto las instrucciones.

El árbol original - la instrucción se descompone en tres árbol más pequeño - las instrucciones, el primero uno en conteniendo un 4 - la manera la rama (los blancos T1,T2,A,B), y el otro dos que contienen 2 - la manera las ramas (los blancos D,C y C,E, respectivamente).

Subsecuentemente sólo el camino tomado en un árbol se ejecuta a la realización, el la ejecución de todos los caminos del untaken es especulativa; de hecho, el recopilador las instrucciones de los lugares en esos caminos para tomar la ventaja de disponible los recursos, si ellos existen. Para el caso de aplicaciones del procesador con menos recursos, el proceso de la poda elimina automáticamente algunos de los funcionamientos especulativos.

Es decir, mientras recortando un árbol - la instrucción implícitamente realiza el unspeculation. La nota que, si el camino tomado se contiene totalmente dentro de los primeros subtree, entonces el subtrees restante, no se accede en absoluto.

EL VLIW PARALLELIZING RECOPILADOR

Nuestro recopilador de VLIW tiene las metas siguientes:

1. LA ACTUACIÓN DEL CÓDIGO COMPILADO

Además de la mayoría de las optimizaciones normales, nuestro recopilador está construido alrededor de un software - scheduler del pipelining que es un reforzó la versión de un previamente describió el algoritmo.

Los perfeccionamientos de la actuación incluyen:

· los heuristics basaron en el modulo - fijando;

· la ventana de planificación infinita.

Se centran otras optimizaciones en exponer la tanta instrucción - el nivel el paralelismo como posible. El disambiguation de memoria es un muy importante emita para estos propósitos para que nosotros aplicamos una combinación de estrategias:

· sofisticado el cómputo de dirección / el disambiguation;

· clonando de vueltas en paralelo / las versiones secuenciales;

· la dirección - compare los pulidores.

Nosotros también usamos alguna vuelta - vuelva a escribir las optimizaciones para exponer el paralelismo en las vueltas, como:

· el vuelta desenrollando;

· la expresión - árbol que vuelve a escribir para reducir el mínimo - el intervalo de la iniciación (MII);

· los árboles del funcionamiento asociativos volviendo a escribir.

2. LA APROBACIÓN

Nuestro recopilador es flexible, en el sentido que cambia, en la arquitectura designado puede acomodarse rápidamente. Un uso mayor de nuestro recopilador es como sigue:

· proponga un cambio arquitectónico;

· agregue una optimización para aprovecharse de / el trabajo alrededor de ese rasgo;

· mida el impacto de la actuación y así acepte / el desecho el cambio.

Rasgos arquitectónicos que han sido considerados incluyen:

· los pulidores de comparación de dirección;

· los funcionamientos dependientes combinando;

· los varios sabores de prefetching;

· seleccione (el condicional) los funcionamientos.

El recopilador es capaz de manejo los modelos de recurso de procesador diferentes. Por ejemplo, la varios carrera - los interruptores de tiempo permiten cambiar el número y tipo de unidades funcionales y el tamaño del registro archiva, así como habilite / desactive los varios rasgos arquitectónicos.

3. LA FORMA DEL INTERMEDIO

El factor dominando logrando las dos metas listadas sobre simplemente es la aplicación y pone a punto tiempo. Esto se refleja en el plan del recopilador por lo que se refiere a los mecanismos los deseamos apoyábamos las transformaciones.

DFGs

La representación de código de intermedio y estructuras de los datos son la llave los factores en la habilidad para agregar las optimizaciones rápidamente y experimentar con ellos. Nosotros hemos escogido una versión modificada del gráfico de flujo de dependencia (DFG), una representación originalmente desarrollada por el grupo de Dr. Pingali a Cornell La universidad [el Pingali et al., Los gráficos de flujo de dependencia: un algebraico acerqúese para programar las dependencias, 18 ACM Symp. en los Principios de Progr.

Los idiomas, pp. 67-78, 1991].

El DFG combina el flujo del mando y " información de dependencia en un sola forma coherente que proporciona toda la información de dependencia necesitó por la mayoría de las optimizaciones en un fácil - a - analice la forma. Por ejemplo, el DFG es una representación ejecutable, para que se satisface bien al análisis las técnicas basaron en la evaluación parcial.

La información de dependencia es totalmente" fijó," es decir, está en ambos la estática - la sola asignación y estática de la marcha atrás - la sola asignación forma que simplifica los movimientos del código por los bloques. Este rasgo representa nuestro el cambio mayor a DFGs, porque nosotros no haga realice desviando (desviando las hechuras codifican el movimiento demasiado difícil).

ALIASING

Otra ventaja en nuestra forma del intermedio es la representación de la carga / las dependencias de la tienda. Anti / el Rendimiento / las dependencias de Flujo proporcionan un mecanismo eso habilita el anti de memoria de representación - el aliasing una vez, y entonces representa el el resultado para que todas las otras optimizaciones puedan usarlo.

LOS INTERVALOS

Nosotros usamos sólo un otros datos globales - la estructura: un (pseudo -) el intervalo la jerarquía. Para los gráficos reducibles, ésta es la jerarquía del intervalo usual. Para los gráficos irreducibles, ciertas porciones irreducibles se vueltas pseudo - los intervalos (ellos tienen la entrada múltiple apunta de fuera de la vuelta).

LA RAJA DEL BORDE

Nosotros mantenemos el invariant siguiente: no hay ningún borde de flujo de mando uniéndose un elemento esencial - el bloque con los predecesores múltiples a los sucesores múltiples. Si semejante borde existe en la entrada, nosotros nos lo hendimos introduciendo un elemento esencial mudo el bloque. Esto resulta ser sumamente útil.



MENU PROCESADOES