Course Description
Understanding of the inner-workings of modern computer systems and tradeoffs present at the hardware-software interface: Instruction set design and addressing modes, register transfer, internal CPU bus structure, ALU (microprogramming and hardwired control), computer arithmetic, memory system, input-output system and survey of real computers and microprocessors.
Course Objectives
The main objective of the course is to introduce students to the computer organization from hardware and programming . This course teaches students fundamental knowledge in computer architecture and microarchitecture. The course covers the basic organizations of computer systems including instruction-set architecture, execution pipeline, memory hierarchy, and I/O subsystem. It also addresses advanced processor microarchitecture issues such as dynamic instruction scheduling, branch prediction, lock-up free caches, instruction-level parallelism, multiple instruction fetch/issuing, speculative execution, etc. to improve computer processor performance. Shared-memory multiprocessor systems with coherent caches to reduce memory access latency are also covered. Finally, it outlines the verification issues of today's microprocessors.
Learning Outcomes
- Knowledge of digital computer generation, computer types and classifications, functional units and their interconnections.
- Knowledge on CPU performance evaluation metrics, including response time and throughput, and their impact on overall CPU and computer system efficiency.
- Knowledge on Central Processing Unit: Addition and subtraction of signed numbers, look ahead carry adders. Multiplication: Signed operand multiplication, Division and logic operations. Floating point arithmetic operation Processor organization, general register organization, stack organization and addressing modes.
- Ability to use on low level Assembler language.
- Knowledge on Control Unit: Instruction types, formats, instruction cycles and subcycles ( fetch and execute etc) , micro-operations, execution of a complete instruction. Hardware and microprogrammed control: microprogramme sequencing, wide branch addressing, microinstruction with next address field, pre-fetching microinstructions, concept of horizontal and vertical microprogramming.
- Knowledge on Memory: Basic concept and hierarchy, semiconductor RAM memories, memory organization. ROM memories. Cache memories: concept and design issues, performance, address mapping and replacement) Auxiliary memories: magnetic disk, magnetic tape. Virtual memory: concept implementation.
- Knowledge about Input / Output: Peripheral devices, I/O interface, I/O ports, Interrupts: interrupt hardware, types of interrupts and exceptions. Modes of Data Transfer: Program I/O, interrupt initiated I/O and Direct Memory Access., I/O channels and processors.
- Knowledge about Pipelining: Basic and Intermediate Concepts. Instruction-Level Parallelism and its Exploitation.
- Knowledge about modern multicore architecture, Multiprocessors and Thread-Level Parallelism
Recommended Textbooks
1. Computer Organization and Design: The Hardware/Software Interface – RISC-V Edition 2. The Essentials of Computer Organization and Architecture, 3. Edition, 2011, Linda Null and Julia Lobur, Jones and Bartlett Publishers.