RISC-V 向量扩展概述

主要观点:介绍 RISC-V 向量扩展(RVV),与其他 SIMD 向量指令集比较,包括其架构模式、向量扩展特点、数据类型、指令编码、寄存器分组、向量分数、stripmining、Vstart 寄存器、掩码、尾/掩码无关/无干扰策略、向量寄存器大小、向量指令参数、内存操作、ABI、内在函数、ISA 亮点等方面。
关键信息

  • RVV 有四种基本模式和多个扩展,向量扩展增加 302 条指令及 4 种可配置加载存储操作,可分为与掩码、整数操作、浮点操作相关的三组。
  • 向量寄存器大小等是实现参数,一般 64 位 CPU 支持 8、16、32、64 位元素。
  • 指令编码独特,操作码不编码向量元素位宽,通过 vsetvl 设定所选元素宽度(SEW)。
  • 可设置寄存器组(LMUL),不同 LMUL 对应不同可使用的寄存器。
  • 可限制指令仅对寄存器的一部分(LMUL < 1)操作。
  • RVV 在架构层解决当前 SIMD ISAs 的循环处理问题,通过 vsetvli 设置应用向量长度(AVL)和向量长度(VL)。
  • 有 vstart 寄存器用于设置向量起始元素,其结果与实现相关。
  • 使用掩码概念,多数向量指令可掩码,且掩码解释为向量寄存器的 VL 低位,仅 v0 可用于掩码指令。
  • 有尾/掩码无关/无干扰策略,分别用于处理预启动、尾和非活动元素。
  • 内存操作包括多种加载存储方式,如整寄存器、向量长度元素、聚集/分散等。
  • ABI 允许自由修改寄存器,内在函数有单独规范。
  • 具有向上/向下转换向量、归约或水平指令、掩码指令、向量 iota、整数除法、多字算术、二进制操作、整数乘加、向量滑动等特点。
    重要细节
  • 如在指令编码中,通过不同的 vsetvli 参数设置可进行 8、16、32、64 位整数加法操作编码相同。
  • 寄存器分组示例中,不同 LMUL 下可使用的寄存器不同。
  • 在 stripmining 中,通过 vsetvli 设置 AVL 和 VL 来处理循环处理问题。
  • 掩码相关指令如 vmsof.m 等的工作方式及作用。
  • 向量 iota 指令的实现方式及作用。
  • 各种内存操作的具体细节和示例。
阅读 18
0 条评论