CS 220: Computer Organisation
Units: 3-0-3-12
Pre-requisites: ESC101, ESC201
Course Contents:
- Introduction.
- Arithmetic algorithms.
- Overview of basic digital building blocks; truth tables; basic structure of a digital computer.
- 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.
- Basic building blocks for the ALU: Adder, Subtracter, Shifter, Multiplication and division circuits.
- Hardware description language. Introduction to some HDL (Verilog, VHDL, BSV). Digital Design using HDLs.
- CPU.
- CPU Sub-block: Datapath - ALU, Registers, Instructions, Execution of Instructions; CPU buses; Control path - microprogramming, hardwired logic; External interface.
- Advanced Concepts: Pipelining; Introduction to Advanced Processors (multiprocessors and multi-cores).
- Examples of some well known processors.
- Assembly Language Programming. Instruction set and Assembly programming for some processor, preferably the one described in class.
- Memory.
- Memory Sub-block: Memory organization; Technologies - ROM, RAM, EPROM, Flash, etc., Virtual Memories.
- Cache: Cache algorithms, Cache Hierarchy, Cache coherence protocols.
- Advanced concepts: Performance, Interleaving, On chip vs Off chip Memories/Caches.
- I/O and Peripherals.
- I/O Sub-block: I/O techniques - interrupts, polling, DMA; Synchronous vs. Asynchronous I/O; Controllers.
- Peripherals: Keyboard, Mouse, Monitors, Disk drives, etc.
- Lab Contents.
- 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.
- 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.
- 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:
- Computer Organization and Design: The Hardware/Software Interface, David A Patterson, John L. Hennessy, 4th Edition, Morgan Kaufmann, 2009
- Computer Architecture and Organization by William Stallings, PHI Pvt. Ltd., Eastern Economy Edition, Sixth Edition, 2003
- Structured Computer Organization by Andrew S Tanenbaum, PHI/Pearson, 4th Edition
- Computer Organization by V Carl Hamacher, Zvonks Vranesic, SafeaZaky, McGraw Hill, Vth Edition
- Computer System Architecture by M Morris Mano, Prentice Hall of India, 2001
- Computer Architecture and Organization by John P Hayes, 3rd Ed. McGraw Hill, 2002.
- Assembly Language, Online notes, http://linuxassembly.org/.
- Books related to HDL (Verilog, VHDL, BSV) programming.