CPEN 411 (Computer Architecture) is a course I completed at UBC. The course focused on design considerations and advanced considerations when creating microprocessors. This includes tomasulo’s algorithm, branch prediction, memory systems, and piplining. The course included simulating and analyzing the effects of various design choices like replacement polices and branch prediction algorithms. It was taught by Professor Prashant Nair. The course website provides the following description of the course:
In this course we study how computers are designed. First we learn about the microarchitecture of a single microprocessor ―core‖ and then we learn how multiple such ―cores‖ are put together into a larger ―multi-core‖ microprocessor. We learn the mechanisms used within microprocessors to improve performance given a fixed implementation technology (a recent example being 45 nm silicon used to manufacture microprocessors from Intel and AMD). We learn how to apply techniques used in designing computer systems at both the microarchitecture and architecture level. If you end up creating software for a living, this course will help you by providing the understanding required to write software that takes full advantage of modern hardware. If you end up designing hardware for a living (whether a microprocessor or any other digital system) this course will help you by providing a framework for understanding how hardware design affects overall system performance. The course combines both theoretical and practical components and students will be evaluated on their proficiency in both aspects.
<cite><a href="https://ece.ubc.ca/courses/cpen-411/" target="_blank" rel="noreferrer noopener">
UBC CPEN 411 Page, 2025 </a>
</cite>