RISC-V 向量指令集研究(二)

文章详细介绍了玄铁C910处理器中的向量指令集,包括矢量整型、浮点型及加载存储指令等,并提到了一个希腊人设计的向量协处理器,该协处理器在双发射处理器上运行,具有多种执行单元和指令。此外,还讨论了向量内存单元和预取机制,以及相关模块的功能。
AI助手已提取文章相关产品:

三、玄铁c910中的向量指令集

对于矢量浮点指令,只有矢量浮点扩位转换指令和矢量浮点缩位转换指令可在元素位宽为 8 时正常执行,其他矢量浮点指令必须在元素位宽为 16/32/64 时执行,否则产生非法指令异常;矢量整型指令可支持元素位宽为 8/16/32/64 的计算。
每条指令位宽为 32 位,指令按英文字母顺序排列。
缩写含义如下:

  1. VLEN:矢量寄存器位宽,C910 中为 128。

     2. VLMAX:当前矢量寄存器组最大元素个数,VLMAX=VLEN/SEW*LMUL。

玄铁c910中向量指令集主要分为三类,共394条,具体为:

• 矢量整型指令

• 矢量浮点指令

• 矢量加载存储指令

按照具体功能分,有如下:

  1. 矢量控制指令
  2. 矢量 MISC 指令
  3. 矢量缩减指令
  4. 矢量乘法乘累加指令
  5. 矢量移位指令
  6. 矢量整型加减法指令
  7. 矢量整型比较指令
  8. 矢量整型最大值/最小值指令
  9. 矢量整型除法/取余指令
  10. 矢量元素排序操作指令
  11. 矢量整型定点加减法指令
  12. 浮点运算指令
  13. 矢量浮点比较指令
  14. 浮点传送指令
  15. 浮点数据类型转换指令
  16. 浮点缩减指令
  17. 浮点分类指令
  18. 矢量加载存储指令
  19. 矢量原子指令
  20. 矢量 SEGMENT 指令

四、 github上的向量协处理器

1、希腊人写的向量协处理器 挂在双发射处理器上

上传者:

1、模块介绍

模块名详情
vrrm寄存器映射,分配
Vis基于计分板,发射级,
Vex执行阶段,包含矢量通道、环绕逻辑和连接。
Vex_pipe执行通道,包括多个执行单元
Vmu向量存储单元
Vmu_ld_engLoad
Vmu_St_engStore
Vmu_tp_eng数据预取

2、包含的指令

|  Memory Operations  | Integer Operations  |
|:-------------------:|:-------------------:|
|  vfld               |vadd                 |
|  vflh               |vaddi                |
|  vflsd              |vaddw                |
|  vflsh              |vaddiw               |
|  vflsw              |vsub                 |
|  vflw               |vsubw                |
|  vflxd              |vmul                 |
|  vflxh              |vmulh                |
|  vflxw              |vmulhsu              |
|  vlb                |vmulhu               |
|  vlbu               |vmulwdn              |
|  vld                |vdiv                 |
|  vlh                |vdivu                |
|  vlhu               |vrem                 |
|  vlsb               |vremu                |
|  vlsbu              |vsll                 |
|  vlsd               |vslli                |
|  vlsw               |vsra                 |
|  vlswu              |vsrai                |
|  vlw                |vsrl                 |
|  vlwu               |vsrli                |
|  vlxb               |vand                 |
|  vlxbu              |vandi                |
|  vlxd               |vor                  |
|  vlxh               |vori                 |
|  vlxh               |vxor                 |
|  vlxhu              |vxori                |
|  vlxhu              |vseq                 |
|  vlxw               |vslt                 |
|  vlxwu              |vsltu                |
|  vsb                |vrelu                |
|  vsd                |vstep                |
|  vsh                |vbrelu               |
|  vssb               |vprelu               |
|  vssd               |vradd                |
|  vssh               |vrand                |
|  vssw               |vror                 |
|  vsw                |vrxor                |
|  vsxb               |                     |
|  vsxd               |                     |
|  vsxh               |                     |
|  vsxub              |                     |
|  vsxud              |                     |
|  vsxuh              |                     |
|  vsxuw              |                     |
|  vsxw               |                     |
|  *vtplcfg*          |                     |
|  *vtpl*             |                     |

其中,vtplcfg、vtpl为自定义指令

3、架构图

  1. 代码
Vstruct.sv结构体文件,打包信号用
Vrrm.sv寄存器重新映射
Vrat.sv寄存器别名表
Vis.sv向量指令发射级
Vrf.sv向量寄存器文件
VEX.SV执行级的顶层
Vex_pipe.sv每一lane的流水线
Vmu.Sv向量内存单元
vmu_ld_engLoad单元
vmu_st_engStore单元
vmu_tp_eng预取单元

Vector lane

并行计算机体系结构 #1 向量处理器 - 知乎

将阵列架构中的ALU替换为向量处理单元,在计算每一个元素时也进行流水线。现代向量扩展都会在硬件中自动实现这种形式。在这种架构中,每一个流水线向量单元也被称为“vector lane”。SIMD宽度就等于vector lane的数量。

  1. vrrm=Register Remmaping

(1)指令种类

  • 配置指令
  • 内存指令
  • 数据预取配置指令
  • 数据预取指令
  • 加载指令

(2)指令流输入

包括如下信息:

Src1,src2 索引,dst索引

32位的src1数据和32位的src2数据,7位的microop

(3)指令流输出

Src1,src2 索引,dst索引

新增iszero信号:store指令和扩展指令不写回dst

Remap在rat模块中完成

2、vrat=Vector Register Aliasing Table

用32个表项暂存寄存器信息,看起来是向量物理寄存器堆,一写三读 ,写入指令信息,

3、vis

4、vrf

5、vex:
执行级的每个pipe 包括整型和浮点两个ALU

6、vmu

五、github上的ara

1、22nm 1.7Ghz 16路执行


本文章仅供学习交流,如有引用请标注出处。

您可能感兴趣的与本文相关内容

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值