RISC-V分支预测方法、装置、电子设备及存储介质与流程

文档序号:18463721发布日期:2019-08-17 02:16阅读:392来源:国知局
本申请涉及risc-v处理器
技术领域
:,特别涉及一种risc-v分支预测方法、装置、电子设备及计算机可读存储介质。
背景技术
::随着计算机系统的复杂,要求计算机指令系统的构造能使计算机的整体性能更快更稳定。最初,人们采用的优化方法是通过设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的指令系统实现,以此来提高计算机的执行速度,这种计算机系统就被称为复杂指令系统计算机(cisc,complexinstructionsetcomputer)。但随着计算机技术的发展,cisc的方向被发现存在诸多缺陷,因此与cisc思路不同的risc(reducedinstructionsetcomputer,精简指令系统计算机)逐渐得到了发展和应用。risc的基本思想是尽量简化计算机指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,而把较复杂的功能用一段子程序来实现,得以使指令的平均执行周期减少,从而提高计算机的工作主频,同时大量使用通用寄存器来提高子程序执行的速度,使处理器的指令得以流水执行。常用risc-v指代遵循第五代精简指令集标准制造的精简指令处理集处理器,而在risc-v处理器流水线处理领域,流水线的分支预测一直都是非常重要的部分,现有risc-v处理器大多采用了bht(branchhistorytable,分支历史表)技术来实现分支预测的指令加速。顾名思义,bht是一个用于记录分支历史信息的表格,用于判定一条分支指令是否token(跳转),也可以理解为这条分支指令是否为跳转指令。由于bht仅记录一条分支指令是否为跳转指令,在一条分支指令不仅为跳转指令且需要跳转多次时,risc-v处理器也只会根据记录的它是一条跳转指令而不断执行跳转操作,即使该条跳转指令已经执行了完了最后一次跳转。即现有bht方式无法判断出该条跳转指令是否已经完成了预设的跳转次数,必须要等到超过预设跳转次数的下一次跳转出错时才能被动的发现,造成不必要计算资源的浪费和额外指令周期的消耗,降低了处理器的指令处理效率。因此,如果克服现有技术存在的上述技术缺陷,提供一种计算资源和指令周期消耗更合理、处理器指令处理效率更高的risc-v分支预测机制,是本领域技术人员亟待解决的问题。技术实现要素:本申请的目的是提供一种risc-v分支预测方法、装置、电子设备及计算机可读存储介质,旨在让risc-v处理器的计算资源和指令周期消耗更合理、指令处理效率更高。为实现上述目的,本申请提供一种risc-v分支预测方法,该方法包括:获取目标跳转指令的剩余跳转次数;根据所述目标跳转指令连续两次跳转分别对应的剩余跳转次数,计算得到单次跳转步长;根据所述单次跳转步长和所述剩余跳转次数确定所述目标跳转指令将要进行的跳转是否为最后一次跳转;若是,则对所述目标跳转指令执行最后一次跳转;若否,则继续对所述目标跳转指令执行下一次跳转。可选的,根据所述单次跳转步长和所述剩余跳转次数确定所述目标跳转指令将要进行的跳转是否为最后一次跳转,包括:判断所述剩余跳转次数与所述单次跳转步长的差是否为0;当所述剩余跳转次数与所述单次跳转步长间的差为0时,确定所述目标跳转指令将要进行的跳转为最后一次跳转;当所述剩余跳转次数与所述单次跳转步长间的差不为0,且差大于0时,确定所述目标跳转指令将要进行的跳转不是最后一次跳转;当所述剩余跳转次数与所述单次跳转步长间的差不为0,且差小于0时,确定所述目标跳转指令将要进行的跳转为最后一次跳转。可选的,该risc-v分支预测方法还包括:向不需要执行下一次跳转的目标跳转指令附加跳转结束标记。为实现上述目的,本申请还提供了一种risc-v分支预测装置,该装置包括:剩余跳转次数获取单元,用于获取目标跳转指令的剩余跳转次数;单次跳转步长计算单元,用于根据所述目标跳转指令连续两次跳转分别对应的剩余跳转次数,计算得到单次跳转步长;最后一次跳转判断单元,用于根据所述单次跳转步长和所述剩余跳转次数确定所述目标跳转指令将要进行的跳转是否为最后一次跳转;最后一次跳转处理单元,用于当确定所述目标跳转指令将要进行的跳转是否为最后一次跳转时,对所述目标跳转指令执行最后一次跳转;非最后一次跳转处理单元,用于当确定所述目标跳转指令将要进行的跳转不是最后一次跳转时,继续对所述目标跳转指令执行下一次跳转。可选的,所述最后一次跳转判断单元包括:零差值判断子单元,用于判断所述剩余跳转次数与所述单次跳转步长的差是否为0;零差值判定子单元,用于当所述剩余跳转次数与所述单次跳转步长间的差为0时,确定所述目标跳转指令将要进行的跳转为最后一次跳转;第一非零差值判定子单元,用于当所述剩余跳转次数与所述单次跳转步长间的差不为0,且差大于0时,确定所述目标跳转指令将要进行的跳转不是最后一次跳转;第二非零差值判定子单元,用于当所述剩余跳转次数与所述单次跳转步长间的差不为0,且差小于0时,确定所述目标跳转指令将要进行的跳转为最后一次跳转。可选的,该risc-v分支预测装置还包括:跳转结束标记附加单元,用于向不需要执行下一次跳转的目标跳转指令附加跳转结束标记。为实现上述目的,本申请还提供了一种电子设备,该电子设备包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上述内容所描述的risc-v分支预测方法。为实现上述目的,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述内容所描述的risc-v分支预测方法。显然,为解决现有技术缺陷,本申请所提供的risc-v分支预测方法在现有技术的基础上,还额外获取了跳转指令的剩余跳转次数,并根据连续两次跳转时剩余跳转次数的差值计算得到单次跳转步长(单次跳转步长并不固定为1),从而根据一个跳转指令的单次跳转步结合实时的剩余跳转次数即可判断出目标跳转指令是否执行到了最后一次跳转,以便根据判断结果来确定是否后续仍需执行的跳转次数。通过上述方案可主动的判断出一个跳转指令当前是否进行到了最后一次跳转,相比被动得到相同结果的现有技术,无需耗费额外的计算资源和指令周期,处理的指令处理效率更高。本申请同时还提供了一种risc-v分支预测装置、电子设备及计算机可读存储介质,具有上述有益效果,在此不再赘述。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请实施例提供的一种risc-v分支预测方法的流程图;图2为本申请实施例提供的risc-v分支预测方法中一种确定是否需要进行下一次跳转的方法的流程图;图3为本申请实施例提供的一种risc-v分支预测装置的结构框图。具体实施方式本申请的目的是提供一种risc-v分支预测方法、装置、电子设备及计算机可读存储介质,旨在让risc-v处理器的计算资源和指令周期消耗更合理、指令处理效率更高。为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。实施例一请参见图1,图1为本申请实施例提供的一种risc-v分支预测方法的流程图,其包括以下步骤:s101:获取目标跳转指令的剩余跳转次数;本步骤旨在获取目标跳转指令的剩余跳转次数,即本步骤建立在一条分支指令已经被确认为跳转指令的基础上。顾名思义,剩余跳转次数是用于表示该目标跳转指令还需要跳转多少次的一个参数。其中,该目标跳转指令由risc-v处理器提供,具体的,由risc-v处理器中的pc寄存器提供;该剩余跳转次数可从该目标跳转指令的某些位域中获取记录有剩余跳转次数的寄存器地址,以通过访问该寄存器地址的方式从该寄存器中取得该剩余跳转次数。s102:根据目标跳转指令连续两次跳转分别对应的剩余跳转次数,计算得到单次跳转步长;在s101的基础上,本步骤旨在根据目标跳转指令连续两次跳转分别对应的剩余跳转次数,计算得到单次跳转步长。之所以要计算得到单次跳转步长,是因为并不是所有跳转指令在每次跳转过后,其当前剩余跳转次数都与跳转前的剩余跳转次数相差1,即单次跳转步长不固定为1,在实际情况下也存在单次跳转步长为3的例子。如果单次跳转步长固定为1,那么只需要根据实时的剩余跳转次数是否为0即可快速判断出将要进行的下一次跳转是否为最后一次跳转。由于单次跳转步长不固定为1,例如当总跳转次数为11,但单次跳转步长为3时,会在执行完第三次跳转后出现剩余跳转次数为2的情况,此时应表示对应的跳转指令还需要执行最后一次跳转即可完成预设的跳转要求。因此,为了全面、准确的判别出将要进行的下一次跳转是否为最后一次跳转,就需要同时结合实时的剩余跳转次数和单次跳转步长。s103:根据单次跳转步长和剩余跳转次数确定目标跳转指令将要进行的跳转是否为最后一次跳转,若是则执行s105,否则执行s104;在s101和s102的基础上,本步骤旨在根据计算得到的单次跳转步长和实时的剩余跳转次数来确定目标跳转指令将要进行的下一次跳转是否为最后一次跳转。可以根据当前的剩余跳转次数与单次跳转步长间的差值是否为0来确定出目标跳转指令将要进行的下一次跳转是否为最后一次跳转,因为剩余跳转次数只在大于等于0的区间内有意义,如果单次跳转步长为1,那么按照每次减1的方式,一定会有一次使得两者的差值为0,且当差值为0时意味着本次跳转为最后一次跳转的前一次,也就是说下一次跳转为最后一次跳转;如果单次跳转步长不为0,例如上述举的总跳转次数为11、单次跳转步长为3的例子,其最后一次跳转执行前的剩余跳转次数为2,那么在下一次跳转为最后一次跳转时,其当前的剩余跳转次数就会因为小于3使得差小于0,从而不等于0,进而也能够在单次跳转步长不为零的情况下判断出是否进行了到最后一次跳转。当然,差值大于0的情况下,意味着还需要下一次跳转不是最后一次跳转,还需要执行更多次的跳转。s104:对目标跳转指令执行最后一次跳转;本步骤建立在s103根据单次跳转步长和剩余跳转次数确定目标跳转指令将要执行的下一次跳转为最后一次跳转的基础上,则risc-v处理器将对目标跳转仅执行最后一次的跳转,即执行完下一次跳转后将不再执行更多的跳转,并将因该目标跳转指令已经执行完了其预设的跳转次数而进行跳出步骤。s105:继续对目标跳转指令执行下一次跳转。本步骤建立在s103根据单次跳转步长和剩余跳转次数确定目标跳转指令将要执行的下一次跳转不是最后一次跳转的基础上,则risc-v处理器将继续对目标跳转指令执行不限次数的下一次的跳转操作,直至根据单次跳转步长和新的剩余跳转次数确定出目标跳转指令即将执行的下一次跳转为最后一次跳转时才转入s104将后续所需跳转次数修改为1。在某些特殊情况下,剩余跳转次数可以为负数,例如-100,虽然其使用负数表示,相应的,为实现其消耗的目的,其单次跳转步长是正数,最终使其在一次次跳转后剩余跳转次数趋于零。当需要说明,其仍然表示正数的含义,即负数只是其在某张特殊情况下的表现方式,理解时应使用绝对值的方式进行理解。为解决现有技术缺陷,本申请所提供的risc-v分支预测方法在现有技术的基础上,还额外获取了跳转指令的剩余跳转次数,并根据连续两次跳转时剩余跳转次数的差值计算得到单次跳转步长(单次跳转步长并不固定为1),从而根据一个跳转指令的单次跳转步结合实时的剩余跳转次数即可判断出目标跳转指令是否执行到了最后一次跳转,以便根据判断结果来确定是否后续仍需执行的跳转次数。通过上述方案可主动的判断出一个跳转指令当前是否进行到了最后一次跳转,相比被动得到相同结果的现有技术,无需耗费额外的计算资源和指令周期,处理的指令处理效率更高。实施例二请参见图2,图2为本申请实施例提供的risc-v分支预测方法中一种确定将要执行的下一次跳转是否为最后一次跳转的方法的流程图,针对s103,本实施例提供了一种通过当前剩余跳转次数与单次跳转步长间差值来确定目标跳转指令将要执行的跳转是否为最后一次需要进行下一次跳转的方法,包括以下步骤:s201:根据目标跳转指令连续两次跳转分别对应的剩余跳转次数,计算得到单次跳转步长;本步骤与s102相同,相应说明的描述请参见s102,相同部分不再赘述。s202:判断剩余跳转次数与单次跳转步长的差是否为0,若为0执行s204,否则执行s203;本步骤旨在判断当前的剩余跳转次数与单次跳转步长间的差值是否为0。s203:判断不为0的差是否大于0,若大于0则执行s205,否则执行s204;本步骤建立在s202的判断结果为剩余跳转次数与单次跳转步长的差不为0的基础上,旨在对不为0的差值具体是大于0还是小于0进行再一次的判断,因为大于0和小于0所表示的含义完全不同。s204:确定目标跳转指令将要执行的跳转为最后一次跳转;本步骤建立在s202的判断结果为剩余跳转次数与单次跳转步长的差是否为0和s203的判断结果为不为0的差小于0的基础上,其中,针对差为零时,由于单次跳转步长为1时,最后一次跳转之前,其当前的剩余跳转次数为1,所以其与单次跳转步长之间的差值为0;即使当单次跳转不为1,只要目标跳转指令的总跳转次数是单次跳转步长的倍数,也总存在两者差值为0的情况,都可以基于为0的差值确定目标跳转指令当前已经执行到了最后一次跳转的前一次,即下一次就是最后一次跳转。特殊的,针对不为0的差小于0的情况,会因为单次跳转步长不为0且总跳转次数也不是单次跳转步长整倍数的情况下而产生,针对此种情况,当出现差值小于0时,也能够表示出相同的含义。s205:确定目标跳转指令将要执行的跳转不是最后一次跳转。本步骤建立在s203的判断结果为不为0的差值大于0的基础上,不管单次跳转步长是否为1,当差值不为0且差值大于0,则说明将要进行的下一次跳转不是最后一次跳转。因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。具体的,针对上述用于得出判断结果的参数在实际情况下可以通过额外增设字段和该字段配套的含义表达方式来实现,以通过更多的信息补充经典bht方式由于记录内容少所存在的技术缺陷。实施例三下面请参见图3,图3为本申请实施例提供的一种risc-v分支预测装置的结构框图,该装置可以包括:剩余跳转次数获取单元100,用于获取目标跳转指令的剩余跳转次数;单次跳转步长计算单元200,用于根据目标跳转指令连续两次跳转分别对应的剩余跳转次数,计算得到单次跳转步长;最后一次跳转判断单元300,用于根据单次跳转步长和剩余跳转次数确定目标跳转指令将要进行的跳转是否为最后一次跳转;最后一次跳转处理单元400,用于当确定目标跳转指令将要进行的跳转是为最后一次跳转时,对目标跳转指令执行最后一次跳转;非最后一次跳转处理单元500,用于当确定目标跳转指令将要进行的跳转不是最后一次跳转时,继续对目标跳转指令执行下一次跳转。其中,该最后一次跳转判断单元300可以包括:零差值判断子单元,用于判断剩余跳转次数与单次跳转步长的差是否为0;零差值判定子单元,用于当剩余跳转次数与单次跳转步长间的差为0时,确定目标跳转指令将要进行的跳转为最后一次跳转;第一非零差值判定子单元,用于当剩余跳转次数与单次跳转步长间的差不为0,且差大于0时,确定目标跳转指令将要进行的跳转不是最后一次跳转;第二非零差值判定子单元,用于当剩余跳转次数与单次跳转步长间的差不为0,且差小于0时,确定目标跳转指令将要进行的跳转为最后一次跳转。进一步的,该risc-v分支预测装置还可以包括:跳转结束标记附加单元,用于向不需要执行下一次跳转的目标跳转指令附加跳转结束标记。本实施例作为与上述方案实施例对应的装置实施例存在,各功能单元对应于方法实施例中的各步骤,包含方法实施例的全部有益效果,此处不再赘述。基于上述实施例,本申请还提供了一种电子设备,该电子设备可以包括存储器和处理器,其中,该存储器中存有计算机程序,该处理器调用该存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然,该电子设备还可以包括各种必要的网络接口、电源以及其它零部件等。具体的,该电子设备可以表现为加入本申请提供方案的新型risc-v处理器,或者是流水线分支预测的处理装置等等。本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行终端或处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。对于本
技术领域
:的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1