用于处理指令循环的方法和系统的制作方法

文档序号:6495043阅读:253来源:国知局
专利名称:用于处理指令循环的方法和系统的制作方法
技术领域
本发明一般涉及信息处理系统,尤其涉及一种用于处理指令循环的方法和系统。
背景技术
在信息处理系统的发展过程中,期望有兼容性,以便系统的后期版本可以有效地处理原来为该系统的早期版本准备的软件程序(“旧软件程序”)。例如,该系统可以处理指令循环。对于该循环的一次重复通过(pass),该系统会遇到在该循环的开始处重复地读取指令的需求。这种需求可能由(a)对系统的指令读取缓冲器的尺寸的实际约束和/或(b)循环中的大量指令所导致。
为了降低由于这种反复读取而产生延迟的可能性,一种技术采用了特定类型的指令,用于在该循环的通过期间内在适当的时刻触发重复读取。然而,在软件程序内,这种指令的布局适用于该系统的特定版本。不同的系统版本可能会较为低效率地处理该软件程序,除非针对该不同版本修改这种指令的布局。不幸的是,软件程序的这种修改可能是费时、昂贵的,另外效率较低。
因此需要一种用于处理指令循环的方法和系统,能够克服现有技术的各种缺点。例如,需要一种用于处理指令循环的方法和系统,能够更有效地处理旧软件程序。

发明内容
因此一个实施方式提供一种用于处理指令循环的信息处理系统。响应于检测出在所述循环的通过期间内对特定指令的处理,系统启动被编程在所述循环开始处的初始指令的读取,并且存储被编程在所述初始指令和所述特定指令之间的不同指令的标识。根据所述已存储标识,响应于检测出在所述循环的再次通过期间内对所述不同指令的处理,系统启动对所述初始指令的再次读取。
该实施方式的基本优点在于,克服了现有技术的各种缺点,能更有效地处理旧软件程序。


图1是例举实施方式的示例性系统的方框图;图2是图1的系统的程序定序器单元的方框图;图3是由图1的系统所处理的指令嵌套循环的例子的概念图;图4是图2的程序定序器单元的循环结束指令检测单元的操作的流程图;图5是图2的程序定序器单元的循环结束地址寄存器文件的操作的流程图;图6是图2的程序定序器单元的循环结束地址检测单元的操作的流程图;图7是图2的程序定序器单元的循环控制逻辑的操作的流程图。
具体实施例方式
图1是例举实施方式的用于处理信息(例如指令、数据、信号)的示例性系统(概括地用10表示)的方框图。在例举实施方式中,系统10由各种电路部件形成。从而系统10包括各种单元、寄存器、缓冲器、存储器和其它部件,它们(a)通过总线彼此耦合,(b)由一个或多个半导体芯片中的集成电路来形成,(c)封装在一个或者多个插件中。
如图1所示,系统10包括虚线框12所示的核心单元,用于执行以下结合图1-7所述的各种操作。核心单元12包括(a)程序定序器单元14;(b)资源停顿(stall)单元16;(c)地址发生单元(“AGU”),用虚线框18表示;以及(d)数据算术逻辑单元(“DALU”),用虚线框20表示。AGU包括多个算术地址单元(“AAU”)22、位屏蔽单元(“BMU”)24和地址发生器寄存器文件26。DALU包括多个算术逻辑单元(“ALU”)28和DALU寄存器文件30。程序定序器单元14、资源停顿单元16、AGU18(包括其各种单元和文件)以及DALU20(包括其各种单元和文件)如图1所示互连。
另外,如图1所示,核心单元12与程序高速缓冲存储器32、数据高速缓冲存储器34和统一指令/数据存储器36相连接。程序高速缓冲存储器32和数据高速缓冲存储器34与二级存储器38连接。这些存储器36和38与系统10的其它部件40连接。
而且,调试&仿真单元42耦合在程序定序器单元14和联合测试行动组(“JTAG”Joint Test Action Group)端口之间,用于按照传统的JTAG技术来调试和仿真该系统10的各种操作。而且,如图1所示,一个或多个附加执行单元44可选择地与核心单元12、数据高速缓冲存储器34和存储器36连接。
为了执行其各种操作,系统10包括为了清楚起见没有在图1中清楚示出的各种其它互连、部件(例如,存储器管理电路)和其它细节。例如,各种地址总线除了传输地址信号之外,还传输适当的控制信号。同样,各种数据总线除了传输数据信号之外,还传输适当的控制信号。
资源停顿单元16负责控制系统10的互锁流水线。响应来自指令执行总线的信息,该资源停顿单元16存储有关核心单元12的各种部件的状况(或状态)的信息。响应这种状况(或状态)信息,资源停顿单元16通过向系统10的程序定序器单元14、AGU18、DALU20和各种其它部件输出适当的信息来解决在流水线中的冲突和危险。
例如,响应来自资源停顿单元16的信息,程序定序器单元14按照其编程顺序来读取并调度指令。为了读取指令,程序定序器单元14通过32位指令地址总线向程序高速缓冲存储器32和存储器36输出适当的指令地址。同样,响应来自资源停顿单元16和多个AAU22的信息,地址发生器寄存器文件26通过指令地址总线向程序高速缓冲存储器32和存储器36输出适当的指令地址,例如响应来自程序定序器单元14的循环、中断或者分支或跳离的各种类型的流变化(“COF”)指令,输出指令地址序列。(通过指令地址总线从程序定序器单元14或地址发生器寄存器文件26接收到的)这些地址指示用于存储由系统10执行的指令的顺序(“寻址指令”)的适当的存储器单元。
因此,响应于这些地址(a)如果这些地址在程序高速缓冲存储器32中被当前(then-current)地索引,则程序高速缓冲存储器32通过128位指令读取总线向程序定序器单元14输出寻址指令;或者(b)否则,存储器36通过指令读取总线向程序定序器单元14输出寻址指令。程序定序器单元14接收并且存储这些指令。响应于这些所读取的指令,并且响应于从资源停顿单元16接收到的信息,程序定序器单元14经由指令执行总线在适当的时刻向资源停顿单元16、多个AAU22、BMU22、多个ALU28和一个或多个执行单元44输出(或调度)这些指令。程序定序器单元14还包括用于执行支持异常处理的操作的电路。
系统10包括多个用于执行指令的单元,即多个AAU22、BMU24、多个ALU28和一个或多个执行单元44。响应于来自资源停顿单元16的状况(或状态)信息,这些单元根据各种指令类型(例如根据指令的特定操作类型)执行一个或多个指令。例如,采用整数运算,多个AAU22执行各种指令、例如COF指令的地址计算操作。BMU24执行用于移位和屏蔽操作数中的位的各种指令。多个ALU28执行用于对操作数执行算术和逻辑操作(例如,数值加法、减法、乘法和除法)的各种指令。一个或多个执行单元44执行用于以加速方式对操作数执行专用操作的各种指令。
在适当的时候,多个AAU22通过接收来自地址发生器寄存器文件26的源操作数信息(并且输出作为结果的目标操作数信息以存储到地址发生器寄存器文件26)来与地址发生器寄存器文件26进行通信(反之亦然)。同样,在适当的时候,多个ALU28通过接收来自DALU寄存器文件30的源操作数信息(并且输出作为结果的目标操作数信息以存储到DALU寄存器文件30)来与DALU寄存器文件30进行通信(反之亦然)。
同样,在适当的时候,BMU24、地址发生器寄存器文件26、DALU寄存器文件30和一个或多个执行单元44通过经由64位操作数1和操作数2数据总线从数据高速缓冲存储器34和/或存储器36接收源操作数信息(并且输出作为结果的目标操作数信息以存储到数据高速缓冲存储器34和/或存储器36)来与数据高速缓冲存储器34和/或存储器36进行通信(反之亦然)。响应于来自多个AAU22的信息,经由相应的32位操作数1和操作数2地址总线从地址发生器寄存器文件26输出这种操作数信息的地址。
程序高速缓冲存储器32和数据高速缓冲存储器34从二级存储器38接收并且存储所选信息的拷贝。与二级存储器38相比,程序高速缓冲存储器32和数据高速缓冲存储器34为速度更高、相对较小的存储器。程序高速缓冲存储器32和数据高速缓冲存储器34中的信息是可修改的。因此,在适当的时候,系统10从程序高速缓冲存储器32和数据高速缓冲存储器34将这种修改信息复制回二级存储器38中的相关入口以便存储,从而保持了这种修改信息的一致性。
同样,经由系统10的其它部件40,二级存储器38接收并且存储来自存储器36的所选信息的拷贝。与存储器36相比,二级存储器38为速度更高、相对较小的存储器。例如当系统10从程序高速缓冲存储器32和数据高速缓冲存储器34将修改信息复制回二级存储器38的相关联部分时,二级存储器38中的信息是可修改的。因此,在适当的时候,系统10从二级存储器38将这种修改信息复制回存储器36中的相关联入口以便存储,从而保持了这种修改信息的一致性。
系统10通过在多个AAU22、BMU24、多个ALU28和一个或多个执行单元44的各个单元处同时处理多个指令来实现高性能。例如,系统10按照互锁流水线阶段的顺序来处理每个指令。相应地,系统10与其它指令的各个阶段平行地处理特定指令的每个阶段。
一般来说,系统10以每个阶段一个机器周期(“周期”)的方式进行操作(例如,任意阶段的持续时间为单个的机器周期)。但是,一些指令(例如,ACS、MAC、MPY和SAD,如表1中所述)会需要多个机器周期来执行(即,这些指令仅在系统10的多个机器周期中是可执行的)。而且,存储器存取(例如,指令读取或操作数加载)会需要系统10的几个机器周期。响应于指令之间的冲突(例如,读取/写入冲突),资源停顿单元16在完成特定指令的执行阶段的过程中有选择地引入一个或多个延迟(或停顿(stall))。
表1具有两个机器周期来执行的指令

在例举实施方式中,系统10如表2所述按10个互锁流水线阶段的顺序处理指令,从而按相同的阶段顺序处理每个指令。在每个流水线阶段期间,系统10为其下一个阶段准备指令。在系统10启动指令的处理之后,系统10在随后的时间(例如,一个机器周期之后)启动紧接着的指令的处理。这样,系统10同时处理多个指令的各个阶段。
系统10的多阶段流水线包括多个执行阶段。例如,在如表2所述的例举实施方式中,该流水线包括第一执行阶段(E阶段)和第二执行阶段(M阶段)。在可选实施方式中,该流水线包括第一和第二执行阶段再加上至少一个附加执行阶段。在这样的可选实施方式中,根据该系统10的各种目的适当地建立多个执行阶段的相应操作,从而通过多个执行阶段中的适当的一个或多个来代替地(或另外地)执行(在表2中描述并且另外在下面结合图2-7描述的)E阶段或M阶段操作中的一个或多个。
例如,在第一可选实施方式中,附加执行阶段在该例举实施方式的第一执行阶段之前,从而该附加执行阶段将紧接着在表2中的C阶段之后,并且将相应地执行操作。在第二可选实施方式中,附加执行阶段在例举实施方式的第二执行阶段之后,从而该附加执行阶段将紧接着在表2中的W阶段之前,并且相应地执行操作。在第三可选实施方式中,附加执行阶段中的一个或多个在该例举实施方式的第一执行阶段之前,并且该附加执行阶段中的一个或多个在该例举实施方式的第二执行阶段之后,从而(a)附加执行阶段中的至少一个将紧接着在表2中的C阶段之后并且将相应地执行操作;并且(b)附加执行阶段中的至少一个将紧接着在表2中的W阶段之前并且将相应地执行操作。这样,与该例举实施方式类似,这些可选实施方式同样受益于以下所述的技术(结合图2-7),并且这些技术同样适用于这些可选实施方式。
表2流水线阶段概述

图2为程序定序器单元14的方框图。如图2所示,程序定序器单元14包括指令读取缓冲器50、循环结束指令检测单元52,循环结束地址寄存器文件54、延迟逻辑56、循环结束地址检测单元58、循环控制逻辑60、程序地址控制逻辑62、地址缓冲器64以及当前地址寄存器66程序定序器单元14的这些元件执行如下面结合图2-7所描述的各种操作。
为了执行其各种操作,程序定序器单元14包括为了清楚起见没有在图2中清楚示出的各种其他互连(例如,与资源停顿单元16的互连)、部件和其他细节。例如,程序地址控制逻辑62与图1的指令地址总线连接,并且执行程序定序器单元14的P阶段操作。在指令的P阶段期间,如果程序地址控制逻辑62或AGU18响应于COF指令而输出指令地址,则地址缓冲器64接收并且缓冲(或存储)该指令地址,至少直到当前地址寄存器66从地址缓冲器64接收到该指令地址。
指令读取缓冲器50耦合在图1的指令读取总线和图1的指令执行总线之间。响应于执行P阶段操作的程序地址控制逻辑62(a)在紧接着的下面的机器周期期间,执行相应的R阶段操作;并且(b)在执行了R阶段操作之后,在紧接着的下面的机器周期期间,指令读取缓冲器50执行程序定序器单元14的相应的F阶段操作。指令读取缓冲器50从指令读取总线接收并且缓冲至指令的六十四(64)个字节。
在没有来自AGU18的相反信息的情况下(在COF指令的情况下)(a)在指令读取缓冲器50执行一个或多个指令的V阶段时,当前地址寄存器66使其锁存地址增加当前地址寄存器66从指令读取缓冲器50接收到的所调度指令的字节数(即,该字节数可以是从2至16字节的偶数,因为这些指令为VLES指令);并且(b)在如此执行指令的V阶段的过程中,如果响应于COF指令来处理该指令,则当前地址寄存器66接收并且锁存来自地址缓冲器64的下一个指令地址。在如此接收和锁存来自地址缓冲器64的下一个指令地址之后,当前地址寄存器66在必要时递增,以确保其锁存地址与其V阶段正在由指令读取缓冲器50执行的指令相关联。
该指令读取缓冲器50作为先进先出队列进行操作。在该例举实施方式中,系统10按照大体上避免完全充满指令读取缓冲器50的方式来协调指令的F阶段和V阶段。然而,即使指令读取缓冲器50被充满,如果它执行具有指令的至少十六(16)个字节的V阶段,则它不再被充满。这是因为在这种V阶段期间,指令读取缓冲器50向指令执行总线输出这些被缓冲的指令。
在没有来自循环控制逻辑60(或者在COF指令的情况下为AGU18)的相反信息的情况下,程序地址控制逻辑62通过输出从其最近输出的指令地址递增后的指令地址来执行P阶段操作。这个增量为十六(16)(即,在F阶段期间由指令读取缓冲器50从指令读取总线接收到的字节数)。
当前地址寄存器66将其锁存指令地址输出给循环结束指令检测单元52、延迟逻辑56和循环结束地址检测单元58。延迟逻辑56(a)从当前地址寄存器66接收当前指令地址;(b)响应于此,存储(或锁存)这个地址;并且(c)在延迟的基础上将它输出给循环结束地址寄存器文件54。这个延迟为预选择的整数量q个机器周期。下面结合图3-7对循环结束指令检测单元52、循环结束地址寄存器文件54、延迟逻辑56、循环结束地址检测单元58和循环控制逻辑60的附加操作进行说明。
图3为由图1的系统处理的指令嵌套循环的例子的概念图。图3示出十九(19)个指令(即指令1至指令19)的序列,它们存储在十九(19)个分别相关联的地址(即,地址1至地址19)中。在图3的例子中,该序列包括四(4)个指令嵌套循环,即(a)循环1,由指令3-18形成;(b)循环2,由指令4-16形成;(c)循环3,由指令6-15形成;以及(d)循环4,由指令8-10形成。
如图3所示,循环4嵌套在循环3内,从而该循环3包括所有循环4的指令。同样,循环3嵌套在循环2内,从而循环2包括所有循环3的指令。而且,循环2嵌套在循环1内,从而循环1包括所有循环2的指令。
在当前的基础上,系统10在直到这些嵌套循环的固定数目(例如,四(4)个)的范围内处理指令。为此,程序定序器单元14包括并且操作用于存储以下内容的寄存器(a)直到固定数目的循环开始地址;以及(b)直到固定数目的循环计数。相应地,循环开始地址寄存器分别与这些嵌套循环相关联。同样,循环计数寄存器分别与嵌套循环相关联。
因此,如果指令的地址被存储在循环的相关联的起始地址寄存器中,则该指令是该循环的通过期间内的循环的第一(或初始)指令。在图3的例子中,循环起始地址寄存器分别存储有(a)循环1的循环起始地址,它为地址3;(b)循环2的循环起始地址,它为地址4;(c)循环3的循环起始地址,它为地址6;以及(d)循环4的循环起始地址,它为地址8。同样,循环计数寄存器分别存储有(a)循环1已经被完全处理的次数;(b)循环2已经被完全处理的次数;(c)循环3已经被完全处理的次数;以及(d)循环4已经被完全处理的次数。
在第一循环(例如,相对靠“里面”的循环,例如循环3)被嵌套在第二循环(例如,相对靠“外面”的循环,例如循环2或循环1)内,并且如果第一循环由系统10终止,则在重复第二循环的过程中仍然可以由系统10重复处理第一循环。在没有异常或COF指令的情况下,在处理该循环外面的指令之前,系统10在多次通过中重复处理该循环,直到该循环被终止。在该循环内,指令可以规定该循环的终止在该循环已经被完全处理过特定通过次数(从该循环的最近一次终止开始,如果有的话)之后出现。因此,该循环的相关联循环计数寄存器可用于管理该循环的终止,并且系统10响应于该终止而使该计数寄存器复位。
如图3所示,每个循环具有相关联的循环结束(“EOL”)标记,该标记以清楚的或暗示的方式标记出循环的结束。例如,(a)循环1的相关联EOL标记位于指令18处;(b)循环2的相关联EOL标记位于指令16处;(c)循环3的相关联EOL标记位于指令15处;并且(d)循环4的相关联EOL标记位于指令10处。因此,如果该循环的相关联EOL标记位于一个指令处,则这个指令为该循环的一次通过期间内的该循环的最终指令。
还参照图2,程序定序器单元14在循环的指令的初始处理中执行P阶段操作。但是随后,即使当系统10在多次通过中重复处理该循环时,并且在没有异常或COF指令的情况下,如果一个循环的指令的总的大小小于或等于六十四(64)个字节(即,指令读取缓冲器50的大小),则(a)程序定序器单元14继续将该循环的所有指令缓冲在指令读取缓冲器50中,直到该循环被终止;并且(b)在该期间内,程序定序器单元14不针对该循环的指令重复(或重新进行)P阶段操作。在图3中,循环4为这种循环的一个例子。
相反,如果一个循环的指令的总的大小大于六十四(64)个字节,并且如果系统10在多次通过中重复处理该循环,则程序定序器单元14针对该循环的指令中的一个或多个重复执行P阶段操作。在图3中,循环1、2和3为这种循环的例子。P阶段(及其相应的R阶段和F阶段操作)的这种重新执行会延迟(或停顿)系统10的操作,因为存储器存取(例如,指令读取)需要比当前所处理的指令序列(例如,旧指令序列)所预期的更多的机器周期。
系统10最好减少这种延迟。因此,如果该循环是当前活动(active)的,则在系统10处理位于该循环的相关联EOL标记附近的指令时,程序定序器单元14在循环的起始地址处启动指令的P阶段操作的重新执行(这也导致在紧接着的后面的机器周期期间内相应的R阶段和F阶段操作的重新执行,如上面有关指令读取缓冲器50和程序地址控制逻辑62的说明)。
当前活动循环是最内层嵌套循环,它(a)包含从当前地址寄存器66输出的当前指令地址;并且(b)被当前调度为在处理位于该循环外面的指令之前在另一次通过中重复(例如,在没有异常或COF指令的情况下,并且如果该循环的相关联循环计数寄存器指示该循环还没有被处理其规定的次数,如上面结合图3的描述)。
这个启动适合在系统10在该循环的起始地址处重复这些指令的其它阶段之前出现。这种提前启动有助于降低可能由于这种P阶段操作的重新执行而导致的延迟。
在图3中,通过所选指令中的EOL警报来触发这种提前启动。循环4没有EOL警报,因为程序定序器单元14没有在循环4被终止之前重复循环4的指令的P阶段操作,如上面结合图3所述。通过比较,(a)循环3在指令13中具有相关联EOL警报;(b)循环2在指令14中具有相关联EOL警报;并且(c)循环1在指令16中具有相关联EOL警报。
从而,在图3的例子中,一个循环的相关联EOL警报位于该循环的倒数第三个指令中。然而,如下面结合图4-7所述,程序定序器单元14被配置成在循环的起始地址处更快地启动指令的P阶段操作的重新执行,从而(a)P阶段操作及其相应的R阶段和F阶段操作更可能在指令读取缓冲器50准备好执行这些指令的相应V阶段操作之前结束;并且(b)从而更不容易出现停顿。
在一个例子中,程序定序器单元14配置成在循环的相关联EOL警报之前启动这种重新执行的q个指令,其中q为预先选择的整数(例如,1)。这个特征在以下情况中是有利的(a)旧指令序列在该循环的倒数第n个指令中包括相关联EOL警报,但是其中通过响应于该循环的倒数第k个指令而触发这种提前启动来进一步提高系统10的性能,其中k和n为整数,并且其中k比n大预先选择的整数量q;并且(b)旧指令序列的重新编译或重新编程是昂贵的、不合时宜的、效率低或者不实际的。
图4为循环结束指令检测单元52的操作的流程图。该操作在步骤70处开始。在步骤70中,循环结束指令检测单元52识别(或确定)当前活动的循环。在步骤70之后,该操作前进至步骤72。
在步骤72中,循环结束指令检测单元52将当前活动循环的标识输出给循环结束地址寄存器文件54和循环控制逻辑60。在步骤72之后,该操作前进至步骤74。在步骤74中,循环结束指令检测单元52经由指令执行总线从指令读取缓冲器50接收其V阶段当前正在由指令读取缓冲器50执行的指令。在步骤74之后,该操作前进至步骤76。
在步骤76中,循环结束指令检测单元52确定(经由指令执行总线从指令读取缓冲器50接收到的)这个指令是否包括与当前活动循环相关联的EOL警报。如果没有,则操作返回到步骤70。相反,如果这个指令包括与当前活动循环相关联的EOL警报,则该操作前进至步骤78。在步骤78中,循环结束指令检测单元52向循环结束地址寄存器文件54和循环控制逻辑60输出信号。在步骤78中,操作返回到步骤70。
图5为循环结束地址寄存器文件54的操作的流程图。该操作在步骤80处开始。在步骤80中,循环结束地址寄存器文件54确定它是否(在当前活动循环的当前通过期间内)已经接收到来自循环结束指令检测单元52的信号。如果没有,则该操作在步骤80中自循环。相反,如果(在当前活动循环的当前通过期间内)循环地址寄存器文件54接收到来自循环结束指令检测单元52的信号,则该操作前进至步骤82。
在步骤82中,循环结束地址寄存器文件54从循环结束指令检测单元52接收当前活动循环的标识。在步骤82之后,该操作前进至步骤84。在步骤84中,循环结束地址寄存器文件54(a)存储当前活动循环的标识(“已存储循环标识”);(b)接收来自延迟逻辑56的地址输出;并且(c)存储与已存储循环标识相关联的这种地址。例如,在步骤84中,如果当前活动循环的相关联EOL警报位于该循环的倒数第n个指令中,则延迟逻辑56向循环结束地址寄存器文件54输出该循环的倒数第k个地址,其中k和n为整数,并且其中k比n大预先选择的整数量q。在步骤84之后,该操作返回到步骤80。
这样,循环结束地址寄存器文件54存储到预定数目(例如,4个)地址,每个都与相应的已存储循环标识相关联。如果循环结束地址寄存器文件54在执行步骤84之前已经存储有预定数量的地址,则循环结束地址寄存器文件54在循环结束地址寄存器文件54执行步骤84时在最近使用(“LRU”)的基础上重写它们中的一个。(在步骤84中被写入循环结束地址寄存器文件54中的)已存储地址及其相关联的已存储循环标识在该循环的每次通过期间内被写入循环结束地址寄存器文件54中。这样,即使已存储地址及其相关联的已存储循环标识被重写(例如,在系统10对中断指令序列进行处理的期间内),这种地址及其相关联的循环标识在该循环的下一次通过期间内被重新存储在循环结束地址寄存器文件54中。
在一个例子中,如果系统10在第一组通过之后终止第一循环,则系统10在第二组通过中仍然重复处理第一循环(例如在重复执行第二相对靠“外面”的循环的过程中),在该终止之后并且在第二组通过的开始和结束的整个过程中,(在第一组通过期间内在步骤84中被写入循环结束地址寄存器文件54中的)已存储地址及其相关联的已存储循环标识仍然存储在循环结束地址寄存器文件54中。
图6为循环结束地址检测单元58的操作的流程图。该操作在步骤90处开始,在该步骤中,循环结束地址检测单元58从当前地址寄存器66接收当前指令地址。在步骤90之后,该操作前进至步骤92。
在步骤92中,循环结束地址检测单元58确定该当前指令地址是否与存储在循环结束地址寄存器文件54中的地址相匹配。如果不匹配,则操作返回到步骤90。相反,如果当前指令地址与存储在循环结束地址寄存器文件54中的地址相匹配,则操作前进至步骤94。
在步骤94中,循环结束地址检测单元58(a)从循环结束地址寄存器文件54中读取与该地址相关联的已存储循环标识;并且(b)向循环控制逻辑60输出已存储循环标识和信号。在循环结束地址检测单元58执行步骤94时,已存储循环标识不一定标识该当前活动循环,因为该当前活动循环自从已存储循环标识被写入循环结束地址寄存器文件54中后可能已经改变。在步骤94之后,操作返回到步骤90。
图7为循环控制逻辑60的操作的流程图。该操作在步骤100处开始,在该步骤中,循环控制逻辑60确定它是否(在当前活动循环的当前通过期间内)已经接收到来自循环结束地址检测单元58的信号。如果没有,则操作前进至步骤102。
在步骤102中,循环控制逻辑60确定它是否(在当前活动循环的当前通过期间内)已经接收到来自循环结束指令检测单元52的信号。如果没有,则操作返回到步骤100。相反,如果(在当前活动循环的当前通过期间内)循环控制逻辑60接收到来自循环结束指令检测单元52的信号,则该操作前进至步骤104。
在步骤104中,循环控制逻辑60向程序地址控制逻辑62输出(用于识别当前活动循环的)信号。响应于这个信号,程序地址控制逻辑62(从该当前活动循环的相关联起始地址寄存器)读取当前活动循环的起始地址,并且启动在该当前活动循环的起始地址处的指令的P阶段操作的重新执行。在步骤104之后,该操作返回到步骤100。
在步骤100中,如果(在当前活动循环的当前通过期间内)循环控制逻辑60从循环结束地址检测单元58接收到该信号(表示该当前指令地址与存储在循环结束地址寄存器文件54中的地址相匹配),则操作前进至步骤106。在步骤106中,循环控制逻辑60接收由循环结束地址检测单元58输出的已存储循环标识(图6的步骤94)。在循环控制逻辑60执行步骤106时,已存储循环标识不一定标识该当前活动循环,因为该当前活动循环自从已存储循环标识被写入循环结束地址寄存器文件54中后可能已经改变。
在步骤106之后,操作前进至步骤108。在步骤108中,循环控制逻辑60从循环结束指令检测单元52接收当前活动循环的标识。在步骤108之后,操作前进至步骤110。
在步骤110中,循环控制逻辑60确定(在步骤106中接收到的)已存储循环标识是否与(在步骤108中接收到的)当前活动循环的标识相匹配。如果不匹配,则操作前进至步骤102。相反,如果已存储循环标识与该当前活动循环的标识相匹配,则循环控制逻辑60从循环结束地址检测单元58接收到(步骤100)的信号是当前有效的,并且操作前进至步骤104。
在可选实施方式中,在步骤76中(图4),循环结束指令检测单元52还确定该当前活动循环的相关联EOL标记是否位于(经由指令执行总线从指令读取缓冲器50接收到的)指令处。如果是,则操作前进至步骤78。在这个可选实施方式的一个修改版本中,如果当前活动循环的相关联EOL标记位于该指令处,则该操作前进至步骤78,但是只有在循环结束指令检测单元52在该当前通过期间之前还没有遇到(与当前活动循环相关联)的EOL警报的情况下。在这个可选实施方式的另一个修改版本中,即使该操作响应于位于该指令处的当前活动循环的相关联EOL标记而前进至步骤78,延迟逻辑56(在图5的步骤84中)也输出该循环的倒数第k个地址(如上所述),从而循环结束地址寄存器文件54接收该地址并且与已存储循环标识相关联地进行存储。因此,即使指令序列没有包括任何EOL警报,这种可选实施方式的版本也实现了上述各种优点。
总之,如上所述,系统10处理一个或多个指令循环。响应于循环结束指令检测单元52检测出在当前活动循环的通过期间内对特定指令(例如,包括当前活动循环的相关联EOL警报的指令和/或当前活动循环的相关联EOL标记所在的指令)的处理,程序定序器单元14(a)启动被编程在当前活动循环的开始处的初始指令(即,存储在当前活动循环的相关联起始地址处的指令)的读取;(b)存储被编程在初始指令和特定指令(即存储在当前活动循环的倒数第k个地址处的指令)之间的不同指令(例如,当前活动循环的倒数第k个指令)的标识(例如,地址)。根据已存储标识,响应于循环结束地址检测单元58检测出在当前活动循环的再次通过期间内对不同指令的处理,程序定序器单元14在再次通过期间内处理当前活动循环的最终指令之前启动初始指令的再次读取。
虽然已经示出并且描述了例举实施方式,但是可以在上述公开内容中想到许多修改、变化和替换,并且在某些情况中,可以在不相应地使用其它特征的情况下应用这些实施方式的一些特征。因此,按照与这里所公开的实施方式的范围一致的方式并且广义地解释所附权利要求是适当的。
权利要求
1.一种由信息处理系统在处理指令循环时执行的方法,包括响应于检测出在所述循环的通过期间内对特定指令的处理,启动对于被编程在所述循环开始处的初始指令的读取,并且存储被编程在所述初始指令和所述特定指令之间的不同指令的标识;并且根据所述已存储标识,响应于检测出在所述循环的再次通过期间内对所述不同指令的处理,启动对所述初始指令的再次读取。
2.如权利要求1所述的方法,其中启动所述读取的步骤包括响应于检测出在所述循环的所述通过期间内对所述特定指令的处理,在所述再次通过期间内处理最终指令之前启动所述读取,其中所述最终指令被编程在所述循环的结束处。
3.如权利要求1所述的方法,其中启动所述再次读取的步骤包括响应于检测出在所述循环的所述再次通过期间内对所述不同指令的处理,在所述再次通过期间内处理最终指令之前启动所述再次读取,其中所述最终指令被编程在所述循环的结束处。
4.如权利要求1所述的方法,其中所述特定指令为包括与所述循环相关联的循环结束警报的指令。
5.如权利要求1所述的方法,其中所述特定指令为与所述循环相关联的循环结束标记所在的指令。
6.如权利要求1所述的方法,其中所述循环为第一循环,并且其中所述信息处理系统处理包括所述第一循环和第二循环的多个指令循环,并且其中启动所述读取的步骤包括响应于检测出在所述循环的所述通过期间内对所述特定指令的处理,如果所述第一循环是包含所述特定指令的最内层嵌套循环、并且被调度为在处理位于所述第一循环外面的指令之前在所述再次通过中重复,则启动所述读取。
7.如权利要求6所述的方法,其中启动所述再次读取的步骤包括响应于检测出在所述循环的所述再次通过期间内对所述不同指令的处理,如果所述第一循环是包含所述不同指令的最内层嵌套循环、并且被调度为在处理位于所述第一循环外面的指令之前在另一次通过中重复,则启动所述再次读取。
8.如权利要求7所述的方法,其中所述特定指令为第一特定指令,所述初始指令为第一初始指令,所述不同指令为第一不同指令,并且所述已存储标识为第一已存储标识,并且所述方法包括响应于检测出在所述第二循环的通过期间内对第二特定指令的处理,启动被编程在所述第二循环的开始处的第二初始指令的读取,并且存储被编程在所述第二初始指令和所述第二特定指令之间的第二不同指令的第二标识;并且根据所述第二已存储标识,响应于检测出在所述第二循环的再次通过期间内对所述第二不同指令的处理,启动所述第二初始指令的再次读取。
9.如权利要求8所述的方法,其中启动所述第二初始指令的读取的步骤包括响应于检测出在所述第二循环的所述通过期间内对所述第二特定指令的处理,如果所述第二循环为包含所述第二特定指令的最内层嵌套循环、并且被调度为在处理位于所述第二循环外面的指令之前在所述再次通过中重复,则启动所述读取。
10.如权利要求9所述的方法,其中启动所述第二初始指令的所述再次读取的步骤包括响应于检测出在所述第二循环的所述再次通过期间内对所述第二不同指令的处理,如果所述第二循环为包含所述第二不同指令的最内层嵌套循环、并且被调度为在处理位于所述第二循环外面的指令之前在另一次通过中重复,则启动所述再次读取。
11.一种用于处理指令循环的系统,包括电路,用于响应于检测出在所述循环的通过期间内对特定指令的处理,启动被编程在所述循环开始处的初始指令的读取,并且存储被编程在所述初始指令和所述特定指令之间的不同指令的标识;并且根据所述已存储标识,响应于检测出在所述循环的再次通过期间内对所述不同指令的处理,启动对所述初始指令的再次读取。
12.如权利要求11所述的系统,其中所述电路用于响应于检测出在所述循环的所述通过期间内对所述特定指令的处理,在所述再次通过期间内处理最终指令之前启动所述读取,其中所述最终指令被编程在所述循环的结束处。
13.如权利要求11所述的系统,其中所述电路用于响应于检测出在所述循环的所述再次通过期间内对所述不同指令的处理,在所述再次通过期间内处理最终指令之前启动所述再次读取,其中所述最终指令被编程在所述循环的结束处。
14.如权利要求11所述的系统,其中所述特定指令为包括与所述循环相关联的循环结束警报的指令。
15.如权利要求11所述的系统,其中所述特定指令为与所述循环相关联的循环结束标记所在的指令。
16.如权利要求11所述的系统,其中所述循环为第一循环,并且其中所述系统处理包括所述第一循环和第二循环的多个指令循环,并且其中所述电路用于响应于检测出在所述循环的所述通过期间内对所述特定指令的处理,如果所述第一循环是包含所述特定指令的最内层嵌套循环、并且被调度为在处理位于所述第一循环外面的指令之前在再次通过中重复,则启动所述读取。
17.如权利要求16所述的系统,其中所述电路用于响应于检测出在所述循环的所述再次通过期间内对所述不同指令的处理,如果所述第一循环是包含所述不同指令的最内层嵌套循环、并且被调度为在处理位于所述第一循环外面的指令之前在另一次通过中重复,则启动所述再次读取。
18.如权利要求17所述的系统,其中所述特定指令为第一特定指令,所述初始指令为第一初始指令,所述不同指令为第一不同指令,并且所述已存储标识为第一已存储标识,并且其中所述电路用于响应于检测出在所述第二循环的通过期间内对第二特定指令的处理,启动被编程在所述第二循环的开始处的第二初始指令的读取,并且存储被编程在所述第二初始指令和所述第二特定指令之间的第二不同指令的第二标识;并且根据所述第二已存储标识,响应于检测出在所述第二循环的再次通过期间内对所述第二不同指令的处理,启动所述第二初始指令的再次读取。
19.如权利要求18所述的系统,其中所述电路用于响应于检测出在所述第二循环的所述通过期间内对所述第二特定指令的处理,如果所述第二循环为包含所述第二特定指令的最内层嵌套循环、并且被调度为在处理位于所述第二循环外面的指令之前在所述再次通过中重复,则启动所述第二初始指令的所述读取。
20.如权利要求19所述的系统,其中所述电路用于响应于检测出在所述第二循环的所述再次通过期间内对所述第二不同指令的处理,如果所述第二循环为包含所述第二不同指令的最内层嵌套循环、并且被调度为在处理位于所述第二循环外面的指令之前在另一次通过中重复,则启动所述第二初始指令的所述再次读取。
全文摘要
一种信息处理系统,用于处理指令循环。响应于检测出在所述循环的通过期间内对特定指令的处理,该系统启动被编程在所述循环开始处的初始指令的读取,并且存储被编程在所述初始指令和所述特定指令之间的不同指令的标识。根据所述已存储标识,响应于检测出在所述循环的再次通过期间内对所述不同指令的处理,启动对所述初始指令的再次读取。
文档编号G06FGK1860436SQ200480028452
公开日2006年11月8日 申请日期2004年9月28日 优先权日2003年9月30日
发明者阿伦·B·古德里奇 申请人:斯塔克里有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1