一种访存方法、处理器、电子设备及可读存储介质与流程
未命名
10-26
阅读:97
评论:0
1.本发明涉及计算机技术领域,尤其涉及一种访存方法、处理器、电子设备及可读存储介质。
背景技术:
2.在向量扩展指令集手册中提供了一种索引访存指令,例如,load/store index指令。对于load index指令,该指令的基地址存储标量寄存器rs1中,其索引值存储在向量寄存器vs2中,其目的寄存器vd也是向量寄存器;该指令使用vs2向量寄存器的数量由emul指定,每次计算地址从vs2向量寄存器中读取数据的宽度由eew指定;该指令使用vd向量寄存器的数量由lmul指定,每次写入数据的宽度由sew指定。
3.对于store index指令,该指令的基地址也存储在标量寄存器rs1中,其索引值存储在向量寄存器vs2中,源数据储存在vs3向量寄存器中;该指令使用vs2向量寄存器的数目由参数emul指定,每次计算访存地址需要从vs2寄存器读取eew宽度的数据;该指令使用vs3向量寄存器的数量由lmul指定,每次访存从vs3向量寄存器读取sew宽度的数据存入指定的地址。
4.以上两种指令,emul和lmul的取值会出现以下种情况:1/8、1/4、1/2、1、2、4、8;eew和sew的取值会出现以下4种情况:1byte,2byte,4byte,8byte。
5.一条load/store index指令可以选择以上提到的任意合法的emul和lmul的值。以store index指令为例,可能出现以下两种极限情况:lmul=1,emul=8,也即该指令同时会使用1个vs3寄存器,8个vs2寄存器;lmul=8,emul=1,也即该指令会同时使用8个vs3向量寄存器,1个vs2寄存器。对于load index指令同理。从微架构实现的角度考虑,基于时序和面积考虑,是无法做到一次性发送9个向量寄存器的数据。
技术实现要素:
6.本发明实施例提供一种访存方法、处理器、电子设备及可读存储介质,可以降低索引访存指令的选择复杂度,提升处理器的访存性能。
7.为了解决上述问题,本发明实施例公开了一种访存方法,应用于处理器,所述方法包括:获取待执行的索引访存指令和所述索引访存指令的第一参数和第二参数;所述第一参数用于指示存放地址偏移值的向量寄存器的数目,所述第二参数用于指示存放数据的向量寄存器的数目;根据预设的映射规则确定所述第一参数对应的第一数值n1和所述第二参数对应的第二数值n2,n1和n2均大于或等于1;所述映射规则用于将数值小于或等于1的第一参数或第二参数映射为1;根据所述第一数值和所述第二数值,将所述索引访存指令拆分为至少一个微操作;
以元素为粒度对所述微操作进行拆分处理,得到所述微操作对应的子操作;根据所述第一数值、所述第二数值和所述微操作对应的各项子操作,确定所述索引访存指令的元素索引值;基于所述元素索引值执行访存操作。
8.另一方面,本发明实施例公开了一种处理器,所述处理器包括处理器后端、发射队列和访存模块;所述处理器后端,用于获取待执行的索引访存指令和所述索引访存指令的第一参数和第二参数;所述第一参数用于指示存放地址偏移值的向量寄存器的数目,所述第二参数用于指示存放数据的向量寄存器的数目;根据预设的映射规则确定所述第一参数对应的第一数值n1和所述第二参数对应的第二数值n2,n1和n2均大于或等于1;所述映射规则用于将数值小于或等于1的第一参数或第二参数映射为1;根据所述第一数值和所述第二数值,将所述索引访存指令拆分为至少一个微操作;所述发射队列,用于以元素为粒度对所述微操作进行拆分处理,得到所述微操作对应的子操作;根据所述第一数值、所述第二数值和所述微操作对应的各项子操作,确定所述索引访存指令的元素索引值;所述访存模块,用于基于所述元素索引值执行访存操作。
9.再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的访存方法。
10.本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的访存方法。
11.本发明实施例包括以下优点:本发明实施例提供的访存方法,通过根据预设的映射规则将第一参数emul映射为第一数值n1,将第二参数lmul映射为第二数值n2,然后根据第一数值和第二数值对索引访存指令进行拆分,得到至少一个微操作,并进一步以元素为粒度将微操作拆分为子操作,根据第一数值、第二数值和索引访存指令的各项子操作,确定索引访存指令的元素索引值,最终基于元素索引值执行访存操作。本发明实施例可以利用预设的映射规则对第一参数emul和第二参数lmul的取值进行了合并处理,将原来的7种取值简化为了4种,在本发明实施例中,对emul和lmul的取值进行合并映射后,将原本的49种情况简化为了16种情况,降低了选择复杂度,有利于提升处理器的访存性能。
附图说明
12.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
13.图1是本发明的一种访存方法实施例的步骤流程图;图2是本发明的一种处理器的架构示意图;
图3是本发明的另一种处理器的架构示意图;图4是本发明的又一种处理器的架构示意图;图5是本发明示例提供的一种用于访存的电子设备的结构框图。
具体实施方式
14.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
15.本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
16.方法实施例参照图1,示出了本发明的一种访存方法实施例的步骤流程图,所述方法具体可以包括如下步骤:步骤101、获取待执行的索引访存指令和所述索引访存指令的第一参数和第二参数;步骤102、根据预设的映射规则确定所述第一参数对应的第一数值n1和所述第二参数对应的第二数值n2,n1和n2均大于或等于1;所述映射规则用于将数值小于或等于1的第一参数或第二参数映射为1;步骤103、根据所述第一数值和所述第二数值,将所述索引访存指令拆分为至少一个微操作;步骤104、以元素为粒度对所述微操作进行拆分处理,得到所述微操作对应的子操作;步骤105、根据所述第一数值、所述第二数值和所述微操作对应的各项子操作,确定所述索引访存指令的元素索引值;步骤106、基于所述元素索引值执行访存操作。
17.其中,所述第一参数emul,用于指示存放地址偏移值的向量寄存器的数目;所述第二参数lmul,用于指示存放数据的向量寄存器的数目。
18.本发明实施例提供的访存方法可以应用于处理器。参照图2,示出了本发明实施例提供的一种处理器的架构示意图。如图2所示,本发明实施例提供的处理器200包括处理器后端、发射队列(flowqueue)和访存模块。其中,所述发射队列为向量访存操作对应的发射队列。
19.处理器后端可以对索引访存指令进行译码、拆分等处理。所述索引访存指令用于
根据索引值执行访存操作。所述索引访存指令可以由处理器前端提供。
20.可以理解的是,本发明实施例中的索引访存指令可以为load/store index类型指令。由向量指令集扩展手册可知,对于load index指令,该指令的基地址存储标量寄存器rs1中,其索引值存储在向量寄存器vs2中,其目的寄存器vd也是向量寄存器;该指令使用vs2向量寄存器的数量由emul指定,每次计算地址从vs2向量寄存器中读取地址偏移值的宽度由eew指定;该指令使用vd向量寄存器的数量由lmul指定,每次写入数据的宽度由sew指定。对于store index指令,该指令的基地址也存储在标量寄存器rs1中,其索引值存储在向量寄存器vs2中,源数据储存在vs3向量寄存器中;该指令使用vs2向量寄存器的数目由参数emul指定,每次计算访存地址需要从vs2寄存器读取eew宽度的数据;该指令使用vs3向量寄存器的数量由lmul指定,每次访存从vs3向量寄存器读取sew宽度的数据存入指定的地址。
21.emul和lmul的取值会出现以下种情况:1/8、1/4、1/2、1、2、4、8。由于emul和lmul小于1时,处理器后端仍然以一个向量寄存器为粒度发送待加载数据,或以一个向量寄存器为粒度读取待存储数据。因此,在本发明实施例中,可以将emul和lmul小于1的数值均合并映射为1,具体如表1所示:
22.按照表1所示对第一参数emul和第二参数lmul进行合并映射之后,再根据合并映射后的第一数值(emulnum)或第二数值(lmulnum),将索引访存指令拆分为n1或n2个微操作。
23.从微架构设计的角度考虑,对于load index指令,处理器后端一次最多只能发送一个vs2向量寄存器和一个vd向量寄存器的数据;对于store index指令,处理器后端一次最多只能发送一个vs2向量寄存器和一个vs3向量寄存器的数据。
24.基于此,本发明实施例提供的访存方法,基于第一参数emul和第二参数lmul指示的寄存器数目对索引访存指令拆分为多个微操作(uop),每个微操作用于访存一个向量寄存器对应的数据。例如,按照表1对第一参数emul 的数值进行映射后得到第一数值n1,将索引访存指令拆分为n1个微操作;或者,按照表1对第二参数lmul的数值进行映射后得到第二数值n2,将索引访存指令拆分为n2个微操作。
25.可选地,所述根据所述第一数值和所述第二数值,将所述索引访存指令拆分为至少一个微操作,包括:在所述第一数值小于或等于所述第二数值的情况下,将所述索引访存指令拆分为
n2个微操作;在所述第一数值大于所述第二数值的情况下,将所述索引访存指令拆分为n1个微操作。
26.具体地,如果第一数值(emulnum)小于或等于第二数值(lmulnum),则将索引访存指令拆分为n2个微操作;如果第一数值大于第二数值,则将索引访存指令拆分为n1个微操作。其中,n1为按照表1对第一参数emul的数值进行映射后得到的数值,也即第一数值;n2为按照表1对第二参数lmul的数值进行映射后得到的数值,也即第二数值。
27.例如,假设索引访存指令emul=1/4,lmul=1/2,按照表1对第一参数emul和第二参数lmul进行合并映射之后,emul_=lmul_=1,由于emulnum=lmulnum,所以该索引访存指令将被转换为1个微操作。
28.接下来,以元素为粒度对各个微操作进行拆分处理,得到每个微操作对应的子操作(flow)。
29.可以理解的是,在本发明实施例中,可以由处理器后端基于第一数值或第二数值将索引访存指令拆分为微操作(uop),处理器后端将拆分后的微操作发送到发射队列(flowqueue),由发射队列进一步将微操作拆分为子操作。
30.按照元素粒度对微操作进行拆分后得到的每个子操作,可以对单个元素或单个有效元素进行访存。示例性地,索引访存指令的第三参数sew用于指示单个元素宽度,第四参数eew用于指示有效元素宽度,发射队列可以根据第三参数sew或第四参数eew对微操作进行拆分。换言之,每个子操作的访存宽度等于sew或eew指示的宽度。
31.在本发明实施例中,如果处理器后端基于第一数值和第二数值的大小关系对索引访存指令进行拆分,存在两种情况:索引访存指令被拆分为n2个微操作,n2的取值为按照表1对第二参数进行映射后得到数值;索引访存指令被拆分为n1个微操作,n1的取值为按照表1对第一参数进行映射后得到的数值。其中,第二参数lmul用于指示存放数据的向量寄存器的数目,与之对应的是第三参数sew,指示读取数据的宽度;第一参数emul用于指示存放地址偏移的向量寄存器的数目,与之对应的是第四参数eew,用于指示读取地址偏移的宽度。发射队列对微操作进行拆分时,可以参考处理器后端对索引访存指令的拆分依据,具体地:如果处理器后端以lmulnum拆分索引访存指令,则在发射队列以sew拆分微操作;如果处理器后端以emulnum拆分索引访存指令,则在发射队列以eew拆分微操作。
32.可选地,步骤104所述以元素为粒度对所述微操作进行拆分处理,得到所述微操作对应的子操作,包括:步骤s11、获取所述索引访存指令的第三参数(sew)和第四参数(eew);所述第三参数用于指示数据宽度;所述第四参数用于指示地址偏移值的宽度;步骤s12、在所述第一数值小于或等于所述第二数值的情况下,根据所述第三参数对所述微操作进行拆分处理,得到所述微操作对应的子操作;步骤s13、在所述第一数值大于所述第二数值的情况下,根据所述第四参数对所述微操作进行拆分处理,得到所述微操作对应的子操作。
33.处理器后端基于第一数值(emulnum)和第二数值(lmulnum)将索引访存指令拆分为微操作(uop),发射队列可以同样基于第一数值(emulnum)和第二数值(lmulnum)将微操作拆分为子操作(flow)。具体地,如果第一数值小于或等于第二数值,则根据第三参数sew
对微操作进行拆分;如果第一数值大于第二数值,则根据第四参数eew对微操作进行拆分。
34.索引访存指令通过索引值执行访存操作,因此,本发明实施例中,经过两次拆分将索引访存指令转换为子操作之后,可以进一步根据第一数值emulnum、第二数值lmulnum和微操作对应的各项子操作,确定索引访存指令的元素索引值。
35.示例性地,对于load index指令,如果是以第三参数sew拆分微操作,那么按照顺序对微操作的各项子操作进行排序,子操作的序列值flowidx就是load index指令的目的寄存器vd的元素索引值;load index指令存放地址偏移值的向量寄存器的元素索引值,也即向量寄存器vs2的元素索引值,可以根据第一数值emulnum和第二数值lmulnum确定,例如,根据指令的基地址、第一数值emulnum、第二数值lmulnum确定子操作的访存信息,进而根据子操作的访存信息确定向量寄存器vs2的元素索引值。如果是以第四参数eew拆分微操作,那么按照顺序对微操作的各项子操作进行排序,子操作的序列值值flowidx就是load index指令存放地址偏移值的向量寄存器的元素索引值,也即向量寄存器vs2的元素索引值;目的寄存器vd的元素索引值可以根据第一数值emulnum和第二数值lmulnum以及flowidx确定。
36.对于store index指令,如果是以第三参数sew拆分微操作,那么按照顺序对微操作的各项子操作进行排序,子操作的序列值flowidx就是store index指令的源数据的元素索引值,也即向量寄存器vs3的元素索引值;store index指令存放地址偏移值的向量寄存器的元素索引值,也即向量寄存器vs2的元素索引值,可以根据第一数值emulnum和第二数值lmulnum确定。如果是以第四参数eew拆分微操作,那么按照顺序对微操作的各项子操作进行排序,子操作的序列值flowidx就是store index指令存放地址偏移值的向量寄存器的元素索引值,也即向量寄存器vs2的元素索引值;源数据的元素索引值,也即向量寄存器vs3的元素索引值,可以根据第一数值emulnum和第二数值lmulnum以及flowidx确定。
37.最后,基于确定的元素索引值执行访存操作。例如,对于load index指令,根据元素索引值将内存中的数据加载至目的寄存器中;对于store index指令,根据元素索引值将源数据存储到内存中。
38.需要说明的是,如果按照相关技术中emul和lmul的取值,一条索引访存指令在极限情况下可能会同时使用9个向量寄存器,一次发送8个向量寄存器的数据,这意味着数据总线的宽度将会有1024bit甚至更宽,这在物理层面基本无法实现。本发明实施例提供的访存方法,利用预设的映射规则对第一参数emul和第二参数lmul的取值进行了合并处理,将原来的7种取值简化为了4种。
39.在相关技术中,emul和lmul都有7种可能的取值,也即会出现7
×
7种可能的情况,这将会是一个48级的选择器,占用非常大的面积。而本发明实施例对emul和lmul的取值进行合并映射后,将7
×
7种可能简化为4
×
4种可能,降低了选择复杂度,有利于提升处理器的访存性能。
40.在本发明的一种可选实施例中,所述子操作中携带所述子操作对应的微操作的索引值;步骤105所述根据所述第一数值、所述第二数值和所述微操作对应的各项子操作,确定所述索引访存指令的元素索引值,包括:步骤s21、根据所述索引值对所述微操作对应的各项子操作进行顺序排列,得到所述子操作的序列值;
步骤s22、根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值。
41.在本发明实施例中,发射队列接收索引访存指令的微操作,并以元素为粒度对各项微操作进行拆分,得到每项微操对应的子操作。
42.在确定各项子操作对应的元素索引值时,发射队列可以根据子操作携带微操作的索引值,确定该项子操作属于哪个微操作。按照索引值对微操作对应的各项子操作进行顺序排列,就可以确定微操作的每项子操作的序列值。然后,根据子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值。
43.可选地,所述索引访存指令的指令类型为加载指令;在所述第一数值小于或等于所述第二数值的情况下,步骤s22所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:a11、根据所述子操作的序列值确定目的寄存器的第一元素索引值;a12、根据所述第二数值与所述第一数值的比值,确定所述索引访存指令存放地址偏移值的第一向量寄存器的第二元素索引值。
44.在本发明实施例中,对于加载指令,也即load index指令,如果第一数值(emulnum)小于或等于第二数值(lmulnum),发射队列根据第三参数sew拆分微操作,在这种情况下,可以直接将子操作的序列值flowidx确定为目的寄存器的第一元素索引值;然后,根据第二数值与第一数值的比值,确定索引访存指令存放地址偏移值的第一向量寄存器的第二元素索引值。
45.示例性地,参照表2,示出了一种load index指令的vs2寄存器元素索引值vs2 idx(第二元素索引值)的计算方法示例。
[0046][0047]
其中,uopidx为微操作的索引值,指示微操作在索引访存指令对应的各项微操作中的排序;flownum为一个微操作对应的子操作的数目;flowidx为子操作的序列值。
[0048]
作为一种示例,假设一条index指令的lmul=2,sew=2byte,eew=1byte,emul=1。对于这条index指令,需要被拆分为两个uop,第一个uop发送第一个vd寄存器和vs2寄存器,第二个uop发送第二个vd寄存器和vs2寄存器。这样发送的原因是:对于第一个uop(为了填满第一个vd寄存器),需要计算16byte/2byte(8)次地址,需要使用vs寄存器的前八个字节的数据;第二个uop(为了填满第二个vd寄存器),需要计算16byte/2byte(8)次地址,需要使用vs2的后8个byte的数据。
[0049]
为了实现上述内容,用uopidx的低n位代表会用个vd共用一个vs2,使用的是具体是vs的第几个元素,需要通过移位和flowidx来确定。
[0050]
两个vd共用一个vs2,对于第二个vd,其对应的uopidx值是1,由于一个uop会被拆分成8个子操作,也就是flownum是8,对flownum取对数之后,log2(flownum)=3,将uopidx的值左移3位是8,可知,第二个uop将从vs2寄存器的第8个元素开始取数据。
[0051]
可选地,所述索引访存指令的指令类型为加载指令;在所述第一数值大于所述第二数值的情况下,步骤s22所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:a21、根据所述第二数值与所述第一数值的比值,确定目的寄存器的第一元素索引值;a22、根据所述子操作的序列值确定所述索引访存指令存放地址偏移值的第一向量寄存器的第二元素索引值。
[0052]
在本发明实施例中,对于加载指令,也即load index指令,如果第一数值(emulnum)大于第二数值(lmulnum),发射队列根据第四参数eew拆分微操作,在这种情况下,可以直接将子操作的序列值确定为索引访存指令存放地址偏移值的第一向量寄存器的第二元素索引值;然后,根据第二数值与第一数值的比值,确定目的寄存器的第一元素索引值,具体确定方法可以参照表2所示的计算方法。
[0053]
可选地,步骤106所述基于所述元素索引值执行访存操作,包括:步骤s31、根据所述第二元素索引值和所述索引访存指令的基地址,确定第一访存地址;步骤s32、根据所述第一访存地址从内存中读取目标数据,并根据所述第一元素索引值将所述目标数据加载至目的寄存器中;所述目标数据的宽度为所述索引访存指令的第三参数指示的数据宽度。
[0054]
对于load index指令,根据第二元素索引值得到的地址偏移值和基地址就可以计算出第一访存地址。示例性地,根据第二元素索引值从向量寄存器vs2中读取地址偏移值offset,读取的地址偏移值offset的宽度由第四参数eew指定;将读取的地址偏移值offset与基地址相加,就可以得到第一访存地址。
[0055]
接下来,从内存的第一访存地址处读取出目标数据,然后根据第一元素索引值将目标数据加载至目的寄存器中。读取的目标数据的宽度由第三参数sew指定。
[0056]
在本发明的一种可选实施例中,步骤s32所述根据所述第一访存地址从内存中读取目标数据,并根据所述第一元素索引值将所述目标数据加载至目的寄存器中,包括:子步骤s321、根据所述第一访存地址从内存中读取目标数据;所述目标数据的宽度为所述索引访存指令的第三参数指示的数据宽度;子步骤s322、根据所述第一元素索引值将所述目标数据填入所述目的寄存器对应的数据域中;子步骤s323、在所述微操作对应的各项子操作从内存中读取的目标数据均写入所述目的寄存器对应的数据域的情况下,将所述数据域中的目标数据加载至所述目的寄存器中。
[0057]
在本发明实施例中,子操作是以元素为粒度进行访存的,每个子操作访问一次内存取出单个元素或单个有效元素,一个目的寄存器所需的目标数据可能需要多个子操作进行多次访存。本发明实施例可以在微操作对应的各项子操作从内存中取出的目标数据均写
入该微操作对应的目的寄存器的数据域的情况下,再将数据域中的目标数据加载至目的寄存器中,以降低数据加载产生的功耗,提升访存效率。
[0058]
参照图3,示出了本发明实施例提供的一种处理器的架构示意图。如图3所示,对于load index指令,当emulnum《=lmulnum时,处理器后端以lmulnum指定的寄存器数量将load index指令拆分为n1个uop;当emulnum》lmulnum时,处理器后端以emulnum指定的寄存器数量将load index指令拆分为n2个uop。
[0059]
处理器后端将uop发送到flowqueue,在flowqueue内部将uop进一步拆分为子操作flow。flowqueue拆分子操作flow的原则是:如果处理器后端以lmulnum拆分uop,则在这里以sew拆分flow;如果处理器后端以emulnum拆分uop,则在这里以eew拆分flow。
[0060]
发射队列(flowqueue)由两个32项的队列组成,每个队列有一个读口,一个写口。为了准确的redirect,每一个队列都采用乱序入队乱序出队的机制,由fqfreelist维护;待加载模块(loadunit)空闲时,将访存信息,例如元素索引值,发送到loadunit,在loadunit里,向量访存的优先级最低。
[0061]
微操作队列(uopqueue)由一个32项的队列组成,每一个队列有四个写口(两个用于处理器后端写入uop,另外两个用于loadunit访存得到的数据写回),有两个读口,将有效数据以及异常(exception)报给后端。uopqueue也是乱序出入队,由可利用空间表(freelist)来维护。
[0062]
为方便进行统一的信号控制,用vlwrappre把flowqueue和uopqueue封装起来。
[0063]
可选地,所述方法还包括:步骤s41、根据所述第三参数或所述第四参数,确定所述微操作对应的子操作数目;步骤s42、根据所述子操作数目设置计数器的计数值;步骤s43、在所述微操作对应的任一项子操作从内存中读取的目标数据被写入所述目的寄存器的数据域的情况下,将所述计数值减1;步骤s44、在所述计数器的计数值等于0的情况下,确定所述微操作对应的各项子操作从内存中读取的目标数据均写入所述目的寄存器对应的数据域。
[0064]
在本发明实施例中,可以通过计数器判断为微操作对应的各项子操作从内存中取出的目标数据是否均写入目的寄存器对应的数据域中。
[0065]
示例性地,如图3所示,处理器后端将索引访存指令拆分为微操作(uop)之后,还可以将微操作发送到微操作队列(uopqueue)。uopqueue根据处理器后端拆分uop的参数,也即第三参数sew或第四参数eew,可以计算得到当前uop对应的子操作(flow)的数目,并存储在反向(conter)计数器中,以后每接收一个flow的目标数据,该计数值减1,直到计数值等于0,可以将数据域中的目标数据写回寄存器堆。例如,如果emulnum《=lmulnum,处理器后端将拆分得到lmulnum个uop,uopqueue根据sew进一步可以得到需要接收的flow数目并写入计数器,每收到一个flow取回的目标数据,计数值减1,待计数值等于0时说明目标数据全部写回目的寄存器的数据域中,可以写回寄存器堆中的目的寄存器。
[0066]
可选地,所述索引访存指令的指令类型为存储指令;在所述第一数值小于或等于所述第二数值的情况下,步骤s22所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:
b11、根据所述子操作的序列值确定源数据的第三元素索引值;b12、根据所述第二数值与所述第一数值的比值,确定所述索引访存指令存放地址偏移值的第二向量寄存器的第四元素索引值。
[0067]
在本发明实施例中,对于存储指令,也即store index指令,如果第一数值(emulnum)小于或等于第二数值(lmulnum),发射队列根据第三参数sew拆分微操作,在这种情况下,可以直接将子操作的序列值确定为源数据的第三元素索引值;然后,根据第二数值与第一数值的比值,确定store index指令存放地址偏移值的第二向量寄存器的第四元素索引值,具体确定方法可以参照表2所示的计算方法。
[0068]
可选地,所述索引访存指令的指令类型为存储指令;在所述第一数值大于所述第二数值的情况下,步骤s22所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:b21、根据所述第二数值与所述第一数值的比值,确定源数据的第三元素索引值;b22、根据所述子操作的序列值确定所述索引访存指令存放地址偏移值的第二向量寄存器的第四元素索引值。
[0069]
在本发明实施例中,对于存储指令,也即store index指令,如果第一数值(emulnum)大于第二数值(lmulnum),发射队列根据第四参数eew拆分微操作,在这种情况下,可以直接将子操作的序列值确定为store index指令存放地址偏移值的第二向量寄存器的第四元素索引值。然后,根据第二数值与第一数值的比值,确定源数据的第三元素索引值,具体确定方法可以参照表2所示的计算方法。
[0070]
可选地,所述基于所述元素索引值执行访存操作,包括:步骤s51、根据所述第四元素索引值和所述索引访存指令的基地址,确定第二访存地址;步骤s52、根据所述第三元素索引值将所述源数据存储到内存的所述第二访存地址中;每次访存读取的源数据的宽度为所述索引访存指令的第三参数指示的数据宽度。
[0071]
对于store index指令,根据第四元素索引值和基地址,就可以确定出第二访存地址。示例性的,先根据第四元素索引值从向量寄存器vs2读取地址偏移值,每次读取的地址偏移值的宽度由第四参数eew指定;然后,将读取的地址偏移值与基地址相加,就可以得到第二访存地址。
[0072]
接下来,根据第三元素索引值从向量寄存器vs3中读取源数据,并将读取的源数据存储到内存的第二访存地址。每次读取的源数据的宽度由第三参数sew指定。
[0073]
参照图4,示出了本发明实施例提供的另一种处理器的架构示意图。如图4所示,对于store index指令,当emulnum《=lmulnum时,处理器后端以lmulnum指定的寄存器数量将load index指令拆分为n1个uop;当emulnum》lmulnum时,处理器后端以emulnum指定的寄存器数量将load index指令拆分为n2个uop。
[0074]
处理器后端将uop发送到微操作队列(uopqueue),uopqueue在这里本质上可以理解为一个缓冲区(buffer)。该模块一方面可以生成指定有效元素宽度sew的mask;另一方面由于时序关系暂时存储uop。
[0075]
uopqueue将uop发送到发射队列(flowqueue),在flowqueue内部对uop进一步拆分为子操作flow。flowqueue拆分子操作flow的原则是:如果处理器后端以lmulnum拆分uop,
则在这里以sew拆分flow;如果处理器后端以emulnum拆分uop,则在这里以eew拆分flow。
[0076]
示例性地,图4中的uopqueue是一个32项的双端口写入,双端口读出队列。为方便接待(reception)处理,uopqueue也是乱序出入队,由可利用空间表(freelist)来维护。
[0077]
flowqueue由两个32项队列组成,接受来自uopqueue的uop,并以元素粒度进行拆分后存储起来,待存储模块(storeunit)空闲时,发送子操作flow的访存信息到storeunit,写入storequeue,待指令提交写入sbuffer,写入内存。其中,访存信息中可以携带子操作对应的第三元素索引值和第四元素索引值。向量存储的重发操作由flowqueue来维护,同时也为了重定向(redirect)的准确性,flowqueue仍然采取乱序出入队机制。
[0078]
需要说明的是,本发明实施例图2中的访存模块可以分为加载模块(如图3所示)和存储模块(如图4所示),其中,加载模块用于执行load index指令对应的加载操作,存储模块用于执行store index指令对应的存储操作。
[0079]
在本发明的一种可选实施例中,所述获取待执行的索引访存指令和所述索引访存指令的第一参数和第二参数,包括:步骤s51、获取待执行的索引访存指令和所述索引访存指令的第二参数、第三参数和第四参数;步骤s52、基于所述第三参数的编码规则对所述第四参数进行重新编码,得到所述第四参数的第四编码值;步骤s53、根据所述第二参数的第二编码值、所述第三参数的第三编码值和所述第四参数的第四编码值,确定第一参数的第一编码值;所述第一编码值=第四编码值-第三编码值+第二编码值;步骤s54、根据所述第一编码值确定所述第一参数的数值,所述第一参数的数值为正数。
[0080]
在相关技术中,risc-v指令集规定emul= eew/sew
×
lmul。参照表3至表5,分别示出了eew、sew和lmul的编码格式:
[0081]
由上述表3至表5可知,eew和sew的编码存在4种情况,lmul的编码存在7种情况,如果通过查找eew、sew和lmul的编码来确定emul的值,那么存在112种可能,需要一个112项的表格来记录emul,占用的存储空间较大。
[0082]
在本发明实施例中,对第一参数emul的确定方式进行了改进。具体地,处理器后端可以根据第三参数sew的编码规则对第四参数eew进行重新编码。例如,段访存内存指令中eew的编码值为“0101”,对其重新编码后得到的第四编码值为“001”。然后,处理器后端根据第四参数eew的第四编码值、第三参数sew的第三编码值和第二参数lmul的第二编码值,计算第一参数emul的第一编码值,emul=eew_-sew+lmul,其中,eew_为对eew重新编码后得到的第四编码值。最后,根据第一参数的第一编码值就可以确定第四参数的数值。
[0083]
按照本发明实施例提供方法,只需要一个3bite的加法器就可以确定第一参数emul的编码值,减少了存储开销,有效降低了第一参数emul的计算成本。
[0084]
可选地,所述根据所述第一编码值确定所述第一参数的数值之前,所述方法还包
括:在所述第一参数的第一编码值存在溢出的情况下,确定所述第一编码值非法,重新确定所述第一参数的第一编码值。
[0085]
在计算第一参数emul的第一编码值的过程中,如果出现溢出,包括正数出现负溢出和负数出现正溢出,就可以认定此时得到的编码值是错误的,也即第一参数的第一编码值非法,可以舍弃当前计算的第一编码值并按照前述步骤s51至s54重新进行计算。
[0086]
综上,本发明实施例提供了一种访存方法,通过根据预设的映射规则将第一参数emul映射为第一数值n1,将第二参数lmul映射为第二数值n2,然后根据第一数值和第二数值对索引访存指令进行拆分,得到至少一个微操作,并进一步以元素为粒度将微操作拆分为子操作,根据第一数值、第二数值和索引访存指令的各项子操作,确定索引访存指令的元素索引值,最终基于元素索引值执行访存操作。本发明实施例可以利用预设的映射规则对第一参数emul和第二参数lmul的取值进行了合并处理,将原来的7种取值简化为了4种,在本发明实施例中,对emul和lmul的取值进行合并映射后,将原本的49种情况简化为了16种情况,降低了选择复杂度,有利于提升处理器的访存性能。
[0087]
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0088]
装置实施例参照图2,示出了本发明的一种处理器的架构示意图,所述处理器包括处理器后端、发射队列和访存模块;所述处理器后端,用于获取待执行的索引访存指令和所述索引访存指令的第一参数和第二参数;所述第一参数用于指示存放地址偏移值的向量寄存器的数目,所述第二参数用于指示存放数据的向量寄存器的数目;根据预设的映射规则确定所述第一参数对应的第一数值n1和所述第二参数对应的第二数值n2,n1和n2均大于或等于1;所述映射规则用于将数值小于或等于1的第一参数或第二参数映射为1;根据所述第一数值和所述第二数值,将所述索引访存指令拆分为至少一个微操作;所述发射队列,用于以元素为粒度对所述微操作进行拆分处理,得到所述微操作对应的子操作;根据所述第一数值、所述第二数值和所述微操作对应的各项子操作,确定所述索引访存指令的元素索引值;所述访存模块,用于基于所述元素索引值执行访存操作。
[0089]
可选地,所述根据所述第一数值和所述第二数值,将所述索引访存指令拆分为至少一个微操作,包括:在所述第一数值小于或等于所述第二数值的情况下,将所述索引访存指令拆分为n2个微操作;在所述第一数值大于所述第二数值的情况下,将所述索引访存指令拆分为n1个微操作。
[0090]
可选地,所述以元素为粒度对所述微操作进行拆分处理,得到所述微操作对应的
子操作,包括:获取所述索引访存指令的第三参数和第四参数;所述第三参数用于指示数据宽度;所述第四参数用于指示地址偏移值的宽度;在所述第一数值小于或等于所述第二数值的情况下,根据所述第三参数对所述微操作进行拆分处理,得到所述微操作对应的子操作;在所述第一数值大于所述第二数值的情况下,根据所述第四参数对所述微操作进行拆分处理,得到所述微操作对应的子操作。
[0091]
可选地,所述子操作中携带所述子操作对应的微操作的索引值;所述根据所述第一数值、所述第二数值和所述微操作对应的各项子操作,确定所述索引访存指令的元素索引值,包括:根据所述索引值对所述微操作对应的各项子操作进行顺序排列,得到所述子操作的序列值;根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值。
[0092]
可选地,所述索引访存指令的指令类型为加载指令;在所述第一数值小于或等于所述第二数值的情况下,所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:根据所述子操作的序列值确定目的寄存器的第一元素索引值;根据所述第二数值与所述第一数值的比值,确定所述索引访存指令存放地址偏移值的第一向量寄存器的第二元素索引值。
[0093]
可选地,所述索引访存指令的指令类型为加载指令;在所述第一数值大于所述第二数值的情况下,所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:根据所述第二数值与所述第一数值的比值,确定目的寄存器的第一元素索引值;根据所述子操作的序列值确定所述索引访存指令存放地址偏移值的第一向量寄存器的第二元素索引值。
[0094]
可选地,所述基于所述元素索引值执行访存操作,包括:根据所述第二元素索引值和所述索引访存指令的基地址,确定第一访存地址;根据所述第一访存地址从内存中读取目标数据,并根据所述第一元素索引值将所述目标数据加载至目的寄存器中;所述目标数据的宽度为所述索引访存指令的第三参数指示的数据宽度。
[0095]
可选地,所述索引访存指令的指令类型为存储指令;在所述第一数值小于或等于所述第二数值的情况下,所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:根据所述子操作的序列值确定源数据的第三元素索引值;根据所述第二数值与所述第一数值的比值,确定所述索引访存指令存放地址偏移值的第二向量寄存器的第四元素索引值。
[0096]
可选地,所述索引访存指令的指令类型为存储指令;在所述第一数值大于所述第二数值的情况下,所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述
索引访存指令的元素索引值,包括:根据所述第二数值与所述第一数值的比值,确定源数据的第三元素索引值;根据所述子操作的序列值确定所述索引访存指令存放地址偏移值的第二向量寄存器的第四元素索引值。
[0097]
可选地,所述基于所述元素索引值执行访存操作,包括:根据所述第四元素索引值和所述索引访存指令的基地址,确定第二访存地址;根据所述第三元素索引值将所述源数据存储到内存的所述第二访存地址中;每次访存读取的源数据的宽度为所述索引访存指令的第三参数指示的数据宽度。
[0098]
可选地,所述根据所述第一访存地址从内存中读取目标数据,并根据所述第一元素索引值将所述目标数据加载至目的寄存器中,包括:根据所述第一访存地址从内存中读取目标数据;所述目标数据的宽度为所述索引访存指令的第三参数指示的数据宽度;根据所述第一元素索引值将所述目标数据填入所述目的寄存器对应的数据域中;在所述微操作对应的各项子操作从内存中读取的目标数据均写入所述目的寄存器对应的数据域的情况下,将所述数据域中的目标数据加载至所述目的寄存器中。
[0099]
可选地,所述获取待执行的索引访存指令和所述索引访存指令的第一参数和第二参数,包括:获取待执行的索引访存指令和所述索引访存指令的第二参数、第三参数和第四参数;基于所述第三参数的编码规则对所述第四参数进行重新编码,得到所述第四参数的第四编码值;根据所述第二参数的第二编码值、所述第三参数的第三编码值和所述第四参数的第四编码值,确定第一参数的第一编码值;所述第一编码值=第四编码值-第三编码值+第二编码值;根据所述第一编码值确定所述第一参数的数值,所述第一参数的数值为正数。
[0100]
可选地,所述处理器后端还用于:在所述第一参数的第一编码值存在溢出的情况下,确定所述第一编码值非法,重新确定所述第一参数的第一编码值。
[0101]
本发明实施例提供的处理器,通过根据预设的映射规则将第一参数emul映射为第一数值n1,将第二参数lmul映射为第二数值n2,然后根据第一数值和第二数值对索引访存指令进行拆分,得到至少一个微操作,并进一步以元素为粒度将微操作拆分为子操作,根据第一数值、第二数值和索引访存指令的各项子操作,确定索引访存指令的元素索引值,最终基于元素索引值执行访存操作。本发明实施例可以利用预设的映射规则对第一参数emul和第二参数lmul的取值进行了合并处理,将原来的7种取值简化为了4种,在本发明实施例中,对emul和lmul的取值进行合并映射后,将原本的49种情况简化为了16种情况,降低了选择复杂度,有利于提升处理器的访存性能。
[0102]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0103]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与
其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0104]
关于上述实施例中的处理器,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0105]
参照图5,是本发明实施例提供的一种用于访存的电子设备的结构框图。如图5所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述实施例的访存方法。
[0106]
所述处理器可以是cpu(central processing unit,中央处理器),通用处理器、dsp(digital signal processor,数字信号处理器),asic(application specific integrated circuit,专用集成电路),fpga(field programmble gate array,现场可编程门阵列)或者其他可编辑器件、晶体管逻辑器件、硬件部件或者其任意组合。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
[0107]
所述通信总线可包括一通路,在存储器和通信接口之间传送信息。通信总线可以是pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
[0108]
所述存储器可以是rom(read only内存,只读内存)或可存储静态信息和指令的其他类型的静态存储设备、ram(random access,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electrically erasable programmable read only,电可擦可编程只读内存)、cd-rom(compact disa read only,只读光盘)、磁带、软盘和光数据存储设备等。
[0109]
本发明实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备(服务器或者终端)的处理器执行时,使得处理器能够执行图1所示的访存方法。
[0110]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0111]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0112]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中
指定的功能的装置。
[0113]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0114]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0115]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0116]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0117]
以上对本发明所提供的一种访存方法、处理器、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
技术特征:
1.一种访存方法,其特征在于,应用于处理器,所述方法包括:获取待执行的索引访存指令和所述索引访存指令的第一参数和第二参数;所述第一参数用于指示存放地址偏移值的向量寄存器的数目,所述第二参数用于指示存放数据的向量寄存器的数目;根据预设的映射规则确定所述第一参数对应的第一数值n1和所述第二参数对应的第二数值n2,n1和n2均大于或等于1;所述映射规则用于将数值小于或等于1的第一参数或第二参数映射为1;根据所述第一数值和所述第二数值,将所述索引访存指令拆分为至少一个微操作;以元素为粒度对所述微操作进行拆分处理,得到所述微操作对应的子操作;根据所述第一数值、所述第二数值和所述微操作对应的各项子操作,确定所述索引访存指令的元素索引值;基于所述元素索引值执行访存操作。2.根据权利要求1所述的方法,其特征在于,所述根据所述第一数值和所述第二数值,将所述索引访存指令拆分为至少一个微操作,包括:在所述第一数值小于或等于所述第二数值的情况下,将所述索引访存指令拆分为n2个微操作;在所述第一数值大于所述第二数值的情况下,将所述索引访存指令拆分为n1个微操作。3.根据权利要求1所述的方法,其特征在于,所述以元素为粒度对所述微操作进行拆分处理,得到所述微操作对应的子操作,包括:获取所述索引访存指令的第三参数和第四参数;所述第三参数用于指示数据宽度;所述第四参数用于指示地址偏移值的宽度;在所述第一数值小于或等于所述第二数值的情况下,根据所述第三参数对所述微操作进行拆分处理,得到所述微操作对应的子操作;在所述第一数值大于所述第二数值的情况下,根据所述第四参数对所述微操作进行拆分处理,得到所述微操作对应的子操作。4.根据权利要求1所述的方法,其特征在于,所述子操作中携带所述子操作对应的微操作的索引值;所述根据所述第一数值、所述第二数值和所述微操作对应的各项子操作,确定所述索引访存指令的元素索引值,包括:根据所述索引值对所述微操作对应的各项子操作进行顺序排列,得到所述子操作的序列值;根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值。5.根据权利要求4所述的方法,其特征在于,所述索引访存指令的指令类型为加载指令;在所述第一数值小于或等于所述第二数值的情况下,所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:根据所述子操作的序列值确定目的寄存器的第一元素索引值;根据所述第二数值与所述第一数值的比值,确定所述索引访存指令存放地址偏移值的
第一向量寄存器的第二元素索引值。6.根据权利要求4所述的方法,其特征在于,所述索引访存指令的指令类型为加载指令;在所述第一数值大于所述第二数值的情况下,所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:根据所述第二数值与所述第一数值的比值,确定目的寄存器的第一元素索引值;根据所述子操作的序列值确定所述索引访存指令存放地址偏移值的第一向量寄存器的第二元素索引值。7.根据权利要求5或6所述的方法,其特征在于,所述基于所述元素索引值执行访存操作,包括:根据所述第二元素索引值和所述索引访存指令的基地址,确定第一访存地址;根据所述第一访存地址从内存中读取目标数据,并根据所述第一元素索引值将所述目标数据加载至目的寄存器中;所述目标数据的宽度为所述索引访存指令的第三参数指示的数据宽度。8.根据权利要求4所述的方法,其特征在于,所述索引访存指令的指令类型为存储指令;在所述第一数值小于或等于所述第二数值的情况下,所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:根据所述子操作的序列值确定源数据的第三元素索引值;根据所述第二数值与所述第一数值的比值,确定所述索引访存指令存放地址偏移值的第二向量寄存器的第四元素索引值。9.根据权利要求4所述的方法,其特征在于,所述索引访存指令的指令类型为存储指令;在所述第一数值大于所述第二数值的情况下,所述根据所述子操作的序列值、所述第一数值和所述第二数值,确定所述索引访存指令的元素索引值,包括:根据所述第二数值与所述第一数值的比值,确定源数据的第三元素索引值;根据所述子操作的序列值确定所述索引访存指令存放地址偏移值的第二向量寄存器的第四元素索引值。10.根据权利要求8或9所述的方法,其特征在于,所述基于所述元素索引值执行访存操作,包括:根据所述第四元素索引值和所述索引访存指令的基地址,确定第二访存地址;根据所述第三元素索引值将所述源数据存储到内存的所述第二访存地址中;每次访存读取的源数据的宽度为所述索引访存指令的第三参数指示的数据宽度。11.根据权利要求7所述的方法,其特征在于,所述根据所述第一访存地址从内存中读取目标数据,并根据所述第一元素索引值将所述目标数据加载至目的寄存器中,包括:根据所述第一访存地址从内存中读取目标数据;所述目标数据的宽度为所述索引访存指令的第三参数指示的数据宽度;根据所述第一元素索引值将所述目标数据填入所述目的寄存器对应的数据域中;在所述微操作对应的各项子操作从内存中读取的目标数据均写入所述目的寄存器对应的数据域的情况下,将所述数据域中的目标数据加载至所述目的寄存器中。12.根据权利要求1所述的方法,其特征在于,所述获取待执行的索引访存指令和所述索引访存指令的第一参数和第二参数,包括:
获取待执行的索引访存指令和所述索引访存指令的第二参数、第三参数和第四参数;基于所述第三参数的编码规则对所述第四参数进行重新编码,得到所述第四参数的第四编码值;根据所述第二参数的第二编码值、所述第三参数的第三编码值和所述第四参数的第四编码值,确定第一参数的第一编码值;所述第一编码值=第四编码值-第三编码值+第二编码值;根据所述第一编码值确定所述第一参数的数值,所述第一参数的数值为正数。13.根据权利要求12所述的方法,其特征在于,所述根据所述第一编码值确定所述第一参数的数值之前,所述方法还包括:在所述第一参数的第一编码值存在溢出的情况下,确定所述第一编码值非法,重新确定所述第一参数的第一编码值。14.一种处理器,其特征在于,所述处理器包括处理器后端、发射队列和访存模块;所述处理器后端,用于获取待执行的索引访存指令和所述索引访存指令的第一参数和第二参数;所述第一参数用于指示存放地址偏移值的向量寄存器的数目,所述第二参数用于指示存放数据的向量寄存器的数目;根据预设的映射规则确定所述第一参数对应的第一数值n1和所述第二参数对应的第二数值n2,n1和n2均大于或等于1;所述映射规则用于将数值小于或等于1的第一参数或第二参数映射为1;根据所述第一数值和所述第二数值,将所述索引访存指令拆分为至少一个微操作;所述发射队列,用于以元素为粒度对所述微操作进行拆分处理,得到所述微操作对应的子操作;根据所述第一数值、所述第二数值和所述微操作对应的各项子操作,确定所述索引访存指令的元素索引值;所述访存模块,用于基于所述元素索引值执行访存操作。15.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至13中任一项所述的访存方法。16.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至13中任一项所述的访存方法。
技术总结
本发明实施例提供一种访存方法、处理器、电子设备及可读存储介质,涉及计算机技术领域,该方法包括:获取待执行的索引访存指令和所述索引访存指令的第一参数和第二参数;根据预设的映射规则确定所述第一参数对应的第一数值N1和所述第二参数对应的第二数值N2;根据所述第一数值和所述第二数值,将所述索引访存指令拆分为至少一个微操作;以元素为粒度对所述微操作进行拆分处理,得到所述微操作对应的子操作;根据所述第一数值、所述第二数值和所述微操作对应的各项子操作,确定所述索引访存指令的元素索引值;基于所述元素索引值执行访存操作。本发明实施例能够降低选择复杂度,有利于提升处理器的访存性能。利于提升处理器的访存性能。利于提升处理器的访存性能。
技术研发人员:马建露 王华强 王凯帆 陈键 唐丹 包云岗
受保护的技术使用者:北京开源芯片研究院
技术研发日:2023.09.13
技术公布日:2023/10/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/