【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=32b
 Byte 3 2 1 0
 SEW=8b 3 2 1 0
 SEW=16b 1 0
 SEW=32b 0
 VLEN=64b
 Byte 7 6 5 4 3 2 1 0
 SEW=8b 7 6 5 4 3 2 1 0
 SEW=16b 3 2 1 0
 SEW=32b 1 0
 SEW=64b 0
 VLEN=128b
 Byte F E D C B A 9 8 7 6 5 4 3 2 1 0
 SEW=8b F E D C B A 9 8 7 6 5 4 3 2 1 0
 SEW=16b 7 6 5 4 3 2 1 0
 SEW=32b 3 2 1 0
 SEW=64b 1 0
 VLEN=256b
 Byte 1F1E1D1C1B1A19181716151413121110 F E D C B A 9 8 7 6 5 4 3 2 1 0
 SEW=8b 1F1E1D1C1B1A19181716151413121110 F E D C B A 9 8 7 6 5 4 3 2 1 0
 SEW=16b F E D C B A 9 8 7 6 5 4 3 2 1 0
 SEW=32b 7 6 5 4 3 2 1 0
 SEW=64b 3 2 1 0

4.2. LMUL < 1时的映射

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

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

4.3. LMUL > 1时的映射

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

 LMUL > 1 examples
 VLEN=32b, SEW=8b, LMUL=2
 Byte 3 2 1 0
 v2*n 3 2 1 0
 v2*n+1 7 6 5 4
 VLEN=32b, SEW=16b, LMUL=2
 Byte 3 2 1 0
 v2*n 1 0
 v2*n+1 3 2
 VLEN=32b, SEW=16b, LMUL=4
 Byte 3 2 1 0
 v4*n 1 0
 v4*n+1 3 2
 v4*n+2 5 4
 v4*n+3 7 6
 VLEN=32b, SEW=32b, LMUL=4
 Byte 3 2 1 0
 v4*n 0
 v4*n+1 1
 v4*n+2 2
 v4*n+3 3
 VLEN=64b, SEW=32b, LMUL=2
 Byte 7 6 5 4 3 2 1 0
 v2*n 1 0
 v2*n+1 3 2
 VLEN=64b, SEW=32b, LMUL=4
 Byte 7 6 5 4 3 2 1 0
 v4*n 1 0
 v4*n+1 3 2
 v4*n+2 5 4
 v4*n+3 7 6
 VLEN=128b, SEW=32b, LMUL=2
 Byte F E D C B A 9 8 7 6 5 4 3 2 1 0
 v2*n 3 2 1 0
 v2*n+1 7 6 5 4
 VLEN=128b, SEW=32b, LMUL=4
 Byte F E D C B A 9 8 7 6 5 4 3 2 1 0
 v4*n 3 2 1 0
 v4*n+1 7 6 5 4
 v4*n+2 B A 9 8
 v4*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文库

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

技术选型思考:分库分表和分布式DB(TiDB/OceanBase) 的权衡与抉择

在当今数据爆炸的时代&#xff0c;数据库作为存储和管理数据的核心组件&#xff0c;其性能和扩展性成为了企业关注的重点。随着业务的发展和数据量的不断增长&#xff0c;传统的单库单表架构逐渐暴露出性能瓶颈和扩展性限制。为了应对这些挑战&#xff0c;企业常常需要在分库分…

【操作系统概念】 第3章:进程

文章目录 0.前言3.1进程概念3.1.1 进程3.1.2 进程状态3.1.3 进程控制块&#xff08;PCB&#xff09; 3.2、进程调度3.2.1 调度队列3.2.2 调度程序3.2.3 上下文切换 3.3 进程操作3.3.1 进程创建3.3.2 进程终止 3.4 进程间通信 0.前言 早期的计算机一次只能执行一个程序。这种程序…

Nginx 可视化管理软件 Nginx Proxy Manager

一、简介 Nginx Proxy Manager 是一款开源的 Nginx 可视化管理界面&#xff0c;基于 Nginx 具有漂亮干净的 Web UI 界面。他允许用户通过浏览器界面轻松地管理和监控 Nginx 服务器&#xff0c;可以获得受信任的 SSL 证书&#xff0c;并通过单独的配置、自定义和入侵保护来管理…

备战蓝桥杯---动态规划的一些思想2

话不多说&#xff0c;直接看题&#xff1a; 1.换根DP&#xff1a; 我们肯定不能对每一个根节点暴力求&#xff0c;我们不妨先求f[1]&#xff0c;我们发现当他的儿子作为根节点时深度和为f[1](n-cnt[i])-cnt[i](cnt[i]表示以i为根的节点数&#xff09;&#xff0c;这样子两遍DFS…

CSS的三种定位,web前端开发入门学习

正文 js逻辑判断 1)请写出下面的答案? 内存泄漏 1)哪些操作会造成内存泄漏&#xff1f; 2)js内存泄漏的解决方式 dom 1)dom是哪种基本的数据结构&#xff1f; 2)dom操作的常用api有哪些&#xff1f; 3)dom节点的attribute和property有何区别&#xff1f; 4)dom结构操作/ …

相机类型的分辨率长宽、靶面尺寸大小、像元大小汇总

镜头的靶面尺寸大于等于相机靶面尺寸。 相机的芯片长这样&#xff0c;绿色反光部分&#xff08;我的手忽略&#xff09;&#xff1a; 基本所有像素的相机的靶面大小都可以在这个表格里面找到。 镜头的靶面尺寸在镜头外表上可以找到&#xff0c;选型很重要&#xff01;

Mysql80服务无法启动请输入Net helpMsg3534以获得更多的帮助

起因&情景&#xff1a; 朋友正在操作数据库&#xff0c;然后电脑突然死机&#xff0c;再重启电脑后启动数据库服务报&#xff1a; 然后朋友尝试各种操作都没有办法正常启动&#xff0c; 一、网上解决方案&#xff1a;&#xff08;先别操作&#xff09; 1 删掉&#xff1a…

吴恩达deeplearning.ai:机器学习的开发过程与优化方法

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai专栏 我想在接下来分析下开发机器学习系统的过程&#xff0c;这样当你自己动手时&#xff0c;能够做出更加正确的判断。 机器学习开发的迭代 Iterative loop of ML development 决定模型架构 第…

惯性导航 | 测量方程中的噪声模型与离散时间噪声模型

惯性导航 | 测量方程中的噪声模型与离散时间噪声模型 IMU测量方程中的噪声模型IMU的离散时间噪声模型 IMU测量方程中的噪声模型 在大多数系统中&#xff0c;IMU的噪声由两部分组成&#xff1a;测量噪声&#xff08;Measurement Nosie&#xff09;与零偏&#xff08;Bias&#…

【Numpy】给数组增加一个维度

【Numpy】给数组增加一个维度 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 创…

【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)

@[TOC](【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)) 具体步骤 第一步是注册您的应用程序。特别是,您需要将浏览器指向 http://apps.twitter.com,登录 Twitter(如果您尚未登录)并注册新应用程序。您现在可以为您的应用程序选择名称和描述(例如“Mining Demo”…

第九篇:– 过程发现(Process Discovery)是如何赋能数字化市场营销全过程?- 我为什么要翻译介绍美国人工智能科技巨头IAB公司

IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;自1996年成立以来&#xff0c;先后为700多家媒体…

MySql、Navicat 软件安装 + Navicat简单操作(建数据库,表)

一、MySql、Navicat 软件安装 及正常使用 MySql下载&#xff0b;安装&#xff1a; 检查安装情况&#xff1a; 配置环境变量&#xff1a; 搞定了&#xff01;&#xff01;&#xff01; 可以登陆试哈哈哈 连接navicat 开始创建数据库 二、 商品种类表 - commoditytype int …

【排序算法】深入理解归并排序算法:从原理到实现

目录 1. 引言 2. 归并排序算法原理 3. 归并排序的时间复杂度分析 4. 归并排序的应用场景 5. 归并排序的优缺点分析 5.1 优点&#xff1a; 5.2 缺点&#xff1a; 6. Java、JavaScript 和 Python 实现归并排序算法 6.1 Java 实现&#xff1a; 6.2 JavaScript 实现&…

Mybatis-Plus——04,自动填充时间(新注解)

自动填充&#xff08;新注解&#xff09; 一、数据库添加两个字段二、实体类字段属性上增加注解三、编写填充器四、查看结果4.1 插入结果4.2 修改结果 五、同步修改5.1实体类属性改成 INSERT_UPDATE5.2 在填充器的方法这里加上 updateTime5.3 查看结果————————创作不易…

三色标记过程

可达性分析 GC过程中需要对对象图遍历做可达性分析。使用了三色标记法进行分析。 什么三色&#xff1f; 白色&#xff1a;尚未访问过。 黑色&#xff1a;本对象已访问过&#xff0c;而且本对象 引用到 的其他对象 也全部访问过了。 灰色&#xff1a;本对象已访问过&#xff0…

【HarmonyOS】Dev Eco Studio4.0开发工具下载SDK10

目录 点击创建项目 选择空项目&#xff08;OpenHarmony&#xff09;&#xff0c;点击Next 此时SDK为10 点击 configure OpenHarmony SDK 创建一个新目录文件存放SDK&#xff0c;不要跟之前的SDK文件目录重合&#xff0c;点击Next 点击Next 勾选Accept&#xff0c;点…

板级PDN(电源分配网络)设计要点综述

目录 目标阻抗去耦方法 确定目标阻抗 确定目标频点 VRM 去耦电容 安装电感 平面电容 总结 去耦电容 PCB叠层设计 扩展阅读 目标阻抗去耦方法 确定PCB去耦方案的策略是使用频域目标阻抗法&#xff0c;通过层间电容和分立电容器组合的使用&#xff0c;保证电源轨阻抗在…

20240305-2-海量数据处理常用技术概述

海量数据处理常用技术概述 如今互联网产生的数据量已经达到PB级别&#xff0c;如何在数据量不断增大的情况下&#xff0c;依然保证快速的检索或者更新数据&#xff0c;是我们面临的问题。 所谓海量数据处理&#xff0c;是指基于海量数据的存储、处理和操作等。因为数据量太大无…

重量的定义、质量和重量之间的区别

一、简述 物体的重量取决于该物体所在空间点的引力场。重量是一种力&#xff0c;因此它是一个矢量&#xff0c;这意味着它有方向和大小。通过自由体图来表示物体重量产生的力通常很方便。 重量总是从物体的质心向下作用到地球中心。&#xff08;如果你在不同的天体上&#xff0…