System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() RISC-V矢量段写指令处理方法及装置制造方法及图纸_技高网

RISC-V矢量段写指令处理方法及装置制造方法及图纸

技术编号:43407149 阅读:9 留言:0更新日期:2024-11-22 17:45
本说明书涉及计算机技术领域,具体地公开了一种RISC‑V矢量段写指令处理方法及装置,其中,该方法包括:响应于矢量段写指令,将多个源寄存器中的元数据组装成段数据,并将所述段数据暂存在临时架构寄存器中;所述段数据包括多个元数据;所述临时架构寄存器为CPU内核实现中定义的架构寄存器,仅用于在一条指令内部暂存数据和传递数据;将所述临时架构寄存器中的段数据写入内存或缓存中。上述方案通过使用临时架构寄存器转换段数据,以段数据而非元数据为粒度将数据写入内存,以增加矢量寄存器之间数据传递为代价,降低了缓存/内存访问次数,从而提高了CPU内核性能并降低了访问缓存/内存的功耗。

【技术实现步骤摘要】

本说明书涉及计算机,特别涉及一种risc-v矢量段写指令处理方法及装置。


技术介绍

1、risc-v矢量指令集是risc-v众多标准指令集扩展中的一个,用于支持单指令多数据(single instruction multipledata,simd)的计算模式,以提升相应cpu的算力及效率。simd指令使用的寄存器宽度一般为128位或者更宽,每个矢量寄存器包含多个宽度为8/16/32/64位的整型元数据或者16/32/64位的浮点元数据。常见的simd指令集中,每条指令对应的寄存器与数据宽度是固定的。而一条risc-v矢量指令可以用于不同的寄存器与数据宽度,这样做的好处是一个使用risc-v矢量指令的应用程序可以运行在多种寄存器宽度不同的cpu实现上,而无需做出任何修改。

2、有一类risc-v矢量数据读写指令是所谓的段写(segment store)指令。segmentstore指令支持上述的几种地址计算方式,但是内存中的一块段数据对应来自多个寄存器同一位置的元数据。一块段数据包含nfield块元数据,这里nfield可以选择1到8之间的整数。nfield=1即为正常的,非segment的矢量数据读写指令。nfield>1则为segmentstore指令。nfield作为一个3位的域(nf[2:0])在数据读写指令的opcode(操作码)中。

3、对segment store指令,一般的实现方式是将其每一个元数据作为一个数据单元来写入内存,尽管功能正确,但由于内存访问次数多,每次内存写数据量少,会影响cpu的整体性能,并增加cpu的功耗。

4、针对上述问题,目前尚未提出有效的解决方案。


技术实现思路

1、本说明书实施例提供了一种risc-v矢量段写指令处理方法及装置,以解决现有技术中实现segment store指令时由于频繁的内存访问导致降低cpu系统性能并且增加功耗的问题。

2、本说明书实施例提供了一种risc-v矢量段写指令处理方法,包括:

3、响应于矢量段写指令,将多个源寄存器中的元数据组装成段数据,并将所述段数据暂存在临时架构寄存器中;所述段数据包括多个元数据;所述临时架构寄存器为cpu内核实现中定义的架构寄存器,仅用于在一条指令内部暂存数据和传递数据;

4、将所述临时架构寄存器中的段数据写入内存或缓存中。

5、在一个实施例中,所述方法还包括:

6、获取矢量段写指令的多个参数;所述多个参数包括:地址计算模式、寄存器组长度、段数据中所包含的元数据个数、元数据宽度、cpu内核支持的矢量寄存器宽度、以及cpu内核支持的缓存读取宽度;

7、基于所述多个参数对所述矢量段写指令进行译码,得到多条微指令;所述多条微指令包括:整型数值读取微指令、段转置微指令、段写地址计算微指令和段写数据读取微指令;

8、相应的,将多个源寄存器中的元数据组装成段数据,并将所述段数据暂存在临时架构寄存器中,包括:

9、执行所述段转置微指令,以从多个源寄存器中读取元数据并将读取的元数据按段存储至第二临时架构寄存器中;

10、相应的,将所述临时架构寄存器中的段数据写入内存或缓存中,包括:

11、执行所述整型数值读取微指令,以从整型架构寄存器读取地址基础值或者地址基础值和偏移值并存储至第一临时架构寄存器中;

12、执行所述段写地址计算微指令,以根据所述地址计算模式读取所述第一临时架构寄存器或者矢量寄存器中的地址信息,并根据读取的地址信息进行地址生成和地址翻译访问,得到物理地址数据,并将所述物理地址数据写入存储队列中的第一存储队列项;

13、执行所述段写数据读取微指令,以从所述第二临时架构寄存器中读取段数据并写入所述存储队列中的第二存储队列项;

14、在所述矢量段写指令退休后,按照所述第一存储队列项中的物理地址数据,将所述第二存储队列项中的段数据写入内存或缓存中。

15、在一个实施例中,在按照所述第一存储队列项中的物理地址数据,将所述第二存储队列项中的段数据写入内存或缓存中之后,还包括:

16、释放所述存储队列中的第一存储队列项和第二存储队列项。

17、在一个实施例中,基于所述多个参数对所述矢量段写指令进行译码,得到多条微指令,包括:

18、根据所述矢量段写指令的地址计算模式确定第一数量,以生成第一数量的整型数值读取微指令;

19、根据所述寄存器组长度和所述段数据中所包含的元数据个数确定第二数量,以生成第二数量的段转置微指令;

20、基于所述矢量段写指令的地址计算模式、寄存器组长度、段数据中所包含的元数据个数、元数据宽度、cpu内核支持的矢量寄存器宽度以及cpu内核支持的缓存读取宽度确定第三数量,以生成第三数量的段写地址计算微指令和第三数量的段写数据读取指令。

21、在一个实施例中,所述地址计算模式包括以下之一:单位跨步地址计算模式、跨步地址计算模式和索引地址计算模式;

22、相应的,根据所述矢量段写指令的地址计算模式确定第一数量,以生成第一数量的整型数值读取微指令,包括:

23、在所述地址计算模式为单位跨步地址计算模式或者索引地址计算模式的情况下,生成一个整型数值读取微指令,以读取地址基础值并存储至一个第一临时架构寄存器中;

24、在所述地址计算模式为跨步地址计算模式的情况下,生成两个整型数值读取微指令,以分别读取地址基础值和偏移值并分别存储至两个第一临时架构寄存器中。

25、在一个实施例中,根据所述寄存器组长度和所述段数据中所包含的元数据个数确定第二数量,包括:

26、若所述段数据中所包含的元数据个数与所述寄存器组长度的乘积小于或等于4,则所述第二数量等于所述段数据中所包含的元数据个数与所述寄存器组长度的乘积;否则,所述第二数量等于所述段数据中所包含的元数据个数与所述寄存器组长度的乘积的两倍。

27、在一个实施例中,所述地址计算模式包括以下之一:单位跨步地址计算模式、跨步地址计算模式和索引地址计算模式;

28、相应的,基于所述矢量段写指令的地址计算模式、寄存器组长度、段数据中所包含的元数据个数、元数据宽度、cpu内核支持的矢量寄存器宽度以及cpu内核支持的缓存读取宽度确定第三数量,包括:

29、在所述矢量段写指令为无掩模模式并且所述地址计算模式为单位跨步地址计算模式的情况下,所述第三数量为所述cpu内核支持的矢量寄存器宽度、寄存器组长度与段数据中所包含的元数据个数三者的乘积除以cpu内核支持的缓存读取宽度;

30、在所述矢量段写指令为掩模模式并且所述地址计算模式为单位跨步地址计算模式的情况下,或者,在所述地址计算模式为跨步地址计算模式或索引地址计算模式的情况下,确定所述段数据中所包含的元数据个数与所述元数据宽度的乘积与所述cpu内核支持的缓存读取宽度中的最本文档来自技高网...

【技术保护点】

1.一种RISC-V矢量段写指令处理方法,其特征在于,包括:

2.根据权利要求1所述的RISC-V矢量段写指令处理方法,其特征在于,还包括:

3.根据权利要求2所述的RISC-V矢量段写指令处理方法,其特征在于,在按照所述第一存储队列项中的物理地址数据,将所述第二存储队列项中的段数据写入内存或缓存中之后,还包括:

4.根据权利要求2所述的RISC-V矢量段写指令处理方法,其特征在于,基于所述多个参数对所述矢量段写指令进行译码,得到多条微指令,包括:

5.根据权利要求4所述的RISC-V矢量段写指令处理方法,其特征在于,所述地址计算模式包括以下之一:单位跨步地址计算模式、跨步地址计算模式和索引地址计算模式;

6.根据权利要求4所述的RISC-V矢量段写指令处理方法,其特征在于,根据所述寄存器组长度和所述段数据中所包含的元数据个数确定第二数量,包括:

7.根据权利要求4所述的RISC-V矢量段写指令处理方法,其特征在于,所述地址计算模式包括以下之一:单位跨步地址计算模式、跨步地址计算模式和索引地址计算模式;>

8.根据权利要求4所述的RISC-V矢量段写指令处理方法,其特征在于,在基于所述多个参数对所述矢量段写指令进行译码,得到多条微指令之后,还包括:

9.根据权利要求4所述的RISC-V矢量段写指令处理方法,其特征在于,在所述矢量段写指令为掩模模式的情况下,在执行所述段写地址计算微指令时,若所述段写地址计算微指令的掩模值为零,则将所述段写地址计算微指令对应的第一存储队列项中的NOP位设为1,否则设为0;

10.一种RISC-V矢量段写指令处理装置,其特征在于,包括:

...

【技术特征摘要】

1.一种risc-v矢量段写指令处理方法,其特征在于,包括:

2.根据权利要求1所述的risc-v矢量段写指令处理方法,其特征在于,还包括:

3.根据权利要求2所述的risc-v矢量段写指令处理方法,其特征在于,在按照所述第一存储队列项中的物理地址数据,将所述第二存储队列项中的段数据写入内存或缓存中之后,还包括:

4.根据权利要求2所述的risc-v矢量段写指令处理方法,其特征在于,基于所述多个参数对所述矢量段写指令进行译码,得到多条微指令,包括:

5.根据权利要求4所述的risc-v矢量段写指令处理方法,其特征在于,所述地址计算模式包括以下之一:单位跨步地址计算模式、跨步地址计算模式和索引地址计算模式;

6.根据权利要求4所述的risc-v矢量段写指令处理方法,其特征在于,根...

【专利技术属性】
技术研发人员:胡世文薛大庆
申请(专利权)人:成都群芯微电子科技有限公司
类型:发明
国别省市:

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

1