In CPSC 213, you learned how computers execute programs, and how common programming language constructs can be translated into assembly language. You also discussed how to deal with multiples processes and threads, and how you can synchronize their operations. Finally, you discussed virtual memory. In this course, we will dig a bit deeper, and look at how computers are designed, and at the techniques that are used to make them execute the programs we write as quickly as possible. At the end of this course you will be able to:
- Describe a possible high-level architecture for a pipelined CPU.
- Explain the importance of, and issues with, instruction-level parallelism.
- Describe the various types of memory used by modern computers, and explain how the hardware and the operating system cooperate to manage this memory.
- Explain the issues that must be considered while designing file systems, and how file systems are managed.
- Utilize your knowledge of the CPU and memory systems to optimize C/C++ code and make it run faster.