存储器控制器和存储器控制系统 本发明涉及到一种用于多处理器系统的存储器控制器和存储器控制方法,特别涉及到一种使利用存储体方法存储的数据同步的存储器控制器和存储器控制方法。
多处理器系统已经被提供有用于管理和控制存储体类型(memory-bank-type)共享主存储器和以无序(out-of-order)方式或弱序(weak-order)方式执行访问指令(包括数据和地址)的存储器控制器。
存储器控制器不仅具有可以单独控制与单独存储器区域相对应的每个体存储器的功能,而且,具有暂时利用强序同步置换弱序同步的功能。与这种同步操作相关的方法被近似地做如下划分。
第一种方法如下:具有先入-先出(FIFO)功能的一个缓冲存储器被用于地址操作,并按照已经被接受的地址操作顺序执行由处理器发出的访问指令。在这种方法中,假设系统具有一个与数据总线相互隔离的地址总线。这里,地址操作意味着地址总线的操作。
第二种方法如下:具有一个被称做记分板的管理表。该管理表被用于以存储器地单独控制范围为单位(存储体单位)管理操作的进程(访问指令的运行状态)。利用这种方法,一旦同步操作已经被执行,那么,在以前的操作没有完成之前拒绝接受地址操作。即,通过再试同步操作来保证同步处理
由于第二种方法与第一种方法相比缩短了在写入操作(存储器写入访问操作)之后执行的读出操作(读出访问操作)的等待时间和增加了存储器的使用效率,所以,在实际使用中它改善了系统的整体性能。
但是,这些方法存在有下述问题。第一种方法通过使用具有用于地址操作的FIFO功能的缓冲存储器保证了同步操作的执行。但是,在该系统中,数据操作(数据总线的操作)并不总是按照地址操作的顺序执行。因此,数据操作的不完整性将会引起一种状态,在该状态下,用于地址操作的整个FIFO缓冲器都将被使用,这样就可能出现拒绝接受地址操作的状态(再试)。另外,第一种方法的缺点在于当用于在前写入操作的数据传输没有完成之前,不能够执行后续的读出操作,从而导致了读出操作过程中的大量等待时间。
第二种方法通过使用一个管理表管理运行状态,这样,它能够以无序方式或弱序方式执行存储器访问操作。但是,一旦这个操作被同步,则在前操作完成之前不能执行后续的操作(或满足同步条件的操作),从而导致在同步处理过程中增加系统的额外开销。
本发明的一个目的就是要提供一种存储器控制器和存储器控制方法,它们能够在多处理器系统中的存储器访问指令同步过程中减少所述的额外开销。本发明涉及到多处理器系统所特有存储器控制器,该系统具有一个管理表,用于管理存储器访问操作的进程(访问指令的运行状态),以便在执行具有高级优先权的同步操作过程中减少额外开销。
管理表除了保持所接收访问指令的多个操作码和地址以外,还保持有根据同步操作的接收所设置的多个同步标记。当从处理器接收一个访问操作时,存储器控制器在管理表中设置操作码和地址,并复位同步标记。在存储器控制器接收同步操作时,它设置一个同步标记。在同步操作执行完成之后,它将该同步标记复位。利用这种方法,看上去可以接收后续的操作,这避免了这样一个部件(unit),该部件通过再试一个请求来请求所述操作,从而减少了系统的额外开销。
另外,本发明还被由于到一个存储控制器上,该存储器控制器用于控制诸如存储体系统的具有多个单独可控存储器区域的存储器。被提供有一个用于每个存储器区域(每个体存储器)的管理表,该表示出了每个操作进程的状态,并保持有用于每个操作的可执行条件。另外,该管理表还保持有全部用于根据在执行同步操作之后所执行的这些操作识别在执行该同步操作之前执行的操作的标记。该管理表使得可以进行一个检查,以看一看在执行同步操作之前的操作是否已经完成,并且,即使是在同步操作还没有完成的情况下也可以接收后续的操作,借此以避免通过再试一个请求来请求一个操作的部件。当在当前同步操作被完成之前产生一个后续操作时,将拒绝接收用于后续同步操作的请求,然后请求将被再试。
本发明的附加的目的和优点将在下面的描述中体现出来,其中的一部分在本描述中将很明显,其余的可以在实践中学习到。本发明的目的和优点可以借助于在所附权利要求中指出的手段和结合来实现和获得。
插入并构成本说明书一部分的附图和上面给出的一般描述一起示出了本发明当前最佳实施例,最佳实施例的详细描述将在下面给出,用于解释本发明的原理。
图1的方框图示出了根据本发明的一个计算机系统;
图2是一个概念性的视图,用于解释根据本发明第一实施例的记分板的结构;
图3的方框图示出了本发明第一实施例的存储器控制器;
图4的流程图用于解释第一实施例的操作;
图5A到5B的流程图用于解释在第一实施例中当接收了一个存储器访问指令时存储器控制器的操作;
图6的流程图用于解释与在第一实施例的存储体执行单元处发出一个指令相关的确定处理;
图7A到7C示出了在第一实施例中两个记分板和同步完成表的例子;
图8A到8C示出了在第一实施例中两个记分板和同步完成表的例子;
图9A到9C示出了在第一实施例中两个记分板和同步完成表的例子;
图10A到10C示出了在第一实施例中两个记分板和同步完成表的例子;
图11A到11C示出了在第一实施例中两个记分板和同步完成表的例子;
图12A到12C示出了在第一实施例中两个记分板和同步完成表的例子;
图13A到13C示出了在第一实施例中两个记分板和同步完成表的例子;
图14A到14C示出了在第一实施例中两个记分板和同步完成表的例子;
图15A到15C示出了在第一实施例中两个记分板和同步完成表的例子;
图16A到16C示出了在第一实施例中两个记分板和同步完成表的例子;
图17的概念性视图用于解释根据本发明第二实施例的一个记分板的结构;
图18的流程图用于确定在第二实施例中与在执行存储体单元处发出的指令相关的处理;
图19A和19B示出了在第二实施例中记分板和同步完成表的例子;
图20A和20B示出了在第二实施例中记分板和同步完成表的例子;
图21A和21B示出了在第二实施例中记分板和同步完成表的例子;
图22A和22B示出了在第二实施例中记分板和同步完成表的例子;
图23A和23B示出了在第二实施例中记分板和同步完成表的例子;
图24的概念性视图用于解释根据本发明第三实施例的记分板的结构;
图25的流程图示出了在第三实施例中当接收到一个存储器访问指令时存储器控制器的操作;
图26的流程图示出了与在第三实施例的执行存储体单元处发出的指令相关的确定处理;
图27A和27B示出了在第三实施例中记分表和同步完成表的例子;
图28A和28B示出了在第三实施例中记分表和同步完成表的例子;
图29A和29B示出了在第三实施例中记分表和同步完成表的例子;
图30A和30B示出了在第三实施例中记分表和同步完成表的例子;
图31A和31B示出了在第三实施例中记分表和同步完成表的例子;
图32A和32B示出了在第三实施例中记分表和同步完成表的例子;
图33A和33B示出了在第三实施例中记分表和同步完成表的例子;
图34的概念性视图用于解释根据本发明第四实施例的一个记分板的结构;
图35的流程图示出了与在第四实施例的执行存储体单元处发出的指令相关的确定处理;
图36A和36B示出了在第四实施例中记分板和同步完成表的例子;
图37A和37B示出了在第四实施例中记分板和同步完成表的例子;
图38A和38B示出了在第四实施例中记分板和同步完成表的例子;
图39A和39B示出了在第四实施例中记分板和同步完成表的例子;
图40A和40B示出了在第四实施例中记分板和同步完成表的例子;
图41A和41B示出了在第四实施例中记分板和同步完成表的例子;
图42A和42B示出了在第四实施例中记分板和同步完成表的例子;
图43的概念性视图用于解释根据本发明第五实施例的一个记分板的结构;
图44的流程图示出了在第五实施例中当接收到存储器访问指令时存储器控制器的操作;
图45的流程图示出了与在第五实施例的执行存储体单元处发出的一个指令相关的确定处理;
图46示出了在第五实施例中记分板和同步完成表的例子;
图47示出了在第五实施例中记分板和同步完成表的例子;
图48示出了在第五实施例中记分板和同步完成表的例子;
图49示出了在第五实施例中记分板和同步完成表的例子;
图50示出了在第五实施例中记分板和同步完成表的例子;
图51示出了在第五实施例中记分板和同步完成表的例子;
图52示出了在第五实施例中记分板和同步完成表的例子;
图53示出了在第五实施例中记分板和同步完成表的例子;
图54的概念性视图用于解释根据本发明第六实施例的一个记分板的结构;
图55的概念性视图用于解释根据本发明第七实施例的一个记分板的结构;
图56的概念性视图用于解释根据本发明第八实施例的一个记分板的结构;
图57的概念性视图用于解释根据本发明第九实施例的一个记分板的结构;和
图58的概念性视图用于解释根据本发明第十实施例的一个记分板的结构。
下面参照附图对本发明的实施例进行解释。图1的方框图示出了根据本发明的一个计算机系统。图2的概念性视图用于解释与本发明第一实施例相一致的一个记分板的结构。图3的方框图示出了第一实施例的存储器控制器。图4的流程图用于解释第一实施例的操作。
(系统结构)
如图所示,本发明的系统是一个具有多个处理器的多处理器系统,具有一个作为共享主存储器并具有由多个体存储器BM0到BM3构成的存储体结构的存储器。
每个处理器1都经过连接到处理器总线2的总线接口单元3向存储器控制器10发出一个访问指令。在处理器总线2中,数据总线2A和地址总线2B相互隔离。连接到处理器总线2的是一个I/O控制器4,该I/O控制器4连接到诸如硬盘单元(HDD)5和LAN接口6的I/O装置上。
当接收到一个来自处理器1的存储器访问指令时,总线接口单元3将这个指令传输给存储器控制器10。存储器控制器10具有一个用于管理与体存储器BM0到BM3中每一个相关的访问指令相对应的访问操作的记分板(管理表)11和一个同步完成表12。存储器控制器具有4-路径(way)交错功能,用于控制作为在单独控制范围内存储器区域的体存储器BM0到BM3。
(记分板的结构)
存储器控制器10具有一个用做管理表的记分板11和一个同步完成表12,如图2所示。当假设用做单独控制区域单元的存储器区域是体存储器时,为多个体存储器BM0到BM3中的每个组提供有记分板11。可能有这种情况,即分别使用存储器区域0到3代替体存储器BM0到BM3。
记分板11是一个表,它不仅示出了操作进程的状态(访问指令的运行状态),而且示出了与每个操作相关的可执行条件。记分板11具有全部用于根据在执行同步操作之后所执行的这些操作识别在执行该同步操作之前执行的操作的标记。同步完成表12是一个表,(SYNC完成),它示出了在0到3的每个存储区域中的同步操作是否已经完成。
当前实施例的记分板11由与4个单独存储区域0到4相对应的记分板100、110、120、和130组成。每一个记分板都具有入口号(No)102、操作码103、地址104、用于表示操作完成的完成标记105、用于表示操作可以开始的标记106、用于表示入口有效的有效标记107和同步标记(SYNC标记)101。
入口号102被用于识别在记分板内的多个入口。操作码103是一个入口,用于保持处理器1所请求的操作类型(例如,“读”意味着读出操作和“写”意味着写入操作)。地址104是一个入口,用于保持将要被访问的存储器地址。完成标记105表示操作的发出已经完成。在有效标记中,当相应的入口有效时,设置标记V(有效的),当相应的入口无效时,设置标记I(无效的)。换言之,与标记V相对应的入口将被发出,而与标记I相对应的入口是不被发出的空入口。
被提供给每个记分板的体执行单元(由在存储区域0中的标号108表示)不仅产生根据相关记分板选择的入口地址和由包括诸如RAS和CAS在内的体存储器和存储器控制器信号构成的DRAM(动态RAM)地址、而且还执行包括发出入口(将在下面描述)在内的处理。分别在记分板100、110、120和130上提供的体执行单元108、118、128和138被连接到所述同步完成表上。
同步标记(SYNC标记)通常被设置(复位)成“0”。在同步完成表12中,同步完成标记(SYNC完成)被提供给单独存储器区域0到3中的每一个,并通常被设置成“0”,它意味着同步完成。
当从处理器1中接收一个同步操作时,存储器控制器10将与在记分板100、110、120和130内进入的所有有效入口相关的同步标记设置为“1”,将其余与无效入口相关的同步标记设置为“0”。在这个时间点处,在同步完成表12中与具有无效入口的存储器区域相关的同步完成标记被设置为“1”,同时,与具有无效入口(即:没有操作在等待执行)的存储器区域相关的同步完成标记被维持在为“0”。
当接收到一个不同于同步操作的的后续操作时,在记分板内的同步标记被设置为“0”,借此,以根据在同步操作之前的一个操作来识别所接收的操作。当其同步标记被设置为“1”的最后一个操作从相应的存储区中消失时,在同步完成表12中的同步完成标记被设置为“0”。只要在同步完成表12中用于每个存储器区域的至少一个同步完成标记处于“1”状态,记分板就只允许同步标记处于“1”状态的操作被执行。
(第一实施例)
下面,将参照图3到图4简要描述第一实施例的操作。
如上所述,该实施例的存储器控制器10通过4-路径交错功能控制与4个存储器区域0到3相对应的体存储器BM0到BM3。如图3所示的存储器控制器10包括执行单元108、118、128、138和记分板100、110、120、130,它们被分别单独提供给4个体存储器BM0到BM3。在记分板100、110、120、130中,有效标记由“Val”表示,发出使能标记由“Fn”表示,同步标记由“SYNC”表示。
如图4所示,在从处理器总线2接收了一个存储器访问指令以后,总线接口单元3将该指令传输给存储器控制器10(步骤S1)。当接收到一个到存储器区域0到3中一个的存储器访问指令时,存储器控制器10在相关记分板内设置入口(步骤S2)。
如图3所示,在该实施例中,存储器地址被以4个字节为单位分成体存储器BM0到BM3。特别是,存储器区域以4个字节为单位被分配给体存储器BM0到BM3,并从在每个地址LSB一侧上的4个字节(0、4、8、C)开始。为方便起见,可以在每个记分板内输入的入口数被假设为4。
控制器10在访问操作进入记分板时将每个记分板的同步标记设置为“0”(步骤S3)。此时,当接收一个同步操作时,在那个时间用于所有有效入口的同步标记被设置为“1”(步骤S4和S5)。特别是,同步标记为“1”的入口是在发出同步操作之前设置的入口,这意味着所述入口是将要被早于标记被设置成“0”的入口加以执行的入口。
图3示出了一种情况,在这种情况下,利用在记分板100的用于存储体BM0的两个有效入口接收同步操作(一个有效标记Val被设置成“V”的入口),在记分板110上的一个有效入口用于存储体BM1,在记分板120上没有有效人口被用于存储体BM2,在记分板130上没有有效入口被用于BM3。特别是,在记分板100和110内,其有效标记Val被设置为“V”的同步标记(SYNC)从“0”变到“1”,并且,其有效位Val是“I”的入口保持为“0”(保持改变)。
在同一个时间,对于与在同步完成表12中的各个存储器区域0至3相对应的同步完成标记(SYNC 完成)来讲,与具有有效入口的存储器区域0(存储体BM0)和存储器区域1(存储体BM1)相对应的值从“0”变到“1”,同时,与不具有有效入口的存储器区域2(存储体BM2)和存储器区域3(存储体BM3)相对应的值在“0”保持不变。
另外,在记分板100、110中,在用于存储体BM0的入口号No 1和在用于存储体BM1的入口号No 0处,发出使能标记En被使能或可被执行,从而允许在相应地址上的操作(读出操作)被执行(步骤S6和S7)。
在所有执行单元E0、E1的访问操作被完成之后,控制器10将使能标记En和同步标记复位成“No”或“0”(步骤S8和S9)。此时,由于同步标记已经被设置成“1”的入口在与存储体BM1相对应的记分板110上没有出现,所以,在同步完成表12内相应的同步完成标记也被复位到“0”。
当请求后续的存储器访问操作时,一个为“0”的同步标记被输入给所述记分板,以用于与访问指令相对应的存储器区域。即根据在同步操作之前其同步标记被设置成“1”的同步操作识别一个新的后续操作。另外,当在图3所示状态下请求第二个同步操作时,由于具有一个其同步完成标记在同步完成表12中不是“0”的入口(存储器区域0,1),所以,第二个同步操作将被拒绝,和所述同步操作被再试。如果所有的同步标记都被设置成“0”,这就意味着同步操作已经完成。因此,在这种情况下,同步完成表12可以被省略。
下面,将详细解释本发明第一实施例的操作。
首先,参照图5解释在第一实施例中存储器访问指令已经由CPU1发出的情况下的处理。
由CPU1发出的存储器访问指令被经过总线2传送给总线接口单元3。总线接口单元3将所接收的存储器访问指令传送给存储器控制器10(步骤S11)
当所接收的存储器访问指令是一个除同步指令以外的存储器访问指令时,存储器控制器10根据所接收的存储器访问指令的地址从记分板100、110、120和130中选择一个相应的记分板。另外,存储器控制器110从在被选择记分板上的所有入口中选择一个其有效标记被设置为“I”的入口(一个空的入口)。然后,存储器控制器10将被传输的存储器访问指令输入给所选择的入口(步骤S12)。
当输入存储器访问指令时,存储器控制器10不仅输入存储器访问指令的操作码和地址,并且将用于输入该指令的入口的有效标记设置成“V”,和将同步标记复位到“0”。
当从总线接口单元3接收一个同步指令时,存储器控制器10将在被选择记分板内输入的有效标记被设置成“V”的所有入口的同步标记设置成“1”。
另外,在体执行单元108、118、128和38的控制下,存储器控制器10从记分板中选择一个入口并在该入口中发出指令。
当在步骤S12输入的入口(存储器访问指令)已经被选择且该入口处的指令已经被发出(步骤S13,YES)时,用于被选择入口的使能标记被设置成“NO”(步骤S14)。利用总线接口单元3、存储器控制器10和体执行单元执行所发出的存储器访问指令。
在存储器访问指令的处理被完成之后,存储器控制器10将存储在所述记分板上用于执行存储器访问指令的入口中的有效标记设置成“I”,并将同步标记设置成“0”(步骤S15)。借助于这些处理,其中已经输入了被执行存储器访问指令的入口被设置成自由的。
通过上述处理,执行由CPU1传送的存储器访问指令。
下面,参照附图6描述在体执行单元108、118、128和138的每一个处发出指令给相应的记分板100、110、120和130的处理。
考虑在记分板上已经输入了一个将要发出所述存储器访问指令的入口,体执行单元首先确定用于相关入口的有效标记是否被设置成“I”(步骤S21)。当用于相关入口的有效标记被设置成“I”时,由于所述相关入口是无效的,所以,体执行单元确定:在该相关入口内的存储器访问指令不能被发出(步骤S22)。
当用于相关若入口的有效标记处于“V”状态(步骤S21,NO)时,体执行单元确定用于该相关入口的使能标记是否处于“NO”状态(步骤S23)。当用于该相关入口的使能标记是处于“NO”状态时,体执行单元确定是在相关入口内的指令已经被发出还是由于不满足发出条件而没有在该相关入口内发出存储器访问指令(步骤S24)。
当用于相关入口的使能标记处于“YES”时(步骤S23,NO),体执行单元确定项“SYNC COMPLETION”是否具有用于在同步完成表12中所有区域的多个“0”(步骤S25)。由于项“SYNC COMPLETION”具有用于所有区域的多个“0”的状态意味着没有从CPU1中发出同步指令,所以,体执行单元确定在相关入口中的存储器访问指令能被发出(步骤S26)。
当项“SYNC COMPLETION”具有用于在同步完成表中多个区域内任意一个区域的一个“1”(步骤S25,No)时,体执行单元确定用于所述相关入口的同步标记是否处于“0”状态(步骤S27)。当用于该相关入口的同步标记是处于“0”状态时,由于在相关入口内的指令是在存储器控制器10已经接收了一个同步指令之后在记分板上输入的一个存储器访问指令,所以,体执行单元不能发出存储器访问指令(步骤S28)。
当同步标记处于“1”状态(步骤27 NO)时,由于在该相关入口内的存储器访问指令是在同步指令被传送之前输入的存储器访问指令,所以,体执行单元确定在该相关入口内的存储器访问指令可以被发出(步骤S29)。在记分板的所有入口上执行了上述确定处理之后,体执行单元从一个或多个可发出入口中选择一个入口并执行相关入口的发出处理。
下面解释当CPU1以升序传送下述指令时在第一实施例中存储器控制器10的处理:
(1) 写入 12380
(2) 读出 246824
(3) 读出 67830
(4) SYNC
(5) 读出 abc70
图7A到16C示出了在记分板110内输入的用于区域1的数据项,在记分板100内输入的用于区域0的数据项和同步完成表12。
在图7A到16C中,包括在每个入口中的指令“ISSUE ENABLE/DISABLE”在内的项保持表示在图6中体执行单元确定结果的信息,如下:(a)对应于图6在步骤S22处的确定结果;(b)对应于在步骤S24处的确定结果;(x)对应于在步骤S26处的确定结果;(c)对应于在步骤S28处的确定结果;和(y)对应于在步骤S29处的确定结果。这使得容易理解操作部件。但是,实际上所述项不仅仅保持刚才指出的一个指令的“ISSUE ENABLE/DISABLE”信息。
图7A到7C示出了记分板100、110和同步完成表12的原始状态。因此,在记分板100和110内的所有入口都没有被使用(空)。在记分板100和110上项“ISSUE ENABLE/DISABLE”下的所有入口中,已经输入了表示ISSUE DISABLE的数据。这对应于(a),它意味着当体执行单元108和118执行图6的操作时,多个入口是无效的。随后,也没有可以发出的输入。
图8A到8C示出了在已经从总线接口单元3传送了指令(1)“Write 12380”情况下的记分板100、110和同步完成表12。存储器控制器10从与区域0相对应的记分板100中选择空入口No.0。区域0被分配给一个预定地址,该地址包括由指令“Write 12380”指定的地址。存储器控制器10将这个指令输入给一个被选择的入口。记分板110没有可发出的输入,同时,在记分板100上的入口No.0可以被发出。
图9A到9C示出了此后在存储器控制器10接收了指令(2)“Read 246824”情况下的记分板100、110和同步完成表12。存储器控制器10从用于与指令“Read 246824”的地址相对应的区域1的记分板110中选择空入口No.0,并在该入口中输入这个指令。在记分板100和110每一个上的入口No.0可以被发出。
图10A到10C示出了此后在存储器控制器10已经接收了指令(3)“Read 67830”情况下的记分板100、110和同步完成表12。存储器控制器10从用于与指令“Read 67830”的地址相对应的区域0的记分板100中选择空入口No.1并将这个指令输入给该入口。在记分板100上的入口No.0和入口No.1以及在记分板110上的入口No.0可以被发出。
图11A到11C示出了体执行单元108从在记分板100上可发出入口中选择入口No.0和发出该输入情况下的记分板100、110和同步完成表12。在记分板100上项“ISSUE ENABLE/DISABLE”下的入口No.0中,输入表示“ISSUE DISABLE”的信息。这对应于(b),它意味着指令已经被发出。在记分板100和110中每一个上的入口No.0可以被发出。
图12A和12C示出了在存储器控制器10从总线接口单元3中接收了同步指令(4)“SYNC”情况下的记分板100、110和同步完成表12。在项“SYNC”下记分板100上的入口No.0和入口No.1以及记分板110的入口No.0中,设置一个“1”。在项“ISSUE ENABLE/DISABLE”下记分板100上的入口No.0和在记分板110上的入口No.0中,输入表示“ISSUE ENABLE”的信息。这对应于(y),它意味着所述指令是一个在同步指令输入之前输入的的指令。与在同步完成表12中的区域0和区域1相对应的入口中,也设置一个“1”。
图13A到13C示出了在存储器控制器10接收了指令(5)“Read abcd70”情况下的记分板100、110和同步完成表12。存储器控制器10从用于与指令“Read abcd70”的地址相对应的区域的记分板100中选择空入口No.2并在该入口中输入这个指令。只有在记分板100上的入口No.1可以被发出。
图14A到14C示出了在体执行单元108选择了在记分板100上的可发出入口No.1并发出该输入信号和体执行单元118选择了在记分板110上的入口No.0并发出该输入信号情况下的记分板100、110和同步完成表12。在项“En”下发出的每一个输入中,“YES”被改变成“NO”。
图15A到15C示出了在在记分板100上在入口No.1中的指令已经被完成情况下的记分板100、110和同步完成表12。在记分板100上项“Val”下的入口No.0和入口No.1中,“V”被变成“I”,在项“SYNC”下,这些入口被复位到“0”。与在同步完成表12中的区域0相对应的入口被复位到“0”
图16A到16C示出了在记分板110上入口No.0的指令已经被完成情况下的记分板100、110和同步完成表12。在记分板110上项Val下的入口No.0中,“V”被变成“I”,在项“SYNC”下,该入口被复位到“0”。与同步完成表12中区域1相对应的入口被复位到“0”。
上述处理使得存储器控制器10可以避免诸如在记分板100上的入口No.1(指令(3))之前或在接收同步指令(4)“SYNC”之前输入的记分板110上入口No.0(指令(2))之前执行在记分板100中输入的入口No.29(指令(5))的启动同步指令的处理被选择和发出。
(第二实施例)
如图17所示,本发明的第二实施例在于在同步完成表12中加入了用于同步条件的入口160。入口160是一个项,用于表示与来自同一个请求者(处理器)的请求相关的同步条件或与同一个地址相关的同步条件(这里,假定条件被用于同一个地址)。存储器控制器10其余的系统结构和构成与第一实施例相同。
上述结构实现了执行不满足同步条件的连续指令(连续操作)的功能并不会受同步操作的影响。在满足同步条件的操作中,禁止在同步操作之后执行的操作早于在同步操作之前执行的操作被执行。在不满足同步条件的操作中,执行一般的操作(无序处理或弱序处理)。当在所述同步完成之前有一个后续同步操作被请求时,将拒绝接收这个后续的同步操作且该同步操作被再试。
下面,结合附图17简要描述第二实施例。
第二实施例的特征在于在同步完成表12中加入了一个同步条件入口160。在入口160中,设置了同步条件。例如,同步条件可以是”until all of the write operations have been completed)(直到所有写入操作都被完成为止)或“until all of the read and write operation have been completed”(直到所有读出和写入操作都被完成为止)。
在第二实施例中,在规定不保证按照数据被写入同一个地址和从同一个地址读出的顺序执行的操作(不连续操作)和保证按照顺序执行的操作(连续操作)的系统中,假设了在同步条件、即“在针对同一个地址的写入和读出操作被完成之前禁止后续写入和读出操作”下的同步操作。
存储器控制器10在完全独立于其它操作的情况下以无序方式(无序处理)执行连续操作(存储器访问),直到同步操作被发出为止。当同步操作被发出时,在记分板中输入的所有有效入口的同步标记(SYNC标记)都被设置成“1”,与第一实施例相同。类似的,在与具有有效入口的记分板相对应的同步完成表12中的同步完成标记(SYNC完成)也被设置成“1”。
在图17的状态下,由于在存储器区域0内的记分板100和在存储器区域1内的记分板110具有有效入口,所以,在同步完成表12中的同步完成标记被设置成“1”。另外,由于在存储器区域2内的记分板120和在存储器区域3内的记分板130不具有有效入口,所以,相关的同步完成标记保持为“0”。
在存储器区域0和1内有效入口中的同步标记被设置成“1”,且在无效入口中的同步标记保持为“0”。在同一个时间,在与在同步完成表12中的同步条件相关的入口160中,输入如下的同步条件,即:“在针对同一个地址的所有读出和写入操作被完成之前禁止后续的读出和写入操作”。
在该同步条件下,当其同步标记被设置为“1”的入口具有相同的地址时,不发出后续的读出操作,而当该入口不具有相同的地址时发出后续的读出操作。在这种情况下,在与所述地址相应的记分板的同步操作被完成且其同步标记处于“1”状态的入口不在出现之后,一旦发出条件被满足,就可以发出在记分板上已经输入和将要输入的输入信号,而不必考虑在另一个记分板上的同步操作是否已经完成。即:在这种情况下,可以在与不是同步操作时相同的条件下执行存储器访问。
当利用第一实施例时,当在同步完成表12中的至少一个同步完成标记处于“1”状态(在同步处理期间)时,将拒绝接收第二个同步操作并再试该同步操作。当所有的同步标记多处于“0”状态时,这意味着所有的同步操作都已经被完成。因此可以省略同步完成表12。
下面,进一步详细解释第二实施例的操作。
在第二实施例中,在CPU已经发出存储器访问指令的情况下,其处理与在图17所示第一实施例的处理类似,因此,第二实施例的详细解释予以省略。
下面,参照图18描述在所提供的体执行单元108、118、128和138的每一个处分别向记分板100、110、120和130发出指令的处理。
考虑到其中在记分板上已经输入了将被发出的存储器访问指令的入口,体执行单元首先确定用于相关入口的有效标记是否处于“I”状态(步骤S31)。当用于相关入口的有效标记处于“I”状态时,体执行单元确定:由于相关入口是无效的,所以,在相关入口中的存储器访问指令不能被发出(步骤S32)。
当用于相关入口的有效标记处于“V”状态(步骤S31 NO)时,体执行单元确定用于相关入口的发出标记是否处于“NO”状态(步骤S33)。当用于相关入口的发出标记处于“NO”状态时,体执行单元确定已经发出了在相关入口中的指令,而没有发出在相关入口中的存储器访问指令(步骤S34)。
当用于相关入口的发出标记处于“YES”状态(步骤S33,NO)时,体执行单元确定项“SYNC COMPLETION”是否具有用于在同步完成表12中所有区域的多个“0”(步骤S35)。由于项“SYNC COMPLETION”具有用于所有区域的多个“0”的状态意味着没有从CPU1传送同步指令,所以,体执行单元确定在相关入口中的存储器访问指令可以被发出(步骤S36)。
当项“SYNC COMPLETION”只具有一个用于在同步完成表12中任意一个区域的1(步骤S35,NO)时,体执行单元确定该入口是否满足同步条件(步骤S37)。当该入口不满足在同步完成表12中的同步条件时,体执行单元确定同步指令处理是不需要的,并且,在相关入口中的存储器访问指令可以被执行(步骤S38)。
当该入口满足同步条件(步骤S37,YES)时,体执行单元确定用于相关入口的同步标记是否处于“0”状态(步骤S39)。当用于相关入口的同步标记处于“0”状态时,由于在相关入口中的指令是在存储器控制器10已经接收了同步指令以后在记分板内输入的存储器访问指令,所以,体执行单元不会发出存储器访问指令(步骤S40)。
当所述同步标记处于“1”状态(步骤S39,NO)时,由于在相关入口中输入的存储器访问指令是在同步指令被传送之前输入的一个存储器访问指令,所以,体执行单元确定在相关入口中的存储器访问指令能够被执行(步骤S41)。
下面解释在第二实施例中存储器控制器10在CPU1以升序传送下述指令时的操作:
(1)Read 12380
(2)SYNC
(3)Write 67830
(4)Write 12380
图19A到23B示出了在提供给区域0的记分板100内输入的数据项和同步完成表12。
这里,假设“在所有针对同一个地址的读出和写入被完成之前禁止后续的读出和写入”的条件被确定为同步条件。这意味着当在对同步指令进行处理期间在后续操作(同步标记为“0”)中SYNC指令(同步标记为“1”)之前存在有针对同一个地址的指令时,指令不能够被发出,同时,当这样一个指令不存在时,所述指令可以被发出。
在图19A到23B中,包括表示在每个入口中的指令“ISSUE ENABLE/DISABLE”在内的项保持在图18中体执行单元如下确定结果的信息:
(a)对应于在图18的步骤S32处的确定结果;(b)对应于在步骤S34处的确定结果;(x)对应于在步骤S36处的确定结果;(c)对应于在步骤S40处的确定结果;和,(y)对应于在步骤S41处的确定结果。这使得理解操作更加容易。但是实际上该项只需要保持刚才指出的一个指令的“ISSUE ENABLE/DISABLE”信息。
图19A和19B示出了记分板100和同步完成表12的原始状态。因此,在记分板100中的所有入口都没有被使用(空)。在记分板100上的所有入口都处于项“ISSUE ENABLE/DISABLE”下的情况下,输入表示ISSUE DISABLE的数据。这对应于(a),它意味着当体执行单元108执行图18所示的处理时,所述入口是无效的。这样,没有可以被发出的入口。
图20A和20B示出了在从总线接口单元3传送指令(1)“Read 12380”情况下的记分板100和同步完成表12。这里,存储器控制器10从用于与指令“Read 12380”的地址相对应的区域0的记分板100中选择空入口No.0,并在该入口中输入该指令。在记分板100上的入口No.0可以被发出。
图21A和21B示出了在存储器控制器10接收了同步指令(2)“SYNC”情况下的记分板100和同步完成表12。存储器控制器10将在记分板100上的有效入口(项“Val”下的“V”)中的同步标记设置成“1”。存储器控制器10还设置在与区域0对应的入口中的同步标记,即:同步标记从“0”变换成“1”。利用体执行单元108可以发出入口No.0。
图22A和22B示出了在存储器控制器10接收了指令(3)“Write 67380”情况下的记分板100和同步完成表12。存储器控制器10从对应于区域0的记分板100中选择空入口No.1。区域0被指定有一个预定的地址,该地址包括由指令“Write 67380”指定的地址。存储器控制器10在所选择的入口中输入该指令。在记分板100上的入口No.0和入口No.1能够被发出。
图23A和23B示出了在存储器控制器10接收了指令(4)“Write 12380”情况下的记分板100和同步完成表12。存储器控制器10从用于与指令“Write12380”的地址相对应的区域0的记分板100中选择空入口No.2,并在该入口中输入该指令。在记分板100上只有入口No.0和入口No.1能够被发出。其原因在于所输入的一个指令(4),即一个写入指令与已输入的指令1相同一个地址相关,所以,写入指令满足同步条件,因而,避免了指令(4)被发出。
(第三实施例)
本发明的第三实施例是这样一个系统,它能够同时实现多个同步指令的处理功能并包括一个存储器控制器10,该存储器控制器10具有多个被提供有多级同步标记(SYNC标记)的记分板和一个被提供有多级同步完成标记(SYNC完成)的同步完成表。在所有的同步级被使用之前,不对后续的同步操作进行再试。
在第三实施例中,以执行同步操作的顺序执行同步处理。特别是,在接收了同步操作A、B和C的情况下,它们以下述顺序被执行;在同步操作A之前接收的操作,在同步操作A和B之间接收的操作,在同步操作B和C之间接收的操作,和在同步操作C之后接收的操作。为了实现这个功能,在同步完成表12中提供了表示在前同步操作的标记。例如,在同步完成表12中紧靠在B之前的在前同步操作相对于A和C被标记为B。对于A,设置了一个“Null”,用于表示没有在前操作。当A被完成时,B的在前同步操作被给出一个“Null”。类似地,当在前操作被完成时,该入口的在前同步操作被给出一个“Null”,借此以实现上述的功能。
下面,借助于图24简要描述本发明的第三实施例。
这里假设:用于每个入口的同步标记具有4级0到3,在同步完成表12中用于每个入口(对应于存储器区域0到3中的每一个)的同步完成标记具有4级。同步(SYNC)读出指针161指出哪一级正在被执行。同步写入指针162指出一个同步级,这是在由同步读出指针指出的级被执行之后执行的。
由于同步操作是以接收的顺序被处理的,所以,指针161和162是以与一般FIFO缓冲器相同的方式被控制的。每个记分板仅发出下述的操作,即:它们的与由读出指针161规定的同步操作对应的同步标记处于“1”状态。当在所有的存储体中由同步读出指针161规定的级的入口没有出现时,指针加1。
当在同步完成表12中所有的同步完成标记都处于“0”状态时,所有的同步操作已经被完成,且在所有的记分板100、110、120和130中的所有同步标记都处于“0”状态。因此,根据在其中没有同步被使用的情况下所得到的结果发出一个操作。当接收了一个同步操作时,如果至少有一个同步级未被使用,那么,被接收的同步操作不被进行再试并执行一般的同步处理。当所有的同步级都被使用时,将再试后续的同步操作。
图24示出了下述情况的操作,即:正在使用级3而没有使用级0、1和2,在存储器区域0、1和2中的记分板100、119和120具有有效入口而在存储器区域3中的记分板130没有有效入口。所有无效同步标记的级1和2都被设置成“0”且不被使用。至于级3,只有用于存储器区域0中入口No.0的同步标记处于“1”状态,且在其它存储器区域中的所有同步标记都处于“0”状态。这意味着,在发出级3同步操作之前的操作的情况下,只有在存储器区域0中的入口No.0未被使用。
在同步完成表12中的同步读出指针161指出目前正在处理级3。在由同步完成表12中同步写入指针162规定的区域0中输入一个新的同步操作。同步写入指针加1,表示级1。
另外,在用于个别记分板中有效入口的同步标记的级0中设置一个“1”。在图24中,在存储器区域0、1和2中的有效入口被设置成“1”。同时,在与存储器区域0、1和2相应的同步完成表中的级0中设置一个“1”,这意味着级0的同步还没有完成。此后,由于在图24中正在执行级3,所以,在发出用于在存储器区域0中入口No.0的操作之前不能发出操作。当已经发出了存储器区域0中的的入口No.0时,级3的同步已经完成,所以,在同步完成表12中存储器区域0中的级3被复位到“0”。由于同步读出指针161加1,表示级0,所以,按顺序发出级0的同步标记被设置成“1”的操作,借此,以允许级0的同步处理被执行。当每个级的所有同步标记都处于“0”状态时,这些级的同步操作都被完成。因此,同步完成表12可以省略。
下面,进一步详细地解释第三实施例的操作。
首先,参照图25解释在第三实施例中CPU1已经发出存储器访问指令情况下的处理。
由CPU1发出的存储器访问指令被经过总线2传送给总线接口单元3。总线接口单元3将所接收的存储器访问指令传送给存储器控制器10(步骤S51)
当所接收的存储器访问指令是一个除同步指令以外的存储器访问指令时,存储器控制器10根据所接收的存储器访问指令的地址从记分板100、110、120和130中选择一个相应的记分板。另外,存储器控制器10从在所选择记分板上的所有入口中选择一个其有效标记被设置成“1”(空入口)的入口。此后,存储器控制器10在所选择的入口中输入被传送的存储器访问指令(步骤S52)。
当输入存储器访问指令时,存储器控制器10不仅输入存储器访问指令的操作码和地址,而且,还将该有效标记设置成“V”,以用于其中已经输入所述指令的入口,并将同步标记0、1、2和3复位到“0”。
当从总线接口单元3中接收了同步指令时,存储器控制器10将与用于所有在所选择的记分板内输入的有效标记已经被设置成“V”的入口相关的同步标记n(n=0/1/2/3)设置成“1”。
另外,在体执行单元108、118、128和138的控制下,存储器控制器10从记分板中选择一个入口并在该入口中发出一个指令。
当在步骤S52输入的入口(存储器访问指令)被选择和在该入口中已经发出指令(步骤S53,YES)时,用于做选择入口的可发出标记被设置成“NO”(步骤S54)。利用总线接口单元3、存储器控制器10和体执行单元执行所发出的操作。
在存储器访问指令的处理完成之后,存储器控制器10将存储在用于在记分板中被执行存储器访问指令的入口内的有效标记设置成“1”,并将同步标记0、1、2和3复位到“0”(步骤S55)。借助于这个处理,其中已经输入了被执行存储器访问指令的入口被设置成自由的。
通过上述的处理,从CPU1传送的存储器访问指令被执行。
下面,参照图26叙述从体执行单元108、118、128和138中的每一个分别向相应的记分板00、110、120和130发出指令的处理。
考虑下述的接口,即:在这个接口中,在记分板上已经输入了将要被发出的存储器访问指令,体执行单元首先确定用于相关入口的有效标记是否处于“I”状态(步骤S61)。当用于相关入口的有效标记处于“1”状态时,由于相关入口是无效的,所以,体执行单元确定在相关入口中的存储器访问指令不能够被发出(步骤S62)。
当用于相关入口的有效标记处于“V”状态(步骤S61,NO)时,体执行单元确定用于相关入口的发出标记是否处于“NO”状态(步骤S63)。当用于相关入口的发出标记处于“NO”状态时,体执行单元确定在相关入口中的指令已经被发出或由于不满足发出条件而没有在相关入口中发出存储器访问指令(步骤S64)。
当用于相关入口的发出标记处于“YES”状态(步骤S63,NO)时,体执行单元确定由“SYNC读出指针指出的项“SYNC COMPLETION”是否具有用于在同步完成表12中所有区域的多个“0”(步骤S65)。由于项”SYNC COMPLETION”具有用于所有区域的多个“0”意味着还没有从CPU1中传送同步指令,所以,体执行单元确定在相关入口中的存储器访问指令可以被发出(步骤S66)。
当项“SYNC COMPLETION”仅具有用于同步完成表12中多个区域内任意一个区域的一个1(步骤S65,NO)时,体执行单元确定由SYNC读出指针指出的同步标记是否处于在用于相关入口的同步标记0到3中的一个“0”状态(步骤S67)。当由SYNC输出指针指出的同步标记处于“0”状态时,由于在相关入口中的指令是在存储器控制器10接收了一个同步指令之后在所述记分板中输入的一个存储器访问指令,所以,体执行单元不发出存储器访问指令(步骤S68)。
当SYNC由读出指针指出的同步标记处于“1”状态(步骤S68.NO)时,由于在相关入口中的指令是一个在同步指令被传送之前输入的存储器访问指令,所以,体执行单元确定在相关入口中的存储器访问指令能够被发出(步骤S69)。
下面解释在第三实施例中,当CPU1以升序传送下述指令时存储器控制器10的处理:
(1)Read 12380
(2)SYNC
(3)Write 67830
(4)SYNC
(5)Write abc80
图27A到33B示出了的在记分板100中输入给区域0的数据项和同步完成表12。
在图27A到33B中,在每个入口中指出“ISSUE ENABLE/DISABLE”的项保持表示在图26中体执行单元确定结果的信息,如下:(a)对应于在图26步骤S62处的确定结果;(b)对应于在步骤S64处的确定结果;(x)对应于在步骤S66处的确定结果;(c)对应于在步骤S68处的确定结果;(y)对应于在步骤S69处的确定结果。这使得理解操作更加容易。但是实际上,该项只需要保持指出一个指令“ISSUE ENABLE/DISABLE”的信息。
图27A和27B示出了记分板100和同步完成表12的原始状态。因此,在记分板100上的所有入口都未被使用(空)。在记分板100上处于项“ISSUEENABLE/DISABLE”下的所有入口中,输入表示“ISSUE DISABLE”的数据。这对应于(a),它意味着当体执行单元108执行图18的处理时,该入口是无效的。之后,没有能够被发出的入口。
图28A和28B示出了在已经从总线接口单元3传送了指令(1)“Raed 12380”情况下的记分板100和同步完成表12。这里,存储器控制器10从用于与指令“Read 12380”的地址相对应的区域0的记分板100中选择空入口No.0并在该入口中输入该指令。在记分板100上的入口No.0能够被发出。
图29A和29B示出了在存储器控制器10已经接收了同步指令(2)“SYNC”情况下的记分板100和同步完成表12。存储器控制器10将在记分板100有效入口(项“Val”下的“V”)中的同步标记0设置成“1”。在同步完成表12中的SYNC写入指针中设置一个“1”。在用于区域0的SYNC完成标记中设置一个“1”。体执行单元108能够发出的入口是入口No.0。
图30A和30B示出了此后在存储器控制器10接收了指令(3)“Write 67380”情况下的记分板100和同步完成表12。存储器控制器10从对应于被指定一个预定地址的区域0的记分板中选择空入口No.1。所述预定地址包括由指令“Write 67380”指定的地址。此后,存储器控制器10在所选择的入口中输入所述指令。在记分板100上的入口No.0和入口No.1能够被发出。
图31A和31B示出了在存储器控制器10已经接收了第二个同步指令(4)“SYNC”情况下的记分板100和同步完成表12。存储器控制器10将与在同步完成表12中的SYNC写入指针对应的同步标记1设置成在用于记分板100上有效入口(项“Val”下的“V”)的同步标记0到3中的一个“1”。此后,在同步完成表12中的SYNC写入指针中设置一个“2”。在用于区域0的SYNC完成标记中设置一个“1”。体执行单元可以发出的入口是入口No.0。
图32A和32B示出了在存储器控制器10已经接收了指令(5)“Write abcd80”情况下的记分板100和同步完成表12。存储器控制器10从对应于被指定一个预定地址的区域0的记分板100中选择一个空入口No.2。所述预定地址包括由指令“Write abcd80”指出的地址。存储器控制器10在所选择的入口中输入该指令。只有在记分板100上的入口No.0是能够被发出的。这是由于所输入的指令是以下述顺序,即:(1)、(3)和(5)发出的。
图33A和33B示出了在体执行单元108在入口No.0中发出一个指令情况下的记分板100和同步完成表12。在记分板100中,项“Val”被设置成“I”,项“En”被设置成“NO”,SYNC标记0和1被复位到“0”。这种设置使入口No.0成为自由的。再有,在同步完成表12中,SYNC读出指针被设置成“1”和用于区域0的SYNC completion标记被复位到“0”。
上述处理使得即使是在发出多于一个指令的情况下,也能够按照所述指令被发出的顺序进行处理。
(第四实施例)
如图34所示,本发明第四实施例是在存储器控制器10中提供了一个在其中为每级都能够设置单独的同步条件的同步完成表和一个被提供有多级同步完成标记(SYNC完成)的同步完成表,所述的存储器控制器10具有被提供有多级同步标记(SYNC标记)的记分板。第四实施例以无序处理方式执行同步处理的完成,借此,实现减少同步处理额外开销的功能。在所有同步级被使用之前,后续同步操作不能再试。
换言之,第四实施例是将多级同步操作加到第三实施例上。利用这种结构,在不同同步操作的情况下,执行与第二实施例相同的操作,并且,在前的同步操作被给出一个“Nu ll”。在相同同步操作的情况下(例如,由同一个处理器执行的同步处理或针对相同地址执行的同步处理),设定在前的同步操作并执行与第三实施例相同的操作。因此,在独立同步条件的情况下,以无序方式执行同步操作,从而导致同步处理额外开销的减少。
下面,参照附图34简要描述第四实施例。
如图34所示,第四实施例具有一个被提供有同步条件表163的同步完成表12,所述同步条件表163指出用于同步级0到3中每一级的同步条件(在这种情况下,指出同一个地址)。这使得单独的同步条件可以被单独地执行。
利用第四实施例,当同步条件是从同一个地址读出和向同一个地址写入时,同步条件对其它存储器区域没有任何作用。例如,在从和向存储器区域0的一个地址(例如,地址100)读出和写入数据的情况下,同步操作被发出,存储器区域1、2和3可以在和没有同步条件时相同的状态下进行操作。在这种情况下,当发出针对存储器区域2中地址(例如,地址1008)的一个同步操作时,它可以独立于在前发出给存储器区域0的同步操作而独立地进行处理。
除了将同步条件加到各个级上以外,该实施例的操作与第三实施例相同。在图34的状态下,当同步条件被设置给同步条件0和3时,指出相同地址的SA被用做同步条件。由于存储器区域3不满足同步条件,所以,可以执行此后得到的操作而不必等待其它存储器区域同步操作的完成。如果同步条件3是“用于所有地址”,那么,在存储器区域3中的入口将在同步条件3被完成时发出。当用于每一级的所有同步级都已经完成时,那一级的同步处理被完成。因此可以省略同步完成表。
如上所述,当第四实施例被应用于具有存储体结构的存储器控制器时,在不同存储体具有不同同步条件的情况下也可以在存储体的基础上独立地执行同步处理。
下面,进一步详细解释第四实施例的操作。
第四实施例中在CPU1已经发出存储器访问指令情况下的处理类似于图25所示第三实施例的处理。所以,第四实施例的详细描述将予以省略。
下面,参照附图35描述在体执行单元108、118、128和138的每一个处分别向记分板100、110、120和130发出指令的处理。
考虑下述入口,在该入口中,在记分板上已经输入了将要被发出的指令,体执行单元首先确定用于相关入口的有效标记是否被设置成“V”(步骤S71)。当用于相关入口的有效标记被设置成“I”时,体执行单元确定:由于相关入口是无效的,所以,在相关入口中的存储器访问指令不能够被发出(步骤S72)。
当用于有效入口的有效标记处于“V”状态(步骤S71,YES)时,体执行单元确定用于相关入口的使能标记是否被设置成“YES”(步骤S73)。
当用于相关入口的有效标记被设置成“NO”(步骤S73,NO)时,体执行单元确定:在相关入口中的存储器访问指令不满足发出条件或该存储器访问指令已经被发出。关于前者,存在有下述的情况,即:当执行存储器写入指令时,写入数据不能够被传送给存储器控制器或探听器不能够确定对存储器写入请求的的响应。关于后者,当执行存储器读出指令时,读出请求被传送给DRAM,但是被请求的读出数据没有到达存储器控制器。其结果,体执行单元不能发出在相关入口中的存储器访问指令(步骤S74)。
当用于相关入口的使能标记被设置成“YES”时,体执行单元确定同步完成表12中的所有同步级的所有“SYNC COMPLETION ENTYIES”是否处于“0”状态(步骤S75)。由于所有的“SYNC COMPLETIONENTRIES”都处于“0”状态意味着涉及到与体执行单元相应的区域的同步操作已经完成,所以,体执行单元确定在相关入口中的存储器访问指令能够被发出(步骤S76)。
当在同步完成表12中所有同步级上的一个或多个“SYNC COMPLETION ERTRY”被设置成“1”时(步骤S75,NO),根据下述步骤S77到S84确定存储器访问指令能够被发出或不能执行。如图35的回路所示,借助于步骤S78,S80,S82,和S84的处理,确定存储器访问指令是否能够按照同步顺序被发出。事实上,上述步骤是在第四实施例的执行硬件上并行执行的。即:执行硬件不是以与工作相关的指针(指针“j”)为基础的。在图35中示出的指针“j”为方便起见采用了流程图描述的方式,而在图34中未示出指针“j”。
体执行单元首先读出所发出的同步条件,以确定还没有被执行的同步条件的顺序(步骤S77)。利用SYNC读出指针162指出还没有被执行的同步条件的第一个同步条件。在图35的步骤S77中,在用于工作的指针“J”中设置由SYNC读出指针162指出的值。
在最后发出的同步条件被读出之后,体执行单元确定:在记分板中所述入口同步级“j”上的多个SYNC标记被分别设置成“1”(步骤S78)。当相关入口的SYNC标记被设置成“1”(步骤S78,YES)时,由于存储器访问指令是在同步级“j”的同步指令之前发出的,所以,相关入口的存储器访问指令能够被执行(步骤S79)。
当相关入口的SYNC标记没有被设置成“1”(步骤S78,NO)时,体执行单元确定相关入口是否是一个在同步级“j”上的同步目标指令(步骤S80)。即:它确定所述的相关入口是否与SYNC级“j”的SYNC条件相匹配。当相关入口是一个同步指令(步骤S80,YES)时,相关入口的存储器访问指令不能够被执行(步骤S81)。
当相关入口不是一个同步指令(步骤S80,NO)时,体执行单元确定将在同步级“j”之后执行的一个同步级是否与由SYNC写入指针162指出的同步级相一致。在同步级“j”之后的同步级与由SYNC写入指针162指出的同步级相一致的状态意味着在同步级“j”之后的同步级是最后一个同步级。由于相关入口不满足最后的同步条件,所以,相关入口的存储器访问指令可以被执行(步骤S83)。
当在同步级“j”之后将被执行的同步级与由SYNC写入指针162指出的同步级不一致时,由于跟在同步级“j”之后的同步级不是最后一个同步级,所以,就要对后续同步级进行分析。在图35中,工作指针“j”被增加(步骤S84)。步骤84被规定如下:不执行相关入口的存储器访问指令,以便剩掉步骤S78、S80、S82和S84的回路处理。
在第四实施例中,可以增加一个与同步级变化相对应的相关表,用于记分板中的每个入口。相关表指出诸如地址符合和相同处理器用途(处理器ID符合)。在这种情况下,当在记分板中输入被传送的指令时,体执行单元将该地址和该处理器ID与该记分板其它入口的地址和处理器ID进行比较。当符合发生时,在相关入口上的表中设置有效标记。反之则有效标记被清除。在这种修改中,假定N1指出记分板的入口号,比较器的号数是N1的序列号。
在所述的修改中,将描述涉及到在确定存储器访问发出基础上的同步的处理。首先,相关表的行值被进行或非运算(#1)。在SYNC同步完成表上每个区域的值被分别根据同步条件进行或运算(#2)。在#1中的逻辑或非运算结果和在#2中的逻辑或运算结果被进行与运算(#3)。根据所有的同步条件,在#3中的所有逻辑与运算结果被进行或运算(#4)。
存储在SYNC完成表中的值被进行或运算(#5)。当在#5中的逻辑或运算的结果是“0”时,由于同步没有被执行,所以,用于执行的条件是在“Val”标记和“En”标记之间的逻辑与运算。当在#5中的逻辑或运算结果是“1”时,由于同步能够被执行,所以,用于执行的条件是在“Val”和“En”之间的逻辑与结果和在#4中逻辑或结果的逻辑与。
最后,在#4中的逻辑或、“En”标记和“Val”标记被进行逻辑与运算(#6)。在#6中逻辑与运算的结果是“1”的入口可以被发出。
下面解释在第四实施例中当CPU1以升序传送下述指令时存储器控制器10的处理:
(1)Read 12380
(2)SYNC
(3)Write 67830
(4)Write 12380
(5)SYNC
(6)Write abcd80
图36A到42B示出了在记分板100中输入提供给区域0的数据项和同步完成表12。
假设同步条件与第二实施例的同步条件相同。
在图36A到42B中,指出在每个入口中指令“ISSUE ENABLE/DISABLE”的项保持表示在图35中体执行单元确定结果的信息如下:(a)对应于在图35中步骤S72处的确定结果;(b)对应于在步骤S73处的确定结果;(x)对应于在步骤S75处的确定结果;(y)对应于在步骤S78处的确定结果;(c)对应于在步骤S80处的确定结果;(z)对应于在步骤S82处的确定结果。这使得理解操作更加容易。但是实际上,该项仅需要保持用于指出一个指令的“ISSUE ENABLE/DISABLE”的信息。
图36A和36B示出了记分板100和同步完成表12的原始状态。因此,在记分板100中的所有入口都没有被使用(空)。在记分板100上项“ISSUE ENABLE/DISABLE”下的所有入口中,输入表示ISSUE DISABLE的数据。这对应于(a),它意味着当体执行单元108执行图35所示的操作时,所述入口是无效的。此后,将不再有能够被发出的入口。
图37A和37B示出了在从总线结构单元3传送了指令(1)“Read 12380”情况下的记分板100和同步完成表12。这里,存储器控制器10从用于与指令“Read 12380”的地址相对应的区域0的记分板100中选择一个空入口No.0,并在该入口中输入所述指令。在记分板100上的入口No.0可以被发出
图38A和38B示出了在存储器控制器10接收了同步指令(2)“SYNC”情况下的记分板100和同步完成表12。存储器控制器10将在记分板100上有效入口(“Val”下的“V”)中的同步标记0设置成“1”。在同步完成表12中的SYNC写入指针中设置一个“1”。将与区域0相对应的SYNC标记0设置成“1”。体执行单元108能够发出的入口是入口No.0。
图39A和39B示出了此后在存储器控制器接收了指令(3)“Write 67380”情况下的记分板100和同步完成表12。存储器控制器10从用于与指令“Write 67380”的地址相对应的区域0的记分板100中选择一个空入口No,1,并在该入口中输入所述指令。在记分板100上的入口No.0和入口No.1可以被发出。
图40A和40B示出了在存储器控制器10此后接收指令94)“Write 12380”情况下的记分板100和同步完成表12。存储器控制器10从用于与指令“Write 12380”的地址相对应的区域0的记分板100中选择一个空入口No.2,并在该入口中输入所述指令。在记分板100上只有入口No.0和入口No.1是能够被发出的。
图41A和41B示出了在存储器控制器10接收了第二个同步指令(5)“SYNC”情况下的记分板100和同步完成表12。存储器控制器10将与在同步完成表12中SYNC写入指针相对应的同步标记设置成在记分板100上用于所有入口(项“Val”下的“V”)的从0到3的同步标记中的“1”。此后,在同步完成表12中SYNC写入指针内设置“2”。用于区域0的SYNC标记被设置成“1”。体执行单元108能够执行的入口仅是入口No.0和入口No.1。
图42A和42B示出了此后在存储器控制器10接收了指令(6)“Write abcd80”情况下的记分板100和同步完成表12。存储器控制器10从用于与指令“Write abcd80”的地址相对应的区域0的记分板100中选择一个空入口No.3,并在该入口中输入所述指令。这里,在同步完成表12中的SYNC写入指针内设置“2”。用于区域0的SYNC完成标记1被设置成“1”。体执行单元108能够发出的入口仅是入口No.0和入口No.1。
上述的处理使得存储器控制器10不仅能够接收多个指令,而且,还能够根据预定的同步条件发出存储器访问指令。
(第五实施例)
本发明的第五实施例是在第一实施例的基础上省去了存储器控制器10中的同步完成表并从记分板11中去除了同步标记。
特别是,利用第五实施例,同步条件被应用到所有的操作上(不考虑同步)。当执行具有同步条件的操作(用于相同的请求或相同的地址)时,只有满足同步条件的操作总是被执行,而不考虑执行同步。这不仅使得可以省略同步标记和同步完成表,而且,可以避免在同步指令之后的操作被再试,借此,改善了系统的处理能力。当以弱序方式而不是以无序方式执行条件确定时,第五实施例是特别有效的。即:由于在一个一般的系统中保证相同地址被访问的顺序已经是足够的,所以,第五实施例是特别有效的。为了执行第五实施例,相同地址(多个地址的一部分可被比较)被访问的顺序不变,或者需要一个用于避免写入和写入的顺序和读出和写入的顺序(顺序标记,后述)发生变化的装置。
下面参照图43简要解释第五实施例。
如图43所示,利用第五实施例,同步条件被加到所有的操作上。同步标记和同步完成表被省略。用于指出在前操作的顺序标记103被加到记分板100、110、120和130中。
例如,当在前操作具有相同的地址时,在所述入口中设置在前操作的入口号。当在前操作已经被发出或无效时,顺序标记被无效掉(-),以使得所述操作能够被发出。
例如,在所有的同步操作都是与“从同一个地址读出和向同一个地址写入”相关的情况下,当在一个操作已经被写入所述入口的时间处输入一个到相同地址的访问时,入口号被设置得与顺序标记相同。当输入多于一个到相同地址的访问时,最后被输入的一个入口号被设置成顺序标记。
一旦在前处理或顺序标记是有效的,相关入口操作就不能够被发出。当在前操作已经被处理时,用于后续入口的顺序标记即被清除,并且,能够发出后续的入口。如果由于某些原因在一个入口已经被输入之后又要删除它,那么,将所述入口作为NOP保留下来以避免由于删除使得存储器装置被锁定。
图43示出了总是针对一个相同地址执行同步处理的情况。例如,在存储器区域0*中,4个有效入口到同一个地址进行访问。利用第五实施例,如果同步总是针对同一个地址执行的,那么,在同一个地址上的前操作是由一个顺序标记规定的。
在图43所示的状态下,按照入口No.1、入口No.0、入口No.7、和入口No.5的顺序对同一个地址进行访问。虽然入口No,0作为一个总线操作已经完成,但是,作为一个在前操作的入口No.1已经被输入,所以,在入口No.1的处理没有完成之前入口No,0不能够被发出。类似地,在入口No.0的处理没有完成之前入口No.7不能够被发出。在入口No.7的处理没有完成之前入口No.5不能够被发出。这保证了按照如下顺序执行各个入口:入口No.1、入口No.0、入口No.7、和入口No.5。
由于总线操作没有完成,入口No.7被删除。如果入口No.7已经被删除,那么,操作从“写入”改变到“NOP”,以取代在正在改变到“I”的入口中的有效标记,这避免了来自非使能入口No.5的删除被发出。
下面,详细解释第五实施例的操作。
首先,参考图44解释在第五实施例中在CPU1发出了存储器访问指令情况下的操作。
由CPU1发出的存储器访问指令经过总线2被传送给总线接口3。总线接口3将所接收的存储器访问指令传送给存储器控制器10(步骤S91)。
当所接收的存储器访问指令是一个除同步指令以外的存储器访问指令时,存储器控制器10根据所接收存储器访问指令的地址从记分板100、110、120和130中选择一个相应的记分板。进而,存储器控制器10从在所选择记分板上的所有入口中选择一个有效标记被设置成“I”(空入口)的入口。然后,存储器控制器10在这个所选择的入口中输入被传送的存储器访问指令(步骤S92)。
当输入所述的存储器访问指令时,存储器控制器10不仅要输入该存储器访问指令的操作码和地址,而且还要将所述有效值设标记成“V”。
根据同步条件,存储器控制器10确定在该记分板上的相关入口中是否存在有与该存储器访问指令相关的操作或需要被同步的操作(步骤S93)。如果存在有一个需要被同步的操作,那么,存储器控制器10将输入根据顺序标记需要被同步的(在前)最后一个输入操作的入口号(步骤S94)。如果不存在需要被同步的操作,则存储器控制器10使用于相关入口的顺序标记无效(步骤S95)。
当由按入口顺序输入的入口号指出的(在前)操作已经完成时,所述顺序标记被无效(步骤S96)。
另外,在体执行单元108、118、128和138的控制下,存储器控制器10从记分板上选择一个入口并在所选择的入口中发出所述指令(步骤S97)。
当被输入的入口(存储器访问指令)已被选择且在该入口中的指令已经发出(步骤S97,YES)时,用于被选择入口的可发出标记被设置成“NO”(步骤S98)。利用总线接口单元3、存储器控制器10和体执行单元执行所发出的存储器访问指令。
在存储器访问指令的处理被完成之后,存储器控制器10不仅将存储在用于记分板中被执行存储器访问指令的入口中的有效标记设置成“I”,而且,还将其中已经输入了被执行指令的入口设置成自由的(步骤S99)。如果指出已经被处理入口的入口顺序标记存在,那么,存储器控制器10将使该顺序标记无效。
通过上述的处理,执行从CPU1发出的存储器访问指令。
下面,结合图45描述在体执行单元108、118、128和138的每一个处分别向记分板100、110、120和130中相应的一个发出指令的处理。
考虑下述入口,在该入口中,在记分板上已经输入了需要被发出的存储器访问指令,体执行单元首先确定用于相关入口的有效标记是否处于“I”状态(步骤S101)。当用于相关入口的有效标记处于“I”状态时,体执行单元确定由于该相关入口是无效的,所以,在相关入口中的存储器访问指令不能被发出(步骤S102)。
当用于相关入口的有效标记处于“V”状态(步骤S101,NO)时,体执行单元确定用于相关入口的发出标记是否处于“NO”状态(步骤S103)。当用于相关入口的发出标记处于“NO”状态时,体执行单元确定在相关入口中的指令已经完成或由于不满足发出条件而没有在相关入口中发出存储器访问指令(步骤S104)。
当在相关入口中的发出指令处于“YES”状态(步骤103,NO)时,体执行单元确定顺序标记是无效的(步骤S105)。当顺序标记无效时,这意味着不需要同步处理,或者相关入口的前处理已经完成,所以,体执行单元确定能够发出在相关入口中的存储器访问指令(步骤S106)。
当顺序标记有效时(步骤S105,NO),这意味着正在执行同步处理,或正在等待相关入口的在前处理,所以,体执行单元确定不能够发出在相关入口中的存储器访问指令(步骤S107)。
下面解释在第五实施例中当CPU1与升序执行下述指令时存储器控制器10的处理:
(1)Read 12380
(2)Write 67830
(3)Write 12380
(4)Read 12380
(5)Read abcd70
图46到图53示出了为区域0提供并在记分板100中输入的数据项和同步完成表12。
假设:同步条件是“在在前处理被完成之后可以发出针对同一个地址的写入/读出指令”。这是这样一个条件,即:当存在有针对同一个地址的在前存储器访问指令时,针对同一个地址的写入/读出指令总是不能够被发出而根本不必考虑同步指令,同时,当不存在有在前存储器访问指令时,写入/读出指令可以被发出。
在图46到53中,在每个入口中指出指令的“ISSUE ENABLE/DISABLE”的项保持表示如下在图45中体执行单元确定结果的信息:(a)对应于在图45中步骤S102处的确定结果;(b)对应于在步骤S104处的确定结果;(w)对应于在步骤S106处的确定结果;和,(d)对应于在步骤S107处的确定结果。这使得理解操作更加容易。但是实际上,所述项只需要保持指出指令的“ISSUE ENABLE/DISABLE”的信息。
图46示出了记分板100的原始状态。因此,在记分板100中的所有入口都未被使用(空)。在记分板100上项“ENABLE/DISABLE”下的所有入口中,已经输入了指出“ISSUE DISABLE”的数据。这对应于(a),它意味着当体执行单元执行图45所示的处理时,所述的入口是无效的。因此,将没有入口可以被发出。
图47示出了在已经从接口单元3传送了指令(1)“Read 12380”情况下的记分板100。这里,存储器控制器10从用于与指令“Read 12380”的地址相对应的区域0的记分板100中选择一个空入口No.0并在该入口中输入所述指令。在记分板100上的入口No.0能够被发出。
图48示出了在此后存储器控制器10接收了指令(2)“Write 67380”情况下的记分板100。存储器控制器10从用于与指令“Write 67380”的地址相对应的区域0的记分板中选择一个空入口No,1并在所选择的入口中输入该指令。在记分板100上的入口No.0和入口No.1可以被发出。
图49示出了在此后存储器控制器10接收了指令(3)“Write 12380”情况下的记分板100。存储器控制器10从用于与指令“Write 12380”的地址相对应的区域0的记分板中选择一个空入口No,2并在所选择的入口中输入该指令。由于地址12380与用于在入口No.0中存储器访问指令的地址相同,所以,指出入口No.0的标记(数据)被设置成用于入口No.2的顺序标记。根据同步条件,只有在记分板100上的入口No.0和入口No.1能够被发出。
图50示出了在存储器控制器10接收了指令(4)“Read 12380”情况下的记分板100。存储器控制器100从用于与指令“Read 12380”的地址相对应的区域0的记分板100选择一个空入口No.3,并在所选择的入口中输入该指令。由于地址12380与用于在入口No.0和入口No.2中存储器访问指令的地址相同,所以,指出最后输入入口No.2的标记(数据)被设置成用于入口No.3的顺序标记。根据同步条件,只有在记分板100上的入口No.0和入口No.1能够被发出。
图51示出了在体执行单元108选择了记分板100上的入口No.0且指令(1)“Read 12380”已经被发出情况下的记分板100。存储器控制器10设置该记分板上项“En”到“NO”下的入口No.0,并将入口No.0设置成自由的。只有在记分板100上的入口No.0能够被发出。
图52示出了当发出指令(1)“Read 12380”的处理已经完成情况下的记分板100。存储器控制器10使用于记分板100上入口No.2的顺序标记无效。因此,只有在记分板上的入口No.1和入口No.2能够被发出。
图53示出了在存储器控制器10接收了指令(5)“Read abcd70”情况下的记分板100。存储器控制器10从用于与指令“Read abcd70”的地址相对应的区域0的记分板100中选择一个空入口No.0,并在所选择的入口中输入该指令。只有在记分板100上的入口No.1和入口No.2能够被发出。
上述的处理使得存储器控制器10可以根据预定的同步条件选择和发出存储器访问指令。
(第六实施例)
如图54所示,本发明的第六实施例如下,即:所有的存储器区域,或存储器控制范围是由一个单一的记分板200进行管理的,并且不使用同步完成表。换言之,第六实施例是这样一个系统,该系统集中管理在各个存储器区域中的操作状态,同时,第一实施例是这样一个系统,该系统分布性第管理各个存储器区域。
如图54所示,第六实施例的存储器控制器10使用一个单一的记分板200去管理体执行单元BM0到BM3中每一个的操作状态并产生用于4个存储器区域0到3的控制信号。当发出同步操作时,表示该操作是在同步之前的一个操作的标记被设置成“1”,以用做同步标记201,借此以根据在同步之后的一个操作来识别它。
另外,在同步处理完成之前在同步完成表240中的同步完成标记被设置成“1”,借此以拒绝接收后续的同步操作,并使得同步操作被进行再试。利用这样一个单一的记分板,当用于所有入口的同步标记201都处于“0”状态时,这就意味着同步已经完成。因此,可以省略同步完成表240。
(第七实施例)
如图55所示,与第六实施例类似,本发明的第七实施例使用一个记分板200去集中管理各个存储器区域的操作状态和提供了一个同步完成表240,在该同步完成表240中,设置有用于所有单独入口的同步完成标记241和同步条件242。
特别是,利用第七实施例,只在满足同步条件242(这里,同一个地址SA)的操作中执行同步处理(强序处理),同时,在不满足同步条件的操作中执行一般的无序或弱序处理。
第七实施例与第六实施例的区别在于:如图55所示,同步条件242被加到同步完成表240中。因此,第七实施例与第六实施例的不同仅在于集中管理方法。第七实施例的基本操作与第二实施例的基本操作相同。
利用第七实施例,当省略同步完成表24时,就必须在记分板200中输入同步条件并每当后续操作来到时必须确定所述的同步条件是否被满足。在输入后续操作时,在记分板200中设置一个同步标记201。使用这个同步标记可以规定三种状态:“同步之前”、“同步之后”和“不考虑同步”,这有助于进行控制。可以根据在所述记分板中没有出现用于“同步之前”的入口来确定同步的完成。
(第八实施例)
如图56所示,与第六实施例类似,本发明的第八实施例使用一个单一的记分板200集中管理各个存储器区域的操作状态,并与第三实施例相同输入用于多级同步标记的入口。利用第八实施例,当只使用一个记分板时,可以省略同步完成表240。
如图56所示,该第八实施例在记分板200中提供了与多个同步级相对应的用于多级同步标记202的多个入口。第八实施例的详细操作与第三实施例相同。特别是,利用第八实施例,假设:同步标记202具有用于每个入口的4级0到3。也可以假设在同步完成表240中的同步完成标记具有4级。同步(SYNC)读出指针261指出哪一级正在被执行,同步写入指针262指出下一个同步级。
当同步完成表240被省略时,在记分板中输入同步条件并每当后续操作到达时确定所述的同步条件是否被满足。当输入后续的操作时,设置同步标记202。在这种情况下,使用用于规定三种状态:“同步之前”、“同步之后”和“不考虑同步”的同步标记202有助于进行控制。可以根据在记分板中没有出现用于“同步之前”的入口来确定同步的完成。
(第九实施例)
如图57所示,与第六实施例类似,本发明的第九实施例使用一个单一的记分板200去集中管理各个存储器区域的操作状态,并与第四实施例相同提供了指出用于0到3中每个同步级同步条件(在这种情况下,同一个地址SA)的入口263。
特别是,在第九实施例中,根据多个同步级在同步完成表240中提供了指出多个同步条件的入口263。第九实施例的详细操作与第四实施例的操作的相同。
当同步完成表240被省略掉时,在记分板上输入同步操作,并在每当后续操作到达时,确定是否满足同步条件。当输入后续操作时,设置同步标记202。在这种情况下,使用规定三种状态,即:“同步之前”、“同步之后”和“不考虑同步”的同步标记可以有助于进行控制。可以根据在记分板中不存在用于“同步之前”的入口来确定同步的完成。
(第十实施例)
如图58所示,类似于第六实施例,本发明的第十实施例使用一个单一的记分板200去集中管理各个存储器区域的操作状态,并将所述的同步条件提供给所有的操作(不考虑同步)。利用第十实施例,当执行具有与同步操作相关的条件的操作时(用于同一个请求或同一个地址),总是仅执行满足所述同步条件的的操作,而不必考虑执行同步。这不仅使得可以省略同步标记和同步完成标记,而且,可以避免同步指令之后的操作被进行再试,借此,以改善系统的处理能力。
特别是,如图58所示,第十实施例将同步条件施加到所有的操作上,同步表和同步完成表被省略,并将用于指出在前操作顺序标记203的入口加到记分板200上。例如,当在前操作具有相同的地址时,在所述多个入口中设置在前操作的入口号。当在前操作已经被发出或被无效时,所述顺序标记被无效(-)以使得操作可以被发出。第十实施例的详细操作与第五实施例的操作相同。
如到目前所解释的,利用本发明,在应用到多处理器系统的存储器控制器中,使用管理表不仅可以管理存储器访问的状态,而且,当执行同步操作时,还可以接收后续的操作(或满足同步条件的操作)。因此,可以避免请求后续操作的单元再试所述请求,从而减少了在同步处理过程中系统的额外开销。
对于本专业技术领域以内的技术人员来讲,很明显可以发现另外的一些优点并作出某些修改。因此,较宽范围的发明并不受限于这里所做的特定说明、表示装置和所示的实施例。因此,在不脱离由所附权利要求及其等效内容规定的一般发明概念的精神和范围的情况下,可以作出各种修改。