Modern general-purpose processors are agnostic to an application’s high-level semantic information. Hence, they employ prediction-based techniques to enable computational and memory optimizations, such as prefetching, cache management policies, memory data placement, instruction scheduling, and many others. As such, the potential of such optimizations is limited due to the limited information the underlying hardware can discover on its own and such optimizations come with large area, power and complexity overheads required by the hardware for prediction purposes. Purely-hardware optimizations cannot achieve their performance potential and waste power, complexity and hardware area, since they are not aware of the application characteristics. On the other hand, purely-software optimizations are fundamentally tied up and limited by the underlying hardware.
A promising way to increase the performance of modern applications is to co-design software and hardware. Hence, lately both industry and academia are making serious attempts to improve performance, energy and security using hardware/software cooperative schemes such as application-specific hardware accelerators (e.g., Google’s Tensor Processing Unit) and application-specific extensions in general-purpose processors (e.g., Media Engine in Apple M1).
In this course, we will explore several different topics around hardware/software co-design such as: (i) new hardware/software interfaces (e.g., virtual memory, instruction set architecture) to enhance performance, energy and security, (ii) hardware/software co-design schemes to improve the performance of the memory subsystem in killer memory-intensive applications (e.g., sparse and irregular workloads), (iii) hardware/software cooperative machine-learning-based techniques for different microarchitectural components such as prefetchers, caches and branch predictors, which would continuously learn from the vast amount of memory accesses seen by a processor and adapt to the varying workload and system conditions.
If you are enthusiastic about working hands-on to design both software and hardware, this is your P&S. You will have the opportunity to study modern applications, propose software changes to better match the underlying hardware components, design new hardware components that better match the overlying software and come up with new machine-learning techniques to design efficient microarchitectural components. You will also learn how to program industry-supported microarchitectural simulators and study the performance of modern workloads after your hardware/software modifications.
Prerequisites of the course:
The course is conducted in English.
|Lead Supervisor||Konstantinos Kanellopoulosemail@example.com||ETZ H 61.1|
|Supervisor||Rahul Berafirstname.lastname@example.org||ETZ H 63|
|Supervisor||Mohammad Sadrosadatiemail@example.com||ETZ H 61.1|
|Supervisor||Juan Gomez Lunafirstname.lastname@example.org||ETZ H 63|
|Supervisor||Haiyu Maoemail@example.com||ETZ H 61.1|
| Intro to HW/SW Co-Design |
|Required||HW 0 Out|
| Virtual Memory (I) |
| Virtual Memory (II) |
|W4||25.05|| Tutorial: Designing an Expressive Cross-layer Interface |
|W5||25.05|| Tutorial: Using an Expressive Cross-layer Interface |