In the computer science area, it is important to understand the basic structure of computer systems and architectures for high-performance computers learning the interface between hardware and software. This course teaches the role and principles of key components for computer systems such as processors, memory technologies, input/output, multiprocessors, and multicore.
In the exercise, students describe the computer systems including a processor and caches in hardware description language such as Verilog HDL, and verify their operation by the simulation and implement them on the hardware board with an FPGA,
and learn the interface between hardware and software.
At the end of this course, students will understand
- Understand the basic structure of computer systems and architectures for high-performance computers,
- Understand the role and principles of components for computer systems such as processors, memory technologies, input/output, multiprocessors, and multicore,
- Obtain skills for designing typical computer systems with a hardware description language.
Computer Architecture, Processor, Superscalar, Cache, Memory Hierarchy, Virtual Memory, Multiprocessors, Multicore, Hardware Description Language, Verilog HDL, FPGA
|Intercultural skills||Communication skills||Specialist skills||Critical thinking skills||Practical and/or problem-solving skills|
In general, a 90 minutes exercise using an FPGA board will be conducted after two 90 minutes lectures.
|Course schedule||Required learning|
|Class 1||Basic Structure of Computer Systems||Understand the basic structure of computer systems.|
|Class 2||Trends in Performance and Power||Understand the trends in performance and power.|
|Class 3||Computer Design Exercise(1)||Computer Design Exercise(1)|
|Class 4||Memory Technologies||Understand memory technologies.|
|Class 5||Computer Design Exercise(2)||Computer Design Exercise(2)|
|Class 6||Caches: Direct-Mapped||Understand the direct-mapped caches.|
|Class 7||Caches: Set-Associative||Understand the set-associative caches.|
|Class 8||Computer Design Exercise(3)||Computer Design Exercise(3)|
|Class 9||Memory Hierarchy and Dependability||Understand memory hierarchy and dependability.|
|Class 10||Pipelined Processor||Understand pipelined processors.|
|Class 11||Computer Design Exercise(4)||Computer Design Exercise(4)|
|Class 12||Superscalar Processor||Understand superscalar processors.|
|Class 13||Branch Prediction||Understand branch prediction.|
|Class 14||Computer Design Exercise(5)||Computer Design Exercise(5)|
|Class 15||Data-Level Parallelism in Vector and SIMD||Understand the data-level parallelism in vector and SIMD.|
|Class 16||Virtual Memory and Security||Understand virtual memory and security issues.|
|Class 17||Computer Design Exercise(6)||Computer Design Exercise(6)|
|Class 18||Input/Output and Bus||Understand Input/Output and bus.|
|Class 19||Interconnection Network||Understand interconnection networks.|
|Class 20||Computer Design Exercise(7)||Computer Design Exercise(7)|
|Class 21||Multiprocessors and Multicore||Understand multiprocessors and multicore.|
|Class 22||Computer Design Exercise(8)||Computer Design Exercise(8)|
David A. Patterson, John L. Hennessy. Computer Organization and Design: The Hardware/Software Interface (Fifth Edition). Morgan Kaufmann.
Students will be assessed on their understanding of computer architecture and the ability to apply them to implement small computer systems with a hardware description language (HDL).
Students' course scores are based on exercise problems (30%) and a final examination (70%).
No prerequisites are necessary, but enrollment in the related course of Computer Logic Design is desirable.