CSE
Source: https://cse.iitk.ac.in/pages/CS220.html Parent: https://cse.iitk.ac.in/pages/ResearchAreasNew.html
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.