cover Basic Computer
                                              Architecture
The book is now freely available. This is version 2.0 released with a Creative Commons CC-BY-ND 4.0 license (Free to use and distribute, even commercially, but adaptations/derivatives are not possible. In all cases credit has to be given to the creator.). Version 1.0 was published by McGrawHill with a different title, "Computer Organisation and Architecture." That book has now been replaced by version 2.0; it has many improvements and bug fixes as compared to the previous version. You can either download all the chapters online (links below), or download the entire book (pdf version) for free, or buy a version of it in print. For the print version, you can buy it on Amazon, Flipkart, or from the website of the publisher WhiteFalcon. If you like the book, please fill the feedback form. The book is available internationally on Amazon: USA, UK, Australia, Italy, Singapore, UAE, and Germany. Click to cite the book.

groups
Join the Google group for discussing concepts, sharing doubts, and for getting tips from other computer architecture enthusiasts. bar
feedback

Second part of this two-book series:
Next-Gen Computer Architecture
link

Chapters
 
Introduction to Computer Architecture (pdf)
Computer Arithmetic (pdf)
The Language of Bits (pdf)
Processor Design (pdf)
Assembly Language (pdf)
Principles of Pipelining (pdf)
ARM Assembly Language (pdf)
The Memory System (pdf)
x86 Assembly Language (pdf)
Multiprocessor Systems (pdf)
Logic, Gates, Registers, and Memories (pdf)
I/O and Storage Devices (pdf)
RISC-V (pdf)
Real-world CPUs and GPUs (pdf)

The rest of the notes and a chapter on RISC-V are on the way....

PPT Slides ( CC-BY 4.0 license)
 
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


Videos
(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,
YouTube

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.  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. Note that the solution manual is for instructors only.

Supplementary Software


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.
RISC-V emulator -- A simple 32/64-bit RISC-V emulator. Written by Smita Kumari and Prince Ranjan (summer interns from NIT Patna). Version 2 contains floating-point instructions as well. It was written by Ankit Tiwari who now works in NPCIL. (Link to RISC-V emulator v2 ).
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

Cite the book

@book{basiccomparch,
author = {Smruti R. Sarangi},
title = {Basic Computer Architecture},
date = {1st September 2021},
edition = {1st edition},
publisher={White Falcon Publishing},
isbn={1636403034} }