Course Information
This course was taught to B.Tech. Computer Science and Engineering students at Indian Institute of Technology Jodhpur during the academic sessions: 2012-13, 2013-14, 2014-15.
Prerequisites
Course Description
Computer Architecture introduces the fundamental principles behind the organization and design of modern computer systems. The course covers digital logic design, machine-level representation, instruction set architecture, memory hierarchy, input-output organization and parallel processing concepts.
Course Outcomes
- Understand fundamental concepts of computer organization and architecture.
- Design and analyze combinational and sequential logic circuits.
- Understand data representation and arithmetic operations at machine level.
- Analyze instruction set architecture and processor organization.
- Explain memory hierarchy, cache organization and virtual memory.
- Understand I/O organization, interrupts and communication mechanisms.
- Understand modern processor and parallel computing concepts.
Course Modules
Module 1: Digital Logic and Digital Systems
Topics Covered
- History of computer architecture
- Combinational and sequential logic circuits
- FPGA as a building block
- Multiple representations and layers in hardware design
- Hardware design tools and languages (Verilog/VHDL)
- Physical constraints: gate delays, power, fan-in and fan-out
Learning Resources
- Syllabus
- Motivation
- Introduction to Computer Organization - Slides
- Logic Circuits and Minimization - Slides
- Architecture Design Methodology - Slides
- Gate Level and Word Level Design - Slides
- Tutorial Sheet #1: Basic Concepts
- Tutorial Sheet #2: Design of Combinational and Sequential Circuits (Solution)
- Quiz #1 Questions
- Quiz #1 Solution
Module 2: Machine Level Representation of Data
Topics Covered
- Data units: bits, bytes and words
- Number systems and number bases
- Fixed point and floating point representation
- Signed numbers and two's complement representation
- Non-numeric data representation: characters and arrays
Learning Resources
Module 3: Assembly Level Machine Organization
Topics Covered
- Von Neumann machine: basic structure
- Control unit and instruction execution
- Instruction sets and addressing modes
- Assembly language and machine language formats
- Subroutine calls, I/O and interrupts
- Memory segments: stack, heap and static areas
- Multiprocessors and Flynn's taxonomy
Learning Resources
- Processor Level Design - Slides
- Instruction Set Architecture and Assembly Language Programming - Slides
- Microprocessor History - Article
- Hardwired and Microprogrammed Control - Slides
- Tutorial Sheet #4: Bus Architecture, Instruction Set and Assembly Language
- Latex Template for Semester Project Synopsis
- Latex Template for Semester Project Report (tar format)
- List of Semester Projects Allotted
Module 4: Memory System Organization and Architecture
Topics Covered
- Storage systems and memory technologies
- Memory hierarchy and importance of temporal and spatial locality
- Main memory organization and operations
- Latency, cycle time, bandwidth and interleaving
- Cache memories: mapping, block size, replacement and store policies
- Multiprocessor cache consistency and synchronization
- Atomic memory operations
- Virtual memory, page tables and TLB
- Fault handling and reliability
- Error coding, compression and data integrity
Learning Resources
Module 5: Interfacing and Communication
Topics Covered
- I/O types: handshaking, buffering and interrupts
- External storage systems and drives
- Interrupt structures and acknowledgement
- Buses, protocols and DMA
- Remote access and communication layers
- Multimedia support
- RAID architectures
- Advanced processors and parallel processing