【RISC-V Vector 學習筆記】哪些 RVV 指令會寫入 GPR(XRF)?


在 RISC-V Vector Extension(RVV)的設計中,大多數指令都只涉及 VRF(vector register file)。不過,有些指令會寫入 XRF(整數暫存器檔),這類指令設計與應用上都需要特別處理,尤其在 RTL writeback 或 control flow 上具有實際影響。

會寫入 XRF 的 RVV 指令

指令功能說明
vsetvli設定 Vector 長度與類型,結果寫入 rd
vsetivli和 vsetvli 類似,但用立即數
vcpop.m統計 mask 向量中有幾個 bit 是 1
vfirst.m找出 boolean vector 第一個為 1 的 index
vmfirst.m找出 mask 第一個為 1 的 index

學習心得

  • vcpop.m、vfirst.m 等是 vector-to-scalar 的 reduction 指令,會將計算結果輸出到 x register。


實際應用場景

  1. 條件篩選與 Early Exit
    • vfirst.m 可快速判斷向量中是否有符合條件的元素,例如判斷第一個非零結果在哪裡。
    • 搭配 beq x6, -1, exit 這類控制語句,可實現 SIMD-aware 的條件分支。
  2. 結果收斂與摘要統計
    • vcpop.m 可計算 mask 中符合條件的總數,例如「大於閾值的 pixel 數量」、「通過篩選的 item 數量」。

結語


RVV 中會寫 XRF 的指令不多,但每一個都與 控制邏輯scalar decision 有關。對 RTL 實作者來說,這些指令是少數需要打通 X 路徑的 case;對軟體開發者來說,它們是讓 vector 運算能與分支邏輯整合的關鍵工具。


發表留言