CN114245891A - 用于持久性存储器系统等的数据完整性 - Google Patents
用于持久性存储器系统等的数据完整性 Download PDFInfo
- Publication number
- CN114245891A CN114245891A CN202080056875.7A CN202080056875A CN114245891A CN 114245891 A CN114245891 A CN 114245891A CN 202080056875 A CN202080056875 A CN 202080056875A CN 114245891 A CN114245891 A CN 114245891A
- Authority
- CN
- China
- Prior art keywords
- memory
- type
- error code
- data
- error
- 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
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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/1012—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 using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- 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/1048—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 using arrangements adapted for a specific error detection or correction feature
-
- 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/1068—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 in sector programmable memories, e.g. flash disk
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
一种数据处理系统,包括:存储器通道;存储器,所述存储器耦合到所述存储器通道;以及数据处理器。所述数据处理器耦合到所述存储器通道,并且使用定义多个命令并具有对应的地址位、数据位和用户位的包结构通过所述存储器通道来访问所述存储器。所述数据处理器使用第一类型错误码通过所述存储器通道与所述存储器进行通信。响应于写访问请求,所述数据处理器计算不同的第二类型错误码,并且将所述第二类型错误码的每个位附加为所述用户位中的对应的用户位。所述存储器响应于写命令而将所述用户位存储在所述存储器中,并且响应于读命令而在读响应包中将所述用户位传送到所述数据处理器。
Description
背景技术
计算机系统典型地将廉价且高密度的动态随机存取存储器(DRAM)芯片用于主存储器。现今销售的大多数DRAM芯片都与由美国电子器件工程联合委员会(Joint ElectronDevices Engineering Council)(JEDEC)颁布的各种双数据速率(DDR)DRAM标准兼容。DDR存储器控制器用于根据公布的DDR标准来管理在各种存储器访问代理与DDR DRAM之间的接口。
具有持久性存储的非易失性双列直插式存储器模块(“NVDIMM-P”)是将取代标准DDR DIMM但包括持久性存储器以在移除或失去电力时保留重要数据的存储类存储器。然而,这些存储器具有非确定性访问时延,并且可具有可能暂时地延迟对非易失性存储器的访问的板载媒体管理活动,并且因此,这些存储器要求握手协议以向主机控制器告知有关来自NVDIMM-P的数据的可用性情况。JEDEC正在开发NVDIMM-P事务协议的标准,以缓解这种非确定性的性能影响,并且提供支持乱序事务的功能和堆放命令的能力。该标准的当前草案指定被称为“链路ECC”(链路纠错码)的数据完整性功能,以检测并潜在地校正链路上的本来会导致错误操作或程序故障的错误。
附图说明
图1以框图形式示出了现有技术中已知的数据处理系统;
图2以框图形式示出了根据一些实施方案的数据处理系统;
图3以框图形式示出了可在图2的数据处理器中使用的存储器控制器;
图4以框图形式示出了根据一些实施方案的图2的数据处理系统的一部分,示出了存储器控制器和持久性存储器的进一步细节;
图5示出了支持现有技术中已知的链路完整性校验的提出的NVDIMM-P标准的数据包格式;
图6示出了根据一些实施方案的支持端到端数据完整性校验的NVDIMM-P存储器的数据包格式;并且
图7以框图形式示出了根据一些实施方案的图2的数据处理系统的一部分,示出了存储器控制器和持久性存储器的进一步细节。
在以下描述中,在不同的附图中使用相同的附图标记指示类似或相同的项。除非另有说明,否则词语“耦合的”及其相关联动词形式包括通过本领域已知的手段的直接连接和间接电连接,并且除非另有说明,否则直接连接的任何描述也暗示使用合适形式的间接电连接的替代实施方案。
具体实施方式
一种数据处理器包括存储器控制器,该存储器控制器包括命令队列、仲裁器、第一错误码生成电路和第二错误码生成电路,以及队列。命令队列存储解码的命令以供分派到存储器通道。仲裁器根据预定标准来从命令队列中挑选命令。第一错误码生成电路响应于写请求的数据而生成第一类型错误码。第二错误码生成电路针对写请求生成第二类型错误码,第二类型错误码与第一类型错误码不同。队列耦合到仲裁器并耦合到第一错误码生成电路和第二错误码生成电路,并且向接口提供写命令,该写命令包括数据、第一类型错误码和第二类型错误码。
一种数据处理系统包括存储器通道、耦合到存储器通道的存储器,以及数据处理器。数据处理器耦合到存储器通道,并且适于使用定义多个命令并具有对应的地址位、数据位和用户位的包结构通过存储器通道来访问存储器。数据处理器使用第一类型错误码通过存储器通道与存储器进行通信。响应于写访问请求,数据处理器计算不同的第二类型错误码,并且将第二类型错误码的每个位附加为用户位中的对应的用户位。存储器响应于写命令而将用户位存储在存储器中,并且响应于读命令而在读响应包中将用户位传送到数据处理器。
一种在存储器通道上将数据从数据处理器写入存储器装置的方法包括接收写请求。根据写请求来生成第一类型错误码。根据写请求来生成与第一类型错误码不同的第二类型错误码。生成写包,该写包具有对应的地址位、对应的数据位、在预定纠错码字段中的第一类型错误码的对应的第一错误码位以及在预定用户位字段中的第二类型错误码的对应的第二错误码位。通过存储器通道传送写包。
图1以框图形式示出了现有技术中已知的数据处理系统100。数据处理系统100通常包括呈加速处理单元(APU)形式的数据处理器110、存储器系统120、外围部件互连快速(PCIe)系统150、通用串行总线(USB)系统160和磁盘驱动器170。数据处理器110作为数据处理系统100的中央处理单元(CPU)操作并且提供在现代计算机系统中有用的各种总线和接口。这些接口包括两个双数据速率(DDRx)存储器通道、用于连接到PCIe链路的PCIe根联合体、用于连接到USB网络的USB控制器以及串行高级技术附件(SATA)大容量存储装置的接口。
存储器系统120包括存储器通道130和存储器通道140。存储器通道130包括连接到DDRx总线132的一组双列直插式存储器模块(DIMM),包括在该示例中对应于单独存储列的代表性DIMM 134、136和138。同样,存储器通道140包括连接到DDRx总线142的一组DIMM,包括代表性DIMM 144、146和148。
PCIe系统150包括连接到数据处理器110中的PCIe根联合体的PCIe交换机152、PCIe装置154、PCIe装置156和PCIe装置158。PCIe装置156进而连接到系统基本输入/输出系统(BIOS)存储器157。系统BIOS存储器157可以是多种非易失性存储器类型中的任一种,诸如只读存储器(ROM)、闪存电可擦除可编程ROM(EEPROM)等。
USB系统160包括连接到数据处理器110中的USB主设备的USB集线器162,以及各自连接到USB集线器162的代表性USB装置164、166和168。USB装置164、166和168可以是诸如键盘、鼠标、闪存EEPROM端口等装置。
磁盘驱动器170通过SATA总线连接到数据处理器110,并且为操作系统、应用程序、应用文件等提供大容量存储。
数据处理系统100通过提供存储器通道130和存储器通道140适用于现代计算应用。存储器通道130和140中的每一者都可连接到现有技术DDR存储器,诸如DDR版本4(DDR4)、低功耗DDR4(LPDDR4)、图形DDR版本5(gDDR5)和高带宽存储器(HBM),并且可适于未来存储器技术。这些存储器提供高总线带宽和高速操作。同时,它们还提供低功耗模式以便为诸如膝上型计算机等电池供电的应用节省电力,并且还提供内置热监测。
图2以框图形式示出了根据一些实施方案的数据处理系统200。数据处理系统200类似于图1的数据处理系统100,不同在于,它包括具有增强功能的存储器通道和能够访问它们的数据处理器210。数据处理系统200包括存储器系统220和呈APU形式以与其介接的修改的数据处理器210。除了正常DDRx存储器通道之外,数据处理器210除了仅具有RDIMM244、246和248的同构存储器通道240之外还能够访问在具有正常DDR4寄存DIMM(RDIMM)234和236以及NVDIMM-P 238两者的异构存储器通道230上的NVDIMM-P 238。需注意,在其他示例中,异构存储器通道可与其他类型的DRAM存储器一起形成,包括负载减少DIMM(LRDIMM)、三维(3-D)堆叠DIMM等。
根据NVDIMM-P标准草案,在数据处理器210上的存储器控制器与NVDIMM-P 238之间的事务受“链路ECC”保护。链路ECC确保在存储器控制器与NVDIMM之间通过总线232的数据传送的数据完整性。根据已知的ECC机制,它防止链路上的由包的位中的任一者的随机或瞬时错误导致的数据损坏。保护根据使用的ECC码而不同。ECC可允许例如具有多位错误检测的单位错误校正。响应于检测到不可校正错误,数据处理器210中的存储器控制器可重放事务,因为瞬时或随机错误将不持续,并且还可向操作系统报告可校正和不可校正错误两者。
虽然链路ECC能够通过单位校正或链路重放来校正一些错误,但仅通过ECC机制无法校正多位错误。此外,ECC机制无法防止DIMM本身上发生的错误,诸如在NVDIMM-P 238上的存储器中的单位故障,无论是在正常高密度DRAM(诸如DDR4 DRAM)中还是在持久性存储器(诸如各种类型的非易失性存储器中的任一种)中。
图3以框图形式示出了可在图2的数据处理器210中使用的存储器控制器300。存储器控制器300一般包括存储器通道控制器310和功率控制器350。存储器通道控制器310一般包括接口312、队列和NVDIMM-P定序器314、命令队列320、地址生成器322、内容可寻址存储器(CAM)324、重放队列330、刷新逻辑块332、时序块334、页表336、仲裁器338、ECC和循环冗余校验(CRC)校验电路342、ECC和CRC生成块344以及数据缓冲器(DB)346。
接口312具有通过外部总线到标记为“AXI4”的数据构架的第一双向连接,并且具有第二双向连接。在存储器控制器300中,该外部总线与由英国剑桥的安谋国际科技公司(ARM Holdings,PLC)指定的高级可扩展接口版本4(即,AXI4)兼容,但是在其他实施方案中,可以是其他类型的接口。接口312将存储器访问请求从被称为FCLK(或MEMCLK)域的第一时钟域变换到在存储器控制器300内部的被称为UCLK域的第二时钟域。类似地,队列和NVDIMM-P定序器314提供从UCLK域到与DDR-PHY(DFI)接口相关联的DFICLK域的存储器访问。
地址生成器322对通过AXI4总线从数据构架接收到的存储器访问请求的地址进行解码。存储器访问请求包括以规范化格式表示的物理地址空间中的访问地址。地址生成器322将规范化地址转换为可用于对存储器系统120中的实际存储器装置进行寻址以及高效地调度相关访问的格式。该格式包括区域标识符,该区域标识符将存储器访问请求与在DDR4 DRAM的情况下的特定存储列、行地址、列地址、存储体地址和存储体组相关联或与NVDIMM-P区域相关联。在启动时,系统BIOS查询存储器系统120中的存储器装置以确定它们的大小和配置,并且对与地址生成器322相关联的一组配置寄存器进行编程。地址生成器322使用存储在配置寄存器中的配置来将规范化地址变换成适当的格式。命令队列320是从数据处理系统100中的存储器访问代理(诸如CPU核心或图形核心)接收到的存储器访问请求的队列。命令队列320存储由地址生成器322解码的地址字段以及允许仲裁器338高效地选择存储器访问(包括访问类型和服务质量(QoS)标识符)的其他地址信息。CAM 324包括用于实施排序规则(诸如写后写(WAW)和写后读(RAW)排序规则)的信息。
重放队列330是用于存储由仲裁器338挑选的等待响应的存储器访问的临时队列,所述响应诸如地址和命令奇偶校验响应、DDR4DRAM的写循环冗余校验(CRC)响应或gDDR5DRAM的写和读CRC响应。重放队列330访问ECC和CRC校验电路342以确定返回的ECC是正确还是指示错误。重放队列330允许在这些循环中的一者的奇偶校验或CRC错误的情况下重放访问。
刷新逻辑块332包括用于与从存储器访问代理接收到的正常读和写存储器访问请求分开地生成的各种断电、刷新和终端电阻(ZQ)校准循环的状态机。例如,如果存储器存储列处于预充电断电,则必须周期性地唤醒该存储器存储列以运行刷新循环。刷新逻辑块332周期性地生成刷新命令,以防止由电荷从DRAM芯片中的存储器单元的存储电容器泄漏导致的数据错误。另外,刷新逻辑块332周期性地校准ZQ,以防止因系统中的热变化而造成的管芯上终端电阻的失配。
仲裁器338双向地连接到命令队列320,并且是存储器通道控制器310的核心。它通过智能地调度访问来改善效率,以改善存储器总线的使用。仲裁器338使用时序块334以通过基于DRAM时序参数确定命令队列320中的某些访问是否有资格发布来实施适当的时序关系。例如,每个DRAM在激活命令之间具有最小指定时间,被称为“tRC”。时序块334维护一组计数器,该组计数器基于此和JEDEC规范中指定的其他时序参数来确定资格,并且该时序块双向地连接到重放队列330。页表336为仲裁器338维护有关存储器通道的每个存储体和存储列中的活动页面的状态信息,并且双向地连接到重放队列330。
响应于从接口312接收到的写存储器访问请求,ECC和CRC生成电路344根据写数据来计算ECC。DB 346存储接收到的存储器访问请求的写数据和ECC。它在仲裁器338挑选对应的写访问以供分派到存储器通道时将组合的写数据/ECC输出到队列和NVDIMM-P定序器314。
功率控制器350一般包括到高级可扩展接口版本1(AXI)的接口352、高级外围总线(APB)接口354和功率引擎360。接口352具有到系统管理网络(SMN)的第一双向连接,该第一双向连接包括用于接收在图3中单独地示出的标记为“EVENT_n”的事件信号的输入,以及输出。APB接口354具有连接到接口352的输出的输入和用于通过APB连接到PHY的输出。功率引擎360具有连接到接口352的输出的输入以及连接到队列和NVDIMM-P定序器314的输入的输出。功率引擎360包括一组配置寄存器362、微控制器(μC)364、自刷新控制器(SLFREF/PE)366和可靠的读/写时序引擎(RRW/TE)368。配置寄存器362通过AXI总线进行编程,并且存储配置信息以控制存储器控制器300中的各种块的操作。因此,配置寄存器362具有连接到在图3中未详细地示出的这些块的输出。自刷新控制器366是除了由刷新逻辑块332自动地生成刷新之外还允许手动地生成刷新的引擎。可靠的读/写时序引擎368为存储器或I/O装置提供连续存储器访问流,以用于诸如DDR接口最大读时延(MRL)训练和回送测试等目的。
存储器通道控制器310包括允许其挑选存储器访问以供分派到相关联存储器通道的电路。为了做出期望的仲裁决策,地址生成器322将地址信息解码为预解码信息,包括存储器系统中的存储列、行地址、列地址、存储体地址和存储体组,并且命令队列320存储预解码信息。配置寄存器362存储配置信息以确定地址生成器322如何对接收到的地址信息进行解码。仲裁器338使用解码的地址信息、由时序块334指示的时序合格性信息和由页表336指示的活动页面信息来高效地调度存储器访问,同时遵守其他标准(诸如QoS要求)。例如,仲裁器338实施关于对打开页面的访问的偏好,以避免改变存储器页面所需的预充电和激活命令的开销,并且通过将对一个存储体的开销访问与对另一个存储体的读和写访问交错来隐藏所述开销访问。特别地,在正常操作期间,仲裁器338正常地保持页面在不同的存储体中打开,直到需要在选择不同的页面之前进行预充电为止。
存储器控制器300与将在图1的APU 110中使用的存储器控制器类似,,但是存在以下差异。首先,存储器控制器300包括取代简单的ECC校验电路的ECC和CRC校验电路342。ECC和CRC校验电路342不仅相对于传入的ECC对接收到的ECC进行校验,而且还相对于接收到的CRC对根据接收到的数据生成或根据接收到的数据、地址和元数据生成的CRC进行校验来进行端到端完整性校验。响应于读响应包,ECC和CRC校验电路342使用以下描述的多项式提供CRC码。存储器控制器300使用ECC和CRC生成电路344来生成CRC,并且将其发送到NVDIMM-P。NVDIMM-P通过从接收到的写数据包提取USER位来存储CRC,并且将CRC连同对应的DATA一起在读响应包的USER位中返回到存储器控制器300。
第二,地址生成器322取代将由数据处理器110使用的对应的地址生成器。地址生成器322另外地对NVDIMM-P存储器的地址范围进行解码,并且存储指示存储器访问请求是命令队列320中的对NVDIMM-P的请求的解码的信号。然后,仲裁器338可相对于其他请求以适当的优先级对NVDIMM-P请求进行优先级排序。
第三,ECC和CRC生成电路344取代将由数据处理器110使用的对应的ECC生成电路。ECC和CRC生成电路344不仅确定要发送到NVDIMM-P的WRITE DATA的ECC,而且为整个包生成CRC来进行端到端数据完整性校验。
第四,队列和NVDIMM-P定序器314取代将由数据处理器110使用的对应的队列。队列和NVDIMM-P定序器314包括足够深度的队列以补偿持久性存储器系统(如NVDIMM-P)的更高时延,或者在一些实施方案中,包括单独队列以用于DRAM和NVDIMM-P访问。
现在将说明这些差异以及存储器控制器300的操作和优点。
图4以框图形式示出了根据一些实施方案的图2的数据处理系统200的一部分400,示出了存储器控制器和持久性存储器的进一步细节。部分400包括NVDIMM-P物理层接口(PHY)410、NVDIMM-P 420、ECC和CRC生成电路344的CRC生成器430部分、ECC和CRC生成电路344的CRC生成器440,以及ECC和CRC生成电路344的比较器450。NVDIMM-P PHY 410包括打包器和驱动器412,以及接收器和拆包器414。打包器和驱动器412具有用于接收命令和元数据的第一输入、用于接收标记为“ADDR[39:0]”的地址的第二输入、用于接收标记为“WRITEDATA[511:0]”的写数据的第三输入、第四输入,以及用于向请求通道提供命令的输出端口。CRC生成器430具有用于接收WRITE DATA[511:0]的输入和连接到打包器和驱动器412的第四输入的输出。接收器和拆包器414具有连接到响应通道的输入、用于提供标记为“METADATA”的信号的第一输出、用于提供TAG(对应于地址)的第二输出、用于提供READDATA的第三输出和用于提供接收到的CRC的第四输出。
NVDIMM-P 420包括NVDIMM-P缓冲器422、动态随机存取存储器(DRAM)424和持久性存储设备426。NVDIMM-P缓冲器422具有连接到打包器和驱动器412的输出端口的请求通道输入端口、双向内部端口和连接到响应通道的通道输出端口。DRAM 424具有连接了NVDIMM-P缓冲器422的第一双向端口和连接到持久性存储设备426的第二双向端口。
在操作中,图4是向NVDIMM-P标准草案中指定的链路ECC添加端到端数据完整性校验的系统。在该示例中,只在写数据包中发送的数据本身(即,WRITE DATA[511:0])上校验数据完整性。因此,CRC生成器430仅使用WRITE DATA[511:0]来生成CRC。CRC生成器430将CRC提供到打包器和驱动器412,以将其插入到写数据包的被称为USER位的某些位中。提出的NVDIMM-P标准定义六个USER位,该六个USER位是用户定义的元数据。写数据包与其他信息一起通过请求通道发送到NVDIMM-P缓冲器422。NVDIMM-P缓冲器422在接收到写数据包之后进行链路ECC校验和错误报告。然而,它也将六个USER位存储在内部缓冲器、DRAM 424或持久性存储设备426中。
响应于读命令,NVDIMM-P缓冲器422根据NVDIMM-P协议来提供数据响应包。它从内部缓冲器、DRAM 424或持久性存储设备426中读取六个CRC位,并且将它们附加为数据响应包的六个对应的USER位。它通过响应通道将数据响应包发送到接收器和拆包器414,该接收器和拆包器提取各种字段,包括READ DATA、TAG和METADATA。CRC生成器440接收READ DATA,并且生成6位CRC,该6位CRC被提供到比较器450的第一输入。接收器和拆包器414还将提取的CRC字段发送到比较器450的第二输入。比较器450比较两个CRC值,并且将MCA ERROR信号提供到系统管理网络(SMN)。MCA ERROR最终地由未示出的系统管理单元(SMU)接收,该SMU生成适当的中断以报告软件中的错误。
在以上引用的实施方案中,重放队列330还访问链路ECC和CRC的结果,以响应于奇偶校验错误或CRC错误而确定是否重放命令。
图5示出了支持现有技术中已知的链路完整性校验的提出的NVDIMM-P标准的数据包格式。NVDIMM-P支持由标准定义的若干命令。命令中的一些与数据传送相关,即,读和写,并且NVDIMM-P协议支持链路ECC以保护数据和相关联元数据免受数据总线上的随机错误的影响。存储器控制器使用映射到预先存在的DDR4地址和命令信号上的地址和命令信号来发送每个命令,从而使该格式与DDR4装置兼容并且实现具有DDR4和NVDIMM-P存储器两者的异构总线,如以上图2所示。对于用数据传送命令生成或响应于数据传送命令而生成的数据包发生数据传送。NVDIMM-P系统支持三种数据包格式:XWRITE(事务写)或PWRITE(持久性写)包510、SEND响应包520和SREAD(推测读取)响应包530。
XWRITE或PWRITE包510通过包含在四个连续单位间隔(UI)中的一个数据元素的写数据的64位数据通道DQ0-DQ63从存储器控制器发送到NVDIMM-P。因此,在单个XWRITE或PWRITE包期间传送两个256位写数据字WRITE DATA0和WRITE DATA1。XWRITE或PWRITE包还包含由八个校验位CB0至CB7组成的校验位(CB),所述校验位用于传送有关包的元数据,其中“USER”指示可选的用户定义的数据,并且“POISON”指示有关数据的完整性的元数据。如在图5中可见,XWRITE和PWRITE命令在伴随有写数据的包的每个UI内在CB0至CB5通道上提供六位的ECC数据。还存在标记为“RFU”的若干保留位。
SEND响应包520包括在SEND包从控制器发送之后的确定时间量由NVDIMM-P返回的数据。存储器控制器在先前发布XREAD(事务读取)命令并且从NVDIMM-P接收到指示NDIMM-P准备好发送数据的响应就绪信号之后发布SEND命令。XREAD命令具有非确定性访问时延,因为NVDIMM-P将在DRAM中得到可用的请求数据并且在接收到XREAD包之后激活响应就绪信号,或者将需要从慢速非易失性存储器中抓取数据并且将其放置在DRAM或缓冲器中,然后才可用SEND命令完成访问。SEND响应包520具有包含在四个连续单位间隔(UI)中的一个数据元素的读数据的64位数据通道DQ0至DQ63。因此,在单个SEND响应包期间传送两个256位读数据字READ DATA0和READ DATA1。SEND响应包520使用CB0至CB7来传送有关包的元数据,其中USER位在图5示出的某些UI期间被包含在相应的CB通道中,POISON位从NVDIMM-P返回,CTH位指示信用阈值,并且读标识符RID[0:7]指示SEND响应包520的序列号,即,TAG。SEND响应包520还在伴随有写数据的事务的每个UI内在CB0至CB5通道上提供六位的ECC数据。
SREAD响应包530包括在存储器控制器向NVDIMM-P发送SREAD包之后的确定时间返回的数据。如果请求的数据在NVDIMM-P缓冲器或DRAM高速缓存中,则NVDIMM-P缓冲器进而发送SREAD响应包。如果对应于SREAD的数据在NVDIMM-P缓冲器或DRAM高速缓存中可用,则NVDIMM-P传送具有在DQ总线上的有效数据和如所指示的其他元数据的有效SREAD响应包。如果对应于SREAD的数据在NVDIMM-P缓冲器或DRAM高速缓存中不可用,则NVDIMM-P发送具有元数据位“D_VALID”=0的无效响应包,并且READ DATA0和READ DATA1无效。当请求的数据可用时,NVDIMM-P将通过提供RD_RDY信号来响应于SREAD命令,就像它是XREAD一样。SREAD响应包530与SEND响应包520类似。如果数据可用,它还将具有包含在四个连续单位间隔(UI)中的一个数据元素的读数据的64位数据通道DQ0至DQ63。因此,在单个SEND响应包期间传送两个256位读数据字READ DATA0和READ DATA1。SREAD响应包530使用CB0至CB7来传送有关包的元数据,其中USER位在图5示出的某些UI期间被包含在相应的CB中,POISON位从NVDIMM-P返回,CTH位指示信用阈值,元数据位D_VALID=1。SREAD响应包530还在伴随有写数据的事务的每个UI内在CB0至CB5通道上提供六位的ECC数据。
NVDIMM-P通信协议支持若干其他命令,这些命令的操作在标准草案中进行描述。这些命令的操作与本公开无关,并且将不进一步讨论。
图6示出了根据一些实施方案的支持端到端数据完整性校验的NVDIMM-P存储器的数据包格式600。数据包格式600包括XWRITE或PWRITE包610、SEND响应包620和SREAD响应包530。这些包格式一般分别对应于XWRITE或PWRITE包510、SEND响应包520和SREAD响应包530,但有一个例外。根据一些实施方案,USER位支持端到端数据完整性校验。在“Option B”编码中有6个USER位可用,并且它们可用于存储具有26=64个值的CRC。根据一个实施方案,存储器控制器300使用以下多项式来生成6位CRC:
0x33=x6+x5+x2+x+1 [1]
应当清楚,其他多项式也是可能的。此外,如果未来开发了不同版本的NVDIMM-P标准(或任何其他类似标准),并且相关包使更多的USER位可用,则可支持利用额外位的不同的CRC码。
图7以框图形式示出了根据一些实施方案的图2的数据处理系统的一部分700,示出了存储器控制器和持久性存储器的进一步细节。在图7中,存储器控制器使用帧的其他组成(包括例如POISON位和/或ADDRESS位)来创建CRC以及DATA[511:0]。
部分700与图4的部分400类似,不同在于它包括ECC和CRC生成电路344的CRC生成器部分710、打包器和驱动器720、ECC和CRC校验电路342的CRC生成器730,以及通过DFI总线连接到存储器控制器的PHY 740。在部分700中,CRC生成器710具有用于接收WRITE DATA[511:0]的第一输入、用于接收ADD[39:0]的第二输入、用于接收COMMAND AND METADATA的第三输入,以及连接到打包器和驱动器722的输出。打包器和驱动器722形成写包,诸如XWRITE或PWRITE包610,如NVDIMM-P标准草案所定义,但是使用WRITE DATA[511:0]、ADD[39:0]和COMMAND AND METADATA来生成CRC。打包器和驱动器722将如此生成的CRC放置到如上所述的XWRITE或PWRITE包610的USER位中。PHY740根据DFI标准从打包器和驱动器722接收格式化数据包,并且将其驱动到异构DIMM通道232上。
NVDIMM-P缓冲器422接收XWRITE或PWRITE包510,并且在适当时将其(包括包含6位CRC的USER位)存储在内部缓冲器、DRAM 424或持久性存储设备426中。根据以上描述的协议,NVDIMM-P缓冲器422响应于命令而生成SEND响应包620或SREAD响应包630。它将包含从内部缓冲器、DRAM 424或持久性存储设备426(视具体情况而定)检索到的6位CRC的存储的USER位放置到适当的位通道和UI中,如上所示,并且通过异构总线进行发送。
PHY 740接收SEND和SREAD响应包,并且根据DFI协议将它们传输到存储器控制器300。然后,接收器和拆包器724分开METADATA、TAG/RID[0:7]和READ DATA,并且将它们提供到队列的其余部分以及NVDIMM-P定序器314。然后,队列和NVDIMM-P定序器314将对应于TAG/RID[0:7]的ADDRESS发送到CRC生成器730。在部分700中,CRC生成器710具有用于接收READ DATA[511:0]的第一输入、用于接收ADD[39:0]的第二输入、用于接收COMMAND ANDMETADATA的第三输入,以及连接到比较器450的第一输入的输出。在所示的实施方案中,用于生成CRC的COMMAND AND METADATA位至少包括POISON位。
根据NVDIMM-P标准草案,在数据处理器210上的存储器控制器与NVDIMM-P 238之间的事务(包括CRC位)受链路ECC保护。链路ECC确保在存储器控制器与NVDIMM-P之间通过存储器总线的数据传送的数据完整性。根据已知的ECC机制,它防止链路上的由随机或瞬时错误导致的数据损坏。保护根据使用的ECC码而不同。ECC可允许例如具有多位错误检测的单位校正。响应于检测到不可校正错误,存储器控制器可重放事务,使得瞬时或随机错误将不持续,并且还可向操作系统报告可校正和不可校正错误两者。
虽然链路ECC能够通过单位校正或链路重放来校正一些错误,但仅通过ECC机制无法校正多位错误。此外,ECC机制无法防止DIMM上发生的错误,诸如在NVDIMM-P上的存储器中的单位故障,无论是在正常高密度DRAM(诸如DDR4 DRAM)中还是在持久性存储器(诸如各种类型的NVDIMM中的任一种)中。ECC不进行存储,而是由NVDIMM-P在读取时生成并且由存储器控制器基于接收到的读数据进行校验。类似地,ECC由存储器控制器生成和发送并且由NVDIMM-P在写循环上进行校验。因此,不存在对DIMM上的数据的端到端保护。
然而,根据本文公开的各种实施方案,存储器控制器利用存储在DIMM中的可用的元数据位来实施与链路ECC机制完全地兼容的端到端完整性校验。特别地,该机制利用未由JEDEC协议定义的可用位(被称为USER位)来进行该校验。USER位在数量上显著地受到限制。例如,“OPTION A”编码仅指定四个USER位,而“OPTION B”编码指定六个用户位。根据一些实施方案,存储器控制器生成基于所有64字节的数据的6位CRC码并且在写入时将CRC码作为USER位发送。NVDIMM-P将USER位存储在NVDIMM-P缓冲器、DRAM高速缓存或持久性存储设备中(视情况而定)。根据其他实施方案,存储器控制器生成基于所有64字节的数据、地址和一些或所有的元数据的6位CRC码,并且在写入时将由这些位生成的CRC码作为USER位发送。NVDIMM-P将USER位存储在阵列中,并且在读取时将它们返回,诸如SEND或SREAD数据包。存储器控制器包括用于生成和校验CRC的附加硬件,并且除了存储USER位之外,不需要对NVDIMM-P进行修改。需注意,存储器控制器生成链路ECC以对包的所有位进行校验,包括USER/CRC位。
因此,如本文所描述的存储器控制器和数据处理系统扩展了数据完整性校验的覆盖范围,以通过利用存储在NVDIMM-P装置中并可用于在稍后读取对应的数据时进行比较的有限数量的USER位来提供端到端校验。校验机制使用可检测单位和多位错误的6位CRC码。此外,它可与已经存在的链路ECC共存,但是利用可用位(Option B帧格式中的USER位)以通过添加端到端数据完整性校验来提供更稳健且无错误的系统。因此,链路ECC和CRC校验机制共存并提供一组重叠且互补的保护机制来增强系统可靠性。
在各种实施方案中,可使用数据包的不同部分来生成CRC。在一个实施方案中,仅使用DATA。在另一个实施方案中,包的其他位(包括例如POISON位和/或ADDRESS)可用于创建CRC以及DATA[511:0]。此外,如果未来开发了不同版本的NVDIMM-P标准,并且相关包使更多的USER位可用,则可支持不同的CRC码。例如,如果未来版本提供16个USER位,则可使用16位CRC而不是以上描述的系统中的6位CRC。存储器控制器和数据处理器还可响应于CRC错误而采取各种校正动作。这些动作包括向操作系统报告错误以进行进一步动作,或者重放操作,因为CRC错误也捕获链路ECC错误。
图3的存储器控制器300或其任何部分可由呈数据库或其他数据结构形式的计算机可访问数据结构来描述或表示,该数据库或其他数据结构可由程序读取并直接地或间接地用于制造集成电路。例如,该数据结构可以是用高级设计语言(HDL)(诸如Verilog或VHDL)对硬件功能的行为级描述或寄存器传送级(RTL)描述。该描述可由综合工具读取,该综合工具可综合该描述以产生包括来自综合库的门的列表的网表。网表包括一组门,该组门也代表包括集成电路在内的硬件的功能。然后,可放置并路由网表以产生描述要应用于掩模的几何形状的数据集。然后,可在各种半导体制造步骤中使用掩模来生产集成电路。替代地,在计算机可存取存储介质上的数据库可以是网表(有或没有综合库)或数据集(根据需要),或者图形数据系统(GDS)II数据。
虽然已经描述了特定实施方案,但是对这些实施方案的各种修改对于本领域技术人员来说将显而易见。因此,所附权利要求书旨在覆盖落入所公开的实施方案的范围内的所公开的实施方案的所有修改。
Claims (30)
1.一种数据处理器,所述数据处理器包括存储器控制器,所述存储器控制器包括:
命令队列,所述命令队列耦合到存储器通道,以用于存储解码的命令以供派遣;
仲裁器,所述仲裁器耦合到所述命令队列,以用于根据预定标准从所述命令队列挑选命令;
第一错误码生成电路,所述第一错误码生成电路用于响应于写请求的数据而生成第一类型错误码;
第二错误码生成电路,所述第二错误码生成电路用于针对所述写请求生成第二类型错误码,所述第二类型错误码与所述第一类型错误码不同;以及
队列,所述队列耦合到所述仲裁器、所述第一错误码生成电路和所述第二错误码生成电路,以用于向接口提供写命令,所述写命令包括所述数据、所述第一类型错误码和所述第二类型错误码。
2.如权利要求1所述的数据处理器,其中所述存储器控制器还包括:
打包器和驱动器,所述打包器和驱动器具有耦合到所述命令队列的第一端口和耦合到所述存储器通道的第二端口,其中所述打包器和驱动器在写数据包的预定纠错码(ECC)字段中提供所述第一类型错误码,并且在所述写数据包的预定用户数据字段的对应的位中提供所述第二类型错误码。
3.如权利要求2所述的数据处理器,其中所述存储器控制器还包括:
接收器和拆包器,所述接收器和拆包器用于从读响应包的预定数据部分提取读数据,并且提取在所述写数据包的所述预定用户数据字段中的所述第二类型错误码。
4.如权利要求1所述的数据处理器,其中:
所述第二错误码生成电路使用所述写请求的所述数据和地址来生成所述第二类型错误码。
5.如权利要求1所述的数据处理器,其中:
所述第二错误码生成电路还使用所述写请求的元数据来生成所述第二类型错误码。
6.如权利要求5所述的数据处理器,其中:
所述第二错误码生成电路还响应于所述元数据的毒(poison)位而生成所述第二类型错误码。
7.如权利要求1所述的数据处理器,其中:
所述第二类型错误码包括循环冗余校验(CRC)码。
8.如权利要求7所述的数据处理器,其中:
所述第一类型错误码包括具有单错误校正和多错误检测的纠错码(ECC)。
9.如权利要求8所述的数据处理器,所述数据处理器还包括:
第一错误码校验电路,所述第一错误码校验电路用于响应于读响应包的读数据而生成所述第一类型错误码,并且将所述第一类型错误码与从所述存储器通道接收到的第一错误码进行比较并响应于所述比较而选择性地生成第一类型错误信号;以及
第二错误码校验电路,所述第二错误码校验电路用于响应于所述读响应包的所述读数据和地址而生成所述第二类型错误码,并且将所述第二类型错误码与从所述存储器通道接收到的所述读响应包中的第二错误码进行比较并响应于所述比较而选择性地生成第二类型错误信号。
10.如权利要求9所述的数据处理器,其中:
响应于所述第一类型错误信号,所述存储器控制器重放对应的读命令;并且
响应于所述第二类型错误信号,所述存储器控制器向所述数据处理器报告预定错误。
11.如权利要求10所述的数据处理器,其中:
所述预定错误包括机器校验错误;并且
响应于所述第二类型错误信号,所述存储器控制器向所述数据处理器的系统管理单元报告所述机器校验错误。
12.如权利要求1所述的数据处理器,其中:
所述存储器通道是适于与动态随机存取存储器(DRAM)和具有持久性存储的非易失性双列直插式存储器模块(NVDIMM-P)介接的异构存储器通道;并且
所述存储器控制器还包括解码器,所述解码器具有用于接收存储器访问请求的输入和用于响应于所述存储器访问请求而提供所述解码的命令的输出,其中所述解码的命令中的每一者包括指示所述存储器访问请求是否是对所述NVDIMM-P的请求的解码的信号。
13.一种数据处理系统,所述数据处理系统包括:
存储器通道;
存储器,所述存储器耦合到所述存储器通道;以及
数据处理器,所述数据处理器耦合到所述存储器通道,并且适于使用定义多个命令并具有对应的地址位、数据位和用户位的包结构通过所述存储器通道来访问所述存储器,所述数据处理器使用第一类型错误码通过所述存储器通道与所述存储器进行通信,
其中响应于写访问请求,所述数据处理器计算第二类型错误码并且将所述第二类型错误码的每个位附加为所述用户位中的对应的用户位,所述第二类型错误码与所述第一类型错误码不同,并且所述存储器响应于写命令而将所述用户位存储在所述存储器中,并且响应于读命令而在读响应包中将所述用户位传送到所述数据处理器。
14.如权利要求13所述的数据处理系统,其中:
响应于读访问请求,所述数据处理器向所述存储器发送发送包,响应于对应的读响应包的接收到的数据而计算多位循环冗余校验(CRC)码,并且将来自所述对应的读响应包的对应的用户位与所述多位CRC码进行比较,并且响应于所述对应的用户位与所述多位CRC之间的差异而激活错误信号。
15.如权利要求13所述的数据处理器,其中:
所述第二类型错误码包括具有单错误校正和多错误检测的纠错码(ECC)。
16.如权利要求13所述的数据处理系统,其中所述数据处理器包括存储器控制器,所述存储器控制器包括:
队列,所述队列耦合到所述存储器通道,以用于接收来自接口的数据响应,所述数据响应包括读数据、对应的第一类型错误码以及与所述第一类型错误码不同的对应的第二类型错误码;
第一错误码校验电路,所述第一错误码校验电路用于响应于读响应的所述读数据而生成所述第一类型错误码,并且将所述第一类型错误码与从所述存储器通道接收到的第一错误码进行比较并响应于所述比较而选择性地生成第一类型错误信号;以及
第二错误码校验电路,所述第二错误码校验电路用于响应于所述读响应的所述读数据而生成所述第二类型错误码,并且将所述第二类型错误码与从所述存储器通道接收到的读响应包中的第二错误码进行比较并响应于所述比较而选择性地生成第二类型错误信号。
17.如权利要求16所述的数据处理系统,所述数据处理系统还包括:
物理接口电路(PHY),所述PHY具有耦合到所述接口的第一端口和适于耦合到存储器通道的第二端口,其中所述PHY包括接收器和拆包器,所述接收器和拆包器用于从所述读响应包的预定数据部分提取所述读数据,并且从所述读响应包的预定用户数据字段提取所述第二类型错误码。
18.如权利要求16所述的数据处理系统,其中:
响应于所述第一类型错误信号,所述存储器控制器重放对应的读命令;并且
响应于所述第二类型错误信号,所述存储器控制器向所述数据处理器报告预定错误。
19.如权利要求18所述的数据处理系统,其中:
所述预定错误包括机器校验架构错误;并且
响应于所述第二类型错误信号,所述存储器控制器将所述机器校验架构错误报告为所述数据处理器的系统管理中断。
20.如权利要求16所述的数据处理系统,其中:
所述存储器包括具有持久性存储的非易失性双列直插式存储器模块(NVDIMM-P);
所述存储器通道是适于与动态随机存取存储器(DRAM)和所述NVDIMM-P介接的异构存储器通道;并且
所述存储器控制器还包括解码器,所述解码器具有用于接收存储器访问请求的输入和用于响应于所述存储器访问请求而提供解码的命令的输出,其中所述解码的命令包括指示所述存储器访问请求是否是对所述NVDIMM-P的请求的解码的信号。
21.如权利要求13所述的数据处理系统,其中所述存储器包括持久性存储电路。
22.如权利要求21所述的数据处理系统,其中所述存储器还包括:
易失性存储器,所述易失性存储器耦合到所述持久性存储电路;以及
缓冲器,所述缓冲器耦合到所述易失性存储器和所述持久性存储电路,以用于在所述易失性存储器与所述持久性存储电路之间选择性地传送包括所述用户位的数据。
23.如权利要求13所述的数据处理系统,其中所述存储器包括具有持久性存储的非易失性双列直插式存储器模块(NVDIMM-P)。
24.一种在存储器通道上将数据从数据处理器写入存储器装置的方法,所述方法包括:
接收写请求;
根据所述写请求来生成第一类型错误码;
根据所述写请求来生成与所述第一类型错误码不同的第二类型错误码;
形成写包,所述写包具有对应的地址位、对应的数据位、在预定纠错码(ECC)字段中的所述第一类型错误码的对应的第一错误码位以及在预定用户位字段中的所述第二类型错误码的对应的第二错误码位;以及
通过所述存储器通道传送所述写包。
25.如权利要求24所述的方法,所述方法还包括
使用所述第一类型错误码来确定所述写包是否通过所述存储器通道被正确地接收,并且如果所述写包未通过所述存储器通道被正确地接收,则提供错误响应;以及
将所述第二类型错误码存储在所述存储器装置中。
26.如权利要求24所述的方法,其中:
生成所述第一类型错误码包括生成具有单错误校正和多错误检测的ECC;并且
生成所述第二类型错误码包括生成循环冗余校验(CRC)码。
27.如权利要求24所述的方法,其中:
根据所述写请求来生成所述第一类型错误码包括根据所述写请求的写地址、写数据和预定元数据位来生成所述第一类型错误码。
28.如权利要求24所述的方法,其中形成所述写包包括:
如果所述存储器装置是具有持久性存储的非易失性动态存取存储器(NVDIMM-P),则选择性地形成所述写包,所述写包具有所述对应的地址位、所述对应的数据位、在所述预定纠错码字段中的所述对应的第一错误码位以及在所述预定用户位字段中的对应的第二错误码位。
29.如权利要求24所述的方法,所述方法还包括:
从所述存储器装置接收读响应包;
响应于所述读响应包的读数据而生成所述第一类型错误码,并且将所述第一类型错误码与所述读响应包中的第一错误码进行比较并响应于所述比较而选择性地生成第一类型错误信号;以及
响应于所述读响应包的所述读数据和地址而生成所述第二类型错误码,并且将所述第二类型错误码与所述读响应包中的第二错误码进行比较并响应于所述比较而选择性地生成第二类型错误信号。
30.如权利要求29所述的方法,所述方法还包括:
接收读请求;
响应于所述读请求而向所述存储器装置发送读包;
从所述存储器装置接收响应就绪包;
响应于所述响应就绪包而向所述存储器装置发送发送命令;以及
在发送所述发送命令之后接收所述读响应包。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201911032592 | 2019-08-12 | ||
IN201911032592 | 2019-08-12 | ||
US16/705,913 | 2019-12-06 | ||
US16/705,913 US11200106B2 (en) | 2019-08-12 | 2019-12-06 | Data integrity for persistent memory systems and the like |
PCT/US2020/042608 WO2021030007A1 (en) | 2019-08-12 | 2020-07-17 | Data integrity for persistent memory systems and the like |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114245891A true CN114245891A (zh) | 2022-03-25 |
Family
ID=74566841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080056875.7A Pending CN114245891A (zh) | 2019-08-12 | 2020-07-17 | 用于持久性存储器系统等的数据完整性 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11200106B2 (zh) |
EP (1) | EP4014146A4 (zh) |
JP (2) | JP7121875B1 (zh) |
KR (1) | KR102426619B1 (zh) |
CN (1) | CN114245891A (zh) |
WO (1) | WO2021030007A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11200106B2 (en) * | 2019-08-12 | 2021-12-14 | Advanced Micro Devices, Inc. | Data integrity for persistent memory systems and the like |
US11262946B2 (en) * | 2019-11-25 | 2022-03-01 | Micron Technology, Inc. | Cache-based memory read commands |
US11886910B2 (en) * | 2019-12-27 | 2024-01-30 | Intel Corporation | Dynamic prioritization of system-on-chip interconnect traffic using information from an operating system and hardware |
US11392441B2 (en) | 2019-12-30 | 2022-07-19 | Advanced Micro Devices, Inc. | Error reporting for non-volatile memory modules |
US11137941B2 (en) * | 2019-12-30 | 2021-10-05 | Advanced Micro Devices, Inc. | Command replay for non-volatile dual inline memory modules |
US11531601B2 (en) | 2019-12-30 | 2022-12-20 | Advanced Micro Devices, Inc. | Error recovery for non-volatile memory modules |
US11321169B2 (en) * | 2020-07-31 | 2022-05-03 | EMC IP Holding Company LLC | End-to-end datapath protection |
US11249839B1 (en) * | 2020-08-14 | 2022-02-15 | Rockwell Automation Technologies, Inc. | Method and apparatus for memory error detection |
US12111724B2 (en) * | 2021-03-17 | 2024-10-08 | Micron Technology, Inc. | Redundant array management techniques |
US11636054B2 (en) * | 2021-03-31 | 2023-04-25 | Advanced Micro Devices, Inc. | Memory controller power states |
US11775387B2 (en) * | 2022-01-21 | 2023-10-03 | Micron Technology, Inc. | Cyclic redundancy check (CRC) retry for memory systems in compute express link (CXL) devices |
US12013752B2 (en) * | 2022-06-16 | 2024-06-18 | Advanced Micro Devices, Inc. | Host-level error detection and fault correction |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070226588A1 (en) * | 2005-10-24 | 2007-09-27 | Lee Shea-Yun | Memory Device and Bit Error Detection Method Thereof |
US20120124294A1 (en) * | 2007-12-06 | 2012-05-17 | Fusion-Io, Inc. | Apparatus, system, and method for destaging cached data |
US20180293012A1 (en) * | 2017-04-11 | 2018-10-11 | Dell Products, Lp | System and Method for Cost and Power Optimized Heterogeneous Dual-Channel DDR DIMMs |
CN109478158A (zh) * | 2016-07-15 | 2019-03-15 | 超威半导体公司 | Ddr存储器错误恢复 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002023966A (ja) | 2000-06-30 | 2002-01-25 | Toshiba Corp | 転送データを冗長化したディスクシステム |
US20040179527A1 (en) * | 2003-03-10 | 2004-09-16 | Cypher Robert E. | Stripping packet routing prefixes in a computer system network |
US7398449B1 (en) * | 2004-06-16 | 2008-07-08 | Azul Systems, Inc. | Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module |
US20080140724A1 (en) | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
KR100856129B1 (ko) * | 2006-12-29 | 2008-09-03 | 삼성전자주식회사 | 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치 |
JP5174603B2 (ja) | 2008-09-30 | 2013-04-03 | 株式会社日立製作所 | メモリの誤り訂正方法,誤り検出方法、及びそれを用いたコントローラ |
CN102203740B (zh) * | 2011-05-27 | 2013-06-05 | 华为技术有限公司 | 数据处理方法、装置及系统 |
US8621113B2 (en) * | 2011-05-31 | 2013-12-31 | Micron Technology, Inc. | Apparatus including host bus adapter and serial attachment programming compliant device and related methods |
US20130346695A1 (en) | 2012-06-25 | 2013-12-26 | Advanced Micro Devices, Inc. | Integrated circuit with high reliability cache controller and method therefor |
US9535785B2 (en) * | 2014-01-17 | 2017-01-03 | Macronix International Co., Ltd. | ECC method for flash memory |
US10684969B2 (en) * | 2016-07-15 | 2020-06-16 | Advanced Micro Devices, Inc. | Command arbitration for high speed memory interfaces |
US9965222B1 (en) * | 2016-10-21 | 2018-05-08 | Advanced Micro Devices, Inc. | Software mode register access for platform margining and debug |
US10877842B2 (en) | 2017-09-08 | 2020-12-29 | Intel Corporation | Detecting silent data corruption for mass storage devices |
US10642683B2 (en) | 2017-10-11 | 2020-05-05 | Hewlett Packard Enterprise Development Lp | Inner and outer code generator for volatile memory |
US11200106B2 (en) * | 2019-08-12 | 2021-12-14 | Advanced Micro Devices, Inc. | Data integrity for persistent memory systems and the like |
-
2019
- 2019-12-06 US US16/705,913 patent/US11200106B2/en active Active
-
2020
- 2020-07-17 CN CN202080056875.7A patent/CN114245891A/zh active Pending
- 2020-07-17 EP EP20853350.5A patent/EP4014146A4/en active Pending
- 2020-07-17 KR KR1020227007301A patent/KR102426619B1/ko active IP Right Grant
- 2020-07-17 WO PCT/US2020/042608 patent/WO2021030007A1/en unknown
- 2020-07-17 JP JP2022508745A patent/JP7121875B1/ja active Active
-
2021
- 2021-12-07 US US17/544,074 patent/US11704183B2/en active Active
-
2022
- 2022-08-05 JP JP2022125240A patent/JP7543348B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070226588A1 (en) * | 2005-10-24 | 2007-09-27 | Lee Shea-Yun | Memory Device and Bit Error Detection Method Thereof |
US20120124294A1 (en) * | 2007-12-06 | 2012-05-17 | Fusion-Io, Inc. | Apparatus, system, and method for destaging cached data |
CN109478158A (zh) * | 2016-07-15 | 2019-03-15 | 超威半导体公司 | Ddr存储器错误恢复 |
US20180293012A1 (en) * | 2017-04-11 | 2018-10-11 | Dell Products, Lp | System and Method for Cost and Power Optimized Heterogeneous Dual-Channel DDR DIMMs |
Also Published As
Publication number | Publication date |
---|---|
JP7543348B2 (ja) | 2024-09-02 |
US20220091921A1 (en) | 2022-03-24 |
KR20220037518A (ko) | 2022-03-24 |
WO2021030007A1 (en) | 2021-02-18 |
JP2022153654A (ja) | 2022-10-12 |
JP2022537464A (ja) | 2022-08-25 |
US20210049062A1 (en) | 2021-02-18 |
JP7121875B1 (ja) | 2022-08-18 |
EP4014146A1 (en) | 2022-06-22 |
KR102426619B1 (ko) | 2022-07-28 |
US11704183B2 (en) | 2023-07-18 |
EP4014146A4 (en) | 2022-10-12 |
US11200106B2 (en) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7121875B1 (ja) | パーシステントメモリシステム等のデータ完全性 | |
JP7155103B2 (ja) | Ddrメモリエラーリカバリ | |
KR101626040B1 (ko) | 높은 신뢰도 메모리 컨트롤러 | |
KR20190003591A (ko) | 통합 패키지 후 복구 | |
US9785570B2 (en) | Memory devices and modules | |
CN114902198B (zh) | 用于异构存储器系统的信令 | |
US11531601B2 (en) | Error recovery for non-volatile memory modules | |
CN114902197B (zh) | 非易失性双列直插式存储器模块的命令重放 | |
US11609817B2 (en) | Low latency availability in degraded redundant array of independent memory | |
US11520659B2 (en) | Refresh-hiding memory system staggered refresh | |
CN114902186A (zh) | 非易失性存储器模块的错误报告 | |
KR20190052490A (ko) | 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법 | |
KR20230091006A (ko) | 적응형 더블 디바이스 데이터 정정 스페어링을 위한 어드레스 생성 |
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 |