基于riscv的指令访存地址自动计算方法及系统技术方案

技术编号:34816728 阅读:28 留言:0更新日期:2022-09-03 20:26
本发明专利技术涉及处理器技术领域,具体涉及一种基于riscv的指令访存地址自动计算方法及系统,述方法对Unit

【技术实现步骤摘要】
基于riscv的指令访存地址自动计算方法及系统


[0001]本专利技术涉及处理器
,具体涉及一种基于riscv的指令访存地址自动计算方法及系统。

技术介绍

[0002]众所周知,vector扩展是RISCV指令集最重要的扩展之一,它在人工智能方面发挥着明显的优势,由于vector指令的配置灵活,功能强大,导致他的实现非常复杂。
[0003]Vector load/store指令主要用于向量寄存器和内存间的数据传送,主要分为unit

stride,strided和indexed三大类,其中每类还分别含有segment类型,再结合VLEN,VSEW,VLMUL,NF等配置的影响,使得此类指令的访存地址计算变得非常困难。
[0004]因此本文根据不同配置和指令类型自动计算出指令所有元素的访存地址,提供一种高效灵活地计算算法方案,可作于基于riscv的 vector load/store指令访存地址计算标准模型,适用于验证平台驱动的模拟和检查器的构造当中。

技术实现思路

[0005]针对现有技术的不足,本专利技术公开了一种基于riscv的指令访存地址自动计算方法及系统,用于解决现有技术手动计算,逻辑繁琐,控制复杂,且不易实现。实现代码量大,逻辑冗余率高,效率极低。不能根据指令配置进行自适应调整计算,可移植性差的问题。
[0006]本专利技术通过以下技术方案予以实现:
[0007]第一方面,本专利技术提供了一种基于riscv的指令访存地址自动计算方法,所述方法对Unit

stride类型从基地址开始连续操作地址内存中的元素;对于Strided类型首先操作基地址内存中的元素,后续依次操作由基地址加上rs2寄存器提供的偏移量增量的地址内存中的元素;对于Indexed类型将基地址加上vs2提供的每个元素的偏移量,作为每个元素的操作地址,操作每个元素地址内存中的元素;对于 Segment类型将内存中的多个连续字段移动到连续编号的向量寄存器中的元素上,或者将连续编号的向量寄存器中的元素移动到内存中的多个连续字段上,最后对每个类型的每个元素的地址进行自动计算。
[0008]更进一步的,所述方法中,向量load/store指令操作地址自动计算的方法包括以下步骤:
[0009]S1进行算法输入项;
[0010]S2进行算法准备项;
[0011]S3生成算法主体方案。
[0012]更进一步的,所述方法中,算法输入项包括:
[0013]向量寄存器最大位宽VLEN,用来计算单个向量寄存器的元素个数;
[0014]32bit指令码,用于从指令码中获取指令本身的属性;
[0015]Vtype寄存器,提供指令的SEW,LMUL等配置信息;
[0016]源寄存器操作数,用来获取操作地址的基址和偏移量,计算得到有效操作地址。
[0017]更进一步的,所述方法中,SEW,用来设置单个操作元素的位宽; LMUL,用来设置多个寄存器组成的每个寄存器组中寄存器的个数。
[0018]更进一步的,所述方法中,从指令码中获取指令本身的属性,包括指令操作类型、指令操作数据宽度、指令操作寄存器编号信息。
[0019]更进一步的,所述方法中,算法主体的eid为每个元素的id号,单个寄存器元素编号为从低位到高位,组寄存器元素编号从连续寄存器号的低到高进行。
[0020]更进一步的,所述方法中,算法主体实现,使用SystemVerilog 语言。
[0021]更进一步的,所述方法中,算法主体输出结果为三维数组 vreg_addr,第一维表示操作的每个向量寄存器编号,第二维表示每个寄存器的每个元素的编号,第三维表示每个元素的64bit宽度操作地址。
[0022]第二方面,本专利技术提供了一种基于riscv的指令访存地址自动计算系统,包括存储器以及存储在所述存储器中的指令,用于实现第一方面所述的基于riscv的指令访存地址自动计算方法。
[0023]本专利技术的有益效果为:
[0024]本专利技术自动计算,逻辑清晰,控制简单,且容易实现,目前已经应用到项目当中。实现代码量小,逻辑简明,效率极高。不需要算法自身任何的更改,便可对不同配置的指令操作地址进行自动计算,可移植性高。高效灵活地计算算法方案,可作于基于riscv的vectorload/store指令访存地址计算标准模型,适用于验证平台驱动的模拟和检查器的构造当中。
附图说明
[0025]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0026]图1是本专利技术实施例Vector unit

stride操作图;
[0027]图2是本专利技术实施例Vector strided操作图;
[0028]图3是本专利技术实施例Vector indexed操作图;
[0029]图4是本专利技术实施例Segment操作图;
[0030]图5是本专利技术实施例算法主体方案图。
[0031]具体实施方式
[0032]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0033]实施例1
[0034]本实施例提供了一种基于riscv的指令访存地址自动计算方法,所述方法对Unit

stride类型从基地址开始连续操作地址内存中的元素;对于Strided类型首先操作基地址内存中的元素,后续依次操作由基地址加上rs2寄存器提供的偏移量增量的地址内存中的元素;对于Indexed类型将基地址加上vs2提供的每个元素的偏移量,作为每个元素的操作地址,操作每个元素地址内存中的元素;对于Segment 类型将内存中的多个连续字段移动到连续编号的向量寄存器中的元素上,或者将连续编号的向量寄存器中的元素移动到内存中的多个连续字段上,最后对每个类型的每个元素的地址进行自动计算。
[0035]本实施例根据不同配置和指令类型自动计算出指令所有元素的访存地址,提供一种高效灵活地计算算法方案,可作于基于riscv的 vector load/store指令访存地址计算标准模型,适用于验证平台驱动的模拟和检查器的构造当中。
[0036]本实施例高效灵活地计算算法方案,可作于基于riscv的vectorload/store指令访存地址计算标准模型,适用于验证平台驱动的模拟和检查器的构造当中。
[0037]实施例2
[0038本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于riscv的指令访存地址自动计算方法,其特征在于,所述方法对Unit

stride类型从基地址开始连续操作地址内存中的元素;对于Strided类型首先操作基地址内存中的元素,后续依次操作由基地址加上rs2寄存器提供的偏移量增量的地址内存中的元素;对于Indexed类型将基地址加上vs2提供的每个元素的偏移量,作为每个元素的操作地址,操作每个元素地址内存中的元素;对于Segment类型将内存中的多个连续字段移动到连续编号的向量寄存器中的元素上,或者将连续编号的向量寄存器中的元素移动到内存中的多个连续字段上,最后对每个类型的每个元素的地址进行自动计算。2.根据权利要求1所述的基于riscv的指令访存地址自动计算方法,其特征在于,所述方法中,向量load/store指令操作地址自动计算的方法包括以下步骤:S1进行算法输入项;S2进行算法准备项;S3生成算法主体方案。3.根据权利要求2所述的基于riscv的指令访存地址自动计算方法,其特征在于,所述方法中,算法输入项包括:向量寄存器最大位宽VLEN,用来计算单个向量寄存器的元素个数;32bit指令码,用于从指令码中获取指令本身的属性;Vtype寄存器,提供指令的SEW,LMUL等配置信息;源寄存器操作数,用来获取操作地址的基址和偏移量,计算得到有效操作地...

【专利技术属性】
技术研发人员:刘文彬余红斌
申请(专利权)人:广东赛昉科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1