- Which functions in the program are the most time-consuming?
- Why is your code running so slowly? How do you know your program already runs as fast as possible?
- Is your program optimized for the computer architecture?
- How to design a computer system to meet the requirement of your application?
This course talk about ways to diagnose and solve performance problems
in computer systems and applications. The students will learn to understand
and analyze in-depth interactions between software and hardware, for realistic
applications ranging from embedded systems to high-performance parallel computing.
The course will help students find the key to identify and resolve performance bottlenecks on
a realistic system via theoretical analysis and experimental design, with the help of tools.
The course will emphasize on the following areas:
- Computer systems: Hardware-software interactions
- Advanced embedded processor design and VLIW architecture
- Parallel computing: Multithreading, multicore, multiprocessor
- Performance tuning: Bottlenecks, tools, and solutions
- System-level optimization and hardware-software co-design
This course is intended for senior or graduate students who are interested in
advanced topics in modern computer systems. Students should have sufficient
background on Computer Architecture and Operating Systems.