CS 220: Computer Organisation

Units: 3-0-3-12
Pre-requisites: ESC101, ESC201

Course Contents:

  1. Introduction.
  2. Arithmetic algorithms.
  1. Overview of basic digital building blocks; truth tables; basic structure of a digital computer.
  2. Number representation: Integer - unsigned, signed (sign magnitude, 1’s complement, 2’s complement); Characters - ASCII coding, other coding schemes; Real numbers - fixed and floating point, IEEE754 representation.
  3. Basic building blocks for the ALU: Adder, Subtracter, Shifter, Multiplication and division circuits.
  1. Hardware description language. Introduction to some HDL (Verilog, VHDL, BSV). Digital Design using HDLs.
  2. CPU.
  1. CPU Sub-block: Datapath - ALU, Registers, Instructions, Execution of Instructions; CPU buses; Control path - microprogramming, hardwired logic; External interface.
  2. Advanced Concepts: Pipelining; Introduction to Advanced Processors (multiprocessors and multi-cores).
  3. Examples of some well known processors.
  1. Assembly Language Programming. Instruction set and Assembly programming for some processor, preferably the one described in class.
  2. Memory.
  1. Memory Sub-block: Memory organization; Technologies - ROM, RAM, EPROM, Flash, etc., Virtual Memories.
  2. Cache: Cache algorithms, Cache Hierarchy, Cache coherence protocols.
  3. Advanced concepts: Performance, Interleaving, On chip vs Off chip Memories/Caches.
  1. I/O and Peripherals.
  1. I/O Sub-block: I/O techniques - interrupts, polling, DMA; Synchronous vs. Asynchronous I/O; Controllers.
  2. Peripherals: Keyboard, Mouse, Monitors, Disk drives, etc.
  1. Lab Contents.
  1. Digital Design using HDLs. Simple circuit designs: For e.g. Counter, Multiplexer, Arithmetic circuits etc. Design of a Simple Processor: Includes register file, ALU, data paths.
  2. FPGA Programming Programming on Xilinx Spartan 3E (or equivalent) FPGA. Handling of Inputs: through slide switches, through push buttons. Handling of Outputs: 7-segment display, LED display, LCD display. The designs developed in Part-I can be used to program the FPGA.
  3. Assembly Language Programming Programming in assembly language. The assignments should cover the following concepts: Registers; different type of instructions (load, store, arithmetic, logic, branch); operand addressing modes; memory addressing modes; conditions (codes/flags and conditional branches) stack manipulation; procedure calls; procedure call conventions (load/store of; arguments on stack, activation records);

Books and References:

  1. Computer Organization and Design: The Hardware/Software Interface, David A Patterson, John L. Hennessy, 4th Edition, Morgan Kaufmann, 2009
  2. Computer Architecture and Organization by William Stallings, PHI Pvt. Ltd., Eastern Economy Edition, Sixth Edition, 2003
  3. Structured Computer Organization by Andrew S Tanenbaum, PHI/Pearson, 4th Edition
  4. Computer Organization by V Carl Hamacher, Zvonks Vranesic, SafeaZaky, McGraw Hill, Vth Edition
  5. Computer System Architecture by M Morris Mano, Prentice Hall of India, 2001
  6. Computer Architecture and Organization by John P Hayes, 3rd Ed. McGraw Hill, 2002.
  7. Assembly Language, Online notes, http://linuxassembly.org/.
  8. Books related to HDL (Verilog, VHDL, BSV) programming.