iT邦幫忙

2024 iThome 鐵人賽

DAY 27
1

今日的行程:
辦公室:9:30 - 19:30
讀書室:21:00 - 22:00

正片開始

下午的公司讀書會,強者同事介紹了 Vector Extension,這個 extension 在 ISA 層面提供了平行運算的機制,可以用來加速某些特定應用的計算,例如:影像處理、AI 運算...等,和 x86 的 SSE、AVX,ARM 的 NEON、SVE 是類似的技術,但要說的話,和 SVE 會比較相近,相較於 SSE、AVX、NEON,RVV 和 SVE 都是 VLA (Variable Length Agnostic) 的 programming model,在軟體的移植性 (portability) 上更為方便。

Programming model

實作定義的常數

  • VLEN: vector register 的長度 (bit),最大 65536 bit
  • ELEN: vector element 的長度 (bit),最小 8 bit
    這兩個常數都是硬體實作的時候,可以自行決定大小的

Vector extension registers

新增了

  • 32 個 vector register: v0-v31
  • 7 個 CSR: vstart, vxsat, vxrm, vcsr, vl, vtype, vlenb
    並且如同 floating point 在 [m|s]status 中有 FS 欄位,也新增了 VS 欄位,若有 H extension 的話,則 vsstatus 中也有 VS,行為都和 FS 一樣。
vtype (vector type)

有 6 個欄位

  • vlmul: vector register group multiplier (LMUL) setting
  • vsew: vector element width (SEW) setting
  • vta
  • vma
  • reserved
  • vill
vl (vector length)

紀錄向量指令中處理的元素個數,只能被 vsetvl 指令或是第一次的 vector load 指令更新

vlenb (vector byte length)

紀錄一個 vector register 有多長 (byte)

vstart (vector start index)

紀錄第一個參與運算的 vector 元素 index

結論


上一篇
# [鐵人賽] Day 26 ARM 第 13 章節 GIC-V2 (2)
下一篇
[鐵人賽] Day 28 RISC-V 第 18 章 Vector Extension (2)
系列文
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言