|Subject Area||Computer Hardware and Architecture|
|Semester||Semester 7 – Fall|
This course studies the architecture of modern computers, mostly focusing on the microprocessor organization, in order to understand the structure, and also to solve design problems, of a typical modern computer, for both single- and multiprocessing.
The course covers the following topics: A short review of the organization of a computer, emphasizing on the microprocessor. Performance evaluation of architectures based on benchmarks. Instruction pipelining and the design of control to support pipelining. Pipelining of functional units. Superpipelining and superscalar processors. Dynamic instruction scheduling for out-of-order execution, based on scoreboards and reservation stations (Tomasulo algorithm), and application on contemporary microprocessors. Static instruction scheduling, VLIW processors, and programming issues for static scheduling (trace scheduling, software pipelining). Performance improvement techniques for latency tolerance, with branch prediction, speculation and predication models. Parallel architectures, from multithreading to multiprocessors and multicomputers, and an introduction to the issues of cache coherence, memory consistency and synchronization. Advanced memory system and peripheral system organization, as well as their access by high-performance processors.
The course includes reading of important research papers in the areas of processor architecture and instruction scheduling, some of which are of historical value, others – the majority – being more recent.
Finally, the course includes theoretical homeworks and a project, which can be either a personal project of a bibliographical study on one of the course issues, or a group programming project on any of the following topics: (a) The design of a microprocessor at cycle-level simulation, using either a high-level programming language (C,C++) or a system-level language (VHDL,Verilog); (b) A memory system or a multiprocessor system simulation (at a higher level); (c) Code generation for the architectures studied, using an available compiler.
The course is an advanced course on the subject of computer architecture.
The course material aims at the understanding and acquisition of an in-depth knowledge of computer architecture, with specific emphasis on issues on modern processor cores, as well as their memories.
This course also serves as the connecting link with the further advanced courses of parallel computer architecture and embedded systems.
With the successful completion of the course, the student will be in a position to:
- Have in-depth understanding of both basic and critical computer architecture issues.
- Have specialized knowledge on advanced issues met in modern processors and computer systems.
- Explain and solve problems related to modern processor cores, instruction scheduling on such cores, both dynamic and static, or analyze and comment subjects of important publications.
- Study real processors, develop hardware description or high-level simulation code for them, and on the other hand cooperate with colleagues in order to create and present a group project on a subject related to modern processors, should they select a group project.
- Search and study contemporary bibliography from internationally high-ranking journals and conferences, explain and evaluate publications from them at a sufficient level, and also present their conclusions in class, should they choose a non-group project.