向量处理器

一、向量处理基础概念

1. 向量定义与需求

  • 向量:由一组有序、同类型、同位数的元素组成(如科学计算中的数组)。
  • 应用领域:科学计算、图像处理、人工智能(如矩阵运算、神经网络)。
  • 标量处理机瓶颈:仅处理单个数据,性能受限于指令级并行(ILP)挖掘难度(如循环开销、流水线冲突)。
    $$ \text{标量代码示例:} \\ \begin{array}{l} \text{loop:} \\ \quad \text{LD F0, a} \\ \quad \text{LD F2, 0(Rx)} \quad \text{// 取A[i]} \\ \quad \text{MULTD F2, F0, F2} \quad \text{// a*A[i]} \\ \quad \ldots \\ \end{array}\\ \text{执行578条指令(N=64)} $$

2. 并行类型

并行类型 说明 硬件实现
指令级并行 (ILP) 单指令流中多指令并行执行(如超标量、VLIW) Tomasulo算法、乱序执行
数据级并行 (DP) 对数组元素执行相同操作(单指令多数据) 向量架构、SIMD扩展(SSE)、GPU、TPU
线程级并行 (TLP) 多指令流并行执行(如多核、多线程) 多处理机系统

关键点:NEC SX-4 同时支持 ILP、TLP 和 DP。

二、向量处理机核心架构

1. 标量 vs 向量处理机

类型 数据表示 指令示例 性能对比
标量处理机 仅标量数据 ADD R1, R2 低效(需循环处理向量)
向量处理机 标量+向量数据 ADDV V1, V2, V3 高效(单指令处理N个元素)

向量指令类型

  • ADDV V1, V2, V3(向量+向量)
  • ADDSV V1, F0, V2(标量+向量)
  • LVWS V1, R1, R2(跨步载入,步长=R2)
  • LVI V1, R1, V2(间接载入,gather操作)

2. 向量数据结构

表示方法 参数 适用场景 示例
等间距向量 起始地址A、长度L、间距f 连续数据(银河机,f=8) VADD V1, V3, V5(长度VL=50)
带位移向量 基地址A、位移量f、长度L 非连续数据(可变增量) A=10000, L=12, f=4(有效长度8)
稀疏向量 压缩存储+位掩码 含大量零元素的数据 位向量[0,0,1,0,1,0,0,1]标记非零位置

稀疏向量运算优化:直接对压缩向量操作(如 C4=A4+B4),避免解压开销。

3. 向量处理方式

方式 执行顺序 特点 适用架构
横向处理 按元素顺序(水平) 频繁切换功能部件,效率低 标量机(不推荐)
纵向处理 按操作步骤(垂直) 减少功能部件切换,适合长向量 存储器-存储器结构
纵横处理 分组处理(纵向+横向) 解决向量长度 > 寄存器长度问题 寄存器-寄存器结构

纵横处理示例(N=100, MVL=64):

  1. 分组:k = ⌈100/64⌉ = 2(余数L=36)
  2. 组内纵向执行:
    $$ \begin{array}{l} \text{第1组:} \\ \quad T_{1-64} = B_{1-64} + C_{1-64} \\ \quad D_{1-64} = A_{1-64} \times T_{1-64} \\ \text{第2组(余数):} \\ \quad T_{65-100} = B_{65-100} + C_{65-100} \\ \quad D_{65-100} = A_{65-100} \times T_{65-100} \end{array} $$

三、向量处理机结构设计

1. 存储器-存储器结构

  • 核心思想:操作数直接来自存储器,结果直接写回存储器。
  • 带宽挑战:需每周期读2个操作数 + 写1个结果。
  • 解决方案
    • 多体交叉存储器:例如8个存储体并行(低位交叉编址)。
    • 缓冲技术:在流水线输入/输出端加可变延迟缓冲器(如Star-100)。
    • 冲突避免:数据分布策略(例:A[i]存模块(i mod 8))。

时序优化示例(8模块存储系统):

  • 延迟配置:A延迟2周期,C延迟4周期 → 对齐操作数到达时间。

2. 寄存器-寄存器结构

  • 核心思想:用向量寄存器作为中间存储,降低主存带宽压力。
  • 代表机型:Cray-1(12条流水线,8个向量寄存器V0-V7,每个64元素)。
  • 层级存储
    • 向量寄存器 (V):64元素/寄存器,用于向量运算。
    • 标量寄存器 (S/T):高速标量中间存储(程序员管理)。
    • 地址寄存器 (A/B):变址和循环控制。

Cray-1关键特性

  • 并行通道:每个V寄存器有独立总线到6个功能部件。
  • 冲突类型
    • V_i冲突:并行指令使用相同向量寄存器(如 V3 ← V1+V2V5 ← V4∧V1)。
    • 功能部件冲突:多条指令竞争同一计算单元(如两条乘法指令)。

四、性能提升技术

1. 链接技术 (Chaining)

  • 原理:将先写后读相关的指令链接成流水线,减少启动延迟。
  • 条件:无功能部件冲突 + 无向量寄存器冲突。
  • 时序公式
    $$ T_{\text{link}} = T_{s} + T_{e} + (n-1)T_c \quad \text{(单指令)} \\ T_{\text{all}} = \sum_{i=1}^{m} (T_{\text{start}}^{(i)} + n) \quad \text{(多指令编队)} $$

    T_s:流水线建立时间;T_e:通过时间;T_c:时钟周期。

示例(Cray-1链接):
$$ \begin{array}{l} V_0 \leftarrow \text{存储器} \quad (T_e=7) \\ V_2 \leftarrow V_0 + V_1 \quad (T_e=3) \\ V_3 \leftarrow V_2 \ll A_3 \quad (T_e=4) \\ V_5 \leftarrow V_3 \land V_4 \quad (T_e=2) \\ \end{array} \text{通过时间} = 7+3+4+2 = 16 \text{拍} $$

2. 分段开采 (Stripmining)

  • 问题:向量长度n > 向量寄存器长度MVL(如Cray-1的MVL=64)。
  • 方法:将长向量分块,循环处理每块。
  • 执行时间
    $$ T_{\text{all}} = \left\lceil \frac{n}{\text{MVL}} \right\rceil (T_{\text{loop}} + T_{\text{start}}) + m \cdot n $$

    T_loop:循环开销(固定15拍);m:编队数。

DAXPY示例Y = a*X + Y, n=200, MVL=64):

  • 分组:k = ⌈200/64⌉ = 4块(最后余数40元素)
  • 编队数m=3T_all = 4×(15+31) + 3×200 = 784

3. 条件执行

  • 掩码寄存器:1位/元素,控制是否执行操作。
  • 示例
    1
    2
    3
    cvm                   ! 启用所有掩码
    vgt vA, f0 ! 设置掩码(A[i]>0)
    vld vA, xB, vm ! 仅在掩码位为1时载入B到A

五、性能评价指标

1. 单指令处理时间

$$ T_{\text{vp}} = T_s + T_e + (n-1)T_c $$

  • T_s:建立时间(如取指令)
  • T_e:首元素通过时间(功能部件延迟)
  • T_c:流水线时钟周期

2. 编队 (Convoy) 分析

  • 编队定义:可并行执行的指令组(无冲突)。
  • 总时间
    $$ T_{\text{all}} = \sum_{i=1}^{m} (T_{\text{start}}^{(i)} + n) \quad \text{(n} \leq \text{MVL)} $$

示例(5条指令分组):

编队 指令 冲突说明
编队1 LV V1, Rx 取数部件独占
编队2 MULTSV V2,F0,V1 LV V3,Ry 无冲突(不同功能部件)
编队3 ADDV V4,V2,V3 依赖前两条结果
编队4 SV Ry, V4 存数部件独占

3. 关键指标

指标 定义 公式
峰值性能 $R_\infty$ 向量长度→∞时的性能 $R_\infty = \lim_{n\to\infty} \frac{\text{浮点操作数} \times f_c}{T}$
半性能长度 $n_{1/2}$ 性能达峰值一半时的向量长度 解方程 $\frac{R_\infty}{2} = \frac{2n f_c}{T}$
临界长度 $n_v$ 向量模式快于标量模式的最小长度 $T_{\text{标量}} > T_{\text{向量}}$

计算示例(DAXPY,f_c=200MHz):

  • $R_\infty = 100 \text{ MFLOPS}$ → $n_{1/2} = 13$
  • $T_{\text{标量}} = 59n$, $T_{\text{向量}} = 64 + 3n$ → $n_v = 2$

六、实例分析

1. 经典向量机

机型 推出时间 特点 峰值性能
Cray-1 1976 首台ECL超级计算机,12.5ns周期 100 MFLOPS
Cray Y-MP 1988 8处理机,共享寄存器,6ns周期 2.67 GFLOPS
NEC SX-X/44 1991 4处理机,每机4组流水线,2.9ns周期 22 GFLOPS
富岳 (Fugaku) 2020 Armv8+SVE指令集,7,630,848核 442 PetaFLOPS

2. 现代应用

  • GPU向量化:NVIDIA H100使用寄存器-寄存器结构,通过3D堆叠(X100)和系统级优化(网络+软件)实现差异化竞争力。
  • 关键洞察:技术壁垒源于全价值链掌控(硬件+软件+生态),非单点突破。

向量处理器
https://blog.xiaoaojianghu.fun/posts/bf12c427.html
作者
wst
发布于
2025年6月11日
许可协议