在一个处理系统中处理多条存储指令完成的方法和系统的制作方法

文档序号:6414783阅读:261来源:国知局
专利名称:在一个处理系统中处理多条存储指令完成的方法和系统的制作方法
技术领域
本发明一般来说涉及一个处理系统,更特别说涉及在一个处理系统中提供多条存储指令完成。
在持续开发更快更强的计算机系统的过程中,使用了一个重要的微处理器,称为精简指令集计算机(RISC)处理器。RISC处理器领域的日益进步引起超标量处理器的发展。超标量处理器,如其名所指,执行在传统标量微处理器中并不普遍存在的功能。这些功能中包括不按程序顺序执行指令的能力。虽然这些指令不按序发生,但是执行的结果就像按程序顺序发生的一样,从而维护适当的数据相干性。
超标量处理器性能中的一个共同瓶颈是在一给定时间处理器内可能容纳的未完成的指令数目。通常,指令单元包含一个队列,它指示未完成指令的数目。如果达到一个最大数目的话,则该队列通常暂停指令的进一步分发。
可能缓慢完成的一类指令是存储指令。存储指令完成慢的原因有几种。例如,存储指令完成慢是由于可以在每一周期完成的存储的最大数目,以及由于可以在每一周期更新超高速缓冲存储器的存储的数目的限制。常规超标量处理器通常每周期只完成一条存储指令。这常常引起分发停顿。因此,需要一个系统,来有效充分解决这些问题,并减少没有存储指令完成导致的分发单元停顿的次数,从而增强总处理器性能。
因此,本发明旨在增加可以在一周期内完成的存储指令数目。公开了一种方法和系统,其用于在一个停顿条件后处理在一个处理系统中的多条存储指令完成。该处理系统包括一个指令单元,一个转换单元和至少一个执行单元。指令单元包括一个分发单元和一个完成单元。一个加载存储单元包括一个用于接收从分发单元来的多条指令的指令队列,至少一个用于接收从指令队列来的多条指令的有效地址(EA)单元,和一个存储队列。存储队列连接到转换单元、至少一个执行单元和至少一个EA单元。存储队列在完成多条指令中的每一条之前从至少一个执行单元接收与多条指令中的每一条指令相关的数据和实际地址信息。
通过这样做,解决了常规系统伴随的瓶颈,亦即减少了可以由指令单元分发的最大指令数目。
根据本发明的一个实施例,提供一个用于超标量处理器的电路,其允许迅速完成在一个完成表中排队的存储指令。根据本发明的该实施例,提供一个存储为存储指令所用数据的数据队列。在存储指令执行后,以及其有效地址可用时,该电路确定存储指令需要的数据在GPR或重命名寄存器中的位置。如果最初产生由该存储需要的数据的指令成功完成,则将该数据结构化,亦即取决于该指令是定点还是浮点运算置于通用寄存器(“GPRs”)或浮点寄存器(“FPRs”)中。为当前讨论起见,假定是定点指令。应该理解,对于熟悉本技术领域的人来说,本发明很容易扩展到浮点指令。
如果产生存储指令需要的数据的指令尚未完成,但是由相关执行单元处理而产生一个最后结果的话,那么该数据将作为有效数据存储在重命名存储器中。如果该指令尚未产生存储指令需要的数据,则为接收该数据而设定的重命名寄存器将由处理器标记为无效。
一旦存储指令需要的数据可用的话,则不管该数据在GPR还是在一个有效的重命名寄存器中,都将传送给在该数据队列中的一个条目。在重命名寄存器上提供一个读端口以便利该项操作。由于在本发明的当前版本中完成必须以程序顺序进行,因此,传送数据到数据队列中的步骤可能远在完成队列指针指向作为下一要完成的指令的存储指令之前发生。如果完成已由一个在该存储指令之前发布的指令停顿的话,这一点特别如此。当存储指令应该完成的时刻,该存储指令需要的数据已经在数据队列中,并且可以送往超高速缓冲存储器,不像常规处理器,需要访问GPRs。这允许多条存储指令可以在单一时钟周期内完成,因为在GPR端口处无瓶颈,这是由于当存储指令在完成窗口内正在等待它轮到时数据已被“预加载”。当然这在GPRs只有单一读端口的常规处理器内是不可能的。可以增加更多端口,但是这将需要另外的设计,芯片面积和复杂性。根据下面对本发明的详细实施例的公开,熟悉本技术领域的人会清楚本发明的其它目的和优点。
结合下面详细的说明和附图,可以更充分理解本发明各方面的这些和其它优点。


图1表示根据本发明的一个计算机系统的方框图。
图2是用于完成一个处理系统中的存储指令的常规系统。
图3是一个定时图,说明图2的数据流的操作。
图4是说明根据本发明为完成多个存储指令的数据流的第一实施例的图,其中单一LSU访问GPRs和FPRs。
图5是说明根据本发明为完成存储指令的数据流的流程图。
图6是一个定时图,说明图4的数据流的操作。
图7是说明根据本发明为完成多个存储指令的数据流的第二实施例的图,其中双LSU访问GPRs和FPRs。
图8是一个定时图,说明图7的数据流的操作。
图9是一个方框图,说明根据本发明的一个实施例的一个处理器,它访问GPRs、FPRs和重命名寄存器。
图10A-10F说明用在图9的处理器中所示的实施例中的各种队列的逻辑内容。
图11A-11B是说明根据本发明的一个实施例的一个处理器的操作流程图。
图12是一个定时图,说明根据本发明的一个实施例的一个处理器的操作。
本发明涉及增加可以在一个超标量处理器中完成的存储指令数目以减少分发停顿。介绍下面的说明以使熟悉本技术领域的人能制作和使用本发明,其在一个专利申请及其需求的上下文内提供。十分明显,熟悉本技术领域的人很容易对此间叙述的优选实施例和一般原理及其特征进行各种修改。
图1是根据本发明用于处理信息的一个处理器系统10的方框图。在该优选实施例中,处理器10是一个单集成电路超标量微处理器,诸如德克萨斯州Austin市IBM公司生产的PowerPC处理器。相应地,如下面进一步要叙述的,处理器10包括各种单元、寄存器、缓冲器,和其它部分,所有这些都由集成电路形成。另外,在该优选实施例中,处理器10根据精简指令集计算(“RISC”)技术操作。如图1所示,系统总线11连接到处理器10的一个总线接口单元(“BIU”)12。BIU12控制在处理器10和系统总线11之间的信息传输。
BIU12连接到处理器10的一个指令超高速缓冲存储器14和一个数据超高速缓冲存储器16。指令超高速缓冲存储器14输出指令到一个定序器单元18。定序器单元18响应从指令超高速缓冲存储器14输出的指令选择性地输出指令到处理器10的其它执行电路。
除包括分发单元46和完成单元48两执行单元的定序器单元18以外,在该优选实施例中,处理器10的执行电路还包括多重执行单元,亦即分支单元20、定点单元A(“FXUA”)22、定点单元B(“FXUB”)24,复定点单元(“CFXU”)26、加载/存储单元(“LSU”)28和浮点单元(“FPU”)30。FXUA22、FXUB24、CFXU26和LSU28从通用结构寄存器(“GPRs”)32和定点重命名缓冲器34输入其源操作数信息。此外,FXUA22和FXUB24从进位(“CA”)寄存器42输入一个“进位位”。FXUA22、FXUB24、CFXU26和LSU28输出其运算结果(目的操作数信息)存储在定点重命名缓冲器34中选择的条目。另外,CFXU26把源操作数信息和目的操作数信息从专用寄存器(“SPRs”)40输入或向其输出。
FPU30从浮点结构寄存器(“FPRs”)36和浮点重命名缓冲器38输入其源操作数信息。FPU30输出其运算结果(目的操作数信息)存储在浮点重命名缓冲器38中选择的条目。
定序器18从GPRs32和FPRs36输入信息和向其输出信息。从定序器18,分支单元20输入指令和指示处理器10当前状态的信号。响应这样的指令和信号,分支单元20输出(到定序器18)信号指示为存储由处理器10执行的一系列指令的适当存储器地址。响应从分支单元20来的这种信号,定序器18从指令超高速缓冲存储器14输入指定的指令序列。如果一条或多条指令序列未在指令超高速缓冲存储器14中存储的话,则指令超高速缓冲存储器14从连接到系统总线11的系统存储器39中输入(通过BIU12和系统总线11)这种指令。
响应从指令超高速缓冲存储器14输入的指令,定序器单元18通过分发单元46选择分发这些指令到执行单元20、22、24、26、28和30中的选定单元。每一执行单元执行一条或多条特定指令类型的指令。例如,FXUA22和FXUB24对源操作数执行第一类定点数学运算,诸如加、减、与、或和异或。CFXU26对源操作数执行第二类定点运算,诸如定点乘和除。FPU30对源操作数执行浮点运算,诸如浮点乘和除。
处理器10通过同时在各个执行单元20、22、24、26、28和30处理多重指令而获得高性能。相应地,每一指令作为一序列的阶段被处理,每一条可与其它指令的阶段并行执行。这样一种技术称为“流水线”。本优选实施例一个重要特征是,一条指令通常以6个阶段执行,亦即,取指令、解码、分发、执行、完成和回写。
在本优选实施例中,每一指令需要一个机器周期来完成指令处理的每一阶段。然而,某些指令(例如由CFXU26执行的复定点指令)可能需要多于一个的周期。因此,在一条特定指令的执行和完成阶段之间由于完成前一指令需要的时间变化可能发生不同的延迟。
在响应一条加载指令时,LSU28从数据超高速缓冲存储器16输入信息,并把该信息复制到从重命名缓冲器34和38中选定的重命名缓冲器中。如果该信息未存储在数据超高速缓冲存储器16中,则数据超高速缓冲存储器16从连接到系统总线11的一个系统存储器39输入(通过BIU12和系统总线11)这种信息。此外,数据超高速缓冲存储器16能够将其信息输出(通过BIU12和系统总线11)到连接到系统总线11的系统存储器39中。响应一条存储指令,LSU28从GPRs32、FPRs36、重命名缓冲器34和38中选择的一个输入信息,并把该信息复制到数据超高速缓冲存储器16或存储器。
在执行单元之间,例如FXUA22、FXUB24、重命名缓冲器34以及分发单元46之间相互反应的一个例子是,一条指令“addc,a,b”从分发单元46分发到FXUA22。分发单元46给FXUA22提供操作数“a”和“b”的标记,告诉FXUA22在哪里取这些操作数的数据,其为熟悉本技术领域的人所熟知。例如,在具有6个重命名缓冲器的系统中,分发单元46可以使用一个6位标记100000适当地标记“a”的操作数位于重命名缓冲器1。然后,标记010000可以合适地用于指示操作数“b”位于重命名缓冲器2。由于FXUA22不写GPRs,因此分发单元46必须用一个表示操作的目的地的重命名缓冲器标记,例如001000,指示该“add”指令的结果要放入重命名缓冲器3中。
如前所述,现有技术系统的一个问题是在一个周期只能完成一个存储指令。为说明常规系统中的这一问题,现在参考图2及其说明。
图2是一个用于完成处理系统中的存储指令的常规系统。在该实施例中,指令单元102包括一个分发单元103和一个完成单元105。指令单元102在分发单元103从一个指令超高速缓冲存储器104接收指令。然后分发单元103把从指令超高速缓冲存储器中接收的存储指令供给加载/存储(LDST)单元106。分发单元103还发送该存储指令到完成单元105。如果在LDST106中有先前的指令的话,则把该存储指令供给一个指令队列108。如果在LDST106中无先前的指令的话,则可以绕过指令队列108,而把该存储指令直接供给有效地址(EA)单元110。无论在哪种情况,EA单元110于是就接收一个特定指令的地址信息。
有效地址的控制指令供给存储队列130的一个结束队列(FQ)112,而有关地址信息供给转换单元114。转换单元114把EA信息转换为一个实际地址(RA)并将该RA供给FQ112。然后FQ112把一个结束有效信号供给完成单元105。然后完成单元105提供一个完成有效信号给FQ112。然后FQ112发送地址到定点单元(FXU)116和浮点单元(FPU)118。然后FXU和FPU提供有关这些地址的数据给完成队列(CQ)120。FQ112也提供RA信息给CQ120。然后CQ120可以把该存储指令供给数据超高速缓冲存储器122。
现在参考图3,图中所示为定点执行(FXD)单元116的多条存储指令1-4的数据流的定时图。在该实施例中,在202一般显示,指令1在周期1分发,指令2在周期2分发,指令3在周期3分发,指令4在周期4分发。之后,在204一般显示,LDST单元106在周期2的前半周期执行指令1的有效地址(EA1),在周期3的前半周期执行指令2的有效地址(EA2),在周期4的前半周期执行指令3的有效地址(EA3),在周期5的前半周期执行指令4的有效地址(EA4)。在206一般示出指令1-4的转换地址的访问。指令1的地址的访问在周期2的后半周期和周期3的前半周期之间,指令2在周期3的后半周期和周期4的前半周期之间,指令3在周期4的后半周期和周期5的前半周期之间,指令4的地址在周期5的后半周期和周期6的前半周期之间。
然后从转换单元提供实际地址,这在208处一般示出。指令1的实际地址(RA1)在周期3的后半周期期间提供,指令2的实际地址(RA2)在周期4的后半周期期间提供,指令3的实际地址(RA3)在周期5的后半周期期间提供,指令4的实际地址(RA4)在周期6的后半周期期间提供。
在该实施例中,前面提到的结束队列分别在周期4-7期间装入指令1-4的实际地址,其一般示于210。指令1-4可以在周期4-7结束,其一般示于212。即使指令1-4可以完成,在这些指令之间仍然存在结构依赖关系,这是由于结构寄存器堆中只有单一读端口,这限制了处理器的性能,其一般示于213。也就是说,指令1可以在周期5完成,指令2只有在指令1完成时才可能在周期6完成,指令3只有在指令1和2完成时才可能在周期7完成,最后,指令4只有在指令1-3完成时才可能在周期8完成。
在214示出的一个停顿条件后,并且如果指令完成单元在周期n+1开始满的话,则在216一般示出的指令1-4可以一次完成一个,原因是前述的结构依赖性。这是通过完成单元105为指令1-4分别在周期n+1到周期n+4期间启动一个完成信号而实现的。因此,可以访问定点单元通用寄存器(GPRs)以分别从周期n+1到周期n+4获得指令1-4的数据,其一般示于218。各条指令的数据有效信号也分别从周期n+1到周期n+4提供,其一般示于220。
之后,完成的存储队列用装入指令1-4,其一般示于222。指令1到在周期n+2装入完成的存储队列中。指令2在周期n+3装入完成的存储队列中。指令3在周期n+4装入完成的存储队列中。指令4在周期n+5装入完成的存储队列中。然后把指令1-4的数据分别在指令单元的周期n+2到n+5期间每次一条指令地送往数据超高速缓冲存储器,其一般示于224。
如果处理器已达到其极限,即其最大未完成指令数目,则在周期N+2内,只可以分发一条指令。这同样适用于周期N+3到N+6。因此,在226一般示出的指令5-8必须顺序分发,因为完成单元已满。因此,在分发时间上的这种障碍影响处理器的总性能。
与这种数据流有关的问题是,由于上述结束队列/完成队列相互反应,如果在完成单元105满时发生分发停顿,则指令的分发被严重延迟。克服这一问题的常规方法是在该执行单元上增加另外的端口。这一方法额外增加了费用和系统的复杂性。因此,所需要的是一种比已知方法简单的方法和系统,在分发停顿发生后通过完成多条存储指令,而改善处理器的总性能。
根据本发明说明的系统和方法明显改进一个处理器的性能,这是通过在发生停顿条件并且完成缓冲器满后完成多条存储指令而实现的。另外,完成缓冲器充满的速度不像在常规处理器中那样快。在本发明中,存储队列是单一队列,而不是一个结束队列和完成队列的结合。另外,一个存储指令的有关数据在指令完成前被访问,而不是在完成后访问。因此该存储指令可以在下述两条件中之一符合时结束实际地址(RA)和数据被加载在存储队列中;或RA被加载到存储队列,而数据正被送往存储队列。通过较早访问数据,多条存储指令可以基本同时完成。因此,多重指令可以在当完成缓冲器满时分发停顿后被分发。这样提供的系统能使多条存储指令同时完成,从而通过释放完成缓冲器中的条目而大大减少指令分发的延迟。
下面的讨论更具体地说明本发明。图4是一个存储指令数据流的一个第一实施例,其根据本发明每周期执行一个存储指令。有几个类似于图2所示元件的元件。给这些元件类似于图2所示的指示符。然而,有一些关键不同之处。首先在于,加载/存储单元306的存储队列312是一个单队列,而不是一个结束队列和完成队列的结合。在该实施例中,完成单元105完成存储指令而存储队列312在完成时标记合适的条目。在一个优选实施例中,存储队列312有16个条目深。也就是说,在该存储队列中可以存储16个存储指令。另外,在一个优选实施例中,每一条目中内的一位根据从指令单元来的完成信号而激活。另外,该数据流的操作不同于对图2的存储指令数据流所述的操作。如上所述,数据在存储指令完成前被访问。该存储指令在当下述两条件之一满足时结束要么(1)实际地址和数据加载到存储队列,或(2)实际地址被加载到存储队列,而数据正被送往该存储队列。
为更具体说明这些差别,现在参考图5,这是一个一般表示图4的数据流操作的流程图。
首先,通过步骤402,从分发单元103给在加载/存储单元306内的有效地址EA单元310提供多条存储指令。EA单元310通过步骤404给存储队列312提供控制信息。EA单元310通过步骤406给转换单元114提供地址信息。通过步骤408,该多条存储指令有关的实际地址(RA)从转换单元114被读取,而该多条存储指令有关的数据从FXU单元116被读取。在分发停顿发生后,在步骤409,完成单元满,通过步骤410,根据从存储队列312接收的一个结束有效信号,完成单元105′在其完成窗口内完成该多条存储指令。在步骤412,存储队列标记其条目为完成。之后,在步骤416,可以从分发单元105分发同样数目的新指令,并在步骤418提供给完成单元105′。这样,本发明大大减少了分发停顿。
为更具体解释本发明的操作并将其与图2的数据流的定时图对比,现在参考图6和图3。图6是图4的数据流的定时图。在图6的实施例中,如在502一般所示,以和图3步骤202类似的方式,指令1在周期1分发,指令2在周期2分发,指令3在周期3分发,指令4在周期4分发。之后,类似图3中204处所示,加载存储单元在周期2的前半周期执行指令1的有效地址(EA1),在周期3的前半周期执行指令2的有效地址(EA2),在周期4的前半周期执行指令3的有效地址(EA3),在周期5的前半周期执行指令4的有效地址(EA4),其在图6的504处一般示出。
之后,为转换指令1-4的超高速缓冲存储器转换访问以和图3的206处所示类似方式发生。为转换指令1的地址的超高速缓冲存储器访问发生在周期2的后半周期和周期3的前半周期之间,为转换指令2的地址的超高速缓冲存储器访问发生在周期3的后半周期和周期4的前半周期之间,为转换指令3的地址的超高速缓冲存储器访问发生在周期4的后半周期和周期5的前半周期之间,为转换指令4的地址的超高速缓冲存储器访问发生在周期5的后半周期和周期6的前半周期之间,其在图6的506处一般示出。
然而与图3不同的是,如果该数据可用的话,下一步则访问结构化寄存器堆(GPRs),其一般示于508。在周期3访问指令1的数据,然后在周期4访问指令2的数据,在周期5访问指令3的数据,而在周期6访问指令4的数据。
接着,从转换单元为实际地址(RA1-RA4)提供数据,并且从FXU116′给存储队列312提供数据有效信号,分别示于510和512。在该实施例中,在周期4提供指令1的数据有效信号,在周期5提供指令2的数据有效信号,在周期6提供指令3的数据有效信号,在周期7提供指令4的数据有效信号。在周期3的后半周期提供RA1,在周期4的后半周期提供RA2,在周期5的后半周期提供RA3,在周期6的后半周期提供RA4。
在该实施例中,存储队列312分别在周期4-7装入指令1-4的实际地址值,其一般示于514。每一指令1-4的存储队列结束与存储实际地址的装入到该存储队列(示于518)以及FXU116′数据有效信号的提供(示于510)在相同的各周期内发生。因此,如果下述两条件之一满足的话,则可能发生存储队列结束1)指令1-4的RA和数据加载到存储队列中,2)RA被加载,而指令1-4的数据正被传输到存储队列。接着,如果存储队列312可用,则指令1-4的数据分别在周期5-8被装入存储队列312,其一般示于516。
在521处一般示出的停顿条件后,4条指令可以同时完成,其示于522。这与图3的系统不同,图3的系统中4条指令必须顺序完成。然后完成单元105′在周期n+1为指令1-4启动一个完成信号。另外,由于所有指令都已经标记为完成,因此,分发单元103′可以在同一时间(周期n+2)分发指令5-8,其一般示于524。
如果处理器达到过其极限到在N+2周期未完成指令的最大数目,则该实施例允许在周期N+2内分发多达4条同一周期的指令,而现有技术的实施只允许分发一条指令。
图7表示本发明的一个优选实施例的存储指令的数据流。该数据流支持每周期多达两条指令。图中元件相似于图5中的元件。相同的元件用类似的符号表示。有一些区别。然而,如图所示,有两个EA单元310a和310b。FXU116′也有两个端口。由于在FXU116′上有两个端口,所以转换单元114′为每一端口提供一个转换信号,存储队列为每一端口提供结束有效信号。
现在参考图8,在该实施例中,由于每周期可以处理两条指令,因此在周期1分发指令1和2,在周期2分发指令3和4,其一般示于602。接着,EA1和EA2的加载/存储执行发生在周期2的前半周期,EA3和EA4的加载/存储执行发生在周期3的前半周期,其一般示于604。接着为取出指令1和2的转换地址而对超高速缓冲存储器的访问发生在周期2的后半周期和周期3的前半周期之间,为取出指令3和4的转换地址而对超高速缓冲存储器的访问发生在周期3的后半周期和周期4的前半周期之间,其一般示于606。
接着,访问结构化寄存器堆(GPRs),其一般示于608。指令1和2的数据在周期3被取出,指令3和4的数据在周期4被取出。
接着,从转换单元提供实际地址(RA1-RA4)的数据,并将指令1-4的数据有效信号供给存储队列312,其分别示于610和612。在该实施例中,在周期4期间提供指令1和2的数据有效信号,而在周期5期间提供指令3和4的数据有效信号。RA1和RA2在周期3的后半周期期间提供,RA3和RA4在周期4的后半周期期间提供。
在本实施例中,分别在周期4和5期间用指令1-4的实际地址值写入存储队列312′,其一般示于614。每一条指令1-4的存储队列结束与存储队列实际地址的写入在相同的周期发生,其一般示于618。接着,如果存储队列312′可用的话,则指令1-4的数据分别在周期5和6期间被写入存储队列312′,其一般示于616。
在621处示出的停顿条件后,4条指令可以同时完成,其示于622。然后指令单元通过周期n+1启动一个为指令1-4的完成信号。另外,由于所有指令都已经标记为完成,因此,分发单元可以在同一时间(周期N+2)分发指令5-8,其示于624。
如果处理器已经达到其极限至在N+2周期内可能的未完成指令的最大数目,则可以分发多达4条指令,而现有技术的实施只允许分发一条指令。当指令8分发时,这就节省3个周期。
在根据本发明的一个系统和方法中,由于多条存储指令是一起处理的,所以这些指令可以一起完成,因此极大地减少了完成这些存储指令需要的周期数目。由于消除了由常规系统需要的完成队列条目,从而允许指令单元分发新指令因此缓解了由指令单元可以分发的最大指令数目的瓶颈,现在参考图9,其中示出根据本发明的另一个实施例为减少分发瓶颈的一个电路100。在该实施例中,除GPRs114之外,重命名寄存器116也配有一个读端口,该端口允许重命名寄存器通过多路转换器118给一个数据队列122传递数据。电路100还包括一个标记队列104,用于存储由电路100用来对各种队列中与某特定存储指令关联的地址和数据进行匹配的指令标记。标记队列104中的每一字段最好n位宽,其中所选n要使得可以分配足够数目的标记以唯一标识在该处理器中所有待执行的存储指令。标记队列中的每一字段还与一个有效位关联,以指示在该标记字段中包含的数据是否是一个有效待执行的指令。当该指令由LSU执行,标记被传递给标记队列中的一个条目时,有效位被初始确立。在存储指令的对应数据从数据队列传递到超高速缓冲存储器(这在下面将详细叙述)之后,该有效位撤消。当该有效位被撤消后,该条目可由后继存储指令重新使用。图10A说明标记队列104中一个单个条目。
电路100还包括一个指针队列(“PTRQ”)106,它包含用于选择一个特定的GPR或者重命名寄存器堆条目的信息,这一条目包含由一个特定存储指令需要的数据。图10B表示在一个例示指针队列条目中包含的字段。更特别地说,存储指针队列是一个机制,它保证数据被装入存储的数据队列122的合适的条目。由于数据可以从FXU或者FPU执行单元不按序返回,因此,该存储指针队列是必需的。在一个实施例中,存储指针队列是一个长度n的下推式队列。底部两个条目由LSU逻辑102检验以便从FXU或者FPU执行单元之一请求数据。结构化寄存器堆指针用以寻址FXU(GPR)或者FPU(FPR)寄存器堆,而重命名寄存器堆指针用以寻址FXU(重命名)或者FPU(重命名)寄存器堆。并行访问结构化和重命名寄存器堆。传送到DATAQ122的数据由在相关PTRQ条目中的R/A位确定。如果该R/A位置位,则使用该结构化复制数据,反之,如果R/A位未置位,则由多路转换器118选择重命名的数据。R/A位的初始值在分发时间从重命名单元指定,并与该指令一起传送到加载/存储执行单元。这是一个必须由LSU逻辑维护的动态位,因为为该存储指令的源数据的位置可能在存储指针能够访问该数据之前从重命名寄存器堆移动到结构化寄存器堆。换句话说,最初确定该存储指令在重命名寄存器堆(R/A=0),但是在存储指针队列可能访问重命名寄存器堆中的数据之前指令单元完成了修改作为该存储指令源的GPR的指令。这引起重命名数据被装入结构化寄存器堆中。LSU逻辑于是将相关PTRQ条目的R/A位从0修改为1。
当从重命名或者结构化寄存器堆访问数据时,存储指针标记字段用于将存储数据队列中的数据与存储标记队列中具有匹配标记值的相应条目配对。V位简单指示该存储指针队列条目是否有效。
每一周期,扫描该指针队列底部两个条目,并且把包含在GPR和重命名文件条目中的数据传送到多路转换器118。控制逻辑检查与该GPR和重命名文件条目关联的有效位。如果在这些条目中的数据无效,则其不传送到数据队列。该数据实际上被“丢弃”,下一周期重新扫描指针队列条目。最后,把存储指令需要的数据写到重命名寄存器,并断言对应于该特定重命名寄存器的重命名有效位。当数据被传送到数据队列时,控制逻辑取消在指针队列条目中的该有效位。这将允许后继存储指令重新使用该指针队列条目,因为该指针队列(和结束队列)不再由标记队列关联。
电路100还包括存储结束队列(“FINQ”)110。存储结束队列110负责结束存储指令。这也是一个下推式队列。结束队列110保存在地址生成周期期间生成的唯一存储标记,但是只保存每个IID的标记为“最终的”的请求的标记(IID指指令标识符,其在分发时指定给每一条指令并用于在处理器中跟踪该指令。)更具体说,在本发明的一个特定实施例中,任何配对失当的指令(亦即由存储指令需要的数据在超高速缓冲存储器边界配对失当)每IID具有两次超高速缓冲存储器访问请求,但只把第二请求标记放在该结束队列中。对配对的指令,每一请求标记为“最终的”,并将其标记放入结束队列。当然,配对失当的指令的处理高度依赖于本发明所使用的特定结构。
在本发明中,LSU逻辑扫描最早的两个条目,看它们是否可以结束。根据定时的考虑,本发明很容易可以修改为在每一周期扫描更多或更少条目。应该理解,存储指令可能不按序结束,亦即,如果最早条目由于某种原因不能结束,但是次早条目可以。把存储结束队列110中这两个较早指令的标记与在存储标记队列104中的标记比较,以确定应该检查存储EA/控制队列108(下面详细叙述)中的哪一个条目。一旦一条存储指令的地址和数据被分别装入实际地址队列112和存储数据队列122,或者其地址被装入实际地址队列而数据正被装入数据队列,则该存储指令可以结束。一旦一条存储指令可以由结束队列结束,则其从存储EA/控制队列108获得的IID和结束信号被发送到指令完成单元(未示出)。
V位再次简单指示该存储结束队列条目有效。当该结束队列初始装入一条被执行的指令时,该有效位置位。当在实际地址队列中的条目和相应于该存储指令的数据队列有效时,结束报告被发送到完成单元,而结束队列有效位被复位。换句话说,结束队列的操作首先要确保实际地址以及存储指令需要的数据都可用,然后才能完成存储指令。结束报告包括从指令的对应EA/CNTLQ条目获得的IID以及任何例外信息。
电路100另外包括有效地址控制队列“EA/CNTLQ”108。图10D表示一个例示EA/CNTLQ条目。存储EA/CNTLQ108是一个n长度的下推式队列。它保存的有效地址将连同实际地址及存储数据一起被传送给数据超高速缓冲存储器以更新存储器。该队列还包括IID,其将由存储队列使用以结束该存储指令到指令完成单元。E位是一个例外位,它防止在执行期间有例外发生时该条目被传送到数据超高速缓冲存储器。E位可由处理器上的各种资源操作,由什么资源操作只是一个设计选择问题。例如,在本发明的一个实施例中,E位在某种事件发生时(例如一个存储中断时)由DCMMU的地址转换逻辑置位。
C位是完成位,它意味着该存储指令已由指令完成单元在结构上完成并应该执行到存储器的存储。只有完成的存储才可以传送到数据超高速缓冲存储器。C位只有在标记队列、数据队列和实际地址队列中的与有关存储指令对应的条目有效而完成单元指示该指令已完成时才将某特定的E A/CNTLQ条目的C位置位。在数据从数据队列传送到超高速缓冲存储器后,对应EA/CNTLQ条目中的有效位被复位。同时,也将它们各自的条目在标记队列、数据队列和实际地址队列中的有效位复位。
在这一点,熟悉本技术领域的人十分清楚本发明的一个重要的优点。由于一个存储指令需要的地址和数据已经保存在地址队列和数据队列中,因此到了要完成该指令时,亦即该指令的IID成为完成表中下一个要完成条目时,完成该指令时不必从结构化或者重命名寄存器堆读,而只是将数据从数据队列中传送到超高速缓冲存储器中。在本发明中,假定数据队列只配备一个读端口,因此,每周期仅有一条存储指令的数据能转移到超高速缓冲存储器。然而,由于不需读寄存器堆,因此本发明允许几个IIDs在一个周期内从完成单元传送到EA/CNTLQ,为每一相关条目设定C位。一旦IIDs被传送,则可以由后继指令重新使用完成表中的条目。这就在一个周期中释放了完成表中的多重条目,防止不然的话由于完成表满而会发生的分发停顿。
其它各种用途的控制位的采用,取决于本发明的结构实现,例如,控制存储格式器为存储器校准格式化数据。V位指示存储EA/CNTLQ队列条目有效,它在条目装入时确立,并如上所述方式撤消。
电路100所用的另一个队列是实际地址队列(“RAQ”)112。该队列存储完成缓冲器(未示出)中待处理的存储指令进行超高速缓冲存储器访问所用的实际地址。该队列中的地址连同相应的存储数据传送到超高速缓冲存储器,以便实现对存储器的实际写操作。
最后,电路100具有一个数据队列122,它存储完成缓冲器(未示出)中待处理的各种存储指令需要的各种数据。数据队列122根据相关存储指令被执行时数据的位置,从GPR或者重命名寄存器接收数据。
本发明的一个版本的操作如下。一条存储指令在分发时从分发单元(未示出)传送到加载/存储单元逻辑102。分发单元给该指令指定一个标识标记(“IID”),其用于在处理器中跟踪该指令。在下一时钟周期,LSU102为该指令计算有效地址,并也给该指令指定一个唯一的识别标记。注意,IID标记与由LSU产生并存储在TAGQ104中的标记不同。在该实施例中,标记识别仅在LSU内部使用。这简化了逻辑设计,因为由分发单元指定给一个存储指令的IID可能在原始存储被送往数据超高速缓冲存储器之前重新发布。尽管肯定可以提供电路以允许使用IID在LSU队列内关联数据,但本实施例却使用一种标记,这只是一个设计的问题。然后LSU逻辑102把该标记传送到标记队列(“TAGQ”)104,其用于维护在电路100内的各种队列之间的关联,其工作方式下面详细叙述。
在同一周期,LSU逻辑还传送指令及其标记到指针队列(“PTRQ”)106。PTRQ106在本实施例中是一个简单的下推式队列。PTRQ106中的每一条目包括一个标记字段(“T”),一个GP R指针,一个重命名指针,一个重命名/结构化位(“R/A”)和一个有效位(“V”),其示于图10B。T字段包含该指令的标识标记,其由LSU逻辑102在上一个周期指定。GPR字段包含与该指令在分发时关联的GPR指针。相似地,重命名指针包含与该指令在分发时关联的重命名指针,虽然这一信息来自重命名控制逻辑,因为它不是指令解码的一部分。R/A位标识包含与该指令关联的数据的位置,亦即表示数据是在一个重命名寄存器内还是在GPRs内成结构型数据。在一个实施例中,如果R/A位置位,那么该指令的数据存储在一个GPR条目中。如果存储指令需要的数据在GPRs中的话,则不需更新R/A位,因为在需要该数据的存储指令完成前肯定结构化寄存器不改变。
然而,如果R/A位未置位,那么数据位于或将位于一个重命名寄存器条目。在这种情况下,该R/A位必须在PTRQ106中被更新,其在下面叙述。LSU逻辑102从重命名寄存器控制逻辑(未示出)获得R/A位并将其与其它信息同时传送到PTRQ106。如果存储指令的数据要从重命名寄存器获得,那么重命名条目的有效位指示该重命名数据是否有效,亦即要产生该数据的指令已经将其写入重命名寄存器,还是产生指令仍在等待。在每一周期,R/A位和重命名条目有效位一起使用,以允许存储指令的数据在可用时被传送到DATAQ。
具体说,LSU逻辑102在每一周期扫描PTRQ106,LSU逻辑102就是为此目的提供的。当扫描一个PTRQ条目时,PTRQ条目中的重命名指针与单元的回写矢量(也是一个重命名指针)比较,以决定对应的E/A位是否应该置位。更具体说,完成单元中的每一条目包含一个“回写矢量”字段,该字段与存放正在完成的指令所需数据的重命名寄存器对应。处理器逻辑使用该回写矢量从重命名寄存器写数据到作为产生该数据的指令的目的地的结构化寄存器。当发现在指针队列条目中的一个重命名指针与在完成表中的该回写矢量可比较时,这指示产生由存储指令所需数据的指令已完成,现在已经装在一个GPR条目中。于是,该特定存储指令需要的数据将不再在重命名寄存器中,而将被装在GPRs中。相应地,LSU逻辑切换指针队列条目中的R/A位。
还扫描PTRQ106以决定是否存在其数据已准备好传送到DATAQ122的条目。由于定时的原因,可能希望只扫描部分PTRQ106,诸如最后两个条目,不过这只是一个设计上的选择。扫描PTRQ106允许指令使其数据不按序写入DATAQ122。例如,如果扫描PTRQ106中的最后一个,因此也是最早的一个条目,并发现其数据存储在重命名寄存器中,但是重命名有效位指示,该数据尚未从先前数据产生指令接收到的话,那么PTRQ106中最早指令的数据不能就传送到DATAQ122。然后逻辑扫描下一最早条目。如果此条目的R/A位置位,则该条目的数据被包含在GPRs中。在这种情况下,LSU逻辑使用GPR指针和该R/A位选择合适的GPR条目,并把该数据存储在数据队列中。从GPR接收该数据的特定DATAQ是相应于TAGQ中同一条目的一个,和前面一样。换句话说,处理器比较指针队列中的T字段和相关存储指令的TAGQ中的T字段。如果相关存储指令的标记存储在TAGQ中第四条目中的话,则从GPR接收的数据将写入DATAQ中的第四条目。以这种方式,TAGQ维护在DATAQ、RAQ和EA/CNTLQ之间的关联。为每一特定的存储指令,在TAGQs、EA/CNTLQs、RAQs和DATAQs的每一个的条目中将具有与指令有关的信息。
被选择条目中的数据通过多路转换器(“MUX”)118传送到锁存器120。应该注意,使用MUX118选择是否一特定数据从一个GPR或者重命名寄存器条目被传送到锁存器120。具体说,给MUX118的选择线提供PTRQ106条目的R/A位作为输入。如果该位置位,则选择GPR数据。如果该位复位,则选择重命名寄存器数据。
在下一时钟周期,该数据从锁存器120传送到DATAQ122。为维护合适的数据关联性,使用标记以选择DATAQ122中适合的条目接收该数据。DATAQ122中的该条目另外相应于存储在RAQ112中适当的实际地址。这一点将参考下述例子详细说明。假定某指令被LSU102分配一个标记标识符06。进一步假定,当标记从LSU102传送时第四条目是TAGQ中下一可用条目。这样,标记06将被LSU102写入TAGQ104的第四条目中。在地址转换后,DCMMU(未示出)将存储指令的目的地的超高速缓冲存储器位置的实际地址连同该标记传送到RAQ112。LSU控制逻辑将返回的实际地址的标记与存储在TAGQ104中的标记比较。在这种情况下比较结果表示,标记06存储在TAGQ104的第四条目中,如前所述。因此,LSU控制逻辑将使指定为标记06的存储指令的返回实际地址写入RAQ112的第四条目。相似地,当具有标记06的存储指令的数据被写入DATAQ122时,LSU控制逻辑首先扫描TAGQ104以决定标记06是否存储在TAGQ的第四条目,然后从锁存器120写数据到DATAQ122的第四条目中。当然,熟悉本技术领域的人了解,其它维护数据关联的技术作为一种设计选择可以容易地适应。
在这一点,容易理解,在上述实施例中的电路成流水线形式,以允许多条存储指令分别“排队”实际地址和数据到RAQ112和DATAQ122的条目中。因此,在完成时,存储指令不需访问GPR。而是在完成时把合适的存储队列条目标记为完成,并可以按顺序传送到超高速缓冲存储器。需要的数据从DATAQ122条目连同存储在RAQ112中的相应超高速缓冲存储器地址传送到超高速缓冲存储器。
在图11A和11B中表示说明本发明的一个实施例的流程图。在步骤1102,存储指令分发到LSU逻辑。被解码的指令包括具有存储指令需要的数据的结构化寄存器。如果相应GPR条目尚未为该数据更新,那么如前所述从重命名逻辑获得相应重命名寄存器指针。然后流程前进到步骤1104,这里执行指令,并从解码的指令数据产生有效地址。同时,LSU控制逻辑还产生标记。在步骤1106,把有效地址和标记发送到数据超高速缓冲存储器管理单元(“DCMMU”)用于由DCMMU计算实际地址。在实际地址由DCMMU计算后,在步骤1108其连同标记一起返回到LSU控制逻辑,LSU控制逻辑在步骤1110比较从DCMMU来的标记和TAGQ标记,并用从DCMMU返回的实际地址装入相应实际地址队列条目。换句话说,如果该特定存储指令的TAGQ存储在第四TAGQ条目中的话,则从DCMMU返回的实际地址将在步骤1110存储在实际地址队列的第四条目。
另外在步骤1104完成后,处理器继续到步骤1112,这里用在步骤1104产生的标记和结构化/重命名文件指针装载TAGQ和指针队列。通常,EA/CNTLQ和结束队列分别在步骤1116和1118装载。
在步骤1114,LSU控制逻辑检查存储指针队列条目中相关存储指令的R/A位以决定该指令需要的数据是否存储在一个GPR条目中。如果不是,则系统前进到步骤1120,这里检验相应于所需数据的重命名条目是否有效。如果所述存储指令需要的数据不在GPR中且无效,则在步骤1122处理器返回步骤1120。如果在步骤1120,在重命名条目中的数据有效,则流程前进到步骤1124并使用重命名队列中的重命名指针读重命名寄存器堆。最后,如果所述存储指令需要的数据在步骤1114在GPR中,则流程前进到步骤1126,使用指针队列中的GPR指针读相应GPR文件。
在读取重命名或GPR寄存器堆之一后,流程前进到步骤1128,根据PTRQ中相应存储指令的R/A位选择相应重命名/GPR文件。PTRQ中的标记与TAGQ比较以决定从多路转换器接收数据的相应DATAQ条目。再次,如果相关存储指令的标记在TAGQ的第四条目中的话,则从重命名/或GPR文件中读取的数据将写入DATAQ的第四条目中。同时,从指针队列中清除该指针队列条目。
在步骤1130数据被写入DATAQ条目中后,处理器前进到步骤1132,这里它决定该存储指令是否准备好结束。为这一操作,LSU逻辑扫描结束队列标记并比较这些标记与TAGQ中的标记。在本发明的一个版本中,在一周期中只扫描底部两个FINQ条目。然而,这是一个设计问题,可以在单一周期中扫描更多或更少FINQ条目。把从一个特定结束队列中的标记与TAGQ标记比较以决定从结束队列提取的标记的相应TAGQ条目。再次,如果从结束队列来的该特定标记在第四队列条目中,则处理器检查在EA/CNTLQ、RAQ和DATAQ条目中的相应第四条目。在步骤1134,对于这些相应条目中的每一个,处理器决定其有效位是否置位。如果没有,则处理器返回步骤1132并重复步骤1132到1134,直到这些为在上述3个队列中的每一个中的相应条目的有效位置位。
之后,流程前进到步骤1136,这里通过比较EA/CNTLQ来的IID与在完成单元队列中的相应IID而完成该存储指令。同时,清除相应结束队列条目。在步骤1138,处理器等待完成单元的完成。在完成时相应条目使某些控制位置位,指示处理器已准备好从DATAQ传输数据到超高速缓冲存储器。应该注意,在本发明的这一实施例中,从DATAQ向超高速缓冲存储器的实际数据传输可能在相应存储指令被标记为完成后的几个周期后执行,这是由于在处理器上可能发生的几种因素。在步骤1140,通过置位其C位,可以标记适当的EA/CNTLQ条目为完成。
在步骤1142,处理器给DCMMU发送实际地址、有效地址、指令ID和其它为从DATAQ向超高速缓冲存储器传输需要的控制信号。最后,在步骤1144,该完成的存储指令对应的TAGQ、EA/CNTLQ、RAQ、DATAQ条目从其各自的队列中清除,为后继分发的存储指令释放空间。
图12表示说明上述实施例中叙述的电路操作的一个定时图。对图12中的定时图还参考示于图1和2中的处理器的方框图讨论。在周期1,存储指令从指令超高速缓冲存储器14分发,并由分发单元46解码。然后被解码的指令传送到加载/存储单元(“LSU”)28。在第二周期的前半周期,LSU28计算该指令的有效地址。这在这里有时称为地址生成或“代理(agen)”或执行。熟悉本技术领域的人熟悉不同方式的存储器寻址以及有效地址和实际地址之间的差别。应该了解,本发明很容易适应大量存储器寻址模式,任何这些寻址模式都可以使用,其只是设计选择的问题。本实施例将针对由IBM公司生产的处理器"PowerPC"系列使用的示例存储器寻址模式说明。这种存储器寻址方式在商业出版物中详细说明,例如由IBM以出版号MPRPRCFPE-01出版的“PowerPC微处理器系列编程环境”,其全部叙述结合在此作为参考。
还是在周期2,LSU28产生该指令的标记。在该周期结束时有效地址和指令标记被传送到存储器管理单元用于计算实际地址。
在周期3,LSU28更新指针队列106和标记队列104。前文已经讨论过向这些队列传送的信息。另外,实际地址从数据超高速缓冲存储器16中的存储器管理单元返回。在周期3还访问GPR(假定存储指令的数据在GPR中)。为定时的原因,可能希望在把该数据传送到DATAQ之前锁定该数据一个周期。于是,在本实施例中,LSU控制逻辑在周期4产生FXU存储有效流水线锁定信号,把该数据锁定在锁存器120中。
在周期5,产生结束指令信号。如前所述,使用结束队列来结束存储指令。它包含唯一的存储标记。扫描结束队列中的每一条目,比较结束队列条目中的标记,寻找在TAGQ中的匹配。如果相应TAGQ有一个DATAQ并且RAQ有效位置位,则EA/CNTLQ中对应的IID被结束。在一个实施例中,结束队列类似指针队列处理,扫描底部两个条目。然而如前所述,存储可以不按序结束。当存储指令是完成队列中的下一要完成的指令时,结束信号发送到完成单元,指示该存储指令可以完成。
仍然在周期5,存储指令数据从锁存器120传送到DATAQ122。用于关联该数据到DATAQ122中相应条目的一个合适的方法已在前面叙述。此时,该存储指令准备好在周期5完成,因为数据正在从多路转换器在周期4装载,亦即在该指令结束的周期内装载。
完成单元可以在单一周期完成多重指令。如前所述,完成只简单地将存储队列中的4个条目标记为完成,它表示这些条目可以被发送到DATAQ。每一条目的完成位在EA/CNTLQ中保持。LSU在超高速缓冲存储器可用时(亦即在超高速缓冲存储器未由更高优先级的请求占用时)发送最早完成的存储队列条目到超高速缓冲存储器。
这样,熟悉本技术领域的人清楚,通过访问重命名寄存器堆数据可以更有效地完成在紧密连接回路中的存储指令,从而减少由于完成缓冲器满而引起的分发停顿的数目。虽然本发明根据所示实施例加以叙述,但是熟悉本技术领域的人了解,可以对本实施例进行各种改变,而这些改变仍在本发明的精神和范围之内。因此,虽然本发明叙述的是一次完成4条存储指令,但是熟悉本技术领域的人了解,可以完成任何数目的存储指令,它们属于本发明的精神和范围之内。相应地,熟悉本技术领域的人可以进行许多修改而不离开本发明的精神和范围。本发明的范围由下述权利要求定义。
权利要求
1.一种处理超标量处理器中存储指令的方法,该方法包括从分发单元分发存储指令;执行该存储指令以决定一个实际地址存储器位置以存储该存储指令所指向的数据以及寄存器堆中包含该数据的条目;在存储指令完成前把数据从寄存器堆条目向一个数据队列传送;在完成存储指令时把数据从数据队列向超高速缓冲存储器传送。
2.如权利要求1所述方法,其特征在于,处理器在一个周期期间把多个存储数据从在所述存储队列的多个条目传送到超高速缓冲存储器的相应位置。
3.如权利要求1所述方法,其特征在于,从寄存器堆传送数据包括将作为结构化寄存器堆和重命名文件中与由该存储指令指向的数据对应的数据多路转换到数据队列。
4.处理超标量处理器中存储指令的装置,该超标量处理器按序完成指令,所述处理器具有一个指令分发单元、一个结构化寄存器堆、一个重命名寄存器堆、一个加载存储单元、一个完成单元和超高速缓冲存储器,所述装置的特征在于,具有相应于存储指令的条目的指针队列,该条目含有指向结构化和重命名寄存器堆中包含存储指令需要的数据的条目的指针。连接到结构化和重命名寄存器堆读端口的一个多路转换器,以便数据可以从其中一个寄存器堆传送到数据队列中的一个条目中,该数据队列连接到超高速缓冲存储器。
5.如权利要求4所述装置,其特征在于,指针队列中的条目另外包括一位,它表示存储指令需要的数据是存储在结构化文件还是重命名文件中的一个条目中。
6.如权利要求5所述装置,其特征在于,多路转换器的选择线响应指针队列条目中的所述位。
7.如权利要求4所述装置,其特征在于,存储指令需要的数据在该指令结束时,但在该指令完成前从多路转换器传送到数据队列中的一个条目。
8.如权利要求7所述装置,其特征在于,在存储指令完成时,该指令需要的数据从数据队列的条目传送到超高速缓冲存储器。
9.如权利要求8所述装置,其特征在于,在一个单一时钟周期期间,数据从多条存储指令传送到数据队列。
10.如权利要求4所述装置,其特征在于,另外包括一个标记队列,它包含一个唯一标识所述存储指令的标记。
全文摘要
本发明的一个方面涉及处理按序完成指令的超标量处理器中存储指令的装置,该处理器具有一个指令分发单元、一个结构化寄存器堆、一个重命名寄存器堆、一个加载存储单元、一个完成单元和超高速缓冲存储器。在本发明的一个实施例中,该装置包括一个指针队列,其具有相应于所述存储指令的条目,所述条目包含指向结构化和重命名寄存器堆中的条目的指针,这些寄存器堆包括存储指令所需的数据。该装置还包括一个连接结构化和重命名寄存器堆上读端口的多路转换器,以便把数据从其中一个寄存器堆传送到数据队列中的一个条目,该数据队列连接到超高速缓冲存储器。
文档编号G06F9/00GK1224871SQ98126578
公开日1999年8月4日 申请日期1998年12月29日 优先权日1998年1月30日
发明者B·D·威廉森, J·E·菲利普斯, Dq·恩古延 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1