Course Objectives
This course is intended to understand the different components of a computer system, namely, digital hardware, the microarchitecture, the operating systems and the compilers, and their interconnection.
Course Contents
Introduction: Functional components of a computer system, Interaction among functional components.
Design of Arithmetic and Logic Unit: Digital logic gates, Boolean algebra, Simplification of Boolean Expressions, Combinational logic circuits – Encoder, Decoder, Multiplexer and Demultiplexer; Representation of integer data, Integer adders, Integer multipliers, Design of integer unit, Floating point representation of real data, Floating-point adder/subtractor, Floating-point multiplier, Design of Floating point unit.
Design of Register File and Memory Unit: Flip-flops, Synchronous sequential circuits – Registers and Counters; Memory unit.
Generation and Execution of Machine Code: Instruction set architecture of a simple CPU, Assembler, Code generation, Application binary interface, Microarchitecture of CPU, Execution of machine code.
Processing of High Level Language Code: Virtual machine, Interpreter, A simple compiler, Fundamentals of operating system.
Text Books
- N. Nisan and S. Schocken, The Elements of Computing Systems – Building a Modern Computer from First Principles, The MIT Press, 2005.
- C.H. Roth and L.L.Kinney, Fundamentals of Logic Design, 7th Edition, Cengage Learning, 2014.
- C.Hamacher, Z.Vranesic, S.Zaky and N.Manjikian, Computer Organization and Embedded Systems, 6th Edition, McGraw-Hill, 2012.
Reference Books
- S. Brown and Z Vranesic, Fundamentals of Digital Logic with VHDL Design, McGraw-Hill Education, 3rd Ed, 2009.