一种跳转路径的分支跳转处理装置、方法和处理器的制作方法

文档序号:6340055阅读:148来源:国知局
专利名称:一种跳转路径的分支跳转处理装置、方法和处理器的制作方法
技术领域
本发明涉及微处理器体系结构技术领域,特别是指一种跳转路径的分支跳转处理装置、方法和处理器。
背景技术
微处理器体系结构中,在一些对实时要求特别严厉的场合,比如有些数据处理及通讯中,实时要求较一些其它场合更为严格,这些微处理器中的控制器的设计通常以设计简单,易于实现,流水线效率高为主要设计目标。在这类控制器的指令设计中,通常以较常见的5级流水的精简指令集处理器为蓝本对其进行设计。5级流水的精简指令集处理器是一种经典结构的处理器,技术成熟,实现简单,指令处理高效。这类处理器的跳转指令通常可以称为两分支指令,即当跳转条件为真时跳转到分支地址执行;否则,当跳转条件为假时,程序继续向下执行。参照图1的示例,假设某一程序有类似图1的判断分支结构即程序有6个分支C、 E、G、I和H分支,每个分支都在一定的条件下执行,其中
C分支执行的条件是A节点为真,否则不予执行; E分支执行的条件是B节点为真,否则不予执行; G分支执行的条件是D节点为真,否则不予执行; I分支执行的条件是F节点为真,否则执行H分支。A、B、D和F节点构成了 CEGIH分支执行的条件。在两分支指令的处理方式中,I分支的判决路径由ABDF构成,具体判断过程如下 首先判断A节点,由A节点决定是否要执行C分支,接着判断B节点,由B节点决定是
否要执行E分支,紧接着判断D节点,由D节点决定是否要执行G分支,最后判断F节点,来决定是否要进入I分支。可见,I分支的执行路径是类似A (C)B (E)D (G)F (I)的路径,在最坏情况下, A、B、D节点均为假,此时判断路径最长,即经过A、B、D三次判断为假后最后才判断到I,这是比较大的浪费。图1仅仅是示出了带有4个节点的分支路径情况,在更多的分支路径中,类似的判断浪费更加严重。在数据处理及通讯中,对实时解码的要求常常使得这样的判断浪费显得不能接受,有效地缩短这样的判断浪费就显得特别重要。图2是应用适用于超长跳转路径的高效分支跳转指令的判断路径图,该判断路径是实现图1相同的功能,依然是假设I分支要执行的情况,在A节点中I分支位为真时,立刻就可执行I分支,I分支执行完成后,进入B节点判断,在B节点判断到一个真值分支后, 进入该真值分支,该真值分支执行完成后,再进入下一个节点D判断,在D节点判断到一个真值分支,进入该真值分支,该真值分支执行完成后,再进入下一个节点F判断,在F节点判断下一个真值分支,执行完成后,最后进入退出分支。上面A,B,D,F节点判断过程中,有任何一个节点假的话,即刻进入退出分支,有任何一个节点中有真值位,即刻进入该真值分值。事实上,在上面A节点的判断中,一但进入I分支随后从I分支退出后,已不会再进入D、 F节点的判断,因为进入B节点时会发现所有节点位均已为假,随即会进入退出分支。因此在应用了适用于超长跳转路径的高效分支跳转指令后,程序的判断路径上虽然仍有四个节点A、B、D和F节点,但与图1不同的是,每个节点有两个及以上的分支,每次A、B、D和F节点的判断都能够进入一个有效的分支,从而极大的缩短了图1中两分支指令造成的判断浪费;但该图2所示的路径图中,I分支要执行时还是存在四个节点均判断的情况;因此,现有两分支指令技术在超长跳转路径中存在严重的判断浪费。

发明内容
本发明要解决的技术问题是提供一种跳转路径的分支跳转处理装置、方法和处理器,使得每次判断都会进入一个有效的分支,在超长跳转路径可以有效减少两分支跳转指令造成的判断浪费。为解决上述技术问题,本发明的实施例提供一种跳转路径的分支跳转处理装置, 包括
节点标志寄存器单元,用于保存节点判断信息;
节点预测寄存器单元,用于根据第一指令,加载所述节点标志寄存器单元中保存的所述节点判断信息;
查找单元,用于在所述节点预测寄存器单元中查找所述节点判断信息的第一个被置位的位;
执行单元,用于将跳转路径跳转到所述第一个被置位的位对应的分支执行; 清零单元,用于在所述第一个被置位的位对应的分支执行完毕后,根据第二指令,将所述节点预测寄存器单元中该分支对应的所述第一个被置位的位清零。其中,所述查找单元具体用于,在所述节点预测寄存器单元中,按照从高位到低位的顺序,查找所述节点判断信息的第一个被置位的位。其中,所述第一指令为所述路径的入口指令;所述分支跳转处理装置还包括 入口指令地址寄存器单元,用于存放所述第一指令的地址;
所述执行单元将所述查找单元找到的所述第一个被置位的位相对于所述第一指令的地址偏移量,与所述第一指令的地址相加,得到所述第一个被置位的位对应的分支的绝对地址,将所述跳转路径跳转到所述绝对地址对应的所述分支执行。其中,所述第一指令为CASE指令。其中,所述第二指令为NEXT指令,所述NEXT指令为所述跳转路径中查找下一个分支的指令;
所述清零单元在所述第一个被置位的位对应的分支执行完毕后,根据所述NEXT指令, 将所述节点预测寄存器单元中的该分支对应的所述第一个被置位的位清零。本发明的实施例还提供一种跳转路径的分支跳转处理方法,包括如下步骤 根据第一指令,获取跳转路径中的节点判断信息;
查找所述节点判断信息中的第一个被置位的位; 将跳转路径跳转到所述第一个被置位的位对应的分支执行;
在所述第一个被置位的位对应的分支执行完毕后,根据第二指令,将执行完毕的所述
5分支对应的所述第一个被置位的位清零,并继续查找所述节点判断信息中的第一个被置位的位。其中,查找所述节点判断信息中的第一个被置位的位的步骤具体为 按照从高位到低位的顺序,查找所述节点判断信息的第一个被置位的位。其中,所述第一指令为所述路径的入口指令;
所述将跳转路径跳转到所述第一个被置位的位对应的分支执行具体为 将所述第一个被置位的位相对于所述第一指令的地址偏移量,与所述第一指令的地址相加,得到所述第一个被置位的位对应的分支的绝对地址,将所述跳转路径跳转到所述绝对地址对应的所述分支执行。其中,所述第一指令为CASE指令。其中,所述第二指令为NEXT指令,所述NEXT指令为所述跳转路径中查找下一个分支的指令。其中,所述节点判断信息为分支执行的逻辑值,当所述逻辑值为真时,所述分支对应的位为第一个被置位的位。本发明的实施例还提供一种处理器,该处理器包括上述的分支跳转处理装置。本发明的上述技术方案的有益效果如下
上述方案中,节点预测寄存器单元根据第一指令,加载所述节点标志寄存器单元中保存的所述节点判断信息,然后查找所述节点判断信息的第一个被置位的位,并将跳转路径跳转到所述第一个被置位的位对应的分支执行;与现有技术中,每一个节点都需要参与判断的方案相比;本发明的方案可以在超长路轻的分支跳转设计中,直接跳转到一个有效的分支进行执行,即上述第一个被置位的位对应的分支执行,使得每次判断都会进入一个有效的分支,从而有效减少两分支跳转指令在超长跳转路径中造成的判断浪费。


图1为跳转路径的第一种形态示例图; 图2为跳转路径的第二种形态示例图3为本发明的跳转路径的分支跳转处理装置结构框图4为图3所示分支跳转处理装置适用于超长跳转路径的高效分支跳转指令CASE和 NEXT指令的程序执行框架图。
具体实施例方式为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。本发明针对现有技术中,两分支指令技术在超长跳转路径中存在严重的判断浪费的问题,提供一种跳转路径的分支跳转处理装置、方法和处理器,使得每次判断都会进入一个有效的分支,在超长跳转路径可以有效减少两分支跳转指令造成的判断浪费。如图3所示,本发明的跳转路径的分支跳转处理装置,包括 节点标志寄存器单元11,用于保存节点判断信息;
节点预测寄存器单元12,用于根据第一指令,加载所述节点标志寄存器单元11中保存的所述节点判断信息;
查找单元13,用于在所述节点预测寄存器单元12中查找所述节点判断信息的第一个被置位的位;
执行单元16,用于将跳转路径跳转到所述第一个被置位的位对应的分支执行; 清零单元14,用于在所述第一个被置位的位对应的分支执行完毕后,根据第二指令,将所述节点预测寄存器单元12中该分支对应的所述第一个被置位的位清零。本发明的该实施例,通过节点预测寄存器单元12根据第一指令,加载所述节点标志寄存器单元11中保存的所述节点判断信息,并查找所述节点判断信息的第一个被置位的位,并将跳转路径跳转到所述第一个被置位的位对应的分支执行;与现有技术中,每一个节点都需要参与判断的方案相比;本发明的该实施例可以在超长路轻的分支跳转设计中, 直接跳转到一个有效的分支进行执行,即上述第一个被置位的位对应的分支执行,使得每次判断都会进入一个有效的分支,在超长跳转路径可以有效减少两分支跳转指令造成的判断浪费。具体来讲,上述查找单元13具体用于,在所述节点预测寄存器单元12中,按照从高位到低位的顺序,查找所述节点判断信息的第一个被置位的位。其中,所述第一指令为所述路径的入口指令;所述分支跳转处理装置还包括 入口指令地址寄存器单元15,用于存放所述第一指令的地址;
所述执行单元16将所述查找单元13找到的所述第一个被置位的位相对于所述第一指令的地址偏移量,与所述第一指令的地址相加,得到所述第一个被置位的位对应的分支的绝对地址,将所述跳转路径跳转到所述绝对地址对应的所述分支执行。其中,这里的第一指令在具体实现时,可以为CASE指令,此时该入口指令地址寄存器单元15可以为如图中所示的CASE指令地址寄存器单元;当然在具体实现时,还可以采用其它的指令,如BEGIN指令等,只要能表示路径的入口指令,且该入口指令的地址可以作为整个路径的起始基地址即可。所述第二指令为NEXT指令,所述NEXT指令为所述跳转路径中查找下一个分支的指令;
所述清零单元14在所述第一个被置位的位对应的分支执行完毕后,根据所述NEXT指令,将所述节点预测寄存器单元12中的该分支对应的所述第一个被置位的位清零。该方案适用于CASE,NEXT指令的设计框架。下面结合具体的实施例来说明上述图3所示装置的具体实现过程
如图4所示,为超长跳转路径的高效分支跳转指令CASE和NEXT指令的程序执行框架图,其中,该程序跳转分支入口组织为向量表形式,统一存放在CASE指令41的下一条指令地址处42,跳转分支执行体按照跳转分支入口的形式顺序放在随后的位置43。上述各个单元具体实施步骤如下
(1)发出CASE指令,该CASE指令加载节点标志寄存器单元11中的节点判断信息到节点预测寄存器单元12中;
(2)查找单元13从高位到低位依次查找节点预测寄存器单元12中第一个被置位的位, 若找到,给出该第一个被置位的位在节点预测寄存器单元12中的偏移量,即该第一个被置位的位对应的分支相对于路径入口指令(CASE指令)的地址偏移量与CASE指令地址寄存
7器单元15中的CASE指令的地址相加,即为该第一个被置位的位对应的分支的绝对地址;
(3)根据该绝对地址跳转到该第一个被置位的位对应的分支进行处理,同时由清零单元14将节点预测寄存器单元12中的所述第一个被置位的位清零,当分支处理完成后,执行 NEXT指令,找到下一个目标分支(即下一个第一个被置位的位对应的分支),
(4)重复上述(2)- (3)步骤,直到节点预测寄存器单元12中的其它位(除第0位外) 全部被清零单元14清零;转至出口分支,节点判断结束。下面通过分支判断的具体过程来具体说明如何通过本发明的上述方案实现适应于超长跳转路径的高效分支跳转
例1 假设图1中四个节点A,B, D,F在某刻其逻辑判断真假情况如下
{A, B,D,F } = {0110}
即A,F为逻辑假,B,D为逻辑真,四个结点在程序中的先后顺序排列为A,B,D,F。那么将节点标志寄存器单元11中的高四位[n-l,n-2,n-3,n-4,exit]初始化为{0110},其余位 (除最低位外)[n-5,... 1]初始化0,而把最低位
置为1,那么程序可以按图4所示框架进行
(1)首先执行CASE指令41,实际上是将节点标志寄存器单元11的内容{011000···01} 加载到节点预测寄存器单元12中,同时CASE指令会通过查找单元13根据节点预测寄存器单元12的内容判断出第一个被置位的位,即第一个跳转分支对应的位,该判断第一个被置位的位1的工作是由找查找单元13完成的,查找单元13仅需一个指令周期就可以发现第一个被置位的位1,判断到节点预测寄存器单元12中从高位到低位的第2位即B_entry分支对应的位为1 ;需要说明的是这里将节点判断信息为真时,路径可以跳转的分支对应的位设置为1,否则设置为0,这种设置方式仅作为一种实例进行说明,而不用于限定本发明的方案,也可以将该节点判断信息为真时,路径可以中转的分支对应的位设置为其它值,只要能够表示该分支在该节点判断信息为真时,可以被执行即可。(2)查找单元13输出B_entry分支偏移量2,该B_entry偏移量是以路径的入口地址CASE指令的地址为基地址的偏移量,如CASE指令的地址为0,则该B_entry以该CASE 指令的地址为基地址的偏移量就为2 ;将该B_entry的偏移量与CASE地址寄存器中的CASE 指令的地址相加,得到B_entry分支的绝对地址;
(3)执行单元16根据该B_entry分支的绝对地址.,进入B_entry42执行,执行完成后,执行NEXT指令43,该NEXT指令通知清零单元14清掉节点预测寄存器单元12中从高位到低位的第2位即B_entry分支对应的位,为后续判断做准备,同时由查找单元13根据节点预测寄存器单元12中的内容判断下一个被置位的位,即下一个真值分支。这次判断第一个被置位的位1的工作是由NEXT指令通知查找单元13完成的,查找单元13仅需一个指令周期就可以发现第一个被置位的位,当然此次会找到第3位即D_entry分支对应的位,下次指令将进入D_entry执行;
(4)查找单元13输出D_entry分支偏移量3,执行单元16将该D_entry偏移量与CASE 指令地址寄存器单元15中的CASE指令的地址相加,得到D_entry分支的绝对地址;
(5)执行单元16根据该D_entry分支的绝对地址,进入D_entry执行,执行完成后,执行NEXT指令,该NEXT指令通知清零单元14清掉节点预测寄存器单元12中从高位到低位的第3位即D_entry分支对应的位,为后续判断做准备,同时由查找单元13根据节点预测寄存器单元12中的内容判断出下一个被置位的位,即下一个真值分支。这次判断第一个被置位的位1的工作是由NEXT指令通知查找单元13完成的,查找单元13仅需一个指令周期就可以发现第一个被置位的位1,当然这次会发现节点预测寄存器单元12的最低位为1, 该位对应EXIT分支,下次指令将进入EXIT_entry执行;
(6)进入EXIT_entry执行,其中,EXIT_entry为出口分支,整个判断流程结束。例2 假设图2中四个节点A,B, D,F.在某刻其逻辑判断真假情况如下 {A, B, D, F } = {0001}
即A,B,D为逻辑假,F为逻辑真。四个结点在程序中的先后顺序排列为A,B,D,F。那么将节点标志寄存器单元11中的高四位[n-1,n-2, n-3, n-4]初始化为{0001},其余位 [n-5,. . . 1]初始化0,而把最低位
置为1。那么程序可以按图4所示框架进行
(1)首先执行CASE指令41,实际上是将节点标志寄存器单元11的内容{000100···01} 加载到节点预测寄存器单元12中,同时CASE指令会通过查找单元13根据节点预测寄存器单元12中的内容,判断第一个被置位的位,即第一个跳转分支,当然本次会判断到节点预测寄存器单元12中从高位到低位的第4位为1,该位对应F_entry分支;
(2)查找单元13输出F_entry分支偏移量5,执行单元16将该F_entry偏移量与CASE 指令地址寄存器单元15中的CASE指令的地址相加,得到F_entry分支的绝对地址;
(3)执行单元16根据F_entry分支的绝对地址进入F_entry42分支执行,执行完成后,执行NEXT指令43,该NEXT指令通知清零单元14清掉节点预测寄存器单元12中从高位到低位的第4位即F_entry分支对应的位,为后续判断做准备,同时由查找单元13根据节点预测寄存器单元12中的内容判断下一个被置位的位,即下一个真值分支。这次判断第一个被置位的位1的工作是由NEXT指令通知查找单元13完成的,查找单元13仅需一个指令周期就可以发现第一个被置位的位1,当然会发现节点预测寄存器单元12的最低位为1, 该位对应EXIT分支,下次指令将进入EXIT_entry执行;
(4)进入EXIT_entry执行,事实上,EXIT_entry为出口分支,这样将继续程序的后续进行。综上所述,本发明的上述实施例,克服了传统两分支指令在超长判断路径中的不足,使得每次判断都会进入一个有效的执行分支,在超长跳转路径中可以有效减少两分支跳转指令造成的判断浪费,分支判断效率明显提高,可行性好。需要说明的是上述例1、例2所示的实现实例仅仅用于说明本发明的装置在分支跳转处理中的原理,而不用于限定本发明的方案,在超长路径的分支跳转处理中,还可以举出若干类似的实现实例,在此不再一一说明。与上述中转路径的分支跳转处理装置相应的,本发明的实施例还提供一种跳转路径的分支跳转处理方法,包括如下步骤
步骤Si,根据第一指令,获取跳转路径中的节点判断信息; 步骤S2,查找所述节点判断信息中的第一个被置位的位; 步骤S3,将跳转路径跳转到所述第一个被置位的位对应的分支执行; 步骤S4,在所述第一个被置位的位对应的分支执行完毕后,根据第二指令,将执行完毕的所述分支对应的所述第一个被置位的位清零,并继续查找所述节点判断信息中的第一个被置位的位。
其中,上述步骤S1-S4分别可以由相应的寄存器来执行,也可以由相应的功能模块来执行,可根据实际情况进行设计。其中,上述步骤S2可以具体为
按照从高位到低位的顺序,查找所述节点判断信息的第一个被置位的位。进一步,在CASE指令和NEXT指令框架设计中,所述第一指令为CASE指令,所述 CASE指令为所述路径的入口指令;
将跳转路径跳转到所述第一个被置位的位对应的分支执行具体为 将所述第一个被置位的位相对于所述CASE指令的地址偏移量,与所述CASE指令的地址相加,得到所述第一个被置位的位对应的分支的绝对地址,将所述跳转路径跳转到所述绝对地址对应的所述分支执行。在具体实现时,第一指令当然还可以采用其它的指令,如 BEGIN指令等,只要能表示路径的入口指令,且该入口指令的地址可以作为整个路径的起始基地址即可。所述第二指令为NEXT指令,所述NEXT指令为所述跳转路径中查找下一个分支的指令。所述节点判断信息为分支执行的逻辑值,当所述逻辑值为真时,所述分支对应的位为第一个被置位的位。需要说明的是上述装置的具体实现方法和实例均适用于该方法实施例中,也能达到相同的技术效果,在此不再赘述。与此同时,本发明的实施例还提供一种处理器,该处理器可以包括上述图3 —图4 所示的跳转路径的分支跳转处理装置,其中,上述有关于跳转路径的分支跳转处理装置的所有实现方式均适用于该处理器的实施例中,也能达到相同的技术效果,在此不再赘述。以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
10
权利要求
1.一种跳转路径的分支跳转处理装置,其特征在于,包括节点标志寄存器单元,用于保存节点判断信息;节点预测寄存器单元,用于根据第一指令,加载所述节点标志寄存器单元中保存的所述节点判断信息;查找单元,用于在所述节点预测寄存器单元中查找所述节点判断信息的第一个被置位的位;执行单元,用于将跳转路径跳转到所述第一个被置位的位对应的分支执行;清零单元,用于在所述第一个被置位的位对应的分支执行完毕后,根据第二指令,将所述节点预测寄存器单元中该分支对应的所述第一个被置位的位清零。
2.根据权利要求1所述的分支跳转处理装置,其特征在于,所述查找单元具体用于,在所述节点预测寄存器单元中,按照从高位到低位的顺序,查找所述节点判断信息的第一个被置位的位。
3.根据权利要求1所述的分支跳转处理装置,其特征在于,所述第一指令为所述路径的入口指令;所述分支跳转处理装置还包括入口指令地址寄存器单元,用于存放所述第一指令的地址;所述执行单元将所述查找单元找到的所述第一个被置位的位相对于所述第一指令的地址偏移量,与所述第一指令的地址相加,得到所述第一个被置位的位对应的分支的绝对地址,将所述跳转路径跳转到所述绝对地址对应的所述分支执行。
4.根据权利要求3所述的分支跳转处理装置,其特征在于,所述第一指令为CASE指令。
5.根据权利要求3或4所述的分支跳转处理装置,其特征在于,所述第二指令为NEXT 指令,所述NEXT指令为所述跳转路径中查找下一个分支的指令;所述清零单元在所述第一个被置位的位对应的分支执行完毕后,根据所述NEXT指令, 将所述节点预测寄存器单元中的该分支对应的所述第一个被置位的位清零。
6.一种跳转路径的分支跳转处理方法,其特征在于,包括如下步骤根据第一指令,获取跳转路径中的节点判断信息;查找所述节点判断信息中的第一个被置位的位;将跳转路径跳转到所述第一个被置位的位对应的分支执行;在所述第一个被置位的位对应的分支执行完毕后,根据第二指令,将执行完毕的所述分支对应的所述第一个被置位的位清零,并继续查找所述节点判断信息中的第一个被置位的位。
7.根据权利要求6所述的分支跳转处理方法,其特征在于,查找所述节点判断信息中的第一个被置位的位的步骤具体为按照从高位到低位的顺序,查找所述节点判断信息的第一个被置位的位。
8.根据权利要求6或7所述的分支跳转处理方法,其特征在于,所述第一指令为所述路径的入口指令;所述将跳转路径跳转到所述第一个被置位的位对应的分支执行具体为将所述第一个被置位的位相对于所述第一指令的地址偏移量,与所述第一指令的地址相加,得到所述第一个被置位的位对应的分支的绝对地址,将所述跳转路径跳转到所述绝对地址对应的所述分支执行。
9.根据权利要求8所述的分支跳转处理方法,其特征在于,所述第一指令为CASE指令。
10.根据权利要求9所述的分支跳转处理方法,其特征在于,所述第二指令为NEXT指令,所述NEXT指令为所述跳转路径中查找下一个分支的指令。
11.根据权利要求6所述的分支跳转处理方法,其特征在于,所述节点判断信息为分支执行的逻辑值,当所述逻辑值为真时,所述分支对应的位为第一个被置位的位。
12.一种处理器,其特征在于,包括如权利要求1 一 5任一项所述的分支跳转处理装置。
全文摘要
本发明提供一种跳转路径的分支跳转处理装置、方法和处理器,其中,装置包括节点标志寄存器单元,用于保存节点判断信息;节点预测寄存器单元,用于根据第一指令,加载所述节点标志寄存器单元中保存的所述节点判断信息;查找单元,用于在所述节点预测寄存器单元中查找所述节点判断信息的第一个被置位的位;执行单元,用于将跳转路径跳转到所述第一个被置位的位对应的分支执行;清零单元,用于在所述第一个被置位的位对应的分支执行完毕后,根据第二指令,将所述节点预测寄存器单元中该分支对应的所述第一个被置位的位清零。本发明的方案可以有效减少超长跳转路径中两分支跳转指令造成的判断浪费。
文档编号G06F9/38GK102566975SQ20101060721
公开日2012年7月11日 申请日期2010年12月27日 优先权日2010年12月27日
发明者李陆军 申请人:北京国睿中数科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1