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

三、玄铁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路执行


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

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
高清RISC-V指令集手册,RISC-V开发须备. RISC-V(英文读作“risk-five”),是一种全新的指令集架构。“V”包含两层意思,一是这是Berkeley从RISC I开始设计的第五代指令集架构;是它代表了变化(Variation)和向量(Vectors)。 2016年,RISC-V基金会(Foundation)正式成立开始运作。RISC-V基金会是一个非营利性的组织,负责维护标准的RISC-V指令集手册与架构文档,并推动RISC-V架构的发展。RISC-V架构的目标如下。 成为一种完全开放的指令集,可以被任何学术机构或商业组织所自由使用。 成为一种真正适合硬件实现且稳定的标准指令集RISC-V基金会负责维护标准的RISC-V架构文档和编译器等CPU所需的软件工具链,任何组织和个人可以随时在RISC-V基金会网站上免费下载(http://www.riscv.org)。 RISC-V的推出以及基金会的成立,受到了学术界与工业界的巨大欢迎。著名的科技行业分析公司Linley Group 将RISC-V评为“2016年最佳技术”。 开放而免费的RISC-V架构诞生,不仅对于高校与研究机构是个好消息;为前期资金缺乏的创业公司、成本极其敏感的产品、对现有软件生态依赖不大的领域,都提供了另外一种选择,而且得到了业界主要科技公司的拥戴。众多的芯片公司已经开始使用(譬如,三星、英伟达等)或者计划使用RISC-V用于其产品。 以RISC-V架构为基础的英文教材、中文教材都相继推出了。随着越来越多的公司和项目开始采用RISC-V架构的处理器,相信RISC-V的软件生态也会逐步壮大起来。
### 回答1: RISC-V是一种开放源代码的指令集架构,它具有简洁、高效、可扩展的特点,被广泛应用于各种计算机和嵌入式系统中。其指令集设计遵循了精简指令集计算机(RISC)的原则,着重于简化指令的设计和保持指令的一致性。 RISC-V指令集的特点包括以下几个方面: 1. 可扩展性:RISC-V提供了基本指令集(RV32I/RV64I)以及多个标准的扩展指令集,如浮点指令集(F)、向量指令集(V)等,用户可以根据需求选择不同的扩展指令集进行系统设计。 2. 模块化设计:RISC-V的指令集可以根据应用的需求进行灵活的扩展和定制,用户可以根据具体的应用场景选择需要的指令集模块,这种模块化的设计使得RISC-V非常适用于各种嵌入式系统。 3. 兼容性:RISC-V的指令集被设计为向后兼容的,因此可以支持旧有的指令集扩展,同时为未来的指令扩展提供了一定的灵活性。 4. 简洁性:RISC-V的指令集设计比较简单,仅包含了约50条基本指令,这样的设计使得指令集具有更高的可读性和易扩展性。 5. 跨平台:RISC-V是一种开放源代码的指令集架构,可以在不同的硬件平台上运行,由于其开放性,各种厂商可以基于RISC-V进行自主研发,使得更多的创新可以被应用于不同的领域。 总体而言,RISC-V指令集具有可扩展性、模块化设计、兼容性、简洁性和跨平台的特点,这使得它成为一种理想的指令集架构,被广泛应用于各种计算机和嵌入式系统中。 ### 回答2: RISC-V是一种开源指令集架构(Instruction Set Architecture,ISA),在计算机体系结构中被广泛应用。它的名称中的“RISC”代表精简指令集计算机(Reduced Instruction Set Computer),而“V”代表着第五个版本。 RISC-V指令集的设计目标是简单、通用且可扩展,在不同应用领域都能得到广泛应用。它提供了基本的指令集,包括加载/存储指令、算术和逻辑操作指令、分支和跳转指令等,以及一些扩展指令集,如浮点数指令集向量指令集RISC-V的指令集设计非常清晰,指令长度为32位,分为不同的格式(R、I、S、B、U、J),根据格式的不同,指令字段的划分也不同。RISC-V的指令集包含了大约50个基本指令,这些指令的功能非常基础,但足以满足大部分计算任务的需求。 RISC-V的设计原则之一是可扩展性。它提供了不同的标准扩展集,可以根据需求灵活地增加指令功能。这些扩展集包括浮点数扩展(F)、向量扩展(V)和安全扩展(S)。通过使用这些扩展集,可以使RISC-V处理器支持更多的功能,从而满足不同领域的需求。 总的来说,RISC-V指令集的设计目标是提供一种简单、通用和可扩展的架构,使得它可以广泛应用于各种不同的系统和领域。它的开放源代码和友好的许可协议使得它在学术界和工业界都受到了广泛的关注和采用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值