RISC-V Vector指令學習架構

純紀錄從0到有的學習順序

第一階段:Vector 基礎觀念

  1. 為什麼需要 Vector Extension?
    • 傳統 SIMD vs. Vector ISA 的差異
    • RVV 相較於其他架構(如 AVX, NEON)有何優勢
  2. Vector 寬度與 VLEN(Vector Register Length)
    • 註冊檔長度、可變寬度向量的彈性
  3. 基本術語解釋:
    • vtype, vl, vlenb, lmul, sew, vmask

第二階段:Vector 設定與狀態控制

  1. vsetvli 指令
    • 設定 vl(vector length)與 vtype
    • 動態調整向量長度與資料型態
  2. vtype 解碼:SEW、LMUL 與 tail policy
    • 設定 element 寬度與向量長度乘數
    • tail agnostic vs. tail undisturbed 行為
  3. 向量 mask 機制
    • vmask 的啟用、遮罩條件運算

第三階段:基本向量指令類型

  1. 載入與儲存(Load/Store)
    • vlse.v, vsse.v, vle.v, vse.v
  2. 算術與邏輯(ALU)
    • vadd.vv, vmul.vx, vsub.vi 等指令
  3. 壓縮與展開(Compress/Expand)
    • vcompress, vmerge, vslide

第四階段:進階應用與效能議題

  1. Reduction / Widening / Narrowing
    • 向量加總、寬縮運算應用
  2. Segment Load/Store
    • 一次讀寫多筆資料結構,支援 struct-like 資料格式
  3. Predication / Masking / Conditional Execution
    • 複雜控制流下的向量運算

第五階段:實務與驗證

  1. 組合語言範例分析
  2. 向量化簡單迴圈:如 for(i=0;i<n;++i) a[i] += b[i]
  3. 與 scalar 程式碼對照:比較效能與語意


發表留言