一种基于sparc v8体系结构的分类式混合分支预测系统的制作方法
【技术领域】
[0001]本发明涉及一种基于SPARCV8体系结构的分类式混合分支预测系统,特别是针对航天领域广泛应用的SPARC处理器给出了一种基于SPARC V8体系结构的分类式混合分支预测系统,即采用指令分类式的混合分支预测方案。
【背景技术】
[0002]在处理器领域中,SPARC体系结构作为RISC处理器的经典代表之一,占有十分重要的地位。基于SPARC架构的微处理器具有良好的可扩展性,目前已被广泛的应用于航空、通信以及各种嵌入式应用领域。因此开发出具有更高性能的能够面向各种目标客户应用需求的SPARC处理器具有很好的应用前景。
[0003]目前处理器体系结构研究取得了很大的发展,流水线技术很大程度上提高了指令级并行度(Instruct1n Level Parallelism),但是随着应用需求的不断复杂,高性能处理器的研究依旧是学术界研究的热点。束缚高性能处理器发展的因素有很多种,其中关于指令级并行的研究是开发高性能处理器的关键因素之一,而影响指令级并行度的一个关键因素就是程序中存在的分支指令。
[0004]分支指令对处理器流水线中程序的执行具有重要影响,发生跳转的分支指令将重新改变流水线中指令流的方向,这将会在流水线中引入更多的气泡(bubble),在现代处理器体系结构中,分支指令带来的硬件成本和功耗损失也随着流水线深度和流水线发射指令的宽度(issue width)的增大而增加。因此关于分支预测技术的研究一直是热门的研究热点之一O
[0005]分支预测技术是提高处理器性能的重要手段,它的目的是削弱指令间的控制相关性(control dependence),从而提高指令级并行度,提高处理器性能。流水线深度的增加将会加深分支指令对流水线性能的影响,再加上指令多发射技术(MultipIe Instruct1nLaunch)的应用,分支指令对流水线性能的影响进一步增加,因此分支预测技术的发展是一种必然。
[0006]推动分支预测技术发展的主要因素有:1、新应用的出现以及新的处理器结构的提出需要适合它们的新的预测机制。2、随着深亚微米工艺的发展,处理器功耗的问题越来越重要,这就需要在处理器分支预测的效率和功耗之间进行权衡。3、超流水和超标量等新技术的应用使得处理器对分支预测精度的需求依然很大。
[0007]分支预测技术不仅要考虑它的预测正确率,还要考虑它给处理器带来的硬件开销和时钟延迟的影响,现有的分支预测技术经常由于硬件规模太大、预测算法过于复杂、分支预测正确率不高等原因制约了处理器性能的提高。
【发明内容】
[0008]本发明的技术解决问题是:克服现有技术的不足,提出一种基于SPARCV8体系结构的分类式混合分支预测系统,即可以提高分支指令预测的正确率,又能减小硬件规模,不使预测算法过于复杂。
[0009]本发明的技术解决方案是:
[0010]本发明有以下几个模块组成:PC管理模块、分支指令查询模块、分支指令预测模块、分支指令信息记录模块、分支指令预测结果判断模块,无条件分支目标缓存UBTB(Uncondit1nal Branch Target Buffer)、条件分支目标缓存CBTB(Condit1nal BranchTarget Buff er)、返回地址堆桟RAS(Return Address Stack)、间接分支目标缓存IBTB(Indirect Branch Target Buffer)、模式历史表 PHT(Patter History Table)、预测信息^PIT(Predict1n Info Table);
[0011]无条件分支目标缓存UBTB(Uncondit1nalBranch Target Buffer)存储了无条件跳转分支指令PC值对应的分支指令类型信息,以及无条件跳转分支指令PC值对应的跳转目标地址;
[0012]条件分支目标缓存CBTB(Condit1nal Branch Target Buffer)存储了条件跳转分支指令PC值对应的分支指令类型信息,以及条件跳转分支指令PC值对应的跳转目标地址;
[0013]返回地址堆桟RAS(Return Address Stack)存储了返回分支指令PC值对应的返回目标地址;
[0014]间接分支目标缓存IBTB(Indirect Branch Target Buffer)存储了间接分支指令PC值对应的跳转目标地址;
[0015]模式历史表PHT(Patter History Table)存储了间接分支指令PC值对应的分支跳转方向;
[0016]预测信息表PIT(Predict1n Info Table)存储了分支指令PC值对应的预测信息;
[0017]PC管理模块,接收外部输入的指令PC值、分支指令预测模块送来的分支预测结果、更新及错误纠正模块送来的分支预测结果反馈信息。其中分支指令预测模块送来的分支预测结果,包括,分支指令预测跳转与否、分支指令预测跳转目标地址,更新及错误纠正模块送来的分支预测结果反馈信息,包括分支指令PC值、分支预测结果正确与否、分支指令跳转与否、分支指令跳转目标地址,在分支预测系统初始运行时,PC管理模块根据外部输入指令PC值加上一个固定的数值N计算产生下一条指令PC值,这个固定的数值N跟处理器所能处理的指令长度,以及采取的分支预测算法有关,然后把下一条指令PC值送入分支指令查询模块;如果更新及错误纠正模块送来的分支预测结果反馈信息中分支预测结果错误,则舍弃分支指令预测模块送来的分支预测结果,然后判断如果更新及错误纠正模块送来的分支预测结果反馈信息中分支指令跳转,则把更新及错误纠正模块送来的分支预测结果反馈信息中分支指令跳转目标地址作为下一条指令PC值送入分支指令查询模块;如果更新及错误纠正模块送来的分支预测结果反馈信息中分支预测结果错误,则舍弃分支指令预测模块送来的分支预测结果,然后判断如果更新及错误纠正模块送来的分支预测结果反馈信息中分支指令不跳转,则把更新及错误纠正模块送来的分支预测结果反馈信息中分支指令PC值加上前面所说的固定的数值N计算产生下一条指令PC值,并把它送入分支指令查询模块;如果更新及错误纠正模块送来的分支预测结果反馈信息中分支预测结果正确,然后判断如果分支指令预测模块送来的分支预测结果中分支指令预测跳转,则把分支指令预测模块送来的分支预测结果中分支指令预测跳转目标地址作为下一条指令PC值送入分支指令查询模块;如果更新及错误纠正模块送来的分支预测结果反馈信息中分支预测结果正确,然后判断如果分支指令预测模块送来的分支预测结果中分支指令预测不跳转,则把外部送入的指令PC值加上前面所说的固定的数值N计算产生下一条指令PC值,并把它送入分支指令查询模块;同时将下一条指令PC值送至外部对该指令PC值对应的指令进行译码,将译码后的指令译码信息送回分支指令译码信息记录模块,外部将该指令PC值对应的指令译码信息送入外部指令执行单元进行执行,把执行结果信息送入分支指令预测结果判断模块;
[0018]分支指令查询模块,接收PC管理模块送来的指令PC值,根据无条件分支目标缓存UBTB(Uncondit1nal Branch Target Buffer)和条件分支目标缓存CBTB(Condit1nalBranch Target Buffer)存储的指令PC值与该指令PC值对应的分支指令类型,得到与PC管理模块送来的指令PC值对应的分支指令类型信息,然后将指令PC值以及分支指令类型信息送入分支指令预测模块;
[0019]分支指令预测模块,接收分支指令查询模块送来的指令PC值以及分支指令类型信息,如果分支指令类型信息表明当前指令PC值对应的分支指令,是无条件跳转且分支目标地址为直接跳转的分支指令,则该分支指令预测跳转,然后通过查询无条件分支目标缓存UBTB(Uncondit1nal Branch Target Buffer),得到与该指令PC值对应的分支指令预测跳转目标地址,同时根据该指令PC值加上PC管理模块中使用的固定的数值N得到与该分支指令对应的返回地址,然后把返回地址记录在返回地址堆桟RAS(Return Address Stack)中;如果分支指令类型信息表明当前指令PC值对应的分支指令,是返回类型的分支指令,则从返回地址堆桟RAS(Return Address Stack)中取出一条返回地址作为该返回类型的分支指令预测跳转目标地址;如果分支指令类型信息表明当前指令PC值对应的分支指令,是间接分支指令,则该间接分支指令预测跳转,然后从间接分支目标缓存IBTB(Indirect BranchTarget Buffer)中读取该指令PC值对应的分支指令预测跳转目标地址,如果没有在间接分支目标缓存IBTB(Indirect Branch Target Buffer)中读取到该指令PC值对应的分支指令预测跳转目标地址即IBTB(Indirect Branch Target Buffer)预测失败时,然后从无条件分支目标缓存UBTB(Uncondit1nal Branch Target Buffer)中读取该指令PC值对应的分支指令预测跳转目标地址,这种方式称作补充预测;如果分支指令类型信息表明当前指令PC值对应的分支指令,是条件分支指令,则通过查询模式历史表PHT(Patter HistoryTable)得到与该指令PC值对应的分支指令预测跳转方向,然后通过查询条件分支目标缓存CBTB(Condit1nal Branch Target Buffer)得到与该指令PC值对应的分支指令预测跳转目标地址;把分支指令预测模块中的指令PC值、该指令PC值对应的分支指令预测跳转方向以及分支指令预测跳转目标地址送入分支指令信息记录模块,同时把分支指令预测模块中的指令PC值、该指令PC值对应的分支指令预测跳转方向以及分支指令预测跳转目标地址送入PC管理模块;
[0020]分支指令信息记录模块,接收分支指令预测模块送来的指令PC值、该指令PC值对应的分支指令预测跳转方向以及分支指令预测跳转目标地址,接收外部输入的指令PC值对应指令译码信息,根据指令PC值对应的指令译码信息判断当前指令是否是分支指令,且是否已经进行分支指令跳转方向以及分支指令跳转目标地址的预测,并把信息记录在预测