CN116932202B - 一种访存方法、处理器、电子设备及可读存储介质 - Google Patents
一种访存方法、处理器、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN116932202B CN116932202B CN202310539424.4A CN202310539424A CN116932202B CN 116932202 B CN116932202 B CN 116932202B CN 202310539424 A CN202310539424 A CN 202310539424A CN 116932202 B CN116932202 B CN 116932202B
- Authority
- CN
- China
- Prior art keywords
- memory
- access
- micro
- data
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000015654 memory Effects 0.000 claims abstract description 390
- 238000004891 communication Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例提供一种访存方法、处理器、电子设备及可读存储介质,该方法包括:处理器后端以目的寄存器为粒度将待处理的向量指令拆分为至少一项微操作,并将所述至少一项微操作乱序发送至所述发射队列;发射队列将所述微操作拆分为至少一项子操作,确定所述子操作的访存信息,并将所述访存信息发射至所述加载模块;加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,并将所述目标数据加载至所述微操作对应的目的寄存器中;所述目标内存空间的内存长度等于预设访存宽度。本发明实施例能够减少访存次数,降低访存延迟和功耗,提升了处理器性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种访存方法、处理器、电子设备及可读存储介质。
背景技术
RISC-V是目前使用较为广泛的一种精简指令集。RISC-V指令集中提供了一种向量单步指令,例如load unit-stride类型指令。在通过向量单步指令实现访存操作的过程中,相关技术是将向量指令的每个元素的访问进行拆分,独立访问内存,每个元素获得数据之后再将数据进行合并,并生成最终的结果。例如,一条load unit-stride向量访存指令访问目的寄存器数目会出现以下7中情况,分别是:1/8、1/4、1/2、1、2、4、8个目的寄存器(一个目的寄存器的宽度是128bit);一次访问元素宽度会出现以下4种情况,分别是:8bit、16bit、32bit、64bit。那么极限情况下,一条向量访存指令的目的寄存器有8个,访问元素宽度是8bit,这样的话填满一个目的寄存器需要访问16次内存,如果8个目的寄存器全部填满,需要访问128次内存。
显然,相关技术中向量访存指令的访存过程存在访存次数过多、容易导致访存延迟,且浪费功耗的问题。
发明内容
本发明实施例提供一种访存方法、处理器、电子设备及可读存储介质,可以解决相关技术中向量指令的访存次数过多、容易导致访存延迟,且浪费功耗的问题。
为了解决上述问题,本发明实施例公开了一种访存方法,应用于处理器,所述处理器包括处理器后端、发射队列和加载模块;所述方法包括:
所述处理器后端以目的寄存器为粒度将待处理的向量指令拆分为至少一项微操作,并将所述至少一项微操作乱序发送至所述发射队列;所述向量指令用于对至少一个目的寄存器执行访存操作;每一个目的寄存器对应一项微操作;
所述发射队列将所述微操作拆分为至少一项子操作,确定所述子操作的访存信息,并将所述访存信息发射至所述加载模块;所述子操作用于执行一次访存;
所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,并将所述目标数据加载至所述微操作对应的目的寄存器中;所述目标内存空间的内存长度等于预设访存宽度。
可选地,所述微操作携带控制信息,所述控制信息包括向量指令访存的基地址、所述向量指令的第一索引值和所述微操作的第二索引值;
所述发射队列将所述微操作拆分为至少一项子操作,确定所述子操作的访存信息,并将所述访存信息发射至所述加载模块,包括:
所述发射队列对所述向量指令对应的各项微操作进行拆分处理,得到每项微操作对应的子操作;
所述发射队列根据所述控制信息确定所述子操作的访存信息,并将所述访存信息发射至加载模块;所述访存信息包括所述子操作的访存起始地址。
可选地,按照所述第二索引值对所述向量指令对应各项微操作对应的子操作进行顺序排列,第(n+1)个子操作的访存起始地址=基地址+n*预设访存宽度,n为非负整数。
可选地,所述控制信息还包括第一参数、第二参数和第三参数;其中,所述第一参数用于指示所述向量指令对应的有效元素个数;所述第二参数用于指示有效元素宽度;所述第三参数用于指示所述向量指令对应的元素是否为有效元素;所述访存信息还包括第一指示,所述第一指示用于指示所述目标内存空间中的有效数据;
所述发射队列根据所述控制信息确定所述子操作的访存信息,并将所述访存信息发射至加载模块,包括:
所述发射队列根据所述第一参数和所述第二参数,计算所述向量指令的访问内存长度;
所述发射队列根据所述访问内存长度、所述第三参数和所述预设访存宽度,确定所述子操作对应的第一指示,并将所述第一指示发射至加载模块;
所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,包括:
所述加载模块按照内存地址对齐的方式,对所述访存起始地址对应的目标内存空间进行访存,得到所述目标内存空间内的数据;
所述加载模块基于所述第一指示,从所述微操作的各项子操作访存的目标内存空间的有效数据中确定所述微操作对应的目标数据。
可选地,在所述基地址满足内存对齐,所述第三参数用于指示所述向量指令对应的元素均为有效元素的情况下,所述第一指示包括以下至少一项:
若所述访问内存长度小于或等于所述预设访存宽度,则所述第一指示用于指示所述基地址和第一地址之间的数据为有效数据;所述第一地址=基地址+访问内存长度;
若所述访问内存长度大于所述预设访存宽度,则前n个子操作对应的第一指示用于指示所述目标内存空间中的数据均为有效数据,第(n+1)个子操作对应的第一指示用于指示第一子空间中的数据为有效数据;所述第一子空间的起始地址等于所述第(n+1)个子操作访存的目标内存空间的起始地址,所述第一子空间的内存长度=访问内存长度-n*预设访存宽度。
可选地,在所述基地址不满足内存对齐,所述第三参数用于指示所述向量指令对应的元素均为有效元素的情况下,所述第一指示包括以下至少一项:
若所述预设访存宽度减去所述基地址的非对齐偏移大于或等于所述访问内存长度,则所述第一指示用于指示所述基地址与第一地址之间的数据为有效数据;所述第一地址=基地址+访问内存长度;
若所述预设访存宽度减去所述基地址的非对齐偏移小于所述访问内存长度,则第1个子操作对应的第一指示用于指示第二子空间中的数据为有效数据,第(n+1)个子操作对应的第一指示用于指示第三子空间中的数据为有效数据,其他子操作对应的第一指示用于指示其对应的子操作访存的目标内存空间中的数据均为有效数据;其中,所述第二子空间的起始地址等于所述基地址,所述第二子空间的内存长度=预设访存宽度-基地址的非对齐偏移;所述第三子空间的起始地址等于所述第(n+1)个子操作访存的目标内存空间的起始地址,所述第三子空间的内存长度=访问内存长度+基地址的非对齐偏移-n*预设访存宽度。
可选地,所述处理器还包括微操作队列;所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,并将所述目标数据加载至所述微操作对应的目的寄存器中,包括:
所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据;
所述加载模块根据所述基地址的非对齐偏移和所述目标数据在所述目的寄存器中的数据回填地址,对所述目标数据进行数据对齐处理;
所述加载模块根据所述第一索引值和所述第二索引值,将对齐后的目标数据填入微操作队列中对应的数据域;所述目标数据在所述数据域中的位置与所述目标数据在所述目的寄存器中的数据回填地址对齐;
所述加载模块在所述微操作对应的各项子操作访存的目标数据均写入所述目的寄存器对应的数据域的情况下,将所述数据域中的目标数据加载至所述目的寄存器中。
可选地,所述控制信息还包括第四参数,所述第四参数用于指示所述向量指令包含的微操作的数目;所述加载模块根据所述第一索引值和所述第二索引值,将对齐后的目标数据填入微操作队列中对应的数据域之前,所述方法还包括:
所述处理器后端将所述至少一项微操作乱序发送至所述微操作队列;
所述微操作队列在接收到所述向量指令对应的任一项微操作的情况下,根据所述第一索引值、所述第二索引值和所述第四参数,为所述向量指令对应的各项微操作分配微操作队列项,并将所述控制信息填入相应的微操作队列项中。
可选地,所述控制信息还包括第四参数,所述第四参数用于指示所述向量指令包含的微操作的数目;所述方法还包括:
所述发射队列在接收到所述向量指令对应的任一项微操作的情况下,根据所述第一索引值、所述第二索引值和所述第四参数,为所述向量指令对应的各项微操作分配发射队列项;
所述发射队列将所述访存信息填入相应的发射队列项中。
另一方面,本发明实施例公开了一种处理器,所述处理器包括处理器后端、发射队列和加载模块;
所述处理器后端,用于以目的寄存器为粒度将待处理的向量指令拆分为至少一项微操作,并将所述至少一项微操作乱序发送至所述发射队列;所述向量指令用于对至少一个目的寄存器执行访存操作;每一个目的寄存器对应一项微操作;
所述发射队列,用于将所述微操作拆分为至少一项子操作,确定所述子操作的访存信息,并将所述访存信息发射至所述加载模块;所述子操作用于执行一次访存;
所述加载模块,用于按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,并将所述目标数据加载至所述微操作对应的目的寄存器中;所述目标内存空间的内存长度等于预设访存宽度。
再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的访存方法。
本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的访存方法。
本发明实施例包括以下优点:
本发明实施例提供了一种访存方法,处理器后端以目的寄存器为粒度将向量指令拆分为至少一项微操作,并由发射队列将微操作进一步拆分为至少一项子操作,每一项子操作用于执行一次访存;发射队列确定子操作的访存信息之后,由加载模块按照内存地址对齐的方式对访存信息对应的目标内存空间进行访存,得到目标数据,并将目标数据加载至目的寄存器。相比于相关技术中按照元素宽度访问内存,本发明实施例对多个元素的访问进行了合并,访问一次内存就可以取出预设访存宽度的数据,有效减少了访存次数,降低了访存延迟和功耗,提升了处理器性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种访存方法实施例的步骤流程图;
图2是本发明的一种处理器的架构示意图;
图3是本发明的另一种处理器的架构示意图;
图4是本发明示例提供的一种用于访存的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
方法实施例
参照图1,示出了本发明的一种访存方法实施例的步骤流程图,所述方法具体可以包括如下步骤:
步骤101、处理器后端以目的寄存器为粒度将待处理的向量指令拆分为至少一项微操作,并将所述至少一项微操作乱序发送至发射队列。
步骤102、发射队列将所述微操作拆分为至少一项子操作,确定所述子操作的访存信息,并将所述访存信息发射至所述加载模块。
步骤103、加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,并将所述目标数据加载至所述微操作对应的目的寄存器中。
本发明实施例提供的访存方法可以应用于本发明提供的处理器。参照图2,示出了本发明实施例提供的一种处理器的架构示意图。如图2所示,本发明实施例提供的处理器200包括处理器后端、发射队列(FlowQueue)和加载模块(loadUnit)。其中,所述发射队列为向量访存操作对应的发射队列。
处理器后端可以对向量指令进行译码、拆分等处理。可以理解的是,本发明实施例中的向量指令可以为load unit-stride类型指令,所述向量指令用于对至少一个目的寄存器执行访存操作。所述向量指令可以由处理器前端提供。在本发明实施例中,处理器后端在获取到待处理的向量指令之后,以目的寄存器为粒度对向量指令进行拆分,得到至少一项微操作(uop),每一个目的寄存器对应一项微操作。可以理解的是,一条向量指令拆分后的微操作属于一组,一条向量指令访存的向量寄存器组中包含的目的寄存器的数目可以为1、2、4、8,因此,一个微操作组中包含的微操作的数目可以为1、2、4、8中的任一项。
处理器后端将拆分后的微操作乱序发送到发射队列。发射队列在接收到向量指令的微操作之后,将微操作拆分为至少一项子操作,并确定各项微操作的访存信息。其中,每一项子操作用于执行一次访存,所述访存信息可以包括子操作的访存起始地址。示例性地,发射队列可以根据向量指令访存的基地址、微操作在该向量指令的各项微操作中的顺序、合并访存宽度等信息确定微操作的访存起始地址。向量指令访存的基地址为向量指令访问内存的起始地址,向量指令访存的内存空间是连续的。假设向量指令用于对两个目的寄存器进行访存,对该向量指令进行拆分之后得到两个微操作,分别记作uop1和uop2,uop1对应子操作flow1,uop2对应子操作flow2。那么,flow1对应的访存起始地址=基地址,flow2的访存起始地址=基地址+合并访存宽度。其中,合并访存宽度用于指示子操作一次访问的连续内存空间的长度,可以根据实际访存需求设置,例如,合并访存宽度可以为预设访存宽度。
接下来,发射队列将各项子操作的访存信息发送至加载模块。
加载模块按照内存地址对齐的方式,对子操作的访存信息对应的目标内存空间进行访存,得到目标数据。其中,所述目标内存空间的内存长度等于预设访存宽度。
需要说明的是,加载模块按照内存地址对齐的方式访问内存,会出现两种情况:向量指令的基地址满足内存对齐,或者,向量指令的基地址不满足内存对齐。在本发明实施例中,每一次访问均对一个目标内存空间中的全部数据进行合并访问。在向量指令的基地址满足内存对齐的情况下,每一个子操作的访存起始地址为其访问的目标内存空间的起始地址,其中第一个目标内存空间的起始地址也为该向量指令的基地址;在向量指令的基地址不满足内存对齐的情况下,第一个子操作的访存起始地址(也即第一次访存的起始地址)为向量指令访存的基地址,第二个子操作的访存起始地址为(基地址+预设访存宽度),第三个子操作的访存起始地址为(基地址+2*预设访存宽度),依次类推。
在本发明实施例中,加载模块按照内存地址对齐的方式对目标内存空间进行访存,得到的数据中可能存在其他无效数据,例如,向量指令占用目的寄存器的1/2,在目标内存空间的内存长度大于目的寄存器宽度的1/2的情况下,和/或,在向量指令的基地址不满足内存对齐的情况下,目标内存空间中的一部分数据为微操作的目标数据,另一部分为其他无效数据。因此,加载模块对目标内存空间进行访存之后,可以进一步根据向量指令实际占用的有效目的寄存器的大小和预设长度,从目标内存空间存储的数据中确定微操作对应的目标数据。
示例性地,假设预设访存宽度为16Byte,也即按照16Byte对齐对向量指令的元素访问内存进行合并;向量指令访问的连续内存长度为32Byte,基地址为80000008,不满足内存对齐,每个目的寄存器的宽度为128bit,需要填满两个目的寄存器。对该向量指令进行拆分,得到两个微操作uop1和uop2,对这两个微操作进行拆分,得到3个子操作,分别记为flow1、flow2和flow3,共需访问3次内存。其中,flow1的访存起始地址为80000008,flow2的访存起始地址为80000018,flow3的访存起始地址为80000028。第1次访问内存,得到的是目标内存空间80000000-8000000f的数据;第2次访问内存,得到的是目标内存空间80000010到8000001f的数据;第3次访问内存,得到的是目标内存空间80000020到8000002f。由于每个目的寄存器都需要被填满,因此,每个目的寄存器所需的目标数据的数据长度等于目的寄存器的宽度128bit(16Byte),其中,uop1对应目的寄存器所需的目标数据为80000008-80000018之间的数据,uop2对应目的寄存器所需的目标数据为80000018-80000028之间的数据。
最后,加载模块将目标数据加载至微操作对应的目的寄存器中,完成数据回填。
以向量指令的目的寄存器有8个、每个目的寄存器的宽度为128bit、访问元素宽度为8bit的极限情况为例,采用本发明实施例提供的访存方法,按照16Byte进行合并访存,也即目标内存空间的内存长度为16Byte,如果向量指令的基地址满足内存对齐,那么填满1个目的寄存器需要访问1次内存,填满8个目的寄存器需要访问8次内存;如果向量指令的基地址不满足内存对齐,那么填满1个目的寄存器需要访问2次内存,填满8个目的寄存器需要访问9次内存。相比于现有技术中按照元素独立访问内存需要访问128次,本发明实施例有效减少了访存次数,降低了访存延迟和功耗,提升了处理器性能。
在本发明的一种可选实施例中,所述微操作携带控制信息,所述控制信息包括向量指令访存的基地址、所述向量指令的第一索引值和所述微操作的第二索引值。
步骤102所述发射队列将所述微操作拆分为至少一项子操作,确定所述子操作的访存信息,并将所述访存信息发射至所述加载模块,包括:
步骤S11、所述发射队列对所述向量指令对应的各项微操作进行拆分处理,得到每项微操作对应的子操作;
步骤S12、所述发射队列根据所述控制信息确定所述子操作的访存信息,并将所述访存信息发射至加载模块;所述访存信息包括所述子操作的访存起始地址。
在本发明实施例中,发射队列在接收到向量指令的微操作之后,将微操作拆分为至少一项子操作,并根据微操作携带的控制信息确定每项子操作的访存信息,例如访存起始地址。
发射队列根据微操作携带的控制信息中的第一索引值,可以确定该微操作属于哪条向量指令;根据第二索引值就可以确定该微操作在向量指令的微操作组中的排序,也即确定该微操作属于向量指令对应的第几个微操作。
可选地,按照所述第二索引值对所述向量指令对应各项微操作对应的子操作进行顺序排列,第(n+1)个子操作的访存起始地址=基地址+n*预设访存宽度,n为非负整数。
例如,假设预设访存宽度为16Byte,也即按照16Byte对齐对向量指令的元素访问内存进行合并;向量指令访问的连续内存长度为32Byte,基地址为80000008,不满足内存对齐,每个目的寄存器的宽度为128bit,需要填满两个目的寄存器。对该向量指令进行拆分,得到两个微操作uop1和uop2,对这两个微操作进行拆分,得到3个子操作,分别记为flow1、flow2和flow3,共需访问3次内存。其中,flow1的访存起始地址为80000008,flow2的访存起始地址为80000018,flow3的访存起始地址为80000028。
可选地,所述控制信息还包括第一参数、第二参数和第三参数;其中,所述第一参数用于指示所述向量指令对应的有效元素个数;所述第二参数用于指示有效元素宽度;所述第三参数用于指示所述向量指令对应的元素是否为有效元素;所述访存信息还包括第一指示,所述第一指示用于指示所述目标内存空间中的有效数据。
步骤S12、所述发射队列根据所述控制信息确定所述子操作的访存信息,并将所述访存信息发射至加载模块,包括:
步骤S121、所述发射队列根据所述第一参数和所述第二参数,计算所述向量指令的访问内存长度;
步骤S122、所述发射队列根据所述访问内存长度、所述第三参数和所述预设访存宽度,确定所述子操作对应的第一指示,并将所述第一指示发射至加载模块;
步骤103所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,包括:
步骤S123、所述加载模块按照内存地址对齐的方式,对所述访存起始地址对应的目标内存空间进行访存,得到所述目标内存空间内的数据;
步骤S124、所述加载模块基于所述第一指示,从所述微操作的各项子操作访存的目标内存空间的有效数据中确定所述微操作对应的目标数据。
其中,第一参数,例如vl,用于指示所述向量指令对应的有效元素个数,也即需要访问内存的元素个数。第二参数,例如eew,用于指示有效元素宽度。第三参数,例如vlmask,用于指示元素是否为有效元素。
发射队列可以根据第一参数和第二参数,计算向量指令的访问内存长度。示例性地,在第一参数、第二参数和访问内存长度均用十进制表示的情况下,将第一参数与第二参数相乘即可得到访问内存长度;在第一参数、第二参数访问内存长度均用二进制表示的情况下,访问内存长度(datawidth)等于vl左移eew的低两位。例如,假设第一参数vl=10,eew=8Byte=(011)Byte,那可以将vl(10)左移3位,得到访问内存长度为:00010000,也即16Byte。
然后,发射队列根据访问内存长度、第三参数和预设访存宽度,就可以确定子操作对应的第一指示。例如,假设预设访存宽度为16Byte,第二参数eew为1Byte,第三参数用于指示向量指令对应的元素均为有效元素;如果只有一次访存,也向量指令仅对应一个子操作(flow),那么可以直接根据访问内存长度的低四位确定第一指示:如果访问内存长度的低四位等于0,则生成的第一指示可以为16个“1”,表示目标内存空间中每一个字节的数据均为有效数据;如果访问内存长度的低四位不等于0,则可以根据访问内存长度对应的字节数,生成对应的第一指示。
如果向量指令对应的元素中,有效元素与非有效元素交叉排列,那么可以根据第二参数和第三参数,确定每一个有效元素对应的数据在目标内存空间中所处的位置,并生成相应的第一指示。
加载模块按照内存地址对齐的方式对各项子操作的访存起始地址对应的目标内存空间进行访存,就可以得到目标内存空间内的所有数据。然后,基于第一指示就能从目标内存空间的有效数据中确定需要填入目的寄存器中的目标数据。
可选地,在所述基地址满足内存对齐,所述第三参数用于指示所述向量指令对应的元素均为有效元素的情况下,所述第一指示包括以下至少一项:
A1、若所述访问内存长度小于或等于所述预设访存宽度,则所述第一指示用于指示所述基地址和第一地址之间的数据为有效数据。其中,所述第一地址=基地址+访问内存长度。
A2、若所述访问内存长度大于所述预设访存宽度,则前n个子操作对应的第一指示用于指示所述目标内存空间中的数据均为有效数据,第(n+1)个子操作对应的第一指示用于指示第一子空间中的数据为有效数据。其中,所述第一子空间的起始地址等于所述第(n+1)个子操作访存的目标内存空间的起始地址,所述第一子空间的内存长度=访问内存长度-n*预设访存宽度。
在所述基地址满足内存对齐,所述第三参数用于指示所述向量指令对应的元素均为有效元素的情况下,针对A1项,假设向量指令的基地址为80000000,预设访存宽度为16Byte,访问内存长度为8Byte,对该向量指令进两次拆分(将向量指令拆分为微操作、将微操作拆分为子操作)之后得到一个子操作,该子操作访问的目标内存空间为80000000-8000000f,第一地址为80000008,该子操作对应的第一指示用于指示80000000-80000008之间的数据为有效数据。
针对A2项,假设向量指令的基地址为80000000,预设访存宽度为16Byte,访问内存长度为24Byte,对该向量指令进行两次拆分之后得到两个子操作flow1和flow2,flow1访问的目标内存空间为80000000-8000000f,flow2访问的目标内存空间为80000010-8000001f。其中,flow1对应的第一指示用于指示目标内存空间80000000-8000000f之间的数据均为有效数据;flow2对应的第一指示用于指示目标内存空间80000010-8000001f中,仅80000010-80000018之间的数据为有效数据。
可选地,在所述基地址不满足内存对齐,所述第三参数用于指示所述向量指令对应的元素均为有效元素的情况下,所述第一指示包括以下至少一项:
B1、若所述预设访存宽度减去所述基地址的非对齐偏移大于或等于所述访问内存长度,则所述第一指示用于指示所述基地址与第一地址之间的数据为有效数据。其中,所述第一地址=基地址+访问内存长度。
B2、若所述预设访存宽度减去所述基地址的非对齐偏移小于所述访问内存长度,则第1个子操作对应的第一指示用于指示第二子空间中的数据为有效数据,第(n+1)个子操作对应的第一指示用于指示第三子空间中的数据为有效数据,其他子操作对应的第一指示用于指示其对应的子操作访存的目标内存空间中的数据均为有效数据。其中,所述第二子空间的起始地址等于所述基地址,所述第二子空间的内存长度=预设访存宽度-基地址的非对齐偏移;所述第三子空间的起始地址等于所述第(n+1)个子操作访存的目标内存空间的起始地址,所述第三子空间的内存长度=访问内存长度+基地址的非对齐偏移-n*预设访存宽度。
在所述基地址不满足内存对齐,所述第三参数用于指示所述向量指令对应的元素均为有效元素的情况下,针对B1项,假设向量指令的基地址为80000008,预设访存宽度为16Byte,访问内存长度为8Byte,预设访存宽度减去所述基地址的非对齐偏移等于访问内存长度。对该向量指令进两次拆分之后得到一个子操作,该子操作访问的目标内存空间为80000000-8000000f,第一地址为8000000f,该子操作对应的第一指示用于指示80000008-8000000f之间的数据为有效数据。
针对B2项,假设向量指令的基地址为80000008,预设访存宽度为16Byte,访问内存长度为32Byte,预设访存宽度减去所述基地址的非对齐偏移小于访问内存长度。对该向量指令进行两次拆分之后得到两个子操作flow1、flow2和flow3,flow1访问的目标内存空间为80000000-8000000f,flow2访问的目标内存空间为80000010-8000001f,flow3访问的目标内存空间为80000020-8000002f。其中,flow1对应的第一指示用于指示目标内存空间80000000-8000000f中,仅80000008-8000000f之间的数据为有效数据;flow2对应的第一指示用于指示目标内存空间80000010-8000001f中的数据均为有效数据,flow3对应的第一指示用于指示目标内存空间80000020-8000002f中,仅80000020-80000028之间的数据为有效数据。
在本发明的一种可选实施例中,所述处理器还包括微操作队列;步骤103所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,并将所述目标数据加载至所述微操作对应的目的寄存器中,包括:
步骤S21、所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到所述子操作对应的目标数据;
步骤S22、所述加载模块根据所述基地址的非对齐偏移和所述目标数据在所述目的寄存器中的数据回填地址,对所述目标数据进行数据对齐处理;
步骤S23、所述加载模块根据所述第一索引值和所述第二索引值,将对齐后的目标数据填入微操作队列中对应的数据域;所述目标数据在所述数据域中的位置与所述目标数据在所述目的寄存器中的数据回填地址对齐;
步骤S24、所述加载模块在所述微操作对应的各项子操作访存的目标数据均写入所述目的寄存器对应的数据域的情况下,将所述数据域中的目标数据加载至所述目的寄存器中。
参照图3,示出了本发明实施例提供的另一种处理器的架构示意图。如图3所示,本发明实施例提供的处理器200还可以包括微操作队列,该微操作队列用于存放微操作的控制信息和目标数据。
加载模块从目标内存空间中获取到目标数据之后,可以先根据向量指令基地址的非对齐偏移以及目的寄存器的数据回填地址,对目标数据进行数据对齐处理,然后再根据第一索引值Rob_idx和第二索引值Inner_idx将目标数据填入微操作队列中对应的数据域中。可以理解的是,在微操作队列中,针对向量指令对应的每一个目的寄存器均分配有相应的数据域,加载模块根据第一索引值Rob_idx可以确定该向量指令对应的目的寄存器对应的数据域,根据第二索引值Inner_idx可以确定具体填入该向量指令的哪个目的寄存器对应的数据域中。
加载模块访问一次内存取出的有效数据可能包含两个目的寄存器所需的目标数据,在这种情况下,可以将访问一次内存取出的有效数据同时填写到这两个目的寄存器对应的数据域中。示例性地,假设向量指令的基地址为80000008,不满足内存地址对齐;预设访存宽度为16Byte,访问内存长度为32Byte,需要填满两个目的寄存器R1和R2,目的寄存器的宽度为128bit。对该向量指令进行两次拆分之后得到两个子操作flow1、flow2和flow3,flow1访问的目标内存空间为80000000-8000000f,flow2访问的目标内存空间为80000010-8000001f,flow3访问的目标内存空间为80000020-8000002f。flow1访问的目标内存空间中,80000008-8000000f之间的数据为有效数据,加载模块将其填入目的寄存器R1对应的数据域中。flow2访问的目标内存空间80000010-8000001f中的数据均为有效数据,其中80000010-80000018之间的数据为目的寄存器R1所需的目标数据,80000018-8000001f之间的数据为目的寄存器R2所需的目标数据,因此加载模块从目标内存空间中取出数据之后,将80000010-80000018之间的数据填入目的寄存器R1对应的数据域,将80000018-8000001f之间的数据填入目的寄存器R2对应的数据域。flow3访问的目标内存空间80000020-8000002f中,80000020-80000028之间的数据为有效数据,加载模块将其填入目的寄存器R2对应的数据域中。
当目的寄存器所需的目标数据均已写入对应的数据域之后,加载模块就可以将数据域中的目标数据加载到目的寄存器中。
可选地,所述控制信息还包括第四参数,所述第四参数用于指示所述向量指令包含的微操作的数目;步骤S23所述加载模块根据所述第一索引值和所述第二索引值,将对齐后的目标数据填入微操作队列中对应的数据域之前,所述方法还包括:
步骤S31、所述处理器后端将所述至少一项微操作乱序发送至所述微操作队列;
步骤S32、所述微操作队列在接收到所述向量指令对应的任一项微操作的情况下,根据所述第一索引值、所述第二索引值和所述第四参数,为所述向量指令对应的各项微操作分配微操作队列项,并将所述控制信息填入相应的微操作队列项中。
在本发明实施例中,处理器后端对向量指令进行拆分处理后,可以将拆分后的微操作乱序发送至微操作队列。
微操作队列在接收到同一条向量指令的任一项微操作的情况下,可以根据微操作携带的控制信息中的第一索引值、第二索引值和第五参数,为该向量指令的各项微操作分配微操作队列项,并将微操作的控制信息填入相应的微操作队列项中。其中,每一条向量指令对应一个第一索引值Rob_idx,微操作队列根据第一索引值就可以确定该微操作属于哪条向量指令。向量指令的每一项微操作对应一个第二索引值Inner_idx,微操作队列根据第二索引值就可以确定该微操作在向量指令的微操作组中的排序,也即确定该微操作属于向量指令对应的第几个微操作。第四参数用于指示所述向量指令包含的微操作的数目。微操作队列在接收到某一条向量指令的任一项微操作后,根据第四参数就可以确定出需要针对该向量指令分配几个微操作队列项。
可选地,所述控制信息还包括第四参数,所述第四参数用于指示所述向量指令包含的微操作的数目;所述方法还包括:
步骤S61、所述发射队列在接收到所述向量指令对应的任一项微操作的情况下,根据所述第一索引值、所述第二索引值和所述第四参数,为所述向量指令对应的各项微操作分配发射队列项;
步骤S62、所述发射队列将所述访存信息填入相应的发射队列项中。
在本发明实施例中,发射队列在接收到向量指令对应的任一项微操作的情况下,也可以根据微操作携带的控制信息中的第一索引值、第二索引值和第四参数,为该向量指令的各项微操作分配发射队列项,并在确定微操作的访存信息之后,将访存信息填入相应的发射队列项中。
综上,本发明实施例提供了一种访存方法,处理器后端以目的寄存器为粒度将向量指令拆分为至少一项微操作,并由发射队列将微操作进一步拆分为至少一项子操作,每一项子操作用于执行一次访存;发射队列确定子操作的访存信息之后,由加载模块按照内存地址对齐的方式对访存信息对应的目标内存空间进行访存,得到目标数据,并将目标数据加载至目的寄存器。相比于相关技术中按照元素宽度访问内存,本发明实施例对多个元素的访问进行了合并,访问一次内存就可以取出预设访存宽度的数据,有效减少了访存次数,降低了访存延迟和功耗,提升了处理器性能。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图2,示出了本发明的一种处理器的结构框图,所述处理器具体可以包括处理器后端、发射队列和加载模块。
其中,所述处理器后端,用于以目的寄存器为粒度将待处理的向量指令拆分为至少一项微操作,并将所述至少一项微操作乱序发送至所述发射队列;所述向量指令用于对至少一个目的寄存器执行访存操作;每一个目的寄存器对应一项微操作;
所述发射队列,用于将所述微操作拆分为至少一项子操作,确定所述子操作的访存信息,并将所述访存信息发射至所述加载模块;所述子操作用于执行一次访存;
所述加载模块,用于按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,并将所述目标数据加载至所述微操作对应的目的寄存器中;所述目标内存空间的内存长度等于预设访存宽度。
可选地,所述微操作携带控制信息,所述控制信息包括向量指令访存的基地址、所述向量指令的第一索引值和所述微操作的第二索引值;所述发射队列用于:
对所述向量指令对应的各项微操作进行拆分处理,得到每项微操作对应的子操作;
根据所述控制信息确定所述子操作的访存信息,并将所述访存信息发射至加载模块;所述访存信息包括所述子操作的访存起始地址。
可选地,按照所述第二索引值对所述向量指令对应各项微操作对应的子操作进行顺序排列,第(n+1)个子操作的访存起始地址=基地址+n*预设访存宽度,n为非负整数。
可选地,所述控制信息还包括第一参数、第二参数和第三参数;其中,所述第一参数用于指示所述向量指令对应的有效元素个数;所述第二参数用于指示有效元素宽度;所述第三参数用于指示所述向量指令对应的元素是否为有效元素;所述访存信息还包括第一指示,所述第一指示用于指示所述目标内存空间中的有效数据;
所述发射队列,用于:
所述发射队列根据所述第一参数和所述第二参数,计算所述向量指令的访问内存长度;
所述发射队列根据所述访问内存长度、所述第三参数和所述预设访存宽度,确定所述子操作对应的第一指示,并将所述第一指示发射至加载模块;
所述加载模块,用于:
所述加载模块按照内存地址对齐的方式,对所述访存起始地址对应的目标内存空间进行访存,得到所述目标内存空间内的数据;
所述加载模块基于所述第一指示,从所述微操作的各项子操作访存的目标内存空间的有效数据中确定所述微操作对应的目标数据。
可选地,在所述基地址满足内存对齐,所述第三参数用于指示所述向量指令对应的元素均为有效元素的情况下,所述第一指示包括以下至少一项:
若所述访问内存长度小于或等于所述预设访存宽度,则所述第一指示用于指示所述基地址和第一地址之间的数据为有效数据;所述第一地址=基地址+访问内存长度;
若所述访问内存长度大于所述预设访存宽度,则前n个子操作对应的第一指示用于指示所述目标内存空间中的数据均为有效数据,第(n+1)个子操作对应的第一指示用于指示第一子空间中的数据为有效数据;所述第一子空间的起始地址等于所述第(n+1)个子操作访存的目标内存空间的起始地址,所述第一子空间的内存长度=访问内存长度-n*预设访存宽度。
可选地,在所述基地址不满足内存对齐,所述第三参数用于指示所述向量指令对应的元素均为有效元素的情况下,所述第一指示包括以下至少一项:
若所述预设访存宽度减去所述基地址的非对齐偏移大于或等于所述访问内存长度,则所述第一指示用于指示所述基地址与第一地址之间的数据为有效数据;所述第一地址=基地址+访问内存长度;
若所述预设访存宽度减去所述基地址的非对齐偏移小于所述访问内存长度,则第1个子操作对应的第一指示用于指示第二子空间中的数据为有效数据,第(n+1)个子操作对应的第一指示用于指示第三子空间中的数据为有效数据,其他子操作对应的第一指示用于指示其对应的子操作访存的目标内存空间中的数据均为有效数据;其中,所述第二子空间的起始地址等于所述基地址,所述第二子空间的内存长度=预设访存宽度-基地址的非对齐偏移;所述第三子空间的起始地址等于所述第(n+1)个子操作访存的目标内存空间的起始地址,所述第三子空间的内存长度=访问内存长度+基地址的非对齐偏移-n*预设访存宽度。
可选地,所述处理器还包括微操作队列;所述加载模块,用于:
按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据;
根据所述基地址的非对齐偏移和所述目标数据在所述目的寄存器中的数据回填地址,对所述目标数据进行数据对齐处理;
根据所述第一索引值和所述第二索引值,将对齐后的目标数据填入微操作队列中对应的数据域;所述目标数据在所述数据域中的位置与所述目标数据在所述目的寄存器中的数据回填地址对齐;
在所述微操作对应的各项子操作访存的目标数据均写入所述目的寄存器对应的数据域的情况下,将所述数据域中的目标数据加载至所述目的寄存器中。
可选地,所述控制信息还包括第四参数,所述第四参数用于指示所述向量指令包含的微操作的数目;
所述处理器后端还用于:
将所述至少一项微操作乱序发送至所述微操作队列;
所述微操作队列,用于在接收到所述向量指令对应的任一项微操作的情况下,根据所述第一索引值、所述第二索引值和所述第四参数,为所述向量指令对应的各项微操作分配微操作队列项,并将所述控制信息填入相应的微操作队列项中。
可选地,所述控制信息还包括第四参数,所述第四参数用于指示所述向量指令包含的微操作的数目;所述发射队列还用于:
在接收到所述向量指令对应的任一项微操作的情况下,根据所述第一索引值、所述第二索引值和所述第四参数,为所述向量指令对应的各项微操作分配发射队列项;
将所述访存信息填入相应的发射队列项中。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的处理器,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参照图4,是本发明实施例提供的一种用于访存的电子设备的结构框图。如图4所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述实施例的访存方法。
所述处理器可以是CPU(Central Processing Unit,中央处理器),通用处理器、DSP(Digital Signal Processor,数字信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmble Gate Array,现场可编程门阵列)或者其他可编辑器件、晶体管逻辑器件、硬件部件或者其任意组合。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
所述通信总线可包括一通路,在存储器和通信接口之间传送信息。通信总线可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。所述通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
所述存储器可以是ROM(Read Only内存,只读内存)或可存储静态信息和指令的其他类型的静态存储设备、RAM(Random Access,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically Erasable Programmable ReadOnly,电可擦可编程只读内存)、CD-ROM(Compact Disa Read Only,只读光盘)、磁带、软盘和光数据存储设备等。
本发明实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备(服务器或者终端)的处理器执行时,使得处理器能够执行图1所示的访存方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种访存方法、处理器、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种访存方法,其特征在于,应用于处理器,所述处理器包括处理器后端、发射队列和加载模块;所述方法包括:
所述处理器后端以目的寄存器为粒度将待处理的向量指令拆分为至少一项微操作,并将所述至少一项微操作乱序发送至所述发射队列;所述向量指令用于对至少一个目的寄存器执行访存操作;每一个目的寄存器对应一项微操作;
所述发射队列将所述微操作拆分为至少一项子操作,确定所述子操作的访存信息,并将所述访存信息发射至所述加载模块;所述子操作用于执行一次访存;
所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,并将所述目标数据加载至所述微操作对应的目的寄存器中;所述目标内存空间的内存长度等于预设访存宽度。
2.根据权利要求1所述的方法,其特征在于,所述微操作携带控制信息,所述控制信息包括所述向量指令访存的基地址、所述向量指令的第一索引值和所述微操作的第二索引值;
所述发射队列将所述微操作拆分为至少一项子操作,确定所述子操作的访存信息,并将所述访存信息发射至所述加载模块,包括:
所述发射队列对所述向量指令对应的各项微操作进行拆分处理,得到每项微操作对应的子操作;
所述发射队列根据所述控制信息确定所述子操作的访存信息,并将所述访存信息发射至加载模块;所述访存信息包括所述子操作的访存起始地址。
3.根据权利要求2所述的方法,其特征在于,按照所述第二索引值对所述向量指令对应各项微操作对应的子操作进行顺序排列,第(n+1)个子操作的访存起始地址=基地址+n*预设访存宽度,n为非负整数。
4.根据权利要求2所述的方法,其特征在于,所述控制信息还包括第一参数、第二参数和第三参数;其中,所述第一参数用于指示所述向量指令对应的有效元素个数;所述第二参数用于指示有效元素宽度;所述第三参数用于指示所述向量指令对应的元素是否为有效元素;所述访存信息还包括第一指示,所述第一指示用于指示所述目标内存空间中的有效数据;
所述发射队列根据所述控制信息确定所述子操作的访存信息,并将所述访存信息发射至加载模块,包括:
所述发射队列根据所述第一参数和所述第二参数,计算所述向量指令的访问内存长度;
所述发射队列根据所述访问内存长度、所述第三参数和所述预设访存宽度,确定所述子操作对应的第一指示,并将所述第一指示发射至加载模块;
所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,包括:
所述加载模块按照内存地址对齐的方式,对所述访存起始地址对应的目标内存空间进行访存,得到所述目标内存空间内的数据;
所述加载模块基于所述第一指示,从所述微操作的各项子操作访存的目标内存空间的有效数据中确定所述微操作对应的目标数据。
5.根据权利要求4所述的方法,其特征在于,在所述基地址满足内存对齐,所述第三参数用于指示所述向量指令对应的元素均为有效元素的情况下,所述第一指示包括以下至少一项:
若所述访问内存长度小于或等于所述预设访存宽度,则所述第一指示用于指示所述基地址和第一地址之间的数据为有效数据;所述第一地址=基地址+访问内存长度;
若所述访问内存长度大于所述预设访存宽度,则前n个子操作对应的第一指示用于指示所述目标内存空间中的数据均为有效数据,第(n+1)个子操作对应的第一指示用于指示第一子空间中的数据为有效数据;所述第一子空间的起始地址等于所述第(n+1)个子操作访存的目标内存空间的起始地址,所述第一子空间的内存长度=访问内存长度-n*预设访存宽度。
6.根据权利要求4所述的方法,其特征在于,在所述基地址不满足内存对齐,所述第三参数用于指示所述向量指令对应的元素均为有效元素的情况下,所述第一指示包括以下至少一项:
若所述预设访存宽度减去所述基地址的非对齐偏移大于或等于所述访问内存长度,则所述第一指示用于指示所述基地址与第一地址之间的数据为有效数据;所述第一地址=基地址+访问内存长度;
若所述预设访存宽度减去所述基地址的非对齐偏移小于所述访问内存长度,则第1个子操作对应的第一指示用于指示第二子空间中的数据为有效数据,第(n+1)个子操作对应的第一指示用于指示第三子空间中的数据为有效数据,其他子操作对应的第一指示用于指示其对应的子操作访存的目标内存空间中的数据均为有效数据;其中,所述第二子空间的起始地址等于所述基地址,所述第二子空间的内存长度=预设访存宽度-基地址的非对齐偏移;所述第三子空间的起始地址等于所述第(n+1)个子操作访存的目标内存空间的起始地址,所述第三子空间的内存长度=访问内存长度+基地址的非对齐偏移-n*预设访存宽度。
7.根据权利要求2所述的方法,其特征在于,所述处理器还包括微操作队列;所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,并将所述目标数据加载至所述微操作对应的目的寄存器中,包括:
所述加载模块按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据;
所述加载模块根据所述基地址的非对齐偏移和所述目标数据在所述目的寄存器中的数据回填地址,对所述目标数据进行数据对齐处理;
所述加载模块根据所述第一索引值和所述第二索引值,将对齐后的目标数据填入微操作队列中对应的数据域;所述目标数据在所述数据域中的位置与所述目标数据在所述目的寄存器中的数据回填地址对齐;
所述加载模块在所述微操作对应的各项子操作访存的目标数据均写入所述目的寄存器对应的数据域的情况下,将所述数据域中的目标数据加载至所述目的寄存器中。
8.根据权利要求7所述的方法,其特征在于,所述控制信息还包括第四参数,所述第四参数用于指示所述向量指令包含的微操作的数目;所述加载模块根据所述第一索引值和所述第二索引值,将对齐后的目标数据填入微操作队列中对应的数据域之前,所述方法还包括:
所述处理器后端将所述至少一项微操作乱序发送至所述微操作队列;
所述微操作队列在接收到所述向量指令对应的任一项微操作的情况下,根据所述第一索引值、所述第二索引值和所述第四参数,为所述向量指令对应的各项微操作分配微操作队列项,并将所述控制信息填入相应的微操作队列项中。
9.根据权利要求2所述的方法,其特征在于,所述控制信息还包括第四参数,所述第四参数用于指示所述向量指令包含的微操作的数目;所述方法还包括:
所述发射队列在接收到所述向量指令对应的任一项微操作的情况下,根据所述第一索引值、所述第二索引值和所述第四参数,为所述向量指令对应的各项微操作分配发射队列项;
所述发射队列将所述访存信息填入相应的发射队列项中。
10.一种处理器,其特征在于,所述处理器包括处理器后端、发射队列和加载模块;
所述处理器后端,用于以目的寄存器为粒度将待处理的向量指令拆分为至少一项微操作,并将所述至少一项微操作乱序发送至所述发射队列;所述向量指令用于对至少一个目的寄存器执行访存操作;每一个目的寄存器对应一项微操作;
所述发射队列,用于将所述微操作拆分为至少一项子操作,确定所述子操作的访存信息,并将所述访存信息发射至所述加载模块;所述子操作用于执行一次访存;
所述加载模块,用于按照内存地址对齐的方式,对所述访存信息对应的目标内存空间进行访存,得到目标数据,并将所述目标数据加载至所述微操作对应的目的寄存器中;所述目标内存空间的内存长度等于预设访存宽度。
11.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至9中任一项所述的访存方法。
12.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至9中任一项所述的访存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310539424.4A CN116932202B (zh) | 2023-05-12 | 2023-05-12 | 一种访存方法、处理器、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310539424.4A CN116932202B (zh) | 2023-05-12 | 2023-05-12 | 一种访存方法、处理器、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116932202A CN116932202A (zh) | 2023-10-24 |
CN116932202B true CN116932202B (zh) | 2024-04-05 |
Family
ID=88393195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310539424.4A Active CN116932202B (zh) | 2023-05-12 | 2023-05-12 | 一种访存方法、处理器、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116932202B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891751B (zh) * | 2024-03-14 | 2024-06-14 | 北京壁仞科技开发有限公司 | 内存数据访存方法及装置、电子设备与存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216757A (zh) * | 2007-12-29 | 2008-07-09 | 中国科学院计算技术研究所 | 一种risc处理器及其数据访存方法 |
CN108845830A (zh) * | 2018-07-03 | 2018-11-20 | 中国人民解放军国防科技大学 | 一种一对数装载指令的执行方法 |
CN111258653A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 原子访存方法、存储介质、计算机设备、装置和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220382546A1 (en) * | 2021-05-31 | 2022-12-01 | Andes Technology Corporation | Apparatus and method for implementing vector mask in vector processing unit |
-
2023
- 2023-05-12 CN CN202310539424.4A patent/CN116932202B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216757A (zh) * | 2007-12-29 | 2008-07-09 | 中国科学院计算技术研究所 | 一种risc处理器及其数据访存方法 |
CN108845830A (zh) * | 2018-07-03 | 2018-11-20 | 中国人民解放军国防科技大学 | 一种一对数装载指令的执行方法 |
CN111258653A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 原子访存方法、存储介质、计算机设备、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116932202A (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8880815B2 (en) | Low access time indirect memory accesses | |
CN102197368B (zh) | 数据处理指令的许可检查 | |
CN105393240A (zh) | 具有辅助异步向量处理器的异步处理器的方法和装置 | |
CN116932202B (zh) | 一种访存方法、处理器、电子设备及可读存储介质 | |
CN110377339B (zh) | 长延时指令处理装置、方法以及设备、可读存储介质 | |
US4819165A (en) | System for performing group relative addressing | |
US9753832B2 (en) | Minimizing bandwith to compress output stream in instruction tracing systems | |
CN109923520A (zh) | 计算机系统及内存访问技术 | |
CN116170522A (zh) | 数据传输方法及装置、电子设备、存储介质 | |
CN116909946B (zh) | 一种访存方法、装置、电子设备及可读存储介质 | |
CN116243976A (zh) | 指令执行方法及装置、电子设备和存储介质 | |
CN116909755B (zh) | 一种访存方法、处理器、电子设备及可读存储介质 | |
US11550587B2 (en) | System, device, and method for obtaining instructions from a variable-length instruction set | |
TW479192B (en) | Carry look-ahead for bi-endian adder | |
US7274824B2 (en) | Method and apparatus to reduce the system load of motion estimation for DSP | |
US20150134939A1 (en) | Information processing system, information processing method and memory system | |
CN117170622B (zh) | 累加器及用于累加器的方法和芯片电路及计算设备 | |
CN118259964A (zh) | 指令编译码方法、设备、存储介质以及编译码系统 | |
CN111813722B (zh) | 基于共享内存的数据读写方法,系统及可读存储介质 | |
US11783168B2 (en) | Network accuracy quantification method and system, device, electronic device and readable medium | |
CN107562442B (zh) | 一种读取数据的方法和装置 | |
CN110046105B (zh) | 一种3D NAND Flash | |
CN113836177B (zh) | 消耗型业务数据的缓存管理 | |
CN117093270B (zh) | 指令发送方法、装置、设备及存储介质 | |
CN113031914B (zh) | 浮点舍入模式的控制方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |