专利名称:在dram存储器中处理写屏蔽的方法
技术领域:
本发明 一般涉及一种用于处理写屏蔽操作的方法,并且具体地涉及一 种在DRAM存储器系统中处理写屏蔽操作的方法。
背景技术:
极高数据速率(XDRTM)存储器系统包括三个主要半导体部件存储 器控制器,至少一个XDR输入输出单元(XIO ),以及可从California 94022, Los Altos, 4440EL Camino Real的Rambus 7>司获得的XDR DRAM。通 过使用XDR DRAM,到达和来自存储器的数据传输速率已被急剧地增加。
XDR存储器系统中的写操作将数据块存储在XDR DRAM中。偶尔, 需要存储比一个块更少的数据。然而,XDR写操作只支持向XDR DRAM 传输完整的数据块。对于比一个块更小的写,存储器控制器使用写屏蔽操 作来存储数据。在传统的DRAM存储器系统中,系统使用单个屏蔽位来 屏蔽字节,或者存储器控制器完全不对DRAM进行写。然而,在XDR存 储器系统中,字节屏蔽值伴随写屏蔽操作,从而整个数据块总是被传输到 DRAM。当屏蔽字节值以块的形式出现时,XDR DRAM不写相应的存储 器位置。在不是XDR存储器系统的其它存储器系统中通过使用字节屏蔽 值来确定对哪些实际存储器位置进行写,字节屏蔽值可以伴随写屏蔽操作 并且可以写整个数据块。已经针对仅作为例子的XDR存储器系统描述了 本发明的实施例。
写屏蔽操作由存储器控制器与XIO协作实现。存储器控制器向XIO 发出必要的命令,其包括读和写命令。对于XDR存储器系统中的写屏蔽 操作,存在两个传统的过程。 一个过程必须对所述写数据进行搜索以使用 两端口数据緩冲器确定屏蔽值。为了这样做,保持着所述写数据的片上緩 沖器具有两个端口,从而所述写緩冲器中的两个位置可同时^皮读。 一个端 口读所述写数据并计算所述屏蔽值,而另 一个端口在数据总线上发送所述
写数据。这两个端口是必须的,因为用于写操作的数据需要^f皮读两次;一 次用于屏蔽计算而一次是将数据与所包括的屏蔽值一起发送给DRAM。两 端口阵列比起单端口阵列占据了大得多的空间。实现具有单端口阵列的写 屏蔽操作的能力将提供对传统方法的极大改善。
另一个传统过程包括推测性的屏蔽生成。使用这个过程,系统推测屏 蔽值并且在数据传输期间检查所述屏蔽值。如果推测性的屏蔽值是在数据 分组中,则系统发出带有不同屏蔽值的第二个写。此过程可导致两个连续 的写操作,其导致不必要的延迟。显然, 一种用于在存储器系统中处理写
屏蔽操作的修改后的方法将改善系统性能。
发明内容
本发明提供了一种用于在存储器系统中处理写屏蔽操作的方法、装置 和计算机程序产品。所述修改后的写屏蔽操作改善了这些操作所带来的延 迟并且减少了片上的面积的量。在说明性的实施例中,在存储器控制器与 DRAM之间传输的数据块被称作高速緩存块或数据分组并且是128字节。 所述存储器系统在必须将少于一个高速緩存块的数据写到DRAM时使用 写屏蔽操作。针对这种类型的操作,系统必须对将不被存储的数据字节进 行屏蔽。为了节省片上的空间,当接收到数据时所述修改后的方法实现用 于写屏蔽操作的屏蔽生成,其消除了对两端口阵列的需要。
在本发明中,存储器控制器同时对数据分組到写緩冲器和纠错码 (ECC)生成模块的传送进行控制。所述写緩沖器存储所迷数据分组直到 所述存储器控制器发出屏蔽写命令为止。所述ECC生成模块生成ECC值 并且将这个值添加到所述数据分组。所述ECC生成模块将所述数据分组 传送到所述屏蔽生成模块用于执行屏蔽计算。只需要较少的逻辑用于所述 屏蔽计算,因为所述屏蔽计算模块只对256个可能的字节值中的144个进 行解码。屏蔽阵列存储所述屏蔽值。命令生成模块创建包括了所述屏蔽值 的写屏蔽命令。当所述存储器控制器发出所述写屏蔽命令时,所述写緩冲 器将已存储的数据分组传送到独立的ECC生成模块,其中它将所述ECC
值添加到所述数据分組。所述ECC生成模块和屏蔽阵列分别将所述写数 据分组和所述屏蔽值输入到一组字节宽的复用器。所述存储器控制器将屏 蔽写命令发送到DRAM,并且控制信号指导所述复用器屏蔽与所述屏蔽值 相等的数据分组中的字节。接着,DRAM存储所述被屏蔽的数据分组。
为了更完整地理解本发明和其中的优点,现在参考以下结合附图所做
的描述,在附图中
图1是图示了在XDRTM存储器系统中实现写屏蔽操作的装置的框图2是图示了在写屏蔽操作中实现屏蔽值生成的装置的框图3是图示了用于计算和存储用于写屏蔽操作的屏蔽值的过程的流程
图;以及
图4是图示了用于传送用于写屏蔽操作的被屏蔽的写数据的过程的流 程图。
具体实施例方式
在以下讨论中,阐述了许多具体细节以提供对本发明的透彻的理解。 然而,本领域的技术人员将意识到可以不以这种具体细节来实现本发明。 在其它例子中,已经以框图的形式图示了公知的组件,目的是不会在不必 要的细节上混淆本发明。另外,对于大多数部分,关于网络通信、电磁信 令技术等细节都被省略了 ,因为这种细节不净皮认为对于获得对本发明的完 整的理解而言是必要的,并且被认为是在相关领域的普通技术人员的理解 范围内。
参考附图中的图1,标号100 —般地标明图示了在存储器系统中完成 写屏蔽操作的装置的框图。在这个实施例中,存储器系统包含两个半个的 存储器控制器(未示出)、两个XIO (未示出)和多个DRAM (未示出)。 所述存储器控制器中的每个半个与特定的XIO协作工作,并且这些部件一 起控制前往和来自DRAM的数据传送。所述系统使用系统总线102来传 送数据。在这个例子中,每个写数据分组(高速緩存块)包含128字节。
在每次传送中一个高速緩存块的数据在所述系统总线102上占8拍(每拍 16个字节)。所述存储器控制器对所述写数据分组到写緩冲器0 112或写 緩冲器1 114的传送进行控制。写緩冲器0 112对应着特定的XIO而写緩 冲器l 114对应着另一个XI0。所述写緩冲器112或114存储所述写数据 分组,直到来自所述存储器控制器的命令开始所述写操作为止。所述存储 器系统优选地是XDR存储器系统而所述DRAM优选地是XDR DRAM。
所述存储器控制器还对所述写数据分组到纠错码(ECC )生成模块104 的传送进行控制。作为响应,模块104生成ECC值,其将被添加到所述 写数据分组以确保所述屏蔽生成模块106不会生成与所述写数据或所述 ECC字节值相匹配的字节值。具体地,所述ECC生成模块104在每个循 环中(8个循环用于一个高速緩存块)将两字节或16比特的纠错码添加到 所述写数据分组。ECC生成在相关领域中是公知的。在ECC生成之后, 在每个循环中18字节的数据被传送到屏蔽生成模块106。对于一个高速緩 存块,存在144字节(128字节的数据,16字节的ECC)。
所述屏蔽生成模块106产生1字节或8比特屏蔽值,其与所述写数据 分組相关联(在图2中进行了更详细地描述)。然而,所述屏蔽值不会与 所述写数据字节值或所述ECC字节值(共144字节)中的任何一个相匹 配。所述屏蔽值充当"过滤器"以屏蔽将不会被存储的块中的数据字节。 所述屏蔽生成^=莫块106将所述8比特屏蔽值传送给屏蔽阵列0 108或屏蔽 阵列1 110。屏蔽阵列108或110存储所述屏蔽值直到所述存储器控制器开 始生成写屏蔽命令为止。再一次,屏蔽阵列0 108对应着特定的XIO而屏 蔽阵列1 IIO对应着另一个XIO。因此,屏蔽阵列0 108和写緩沖器0 112 通过相同的XIO提供写屏蔽数据,而屏蔽阵列1 110和写緩冲器1 114通 过另 一个XIO提供写屏蔽数据。
所述存储器控制器对从屏蔽阵列0 108到所述命令生成^=莫块116的屏 蔽值的传送进行控制,所述命令生成模块116接着使用屏蔽值来生成写屏 蔽命令0 120 (其在RQ总线上被传送给DRAM)。所述命令0 120告诉 所述DRAM (未示出)不存储与所述屏蔽值相匹配的任何字节值。所述写 緩冲器0 112连接到ECC生成模块130,其生成ECC值并将它们添加到
所述写数据分组。所述ECC生成模块130馈给MUX (复用器)0 134,其 还具有屏蔽阵列0 108的输入。所述存储器控制器设置MUXO 134,基于 所述MUXO,所述高速緩存块中的哪一部分应当被写(剩余部分通过将屏 蔽值复用为每个被屏蔽的数据字节而被屏蔽)。MUX0 134的输出是写数 据0 122,其在tdata总线上被传送给DRAM。从那里,所述存储器控制器 控制由所述XIO所进行的所述写数据0 122的传送,以在正确的DRAM 中存储被屏蔽的数据。在所述tdata总线上,每个循环中,8字节数据和1 字节ECC的一拍被写到正确的DRAM,并且在16个循环上给出了 144字 节的数据(128字节的写数据和16字节的ECC数据)。
屏蔽阵列1110、写緩冲器1114、命令生成模块118、 ECC生成模块 132以及MUX1 136是上面所描述的部件的镜像,并且以相同的形式操作。 这些细节中的许多是对于实现方式所特定的,并且仅被用于描述本发明的 一个实施例。
通过将所述屏蔽值添加到所述写数据和所述写屏蔽命令,所述XDR 存储器系统可将合适的数据写到DRAM。所述命令中的屏蔽值告知所述 DRAM所述屏蔽字节的值并且它应该用这个值来屏蔽字节。图1中,仅有 屏蔽生成逻辑106的一个例子。这个逻辑106生成用于两个XIO的屏蔽值。 来自所述存储器控制器的写命令指示出数据被写到哪一个DRAM。此外, 当接收到数据时进行所述屏蔽生成,其消除了对两端口阵列的需求。两端 口阵列分别被屏蔽阵列108或110以及单端口写緩冲器112或114所替代。
参考图2,标号106 —般地标明图示了在写屏蔽操作中完成屏蔽值生 成的装置的框图。所述屏蔽生成操作106具有两个部件。首先,计数(tally) 模块202接收写数据分组,其是每个循环18字节,并且跟踪(计数)到来 的数据中的字节值。计数模块202将指示出是否发现特定数据字节值的输 出信号(如果发现了则为"1",如果没有发现则为"0")传送给寻找第 一个零模块204。接着,如果所述寻找第一个零模块204在这些计数输出 中发现"0"(其指示出由"0"所代表的所述字节值不在所迷写数据分组 中),则它将所述字节值编码为8比特屏蔽值。
对于写操作,因为每个字节是8比特,所以它遵循计数模块202应该
跟踪针对整个256个可能字节值的字节值。然而,对于此实施例,为了节 省片上的面积,计数模块202只在到来的字节值内寻找特定组的值。在这 个例子中,计数202将最大144个(18字节乘以8拍)可能的字节值与到 来的字节值进行比较以发现每个字节的匹配。所述计数202具有针对它所 寻找的144个字节值中的每个字节值的单个输出比特。输入是每个循环18 字节,因此计数202具有18个单个的8到144解码器(256个可能字节值 中哪144个字节值被解码和跟踪是完全任意的,并且其被选择来限制所需 要的逻辑)。这些144个输出中的每个输出前往144个单元(未在计数202 中示出)。接着,每个单元接收18个输入(每个输入字节一个单元),并 且如果这些输入中的任何一个是开,则它设置输出。在数据(高速緩存块) 的8个循环的结束处,计数202输出是有效的,以指示出所述高速緩存块 是包含所述字节("1")还是所述高速緩存块不包含所述字节("0")。 存在复位信号以复位每个高速緩存块之间的所有计数。
计数202将它的输出传送到所述寻找第一个零模块204。所述模块204 从所述计数输出中寻找第一个零(或者作为替代寻找任何零)。它使用所 述计数输出来选择屏蔽值。如果所有的所述计数输出都是'T,,则所述模 块204未看见第一个零,因此它输出在计数解码器中不被使用的默认字节 值。所述默认字节值被实现,从而此字节值不可能存在于到来的写数据分 组内。如果在所述计数输出中存在零,则所述寻找第一个零模块204选择 它发现的第一个零并且将它编码为与所述零相关联的字节值。这指示出在 到来的数据分组中未发现所相关联的字节值(其现在是屏蔽值)。模块204 将所述屏蔽值传送给屏蔽阵列0 108或屏蔽阵列1110。这些细节中的许多 是针对实现特定的,并且对其进行详细描迷仅用来提供对本发明的更好的
参考图3,标号300 —般地标明图示了用于计算和存储用于写屏蔽操 作的屏蔽值的过程的流程图。首先,存储器控制器发出命令用于写屏蔽操 作302。接着,ECC生成模块生成ECC值并将它添加到写数据分组204。 所述存储器控制器独立地控制所述写数据在写緩沖器312中的存储。屏蔽 生成模块计算针对所述写数据分组的屏蔽值306。所述存储器控制器控制
所述屏蔽值在阵列中的存储308。最后,命令生成^^莫块生成包括所述屏蔽 值的写命令310。
参考附图中的图4,标号400 —般地标明图示了用于传送用于写屏蔽 操作的被屏蔽的写数据的过程的流程图。在屏蔽生成模块产生屏蔽值以及 命令生成模块生成包括所述屏蔽值的写屏蔽命令300之后,存储器控制器 对被屏蔽的写数据到DRAM的传输进行控制400。首先,所述存储器控制 器发出带有屏蔽值的写命令402。接着,所述存储器控制器指导写緩冲器 传送所述写数据404。所述存储器控制器发出命令以将ECC值和屏蔽值添 加到所述写数据406。最后,所述存储器控制器对所述被屏蔽的数据到 DRAM的传送进行控制408。通过在存储器系统中使用写屏蔽操作,实现 比整个高速緩存块更小的写,这就是这一过程。
权利要求
1.一种用于在包含多个缓冲器和多个动态随机存取存储器的动态随机存取存储器的存储器系统中处理写屏蔽操作的方法,所述存储器系统只支持整个数据分组的传输,所述方法包括以下步骤在多个写缓冲器中的至少一个中存储数据分组;独立地对所述数据分组执行屏蔽计算以确定屏蔽值;在多个屏蔽缓冲器中的至少一个中存储所述屏蔽值;生成使用所述屏蔽值的屏蔽写命令;响应于所述屏蔽写命令屏蔽所述数据分组;以及在所述多个动态随机存取存储器中的至少一个里存储未被屏蔽的数据分组的仅仅一部分。
2. 根据权利要求l所述的方法,其中所述执行步骤进一步包括在执 行屏蔽计算前针对所述数据分组计算纠错码以确定纠错码值,以及将所述 纠错码值添加到所述数据分组。
3. 根据权利要求2所述的方法,其中所述执行步骤进一步包括寻找 未被包含在所述数据分组或所述纠错码值里的屏蔽值。
4. 根据权利要求3所述的方法,其中所述寻找屏蔽值的步骤进一步包 括对等于所述数据分组的字节长度的多个字节值进行解码。
5. 根据权利要求l所述的方法,其中所述屏蔽步骤进一步包括在屏 蔽所述数据分组之前对所述数据分组执行纠错码计算以确定纠错码值,以 及将所述纠错码值添加到所述数据分组。
6. 根据权利要求5所述的方法,其中所述屏蔽步骤进一步包括通过组。
7. —种用于在动态随机存取存储器的存储器系统中处理写屏蔽操作的 装置,所述存储器系统只支持整个数据分组的传输,所述装置包括 至少 一个至少被配置成存储数据分组的写緩冲器;至少一个至少被配置成生成针对所述数据分组的屏蔽值的屏蔽生成模块;至少 一个至少被配置成存储所述屏蔽值以及与所述至少 一个屏蔽生成 模块相接口的屏蔽阵列;至少一个复用器,其至少被配置成从所述至少一个写緩沖器接收所述数据分组的输入以及从所述至少一 个屏蔽阵列接收所述屏蔽值;以及 输出被屏蔽的数据分组;以及至少一个至少被配置成存储所述被屏蔽的数据分组的动态随积存取存 储器。
8. 根据权利要求7的所述装置,其中所述装置进一步包括至少一个至少被配置成生成使用所述屏蔽值的写屏蔽命令以及与所述至少一个屏蔽 阵列相接口的命令生成模块。
9. 根据权利要求8所述的装置,其中所述至少一个复用器^f皮至少配置 成响应于所述写屏蔽命令输出被屏蔽的数据分组。
10. 根据权利要求7所述的装置,其中所述装置进一步包括至少一 个纠错码生成模块,其至少被配置成对所述数据分组执行纠错码计算、将 所述纠错码值添加到所述数据分组、以及与至少一个屏蔽生成冲莫块相接口 。
11. 根据权利要求10所述的装置,其中所述至少一个屏蔽生成模块被 至少配置成生成未被包含在具有所述纠错码值的数据分组内的屏蔽值。
12. 根据权利要求ll所述的装置,其中所述至少一个屏蔽生成模块至 少被配置成对等于所述数据分组的长度的多个字节值进行解码以寻找所述 屏蔽值。
13. 根据权利要求7所述的装置,其中所述装置进一步包括至少一 个纠错码生成模块,其至少被配置成对所述数据分组执行纠错码计算、将 所述纠错码值添加到所述数据分组、以及与所述至少一个写緩冲器相接口 。
14. 根据权利要求7所述的装置,其中所述至少一个复用器至少:帔配 置成对等于所述屏蔽值的数据分组的各部分进行屏蔽。
15. —种用于在包含多个緩沖器和多个动态随4几存取存储器的动态随 机存取存储器的存储器系统中处理写屏蔽操作的计算机程序产品,所述存 储器系统只支持整个数据分组的传输,所述计算机程序产品包括用于在多个写緩沖器中的至少一个中存储数据分组的计算机代码; 用于独立地对所述数据分组执行屏蔽计算以确定屏蔽值的计算机代码;用于在多个屏蔽緩沖器中的至少一个中存储所述屏蔽值的计算机代码;用于生成使用所述屏蔽值的屏蔽写命令的计算机代码; 用于响应于所述屏蔽写命令屏蔽所述数据分组的计算机代码;以及 用于在所述多个动态随机存取存储器中的至少一个中存储被屏蔽的数 据分组的计算机代码。
16. 根据权利要求15所述的计算机程序产品,其中用于对所述数据分 组执行屏蔽计算的所述计算机代码进一步包括在执行屏蔽计算前对所述 数据分组执行纠错码计算以确定纠错码值、以及将所述纠错码值添加到所 述数据分组。
17. 根据权利要求16所述的计算机程序产品,其中用于执行屏蔽计算 的所述计算机代码进一步包括寻找未被包含在所述数据分组或所述纠错 码值里的屏蔽值。
18. 根据权利要求17所述的计算机程序产品,其中用于寻找屏蔽值的 所述计算机代码进一步包括对等于所述数据分组的字节长度的多个字节 值进行解码。
19. 根据权利要求15所述的计算机程序产品,其中用于响应于所述屏 蔽写命令屏蔽所述数据分组的所述计算机代码进一步包括在屏蔽所述数据分组之前对所述数据分组执行纠错码计算以确定纠错码值,以及将所述 纠错码值添加到所述数据分组。
20. 根据权利要求19所述的计算机程序产品,其中用于响应于所述写 屏蔽命令屏蔽所述数据分组的所述计算机代码进一步包括通过对等于所述屏蔽值的数据分组的各部分进行屏蔽来生成被屏蔽的数据分组。
全文摘要
提供了一种用于在DRAM存储器系统中对写屏蔽操作进行处理的方法、装置和计算机程序产品。本发明消除了对两端口阵列的需求,因为当接收到数据时就进行屏蔽生成。需要更少的逻辑用于屏蔽计算,因为256个可能的字节值中的仅仅144个被解码。所述屏蔽值被生成并被存储在屏蔽阵列中。写数据被独立地存储在写缓冲器中。所述屏蔽值被用于生成写屏蔽命令。一旦所述写屏蔽命令被发出,则所述写数据和所述屏蔽值就被传送到复用器。所述复用器使用所述屏蔽值对所述写数据进行屏蔽,从而所述被屏蔽的数据可被存储在DRAM中。
文档编号G11C7/10GK101176159SQ200680016129
公开日2008年5月7日 申请日期2006年5月16日 优先权日2005年5月17日
发明者C·R·约翰斯, K·H·哈塞尔霍斯特, P·A·甘费尔德, P·P·刘 申请人:国际商业机器公司