超标量处理机系统中单周期调度多指令的方法和系统的制作方法

文档序号:6414640阅读:163来源:国知局
专利名称:超标量处理机系统中单周期调度多指令的方法和系统的制作方法
技术领域
本发明一般涉及一种改进型数据处理系统,尤其涉及一种提高超标量处理机系统指令调度效率的方法和系统。在更具体地,本发明涉及一种超标量处理机系统单周期调度多指令的方法和系统。
现代数据处理系统的设计者试图不断增强系统的运行性能。提高数据处理效率的一种技术是达到短的周期时间和低的每指令周期数(CPI)比。把这些技术应用到增强型数据处理系统的一个突出例子是国际商用机器公司的RISC系统/6000(RS/6000)计算机。RS/6000系统的目的是不仅在数字密集的工程和科学应用而且在多用户商用环境中都良好运行。RS/6000处理机使用了一种超标量实现,它的意思是同时发出和执行多个指令。
同时发出和执行多指令需要一些独立的功能部件,这些部件能在高指令带宽下并发执行。RS/6000系统通过使用本质上是流水线的分离的分支部件、定点处理部件和浮点处理部件来达到这一点。由于这类系统中处理机的流水线特性,必须小心保证对执行后继指令所需要的某特定指令的结果要在调度该后继指令之前获得。保证所谓“数据相关事件”不会出现的技术阻碍在完成调度前面所有指令之前对某一特定指令进行调度。尽管这种技术保证数据相关事件不会出现,应用这种技术带来的性能损失是相当大的。
因此,现代超标量数据处理系统经常采用一种通常所说的“数据相关互锁电路”。这种电路具有与指令调度电路一致运行的逻辑来保证在为正确执行某指令而需从前面的指令得到的结果尚未获得之前该指令不会受到调度。实现数据相关互锁电路的逻辑总量和每条指令中源操作数的数据成正比。源操作数是指令中的一个字段,其用来访问寄存器文件中的一个操作数,以实现对指令的执行。
尽管数据相关互锁电路能在不造成上述明显性能损失的情况下避免出现数据相关事件。但是为包括大量源操作数和目的操作数的指令而设计和实现的数据相关互锁电路变得相当复杂。相关互锁防止了相关指令的调度,这些相关指令阻止那些本身可能是不相关的和可执行的后继指令进入调度分配器得到调度和执行。
在应用一种称为“寄存器更名”方法时也提到随着在每个处理机周期同时执行多指令而出现的数据相关事件。寄存器更名是这样一种技术,在一条指令的最后结果被放到一个寄存器文件之前,暂时把某一特定指令的结果放到一个寄存器中可供后面指令潜在使用。寄存器更名通常是这样实现的,即设置一个具有附加定位的寄存器文件数组和一个指针装置来识别已赋作为逻辑寄存器的特定物理寄存器。现有技术中还利用多寄存器文件数组来提供数据的多个“读”端口或在异常情况下保留以前的结果作为备用。
尽管该技术提供了同时调度和执行多指令的能力,要不然可能需要连续的执行操作,使用该技术把指令调度给执行部件时存在着一个问题。一条指令对利用特定的数据或特定的操作数进行执行的要求通常使在单处理机周期内把一条指令及相关数据调度到一个执行部件成为不可能,因为调度部件或执行部件必须对查找表或指针系统进行复杂的阅读来确定何时临时寄存器含有执行该指令所需要的数据。
显而易见,需要一种方法和系统,它通过实现对指令中的数据和操作数迅速的调度来达到在单处理机周期内对超标量处理机的指令调度。
本发明的一个目的是提供一种改进的数据处理系统。
本发明的另一个目的是提供一种改进的方法和系统以提高超标量处理机系统中的指令调度效率。
本发明的再一个目的是为超标量处理机系统单周期指令调度提供一种改进的方法和系统。
上述目的是按下述实现的。本发明的方法和系统允许为超标量处理机系统进行单周期指令调度,即同时把多个指令调度给一组执行部件进行执行并把其结果放到指定的通用寄存器中。每条指令通常包括至少一个源操作数和一个目的地操作数。设置了一批中间存储器缓冲区而且每次把一条指令调度给一个可使用的执行部件,把某一特定中间存储器缓冲区分配给该被调度指令中的任一目的地操作数,通过取消确定和选择特定通用寄存器或指定的替代通用寄存器的这个需求达到在单周期内对指令的调度。
通过下面详尽的文字说明将会更清楚上述提要和本发明的其他目的、特性和优点。
对本发明本身以及最佳应用方式,进一步目的和其优点的最好了解可通过参考直观性实施例的下述详细说明并连带参阅相应附图来达到。附图为

图1是可用来实现本发明方法和系统的超标量数据处理系统高层方块图;图2是可用来实现本发明方法和系统的超标量数据处理系统(图1)指令调度电路系统的更详细方块图;图3是一个高层方块图,描述根据本发明的方法和系统的超标量处理系统(图1)中中间存储器缓冲区的应用;图4是根据本发明的方法和系统的一个调度控制进行程的图解表示;图5是一个逻辑流程图,描述根据本发明的方法和系统的一个单周期指令调度进程;而图6是一个逻辑流程图,描述根据本发明的方法和系统在选定的指令中确定源操作数的一个进程。
现看附图特别是图1,图1是实现本发明方法和系统的超标量数据处理系统10的高层方块图。如所示,数据处理系统10包括一个存储器18,其可存储数据、指令等等。利用超高速缓冲器/存储器接口20按熟练的技术人员熟知的方式存储在存储器18内的数据或指令得到最好地存取。超高速缓冲存储器系统容量估计和应用是数据处理技术中一门得到很好了解的子专科,本应用中不再论述。尽管如此,熟练的技术人员懂得采用现代相联超高速缓冲器技术,利用临时地存储在超高速缓冲器/存储器接口20中的数据,可以达到存储器存取高百分率。
从超高速缓冲器/存储器接口20出来的指令通常装入到最好有多个队列位置的指令分配器22中。在超标量数据处理系统典型实施例中指令分配器的每个位置可包括2到8个指令,因此,在一给定周期,最多可有8个指令被装入到指令分配器22中,取决于有多少个有效的指令通过了超高速缓冲器/存储器接口20和在指令分配器22中有多大可使用空间。
如在这种超标量数据处理系统所典型的那样,指令分配器22被用来把指令调度给执行部件24。如图1中所示,根据设计选择数据处理系统10可以包括一个或多个浮点部件、定点处理部件、送入/存储部件和一个分支处理机部件。这样,指令分配器22在单周期内可调度多个指令,每个执行部件一条指令。根据设计选择,执行部件可包括保留站,保留站可允许在单周期内对单一执行部件调度多于一个的指令。这样,超标量处理机的多个执行部件的每一个在单周期内可接收多个指令。另外,在多处理机系统中指令可调度给带有多个处理机的多个执行部件24。
现参看图2,它是可用来实现本发明方法和系统的超标量数据处理系统(图1)中的指令调度电路系统的较详细方块图。如图示,从超高速缓冲器/存储器接口20出来的指令通常以组按应用规定的顺序序列装入到指令分配器22中。因而,根据设计选择,2个、4个或8个一组的指令从超高速缓冲器/存储器接口20装入到指令分配器22中,以在机会主义原理上调度到执行部件24中的一个或多个执行部件中。如图2所表示的实施例中,这些执行部件可包括1个浮点执行部件26、多个送入/存储部件28和30、多个定点执行部件32和34和一个分支执行部件36。当然,如前面所讨论的那样,根据设计选择数据处理系统10中可以包括更多的或更少的不同类型执行部件。
如在这里所描述的这类超标量数据处理系统中所典型的那样,通常还设置一批通用寄存器。在图2所描述的实施例中,设置了两组通用寄存器,浮点通用寄存器44和定点通用寄存器46。从而,图2所描述的执行部件里多个指令的执行结果通常存储到一个选定的通用寄存器中供以后利用。根据本发明的一个重要特征,还设置了一批中间存储器缓冲区,即浮点中间存储器缓冲区40和定点中间存储器缓冲区42。如在这里更详细的说明那样,每个执行部件通过一条独立的总线和各个中间存储器缓冲区相连接。于是,一个执行部件所需的数据或一个执行部件执行一条指令所产生的数据可放置到一条独立总线上并被存储到一个指定的中间存储器缓冲区中以供其他执行部件利用或将来传送给一个通用寄存器。
按这种方式,不再需要保留通常与寄存器更名方法相关联的复杂查找表,可将一个中间存储器缓冲区有效地分配为一个目的操作数的存储位置而迅速得到使用,允许该指令在单处理机周期内得到调度,因为数据位置不再需要从一个更名寄存器文件里确定。此外,对指令的非顺序性执行成为可能,只要把这些指令的输出暂时存储在中间寄储器缓冲区内,将来再按应用规定的顺序序列装配到通用寄存器中。
如图示,每个定点执行部件通过一条独立总线和定点中间存储器缓冲区42相连,而浮点执行部件通过一条独立总线和各个浮点中间存储器缓冲区40相连。如熟练的技术人员所懂得的那样,送入/存储部件28和30需要和浮点中间存储器缓冲区40和定点中间存储器缓冲区42相连,因为这些部件将要送入和存储浮点和定点的两种数据。
根据本发明的另一个重要特征装备了一个完成缓冲器48。完成缓冲器48用来跟踪执行部件24中正在执行的多标量指令的完成。这些指令的执行结果,如前面所述,暂时放在一个相关的中间存储器缓冲区中,当显示出一条指令或一组指令已成功完成,按照应用规定的顺序序列可利用完成缓冲器48启动把这些已完成指令数据的结果送入相应的通用寄存器的传输。此外,当出现异常条件时,完成缓冲器48可用来启动在异常出现前任何已完成指令的执行结果的存储,还可用来控制指令分配器22在出现异常条件的那一点再启动该进程,允许以一种有效方式用有效的输出把错误的或无效的数据替换掉,或者可用来为特别类型的异常启动由应用专用程序规定的一个新的指令序列。
现参看图3,它是根据本发明的方法和系统的超标量处理机系统(图1)中应用中间存储器缓冲区的高层方块图。设置了一个可由指令分配器22访问的存储器缓冲区索引58。如将在这里详细描述的那样,存储器缓冲区索引58用来存储和保留在一批中间存储器缓冲区60中的各缓冲区和一个指定的通用寄存器之间的关系指示,以便应用在后继指令的执行中。
多中间存储器缓冲区60最好和多独立总线64相连。在最佳实施例中,独立总线64的数量等于中间存储器缓冲区60的数量,各个中间存储器缓冲区和一条总线相连。各个中间存储器缓冲区60可对一条相应的独立总线64进行读和写。熟练的技术人员公认总线的采用数量可按设计选择变化。
图中显示了多个执行部件24a、24b、24c,它们和多独立总线64的各条总线相连。最佳实施例中,执行部件24a、24b、24c可以包括一个浮点执行部件、多个送入/存储部件、多个定点执行部件和一个分支执行部件。但是,熟练的技术人员懂得执行部件的数量和类型可根据设计选择变化。
多执行部件24a、24b、26c中的每一个都可以对各条独立总线64进行读入和写给。从而,通过多独立总线64多执行部件24a、24b、24c中的每个和多中间存储器缓冲区60的每个相连。这样,当在一个执行部件里执行一条指令生成数据后,该执行部件可把这个数据放置到与定义为该数据目的地的某指定中间存储器缓冲区所对应的一条总线上,在那里该数据可暂时存储起来。同时,通过把一个“有效”位设置到适当的状态该执行部件标明该总线上的数据是有效的。如此,当该数据在总线上时,以及在该数据被存到指定的中间存储器缓冲区之前和存入的同时,任何需要该数据的其它执行部件可从总线上检索该数据。因此,预备独立总线的一个优点是不再需要把该数据存储到一个缓冲器中然后再从缓冲器中访问该数据。直接从总线检索数据的能力可大大提高处理机系统的动行速度。
继续参阅图3,可以看到多独立总线64的各条都和通用寄存器62连接。当要把一条指令调度给一个执行部件时,最好把指定的中间存储器缓冲区和被选定的通用寄存器之间的关系存储到存储器缓冲区索引58。当另一个执行部件需要该执行结果时,利用存储器缓冲区索引58里的信息可进行结果的传送。如同在这里将详细讨论那样,存储器缓冲区索引58中存放的信息可是该指定中间存储器缓冲区的一个标识符,利用通用寄存器的标识可对其进行访问,或者该存放的信息可是一个通用寄存器的标识符,并可利用该指定中间存储器缓冲区的标识对此通用寄存器进行访问。
按这种方式,不再需要维护通常和寄存器更名方法有关的复杂查找表,因为在调度一条指令中可以将一个中间存储器缓冲区立刻定为各目的操作数的存储位置,而不需要对通用寄存器文件更名。进而,存储器缓冲区索引58允许按一种非顺序方法执行指令,因为各条指令的执行结果暂时地存放在中间存储器缓冲区60里,利用存储器缓冲区索引58里的信息和完成缓冲器48里的内容(见图2)这些结果可由后继指令接着使用。
现参看图4,它是按照本发明的方法和系统的调度控制进程的图示表示。如所示,多个指令图示在指令调度缓冲器64中。代表多指令的指令66、68、70和72按应用规定的顺序序列已装载到指令调度缓冲器64中。每条指令,如图示,一般包括一个源操作数和一个目的操作数;但是,熟练的技术人员懂得可以有更多操作数。
按照本发明的一具重要特性,试图调度指令72需要分配一个中间存储器缓冲区以供目的地DN使用。另外需要指定一个位置以供源操作数SN利用。按照本发明的方法和系统,它是这样完成的,首先对源操作数SN与在指令调缓冲器中那些在该源操作数之前的目的操作数进行比较。这样,比较部件74用来对目的地D3、D2、D1和源操作数SN进行比较。这个进程用来确定为源操作数SN规定的位置是否目前已经在指令调度缓冲器64之中。由于每条指令可以顺序地修改源的内容以及指令调度缓冲器64中的指令是按应用规定的顺序序列排列的,超前指令72量近的并和源操作数SN相等的目的地将得到利用。从而,如果利用比较部件74进行的第一次比较表明相匹配则对源操作数SN的说明置为等于目的操作数D3。类似地,当前面的目的操作数和源操作数SN都不匹配时,源操作数SN的说明可以被置为目的操作数D2或D1。
现参看图5,其表示按照本发明的方法和系统的一个单周期指令调度进程的逻辑源程图。如所示,该进程从框80开始然后进入框82。框82中判定是否某一指令产生对执行部件的请求。如果没有,则该进程仅仅重复直到产生对执行部件的请求为止。当一个执行部件请求产生后该进程进入框84。
框84中判定是否可以得到这条指令所要求类型的执行部件。如果不能,进程仅仅重复直到某一合适的执行部件变为可以得到。然后,进程进入框86。框86中判定被调度指令中的各目的操作数是否可以得到一个中间存储器缓冲区。根据本发明一个重要特性,一个中间存储器缓冲区被分配给指令中的各个目的操作数,这样在单处理机周期内可对该指令及相关数据进行调度,不要求对通用寄存器文件中的一个更名寄存器进行复杂的判断。如果不能够把一个中间存储器缓冲区分配给选定指令中的目的操作数,该进程等候一个中间存储器缓冲区可用。
接着,进程进入框88。框88中表示在可以得到这样一个中间存储器缓冲区后为该选定指令里的目的操作数分配一个中间存储器缓冲区。然后,进程进入框90。在框90中判定是否该选定指令内的所有源操作数都已得到规定。如将在下面更详细说明那样,在允许一条指令被调度之前,必须为它包含的各源操作数规定一个获得数据的源或位置。若该选定指令的源操作数没有全部得到规定,则进程仅仅重复,直到对每个源操作数的规定明确之刻。
当选定指令的所有源操作数都得到规定后,进程进入框92。框92中表明在当前的处理机周期内对选定指令和数据说明进行调度。从而通过允许可把中间存储器缓冲区分配给各条指令的目的操作数,本发明的方法和系统允许一条指令和执行指令所需的数据说明可在一个单周期内得到调度。然后,进程进入框94并返回。尽管上述进程步骤描述为连续进行的,熟练的技术人员懂得为效率目的这些步骤通常实质上将同时并行出现。
最后参看图6,它是一个逻辑流程图,表示根据并发明的方法和系统确定选定指令中源操作数的进程。如图示,进程从框100开始,然后进入框102。在框102中识别指令中的一个源操作数以供说明。然后进程进入104。框104中判定在指令调度缓冲器中某一指令以前的一个目的操作数是否和当前正在考虑的源操作数相同。若是,进程进入框106。
框106中表示把该操作数说明设置为前面最近的目的操作数缓冲区分配。当然,熟练的技术人员懂得应用规定的顺序序列中每条相继的指令可改变已指定成为某特定的目的地的一个缓冲区的内容。这样,前面最近的目的操作数缓冲区分配应该总是得到使用。然后进程进入框114并返回,此时已允许该指令得到调度,如图5所示。
再次参看框104,若在指令调度缓冲器中前面的目的操作数都不等于当前的源操作数,进程进入框108。框108中判定用于该源操作数的一个指令缓冲区是否如前面所述已经指定的缓冲区索引中。若是,进程进入框110。在框110中把该源操作数说明设置为缓冲区索引中指定的缓冲区,然后进程进入框114并返回。按这种方式,如果一个中间存储器缓冲区已被分配给一个作为当前指令的源的以前的目的地,则即使以前的指令已被调度,仍可完成适当的中间存储器缓冲区的识别。
最后再看框108,当被识别源操作数的缓冲区未被指定在缓冲区索引中时,进程进入框112。框112中把源操作数的说明置为通用寄存器文件中规定的通用寄存器,然后进程返回,如框114所示。
尽管本流程图的进程是按连续方式描述的,熟练的技术人员懂得为提高指令的调度效率,对以前的一个目的操作数是否等于当前的源操作数的判定,对一个指令缓冲区是否已在缓冲区索引中得到指定的判定或通用寄存器是否需要被指定为当前源操作数的说明的判定通常是并行进行的,以大大提高进程的效率。
尽管通过参照最佳实施例本发明得到具体描述,熟练的技术人员会理解在不偏离本发明的精神和范围的前提下可对其格式或细节进行各种改变。
权利要求
1.一种可在超标量处理机系统中提高指令调度效率的方法,它能够在单处理机周期内同时把多条标量指令调度给多个执行部件,所述多条标量指令每条包括至少一个源操作数和一个目的操作数,所述方法的特征在于包括以下步骤在所述超标量处理机系统中设置多个中间存储器缓冲区;在单处理机周期内确定所述多个执行部件中是否有一个适当的执行部件可用来执行从所述多条标量指令中选定的一条指令;把所述多个中间存储器缓冲区中的一个特定缓冲区分配给所述多条标量指令中的所述一条选定指令里的所述目的操作数;并且响应于执行部件的可用性以及多个中间存储器缓冲区之一到所述目的操作数的分配,把所述多条标量指令中的所述一条选定的指令调度给所述多个执行部件中的一个适当的执行部件,从而对所述多条标量指令中的所述一条选定指令的执行结果可以写进到所述多个中间存储器缓冲区中的所述一个特定缓冲区中。
2.根据权利要求1的方法,其特征在于包括这个步骤把所述多条标量指令中所述的一条选定指令的所述执行结果从所述多个中间存储器缓冲区中的所述特定中间存储器缓冲区里按照机会传送到一个通用寄存器中。
3.根据权利要求1的方法,其特征在于包括这个步骤在所述单处理机周期内确定所述多条标量指令的前面一条指令中所含的一个目的操作数是否等于从所述多条标量指令中所述的一条选定指令中的一个源操作数。
4.根据权利要求3的方法,其特征在于响应于执行部件的可用性以及多个中间存储器缓冲区之一到所述目的操作数的分配、把所述多条标量指令中的所述一条选定的指令调度给所述多个执行部件中的一个适当的执行部件的步骤包括这样的步骤响应于执行部件的可用性、所述多个中间存储器缓冲区之一到所述目的操作数的分配以及所述多个中间存储器缓冲区之一到所述多条标量指令的所述前面一个指令的所述目的操作数的分配,把所述多条标量指令中的所述一个选定的指令调度给所述多个执行部件中的一个适当的执行部件。
5.一种可在超标量处理机系统中提高指令调度效率的系统,它能够在单处理机周期内同时把多条标量指令调度给多个执行部件,所述多条标量指令每条包括至少一个源操作数和一个目的操作数,所述系统的特征在于包括位于所述超标量处理机系统中的多个中间存储器缓冲区;用于在单处理机周期内确定所述多个执行部件中是否有一适当的执行部件可用来执行从所述多条标量指令中选定的一条指令的装置;用于在单处理机周期内把所述多个中间存储器缓冲区中的一个特定的缓冲区分配给所述多条标量指令中的所述一条选定的指令里的所述目的操作数的装置;以及用于响应于执行部件的可用性以及多个中间存储器缓冲区之一到所述目的操作数的分配、在单处理机周期内把所述多条标量指令中的所述一条选定的指令调度给所述多个执行部件中的一个适当执行部件、从而对所述多条标量指令的所述一条选定的指令的执行结果可以写进到所述多个中间存储器缓冲区中的所述一个特定的中间存储器缓冲区的装置。
6.根据权利要求5的系统,其特征在于包括用于把所述多条标量指令中的所述一条选定指令的所述执行结果从所述中间存储器缓冲区中的一个特定中间存储器缓冲区里按照机会传送到一个通用寄存器的装置。
7.根据权利要求5的系统,其特征在于包括用于在所述单处理机周期内确定所述多条标量指令的前面一条指令中所含的一个目的操作数是否等于从所述多条标量指令中所述一条选定指令中的一个源操作数的装置。
8.根据权利要求7的系统,其特征在于所述用于响应于执行部件的可用性以及多个中间存储器缓冲区之一到所述目的操作数的分配、把所述多条标量指令中的所述一条选定的指令调度给所述多个执行部件中的一个适当执行部件的装置包括用于响应于执行部件的可用性、所述多个中间存储器缓冲区之一到所述目的操作数的分配以及所述多个中间存储器缓冲区之一到所述多条标量指令的所述前面一条指令的所述目的操作数的分配、在所述单个处理机周期内把所述多条标量指令中的一条选定的指令调度给所述多个执行部件中能够得到的一个适当的执行部件的装置。
全文摘要
一种在超标量处理机系统中实现单周期指令调度的方法和系统,其把多指令同时调度给一组执行部件进行执行并把所产生的结果置入规定的通用寄存器。设置一批中间存储器缓冲区,每次把一条指令调度给一个可用的执行部件,某一特定的中间存储器缓冲区被指定给所调度指令中的任一目的操作数,通过取消任何确定和选择特定通用寄存器或指定的替代通用寄存器的要求达到在单个周期内对该指令的调度。
文档编号G06F9/38GK1221913SQ9812380
公开日1999年7月7日 申请日期1998年10月30日 优先权日1993年1月8日
发明者詹姆斯·A·卡勒, 郭星辰, 大卫·S·莱文坦, 奥伯雷·D·奥格登, 阿里·A·布尔萨巴尼, 鲍尔·涂光国, 多纳尔德·E·沃尔德克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1