CN116244108A - 存储器控制器和存储器的数据写入和读取方法及存储系统 - Google Patents
存储器控制器和存储器的数据写入和读取方法及存储系统 Download PDFInfo
- Publication number
- CN116244108A CN116244108A CN202310028742.4A CN202310028742A CN116244108A CN 116244108 A CN116244108 A CN 116244108A CN 202310028742 A CN202310028742 A CN 202310028742A CN 116244108 A CN116244108 A CN 116244108A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- read
- storage
- writing
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 465
- 238000000034 method Methods 0.000 title claims abstract description 132
- 239000002245 particle Substances 0.000 claims abstract description 154
- 239000008187 granular material Substances 0.000 claims abstract description 81
- 238000012937 correction Methods 0.000 claims abstract description 43
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000001514 detection method Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000009977 dual effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 239000008188 pellet Substances 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开提供了存储器控制器和存储器的数据写入和读取方法及存储系统。该用于存储器控制器的数据写入方法包括:针对分别要写入m个存储颗粒组的数据进行编码,得到m个写入编码数据,其中m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;将m个写入编码数据分别发送给m个存储颗粒组,其中m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,使得m个存储颗粒组分别对写入数据码元和写入校验码元进行解码,以得到m组写入纠错后码元。该用于存储器控制器的数据写入方法可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
Description
技术领域
本公开的实施例涉及存储器,并且更具体地,涉及存储器控制器和存储器的数据写入方法和数据读取方法及存储系统。
背景技术
长期以来,现代计算机系统都是使用存储器(例如,动态随机存取内存(DRAM))作为主存。DRAM内存如今基本都采用了双倍数据速率(DDR)技术,一般称为DDR内存。DDR内存已经演进到了第5代,一般简称为DDR5内存。随着每一年在计算机系统中使用的DDR内存数量的增长,内存数据可靠性已经变成数据中心系统稳定性最重要的因素之一。在现在的数据中心的高可靠性计算机系统里,都配备了丰富的可靠性、可用性、可维护性(RAS)特性以保障内存数据的正确性。
发明内容
本公开的至少一实施例提供了一种用于存储器控制器的数据写入方法,包括:针对分别要写入m个存储颗粒组的数据进行编码,得到m个写入编码数据,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;将所述m个写入编码数据分别发送给所述m个存储颗粒组,其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,使得所述m个存储颗粒组分别对所述写入数据码元和所述写入校验码元进行解码,以得到m组写入纠错后码元。
本公开的至少一实施例提供了一种用于存储器控制器的数据读取方法,包括:向m个存储颗粒组发送读数据命令,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;从所述m个存储颗粒组读取m个读取编码数据,其中,所述m个读取编码数据由所述m个存储颗粒组分别对所述m个存储颗粒组存储的数据进行编码生成,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元;以及对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
本公开的至少一实施例提供了一种用于存储器的数据写入方法,包括:由m个存储颗粒组分别接收m个写入编码数据,其中,所述m个写入编码数据针对分别要写入所述m个存储颗粒组的数据进行编码而生成,其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;由所述m个存储颗粒组分别对所述写入数据码元和所述写入校验码元进行解码,得到m组写入纠错后码元。
本公开的至少一实施例提供了一种用于存储器的数据读取方法,包括:由m个存储颗粒组从存储器控制器接收读数据命令,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;由所述m个存储颗粒组分别对所述m个存储颗粒组存储的数据进行编码,得到m个读取编码数据;以及将所述m个读取编码数据发送到所述存储器控制器,其中,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元,使得所述存储器控制器对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
本公开的至少一实施例提供了一种存储器控制器,包括:编码单元,被配置为针对分别要写入m个存储颗粒组的数据进行编码,得到m个写入编码数据,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;以及收发单元,被配置为将所述m个写入编码数据分别发送给所述m个存储颗粒组,其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,使得所述m个存储颗粒组分别对所述写入数据码元和所述写入校验码元进行解码,以得到m组写入纠错后码元。
本公开的至少一实施例提供了一种存储器控制器,包括:收发单元,被配置为:向m个存储颗粒组发送读数据命令,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;从所述m个存储颗粒组读取m个读取编码数据,其中,所述m个读取编码数据由所述m个存储颗粒组分别对所述m个存储颗粒组存储的数据进行编码生成,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元;以及解码单元,被配置为对所述数据码元和所述校验码元进行解码,得到m组读取纠错后码元。
本公开的至少一实施例提供了一种存储器,包括:m个存储颗粒组,被配置为:分别接收m个写入编码数据,其中,所述m个写入编码数据针对分别要写入所述m个存储颗粒组的数据进行编码而生成,其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;以及分别对所述写入数据码元和所述写入校验码元进行解码,得到m组写入纠错后码元。
本公开的至少一实施例提供了一种存储器,包括:m个存储颗粒组,被配置为:从存储器控制器接收读数据命令,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;分别对所述m个存储颗粒组存储的数据进行编码,得到m个读取编码数据;以及将所述m个读取编码数据发送到所述存储器控制器,其中,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元,使得所述存储器控制器对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
本公开的至少一实施例提供了一种存储器控制器,包括:编解码单元,被配置为针对分别要写入m个存储颗粒组的数据进行编码,得到m个写入编码数据,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;收发单元,被配置为将所述m个写入编码数据分别发送给所述m个存储颗粒组,其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,使得所述m个存储颗粒组分别对所述写入数据码元和所述写入校验码元进行解码,以得到m组写入纠错后码元,所述收发单元还被配置为:向所述m个存储颗粒组发送读数据命令;和从所述m个存储颗粒组读取m个读取编码数据,其中,所述m个读取编码数据由所述m个存储颗粒组分别对所述m个存储颗粒组存储的数据进行编码生成,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元;以及所述编解码单元还被配置为:对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
本公开的至少一实施例提供了一种存储器,包括:m个存储颗粒组,被配置为:分别接收m个写入编码数据,其中,所述m个写入编码数据针对分别要写入所述m个存储颗粒组的数据进行编码而生成,其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;分别对所述写入数据码元和所述写入校验码元进行解码,得到m组写入纠错后码元;从存储器控制器接收读数据命令;以及分别对所述m个存储颗粒组存储的数据进行编码,得到m个读取编码数据;以及将所述m个读取编码数据发送到所述存储器控制器,其中,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元,使得所述存储器控制器对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
本公开的至少一实施例提供了一种存储系统,包括如上所述的存储器控制器;以及如上所述的存储器。
根据本公开的至少一实施例提供的用于存储器控制器的数据写入方法和读取方法、用于存储器的数据写入方法和读取方法、存储器控制器、存储器、以及存储系统,可以解决例如存内计算数据在存储颗粒和主控芯片间链路上传输时产生的错误。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对本公开的实施例的附图作简单地介绍。明显地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了示例性的DDR5 ECC数据排布示意图;
图2示出了根据本公开的至少一实施例的数据的用于存储器控制器的数据写入方法的流程图;
图3示出了根据本公开的至少一实施例的数据的用于存储器控制器的数据读取方法的流程图;
图4示出了根据本公开的至少一实施例的数据的用于存储器的数据写入方法的流程图;
图5示出了根据本公开的至少一实施例的数据的用于存储器的数据读取方法的流程图;
图6示出了根据本公开的至少一实施例的存储器控制器的示意图;
图7示出了根据本公开的至少一实施例的存储器的示意图;
图8示出了根据本公开的至少一实施例的存储系统的示意图;
图9示出了根据本公开的至少一实施例的内存子系统的示意图;
图10示出了根据本公开的至少一实施例的支持ECC的DRAM颗粒的示意图。
具体实施方式
现在将详细参考本公开的具体实施例,在附图中例示了本公开的示例。尽管将结合具体实施例描述本公开,但将理解,不是想要将本公开限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本公开的精神和范围内包括的变更、修改和等价物。应注意,本文描述的方法操作都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
为了使本领域技术人员更好地理解本公开,下面结合附图和具体实施方式对本公开作进一步详细说明。
注意,接下来要介绍的示例仅是具体的示例,而不作为限制本公开的实施例必须为示出和描述的具体的外形、硬件、连接关系、操作、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本公开的构思来构造本说明书中未提到的更多实施例。
本公开中使用的术语是考虑到关于本公开的功能而在本领域中当前广泛使用的那些通用术语,但是这些术语可以根据本领域普通技术人员的意图、先例或本领域新技术而变化。此外,特定术语可以由申请人选择,并且在这种情况下,其详细含义将在本公开的详细描述中描述。因此,说明书中使用的术语不应理解为简单的名称,而是基于术语的含义和本公开的总体描述。
本公开中使用了流程图来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
首先对本申请涉及的缩略词和相关术语进行定义、说明。
DRAM(Dynamic Random Access Memory):动态随机存取存储器。
DDR(Double Data Rate):双倍数据速率。
DDR SDRAM(Double Data Rate SDRAM):双倍速率同步动态随机存取存储器。
DDR5(Double Data Rate5):双倍数据速率5,一般指第5代DDR内存。
颗粒或内存颗粒(Device):例如双列直插内存单元(DIMM)或直接焊接于在电路板上的内存芯片。示例性的内存颗粒包括DRAM颗粒。
ECC(Error Correction Code):纠错码或纠错编码,是一种能够实现错误检查和纠错的编码技术,可提高系统的可靠性。
CE(Correctable Error):可纠正错误。
UE(Uncorrectable Error):不可纠正错误。
RAS(Reliability,Availability,Serviceability):可靠性、可用性、可维护性。
PIM(Processing In Memory):存内计算或存内处理,在存储芯片内实现计算功能。
NDC(Near Data Computing):近数据计算。
近存计算(Near Memory Computing):在存储芯片附近实现计算功能。
RS编码(Reed-Solomon编码):是一种前向纠错的信道编码。
汉明码:一种错误检测及纠错编码。
通道(Channel):通常指共享同一套地址总线的多个颗粒的组合,可包含多个片选信号。
内存列(Rank):每根双列直插式存储模块可以有一到多个内存列。内存列就是多个内存颗粒组在一起,在同一时间一起提供内存控制器需要的数据。内存列所需要的内存颗粒数量由内存颗粒宽度决定。比如,对于DDR~DDR4,组成一个内存列需要16颗x4的DRAM颗粒(64/4=16),如果支持ECC的话就是18颗(16+8/4=18);如果是x8的内存颗粒,就需要9颗内存颗粒((64+8)/8=9)来支持ECC。同一个内存列的信号由同一个CS信号来控制。如果是DDR5,一个内存列需要8颗x4的DRAM颗粒(32/4=8),支持ECC的内存列需要10颗x4内存颗粒(40/4=10),或者4颗x8的内存颗粒,支持ECC的内存列需要5颗x8的内存颗粒。
符号(Symbol)又称码元:ECC纠错时最小的单元,一般有x4和x8颗粒,对应symbol就为4比特(bit)和8比特数据。
DIMM(dual In-line memory module):双列直插内存模块。
DDR PHY(DDR Physical Layer):负责DDR电气信号的发送/接收。
链路(Link):指DDR颗粒和主控芯片之间的物理通路,通常包括电路板走线,DDRPHY等部分。
突发数据尺寸(Burst Size):指内存控制器向DRAM颗粒一次突发数据的大小,通常为颗粒的数据宽度与突发长度的乘积,例如64比特或者128比特。
可以理解的是,上面定义的术语只是在特定应用场景下的示例性定义,以便更好的理解本申请。例如,上面描述的针对特定内存的示例性定义可以扩展到其他类型的内存或其他存储器。
为了保障内存数据的正确性,常用的手段包括了内存纠错编码(ECC)。ECC纠错编码根据算法的不同,可以提供不同的纠错能力,常见的编码方式包括RS编码和汉明编码。然而,这些常见的编码方式通常是基于DDR通道所有的数据来进行。
近年来,为了解决计算主流架构中的访存带宽和访存功耗的问题,存内计算(Processing In Memory)受到广泛关注,成为智能计算的主要技术路线之一。存内计算的一个主要的技术路线是把计算单元集成到存储单元内,也被称为近数据计算(Near DataProcessing)。近数据计算的一个重要实现就是基于DRAM来实现计算单元内嵌。存内计算的新架构对于数据可靠性的保护提出了新的要求。
示例性的ECC方案包括1)基于DDR通道的ECC方案和2)DRAM颗粒的片上ECC方案。
关于1)基于DDR通道的ECC方案,它主要是通过基于DDR通道的ECC算法来实现。图1示出了示例性的DDR5 ECC数据排布示意图。如图1所示,DDR5(体现为DDR5内存列200)的ECC编码的数据(也称为数据码元)和校验字(也称为校验码元)是分散存储于5个x8内存颗粒202至210上。这些数据码元和校验码元在本文中可以统称为编码数据。8比特校验字存储于x8内存颗粒202,并且8比特数据存储于x8内存颗粒204至210上。内存控制器向DRAM颗粒写入数据时,会把校验字同时写入相应DRAM颗粒。参见图1,所示的15笔编码数据(第1笔编码数据值第15笔编码数据)包括校验字和数据。每次读操作会把所有的内存颗粒数据都读回来,组合成为ECC解码所需要的数据和校验字,然后开始进行数据检错和纠错。
在上述情况下,在存内运算、近存计算等应用场景中,由于数据的计算在DRAM颗粒内部或者颗粒附近完成。由于新数据在PIM单元生成,所以当初从内存控制器写入的校验字已经失效。因此传统的基于DDR通道的内存控制器侧的检错和纠错方法已然不适用。
关于2)DRAM颗粒的片上ECC方案,它是通过在DRAM颗粒内部存取数据的同时做ECC的编码和校验工作。片上ECC可以解决内存颗粒内部的数据错误检测和纠错的问题。
然而,上述片上ECC方案的数据保护仅限于DRAM颗粒内。不能检测和纠错发生在内存颗粒到主控芯片之间的链路上的错误。随着内存总线的频率的不断提升,链路上的信号完整性问题变得日益恶化,数据在链路上传输发生错误的可能性变得越来越大。
随着新的计算架构的发展,存内计算等新应用对数据纠错功能提出了新要求,上述1)基于DDR通道的ECC方案和2)DRAM颗粒的片上ECC方案都已经不能满足需求。本公开的至少一些实施例提出了一种用于存储器控制器的数据写入方法、读取方法、用于存储器的数据写入方法、读取方法、存储器控制器、存储器、以及存储系统,解决例如存内计算数据在存储颗粒和主控芯片间链路上传输时产生的错误。
以下参照附图,对本公开的实施例的数据的用于存储器控制器的数据写入方法、读取方法、用于存储器的数据写入方法、读取方法、存储器控制器、存储器、以及存储系统分别进行详细介绍。
首先,以下介绍本公开的实施例的用于存储器控制器的数据写入方法,该用于存储器控制器的数据写入方法可以应用于如下文进一步描述的存储器控制器、存储系统、其他电子设备、以及其他合适的软件或硬件、或硬件和软件的结合。
图2示出了根据本公开的至少一实施例的数据的用于存储器控制器的数据写入方法200的流程图,该用于存储器控制器的数据写入方法200可以包括步骤S210~S220。
在步骤S210中,针对分别要写入m个存储颗粒组的数据进行编码,得到m个写入编码数据,其中,m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒(即第一存储颗粒组包括n1个存储颗粒,第二存储颗粒组包括n2个存储颗粒,以此类推,第m存储颗粒组包括nm个存储颗粒),n1…nm≥1。
可以理解的是,在本文中,存储列是多个存储颗粒组成在一起,在同一时间一起提供存储器控制器需要的数据,因而存储器控制器可以在同一时间一起对存储列中的存储颗粒组进行访问(写入/读取)。在该实施例中,存储器控制器可以在同一时间一起对m个存储颗粒组进行写入。
在一些实施例中,m个存储颗粒组构成存储器的同一存储列。
在步骤S220中,将m个写入编码数据分别发送给m个存储颗粒组。
在该实施例中,m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,使得m个存储颗粒组分别对写入数据码元和写入校验码元进行解码,以得到m组写入纠错后码元。
附加地,m组写入纠错后码元可以分别存储到m个存储颗粒组。因而每个存储颗粒组可以存储相应地一组写入纠错后码元。
如此,根据本公开的至少一实施例的用于存储器控制器的数据写入方法可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
例如,根据本公开的至少一实施例的用于存储器控制器的数据写入方法可以以存储器的存储列中的存储颗粒组(而不是存储列中的全部存储颗粒)为单位、分别针对要写入相应存储颗粒组的数据生成校验字,因而可以促使相应的存储颗粒组单独地基于各自的校验字对写入的数据进行解码以实现纠错。例如,与上述1)基于DDR通道的ECC方案相比,根据本公开的至少一实施例的用于存储器控制器的数据写入方法中的相应的存储颗粒组解码所需的校验字不受要写入其他内存颗粒组的数据的影响,保证了数据校验和校验字的生成都在本地存储颗粒上完成,满足了近存计算等应用场景中数据在存储颗粒内被修改的需要。又例如,与上述2)DRAM颗粒的片上ECC方案相比,根据本公开的至少一实施例的用于存储器控制器的数据写入方法可以促进存储颗粒组基于要写入该存储颗粒组的数据而生成的校验字进行解码,实现对该存储颗粒组与存储控制器之间的链路上的错误的纠错,提高了纠错所覆盖的错误范围,因而提高了纠错能力。
以下对本公开的至少一实施例的用于存储器控制器的数据写入方法的其他方面进行详细的描述。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据写入方法,n1…nm=1。如此,根据本公开的至少一实施例的用于存储器控制器的数据写入方法可以以存储器的存储列中的单个存储颗粒为单位各自生成校验字,因而可以促使相应的单个存储颗粒单独地基于各自的校验字进行解码以实现纠错。例如,在一些示例中,存储列可以包括2个(m=2)存储颗粒组,每个存储颗粒组可以包括1个(n1=n2=1)存储颗粒。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据写入方法,n1…nm>1。如此,根据本公开的至少一实施例的用于存储器控制器的数据写入方法可以以存储器的存储列中的多个存储颗粒为单位各自生成校验字,因而可以促使相应的多个存储颗粒单独地基于各自的校验字进行解码以实现纠错。例如,在一些示例中,存储列可以包括2个(m=2)存储颗粒组,每个存储颗粒组可以包括2个(n1=n2=2)存储颗粒。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据写入方法,n1…nm≥1且n1…nm各不相等或不完全相等。如此,根据本公开的至少一实施例的用于存储器控制器的数据写入方法可以灵活设置存储颗粒组所包括的存储颗粒的数量,这在例如在存内计算等应用场景中,在一些存储颗粒组需要较高的RAS要求(因而可以分别仅包括单个存储颗粒)而另一些存储颗粒组需要较低的RAS要求(因而可以分别包括多个存储颗粒)的情况下尤为有利。例如,在一些示例中,存储列可以包括2个(m=2)存储颗粒组,一个存储颗粒组可以包括1个(n1=1)存储颗粒,并且另一个存储颗粒组可以包括2个(n2=2)存储颗粒。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据写入方法,还可以包括:分别将m个写入编码数据与m个存储颗粒组相映射;以及将m个写入编码数据进行数模转换。例如,存储器控制器可以包括重映射单元,重映射单元可以将m个写入编码数据与m个存储颗粒组相映射,从而促进将写入编码数据发送到相应的存储颗粒组。例如,存储控制器还可以包括存储器物理层(例如DDR PHY)单元,存储器物理层单元可以对写入编码数据进行数模转换,以对写入编码数据进行发送。因此,重映射单元和存储器物理层单元可以将写入编码数据发送到相应的存储颗粒。然而实施例不限于此,也可以通过其他方式将写入编码数据发送到相应的存储颗粒。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据写入方法,m组写入纠错后码元可以包括m个写入纠错后数据码元和m个写入纠错后校验码元,其中m个写入纠错后数据码元可以被分别存储在m个存储颗粒组中,并且m个写入纠错后校验码元可以被丢弃。如此,根据本公开的至少一实施例的用于存储器控制器的数据写入方法可以将写入纠错后数据码元存储到相应的存储颗粒组中,而不存储纠错后校验码元,进而提交存储器的利用率。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据写入方法,m个写入纠错后数据码元可以被分别存储在m个存储颗粒组的存储阵列单元中。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据写入方法,编码和解码可以采用相同的算法。如此,可以简化存储器控制和存储器的编码和解码单元的结构。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据写入方法,算法可以包括RS编码算法或汉明码编码算法。
以下介绍本公开的实施例的用于存储器控制器的数据读取方法,该数据读取方法可以应用于如下文进一步描述的存储器控制器、存储系统、其他电子设备、以及其他合适的软件或硬件、或硬件和软件的结合。
图3示出了根据本公开的至少一实施例的数据的用于存储器控制器的数据读取方法300的流程图,该用于存储器控制器的数据写入方法300可以包括步骤S310~S330。
在步骤S310中,向m个存储颗粒组发送读数据命令,其中,m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1。
在该实施例中,存储器控制器可以在同一时间一起对m个存储颗粒组进行读取。
在步骤S320中,从m个存储颗粒组读取m个读取编码数据,其中,m个读取编码数据由m个存储颗粒组分别对m个存储颗粒组存储的数据进行编码生成,m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元。
在步骤S330中,对读取数据码元和读取校验码元进行解码,得到m组读取纠错后码元。
附加地,m组读取纠错后码元可以被例如存储器控制器进行进一步处理。
如此,根据本公开的至少一实施例的用于存储器控制器的数据读取方法可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
例如,根据本公开的至少一实施例的用于存储器控制器的数据读取方法可以以存储器的存储列中的存储颗粒组(而不是存储列中的全部存储颗粒)为单位来获取分别针对要读取的存储颗粒组的数据而生成的校验字,使得存储器控制器可以单独地以存储颗粒组为单位对读取的数据进行解码以实现纠错。例如,与上述1)基于DDR通道的ECC方案相比,根据本公开的至少一实施例的用于存储器控制器的数据读取方法可以支持原始数据在存储颗粒侧被改写,而校验字是基于修改后的原始数据实时产生的。而这个特点正是存内计算所必须的特性。基于DDR通道的ECC方案中的ECC校验字是在内存控制器侧生成并且被写入专门的DRAM颗粒中保存。一旦原始数据在颗粒侧被改写,相应的ECC校验字就会失效,失去对原始数据的保护功能。而本公开的至少一实施可以支持在颗粒侧针对改写后的原始数据实时生成ECC校验字,发送到内存控制器来完成数据的出错保护功能。又例如,与上述2)DRAM颗粒的片上ECC方案相比,根据本公开的至少一实施例的用于存储器控制器的数据写入方法可以支持存储器控制器基于针对要读取的存储颗粒组的数据而生成的校验字进行解码,实现对存储颗粒与存储控制器之间的链路上的错误的纠错,提高了纠错所覆盖的错误范围,因而提高了纠错能力。
以下对本公开的至少一实施例的用于存储器控制器的数据读取方法的其他方面进行详细的描述。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据读取方法,还可以包括:分别将m个读取编码数据与存储器控制器相映射;以及将m个读取编码数据进行数模转换。例如,存储器控制器可以包括重映射单元,重映射单元可以分别将m个读取编码数据与存储器控制器相映射,从而促进从相应的存储颗粒组读取该读取编码数据。例如,存储控制器还可以包括存储器物理层(例如DDR PHY)单元,存储器物理层单元可以对读取编码数据进行数模转换,以对读取编码数据进行接收。因此,重映射单元和存储器物理层单元可以从相应的存储颗粒组读取该读取编码数据。然而实施例不限于此,也可以通过其他方式从相应的存储颗粒组读取该读取编码数据。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据读取方法,编码和解码可以采用相同的算法。
在一些实施例中,根据本公开的至少一实施例的用于存储器控制器的数据读取方法,算法可以包括RS编码算法或汉明码编码算法。
以上仅结合图3描述了根据本公开的至少一实施例的用于存储器控制器的数据读取方法300的部分,并且数据的用于存储器控制器的数据读取方法300的其余部分可以对本公开的结合图2描述的用于存储器控制器的数据写入方法200的各个方面进行引用,并且根据本公开的结合图2描述的用于存储器控制器的数据写入方法200的各个方面的效果同样可以映射到本公开的结合图3描述用于存储器控制器的数据读取方法300,在此不再赘述。
以上结合图2描述的用于存储器控制器的数据写入方法200和以上结合图3描述的用于存储器控制器的数据读取方法300可以组合为例如一种用于存储器控制器的数据访问方法,从而包含用于存储器控制器的数据写入方法200和用于存储器控制器的数据读取方法300两者并且具有相应的技术效果,在此不再赘述。
需要说明的是,本文带有前缀“写入”、“读取”的术语仅是为了针对写入过程和读取过程中的对象的区分描述,以避免混淆。例如,“写入编码数据”对应于数据写入过程中的编码数据,“读取编码数据”对应于数据读取过程中的编码数据。又例如,“写入数据码元”和“写入校验码元”分别对应于数据写入过程中的数据码元和校验码元,“读取数据码元”和“读取校验码元”分别对应于数据读取过程中的数据码元和校验码元。又例如,“写入纠错后码元”对应于数据写入过程中的纠错后码元,“读取纠错后码元”对应于数据读取过程中的纠错后码元。
以下介绍本公开的实施例的用于存储器的数据写入方法,该用于存储器的数据写入方法可以应用于如下文进一步描述的存储器、存储系统、其他电子设备、以及其他合适的软件或硬件、或硬件和软件的结合。
图4示出了根据本公开的至少一实施例的数据的用于存储器的数据写入方法400的流程图,该用于存储器的数据写入方法400可以包括步骤S410~S420。
在步骤S410中,由m个存储颗粒组分别接收m个写入编码数据,其中,m个写入编码数据针对分别要写入m个存储颗粒组的数据进行编码而生成,其中,m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1。
在步骤S420中,由m个存储颗粒组分别对写入数据码元和写入校验码元进行解码,得到m组写入纠错后码元。
如此,根据本公开的至少一实施例的用于存储器的数据写入方法可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
以下对本公开的至少一实施例的用于存储器的数据写入方法的其他方面进行详细的描述。
在一些实施例中,根据本公开的至少一实施例的用于存储器的数据写入方法,m组写入纠错后码元可以包括m个写入纠错后数据码元和m个写入纠错后校验码元,其中m个写入纠错后数据码元可以被分别存储在m个存储颗粒组中,并且m个写入纠错后校验码元可以被丢弃。
结合图4描述的用于存储器的数据写入方法可以与结合图2描述的用于存储器控制器的数据写入方法相对应,因此,结合图4描述的用于存储器的数据写入方法的附加方法可以参见结合图2描述的用于存储器控制器的数据写入方法及其附加方法并且具有相应的技术效果,在此不再赘述。
图5示出了根据本公开的至少一实施例的数据的用于存储器的数据读取方法500的流程图,该用于存储器的数据读取方法500可以包括步骤S510~S530。
在步骤S510中,由m个存储颗粒组从存储器控制器接收读数据命令,其中,m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1。
在步骤S520中,由m个存储颗粒组分别对m个存储颗粒组存储的数据进行编码,得到m个读取编码数据。
在步骤S530中,将m个读取编码数据发送到存储器控制器,
在上述实施例中,m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元,使得存储器控制器对读取数据码元和读取校验码元进行解码,得到m组读取纠错后码元。
如此,根据本公开的至少一实施例的用于存储器的数据读取方法可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
结合图5描述的用于存储器的数据读取方法可以与结合图3描述的用于存储器控制器的数据读取方法相对应,因此,结合图5描述的用于存储器的数据读取方法的附加方法可以参见结合图3描述的用于存储器控制器的数据读取方法及其附加方法并且具有相应的技术效果,在此不再赘述。
以上结合图4描述的用于存储器的数据写入方法400和以上结合图5描述的用于存储器的数据读取方法500可以组合为例如一种用于存储器的数据访问方法,从而包含用于存储器的数据写入方法400和用于存储器的数据读取方法500二者并且具有相应的技术效果,在此不再赘述。
与根据本公开的至少一实施例的用于存储器控制器的数据写入方法或用于存储器控制器的数据读取方法相对应地,本公开还提供了一种存储器控制器。
图6示出了根据本公开的至少一实施例的存储器控制器600的示意图。如图6所示,该存储器控制器600可以包括编解码单元610以及收发单元620。
例如,与根据本公开的至少一实施例的用于存储器控制器的数据写入方法相对应地,存储器控制器600包括的编解码单元610以及收发单元620可以被配置如下。
编解码单元610可以被配置为针对分别要写入m个存储颗粒组的数据进行编码,得到m个写入编码数据,其中,m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1。
收发单元620可以被配置为将m个写入编码数据分别发送给m个存储颗粒组。
在该实施例中,m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,使得m个存储颗粒组分别对写入数据码元和写入校验码元进行解码,以得到m组写入纠错后码元。
如此,根据本公开的至少一实施例的存储器控制器可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
例如,与根据本公开的至少一实施例的用于存储器控制器的数据读取方法相对应地,存储器控制器600包括的编解码单元610以及收发单元620可以被配置如下。
收发单元620可以被配置为向m个存储颗粒组发送读数据命令,其中,m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;以及从m个存储颗粒组读取m个读取编码数据,其中,m个读取编码数据由m个存储颗粒组分别对m个存储颗粒组存储的数据进行编码生成,m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元。
解码单元610可以被配置为对数据码元和校验码元进行解码,得到m组读取纠错后码元。
如此,根据本公开的至少一实施例的存储器控制器可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
与根据本公开的至少一实施例的用于存储器控制器的数据写入方法和用于存储器控制器的数据读取方法相对应地,存储器控制器600包括的编解码单元610以及收发单元620可以被配置如下。
编解码单元610可以被配置为针对分别要写入m个存储颗粒组的数据进行编码,得到m个写入编码数据,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1。
收发单元620可以被配置为将所述m个写入编码数据分别发送给所述m个存储颗粒组,其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,使得所述m个存储颗粒组分别对所述写入数据码元和所述写入校验码元进行解码,以得到m组写入纠错后码元。
收发单元620还可以被配置为:向所述m个存储颗粒组发送读数据命令;和从所述m个存储颗粒组读取m个读取编码数据,其中,所述m个读取编码数据由所述m个存储颗粒组分别对所述m个存储颗粒组存储的数据进行编码生成,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元。
编解码单元610还可以被配置为对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
如此,根据本公开的至少一实施例的存储器控制器可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
与根据本公开的至少一实施例的用于存储器的数据写入方法或用于存储器的数据读取方法相对应地,本公开还提供了一种存储器。
图7示出了根据本公开的至少一实施例的存储器700的示意图。如图7所示,该存储器700包括m个存储颗粒组710。
与根据本公开的至少一实施例的用于存储器的数据写入方法相对应地,存储器700包括的m个存储颗粒组710可以被配置如下。
m个存储颗粒组可以被配置为:分别接收m个写入编码数据,其中,m个写入编码数据针对分别要写入m个存储颗粒组的数据进行编码而生成,其中,m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;以及分别对写入数据码元和写入校验码元进行解码,得到m组写入纠错后码元。
如此,根据本公开的至少一实施例的存储器可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
与根据本公开的至少一实施例的用于存储器的数据读取方法相对应地,存储器700包括的m个存储颗粒组710可以被配置如下。
m个存储颗粒组可以被配置为:从存储器控制器接收读数据命令,其中,m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;分别对m个存储颗粒组存储的数据进行编码,得到m个读取编码数据;以及将m个读取编码数据发送到存储器控制器,其中,m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元,使得存储器控制器对读取数据码元和读取校验码元进行解码,得到m组读取纠错后码元。
如此,根据本公开的至少一实施例的存储器可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
与根据本公开的至少一实施例的用于存储器的数据写入方法和用于存储器的数据读取方法相对应地,存储器700包括的m个存储颗粒组710可以被配置如下。
m个存储颗粒组可以被配置为:分别接收m个写入编码数据,其中,m个写入编码数据针对分别要写入m个存储颗粒组的数据进行编码而生成,其中,m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;分别对写入数据码元和写入校验码元进行解码,得到m组写入纠错后码元;从存储器控制器接收读数据命令;以及分别对m个存储颗粒组存储的数据进行编码,得到m个读取编码数据;以及将m个读取编码数据发送到存储器控制器,其中,m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元,使得存储器控制器对读取数据码元和读取校验码元进行解码,得到m组读取纠错后码元。
如此,根据本公开的至少一实施例的存储器可以在存内计算等应用场景中,检查和纠正数据在内存颗粒组(例如单个内存颗粒)和内存控制器之间传输时发生的错误。
图8示出了根据本公开的至少一实施例的存储系统800的示意图。如图8所示,该存储系统800可以包括如上参见图6描述的存储器控制器600以及参见图7描述的存储器700。如此,参见图6描述的存储器控制器600以及参见图7描述的存储器700可以映射到参见图8描述的存储系统800,在此不再赘述。
下面通过图9至图10来描述可以利用根据本公开的图2至图8的实施例的一个或多个方面的示例应用场景。可以理解的是,图9至图10所示出的应用场景仅是示例性的,而没有穷尽列举说明本公开的图2至图8的实施例的各个方面,并且结合图9至图10描述的各方面与结合图2至图8描述的实施例的各个方面可以相互引用,而不超出本公开的范围。
在该示例应用场景中,存储器控制器被示出为内存控制器,存储器被示出为DRAM存储器,存储列被示出为DDR内存列(DDR Rank),由此该示例应用场景可以体现为内存子系统。然而,实施例不限于此。
图9示出了根据本公开的至少一实施例的内存子系统900的示意图。这里的内存子系统900可以是上文的存储系统的一个示例性实例。
参见图9,内存子系统900可以包括内存控制器910和DDR内存列920。内存控制器910可以是上文的存储器控制器的一个示例性实例,DDR内存列920可以是上文的存储列的一个示例性实例。内存控制器910也通常被称为主控芯片。示例性的存储器可以包括一个多个DDR内存列920。
内存控制器910可以包含ECC编解码单元902,数据重映射单元904,以及DDR PHY单元906。DDR内存列920可以包括多个DRAM颗粒,例如DRAM颗粒922、DRAM颗粒924以及DRAM颗粒926等。DDR内存列920可以是双列直插内存单元(DIMM)、直接焊接在电路板上的多颗DRAM颗粒(也称为DRAM颗粒芯片)或者其他形式。
示例性的DRAM颗粒的结构如图10所示。图10示出了根据本公开的至少一实施例的支持ECC的DRAM颗粒1000的示意图。参见图10,DRAM颗粒1000内部可以包含存储阵列单元1002,ECC编解码单元1004,以及可选地包含存内处理单元(PIM)1406。
继续参见图9,内存控制器910可以经由DDR通道与DDR内存列920进行访问。虽然图9以一个DDR通道作为示例,然而实施例不限于此,内存子系统900还可以包含多个DDR通道。
下面描述内存子系统900中内存控制器910与DDR内存列920之间的写数据工作流程以及读数据工作流程。
写数据的示例性工作流程如下。
1.内存控制器910可以向DDR内存列920中的DRAM颗粒(例如DRAM颗粒922)发送写数据时,内存控制器910中的ECC编解码单元902可以根据当前DRAM颗粒(例如DRAM颗粒922)的突发数据大小完成编码,生成编码数据(例如可以对应于上文的写入编码数据)。例如,对于x8的DRAM颗粒,突发长度为16,突发数据大小为128比特,ECC编码单元902可以相应地生成16比特校验字。
2.通过数据重映射单元904和DDR PHY单元906可以把相应编码数据(包括ECC编码的数据和校验字)发送给单个对应的DRAM颗粒(例如DRAM颗粒922)。
3.DRAM颗粒(例如DRAM颗粒922)可以在接收到编码数据后经过本地ECC编解码单元1004进行解码以完成数据检错和纠错。附加地,DRAM颗粒(例如DRAM颗粒922)可以将经过纠错的数据进行存储,例如存储在该DRAM颗粒的存储阵列单元1002中。附加地,经过纠错的校验字可以被丢弃而不被存储。一旦出现ECC校验出错,DRAM颗粒(例如DRAM颗粒922)可以通过特定的信号线例如Alert_N把出错信息传送回内存控制器910,要求重传上报等出错处理流程。
读数据的示例性工作流程如下。
1.内存控制器910可以向DRAM颗粒(例如DRAM颗粒922)发送读数据命令。
2.DRAM颗粒(例如DRAM颗粒922)可以把经过存内处理单元(PIM)1406生成的数据从存储阵列单元1002中取出,调用本地ECC编解码单元1004完成ECC编码,生成编码数据(例如可以对应于上文的读取编码数据)。该编码数据可以包括原始数据和ECC校验字。然后可以将ECC校验字后附在原始数据后一起发送给内存控制器910。
3.编码数据在经过DDR PHY单元906和重映射单元904后送到内存控制器910的ECC编解码单元902进行解码以实现数据检错和纠错。
在该示例应用场景中,每个DRAM颗粒的数据都可以独立检错和纠错,不依赖DDR存储列上其他DRAM颗粒上存储的数据。
在该示例应用场景的附加方面,在内存控制器910中的ECC编解码单元902和DRAM颗粒中的ECC编解码单元1004可以采用同样的算法,用于实现编码-解码对,即一侧编码,另一侧解码。
在该示例应用场景中,可以在存内计算等应用场景中,检查和纠正数据在单个内存颗粒和内存控制器之间传输时发生的错误。例如,检错与纠错可以在单个内存颗粒内完成。又例如,校验字的生成无需读取其他内存颗粒数据。又例如,节省了对ECC校验颗粒的使用,例如单个内存颗粒即可完成ECC纠错所需全部数据的写入与读取。
上述示例应用场景只是实现根据本公开的图2至图8的实施例的一个或多个方面,上述示例应用场景的其他方面可以参照根据本公开的图2至图8的实施例的其他方面及其附加方面。
上述示例应用场景仅是示例性,可以存在其他变体。例如,上述示例应用场景并不限于DRAM颗粒的纠错保护,其他存储器(例如片外的SRAM模块、Flash模块、以及其他存储介质)都可以适用。又例如,上述示例应用场景不限于支持PIM功能的存储器,任何支持在存储器内改变数据的应用都可以采用此方法来纠正传输中的保护数据错误。
在上文的详细描述中,出于解释而非限制的目的,阐述了具体细节,以便提供对本公开中描述的各个方面和实施例的透彻理解。在一些情况下,省略了对众所周知的设备、组件、电路和方法的详细描述,以免用不必要的细节来模糊本文公开的实施例的描述。本文列举本文公开的原理、方面和实施例的所有声明,以及其具体示例,旨在涵盖其结构等同物和功能等同物两者。另外,这种等同物旨在包括当前已知的等同物以及将来开发的等同物,即,开发的执行相同功能的任何元件,而不管结构如何。因此,例如,可以理解,本文的框图可以表示体现所描述的实施例的原理的说明性电路系统或其他功能单元的概念图。这样的功能和所示的功能块将被理解为是硬件实施的和/或计算机实施的。
本公开的各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
需要说明的是,在本文中,诸如第一、第二等的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且进一步包括没有明确列出的其他要素,或者是进一步包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的优选实施例,并不用于限制本公开;本公开的范围由权利要求确定。
Claims (17)
1.一种用于存储器控制器的数据写入方法,包括:
针对分别要写入m个存储颗粒组的数据进行编码,得到m个写入编码数据,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;
将所述m个写入编码数据分别发送给所述m个存储颗粒组,
其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,使得所述m个存储颗粒组分别对所述写入数据码元和所述写入校验码元进行解码,以得到m组写入纠错后码元。
2.根据权利要求1所述的数据写入方法,还包括:
分别将所述m个写入编码数据与所述m个存储颗粒组相映射;以及
将所述m个写入编码数据进行数模转换。
3.根据权利要求1所述的数据写入方法,其中,所述m组写入纠错后码元包括m个写入纠错后数据码元和m个写入纠错后校验码元,其中所述m个写入纠错后数据码元被分别存储在所述m个存储颗粒组中,并且所述m个写入纠错后校验码元被丢弃。
4.一种用于存储器控制器的数据读取方法,包括:
向m个存储颗粒组发送读数据命令,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;
从所述m个存储颗粒组读取m个读取编码数据,其中,所述m个读取编码数据由所述m个存储颗粒组分别对所述m个存储颗粒组存储的数据进行编码生成,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元;以及
对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
5.根据权利要求4所述的数据读取方法,还包括:
将所述m个读取编码数据进行数模转换;以及
分别将所述m个读取编码数据与所述存储器控制器相映射。
6.根据权利要求1所述数据写入方法或根据权利要求4所述的数据读取方法,其中,所述编码和所述解码采用相同的算法。
7.根据权利要求6所述的数据写入方法或数据读取方法,其中,所述算法包括RS编码算法或汉明码编码算法。
8.一种用于存储器的数据写入方法,包括:
由m个存储颗粒组分别接收m个写入编码数据,其中,所述m个写入编码数据针对分别要写入所述m个存储颗粒组的数据进行编码而生成,其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;
由所述m个存储颗粒组分别对所述写入数据码元和所述写入校验码元进行解码,得到m组写入纠错后码元。
9.根据权利要求8所述的数据写入方法,其中,所述m组写入纠错后码元包括m个写入纠错后数据码元和m个写入纠错后校验码元,其中所述m个写入纠错后数据码元被分别存储在所述m个存储颗粒组中,并且所述m个写入纠错后校验码元被丢弃。
10.一种用于存储器的数据读取方法,包括:
由m个存储颗粒组从存储器控制器接收读数据命令,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;
由所述m个存储颗粒组分别对所述m个存储颗粒组存储的数据进行编码,得到m个读取编码数据;以及
将所述m个读取编码数据发送到所述存储器控制器,
其中,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元,使得所述存储器控制器对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
11.一种存储器控制器,包括:
编码单元,被配置为针对分别要写入m个存储颗粒组的数据进行编码,得到m个写入编码数据,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;以及
收发单元,被配置为将所述m个写入编码数据分别发送给所述m个存储颗粒组,
其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,使得所述m个存储颗粒组分别对所述写入数据码元和所述写入校验码元进行解码,以得到m组写入纠错后码元。
12.一种存储器控制器,包括:
收发单元,被配置为:
向m个存储颗粒组发送读数据命令,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;
从所述m个存储颗粒组读取m个读取编码数据,其中,所述m个读取编码数据由所述m个存储颗粒组分别对所述m个存储颗粒组存储的数据进行编码生成,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元;以及
解码单元,被配置为对所述数据码元和所述校验码元进行解码,得到m组读取纠错后码元。
13.一种存储器,包括:
m个存储颗粒组,被配置为:
分别接收m个写入编码数据,其中,所述m个写入编码数据针对分别要写入所述m个存储颗粒组的数据进行编码而生成,其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;以及
分别对所述写入数据码元和所述写入校验码元进行解码,得到m组写入纠错后码元。
14.一种存储器,包括:
m个存储颗粒组,被配置为:
从存储器控制器接收读数据命令,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;
分别对所述m个存储颗粒组存储的数据进行编码,得到m个读取编码数据;以及
将所述m个读取编码数据发送到所述存储器控制器,
其中,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元,使得所述存储器控制器对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
15.一种存储器控制器,包括:
编解码单元,被配置为针对分别要写入m个存储颗粒组的数据进行编码,得到m个写入编码数据,其中,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;
收发单元,被配置为将所述m个写入编码数据分别发送给所述m个存储颗粒组,
其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,使得所述m个存储颗粒组分别对所述写入数据码元和所述写入校验码元进行解码,以得到m组写入纠错后码元,
所述收发单元还被配置为:
向所述m个存储颗粒组发送读数据命令;和
从所述m个存储颗粒组读取m个读取编码数据,其中,所述m个读取编码数据由所述m个存储颗粒组分别对所述m个存储颗粒组存储的数据进行编码生成,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元;以及
所述编解码单元还被配置为:对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
16.一种存储器,包括:
m个存储颗粒组,被配置为:
分别接收m个写入编码数据,其中,所述m个写入编码数据针对分别要写入所述m个存储颗粒组的数据进行编码而生成,其中,所述m个写入编码数据中的每一个写入编码数据包括写入数据码元和写入校验码元,所述m个存储颗粒组属于存储器的同一存储列,m≥2,每个存储颗粒组分别包括n1…nm个存储颗粒,n1…nm≥1;
分别对所述写入数据码元和所述写入校验码元进行解码,得到m组写入纠错后码元;
从存储器控制器接收读数据命令;以及
分别对所述m个存储颗粒组存储的数据进行编码,得到m个读取编码数据;以及
将所述m个读取编码数据发送到所述存储器控制器,
其中,所述m个读取编码数据中的每一个读取编码数据包括读取数据码元和读取校验码元,使得所述存储器控制器对所述读取数据码元和所述读取校验码元进行解码,得到m组读取纠错后码元。
17.一种存储系统,包括:
根据权利要求15所述的存储器控制器;以及
根据权利要求16所述的存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310028742.4A CN116244108A (zh) | 2023-01-09 | 2023-01-09 | 存储器控制器和存储器的数据写入和读取方法及存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310028742.4A CN116244108A (zh) | 2023-01-09 | 2023-01-09 | 存储器控制器和存储器的数据写入和读取方法及存储系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116244108A true CN116244108A (zh) | 2023-06-09 |
Family
ID=86623486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310028742.4A Pending CN116244108A (zh) | 2023-01-09 | 2023-01-09 | 存储器控制器和存储器的数据写入和读取方法及存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116244108A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539675A (zh) * | 2023-09-25 | 2024-02-09 | 海光信息技术股份有限公司 | 数据的处理方法、存储器控制器以及存储系统 |
CN117851113A (zh) * | 2024-01-18 | 2024-04-09 | 北京飘石科技有限公司 | 一种具有ecc校验的ddr数据传输系统和方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4958350A (en) * | 1988-03-02 | 1990-09-18 | Stardent Computer, Inc. | Error detecting/correction code and apparatus |
CN108292248A (zh) * | 2015-11-20 | 2018-07-17 | 高通股份有限公司 | 存储器系统中的单独链路和阵列纠错 |
CN110727401A (zh) * | 2019-09-09 | 2020-01-24 | 无锡江南计算技术研究所 | 一种访存系统 |
CN113094206A (zh) * | 2021-04-14 | 2021-07-09 | 合肥富煌君达高科信息技术有限公司 | 一种基于纠错的高速数据存取方法及装置 |
CN114791888A (zh) * | 2022-06-22 | 2022-07-26 | 北京得瑞领新科技有限公司 | 状态映射处理方法及装置、介质、ssd设备 |
CN114880163A (zh) * | 2022-06-06 | 2022-08-09 | 北京苹芯科技有限公司 | 基于新型存储器存内计算的ecc使用方法 |
-
2023
- 2023-01-09 CN CN202310028742.4A patent/CN116244108A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4958350A (en) * | 1988-03-02 | 1990-09-18 | Stardent Computer, Inc. | Error detecting/correction code and apparatus |
CN108292248A (zh) * | 2015-11-20 | 2018-07-17 | 高通股份有限公司 | 存储器系统中的单独链路和阵列纠错 |
CN110727401A (zh) * | 2019-09-09 | 2020-01-24 | 无锡江南计算技术研究所 | 一种访存系统 |
CN113094206A (zh) * | 2021-04-14 | 2021-07-09 | 合肥富煌君达高科信息技术有限公司 | 一种基于纠错的高速数据存取方法及装置 |
CN114880163A (zh) * | 2022-06-06 | 2022-08-09 | 北京苹芯科技有限公司 | 基于新型存储器存内计算的ecc使用方法 |
CN114791888A (zh) * | 2022-06-22 | 2022-07-26 | 北京得瑞领新科技有限公司 | 状态映射处理方法及装置、介质、ssd设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539675A (zh) * | 2023-09-25 | 2024-02-09 | 海光信息技术股份有限公司 | 数据的处理方法、存储器控制器以及存储系统 |
CN117851113A (zh) * | 2024-01-18 | 2024-04-09 | 北京飘石科技有限公司 | 一种具有ecc校验的ddr数据传输系统和方法 |
CN117851113B (zh) * | 2024-01-18 | 2024-05-10 | 北京飘石科技有限公司 | 一种具有ecc校验的ddr数据传输系统和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10684793B2 (en) | Semiconductor memory devices including error correction circuits and methods of operating the semiconductor memory devices | |
US9767920B2 (en) | Semiconductor memory devices and memory systems including the same | |
US7774684B2 (en) | Reliability, availability, and serviceability in a memory device | |
US7587625B2 (en) | Memory replay mechanism | |
CN101609418B (zh) | 在具有共享错误位码的共同帧中传送数据和数据屏蔽位的系统 | |
CN101960532B (zh) | 用于节省存储器自刷新功率的系统、方法和装置 | |
US10884848B2 (en) | Memory device, memory system including the same and operation method of the memory system | |
US10803971B2 (en) | Device for supporting error correction code and test method thereof | |
CN116244108A (zh) | 存储器控制器和存储器的数据写入和读取方法及存储系统 | |
US7587658B1 (en) | ECC encoding for uncorrectable errors | |
US20070271495A1 (en) | System to detect and identify errors in control information, read data and/or write data | |
KR20190012566A (ko) | 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법 | |
US11372717B2 (en) | Memory with system ECC | |
KR101991900B1 (ko) | 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 이를 포함하는 메모리 시스템 | |
US11030040B2 (en) | Memory device detecting an error in write data during a write operation, memory system including the same, and operating method of memory system | |
US12081234B2 (en) | ECC memory chip encoder and decoder | |
US11928027B1 (en) | System and method for error checking and correction with metadata storage in a memory controller | |
KR20210132784A (ko) | 메모리 장치 및 메모리 장치로부터 데이터를 읽는 방법 | |
CN108664362A (zh) | 内存镜像的处理方法、内存控制器及用户设备 | |
US11528038B2 (en) | Content aware decoding using shared data statistics | |
US10439642B2 (en) | Error correction method of data storage device | |
US12034457B2 (en) | Memory, memory module, memory system, and operation method of memory system | |
CN115994050A (zh) | 基于错误校正能力的路由分配 | |
CN116069548A (zh) | 存储器装置、存储器模块和存储器控制器的操作方法 |
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 |