Compilers: Principles, Techniques, and Tools,
A. Aho, R. Sethi, and J. Ullman, Addison-Wesley, 1988.
(Chapters: 9.4, 10.4 Edition 1; Chapters 6.6, 9.6 Edition 2)
Class 3: (9/12/2018)
"Trace Selection for Compiling Large C
Applications to Microcode",
P. Chang and W. Hwu, MICRO-21, 1988 [pdf]
"The Superblock: An Effective Technique
for ILP Compilation ",
W. Hwu et al., Journal of Supercomputing, 1993 [pdf]
Class 4: (9/17/2018)
"The Program Dependence Graph and Its Use in
Optimization", J. Ferrante, K. Ottenstein, and J. Warren, ACM
Transactions on Programming Languages and Systems, 1987. [pdf] (Its a
long paper, just look at the part on control dependences)
"On Predicated Execution",
J. Park and M. Schlansker, HP Labs Tech Report, HPL-91-58, 1991 [pdf]
Optional if you want to learn more about selective if-conversion: "Effective Compiler Support for Predicated
Execution using the Hyperblock", S. Mahlke et al., Proc. MICRO-25, 1992 [pdf]
Class 5: (9/19/2018)
Compilers: Principles, Techniques, and Tools, A. Aho, R. Sethi, and J. Ullman, Addison-Wesley, 1988. (Chapters: 10.5, 10.6 Edition 1; Chapters 9.2 Edition 2)
Class 6: (9/24/2018)
Compilers: Principles, Techniques, and Tools, A. Aho, R. Sethi, and J. Ullman, Addison-Wesley, 1988. (Chapters: 10.5, 10.6, 10.9, 10.10 Edition 1; Chapters 9.2, 9.3 Edition 2)
Class 7: (9/26/2018)
"Practical Improvements to the Construction and
Destruction of Static Single Assignment Form,"
P. Briggs, K. Cooper, T. Harvey, and L. Simpson, Software--Practice and Experience, 28(8), July 1998, pp. 859--891. [pdf]
Class 8: (10/1/2018)
Compilers: Principles, Techniques, and Tools, A. Aho, R. Sethi, and J. Ullman, Addison-Wesley, 1988. (Chapters: 9.9, 10.2, 10.3, 10.7 Edition 1; Chapters 8.5, 8.7, 9.1, 9.4, 9.5 Edition 2)
Class 9: (10/3/2018)
"Compiler Code Transformations for Superscalar-Based High-Performance
Systems",
S. Mahlke, W. Chen, J. Gyllenhaal, W. Hwu, P. Chang, and T. Kiyohara,
Proceedings of Supercomputing '92, Nov. 1992, pp. 808-817. [pdf]
Class 10: (10/8/2018)
"Machine Description Driven Compilers for EPIC
Processors", B. Rau, V. Kathail, and S. Aditya, HP Technical Report, HPL-98-40, 1998. [pdf] (Note this is a long paper,
but very informative to skim over for how to build a retargetable compiler)
Class 11: (10/10/2018)
"The Importance of Prepass Scheduling for Superscalar and Superpipelined
Processors", P. Chang et al., IEEE Transactions on Computers, 1995, pp. 353-370. [pdf]
No Class for Fall Break (10/15/2018)
Class 12: (10/17/2018)
"Iterative Modulo Scheduling: An Algorithm for
Software Pipelining Loops", B. Rau, MICRO-27, Dec. 1994, pp. 63-74. [pdf]
No Class due to Project Meetings (10/22/2018)
No Class due to Project Meetings (10/24/2018)
Class 13: (10/29/2018)
"Iterative Modulo Scheduling: An Algorithm for
Software Pipelining Loops", B. Rau, MICRO-27, Dec. 1994, pp. 63-74. [pdf]
Class 14: (10/31/2018)
"Code Generation Schema for Modulo Scheduled
Loops", B. Rau, M. Schlansker, and P. Tirumalai, MICRO-25, Dec. 1992. [pdf]
Class 15: (11/5/2018)
"Register Allocation and Spilling Via Graph
Coloring,"
G. Chaitin, Proc. 1982 SIGPLAN Symposium on Compiler Construction, 1982. [pdf]
Class 16: (11/7/2018)
"Revisiting the Sequential Programming Model for Multi-Core,"
Matthew J. Bridges, Neil Vachharajani, Yun Zhang, Thomas Jablin, and David I. August, Proceedings of the 40th IEEE/ACM International Symposium on Microarchitecture, Dec. 2007. [pdf]
"Automatic Thread Extraction with Decoupled Software Pipelining,"
G. Ottoni, R. Rangan, A. Stoler, and D. I. August, Proceedings of the 38th IEEE/ACM International Symposium on Microarchitecture, Nov. 2005. [pdf]
Class 17: No reading, Group office hours (11/12/2018)
Class 18: No reading, Midterm exam (11/14/2018)
No Class for Exam Recovery (11/19/2018)
Class 19: Research Paper Presentations I (11/21/2018)
"Bitwidth Analysis with Application to Silicon Compilation,"
M. Stephenson, J. Babb, and S. Amarsinghe [pdf]
"TZSlicer: Security-Aware Dynamic Program Slicing for Hardware Isolation,"
M. Ye, J. Sherman, W. Srisaan, and S. Wei [pdf]
"Code-Pointer Integrity,"
V. Kuznetsov, L. Szekeres, M. Payer, G. Candea, R. Sekar, and D. Song [pdf]
"Applying SVM to Data Bypass Prediction in Multicore Last-level Caches,"
W. Sritriratanarak, M. Elpanyapong, and P. Chongstitvatana [pdf]
Class 20: Research Paper Presentations II (11/26/2018)
"Operation and Data Mapping for CGRAs with Multi-bank Memory,"
Y. Kim, J. Lee, A. Shrivastava, and Y. Paek [pdf]
"A Trusted Safety Verifier for Process Controller Code,"
S. McLaughlin, S. Zonouz, D. Pohly, and P. McDaniel [pdf]
"Exploiting Superword Level Parallelism with Multimedia Instruction Sets,"
S. Larsen and S. Amarasinghe [pdf]
"Predicting Unroll Factors Using Supervised Classification,"
M. Stephenson and S. Amarasinghe [pdf]
Class 21: Research Paper Presentations III (11/28/2018)
"KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs,"
C. Cadar, D. Dunbar, and D. Engler [pdf]
"Look-Ahead SLP: Auto-vectorization in the Presence of Commutative Operations,"
V. Porpodas, R. Rocha, and L. Goes [pdf]
"Clairvoyance: Look-Ahead Compile-Time Scheduling,"
K. Tran, T. E. Carlson, K. Koukos, M. Sjalander, V. Spiliopoulos, S. Kaxiras, and A. Jimborean [pdf]
Class 22: Research Paper Presentations IV (12/3/2018)
"Optimizing Array Bound Checks Using Flow Analysis,"
R. Gupta [pdf]
"Trace-based Just-in-Time Type Specialization for Dynamic Languages,"
A. Gal et al. [pdf]
"CETS: Compiler-Enforced Temporal Safety for C,"
S. Nagarakatte, J. Zhao, M. Martin, and S. Zdancewic [pdf]
"Bringing the Web up to Speed with WebAssembly,"
A. Haas, A. Rossberg, D. Schuff, B. Titzer, M. Holman, D. Gohman, L. Wagner, A. Zakai, and JF Bastien [pdf]
Class 23: Research Paper Presentations V (12/5/2018)
"LegUp: High-Level Synthesis for FPGA-Based Processor/Accelerator Systems,"
A. Canis, J. Choi, M. Aldham, V. Zhang, A. Kammoona, J. Anderson, S. Brown, and T. Czajkowski [pdf]
"Machine Learning in Compiler Optimisation,"
Z. Wang and M. O'Boyle [pdf]