首页> 中国专利> 用于控制对具有存储器集线器体系结构的存储模块的存储器存取的方法和系统

用于控制对具有存储器集线器体系结构的存储模块的存储器存取的方法和系统

摘要

一种计算机系统,包括一个被耦合至多个存储模块的存储器集线器控制器。该存储器集线器控制器包括一个存储器请求队列,该存储器请求队列将存储器请求和相应的请求标识符耦合至存储模块。每个存储模块基于存储器请求存取存储器设备并且当相应的存储器请求被处理时,从请求标识符产生响应状态信号。将这些响应状态信号伴随或独立于任何的读数据从存储模块耦合至存储器集线器控制器。该存储器集线器控制器使用响应状态信号来控制将存储器请求耦合至存储模块,并且因此控制在每个存储模块中的未处理的存储器请求的数目。

著录项

  • 公开/公告号CN1695124A

    专利类型发明专利

  • 公开/公告日2005-11-09

    原文格式PDF

  • 申请/专利权人 米克伦技术公司;

    申请/专利号CN03824860.3

  • 发明设计人 约瑟夫·M·杰迪洛;特里·R·李;

    申请日2003-08-27

  • 分类号G06F12/00;

  • 代理机构72002 永新专利商标代理有限公司;

  • 代理人韩宏

  • 地址 美国爱达荷

  • 入库时间 2023-12-17 16:38:09

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-11-16

    未缴年费专利权终止 IPC(主分类):G06F12/00 授权公告日:20100113 终止日期:20100827 申请日:20030827

    专利权的终止

  • 2010-01-13

    授权

    授权

  • 2006-01-04

    实质审查的生效

    实质审查的生效

  • 2005-11-09

    公开

    公开

说明书

技术领域

本发明涉及存储系统,尤其涉及一种具有多个存储模块的存储系统,每个存储模块包括一个被耦合至多个存储器设备的存储器集线器。

背景技术

计算机系统使用例如动态随机存取存储器(“DRAM”)设备的存储器设备来存储被处理器存取的指令和数据。通常将这些存储器设备用作计算机系统的系统存储器。在一个典型的计算机系统中,处理器通过处理器总线和存储器控制器与系统存储器进行通信。该处理器发出存储器请求,存储器请求包括例如读取命令的存储器命令,以及指向读取数据或指令的位置的地址。存储器控制器使用命令和地址产生适当的命令信号以及应用于系统存储器的行和列地址。响应于命令和地址,数据在系统存储器和处理器之间传递。存储器控制器通常是系统控制器的一部分,系统控制器还包括用于将处理器总线耦合至例如PCI总线的扩展总线的总线桥接器电路。

存储器设备的操作速度在持续地加快,因此提供了不断增加的存储带宽。然而,存储带宽的增加并没有和处理器操作速度的提高保持同步。增加存储带宽的一个方法是存取许多相互并行的存储器设备,以便在每次存储器存取时,从这些许多的存储器设备中读取数据或者将数据写到这些许多的存储器设备中去。一种使其自身适合允许同时存取许多存储器设备的存储器体系结构就是存储器集线器体系结构。在存储器集线器体系结构中,将一个系统控制器或存储器集线器控制器耦合至多个存储模块,每个存储模块包括被耦合至多个存储器设备的存储器集线器。该存储器集线器在控制器和存储器设备之间有效地路由存储器请求和响应。使用这样的体系结构的计算机系统可以有更高的带宽,因为处理器可以从一个存储模块读取数据或者向该存储模块写入数据,而同时另一个存储模块正在响应先前的存储器存取。例如,处理器可以向一个存储模块中的存储器设备输出写数据,而同时另一个存储模块中的存储器设备正在准备向该处理器提供读数据。

虽然使用存储器集线器的存储模块可以提供增加的存储带宽,但是模块中的存储器集线器的存在能够使得协调命令和地址信号到存储模块的流以及数据信号到存储模块和从存储模块出的流变得困难。在传统的存储系统中,存储器控制器直接地存取存储模块中的存储器设备。在存储器控制器和存储器设备之间没有任何例如存储器集线器的控制设备存在,会使得该存储器控制器协调它和每个存储模块之间的操作变得相对地容易。特别是,因为存储器控制器主动地控制在每个存储模块上的活动,所以该存储器控制器能够基于它发送到存储模块或者从存储模块接收到的信号,来确定对于每个存储模块的存储器存取的状态。相反地,在每个存储模块上存在存储器集线器来控制存储器设备的存取,使得控制器确定每个存储模块的存储器请求的状态变得困难,因为该控制器不再直接地控制存储器存取。例如,控制器不再能够确定何时将一个读存储器请求发送到那个模块上的存储器设备。由于控制器不能确定何时发出读存储器请求,所以它也不能确定何时将从存储模块中发出读数据。结果是,控制器不能确定何时它能够向同一个或另外一个存储模块发出另外一个读或写存储器请求。类似地,控制器不能确定是否已经处理了多个发出到存储模块的存储器请求,并且因此不能确定是否应当将另外的存储器请求发出到该存储模块。其它类型的协调发出对于本领域的熟练技术人员将是非常明显的。

因此,需要一种使控制器或者其它设备来协调向存储模块发出存储器请求的存储器系统体系结构,所述控制器或者其它设备被耦合至多个基于集线器的存储模块。

发明内容

一个存储模块集线器控制器被耦合至多个存储模块,每个存储模块包括被耦合至各自模块中的多个存储器设备的存储器集线器。存储器集线器控制器存储多个存储器请求并且把每个存储的存储器请求发送到在一个存储模块中的存储器集线器,以响应一个根据存储器请求状态信号而产生的流控制信号,该存储器请求状态信号接收自存储器集线器,而存储器请求被发送到该存储器集线器。存储器集线器存储收到的存储器请求并且将与存储的存储器请求相对应的存储器请求信号发送到存储模块中的存储器设备。存储器集线器还将写数据发送到存储器设备或者随后从存储器设备接收读数据。存储器集线器还产生存储器请求状态信号,该存储器请求状态信号标识已经由被耦合至存储器集线器的存储器设备处理的存储器请求。存储器集线器然后将存储器请求状态信号和任何读数据发送到存储器集线器控制器。该控制器输出收到的读数据并且基于存储器请求状态信号产生流控制信号来控制那些存储于每个存储模块中的未处理的(outstanding)存储器请求的数目。

附图说明

图1是按照本发明的一个例子的计算机系统的框图,其中多个存储模块中的每个都包括存储器集线器;

图2是将用于图1的计算机系统中的存储器集线器控制器的一个例子耦合至用于图1的计算机系统中的多个存储模块的每一个中的存储器集线器的一个例子的框图;

图3A和3B所示为存储器请求信息包的格式的一个例子的表格,该存储器请求信息包从存储器集线器控制器发送到图2的存储器集线器;

图4A和4B所示为存储器响应信息包的格式的一个例子的表格,该存储器响应信息包从存储器集线器控制器发送到图2的存储器集线器。

具体实施方式

图1中示出了按照本发明一个例子的计算机系统100。计算机系统100包括一个处理器104,用于执行各种计算功能,例如运行具体的软件来执行具体的运算或者任务。处理器104包括一个处理器总线106,处理器总线106通常包括一个地址总线、一个控制总线和一个数据总线。典型地将处理器总线106耦合至高速缓冲存储器108,在前文曾经提到过,高速缓冲存储器108通常是静态随机存取存储器(“SRAM”)。最后,将处理器总线106耦合至系统控制器110,系统控制器110有时也被称为“北桥”或者“存储器控制器”。

系统控制器110作为处理器104和各种其它部件的通信路径。更具体而言,系统控制器110包括一个图形端口,典型地将该图形端口耦合至图形控制器112,而将图形控制器112依次耦合至视频终端114。将系统控制器110也耦合至一个或多个例如键盘或鼠标的输入设备118,来允许操作者和计算机系统100之间的交互操作。典型地,计算机系统100还包括一个或多个例如打印机的输出设备120,将输出设备120通过系统控制器110耦合至处理器104。典型地将一个或多个数据存储器设备124也通过系统控制器110耦合至处理器104,来允许处理器104把数据存储到内部或外部存储介质(未示出)中或者从内部或外部存储介质中重新得到数据。典型的数据存储器设备124的例子包括硬盘和软盘、盒式磁带和只读光盘存储器(CD-ROMs)。

系统控制器110还包括一个存储器集线器控制器126,将存储器集线器控制器126耦合至作为计算机系统100的系统存储器的多个存储模块130a,b...n。优选为,将存储模块130通过高速链路134耦合至存储器集线器控制器126,高速链路134可以是光学或电子通信路径或者一些其它形式的通信路径。如果高速链路134是通过光学通信路径来实现的,那么光学通信路径可以是例如一个或多个光纤的形式。在这种情况下,存储器集线器控制器126和存储模块130将包括耦合至光学通信路径的光学输入/输出端口或者一个单独的输入和输出端口。存储模块130被示出以多点或菊花链方案被耦合至存储器集线器控制器126,其中将单个的高速链路134耦合至所有的存储模块130。然而,可以理解的是,也可以使用其它的拓扑结构,例如点对点耦合方案,其中使用一个单独的高速链路(未示出)来将每个存储模块130耦合至存储器集线器控制器126。也可以使用切换拓扑结构,其中有选择地通过一个开关(未示出)将存储器集线器控制器126耦合至每个存储模块130。可用的其它类型的拓扑结构对于本领域的熟练技术人员将是非常明显的。

每个存储模块130包括用于控制对存储器设备148的存取的存储器集线器140,存储器设备148在图2中的例子中是同步动态随机存取存储器(“SDRAM”)设备。然而,也可以使用较少的或更多的存储器设备148,并且当然也可以使用除SDRAM设备之外的其它存储器设备。将存储器集线器140通过总线系统150耦合至每个存储器设备148,总线系统150通常包括一个控制总线、一个地址总线和一个数据总线。

图1的存储器集线器控制器126和存储器集线器140的一个例子在图2中示出。如图2中所示,将存储器集线器控制器126耦合至存储器集线器140的高速链路134(见图1)包括互相分开的高速下行链路154和一个高速上行链路156。如前文所述,下行链路154和上行链路156可以耦合逻辑信号、光学信号、RF(射频)信号或者任何其它类型的信号介质。也可以将下行链路154和上行链路156合并成一个单一的高速双向链路,或者可以进一步将下行链路154和上行链路156分成许多的通信链路,例如分开命令、地址和数据信号的链路。其它的变化对于本领域的熟练技术人员将是非常明显的。

更进一步地参考图2,存储器集线器控制器126包括存储器请求队列160,该存储器请求队列160通过系统控制器110从处理器104(见图1)接收高层存储器请求信号,该高层存储器请求信号包括命令信号、地址信号和在存储器写入的情况下的写数据信号。存储器请求队列160还从流控制单元174接收唯一地识别每个读请求和每个写请求的请求ID信号。这些请求ID和相应的高层读请求和写请求结合在一起,并且被存储到存储器请求队列160中,优选为按照它们被接收到的顺序被存储到存储器请求队列160中。存储于请求队列160中的存储器请求信号既包括读请求信号又包括写请求信号。高层存储器请求信号和请求ID信号将共同地被称为存储器请求信号。存储器请求队列可以、但是不是必需地按照信号被接收到的相同顺序向存储模块130发出信号。

存储器集线器控制器126还包括从系统控制器110接收读响应信号和写响应信号的存储器响应队列170。读响应信号包括读数据信号以及标识与读数据相对应的读请求的读状态信号。写响应信号包括标识已经由一个存储模块处理过的写请求的写状态信号。存储器响应队列170按照存储器响应信号被接收到的顺序存储存储器响应信号,并且优选为,但不是必需地,存储器响应队列170按照相同的顺序将读数据信号172耦合至系统控制器110。存储器响应队列170还将读状态信号176和写状态信号178发送至流控制单元174,从而使得流控制单元174可以确定已经处理了哪些读请求和哪些写请求。流控制单元174通过比较状态信号176、178和由流控制单元174产生并且被发送至存储器请求队列160的请求ID,来做出这个确定。流控制单元174然后向存储器请求队列160输出流控制信号,来使存储器请求队列160确定是否以及何时其应该向每个存储模块130(见图1)发出另外的存储器请求。

更进一步地参考图2,在每个存储模块130中的存储器集线器140包括存储器请求队列190,存储器请求队列190通过高速下行链路154从存储器集线器控制器126接收一个或者多个存储器请求。存储器请求队列190包括与传统的存储器控制器相似的电路,来把存储器请求变成可以被存储器设备148(见图1)使用的命令和地址信号格式,并且在适当的时间和以适当的次序把这些格式重排的信号发送到存储器设备148。例如,存储器请求队列190可以把从存储器集线器控制器126接收到的地址信号转换成行和列地址信号。存储器请求队列190然后可以向存储器设备148输出行地址信号,以及一个行地址选通(“RAS”)信号,使得可以将行地址信号锁存进存储器设备148。相似地,存储器请求队列190可以向存储器设备148输出列地址信号,以及一个列地址选通(“CAS”)信号,使得可以将列地址信号可以锁存进存储器设备148。然而,格式重排的命令和地址信号的性质,有可能还有数据信号的性质,将依赖于存储器设备148的性质,这对于本领域的熟练技术人员将是非常明显的。

当存储器请求队列190已经向存储器设备148发出格式重排的读请求信号,来响应来自存储器集线器控制器126的读请求信号时,存储器请求队列190对流控制单元194应用一个读释放信号来指示已经将一个读请求发出到存储器设备148。相似地,当存储器请求队列190已经向存储器设备148发出格式重排的写请求信号,来响应来自存储器集线器控制器126的写请求信号时,存储器请求队列190对流控制单元194应用一个写释放信号来指示已经将一个写请求发出到存储器设备148。使用读释放和写释放信号来分别地明确表达读和写状态信号192、196,读和写状态信号192、196唯一地标识已经被每个存储模块130处理的每个读请求和写请求。更加具体而言,流控制单元194给每个释放的读请求分配一个唯一的读响应ID,优选为,读响应ID对应于从流控制单元174被发送至存储器请求队列160的请求ID。流控制单元194还给每个释放的写请求分配一个唯一的写响应ID,优选为,写响应ID也对应于请求ID。将这些响应ID作为读和写状态信号耦合至响应队列170。如前文所述,将这些状态信号耦合至存储器响应队列170,存储器响应队列170把状态信号从任何包含于响应中的读数据中分离出来,并且把状态信号耦合至流控制单元174。

响应于来自存储器请求队列190的读存储器请求,存储器设备148把读数据信号耦合至存储器集线器140。这些读数据信号被存储在读队列200中。读队列200随后把读数据信号耦合至响应发生器204,响应发生器204也从流控制单元194接收读状态信号192。

当请求队列190发出写请求时,把指示写请求已经被发出的信号存储在写队列206中。写队列206随后把指示写请求已经被发出的信号耦合至响应发生器204,响应发生器204还从流控制单元194接收写状态信号196。

响应发生器204把来自读队列200的读数据信号和来自流控制单元194的读状态信号192组合在一起,读状态信号192,如前文所述,标识与读数据相对应的读请求。将组合的读数据信号和读状态信号192组合到读响应210之中。响应于来自写队列206的信号,响应发生器204产生包含写状态信号192的写响应214。响应发生器204然后将读响应210或写响应214传送到存储器集线器控制器126中的响应队列170。更加具体而言,将读数据信号从响应发生器204传送到响应队列170。分别将读和写状态信号192、196从响应发生器204传送到响应队列170,或者在一些写状态信号的情况下单独地传送,或者在读状态信号或另外的写状态信号的情况下和读数据信号组合在一起传送。因此,读响应210包含读数据以及可以唯一地标识与读数据相对应的读请求的信息,写响应214包含可以唯一地标识已经被存储模块130处理的每个写请求。

在存储器请求队列160没有发出任何另外的存储器请求之前,在任何存储模块130中的未处理的写请求或读请求的数目可以是固定的或者用户可选的,用户可以通过利用一个指示允许的请求队列深度的值对任何一个存储器集线器控制器126编程来选择该数目。此外,未处理的读请求的数目可以和未处理的写请求的数目一样或者不一样。

在图3A中示出了一个存储器请求的例子,该存储器请求被从存储器集线器控制器126中的存储器请求队列160发送到存储器集线器140中的存储器请求队列190。在图3A中所示出的例子中,存储器请求的形式为包含多个信息包字的存储器请求信息包220,但是对于本领域的熟练技术人员来说非常明显的是存储器请求可以有其它的格式。第一个信息包字224的前4位是一个标识由请求队列160发出的存储器请求的类型的命令码。在图3B中标识这些命令码。例如,“0000”命令码表示空操作命令,“0001”命令码表示请求写1到16的双字(也就是,32位的组),“0010”命令码表示请求读1到16的双字,等等。回到图3A,第一个信息包字224的下面6位包含由流控制单元174(见图2)发出的唯一地标识每个存储器请求的请求ID。如前文所述,通过唯一地标识存储器请求,存储器集线器控制器126中的流控制单元174可以确定已经处理了哪些存储器请求。第一个信息包字224的最后22位是存储器请求所处的存储器地址的高位37:16位。

在图3A所示出的例子中,没有使用第二个信息包字228的前2位。下面的15位是存储器请求所处的存储器地址的低位15:2位。没有传送地址位1:0,因为这些地址位将选择数据的每个字节中的明确的位,并且所有的存储器存取都至少是数据的一个字节。

在存储器集线器140之一中的存储器请求队列190可以使用高位37:16位作为行地址以及低位15:2位作为列地址,或者可以用其它的一些方式使用这些地址。第二个信息包字228的下面4位是计数3:0位,计数3:0位指定将要从存储模块的存储器设备148读出或者写到存储模块的存储器设备148的双字或字节的数目。第二个信息包字228的最后16位由掩码数据掩码15:0组成,可以通过一个读存储器请求将掩码15:0耦合至存储器集线器控制器126来代替读数据。本领域的熟练技术人员对于在这种方式下的掩码数据是非常熟悉的。

对于写请求,前两个信息包字224、228之后是至少一个写数据的信息包字230。信息包字230的数目取决于第二个信息包字228中计数3:0的值、以及存储器写命令是用于写一个双字还是一个字节。例如,在请求双字写的信息包中,“0100”(也就是,4)的计数3:0的值将需要写数据的4个信息包字230。在要求字节写的信息包中,4的计数3:0的值将仅需要写数据的单个信息包字230。当然,在前两个信息包字224、228之后,读请求的信息包220将不包括任何信息包字230。

在图4A中示出了一个存储器响应210或214的例子,该存储器响应被从存储器集线器140之一中的响应发生器204发送至存储器集线器控制器126中的存储器响应队列170。该存储器响应的形式为包含多个信息包字的存储器响应信息包240,但是对于本领域的熟练技术人员来说非常明显的是存储器响应可以有其它的形式。第一个信息包字244的前4位是标识由响应发生器204发出的存储器响应的类型的响应码。在图4B中示出了这些响应码。例如,“000”响应码也表示“空操作”响应,并且“001”响应码表示“读响应”,该读响应将返回读数据和指示哪个读请求已被处理的读状态信号到存储器集线器控制器126中的存储器响应队列170。“010”响应码表示“写响应”,该写响应向存储器集线器控制器126中的响应队列170提供指示哪个写请求已被处理的写状态信号。最后,“011”响应码表示“写和读响应”,该写和读响应将在包含读数据的信息包中包括读状态信号和写状态信号。如上所述,在信息包中的写状态信号将不属于与该信息包中的读数据信号的存储器请求一样的存储器请求。通常,通过在写和读响应中与读数据一起包括写状态信号来提供写状态信号是更加有效的,因为仅需要一个响应就可以提供读和写状态信息。然而,如果数据不是从存储模块130中读出,那么就需要返回一个“写响应”,来向存储器集线器控制器126提供关于写请求状态的信息。然而,如果需要,“写响应”信息包可以被延迟,直到在任何一个存储模块130中已经积累了预先确定数目的未处理的写响应。

回到图4A,第一个信息包字244的下面6位是由流控制单元194产生的唯一标识每个存储器读请求的读响应ID。这个读响应ID通常将对应于每个读请求信息包220的第一个信息包字224中的请求ID。该读响应ID对应于如上所述的读状态信号。第一个信息包字244的下面6位也是由流控制单元194产生的唯一标识每个存储器写请求的写响应ID。这个写响应ID通常也将对应于每个写请求信息包220的第一个信息包字224中的请求ID。该写响应ID对应于如上所述的写状态信号。流控制单元可以将这些响应ID值和请求值相比较来确定是否已经处理了存储器集线器控制器126发出的任何读或写存储器请求。第一个信息包字244的下面4位是指定在信息包240中将要包括的读数据的双字的数目的双字计数位。没有使用第一个信息包字244的最后13位。如果响应信息包240是读响应信息包,则第一个信息包字244之后将跟随一个或多个读数据信息包字248。当然,读数据信息包字的数目取决于信息包字244中双字计数的值。

通过前面的叙述可以理解,虽然为了说明的目的而对本发明具体的实施例进行了描述,但是在不脱离本发明的实质和范围的情况下,还可以对本发明做出各种修改。例如,虽然已经将存储器集线器控制器126描述成允许在任何存储模块130中未处理的存储器请求的数目是一个具体的数目或者是一个可编程数目,但是其它的操作协议也是可能的。同样,存储器集线器控制器126不是简单地延迟发出存储器请求到具有太多未处理的存储器请求的存储模块130,存储器集线器控制器126也可以将存储器请求路由到不同的存储模块130。因此,本发明除了所附的权利要求外,不受任何限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号