CN116048627A - 指令缓冲方法、装置、处理器、电子设备及可读存储介质 - Google Patents
指令缓冲方法、装置、处理器、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN116048627A CN116048627A CN202310339414.6A CN202310339414A CN116048627A CN 116048627 A CN116048627 A CN 116048627A CN 202310339414 A CN202310339414 A CN 202310339414A CN 116048627 A CN116048627 A CN 116048627A
- Authority
- CN
- China
- Prior art keywords
- prediction block
- instruction
- processor
- instruction data
- cache
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000003860 storage Methods 0.000 title claims abstract description 57
- 230000003139 buffering effect Effects 0.000 title claims abstract description 31
- 238000004891 communication Methods 0.000 claims description 18
- 125000004122 cyclic group Chemical group 0.000 claims description 15
- 238000012545 processing Methods 0.000 abstract description 31
- 230000008569 process Effects 0.000 abstract description 19
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 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
- 238000012549 training Methods 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
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例提供一种指令缓冲方法、装置、处理器、电子设备及可读存储介质,该方法包括:在待处理的第一预测块属于循环体结构的情况下,从循环缓存中获取所述第一预测块对应的目标指令数据;所述第一预测块用于指示取指请求的取指范围和分支指令信息;所述循环缓存中存储有历史取指请求对应的指令数据;将所述目标指令数据存入指令队列;所述指令队列用于为处理器后端提供待执行指令。本发明实施例能够有效降低处理器在处理循环体结构过程中的功耗,提升了循环指令的处理效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种指令缓冲方法、装置、处理器、电子设备及可读存储介质。
背景技术
解耦合前端是一种较为通行的前端设计架构,其将分支预测与取指分离,有效降低了前端的时序设计压力。在软件中存在大量循环体结构,处理器通常使用一条跳转的分支指令指示控制流到循环体起始位置。面对这种结构,循环体每执行一次,都需要分支预测单元对其做出一次预测,并等待取指单元从指令缓存中取出指令数据,这样就引入了不必要的重复功耗。
发明内容
本发明实施例提供一种指令缓冲方法、装置、处理器、电子设备及可读存储介质,可以降低处理器在处理循环体结构过程中的功耗。
为了解决上述问题,本发明实施例公开了一种指令缓冲方法,应用于处理器,所述处理器包括循环缓存和指令队列;所述方法包括:
在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据;所述第一预测块用于指示取指请求的取指范围和分支指令信息;所述循环缓存中存储有历史取指请求对应的指令数据;
将所述目标指令数据存入所述指令队列;所述指令队列用于为处理器后端提供待执行指令。
可选地,所述方法还包括:
检测所述第一预测块是否满足预设缓冲条件;
若所述第一预测块满足所述预设缓冲条件,则确定所述第一预测块属于循环体结构;
其中,所述预设缓冲条件包括以下至少一项:
所述第一预测块对应的取指范围与第二预测块对应的取指范围相同;所述第二预测块为所述处理器在所述第一预测块之前执行完毕的预测块;
所述处理器在处理所述第一预测块之前,连续执行了至少两个取指范围相同的预测块对应的指令序列。
可选地,在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据之前,所述方法还包括:
若所述第一预测块满足所述预设缓冲条件,则从所述指令队列中获取与所述第一预测块相匹配的目标指令数据,并将所述目标指令数据存储至所述循环缓存中。
可选地,所述循环缓存包括第一缓存模块和第二缓存模块;所述在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据之前,所述方法还包括:
针对每一个预测块,从指令队列中获取所述预测块对应的指令数据,并将所述指令数据存储至所述第一缓存模块;
所述在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据,包括:
在待处理的第一预测块属于循环体结构的情况下,若所述第二缓存模块中不存在与所述第一预测块相匹配的目标指令数据,则从所述第一缓存模块中获取所述第一预测块对应的目标指令数据,并将所述目标指令数据存储至所述第二缓存模块;所述第二缓存模块用于在不满足循环退出条件的情况下,为所述指令队列提供目标指令数据;
若所述第二缓存模块中存在与所述第一预测块相匹配的目标指令数据,则从所述第二缓存模块中获取所述目标指令数据。
可选地,所述方法还包括:
在不满足循环退出条件的情况下,基于所述第一预测块生成第三预测块;所述第三预测块用于指示所述目标指令数据。
可选地,若所述第一预测块对应的取指范围小于第一存储容量,则所述第三预测块指示的指令数据包含N份所述目标指令数据;所述第一存储容量与N的乘积小于或等于所述循环缓存的最大存储容量。
可选地,所述处理器还包括分支预测单元;所述方法还包括:
对所述分支预测单元进行重定向处理,以使所述分支预测单元的预测地址指向所述第一预测块对应的循环退出位置;
将所述分支预测单元的状态调整为关闭状态,直至满足所述循环体结构的退出条件时将所述分支预测单元的状态恢复为开启状态。
另一方面,本发明实施例公开了一种指令缓冲装置,应用于处理器,所述处理器包括循环缓存和指令队列;所述装置包括:
第一模块,用于在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据;所述第一预测块用于指示取指请求的取指范围和分支指令信息;所述循环缓存中存储有历史取指请求对应的指令数据;
第二模块,用于将所述目标指令数据存入所述指令队列;所述指令队列用于为处理器后端提供待执行指令。
又一方面,本发明实施例还公开了一种处理器,所述处理器包括取指目标队列、循环缓存和指令队列;
所述取指目标队列,用于在待处理的第一预测块属于循环体结构的情况下,向所述循环缓存发送取指请求,所述取指请求中携带所述第一预测块;所述第一预测块用于指示所述取指请求的范围和分支指令信息;
所述循环缓存,用于根据所述取指请求确定目标指令数据,并将所述目标指令数据存入所述指令队列;所述循环缓存中存储有历史取指请求对应的指令数据;所述指令队列用于为处理器后端提供待执行指令。
可选地,所述取指目标队列还用于:
检测所述第一预测块是否满足预设缓冲条件;
若所述第一预测块满足所述预设缓冲条件,则确定所述第一预测块属于循环体结构;
其中,所述预设缓冲条件包括以下至少一项:
所述第一预测块对应的取指范围与第二预测块对应的取指范围相同;所述第二预测块为所述处理器在所述第一预测块之前执行完毕的预测块;
所述处理器在处理所述第一预测块之前,按照连续执行了至少两个取指范围相同的预测块对应的指令序列。
可选地,所述处理器还包括指令缓存;所述循环缓存还用于:
若所述第一预测块满足所述预设缓冲条件,则从所述指令队列中获取与所述第一预测块相匹配的目标指令数据并存储。
可选地,所述处理器还包括指令缓存;所述循环缓存包括第一缓存模块和第二缓存模块;
所述第一缓存模块,用于针对每一个预测块,从所述指令队列中获取所述预测块对应的指令数据并存储;
所述第二缓存模块,用于在待处理的第一预测块属于循环体结构的情况下,若所述第二缓存模块中不存在与所述第一预测块相匹配的目标指令数据,则从所述第一缓存模块中获取所述第一预测块对应的目标指令数据并存储,以便在不满足循环退出条件的情况下,为所述指令队列提供目标指令数据;若所述第二缓存模块中存在与所述第一预测块相匹配的目标指令数据,则将所述目标指令数据存入所述指令队列。
可选地,所述处理器还包括旁路模块,所述旁路模块用于:
在不满足循环退出条件的情况下,基于所述第一预测块生成第三预测块;所述第三预测块用于指示所述目标指令数据。
可选地,若所述第一预测块对应的取指范围小于第一存储容量,则所述第三预测块指示的指令数据包含N份所述目标指令数据;所述第一存储容量与N的乘积小于或等于所述循环缓存的最大存储容量。
可选地,所述处理器还包括分支预测单元;所述循环缓存还用于:
对所述分支预测单元进行重定向处理,以使所述分支预测单元的预测地址指向所述第一预测块对应的循环体的退出位置;
将所述分支预测单元的状态调整为关闭状态,直至满足所述循环体结构的退出条件时将所述分支预测单元的状态恢复为开启状态。
再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的指令缓冲方法。
本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的指令缓冲方法。
本发明实施例包括以下优点:
本发明实施例提供了一种指令缓冲方法,在待处理的第一预测块属于循环体结构的情况下,从循环缓存中获取所述第一预测块对应的目标指令数据并存入指令队列,取指目标队列无需再向去取指单元发送取指请求,也不需要等待取指单元从指令缓存中获取指令数据,能够有效降低处理器在处理循环体结构过程中的功耗,提升了循环指令的处理效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一种解耦合前端的架构示意图;
图2是本发明的一种指令缓冲方法实施例的步骤流程图;
图3是本发明的一种处理器的架构示意图;
图4是本发明的另一种处理器的架构示意图;
图5是本发明的一种指令缓冲装置实施例的结构框图;
图6是本发明示例提供的一种用于指令缓冲的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
方法实施例
解耦合前端(decoupled frontend)是一种将分支预测与取指分离的处理器前端架构设计。参照图1,示出了一种解耦合前端的架构示意图。如图1所示,处理器前端100主要包含分支预测单元(Branch Prediction Unit,BPU)、取指目标队列(Fetch Target Queue,FTQ)、取指单元(Instruction Fetch Unit,IFU)、指令缓存(Instruction Cache,ICache)、指令队列(Instruction Buffer,Ibuffer)和译码单元(Decode Unit)。
其中,分支预测单元用于预测取指目标,也即生成预测块。预测块是分支预测单元每次给取指目标队列的请求基本单元,用于描述一个取指请求的范围以及其中分支指令的情况。分支预测单元将预测块暂存至取指目标队列中。取指目标队列是分支预测单元和取指单元之间的缓冲队列,用于暂存分支预测单元生成的预测块,并根据这些预测块给取指单元发送取指请求。取指单元在接收到取指请求后,从取指目标队列中取出预测块生成取指信息,并向指令缓存发送取指请求。取指单元等待指令缓存处理完成之后,将取出的指令数据提供给指令队列。指令队列是取指单元与译码单元之间的缓冲队列,取指单元取出的指令数据经由指令队列传给译码单元,并最终形成处理器后端的指令供给。
按照图1所示的处理器前端架构,每执行一次循环体结构,都需要分支预测单元进行预测,并等待取指单元从指令缓存中取出指令数据,导致处理器功耗较高。
因此,本发明实施例提供了一种指令缓冲方法,能够降低循环场景下的处理器功耗。
参照图2,示出了本发明的一种指令缓冲方法实施例的步骤流程图,所述方法具体可以包括如下步骤:
步骤201、在待处理的第一预测块属于循环体结构的情况下,从循环缓存中获取所述第一预测块对应的目标指令数据。
步骤202、将所述目标指令数据存入指令队列。
其中,所述第一预测块用于指示取指请求的取指范围和分支指令信息;所述循环缓存中存储有历史取指请求对应的指令数据。所述指令队列用于为处理器后端提供待执行指令。
本发明实施例提供的指令缓冲方法可以应用于本发明提供的处理器。参照图3,示出了本发明实施例提供的一种处理器的架构示意图。如图3所示,相比于图1所示的相关技术中的解耦合前端,本发明提供的处理器300还包括循环缓存,所述循环缓存中存储有历史取指请求对应的指令数据。
预测块是分支预测单元每次给取指目标队列的请求基本单位,用于指示取指请求的取指范围和分支指令信息,通常可以包含指令块的起始地址、结束地址和分支指令信息。其中,起始地址和结束地址指示了预测块的取指范围。
可以理解的是,预测块限制了处理器一次取指最多仅能取回含有一条跳转分支指令的指令块。对于循环体结构,取指单元基于分支预测单元生成的预测块取出的指令数据仅包含执行一次循环体所需的指令数据。
在本发明实施例中,如果分支预测单元生成的第一预测块属于循环体结构,说明该第一预测块指示的取指范围中的指令数据,也即循环体语句,会被多次执行。换言之,取指目标队列发送多个包含取指信息的取指请求。在本发明的循环缓存中存储有历史取指请求的情况下,可以直接从循环缓存中获取第一预测块对应的目标指令数据并存入指令队列,取指目标队列无需再向去取指单元发送取指请求,也不需要等待取指单元从指令缓存中获取指令数据,能够有效降低处理器在处理循环体结构过程中的功耗,提升了循环指令的处理效率。
可选地,所述方法还包括:
步骤S11、检测所述第一预测块是否满足预设缓冲条件;
步骤S12、若所述第一预测块满足所述预设缓冲条件,则确定所述第一预测块属于循环体结构。
其中,所述预设缓冲条件包括以下至少一项:
A1、所述第一预测块对应的取指范围与第二预测块对应的取指范围相同;所述第二预测块为所述处理器在所述第一预测块之前执行完毕的预测块;
A2、所述处理器在处理所述第一预测块之前,连续执行了至少两个取指范围相同的预测块对应的指令序列。
在本发明实施例中,可以将满足预设缓冲条件的第一预测块确定为属于循环体结构的预测块。
具体地,针对A1项,只要第一预测块之前,处理器执行了至少一个第二预测块,且第一预测块的取指范围与第二预测块的取指范围相同,就可以确定第一预测块属于循环体结构。本发明的循环缓存中存储的历史取指请求对应的指令数据中,包含有第二预测块对应的取指请求的指令数据,因此在处理第一预测块时,可以直接从循环缓存中获取第一预测块对应的目标指令数据,无需再由取指单元访问指令缓存。
针对A2项,只要处理器在处理第一预测块之前,就已经连续执行了至少两个取指范围相同的预测块对应的指令序列,就可以认为当前处于一个循环体中,因此可以认为第一预测块属于循环体结构。需要说明的是,本发明实施例提供的指令缓冲方法主要针对需要对多次执行循环体的场景,如果只需执行2次循环体,由取指单元从指令缓存中获取指令数据并不会导致较大的处理器功耗。本发明中的循环体结构指的是需要被执行两次以上的循环体,因此当处理器在处理第一预测块之前,就已经连续执行了至少两个取指范围相同的预测块对应的指令序列,就可以认为该第一预测块属于循环体结构,在这种情况下,可以直接从循环缓存中获取第一预测块对应的目标指令数据。
需要说明的是,取指目标队列的另一个重要职能是暂存分支预测单元各个预测器的预测信息,在指令提交后把这些信息送回分支预测单元作为预测器的训练样本,因此取指目标队列需要维护指令从预测到提交的完整的生命周期。
指令以预测块为单位,从分支预测单元预测后便被送进取指目标队列,直到指令所在的预测块中所有的指令全部在处理器后端提交完成,取指目标队列才会在存储结构中完全释放该预测块所对应的项。示例性地,这个过程中发生的事如下:
1、预测块从BPU发出,进入FTQ,bpuPtr 指针加一,初始化对应FTQ 项的各种状态,把各种预测信息写入存储结构;如果预测块来自BPU覆盖预测逻辑,则恢复bpuPtr和ifuPtr。
2、FTQ向IFU发出取指请求,ifuPtr指针加一,等待预译码信息写回。
3、IFU写回预译码信息,ifuWbPtr指针加一,如果预译码检测出了预测错误,则给BPU发送相应的重定向请求,恢复bpuPtr和ifuPtr。
4、指令进入后端执行,如果后端检测出了误预测,则通知FTQ,给IFU 和BPU发送重定向请求,恢复bpuPtr、ifuPtr和ifuWbPtr。
5、指令在后端提交,通知FTQ,等FTQ项中所有的有效指令都已提交,commPtr指针加一,从存储结构中读出相应的信息,送给BPU进行训练。
预测块n内指令的生存周期会涉及到FTQ中的bpuPtr、ifuPtr、ifuWbPtr和commPtr四个指针,当bpuPtr开始指向n+1时,预测块内的指令进入生存周期,当commPtr指向n+1后,预测块内的指令完成生存周期。
基于此,在本发明实施例中,可以在取指目标队列中添加循环体的检测机制,也即由取指目标队列检测第一预测块是否满足预设缓冲条件。
在本发明的一种可选实施例中,在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据之前,所述方法还包括:
若所述第一预测块满足所述预设缓冲条件,则从所述指令队列中获取与所述第一预测块相匹配的目标指令数据,并将所述目标指令数据存储至所述循环缓存中。
进一步地,为了提高第一预测块在循环缓存中的命中率,在本发明实施例中,如果确定第一预测块满足预设缓冲条件,就可以从指令队列入口获取与第一预测块相匹配的目标指令数据,并将目标指令数据存储至循环缓存中,从而在后续处理与第一预测块相匹配的取指请求时,直接从循环缓存中获取目标指令数据,以便降低处理器功耗,提升指令处理效率。
以图3所示的处理器为例,如果预设缓冲条件为A1:所述第一预测块对应的取指范围与第二预测块对应的取指范围相同;所述第二预测块为所述处理器在所述第一预测块之前执行完毕的预测块;那么,在本发明实施例中,假设循环体X的第一个预测块为Y1,第二个预测块为Y2,Y1与Y2的取指范围相同,都指向循环体X对应的指令数据。在循环体X的处理过程中,分支预测单元将生成的预测块Y1暂存至取指目标队列中,取指目标队列基于预测块Y1向取指单元发送取指请求,由取指单元从指令缓存中取出预测块Y1对应的指令数据并存入指令队列中,处理器后端从指令队列中读取指令数据并执行。接下来,取指目标队列开始处理预测块Y2,由于此时处理器已经执行了与预测块Y2的取指范围相同的预测块Y1,取指目标队列可以确定预测块Y2为本发明中满足预设缓冲条件的第一预测块。在这种情况下,循环缓存就可以从指令队列中获取循环体X对应的指令数据并存储。取指目标队列不再向取指单元发送预测块Y2对应的取指请求,而是向循环缓存发送取指请求。循环缓存接收到取指请求后,将预测块Y2对应的指令数据(也即循环体X对应的指令数据)存入指令队列中,处理器后端从指令队列中读取数据并执行。可以理解的是,处理器在处理循环体X对应的后续的预测块Y3、Y4等的过程中,都可以直接从循环缓存中获取数据,取指目标队列无需再向取指单元或指令缓存发送取指请求,从而有效降低处理器在处理循环体结构过程中的重复功耗。
如果预设缓冲条件为A2:所述处理器在处理所述第一预测块之前,连续执行了至少两个取指范围相同的预测块对应的指令序列;那么,在本发明实施例中,假设循环体X的第一个预测块为Y1,第二个预测块为Y2,第三个预测块为Y3, Y1、Y2和Y3的取指范围相同,都指向循环体X对应的指令数据。在循环体X的处理过程中,分支预测单元将生成的预测块Y1暂存至取指目标队列中,取指目标队列基于预测块Y1向取指单元发送取指请求,由取指单元从指令缓存中取出预测块Y1对应的指令数据并存入指令队列中,处理器后端从指令队列中读取指令数据并执行。对于预测块Y2,采用与预测块Y1相同的处理流程,由取指单元从指令缓存中获取指令数据并存入指令队列。对于预测块Y3,由于此时处理器已经连续执行了两个取指范围与预测块Y3的取指范围相同的预测块,取指目标队列可以确定预测块Y3为本发明中满足预设缓冲条件的第一预测块。在这种情况下,循环缓存就可以从指令队列中获取循环体X对应的指令数据并存储。取指目标队列不再向取指单元发送预测块Y3对应的取指请求,而是向循环缓存发送取指请求。循环缓存接收到取指请求后,将预测块Y3对应的指令数据(也即循环体X对应的指令数据)存入指令队列中,处理器后端从指令队列中读取数据并执行。同理,处理器在处理循环体X对应的后续的预测块Y4、Y5等的过程中,都可以直接从循环缓存中获取数据,取指目标队列无需再向取指单元或指令缓存发送取指请求,从而有效降低处理器在处理循环体结构过程中的重复功耗。
在本发明的一种可选实施例中,所述循环缓存包括第一缓存模块和第二缓存模块;所述在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据之前,所述方法还包括:
步骤S21、针对每一个预测块,从指令队列中获取所述预测块对应的指令数据,并将所述指令数据存储至所述第一缓存模块;
所述在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据,包括:
步骤S22、在待处理的第一预测块属于循环体结构的情况下,若所述第二缓存模块中不存在与所述第一预测块相匹配的目标指令数据,则从所述第一缓存模块中获取所述第一预测块对应的目标指令数据,并将所述目标指令数据存储至所述第二缓存模块;所述第二缓存模块用于在不满足循环退出条件的情况下,为所述指令队列提供目标指令数据;
步骤S23、若所述第二缓存模块中存在与所述第一预测块相匹配的目标指令数据,则从所述第二缓存模块中获取所述目标指令数据。
在本发明实施例中,可以将循环缓存划分为两个区域,分别记作第一缓存模块和第二缓存模块。其中,第一缓存模块用于与指令队列进行交互,在每一个预测块到达指令队列入口之后,第一缓存模块就可以从指令队列中获取该预测块对应的指令数据并存储。
第二缓存模块与取指目标队列进行交互,示例性地,在待处理的第一预测块属于循环体结构的情况下,取指目标队列不再向取指单元或指令缓存发送取指请求,而是向第二缓存模块发送取指请求。第二缓存模块接收到取指请求之后,判断本地是否存储有该第一预测块对应的目标指令数据,如果不存在第一预测块对应的目标指令数据,也即第一预测块在第二缓存模块未命中,则第二缓存模块从第一缓存模块中获取第一预测块对应的目标指令数据并存储,然后将目标指令数据存入指令队列中以供处理器后端读取并执行。如果存在第一预测块对应的目标指令数据,也即第一预测块在第二缓存模块命中,则第二缓存模块直接将第一预测块对应的目标指令数据存入指令队列中以供处理器后端读取并执行。
相比于第二缓存模块,第一缓存模块往往需要存储更多的指令数据,因此在对循环缓存进行划分时,可以为第一缓存模块分配容量较大的存储区域,为第二缓存模块分配容量较小的存储区域。并且,还可以定期对第一缓存模块进行数据清除,以避免数据冗余,提高缓存利用率。
在本发明实施例中,如果第一预测块在第二缓存模块未命中,可以直接从第一缓存模块中获取指令数据并存储,而不必等待取指单元从指令缓存返回数据,降低了循环缓存的填充延迟。
需要说明的是,在本发明实施例中,可以根据预设缓冲条件判断第一预测块是否属于循环体结构,也可以采用其他方式判断第一预测块是否属于循环体结构,例如,根据处理器后端的指示确定第一预测块是否属于循环体结构:如果处理器后端在执行第一预测块的上一个预测块,也即第二预测块时,确定第二预测块对应的指令序列中的最后一条分支指令的跳转地址是该指令序列中第一条指令的存储地址,则向处理器前端发送第一指示,指示第二预测块属于循环体结构,进一步的,还可以向处理器前端指示循环体的退出条件;处理器前端根据接收到的指示确定第一预测块是否属于循环体结构,等等。本发明实施例对第一预测块是否属于循环体的判断方式不做具体限定。
在本发明的一种可选实施例中,所述方法还包括:
在不满足循环退出条件的情况下,基于所述第一预测块生成第三预测块;所述第三预测块用于指示所述目标指令数据。
可以理解的是,在第一预测块属于循环体结构,且当前不满足循环退出条件的情况下,处理器后端每次执行该循环体时所需的预测块均与第一预测块相同,因此可以直接基于第一预测块生成第三预测块,取指目标队列根据第三预测块向循环缓存发送取指请求,无需再由分支预测单元进行预测。
作为一种示例,参照图4所示的处理器的架构示意图,可以在处理器300中新增一个旁路模块,由旁路模块直接根据第一预测块生成第三预测块,进而暂停分支预测单元的预测更新工作,降低了处理器前端的重复功耗。
可选地,若所述第一预测块对应的取指范围小于第一存储容量,则所述第三预测块指示的指令数据包含N份所述目标指令数据;所述第一存储容量与N的乘积小于或等于所述循环缓存的最大存储容量。
在相关技术中,解耦合前端一次仅能取回执行一次循环体所需的指令数据,在循环体所包含的指令数目较少二处理器后端的执行能力较强时,处理器前端的取指能力将不足以满足处理器后端的执行需求,降低了处理器的整体性能。
在本发明实施例中,可以根据循环缓存的最大存储容量生成第三预测块。具体地,如果第一预测块对应的取指范围小于第一存储容量,则基于第一预测块生成的第三预测块可以指示N份目标指令数据,N为满足第一存储容量与N的乘积小于或等于循环缓存的最大存储容量的最大自然数。示例性地,第一预测块对应的取指范围等于第一预测块的结束地址减去起始地址,假设第一预测块对应的取指范围小于第一存储容量C1,循环缓存的最大存储容量为Cm,可以根据Cm/C1的值确定N的取指,如果Cm/C1为整数,则N=Cm/C1;如果Cm/C1为整数,则N等于Cm/C1向下取整得到的整数。
可以理解的是,如果基于前述步骤S21至步骤S23,将循环缓存划分为第一缓存模块和第二缓存模块,则本发明实施例中的最大存储容量Cm可以为第二缓存模块的最大存储容量。换言之,若所述第一预测块对应的取指范围小于第一存储容量,则所述第三预测块指示的指令数据包含N份所述目标指令数据;所述第一存储容量与N的乘积小于或等于第二缓存模块的最大存储容量。
本发明实施例可以通过第三预测块指示循环缓存在接下来的循环体指令供应中提供N倍指令,从而解决了小循环场景下处理器前端指令供应能力不足的问题,有利于提升处理器的整体性能。
可选地,所述处理器还包括分支预测单元;所述方法还包括:
步骤S31、对所述分支预测单元进行重定向处理,以使所述分支预测单元的预测地址指向所述第一预测块对应的循环退出位置;
步骤S32、将所述分支预测单元的状态调整为关闭状态,直至满足所述循环体结构的退出条件时将所述分支预测单元的状态恢复为开启状态。
在本发明实施例中,在第一预测块属于循环体结构,且当前不满足循环退出条件的情况下,可以由旁路模块直接基于第一预测块生成第三预测块,取指目标队列根据第三预测块向循环缓存发送取指请求,此时无需再由分支预测单元进行预测,可以对分支预测单元进行重定向处理,使分支预测单元的预测地址指向循环退出位置,并暂时关闭分支预测单元等待循环体退出以节省功耗。
示例性地,假设第一预测块对应的循环体结构的循环开始位置s1中的指令为B1,循环体结束位置e1中的指令为B2,指令B2的下一条指令为B3,也即退出循环体“s1-e1”后执行指令B3。在本发明实施例中,如果确定第一预测块属于循环体结构,且当前不满足循环退出条件,可以直接将分支预测单元中的预测地址修改为指令B3的存储地址,在预测循环退出时,指令B2的预测方向将会被设置为不跳转,从而能够与分支预测单元自然连接起来,在节省功耗的同时保证指令的正常供应。
进一步地,所述方法还包括:在满足循环退出条件的情况下,生成控制信号;所述控制信号用于指示分支预测单元、取指单元和指令缓存进入开启状态,为处理器后端进行指令供应。
在本发明实施例中,还可以在循环缓存中引入循环预测机制,在预测循环即将退出时,循环缓存生成相应的控制信号以便及时启动分支预测单元、取指单元和指令缓存,以保证指令的连续供应在循环退出时不中断。
综上,本发明实施例提供了一种指令缓冲方法,在待处理的第一预测块属于循环体结构的情况下,从循环缓存中获取所述第一预测块对应的目标指令数据并存入指令队列,取指目标队列无需再向去取指单元发送取指请求,也不需要等待取指单元从指令缓存中获取指令数据,能够有效降低处理器在处理循环体结构过程中的功耗,提升了循环指令的处理效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图5,示出了本发明的一种指令缓冲装置实施例的结构框图,应用于处理器,所述处理器包括循环缓存和指令队列;所述装置具体可以包括:
第一模块501,用于在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据;所述第一预测块用于指示取指请求的取指范围和分支指令信息;所述循环缓存中存储有历史取指请求对应的指令数据;
第二模块502,用于将所述目标指令数据存入所述指令队列;所述指令队列用于为处理器后端提供待执行指令。
可选地,所述装置还包括:
检测模块,用于检测所述第一预测块是否满足预设缓冲条件;
确定模块,用于若所述第一预测块满足所述预设缓冲条件,则确定所述第一预测块属于循环体结构;
其中,所述预设缓冲条件包括以下至少一项:
所述第一预测块对应的取指范围与第二预测块对应的取指范围相同;所述第二预测块为所述处理器在所述第一预测块之前执行完毕的预测块;
所述处理器在处理所述第一预测块之前,连续执行了至少两个取指范围相同的预测块对应的指令序列。
可选地,所述装置还包括:
第一获取模块,用于若所述第一预测块满足所述预设缓冲条件,则从所述指令队列中获取与所述第一预测块相匹配的目标指令数据,并将所述目标指令数据存储至所述循环缓存中。
可选地,所述循环缓存包括第一缓存模块和第二缓存模块;所述装置还包括:
第二获取模块,用于针对每一个预测块,从所述指令队列中获取所述预测块对应的指令数据,并将所述指令数据存储至所述第一缓存模块;
所述第二模块,包括:
第一存储子模块,用于在待处理的第一预测块属于循环体结构的情况下,若所述第二缓存模块中不存在与所述第一预测块相匹配的目标指令数据,则从所述第一缓存模块中获取所述第一预测块对应的目标指令数据,并将所述目标指令数据存储至所述第二缓存模块;所述第二缓存模块用于在不满足循环退出条件的情况下,为所述指令队列提供目标指令数据;
第二存储子模块,用于若所述第二缓存模块中存在与所述第一预测块相匹配的目标指令数据,则从所述第二缓存模块中获取所述目标指令数据。
可选地,所述装置还包括:
生成模块,用于在不满足循环退出条件的情况下,基于所述第一预测块生成第三预测块;所述第三预测块用于指示所述目标指令数据。
可选地,若所述第一预测块对应的取指范围小于第一存储容量,则所述第三预测块指示的指令数据包含N份所述目标指令数据;所述第一存储容量与N的乘积小于或等于所述循环缓存的最大存储容量。
可选地,所述处理器还包括分支预测单元;所述装置还包括:
重定向模块,用于对所述分支预测单元进行重定向处理,以使所述分支预测单元的预测地址指向所述第一预测块对应的循环退出位置;
状态调整模块,用于将所述分支预测单元的状态调整为关闭状态,直至满足所述循环体结构的退出条件时将所述分支预测单元的状态恢复为开启状态。
综上,本发明实施例提供了一种指令缓冲装置,在待处理的第一预测块属于循环体结构的情况下,从循环缓存中获取所述第一预测块对应的目标指令数据并存入指令队列,取指目标队列无需再向去取指单元发送取指请求,也不需要等待取指单元从指令缓存中获取指令数据,能够有效降低处理器在处理循环体结构过程中的功耗,提升了循环指令的处理效率。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的指令缓冲装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参照图3,示出了本发明的一种处理器的架构示意图,如图3所示,所述处理器包括取指目标队列、循环缓存和指令队列。
其中,所述取指目标队列,用于在待处理的第一预测块属于循环体结构的情况下,向所述循环缓存发送取指请求,所述取指请求中携带所述第一预测块;所述第一预测块用于指示所述取指请求的范围和分支指令信息;
所述循环缓存,用于根据所述取指请求确定目标指令数据,并将所述目标指令数据存入所述指令队列;所述循环缓存中存储有历史取指请求对应的指令数据;所述指令队列用于为处理器后端提供待执行指令。
可选地,所述取指目标队列还用于:
检测所述第一预测块是否满足预设缓冲条件;
若所述第一预测块满足所述预设缓冲条件,则确定所述第一预测块属于循环体结构;
其中,所述预设缓冲条件包括以下至少一项:
所述第一预测块对应的取指范围与第二预测块对应的取指范围相同;所述第二预测块为所述处理器在所述第一预测块之前执行完毕的预测块;
所述处理器在处理所述第一预测块之前,按照连续执行了至少两个取指范围相同的预测块对应的指令序列。
可选地,所述处理器还包括指令缓存;所述循环缓存还用于:
若所述第一预测块满足所述预设缓冲条件,则从所述指令队列中获取与所述第一预测块相匹配的目标指令数据并存储。
可选地,所述循环缓存包括第一缓存模块和第二缓存模块;
所述第一缓存模块,用于针对每一个预测块,从所述指令队列中获取所述预测块对应的指令数据并存储;
所述第二缓存模块,用于在待处理的第一预测块属于循环体结构的情况下,若所述第二缓存模块中不存在与所述第一预测块相匹配的目标指令数据,则从所述第一缓存模块中获取所述第一预测块对应的目标指令数据并存储,以便在不满足循环退出条件的情况下,为所述指令队列提供目标指令数据;若所述第二缓存模块中存在与所述第一预测块相匹配的目标指令数据,则将所述目标指令数据存入所述指令队列。
可选地,所述处理器还包括旁路模块,所述旁路模块用于:
在不满足循环退出条件的情况下,基于所述第一预测块生成第三预测块;所述第三预测块用于指示所述目标指令数据。
可选地,若所述第一预测块对应的取指范围小于第一存储容量,则所述第三预测块指示的指令数据包含N份所述目标指令数据;所述第一存储容量与N的乘积小于或等于所述循环缓存的最大存储容量。
可选地,所述处理器还包括分支预测单元;所述循环缓存还用于:
对所述分支预测单元进行重定向处理,以使所述分支预测单元的预测地址指向所述第一预测块对应的循环体的退出位置;
将所述分支预测单元的状态调整为关闭状态,直至满足所述循环体结构的退出条件时将所述分支预测单元的状态恢复为开启状态。
可以理解的是,在图3所示的组件或功能的分布并不是可用于处理器的唯一可能架构,处理器还可以包括其它组件、省略所示组件中的一个或多个组件,和/或包含功能在各个组件之间的不同布置。
参照图6,是本发明实施例提供的一种用于指令缓冲的电子设备的结构框图。如图6所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述实施例的指令缓冲方法。
所述处理器可以是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,扩展工业标准结构)总线等。所述通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
所述存储器可以是ROM(Read Only内存,只读内存)或可存储静态信息和指令的其他类型的静态存储设备、RAM(Random Access,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically Erasable Programmable ReadOnly,电可擦可编程只读内存)、CD-ROM(Compact Disa Read Only,只读光盘)、磁带、软盘和光数据存储设备等。
本发明实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备(服务器或者终端)的处理器执行时,使得处理器能够执行图2所示的指令缓冲方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种指令缓冲方法、装置、处理器、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (17)
1.一种指令缓冲方法,其特征在于,应用于处理器,所述处理器包括循环缓存和指令队列;所述方法包括:
在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据;所述第一预测块用于指示取指请求的取指范围和分支指令信息;所述循环缓存中存储有历史取指请求对应的指令数据;
将所述目标指令数据存入所述指令队列;所述指令队列用于为处理器后端提供待执行指令。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测所述第一预测块是否满足预设缓冲条件;
若所述第一预测块满足所述预设缓冲条件,则确定所述第一预测块属于循环体结构;
其中,所述预设缓冲条件包括以下至少一项:
所述第一预测块对应的取指范围与第二预测块对应的取指范围相同;所述第二预测块为所述处理器在所述第一预测块之前执行完毕的预测块;
所述处理器在处理所述第一预测块之前,连续执行了至少两个取指范围相同的预测块对应的指令序列。
3.根据权利要求2所述的方法,其特征在于,在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据之前,所述方法还包括:
若所述第一预测块满足所述预设缓冲条件,则从所述指令队列中获取与所述第一预测块相匹配的目标指令数据,并将所述目标指令数据存储至所述循环缓存中。
4.根据权利要求1所述的方法,其特征在于,所述循环缓存包括第一缓存模块和第二缓存模块;所述在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据之前,所述方法还包括:
针对每一个预测块,从所述指令队列中获取所述预测块对应的指令数据,并将所述指令数据存储至所述第一缓存模块;
所述在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据,包括:
在待处理的第一预测块属于循环体结构的情况下,若所述第二缓存模块中不存在与所述第一预测块相匹配的目标指令数据,则从所述第一缓存模块中获取所述第一预测块对应的目标指令数据,并将所述目标指令数据存储至所述第二缓存模块;所述第二缓存模块用于在不满足循环退出条件的情况下,为所述指令队列提供目标指令数据;
若所述第二缓存模块中存在与所述第一预测块相匹配的目标指令数据,则从所述第二缓存模块中获取所述目标指令数据。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在不满足循环退出条件的情况下,基于所述第一预测块生成第三预测块;所述第三预测块用于指示所述目标指令数据。
6.根据权利要求5所述的方法,其特征在于,若所述第一预测块对应的取指范围小于第一存储容量,则所述第三预测块指示的指令数据包含N份所述目标指令数据;所述第一存储容量与N的乘积小于或等于所述循环缓存的最大存储容量。
7.根据权利要求5所述的方法,其特征在于,所述处理器还包括分支预测单元;所述方法还包括:
对所述分支预测单元进行重定向处理,以使所述分支预测单元的预测地址指向所述第一预测块对应的循环退出位置;
将所述分支预测单元的状态调整为关闭状态,直至满足所述循环体结构的退出条件时将所述分支预测单元的状态恢复为开启状态。
8.一种指令缓冲装置,其特征在于,应用于处理器,所述处理器包括循环缓存和指令队列;所述装置包括:
第一模块,用于在待处理的第一预测块属于循环体结构的情况下,从所述循环缓存中获取所述第一预测块对应的目标指令数据;所述第一预测块用于指示取指请求的取指范围和分支指令信息;所述循环缓存中存储有历史取指请求对应的指令数据;
第二模块,用于将所述目标指令数据存入所述指令队列;所述指令队列用于为处理器后端提供待执行指令。
9.一种处理器,其特征在于,所述处理器包括取指目标队列、循环缓存和指令队列;
所述取指目标队列,用于在待处理的第一预测块属于循环体结构的情况下,向所述循环缓存发送取指请求,所述取指请求中携带所述第一预测块;所述第一预测块用于指示所述取指请求的范围和分支指令信息;
所述循环缓存,用于根据所述取指请求确定目标指令数据,并将所述目标指令数据存入所述指令队列;所述循环缓存中存储有历史取指请求对应的指令数据;所述指令队列用于为处理器后端提供待执行指令。
10.根据权利要求9所述的处理器,其特征在于,所述取指目标队列还用于:
检测所述第一预测块是否满足预设缓冲条件;
若所述第一预测块满足所述预设缓冲条件,则确定所述第一预测块属于循环体结构;
其中,所述预设缓冲条件包括以下至少一项:
所述第一预测块对应的取指范围与第二预测块对应的取指范围相同;所述第二预测块为所述处理器在所述第一预测块之前执行完毕的预测块;
所述处理器在处理所述第一预测块之前,按照连续执行了至少两个取指范围相同的预测块对应的指令序列。
11.根据权利要求10所述的处理器,其特征在于,所述循环缓存还用于:
若所述第一预测块满足所述预设缓冲条件,则从所述指令队列中获取与所述第一预测块相匹配的目标指令数据并存储。
12.根据权利要求9所述的处理器,其特征在于,所述循环缓存包括第一缓存模块和第二缓存模块;
所述第一缓存模块,用于针对每一个预测块,从所述指令队列中获取所述预测块对应的指令数据并存储;
所述第二缓存模块,用于在待处理的第一预测块属于循环体结构的情况下,若所述第二缓存模块中不存在与所述第一预测块相匹配的目标指令数据,则从所述第一缓存模块中获取所述第一预测块对应的目标指令数据并存储,以便在不满足循环退出条件的情况下,为所述指令队列提供目标指令数据;若所述第二缓存模块中存在与所述第一预测块相匹配的目标指令数据,则将所述目标指令数据存入所述指令队列。
13.根据权利要求9所述的处理器,其特征在于,所述处理器还包括旁路模块,所述旁路模块用于:
在不满足循环退出条件的情况下,基于所述第一预测块生成第三预测块;所述第三预测块用于指示所述目标指令数据。
14.根据权利要求13所述的处理器,其特征在于,若所述第一预测块对应的取指范围小于第一存储容量,则所述第三预测块指示的指令数据包含N份所述目标指令数据;所述第一存储容量与N的乘积小于或等于所述循环缓存的最大存储容量。
15.根据权利要求13所述的处理器,其特征在于,所述处理器还包括分支预测单元;所述循环缓存还用于:
对所述分支预测单元进行重定向处理,以使所述分支预测单元的预测地址指向所述第一预测块对应的循环体的退出位置;
将所述分支预测单元的状态调整为关闭状态,直至满足所述循环体结构的退出条件时将所述分支预测单元的状态恢复为开启状态。
16.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至7中任一项所述的指令缓冲方法。
17.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至7中任一项所述的指令缓冲方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310339414.6A CN116048627B (zh) | 2023-03-31 | 2023-03-31 | 指令缓冲方法、装置、处理器、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310339414.6A CN116048627B (zh) | 2023-03-31 | 2023-03-31 | 指令缓冲方法、装置、处理器、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116048627A true CN116048627A (zh) | 2023-05-02 |
CN116048627B CN116048627B (zh) | 2023-06-16 |
Family
ID=86127673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310339414.6A Active CN116048627B (zh) | 2023-03-31 | 2023-03-31 | 指令缓冲方法、装置、处理器、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116048627B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472446A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 基于处理器的多级取指目标缓冲器的分支预测方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040193858A1 (en) * | 2003-03-24 | 2004-09-30 | Infineon Technologies North America Corp. | Zero-overhead loop operation in microprocessor having instruction buffer |
CN102968293A (zh) * | 2012-11-28 | 2013-03-13 | 中国人民解放军国防科学技术大学 | 基于指令队列的程序循环代码动态检测及执行方法 |
CN112230992A (zh) * | 2019-07-15 | 2021-01-15 | 杭州中天微系统有限公司 | 一种包含分支预测循环的指令处理装置、处理器及其处理方法 |
CN113986774A (zh) * | 2021-11-16 | 2022-01-28 | 中国科学院上海高等研究院 | 一种基于指令流和访存模式学习的缓存替换系统及方法 |
CN114579479A (zh) * | 2021-11-16 | 2022-06-03 | 中国科学院上海高等研究院 | 基于指令流混合模式学习的低污染缓存预取系统及方法 |
-
2023
- 2023-03-31 CN CN202310339414.6A patent/CN116048627B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040193858A1 (en) * | 2003-03-24 | 2004-09-30 | Infineon Technologies North America Corp. | Zero-overhead loop operation in microprocessor having instruction buffer |
CN102968293A (zh) * | 2012-11-28 | 2013-03-13 | 中国人民解放军国防科学技术大学 | 基于指令队列的程序循环代码动态检测及执行方法 |
CN112230992A (zh) * | 2019-07-15 | 2021-01-15 | 杭州中天微系统有限公司 | 一种包含分支预测循环的指令处理装置、处理器及其处理方法 |
CN113986774A (zh) * | 2021-11-16 | 2022-01-28 | 中国科学院上海高等研究院 | 一种基于指令流和访存模式学习的缓存替换系统及方法 |
CN114579479A (zh) * | 2021-11-16 | 2022-06-03 | 中国科学院上海高等研究院 | 基于指令流混合模式学习的低污染缓存预取系统及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472446A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 基于处理器的多级取指目标缓冲器的分支预测方法 |
CN117472446B (zh) * | 2023-12-28 | 2024-04-09 | 北京微核芯科技有限公司 | 基于处理器的多级取指目标缓冲器的分支预测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116048627B (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210406027A1 (en) | Advanced processor architecture | |
CN108287730B (zh) | 一种处理器流水线装置 | |
US9965274B2 (en) | Computer processor employing bypass network using result tags for routing result operands | |
US8291202B2 (en) | Apparatus and methods for speculative interrupt vector prefetching | |
EP2864868B1 (en) | Methods and apparatus to extend software branch target hints | |
CN109101276B (zh) | 在cpu中执行指令的方法 | |
CN112230992B (zh) | 一种包含分支预测循环的指令处理装置、处理器及其处理方法 | |
EP2573673B1 (en) | Multithreaded processor and instruction fetch control method of multithreaded processor | |
JP5745638B2 (ja) | 分岐命令の中に符号化されたバイモーダル分岐予測子 | |
WO2012106716A1 (en) | Processor with a hybrid instruction queue with instruction elaboration between sections | |
CN116737240B (zh) | 分支预测方法、装置、处理器、介质及设备 | |
CN116048627B (zh) | 指令缓冲方法、装置、处理器、电子设备及可读存储介质 | |
US9710269B2 (en) | Early conditional selection of an operand | |
CN107870780B (zh) | 数据处理装置和方法 | |
US20230195469A1 (en) | Device, method, and system to facilitate improved bandwidth of a branch prediction unit | |
CN114168202A (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
CN113918225A (zh) | 指令预测方法、指令数据处理装置、处理器以及存储介质 | |
EP2348399B1 (en) | System and method for processing interrupts in a computing system | |
US8266414B2 (en) | Method for executing an instruction loop and a device having instruction loop execution capabilities | |
US20230205535A1 (en) | Optimization of captured loops in a processor for optimizing loop replay performance | |
US9471321B2 (en) | Method and apparatus for controlling fetch-ahead in a VLES processor architecture | |
US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions | |
CN101615114A (zh) | 完成两次乘法两次加法两次位移的微处理器实现方法 | |
CN117170747A (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 |