【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(二)-向量元素到向量寄存器状态的映射

1. 引言

以下是《riscv-v-spec-1.0.pdf》文档的关键内容:
这是一份关于向量扩展的详细技术文档,内容覆盖了向量指令集的多个关键方面,如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量算术指令格式、向量整数和浮点算术指令、向量归约操作、向量掩码指令、向量置换指令、异常处理以及标准向量扩展等。
首先,文档定义了向量元素和向量寄存器状态之间的映射关系,并阐述了向量指令的格式。在此基础上,提出了配置设置指令,如vsetvl、ivsetiv和vlsetvl,用于设定向量长度(VL)和向量对齐长度(AVL)。
接着,文档详细说明了向量加载和存储操作,以及向量内存对齐和一致性模型。这些模型确保了向量操作的高效性和准确性。
然后,文档介绍了向量算术指令格式,包括向量整数、固定点和浮点算术指令。这些指令支持广泛的数学运算,为高性能计算提供了强大的支持。
此外,文档还涉及向量归约操作、掩码指令和置换指令,这些指令增强了向量操作的灵活性和功能性。
最后,文档讨论了异常处理机制,并列举了标准向量扩展指令列表。这些扩展指令为向量处理器提供了丰富的功能集,使其能够适应不同的应用场景和性能需求。
综上所述,这份文档为向量指令集的设计和实现提供了全面的指导和参考,有助于开发者更好地理解和利用向量处理器的能力。

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(一)-向量扩展编程模型-CSDN博客

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(二)-向量元素到向量寄存器状态的映射-CSDN博客

4 向量元素到向量寄存器状态的映射

以下图表说明了根据当前的SEW和LMUL设置以及实现的VLEN,如何将不同宽度的元素打包到向量寄存器的字节中。元素被打包到每个向量寄存器中,其中最低有效字节位于最低编号的位中。选择这种映射是为了为软件提供最简单和最可移植的模型,但在某些操作上,对于更宽的向量数据路径,可能会产生较大的布线成本。向量指令集是专门设计的,以支持内部重新排列不同SEW的向量数据以减少数据路径布线成本的实现,同时在外部保留简单的软件模型。例如,微架构可以跟踪写入向量寄存器的EEW,然后如果以不同的EEW访问寄存器,则插入额外的加扰操作以重新排列数据。

4.1. LMUL = 1时的映射

当LMUL=1时,元素简单地按照从向量寄存器的最低有效位到最高有效位的顺序进行打包。为了提高可读性,向量寄存器布局从右到左绘制,字节地址递增。元素内的位以小端格式编号,位索引从右到左递增,对应于幅度的增加。

LMUL=1 的示例。

元素索引以十六进制给出,并显示在存储元素的最低有效字节处。

 VLEN=32bByte 3 2 1 0SEW=8b 3 2 1 0SEW=16b 1 0SEW=32b 0VLEN=64bByte 7 6 5 4 3 2 1 0SEW=8b 7 6 5 4 3 2 1 0SEW=16b 3 2 1 0SEW=32b 1 0SEW=64b 0VLEN=128bByte F E D C B A 9 8 7 6 5 4 3 2 1 0SEW=8b F E D C B A 9 8 7 6 5 4 3 2 1 0SEW=16b 7 6 5 4 3 2 1 0SEW=32b 3 2 1 0SEW=64b 1 0VLEN=256bByte 1F1E1D1C1B1A19181716151413121110 F E D C B A 9 8 7 6 5 4 3 2 1 0SEW=8b 1F1E1D1C1B1A19181716151413121110 F E D C B A 9 8 7 6 5 4 3 2 1 0SEW=16b F E D C B A 9 8 7 6 5 4 3 2 1 0SEW=32b 7 6 5 4 3 2 1 0SEW=64b 3 2 1 0

4.2. LMUL < 1时的映射

当LMUL < 1时,仅使用向量寄存器中的前LMUL*VLEN/SEW个元素。向量寄存器中的剩余空间被视为尾部的一部分,因此必须遵守vta设置。

Example, VLEN=128b, LMUL=1/4Byte F E D C B A 9 8 7 6 5 4 3 2 1 0SEW=8b - - - - - - - - - - - - 3 2 1 0SEW=16b - - - - - - 1 0SEW=32b - - - 0

4.3. LMUL > 1时的映射

当向量寄存器分组时,向量寄存器组的元素将按照元素顺序连续打包,从编号最低的向量寄存器开始,并在每个向量寄存器填满后移动到组中编号次高的向量寄存器。

 LMUL > 1 examplesVLEN=32b, SEW=8b, LMUL=2Byte 3 2 1 0v2*n 3 2 1 0v2*n+1 7 6 5 4VLEN=32b, SEW=16b, LMUL=2Byte 3 2 1 0v2*n 1 0v2*n+1 3 2VLEN=32b, SEW=16b, LMUL=4Byte 3 2 1 0v4*n 1 0v4*n+1 3 2v4*n+2 5 4v4*n+3 7 6VLEN=32b, SEW=32b, LMUL=4Byte 3 2 1 0v4*n 0v4*n+1 1v4*n+2 2v4*n+3 3VLEN=64b, SEW=32b, LMUL=2Byte 7 6 5 4 3 2 1 0v2*n 1 0v2*n+1 3 2VLEN=64b, SEW=32b, LMUL=4Byte 7 6 5 4 3 2 1 0v4*n 1 0v4*n+1 3 2v4*n+2 5 4v4*n+3 7 6VLEN=128b, SEW=32b, LMUL=2Byte F E D C B A 9 8 7 6 5 4 3 2 1 0v2*n 3 2 1 0v2*n+1 7 6 5 4VLEN=128b, SEW=32b, LMUL=4Byte F E D C B A 9 8 7 6 5 4 3 2 1 0v4*n 3 2 1 0v4*n+1 7 6 5 4v4*n+2 B A 9 8v4*n+3 F E D C

4.4. 混合宽度操作中的映射

向量ISA被设计为支持混合宽度操作,而无需额外的显式重排指令。当对不同精度值的多个向量进行操作时,推荐的软件策略是动态修改vtype以保持SEW/LMUL恒定(因此VLMAX也恒定)。以下示例显示了在VLEN=128b实现中的四种不同的打包元素宽度(8b、16b、32b、64b)。向量寄存器分组因子(LMUL)根据相对元素大小而增加,以便每个组可以容纳相同数量的向量元素(在此示例中VLMAX=8),从而简化stripmining代码。

Example VLEN=128b, with SEW/LMUL=16
Byte F E D C B A 9 8 7 6 5 4 3 2 1 0
vn - - - - - - - - 7 6 5 4 3 2 1 0 SEW=8b, LMUL=1/2
vn 7 6 5 4 3 2 1 0 SEW=16b, LMUL=1
v2*n 3 2 1 0 SEW=32b, LMUL=2
v2*n+1 7 6 5 4
v4*n 1 0 SEW=64b, LMUL=4
v4*n+1 3 2
v4*n+2 5 4
v4*n+3 7 6

下表显示了具有混合宽度操作的循环中每个可能的恒定SEW/LMUL操作点。每列代表一个恒定的SEW/LMUL操作点。表中的条目是产生该列SEW/LMUL值的LMUL值,对应于该行的数据宽度。在每列中,一个数据宽度的LMUL设置表示它可以与同一列中也具有LMUL设置的其他数据宽度对齐,以便它们都具有相同的VLMAX。

更大的LMUL设置也可以用来简单地增加向量长度,以减少在需要较少向量寄存器组的情况下的指令获取和分发开销。

4.5. 掩码寄存器布局

无论SEW和LMUL如何,向量掩码仅占用一个向量寄存器。在掩码向量寄存器中,每个元素都分配有一个掩码位。元素i的掩码位位于掩码寄存器的第i位,与SEW或LMUL无关。

【免费】RISC-V向量扩展指令集 VectorExtension资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/269262.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬取网站视频资源

思路&#xff1a; 在界面找到视频对应的html元素位置&#xff0c;观察发现视频的url为https://www.pearvideo.com/video_视频的id&#xff0c;而这个id在html中的href中&#xff0c;所以第一步需要通过xpath捕获到所需要的id 在https://www.pearvideo.com/video_id的页面&…

LabVIEW非接触式电阻抗层析成像系统

LabVIEW非接触式电阻抗层析成像系统 非接触式电阻抗层析成像&#xff08;NEIT&#xff09;技术以其无辐射、非接触、响应速度快的特点&#xff0c;为实时监测提供了新的解决方案。基于LabVIEW的电阻抗层析成像系统&#xff0c;实现了数据的在线采集及实时成像&#xff0c;提高…

记一次dockerfile无法构建问题追溯

我有一个dockerfile如下&#xff1a; ENTRYPOINT ["/sbin/tini"&#xff0c;"-g", "--"] CMD /home/scrapy/start.sh 我原本的用意是先启动tini&#xff0c;再执行下面的cmd命令启动start.sh。 为啥要用tini&#xff1f; 因为我的这个docker…

如何选择程序员职业赛道

目录 前言1 个人技能分析1.1 技术栈评估1.2 经验积累1.3 数据科学能力 2 兴趣与价值观2.1 用户交互与界面设计2.2 复杂问题解决与系统优化 3 长期目标规划4 市场需求分析4.1 人工智能和云计算4.2 前沿技术趋势 5 就业前景5.1 前端在创意性公司中的应用5.2 后端在大型企业中的广…

Windows Docker 部署 MySQL

部署 MySQL 打开 Docker Desktop&#xff0c;切换到 Linux 容器。然后在 PowerShell 执行下面命令&#xff0c;即可启动一个 MySQL 服务。这里安装的是 8.3.0 Tag版本&#xff0c;如果需要安装其他或者最新版本&#xff0c;可以到 Docker Hub 进行查找。 docker run -itd --n…

YOLO v9训练自己数据集

原以为RT-DETR可以真的干翻YOLO家族&#xff0c;结果&#xff0c;&#xff01;&#xff01;&#xff01;&#xff01; 究竟能否让卷积神经网络重获新生&#xff1f; 1.数据准备 代码地址&#xff1a;https://github.com/WongKinYiu/yolov9 不能科学上网的评论区留言 数据集…

Web前端---表格和表单

1.表格概述 表格标记&#xff1a;<table></table> 表格标题标记&#xff1a;<caption></caption> 表头&#xff1a;<th></th>------heading 行标记&#xff1a;<tr></tr>-----r是row 列标记&#xff1a;<td></t…

HQL,SQL刷题,尚硅谷

目录 相关表数据&#xff1a; ​编辑 题目及思路解析&#xff1a; 复杂查询&#xff0c;子查询 1、查询所有课程成绩均小于60分的学生的学号、姓名 2、查询没有学全所有课的学生的学号、姓名 3、查询出只选修了三门课程的全部学生的学号和姓名 总结归纳&#xff1a; 知识补充&a…

JavaWeb Tomcat启动、部署、配置、集成IDEA

web服务器软件 服务器是安装了服务器软件的计算机&#xff0c;在web服务器软件中&#xff0c;可以部署web项目&#xff0c;让用户通过浏览器来访问这些项目。 Web服务器是一个应用程序&#xff08;软件&#xff09;&#xff0c;对HTTP协议的操作进行封装&#xff0c;使得程序…

【C语言】Leetcode 876. 链表的中间节点

主页&#xff1a;17_Kevin-CSDN博客 专栏&#xff1a;《Leetcode》 题目 通过题目的要求可以判断出有两种示例要解决&#xff0c;一种是偶数节点的链表&#xff0c;一种是奇数节点的链表&#xff0c;应对这两种情况我们需要使程序对二者都可以兼容。 解决思路 struct ListNode…

吴恩达机器学习笔记:第5周-9 神经网络的学习2(Neural Networks: Learning)

目录 9.4 实现注意&#xff1a;展开参数9.5 梯度检验9.6 随机初始化9.7 综合起来9.8 自主驾驶 9.4 实现注意&#xff1a;展开参数 在上一段视频中&#xff0c;我们谈到了怎样使用反向传播算法计算代价函数的导数。在这段视频中&#xff0c;我想快速地向你介绍一个细节的实现过…

java八股文复习-----2024/03/03

1.接口和抽象类的区别 相似点&#xff1a; &#xff08;1&#xff09;接口和抽象类都不能被实例化 &#xff08;2&#xff09;实现接口或继承抽象类的普通子类都必须实现这些抽象方法 不同点&#xff1a; &#xff08;1&#xff09;抽象类可以包含普通方法和代码块&#x…

Socket网络编程(四)——点对点传输场景方案

目录 场景如何去获取到TCP的IP和Port&#xff1f;UDP的搜索IP地址、端口号方案UDP搜索取消实现相关的流程&#xff1a;代码实现逻辑服务端实现客户端实现UDP搜索代码执行结果 TCP点对点传输实现代码实现步骤点对点传输测试结果 源码下载 场景 在一个局域网当中&#xff0c;不知…

LabVIEW齿轮传动健康状态静电在线监测

LabVIEW齿轮传动健康状态静电在线监测 随着工业自动化的不断发展&#xff0c;齿轮传动作为最常见的机械传动方式之一&#xff0c;在各种机械设备中发挥着至关重要的作用。然而&#xff0c;齿轮在长期运行过程中易受到磨损、变形等因素影响&#xff0c;进而影响整个机械系统的稳…

BUUCTF------[HCTF 2018]WarmUp

开局一个表情&#xff0c;源代码发现source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php"];if (! isset($page) |…

Vue - 调用接口获取文件数据流并根据类型预览

Vue - 调用接口获取文件数据流并根据类型预览 一、接口返回的数据流格式二. 方法实现1. image 图片类型2. txt 文件类型3. pdf 文件类型 一、接口返回的数据流格式 二. 方法实现 1. image 图片类型 <img :src"imageUrl" alt"" srcset"" /&g…

uipath调用python代码获取网站验证码

用uipath自带的ocr读验证码不是很准确&#xff0c;选择调用python读验证码&#xff0c;需要导入ddddocr&#xff08;3.8以下版本支持ddddocr&#xff09; 用uipath程序将验证码图片保存到本地&#xff08;也可以直接用python处理图片&#xff0c;保存到本地比较简单&#xff0…

XUbuntu22.04之报错:No module named lsb_release(二百一十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

解决uni-app中使用webview键盘弹起遮挡input输入框问题

这个平平无奇的回答&#xff0c;可能是全网最靠谱的解决方案。 这里我用的是vue3 setup .vue文件的方式 <view> <web-view :fullscreen"false" :webview-styles"{top: statusBarHeight40,height:height,progress: {color: green,height:1px } }"…

VUE3项目学习系列--element-plus集成(三)

1、安装依赖 Element-plus官网&#xff1a;快速开始 | Element Plus (element-plus.org) pnpm i element-plus 在项目main.ts中引入element-plus: import { createApp } from "vue"; import App from "./App.vue"; // 从Element官网上参考&#xff0c;…