This course will start with explaining the organization of a computer and explain all the components involved. It then moves on to bridging the gap between the high-level programming languages (e.g. C, Java) and the low-level electronic components (e.g. transistors, gates). The course then discusses the details of designing a processor; i) a simple processor design, ii) pipelining iii) memory organization and iv) multi-core processors. Several fundamental techniques, like pipelining, caching, and parallel execution are introduced in standalone and embedded applications. This course takes the MIPS architecture as a vehicle to explain the complexities and trade-offs in computer architecture.
Student Learning Outcomes
On successful completion of this course, students will be able to:
- Develop an understanding of what the significant modules and components in modern computers are such as CPU, hard drives, displays, memory and how are they interconnected
- Understand the aspects of interfaces between software (such as C or Java) and hardware
- Understand techniques used by hardware designers (such as parallel processing/multi-core processing) to improve overall system performance
- Design a basic CPU that supports a given set of instructions and also engineering methods for improving its performance