You know about design of computer hardware...
how do you make it do something?
Topics In Computer Systems |
Fall 2007 EE 599-004/699-003 |
Time & Place: |
TuTh 9:30-10:45, OHR C053 |
Instructor: |
Professor Hank Dietz |
Instructor URL: |
http://aggregate.org/hankd/ |
This course aims to give hardware-oriented students the understanding of
systems software that they need to make working computer systems using
custom computer architectures. The course will be heavily project
oriented, with students actually building compiler and operating system
software.
- Introduction
- Why and what computer architects and hardware designers
need to know about systems software
- The two worlds: static vs. dynamic properties of computing systems
- Static mechanisms
- Introduction to compilation systems (compilers, assemblers, linkers, loaders, construction tools)
- A simple compilation system targeting a simple custom computer
- Compiling into hardware (gates, FPGAs, etc.)
- An introduction to advanced code generation and optimization methods
- Dynamic mechanisms
- What is the dynamic environment? (operating system, libraries/runtimes, hardware)
- What does an OS do -- and when don't you need one
- Access control methods
- Linux device drivers and kernel modules
- Advanced concepts: OS bypass, hosted/attached processors
- Selected advanced topics... papers and by request discussions
- Project specifics and presentations
C programming in a Linux environment will be required for the projects
(involving the topics in bold), but the tool infrastructure that will be
used will keep the complexity and size of the C code low enough that
extensive background in C programming is not a prerequisite for
the course. Neither are students expected to have previous experience
in writing compilers or operating systems.