Alexandre Aleta Ortega
El clustering és una tècnica que divideix el processador en unitats semi-independents anomenades clusters, Com que els clusters són més simples I petits tenen diversos avatatges com mitigar el problema del wire delay, simplificar el disseny i reduir el consum. D'altra banda però les comunicacions entre clusters són més lentes.
El clustering és una tècnica popular, sobretot en l'àrea dels processadors embedded/DSP, els quals utilitzen normalment dissenys very long instruction word (VLIW). Les arquitectures VLIW executen en ordre. El seu rendiment depèn de l'habilitat del compilador per generar codi que exposi suficient paral·lelisme. El clustering augmenta la complexitat de la generació de codi ja que cal repartir les instruccions entre els clusters i planificar les comunicacions entre clusters.
Les aplicacions que s'executen normalment en DSPs són molt específiques, habitualment aplicacions multimèdia o numèriques, les quals dediquen la majoria del temps a bucles. Per tant és clau en el compilador la generació de codi pels bucles. Per aconseguir-ho s'usen tècniques de software pipelining entre les quals el modulo scheduling és segurament la més habitual.
En aquesta tesi proposem nous algoritmes de modulo scheduling per arquitectures clustered VLIW amb dos objectius: augmentar el rendiment i reduir el consum. Aquestes tècniques es basen en algoritmes de grafs que s'apliquen als grafs de dependència de dades (DDG) dels bucles. Amb l'anàlisi del graf aconseguim una visió global que ens permet resoldre les principals dificultats de la planificació: repartir la càrrega entre els clusters, mantenir baix el número de comunicacions, introduir aquestes comunicacions en camins no crítics i mantenir baixa la pressió sobre registres. No obstant, de vegades una visió global del DDG no és suficient. Per aixó usem també altres estratègies per reduir encara més el número de comunicacions i la pressió sobre registres.
Pel que fa les comunicacions estudiem fer-les a través de la memòria i també la possibilitat de replicar el càlcul dels valors en comptes de comunicar-los. Respecte la pressió sobre registres estudiem diferents tècniques de spill code, tant a posteriori (després de la planificació) com on- the-fly (durant la planificació). Amb els algoritmens proposats s'obté una millora de fins el 60% en detereminats programes i del 25% en mitjana.
A més d'augmentar el rendiment també hem estudiat tècniques per reduir el consum. En particular proposem arquitectures cluster on cada cluster pot usar freqüències i voltatges diferents. Ens referirem en aquests dissenys com heterogenis mentre que els tradicionals (on tots els clusters usen la mateixa freqüència i voltatge) els anomenarem homogenis. En els dissenys heterogenis tindrem alguns clusters orientats a rendiment que funcionaran a alta freqüència i alguns clusters orientats a consum que funcionaran a baixa freqüència i per tant consumiran menys. Hem proposat un planificador que aprofita aquestes característiques i planifica les instruccions crítiques als clusters orientats a rendiment i la resta d'instruccions als clusters orientats a consum. Així s'aconsegueix un bon rendiment i al mateix temps disminueix el consum. Amb aquest esquema reduïm en un 20% el producte energy-delay-square (ED2) en mitjana i fins a un 40% per alguns programes.
© 2001-2024 Fundación Dialnet · Todos los derechos reservados