硬件架构深入

硬件架构深入

硬件架构深入

深入理解目标硬件架构是编译器优化的基础。本章节详细分析GPU、TPU、FPGA等现代加速器的硬件架构,为编译器设计提供硬件层面的洞察。

📋 章节概览

🎯 学习目标

通过本章节的学习,你将掌握:

  • 架构分类: 理解不同类型处理器的架构特点
  • 性能模型: 建立硬件性能分析的理论基础
  • 优化策略: 针对特定硬件的编译器优化方法
  • 设计权衡: 理解硬件设计中的性能与功耗权衡
  • 发展趋势: 了解硬件架构的发展方向

🏗️ 现代计算架构分类

按并行度分类

计算架构
├── 标量处理器 (Scalar)
│   └── 传统 CPU 核心
├── 向量处理器 (Vector)
│   └── SIMD 单元
├── 并行处理器 (Parallel)
│   ├── 多核 CPU
│   ├── GPU (SIMT)
│   └── 众核处理器
└── 专用处理器 (Specialized)
    ├── DSP
    ├── AI 加速器
    └── ASIC

按存储访问模式分类

存储架构
├── 冯·诺依曼架构
│   └── 指令和数据共享存储
├── 哈佛架构
│   └── 指令和数据分离存储
├── 数据流架构
│   └── 数据驱动计算
└── 近存储计算
    └── Processing-in-Memory

🖥️ GPU 架构深入分析

NVIDIA GPU 架构演进

架构演进时间线:
Fermi (2010) → Kepler (2012) → Maxwell (2014) → Pascal (2016) 
→ Volta (2017) → Turing (2018) → Ampere (2020) → Ada Lovelace (2022) → Hopper (2022)

GPU 层次结构

GPU 芯片
├── GPC (Graphics Processing Cluster)
│   ├── TPC (Texture Processing Cluster)
│   │   └── SM (Streaming Multiprocessor)
│   │       ├── CUDA Cores
│   │       ├── Tensor Cores (Volta+)
│   │       ├── RT Cores (Turing+)
│   │       ├── Shared Memory
│   │       ├── Register File
│   │       └── Warp Scheduler
│   └── Raster Engine
├── Memory Controller
├── L2 Cache
└── NVLink/PCIe Interface

SM (Streaming Multiprocessor) 详细结构

SM 内部组织 (Ampere GA102):
├── 128 CUDA Cores (FP32)
├── 64 CUDA Cores (INT32)
├── 4 Third-gen Tensor Cores
├── 1 RT Core (2nd gen)
├── 4 Warp Schedulers
├── 8 Dispatch Units
├── 128 KB Shared Memory/L1 Cache
├── 65536 x 32-bit Registers
└── 16 Load/Store Units

🧠 AI 加速器架构

Google TPU 架构

TPU v4 架构:
├── Matrix Multiply Unit (MXU)
│   └── 128x128 systolic array
├── Vector Processing Unit (VPU)
│   ├── Vector ALUs
│   ├── Vector Registers
│   └── Scalar Unit
├── High Bandwidth Memory (HBM)
│   └── 32 GB HBM2
├── Interconnect
│   └── 2D Torus Network
└── Host Interface
    └── PCIe Gen4

脉动阵列 (Systolic Array) 原理

脉动阵列计算模式:

输入 A →  [PE] → [PE] → [PE] → 输出
         ↓     ↓     ↓
输入 B → [PE] → [PE] → [PE] → 输出
         ↓     ↓     ↓  
输入 B → [PE] → [PE] → [PE] → 输出
         ↓     ↓     ↓
        输出  输出  输出

PE (Processing Element):
├── 乘法器
├── 加法器
├── 累加器
└── 寄存器

华为昇腾 NPU 架构

昇腾 910 架构:
├── AI Core
│   ├── Cube Unit (矩阵计算)
│   ├── Vector Unit (向量计算)
│   ├── Scalar Unit (标量计算)
│   └── Local Memory
├── AI CPU
│   └── ARM Cortex-A55
├── DVPP (Digital Vision Pre-Processing)
├── HBM2e Memory
└── PCIe 4.0 Interface

🔧 FPGA 架构分析

Xilinx FPGA 架构

Xilinx Versal ACAP:
├── Programmable Logic (PL)
│   ├── CLB (Configurable Logic Block)
│   ├── DSP Slices
│   ├── Block RAM
│   └── UltraRAM
├── Processing System (PS)
│   ├── ARM Cortex-A72 (Dual-core)
│   ├── ARM Cortex-R5F (Dual-core)
│   └── DDR4/LPDDR4 Controller
├── AI Engine Array
│   ├── AI Engine Tiles
│   ├── Memory Tiles
│   └── Interface Tiles
└── Hardened IP
    ├── PCIe Gen4
    ├── Ethernet
    └── Interlaken

CLB (Configurable Logic Block) 结构

CLB 内部组织:
├── 8 x LUT6 (6-input Look-Up Table)
├── 16 x Flip-Flops
├── 2 x Distributed RAM
├── 2 x SRL (Shift Register LUT)
├── Carry Logic
└── Multiplexers

AI Engine 架构

AI Engine Tile:
├── VLIW Vector Processor
│   ├── Vector ALU
│   ├── Scalar ALU
│   └── Load/Store Unit
├── Program Memory (16 KB)
├── Data Memory (32 KB)
├── AXI4-Stream Interface
└── Cascade Connections

💾 内存系统架构

GPU 内存层次

GPU 内存层次 (延迟/带宽):

寄存器 (Registers)
├── 延迟: 1 cycle
├── 带宽: ~20 TB/s
└── 容量: 64KB per SM

共享内存 (Shared Memory)
├── 延迟: ~20 cycles
├── 带宽: ~19 TB/s
└── 容量: 128KB per SM

L1 缓存
├── 延迟: ~80 cycles
├── 带宽: ~9 TB/s
└── 容量: 128KB per SM

L2 缓存
├── 延迟: ~200 cycles
├── 带宽: ~7 TB/s
└── 容量: 40MB (A100)

全局内存 (HBM2e)
├── 延迟: ~300 cycles
├── 带宽: ~2 TB/s
└── 容量: 80GB (A100)

HBM (High Bandwidth Memory) 架构

HBM2e 堆栈结构:
├── Logic Die (底层)
│   ├── PHY Interface
│   ├── Memory Controller
│   └── TSV (Through-Silicon Via)
├── DRAM Dies (8层)
│   ├── Bank Groups
│   ├── Banks
│   └── Subarrays
└── Microbumps
    └── 1024-bit Interface

性能特性:
├── 带宽: 460 GB/s per stack
├── 容量: 16/24/32 GB per stack
├── 功耗: ~5W per stack
└── 延迟: ~100ns

🌐 片上网络 (NoC) 架构

2D Mesh 网络

2D Mesh 拓扑:
[R]─[R]─[R]─[R]
 │   │   │   │
[R]─[R]─[R]─[R]
 │   │   │   │  
[R]─[R]─[R]─[R]
 │   │   │   │
[R]─[R]─[R]─[R]

R = Router
每个 Router 连接:
├── 本地处理单元
├── 4个相邻 Router
└── 路由逻辑

Torus 网络

Torus 拓扑 (环形连接):
[R]─[R]─[R]─[R]
 │ ╲ │ ╱ │ ╲ │
[R]─[R]─[R]─[R]
 │ ╱ │ ╲ │ ╱ │
[R]─[R]─[R]─[R]
 │ ╲ │ ╱ │ ╲ │
[R]─[R]─[R]─[R]

优势:
├── 更短的平均路径
├── 更好的负载均衡
└── 更高的容错性

📊 性能建模

Roofline 模型

性能 (FLOPS) = min(
    Peak Performance,
    Arithmetic Intensity × Memory Bandwidth
)

其中:
- Arithmetic Intensity = FLOPs / Bytes
- Memory Bandwidth = 内存带宽
- Peak Performance = 峰值计算性能

GPU 性能分析

// GPU 性能计算示例
struct GPUPerf {
    float compute_throughput;  // TFLOPS
    float memory_bandwidth;    // TB/s
    int sm_count;             // SM 数量
    int cores_per_sm;         // 每个 SM 的核心数
    float base_clock;         // 基础时钟频率 (GHz)
    float boost_clock;        // 加速时钟频率 (GHz)
};

// A100 规格
GPUPerf a100 = {
    .compute_throughput = 19.5,  // FP32
    .memory_bandwidth = 2.0,
    .sm_count = 108,
    .cores_per_sm = 64,
    .base_clock = 1.41,
    .boost_clock = 1.73
};

// 理论峰值性能计算
float peak_flops = a100.sm_count * a100.cores_per_sm * 
                   a100.boost_clock * 2; // 2 ops per cycle

🔮 未来发展趋势

新兴架构

发展方向:
├── 近存储计算 (Near-Data Computing)
│   ├── Processing-in-Memory (PIM)
│   ├── Computational Storage
│   └── Smart Memory
├── 神经形态计算 (Neuromorphic)
│   ├── Spiking Neural Networks
│   ├── Memristor Arrays
│   └── Event-driven Processing
├── 量子计算 (Quantum)
│   ├── 量子比特
│   ├── 量子门
│   └── 量子纠错
└── 光学计算 (Optical)
    ├── 光子处理器
    ├── 光学互连
    └── 光电混合

技术挑战

主要挑战:
├── 功耗墙 (Power Wall)
├── 内存墙 (Memory Wall)
├── 指令级并行墙 (ILP Wall)
├── 可靠性挑战
├── 设计复杂度
└── 制造成本

🔗 相关资源