| TDDC86 |
Kompilatoroptimeringar och kodgenerering, 4 p
/
6 hp
/Compiler Optimizations and Code Generation/
För:
COS
CS
D
IT
|
OBS! |
För fullständig kursplan se den engelska versionen.
|
| |
Prel. schemalagd
tid:
Rek. självstudietid: 160
|
| |
Utbildningsområde: Teknik
Ämnesgrupp: Datateknik Nivå (A-D):D
Huvudområde: Datateknik Nivå (G1,G2,A): A
|
| |
Mål:
Kursen behandlar avancerade frågeställningar inom kompilatorteknik
mer fokus på programanalys, optimering och generering av programkod.
Efter avslutad kurs ska studenten:
- förstå teori kring analys av kodberoenden, kontroll- och dataflöde
- känna till koncept inom och betydelse av avancerade intermediära
representationer i moderna kompilatorer, t.ex. SSA-form
- känna till under vilka förutsättningar optimeringar kan göras
samt vilka prestandaförbättringar som är möjliga genom
optimeringstranformationer i kompilatorer
- känna till de viktigaste problemen och de vanligaste lösningarna när
det gäller kodgenerering för modern datorarkitektur, inklusive
inbyggda processorer, processorer för digital signalbehandling och
högpresterande arkitekturer
|
| |
Förkunskaper: (gäller studerande antagna till program som kursen ges inom, se 'För:' ovan) Datastrukturer och algoritmer, Kompilatorteknik eller Kompilatorer
och interpretatorer, Datorarkitektur.
OBS! Tillträdeskrav för icke programstudenter omfattar vanligen också tillträdeskrav för programmet och ev. tröskelkrav för progression inom programmet, eller motsvarande.
|
| |
Organisation: Föreläsningarna introducerar teorin och kompletteras av lektioner
med övningar. Ett projekt genomförs i mindre grupper. Uppgiften består
antingen av ett experimentellt självstudium av ett modern
kompilatorramverk, eller av en kritisk granskning av en aktuell
konferens- eller tidskriftsartikel inom kompilatorteknik. Kursen
avslutas därmed med ett simulerat kompilatorseminarium där
projektresultaten presenteras för alla deltagare.
|
| |
Kursinnehåll: Design av intermediära representationer. Kontrollflödesanalys.
Dataflödesanalys. Optimering genom eliminering av vanliga underuttryck
(common subexpression elimination). Interprocedurell analys.
Beroendeanalys. Transformering och parallellisering av loopar.
SSA-form (Static Single Assignment). Val av instruktioner.
Lokal och global instruktionsschemaläggning. Registerallokering.
Problem vid ordning av faser samt integrerad kodgenerering.
Pipelining. Kodgenerering för inbyggda system och parallella
system. JIT-kompilering (Just in Time). Kompilering av objektorienterade
språk. Undantagshantering. Skräpsamling (garbage collection).
|
| |
Kurslitteratur: Aho, Lam, Sethi, Ullman: Compilers Principles, Techniques, and Tools, Second Edition. Addison-Wesley, to appear 2006/2007.
or one of the following books:
Aho, Sethi, Ullman: Compilers Principles, Techniques, and Tools, Addison-Wesley, 1986. Chapter 10.
Muchnick: Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997.
Cooper, Torczon: Engineering a compiler. Morgan Kaufmann, 2004.
Ytterligare referenslitteratur finns angiven på kursens webbsidor.
|
| |
Examination: |
TEN1 UPG1
|
Skriftlig examination (U,3,4,5) Projektarbete med muntlig presentation och skriftlig sammanfattning. (U,G) |
3 hp 3 hp
|
| |
|
Frågorna på den skriftliga tentamen kontrollerar hur väl studenten har
uppfyllt lärandemålen för kursens teoridel. För att bli godkänd
kan brister i en del uppvägas av bättre resultat på andra delar. |