用于基于集线器的存储系统中直接存储器访问的设备和方法转让专利

申请号 : CN200480027307.5

文献号 : CN100595720C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 约瑟夫·M·杰德罗

申请人 : 米克伦技术公司

摘要 :

一种用于存储模块的存储集线器,具有用于在系统存储器中进行DMA操作的DMA引擎。该存储集线器包括用于接收访问系统存储器的存储设备中的至少一个的存储器请求的链路接口;还包括用于连接到存储设备的存储设备接口,该存储设备接口把存储器请求耦合到存储设备以访问存储设备中的至少一个。该存储集线器还包括用于选择性地连接该链路接口和该存储设备接口的开关。另外,直接存储器访问(DMA)引擎通过该开关连接到存储设备接口,以产生用于访问存储设备中的至少一个的存储器请求,从而进行DMA操作。

权利要求 :

1、一种存储模块,包括:

多个存储设备;以及

存储集线器,包括:

链路接口,用于接收存储器请求,该存储器请求用于访问所 述存储设备中的至少一个;

存储设备接口,连接到所述多个存储设备,该存储设备接口 将存储器请求发送到所述多个存储设备,以访问所述多个存储设备中 的至少一个;

开关,用于选择性地连接该链路接口和该存储设备接口;以 及直接存储器访问(DMA)引擎,通过该开关连接到该存储 设备接口,该DMA引擎生成用于访问所述存储设备中的至少一个的 存储器请求以进行DMA操作。

2、如权利要求1所述的存储模块,其中所述存储集线器是单个 设备中的嵌入式系统,该链路接口、该存储设备接口、该开关和该 DMA引擎都存在于该单个设备中。

3、如权利要求1所述的存储模块,其中所述存储设备接口包括:存储器控制器,通过存储器控制器总线连接到所述开关,并且进 一步通过存储设备总线连接到所述多个存储设备;

写缓冲器,连接到所述存储器控制器,用于存储指向所述存储器 控制器连接到的所述存储设备中的至少一个的存储器请求;以及高速缓冲存储器,连接到所述存储器控制器,用于存储向所述存 储设备提供的或从所述存储设备取回的数据。

4、如权利要求1所述的存储模块,其中所述开关包括交叉开关。

5、如权利要求1所述的存储模块,其中所述多个存储设备是在 存储器操作过程中被同时访问的一组存储设备。

6、如权利要求1所述的存储模块,其中,所述多个存储设备包 括同步动态随机访问存储器。

7、如权利要求1所述的存储模块,其中所述DMA引擎包括:地址寄存器,用于存储DMA操作的开始存储器地址;

目标地址单元,用于存储在该DMA操作中数据将被移到的存储 单元的目标地址;

计数寄存器,用于存储表示在该DMA操作中将被访问的存储单 元数量的计数值;以及下一寄存器,用于存储代表该DMA操作完成的值或代表与链表 相对应的存储器地址的值,该链表包括将被载入该地址寄存器、该计 数寄存器和该下一寄存器的开始存储器地址、计数值和下一存储器地 址。

8、一种用于具有多个存储设备的存储模块的存储集线器,包括:链路接口,用于接收访问所述存储设备中的至少一个的存储器请 求;

存储设备接口,用于连接到所述存储设备,该存储设备接口将存 储器请求发送到所述存储设备,以访问所述多个存储设备中的至少一 个;

开关,用于选择性地连接该链路接口和该存储设备接口;以及直接存储器访问(DMA)引擎,通过该开关连接到所述存储设 备接口,该DMA引擎生成用于访问所述存储设备中的至少一个的存 储器请求,以进行DMA操作。

9、如权利要求8所述的存储集线器,其中该链路接口、该存储 设备接口、该开关和该DMA引擎都是存在于单个设备中的嵌入式系 统。

10、如权利要求8所述的存储集线器,其中所述存储设备接口包 括:存储器控制器,通过存储器控制器总线连接到所述开关,并且进 一步通过存储设备总线连接到所述多个存储设备;

写缓冲器,连接到所述存储器控制器,用于存储指向所述存储器 控制器连接到的所述存储设备中的至少一个的存储器请求;以及高速缓冲存储器,连接到所述存储器控制器,用于存储向所述存 储设备提供的或从所述存储设备取回的数据。

11、如权利要求8所述的存储集线器,其中所述开关包括交叉开 关。

12、如权利要求8所述的存储集线器,其中所述DMA引擎包括:地址寄存器,用于存储DMA操作的开始存储器地址;

目标地址单元,用于存储在该DMA操作中数据将被移到的存储 单元的目标地址;

计数寄存器,用于存储表示在该DMA操作中将被访问的存储单 元的数量的计数值;以及下一寄存器,用于存储代表该DMA操作完成的值或代表与链表 相对应的存储器地址的值,该链表包括将被载入该地址寄存器的、该 计数寄存器和该下一寄存器的开始存储器地址、计数值和下一存储器 地址。

13、一种存储系统,包括:

存储器总线,在该存储器总线上提供存储器请求;以及

至少一个存储模块,连接到所述存储器总线,该存储模块具有多 个存储设备以及存储集线器,该存储集线器包括:链路接口,用于接收访问所述链路接口所在的所述存储模块 的所述存储设备中的至少一个的存储器请求;

存储设备接口,连接到所述多个存储设备,该存储设备接口 将存储器请求发送到所述存储设备,以访问所述存储设备中的至 少一个;

开关,用于选择性地连接所述链路接口和所述存储设备接 口;以及直接存储器访问(DMA)引擎,通过该开关连接到所述存 储设备接口和所述链路接口,该DMA引擎生成用于访问所述存 储设备中的至少一个的存储器请求,以进行DMA操作。

14、如权利要求13所述的存储系统,其中所述存储集线器是单 个设备中的嵌入式系统,该链路接口、该存储设备接口、该开关和该 DMA引擎都存在于该单个设备中。

15、如权利要求13所述的存储系统,其中所述存储器总线包括 高速存储器总线。

16、如权利要求13所述的存储系统,其中所述存储器总线包括 高速光学存储器总线,并且其中所述链路接口包括用于转换光学信号 和电信号的光学存储器总线接口电路。

17、如权利要求13所述的存储系统,其中所述存储系统中包括 多个存储模块,所述多个存储模块中的第一存储模块连接到所述存储 器总线,并且所述多个存储模块中的其余存储模块与所述第一存储模 块串联连接。

18、如权利要求13所述的存储系统,其中在所述存储系统中包 括多个存储模块,并且所述多个存储模块中的每一个模块都通过各自 的链路接口直接连接到所述存储器总线。

19、如权利要求13所述的存储系统,其中所述存储集线器的所 述存储设备接口包括:存储器控制器,通过存储器控制器总线连接到所述开关,并且进 一步通过存储设备总线连接到所述多个存储设备;

写缓存器,连接到所述存储器控制器,用于存储指向所述存储器 控制器连接到的所述存储设备中的至少一个的存储器请求;以及高速缓冲存储器,连接到所述存储器控制器,用于存储向所述存 储设备提供的或从所述存储设备取回的数据。

20、如权利要求13所述的存储系统,其中所述存储集线器的所 述开关包括交叉开关。

21、如权利要求13所述的存储系统,其中存储模块的所述多个 存储设备代表在存储器操作过程中被同时访问的一组存储设备。

22、如权利要求13所述的存储系统,其中所述存储模块的所述 多个存储设备包括同步动态随机访问存储设备。

23、如权利要求13所述的存储系统,其中所述存储集线器的所 述DMA引擎包括:地址寄存器,用于存储该存储系统中DMA操作开始的存储单元 的开始存储器地址;

目标地址单元,用于存储在该DMA操作中数据将被移到的该存 储系统中的存储单元的目标地址;

计数寄存器,用于存储表示在该DMA操作中将被访问的存储单 元的数量的计数值;以及下一寄存器,用于存储代表该DMA操作完成的值或代表与链表 相对应的存储器地址的值,该链表包括将被载入该地址寄存器、该计 数寄存器和该下一寄存器的开始存储器地址、计数值和下一存储器地 址。

24、一种计算机系统,包括:

中央处理单元CPU;

系统控制器,连接到该CPU,该系统控制器具有输入端口和输 出端口;

输入设备,通过该系统控制器连接到该CPU;

输出设备,通过该系统控制器连接到该CPU;

数据存储装置,通过该系统控制器连接到该CPU;

至少一个存储模块,该存储模块包括:

多个存储设备;以及

存储集线器,包括:

链路接口,用于接收访问该链路接口所在的所述存储模 块的所述存储设备中的至少一个的存储器请求;

存储设备接口,连接到所述多个存储设备,该存储设备 接口将存储器请求发送到存储设备,以访问所述存储设备中的至 少一个;

开关,用于选择性地连接所述链路接口和所述存储设备 接口;以及直接存储器访问(DMA)引擎,通过该开关连接到所 述存储设备接口和所述链路接口,该DMA引擎生成用于访问所 述多个存储模块的所述存储设备中的至少一个的存储器请求,以 进行DMA操作;该计算机系统还包括:通信链路,连接在所述系统控制器和所述多个存储模块中的 至少一个之间,用于在所述系统控制器和所述存储模块之间传送 存储器请求和数据。

25、如权利要求24所述的计算机系统,其中所述通信链路包括 高速存储器总线。

26、如权利要求24所述的计算机系统,其中所述存储集线器是 单个设备中的嵌入式系统,该链路接口、该存储设备接口、该开关和 该DMA引擎都存在于该单个设备中。

27、如权利要求24所述的计算机系统,其中所述通信链路包括 高速光学存储器总线,并且其中所述存储集线器的所述链路接口包括 用于转换光学信号和电信号的光学存储器总线接口电路。

28、如权利要求24所述的计算机系统,其中所述计算机系统中 包括多个存储模块,所述多个存储模块中的第一存储模块连接到所述 通信链路,并且所述多个存储模块中的其余存储模块与所述第一存储 模块串联连接。

29、如权利要求24所述的计算机系统,其中所述计算机系统中 包括多个存储模块,并且所述多个存储模块中的每一个模块都通过各 自的链路接口直接连接到所述存储器总线。

30、如权利要求24所述的计算机系统,其中所述存储集线器的 所述存储设备接口包括:存储器控制器,通过存储器控制器总线连接到该开关,并且进一 步通过存储设备总线连接到所述多个存储设备;

写缓冲器,连接到所述存储器控制器,用于存储指向所述存储器 控制器连接到的所述存储设备中的至少一个的存储器请求;以及高速缓冲存储器,连接到所述存储器控制器,用于存储向所述存 储设备提供的或从所述存储设备取回的数据。

31、如权利要求24所述的计算机系统,其中所述存储集线器的 所述开关包括交叉开关。

32、如权利要求24所述的计算机系统,其中存储模块的所述多 个存储设备代表在存储器操作过程中被同时访问的一组存储设备。

33、如权利要求24所述的计算机系统,其中所述存储模块的所 述多个存储设备包括同步动态随机访问存储设备。

34、如权利要求24所述的计算机系统,其中所述存储集线器的 所述DMA引擎包括:地址寄存器,用于存储该存储系统中DMA操作开始的存储单元 的开始存储器地址;

目标地址单元,用于存储在该DMA操作中数据将被移到的该存 储系统中的存储单元的目标地址;

计数寄存器,用于存储表示在该DMA操作中将被访问的存储单 元的数量的计数值;以及下一寄存器,用于存储代表该DMA操作完成的值或代表与链表 相对应的存储器地址的值,该链表包括将被载入该地址寄存器、该计 数寄存器和该下一寄存器的开始存储器地址、计数值和下一存储器地 址。

35、一种在计算机系统中执行存储器操作的方法,该计算机系 统具有处理器、连接到该处理器的系统控制器和具有通过存储器总线 连接到该系统控制器的至少一个存储模块的系统存储器,该存储模块 具有存储集线器和多个存储设备,该存储集线器包括:嵌入其中的链 路接口,用于接收访问所述存储设备中的至少一个的存储器请求;存 储设备接口,用于连接到所述多个存储设备,该存储设备接口将存储 器请求发送到所述存储设备,以访问所述存储设备中的至少一个;开 关,用于选择性地连接该链路接口和该存储设备接口;以及直接存储 器访问(DMA)引擎,通过该开关连接到所述存储设备接口,该DMA 引擎生成用于访问所述存储设备中的至少一个的存储器请求,以进行 DMA操作,该方法包括:

将直接存储器访问(DMA)信息写入该系统存储器中的一个存 储单元,该直接存储器访问(DMA)信息代表用于在没有处理器介 入的情况下、在该系统存储器中执行存储器操作的指令;

从所述处理器和系统控制器获得对所述存储器总线的控制;

使用嵌入在该存储集线器中的DMA引擎访问所述系统存储器中 写入了所述DMA信息的所述存储单元;并且执行所述指令所代表的所述存储器操作。

36、如权利要求35所述的方法,还包括在所述存储器操作的执 行过程中隔离所述系统存储器。

37、如权利要求35所述的方法,其中写入DMA信息包括:写入该系统存储器中的存储单元的开始存储器地址,所述存储器 操作在该开始存储器地址处开始;

写入所述系统存储器中的存储单元的目标地址,在所述存储器操 作过程中数据将被移到该目标地址;

写入表示在所述存储操作中将要访问的存储单元的数量的计数 值;并且写入代表所述存储器操作完成或者代表与链表相对应的存储器 地址的下一存储器地址值,所述链表包含开始存储器地址、计数值和 下一存储器地址值。

38、如权利要求35所述的方法,其中所述系统存储器包括多个 存储模块,并且其中执行所述存储器操作包括访问所述多个存储模块 中的第一存储模块中的存储单元以从其读取数据,并且访问所述多个 存储模块中的第二存储模块中的存储单元以写入所述数据。

39、一种在计算机系统中包括的系统存储器内传输数据的方法, 该计算机系统具有处理器、连接到该处理器的系统控制器和将该系统 控制器连接到该系统存储器的存储器总线,该系统存储器具有若干个 存储模块,每个存储模块具有存储集线器和存储设备,该存储集线器 包括:链路接口,用于接收访问所述存储设备中的至少一个的存储器 请求;存储设备接口,用于连接到所述存储设备,该存储设备接口将 存储器请求发送到所述存储设备,以访问所述存储设备中的至少一 个;开关,用于选择性地连接该链路接口和该存储设备接口;以及直 接存储器访问(DMA)引擎,通过该开关连接到所述存储设备接口, 该DMA引擎生成用于访问所述存储设备中的至少一个的存储器请 求,以进行DMA操作,该方法包括:

将DMA指令写到所述系统存储器中的一个存储单元,该DMA 指令代表用于执行存储器操作以传输数据的指令,所述数据包括与所 述系统存储器中的第一和第二存储单元相对应的存储器地址;

获得对所述存储器总线的控制;以及

在处理器不介入的情况下,使用该系统存储器的存储模块上包括 的DMA引擎,访问该系统存储器中写入了所述DMA指令的所述存 储单元,从所述系统存储器中的所述第一存储单元读取数据,并且向 所述系统存储器中的所述第二存储单元写入所述数据。

40、如权利要求39所述的方法,其中获得对所述存储器总线的 控制包括在所述系统存储器内传输数据时,将所述系统存储器与所述 处理器和系统控制器隔离开。

41、如权利要求39所述的方法,其中写入DMA指令包括:写入所述系统存储器中的存储单元的开始存储器地址,数据传输 在该开始存储器地址处开始;

写入所述系统存储器中的存储单元的目标地址,数据将被传输到 该目标地址;

写入表示在传输所述数据的过程中将访问的存储单元的数量的 计数值;以及写入代表所述数据传输完成,或者代表与链表相对应的存储器地 址的下一存储器地址值,所述链表包括开始存储器地址、计数值和下 一存储器地址值。

42、如权利要求39所述的方法,其中所述系统存储器包括多个 存储模块,并且其中从所述系统存储器中的所述第一存储单元读取数 据包括访问所述多个存储模块中的第一模块中的存储单元以从其读 取数据,而向所述系统存储器中的所述第二存储单元写入所述数据包 括访问所述多个存储模块中的第二模块中的存储单元以写入所述数 据。

说明书 :

技术领域

本发明涉及计算机系统,更具体地说,本发明涉及一种包含具有 存储集线器结构的系统存储器的计算机系统。

背景技术

计算机系统使用诸如动态随机访问存储器(“DRAM”)的存储器 设备来存储由处理器访问的数据。这些存储设备一般用作计算机系统 中的系统存储器。在典型的计算机系统中,处理器通过处理器总线和 存储器控制器与系统存储器进行通信。处理器发出包括诸如读取命令 的存储器命令的存储器请求,和指明从哪个存储单元读取数据或指令 的地址。存储器控制器使用该命令和地址生成适当的命令信号以及行 和列的地址,它们将被应用于系统存储器。响应于该命令和地址,在 系统存储器和处理器之间传输数据。存储器控制器通常是系统控制器 的一部分,该系统控制器还包括用于将处理器总线连接到例如PCI 总线的扩展总线的总线桥电路。
尽管存储设备的运行速度一直在提高,但是运行速度的这种提高 始终跟不上处理器运行速度的提高。将处理器连接到存储设备的存储 器控制器的运行速度的提高甚至更加缓慢。存储器控制器和存储设备 相对缓慢的速度限制了处理器和存储设备之间的数据带宽。
除了处理器和存储设备之间的受限制的带宽以外,计算机系统的 性能还受到反应时间问题的限制,这些反应时间问题增加从系统存储 设备读取数据所需的时间。更具体地说,当存储设备读出命令被耦合 (couple)到诸如同步DRAM(“SDRAM”)器件的系统存储器时, 只有在几个时钟周期的延迟之后才能从SDRAM中输出读取数据。因 此,尽管SDRAM器件能够以高数据速率同步输出突发数据,但是在 最初提供数据中的延时会大大降低使用这种SDRAM器件的计算机 系统的运行速度。
减轻存储器延时问题的一个方法是使用通过存储集线器连接到 处理器上多个存储设备。在存储集线器结构中,系统控制器或存储器 控制器通过高速数据链路连接到几个存储模块。典型地,存储模块以 点对点或者菊链结构相连接,从而存储模块一个接一个地串联在一 起。这样,存储器控制器通过第一高速数据链路连接到第一存储模块, 第一存储模块通过第二高速数据链路连接到第二存储模块,且第二存 储模块通过第三高速数据链路连接到第三存储模块,以菊链形式继续 下去。
每个存储模块包括连接到相应高速数据链路的存储集线器和模 块上的许多存储设备,且存储集线器通过高速数据链路在控制器和存 储设备之间有效地路由存储器请求和响应。采用这种结构的计算机系 统具有较高的带宽,因为当一个存储设备在响应先前的存储器访问的 同时,处理器能够访问另一个存储设备。例如,当系统中的一个存储 设备在准备向处理器提供读取的数据的同时,处理器能够向系统中的 所述存储设备之一输出写入的数据。此外,这种结构也可使系统存储 器容易扩展,而无需考虑例如在传统的多点传输总线结构中发生的增 加更多存储模块时信号质量下降的问题。
尽管使用存储集线器的计算机系统可以提供优异的性能,但是它 们可能会因为各种原因而通常无法在最佳速度下运行。例如,即使存 储集线器能够为计算机系统提供更大的存储带宽,它们仍旧受到上述 类型的延时问题的影响。更具体地说,尽管在一个存储设备准备传输 数据时处理器可以与另一个存储设备通信,但是有时需要在来自一个 存储设备的数据可被使用之前从另一个存储设备接收数据。在必须在 从一个存储设备接收的数据可以被使用之前从另一个存储设备接收 数据的情况下,处理器的介入会继续降低这种计算机系统的运行速 度。这种计算机系统无法在最佳速度下运行的另一原因在于,传统的 存储集线器本质上是单信道系统,因为所有控制、地址和数据信号都 必须通过公共的存储集线器电路。结果,当存储集线器电路忙于与一 个存储设备通信时,它无法空闲下来与另一个存储设备通信。
在计算机系统中已经使用的一项用于克服将数据移入和移出存 储器时的处理器介入带来的问题以及单信道瓶颈的技术是使用直接 存储器访问(DMA)操作。DMA操作通过使用计算机系统中包括的 DMA控制器来实现,其使得能够在没有系统处理器介入的情况下, 将数据移入和移出存储器。这种DMA操作和DMA控制器在本领域 是众所周知的,并且经常在常规计算机系统中使用。DMA控制器消 除了牵涉到处理器的需要,并且管理移入和移出系统存储器的所需的 数据传输。例如,当支持DMA的实体向系统存储器传输数据时,DMA 控制器获得对总线的控制,并且协调从支持DMA的实体向系统存储 器的数据传输,而无需处理器的介入。以这种方式,在通过系统总线 传输数据的过程中可以避免由处理器介入引起的延时问题。但是,在 许多情况下,即使在通过DMA操作已经将数据传输到系统存储器后, 处理器仍然必须在系统存储器内将数据块从一个存储单元移到另一 个存储单元。例如,操作系统会指示一DMA操作把数据从一个大容 量存储器传输到系统存储器中,这样仅使处理器将数据再移到存储器 中的另一个存储单元,所以可以使用该数据。结果,在一定程度上减 少了DMA操作的价值,因为尽管在数据移入和移出系统存储器时使 用了DMA操作,但是最终在存储器里移动数据还是用到了处理器。
因此,需要一种具有存储集线器结构的优点并且还可以使这种系 统中普遍的延时问题最小化的计算机结构。

发明内容

本发明涉及一种用于存储模块的存储集线器,该存储模块具有用 于在系统存储器中进行DMA操作的DMA引擎。该存储集线器包括 链路接口,用于接收访问系统存储器的存储设备中的至少一个的存储 器请求;还包括存储设备接口,用于连接到存储设备,该存储设备接 口将存储器请求耦合到存储设备以访问所述存储设备中的至少一个。 存储集线器还包括用于有选择地连接链路接口和存储设备接口的开 关。另外,直接存储器访问(DMA)引擎通过开关连接到存储设备 接口,以生成用于访问存储设备中的至少一个的存储器请求,从而进 行DMA操作。
在本发明的一个方案中,提供了一种在计算机系统中执行存储器 操作的方法,该计算机系统具有处理器、连接到处理器的系统控制器、 和具有通过存储器总线连接到系统控制器的至少一个存储模块的系 统存储器。该方法包括将表示在系统存储器中执行没有处理器介入的 存储器操作的指令的DMA信息写到系统存储器中的一个存储单元, 从处理器和系统控制器获得对存储器总线的控制,访问写入了DMA 信息的系统存储器中的该存储单元,并且执行由所述指令表示的存储 器操作。

附图说明

图1是根据本发明一个例子的计算机系统的框图,该例中多个存 储模块中的每一个都包含一个存储集线器;
图2是图1的计算机系统中使用的存储集线器的框图;
图3是根据本发明实施例的图2的存储集线器的DMA引擎的一 部分的框图;
图4是根据本发明实施例的图3的DMA引擎使用的标签结构的 框图;以及
图5是根据本发明实施例的图3的DMA引擎的操作流程图。

具体实施方式

本发明的实施例针对一种具有存储集线器结构的系统存储器,该 存储集线器结构具有直接存储器访问(DMA)能力,可以在系统存 储器中传输数据而无需系统处理器介入。为了充分理解本发明,下面 将阐明某些细节。但是,本领域技术人员应该了解,本发明可应用在 没有这些特定细节的情况下。在其它实例中,为了避免使发明不明确, 没有具体示出公知的电路、控制信号和时钟协议。
图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,该输出 设备通过系统控制器110连接到处理器104。一个或多个数据存储设 备124也典型地通过系统控制器110连接到处理器104,以允许处理 器104能够储存数据或者从内部或外部的存储介质(图中未显示)获 取数据。典型的存储设备124的实例包括硬盘、软盘、盒式磁带和只 读光盘存储器(CD-ROM)。
系统控制器110包括存储集线器控制器128,该存储集线器控制 器连接到几个存储模块130a、130b、……130n,这些存储模块用作 计算机系统100的系统存储器。存储模块130优选通过高速链路134 连接到存储集线器控制器128,该高速链路可以是光或电的通信通道 或者某些其它类型的通信通道。在高速链路134是用光通信通道实现 的情况下,该光通信通道例如可以采用一根或多根光纤的形式。在这 种情况下,存储集线器控制器128和存储模块将包括连接到光通信通 道的光学输入/输出端口或者分离的输入和输出端口。
示出的存储模块130是以点对点的设置方式连接到存储集线器 控制器128,在该点对点的设置方式中,通过将存储模块130的存储 集线器140连在一起来形成高速链路134。也就是说,高速链路134 是串联存储集线器140的双向总线。这样,高速链路上的信息必须经 过“上游”存储模块130的存储集线器140,以到达“下游”目的地。 例如,具体参照图1,从存储集线器控制器128发往存储模块130c 的存储集线器140的信息,将经过存储模块130a和130b的存储集线 器140。但是,应理解也可能使用其它拓扑,例如耦合(coupling) 设置方式,在该方式中所述存储模块130中的每一个都通过高速链路 连接到存储集线器控制器128。还可能使用开关(switching)拓扑, 其中存储集线器控制器128通过开关(图中未显示)选择性地连接到 所述存储模块130中的每一个。可能使用的其它拓扑对于本领域技术 人员来说将是显而易见的。
如图1中还示出的,存储集线器通过各自的总线系统150连接到 四组存储设备148。每一组包括四个存储设备148,这样每一存储模 块130总共有20个存储设备148。如本领域已知的那样,总线系统 150通常包括控制总线、地址总线和数据总线。但是,本领域的普通 技术人员应了解,在不脱离本发明的范围的情况下,也可以使用其它 总线系统,诸如使用共享的命令/地址总线的总线系统。还应了解, 在不脱离本发明的范围的情况下,可以修改存储设备148的排列以及 存储设备148的数量。在图1所示的例子中,存储设备148是同步动 态随机访问存储器(“SDRAM”)设备。但是,除了SDRAM设备外,当 然也可能使用其它存储设备。
图2示出根据本发明实施例的存储集线器200的实施例,其可用 于替代图1的存储集线器140。图2中示出的存储集线器200连接到 四个存储设备240a-d,在本例中这四个存储设备是常规的SDRAM设 备。在可选择的实施例中,存储集线器200连接到四组(bank)不同 的存储设备,而非仅四个不同的存储设备240a-d,典型情况下每组有 多个存储设备。但是,为了举例的目的,本说明书将参照连接到四个 存储设备240a-d的存储集线器200。应当意识到,为容纳多组存储设 备而对存储集线器200进行的修改是在本领域普通技术人员的知识 范围之内。
进一步包括在存储集线器200中的是用于将其上设置了存储集 线器200的存储模块分别连接到第一高速数据链路220和第二高速数 据链路222的链路接口210a-d和212a-d。如之前关于图1讨论的那 样,高速数据链路220、222可以使用光或电通信通道或者某些其它 类型的通信通道来实现。链路接口210a-d、212a-d是常规的,并且包 括用于向和从高速数据链路220、222传输数据、命令和地址信息的 电路,例如,本领域所熟知的发射机和接收机逻辑电路。应当了解, 本领域的普通技术人员完全理解对链路接口210a-d、212a-d进行修 改,以使其与特定类型的通信通道一起使用,而且在不脱离本发明的 范围的情况下,可以对链路接口210a-d、212a-d进行这样的修改。例 如,在高速数据链路220、222使用光学通信通道来实现的情况下, 链路接口210a-d、212a-d将包括光学输入/输出端口,并且把通过该 光学通信通道耦合的光信号转换成电信号。
链路接口210a-d、212a-d通过用总线214表示的多个总线和信号 线连接到开关260上多个总线和信号线路。总线214是常规的,并且 包括写数据总线和读数据总线,尽管可能替代使用单条双向数据总线 来通过链路接口210a-d、212a-d在两个方向上耦合数据。本领域普通 技术人员应该了解,总线214是作为例子提供的,并且总线214可能 包括更少或更多的信号线,例如还包括可用于保持高速缓冲存储器一 致性的请求线路和监视(snoop)线路。
链路接口210a-d、212a-d包括使存储集线器140能够在系统存储 器中以多种结构来连接的电路。例如,通过链路接口210a-d或212a-d 将每一存储模块连接到存储集线器128上能够实现多点传输的排列 结构。或者,将存储模块串联能够实现点对点或菊链结构,如图1所 示。例如,可以使用链路接口210a-d来连接第一存储模块,且可以 使用链路接口212a-d来连接第二存储模块。存储模块将通过一组链 路接口连接到处理器或系统控制器,并且进一步通过另外一组链路接 口连接到另一存储模块。在本发明的一个实施例中,存储模块的存储 集线器200以点对点的排列方式连接到处理器,在这种排列方式中, 没有其它设备连到处理器104和存储集线器200之间的连接上。由于 几个原因,这种类型的互连提供了处理器104和存储集线器200之间 更好的信号耦合,这些原因包括相对低的电容、反射信号的线路中断 比较少以及信号通道比较短。
开关260还连接到四个存储接口270a-d,这四个存储接口依次分 别连接到系统存储器设备240a-d。通过分别为每一系统存储器设备 240a-d提供分离且独立的存储接口270a-d,存储集线器200可避免单 信道存储结构中典型地发生的总线或存储库(memory bank)冲突。 开关260通过用总线274表示的多个总线和信号线连接到每一存储接 口。总线274包括写数据总线、读数据总线和请求线路。但是,应理 解,也可选择地使用单个双向数据总线来代替分离的写数据总线和读 数据总线。此外,总线274可包括比之前所述的更多或更少数量的信 号线。
在本发明的实施例中,每一存储接口270a-d专门适合于与之相 连的系统存储设备240a-d。更具体地说,每一存储接口270a-d专门 适用于提供和接收由与之相连的系统存储设备240a-d分别收到的和 生成的特定信号。而且,存储接口270a-d能够与在不同时钟频率下 工作的系统存储设备240a-d一起工作。结果,存储接口270a-d使处 理器104和存储集线器200与连接到存储集线器200的存储设备 240a-d之间的接口处可能发生的变化相隔离开,并且它提供存储设备 240a-d可能界面连接到的更受控制的环境。
连接链路接口210a-d、212a-d和存储接口270a-d的开关260可 以是各种常规的或下文中进一步阐明的开关中的任何一种。例如,开 关260可以是交叉(Cross-bar)开关,它能够以多种设置同时使链路 接口210a-d、212a-d和存储接口270a-d彼此连接。开关260也可以 是一组多路转接器,它不提供与交叉开关相同程度的连通性,但可以 把链路接口210a-d、212a-d中的一些或全部连接到存储接口270a-d 中的每一个。开关260还可以包括仲裁逻辑(图中未显示),以确定 哪一个存储器访问应该收到高于其它存储器访问的优先级。执行这个 功能的总线仲裁为本领域技术人员所熟知。
进一步参考图2,每一存储接口270a-d包括各自的存储器控制器 280、各自的写缓冲器282和各自的高速缓冲存储单元284。存储器 控制器280通过向与其连接的系统存储器设备240a-d提供控制、地 址和数据信号,并且接收来自与其连接的系统存储器设备240a-d的 数据信号来执行与常规存储器控制器相同的功能。写缓冲器282和高 速缓冲存储单元284包括缓冲器和高速缓冲存储器的普通部件,如本 领域中所熟知的标签存储器、数据存储器、比较器等等。写缓冲器 282和高速缓冲存储单元284中使用的存储设备可以是DRAM设备、 静态随机访问存储器(“SRAM”)设备、其它类型的存储设备,或者 这三者的组合。此外,这些存储设备中的任何一个或全部,以及其它 用于高速缓冲存储单元284的部件可以是嵌入的或单机(stand-alone) 设备。
每一存储接口270a-d中的写缓冲器282用于在处理读请求时存 储写请求。在这样的系统中,处理器104可以向系统存储器240a-d 发出写请求,即使该写请求所针对的存储设备正在忙着处理在前的写 或读请求。使用这样的方法,可以次序颠倒地处理存储器请求,因为 在处理后来的读请求时可以把较早的写请求存储在写缓冲器282中。 缓冲写请求以允许处理读请求的能力能够大大减少存储器读出延时, 因为可以给读请求第一优先级而不管它们的时间先后排列顺序。例 如,可以在写缓冲器282中存储一系列中间夹杂着读请求的写请求, 以允许以流水线的方式处理读请求,然后以流水线方式处理写请求。 结果,可以避免将写请求耦合到存储设备270a-d与随后将读请求耦 合到存储设备270a-d之间的、用于交替写和读请求的冗长的处理时 间。
在每个存储接口270a-d中使用高速缓冲存储单元284,使得处理 器104能够响应针对各个系统存储设备240a-d的读命令来接收数据, 而不需要在数据刚刚从该存储设备240a-d读出或写入的情况下,等 待存储设备240a-d提供该数据。这样,高速缓冲存储单元284减少 了系统存储器设备240a-d的读取延时,使计算机系统的存储器带宽 最大。类似地,处理器104可以将写数据存储在高速缓冲存储单元 284中,然后在同一存储接口270a-d中的存储器控制器280将写数据 从高速缓冲存储单元284传输到与之相连的系统存储设备240a-d时, 执行其它功能。
存储集线器200还包括通过总线288连接到开关260的DMA引 擎286,该DMA引擎使得存储集线器200能够把数据块从系统存储 器中的一个存储单元移到系统存储器中的另一个存储单元,而无需处 理器104的介入。总线288用于处理系统存储器中的数据传输,其包 括多个常规总线线路和信号线路,例如地址、控制、数据总线等等。 如下文中将详细描述的,DMA引擎286能够读取系统存储器中的链 表来执行DMA存储器操作,而没有处理器的介入,由此将处理器104 和带宽受限制的系统总线从存储操作的执行中解脱出来。DMA引擎 286优选是存储集线器200中的嵌入式电路。但是,连接到存储集线 器200的分离式DMA设备也在本发明的范围之内。另外,DMA引 擎286可以包括容纳多信道上的DMA操作的电路。这样的多信道 DMA引擎在本领域是众所周知的,并且可以用常规技术来实现。
在本发明的实施例中,处理器104在系统存储器中写入DMA引 擎286将要执行的指令列表。指令包括DMA引擎286进行DMA操 作所使用的信息,诸如要移动的块的开始地址、结束地址或计数、目 的地址、下一命令块的地址等等。DMA引擎286将执行一系列连续 的命令,然后如果有指示的话,将跳转到下一命令列表。通过存在于 一个或多个存储器空间中的数据结构来程序控制DMA引擎286。该 数据结构由一定数量的命令块组成,这些命令块提供在系统存储器中 进行数据传输操作所需的信息。每一命令块可以通过一系列地址指针 相连接,从而形成链表。链表中的第一命令块的地址通过I/O空间被 程序控制。DMA引擎286被指示通过I/O空间命令寄存器来取出并 执行第一命令块。执行请求的数据操作后,使用第一命令块的地址指 针将DMA引擎286指向下一个命令块。每个相继的命令块中的地址 指针被用来取出并执行下一命令块,这些地址指针形成链表。执行链 表中的每一命令块直到遇到NULL指针。例如把NULL指针定义成 全由1构成的地址。一旦检测到NULL指针,命令块的执行将中止, 并且设置表示命令流已经结束的状态比特。在存储集线器200中的 I/O寄存器中可以包含完成状态。另外,还可以使用开始标记来指示 DMA引擎286已经开始执行DMA操作。其它状态比特可以指示命 令流是无错误地正常结束,还是由于错误而非正常结束。状态信息可 能会向主机任选地生成中断。
在本发明的替代实施例中,DMA引擎286还可以用于在系统中 进行诊断。可以将已知的好的数据模式载入到存储集线器200的存储 器中或已知的好的系统存储器中,并且使用该数据模式来测试系统存 储器。这类应用的详细描述参见在[递交日]递交的题为“SYSTEM AND METHOD FOR ON-BOARD DIAGNOSTICS OF MEMORY MODULES”的共同转让、共同待审的美国专利申请NO.____,这 里引入该申请作为参考。
图3是示出DMA引擎300的部分的框图,而图4是示出根据本 发明实施例的链接的命令列表400的框图。DMA引擎300可以代替 存储集线器200的DMA引擎286(图2)。应了解,图3只是DMA 引擎300的代表,为了实现本发明,这里已向本领域普通技术人员提 供了充分的描述。但是,还应当意识到,在不脱离本发明范围的情况 下也可以使用另外的DMA引擎。DMA引擎300包括五个用以控制 DMA操作的寄存器:地址寄存器310、目的地地址寄存器311、控制 寄存器312、下一寄存器314和计数寄存器316。
在操作过程中,开始数据块传输时,将该数据块的开始地址载入 到地址寄存器310中。另外,将数据将被移向的存储单元的目的地地 址载入到目的地地址寄存器311中,并且将数据块长度载入到计数寄 存器316中。控制寄存器312包含与传输相关的信息,诸如指示在每 一数据项被传输后地址寄存器310是要增加还是减小的比特。在本实 例中,DMA引擎300每转移一次数据项,计数寄存器316减小,而 地址寄存器310增加。另外,目的地地址寄存器311增大(或者减小, 取决于控制设置)。当计数寄存器316的值达到零,则数据块传输完 毕。此时,检查下一寄存器314中的值。如果它指向系统存储器中的 有效位置,则将该对象中包含的值载入寄存器310、312、314和316 中。然后自动开始下一数据块的传输。但是,如果下一寄存器314中 存在的是如前所述的NULL值,则DMA操作结束。
图4中示出的链接的命令列表400包含多个链接项402、404和 406,它们中的每一个包含重载寄存器310、312、314、316所需的信 息。链接项402、404和406存储在系统存储器中,如前所述,并且 通过对应于下一寄存器314的指针链接在一起。图4中示出三个链接 项402、404和406。这些链接项,加上定义为将值直接写入DMA引 擎300的寄存器310、312、314和316中的初始传输,定义了具有四 个分离部分的单个DMA传输。下一寄存器314中包含的值NEXT指 向第一链接项402。第一链接项402指向链接的命令中的下一链接项 404,而链接项404又指向最终链接项406。最终链接项406包含NULL 值作为指针,表示它是DMA命令列表的最后的链接项。NULL值是 不指向有效的存储单元的保留指针,并且DMA引擎300将其解释为 不指向任何东西的指针。应当意识到,链接项402、404和406是作 为例子提供的,在不脱离本发明的范围的情况下可以对其进行修改, 诸如包含比图4示出的更多或者更少的信息域。
图5是示出DMA引擎300(图3)进行一系列连续数据块传输 所使用的控制流程的流程图500。在步骤502,DMA寄存器310、312、 314和316中载入用于第一数据传输的适当的值。这时,不论在直接 载入寄存器之前或是之后,必须把用于本次传输的链接项所需的所有 信息载入到链接的命令列表400(图4)中。寄存器的载入由处理器 104(图1)控制,并且系统存储器中的链接的命令列表400的载入 也由处理器104完成。
在步骤504,传输一个数据项,而在步骤506,计数寄存器316 中的值减小以表示已经传输了一个数据项。步骤506包括同时增大或 减小地址寄存器310的值,这取决于控制寄存器312中设置的理想方 向。在步骤508,检查计数值来确定是否已经计数完毕。在本发明的 一个实施例中,通过检查来自计数寄存器316的完成比特(图中未显 示)来实现是否已经计数完毕的确定。如果计数值表示数据传输没有 完毕,则控制返回到步骤504。但是,如果计数寄存器316中的计数 值等于零,则控制转到步骤510,在步骤510,检测下一寄存器314 中的值,看它是否等于如前所述的NULL值。如果不存在NULL值, 则在步骤512,将下一标签从链接的命令列表400载入到DMA控制 器300中的寄存器310、312、314和316中,并且控制返回步骤504。 一旦使用了最后的链接项,则在步骤514向处理器104做出传输完毕 的指示。
本领域普通技术人员应了解,DMA引擎300实现在系统存储器 中“分散-集合”的能力。当要把大数据块读入不连续的存储器块时, 处理器104分配存储器,并且通过DMA引擎300建立链接的命令列 表400。这样发起DMA传输,并且DMA引擎300处理整个传输直 到其完成。可以使用类似技术来集合系统存储器中分散的数据块,从 而将它们写入连续的存储器块。处理器104确定在系统存储器中移动 写哪些块,以及它们的顺序,然后通过DMA引擎300建立链接的命 令列表400。这样,启动DMA传输,并且DMA引擎300完全处理 该传输直到其完成。由于链接的命令列表400存储在系统存储器中, 因此例如可以为DMA引擎300支持的每一信道保持几个链接的列 表。此外,由于链接的命令列表400存储在系统存储器中,因此对于 一个信道来说可能链接成一个更大传输的分离传输的数量的唯一限 制是在系统存储器中保留的空闲存储单元的数量。
从前文所述应了解,尽管为了说明的目的,在此描述了本发明的 具体实施例,但是在不脱离本发明的精神和范围的情况下,可以做出 各种修改。因此,本发明仅受所附的权利要求书的限制。