Computer Organisation and Architecture

Front cover 1) Buy it ...
2) Brochure
3) Blog
4) Table of Contents
5) Errata

PPT Slides
Introduction to Computer Architecture
Computer Arithmetic (1, 2)
The Language of Bits
Processor Design
Assembly Language
Principles of Pipelining
ARM Assembly Language
The Memory System
x86 Assembly Language
Multiprocessor Systems
Logic Gates, Registers, and Memories
I/O and Storage Devices

(All the videos are at least 720p HD quality. The resolution observed on YouTube depends on network connectivity.)

Introduction to the book, YouTube
Chapter 1: Introduction, YouTube
Chapter 2: Language of Bits
     Part I, Boolean Algebra, Binary representation, YouTube 
     Part II, Negative Integers, YouTube
     Part III, Floating point numbers, strings, YouTube
Chapter 3: Fundamentals of Assembly Languages
     Part I: Fundamentals of assembly languages, YouTube
     Part II: SimpleRisc assembly language, YouTube   
     Part III: Stacks, functions, and instruction encoding, YouTube
Chapter 4: ARM Assembly
      Part I: Basics of the ARM assembly language, YouTube

      Part II: Branch instructions, memory instructions, and instruction encoding, YouTube 
Chapter 5: x86 Assembly

      Part I: Basics of x86 assembly,  YouTube
    Part II: ALU, Branch, and Function Call Instructions, YouTube
      Part III: String instructions, Floating point instructions, YouTube
      Part IV: Instruction encoding,  YouTube

Chapter 6: Digital Logic
    Part I: Transistors and gates, YouTube  
    Part II: Latches, and flip-flops, YouTube 
    Part III: Memory cells,

Chapter 7: Computer Arithmetic
    Part I: Integer Adders, YouTube
    Part II: Integer Multipliers, YouTube
    Part III: Wallace tree multiplier, YouTube
    Part IV: Integer division, YouTube
    Part V: Floating-point addition and subtraction, YouTube
    Part VI: Floating-point multiplication and division, YouTube
Chapter 8: Processor Design
    Part I: Processors with hardwired control units, YouTube

    Part II: Processor with Micro-programming - I, YouTube
    Part III: Processor with Micro-programming - II, YouTube
Chapter 9: Principles of Pipelining
    Part I: Basic concepts, and the notion of hazards, YouTube
    Part II: Interlocks and forwarding, YouTube
    Part III: Forwarding and performance analysis, YouTube

    Part IV: Interrupts and Exceptions, YouTube
Chapter 10: Memory System
     Part I: Overview of the Memory System, YouTube
     Part II: Design of Caches, YouTube
     Part III: Details of the memory system (formulae, cache misses, prefetching) YouTube
     Part IV: Virtual Memory, YouTube
Chapter 11: Multiprocessor Systems
     Part I: Overview of Parallel Programming, YouTube
     Part II: Coherence and Consistency, YouTube
     Part III:
Cache Coherence Protocols, YouTube

     Part IV: Multithreading and Vector Processing, YouTube
     Part V: Graphics Processors and Interconnects, YouTube

 Chapter 12: I/O and Storage Devices
     Part I: Overview, and the Physical layer (encoding, synchronization), YouTube
     Part II:
Data Link, Network, and Protocol Layers YouTube 
     Part III: PCI-X, USB, and Hard Disks, YouTube
     Part IV: Optical and Solid State Drives, YouTube

(If any non-profit organization (of any country) wants a copy of these videos (original .mp4 format), the author will be happy to provide them, as long as their contents are not modified and they are available free of charge.)

Solutions Manual
The solutions manual currently contains all the exercises, and solutions for most of them (roughly 90%). It is not fully complete at this stage. Readers are requested to check this page frequently to get updated versions of the solution manual. The current version can be found here. Note that you require a password to open this document. This can be gotten from any McGrawHill sales agent. A large number of these solutions have been prepared by students; as a result there might be errors in this document. Please contact the author if you find any errors or need any clarifications.

Supplementary Software for Computer Organisation and Architecture

GUI Based SimpleRisc Emulator -- A GUI based SimpleRisc emulator. It can be used to write, run, and debug SimpleRisc programs. (Java source code) Written by Tushar Marda and Nikhil Kumar
Command Line SimpleRisc Emulator -- A command line based SimpleRisc emulator. It can be used to write, run, and debug SimpleRisc programs. (C source code and documentation) Written by Ritesh N.
SimpleRisc Processor in Logisim (Design 1) -- Design of the SimpleRisc processor in Logisim, along with documentation and examples. Written by Ritesh N. and Shubhankar Suman Singh
SimpleRisc Processor in Logisim (Design 2) -- Design of the SimpleRisc processor in Logisim, along with examples. Written by Tushar Marda and Nikhil Kumar
VHDL Model of the SimpleRisc Processor -- VHDL model of the single stage SimpleRisc processor along with examples and documentation. Written by Kunal Singhal and Swapnil Palash
EmuArm (GUI based ARM Emulator) -- GUI based ARM emulator for writing, running, and debugging programs written in ARM assembly. Written by Namita Atri and Geetika Malhotra
NASM assembler -- Netwide Assembler: Can be used to compile, and debug programs written in x86 assembly.
Tejas Architecture Simulator --  Can be used to simulate the behaviour of simple and complex multicore processors including their pipelines, memory hierarchies, and NOCs. The simulator can also run in parallel, simulate GPUs, and simulate energy consumption. Written by the SRISHTI group