Detailed Notes on Computer Architecture
Unit-I: Introduction
Functional units of a digital computer system include:
1. Input Unit: Takes input from the user.
2. Output Unit: Outputs the result of computation.
3. Memory Unit: Stores data and instructions (Primary and Secondary).
4. Arithmetic and Logic Unit (ALU): Performs mathematical and logical operations.
5. Control Unit: Directs the operation of all units.
Interconnections include data buses, control buses, and address buses.
Key Concepts:
- Arithmetic and logic operations form the computational core.
- Memory is classified into primary (RAM, ROM) and secondary storage (HDD, SSD).
- Difference between Computer Organization (hardware details) and Architecture (system-level design).
[Diagram: Functional units of a computer system]
Unit-II: Architecture
Architecture defines the components and interrelations within a computer system. Topics include:
- Flynn's Classification: SISD, SIMD, MISD, MIMD.
- Feng's Classification: Considering parallelism.
- RISC vs. CISC:
- RISC: Reduced Instruction Set Computer (fewer, simpler instructions).
- CISC: Complex Instruction Set Computer (more complex instructions).
Comparison between Pipelining and Parallelism:
- Pipelining: Executes multiple instruction stages simultaneously.
- Parallelism: Executes multiple instructions simultaneously.
Instruction formats include opcode, operand, and addressing modes.
[Diagram: RISC vs CISC Architecture]
Unit-III: Basic Concepts of Parallel Processing
Parallel processing aims to perform multiple computations simultaneously.
Network Models:
- Mesh: Nodes connected in a grid.
- Pyramid: Hierarchical interconnections.
- Butterfly: Multi-stage graph structure.
- Hypercube: Multidimensional cube connections.
Performance Metrics:
- Speed-up: Ratio of sequential to parallel execution time.
- Efficiency: Ratio of speed-up to the number of processors.
[Diagram: Parallel Processing Models]
Unit-IV: Pipeline Processing
Pipelining involves breaking an instruction into multiple stages and executing them concurrently.
Pipeline Design Principles:
- Instruction Pre-fetch: Preloads instructions to minimize delays.
- Hazard Detection: Resolves data, structural, and control hazards.
Pipeline Scheduling:
- Resolves conflicts in execution order using scheduling algorithms.
[Diagram: Pipeline Structure]
Unit-V: Program Partitioning & Scheduling
Partitioning divides a program into smaller tasks for parallel execution.
Key Concepts:
- Grain Size: Size of the tasks (fine-grain vs. coarse-grain).
- Scheduling Algorithms: Static and dynamic approaches for task allocation.
- Control Flow vs Data Flow:
- Control Flow: Sequential execution based on instructions.
- Data Flow: Execution based on data availability.
[Diagram: Program Partitioning Example]