巢状流程控制的方法与处理系统的制作方法

文档序号:6574399阅读:182来源:国知局

专利名称::巢状流程控制的方法与处理系统的制作方法
技术领域
:本发明涉及一种用于一巢状流程控制的方法与装置,特别涉及一种用于依据一谓词寄存器与一分支寄存器的一巢状流程控制的方法与处理系统。
背景技术
:单一指令多重数据(SingleInstructionMultipleData,SIMD)处理器具有许多优点与缺点,举例来说,在SIMD的结构中,指令执行流程控制(flowcontrol,或称为分支控制branchcontrol)都相当的困难,因为对于同一个分支指令处理的多个不同数据,可能会造成不同的分支结果,但是受限于此处理系统仅能够在同一时间内执行单一指令于多个数据的特性,所以需要一些特殊技巧来解解决在此处理系统结构下,执行不同指令流程的问题。巢状式流程控制更恶化了此种问题。然而,对于许多应用来说,例如(但不限制于)绘图相关的应用等,可以利用SIMD的平行处理结构特性来处理需要做类似运算的多笔数据。相对于S頂D处理器的另一种多重指令多重数据(MultipleInstructionMultipleData,MIMD)处理器虽然可以有效解决巢状循环处理的问题,但却需要消耗十分庞大的硬件资源以及花费相当高的制造成本,且相较于SIMD,MIMD更是难以控制。关于SIMD与MIMD的操作是相关
技术领域
中具有通常知识者所知,故不在此赘述额外的细节,同样地,就目前所知,仍然需要更好的方法来改进在MIMD运算系统中的巢状流程控制,因此现在很明显的需要新且改良过的方法与装置。
发明内容因此,本发明的目的之一为提供一种在单一指令多重数据处理器结构下,依据一谓词寄存器与一分支寄存器来进行一巢状流程控制的方法与处理系统,以解决前述问题。根据本发明的一实施例,揭露了一种用于单一指令多重数据处理器结构下巢状流程控制的方法,该方法包含提供至少一谓词寄存器与一分支寄存器;接收至少一指令,该至少一指令包含至少一流程控制指令;每次当一流程控制指令被撷取或解码或执行时,使用该分支寄存器存储一深度指示值;依据该流程控制指令的一计算结果设定该谓词寄存器;以及依据该谓词寄存器与该分支寄存器执行跟随该流程控制指令之后的至少一指令。根据本发明的一实施例,其另揭露了一种用于单一指令多重数据处理器结构下巢状流程控制的方法,该方法包含提供至少一谓词计数器与一深度计数器;接收至少一指令,该至少一指令包含至少一流程控制指令;每次当一流程控制指令被撷取或解码或执行时,使用该深度计数器存储一深度计数值;依据该流程控制指令的一计算结果,使用一预定数值与该深度计数器中至少其一来设定该谓词计数器;以及依据该谓词计数器与该深度计数器来执行跟随该流程控制指令之后的至少一指令。根据本发明的一实施例,其又揭露了一种具有巢状流程控制的处理系统,该处理系统包含一指令緩沖器,用于接收与存储至少一指令,该至少一指令包含至少一流程控制指令;至少一分支寄存器,用来在每次当一流程控制指令被撷取或解码或执行时存储一深度指示值;一处理单元,耦接于该指令緩冲器,包含有至少一谓词寄存器,而每一谓词寄存器用来指示一相对应深度指示值所指示的巢状流程执行深度下的执行状态;一执行单元,用于执行该至少一指令,其中,该谓词寄存器依据由该执行单元所执行的该流程控制指令的一计算结果与一目前巢状流程执行深度来加以设定;以及一流程控制单元,耦接于该分支寄存器与该谓词寄存器,用于控制该执行单元依据该谓词寄存器来执行跟随该流程控制指令之后的至少一指令。根据本发明的一实施例,其另揭露了一种具有巢状流程控制的处理系统,该处理系统包含至少一谓词计数器,用于存储一谓词计数值;一指令撷取/解码单元,用于接收、存储与解码至少一指令,该至少一指令包含至少一流程控制指令;一深度计数器,耦接于该指令撷取/解码单元,用于存储一深度计数值;一流程控制单元,耦接于该深度计数器与该谓词计数器,每次当一流程控制指令被撷取或解码或执行时,该流程控制单元用于利用该深度计数值来追踪一巢状流程执行深度;以及一执行单元,用于依据该流程控制指令的一计算结果而使用一预定数值与该谓词计数器中至少其一来设定该深度计数器;以及用于依据该谓词计数器与该深度计数器执行跟随该流程控制指令之后的至少一指令。图1示出了本发明不支4寺^是早离开(early-out)^L制的处理系统100的第一实施例的方块图。图2示出了本发明根据图1所示的不支持提早离开机制的第一实施例所执行的方法的流程图。图3示出了根据本发明支持一提早离开机制的处理系统300的第一实施例的方块图。图4示出了本发明根据图3所示的支持提早离开机制的第一实施例所执行的方法的流程图。图5示出了根据本发明不支持一提早离开机制的处理系统500的第二实施例的方块图。图6示出了本发明根据图5所示的不支持一提早离开机制的第二实施例所执行的方法的流程图。图7示出了本发明支持一提早离开机制的处理系统700的第二实施例的方块图。图8示出了本发明根据图7所示的支持一提早离开机制的第二实施例所<table>tableseeoriginaldocumentpage8</column></row><table>具体实施方式在说明书及后续的申请专利范围当中使用了某些词汇来指称特定的组件。所属领域中具有通常知识者应可理解,硬件制造商可能会用不同的名词来称呼同一为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及后续的请求项当中所提及的「包含」是一开放式的用语,故应解释成「包含但不限定于」。以外,「耦接」一词在此包含任何直接及间接的电气连接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表该第一装置可直接电气连接于该第二装置,或透过其它装置或连接手段间接地电气连接至该第二装置。在后续的说明中,「流程控制指令」这个词汇可以作为一进入流程控制指令(例如IF、L00P、REP、BREAK或CALL),或是一终止流程控制指令(例如ELSE、ENDIF、ENDLO0P、ENDREP或RET),其中,IF流程控制指令与ELSE流程控制指令用于定义当此IF流程控制指令的计算结果对应一条件判断逻辑TRUE时具有会被执行的指令的一程序块;ELSE流程控制指令与END工F流程控制指令用于定义当此IF流程控制指令的计算结果对应一条件判断逻辑FALSE时具有会被执行的指令的一程序块;LOOP/REP流程控制指令与ENDL00P/ENDREP流程控制指令用于定义具有会依据一递回数值被重复执行的指令的一程序块;BREAK流程控制指令用于中断由LOOP流程控制指令与ENDL00P流程控制指令所定义的程序块或是由REP流程控制指令与ENDREP流程控制指令所定义的程序块;以及CALL流程控制指令与REP流程控制指令用于定义具有隶属于被呼叫的子程序(subroutine)的指令的程序块。在此请注意,本发明并不限制于以上所述的流程控制指令类型,亦即其它类型的流程控制指令也同样适用于以下本发明所揭露的内容。请参照图1,图1示出了本发明不支持提早离开(early-out)机制的处理系统100的第一实施例的方块图。在图1中,小箭头符号表示一控制路径,此控制路径控制哪个操作要被执行以及将此一执行结果写入一特定的寄存器,而大箭头符号表示一数据路径,其包含指令与数据。此处理系统ioo支持巢状流程控制并且包含一指令緩冲器110,其用于接收与存储多个指令(未显示),且这些指令包含多个流程控制指令(亦即进入流程控制指令与终止流程控制指令),此外,处理系统IOO还包含至少一分支寄存器120,每次当一流程控制指令被一指令撷取/解码单元130处理时,分支寄存器12Q用于存储一深度指示值,此外,还有至少一处理单元105耦接于指令緩冲器110,而处理单元105包含至少一谓词寄存器(predicateregister)107、一执行单元106、一写回(write-back)单元108以及一寄存器文件(registerfile)109,其中,执行单元106用于执行多个存储于指令緩沖器110中的指令。在此实施例中,谓词寄存器107的一数值依据由执行单元106所执行的流程控制指令的一计算结果来设定,此外,还有一流程控制单元140耦接于分支寄存器120与谓词寄存器107(请注意,谓词寄存器107配置在处理单元105中,如图1所示),而流程控制单元140用于控制执行单元106依据谓词寄存器107来执行流程控制指令之后的指令,以及控制写回单元108来将流程控制指令之后的指令的执行结果写回寄存器文件109。在流程控制单元140利用遮蔽寄存器文件写入功能来遮蔽(mask)寄存器文件109的情况下,写回单元108将不会把任何数据写入至寄存器文件109中。此外,每次当一流程控制指令被指令撷取/解码单元130处理时,处理系统100中的分支寄存器120会存储一个深度指示值,其中,一进入流程控制指令(例如IF流程控制指令)会使存储于分支寄存器120中的深度指示值往前移动或增加,而一终止流程控制指令(例如ENDIF流程控制指令)则会使存储在分支寄存器120中的深度指示值往后移动或减少。请注意,在本发明的一实施例中,每一种类型的流程控制指令会被指定给一相对应的分支寄存器120,换言之,分支流程控制指令可以具有一'BRANCH'分支寄存器,而循环流程控制指令可以具有一'LOOP,分支寄存器,而其它的分支寄存器配置则可以此类推,由于这些范例是相关
技术领域
中具有通常知识者所可以轻易了解者,故不在此赘述额外的细节。在本发明中,谓词寄存器107被配置来纪录由对应于一特定流程控制指令类型的分支寄存器120所记录的不同深度指示值所对应的流程控制指令的计算结果。举例来说,当一特定流程控制指令被执行时,对应于此特定流程控制指令的一特定深度指示值会被纪录在分支寄存器120中,而谓词寄存器107会依据此特定流程控制指令的一计算结果来记录对应该特定深度指示值的一条件判断逻辑FALSE。对于位于二流程控制指令之间(例如在IF流程控制指令与ELSE流程控制指令之间)的程序块而言,其具有在该特定深度指示值下会被加以执行的指令且对应于存储有对应该特定深度指示值的条件判断逻辑FALSE的谓词寄存器107,而在此块中的指令所执行产生的任何结果都不会被写入寄存器文件109,也就是等效地忽略此块的执行。另一方面,当一特定流程控制指令被执行时,对应于此特定流程控制指令的一特定深度指示值会被纪录在分支寄存器120中,而谓词寄存器107会依据此特定流程控制指令的一计算结果而纪录对应该特定深度指示值的一条件判断逻辑TRUE,对于位在二流程控制指令之间(例如在ELSE流程控制指令与ENDIF流程控制指令之间)的程序块而言,其具有在该特定深度指示值下才会执行的指令且对应于存储有对应该特定深度指示值的条件判断逻辑TRUE的谓词寄存器107,而在此块中的指令所执行产生的任何结果都会被写回到寄存器文件109以进行后续的数据处理。换言之,在二流程控制指令之间且其所包含的指令可在一特定深度指示值下被忽略的流程块,其被针对该特定深度指示值而记录着条件判断逻辑TRUE的谓词寄存器107所加以标记/指示,因此,当执行由分支寄存器12Q所标示的一特定深度指示值所对应的指令时,可参考存储在谓词寄存器107中的寄存器数值,而使本发明所揭露的巢状流程控制结构可以轻易地确认这些指令的执行结果是否要被写回到寄存器文件109中或是被直接丟弃,因此可以解决传统SIMD处理器中的巢状流程控制所遭遇的问题。请注意,当指令的计算结果指示流程控制指令的条件已经被满足时,流程控制单元14Q会控制执行单元106来执行跟随该流程控制指令之后的指令,换言之,举例来说,当一IF流程控制指令的条件被满足时,亦即此IF流程控制指令的条件判断结果为一条件判断逻辑TRUE,则直接跟随着IF流程控制指令之后的指令会被执行,直到相对应的终止流程控制指令为止,而在这个例子的情况下,对于IF流程控制指令而言,ELSE流程控制指令与ENDIF流程控制指令是IF流程控制指令的相对应的终止流程控制指令。请参照图2,图2示出了本发明根据图1所示的不支持提早离开机制的第一实施例所执行的方法的流程图。本发明方法包含以下步骤步骤200:开始。步骤205:擷取下一个指令。步骤210:所擷取的指令是否为一流程控制指令?若是,执行步骤220,若否,执行步骤230。步骤220:根据此流程控制指令分别设定分支寄存器与谓词寄存器,接着到步骤205。步骤230:执行指令并依据此分支寄存器擷取谓词寄存器的数值。步骤240:所撷取的谓词寄存器的数值是否对应于条件判断逻辑TRUE若是,则执行步骤250,若否,执行步骤260。步骤25G:将结果写入一寄存器文件,接着到步骤205。步骤260:遮蔽一寄存器文件的写入功能,接着到步骤205。请继续请参照图1与图2以及下面关于本发明的流程的文字叙述,以进一步说明本发明的操作。此流程从步骤200开始,接着,在步骤205中利用图1所示的指令緩沖器110与指令撷取/解码单元130的组合来撷取下一个指令;然后,在步骤210中,如果所撷取的指令不是一个流程控制指令,则本发明(例如一处理系统或其它类似的运算装置)会以传统方式处理非流程控制指令并进入步骤230,由于这部分是相关
技术领域
中具有通常知识者所可以轻易了解者,故不在此赘述额外的细节;如果所撷取的指令是一个流程控制指令,则流程在步骤210后便执行步骤220,而在步骤22Q中,本发明根据此流程控制指令分别设定分支寄存器120与谓词寄存器107,然后再继续执行步骤250以撷取下一个指令。如上所述,分支寄存器120根据此流程控制指令的执行来更新其所纪录的深度指示值,然后对应于此更新后的深度指示值的流程控制指令的一计算结果会被存储在谓词寄存器107中,从而指示后续指示令的运算结果是否要被写回到寄存器文件109。回到步骤210,当正被指令擷取/解码单元130解码的目前指令不是一个流程控制指令时,则本发明会继续执行步骤230,而在步骤230中,此指令会被执行,而且由分支寄存器120的数值所指示的谓词寄存器107的数值会被撷取,接着,在步骤240中,如果谓词寄存器107的数值被判断为一条件判断逻辑TRUE,那么在接下来的步骤250中,目前指令的结果会经由流程控制单元140与写回单元108的组合来写入寄存器文件109;然而,如果谓词寄存器107的数值被判断为一条件判断逻辑FALSE,那么在接下来的步骤260中,寄存器文件109的写入功能会在流程控制单元MO的控制之下被遮蔽,因此便没有任何运算结果会被写入寄存器文件109,最后,此流程会回到步骤250以撷取下一个指令。请参照图3,图3示出了根据本发明支持一提早离开^L制的处理系统300的第一实施例的方块图,而图3与图1除了一小部分不同之外,其它部分十分相似,请注意,存储于指令緩冲器310中的流程控制指令中至少一特定流程控制指令可以包含一目标地址,而此目标地址与流程控制指令同时使用,举例来说,当一IF流程控制指令计算出一条件判断逻辑FALSE,那么在此目标地址的一指令(亦即ELSE或ENDIF)会接着被执行单元所306所执行,而此目标地址另用来实现一早期离开机制,举例来说,当符合一早期离开的条件时,此目标地址可以用来作为被执行单元306执行的下一个指令的地址,请注意,早期离开的条件可以有很多种选择,但本发明在这方面并没有任何限制条件,前面所描述的作为范例说明,而非本发明的限制条件。在图3中,在流程控制单元34Q与指令撷取/解码单元330之间有建立一流程控制路径,而此流程控制路径有助于前面所描述的提早离开机制,举例来说,假设有一目前流程控制指令已经被执行了,如果有N个处理单元305,而且这些N个处理单元305都分别将分支寄存器320所指示的谓词寄存器307判断为具有条件判断逻辑FALSE,那么直到相对应的流程控制终止指令的指令(例如一ELSE流程控制指令或是单纯的ENDIF流程控制指令)被撷取之前就没有必要处理后续的指令。具有提早离开机制的系统配置并没有很高的硬件需求,但却可以非常有效地提高处理效率与运算效能,此外,在图1与图3中其它具有相同名称的组件都具备相同的功能,因此在此不再赘述,其中的细节可以参照先前所说明的图1的部分。请参照图4,图4示出了本发明根据图3所示的支持提早离开机制的第一实施例所执行的方法的流程图。图4从步骤400开始此流程,接着,在步骤410中,一个新的指令被擷取,然后在步骤420中决定此一新撷取的指令是否为一流程控制指令,如果是,则继续到步骤460。如果此一新的指令不是一流程控制指令,则流程便执行步骤430;在步骤430中,当此指令不是一流程控制指令,那么此指令会被执行,并且本发明会撷取由分支寄存器320的数值所指示的谓词寄存器的数值;步骤440、450以及480与图2中的步骤240、260以及250具有相同的功能,因此不在此赘述这些细节。回到步骤420,在新撷取的指令是一流程控制指令的情况下,步骤460会被执行并且在步骤460中依据此流程控制指令的执行来设定个别的分支寄存器320,以及依据此流程控制指令的计算结果来设定谓词寄存器307;接着,在步骤470中,此提早离开机制被实施,而如果所有的处理单元将分支寄存器320所记录的一特定深度指示值所指示的个别谓词寄存器均判断为具有条件判断逻辑FALSE,则继续到步骤490以依据一目标地址的位来撷取一目标指令(请注意,这些位会依据需求而被包含在撷取指令之中),或者在步骤470中,如果并不是所有的处理单元都将个别谓词寄存器判断为具有条件判断逻辑FALSE,则继续到步骤410以便撷取下一个指令。请参照图5,图5示出了根据本发明不支持一提早离开机制的处理系统500的第二实施例的方块图。在本发明的第二实施例中,处理系统500支持巢状流程控制,并且包含一谓词计数器(predicatecounter)507,其用于存储一谓词计数值(未显示);一指令撷取/解码单元530,其用于接收、存储与解码多个指令,此多个指令包含多个从指令緩冲器510传送来的流程控制指令;一深度计数器(d印thlevelcounter)520,耦接于指令撷取/解码单元530,其用于存储一深度计数值(未显示);一流程控制单元540,耦接于深度计数器520与谓词计数器507,每次当一流程控制指令被撷取或解码或执行时,流程控制单元54Q利用深度计数值来追踪一巢状流程执行深度;以及一执行单元506,其用于依据此流程控制指令的至少一计算结果来设定存储于谓词计数器507中的谓词计数值以及存储于深度计数器520中的深度计数值,其中此流程控制指令由指令撷取/解码单元530撷取以及由执行单元506所执行,并且执行单元506也用于依据存储于谓词计数器507中的谓词计数值来执行此流程控制指令之后的指令。图5与图1几乎是完全一样的,只是图1中的分支寄存器120被图5中的深度计数器520所取代,以及图1中的谓词寄存器107被图5中的谓词计数器507所取代,具体而言,深度计数器520用于存储一深度计数值,此深度计数值用来指示目前的巢状流程执行深度,此外,小箭头符号表示一控制路径,此控制路径控制哪个操作被执行以及将此执行结果写入一特定的寄存器,而大箭头符号表示一数据路径,其具有指令与数据。在本实施例中,处理系统500包含执行单元506,而每次当执行单元506执行一流程控制指令时,执行单元506用于设定存储于谓词计数器507中的谓词计数值,以及用于设定存储在深度计数器520中的深度计数值。更具体的来说,此谓词计数值最初是设定为一预定数值,例如零,而在本实施例中,当此谓词计数值等于此预定数值(亦即零)时,一指令会被撷取、解码或执行,而深度计数值会在一特定条件符合时被加以参考以对谓词计数值进行更新。下面会说明关于如何设定存储于谓词计数器507中的谓词计数值的许多范例,然而,这些范例仅用于举例说明,而非用来作为本发明的限制条件。ELSE流程控制指令每次当对应于IF流程控制指令(亦即一进入流程控制指令)的ELSE流程控制指令(亦即一终止流程控制指令)被执行单元506所执行时,处理系统500中的执行单元506会设定存储于谓词计数器507中的谓词计数值,在这个例子中,有几种不同的情况会发生,首先,当目前的谓词计数值等于零时,此谓词计数值会被设定为等于深度计数值;或者,当此谓词计数值等于此深度计数值时,执行单元506会将此谓词计数值设定为零;又或是,当此谓词计数值不等于此深度计数值也不等于零时,执行单元506会将此谓词计数值维持在相同的数值。ENDIF流程控制指令每次当对应IF流程控制指令(亦即一进入流程控制指令)的ENDIF流程控制指令(亦即一终止流程控制指令)被执行时,处理系统500中的执行单元506会设定存储于谓词计数器507中的谓词计数值,其中,当此谓词计数值等于深度计数值时,执行单元506会将此谓词计数值设定为零;或者,当此谓词计数值不等于此深度计数值也不等于零时,执行单元506会将此谓词计数值维持在相同的数值。ENDLOOPENDREP流程控制指令每次当对应LOOP流程控制指令或REP流程控制指令(亦即一进入流程控制指令)的ENDLOOP流程控制指令或ENDREP流程控制指令(亦即一终止流程控制指令)被执行单元506执行时,处理系统500中的执行单元506可以设定存储于谓词计数器507中的谓词计数值,更具体地来说,当此谓词计数值等于深度计数值时,执行单元506会将此谓词计数值设定为零;或者,当此谓词计数值不等于深度计数值也不等于零时,执行单元506会将此谓词计数值维持在相同的数值。RET流程控制指令每次当对应CALL流程控制指令(亦即一进入流程控制指令)的RET流程控制指令(亦即一终止流程控制指令)被执行单元506执行时,处理系统500中的执行单元506可以设定存储于谓词计数器507中的谓词计数值,更具体地来说,当此谓词计数值等于深度计数值时,执行单元506会将此谓词计数值设定为零;或者,当此谓词计数值不等于深度计数值也不等于零时,执行单元506会将此谓词计数值维持在相同的数值。IF流程控制指令每次当IF流程控制指令(亦即一进入流程控制指令)被执行单元506执行时,处理系统500中的执行单元506可以设定存储于谓词计数器507中的谓词计数值,更具体地来说,当原本的谓词计数值等于零,而且此IF流程控制指令的计算结果是对应条件判断逻辑TRUE时,执行单元506会将此谓词计数值设定为零;或者,当原本的谓词计数值等于零,而且此IF流程控制指令的计算结果是对应条件判断逻辑FALSE时,执行单元506会将此谓词计数值设定为目前已经纪录的深度计数值;又或是,当原本的谓词计数值不等于零时,执行单元506会将此谓词计数值维持在相同的数值。LOOPREP流程控制指令每次当LOOP流程控制指令或REP流程控制指令(亦即一进入流程控制指令)被执行单元506执行时,处理系统500中的执行单元506可以设定存储于谓词计数器507中的谓词计数值,更具体地来说,当一递归数值不等于零时,执行单元506可以将此谓词计数值设定为零;或者,当此递归数值等于零时,执行单元506会将此谓词计数值设定为相等于深度计数值。BREAK流程控制指令每次当用来中止LOOPENDLOOP或REPENDREP程序块的BREAK流程控制指令(亦即一进入流程控制指令)被执行单元506执行时,处理系统500中的执行单元506会设定此谓词计数值,更具体地来说,在一无条件的(non-conditional)BREAK流程控制指令被执行时,若此谓词计数值等于零,则此谓词计数值会被设定为等于深度计数值;或者,若此谓词计数值不等于零,则此谓词计数值会被维持在相同的数值。此外,在一有条件的(conditional)BREAK流程控制指令被执行时,若此谓词计数值等于零,而且此BREAK流程控制指令的计算结杲是对应条件判断逻辑FALSE时,则此谓词计数值会被设定为零;或者,当此谓词计数值等于零,而且此BREAK流程控制指令的计算结果是对应条件判断逻辑TRUE时,则此谓词计数值会被设定为此深度计数值;又或是,当此谓词计数值不等于零时,此谓词计数值会被维持在相同的数值。CALL流程控制指令每次当用来依据一些条件(例如一些寄存器所存储的数值均为零时)来决定进入一子程序的有条件的(conditional)CALL流程控制指令(亦即一进入流程控制指令)被执行单元506执行时,处理系统500中的执行单元506会设定此谓词计数值,更具体地来说,当原本的谓词计数值等于零,而且此有条件的CALL流程控制指令的计算结果是对应条件判断逻辑TRUE时,执行单元506会将此谓词计数值设定为零;或者,当原本的谓词计数值等于零,而且此有条件的CALL流程控制指令的计算结果是对应条件判断逻辑FALSE时,执行单元506会将此谓词计数值设定为目前的深度计数值;又或是,当原本的谓词计数值不等于零时,则执行单元506会将此谓词计数值维持在相同的数值。此外,紧接在此有条件的CALL流程控制指令之后的一指令的地址会被放入一堆栈中,以l更纪录一返回地址。在本发明中,深度计数器52Q用来追踪巢状流程执行深度,而谓词计数器507存储一数值以指示在二个流程控制指令之间(例如IF流程控制指令与ELSE流程控制指令之间)的巢状流程块中多个指令的执行结果是否被允许写回到寄存器文件509中,换言之,在此巢状流程块中的指令被执行而产生结果之后,如果此谓词计数值不等于零,则此结果就不会被写回到寄存器文件509,因此,当在由深度计数器520所追踪的特定深度上执行指令时,可参考存储于谓词计数器507中的寄存器数值,以使本发明所揭露的巢状流程控制系统可以轻易地确认这些指令的执行结果是否要被写回到寄存器文件509或是被丟弃,因此可以解决传统SIMD处理器中的巢状流程控制所遭遇的问题。请参照图6,图6示出了本发明根据图5所示的不支持一提早离开机制的第二实施例所执行的方法的流程图。步骤600:开始。步骤6Q5:撷取下一个指令。步骤610:所撷取的指令是否为一流程控制指令?若是,则到步骤620,若否,则到步骤630。步骤620:根据此流程控制指令的结果分别设定深度计数值与谓词计数<直,到步备聚605。步骤630:执行此指令并依据此分支计数器撷取此谓词计数器的数值。步骤6W:谓词计数值是否等于零?若是,则到步骤650,若否,则到步骤660。步骤65Q:将结果写入一寄存器文件,接着到步骤605。步骤6M:遮蔽此寄存器文件以避免数据写入此寄存器文件,接着到步骤605。以上流程说明本发明的第二实施例,请注意此流程是从步骤600开始,接着,在步骤605中,一个新的指令被撷取;然后,在步骤610中决定此所撷取的指令是否为一流程控制指令,如果所撷取的指令是一流程控制指令(例如IF、LOOP、REP),则流程执行到步骤620,反之,流程执行到步骤630。在步骤620中,由于已经决定目前所撷取的指令是一流程控制指令,因此有必要依据此流程控制指令的结果来设定此深度计数值与此谓词计数值,关于如何设定此谓词计数值的规则已经在前面说明,因此不在此赘述,而对于深度计数值的设定而言,每次当一流程控制指令被指令撷取/解码单元530撷取或解码,处理系统500中的指令撷取/解码单元530会修正存储于深度计数器520中的深度计数值,其操作方式如同前面所述的关于本发明处理系统300中指令撷取/解码单元330的操作,举例来说,一进入流程控制指令(例如一IF流程控制指令)会使得深度计数值往前移动或增加,而一终止流程控制指令(例如一ENDIF流程控制指令)则会使得深度计数值往后移动或减少,而关于这部分的细节就不在此重复赘述。接着,在步骤630中,执行单元506执行此指令并且从谓词计数器507中撷取出谓词计数值;然后,在步骤640中,如果此谓词计数值等于零,则流程便执行至步骤650,反之,流程执行至步骤660;然后,在步骤650中,如果目前指令的计算结果是对应条件判断逻辑TRUE,则此结果会被流程控制单元540与写回单元508的组合写入至寄存器文件509,然后,流程继续到步骤660;然而,如果此计算结果是对应条件判断逻辑FALSE,则到步骤605,而寄存器文件509的写入功能在流程控制单元540的控制之下会被遮蔽,因而没有结果会被写回到寄存器文件509;最后,此流程会回到步骤605来撷取下一个指令。请参照图7,图7示出了本发明支持一提早离开机制的处理系统700的第二实施例的方块图。除了控制路径与图3相同以外,图7的实施例与图5大致相同,而图5与图7之间的差别是相关
技术领域
中具有通常知识者根据图l与图3以及前面说明的内容所可以轻易了解者。此外,在本实施例中,在这些流程控制指令中有至少一特定程控制指令包含一目标地址,而当一早期离开的条件符合时,由执行单元706所执行的下一个指令是具有此一目标地址的指令,而此早期离开的条件可以有许多种选择,然而本发明在这方面并没有任何限制,此外,详细说明不另赘述。请参照图8,图8示出了本发明根据图7所示的支持一提早离开机制的第二实施例所执行的方法的流程图。如果有N个处理单元705,而且这些N个处理单元705都分别将谓词计数器所存储的数值判定不等于零,那么直到相对应的流程控制终止指令被撷取之前就没有必要处理后续的指令。图6与图8之间的差别是相关
技术领域
中具有通常知识者根据图2与图4以及前面说明的内容所可以轻易了解者,因此不在此赘述。就图1中不支持提早离开机制的实施例与图3中支持提早离开机制的实施例而言,每一处理单元都具有多个谓词寄存器以纪录对应于不同深度指示值的多个流程控制指令的计算结果,而其处理系统具有与不同类型的流程控制指令相对应的多个分支寄存器,当对应于一特定深度指示值的谓词寄存器数值是对应条件判断逻辑FALSE时,则跟随一流程控制指令之后的指令的执行结果会被丢弃。至于图5中不支持提早离开机制的实施例与图7中支持提早离开机制的实施例,其处理系统具有一深度计数值以追踪巢状流程执行深度,而每一处理单元都具有依据深度计数值与一预定数值(例如零)之一所设定的单一个谓词计数值,而当此谓词计数值不等于零时,则跟随一流程控制指令之后的指令的执行结果会被丢弃。如此一来,同时利用分支寄存器与谓词寄存器或者同时利用深度计数器与谓词计数器来将本发明所揭露的巢状流程控制应用于一SIMD处理器中就可以提供显著且有效的改进,进而解决在先前技术部分所描述的各种问题。此外,将本发明所揭露的巢状流程控制应用于一S工MD处理器仅作为范例说明,并非作为本发明的限制。以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。权利要求1.一种用于巢状流程控制的方法,该方法包含提供至少一谓词寄存器与一分支寄存器;接收至少一指令,该至少一指令包含至少一流程控制指令;当一流程控制指令被撷取或解码或执行时,使用该分支寄存器存储一深度指示值;依据该流程控制指令的一计算结果设定该谓词寄存器;以及依据该谓词寄存器与该分支寄存器执行跟随该流程控制指令之后的至少一指令。2.如权利要求l所述的方法,另包含当对应于该流程控制指令的一终止指令被撷取或解码或执行时,使用该分支寄存器存储该深度指示值。3.如权利要求l所述的方法,其中,每一类型的流程控制指令具有一相对应的分支寄存器。4.如权利要求l所述的方法,其中,该流程控制指令包含一目标地址,且执行跟随该流程控制指令之后的至少一指令的步骤另包含当符合一早期离开的条件时,直接在该目标地址执行下一指令。5.如权利要求l所述的方法,其中,依据该谓词寄存器执行跟随该流程控制指令之后的至少一指令的步骤另包含如果该谓词寄存器对应一条件判断逻辑TRUE,则将跟随该流程控制指令之后该至少一指令的至少一#^于结果写入一寄存器文件;以及如杲该谓词寄存器对应一条件判断逻辑FALSE,则遮蔽该寄存器文件以避免将该至少一执行结果写入该寄存器文件。6.—种用于巢状流程控制的方法,该方法包含a.提供至少一谓词计数器与一深度计数器;b.接收至少一指令,该至少一指令包含至少一流程控制指令;c.当一流程控制指令被撷取或解码或执行时,使用该深度计数器存储一深度计数值;d.依据该流程控制指令的一计算结果,使用一预定数值与该深度计数器中至少其一来设定该谓词计数器;以及e.依据该谓词计数器与该深度计数器来执行跟随该流程控制指令之后的至少一指令。7.如权利要求6所述的方法,另包含f.当对应于该流程控制指令的一终止指令被执行时,设定该谓词计数器;g.当对应于该流程控制指令的一终止指令被撷取或解码或执行时,使用该深度计数器来存储该深度计数值。8.如权利要求7所述的方法,其中,该预定数字是零,且步骤f另包含当对应于该流程控制指令的一ELSE终止指令被执行时,设定该谓词计数器,其中,当该谓词计数器等于零时,则将该谓词计数器设定为等于该深度计数器;当该谓词计数器等于该深度计数器时,则将该谓词计数器设定为零;以及当该谓词计数器不等于零,且该谓词计数器不等于该深度计数器时,将该谓词计数器维持一样的数值。9.如权利要求7所述的方法,其中,该预定数值是零,且步骤f另包含当对应于该流程控制指令的一ENDIF终止指令被执行时,设定该谓词计数器,其中,当该谓词计数器等于该深度计数器时,将该谓词计数器设定为零;以及当该谓词计数器不等于该深度计数器,将该谓词计数器维持一样的数值。10.如权利要求7所述的方法,其中,该预定数值是零,且步骤f另包含当对应于该流程控制指令的一RET终止指令被执行时,设定该谓词计数器,其中,当该谓词计数器等于该深度计数器时,将该谓词计数器设定为零;以及当该谓词计数器不等于该深度计数器时,将该谓词计数器维持一样的数值。11.如权利要求6所述的方法,其中,该流程控制指令包含一目标地址,且步骤e另包含当符合一早期离开的条件时,直接在该目标地址执行下一指令。12.—种具有巢状流程控制的处理系统,该处理系统包含一指令緩冲器,用于接收与存储至少一指令,该至少一指令包含至少一流程控制指令;至少一分支寄存器,当一流程控制指令被撷取或解码或执行时存储一深度指示值;一处理单元,耦接于该指令緩沖器,包含有至少一谓词寄存器,而该谓词寄存器用来指示一相对应深度指示值所指示的巢状流程执行深度下的执行状态;一执行单元,用于执行该至少一指令,其中,该谓词寄存器依据由该执行单元所执行的该流程控制指令的一计算结果与一目前巢状流程执行深度来加以设定;以及一流程控制单元,耦接于该分支寄存器与该谓词寄存器,用于控制该执行单元依据该谓词寄存器来执行跟随该流程控制指令之后的至少一指令。13.如权利要求12所述的处理系统,其中,当对应于该流程控制指令的一终止指令被该执行单元撷取或解码或执行时,该分支寄存器存储该深度指示值。14.如权利要求12所述的处理系统,其中,该流程控制指令包含一目标地址,且当符合一早期离开的条件时,该执行单元直接在该目标地址执行下一指令。15.如权利要求14所述的处理系统,其中,如果由该分支寄存器所指示的每一谓词寄存器均存储一条件判断逻辑值以表示分支会依据该流程控制指令的该计算结果而被执行,则该早期离开的条件便符合。16.—种具有巢状流程控制的处理系统,该处理系统包含至少一谓词计数器,用于存储一谓词计数值;一指令撷取/解码单元,用于接收、存储与解码至少一指令,该至少一指令包含至少一流程控制指令;一深度计数器,耦接于该指令撷取/解码单元,用于存储一深度计数值;一流程控制单元,耦接于该深度计数器与该谓词计数器,当一流程控制指令被擷取或解码或执行时,该流程控制单元用于利用该深度计数值来追踪一巢状流程执行深度;以及一执行单元,用于依据该流程控制指令的一计算结果而使用一预定数值与该谓词计数器中至少其一来设定该深度计数器;以及用于依据该谓词计数器与该深度计数器执行跟随该流程控制指令之后的至少一指令。17.如4又利要求16所述的处理系统,其中,当该执行单元执行对应于该流程控制指令的一终止指令时,该执行单元另会设定该谓词计数器;以及当对应于该流程控制指令的一终止指令被撷取或解码或执行时,该执行单元另会设定该深度计数器。18.如权利要求16所述的处理系统,其中,该流程控制指令包含一目标地址,且当符合一早期离开的条件时,该执行单元直接在该目标地址执行下一指令。19.如权利要求18所述的处理系统,其中,如果每一谓词计数器均存储该预定数值而表示分支会依据该流程控制指令的该计算结果而被执行,则该早期离开的条件便符合。20.如权利要求16所述的处理系统,其另包含一寄存器文件;以及一写回单元,由该流程控制单元所控制,其中,如果该谓词寄存器纪录该预定数值,则该流程控制单元控制该写回单元来将跟随该流程控制指令之后的该至少一指令的至少一执行结果写入该寄存器文件;以及如果该谓词寄存器未纪录该预定数值,则该流程控制单元遮蔽该寄存器文件以避免该写回单元将该至少一执行结果写入该寄存器文件。全文摘要本发明揭露一种用于巢状流程控制的方法,该方法包含提供至少一谓词寄存器与一分支寄存器;接收至少一指令,该至少一指令包含至少一流程控制指令;每次当一流程控制指令被撷取或解码或执行时,使用该分支寄存器存储一深度指示值;依据该流程控制指令的一计算结果设定该谓词寄存器;以及依据该谓词寄存器与该分支寄存器执行跟随该流程控制指令之后的至少一指令。文档编号G06F9/38GK101256547SQ20071008561公开日2008年9月3日申请日期2007年3月1日优先权日2007年3月1日发明者阎学斌申请人:矽统科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1