器信道CH (η)。在步骤204中确定η是否等于m-1。如果是,那么在步骤206中将对应于DATn的纠错码ECCn同时并行写入到信道CH(Start),其中start为这个写入周期的初始值η。如果否,那么在步骤208中将纠错码写入到信道CH (n+1)。应注意,尽管步骤202、204、206和208的操作在流程图上按次序出现,但是在实践中算法被建立成同时进行这些操作,以使得在任何给定的写入操作期间有对两个独立的信道的同时并行写入。写入操作的一部分将数据写入到一个信道,并且相同的写入操作的另一部分将对应于那个数据的ECC码同时写入到另一信道。
[0028]如果在步骤206中将ECCn写入到CH(start),那么步骤210确定写入操作是否完成。如果是,那么在步骤214中过程结束。如果在步骤210中写入操作未完成,那么在步骤216中将η重设为另一任意或预定起始值并且在步骤202中写入过程继续。如果在步骤208中将ECCn同时并行写入到CH(n+1),那么在步骤218中递增η并且在步骤202中写入操作再次继续。
[0029]只要起始值在写入周期之间变化,每个额外写入序列的η的起始值“start”的变化可以是任意或根据特定算法或模式遵循特定序列。一般来说,改变起始值η的原因是保持或扩大信道带宽,而同时提供甚至更多的使用存储器信道。使用多个信道带宽比单个信道带宽在将数据传送到存储器或从存储器传送数据时提供改进的通信速度。
[0030]在图6的流程图中概述在读取操作期间控制数字存储器错误检测和纠正的第二读取实施方案。这里我们再次具有具m-Ι个信道的存储器的多信道存储器模块,其中η等于起始值“start”并且start ^ O0与图4中默认的起始值η总是O的读取过程相反,从存储器读取的起始值η将在每个读取周期变化。
[0031]步骤250设置起始值“8丨31"1:” = 11,0<11< (m_l),其中η和m均为大于或等于O的整数值,并且m比η至少大I。在步骤252中,从存储器信道CH(η)读取DATn。在步骤254中确定η是否等于m-Ι。如果是,那么在步骤256中从信道CH(start)同时并行读取对应于DATn的纠错码ECCn,其中“start”为这个读取周期的初始值η。如果否,那么在步骤258中从信道CH(n+1)同时并行读取纠错码。应注意,尽管步骤252、254、256和258的操作在流程图上按次序出现,但是在实践中算法被建立成同时进行这些操作,以使得在任何给定的读取操作期间有从两个独立的信道的同时并行读取。读取操作的一部分从一个信道读取数据,并且相同的读取操作的另一部分从另一信道同时读取对应于那个数据的ECC码。
[0032]如果在步骤256中从CH(Start)读取ECCn,那么步骤260确定读取操作是否完成。如果在步骤262中否,那么在步骤268中将η递增到n = n+1并且在步骤252中读取过程继续。如果在步骤260中读取操作被视为完成,那么在步骤264中过程结束。如果在步骤258中从CH(n+1)读取ECCn,那么在步骤268中将递增η并且在步骤252中读取操作将继续。
[0033]如同上述写入操作,只要起始值在每个读取周期变化,每个额外读取序列的η的起始值的变化可以是任意或根据预定算法遵循特定序列。此外,改变起始值η的原因是保持或扩大信道带宽,而同时提供甚至更多的使用存储器信道。使用多个信道带宽比单个信道带宽在将数据传送到存储器或从存储器传送数据时提高了通信速度。
[0034]本发明可以用存储器控制器来实施,所述存储器控制器可以形成处理器(例如CPU、GPU、DSP、FPGA等)的一部分。本发明的方面也可以用计算机可读代码来实施。在某些情况下,计算机可读代码可以由用于执行本文所述的方法和操作的处理器来执行。可以利用代码(例如GDSI1、RTL等),以使得代码在被执行时将制造设施(例如半导体制造设施)配置成创建实施本发明的方面的集成电路(例如处理器或存储器)。
[0035]尽管已参照特定实施方案示出和描述本发明,但是本文的方法适用于任何已知的计算机系统或多信道存储器类型,并且本领域技术人员应理解在不脱离本发明的范围的情况下,可以在其中进行形式和细节上的各种变化。
【主权项】
1.一种用于将数据写入到多信道存储器模块的方法,其包括: 提供具有多个信道的所述存储器模块; 将第一数据写入到所述存储器模块的第一信道,并且将对应于所述第一数据的第一纠错码同时并行写入到所述存储器模块的第二信道;以及 将第二数据写入到所述第二信道,并且将对应于所述第二数据的第二纠错码同时并行写入到所述存储器模块的第三信道。
2.根据权利要求1所述的方法,其中所述第三信道包括所述第一信道。
3.根据权利要求1所述的方法,其中所述存储器模块为硅通孔动态随机存取存储器模块。
4.一种用于从多信道存储器模块读取数据的方法,其包括以下步骤: 提供具有多个信道的所述存储器模块; 从所述存储器模块的第一信道读取第一数据,并且从所述存储器模块的第二信道同时并行读取第一纠错码;以及 从所述存储器模块的所述第二信道读取第二数据,并且从所述存储器模块的第三信道同时并行读取对应于所述第二数据的第二纠错码。
5.根据权利要求4所述的方法,其中所述第三信道包括所述第一信道。
6.根据权利要求4所述的方法,其中所述存储器模块为硅通孔动态随机存取存储器模块。
7.一种用于将数据写入到多信道存储器模块的方法,其包括: (a)为包括m个信道的所述多信道存储器模块设置η的起始值m,其中η和m为大于和等于零的整数并且m比η至少大I ; (b)将所述数据DATn写入到所述存储器模块的信道CHn; (c)如果n= m-1,那么将对应于DATn的纠错码ECCn同时并行写入到所述存储器模块的另一信道CH(start); (cl)如果所述数据的写入完成,那么结束; (c2)如果所述数据的写入未完成,那么将η重设为不同的起始值并且返回到步骤(b); (d)如果η幸m-Ι,那么将对应于DATn的纠错码ECCn同时并行写入到所述存储器模块的另一信道CH(n+l); (e)递增η= η+1 ;以及 (f)返回到(b)。
8.根据权利要求7所述的方法,其中所述存储器模块为硅通孔动态随机存取存储器模块。
9.一种用于从多信道存储器模块读取数据的方法,所述方法包括: (a)为包括m个信道的所述多信道存储器模块设置O< η < m,其中η和m为大于和等于零的整数并且m比η至少大I ; (b)从所述存储器模块的信道CHn读取所述数据DATn; (c)如果n= m-l,那么从所述存储器模块的另一信道CH(O)同时并行读取对应于DATn的纠错码ECCn ; (cl)如果所述数据的读取完成,那么结束; (c2)如果所述数据的读取未完成,那么将η重设为不同的起始值并且返回到步骤(b); (d)如果n#m-l,那么从所述存储器模块的另一信道CH(η+1)同时并行读取对应于DATn的纠错码ECCn ; (e)递增η= η+1 ;以及 (f)返回到(b)。
10.根据权利要求9所述的方法,其中所述存储器模块为硅通孔动态随机存取存储器模块。
11.一种计算机程序产品,其包括: 计算机可读存储介质,其实施有计算机可读程序代码,所述计算机可读程序代码用于将数据写入到计算机中的多信道存储器模块,所述代码包括: 将第一数据写入到存储器模块的第一信道,并且将对应于所述第一数据的第一纠错码同时并行写入到所述存储器模块的第二信道;以及 将第二数据写入到所述第二信道,并且将对应于所述第二数据的第二纠错码同时并行写入到所述存储器模块的第三信道。
12.根据权利要求11所述的计算机可读程序产品,其中存储在上面的指令由适合于执行所述写入第一数据和写入第二数据的处理器执行。
13.根据权利要求11所述的计算机可读程序产品,其中存储在上面的所述指令在被执行时使制造处理器适合于制造集成电路,所述集成电路适合于执行所述写入第一数据和所述写入第二数据。
14.根据权利要求13所述的计算机可读程序产品,其中所述指令包括⑶SIKVerilog、HDL、RTL 等。
15.一种计算机程序产品,其包括: 计算机可读存储介质,其实施有计算机可读程序代码,所述计算机可读程序代码用于从计算机中的多信道存储器模块读取数据,所述代码包括: 从存储器模块的第一信道读取第一数据,并且从所述存储器模块的第二信道同时并行读取第一纠错码;以及 从所述存储器模块的所述第二信道读取第二数据,并且从所述存储器模块的第三信道同时并行读取对应于所述第二数据的第二纠错码。
16.根据权利要求15所述的计算机可读程序产品,其中存储在上面的指令由适合于执行所述写入第一数据和写入第二数据的处理器执行。
17.根据权利要求15所述的计算机可读程序产品,其中存储在上面的所述指令在被执行时使制造处理器适合于制造集成电路,所述集成电路适合于执行所述写入第一数据和所述写入第二数据。
18.根据权利要求17所述的计算机可读程序产品,其中所述指令包括⑶SIKVerilog、HDL、RTL 等。
【专利摘要】一种用于具有多个信道的存储器的计算机的写入或读取方法包括将数据写入到存储器中的一个信道或从存储器中的一个信道读取数据,并且将对应于数据的纠错码同时并行写入到存储器中的不同信道或从存储器中不同信道同时并行读取对应于数据的纠错码。
【IPC分类】G06F11-10
【公开号】CN104603758
【申请号】CN201380046342
【发明人】迈克尔·奥斯本, 马克·赫梅尔, 大卫·梅休
【申请人】超威半导体公司
【公开日】2015年5月6日
【申请日】2013年8月26日
【公告号】EP2893448A2, US9069698, US20140068373, WO2014039297A2, WO2014039297A3