Course Description:
This course provides the detailed idea about the design of computer hardware.
Course Objectives:
The main objective is to provide information on various computer hardware and their design. It focuses on various concepts regarding processor, memory and arithmetic operations. It also emphasizes on multicores, multiprocessors and clusters. It also deals with non-functional requirements that play vital role in the design.
Course Contents:
Unit 1: Computer Abstractions and Technology (3 Hrs.)
Introduction, Performance, The Power Wall, The Sea Change: The Switch from Uniprocessors to Multiprocessors, Manufacturing and Benchmarking the AMD Opteron X4
Unit 2: Instructions: Language of the Computer (8 Hrs.)
Introduction, Operations of the Computer Hardware, Operands of the Computer Hardware, Signed and Unsigned Numbers, Representing Instructions in the Computer, Logical Operations,Instructions for Making Decisions, Supporting Procedures in Computer Hardware, MIPS Addressing for 32-Bit Immediates and Addresses, Parallelism and Instructions, Translating and Starting a Program, Arrays versus Pointers, Advanced Material: Compiling C and Interpreting Java, ARM Instructions, x86 Instructions.
Unit 3: Arithmetic for Computers (5 Hrs.)
Introduction, Addition and Subtraction, Multiplication, Division, Floating Point, Parallelism and Computer Arithmetic: Associativity, Real Stuff: Floating Point in the x86.
Unit 4: The Processor (8 Hrs.)
Introduction, Logic Design Conventions, Building a Data path, A Simple Implementation Scheme, An Overview of Pipelining, Pipelined Data path and Control, Data Hazards: Forwarding versus Stalling, Control Hazards, Exceptions, Parallelism and Advanced Instruction-Level Parallelism, Real Stuff: the AMD Opteron X4 Pipeline, Advanced Topic: an Introduction to Digital DesignUsing a Hardware Design Language to Describe andModel a Pipeline and More Pipelining Illustrations.
Unit 5: Large and Fast: Exploiting Memory Hierarchy (8 Hrs.)
Introduction, The Basics of Caches, Measuring and Improving Cache Performance, Virtual Memory, A Common Framework for Memory Hierarchies, Virtual Machines, Using a Finite- State Machine to Control a Simple Cache, Parallelism and Memory Hierarchies: Cache Coherence, Advanced Material: Implementing Cache Controllers, Real Stuff: the AMD Opteron X4 and Intel Nehalem Memory Hierarchies.
Unit 6: Storage and Other I/O Topics (5 Hrs.)
Introduction, Dependability, Reliability, and Availability, Disk Storage, Flash Storage, Connecting Processors, Memory, and I/O Devices, Interfacing I/O Devices to the Processor, Memory, and Operating System, I/O Performance Measures: Examples from Disk and File Systems, Designing an I/O System, Parallelism and I/O: Redundant Arrays of Inexpensive Disks, Real Stuff: Sun Fire x4 Server, Advanced Topics: Networks.
Unit 7: Multicores, Multiprocessors, and Clusters (8 Hrs.)
Introduction, The Difficulty of Creating Parallel Processing Programs, Shared Memory Multiprocessors, Clusters and Other Message-Passing Multiprocessors, Hardware Multithreading, SISD, MIMD, SIMD, SPMD, and Vector, Introduction to Graphics Processing Units, Introduction to Multiprocessor Network Topologies, Multiprocessor Benchmarks, Roofline: A Simple Performance Model, Real Stuff: Benchmarking Four Multicores Using theRoofline Model.
Laboratory Works:
The practical work should focus on use of hardware design language and programming. It should also focus on x86 instructions. There should also be practical related to processor, memory, clusters, multithreading, Interfaces, pipelining.
Text Books:
- David A. Patterson and John L. Hennessy., Computer Organization and Design: The Hardware/Software Interface, 4th Edition.
Recommended Books:
- M. M. Mano., Computer Organization, 3rd Edition
- M. M. Mano., Computer System Architecture, 3rd Edition