1 / 13

Energiebewusste Compilierung für digitale Signalprozessoren

Energiebewusste Compilierung für digitale Signalprozessoren. Projekt Prozessorarchitekturen und Compilertechniken zur verlustarmen digitalen Signalverarbeitung. Markus Lorenz Peter Marwedel Universität Dortmund Lehrstuhl Informatik XII. Teilziel Entwicklung energiebewusster

Download Presentation

Energiebewusste Compilierung für digitale Signalprozessoren

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Energiebewusste Compilierung fürdigitale Signalprozessoren Projekt Prozessorarchitekturen und Compilertechniken zur verlustarmen digitalen Signalverarbeitung Markus Lorenz Peter Marwedel Universität Dortmund Lehrstuhl Informatik XII

  2. Teilziel Entwicklung energiebewusster Compilertechniken Teilziel Entwicklung energiebewusster Prozessorarchitekturen Projektübersicht HW-Ausnutzung Verbesserungsvorschläge DORTMUND: Schwerpunkt Compiler- techniken DRESDEN: Schwerpunkt Prozessor- architektur HW/SW-Exploration Energie-Kostenmodell Modell der Leistungsaufnahme Realisierbarkeit DSP-Compiler- Know-How DSP-HW- Know-How Gesamtziel Energiereduzierung prozessorbasierter DSP-Systeme

  3. M3-DSP Plattform: M3-DSP • skalierbare Anzahl • irregulärer Datenpfade • SIMD/SISD • Verarbeitung • spezielle Speicher- • schnittstelle • AGU • HW-Schleifen • 4-stufige Pipeline • mehrere Ansätze für Optimierungen

  4. Compiler: Anforderungsanalyse Ziel: Entwicklung eines (energie-) optimierenden Compilers • Handhabung der irregulären Prozessorarchitektur • Gruppenspeicher • Verbindungsnetzwerk • Datenpfad (SISD/SIMD-Verarbeitung) • modulare Integration von (Energie-) Optimierungen • effektive Ausnutzung der Hardware-Ressourcen • Minimierung der Switchingaktivitäten • Verwendung generischer Konzepte ( HW/SW-Exploration) Bedarf an • geeigneter Compilerinfrastruktur • neuen Optimierungstechniken • phasengekoppelter Codegenerator ( letzter Workshop) • Schleifen-Optimierungen ( heute)

  5. IR Standard- Optimierungen • Codegenerierung • Adresscode-Generierung • Schleifen-Optimierungen • Vektorisierung • HW-Schleifen (ZOL) Energie- Daten Compilierungsablauf prozessorunabhängig prozessorabhängig Lance2 Frontend IR to GeLIR GeLIR to Asm C-Src GeLIR Asm GeLIR to Sim Sim • GeLIR (Generic Low-Level Intermediate Representation) • Darstellung prozessorspezifischer Informationen • Austauschformat zwischen Optimierungsphasen • Darstellung alternativer Maschinenprogramme

  6. GeLIR vor Vektorisierung Frontend i = 0; // {SIMD_LDI, LDI} LOOP: t1 = A[i]; // {SIMD_Load} t2 = t1; // {SIMD_DT, DT} x = t2 + 2; // {SIMD_Add, Add} B[i] = x; // {SIMD_Store} i = i + 1; // {SIMD_Add, Add} t3 = i < 64; // {Compare} if(t3) goto LOOP;// {JNE} • Generierung von 3-Adresscode und Zerlegung von Schleifen • Einfügen potentieller Datentransfers • Erzeugung alternativer Maschinenprogramme Vektorisierung: Beispiel (1) for(i = 0; i < 64; i++) { x = A[i]; x = x + 2; B[i] = x; } C-Code

  7. GeLIR nach Vektorisierung Vektorisierung i = 0; // {LDI} LOOP: t1 = A[i]; // {SIMD_Load} t2 = t1; // {SIMD_DT} x = t2 + 2; // {SIMD_Add} B[i] = x; // {SIMD_Store} i = i + 16; // {Add} t3 = i < 64; // {Compare} if(t3) goto LOOP;// {JNE} • Reduzierung der Anzahl Schleifendurchläufe von 64 auf 4 • Vermeidung des Overheads zur Gruppenhandhabung im SISD-Modus Vektorisierung: Beispiel (2) GeLIR-Code vor Vektorisierung i = 0; // {SIMD_LDI, LDI} LOOP: t1 = A[i]; // {SIMD_Load} t2 = t1; // {SIMD_DT, DT} x = t2 + 2; // {SIMD_Add, Add} B[i] = x; // {SIMD_Store} i = i + 1; // {SIMD_Add, Add} t3 = i < 64; // {Compare} if(t3) goto LOOP;// {JNE}

  8. HW-Loop GeLIR mit HW-Schleifen i = 0; // {LDI} zloop(4); LOOP: t1 = A[i]; // {SIMD_Load} t2 = t1; // {SIMD_DT} x = t2 + 2; // {SIMD_Add} B[i] = x; // {SIMD_Store} i = i + 16; // {Add} zgoto LOOP; • Testen der Abbruchbedingung erfolgt durch Hardware • gute Ergänzung zur Vektorisierung HW-Schleifen: Beispiel GeLIR-Code nach Vektorisierung i = 0; // {LDI} LOOP: t1 = A[i]; // {SIMD_Load} t2 = t1; // {SIMD_DT} x = t2 + 2; // {SIMD_Add} B[i] = x; // {SIMD_Store} i = i + 16; // {Add} t3 = i < 64; // {Compare} if(t3) goto LOOP;// {JNE}

  9. Experimentelle Ergebnisse (1) rel. #Speicherzugriffe in % 96% 95% 46% -13% 10%

  10. Experimentelle Ergebnisse (2) rel. Zyklenzahl in % 96% 95% 51% 11% 30%

  11. Experimentelle Ergebnisse (3) rel. Energieverbrauch in % 94% 94% 49% 8% 17%

  12. Experimentelle Ergebnisse (4) rel. Energieverbrauch in % 24% 24% 17% 19%

  13. Zusammenfassung Projektziel: Energiereduzierung prozessorbasierter DSP-Systeme durch simultane HW- und SW-Entwicklung • irreguläre Architekturen erfordern neue Compilertechniken • Integration von Energiekostenmodell in Compiler und Simulator • phasengekoppelter energiebewusster Codegenerator (letzter WS) • Heute: Schleifen-Optimierungen: Vektorisierung und HW-Schleifen • aufwändige Analysen erforderlich • Prozentuale Verbesserungen im Durchschnitt: Vektor: Speicherzugriffe: 47%, Zyklenzahl: 57%, Energie: 52% HW-Schleifen: Energie: 21% • Integration der Optimierungen in allgemeine Compiler-Umgebung  Einsatz der Techniken für andere Architekturen möglich Ausblick: • Verbesserung der Vektorisierung • HW/SW-Exploration in Kooperation mit TU Dresden

More Related