CN113168327B - 一种多分支跳转处理装置和方法、处理器 - Google Patents
一种多分支跳转处理装置和方法、处理器 Download PDFInfo
- Publication number
- CN113168327B CN113168327B CN201880100044.8A CN201880100044A CN113168327B CN 113168327 B CN113168327 B CN 113168327B CN 201880100044 A CN201880100044 A CN 201880100044A CN 113168327 B CN113168327 B CN 113168327B
- Authority
- CN
- China
- Prior art keywords
- branch jump
- branch
- predicate register
- condition
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 39
- 238000003672 processing method Methods 0.000 claims abstract description 15
- 230000014509 gene expression Effects 0.000 claims description 127
- 230000006870 function Effects 0.000 claims description 12
- 239000002699 waste material Substances 0.000 abstract 1
- 230000008569 process Effects 0.000 description 20
- 150000001875 compounds Chemical class 0.000 description 12
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 239000002131 composite material Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 101100534223 Caenorhabditis elegans src-1 gene Proteins 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Abstract
一种多分支跳转处理装置和方法、处理器,用于解决现有的多分支跳转处理装置需要浪费TCAM存储空间的问题。其中多分支跳转处理装置包括:运算单元(131),用于根据多分支跳转结构内每一分支跳转条件自身的运算关系,获取对应分支跳转条件的判断结果,并将每一分支跳转条件的判断结果存储在谓词寄存器(14)中,判断结果为0或1,且多分支跳转结构包括多条分支跳转条件;分支跳转单元(132),用于根据多分支跳转结构的存储基地址和谓词寄存器(14)中存储的多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址,目标地址包括多分支跳转结构的待执行分支的索引信息。
Description
技术领域
本申请涉及处理器技术领域,尤其涉及一种多分支跳转处理装置和方法、处理器。
背景技术
在处理器运行的程序中,有一类可以改变指令流向的结构称作多分支跳转结构,多分支跳转结构包括至少两个分支和每个分支对应的判断条件(或者称作分支跳转条件),一般只有在分支对应的分支跳转条件的判断结果为真时,才会跳转到该分支的地址执行该分支,也就是说,处理器在执行多分支跳转结构之前,一般难以预测即将跳转到的分支地址。
实现对多分支跳转结构的多分支跳转,关键在于确定多分支跳转结构的待执行分支的索引信息的存储地址。目前处理器采用三态内容寻址存储器(ternary contentaddressable memory,TCAM)来确定多分支跳转结构的待执行分支的索引信息的存储地址。TCAM中存储有多分支跳转结构中各个分支对应的TCAM条目,每个分支至少对应一个TCAM条目,分支对应的分支跳转条件越复杂,该分支对应的TCAM条目的数目越多。处理器在执行多分支跳转结构时,需要对编译后的分支跳转条件与TCAM中的TCAM条目进行匹配。当匹配成功时,表明匹配到的TCAM条目对应的分支的分支跳转条件的判断结果为真,此时处理器可以确定匹配成功的TCAM条目对应的分支的索引信息的存储地址,之后由该处理器或其他装置根据确定到的存储地址执行相应分支,以实现对多分支跳转结构的多分支跳转。
目前处理器采用TCAM确定多分支跳转结构的待执行分支的索引信息的存储地址的过程,需要利用TCAM存储大量的TCAM条目,对TCAM的存储空间带来挑战。
发明内容
本申请实施例提供了一种多分支跳转处理装置和方法、处理器。
第一方面,本申请实施例提供一种多分支跳转处理装置,包括:运算单元,用于根据多分支跳转结构内每一分支跳转条件自身的运算关系,获取对应分支跳转条件的判断结果,并将每一所述分支跳转条件的判断结果存储在谓词寄存器中,所述判断结果为0或1,且所述多分支跳转结构包括多条分支跳转条件;分支跳转单元,用于根据所述多分支跳转结构的存储基地址和所述谓词寄存器中存储的所述多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址,所述目标地址包括所述多分支跳转结构的待执行分支的索引信息。由于本申请多分支跳转处理装置无需占用TCAM存储空间便可以实现分支跳转,有利于减少对TCAM存储空间的需求。
结合第一方面,在第一方面的第一种可能的实现方式中,所述分支跳转单元具体用于:查找所述谓词寄存器中的目标位,所述目标位为所述谓词寄存器中第一个被置为预设值的位;以及,根据所述存储基地址和所述目标位确定所述目标地址。该实现方式对分支跳转单元的功能进行了细化,增加了本申请实施例的可操作性。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述分支跳转单元具体用于:从所述谓词寄存器中查找多个有效位,所述多分支跳转结构中的全部分支跳转条件的判断结果在所述谓词寄存器中的存储位均为所述有效位;从多个所述有效位中查找第一个被置为预设值的目标位。分支跳转单元从有效位中查找目标位,有利于提高多分支跳转的准确性。
结合第一方面至第一方面的第二种可能的实现方式中任意一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述分支跳转条件包括N个按照确定的顺序串行排列的关系表达式,且每两个相邻的关系表达式之间通过逻辑运算符连接,N为大于或等于2的整数;所述分支跳转条件还包括N个逻辑表达式,第1个关系表达式为第1个逻辑表达式,第i个逻辑表达式的运算结果与第i+1个关系表示式通过位于第i个关系表达式与所述第i+1个关系表示式之间的逻辑运算符连接,得到第i+1个逻辑表达式,i为大于或等于1且小于N的整数;所述运算单元用于依次执行N个所述逻辑表达式,并将第N个所述逻辑表达式的运算结果存入所述谓词寄存器中,其中,所述第N个逻辑表达式的运算结果为所述分支跳转条件的判断结果。该实现方式对运算单元的功能进行了细化,增加了本申请实施例的可操作性。
结合第一方面至第一方面的第三种可能的实现方式中任意一种可能的实现方式,在第一方面的第四种可能的实现方式中,在确定所述目标地址后,所述分支跳转单元还用于根据所述目标地址执行所述待执行分支。该实现方式通过追加根据所述目标地址执行所述待执行分支的步骤,增加了本申请实施例的可实现性。
第二方面,本申请实施例提供一种多分支跳转处理方法,包括:多分支跳转处理装置根据多分支跳转结构内每一分支跳转条件自身的运算关系,获取对应分支跳转条件的判断结果,并将每一所述分支跳转条件的判断结果存储在谓词寄存器中,所述判断结果为0或1,且所述多分支跳转结构包括多条分支跳转条件;所述多分支跳转处理装置根据所述多分支跳转结构的存储基地址和所述谓词寄存器中存储的所述多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址,所述目标地址包括所述多分支跳转结构的待执行分支的索引信息。由于本申请多分支跳转处理方法无需占用TCAM存储空间便可以实现分支跳转,有利于减少对TCAM存储空间的需求。
结合第二方面,在第二方面的第一种可能的实现方式中,所述多分支跳转处理装置根据所述多分支跳转结构的存储基地址和所述谓词寄存器中存储的所述多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址包括:所述多分支跳转处理装置查找所述谓词寄存器中的目标位,所述目标位为所述谓词寄存器中第一个被置为预设值的位;以及,所述多分支跳转处理装置根据所述存储基地址和所述目标位确定所述目标地址。该实现方式对查找所述谓词寄存器中的目标位的步骤进行了细化,增加了本申请实施例的可操作性。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述多分支跳转处理装置查找所述谓词寄存器中的目标位包括:所述多分支跳转处理装置从所述谓词寄存器中查找多个有效位,所述多分支跳转结构中的全部分支跳转条件的判断结果在所述谓词寄存器中的存储位均为所述有效位;所述多分支跳转处理装置从多个所述有效位中查找第一个被置为预设值的目标位。该实现方式从有效位中查找目标位,有利于提高多分支跳转的准确性。
结合第二方面至第二方面的第二种可能的实现方式中任意一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述分支跳转条件包括N个按照确定的顺序串行排列的关系表达式,且每两个相邻的关系表达式之间通过逻辑运算符连接,N为大于或等于2的整数;所述分支跳转条件还包括N个逻辑表达式,第1个关系表达式为第1个逻辑表达式,第i个逻辑表达式的运算结果与第i+1个关系表示式通过位于第i个关系表达式与所述第i+1个关系表示式之间的逻辑运算符连接,得到第i+1个逻辑表达式,i为大于或等于1且小于N的整数;所述多分支跳转处理装置根据多分支跳转结构内每一分支跳转条件自身的运算关系,获取对应分支跳转条件的判断结果,并将每一所述分支跳转条件的判断结果存储在谓词寄存器中包括:所述多分支跳转处理装置用于依次执行N个所述逻辑表达式,并将第N个所述逻辑表达式的运算结果存入所述谓词寄存器中,其中,所述第N个逻辑表达式的运算结果为所述分支跳转条件的判断结果。该实现方式对获取对应分支跳转条件的判断结果,并将每一所述分支跳转条件的判断结果存储在谓词寄存器中的步骤进行了细化,增加了本申请实施例的可操作性。
结合第二方面至第二方面的第三种可能的实现方式中任意一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述多分支跳转处理装置确定所述目标地址之后,所述方法还包括:所述多分支跳转处理装置根据所述目标地址执行所述待执行分支。该实现方式通过追加根据所述目标地址执行所述待执行分支的步骤,增加了本申请实施例的可实现性。
第三方面,本申请实施例提供一种处理器,包括:指令缓存、译码器、谓词寄存器和执行内核;所述指令缓存用于缓存多分支跳转结构对应的指令,通过耦接于所述译码器,向所述译码器提供所述指令;所述译码器用于对所述指令进行解码,通过耦接于所述执行内核,控制所述执行内核执行所述指令;所述谓词寄存器被耦接于所述执行内核,用于向所述执行内核提供对谓词函数的返回值的读写操作;所述执行内核在执行所述指令的过程中,用于执行如第二方面或第二方面的任意一种可能的实现方式的方法。
第四方面,本申请实施例提供一种多分支跳转处理系统,包括处理器、外围设备、外部存储器以及电源;其中,电源用于为处理器、外围设备以及外部存储器供电;处理器耦接于外部存储器和一个或多个外围设备;外部存储器可以用于存储程序;处理器在执行外部存储器中存储的程序时,用于实现第二方面或第二方面的任意一种可能的实现方式的方法。
附图说明
图1为计算机的结构示意图;
图2为现有技术中用于实现多分支跳转的计算机结构示意图;
图3为本申请计算机一个实施例示意图;
图4为本申请多分支跳转处理方法一个实施例示意图;
图5为本申请多分支跳转处理方法中步骤S200一种可能的细化步骤示意图;
图6为本申请多分支跳转处理方法中步骤S210一种可能的细化步骤示意图;
图7为本申请多分支跳转处理方法中步骤S100一种可能的细化步骤示意图;
图8为本申请多分支跳转处理系统一个实施例示意图。
具体实施方式
本申请实施例提供了一种多分支跳转处理装置和方法、处理器。
下面结合附图,对本申请的实施例进行描述。
本申请中出现的术语“和/或”,可以是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。另外,本申请中字符“/”,一般表示前后关联对象是一种“或”的关系。本申请中,“至少一个”是指一个或多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
计算机是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备,主要分类包括超级计算机、网络计算机、工业控制计算机、个人电脑和嵌入式系统等。参考图1,计算机一般包括处理器1、程序存储器2和编译器3,程序存储器2用于存储程序,编译器3用于对程序存储器2中存储的程序进行编译得到指令,处理器1用于按照编译器3得到的指令执行程序存储器2中存储的程序。计算机,尤其是网络计算机(比如路由器)的程序存储器2存储的程序中一般包括大量的多分支跳转结构,因此,计算机中的处理器1需要执行大量的多分支跳转。假设程序存储器2存储的程序中包括多分支跳转结构1,多分支跳转结构1为3路多分支跳转结构,包括3个分支,每个分支对应一个分支跳转条件,那么,处理器1需要依次判断多分支跳转结构1中的分支跳转条件的逻辑值是否为真,当某个分支跳转条件的判断结果为真时,处理器1则确定该分支跳转条件对应的分支的索引信息的存储地址,之后根据确定到的存储地址执行该分支;否则,程序继续执行,从而实现处理器1对多分支跳转结构1的多分支跳转。
实现对多分支跳转结构的多分支跳转,关键在于确定多分支跳转结构的待执行分支的索引信息的存储地址。参考图2,目前需要在计算机中设置TCAM4,在TCAM4中存储多分支跳转结构中各个分支对应的TCAM条目,处理器1利用TCAM4来确定多分支跳转结构的待执行分支的索引信息的存储地址。具体的,处理器1对编译后的分支跳转条件与TCAM4中的TCAM条目进行匹配,当匹配成功后,将匹配成功的TCAM条目对应的待执行分支的索引信息的存储地址读取出来。示例性的,假设多分支跳转结构1中的第1个分支跳转条件为condition1_1=(a==A1)&&(b==B1)&&(c==C1),第2个分支跳转条件为condition1_2=(a==A2)&&(b==B2)&&(c==C2),第3个分支跳转条件为condition1_3=(a==A3)&&(b==B3)&&(c==C3),那么TCAM4可以存储3个分支分别对应的TCAM条目,其中,第1个分支对应的TCAM条目为TCAM_1={A1,B1,C1},第2个分支对应的TCAM条目为TCAM_2={A2,B2,C2},第3个分支对应的TCAM条目为TCAM_3={A3,B3,C3}。处理器1可以按照编译器3对多分支跳转结构1进行编译得到的指令获取a、b和c的值,得到编译后的分支跳转条件Key={a0,b0,c0},之后,处理器1可以在TCAM4中查找与Key匹配的TCAM条目,假设a0=A2,b0=B2,c0=C2,那么匹配成功的TCAM条目为TCAM_2。之后,处理器1可以获取TCAM_2对应的分支的索引信息的存储地址。在实际使用中,当分支跳转条件较为复杂时,一个分支可能对应多个TCAM条目,示例性,假设第1个分支跳转条件为condition1_1=(a==1)&&(b<4),那么第1个分支对应的TCAM条目可以包括:{1,0}、{1,1}、{1,2}和{1,3}。
现有技术中,处理器1在确定多分支跳转结构的待执行分支的索引信息的存储地址时,需要利用计算机中的TCAM4存储多分支跳转结构中各个分支对应的TCAM条目,对TCAM4的存储空间带来挑战。尤其当多分支跳转结构中的分支跳转条件的数目较多时,或者分支跳转条件较为复杂时,TCAM条目也存在爆炸式增长的趋势,这不仅需要占用TCAM4更多的存储空间,并且存在匹配数量庞大的问题,进而导致匹配效率过低,降低处理器1对多分支跳转结构的执行效率。
为了解决上述问题,本申请提供处理器1的一种具体结构,以确定多分支跳转结构的待执行分支的索引信息的存储地址,确定到的存储地址用于实现对多分支跳转结构的多分支跳转。参考图3,处理器1可以包括指令缓存11、译码器12、谓词寄存器(predicateregister)14和执行内核13,执行内核13包括运算单元131和分支跳转单元132。
其中,指令缓存11用于获取编译器3对程序存储器2中的多分支跳转结构进行编译得到的指令,并对获取到的指令进行缓存,通过耦接于译码器12,向译码器12提供该指令。译码器12用于对从指令缓存11获取到的指令进行解码,通过耦接于执行内核13,控制执行内核13执行相应指令。谓词寄存器14通过耦接于执行内核13,用于向执行内核13提供对谓词函数的返回值的读写操作。谓词函数是指返回值为逻辑值的函数,对于通常的函数来说,函数的返回值有可能是数字、字符串或者日期等,但是谓词函数的返回值都是逻辑值(一般为0或1,通常以1代表逻辑值为真,以0代表逻辑值为假),一个谓词函数的返回值在谓词寄存器14中占用1位。执行内核13用于在译码器12的控制下执行相应指令,以确定多分支跳转结构的待执行分支的索引信息的存储地址。执行内核13对指令的执行过程可以具体体现在运算单元131和分支跳转单元132对指令的执行过程,其中,运算单元131用于根据多分支跳转结构内每一分支跳转条件自身的运算关系,获取对应分支跳转条件的判断结果,并将每一分支跳转条件的判断结果写入谓词寄存器14中,运算单元131获取分支跳转条件的判断结果的过程可以理解为运算单元131计算谓词函数的返回值的过程,分支跳转条件的判断结果为逻辑值,即为0或1;分支跳转单元132用于根据多分支跳转结构的存储基地址和谓词寄存器14中存储的多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址,该目标地址包括多分支跳转结构的待执行分支的索引信息。在本申请一种可能的实现方式中,分支跳转单元132在确定目标地址后,可以用于根据目标地址执行该待执行分支,具体的,可以通过确定目标地址中存储的索引信息来执行该索引信息对应的分支。
由于本申请提供的处理器无需利用TCAM来确定多分支跳转结构的待执行分支的索引信息的存储地址,有利于减少对TCAM存储空间的需求。并且,由于本申请提供的处理器无需通过与TCAM条目进行匹配的方式来实现多分支跳转,因此,即使多分支跳转结构的复杂度较高,也不存在匹配数量庞大的问题,有利于降低多分支跳转结构的复杂度对处理器执行效率的影响。
在本申请一种可能的实现方式中,分支跳转单元132可以具体用于查找谓词寄存器14中第一个被置为预设值的位,为了便于描述,将谓词寄存器14中第一个被置为预设值的位称作目标位,之后,分支跳转单元132可以根据多分支跳转结构的存储基地址和查找到的目标位确定目标地址。可选的,分支跳转单元132查找谓词寄存器14中目标位的过程可以具体包括:分支跳转单元132从谓词寄存器中查找多个有效位,之后从多个有效位中查找第一个被置为预设值的目标位。其中,多分支跳转结构中的全部分支跳转条件的判断结果在谓词寄存器中的存储位均为有效位。
一些多分支跳转结构的分支跳转条件比较复杂,比如,有一类多分支跳转结构中存在这样的分支跳转条件,即一个分支跳转条件中同时包括关系运算和逻辑运算这两种运算类型,为了便于描述,将这种分支跳转条件称作复合分支跳转条件。在一种可能的实现方式中,本申请提供的处理器1可以确定包括复合分支跳转条件的多分支跳转结构的待执行分支的索引信息的存储地址。假设程序存储器2中待执行的多分支跳转结构中的某个分支跳转条件为复合分支跳转条件,该复合分支跳转条件包括N个按照确定的顺序串行排列的关系表达式,N为大于或等于2的整数,每两个相邻的关系表达式之间通过逻辑运算符连接。示例性的,该复合分支跳转条件可以为(a==A1)&&(b<=B1)||(c<C1),包括3个按照确定的顺序串行排列的关系表达式,依次为a==A1、b<=B1和c<C1,第1个和第2个关系表达式之间通过逻辑运算符“&&”连接,第2个和第3个关系表达式之间通过逻辑运算符“||”连接。对复合分支跳转条件“(a==A1)&&(b<=B1)||(c<C1)”的判断过程可以拆解为依次对3个逻辑表达式进行运算的过程:第1个关系表达式“a==A1”为第1个逻辑表达式,首先计算第1个逻辑表达式的运算结果;第1个逻辑表达式的运算结果与第2个关系表达式“b<=B1”通过位于第1个关系表达式与第2个关系表达式之间的逻辑运算符“&&”连接,得到第2个逻辑表达式,计算得到第1个逻辑表达式的运算结果之后,可以计算第2个逻辑表达式的运算结果;第2个逻辑表达式的运算结果与第3个关系表达式“c<C1”通过位于第2个关系表达式与第3个关系表达式之间的逻辑运算符“||”连接,得到第3个逻辑表达式,计算得到第2个逻辑表达式的运算结果之后,可以计算第3个逻辑表达式的运算结果,第3个逻辑表达式的运算结果即为复合分支跳转条件“(a==A1)&&(b<=B1)||(c<C1)”的判断结果。因此,可以理解为,上述复合分支跳转条件还包括N个逻辑表达式,第1个关系表达式为第1个逻辑表达式,第i个逻辑表达式的运算结果与第i+1个关系表示式通过位于第i个关系表达式与第i+1个关系表示式之间的逻辑运算符连接,得到第i+1个逻辑表达式,i为大于或等于1且小于N的整数,第N个逻辑表达式的运算结果为复合分支跳转条件的判断结果。本申请提供的处理器1在对上述待执行的多分支跳转结构进行多分支跳转的过程中,运算单元131可以根据上述复合分支跳转条件自身的运算关系,获取其判断结果,并将判断结果存储在谓词寄存器中,在一种可能的实现方式中,运算单元131可以依次执行该复合分支跳转条件中的N个逻辑表达式,并将第N个逻辑表达式的运算结果存入谓词寄存器中。
下面对计算机执行程序存储器2中的多分支跳转结构的一种可能的具体实现方式进行说明。编译器3可以对程序存储器2中存储的多分支跳转结构进行编译,得到第一指令和第二指令,指令缓存11可以依次获取第一指令和第二指令,并对其进行存储,译码器12可以对获取到的第一指令和第二指令进行解码,以控制运算单元131执行第一指令,之后控制分支跳转单元132执行第二指令。
具体的,编译器3可以对多分支跳转结构中的各个分支跳转条件依次进行编译,编译器3对每个分支跳转条件进行编译均会得到一个第一指令,之后,指令缓存11可以获取并存储得到的第一指令。依次编译是指按照多分支跳转结构中各个分支跳转条件的先后顺序进行编译,编译器3对多分支跳转结构中的各个分支跳转条件进行依次编译后,可以依次得到多个第一指令,指令缓存11可以依次获取多个第一指令并对其进行存储。之后,指令缓存11可以依次向译码器12提供第一指令,译码器12可以对获取到的第一指令进行解码,以控制运算单元131执行第一指令。也就是说,在多分支跳转结构中靠前的分支跳转条件,会被优先编译、缓存和解码,进而被运算单元131优先执行。
运算单元131可以在译码器12的控制下执行第一指令,具体的,运算单元131可以获取该第一指令对应的分支跳转条件的判断结果,分支跳转条件的判断结果为用0或1表示的逻辑值,一般可以用1代表逻辑值为真,用0代表逻辑值为假,在实际使用中,也可以以0代表逻辑值为真,以1代表逻辑值为假,此处不做具体限定。之后运算单元131可以将该第一指令对应的分支跳转条件的判断结果存储在谓词寄存器14中。一个分支跳转条件的判断结果在谓词寄存器14中占用一个位,作为举例,位宽为16的谓词寄存器14最多可以存储16个分支跳转条件的判断结果,也就是说,可以支持最多16路的多分支跳转结构。运算单元131执行多分支跳转结构对应的一个第一指令后,译码器12可以向指令缓存11获取到多分支跳转结构对应的下一个第一指令,对其进行解码,运算单元131可以在译码器12的控制下执行该第一指令。这样,运算单元131可以依次执行多分支跳转结构对应的各个第一指令,从而依次将多分支跳转结构中的各个分支跳转条件的判断结果存储在谓词寄存器14中。
运算单元131执行多分支跳转结构对应的各个第一指令,将多分支跳转结构中的各个分支跳转条件的判断结果写入谓词寄存器14之后,译码器12可以向指令缓存11获取第二指令,控制分支跳转单元132执行第二指令。第二指令中可以包括多分支跳转结构的存储基地址,分支跳转单元132在执行第二指令的过程中,可以根据多分支跳转结构的存储基地址和谓词寄存器14中存储的多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址,该目标地址包括多分支跳转结构的待执行分支的索引信息。
在上述实现方式中,编译器3可以对多分支跳转结构进行编译得到第一指令和第二指令,处理器1中的运算单元131可以通过执行第一指令,将多分支跳转结构中的全部分支跳转条件的判断结果写入谓词寄存器14中,之后分支跳转单元132可以通过执行第二指令,确定多分支跳转结构中待执行分支的索引信息的存储地址,之后,处理器1,或者计算机中的其他装置,可以根据分支跳转单元132确定到的存储地址执行多分支跳转结构的待执行分支,从而实现对多分支跳转结构的多分支跳转。
关于第一指令的设计举例和运算单元131执行第一指令的过程举例:
若程序存储器2中待执行的多分支跳转结构中的某个分支跳转条件为复合分支跳转条件,该复合分支跳转条件包括N个按照确定的顺序串行排列的关系表达式,N为大于或等于2的整数,每两个相邻的关系表达式之间通过逻辑运算符连接,根据前面对复合分跳转条件的描述可知,该复合分支跳转条件可以理解为包括N个逻辑表达式,在本申请一种可能的实现方式中,编译器3对该复合分支跳转条件进行编译后得到的第一指令可以包括N个具有确定顺序的比较指令,N个比较指令为编译器3分别对该分支跳转条件中的N个逻辑表达式依次进行编译得到的,也就是说,N个比较指令一一对应于该分支跳转条件中的N个逻辑表达式,并且第i个比较指令对应于分支跳转条件中的第i个逻辑表达式,i为小于n的任意一个正整数,也就是说,N个比较指令中的第1个比较指令为第一个编译得到的比较指令,对应于分支跳转条件中的第一个逻辑表达式,N个比较指令中的第2个比较指令为第2个编译得到的比较指令,对应于分支跳转条件中的第2个逻辑表达式,……,N个比较指令中的第N个比较指令为第N个编译得到的比较指令,对应于分支跳转条件中的第N个逻辑表达式。
每个比较指令均包括操作符域和操作数域,运算单元131按照比较指令可以进行比较运算,得到运算结果。比较运算包括逻辑运算和关系运算,因此,比较指令中的操作符域可以包括逻辑运算符域和关系运算符域。对于第i+1个比较指令,其关系运算符域用于指示该比较指令对应的关系运算的类型,即复合分支跳转条件中第i+1个关系表达式对应的关系运算的类型,也可以理解为第i+1个逻辑表达式对应的关系运算的类型;其逻辑运算符域用于指示该比较指令对应的逻辑运算的类型,即复合分支跳转条件中第i个关系表达式和第i+1个关系表达式之间的逻辑运算符的类型,也可以理解为第i+1个逻辑表达式对应的逻辑运算的类型。比较指令中的操作数域包括源操作数域和目的操作数域,源操作数域用于指示比较运算的源操作数,目的操作数域用于索引比较运算的目的操作数在谓词寄存器14中的存储位置。比较指令中的源操作数域可以具体包括第一源操作数域和第二源操作数域。对于第i+1个比较指令,其第一源操作数域用于指示该比较指令对应的关系运算的源操作数,即复合分支跳转条件中第i+1个关系表达式中的源操作数;其第二源操作数域用于索引该比较指令对应的逻辑运算的源操作数,即第i个比较指令的目的操作数。可选的,第i+1个比较指令中的第二源操作数域可以与第i个比较指令中的目的操作数域指向同一存储地址。第i+1个比较指令中的第一源操作数域可以对应于立即数,也可以对应于第i+1个关系表达式中的源操作数的存储地址,若为后者,在本申请的一种可能的实现方式中,继续参考图3,处理器1还可以包括通用寄存器15,比较指令中的第一源操作数域可以指向通用寄存器15,通用寄存器15被耦接于运算单元131,用于向运算单元131提供关系运算的源操作数。
若第一指令包括N个比较指令,那么运算单元131可以依次执行N个比较指令。以运算单元131执行第i+1个比较指令的过程为例,运算单元131可以根据第i+1个比较指令中的关系运算符域和第一源操作数域进行关系运算,得到第i+1个比较指令对应的关系运算的结果;之后,运算单元131可以根据得到的关系运算的结果以及第i+1个比较指令中的逻辑运算符域和第二源操作数域进行逻辑运算,得到第i+1个比较指令对应的逻辑运算的结果;之后,运算单元131可以将得到的第i+1个比较指令对应的逻辑运算的结果按照第i+1个比较指令中的目的操作数域存入谓词寄存器14中。在运算单元131执行完第N个比较指令之后,运算单元131完成对第一指令的执行,运算单元131得到的第N个比较指令对应的逻辑运算的结果为第一指令的目的操作数,即第一指令对应的分支跳转条件的判断结果,也就是说,第N个比较指令中的目的操作数域在谓词寄存器14中对应的存储位置(或位)存储有该第一指令对应的分支跳转条件的判断结果。
在运算单元131按照第i+1个比较指令得到第i+1个比较指令对应的逻辑运算的结果后,第i个比较指令中的目的操作数域对应的存储位置中的存储内容便不再被使用,为了节约谓词寄存器14的存储空间,在一种可能的实现方式中,对于第i+1个比较指令,其目的操作数域和第二源操作数域可以指向谓词寄存器14中的同一存储地址,即复用谓词寄存器14中的同一位。
需要说明的是,若分支跳转条件中的第1个关系表达式前面不包括逻辑运算符,第一指令中的第1个比较指令可以不包括逻辑运算符域和第二源操作数域,此时,运算单元131按照第1个比较指令只需计算第1个关系表达式的运算结果,并将第1个关系表达式的运算结果作为第1个比较指令的目的操作数,按照第1个比较指令中的目的操作数域存储在谓词寄存器14中;或者,为了各个比较指令格式的统一,第1个比较指令中的操作符域仍然可以包括逻辑运算符域和第二源操作数域,但是,运算单元131得到第1个比较指令对应的关系运算的结果之后,运算单元131按照第1个比较指令中的逻辑运算符域和第二源操作数域执行逻辑运算得到的结果应仍为第1个比较指令比较指令对应的关系运算的结果。
为了便于理解,下面举例说明运算单元131执行第一指令的过程。假设待执行的多分支跳转结构为8路多分支跳转结构2,包括至少一个复合分支跳转条件,以多分支跳转结构2的第1个分支跳转条件为复合分支跳转条件为例,编译器3对多分支跳转结构2中的分支跳转条件进行依次编译,可以得到8个第一指令,第1个分支跳转条件对应于第1个第一指令,第2个分支跳转条件对应于第2个第一指令,……,第8个分支跳转条件对应于第8个第一指令。指令缓存11可以依次获取编译器3得到的8个第一指令并对其进行缓存,向译码器12依次提供8个第一指令,译码器12可以控制运算单元131依次执行8个第一指令。下面对运算单元131执行第1个第一指令的具体过程进行举例说明。假设多分支跳转结构2的第1个分支跳转条件condition2_1=(a==A1)&&(b<=B1)||(c<C1),可见condition2_1包括3个关系表达式,或者可以理解为包括3个逻辑表达式,因此第1个第一指令可以包括3个比较指令。示例性的,本申请中的比较指令可以如表1所示(表1中的第一行用于表示存储位,第二行用于表示相应存储位对应的存储内容):
表1
其中,src1和src2对应于第一源操作数域,Pn对应于目的操作数域,Type对应于关系运算符域,Pm对应于第二源操作数域,cond对应于逻辑运算符域,opcode对应于操作码域,操作码域中指示的操作码是指计算机程序中所规定的要执行操作的哪一指令(第一指令或第二指令,通常用代码表示),表示该指令应进行什么性质的操作。在存在前一比较指令的情况下,Pm与该前一比较指令的Pn指向谓词寄存器14中的同一存储位置。
示例性的,关系运算符域可以如表2设计:
表2
关系运算符编码 | 关系运算符 | 执行动作 |
000 | 保留 | |
001 | 保留 | |
010 | != | Result=(src1!=src2)?1:0 |
011 | == | Result=(src1==src2)?1:0 |
100 | <= | Result=(src1<=src2)?1:0 |
101 | < | Result=(src1<src2)?1:0 |
110 | > | Result=(src1>src2)?1:0 |
111 | >= | Result=(src1>=src2)?1:0 |
示例性的,逻辑运算符域可以如表3设计:
表3
逻辑运算符编码 | 逻辑运算符 | 执行动作 |
00 | && | Pn=(Pm&&Result)?1:0 |
01 | || | Pn=(Pm||Result)?1:0 |
10 | N | If(Pm)Pn=Result |
11 | UN | Pn=result |
若分支跳转条件中的第一个逻辑表达式(即第一个关系表达式)对应的比较指令中的操作符域仍然包括逻辑运算符域和第二源操作数域,那么该比较指令中的逻辑运算符域可以对应于表3中的逻辑运算符“UN”,运算单元131根据该比较指令中的逻辑运算符域和第二源操作数域执行该比较指令对应的逻辑运算得到的逻辑运算的结果仍为第一关系运算的结果。示例性的,condition2_1(即(a==A1)&&(b<=B1)||(c<C1))对应的3个比较指令可以分别如表4、表5和表6所示(每个表中的第一行用于表示存储位,第二行用于表示相应存储位对应的存储内容):
表4
表5
表6
其中,Pm1、Pn1、Pn2和Pn3对应于谓词寄存器14中的存储位置,opcode_1对应于比较运算的操作码域。其中,a、b、c、A1、B1和C1可以为立即数,也可以为第一源操作数的存储地址。
运算单元131执行第1个第一指令的过程,即为依次执行上述3个比较指令的过程。运算单元131首先执行如表4所示的第1个比较指令,具体过程可以为:首先,运算单元131判断“a==A1”是否为真,若为真,则运算单元131得到第1个比较指令对应的关系运算的结果为1,若为假,则运算单元131得到第1个比较指令对应的关系运算的结果为0。这里假设“a==A1”为真,第1个比较指令对应的关系运算的结果为1。之后,运算单元131可以执行“Pn1=result”,即第1个比较指令对应的逻辑运算的结果为第1个比较指令对应的关系运算的结果,之后,运算单元131可以将第1个比较指令的结果“1”存储在Pn1指示的谓词寄存器14中的位。假设谓词寄存器14有8个位,用来存储多分支跳转结构1中8个分支跳转条件的判断结果,按照谓词寄存器14的存储顺序(从低位至高位),Pn1可以对应于谓词寄存器14中的第一个位,运算单元131执行第1个比较指令中的后,谓词寄存器14中的存储内容可以参考表7所示(表7中的第一行用于表示谓词寄存器14中的位,第二行用于表示相应位对应的存储内容):
表7
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
运算单元131执行第1个比较指令之后,可以执行第2个比较指令,具体过程可以为:首先,由运算单元131判断“b<=B1”是否为真,这里假设“b<=B1”为真,第2个比较指令对应的关系运算的结果(即Result)为1。之后,运算单元131可以执行“Pn2=(Pn1&&Result)?1:0”,因此,运算单元131可以根据Pn1从谓词寄存器14的第1个位中读取数据“1”,由于Pn1指示的值与Result指示的值均为“1”,因此,第2个比较指令的目的操作数(逻辑运算的结果)为1。假设每个比较指令中的第二源操作数和目的操作数域指向谓词寄存器14中的同一存储位置,那么,第1个第一指令中的每个比较指令的目的操作数域均指向谓词寄存器14中的第1个位,因此,运算单元131可以将第2个比较指令的目的操作数“1”存储在谓词寄存器14中的第1个位。运算单元131执行第2个比较指令中的后,谓词寄存器14中的存储内容仍然可以参考表7所示。
运算单元131执行第2个比较指令之后,可以继续执行第3个比较指令,具体过程可以参照上述执行第2个比较指令的过程,此处不再赘述。假设第3个比较指令得到的目的操作数为“1”,运算单元131执行第3个比较指令中的后,谓词寄存器14中的存储内容仍然可以参考表7所示。至此,运算单元131完成对第1个第一指令的执行,第1个第一指令对应的第1个分支跳转条件condition2_1的判断结果为“1”,存储在谓词寄存器14的第1个位中,如表7所示。
之后,运算单元131可以在译码器12的控制下,依次执行第2个第一指令、第3个第一指令、……、第8个第一指令,将多分支跳转结构1中的各个分支跳转条件的判断结果存储在谓词寄存器14中,假设此时谓词寄存器14中的存储内容如表8所示(表8中的第一行用于表示谓词寄存器14中的位,第二行用于表示相应位对应的存储内容):
表8
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 |
关于第二指令的设计举例和分支跳转单元132执行第二指令的过程举例:
运算单元131执行多分支跳转结构对应的各个第一指令之后,译码器12可以向指令缓存11获取第二指令。在一种可能的实现方式中,第二指令可以包括第三源操作数域,第三源操作数域用于指示多分支跳转结构对应的基地址,多分支跳转结构对应的基地址可以指向随机存取存储器。在译码器12的控制下,分支跳转单元132可以执行第二指令,具体的,分支跳转单元132可以查找谓词寄存器14中第一个被置为预设值的位,即目标位。预设值可以为1或0,此处不做具体限定,以下实施例中,本申请以预设值为1为例进行说明。之后,分支跳转单元132可以根据查找到的目标位确定待执行分支的偏移地址,之后,分支跳转单元132可以根据确定的待执行分支的偏移地址和第二指令中的第三源操作数域对应的基地址确定目标地址。
在运算单元131将多分支跳转结构中的各个分支跳转条件的判断结果存储在谓词寄存器14中之后,若谓词寄存器14的位宽与多分支跳转结构中的分支跳转条件的数目相等,谓词寄存器14中的每个位均对应于一个分支跳转条件的判断结果,此时可以根据谓词寄存器14中的全部位来查找目标位。示例性的,假设谓词寄存器14的位宽为8,运算单元131将8路的多分支跳转结构中的各个分支跳转条件的判断结果存储在谓词寄存器14中之后,继续参考上述基于多分支跳转结构2的例子,谓词寄存器14中各位的存储内容可以参考表8所示。假设预设值为1,由表8可知,谓词寄存器14中第一个被置为1的位为第1位,即目标位为第1位,目标位对应于多分支跳转结构中的第1个分支跳转条件(即condition2_1),那么第1个分支跳转条件对应的第1个分支为待执行分支,待执行分支在基地址的基础上的偏移地址为1。但是,若谓词寄存器14的位宽大于多分支跳转结构中的分支跳转条件的数目,那么谓词寄存器14中的部分位不对应于分支跳转条件的判断结果,此时根据谓词寄存器14中的全部位来查找目标位存在错误的可能性。示例性的,假设谓词寄存器14的位宽为8,运算单元131将3路的多分支跳转结构中的各个分支跳转条件的判断结果存储在谓词寄存器14中之后,谓词寄存器14中各位的存储内容仍然参考表8所示,其中,多分支跳转结构的3个分支跳转条件分别存储在谓词寄存器14中的第2、3、4位,若根据谓词寄存器14中的全部位来查找目标位,那么第1位为目标位,根据目标位确定的偏移地址为1。然而,由于第2、3、4位中第一个被置为1的位为第3位,因此,目标位应为第3位,同时,由于目标位在第2、3、4位中处于第2的位置,因此,目标位应对应于多分支跳转结构中的第二个分支跳转条件,待执行分支的偏移地址应为2。
为了尽量避免上述因谓词寄存器14的位宽大于多分支跳转结构中的分支跳转条件的数目所造成的错误,提高分支跳转单元132对第二指令执行的准确性,在一种可能的实现方式中,第二指令还可以包括第四源操作数域,第二指令中的第四源操作数域用于指示谓词寄存器14中的有效位,有效位对应于分支跳转条件的判断结果在谓词寄存器14中的存储位置。示例性的,本申请中的第二指令可以如表9所示(表9中的第一行用于表示存储位,第二行用于表示相应存储位对应的存储内容):
表9
其中,src1对应于第二指令的第三源操作数域,用于指示多分支跳转结构对应的基地址,src2对应于第二指令的第四源操作数域,用于指示谓词寄存器14中的有效位,opcode对应于操作码域,假设第二指令对应的操作码为opcode_2。
在一种可能的实现方式中,第二指令中的第四源操作数域可以为立即数,第四源操作数域src2的位宽与谓词寄存器14的位宽相同,可以通过将src2中、与谓词寄存器14中有效位相对应的位置为预设值(比如1)来指示有效位。假设谓词寄存器14的位宽为8,将3路的多分支跳转结构的分支跳转条件的判断结果存储在谓词寄存器14中的第2个、第3个和第4个位之后,第二指令可以参考表10所示(表10中的第一行用于表示存储位,第二行用于表示相应存储位对应的存储内容):
表10
示例性的,运算单元131将多分支跳转结构中的分支跳转条件的判断结果均存储在谓词寄存器14中之后,假设谓词寄存器14的存储内容如表8所示,第二指令如表10所示,分支跳转单元132执行第二指令的过程可以具体包括:首先,分支跳转单元132可以根据第二指令中的第四源操作数域确定谓词寄存器14中的有效位为第2位、第3位和第4位,之后从谓词寄存器14的有效位中查找第一个被置为预设值的位作为目标位(即第3位)。之后,分支跳转单元132可以根据分支跳转单元132查找到的有效位(即第2位、第3位和第4位)和目标位(即第3位)确定待执行分支的偏移地址为2。之后,分支跳转单元132便可以根据分支跳转单元132确定的待执行分支的偏移地址和第二指令中的第三源操作数域(src1)确定目标地址,在目标地址存储有待执行分支的索引信息。
通过上述对处理器1的工作过程的说明,可见处理器1中执行多分支跳转处理的主要部分为执行内核13,因此又将本申请处理器1中的执行内核13称作多分支跳转处理装置。
与上述多分支跳转处理装置(即执行内核13)相应的,本申请实施例还提供一种多分支跳转处理方法,参考图4,本申请多分支跳转处理方法一个实施例包括如下步骤:
S100、获取多分支跳转结构内每一分支跳转条件的判断结果,并将每一判断结果存储在谓词寄存器中;
多分支跳转结构包括多条分支跳转条件,多分支跳转处理装置可以根据多分支跳转结构内每一分支跳转条件自身的运算关系,获取对应分支跳转条件的判断结果,并将获取到的每一分支跳转条件的判断结果存储在谓词寄存器中,其中,分支跳转条件的判断结果为0或1。
S200、根据多分支跳转结构的存储基地址和谓词寄存器中存储的多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址。
多分支跳转处理装置将多分支跳转结构内每一分支跳转条件的判断结果存储在谓词寄存器中之后,可以根据多分支跳转结构的存储基地址和谓词寄存器中存储的多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址,目标地址包括多分支跳转结构的待执行分支的索引信息。
其中,步骤S100可以由上述执行内核13中的运算单元131执行,步骤S200可以由执行内核13中的分支跳转单元132执行。
参考图5,步骤S200一种可能的细化步骤可以包括:
S210、查找谓词寄存器中的目标位;
多分支跳转处理装置将多分支跳转结构内每一分支跳转条件的判断结果存储在谓词寄存器中之后,可以查找谓词寄存器中第一个被置为预设值的位,为了便于描述,将谓词寄存器中的该位称作目标位。
S220、根据存储基地址和目标位确定目标地址。
多分支跳转处理装置查找到谓词寄存器中的目标位之后,可以根据多分支跳转结构的存储基地址和目标位确定目标地址。
参考图6,步骤S210一种可能的细化步骤可以包括:
S211、从谓词寄存器中查找多个有效位;
多分支跳转处理装置将多分支跳转结构内每一分支跳转条件的判断结果存储在谓词寄存器中之后,可以从谓词寄存器中查找全部有效位,多分支跳转结构中的全部分支跳转条件的判断结果在谓词寄存器中的存储位均为有效位,或者说,多分支跳转结构中的每个分支跳转条件的判断结果在谓词寄存器中的存储位均作为一个有效位,示例性的,8路多分支跳转结构在谓词寄存器中产生8个有效位。由于多分支跳转结构包括多条分支跳转条件,因此,多分支跳转处理装置可以从谓词寄存器中查找到多个有效位。
S212、从多个有效位中查找第一个被置为预设值的目标位。
多分支跳转处理装置查找到多个有效位之后,可以从多个有效位中查找第一个被置为预设值的目标位。预设值可以为1或0。
参考图7,步骤S100一种可能的细化步骤可以包括:
S110、若分支跳转条件包括N个逻辑表达式,则依次执行N个逻辑表达式;
多分支跳转处理装置可以根据多分支跳转结构内每一分支跳转条件自身的运算关系,获取对应分支跳转条件的判断结果,对于多分支跳转结构中的包括N个逻辑表达式的分支跳转条件,多分支跳转装置获取其判断结果的过程可以具体为:依次执行N个逻辑表达式。
包括N个逻辑表达式的分支跳转条件,包括N个按照确定的顺序串行排列的关系表达式,且每两个相邻的关系表达式之间通过逻辑运算符连接,N为大于或等于2的整数,第1个关系表达式为第1个逻辑表达式,第i个逻辑表达式的运算结果与第i+1个关系表示式通过位于第i个关系表达式与第i+1个关系表示式之间的逻辑运算符连接,得到第i+1个逻辑表达式,i为大于或等于1且小于N的整数。
S120、将第N个逻辑表达式的运算结果存入谓词寄存器中。
多分支跳转装置依次执行N个逻辑表达式之后,可以将第N个逻辑表达式的运算结果存入谓词寄存器中。第N个逻辑表达式的运算结果为分支跳转条件的判断结果,将第N个逻辑表达式的运算结果存入谓词寄存器中即意味着将该分支跳转条件的判断结果存入谓词寄存器中。
需要说明的是,前述关于执行内核13的各个装置实施例均适用于本申请多分支跳转处理方法的实施例,且方法实施例和相应的装置实施例可以达到相同的技术效果,此处不再赘述。
本申请还提供一种多分支跳转处理系统,参考图8,本申请一种可能的多分支跳转处理系统可以包括处理器81、外围设备82、外部存储器83以及电源84,电源84用于为处理器81、外围设备82以及外部存储器83供电,处理器81耦接于外部存储器83和一个或多个外围设备82。外部存储器83可以用于存储程序,可以包括任何类型的存储器,例如,静态随机存取存储器(static random-access memory,SRAM)、只读存储器(read-only memory,ROM)等。处理器81的具体结构可以参考图3示出的处理器1和图3对应的处理器1的实施例内容,处理器81在执行外部存储器83中存储的程序时,可以执行图4至图7对应的任意一种方法实施例。根据多分支跳转处理系统的类型,外围设备82可以包括任意期望的电路,多分支跳转处理系统可以是任何类型的计算系统,比如台式计算机、工作站、网络机顶盒等,在一种可能的实现方式中,多分支跳转处理系统可以是移动设备(例如智能手机和平板电脑等),并且外围设备82可包括用于各种类型无线通信的设备,比如wifi设备、蓝牙设备、蜂窝设备和全球定位系统等。外围设备82还可以包括另外的存储装置。外围设备82可以包括用户界面设备比如显示屏、键盘、麦克风等。
在本申请的各实施例中,为了方面理解,进行了多种举例说明。然而,这些例子仅仅是一些举例,并不意味着是实现本申请的最佳实现方式。
以上对本申请所提供的技术方案进行了详细介绍,本申请中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (11)
1.一种多分支跳转处理装置,其特征在于,包括:
运算单元,用于根据多分支跳转结构内每一分支跳转条件自身的运算关系,获取对应分支跳转条件的判断结果,并将每一所述分支跳转条件的判断结果存储在谓词寄存器中,所述判断结果为0或1,且所述多分支跳转结构包括多条分支跳转条件;
分支跳转单元,用于根据所述多分支跳转结构的存储基地址和所述谓词寄存器中存储的所述多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址,所述目标地址包括所述多分支跳转结构的待执行分支的索引信息。
2.根据权利要求1所述的多分支跳转处理装置,其特征在于,所述分支跳转单元具体用于:
查找所述谓词寄存器中的目标位,所述目标位为所述谓词寄存器中第一个被置为预设值的位;以及,
根据所述存储基地址和所述目标位确定所述目标地址。
3.根据权利要求2所述的多分支跳转处理装置,其特征在于,所述分支跳转单元具体用于:
从所述谓词寄存器中查找多个有效位,所述多分支跳转结构中的全部分支跳转条件的判断结果在所述谓词寄存器中的存储位均为所述有效位;
从多个所述有效位中查找第一个被置为预设值的目标位。
4.根据权利要求1至3中任一项所述的多分支跳转处理装置,其特征在于,所述分支跳转条件包括N个按照确定的顺序串行排列的关系表达式,且每两个相邻的关系表达式之间通过逻辑运算符连接,N为大于或等于2的整数;
所述分支跳转条件还包括N个逻辑表达式,第1个关系表达式为第1个逻辑表达式,第i个逻辑表达式的运算结果与第i+1个关系表示式通过位于第i个关系表达式与所述第i+1个关系表示式之间的逻辑运算符连接,得到第i+1个逻辑表达式,i为大于或等于1且小于N的整数;
所述运算单元用于依次执行N个所述逻辑表达式,并将第N个所述逻辑表达式的运算结果存入所述谓词寄存器中,其中,所述第N个所述逻辑表达式的运算结果为所述分支跳转条件的判断结果。
5.根据权利要求1至3中任一项所述的多分支跳转处理装置,其特征在于,在确定所述目标地址后,所述分支跳转单元还用于根据所述目标地址执行所述待执行分支。
6.一种多分支跳转处理方法,其特征在于,包括:
多分支跳转处理装置根据多分支跳转结构内每一分支跳转条件自身的运算关系,获取对应分支跳转条件的判断结果,并将每一所述分支跳转条件的判断结果存储在谓词寄存器中,所述判断结果为0或1,且所述多分支跳转结构包括多条分支跳转条件;
所述多分支跳转处理装置根据所述多分支跳转结构的存储基地址和所述谓词寄存器中存储的所述多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址,所述目标地址包括所述多分支跳转结构的待执行分支的索引信息。
7.根据权利要求6所述的多分支跳转处理方法,其特征在于,所述多分支跳转处理装置根据所述多分支跳转结构的存储基地址和所述谓词寄存器中存储的所述多分支跳转结构中的全部分支跳转条件的判断结果确定目标地址包括:
所述多分支跳转处理装置查找所述谓词寄存器中的目标位,所述目标位为所述谓词寄存器中第一个被置为预设值的位;以及,
所述多分支跳转处理装置根据所述存储基地址和所述目标位确定所述目标地址。
8.根据权利要求7所述的多分支跳转处理方法,其特征在于,所述多分支跳转处理装置查找所述谓词寄存器中的目标位包括:
所述多分支跳转处理装置从所述谓词寄存器中查找多个有效位,所述多分支跳转结构中的全部分支跳转条件的判断结果在所述谓词寄存器中的存储位均为所述有效位;
所述多分支跳转处理装置从多个所述有效位中查找第一个被置为预设值的目标位。
9.根据权利要求6至8中任一项所述的多分支跳转处理方法,其特征在于,所述分支跳转条件包括N个按照确定的顺序串行排列的关系表达式,且每两个相邻的关系表达式之间通过逻辑运算符连接,N为大于或等于2的整数;
所述分支跳转条件还包括N个逻辑表达式,第1个关系表达式为第1个逻辑表达式,第i个逻辑表达式的运算结果与第i+1个关系表示式通过位于第i个关系表达式与所述第i+1个关系表示式之间的逻辑运算符连接,得到第i+1个逻辑表达式,i为大于或等于1且小于N的整数;
所述多分支跳转处理装置根据多分支跳转结构内每一分支跳转条件自身的运算关系,获取对应分支跳转条件的判断结果,并将每一所述分支跳转条件的判断结果存储在谓词寄存器中包括:
所述多分支跳转处理装置用于依次执行N个所述逻辑表达式,并将第N个所述逻辑表达式的运算结果存入所述谓词寄存器中,其中,所述第N个所述逻辑表达式的运算结果为所述分支跳转条件的判断结果。
10.根据权利要求6至8中任一项所述的多分支跳转处理方法,其特征在于,所述多分支跳转处理装置确定所述目标地址之后,所述方法还包括:
所述多分支跳转处理装置根据所述目标地址执行所述待执行分支。
11.一种处理器,其特征在于,包括:
指令缓存、译码器、谓词寄存器和执行内核;
所述指令缓存用于缓存多分支跳转结构对应的指令,通过耦接于所述译码器,向所述译码器提供所述指令;
所述译码器用于对所述指令进行解码,通过耦接于所述执行内核,控制所述执行内核执行所述指令;
所述谓词寄存器被耦接于所述执行内核,用于向所述执行内核提供对谓词函数的返回值的读写操作;
所述执行内核在执行所述指令的过程中,用于执行如权利要求6至10中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/121901 WO2020124400A1 (zh) | 2018-12-19 | 2018-12-19 | 一种多分支跳转处理装置和方法、处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113168327A CN113168327A (zh) | 2021-07-23 |
CN113168327B true CN113168327B (zh) | 2024-07-05 |
Family
ID=
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468357A (zh) * | 2013-09-16 | 2015-03-25 | 中兴通讯股份有限公司 | 流表的多级化方法、多级流表处理方法及装置 |
CN107018078A (zh) * | 2017-01-25 | 2017-08-04 | 华为技术有限公司 | 多分支跳转协处理方法及装置 |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468357A (zh) * | 2013-09-16 | 2015-03-25 | 中兴通讯股份有限公司 | 流表的多级化方法、多级流表处理方法及装置 |
CN107018078A (zh) * | 2017-01-25 | 2017-08-04 | 华为技术有限公司 | 多分支跳转协处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7870371B2 (en) | Target-frequency based indirect jump prediction for high-performance processors | |
CN101965554B (zh) | 选择性地提交已执行指令的结果的系统和方法 | |
US9880842B2 (en) | Using control flow data structures to direct and track instruction execution | |
JP6718454B2 (ja) | 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと | |
US5996060A (en) | System and method for concurrent processing | |
US20150106598A1 (en) | Computer Processor Employing Efficient Bypass Network For Result Operand Routing | |
US20170090922A1 (en) | Efficient Instruction Pair for Central Processing Unit (CPU) Instruction Design | |
JP2014194799A (ja) | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 | |
CN108780397B (zh) | 程序循环控制 | |
US11226821B2 (en) | Computer processor employing operand data with associated meta-data | |
US20230084523A1 (en) | Data Processing Method and Device, and Storage Medium | |
US8095775B1 (en) | Instruction pointers in very long instruction words | |
KR101016257B1 (ko) | 프로세서 및 정보 처리 장치 | |
KR100986375B1 (ko) | 피연산자의 빠른 조건부 선택 | |
CN115576608A (zh) | 处理器核、处理器、芯片、控制设备和指令融合方法 | |
US6871343B1 (en) | Central processing apparatus and a compile method | |
US8707013B2 (en) | On-demand predicate registers | |
US20100037036A1 (en) | Method to improve branch prediction latency | |
CN112241288A (zh) | 在硬件中检测条件分支的动态控制流重汇聚点 | |
US10019264B2 (en) | System and method for contextual vectorization of instructions at runtime | |
JP2009524167A5 (zh) | ||
US8285976B2 (en) | Method and apparatus for predicting branches using a meta predictor | |
Petrov et al. | Low-power branch target buffer for application-specific embedded processors | |
US8521999B2 (en) | Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history | |
US20040230782A1 (en) | Method and system for processing loop branch instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |