Computer Organization and Architecture

  1. Parallel Processing and Advanced Architectures
    1. Classification of Parallel Architectures
      1. Flynn's Taxonomy
        1. Single Instruction Single Data (SISD)
          1. Traditional Sequential Processors
            1. Von Neumann Architecture
            2. Single Instruction Multiple Data (SIMD)
              1. Vector Processors
                1. Array Processors
                  1. SIMD Extensions
                  2. Multiple Instruction Single Data (MISD)
                    1. Theoretical Classification
                      1. Fault-Tolerant Systems
                      2. Multiple Instruction Multiple Data (MIMD)
                        1. Shared-Memory Systems
                          1. Distributed-Memory Systems
                      3. Instruction-Level Parallelism (ILP)
                        1. ILP Concepts and Fundamentals
                          1. Instruction Dependencies
                            1. Data Dependencies
                              1. Control Dependencies
                                1. Resource Dependencies
                                2. ILP Limitations
                                3. Superscalar Processors
                                  1. Multiple Issue Architecture
                                    1. Static Multiple Issue
                                      1. Dynamic Multiple Issue
                                      2. Instruction Scheduling
                                        1. In-Order Execution
                                          1. Out-of-Order Execution
                                          2. Register Renaming
                                            1. Eliminating False Dependencies
                                              1. Hardware Implementation
                                              2. Branch Prediction Enhancement
                                                1. Advanced Prediction Techniques
                                                  1. Speculative Execution
                                                2. Very Long Instruction Word (VLIW)
                                                  1. VLIW Architecture Principles
                                                    1. Instruction Packing
                                                      1. Compiler Responsibilities
                                                        1. Static Scheduling
                                                          1. Dependency Analysis
                                                          2. VLIW vs Superscalar Comparison
                                                        2. Data-Level Parallelism
                                                          1. Vector Processing
                                                            1. Vector Architecture Concepts
                                                              1. Vector Instructions
                                                                1. Vector Register Files
                                                                2. SIMD Extensions in General-Purpose Processors
                                                                  1. MMX (MultiMedia eXtensions)
                                                                    1. SSE (Streaming SIMD Extensions)
                                                                      1. SSE Generations
                                                                        1. Data Types and Operations
                                                                        2. AVX (Advanced Vector Extensions)
                                                                          1. AVX Improvements
                                                                            1. AVX-512
                                                                          2. Graphics Processing Units (GPUs)
                                                                            1. GPU Architecture Evolution
                                                                              1. GPU vs CPU Architecture
                                                                                1. GPU Computing Model
                                                                                  1. Thread Hierarchy
                                                                                    1. Memory Hierarchy
                                                                                    2. GPGPU (General-Purpose GPU) Computing
                                                                                      1. CUDA Architecture
                                                                                        1. OpenCL Framework
                                                                                        2. GPU Applications
                                                                                          1. Scientific Computing
                                                                                            1. Machine Learning
                                                                                              1. Cryptocurrency Mining
                                                                                          2. Thread-Level Parallelism
                                                                                            1. Multithreading Concepts
                                                                                              1. Thread vs Process Distinction
                                                                                                1. Thread Creation and Management
                                                                                                  1. Thread Synchronization
                                                                                                  2. Hardware Multithreading
                                                                                                    1. Fine-Grained Multithreading
                                                                                                      1. Interleaved Multithreading
                                                                                                        1. Context Switching Overhead
                                                                                                        2. Coarse-Grained Multithreading
                                                                                                          1. Block Multithreading
                                                                                                            1. Thread Switching Triggers
                                                                                                            2. Simultaneous Multithreading (SMT)
                                                                                                              1. Resource Sharing
                                                                                                                1. Thread Scheduling
                                                                                                                  1. Performance Benefits
                                                                                                                2. Multithreading Performance Issues
                                                                                                                  1. Resource Contention
                                                                                                                    1. Cache Interference
                                                                                                                      1. Memory Bandwidth Limitations
                                                                                                                    2. Multiprocessor Systems
                                                                                                                      1. Shared-Memory Multiprocessors
                                                                                                                        1. Symmetric Multiprocessing (SMP)
                                                                                                                          1. Uniform Memory Access (UMA)
                                                                                                                            1. Bus-Based Systems
                                                                                                                              1. Crossbar Switch Systems
                                                                                                                              2. Non-Uniform Memory Access (NUMA)
                                                                                                                                1. NUMA Architecture Benefits
                                                                                                                                  1. Memory Locality Optimization
                                                                                                                                2. Distributed-Memory Multiprocessors
                                                                                                                                  1. Message-Passing Systems
                                                                                                                                    1. Cluster Computing
                                                                                                                                      1. Network Topologies
                                                                                                                                        1. Mesh Networks
                                                                                                                                          1. Hypercube Networks
                                                                                                                                            1. Fat-Tree Networks
                                                                                                                                          2. Cache Coherence in Multiprocessors
                                                                                                                                            1. Cache Coherence Problem
                                                                                                                                              1. Causes of Incoherence
                                                                                                                                                1. Coherence Protocol Requirements
                                                                                                                                                2. Snooping-Based Protocols
                                                                                                                                                  1. Write-Invalidate Protocols
                                                                                                                                                    1. MSI Protocol
                                                                                                                                                      1. MESI Protocol
                                                                                                                                                        1. MOESI Protocol
                                                                                                                                                        2. Write-Update Protocols
                                                                                                                                                          1. Bus-Based Snooping
                                                                                                                                                          2. Directory-Based Protocols
                                                                                                                                                            1. Distributed Directory
                                                                                                                                                              1. Directory Entry Structure
                                                                                                                                                                1. Protocol Operations
                                                                                                                                                              2. Memory Consistency Models
                                                                                                                                                                1. Sequential Consistency
                                                                                                                                                                  1. Weak Consistency Models
                                                                                                                                                                    1. Release Consistency
                                                                                                                                                                  2. Multicore Processors
                                                                                                                                                                    1. Multicore Architecture Design
                                                                                                                                                                      1. Core Integration Strategies
                                                                                                                                                                        1. Shared vs Private Cache Hierarchies
                                                                                                                                                                          1. Private L1 Caches
                                                                                                                                                                            1. Shared L2/L3 Caches
                                                                                                                                                                            2. On-Chip Interconnection Networks
                                                                                                                                                                              1. Bus-Based Interconnects
                                                                                                                                                                                1. Ring-Based Interconnects
                                                                                                                                                                                  1. Mesh-Based Interconnects
                                                                                                                                                                                2. Multicore Performance Considerations
                                                                                                                                                                                  1. Parallel Programming Challenges
                                                                                                                                                                                    1. Load Balancing
                                                                                                                                                                                      1. Synchronization Overhead
                                                                                                                                                                                        1. False Sharing
                                                                                                                                                                                        2. Scalability Issues
                                                                                                                                                                                          1. Amdahl's Law Implications
                                                                                                                                                                                            1. Memory Wall Problem
                                                                                                                                                                                            2. Power and Thermal Management
                                                                                                                                                                                              1. Dynamic Voltage and Frequency Scaling
                                                                                                                                                                                                1. Core Parking
                                                                                                                                                                                              2. Heterogeneous Multicore Systems
                                                                                                                                                                                                1. Big.LITTLE Architecture
                                                                                                                                                                                                  1. CPU-GPU Integration
                                                                                                                                                                                                    1. Specialized Processing Units