本发明专利技术一种适用于上下文切换的分支预测方法,包含下列步骤:a)将进入预测器的分支指令进行进程号的比较;b)依据比较结果,如果相等或全局位为“1”,对于不同的进程号采用不同的全局分支历史寄存器,并读取其中的分支历史寄存器,并对全局位为“1”,使用一个固定的;c)如果比较结果不等且全局位不为“1”,选择一个空的分支历史寄存器,在没有空闲分支历史寄存器时,选择一个分支历史寄存器进行替换;d)使用读出的全局分支历史与分支指令的地址进行操作,形成模式表的索引;e)访问模式表,读出相关内容;f)根据查找到的结果进行预测,决定是否跳转。(*该技术在2022年保护过期,可自由使用*)
【技术实现步骤摘要】
本专利技术属于微处理器体系结构领域,特别涉及一种微处理器的分支预测方法。(2)采取一定程度的预测,在分支结果出来之前,就按预测的地址取指。这种方法当猜测正确时,并不产生延迟,但当猜测错误时,就要取消已经取进的指令并重新取指,从而引起流水线断流,增加了延时。如MIPS的R10000,Alpha的21064、21164、21264,Sun的UltraSparc系列,Intel的P6系列微处理器等。第二种方案为当前流行方案,被大多数微处理器采用。其中MIPS的R10000,Alpha的21064、21164,Sun的UltraSparc I采用的是两位的双峰(Bimodal Predictor)预测器;Sun的UltraSparcSun的UltraSparc III采用的是Gshare预测器(Gshare Predictor);Intel的P6系列微处理器采用的是PAs配置(PAs configuration)的两层预测器(Two-level Predictor);Alpha的21264采用的是混合预测器(Hybrid Predictor)。在这些方案中,双峰(Bimodal Predictor)预测器基本上已经很少使用,或与其它预测器配合使用,而其它几种都属于两层预测器,按照配置不同分为GAs、PAs和混合(Hybrid)。这些方案基本上都是利用分支的历史记录和程序计数器PC,形成对模式历史表PHT(Pattem HistoryTable)的索引,然后根据从PHT中读出的内容决定是否转移。例如,附图说明图1为使用Gshare(属于GAs配置)方法的预测器的示意图。它直接使用全局分支历史(Global Branch History)与一部分转移指令地址相异或,在拼接上一部分转移指令地址,形成对PHT的索引,再用这个索引从PHT表中读出相应的表项,并根据读出的内容决定是否预测跳转。这些预测器的预测方法具有严重的缺点,它们没有对多用户(multi-user)、多道程序(multi-programming)、多线程(multi-threading)进行考虑,而多用户、多道程序、多线程的应用在当今和未来的处理器中是不可避免的,甚至是一种潮流,所以虽然它们在预测单道程序上都有很高的命中率,但是在实际应用中,受进程(包括线程)的上下文切换(contextswitching)的影响,效果并不理想。有些处理器为了提高命中率,使用较多的位来记录转移信息,占用了很大的、宝贵的芯片面积,例如,Alpha的21264的预测器一共使用了28K bits,但实际应用中的命中率并不会有很大改善。现在已经有人开始在理论上研究多线程处理器(multi-threadedprocessor)的分支预测,如J.Gummaraju和M.Franklin提出的方案,但是这种方案并不实用,因为它为每一个进程设立了一个PHT(PatternHistory Table),这样的预测器所需的预测位的数量、所要占用的芯片面积将是实际应用中很难接受的。因此也并没有被真正应用。所以现有预测方法的不适合应用于多用户、多道程序、多线程环境下的进程(包括线程)的上下文切换,而且理论上的多线程预测方法存在占用芯片面积大、不实用的不足。本专利技术一种,其特征在于,包含下列步骤a)将进入预测器的分支指令进行进程(包括线程)号的比较; b)依据比较结果,如果相等或全局位为“1”,对于不同的进程号采用不同的全局分支历史寄存器(Global Branch History Register)GBHR,并读取其中的全局分支历史,并对全局位为“1”,使用一个固定的分支历史寄存器;c)如果比较结果不等且全局位不为“1”,选择一个空的分支历史寄存器,在没有空闲分支历史寄存器时,选择一个分支历史寄存器进行替换d)使用读出的全局分支历史与分支指令的地址进行操作,形成模式表(Pattem History Table)PHT的索引;e)访问模式表(Pattern History Table)PHT,读出相关内容;f)根据查找到的结果进行预测,决定是否跳转。其中于步骤a)中进程(包括线程)号的比较是使用分支指令的进程号和每个GBHR对应的进程号,包括进程标示符ASID(address spaceidentifier)的比较和全局位Global的检查。其中于步骤b)中除Global为“1”使用的GBHR,其它的每一个GBHR都有一个对应的ASID,用来进行比较。本专利技术提供的一种,结合参阅图2所示,包含下列步骤 a)将进入预测器的分支指令进行进程(包括线程)号的比较,进程(包括线程)号的比较是利用收到与该分支指令相关的Global位和ASID和每个全局分支历史寄存器(Global Branch History Register)GBHR对应的ASID进行的,包括ASID的比较和Global位的检查,请参阅图2中的左上部分;b)依据比较结果,如果Global位为“1”,表明该指令的地址是全局使用的,选择使用专门的GBHR(Global Branch History Register),例如0号GBHR,并且该GBHR是不可重新分配给任何其它进程的,请参阅图2中的左下部分;c)如果Global位为“0”则要根据ASID的比较结果来决定选用哪个GBHR1)有GBHR对应的ASID域的内容与该指令的ASID相等,则选用第一个相等的GBHR;2)如果没有相等的,但还有空余未分配的GBHR,则选择一个空的,并将对应的ASID域的内容设置成该条指令的ASID;3)如果没有相等的,且没有空余未分配的GBHR,则根据一定的规则挑选一个GBHR,重新分配给该ASID,并将对应的ASID域的内容改成该条指令的ASID,请参阅图2中的左下部分;d)使用读出的全局分支历史与分支指令的地址进行操作,形成模式表(Pattern History Table)PHT的索引;e)访问模式表(Pattern History Table)PHT,读出相关内容;f)根据查找到的结果进行预测,决定是否跳转,步骤d至步骤f请参阅图2中的右半部分。由前述方法可知本专利技术具有下列有点1.由于本专利技术在预测方法中采用了专门的进程识别,所以这是一个专门针对多用户、多道程序、多线程环境,能很好地适应进程(包括线程)的上下文切换的分支预测器方法。它保证了,即使预测器工作在多用户、多道程序、多线程环境也不会因为上下文切换而影响预测器的性能。2.而且由于在预测部分只使用了全局转移历史(Global BranchHistory),采取了较为易行的预测结构,避免了实现复杂性。因此本专利技术克服了现实中的预测器不适用于进程(包括线程)的上下文切换的不足,以及理论上的多线程预测器实现复杂、可行性差的不足。权利要求1.一种,其特征在于,包含下列步骤a)将进入预测器的分支指令进行进程号的比较;b)依据比较结果,如果相等或全局位为“1”,对于不同的进程号采用不同的全局分支历史寄存器,并读取其中的分支历史寄存器,并对全局位为“1”,使用一个固定的;c)如果比较结果不等且全局位不为“1”,选择一个空的分支历史寄存器,在没有空闲分支历史寄存器时,选择一个分支历史寄存器进行替本文档来自技高网...
【技术保护点】
一种适用于上下文切换的分支预测方法,其特征在于,包含下列步骤: a)将进入预测器的分支指令进行进程号的比较; b)依据比较结果,如果相等或全局位为“1”,对于不同的进程号采用不同的全局分支历史寄存器,并读取其中的分支历史寄存器,并对全局位为“1”,使用一个固定的; c)如果比较结果不等且全局位不为“1”,选择一个空的分支历史寄存器,在没有空闲分支历史寄存器时,选择一个分支历史寄存器进行替换; d)使用读出的全局分支历史与分支指令的地址进行操作,形成模式表的索引; e)访问模式表,读出相关内容; f)根据查找到的结果进行预测,决定是否跳转。
【技术特征摘要】
【专利技术属性】
技术研发人员:王海洋,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。