CN103984525A - 指令处理系统及方法 - Google Patents
指令处理系统及方法 Download PDFInfo
- Publication number
- CN103984525A CN103984525A CN201310050850.8A CN201310050850A CN103984525A CN 103984525 A CN103984525 A CN 103984525A CN 201310050850 A CN201310050850 A CN 201310050850A CN 103984525 A CN103984525 A CN 103984525A
- Authority
- CN
- China
- Prior art keywords
- instruction
- branch
- address
- prediction
- branch instruction
- 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
- 230000007704 transition Effects 0.000 claims description 102
- 230000008569 process Effects 0.000 claims description 57
- 230000000052 comparative effect Effects 0.000 claims description 46
- 238000003672 processing method Methods 0.000 claims description 19
- 230000008878 coupling Effects 0.000 claims description 6
- 238000010168 coupling process Methods 0.000 claims description 6
- 238000005859 coupling reaction Methods 0.000 claims description 6
- 238000003032 molecular docking Methods 0.000 claims description 2
- 230000003139 buffering effect Effects 0.000 description 44
- 238000010586 diagram Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 5
- 230000005055 memory storage Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005381 potential energy 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
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)
Abstract
本发明提供了一种指令处理系统及方法。在本发明提供的指令处理系统及方法中,通过指令控制器根据轨道表中存储的分支指令的预测值推测之后可能执行的指令段,并向处理器输出可能被执行的指令,以提高分支预测的准确性,从而提高指令处理系统执行指令的性能。
Description
技术领域
本发明涉及计算机架构技术领域,特别涉及一种指令处理系统及方法。
背景技术
在现代处理器设计中,处理器的性能提升主要通过提高处理器的主频来实现。然而,随着片上集成的晶体管的数量越来越多,功耗和散热问题变得更加严重。单纯提高主频的方法已经很难适应现在处理器的发展。在这种情况下,需要一种简单而有效的处理器流水线控制方法来提高指令的执行效率。也就是说,用较少的硬件资源实现指令的流水线控制,从而实现较高的指令吞吐率。
流水线技术是指把一条指令的执行分成若干个阶段,每个阶段完成指令的一部分功能。这样在多条指令同时执行的时候,多条指令的不同阶段可以同时执行。相应地,流水线技术使得一条指令需要多个时钟周期才能执行完毕(或产生执行结果)。分支指令的分支转移发生与否,确定了在该分支指令之后执行紧接着该分支指令的下一指令段,还是执行该分支指令的分支目标指令段。即表示分支转移是否发生的判定信息产生前,无法确定之后会执行哪个指令段。
对于上述问题,一种解决方法是在分支指令的执行结果产生之前,暂停流水线,等分支判定信息产生后再进行后续指令的读取与执行。这种方法的缺点是增加了流水线的等待时间,降低了整体性能。
另一种解决方法是不暂停流水线,而是推测性地从下一指令段和目标指令段中选择一个继续执行。当分支判定信息产生时,即可知道之前的推测是否正确。若之前的推测是正确的,则可以按该推测执行的指令段继续执行后续指令;若之前的推测是错误的,则需要清除错误执行指令段的执行结果,并从正确指令段开始重新执行。这种方法虽然能使流水线不间断,但对推测准确性有很高的要求。而采用现有技术,只有花费很大的硬件开销(即,增加很多额外硬件资源),才能达到很高的分支预测准确率。反之,若硬件开销较小,则分支预测准确率很低,一旦推测错误,依然会降低整体性能。
发明内容
本发明的目的在于提供一种指令处理系统及方法,根据轨道表中分支点的预测位推测分支指令之后可能执行的指令段,用很小的硬件开销实现较高的分支预测准确率,以解决硬件开销与分支预测准确性之间的矛盾。
为解决上述技术问题,本发明提供了一种指令处理系统,所述指令处理系统包括:处理器,所述处理器用以进行指令处理;存储系统,所述存储系统用以存储指令;指令控制器,所述指令控制器包括轨道表,所述轨道表存储所述存储系统中存储的分支指令的位置及分支指令发生分支转移的预测;所述指令控制器根据所述分支指令发生分支转移的预测控制所述存储系统输出该分支指令的下一指令和目标指令中的一个。
可选的,在所述的指令处理系统中,所述指令控制器还包括循迹器,所述循迹器前行到第一个分支指令,并根据分支指令发生分支转移的预测,输出该分支指令的下一指令的地址和目标指令的地址中的一个,以控制所述存储系统向处理器输出指令;且所述循迹器保存该分支指令的下一指令的地址和目标指令的地址中的另一个。
可选的,在所述的指令处理系统中,所述循迹器包括单数或者复数个寄存器,其中,每个寄存器用以存储一分支指令的下一指令的地址或者目标指令的地址。
可选的,在所述的指令处理系统中,所述循迹器接收分支指令是否发生分支转移的信息,并将所述分支指令是否发生分支转移的信息与分支指令发生分支转移的预测进行比较,若比较结果一致,则所述循迹器继续前行到第一个分支指令,输出该分支指令的下一指令的地址或者目标指令的地址,以控制所述存储系统向处理器输出指令。
可选的,在所述的指令处理系统中,若比较结果不一致,则清除该分支指令的对应的预测执行的指令开始的全部指令在处理器中执行得到的中间结果及结果。
可选的,在所述的指令处理系统中,所述循迹器按照保存的该分支指令的另一个地址的轨迹前行到第一个分支指令,输出该分支指令的下一指令的地址和目标指令的地址中的一个,以控制所述存储系统向处理器输出指令。
可选的,在所述的指令处理系统中,所述循迹器中的复数个寄存器构成缓冲器,按分支指令的先后次序存储对应分支指令的下一指令的地址或者目标指令的地址;所述循迹器接收分支指令是否发生分支转移的信息,并将所述分支指令是否发生分支转移的信息与分支指令发生分支转移的预测进行比较;若比较结果一致,则舍弃所述缓冲器中的最早存储的地址;所述循迹器继续前行到第一个分支指令,输出该分支指令的下一指令的地址或者目标指令的地址,以控制所述存储系统向处理器输出指令;若比较结果不一致,则所述循迹器按照所述缓冲器中的最早存储的地址的轨迹前行到第一个分支指令,输出该分支指令的下一指令的地址和目标指令的地址中的一个,以控制所述存储系统向处理器输出指令,并舍弃所述比较结果产生前存储在所述缓冲器中的所有地址。
可选的,在所述的指令处理系统中,所述分支指令发生分支转移的预测包括单数位预测值或者复数位预测值。
可选的,在所述的指令处理系统中,所述指令控制器根据分支指令是否发生分支转移的信息,修正轨道表中对应所述分支指令的预测值。
可选的,在所述的指令处理系统中,所述分支指令发生分支转移的预测的初始值设置为固定值或者根据分支指令分支转移跳转方向予以设置。
可选的,在所述的指令处理系统中,所述分支指令发生分支转移的预测包括复数组预测位。
可选的,在所述的指令处理系统中,所述循迹器中还包含一预测模块;所述预测模块对接收分支指令是否发生分支转移的信息与该分支指令对应各组预测位的值分别比较。
可选的,在所述的指令处理系统中,所述预测模块对每组预测位最近n次比较结果分别计数,并以符合程度最高的一组预测位作为下一个分支指令是否发生分支转移的推测,输出该分支指令的下一指令地址和目标指令地址中的一个,以控制所述存储系统向处理器输出指令;其中,n为自然数。
可选的,在所述的指令处理系统中,所述预测模块中每组预测位最近n次比较结果的计数范围可调。
可选的,在所述的指令处理系统中,所述预测模块根据处理器对分支指令的实际执行结果判定预测准确率不高时,选定所述复数组预测位中的一组进行替换,将实际的分支转移判定结果写入对应分支指令的所述组预测位中;
所述判定预测准确率的方法是:作为分支指令是否发生分支转移的推测的预测位的组别频繁发生变化时,判定预测准确率不高;或所述预测模块中连续k次比较结果显示各组预测位的值与分支判定信息均不匹配时,判定预测准确率不高;其中,k为自然数。
可选的,在所述的指令处理系统中,对所述预测模块中连续m次比较结果中不匹配的结果进行计数;并在需要替换预测位时,选择计数结果最大的一组预测位作为被替换组;其中,m为自然数。
可选的,在所述的指令处理系统中,所述预测模块根据处理器对分支指令的实际执行结果判定预测准确率较高时,停止对所述组预测位的替换;
所述判定预测准确率的方法是:作为分支指令是否发生分支转移的推测的预测位的组别不再频繁发生变化时,判定预测准确率较高;或所述预测模块中连续j次比较结果中有至少一组预测位的值与分支判定信息匹配时,判定预测准确率较高;其中,j为自然数。
本发明还提供一种指令处理方法,所述指令处理方法包括:
步骤10、根据分支指令发生分支转移的预测控制存储系统输出该分支指令的下一指令和目标指令中的一个。
可选的,在所述的指令处理方法中,所述步骤10包括:
步骤10A、输出该分支指令的下一指令的地址和目标指令的地址中的一个,以控制所述存储系统向处理器输出指令;
步骤10B、保存该分支指令的下一指令的地址和目标指令的地址中的另一个。
可选的,在所述的指令处理方法中,在所述步骤10之后,还包括:
步骤12、接收分支指令是否发生分支转移的信息,并将所述分支指令是否发生分支转移的信息与分支指令发生分支转移的预测进行比较,若比较结果一致,则前行到第一个分支指令,输出该分支指令的下一指令的地址或者目标指令的地址,以控制所述存储系统向处理器输出指令;若比较结果不一致,则清除该分支指令的对应的预测执行的指令开始的全部指令在处理器中执行得到的中间结果及结果。
可选的,在所述的指令处理方法中,在所述步骤12之后,还包括:
步骤14、按照保存的该分支指令的另一个地址的轨迹前行到第一个分支指令,输出该分支指令的下一指令的地址和目标指令的地址中的一个,以控制所述存储系统向处理器输出指令。
可选的,在所述的指令处理方法中,在所述步骤10之后,还包括:
步骤16、根据分支指令是否发生分支转移的信息,修正轨道表中对应所述分支指令的预测值。
可选的,在所述的指令处理方法中,在所述步骤10之后,还包括:
步骤18、接收分支指令是否发生分支转移的信息,并与该分支指令对应复数组预测位中各组预测位的值分别比较。
可选的,在所述的指令处理方法中,在所述步骤18之后,还包括:
步骤20、对每组预测位最近n次比较结果分别计数,并以符合程度最高的一组预测位作为下一个分支指令是否发生分支转移的推测,输出该分支指令的下一指令地址和目标指令地址中的一个,以控制所述存储系统向处理器输出指令;其中,n为自然数。
可选的,在所述的指令处理方法中,在所述步骤20之后,还包括:
步骤22、根据处理器对分支指令的实际执行结果判定预测准确率不高时,选定所述复数组预测位中的一组进行替换,将实际的分支转移判定结果写入对应分支指令的所述组预测位中;
所述判定预测准确率的方法是:作为分支指令是否发生分支转移的推测的预测位的组别频繁发生变化时,判定预测准确率不高;或所述预测模块中连续k次比较结果显示各组预测位的值与分支判定信息均不匹配时,判定预测准确率不高;其中,k为自然数。
可选的,在所述的指令处理方法中,在所述步骤20之后,还包括:
步骤24、根据处理器对分支指令的实际执行结果判定预测准确率较高时,停止对所述组预测位的替换;
所述判定预测准确率的方法是:作为分支指令是否发生分支转移的推测的预测位的组别不再频繁发生变化时,判定预测准确率较高;或所述预测模块中连续j次比较结果中有至少一组预测位的值与分支判定信息匹配时,判定预测准确率较高;其中,j为自然数。
在本发明提供的指令处理系统及方法中,通过指令控制器根据轨道表中存储的分支指令的预测值推测之后可能执行的指令段,并向处理器输出可能被执行的指令,以提高分支预测的准确性,从而提高指令处理系统执行指令的性能。
附图说明
图1是本发明实施例的指令处理系统的一框结构示意图;
图2是本发明实施例的循迹器的一结构示意图;
图3a~3b是本发明实施例的预测位示意图;
图4a是本发明实施例的先进先出缓冲器的一框结构示意图;
图4b是本发明实施例的指令段预测及实际执行的示意图;
图4c~4h是本发明实施例在不同时刻,缓冲的读指针、写指针、保留指针的指向位置,及单元内值的变化情况;
图5a是本发明实施例的具有复数组预测位的循迹器的一框结构示意图;
图5b是本发明实施例的含有复数组预测位轨迹点内容的示意图;
图5c是本发明实施例的预测模块的一框结构示意图。
具体实施方式
以下结合附图和具体实施例对本发明提出的指令处理系统及方法作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
请参考图1,其为本发明实施例的指令处理系统的一框结构示意图。如图1所示,所述指令处理系统1包括:
处理器10,所述处理器10能够执行指令;
一级缓存110(即存储系统的一种实现方式),所述一级缓存110用以存储指令;
指令控制器12,所述指令控制器12包括轨道表2,所述轨道表2存储所述一级缓存110中存储的分支指令的位置;所述指令控制器12根据所述分支指令的位置控制所述一级缓存110向处理器10输出将被执行的指令。
在本实施例中,指令控制器12可以在处理器10产生某一分支指令的执行结果之前,根据指令控制器12中存有的预测信息将该分支指令的下一指令段或目标指令段中的指令提供给处理器10执行。即通过指令控制器12根据轨道表中存储的分支指令的分支判断预测位(即分支指令发生分支转移的预测)的值控制一级缓存110向处理器10输出可能被执行的指令,使得所述处理器10能够不间断地获得指令进行处理,从而免除等待分支判断所造成的流水线停顿,可以充分利用处理器10的指令执行能力,提高指令处理系统1执行指令的性能。指令控制器12根据接收到的分支指令执行结果126验证分支判断预测是否正确,如正确则继续执行,如不正确则退回到该分支指令的另一指令段执行。
接下去,进一步阐述所述指令处理系统1的结构,具体的,所述指令控制器12还包括主动表145,所述主动表145的表项与一级缓存110中的存储块一一对应,每个表项对应一个BNX,指明了该主动表行对应的一级缓存存储块存储在一级缓存110中的位置,并形成了BNX与一级缓存存储块的对应关系。主动表145中的每个表项存储了一个一级缓存存储块的块地址。。
在本发明中,分支指令指的是任何适当的能导致处理器10改变执行流(如:非按顺序执行一条指令)的指令形式。分支源指一条进行分支操作的指令(即:分支指令),分支源地址可以是分支指令本身的指令地址;分支目标指的是分支指令造成的分支转移所转向的目标指令,分支目标地址可以指当分支指令的分支转移成功发生时转移进入的地址,也就是分支目标指令的指令地址;当前指令可以指当前正在被处理器核执行或获取的指令;当前指令块可以指含有当前正被处理器执行的指令的指令块。
在本发明中,轨道表2中的行与一级缓存110(即,存储系统中最接近处理器10的一个存储器,在此也即存储系统)中的存储块一一对应。在此,“最接近处理器的存储器”指的是在存储层次中离处理器最近、通常也是速度最快的存储器,如一级缓存,或第一级存储器。
轨道表2含有复数个轨迹点。一个轨迹点是轨道表中的一个表项,可含有至少一条指令的信息,比如指令类型信息、分支目标地址等。轨迹点的循迹地址就是该轨迹点本身的轨道表地址,且所述循迹地址由一个行号和一个列号构成。轨迹点的循迹地址与该轨迹点所代表指令的指令地址相对应;而分支指令轨迹点(即:分支点)中含有该分支指令的分支目标指令在轨道表中的循迹地址,且该循迹地址与该分支目标指令的指令地址相对应。
为便于表示,可以用BN表示循迹地址,用BNX表示循迹地址中的行号,并用BNY表示循迹地址中的列号。这样,BNX就对应指令所在存储块的位置(存储块的行号),而BNY就对应指令在其所在存储块中的位置(偏移量)。相应地,每个BN(包含BNX及BNY)也对应轨道表2中的一个轨迹点,即可以根据一个BN从轨道表2中找到对应的轨迹点。
当一个轨迹点对应的指令是分支指令(即该轨迹点中的指令类型信息表示对应的指令为分支指令)时,该轨迹点中还存储了以循迹地址形式表示的该分支指令的分支目标指令在存储器(即,一级缓存110)中的位置信息。根据该循迹地址,也可以在轨道表2中找到该分支目标指令对应的轨迹点的位置。即对于轨道表2的分支点而言,其轨道表地址就是其分支源地址对应的循迹地址,其轨道表内容中包含了其分支目标地址对应的循迹地址。
扫描器121对从外部存储器送往一级缓存110的指令进行审查,一旦发现某条指令是分支指令,即计算该分支指令的分支目标地址。例如,将分支指令所在指令块的块地址、该分支指令在指令块中的偏移量和分支转移距离三者相加得到分支目标地址。
可以将扫描器121计算得到的分支目标指令地址与主动表145中存储的存储块行地址匹配。若匹配成功,且存在对应的BNX,则表示该分支目标指令已经存储在一级缓存110中,则主动表145输出该BNX送往轨道表2。若匹配不成功,则表示该分支目标指令尚未存储在一级缓存110中,此时,将该分支目标指令地址送往外部存储器,同时在主动表145中分配一个表项存储对应块地址,输出该BNX送往轨道表2,并将外部存储器送来的对应指令块填充到一级缓存110中与该BNX对应存储块中。
当一个指令块从外部存储器填充到一级缓存110的一个存储块中的同时,在轨道表2中相应行中建立对应的轨道。对于该指令块中的分支指令,其分支目标指令地址经主动表145匹配输出一个BNX,而该分支目标指令在其指令块中的位置(即该分支目标指令地址的偏移量部分)就是对应的BNY。这样,就得到了对应该分支目标指令的循迹地址,并将该循迹地址作为轨迹点内容存储到所述分支指令对应的轨迹点中。如此可以建立对应整个指令块的一条轨道。
进一步的,所述指令控制器12还包括循迹器120,所述循迹器120的读指针131根据轨道表2中存储的分支指令的位置,从处理器10正在执行的指令之后的第一个分支指令开始,提前移动并指向若干层分支之后的分支指令;所述指令控制器12根据所述循迹器120读指针131移动过程中经过的分支指令,选择相应的指令段中的指令,并控制所述一级缓存110向处理器10输出选中的指令。
在本实施例中,循迹器120的读指针131在移动过程中可以指向轨道表中不同的行。指令控制器12可以根据循迹器120的读指针131指向的轨道表行找到一级缓存110中对应的指令段,也可以根据循迹器120的读指针131指向的轨道表项中包含的目标指令循迹地址找到一级缓存110中对应的指令段。
在本实施例中,循迹器120可以根据预测位的值选取分支指令的下一指令段或目标指令中的指令进行推测执行。请参考图2,其为本发明实施例的循迹器的一结构示意图。具体的,所述循迹器120包括两个寄存器,分别用以存储下一指令段和目标指令段中的分支指令循迹地址。以循迹器120的读指针131提前移动并指向一层分支之后的分支指令并根据预测位选取指令为例。对于指向更多层分支之后的分支指令的情况,也可以以此类推。
在本实施例中,当从轨道表2中读出的指令类型进行译码得到分支指令类型时,循迹器120读指针131指向的是一个分支指令,即读指针131的值为分支源指令地址。此时,选择器136选择轨道表2输出的目标指令段地址值存储到寄存器124中,同时对读指针131上的分支源指令循迹地址值经增量器140增一后得到下一指令段循迹地址值,并存储到寄存器123中。在本实施例中,还可以从轨道表中读出该分支指令分支转移是否发生的预测信息125,并根据预测信息125从寄存器123中存储的下一指令段循迹地址值与寄存器124中存储的目标指令段循迹地址值中选出一个作为新的循迹器读指针值,使得读指针131不断前行,控制一级缓存110输出指令供处理器10执行,直到读指针131指向分支指令为止。
若预测信息125表示该分支指令的分支转移被预测为很可能不发生,则当所述分支指令尚未执行完毕时,信号138控制选择器137选择预测信息125以控制选择器139选择寄存器123中存储的循迹地址值作为读指针131的值。这样,读指针131向一级缓存110输出就是寄存器123中当时保存的循迹地址值,一级缓存110根据该循迹地址向处理器10输出相应指令(即下一指令段中的指令)供处理器10执行,同时该循迹地址值经增量器140增一后得到该指令段中的下一个循迹地址,并将该下一个循迹地址存储到寄存器123中(此时寄存器124的值保持不变)。如此反复,使得读指针131不断前行,控制一级缓存110输出指令供处理器10执行,直到读指针131指向一条分支指令为止。
又如,若预测信息125表示该分支指令的分支转移被预测为很可能发生,则当所述分支指令尚未执行完毕时,信号138控制选择器137选择预测信息125以控制选择器139选择寄存器124中存储的循迹地址值作为读指针131的值。这样,读指针131向一级缓存110输出的就是寄存器124中当时保存的循迹地址值,一级缓存110根据该循迹地址向处理器10输出相应指令(即目标指令段中的指令)供处理器10执行,同时该循迹地址值经增量器140增一后得到该指令段中的下一个循迹地址,并将该下一个循迹地址存储到寄存器124中(此时选择器136选择增量器140的输出更新寄存器124,在此同时,寄存器123的值保持不变)。如此反复,使得读指针131不断前行,控制一级缓存110输出指令供处理器10执行,直到读指针131指向一条分支指令为止。
当推测执行的分支指令执行完毕时,信号138控制选择器137选择来源于处理器10的表示分支转移是否发生的判定信息126以控制选择器139。具体地,若分支转移没有发生,则选择寄存器123中当时存储的循迹地址值作为新的读指针131的值;若分支转移发生,则选择寄存器124中当时存储的循迹地址值作为新的读指针131的值。如此即可沿正确轨迹继续移动,并对下一个分支指令进行类似的推测执行,同时指令控制器12向处理器10发送信息,清除处理器10中已开始执行的错误指令段的执行结果或中间结果。具体的,是清除该分支指令后在流水线上的所有指令。
这样,若分支预测没有错误,则本发明提出的技术方案能消除因等待分支判断而造成的时钟周期损失。一旦分支预测错误,则本发明提出的技术方案也不会比不进行推测执行时的情况更差。
在本发明中,所述预测位为单数位或者复数位,所述预测位的初始值设置为固定值或者根据分支指令转移跳转方向予以设置。具体的,请参考图3a及3b,其中,图3a示出了预测位为一位(单数位)的情况,图3b示出了预测位两位(复数位中的一种)的情况,此外,预测位还可以是三位、四位,甚至更多位。此外,关于预测位的初始值,可以设置为固定值,也可以根据分支指令转移跳转方向予以设置。以预测位为一位为例,可以有三种预测位初始值设置方法:将初始值设定为‘0’以表示默认不发生分支转移;或将初始值设定为‘1’以表示默认发生分支转移;或根据分支指令的分支转移方向设置预测位初始值,例如将向前转移的分支指令的预测位初始值设定为‘0’以表示默认不发生分支转移,并将向后转移的分支指令的预测位初始值设定为‘1’以表示默认发生分支转移。当然,在本发明的其他实施例中,也可以做相反的设定。
进一步的,在本实施例中,还可根据处理器10执行分支指令得到的分支转移是否发生的结果,修正轨道表2中对应所述分支指令的预测值。
例如,在图3a实施例中,某个分支指令的预测位初始值被设置为‘0’,即表示预测分支转移不发生。若执行到该分支指令时分支转移不发生,则保持该预测位为‘0’;若执行到该分支指令时分支转移发生,则更新该预测位为‘1’;之后,若执行到该分支指令时分支转移发生,则保持该预测位为‘1’,若执行到该分支指令时分支转移不发生,则更新该预测位为‘0’。
又如,在图3b实施例中,某个分支指令采用了两位的预测位,其初始值被设置为‘00’,根据分支指令的分支转移是否发生的信息可以对该分支指令的预测位进行修正。在本实施例中,预测位为‘00’表示分支转移很可能不发生,‘01’表示分支转移较可能不发生,‘10’表示分支转移较可能发生,‘11’表示分支转移很可能发生。这样,当该分支指令的分支转移不发生时,相应预测位向更可能不发生的状态修正;当该分支指令的分支转移发生时,相应预测位向更可能发生的状态修正。
在本实施例中,作为一种具体实现方法,读指针131指向下一指令段及目标指令段中下一个分支指令即停止移动。这是因为下一个分支指令会用其下一指令段及分支指令段的循迹地址更新寄存器123及124。如此,当推测错误时,读指针131要退回第一个分支指令的另一支指令段时,其地址已被下一指令段的相应循迹地址替换,已经不存在了。用一个缓冲器代替寄存器123及寄存器124就可以解决这个问题。
请参考图4a,其为本发明实施例的缓冲器的一框结构示意图。所述缓冲器由两个缓冲构成,其中缓冲223代替图2实施例中的寄存器123,缓冲224代替图2实施例中的寄存器124。这两个缓冲均有复数个单元,有一个写口及一个读口且这两个缓冲的写口由同一个写指针201控制,读口也由同一个读指针202控制。
所述缓冲器的输入接至写口,当分支点的下一指令段循迹地址及目标指令段循迹地址被分别写进缓冲器的两个缓冲时,所述循迹地址被分别写进写指针指向缓冲223及缓冲224的单元,写完后写指针增一,指向下一个单元。读指针永远指向最新写进所述缓冲器的循迹地址所在单元(即,读指针的值等于写指针的值减一,或写指针的值等于读指针的值加一)。所述缓冲器中的两个缓冲的读口分别输出读指针指向的单元中循迹地址送往图2实施例中的选择器139以供后续操作。
此外,所述缓冲器还有一个保留指针203,指向最老存储在所述缓冲器中的循迹地址所在单元。当处理器产生的分支转移判定信息值与预测值相同时,所述保留指针的值增一,指向所述缓冲器的下一个单元(该单元的内容就是目前最老的循迹地址);否则保持所述保留指针的值不变。对于读指针,当因处理器尚未产生分支转移判定信息而进行推测执行时,保持读指针的值不变;当处理器产生的分支转移判定信息值与预测值不同时,强制读指针指向保留指针指向的单元。对于写指针,当处理器产生的分支转移判定信息值与预测值不同时,强制写指针指向保留指针指向的单元的下一个单元;否则,每当有新的循迹地址写入写指针指向的单元后,写指针移向下一个单元。
下面结合图4b~4h,对本发明实施例的缓冲器的工作原理进行说明。请参考图4b,其为本发明实施例的指令段预测及实际执行的示意图。在本实施例中,大写字母(如‘A’、‘B’等)表示指令段,小写字母(如‘a’、‘b’等)表示指令段中的分支点(即,指令段的最后一条指令)。例如,分支点‘a’属于指令段‘A’,分支点‘b’属于指令段‘B’,以此类推。此外,在本实施例中,每个分支点的左子树表示该分支点的下一指令段,右子树表示该分支点的目标指令段。例如,指令段‘B’是分支点‘a’的下一指令段,指令段‘C’是分支点‘a’的目标指令段,以此类推。
假设本实施例中分支指令‘a’的预测位值为‘0’、‘b’的预测位值为‘1’、‘d’的预测位值为‘1’、‘e’的预测位值为‘0’。图4c~4h分别对应了在不同时刻,缓冲223和缓冲224的读指针、写指针、保留指针的指向位置,及单元内值的变化情况。为便于说明,缓冲223和缓冲224的单元中只显示了必要的值。此外,在本实施例中,将“指令段的第一条指令的循迹地址”简称为“指令段的循迹地址”。
当循迹器读指针指向分支点‘a’时,其下一指令段循迹地址及目标指令段循迹地址分别被写入缓冲223和缓冲224中写指针指向的第0号单元。此时读指针指向第0号单元,缓冲223和缓冲224的读口分别输出下一指令段‘B’和目标指令段‘C’的循迹地址送往选择器139。由于分支点‘a’的预测位值为‘0’,因此按图2实施例所述,选择器139选择来源于缓冲223的循迹地址,对该循迹地址不断增一并更新缓冲223中存储的对应单元(即第0号单元),沿指令段‘B’向处理器提供指令,直至到达下一分支点‘b’为止。如图4c所示,此时读指针和保留指针都指向第0号单元,写指针指向第1号单元。图4c中缓冲223第0号单元位置上的‘b’表示该单元中存储了分支点‘b’的循迹地址,而缓冲224第0号单元位置上的‘C’表示该单元中存储了指令段‘C’的循迹地址。
当循迹器读指针指向分支点‘b’时,其下一指令段循迹地址及目标指令段循迹地址分别被写入缓冲223和缓冲224中写指针指向的第1号单元。此时读指针指向第1号单元,缓冲223和缓冲224的读口分别输出下一指令段‘D’和目标指令段‘E’的循迹地址送往选择器139。由于分支点‘b’的预测位值为‘1’,因此按图2实施例所述,选择器139选择来源于缓冲224的循迹地址,对该循迹地址不断增一并更新缓冲224中存储的对应单元(即第1号单元),沿指令段‘E’向处理器提供指令,直至到达下一分支点‘e’为止。如图4d所示,此时读指针指向第1号单元,保留指针指向第0号单元,写指针指向第2号单元。图4d中缓冲223第1号单元位置上的‘D’表示该单元中存储了指令段‘D’的循迹地址,而缓冲224第1号单元位置上的‘e’表示该单元中存储了分支点‘e’的循迹地址。
当循迹器读指针指向分支点‘e’时,其下一指令段循迹地址及目标指令段循迹地址分别被写入缓冲223和缓冲224的第2号单元。此时读指针指向第2号单元,缓冲223和缓冲224的读口分别输出下一指令段‘J’和目标指令段‘K’的循迹地址送往选择器139。由于分支点‘e’的预测位值为‘0’,因此按图2实施例所述,选择器139选择来源于缓冲223的循迹地址,对该循迹地址不断增一并更新缓冲223中存储的对应单元(即第2号单元),沿指令段‘J’向处理器提供指令,直至到达下一分支点‘j’为止。如图4e所示,此时读指针指向第2号单元,保留指针指向第0号单元,写指针指向第3号单元。图4e中缓冲223第2号单元位置上的‘j’表示该单元中存储了分支点‘j’的循迹地址,而缓冲224第2号单元位置上的‘K’表示该单元中存储了指令段‘K’的循迹地址。
以此时处理器产生了对分支点‘a’的执行结果且分支转移未发生为例,即分支判定结果与预测值相同,则保留指针的值增一,指向第1号单元,而读指针和写指针的值保持不变,如图4f所示。
再以此时处理器产生了对分支点‘b’的执行结果且分支转移未发生为例,即分支判定结果与预测值不同,处理器中从分支点‘b’之后执行指令的结果及中间结果均被清除。此时,保留指针的值保持不变,但强制将读指针指向保留指针指向的单元,并强制将写指针指向保留指针指向的单元的下一个单元,如图4g所示。此时,读指针和保留指针都指向第1号单元,写指针指向第2号单元。由此,缓冲223和缓冲224分别输出第1号单元存储的循迹地址送到选择器139。选择器139则因分支判定结果表示分支转移未发生而选择缓冲223中由读指针指向的单元中的循迹地址(即选择指令段‘D’的循迹地址),对该循迹地址不断增一并更新缓冲223中存储的对应单元(即第1号单元),沿指令段‘D’向处理器提供指令,直至到达下一分支点‘d’为止。
当循迹器读指针指向分支点‘d’时,其下一指令段循迹地址及目标指令段循迹地址分别被写入缓冲223和缓冲224中写指针指向的第2号单元。此时读指针指向第2号单元,缓冲223和缓冲224的读口分别输出下一指令段‘H’和目标指令段‘I’的循迹地址送往选择器139。由于分支点‘d’的预测位值为‘1’,因此按图2实施例所述,选择器139选择来源于缓冲224的循迹地址,对该循迹地址不断增一并更新缓冲224中存储的对应单元(即第2号单元),沿指令段‘I’向处理器提供指令,直至到达下一分支点‘i’为止。如图4h所示,此时读指针指向第2号单元,保留指针指向第1号单元,写指针指向第3号单元。图4h中缓冲223第2号单元位置上的‘H’表示该单元中存储了指令段‘H’的循迹地址,而缓冲224第2号单元位置上的‘i’表示该单元中存储了分支点‘i’的循迹地址。
之后的运行过程与上述情况类似,在此不再赘述。需要说明的是,如果两个分支点是相邻时(如:某个指令段只包含一条指令),那么所述该指令段的循迹地址就是该指令段中的分支点的循迹地址。在这种情况下,依然可以按本实施例所述运行。在本发明中,轨道表2中的轨迹点还可以含有复数组预测位,并根据处理器10实际产生的分支判定信息126找到一组预测准确率最高的预测位,并按连续不同分支指令中该组预测位构成的预测轨迹进行推测执行,以进一步提高分支预测的准确性。请参考图5a,其为本发明实施例的具有复数组预测位的循迹器的一框结构示意图。在本实施例中,以预测位有4组的情况进行说明。具有其他组数的预测位的情况与之类似。请参考图5b,其为本发明实施例的含有复数组预测位轨迹点内容的示意图。此时,分支轨迹点的内容除了包括指令类型304、循迹地址中的BNX部分305和BNY部分306以外,还包含了4组预测位,分别为PREDA、PREDB、PREDC和PREDD。
在本实施例中,循迹器300与图2实施例中的循迹器120基本相同,差别在于从轨道表2输出的分支点预测位值125有4组,且没有直接被用于选择推测执行的指令段,而是被送到预测模块301。预测模块301根据输入的分支点的预测值,产生推测信号303并如图2实施例所述进行后续的推测执行。此外,预测模块301还输出更新选择信号302送往轨道表2,以决定在根据处理器对该分支指令的实际执行结果替换该分支点预测位的值时,替换哪一组预测位的值。
请参考图5c,其为本发明实施例的预测模块的一框结构示意图。预测模块301包含缓冲单元310、比较单元311、计数单元312、判别单元313、累加单元314、替换逻辑315和选择器316。
在本实施例中,由于在分支指令的分支转移先于判定结果产生前就已经根据预测值进行推测执行,因此需要使用一个具有先入先出功能的缓冲单元310暂存已经推测执行但尚未产生分支转移判定结果的分支指令对应的预测值。所述缓冲单元310由4组先入先出寄存器,每组对应一组预测位的值。这样就形成了分支判别信号126与缓冲单元310输出的4个预测值之间的同步,即每次产生分支判别信号126时,缓冲单元310输出的预测值与所述分支判别信号126属于同一个分支点。
比较单元311由4组比较器构成,分别对缓冲单元310输出的4个预测值与处理器10送来的分支判别信号126进行比较,并将对应的4个比较结果送往计数单元312。为便于说明,将比较结果为成功匹配时的输出成为‘1’,并将不匹配的结果成为‘0’。
计数单元312有4组计数逻辑构成,每组计数逻辑接收比较单元311的一个比较结果,并输出对最近若干次比较结果中‘1’的个数的计数结果。例如,可以用移位寄存器及加法器实现所述计数逻辑。以对最近7次比较结果中‘1’的个数的计数为例,所述计数逻辑可以包含一个7位的移位寄存器及一个加法器。所述移位寄存器的输入为比较单元311中对应的比较器输出的比较结果,所述移位寄存器的输出则被送往累加单元314,且每当比较单元311有新的比较结果输出时(即处理器10产生新的分支判定信号126时),所述移位寄存器进行一次移位。这样,存储在所述移位寄存器中的内容就是最近7次比较结果。通过所述加法器对移位寄存器中的每一位进行求和,即可得到存储在所述移位寄存器中的最近7次比较结果中‘1’的个数。所述加法器相加得到的计数结果被送往判别单元313。
当然,也可以用其他合适的装置实现上述加法功能,如带权重的加法器,即可以对移位寄存器中对应不同时间点的数据位给予不同的权重,所述权重可以是0、1或其他任何合适的值。当某一位的权重为0时,即该位不参与求和,从而实现了可调范围的求和。例如,可以给予最新的预测位对应的移位寄存器数据位最大的权重,对较老的预测位对应的移位寄存器数据位给予较小的权重。此时,计数单元312输出的就是带权重的计数结果。
在本实施例中,所述最近若干次比较结果中‘1’的个数最多的一组就是在所述最近若干次分支预测中最准确的一组预测位,因此采用该组预测位的值作为之后的分支点推测执行的依据,其准确性最高。因此判别单元313从计数单元312送来的4个计数结果中选取计数值最大的一个作为选择信号317控制选择器316选择当前分支点对应的4组预测值中的一个作为推测信号303送往循迹器300中的选择器137作为分支转移的推测值以控制选择器139选择产生新的读指针131。
此外,累加单元314由4个特殊累加器构成,每个特殊累加器接收从对应的比较器311送来的比较结果,且当该比较结果为‘1’时,所述特殊累加器值保持不变,当该比较结果为‘0’时,所述特殊累加器值增一。这样,累加单元314中的每个特殊累加器就记录了对应预测位预测错误的次数。累加单元314中的4个累加值被输出到替换逻辑315。
在本发明中,当选择信号317的值频繁发生变化时,或比较单元311输出的连续若干次4个比较结果都为‘0’(即4组预测值与分支判定信息均不匹配)时,说明现有的4组预测位都不能很准确地推测分支转移发生与否的实际情况,则需要对这4组预测值中的一组进行替换,即用分支转移的实际判定结果替换相应分支指令的该组预测位的旧值。此时,可从替换逻辑315接收到的4个当前累加值中选择最大的一个相应的一组预测位作为将被替换的预测位,并将对应的更新选择信号302送往轨道表2,以处理器对该分支指令的实际执行结果更新该分支点相应的一组预测位的值。在此替换过程中,累加单元314不对比较器311送来的对应所述组预测位的比较结果进行累加。
与此同时,预测模块301继续预测,一旦找到某组预测位能准确地推测分支转移发生与否的实际情况时,停止上述替换过程,并按所述组预测位为依据进行之后的推测执行。例如,作为分支指令是否发生分支转移的推测的预测位的组别不再频繁发生变化时,即可选择其中一组作为预测准确率较高的一组预测位。或所述预测模块中连续若干次比较结果中有至少一组预测位的值与分支判定信息匹配时,即可选择该组作为预测准确率较高的一组预测位,并停止替换。
这样,根据轨道表2中记录的4组预测位的值结合本实施例的预测模块300,就可以很好地推测之后可能会被执行的指令,并能根据处理器10实际产生的分支判定信息126找到一组预测准确率最高的预测位,并按连续不同分支指令中该组预测位构成的预测轨迹进行推测执行,并按需对预测位进行更新,以达到很高的分支预测准确率。
综上,在本实施例提供的指令处理系统中,通过指令控制器根据轨道表中存储的分支指令分支转移预测位控制存储系统向处理器输出可能被执行的指令,用很小的硬件开销实现了很高的分支预测准确率,提高了指令处理系统的性能。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
Claims (26)
1.一种指令处理系统,其特征在于,包括:
处理器,所述处理器用以进行指令处理;
存储系统,所述存储系统用以存储指令;
指令控制器,所述指令控制器包括轨道表,所述轨道表存储所述存储系统中存储的分支指令的位置及分支指令发生分支转移的预测;所述指令控制器根据所述分支指令发生分支转移的预测控制所述存储系统输出该分支指令的下一指令和目标指令中的一个。
2.如权利要求1所述的指令处理系统,其特征在于,所述指令控制器还包括循迹器,所述循迹器前行到第一个分支指令,并根据分支指令发生分支转移的预测,输出该分支指令的下一指令的地址和目标指令的地址中的一个,以控制所述存储系统向处理器输出指令;且
所述循迹器保存该分支指令的下一指令的地址和目标指令的地址中的另一个。
3.如权利要求2所述的指令处理系统,其特征在于,所述循迹器包括单数或者复数个寄存器,其中,每个寄存器用以存储一分支指令的下一指令的地址或者目标指令的地址。
4.如权利要求2所述的指令处理系统,其特征在于,所述循迹器接收分支指令是否发生分支转移的信息,并将所述分支指令是否发生分支转移的信息与分支指令发生分支转移的预测进行比较,若比较结果一致,则所述循迹器继续前行到第一个分支指令,输出该分支指令的下一指令的地址或者目标指令的地址,以控制所述存储系统向处理器输出指令。
5.如权利要求4所述的指令处理系统,其特征在于,若比较结果不一致,则清除该分支指令的对应的预测执行的指令开始的全部指令在处理器中执行得到的中间结果及结果。
6.如权利要求5所述的指令处理系统,其特征在于,所述循迹器按照保存的该分支指令的另一个地址的轨迹前行到第一个分支指令,输出该分支指令的下一指令的地址和目标指令的地址中的一个,以控制所述存储系统向处理器输出指令。
7.如权利要求3所述的指令处理系统,其特征在于,所述循迹器中的复数个寄存器构成缓冲器,按分支指令的先后次序存储对应分支指令的下一指令的地址或者目标指令的地址;
所述循迹器接收分支指令是否发生分支转移的信息,并将所述分支指令是否发生分支转移的信息与分支指令发生分支转移的预测进行比较;和
若比较结果一致,则舍弃所述缓冲器中的最早存储的地址;所述循迹器继续前行到第一个分支指令,输出该分支指令的下一指令的地址或者目标指令的地址,以控制所述存储系统向处理器输出指令;
若比较结果不一致,则所述循迹器按照所述缓冲器中的最早存储的地址的轨迹前行到第一个分支指令,输出该分支指令的下一指令的地址和目标指令的地址中的一个,以控制所述存储系统向处理器输出指令,并舍弃所述比较结果产生前存储在所述缓冲器中的所有地址。
8.如权利要求1所述的指令处理系统,其特征在于,所述分支指令发生分支转移的预测包括单数位预测值或者复数位预测值。
9.如权利要求8所述的指令处理系统,其特征在于,所述指令控制器根据分支指令是否发生分支转移的信息,修正轨道表中对应所述分支指令的预测值。
10.如权利要求8所述的指令处理系统,其特征在于,所述分支指令发生分支转移的预测的初始值设置为固定值或者根据分支指令分支转移跳转方向予以设置。
11.如权利要求2所述的指令处理系统,其特征在于,所述分支指令发生分支转移的预测包括复数组预测位。
12.如权利要求11所述的指令处理系统,其特征在于,所述循迹器中还包含一预测模块;所述预测模块对接收分支指令是否发生分支转移的信息与该分支指令对应各组预测位的值分别比较。
13.如权利要求12所述的指令处理系统,其特征在于,所述预测模块对每组预测位最近n次比较结果分别计数,并以符合程度最高的一组预测位作为下一个分支指令是否发生分支转移的推测,输出该分支指令的下一指令地址和目标指令地址中的一个,以控制所述存储系统向处理器输出指令;其中,n为自然数。
14.如权利要求13所述的指令处理系统,其特征在于,所述预测模块中每组预测位最近n次比较结果的计数范围可调。
15.如权利要求13所述的指令处理系统,其特征在于,所述预测模块根据处理器对分支指令的实际执行结果判定预测准确率不高时,选定所述复数组预测位中的一组进行替换,将实际的分支转移判定结果写入对应分支指令的所述组预测位中;
所述判定预测准确率的方法是:作为分支指令是否发生分支转移的推测的预测位的组别频繁发生变化时,判定预测准确率不高;或所述预测模块中连续k次比较结果显示各组预测位的值与分支判定信息均不匹配时,判定预测准确率不高;其中,k为自然数。
16.如权利要求15所述的指令处理系统,其特征在于,对所述预测模块中连续m次比较结果中不匹配的结果进行计数;并在需要替换预测位时,选择计数结果最大的一组预测位作为被替换组;其中,m为自然数。
17.如权利要求13所述的指令处理系统,其特征在于,所述预测模块根据处理器对分支指令的实际执行结果判定预测准确率较高时,停止对所述组预测位的替换;
所述判定预测准确率的方法是:作为分支指令是否发生分支转移的推测的预测位的组别不再频繁发生变化时,判定预测准确率较高;或所述预测模块中连续j次比较结果中有至少一组预测位的值与分支判定信息匹配时,判定预测准确率较高;其中,j为自然数。
18.一种指令处理方法,其特征在于,包括:
步骤10、根据分支指令发生分支转移的预测控制存储系统输出该分支指令的下一指令和目标指令中的一个。
19.如权利要求18所述的指令处理方法,其特征在于,所述步骤10包括:
步骤10A、输出该分支指令的下一指令的地址和目标指令的地址中的一个,以控制所述存储系统向处理器输出指令;
步骤10B、保存该分支指令的下一指令的地址和目标指令的地址中的另一个。
20.如权利要求19所述的指令处理方法,其特征在于,在所述步骤10之后,还包括:
步骤12、接收分支指令是否发生分支转移的信息,并将所述分支指令是否发生分支转移的信息与分支指令发生分支转移的预测进行比较,若比较结果一致,则前行到第一个分支指令,输出该分支指令的下一指令的地址或者目标指令的地址,以控制所述存储系统向处理器输出指令;若比较结果不一致,则清除该分支指令的对应的预测执行的指令开始的全部指令在处理器中执行得到的中间结果及结果。
21.如权利要求20所述的指令处理方法,其特征在于,在所述步骤12之后,还包括:
步骤14、按照保存的该分支指令的另一个地址的轨迹前行到第一个分支指令,输出该分支指令的下一指令的地址和目标指令的地址中的一个,以控制所述存储系统向处理器输出指令。
22.如权利要求18所述的指令处理方法,其特征在于,在所述步骤10之后,还包括:
步骤16、根据分支指令是否发生分支转移的信息,修正轨道表中对应所述分支指令的预测值。
23.如权利要求18所述的指令处理方法,其特征在于,在所述步骤10之后,还包括:
步骤18、接收分支指令是否发生分支转移的信息,并与该分支指令对应复数组预测位中各组预测位的值分别比较。
24.如权利要求23所述的指令处理方法,其特征在于,在所述步骤18之后,还包括:
步骤20、对每组预测位最近n次比较结果分别计数,并以符合程度最高的一组预测位作为下一个分支指令是否发生分支转移的推测,输出该分支指令的下一指令地址和目标指令地址中的一个,以控制所述存储系统向处理器输出指令;其中,n为自然数。
25.如权利要求24所述的指令处理方法,其特征在于,在所述步骤20之后,还包括:
步骤22、根据处理器对分支指令的实际执行结果判定预测准确率不高时,选定所述复数组预测位中的一组进行替换,将实际的分支转移判定结果写入对应分支指令的所述组预测位中;
所述判定预测准确率的方法是:作为分支指令是否发生分支转移的推测的预测位的组别频繁发生变化时,判定预测准确率不高;或所述预测模块中连续k次比较结果显示各组预测位的值与分支判定信息均不匹配时,判定预测准确率不高;其中,k为自然数。
26.如权利要求24所述的指令处理方法,其特征在于,在所述步骤20之后,还包括:
步骤24、根据处理器对分支指令的实际执行结果判定预测准确率较高时,停止对所述组预测位的替换;
所述判定预测准确率的方法是:作为分支指令是否发生分支转移的推测的预测位的组别不再频繁发生变化时,判定预测准确率较高;或所述预测模块中连续j次比较结果中有至少一组预测位的值与分支判定信息匹配时,判定预测准确率较高;其中,j为自然数。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310050850.8A CN103984525B (zh) | 2013-02-08 | 2013-02-08 | 指令处理系统及方法 |
PCT/CN2014/071767 WO2014121731A1 (en) | 2013-02-08 | 2014-01-29 | Instruction processing system and method |
US14/766,755 US20160034281A1 (en) | 2013-02-08 | 2014-01-29 | Instruction processing system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310050850.8A CN103984525B (zh) | 2013-02-08 | 2013-02-08 | 指令处理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103984525A true CN103984525A (zh) | 2014-08-13 |
CN103984525B CN103984525B (zh) | 2017-10-20 |
Family
ID=51276519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310050850.8A Active CN103984525B (zh) | 2013-02-08 | 2013-02-08 | 指令处理系统及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20160034281A1 (zh) |
CN (1) | CN103984525B (zh) |
WO (1) | WO2014121731A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538535A (zh) * | 2020-04-28 | 2020-08-14 | 支付宝(杭州)信息技术有限公司 | 一种cpu指令处理方法、控制器和中央处理单元 |
WO2021042596A1 (zh) * | 2019-09-04 | 2021-03-11 | 苏州浪潮智能科技有限公司 | 一种指令流水线处理方法、系统、设备及计算机存储介质 |
CN113868899A (zh) * | 2021-12-03 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种分支指令处理方法、系统、设备及计算机存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10282700B2 (en) * | 2016-06-10 | 2019-05-07 | OneTrust, LLC | Data processing systems for generating and populating a data inventory |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0381444B1 (en) * | 1989-02-03 | 1999-10-27 | Digital Equipment Corporation | Branch prediction |
CN1287311A (zh) * | 1999-01-29 | 2001-03-14 | 国际商业机器公司 | 一种用组预测来降低在组相关高速缓存器中的执行时间的方法及设备 |
US6263427B1 (en) * | 1998-09-04 | 2001-07-17 | Rise Technology Company | Branch prediction mechanism |
US20070192574A1 (en) * | 2006-02-13 | 2007-08-16 | Samsung Electronics Co. Ltd. | Branch target buffer, a branch prediction circuit and method thereof |
CN101176060A (zh) * | 2005-03-23 | 2008-05-07 | 高通股份有限公司 | 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 |
CN100549944C (zh) * | 2006-11-17 | 2009-10-14 | 国际商业机器公司 | 数据处理系统、处理器和进行数据处理的方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253316B1 (en) * | 1996-11-19 | 2001-06-26 | Advanced Micro Devices, Inc. | Three state branch history using one bit in a branch prediction mechanism |
US7644258B2 (en) * | 2005-08-29 | 2010-01-05 | Searete, Llc | Hybrid branch predictor using component predictors each having confidence and override signals |
JP4980751B2 (ja) * | 2007-03-02 | 2012-07-18 | 富士通セミコンダクター株式会社 | データ処理装置、およびメモリのリードアクティブ制御方法。 |
US8694760B2 (en) * | 2009-05-19 | 2014-04-08 | Panasonic Corporation | Branch prediction using a leading value of a call stack storing function arguments |
CN102117198B (zh) * | 2009-12-31 | 2015-07-15 | 上海芯豪微电子有限公司 | 一种分支处理方法 |
-
2013
- 2013-02-08 CN CN201310050850.8A patent/CN103984525B/zh active Active
-
2014
- 2014-01-29 US US14/766,755 patent/US20160034281A1/en not_active Abandoned
- 2014-01-29 WO PCT/CN2014/071767 patent/WO2014121731A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0381444B1 (en) * | 1989-02-03 | 1999-10-27 | Digital Equipment Corporation | Branch prediction |
US6263427B1 (en) * | 1998-09-04 | 2001-07-17 | Rise Technology Company | Branch prediction mechanism |
CN1287311A (zh) * | 1999-01-29 | 2001-03-14 | 国际商业机器公司 | 一种用组预测来降低在组相关高速缓存器中的执行时间的方法及设备 |
CN101176060A (zh) * | 2005-03-23 | 2008-05-07 | 高通股份有限公司 | 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 |
US20070192574A1 (en) * | 2006-02-13 | 2007-08-16 | Samsung Electronics Co. Ltd. | Branch target buffer, a branch prediction circuit and method thereof |
CN100549944C (zh) * | 2006-11-17 | 2009-10-14 | 国际商业机器公司 | 数据处理系统、处理器和进行数据处理的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021042596A1 (zh) * | 2019-09-04 | 2021-03-11 | 苏州浪潮智能科技有限公司 | 一种指令流水线处理方法、系统、设备及计算机存储介质 |
US11915006B2 (en) | 2019-09-04 | 2024-02-27 | Inspur Suzhou Intelligent Technology Co., Ltd. | Method, system and device for improved efficiency of pipeline processing of instructions, and computer storage medium |
CN111538535A (zh) * | 2020-04-28 | 2020-08-14 | 支付宝(杭州)信息技术有限公司 | 一种cpu指令处理方法、控制器和中央处理单元 |
CN111538535B (zh) * | 2020-04-28 | 2021-09-21 | 支付宝(杭州)信息技术有限公司 | 一种cpu指令处理方法、控制器和中央处理单元 |
CN113868899A (zh) * | 2021-12-03 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种分支指令处理方法、系统、设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103984525B (zh) | 2017-10-20 |
US20160034281A1 (en) | 2016-02-04 |
WO2014121731A1 (en) | 2014-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101470670B (zh) | 具有扇区功能的高速缓冲存储器 | |
CN104731719B (zh) | 一种缓存系统和方法 | |
CN101256481B (zh) | 数据处理器以及存储器读激活控制方法 | |
CN105320490A (zh) | 用于异步fifo电路的方法和设备 | |
CN102169461B (zh) | 存储器系统 | |
CN102566976B (zh) | 管理重命名寄存器的寄存器重命名系统和方法 | |
CN103092782A (zh) | 用于闪存器件的闪存控制器硬件架构 | |
CN103513957A (zh) | 高性能缓存系统和方法 | |
US8176100B2 (en) | System for storing and managing objects | |
CN104050092A (zh) | 一种数据缓存系统及方法 | |
CN103959258A (zh) | 背景重排序——具有有限开销的预防性的磨损控制机制 | |
CN104156197A (zh) | 微处理器以及微处理器操作方法 | |
CN113743942B (zh) | 交易执行方法、区块链、主节点和主存储设备 | |
CN103984526A (zh) | 一种指令处理系统及方法 | |
CN103984525A (zh) | 指令处理系统及方法 | |
US11442727B2 (en) | Controlling prediction functional blocks used by a branch predictor in a processor | |
CN104657285B (zh) | 一种数据缓存系统和方法 | |
CN111399750B (zh) | 闪存数据写入方法及计算机可读取存储介质 | |
CN109739556B (zh) | 一种基于多并行缓存交互及计算的通用深度学习处理器 | |
CN104679691A (zh) | 一种用于gpdsp的采用主机计数的多核dma分段数据传输方法 | |
CN104424128A (zh) | 变长指令字处理器系统和方法 | |
CN1512325B (zh) | 一种计算机及一种产生并使用计算历史的方法 | |
CN103678158A (zh) | 一种数据布局优化方法及系统 | |
CN110187834B (zh) | 重删副本的数据处理方法、装置、电子设备 | |
CN101894012B (zh) | 信息处理装置及信息处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |