多入口、全相联传递的高速缓冲贮存器的制作方法

文档序号:6412555阅读:131来源:国知局
专利名称:多入口、全相联传递的高速缓冲贮存器的制作方法
技术领域
本发明涉及一种处理命令和与之相关联数据的装置和方法,更具体地说,涉及一种在命令源和命令转接器之间传递命令和/或数据的方法和装置。
通常,在一个数据处理系统中是利用缓冲器将命令和与之相关联的数据从高速缓冲贮存器和处理器传送到另外的高速缓冲贮存器和处理器中去的。例如,在一个可能的结构中,两个高速缓冲贮存器的线缓冲器连接到一级高速缓冲贮存器L1和二级高速缓冲贮存器L2。这两个线缓冲器也连接到主存贮器、主处理器,还可能经过系统总线连接到其他的处理器。当命令从L1高速缓冲贮存器、L2高速缓冲贮存器或系统总线中的某一个发出的时候,发出命令的L1、L2或系统总线被称为是命令源命令被发送到的L1、L2或系统总线中的某一个被称为是命令转接器。高速缓冲贮存器的线缓冲器用于使不同数据传送率的各部分之间的数据平滑传递。
一般的高速缓冲贮存器的线缓冲器精确地处理或者是填满命令(fill command),或者是回填命令(cast back command),它包括一个存贮空间,能够贮存有限的(例如4条)、与这些命令有关的高速缓冲贮存器的线。因此,在一个高速缓冲贮存器的线缓冲器中高速缓冲贮存器的每条线被严格地设计成或者是填满线,或者是回填线。
例如,当要求数据从主处理器送到L1高速缓冲贮存器的请求没有送达时,L1就经过满线缓冲器向L2发出一个取命令。取命令请求L2向L1提供该条丢失的线。换句话说,L1高速缓冲贮存器正在请求填满高速缓冲贮存器的线。
但是,高速缓冲贮存器L1可能没有什么空间用来贮存所请求的线。在这种情况下,L1高速缓冲贮存器舍去一条高速缓冲贮存器的线来制造一个空间用于所期盼的新的高速缓冲贮存器的线。这个处理被称为是回填。如果L1高速缓冲贮存器中那时正在回填的高速缓冲贮存器的线被修改了,那么,高速缓冲贮存器的线经过一个回填高速缓冲贮存器的线缓冲器和系统总线被发送到主存贮器以便适应主存贮器中这个高速缓冲贮存器的复制,否则的话,高速缓冲贮存器的线作废。典型地,正如上面所讨论的那样,一般的数据处理系统包括一个满线缓冲器和一个回填线缓冲器。因此,在该满线缓冲器上高速缓冲贮存器的4条线被设计成满线,而在回填高速缓冲贮存器的线缓冲器中高速缓冲贮存器的4条线被设计成回填线。
但是,这种严密的高速缓冲贮存器的线结构是有问题的。满高速缓冲贮存器的线缓冲器最多只能同时处理4个取命令。回填高速缓冲贮存器的线缓冲器不能用于处理第5个取命令,这样,第5个取命令将不得不等候满高速缓冲贮存器的线中的某一条线的可用性。相对于第5个回填命令,实际上也是一样的。
对每个命令通路来说,一般的高速缓冲贮存器的线缓冲器也包括大多数的单向排队。例如,从L1高速缓冲贮存器指向L2高速缓冲贮存器的取命令被配置成L1至L2排队,假定满高速缓冲贮存器的线是可采用的话。然后,取命令将及时地依据排队的形式被处理,例如,先进先出(FIFO),后进先出(LIFO)等等。同样,从每个命令源到每个命令转接器存在单向排队。因此,除了L1至L2单向排队外,高速缓冲贮存器的线缓冲器包括L2至L1的单向排队。但是,某些高速缓冲贮存器的线缓冲器实现所分配的排队。例如,对于从系统总线至L1高速缓冲贮存器的命令通路和从系统总线至L2高速缓冲贮存器的命令通路,某些通常的高速缓冲贮存器的线缓冲器利用一列所分配的排队。
一般的高速缓冲贮存器的线缓冲器的简单的命令排队系统是有问题的。从命令源至命令转接器利用简单的单向排队不许可利用优先权来处理命令,或者容易地许可处理命令的优先权动态地改变。而且,命令的处理未被主要地跟踪,且该高速缓冲贮存器的线缓冲器没提供在整个高速缓冲贮存器的线上建立所属的所有权。这些附加的不足,增加了多处理器系统中利用数据处理系统(有一般的高速缓冲贮存器的线缓冲器)的难度和复杂度。在多处理器系统中,由结合一个存贮器映象的相关状态所建立的高速缓冲贮存器的线所有权对于多处理器系统的所有操作是重要的。一个举例的方法是MESI,其中MESI表示了修正的、唯一的、分配的和无效的。
本发明的目的是提供一种处理命令和与之相关联数据的装置和方法,该方法克服了上面所讨论的一般高速缓冲贮存器的线缓冲器的缺点。
本发明的另一个目的是提供一种装置和处理命令及与之相关联数据的方法,该方法自由地分配存贮器的空间用来存贮高速缓冲贮存器的线。
本发明还有一个目的是提供一种装置和处理命令及与之相关联数据的方法,该方法中处理命令的优先权可动态地改变。
本发明附加的目的是提供一种装置和处理命令及与之相关联数据的方法,该方法跟踪命令的处理。
本发明还有另外的一个目的是提供一种装置和处理命令及与之相关联数据的方法,该方法在命令处理的过程中测定错误。
本发明又一个目的是提供一种装置和处理命令及与之相关联数据的方法,该方法获得高速缓冲贮存器所属的所有权。
这些和另些目的的达到是藉提供一种装置,该装置处理命令和与之相关联的数据,它包括一个数据缓冲器和一个命令目录表。命令目录表至少从一个命令源接收和存贮命令,并且把数据缓冲器未用的部份分配给命令。数据缓冲器在其未用的部份存贮与命令相关联的数据。
本发明的目的也藉提供一种处理命令和与之相关联数据的装置来达到,该装置包括一个命令目录表和数据缓冲器。命令目录表包括一个命令缓冲器,它接收和存贮至少从一个命令源来的命令。命令缓冲器也存贮与命令指示相对应的状态信息,至少是发出命令所抵达的命令转接器的状态信息。命令目录表进一步包括对应于每个命令转接器的路径选择逻辑。每个路径选择逻辑识别存贮在命令缓冲器中的哪个命令根据状态信息发送给对应的命令转接器,并将所识别的命令发送给该命令转接器。
本发明的目的进一步藉提供每个路径选择逻辑来达到,每个路径选择逻辑测定被识别命令的优先权并按优先权的次序发出该被识别的命令。
本发明的目的还进一步藉提供跟踪命令处理的装置来达到,该装置包括一个状态缓冲器。状态缓冲器存贮命令源输出的每个命令的状态信息。状态信息指示命令该发送到哪个命令转接器,它不管命令转接器是否占有命令,也不管命令转接器是否完成了命令的处理。状态信息由命令目录表根据从命令转接器接收到的命令和信号来产生,它包括状态缓冲器。
此外,命令目录表包括一个命令缓冲器,有许多目录表入口。命令缓冲器存贮命令以及在目录表入口中与命令相关联的状态信息。命令缓冲器也包括监控每个目录表入口中状态信息的自由缓冲器逻辑。依据这个监控,自由缓冲器逻辑测定目录表入口是否已被禁止或者是否存在命令跟踪错误。
这些和另些目的也藉提供处理命令和与之相关联数据的方法来达到。该方法包括至少从一个命令源接收命令的步骤,以及在命令目录表中存贮命令。该方法进一步包括容许数据缓冲器中未用的部分分配给命令的步骤,以及在数据缓冲器该容许的部分中存贮与命令有关联的数据。
此外,本发明的目的藉提供一种处理命令和与之相关联数据的方法来达到,该方法包括至少从一个命令源接收命令、根据命令产生状态信息以及在命令缓冲器中存贮命令和与之相关联状态信息的步骤。状态信息指示发送命令所抵达的至少一个命令转接器。该方法还包括在命令缓冲器中存贮与命令相关联数据的步骤。该方法进一步包括对每一个命令转接器的识别步骤存贮在命令缓冲器中的哪些命令根据状态信息发送到命令转接器中去并将所识别的命令发送给命令转接器。
本发明的目的藉测定所识别命令的优先权并把所识别的命令按优先权的次序发送来达到。
本发明的目的还进一步藉提供一种跟踪命令的处理的方法来达到,该方法包括从一个命令源接收一个命令、产生基于命令的初始状态信息以及在一个命令缓冲器中存贮由命令源来的每个命令的状态信息的步骤。状态信息指示命令发送到哪个命令转接器,不管命令转接器是否占有命令,也不管命令转接器是否已完成了命令的处理。
此外,命令目录表包括一个有许多目录表入口的命令缓冲器。命令缓冲器在目录表入口中存贮命令和相关联的状态信息。命令缓冲器还包括在每个目录表入口监控状态信息的自由缓冲器逻辑。
该方法进一步包括监控每个目录表的状态信息的步骤以及根据监控来测定目录表入口是否禁止或者是否存在命令跟踪错误。
本发明的其他的目的、特点、特性;相关结构元件的方法、操作和功能;部件的组合;以及制造的经济将从下面优选的具体装置的详尽描述中结合图例而变得明明白白,所有这些,构成了性能部分,其中,类似的参考数字与各例图中的部件相对应。
从下面给出的详尽描述并结合例图,本发明将变得较比完全地被理解,例图仅是为了说明而给出的,所以这不是本发明的界限。其中

图1表示按照本发明的传递高速缓冲贮存器的高级图;图2表示图1中所说明的传递高速缓冲贮存器目录表的高级图;图3A和3B分另别表示图2所说明的L1和L2命令接收器及从属命令逻辑的详图;图4A表示图2中所说明的L1和系统总线命令排队和路径选择逻辑的详图;图4B表示图2中所说明的L2命令排队和路径选择逻辑的详图;图5表示图2中所说明的自由缓冲器逻辑的详图;图6A表示命令缓冲器中的一个目录表入口;图6B表示目录表入口中的“正在使用”和跟踪信息;图6C表示发送位,命令占用位以及已完成位;图7表示图1的数据缓冲器;图8表示在处理由L1高速缓冲贮存器发出的取命令期间发送位、命令占用位以及已完成位的状态。
图1表示了按照本发明的传递高速缓冲贮存器的高级图。正如图1所示,传递高速缓冲贮存器包括一个传递高速缓冲贮存器目录表10和数据缓冲器20。数据缓冲器20经L1高速缓冲贮存器接口连到L1高速缓冲贮存器,经L2高速缓冲贮存器接口连到L2高速缓冲贮存器,经系统总线接口连到系统总线。一个接口,例如L1高速缓冲贮存器接口是控制逻辑和/或关于L1高速缓冲贮存器的控制器。
传递高速缓冲贮存器目录表10同样经L1高速缓冲贮存器接口连到L1高速缓冲贮存器,经L2高速缓冲贮存器接口连到L2高速缓冲贮存器,经系统总线接口连到系统总线。传递高速缓冲贮存器目录表10也经过监探总线(snoop bus)接口连到监探总线。
为了叙述的方便起见,在下文中,我们把L1高速缓冲贮存器和L1高速缓冲贮存器接口、L2高速缓冲贮存器和L2高速缓冲贮存器接口、系统总线和系统总线接口、监探总线和监探总线接口组合起来分别称为是L1高速缓冲贮存器、L2高速缓冲贮存器、系统总线以及监探总线。然而,大家会明白,由传递高速缓冲贮存器来的信号输入和输出都是经过接口来做到的。大家还会明白,图1中所示的各条通路以及下面要讨论的图2-7,为便于阐述明了,通常都表达成简化的形式。实际上,进入和输出各个部分需要许多独立的数据通路。此外,为阐述明了起见,许多数据线和许多控制线完全从图上消失。
数据缓冲器图7比较详细地表示了数据缓冲器20。正如图7所示,数据缓冲器20包括一个四口数据阵列22、两个读口,两个写口。数据缓冲器还包括多路转换器26,28和30。读选逻辑32以及写选逻辑34。数据阵列22接收写使能信号、写地址、写数据和从L1高速缓冲贮存器来的读地址等输入。多路转换器26和读选逻辑32接收从L2高速缓冲贮存器和系统总线来的读地址输出。多路转换器26根据读选逻辑32输出的读选信号将读地址中的一个地址送到数据阵列22。
写选逻辑34从L2高速缓冲贮存器和系统总线接收写使能信号并输出一个写选信号给多路转换器28和30。多路转换器28从L2高速缓冲贮存器和系统总线接收写地址,并根据写选信号将写地址中的一个地址输出到数据阵列22。多路转换器30从L2高速缓冲贮存器和系统总线两者接收写数据,并从L2高速缓冲贮存器和系统总线中的一个输出写数据给数据阵列22。数据阵列22也输出读数据给L2高速缓冲贮存器和系统总线两者,并且单独地输出读数据给L1高速缓冲贮存器。
数据缓冲器的操作现在来描述数据缓冲器20的操作。正如图7所示,数据阵列22是一个四口数据阵列,但必须从三个源来处理数据并输出数据给三个源。因此,多路转换器26,28和30用于使数据阵列22好像是六口数据阵列。数据阵列22从L1高速缓冲贮存器接收一个写使能信号。当数据阵更22接收写使能信号的时候,数据阵列22在从L1高速缓冲贮存器来的写地址所规定的地址上存贮从L1高速缓冲贮存器来的写数据。当数据阵列22接收从L1高速缓冲贮存器来的一个读地址的时候,数据阵列22把在读地址所规定的地址上所存贮的数据输出给L1高速缓冲贮存器。
由L2高速缓冲贮存器和系统总线所供给数据缓冲器20的读地址由读选逻辑32来接收。如果L2高速缓冲贮存器和系统总线两者之中只有一个现正在输出一个读地址,那么,读选逻辑32向多路转换器26供给一个选信号,这样,多路转换器26输出的读地址就是从L2高速缓冲贮存器和系统总线两者之一来的现正供给的实际地址。但是,如果L2高速缓冲贮存器和系统总线同时发生供给一个读地址,那么,读选逻辑32引起多路转换器26输出由系统总线所供给的那个读地址去给数据阵列22。然后数据阵列22输出由读地址所寻址的数据去给L2高速缓冲贮存器和系统总线。
正如图7所示,写选逻辑34从L2高速缓冲贮存器和系统总线接收写使能信号,该信号指示L2高速缓冲贮存器和系统总线要有写数据给数据阵列22。如果两个写使能信号中只有一个指示需要写进数据阵列22,那么写选逻辑控制多路转换器28和30,使得需要写进数据阵列22的L2高速缓冲贮存器和系统总线中的一个具有写地址且从那里输出写数据发送给数据阵列22。但是,如果L2高速缓冲贮存器和系统总线同时都企图写入数据阵列22,那么,写选逻辑34控制多路转换器28和30从L2高速缓冲贮存器选择并输出写地址和写数据给数据阵列22。当数据从L2高速缓冲贮存器和系统总线写入数据阵列22的时候,写选逻辑34也提供一个写使能信号给数据阵列22。在收到写使能信号的情况下,数据阵列22就在从多路转换器28所接收的写地址所规定的地址上写入多路转换器30所接收的数据。
传递高速缓冲贮存器目录表图2表示了图1中所示的传递速缓冲贮存器目录表10的高级图。正如图1所示,传递高速缓冲贮存器目录表10与L1高速缓冲贮存器、L2高速缓冲贮存器、系统总线和监探总线都有接口。传递高速缓冲贮存器目录表10包括一个L1命令接收器和从属命令逻辑100(下文中要提到的“L1命令接收器逻辑100”)和L1命令排队与路径选择逻辑200(下文中要提到的“L1路径选择逻辑200”),都是与L1高速缓冲贮存器有接口关系。L1命令接收器逻辑100及L1路径选择逻辑200两者都连到命令缓冲器600。
正如图2所示,传递高速缓冲贮存器目录表10进一步包括一个L2命令接收器和从属命令逻辑300(下文中的“L2命令接收器逻辑300”)和L2命令排队和路径选择逻辑400(下文中的“L2路径选择逻辑400”),都是与L2高速缓冲贮存器有接口关系。L2命令接收器逻辑300和L2路径选择逻辑400两者都连到命令缓冲器600。L2命令接收器逻辑300也连到L1命令接收器逻辑100。L2路径选择逻辑400也连到L1高速缓冲贮存器。此外,系统总线命令排队和路径选择逻辑800(下文中的“系统总线路径选择逻辑800”)与系统总线接口,并且连到命令缓冲器600。
传递高速缓冲贮存器目录表10也包括自由缓冲器逻辑500和总线相干监探逻辑700。自由缓冲器逻辑500连到L1命令接收器逻辑100、L2命令接收器逻辑300、总线相干逻辑700以及命令缓冲器600。总线相干监探逻辑700与监探总线接口并进一步连到命令缓冲器600。
命令缓冲器命令缓冲器600包括许多目录表入口。在一个优选的具体装置中,命令缓冲器600包括8个目录表入口;但是,目录表入口的数目并不限于8个。根据所需的操作特性,目录表入口的数目可以增加或减少。但是,目录表入口的数目与高速缓冲贮存器的线数相对应,由数据缓冲器20存贮。在命令缓冲器600中的目录表入口与数据缓冲器20中高速缓冲贮存器的线之间存在着一一对应的关系。另外,这个一一对应关系扩展到目录表入口与高速缓冲贮存器的线地址之间。例如,命令缓冲器600中目录表的入口0、1、2等等与数据缓冲器20中高速缓冲贮存器的线0、1、2等等相对应。因此,目录表入口的数目增加或减小就要求数据缓冲器20中高速缓冲贮存器线的数目有相同的增加或减小。正如下面会较详尽的讨论那样,目录表入口记录命令信息(因此也记录状态信息)使得数据缓冲器20的高速缓冲贮存器线可自由地分配。因此,不象一般的高速缓冲贮存器的线缓冲器那样其满线与回填线的数目是不能预设的。所以本发明没有一般高速缓冲贮存器的线缓冲器那样的缺点。
图6A表示了一个目录表入口的例子。正如图6A所示,目录表入口包括与存贮在数据缓冲器20高速缓冲贮存器的线有关联的存贮器映象相干状态(即MESI状态)、操作码或命令型式、“正在使用”信息、跟踪信息、与存贮在数据缓冲器20中高速缓冲贮存器的线有关联的实际地址、以及从属信息。“正在使用”信息、跟踪信息、从属信息统称为状态信息。“正在使用”信息指示了目录表入口是否正在使用。跟踪信息指示了与存贮在目录表入口中的命令有关的处理其现在的状态。从属信息指示了命令可能会与其他命令有关的任何从属关系。
图6B详细地表示了状态信息。正如图6B所示,状态信息包括“正在使用”位、发送位、命令占用位、已完成位、从属位。当运行时,“正在使用”位指示了目录表正在使用。
发送位、命令占用位以及已完成位其格式如图6C所示。当发送位运行时,L1位指示了命令发给L1高速缓冲贮存器。接着的两位L2Tag1和L2Date1与L2高速缓冲贮存器有关。在按照本发明的传递高速缓冲贮存器的具体装置中,假定L2高速缓冲贮存器有单独的流水线来处理命令和数据。因此,当发送位运行时,L2Tag1位指示了命令是发送给L2高速缓冲贮存器的命令流水线的。L2Date位指示了与命令有关的数据,即被L2高速缓冲贮存器存贮的数据或从L2高速缓冲贮存器输出的数据,是发送给L2高速缓冲贮存器的数据流水线的。当传递高速缓冲贮存器用在L2高速缓冲贮存器具有单一的命令和数据流水线时,一个单一的位可以代替L2Tag1位和L2Date1位。下面一位是SB,它指示了当其运行时,命令是发给系统总线的。
当处理完成之前,命令常常回送到命令源。例如,当响应从L1高速缓冲贮存器发送到L2高速缓冲贮存器的取命令,一条高速缓冲贮存器的线从L2高速缓冲贮存器送到L1高速缓冲贮存器。因此,取命令的一部分是在L1高速缓冲贮存器的操作中存贮的。所以,在这个存贮状况期间命令必须回送到L1高速缓冲贮存器。当在发送位中运行时,L12位指示了命令是回送到L1高速缓冲贮存器的。同样,当在发送位中运行时,L2 Tag2和L2 Date2两位指示了命令及与之相关的数据分别回送到L2高速缓冲贮存器。正如上面所提到的,如果L2高速缓冲贮存器具有单一的流水线来处理命令和数据,那么L2 Tag2和L2 Data2两位可以由单一的一位来代替。
当命令占用位运行时,这些位有相同的意义,除非其有关的对应成分占用了命令或数据,无论是L1高速缓冲贮存器、L2高速缓冲贮存器或是系统总线。例如,当在命令占用位中运行时,L2 Tag1位指示了命令被占用着以便L2高速缓冲贮存器中的命令流水线来处理。L2 Data1位指示了与命令有关的数据被占用着以便L2高速缓冲贮存器的数据流水线来处理。
同样,当在已完成位中运行时,该些位指示了对应的成份是否完成了命令或数据的处理。
正如图6B中所示,每个目录表入口包括8位从属位Dep0-Dep7,作为从属信息。每一位与8个目录表入口中的一个相对应。当从属位置1时,该从属位指示了在与其他目录表入口中的命令有关的命令中哪个与从属位对应。例如,如果在目录表入口中Dep0位置1,其目录表地址为3,那么在这个目录表入口中的命令就与存贮在目录表地址为0的目录表入口中的命令的性能有关。因此,目录表中目录表地址为3的命令在进一步处理之前必须等待目录表中目录表地址为0的命令完成处理。
传递高速缓冲贮存器目录表L1命令接收器逻辑的操作下面,将参考图2,讨论传递高速缓冲贮存器目录表的操作。L1命令接收器逻辑100从L1高速缓冲贮存器接收命令。一开始,L1命令接收器逻辑100测定目录表入口是否在命令缓冲器600中被采用。正如下面要详细讨论的那样,自由缓冲器逻辑500对每一个目录表入口监控其“正在使用”位,同时测定目录表入口哪个用着哪个没用着。自由缓冲器逻辑500将信号送到L1和L2命令接收器逻辑100和300两者,指示目录表入口是否可用,即是否未用着,并且还为可用的目录表入口提供该目录表地址。
如果目录表入口是可用的,那么L1命令接收器逻辑100将命令解码以便测定与此相关连的任一条高速缓冲贮存器的线的初始路径选择和存贮器相干映象状态,例如,MESI状态。与解码操作的同时,L1命令接收器逻辑100测定命令是否与别的命令的性能有关。这些操作将在下面详细讨论。
然后,L1命令接收器逻辑100在命令缓冲器600的目录表入口上(有自由缓冲器逻辑500所规定的目录表地址)存贮命令和与命令有关的高速缓冲贮存器的线的实际地址。L1命令接收器逻辑100也为这个目录表入口运行“正在使用”位,并在跟踪信息中设置初始路径选择信息。
此外,L1命令接收器逻辑100在命令缓冲器600的目录表入口上存贮MESI状态信息。某些命令没有任何的与之相关联的数据。这些命令同样按其有与之相关联的数据的命令来处理,除非在它的目录表入口中没有存贮MESI状态信息。
另外,L1命令接收器逻辑100在命令缓冲器的目录表入口上存贮从属信息。
图3A较比详细地表示了L1命令接收器逻辑100。不过,为明白起见,图3A未表示从L1命令接收器逻辑100至L2命令接收器逻辑300的连接。正如图3A所示,从L1高速缓冲贮存器发出命令送到命令缓冲器600,并为从属逻辑140、接收命令逻辑110、初始路由器120、初始MESI状态测定器130所接收。命令包括规定命令形式的操作码以及与命令相关联的高速缓冲贮存器线的实际地址。正如图3A中所进一步表示的那样,由自由缓冲器逻辑500提供给L1命令接收器逻辑100的目录表地址供给命令缓冲器600和L1高速缓冲贮存器。如果在命令缓冲器600中完成了命令的接收和存贮,那径L1高速缓冲贮存器就用这个目录表地址来作为数据缓冲器20的读地址或写地址。
从属逻辑140、接收命令逻辑110、初始路由器120以及初始MESI状态测定器130也都连接到命令缓冲器600。接收命令逻辑110的输出也供给自由缓冲器逻辑500。
现在参考图3A描述L1命令接收器逻辑100的操作。L1命令接收器逻辑100能够接收两种命令请求命令和响应命令。取命令就是请求命令的一个例子请求L1高速缓冲贮存器能够发送。取命令从命令转接器请求一条高速缓冲贮存器线,由此,L1高速缓冲贮存器要求接收一条与请求相对应的高速缓冲贮存器的线。如果L1高速缓冲贮存器没有足够的空间来存贮所请求的高速缓冲贮存器的线,那么,L1高速缓冲贮存器发出一个回填命令来制造空间。作为对所接收到的回填命令的响应,传递高速缓冲贮存器将存贮从L1高速缓冲贮存器输出来的一条高速缓冲贮存器线。回填命令就是响应命令的一个例子。
正如上面讨论论证的,当L1高速缓冲贮存器发出一个请求命令时,响应命令可能紧接着发送到那里。接收命令逻辑110通过自由缓冲器逻辑500的操作,计算出查明命令缓冲器600在收到请求命令时能够至少接收到两个命令,这在下面详细讨论。但是,本发明不限制请求两个目录表入口可采用。当只有一个目录表入口可采用时,请求命令可以被接收。紧接着收到的响应命令将仅仅是不得不等候目录表入口变成可采用的。
正如图3A进一步所示,接收命令逻辑110从L1高速缓冲贮存器接收两个信号命令和命令有效信号。命令有效信号指示在L1命令接收器逻辑100的命令输入上的信号是否是有效命令。接收命令逻辑110也从自由缓冲器逻辑500接收两个信号一是L1请求有效信号,一是L1响应有效信号。正如下面所讨论的,自由缓冲器逻辑500产生L1请求有效信号和L1响应有效信号给L1命令接收器逻辑100。L1响应有效信号指示当信号有效时,有足够的目录表入口来处理由L1命令接收器逻辑100所收到的响应命令;L1请求有效信号指示当信号有效时,有足够的目录表入口来处理由L1命令接收器逻辑100收到的请求命令。
当接收命令逻辑110收到从L1高速缓冲贮存器来的有效命令时,接收命令逻辑110测定命令是请求命令呢还是响应命令。如果接收命令逻辑110测定命令是请求命令并且L1请求有效信号指示有效,那么接收命令逻辑110产生一个缓冲器写信号使命令缓冲器600的写入使能。如果接收命令逻辑110测定命令是请求命令并且L1请求有效信号指示无效,那么接收命令逻辑110禁止命令缓冲器600写入。
如果接收命令逻辑110测定命令是响应命令且L1响应有效信号指示有效,那么接收命令逻辑110产生一个缓冲器写信号使命令缓冲器600的写入使能。如果接收命令逻辑110测定命令是响应命令且L1响应有效信号指示无效,那么接收命令逻辑110禁止命令缓冲器600写入。
在接收命令逻辑110测定命令缓冲器600是否可采用的同时,初始路由器120对命令的操作码解码以便测定命令将在哪里被发出。如果初始路由器120测定命令将发送到12高速缓冲贮存器,则初始路由器在发送位运行时使L2 Tag 1位运行。如果命令有与之相关联的高速缓冲贮存器的线,那么初始路由器120也将在发送位中运行L2 Data 1位。
初始MESI状态测定器130对命令解码以便测定命令是不是一个回填命令。如果命令是回填命令,则初始MESI状态测定器130设置被修正的MESI状态;否则,初始MESI状态测量器130设置MESI状态无效。
在接收命令逻辑110操作期间,初始路由器120、初始MESI状态测定器130、从属逻辑140测定从L1高速缓冲贮存器来的所接收命令是否与任何其他的命令有关。特别地,从属逻辑140将与命令有关的高速缓冲贮存器的线的实际地址去与已经存贮在命令缓冲器600中的命令有关的实际地址相比较。
如果从属逻辑140测定由L1命令接收器逻辑100所收到的与命令有关的实际地址与存贮在命令缓冲器600中与命令有关的实际地址一致的,那么从属逻辑140将对应于存贮了有相同实际地址的命令的从属位置1。例如,当L1命令接收器逻辑100所收到的命令被存贮在目录表入口上的时候,如果存贮在目录表地址为6的目录表入口上的命令其实际地址一致,则Dep6从属位将由从属逻辑140使其运行。
当接收命令逻辑140使命令缓冲器600的写使能,那么,包含有命令型式及实际地址的命令被写入命令缓冲器600。还有,初始路由器120写初始路径选择,初始MESI状态测定器130写MESI状态,从属逻辑140写从属位。
L2命令接收器逻辑参考图2,L2命令接收器逻辑300的操作与L1命令接收器逻辑100的操作是相同的,除了从属位的设置以及当命令缓冲器600写使能时的测定。图3B详细表示了L2命令接收器逻辑300。正如图3B所示,从L2高速缓冲贮存器发出的命令被送到命令缓冲器600并被从属逻辑340、与门310、初始路由器120以及初始MESI状态测定器130所接收。正如图3B进一步所示,由自由缓冲器逻辑500提供L2命令接收器逻辑300的目录表地址被提供给命令缓冲器600和L2高速缓冲贮存器。如果在命令缓冲器600中完成了命令的接收和存贮,那么L2高速缓冲贮存器把这个目录表地址当作数据缓冲器20的读地址或写地址。
从属逻辑340、与门310、初始路由器120以及初始MESI状态测定器130也都全连到命令缓冲器600。从属逻辑340进一步接收任何新的命令和目录表地址,其来自L1命令接收器逻辑100,未被存贮在命令缓冲器600中。为明白起见,L1和L2命令接收器逻辑100和300之间的连接被表示在图2中而未表示在图3A中。此外,从L2高速缓冲贮存器、与门310来的命令从L2高速缓冲贮存器接收命令有效信号,从自由缓冲器逻辑500接收响应有效信号,从从属逻辑340接收从属信号。与门310的输出供给自由缓冲器逻辑500,还有命令缓冲器600。
现在参考图3B来描述L2命令接收器逻辑300的操作。与L2高速缓冲贮存器不同,L2高速缓冲贮存器只发送响应命令。因此,测定命令是否能够被写入命令缓冲器600可以用与门310来完成。
与门310从L2高速缓冲贮存器接收命令有效信号,从自由缓冲器逻辑500接收L2响应有效信号,从从属逻辑340接收从属信号。L2响应有效信号指示当信号有效时,有足够的目录表入口用于处理由L2命令接收器逻辑300所收到的响应命令。L2命令接收器逻辑300的L2响应有效信号的产生在下面关于自由缓冲器逻辑500中详细讨论。从属信号指示,与从L2高速缓冲贮存器收到的命令有关联的情况中有没有特殊情况的从属关系。如果有特殊情况的从属关系,那么从属信号被置位,与门310禁止命令缓冲器600写入。
假定不存在特殊情况的从属,且当与门310从L2高速缓冲贮存器接收有效命令且L2响应有效信号指示有效的时候,那么L2命令接收器逻辑300产生一个缓冲器写信号使命令缓冲器600写使能。如果L2响应有效信号指示无效或者有效命令信号没指示有效,那么,与门310禁止命令缓冲器600写入。
在与门310测定命令缓冲器600是否可采用的同时,初始路由器120和初始MESI状态测定器130其运行与上面所讨论的L1命令接收器逻辑100相同。
表示在图3B中的从属逻辑340测定从L2高速缓冲贮存器接收来的命令是否与任何其他的命令有关。从属逻辑340将与从L2高速缓冲贮存器接收来的命令有关的实际地址与由L1命令接收器逻辑100从L1高速缓冲贮存器接收到的命令的实际地址相比较,如果一致,从属逻辑340测定由L2高速缓冲贮存器发出的命令和从L1高速缓冲贮存器发出的命令两者是否取代回填命令。如果是,则存在特殊情况的从属关系,且从属逻辑340产生从属信号去禁止与门310使命令缓冲器600的写使能。
替代或老化回填命令是回填命令的一种形式、替代回填命令被发出是在这样的时候存贮在高速缓冲贮存器中的一条高速缓冲贮存器的线置换成同一高速缓冲贮存器的地址作为现正存贮的高速缓冲贮存器的线。这就可能发生在有相关性的数据处理系统中,有不同的实际地址的高速缓冲贮存器的线置换成相同高速缓冲贮存器的地址。当上述情况出现时,高速缓冲贮存器发出一个替代回填命令以便发出现行存贮的高速缓冲贮存器的线回送给主存贮器,于是新的、高速缓冲贮存器的线被存贮了。
因为L1高速缓冲贮存器存贮了最现行的数据,所以,如果L1高速缓冲贮存器和L2高速缓冲贮存器两者都发出一个替代命令,那么就不需要从被处理的L2高速缓冲贮存器来的替代回填命令了。因此,当这个特殊情况存在时,从属逻辑340禁止处理从L2高速缓冲贮存器来的替代回填命令。
如果从L2高速缓冲贮存器来的命令的实际地址与L1命令接收器逻辑100的实际地址一致,而特殊情况的从属又不存在,那么,从属逻辑340就将与目录表入口的目录表地址相对应的从属位置1,在该入口中,L1命令接收器逻辑100正准备存贮从L1高速缓冲贮存器来的命令。
与图3A所示的从属逻辑140那样,图3B的从属逻辑340也将与从L2高速缓冲贮存器发出的命令有关联的实际地址去与已经存贮在命令缓冲器600中的命令的实际地址相比较。
如果从属逻辑340测定L2高速缓冲贮存器来的命令与存贮在命令缓冲器600中的命令其实际地址是一致的,那么,从属逻辑340就对L2高速缓冲贮存器接收的命令进行解码以便测定命令是不是一个替代回填命令。如果从L2高速缓冲贮存器来的命令不是替代回填命令,那么从属逻辑340将命令缓冲器600中目录表入口所对应的从属位置1,该入口存贮的命令其实际地址与从L2高速缓冲贮存器接收来的命令的实际地址相同。此外,从属逻辑340输出一个从属信号,允许与门310使命令缓冲器600写入使能。
但是,如果从L2高速缓冲贮存器接收来的命令是一个替代回填命令,那么,从属逻辑340就对命令缓冲器600中有相一致实际地址的命令输入并解码。如果从命令缓冲器600来的命令是一个替代回填命令,那么从属逻辑340还从命令占用位测定这个命令是还是不是从L1高速缓冲贮存器发出的。如果该命令不是从L1高速缓冲贮存器发出的,那么从属逻辑就把命令缓冲器600(存贮了有相同实际地址的命令)的目录表入口相对应的从属位置1。该从属逻辑340还输出一个从属信号,允许与门310使命令缓冲器600的写入使能。
如果存贮在命令缓冲器600中的替代回填命令已从L1高速缓冲贮存器发出,那么从属逻辑340测定L2高速缓冲贮存器的控制器是不是已经占用了这个命令。换句话说,从属逻辑340测定L2 Tag1位是不是处在“运行”。如果这一位是在运行,那么从属逻辑340就将与命令缓冲器600(存贮了有相同地址的命令)中目录表入口对应的从属位置1。从属逻辑340还输出一个从属信号允许与门310使命令缓冲器600写入使能。如果L2 Tag1位是“关”,那么从属逻辑340产生一个从属信号,于是使与门310禁止命令缓冲器600写入。
当与门310使命令缓冲器的写入使能的时候,包含有命令型式和实际地址的命令被写入命令缓冲器600。还有,初始路由器120写初始路径选择,初始MESI状态测定器130写MDSI状态,从属逻辑340写从属位。
系统总线路径选择逻辑参考图2,系统总线路径选择逻辑800识别命令缓冲器600中的命令以便根据每个目录表入口的发送位和命令占用位向系统总线发送,同时,将所识别出的命令按优先权的次序向系统总线发送。图4A详细表示了系统总线路径选择逻辑800。正如图4A中所示,一个排队填充数210、排队优先权逻辑270和命令接口290连到命令缓冲器600。排队填充数210进一步连到队列220、230和240。在优选的具体装置中,队列220、230和240都是先进先出(FIFO)的队列。队列220、230和240的输出连到多路转换器260。多路转换器260的输出连到命令接口290。
正如图4A所示,系统总线路径选择逻辑800还包括一个优先权选择寄存器280,它连到排队优先权逻辑270。排队优先权逻辑270还接收从每个队列220、230、240输出来的后列排队入口的有效位。排队优先权逻辑270的输出被多路转换器260当作选择信号来接收,还被FIFO空载逻辑250所接收。FIFO空载逻辑250也接收从系统总线输出的命令占用并提供一个空载输出信号给每一个队列220、230和240。FIFO空载250进一步提供命令占用信号给命令缓冲器600。
现在参考图4A描述系统总线路径选择逻辑800的操作。排队填充数210监探每个运行的目录表入口的发送位中的SB位。如果此位运行而在命令占用位中的相同位是“关”,那么排队填充数210识别与这些位对应的命令作为发送给系统总线的命令。接着,排队填充数210对已识别的命令检查其从属位,如果从属位的所有位都是“关”,那么排队填充数210送出该命令的目录表地址给队列220、230、240中的一个队列;否则,队列填充数210不输出该命令的目录表地址。
根据命令的优先权,排队填充数210测定该命令的目录表地址输出给队列220、230和240中的哪一个队列。在优先的具体装置中,命令被归类成三个命令优先权组监探回填命令,不同于监探命令和替代回填命令的命令(下文要提到的“非回填命令”)和替代或老化回填命令。
正如下面要详尽讨论的,L1高速缓冲贮存器和L2高速缓冲贮存器通常包括总线相干监探逻辑。这个监探逻辑监探(盯着)监探总线上的命令。如果一个高速缓冲贮存器的监探逻辑监探一个取命令-要求高速缓冲贮存器的线的实际地址与存贮在高速缓冲贮存器中的高速缓冲贮存器的线的实际地址相同,并监探被修正的那个高速缓冲贮存器的线的MESI状态,那么,该高速缓冲贮存器就发出一个监探回填命令。对监探回填命令的处理使得高速缓冲贮存器的线经系统总线发送给主存贮器。于是,取命令将获得高速缓冲贮存器线的最现行的数据。
在一个优选的具体装置中,命令优先权组的优先权的次序按增加的优先权是替代回填命令,非回填命令以及监探回填命令。队列240、230、220分别对应替代回填命令优先权组、非回填命令优先权组以及监探回填命令优先权组。大家会明白,命令优先权组的优先权数是可以自由选择的,并且能够通过附加的相应的排队而增加或减少。此外,命令优先权组可以改变。
因此,在图4A中所示的排队填充数210对所识别的命令解码,以便测定它在命令优先权组中的资格,然后将该所识别的命令输出给对应于那个命令优先权组的队列220,230,240中的一个队列。当排队填充数210输出一个目录表地址给队列220、230、240中的一个队列时,排队填充数210就添加一个有效位以便指示那个排队入口是一个有效的排队入口。
排队优先权逻辑270输入存贮在优先权选择寄存器280中的优先权码。该优先权码指示了队列220,230,240的优先权的次序。在优选的具体装置中,优先权码是两位码。一个两位码可以定出四种可能的优先权次序中的一个。如果队列的数目增加了或减少了,那么优先权码因而可能需要增加或者能够减少。
在优选的具体装置中,优先权选择寄存器280用缺席优先权码来编程,建立了队列220对应监探回填命令优先权组作为最高的优先权队列,队列230对应非回填命令优先权组作为次高的优先权队列。排列优先权逻辑270对优先权码解码,以测定队列220,230,240的优先权次序。但是,优先权选择寄存器是用户可编程的,因而,藉助对优先权码的重编程,用户可以动态地改变队列220、230、240的优先权以及相应的命令优先权组。
排队优先权逻辑270也在队列220,230,240的每个队列中接收最高优先权排队入口的有效位,即,一个队列将要输出的目录表地址。然后,排队优先权逻辑270测定有有效最高优先权排队入口的最高优先权队列。例如,如果队更的优先权次序是队列220、队列230、队列240,那么,排队优先权逻辑270检查队列220中最高优先权排队入口的有效位。如果有效位运行,表示有效,那么排队优先权逻辑270就产生一个选择信号,于是多路转换器260从队列220中选择最高的优先权排队入口。
如果有效位“关”,表示无效,那么排队优先权逻辑270检查队列230中最高优先权排队入口的有效位。如果该有效位运行,表示有效,那么排队优先权逻辑270就产生一个选择信号,于是多路转换器260从队列230中选择最高的优先权排队入口。如果有效位是“关”,表示无效,那么排队优先权逻辑270检查队列240中最高优先权排队入口的有效位。如果该有效位运行,表示有效,那么排队优先权逻辑270产生一个选择信号,于是多路转换器260从队列240选择最高的优先权排队入口。如果有效位“关”,那么队列220、230、240中没有一个队列被选中。
图4A中表示的排队优先权逻辑270还从命令缓冲器600接收一个升优先权信号。如果升优先权信号不指示一个升优先权的情况,那么,排队优先权逻辑270用上述讨论的方法产生一个选择信号。然而,如果升优先权信号指示一个升优先权情况,那么排队优先权逻辑270的运行就与上述讨论的方法不同。当存贮在命令缓冲器目录表入口的命令是被尽可能快地处理的时候,命令缓冲器600就产生一个升优先权信号。这种状况的发生将在下面讨论有关总线相干监探逻辑700时详细讨论。
然而,当这个状况得出结果时,命令缓冲器600就产生一个升优先权信号,此信号表示升优先权的情况,并且有此优先权的命令升级。排队优先权逻辑270对这个命令解码以测定命令是属于优先权组中的哪一组。然后,排队优先权逻辑270产生一个选择信号,于是多路转换器260选择对应于这个命令优先权组的队列220、230、240中的一个队列。
排队优先权逻辑270连续接收命令缓冲器600来的升优先权信号直至命令已被完成。当存贮了那个命令的目录表入口的“正在使用”位一直是“关”的时候,命令缓冲器600测定这个情况。然后命令缓冲器600产生一个升优先权信号,它表示非升优先权的情况。因此,排队优先权逻辑270用上面讨论过的关于存贮在优先权选择寄存器280中优先权码的方法重新控制多路转换器。
由多路转换器260所选择的目录表地址被输入到命令接口290。然后命令接口290获得对应于命令缓冲器600来的这个目录表地址的命令并将此命令输出给系统总线。当系统总线为处理而得到这命令的时候,系统总线就输出命令占用信号。命令占用信号由FIFO空载逻辑250接收并直送到命令缓冲器600。FIFO空载逻辑250除了接收命令占用信号还接收排队优先权逻辑270输出的选择信号。当FIFO空载逻辑250接收命令占用信号时,FIFO空载逻辑250输出一个空载信号,该信号指出选择信号所选择的队列220、230、240中的一个队列是空载或者是消去其中的最高优先权排队入口。
L1路径选择逻辑参考图2,L1路经选择逻辑200识别命令缓冲器中的命令以便根据发送位将此命令发送给L1高速缓冲贮存器。由于L1高速缓冲器的操作,L1路径选择逻辑200的操作其方法要比系统总线路径选择逻辑800或L2路径选择逻辑400这两者之一简单得多。
发送给L1高速缓冲贮存器的仅有的命令是L1高速缓冲贮存器最初发出的取命令,不过现在正在发送给L1高速缓冲贮存器的这些命令是带有所需要的数据的。此外,为了提高处理每个取命令的速度,L1高速缓冲贮存器保持了关于取命令的信息,于是,命令本身不需要回送给L1高速缓冲贮存器。代之而起的是,L1高速缓冲贮存器只要求通知它关于取命令可正被采用的数据。
从上述观点来看,L1路径选择逻辑200监控每个目录表正在使用的发送位中的L12位。如果这一位运行,则L1路径选择逻辑200识别与此位相对应的命令作为发送给L1高速缓冲贮存器的命令。但是,L1路径选择逻辑200并不是将所识别的命令发送给L1高速缓冲贮存器而是输出一个信号给L1高速缓冲贮存器,通知它命令可正被采用的数据。
L2路径选择逻辑参考图2,L2路径选择逻辑400根据每个目录表入口的发送位和命令占用位识别命令缓冲器中的命令以便发送给L2高速缓冲贮存器并按优先权的次序将已识别出的命令发送到系统总线。图4B详细表示了L2路径选择逻辑400。正如图4B所示,L2路径选择逻辑400与系统总线路径选择逻辑800是一样的,只不过是排队填充数410代替了排队填充数210,排队优先权逻辑470代替了排队优先权逻辑270,FIFO空载450代替了FIFO空载250以及多路转换器420被安置在命令接口290的输出上。除了排队优先权逻辑270所接收的输入外,排队优先权逻辑470也接收现行的命令有效信号以及从L1高速缓冲贮存器发出的命令。多路转换器420接收命令接口290输出的命令以及从L1高速缓冲贮存器发出的命令-对此,排队优先权逻辑470要接收到有效信号,根据排队优先权逻辑470来的旁路选择信号,多路转换器420输出这两个命令中的一个。因此,我们将只描述系统总线路径选择逻辑800与L2路径选择逻辑400之间的这些不同之处。
排队填充数410的操作与排队填充数210的方法相同,只是排队填充数410识别命令缓冲器中的命令发送给L2高速缓冲贮存器而不是系统总线。
排队优先权逻辑470的操作与排队优先权逻辑270(关于图4A,上面所描述的)方法相同,只是还执行下面的附加操作。正如图4B所示,排队优先权逻辑470接收从L1高速缓冲贮存器来的命令。排队优先权逻辑470对L1高速缓冲贮存器的命令解码以便测定L1高速缓冲贮存器的命令属于命令优先权组中的哪一组。然后,排队优先权逻辑470测定经过多路转换器260所选择的命令是否是相同的优先权还是较高的优先权。亦即,正如上面关于排队优先权逻辑270那样,排队优先权逻辑470测定存贮有有效排队入口的最高优先权排队,因而也就测定最高优先权的命令优先权组(具有发给L2高速缓冲贮存器的命令)。如果L1高速缓冲贮存器的命令属于相同优先权的命令优先权组或者是较低优先权的命令优先权组,那么,排队优先权逻辑470产生一个旁路选择信号使得多路转换器420输出从命令接口290输出来的命令。
但是,如果排队优先权逻辑470测定L1高速缓冲贮存器的命令属于比多路转换器260输出来的命令有较高的优先权组,那么,排队优先权逻辑470产生一个旁路选择信号使得多路转换器420选择L1高速缓冲贮存器的命令。这样一来,L1高速缓冲贮存器的命令能够直接发送给L2高速缓冲贮存器,避开了正常的发送通路。这就提供了关于路径选择的大量的时间弥补。
旁路选择信号也提供给FIFO空载450。当旁路选择信号指示从命令接口290来的命令被多路转换器420选中时,FIFO空载450就以上面关于FIFO空载250所讨论的相同方法进行操作。但是,如果旁路选择信号指示多路转换器420选择了L1高速缓冲贮存器的命令,那么旁路选择信号禁止FIFO空载450转存给队列220、230、240中的一个队列。
自由缓冲器逻辑参考图2,自由缓冲器逻辑500监控每个目录表入口的“正在使用”位,并测定哪个目录表入口正在使用,哪个目录表入口没在使用。根据没在使用的目录表入口的数目,自由缓冲器逻辑500产生信号给L1和L2命令接收器逻辑100和300,它指示了命令缓冲器600的可用性。自由缓冲器逻辑500也产生与目录表入口的可用性有关的目录表地址给L1和L2命令接收器逻辑100和300。
图5详细表示了自由缓冲器逻辑500。自由缓冲器逻辑500包括自由缓冲器管理逻辑510,它监控发送位、命令占用位、已完成位,并依此为目录表入口的“关”而选择“正在使用”位和从属位。自由缓冲器逻辑500进一步包括“下一个自由目录表地址和有效性逻辑”520,即下文提到的“有效性逻辑520”,它监控“正在使用”位,从L1和L2命令接收器逻辑10和300接收L1和L2命令有效信号,接收“触发器监控”信号并产生L1请求有效信号,L1响应有效信号以及根据所收到的信号和监控“正在使用”位接收L2可用目录表地址。
现在详细讨论关于图5的自由缓冲器逻辑500的操作。正如上面所讨论的,自由缓冲器管理逻辑510监控“发送”位、“命令占用”位以及“已完成”位。正如下面要详细讨论的那样,当命令的处理已完成时,所有的“发送”位将全部“关”闭,“命令占用”位的状态将等于相应“已完成”位的状态。当自由缓冲器管理逻辑510检测这个目录表入口的状态时,自由缓冲器管理逻辑510(1)运行“正在使用”位,使目录表入口“关”,(2)关掉与这个目录表入口对应的其他目录表入口中的从属位。
有效性逻辑520根据目录表入口的数目产生L1请求有效信号,L1响应有效信号,以及L2响应有效信号,这里没使用有效性逻辑520的预测。有效性逻辑520根据对每一个目录表入口(其“正在使用”位是“关”)的目录表地址的第一次记录预测未使用的目录表入口的数目。然后,有效性逻辑520假定如果L1命令接收器逻辑100或L2命令接收器逻辑300二者之一在前一周期内被提供一个目录表地址,则该目录表地址已被使用。在前一周期内根据前两周期供给L1命令接收器逻辑100和/或L2命令接收器逻辑300的目录表地址,做同样的假定。因此,在这一周期内,有效性逻辑520就有足够的时间来处理两周期前来的L1命令有效信号和L2命令有效信号,以便测定两周期前供给L1命令接收器逻辑100和L2命令接收器逻辑300的目录表地址是不是确实已被使用。根据这个测定,有效性逻辑520收集出未用目录表入口的清单。
在优选的具体装置中,有效性逻辑520不能利用一个周期前的L1有效信号和L2命令有效信号去测定未用的目录表入口,因为那样做可能会要求不希望有的处理速度的降低。不过,如果这样的处理速度的降低是可以接受的话,那么,一个周期前接收的L1命令有效信号和L2命令有效信号可能会用来精确地测定未用的目录表入口的目录表地址,消除了上面讨论的做假定的需要。
有效性逻辑520根据收集到的未用的目录表入口的清单计算可用的目录表入口的数目。如果有3个或3个以上的目录表入口可采用,那么有效性逻辑520(1)产生L1请求有效信号和L1响应有效信号以指示有效性,(2)产生一个L1目录表地址信号去识别在收集的未用目录表入口的清单中目录表入口的最低位目录表地址。此外,如果有3个或3个以上的目录表入口可采用,那么,有效性逻辑520(1)产生L2响应有效信号以指示有效性,(2)产生L2目录表地址信号去识别在收集的未用目录表入口的清单中目录表入口的最高位目录表地址。
如果只有两个目录表入口可采用,那么,有效性逻辑520(1)产生L1响应有效信号以指示有效性,产生L1请求有效信号以指示无效性,(2)产生L1目录表地址信号去识别在收集的未用目录表入口的清单中目录表入口的最低位目录表地址。此外,如果只有两个目录表入口可采用,那么,有效性逻辑520(1)产生L2响应有效信号以指示有效性,(2)产生L2目录表地址信号去识别在收集的未用目录表入口的清单中目录表入口的最高位目录表地址。
如果只有一个目录表入口可采用,那么,有效性逻辑520检查触发器监探信号,该信号的产生在下面关于总线相干监控逻辑700的讨论中将详细加以讨论。如果触发器监探信号是关,那么,有效性逻辑520产生L1响应有效信号以指示有效性,产生L1请求有效信号和L2响应有效信号以指示无效性。有效性逻辑520还产生L1目录表地址信号去识别一个未用的目录表入口的目录表地址。如果触发器监探信号是运行,那么,有效性逻辑520产生12响应有效信号以指示有效性,产生L1请求有效信号和L1响应有效信号以指示无效性。有效性逻辑520还产生L2目录表地址信号去识别一个未用的目录表入口的目录表地址。
总线相干监探逻辑参考图2,总线相干监探逻辑700是传递高速缓冲贮存器目录表10的任选部分。总线相干监探逻辑700支持多处理器系统中各处理器之间的操作相干。当数据处理系统结合了本发明的传递高速缓冲贮存器就形成了多处理器系统的一部分,较可取的是,传递高速缓冲贮存器目录表10包括有总线相干监探逻辑700。
总线相干监探逻辑700与用于一般的多处理器中L1高速缓冲贮存器和L2高速缓冲贮存器的通用逻辑是相同的,但它包括了额外的逻辑,以便产生触发器监探信号并使得命令缓冲器600发出升优先权信号。这个额外的逻辑从紧接着的描述中将容易地明白的。
现在描述一般的监探逻辑的操作。正如上面讨论的,NMSI状态所有权系统是通用的、已知的运载器,借此,多处理器保持关于数据的相干。监探就是处理,由该处理,多处理器系统的处理器保持数据的精确的MESI状态。正如以上所进一步讨论的,MESI状态是与高速缓冲贮存器的每条线相结合的,当高速缓冲贮存器的一条线被传递到数据缓冲器20时,所结合的MESI状态就被存贮在命令缓冲器600的相应目录表入口中。这样,传递高速缓冲贮存器获得高速缓冲贮存器线的所有权。
当多处理器系统的处理器发出命令时,这些命令被其他的处理器放在监控总线上用来监探,即,下面更详细讨论的监控方式。例如,在L1高速缓冲贮存器中总线相干监探逻辑监探监探总线上的一个命令并检查这个命令,看看它与命令有关的实际地址是否与在其中所存贮的高速缓冲贮存器的线的实际地址相符。如果不符,则不管此命令。如果相符,则L1高速缓冲贮存器按照已知的技术改变该高速缓冲贮存器线的MESI状态,如果确信的话。
例如,假定第一个处理器的L1高速缓冲贮存器监探从第二个处理器来的取命令且实际地址相符。如果高速缓冲贮存器线的MESI状态是唯一的,那么,第一个处理器的L1高速缓冲贮存器将改变欲分配的MESI状态,因为取命令指示第二个处理器将在同一点上存贮相同的高速缓冲贮存器的线。
作为另一个例子,假定高速缓冲贮存器线的MESI状态不是唯一的,而是被修正了。由于MESI状态被修正,所以L1高速缓冲贮存器假定它有高速缓冲贮存器线的最新适应的版本,并经过系统总线将高速缓冲贮存器的线输出给主存贮器,于是第二个处理器获得这个高速缓冲贮存器线的最新适应的版本。
图2中表示的总线相干监探逻辑700以相同的方式操作。总线相干监探逻辑700监探监探总线上的一个命令,并测定是否存在与存贮在命令缓冲器600中的命令相一致的实际地址。如果不存在相一致的实际地址,那么就不管该被监探的命令。如果存在相一致的实际地址,那么,由命令缓冲器600所存贮的、对应于具有被监探命令实际地址的命令的MESI状态按照已知的技术作新的改动。
此外,如果监探命令是一个对数据的请求,正象以上例子中取命令那样,总线相干监探逻辑700在监探总线上输出一个信号,其数据是不可采用的,其命令源在以后可能会再次被试用。与L1和L2高速缓冲贮存器不一样,传递高速缓冲贮存器并不响应一个被监探的命令而在系统总线上输出数据。原因是简单的。高速缓冲贮存器的线属于传递高速缓冲贮存器,因为先前发出的命令现在存贮在命令缓冲器600中,请求在那里操作。为了保持数据处理系统的完整性,这个命令的处理必须在响应监探命令之前完成。但是,在促进相干的兴趣中,当监探命令的实际地址和命令缓冲器600存贮的命令相一致令的时候,(下文叫“匹配命令”)总线相干监探逻辑700通知匹配的命令缓冲器600。办此,命令缓冲器600提升匹配命令的优先权,这样,匹配命令的处理将尽可能快地被完成。具体地说,命令缓冲器600检查匹配命令的“发送”位以便测定L1路径选择逻辑200、L2路径选择逻辑400、系统总线路径选择逻辑800哪一个在或将要发出匹配命令。然后命令缓冲器600输出上面讨论过的升优先权信号给合适的路径选择逻辑的排队优先权逻辑,如果相应的“命令占用”位是“关”的话。正如上面详细讨论的,为响应升优先权信号,排队优先权逻辑提升了队列220、230和240的优先权,匹配命令就发送或将发送给这些队列。
正如上面所讨论的,L1高速缓冲贮存器和L2高速缓冲贮存器也包括总线相干监探逻辑,并且为响应监探一个命令,可能为系统总线输出一条指定的高速缓冲贮存器的线。但是,如果只有一个目录表入口可采用,那么自由缓冲器逻辑500必须设法决定是否指示目录表地址可采用的L1命令接收器逻辑100还是L2命令接收器逻辑300。这个决定是通过监探触发器信号的利用来做的。监探触发器信号由总线相干监探逻辑700保持在关状态。
当命令被监探时,总线相干监探逻辑700在最新修改MESI状态和在监探总线上输出一个响应监探命令之后于一个周期内保持触发器监探信号处于关状态。这就给L1高速缓冲贮存器足够的时间来输出一个命令和相结合的高速缓冲贮存器的线给传递高速缓冲贮存器,如果L1高速缓冲贮存器正准备以此方式响应一个监探命令的话。
在下一个时钟周期上,触发器监探信号只在该周期内被打开,所以如果L2高速缓冲贮存器响应一个被监探的命令并且只存在一个未用的目录表入口,那么命令就有一个正被接收的机会。
命令跟踪下面接着详细讨论图2表示的命令缓冲器600处理命令的方法。正如上面所讨论的,当命令被存贮在命令缓冲器600的时候,初始路径选择经“发送”位被设置。然后,该命令被发送给合适的命令转接器,并且当命令转接器占有命令时,命令转接器发出命令占用信号。根据命令占用信号,命令缓冲器重新修改命令占用位。当命令转接器完成命令的处理时,命令转接器发出一个已完成信号。根据已完成信号,命令缓冲器600重新修改已完成位并根据已完成信号和命令型式,命令缓冲器600重新修改发送位。
图8表示了命令缓冲器600执行的命令跟踪的特殊例子。图8表示了命令缓冲器600在处理取命令期间其目录表入口的“正在使用”位、发送位、命令占用位和已完成位,存贮在其中的取命令是由L1高速缓冲贮存器为响应L1高速缓冲贮存器的丢失而被发出的。具体地说,步骤1)-7)表示当L2高速缓冲贮存器在L1高速缓冲贮存器丢失情况下相符的这些位。步骤8)-17)表示为响应L1高速缓冲贮存器丢失而发出的取命令的处理,紧接着L2高速缓冲贮存器丢失,并最后引起数据从系统总线返回且被存贮在L1和L2高速缓冲贮存器两者之中。最后,步骤18)-20)表示取命令的处理,取命令是为响应L1高速缓冲贮存器的丢失而发出的,紧接着L2高速缓冲贮存器丢失,引起数据从系统总线返回且只存贮在L1高速缓冲贮存器中,因为L2高速缓冲贮存器不可能除去标志位或目录表入口。
现在来详细讨论图8表示的各个步骤。步骤1)表示了一个未用的目录表入口,其“正在使用”位置O。在步骤2)中,由L1高速缓冲贮存器丢失而引起的取命令被存贮在命令缓冲器600的未用目录表入口中。因此,“正在使用”位在运行。为响应L1高速缓冲贮存器丢失,数据首先从L2高速缓冲贮存器寻找。所以,在“发送”位中L2 Tag1位及L2 Data1位在运行。由于从L1高速缓冲贮存器发出的这个命令,命令占用位和已完成位中的L11位和在运行。
在步骤3)中,L2高速缓冲贮存器指示了在L2高速缓冲贮存器中命令流水线(因而也指示了一个目录表入口)可采用来处理命令,且L2高速缓冲贮存器的数据流水线也可采用。因此,为响应从L2高速缓冲贮存器输出以指示tag和data可用性的命令占用位,命令缓冲器600将命令占用位中的L2 Tag1位和L2 Data1位置位。
在步骤4)中,L2高速缓冲贮存器遭受到一次高速缓冲贮存器的瞬时中断。L2高速缓冲贮存器产生一个高速缓冲贮存器瞬时中断信号,它指示了命令而不是数据的处理已经完成。因此,在完成位中的L2 Tag1位在运行。当L1高速缓冲贮存器输出一个取命令的时候,期盼在一条高速缓冲器的线中有响应。因此,L1高速缓冲贮存器保持输出命令的复制。所以,当L2高速缓冲贮存器中发生高速缓冲贮存器瞬时中断或者命令被发送给系统总线的时候,命令同时回送给L1高速缓冲贮存器。命令缓冲器600根据命令的型式来识别这个命令。接着,当从L2高速缓冲贮存器来的高速缓冲贮存器瞬时中断信号被接收的时候,命令缓冲器600将步骤4)中发送位和命令占用位的L12位打开(使运行)。
在步骤5)中,L2高速缓冲贮存器经数据缓冲器20完成了将高速缓冲贮存器的线输出给L1高速缓冲贮存器,并输出一个信号给命令缓冲器以指示这个事实的发生。作为响应,命令缓冲器600使已完成位中的L2 Data1位运行。
在步骤6)中,L1高速缓冲贮存器完成高速缓冲贮存器线的存贮,且其中MESI状态从命令缓冲器600传送到L1高速缓冲贮存器。然后,指示它的信号由L1高速缓冲贮存器输出。根据这个信号,命令缓冲器600使已完成位中的L12位运行并将发送位中的L12位清除。
自由缓冲器逻辑500识别是否所有的发送位都关,命令占用位的状态是否等于已完成位的状态。接着,步骤7)中自由缓冲器逻辑500使“正在使用”位关。
正如上面所提到的,步骤8)-12)表示L1高速缓冲贮存器丢失的处理(紧跟着L2高速缓冲贮存器丢失)。正如步骤8)所指示的,上面讨论过的步骤1)-3)被重复。但是,在步骤9)中,命令缓冲器600不是从L2高速缓冲贮存器接收一个高速缓冲贮存器瞬时中断信号而是接收一个高速缓冲贮存器的丢失信号。为响应这个信号的接收,命令缓冲器600使已完成位中的L2 Tag1位和L2 Dtat1位运行。此外,根据这个信号和命令的型式,命令缓冲器600识别命令是否被发给系统总线,同时使发送位中的SB位运行、L2 Tag1位和L2 Data1位禁止。
在步骤10)中,系统总线指示命令已被占用,命令缓冲器使命令占用位中的SB位和L12位运行。命令缓冲器600也使发送位中的L12位运行。
在步骤11),系统总线输出一个信号给命令缓冲器600以指示所需的数据正在输出给数据缓冲器20。作为响应,命令缓冲器600使已完成位中的SB位运行。还有,根据这个信号和命令,命令缓冲器600识别命令除了发送给L1高速缓冲贮存器外还发给L2高速缓冲贮存器。因此,命令缓冲器使发送位中的L2 Tag2位运行。
在步骤12)中,L1高速缓冲贮存器完成数据的存贮并输出一个指示它的信号。为响应这个信号,命令缓冲器600清除发送位中的L12位并使已完成位中的L12位运行。在步骤13)中,L2高速缓冲贮存器输出一个信号以指示命令正被占用。这就引起了命令缓冲器600使命令占用位中的L2 Tag2位运行。
在图8的步骤14)中,L2高速缓冲贮存器输出一个信号以指示命令正在由L2高速缓冲贮存器来处理并指示L2高速缓冲贮存器可采用来存贮与之相关联的数据。为响应这个信号,命令缓冲器600使发送位中的L2 Data2位运行,使发送位中的L2Tag2位禁止并使已完成位中的L2 Tag2位置位。在步骤15)中,L2高速缓冲贮存器输出一个信号(指示数据正在被存贮),并且命令缓冲器600因此使命令占用位中的L2Data2位运行。在步骤16)中,L2高速缓冲贮存器输出一个信号以指示数据正在被存贮。作为响应,命令缓冲器600使已完成位中的L2 Dtat2位运行,使发送位中的L2 Data2位关。与此同时,自由缓冲器逻辑500识别所有发送位是否都关,命令占用位的状态是否等于已完成位的状态。因此,在步骤17)中,自由缓冲器逻辑500使“正在使用”位关。
在上面所讨论的步骤8)-17)的例子中,假定在L2高速缓冲贮存器存贮之前,L1高速缓冲贮存器存贮了从系统总线返回的数据。不过,我们会认识到,L2高速缓冲贮存器可能会首先存贮该批数据或者同时发生存贮。
在步骤18)-20)中所示的最后的例子中,L1高速缓冲贮存器丢失,紧接着L2高速缓冲贮存器丢失,接着,在系统总线上返回的数据被存贮在L1高速缓冲贮存器中,而L2高速缓冲贮存器不可用来存贮数据。因此,正如步骤18)所示,步骤1)-3)和9)-13)被重复。然后,在步骤19)中,L2高速缓冲贮存器输出一个信号以指示命令不能被接受。因此,命令缓冲器600使已完成位中的L2 Tag2位运行,使发送位中的L2 Tag2位禁止。此时,自由缓冲器逻辑500识别所有的发送位是否都关,命令占用位的状态是否等于已完成位的状态。接着,自由缓冲器逻辑500使“正在使用”位关。
调试与误差检测利用“正在使用”位、发送位、命令占用位和已完成位,一个目录表入口能够被禁止,且误差被检测出来。在数据处理系统建立期间(该系统结合了按照本发明的多入口、全结合传递高速缓冲贮存器),操作者可能要设置数据处理系统的执行特性,这样,本发明的执行需要反换算。操作者可以用禁止一个或多个目录表入口来完成它。还有,如果误差在数据阵列22中被检测,那么操作者将要禁止与保持误差的数据阵22的高速缓冲贮存器线相对应的目录表入口。于是,就能防止利用有缺陷的高速缓冲贮存器的线。
当一个目录表入口可采用时,“正在使用”位、发送位、命令占用位、已完成位都被设置成O。
对一个正在使用的目录表入口来说,“正在使用”位被置位,同时,发送位、命令占用位和已完成位中至少有一个位也被置位。接着,在正常操作期间,“正在使用”位被置位,而发送位、命令占用位和已完成位中没有一个位也被置位的情况是不会发生的。为了禁止目录表地址,操作者将“正在使用”位置位并将发送位、命令占用位、已完成位禁止。自由缓冲器逻辑500识别这个禁止情况,并不将产生作为可用目录表地址的、与被禁止的目录表地址对应的目录表地址。
除了上面讨论的禁止情况之外,在正常操作期间不会发生“正在使用”位、命令占用位和已完成位的其他组合。自由缓冲器逻辑500把这些组合认作误差,并发出一个误差信号(未示出)通知操作在执行调试操作。由自由缓冲器逻辑500识别的误差情况包括(1)与在命令占用位中被设置的位相对应的既不是发送位中的位也不是已完成位中的位被设置;(2)一个发送位和对应的一个已完成位两者都被置位;(3)发送位都被置0,而命令占用位不等于对应的已完成位。
上面描述的本发明是鉴于目前考虑最实际的和优选的具体装置,此时要注意的是本发明不限于所揭示的具体装置;而关于目录表,希望覆盖各种修正和等效的配置-被包括在附后的权利要求的精神和范围之中。
权利要求
1.一个处理命令和与之相关联数据的装置,包括一个数据缓冲器;从至少一个命令源接收和存贮命令的命令目录表,并将所述数据缓冲器的未用部分自由地分配给所述的命令;所述的数据缓冲器在所述的数据缓冲器的所述被分配部分中存贮与所述命令有关联的数据。
2.权利要求1的装置,其特征在于所述的命令目录表包括一个存贮所述命令的命令缓冲器;与每个命令源有关的命令接收器逻辑,它接收所述的命令,测定所述的命令缓冲器是否能够接收所述的被接收的命令,以及所述的命令缓冲器是否能够接收所述的被接收的命令,将所述的被接收的命令发送给所述的命令缓冲器。
3.权利要求2的装置,其特征在于所述的命令缓冲器包括许多目录表入口,每个目录表入口用于存贮一个命令;且所述的装置进一步包括监控所述命令缓冲器的自由缓冲器逻辑,根据所述的监控,测定哪一个所述目录表入口未被使用,并根据所述的测定,产生未被使用的目录表入口,其中所述的命令接收器逻辑根据所述的未被使用的目录表入口的输出,测定是否存在未被使用的目录表。
4.权利要求3的装置,其特征在于所述的自由缓冲器逻辑向所述的命令接收器逻辑提供所述未被使用的目录表入口的目录表地址;所述的数据缓冲器包括一个与所述命令缓冲器中每个目录表入口相对应的数据部分;所述的命令接收器根据所述的目录表地址将所述的被接收的命令发送给所述的未被使用的目录表入口,并且所述的命令接收器逻辑提供所述的目录表地址给所述的命令源,于是,如果所述的命令源输出与所述被接收的命令相应的所述的数据,那么,与所述被接收的命令相对应的所述的数据被输出给所述数据缓冲器(地址与所述目录表地址相对应)的所述部分。
5.权利要求3的装置,其特征在于所述命令接收器逻辑对所述被接收的命令解码,并且,如果所述被接收的命令是命令的一个要求型式,那么,所述的命令接收器逻辑测定是否至少有一个目录表入口未被使用,如果至少一个目录表入口未被使用,则所述命令接收器逻辑发送所述被接收的命令给所述未被使用的目录表入口。
6.权利要求3的装置,其特征在于所述的命令接收器逻辑对所述被接收的命令解码,并且,如果所述被接收的命令是命令的一个要求型式,那么,所述命令接收器逻辑测定是否至少有三个目录表入口未被使用,如果至少三个目录表入口未被使用,则所述命令接收器逻辑发送所述被接收的命令给所述未被使用的目录表入口中的一个。
7.权利要求1的装置,其特征在于所述命令目录表产生与所述被接收的命令有关联的状态信息,所述的状态信息至少指示了向一个命令转接器发送了所述被接收的命令,并且,命令目录包括一个存贮所述被接收的命令和所述状态信息的命令缓冲器;所述的装置还包括路径选择逻辑,它与每个命令转接器相对应,识别存贮在所述命令缓冲器中的哪个命令根据所述的状态信息发送给所述的相应命令转接器且送出所述的被识别的命令给所述的命令转接器。
8.根据要求7的装置,其特征在于每个路径选择逻辑测定所述被识别命令的优先权并按优先权的次序发出所述被识别的命令。
9.权利要求8的装置,其特征在于存贮在所述命令缓冲器中的每个命令属于许多命令优先权组中的一组;且所述的路径选择逻辑根据所述被识别的命令属于所述命令优先权组中的哪一组来测定被识别命令的优先权。
10.权利要求9的装置,其特征在于所述的路径选择逻辑包括一个存贮有指示所述命令优先权组的优先权编码的可编程优先权寄存器,所述的路径选择逻辑根据存贮在所述的可编程优先权寄存器中所述的编码来测定所述命令优先权组的所述优先权。
11.权利要求8的装置,其特征在于所述的路径选择逻辑根据升优先权信号改变所述被识别命令的优先权。
12.权利要求2的装置,其特征在于所述的命令缓冲器接收与所述命令有关联的状态信息,所述的状态信息至少指示了向一个命令转接器发送所述的命令;并且,所述的装置还包括路径选择逻辑,它对应于每个命令转接器,根据所述的状态信息识别存贮在所述命令缓冲器中哪个命令发送给所述的相应的命令转接器,并将所述的被识别命令发送给所述的命令转接器;以及其中所述的命令接收器包括从属逻辑,它测定所述的被接收命令是不是取决于由所述命令缓冲器现正所存贮的命令的执行,如果所述的接收命令取决于现正由所述命令缓冲器存贮的命令的执行,那么,所述的从属逻辑发出所述的命令缓冲器的从属信息作为所述状态信息的一部分,它对应于指示所述从属的所述被接收的命令;和所述的路径选择逻辑在发出所述被接收的命令之前,检查与所述命令对应的所述状态信息,且如果所述的状态信息指示所述的从属,则所述的路径选择逻辑禁止发出所述被接收的命令。
13.权利要求1的装置,其特征在于所述的命令目录表在所述的命令源和至少一个命令转接器之间跟踪所述被接收的命令的处理。
14.权利要求1的装置,其特征在于所述的命令目录表获得存贮在所述数据缓冲器中数据的所有权。
15.权利要求14的装置,其特征在于所述的数据缓冲器存贮与所述命令有关联的高速缓冲贮存器的线;所述命令目录表存贮与所述高速缓冲贮存器的线相对应的存贮器映象相干信息,所述的存贮器映象相干信息正从所述的命令源传递到所述的命令目录表。
16.权利要求15的装置,其特征在于所述的存贮相干映象信息是MESI状态信息,其中,MESI是修正的、唯一的、分配的和无效的。
17.权利要求16的装置,其特征在于所述的命令缓冲器根据从命令转接器接收来的信号重新修改所述的MESI状态信息。
18.权利要求7的装置,其特征在于相应于所述命令转接器之一的路径选择逻辑包括传递命令的设备,该命令是在所述的命令存贮在所述的命令缓冲器之前,从一个命令源直接输出到所述的相应命令转接器。
19.处理命令及与之相关联数据的方法包括(a)从至少一个命令源接收一个命令;(b)在命令缓冲器中存贮所述的命令;(c)自由地分配数据的一个未用的部分给所述的命令;(d)在所述的数据缓冲器的所述分配部分中存贮与所述的命令有关的数据。
20.权利要求19的方法,其特征在于步骤(b)包括(b1)测定所述的命令缓冲器是否能接收所述的命令;(b2)如果所述命令缓冲器能够接收所述的命令,则在所述的命令缓冲器中存贮所述的命令。
21.权利要求20的方法,其特征在于所述的命令缓冲器包括许多目录表入口,每个目录表入口存贮一个命令;且所述的步骤(b1)测定所述的命令缓冲器是否包括一个未被使用的入口,并且步骤(b1)包括分步骤(b11)如果所述的命令是命令的一个要求型式,则为了测定,对所述的命令进行解码;(b12)测定是否至少有一个目录表入口未被使用。所述的步骤(b2)包括分步骤(b21)当所述的步骤(b11)测定所述的命令是命令的一个要求型式时,如果至少有一个目录表入口未被使用,则在所述目录表入口中存贮所述的命令。
22.权利要求20的方法,其特征在于所述的命令缓中器包括许多目录表入口,每个目录表入口用于存贮一个命令;并且所述步骤(b1)测定所述的命令缓冲器是否包括一个未被使用的目录表入口,且步骤(b1)包括分步骤(b11)如果所述的命令是命令的一个要求型式,则为了测定,对所述的命令进行解码;(b12)测定是否至少三个目录表入口未被使用。所述的步骤(b2)包括分步骤(b21)如果有一个未被使用的目录表入口且所述的步骤(b11)测定所述的命令不是命令的一个要求型式,则在所述未被使用的目录表入口中存贮所述的命令。(b22)当所述的步骤(b11)测定所述的命令是命令的一个要求型式时,如果至少有三个目录表入口未被使用,则在所述的目录表入口中的一个入口存贮所述的命令。
23.权利要求19的方法,其特征进一步包括(e)在所述的命令缓冲器中存贮与所述命令有关的状态信息,所述的状态信息至少指示了所述的命令发给哪个命令转接器;(f)对于每个命令转接器,根据所述状态信息,识别存贮在所述命令缓冲器中哪个命令发送给所述命令转接器;(g)发出所述的被识别的命令给所述的命令转接器。
24.权利要求23的方法,其中所述步骤(g)包括(g1)测定所述被识别命令的优先权;(g2)按优先权的次序发送所述被识别的命令。
25.权利要求24的方法,其特征在于所述命令缓冲器所存贮的每个命令属于许多命令优先权组中的一组,优先权组具有优先权的预测次序。所述步骤(g1)识别每个被识别的命令属于所述优先权组中的哪一组;所述步骤(g2)根据在一个命令优先权组中的资格发送所述的被识别的命令。
26.权利要求25的方法,其特征在于步骤(g)进一步包括(g3)存贮一个编码,它指示所述命令优先权组在可编程优先权寄存器中的优先权;且其中所述步骤(g1)根据存贮在所述可编程优先权寄存器中所述的编程,测定所述命令优先权组的所述的优先权。
27.权利要求24的方法,其特征在于步骤(g1)根据一个升优先权信号改变所述被识别命令的优先权。
28.权利要求20的方法,其特征在于进一步包括(e)在所述的命令缓冲器中存贮与所述命令有关的状态信息,所述的状态信息至少指示了所述命令发给哪个命令转接器;(f)对每个命令转接器,根据所述的状态信息,识别存贮在所述命令缓冲器中哪些命令发送给所述相对应的命令转接器;(g)将所述的被识别命令发送给所述的命令转接器;其中,所述步骤(b1)包括步骤(b11)测定所述的命令是否取决于命令的执行(该命令现在由所述的命令缓冲器存贮);所述的步骤(e)包括步骤(e1)向所述的命令缓冲器输出从属信息作为所述状态信息的部分,它与所述的命令相对应,如果所述的步骤(b11)测定所述的命令取决于现在存贮在所述命令缓冲器中的命令的执行,那么状态信息指示所述的从属;所述步骤(g)包括步骤(g1)在发出所述命令之前,检查与所述命令相对应的所述状态信息,以及(g2)如果所述状态信息指示所述的从属,则禁止发出所述的命令。
29.权利要求19的方法,其特征进一步包括(e)在所述的命令源和至少一个命令转接器之间跟踪所述命令的处理。
30.权利要求19的方法,其特征进一步包括(e)在所述的命令缓冲器中为存贮在所述数据缓冲器中的所述数据存贮所有权信息。
31.权利要求30的方法,其特征在于所述步骤(e)存贮与存贮在所述数据缓冲器中每条高速缓冲贮存器的线相应的存贮器映象相干信息。
32.权利要求31的方法,其特征在于所述的存贮器相干映象信息是MESI状态信息,其中MESI表示修正的、唯一的、分配的和无效的。
33.权利要求32的方法,其特征进一步包括(f)根据从命令转接器接收来的信号重新修正所述的MESI状态信息。
34.权利要求23的方法,其特征进一步包括(h)将一个命令源输出的命令在所述的命令正被存贮在所述的命令缓冲器之中以前,直接传递到所述相应的命令转接器中去。
全文摘要
本发明为处理命令和与之相关联的数据的方法和装置,包括:一个数据缓冲器和一个命令目录表。该命令目录表从至少一个命令源接收和存储命令,并将数据缓冲器的未使用部分自由地分配给命令。数据缓冲器在数据缓冲器中所分配的部分存贮与命令有关的数据。根据由命令目录表存贮的与每个命令有关的状态信息,在命令目录表中与每个命令转接器对应的路径选择逻辑识别在该命令缓冲器中存贮的哪个命令发送给命令转接器并发出被识别的命令给命令转接器。
文档编号G06F12/08GK1188965SQ97123019
公开日1998年7月29日 申请日期1997年11月27日 优先权日1996年12月9日
发明者唐纳尔德·李·弗里克森, 法那兹·墨那斯-托斯, 皮德·詹姆斯·保尔森, 约翰·戴维德·里施, 里勒·埃文·格罗斯巴切 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1