CN114627954B - Ddr双列直插式存储模块、存储系统及其操作方法 - Google Patents
Ddr双列直插式存储模块、存储系统及其操作方法 Download PDFInfo
- Publication number
- CN114627954B CN114627954B CN202210526445.8A CN202210526445A CN114627954B CN 114627954 B CN114627954 B CN 114627954B CN 202210526445 A CN202210526445 A CN 202210526445A CN 114627954 B CN114627954 B CN 114627954B
- Authority
- CN
- China
- Prior art keywords
- data
- dram
- ecc
- rank
- channel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/12015—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details comprising clock generation or timing circuitry
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Dram (AREA)
Abstract
本发明公开了一种利用数据缓存器纠错的DDR双列直插式存储模块、存储系统及其操作方法,DDR双列直插式存储模块包括第一信道,第一信道包括第一组DRAM颗粒和与第一组DRAM颗粒对应的数据缓存器;数据缓存器用于在写操作中将外部数据发送给第一组DRAM颗粒,以及在读操作中获取第一组DRAM颗粒的数据;数据缓存器还用于在写操作和读操作中进行ECC纠错。本发明在内存条上就能实现高性能的检错和纠错,能够极大地降低整个内存条的误码率。
Description
技术领域
本发明属于存储器技术领域,更具体地,涉及一种利用数据缓存器纠错的DDR双列直插式存储模块、存储系统及其操作方法。
背景技术
DDR是DDR SDRAM的简称,当前的双倍速率同步动态随机存取存储器(Double DataRate Synchronous Dynamic Random Access Memory,DDR SDRAM)标准提供一个可支持双列直插式存储模块(Dual-in-line Memory Module,DIMM)设备的通道。随着工艺尺寸的减小、运行速率的增加以及存储容量的增加,内存颗粒存储数据出错的可能性会长期存在。如何通过纠错码技术,使得即使在内存颗粒出现多个错误的情况下,也能实时自动地进行纠错,确保系统正常运行,是一个非常重要的稳定性要求。
在硬件层面,目前内存系统中实现纠错码(Error Correcting Code, ECC)的技术途径主要包括:(1)依靠内存颗粒自身进行纠错,例如,DDR5(第五代DDR SDRAM)内存颗粒本身有1比特纠错码。由于实际情况下很可能会出现更多的错码,因此,这种纠错能力相对比较薄弱。(2)利用内存控制器(Memory Controller,,MC)进行纠错。由于内存控制器通常在主处理器(CPU/Host)芯片上,主处理器更新换代较慢,多数通用CPU厂家难以把高性能纠错功能,或者针对某些DRAM颗粒特别有效的纠错码和映射结构设计到内存控制器里,导致内存控制器的纠错能力难以满足现实需要。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种利用数据缓存器纠错的DDR双列直插式存储模块、存储系统及其操作方法,在内存条上就能实现高性能的检错和纠错,能够极大地降低整个内存条的误码率。
为实现上述目的,按照本发明的一个方面,提供了一种DDR双列直插式存储模块,包括:第一信道,第一信道包括第一组DRAM颗粒和与第一组DRAM颗粒对应的数据缓存器;数据缓存器用于在写操作中将外部数据发送给第一组DRAM颗粒,以及在读操作中获取第一组DRAM颗粒的数据;数据缓存器还用于在写操作和读操作中进行ECC纠错。
在一些实施方式中,DDR双列直插式存储模块还包括第一Rank,第一组DRAM颗粒设置于所述第一Rank;第一组DRAM颗粒用于存储第一信道的所有数据信号位;数据缓存器用于在写操作中将第一信道的所有数据信号位发送给第一组DRAM颗粒,以及在读操作中从第一组DRAM颗粒获取第一信道的所有数据信号位。
在一些实施方式中,数据缓存器设置于第一Rank;第一Rank具有多个行位置,数据缓存器和第一组DRAM颗粒占据不同的行位置。
在一些实施方式中,数据缓存器设置于第一Rank;第一Rank具有多个行位置,第一组DRAM颗粒占据所述多个行位置,数据缓存器占据所述第一组DRAM颗粒的一个或多个行位置。
在一些实施方式中,DDR双列直插式存储模块还包括第二Rank,第二Rank设置在与第一Rank所在的面相反的面,第二Rank具有与第一组DRAM颗粒对应设置的第二组DRAM颗粒;数据缓存器还用于在写操作中将第一信道的所有数据信号位发送给第二组DRAM颗粒,以及在读操作中从第二组DRAM颗粒获取第一信道的所有数据信号位。
在一些实施方式中,数据缓存器设置在与第一Rank所在的面相反的面。
在一些实施方式中,数据缓存器用于在写操作中获取输入至所述第一信道的所有数据信号位,对输入的所有数据信号位中的数据进行ECC编码,产生新的ECC校验码,并将新的ECC校验码和所有数据信号位中的数据一起,发送给第一组DRAM颗粒。
在一些实施方式中,数据缓存器用于在读操作中从第一组DRAM颗粒获取第一信道的所有数据信号位,解码并判断是否存在错码,以及在存在错码时,对数据信号进行纠错后再发送出去。
在一些实施方式中,数据缓存器包括第一数据收发器、第二数据收发器、ECC编码器和ECC解码器;ECC编码器和ECC解码器分别连接在第一数据收发器和第二数据收发器之间,第二数据收发器连接第一组DRAM。
在一些实施方式中,在写操作中,第一数据收发器在时钟信号触发下接收第一信道的所有数据信号位,ECC编码器对接收的所有数据信号位中的数据进行ECC编码,产生新的ECC校验码,并将新产生的ECC校验码和数据一起通过第二数据收发器发送给第一组DRAM颗粒。
在一些实施方式中,在读操作中,第二数据收发器在时钟信号触发下接收第一信道的所述数据信号位,ECC解码器检测接收的所有数据信号位是否存在错码,如果存在错码,ECC解码器对数据信号进行纠错后,再通过第一数据收发器发送出去。
在一些实施方式中,数据缓存器包括第一数据收发器、第二数据收发器、ECC编码器、ECC解码器、第一选择器和第二选择器;ECC编码器连接在第一选择器和第一数据收发器之间,ECC解码器连接在第二选择器和第二数据收发器之间,第一选择器连接所述第二数据收发器,第二选择器连接所述第一数据收发器,第二数据收发器连接所述第一组DRAM。
在一些实施方式中,第一选择器用于在写操作中选择是否打开ECC功能,在ECC功能打开时,第一选择器选择将ECC编码器的输出通过第二数据收发器发送给第一组DRAM颗粒;第二选择器用于在读操作中选择是否打开ECC功能,在ECC功能打开时,第二选择器选择将所述ECC解码器的输出通过第一数据收发器发送出去。
在一些实施方式中,第一数据收发器包括多个第一接收模块和第一发送模块,多个第一接收模块用于从外部获取第一信道的所有数据信号位,并将获取的数据信号分别发送给第一选择器和ECC编码器,第一发送模块连接第二选择器,用于将第二选择器输出的数据信号发送出去。
在一些实施方式中,第一接收模块包括第一接收器、第二接收器和第一D触发器;第一接收器用于接收来自外部的数据信号并将其输出至第一D触发器的输入端,第二接收器用于接收来自外部的采样时钟并将其输出至第一D触发器的时钟信号输入端,第一D触发器的正向输出端在时钟信号的上升沿将来自外部的数据信号输出。
按照本发明的另一个方面,提供了一种存储系统,包括CPU和上述DDR双列直插式存储模块。
按照本发明的又一个方面,提供了一种存储系统的操作方法,包括:
从外部获取所在信道的所有数据信号位;
对从外部获取的数据信号位中的数据进行ECC编码,产生新的ECC校验码;
将新的ECC校验码和数据信号位中的数据一起发送给所在信道的DRAM颗粒。
在一些实施方式中,在ECC功能打开时,执行对从外部获取的数据信号位中的数据进行ECC编码,产生新的ECC校验码的操作,并将新的ECC校验码和数据信号位中的数据一起发送给所在信道的DRAM颗粒。
在一些实施方式中,该方法还包括:
从DRAM颗粒获取所在信道的所有数据信号位;
判断从DRAM颗粒获取的所有数据信号位是否存在错码;
如果存在错码,将获取的数据信号位纠错后再发送出去。
在一些实施方式中,在ECC功能打开时,执行判断从DRAM颗粒获取的所有数据信号位是否存在错码的操作,并在存在错码的情况下,将获取的数据信号位纠错后再发送出去。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:将原属于一个信道(channel)的所有数据缓存器(Data Buffer,,DB)集成到一起,使得一个信道具有一个数据缓存器,同时使这个数据缓存器具有纠错功能,即,对来自CPU的数据进行纠错编码,对来自内存颗粒的数据进行检错,并实现自动纠错和报错。由于集成后的数据缓存器能够获取其所在信道的全部数据,在内存条上就能实现高性能的检错和纠错,极大地降低了整个内存条的误码率。
附图说明
图1是一种DDR5 LRDIMM内存条的布局布线示意图;
图2是本发明一个实施例的利用数据缓存器纠错的DDR5 DIMM内存条的布局布线示意图;
图3是本发明另一个实施例的利用数据缓存器纠错的DDR5 DIMM内存条的布局布线示意图;
图4是本发明又一个实施例的利用数据缓存器纠错的DDR5 DIMM内存条的布局布线示意图;
图5是本发明又一个实施例的利用数据缓存器纠错的DDR5 DIMM内存条的布局布线示意图;
图6A和图6B分别是本发明又一个实施例的利用数据缓存器纠错的DDR5 DIMM内存条的布局布线示意图;
图7是本发明又一个实施例的利用数据缓存器纠错的DDR5 DIMM内存条的布局布线示意图;
图8本发明一个实施例的DDR DIMM内存读写操作过程的示意性框图;
图9是本发明又一个实施例的DDR DIMM内存读写操作过程的示意性框图;
图10是本发明实施例的第一数据收发器的结构框图;
图11是本发明实施例的第二数据收发器的结构框图;
图12是本发明实施例的内存写操作过程示意图;
图13是本发明实施例的内存读操作过程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。正如本领域技术人员可以认识到的那样,在不脱离本申请的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
图1是DDR5负载减少型DIMM(Load Reduced DIMM,,LRDIMM)内存条的布局布线示意图。如图1所示,该内存条两面(例如印制电路板或PCB板的两面)都有内存颗粒,共2个Rank,每面各一个Rank,正面为Rank0(第一Rank),反面是Rank1(第二Rank)。信道A(第一信道)和信道B(第二信道)分别具有正面10个×4 DRAM颗粒(第一组DRAM颗粒)、反面10个×4DRAM颗粒(第二组DRAM颗粒)以及5个数据缓存器(DB)。时钟锁存驱动器(RegisteringClock Driver,,RCD)和DB均设置在内存条的正面(图1中Rank1的RCD仅用于展现连接关系)。RCD通过命令/地址线连接两面的内存颗粒,各DB通过数据线连接两面与其对应的内存颗粒(图1中Rank1中数据线的连接未示出),即,每个DB的一侧连接正面的两个内存颗粒和反面的两个内存颗粒,每个DB的另一侧连到内存条边沿的金手指,再通过主板连接CPU的DDR数据线。Rank0和Rank1不会同时工作,在某一时刻,或者是Rank0工作,或者是Rank1工作,或者Rank0和Rank1均不工作,每个DB只负责其所在信道的五分之一的数据。
图2是本发明一个实施例的利用数据缓存器纠错的DDR5 DIMM内存条的布局布线示意图。如图2所示,在图1所示结构的基础上,将信道A和信道B的5个DB分别集成到一起,并进一步增加纠错功能,形成具有纠错能力的数据缓存器(在下文中标记为DBECC)。也就是说,信道A具有一个DBECC,用于处理信道A上的读操作(从DRAM到CPU)和写操作(从CPU到DRAM)的所有数据,并实现ECC编码、解码、自动纠错和报错。信道B亦是如此。DBECC的一侧连接其所在信道的多个内存颗粒,另一侧连到内存条边沿的金手指,再通过主板连接CPU的DDR数据线。
信道A和信道B的内存颗粒可以具有相同的布局。以信道A为例,Rank0具有10个×4DRAM颗粒,这10个×4 DRAM颗粒分两行设置,每行各设置5个×4 DRAM颗粒。Rank1也具有10个×4 DRAM颗粒,这10个×4 DRAM颗粒分两行设置,每行设置5个×4 DRAM颗粒。RCD和两个DBECC均设置在内存条的正面(图2中Rank1的RCD仅用于展现连接关系),RCD设置在信道A的内存颗粒和信道B的内存颗粒之间。信道A和信道B的DBECC分别设置在Rank0的两行DRAM颗粒之后的第三行所在的位置。
应当了解,图2中所示的DRAM颗粒的宽度和高度,DBECC的宽度和高度,仅作为示例。根据实际存储容量和制造工艺,DRAM颗粒的宽度和高度可以定制,DBECC的宽度和高度也可以根据内存条上DRAM颗粒的布局进行优化,本发明对此不做限制。
图3是本发明另一个实施例的利用数据缓存器纠错的DDR5 DIMM内存条的布局布线示意图。如图3所示,在图2所示结构的基础上,将DBECC的位置作了调整,并对应地调整了内存颗粒的位置。具体地,以信道A为例,将Rank0的10个×4 DRAM颗粒分两行设置,其中第一行内存颗粒的数量与第二行内存颗粒的数量不相同,DBECC设置在具有较少数量的内存颗粒所在的行内,即,DBECC的两侧均设置有内存颗粒。在一些实施方式中,DBECC设置在具有较少数量的内存颗粒所在的行内最靠近中间的位置。例如,图3中,第一行设置6个内存颗粒,第二行设置4个内存颗粒,DBECC设置在第二行4个内存颗粒的中间位置,即DBECC的两侧各有2个内存颗粒。再例如,第一行设置7个内存颗粒,第二行设置3个内存颗粒,DBECC设置在第二行3个内存颗粒的最靠近中间的位置,即DBECC的一侧有2个内存颗粒,另一侧有1个内存颗粒。信道A的Rank1具有与Rank0相同的内存颗粒布局,信道B具有与信道A相同的内存颗粒布局和DBECC布局。
图4是本发明又一个实施例的利用数据缓存器纠错的DDR5 DIMM内存条的布局布线示意图。如图4所示,在图2所示结构的基础上,将DBECC的位置作了调整,并对应地调整了内存颗粒的位置。具体地,以信道A为例,将Rank0的10个×4 DRAM颗粒分两行设置,每行各设置5个×4 DRAM颗粒。DBECC跨行设置在第一行内存颗粒和第二行内存颗粒之间。在一些实施方式中,DBECC设置在第一行和第二行内存颗粒的最靠近中间的位置。例如,DBECC在第一行和第二行的一侧各有3个内存颗粒,在第一行和第二行的另一侧各有2个内存颗粒。信道A的Rank1具有与Rank0相同的内存颗粒布局,信道B具有与信道A相同的内存颗粒布局和DBECC布局。
在图2-4所示的实施例中,单个信道的Rank0和Rank1均具有偶数个内存颗粒,在Rank0或Rank1工作时,DBECC提供40位数据信号给10个×4 DRAM颗粒,这40位数据信号中,32位是数据,8位是ECC校验码。应当理解,本发明实施例的单个信道的Rank0和Rank1的内存颗粒还可以为奇数个,本发明对此不做限制。
如图5所示,信道A的Rank0具有11个×4 DRAM颗粒,这11个×4 DRAM颗粒分两行设置,其中第一行内存颗粒的数量与第二行内存颗粒的数量不相同,DBECC设置在具有较少数量的内存颗粒所在的行内,即,DBECC的两侧均设置有内存颗粒。在一些实施方式中,DBECC设置在具有较少数量的内存颗粒所在的行内最靠近中间的位置。例如,第一行设置7个内存颗粒,第二行设置4个内存颗粒,DBECC设置在第二行4个内存颗粒的中间位置,即DBECC的两侧各有2个内存颗粒。信道A的Rank1具有与Rank0相同的内存颗粒布局,信道B具有与信道A相同的内存颗粒布局和DBECC布局。
具体地,DBECC提供44位数据信号给11个×4 DRAM颗粒。这44位数据信号中,32位是数据,12位是ECC校验码。
可以理解的是,校验码越多,其具备的纠错能力越强。为了能纠正更多地误码,也可以产生更多地校验码,但是对应地需要有更多的×4 DRAM颗粒来支持。例如,DBECC可以提供48位数据信号给12个×4 DRAM颗粒。这48位数据信号中,32位是数据,16位是ECC校验码。
在图2-5所示的实施例中,内存颗粒均为×4 DRAM。应当理解,本发明实施例的DDRDIMM的内存颗粒还可以为×8 DRAM。
如图6A所示,信道A的Rank0具有5个×8 DRAM颗粒,这5个×8 DRAM颗粒设置在同一行,DBECC设置在Rank0的一行DRAM颗粒之后的第二行所在的位置。信道A的Rank1具有与Rank0相同的内存颗粒布局,信道B具有与信道A相同的内存颗粒布局和DBECC布局。DBECC提供40位数据信号给5个×8 DRAM颗粒,这40位数据信号中,32位是数据,8位是ECC校验码。
图6B是信道A的Rank0具有6个×8 DRAM颗粒的情形。6个×8 DRAM颗粒,DBECC提供48位数据信号给6个×8 DRAM颗粒,这48位数据信号中,32位是数据,16位是ECC校验码。
同样地,校验码越多,其具备的纠错能力越强。为了能纠正更多地误码,也可以产生更多地校验码,但是对应地需要有更多的x8 DRAM颗粒来支持。例如,DBECC可以提供56位数据信号给7个x8 DRAM颗粒。这56位数据信号中,32位是数据,24位是ECC校验码。
在图2-6所示的实施例中,均包含两个Rank,即Rank0和Rank1。在图2、图6A和图6B中,第一Rank具有多个行位置,数据缓存器和第一组DRAM颗粒占据不同的行位置。在图3-5中,第一Rank具有多个行位置,第一组DRAM颗粒占据该多个行位置,数据缓存器占据第一组DRAM颗粒的一个或多个行位置。例如,图3和图5中,数据缓存器占据第一组DRAM颗粒的一个行位置,图4中,数据缓存器占据第一组DRAM颗粒的所有两个行位置。
应当理解,本发明实施例的DDR DIMM还可以只具有一个Rank。如图7所示,DDRDIMM内存条仅正面设置有DRAM颗粒,只有一个Rank0。信道A的Rank0具有10个×4 DRAM颗粒,DBECC设置在内存条的反面(正面的DBECC仅用于说明连接关系)。信道B具有与信道A相同的内存颗粒布局和DBECC布局。DBECC提供40位数据信号给10个×4 DRAM颗粒,这40位数据信号中,32位是数据,8位是ECC校验码。
以上只是给出了一些内存条上用DBECC的布局布线的例子,在实际实现中,可以根据DRAM颗粒的宽度和高度,内存条有几个Rank,来具体决定最佳的布局布线方式,本发明对此不作限制。
图8为本发明实施例的DDR DIMM内存读写操作过程的示意性框图。如图8所示,DBECC 701分别连接CPU和DRAM颗粒。在写操作过程中,DBECC 701从CPU接收其所在信道的所有数据信号位,对数据信号中的数据进行ECC编码,产生新的ECC校验码,将新产生的ECC校验码和数据一起发送给DRAM。在读操作过程中,DBECC 701从DRAM接收其所在信道的所有数据信号位,包括数据位和校验码位,检测数据信号是否存在错码,如果不存在错码,则将数据信号发送给CPU;如果存在错码,DBECC在自动纠错后,将数据信号发送给CPU。
具体地,如图8所示,DBECC 701包括第一数据收发器、第二数据收发器和ECC纠错模块703,ECC纠错模块703进一步包括ECC编码器和ECC解码器。在写操作过程中,第一数据收发器在系统时钟的上升沿从CPU接收其所在信道的所有数据信号位,ECC编码器对数据信号中的数据进行ECC编码,产生新的ECC校验码,将新产生的ECC校验码和数据一起通过第二数据收发器发送给DRAM。在读操作过程中,第二数据收发器在系统时钟的上升沿接收其所在信道的所有数据信号位,包括数据位和校验码位,ECC解码器检测数据信号是否存在错码,如果不存在错码,则将数据信号通过第一数据收发器发送给CPU;如果存在错码,ECC解码器在自动纠错后,将纠错后的数据信号通过第一数据收发器发送给CPU。
在一些实施方式中,如果存在错误,ECC解码器在自动纠错后,还将具体的错误信息存储在本地寄存器中,以供CPU读出并进行后续处理。
图9是本发明又一个实施例的DDR DIMM内存读写操作过程的示意性框图。如图9所示,DBECC 801包括第一数据收发器、第二数据收发器、ECC纠错模块703、第一选择器和第二选择器。在写操作过程中,第一数据收发器在系统时钟的上升沿从CPU接收其所在信道的所有数据信号位,当第一选择器的控制端选择打开ECC功能时,ECC编码器对数据信号中的数据进行ECC编码,产生新的ECC校验码,将新产生的ECC校验码和数据一起由第一选择器输出至第二数据收发器,通过第二数据收发器发送给DRAM;当第一选择器的控制端选择关闭ECC功能时,第一选择器将第一数据收发器接收到的所有数据信号位输出至第二数据收发器,通过第二数据收发器发送给DRAM,这种情况下,系统会依赖CPU的内存控制器进行纠错。
在读操作过程中,第二数据收发器在系统时钟的上升沿从DRAM接收其所在信道的所有数据信号位,包括数据位和校验码位,当第二选择器的控制端选择打开ECC功能时,ECC解码器检测数据信号是否存在错码,如果不存在错码,则将数据信号由第二选择器输出至第一数据收发器,通过第一数据收发器发送给CPU;如果存在错码,ECC解码器在自动纠错后,将纠错后的数据信号由第二选择器输出至第一数据收发器,通过第一数据收发器发送给CPU。当第二选择器的控制端选择关闭ECC功能时,第二选择器将第二数据收发器接收到的所有数据信号位输出至第一数据收发器,通过第一数据收发器发送给CPU,这种情况下,系统会依赖CPU的内存控制器进行纠错。
在一些实施方式中,第一选择器和第二选择器的控制端具有相同的信号输入。在一些实施方式中,第一数据收发器和第二数据收发器具有相同的结构。
图10是本发明实施例的第一数据收发器的结构框图。如图10所示,第一数据收发器901包括多个第一接收模块903和第一发送模块905,多个第一接收模块903连接CPU,用于从CPU获取所在信道的所有数据信号位,并将获取的数据信号分别发送给第一选择器和ECC编码器。第一发送模块905连接第二选择器,用于将第二选择器输出的数据信号发送给CPU。
具体地,第一接收模块903包括第一接收器(RX1)、第二接收器(RX2)和第一D触发器。第一接收器用于接收来自CPU的数据信号并将其输出至第一D触发器的输入端(D端),第二接收器用于接收来自CPU的采样时钟(DQS)并将其输出至第一D触发器的时钟信号输入端,第一D触发器的正向输出端(Q端)在时钟信号的上升沿将来自CPU的数据信号输出。
第一发送模块905包括读先进先出模块(Read FIFO)和第一发送器(TX1)。读先进先出模块用于获取来自第二选择器的数据信号,并通过第一发送器将该数据信号发送给CPU。
类似地,如图11所示,第二数据收发器1001包括多个第二接收模块1003和第二发送模块1005,多个第二接收模块1003分别连接DRAM内存颗粒,用于从DRAM内存颗粒获取数据信号,并将获取的数据信号分别发送给第二选择器和ECC解码器。第二发送模块1005连接第一选择器,用于将第一选择器输出的数据信号发送给DRAM内存颗粒。
具体地,第二接收模块1003包括第三接收器(RX3)、第四接收器(RX4)和第二D触发器。第三接收器用于接收来自DRAM的数据信号并将其输出至第二D触发器的输入端(D端),第四接收器用于接收来自DRAM的采样时钟(MDQS)并将其输出至第二D触发器的时钟信号输入端,第二D触发器的正向输出端(Q端)在时钟信号的上升沿将来自DRAM的数据信号输出。
第二发送模块1005包括写先进先出模块(Write FIFO)和第二发送器(TX2)。写先进先出模块用于获取来自第一选择器的数据信号,并通过第二发送器将该数据信号发送给DRAM颗粒。
下面以单个信道的Rank0具有10个×4 DRAM颗粒为例对本发明实施例的内存读写操作过程进行详细说明。
在内存写操作过程中,如图12所示,多个第一接收模块903在DQ采样时钟(DQS)的上升沿从CPU获取所在信道的所有数据信号位,一共40位数据信号,其中32位是数据,8位是ECC校验码,每个第一接收模块903获取4位数据信号,即一个DQ Nibble,分别标记为Nibble0-9。其中,DQ表示CPU与DBECC连接的数据线。当第一选择器1101的ECC功能打开时(默认设置),ECC编码器会对32位数据(在本发明实施例中,可以由Nibble0-7组成32位数据)进行ECC编码,产生新的8位ECC校验码,将新产生的8位ECC校验码和32位数据一起通过写先进先出模块和第二发送器发送给DRAM颗粒。可以理解的是,在ECC功能打开的时候,DBECC可忽略CPU发来的8位ECC码(例如Nibble8-9),而采用自身计算出的新的8位ECC校验码进行传输和后续校验流程。
当第一选择器1101的ECC功能关闭的时候,DBECC会把CPU发来的40位信号(例如可以由Nibble0-9组成)直接通过Write FIFO和第二发送器发送给DRAM颗粒。这种情况下,系统会依赖CPU内存控制器进行纠错。
类似地,如图13所示,在内存读操作过程中,多个第二接收模块1003在MDQ采样时钟(MDQS)的上升沿从DRAM内存颗粒获取所在信道的所有数据信号位,一共40位数据信号,其中32位是数据,8位是ECC校验码,每个第二接收模块1003获取4位数据信号,即一个MDQNibble,一共10个Nibble。其中,MDQ表示DBECC与DRAM颗粒连接的数据线。当第二选择器1201的ECC功能打开时(默认设置),首先通过ECC解码器解码判断是否存在错码,如果不存在错码,则数据信号不需要改变,直接将数据信号通过读先进先出模块和第一发送器发送给CPU。如果存在错码,ECC解码器就会进行自动纠错,然后在将纠错后的数据信号通过读先进先出模块和第一发送器发送给CPU。这种情况下,DBECC还会把具体的错误信息存储在本地寄存器中,以供CPU读出并进行后续处理。
当第二选择器1201的ECC功能关闭时,从DRAM内存颗粒获取的所在信道的所有数据信号位会直接通过读先进先出模块和第一发送器发送给CPU。这种情况下,系统会依赖CPU内存控制器进行纠错。
在本发明实施例中,纠错码有很多选择,比如汉明编码,里德所罗门密码,也可以是其他的区块码(Block codes)或者卷积码(Convolutional codes)。码长和具体映射需要根据内存颗粒出错的特性来决定。
在本发明实施例中,DRAM内存颗粒可以是DDR4、DDR5、DDR6、LPDDR或者GDDR,也可以是LPDDR4、LPDDR5或者LPDDR5x,还可以是其他形态的DRAM内存颗粒,本发明对此不做限制。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个(两个或两个以上)用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (20)
1.一种DDR双列直插式存储模块,其特征在于,包括:第一信道,所述第一信道包括第一组DRAM颗粒和与所述第一组DRAM颗粒对应的数据缓存器;所述数据缓存器用于在写操作中获取输入至所述第一信道的所有数据信号位,对输入的所有数据信号位中的数据进行ECC编码,产生新的ECC校验码,并将新的ECC校验码和所述所有数据信号位中的数据一起,发送给所述第一组DRAM颗粒;所述数据缓存器还用于在读操作中从所述第一组DRAM颗粒获取所述第一信道的所有数据信号位,进行ECC纠错;所述数据缓存器包括第一数据收发器、第二数据收发器、ECC编码器和ECC解码器;所述ECC编码器和所述ECC解码器分别连接在所述第一数据收发器和所述第二数据收发器之间,所述第二数据收发器连接所述第一组DRAM。
2.如权利要求1所述的DDR双列直插式存储模块,其特征在于,还包括第一Rank,所述第一组DRAM颗粒设置于所述第一Rank。
3.如权利要求2所述的DDR双列直插式存储模块,其特征在于,所述数据缓存器设置于所述第一Rank;所述第一Rank具有多个行位置,所述数据缓存器和所述第一组DRAM颗粒占据不同的行位置。
4.如权利要求2所述的DDR双列直插式存储模块,其特征在于,所述数据缓存器设置于所述第一Rank;所述第一Rank具有多个行位置,所述第一组DRAM颗粒占据所述多个行位置,所述数据缓存器占据所述第一组DRAM颗粒的一个或多个行位置。
5.如权利要求2所述的DDR双列直插式存储模块,其特征在于,还包括第二Rank,所述第二Rank设置在与所述第一Rank所在的面相反的面,所述第二Rank具有与所述第一组DRAM颗粒对应设置的第二组DRAM颗粒;所述数据缓存器还用于在写操作中将所述第一信道的所有数据信号位发送给所述第二组DRAM颗粒,以及在读操作中从所述第二组DRAM颗粒获取所述第一信道的所有数据信号位。
6.如权利要求2所述的DDR双列直插式存储模块,其特征在于,所述数据缓存器设置在与所述第一Rank所在的面相反的面。
7.如权利要求1所述的DDR双列直插式存储模块,其特征在于,所述数据缓存器用于在读操作中从所述第一组DRAM颗粒获取所述第一信道的所有数据信号位,解码并判断是否存在错码,以及在存在错码时,对数据信号进行纠错后再发送出去。
8.如权利要求1所述的DDR双列直插式存储模块,其特征在于,在写操作中,所述第一数据收发器在时钟信号触发下接收所述第一信道的所有数据信号位,所述ECC编码器对接收的所有数据信号位中的数据进行ECC编码,产生新的ECC校验码,并将新产生的ECC校验码和数据一起通过所述第二数据收发器发送给所述第一组DRAM颗粒。
9.如权利要求1所述的DDR双列直插式存储模块,其特征在于,在读操作中,所述第二数据收发器在时钟信号触发下接收所述第一信道的所述数据信号位,所述ECC解码器检测接收的所有数据信号位是否存在错码,如果存在错码,所述ECC解码器对数据信号进行纠错后,再通过所述第一数据收发器发送出去。
10.一种DDR双列直插式存储模块,其特征在于,包括:第一信道,所述第一信道包括第一组DRAM颗粒和与所述第一组DRAM颗粒对应的数据缓存器;所述数据缓存器用于在写操作中获取输入至所述第一信道的所有数据信号位,对输入的所有数据信号位中的数据进行ECC编码,产生新的ECC校验码,并将新的ECC校验码和所述所有数据信号位中的数据一起,发送给所述第一组DRAM颗粒;所述数据缓存器还用于在读操作中从所述第一组DRAM颗粒获取所述第一信道的所有数据信号位,进行ECC纠错;所述数据缓存器包括第一数据收发器、第二数据收发器、ECC编码器、ECC解码器、第一选择器和第二选择器;所述ECC编码器连接在所述第一选择器和所述第一数据收发器之间,所述ECC解码器连接在所述第二选择器和所述第二数据收发器之间,所述第一选择器连接所述第二数据收发器,所述第二选择器连接所述第一数据收发器,所述第二数据收发器连接所述第一组DRAM。
11.如权利要求10所述的DDR双列直插式存储模块,其特征在于,所述第一选择器用于在写操作中选择是否打开ECC功能,在ECC功能打开时,所述第一选择器选择将所述ECC编码器的输出通过所述第二数据收发器发送给所述第一组DRAM颗粒;所述第二选择器用于在读操作中选择是否打开ECC功能,在ECC功能打开时,所述第二选择器选择将所述ECC解码器的输出通过所述第一数据收发器发送出去。
12.如权利要求10或11所述的DDR双列直插式存储模块,其特征在于,所述第一数据收发器包括多个第一接收模块和第一发送模块,所述多个第一接收模块用于从外部获取所述第一信道的所有数据信号位,并将获取的数据信号分别发送给所述第一选择器和所述ECC编码器,所述第一发送模块连接所述第二选择器,用于将所述第二选择器输出的数据信号发送出去。
13.如权利要求12所述的DDR双列直插式存储模块,其特征在于,所述第一接收模块包括第一接收器、第二接收器和第一D触发器;所述第一接收器用于接收来自外部的数据信号并将其输出至所述第一D触发器的输入端,所述第二接收器用于接收来自外部的采样时钟并将其输出至所述第一D触发器的时钟信号输入端,所述第一D触发器的正向输出端在时钟信号的上升沿将来自外部的数据信号输出。
14.如权利要求10所述的DDR双列直插式存储模块,其特征在于,还包括第一Rank,所述第一组DRAM颗粒设置于所述第一Rank。
15.如权利要求14所述的DDR双列直插式存储模块,其特征在于,所述数据缓存器设置于所述第一Rank;所述第一Rank具有多个行位置,所述数据缓存器和所述第一组DRAM颗粒占据不同的行位置。
16.如权利要求14所述的DDR双列直插式存储模块,其特征在于,所述数据缓存器设置于所述第一Rank;所述第一Rank具有多个行位置,所述第一组DRAM颗粒占据所述多个行位置,所述数据缓存器占据所述第一组DRAM颗粒的一个或多个行位置。
17.如权利要求14所述的DDR双列直插式存储模块,其特征在于,还包括第二Rank,所述第二Rank设置在与所述第一Rank所在的面相反的面,所述第二Rank具有与所述第一组DRAM颗粒对应设置的第二组DRAM颗粒;所述数据缓存器还用于在写操作中将所述第一信道的所有数据信号位发送给所述第二组DRAM颗粒,以及在读操作中从所述第二组DRAM颗粒获取所述第一信道的所有数据信号位。
18.如权利要求14所述的DDR双列直插式存储模块,其特征在于,所述数据缓存器设置在与所述第一Rank所在的面相反的面。
19.如权利要求10所述的DDR双列直插式存储模块,其特征在于,所述数据缓存器用于在读操作中从所述第一组DRAM颗粒获取所述第一信道的所有数据信号位,解码并判断是否存在错码,以及在存在错码时,对数据信号进行纠错后再发送出去。
20.一种存储系统,其特征在于,包括CPU和如权利要求1至19中任一项所述的DDR双列直插式存储模块。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211085285.4A CN115295066A (zh) | 2022-05-16 | 2022-05-16 | Ddr双列直插式存储模块、存储系统及其操作方法 |
CN202210526445.8A CN114627954B (zh) | 2022-05-16 | 2022-05-16 | Ddr双列直插式存储模块、存储系统及其操作方法 |
PCT/CN2022/117251 WO2023221342A1 (zh) | 2022-05-16 | 2022-09-06 | Ddr双列直插式存储模块、存储系统及其操作方法 |
US17/994,324 US12026050B2 (en) | 2022-05-16 | 2022-11-27 | DDR DIMM, memory system and operation method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210526445.8A CN114627954B (zh) | 2022-05-16 | 2022-05-16 | Ddr双列直插式存储模块、存储系统及其操作方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211085285.4A Division CN115295066A (zh) | 2022-05-16 | 2022-05-16 | Ddr双列直插式存储模块、存储系统及其操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114627954A CN114627954A (zh) | 2022-06-14 |
CN114627954B true CN114627954B (zh) | 2022-08-30 |
Family
ID=81906988
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211085285.4A Pending CN115295066A (zh) | 2022-05-16 | 2022-05-16 | Ddr双列直插式存储模块、存储系统及其操作方法 |
CN202210526445.8A Active CN114627954B (zh) | 2022-05-16 | 2022-05-16 | Ddr双列直插式存储模块、存储系统及其操作方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211085285.4A Pending CN115295066A (zh) | 2022-05-16 | 2022-05-16 | Ddr双列直插式存储模块、存储系统及其操作方法 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN115295066A (zh) |
WO (1) | WO2023221342A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115295066A (zh) * | 2022-05-16 | 2022-11-04 | 芯动微电子科技(武汉)有限公司 | Ddr双列直插式存储模块、存储系统及其操作方法 |
CN116189745B (zh) * | 2023-04-26 | 2023-09-15 | 长鑫存储技术有限公司 | 存储器和命令序列处理系统 |
CN117971507B (zh) * | 2024-03-29 | 2024-06-21 | 苏州元脑智能科技有限公司 | 一种内存模组及数据存取方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8341332B2 (en) * | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US7234099B2 (en) * | 2003-04-14 | 2007-06-19 | International Business Machines Corporation | High reliability memory module with a fault tolerant address and command bus |
CN101140543B (zh) * | 2007-10-19 | 2010-04-21 | 炬力集成电路设计有限公司 | 支持flash页操作与流水线纠错码的数据交换装置与方法 |
US10459809B2 (en) * | 2017-06-30 | 2019-10-29 | Intel Corporation | Stacked memory chip device with enhanced data protection capability |
US10769013B1 (en) * | 2018-06-11 | 2020-09-08 | Cadence Design Systems, Inc. | Caching error checking data for memory having inline storage configurations |
CN112596674B (zh) * | 2020-12-21 | 2023-10-13 | 成都储迅科技有限责任公司 | 一种用于固态硬盘主控缓存数据双重保护的方法及系统 |
CN114443521A (zh) * | 2021-12-17 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种提高cpu和ddr5 dimm之间传输速率的和装置 |
CN115295066A (zh) * | 2022-05-16 | 2022-11-04 | 芯动微电子科技(武汉)有限公司 | Ddr双列直插式存储模块、存储系统及其操作方法 |
-
2022
- 2022-05-16 CN CN202211085285.4A patent/CN115295066A/zh active Pending
- 2022-05-16 CN CN202210526445.8A patent/CN114627954B/zh active Active
- 2022-09-06 WO PCT/CN2022/117251 patent/WO2023221342A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023221342A1 (zh) | 2023-11-23 |
CN114627954A (zh) | 2022-06-14 |
CN115295066A (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114627954B (zh) | Ddr双列直插式存储模块、存储系统及其操作方法 | |
US7458004B2 (en) | Semiconductor storage device | |
US11164651B2 (en) | Semiconductor devices and semiconductor systems including the same | |
EP2035938B1 (en) | Improving reliability, availability, and serviceability in a memory device | |
US7587658B1 (en) | ECC encoding for uncorrectable errors | |
US20120239996A1 (en) | Memory controller, information processing apparatus and method of controlling memory controller | |
CN107039086B (zh) | 具有兼容不同数据长度的纠错功能的存储器和纠错方法 | |
CN112540867B (zh) | 存储模块以及存储控制器的纠错方法 | |
US20210200634A1 (en) | Storage device and operating method of storage device | |
US20040237001A1 (en) | Memory integrated circuit including an error detection mechanism for detecting errors in address and control signals | |
US11249843B2 (en) | Semiconductor devices and semiconductor systems including the same | |
US11354189B2 (en) | Semiconductor devices and semiconductor systems including the same | |
US20070255999A1 (en) | Memory Arrangement And Method For Error Correction | |
US7873895B2 (en) | Memory subsystems with fault isolation | |
CN116244108A (zh) | 存储器控制器和存储器的数据写入和读取方法及存储系统 | |
US8661300B1 (en) | Error detection in high-speed asymmetric interfaces | |
US11145351B2 (en) | Semiconductor devices | |
US20100146330A1 (en) | Memory device and method thereof | |
US11972827B2 (en) | Semiconductor storage device and reading method | |
US11645151B1 (en) | Base die, memory system, and semiconductor structure | |
US11947810B2 (en) | Semiconductor memory device and memory system including the same | |
CN116069548A (zh) | 存储器装置、存储器模块和存储器控制器的操作方法 | |
US12026050B2 (en) | DDR DIMM, memory system and operation method thereof | |
KR20190069998A (ko) | 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템 | |
US11928021B2 (en) | Systems and methods for address fault detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |