CN110737539B - 裸片级错误恢复方案 - Google Patents

裸片级错误恢复方案 Download PDF

Info

Publication number
CN110737539B
CN110737539B CN201910432583.8A CN201910432583A CN110737539B CN 110737539 B CN110737539 B CN 110737539B CN 201910432583 A CN201910432583 A CN 201910432583A CN 110737539 B CN110737539 B CN 110737539B
Authority
CN
China
Prior art keywords
memory
data
die
dies
xor
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
Application number
CN201910432583.8A
Other languages
English (en)
Other versions
CN110737539A (zh
Inventor
里什米·巴苏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN110737539A publication Critical patent/CN110737539A/zh
Application granted granted Critical
Publication of CN110737539B publication Critical patent/CN110737539B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/0727Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/74Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/22Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using ferroelectric elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/71Three dimensional array
    • HELECTRICITY
    • H05ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
    • H05KPRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
    • H05K1/00Printed circuits
    • H05K1/18Printed circuits structurally associated with non-printed electric components
    • H05K1/181Printed circuits structurally associated with non-printed electric components associated with surface mounted components
    • HELECTRICITY
    • H05ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
    • H05KPRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
    • H05K2201/00Indexing scheme relating to printed circuits covered by H05K1/00
    • H05K2201/10Details of components or other objects attached to or integrated in a printed circuit board
    • H05K2201/10007Types of components
    • H05K2201/10159Memory
    • HELECTRICITY
    • H05ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
    • H05KPRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
    • H05K2201/00Indexing scheme relating to printed circuits covered by H05K1/00
    • H05K2201/10Details of components or other objects attached to or integrated in a printed circuit board
    • H05K2201/10431Details of mounted components
    • H05K2201/10507Involving several components
    • H05K2201/10522Adjacent components

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请案涉及一种裸片级错误恢复方案。描述用于存储器装置中的错误恢复的方法、设备及***。可采用裸片级冗余方案,其中可存储与特定裸片相关联的奇偶校验数据。实例设备可包含具有存储器装置的印刷电路板,所述存储器装置各自安置在所述印刷电路板的平坦表面上。每一存储器装置可包含两个或更多个存储器裸片、通信地耦合到所述两个或更多个存储器裸片的通道、以及通信地耦合到所述多个通道的存储器控制器。所述存储器控制器可经由通过所述多个通道的数据传输确定性地维持裸片级冗余方案。所述存储器控制器还可响应于数据写入事件产生与所述两个或更多个存储器裸片相关联的奇偶校验数据。

Description

裸片级错误恢复方案
技术领域
本申请案涉及裸片级错误恢复方案。
背景技术
此部分希望向读者介绍可能与下文描述及/或主张的本发明的各个方面有关的技术的各个方面。相信此论述有助于向读者提供背景信息以促进更好地理解本发明的各个方面。因此,应理解,这些陈述应从这个角度来阅读,而不是作为现有技术的承认。
一般来说,计算***包含处理电路(例如一或多个处理器或其它合适组件)以及存储器装置(例如芯片或集成电路)。一或多个存储器装置可在例如双列直插式存储器模块(DIMM)的存储器模块上实施,以存储处理电路可存取的数据。举例来说,基于到计算***的用户输入,处理电路可请求存储器模块从其存储器装置检索对应于用户输入的数据。在一些例子中,检索数据可包含可由处理电路执行以执行操作的指令及/或可包含将用作操作的输入的数据。另外,在一些情况下,从操作输出的数据可存储在存储器中,例如以便能够进行后续检索。
此外,存储在存储器装置中的数据可包含希望在数据丢失或存储器装置故障的情况下保存、保留或重新创建的特定数据。专用于存储此类数据的资源可能不可用于其它用途,且因此可能约束装置可操作性。
发明内容
在一个方面,本申请案提供一种设备,其包括:印刷电路板;多个存储器装置,其各自安置在所述印刷电路板的平面表面上,其中所述多个存储器装置中的每一存储器装置包括两个或更多个存储器裸片;多个通道,其通信地耦合到所述多个存储器装置中的每一存储器装置,其中所述多个通道中的每一通道与每一存储器装置的所述两个或更多个存储器裸片中的一者相关联;及存储器控制器,其通信地耦合到所述多个通道,其中所述存储器控制器经配置以经由通过所述多个通道的数据传输来维持裸片级冗余方案,其中所述存储器控制器经配置以响应于数据写入事件而产生奇偶校验数据。
在另一方面,本申请案提供一种方法,其包括:在包括多个多裸片封装存储器装置的模块上的存储器装置的第一存储器裸片处识别数据写入事件;响应于所述识别数据写入事件,使用对对应于所述存储器装置的所述第一存储器裸片的数据的异或(XOR)逻辑运算来产生XOR结果;将所述XOR结果作为奇偶校验数据写入到所述存储器装置的第二存储器裸片;确定所述存储器装置的所述第一存储器裸片经历数据错误;以及使用对来自所述存储器装置的所述第二存储器裸片的所述奇偶校验数据的所述XOR逻辑运算的逆来恢复对应于所述存储器装置的所述第一存储器裸片的所述数据。
在另一方面,本申请案提供一种存储器模块,其包括:多个存储器装置,其包括存储器裸片的第一子集及存储器裸片的第二子集;多个通道,其通信地耦合到所述多个存储器装置中的每一者;及存储器控制器,其通信地耦合到所述多个通道中的每一者,其中所述存储器控制器经配置以:经由所述多个通道执行数据读取/写入操作;确定存储在存储器裸片的所述第一子集中的数据改变;至少部分基于确定存储在存储器裸片的所述第一子集中的所述数据改变来确定指示存储在存储器裸片的所述第一子集中的数据的奇偶校验数据;将所述奇偶校验数据存储在存储器裸片的所述第二子集中;确定数据丢失事件发生;以及至少部分基于确定所述数据丢失事件发生,使用所述奇偶校验数据及存储在存储器裸片的所述第一子集中的数据来重新创建丢失数据。
附图说明
通过阅读以下详细描述并参考附图,可更好地理解本发明的各个方面,其中:
图1是根据实施例的包含客户端装置及一或多个远程计算装置的计算***的框图;
图2是根据实施例的可在图1的远程计算装置中实施的存储器模块的框图;
图3是根据实施例的布置在第一非易失性存储器布置中的图2的存储器模块的框图;
图4是根据实施例的布置在第二非易失性存储器布置中的图2的存储器模块的框图;
图5是根据实施例的布置在第三非易失性存储器布置中的图2的存储器模块的框图;
图6是根据实施例的用于操作图4到5的存储器模块以执行裸片级冗余操作的过程的流程图。
具体实施方式
可指定存储器装置来存储奇偶校验数据。奇偶校验数据可存储或备份在非易失性存储器中,或由额外电力供应器供电的易失性存储器中,例如以防止数据因电力损耗或组件缺陷而丢失。在一些情况下,存储器装置可存储用于恢复额外存储器装置的数据的奇偶校验数据,作为备份额外存储器装置的数据的方式。然而,在许多情况下,备份整个存储器装置可能会导致过量供给存储器及资源浪费。因此,如本文描述,可采用裸片级冗余方案,其中可存储与特定裸片(而不是整个存储器装置)相关联的奇偶校验数据。
一般来说,计算***的硬件包含处理电路及存储器,其例如使用一或多个处理器及/或一或多个存储器装置(例如,芯片或集成电路)来实施。在计算***的操作期间,处理电路可例如基于用户输入通过执行对应指令来执行各种操作(例如,任务)以通过对输入数据执行操作来确定输出数据。为促进计算***的操作,处理电路可存取的数据可存储在存储器装置中,使得存储器装置存储输入数据、输出数据、指示可执行指令的数据或其任何组合。
在一些例子中,可在存储器模块上实施多个存储器装置,借此使得存储器装置能够作为单元通信地耦合到处理电路。举例来说,双列直插式存储器模块(DIMM)可包含印刷电路板(PCB)及多个存储器装置。存储器模块响应于来自经由通信网络通信地耦合到客户端装置或主机装置的存储器控制器的命令。或在某些情况下,可在存储器-主机接口的主机侧实施存储器控制器;举例来说,处理器、微控制器或ASIC可包含存储器控制器。此通信网络可实现它们之间的数据通信,并且因此客户端装置可利用通过存储器控制器可存取的硬件资源。至少部分基于到客户端装置的用户输入,存储器控制器的处理电路可执行一或多个操作以促进在客户端装置与存储器装置之间检索或传输数据。在客户端装置与存储器装置之间传达的数据可用于各种目的,其包含(但不限于)通过客户端装置处的图形用户接口(GUI)向用户呈现可视化、处理操作、计算或类似者。
另外,在一些例子中,可使用不同存储器类型来实施存储器装置。举例来说,存储器装置可实施为易失性存储器,例如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。替代地,存储器装置可实施为非易失性存储器,例如闪存(例如,NAND、NOR)存储器、相变存储器(例如,3D XPointTM)或铁电随机存取存储器(FeRAM)。在任何情况下,存储器装置通常包含至少一个存储器裸片(即,配置在半导体晶片的一部分或“裸片”上的存储器单元阵列)以存储通过通道(例如,数据通道、通信耦合)传输到存储器装置的数据位(例如,“0”位或“1”位),并且即使在使用不同存储器类型来实施时从处理电路的角度来看在功能上也可为类似的。
然而,不同存储器类型可提供影响计算***的实施相关成本的不同折中。举例来说,与非易失性存储器相比,易失性存储器可提供更快的数据传送(例如,读取及/或写入)速度。另一方面,与易失性存储器相比,非易失性存储器可提供更高数据存储密度。因此,可在计算***中使用非易失性存储器单元及易失性存储器单元的组合来平衡每一类型的存储器的成本及益处。与易失性存储器相反,非易失性存储器单元还可在未供电状态下维持其存储值或数据位。因此,实施非易失性存储器单元及易失性存储器单元的组合可改变在计算***中管理数据冗余操作的方式。
特定来说,非易失性或易失性存储器单元的数据可由非易失性存储器备份以保护计算***的数据。然而,在某些情况下,可通过各种冗余方案来保护存储器免于数据丢失。冗余方案的实例是独立磁盘、DIMM、DRAM、3D XPointTM或任何合适形式的存储器的冗余阵列,通过随后的数字逻辑验证及/或保护技术(例如异或(XOR)验证及XOR保护),通过所述冗余方案保护存储器单元免受数据丢失。在XOR保护技术中,存储在非易失性存储器中的数据经历XOR逻辑运算。XOR逻辑运算的结果(通常称为奇偶校验数据或奇偶校验位)被存储为指示跨越非易失性存储器最初存储的正确数据的XOR结果。在数据丢失的情况下,可使用奇偶校验数据来重新创建缺陷非易失性存储器的数据作为移遗失或丢失数据的替代。
与上文描述的冗余方案相似,冗余方案提供保护存储器免受数据丢失的可靠手段。各种情况可能导致数据丢失,包含存储器故障、电力损耗(例如,导致存储在非易失性存储器中的数据不被刷新以保存数据值的电力损耗),或导致数据丢失的其它类似硬件缺陷。与上文描述的冗余方案相似的冗余方案可用于将数据恢复到XOR逻辑运算中使用的最小粒度数据。因此,如果存储器装置与其它存储器装置进行XOR逻辑运算,并且奇偶校验数据用于恢复,那么XOR恢复可在数据丢失事件之后从整个存储器装置恢复数据。
通常,冗余方案操作以保护整个存储器装置,即,使用整个存储器装置的数据的封装级冗余方案,而不考虑更小、更实际的数据粒度。这可能导致过量供给,因为整个存储器装置的故障是不常见且不太可能的。在某些情况下,此过量供给导致使用更大大小的存储器来存储奇偶校验数据,因此可能增加提供数据保护的成本。因此,实施裸片级冗余方案以向存储器装置的个别存储器裸片而不是向整个存储器装置或通道提供保护可能具有特定优点。裸片级冗余方案可减少整体过量供给,同时还提供一或多个备用存储器裸片。出于本发明的目的,独立3D XPointTM存储器(RAIX)的冗余阵列被用作可通过裸片级冗余操作来改进的实例冗余方案。
为促进改进RAIX方案,本发明提供用于实施及操作存储器模块以提供裸片级RAIX方案(即,裸片级冗余方案)的技术。特定来说,裸片级RAIX方案可使存储器模块能够存取增加量的备用存储器。无论存储器模块上包含的存储器装置的数目如何,裸片级RAIX方案使存储器模块能够备份存储在个别存储器裸片中的数据。这些存储器裸片通过通道从存储器控制器接收数据,或在一些实施例中,是通过向位于同一或不同存储器装置上的多个个别存储器裸片提供数据的通道。以此方式,存储器裸片可通过专用通道(例如,1:1的通道与存储器裸片比)或通过与额外存储器裸片共享的通道(例如,M:N通道M与存储器裸片N比)来接收数据。以此方式,可将若干通道分配给包含两个或更多个存储器裸片的存储器装置,并且一或多个存储器裸片可与一或多个通道相关联。裸片级RAIX方案可操作以备份存储在个别存储器裸片中的数据,因此对应于通过通道传输到存储器裸片的数据,并且以此方式可减少过量供给并降低生产成本,同时为存储器模块数据提供足够的保护。
根据本文描述的实施例,各种计算***可实施裸片级RAIX方案,其包含通信地耦合到一或多个远程计算装置的一或多个客户端装置。在这些装置中,某些计算过程彼此分离以改进计算***的操作效率。举例来说,除仅仅控制数据存取(例如,存储及/或检索)之外,存储器处理电路可经实施以执行数据处理操作,例如原本将由主机处理电路执行的数据处理操作。为便于描述,以下将裸片级RAIX描述为在使用这些远程计算装置的计算***中实施,然而,应理解,各种有效实施例可实施裸片级RAIX方案。举例来说,可采用不使用远程计算装置而是将客户端装置的组件与远程计算装置的存储器模块及处理电路组合的计算***。
为帮助说明,图1描绘计算***10的实例,其包含一或多个远程计算装置11。如在所描绘实施例中,远程计算装置11可经由通信网络14通信地耦合到一或多个客户端装置12。应了解,所描绘实施例仅仅希望是说明性的而非限制性的。举例来说,在其它实施例中,远程计算装置11可通信地耦合到单个客户端装置12或两个以上客户端装置12。
在任何情况下,通信网络14可启用客户端装置12与远程计算装置11之间的数据通信。在一些实施例中,客户端装置12可与远程计算装置11在物理上远离(例如,分离),例如使得远程计算装置11位于集中式数据中心。因此,在一些实施例中,通信网络14可为广域网(WAN),例如因特网。为促进经由通信网络14的通信,远程计算装置11及客户端装置12可各自包含网络接口16。
除网络接口16之外,客户端装置12还可包含输入装置18及/或电子显示器20,以使用户能够与客户端装置12交互。举例来说,输入装置18可接收用户输入,且因此可包含按钮、键盘、鼠标、轨迹板及/或类似物。额外地或替代地,电子显示器20可包含触摸感测组件,其通过检测触摸其屏幕(例如,电子显示器20的表面)的物体的出现及/或位置来接收用户输入。除实现用户输入之外,电子显示器20还可通过显示操作***的图形用户接口(GUI)、应用程序接口、文本、静止图像、视频内容及类似者来促进提供信息的可视表示。
如上文描述,通信网络14可实现远程计算装置11与一或多个客户端装置12之间的数据通信。换句话说,通信网络14可使用户输入能够从客户端装置12传达到远程计算装置11。额外地或替代地,通信网络14可使通过远程计算装置11基于用户输入执行的操作的结果能够被传达回客户端装置12,例如作为待显示在其电子显示器20上的图像数据。
实际上,在一些实施例中,可利用由通信网络14提供的数据通信来使多个用户可使用集中式硬件,使得可减少客户端装置12处的硬件。举例来说,远程计算装置11可为多个不同客户端装置12提供数据存储装置,借此使得能够减少在客户端装置12本地提供的数据存储装置(例如,存储器)。额外地或替代地,远程计算装置11可为多个不同客户端装置12提供处理,借此使得能够减少在客户端装置12处本地提供的处理能力。
因此,除网络接口16之外,远程计算装置11还可包含经由数据总线25通信地耦合的处理电路22及一或多个存储器模块24(例如,子***)。在一些实施例中,处理电路22及/或存储器模块24可跨越多个远程计算装置11实施,例如使得第一远程计算装置11包含处理电路22及第一存储器模块24A的一部分,而第M远程计算装置11包含处理电路22及第M存储器模块24M的另一部分。额外地或替代地,处理电路22及存储器模块24可在单个远程计算装置11中实施。
在任何情况下,处理电路22通常可执行指令以执行例如由从客户端装置12接收的用户输入指示的操作。因此,处理电路22可包含一或多个中央处理单元(CPU)、一或多个图形处理单元(GPU)、一或多个处理器核或其任何组合。在一些实施例中,处理电路22可另外基于在处理电路22中形成(例如,编程)的电路连接来执行操作。因此,在此类实施例中,处理电路22可另外包含一或多个专用集成电路(ASIC)、一或多个现场可编程逻辑阵列(FPGA)或两者。
另外,存储器模块24可提供处理电路22可存取的数据存储装置。举例来说,存储器模块24可存储从客户端装置12接收的数据、由处理电路22执行的操作产生的数据、将输入到由处理电路22执行的操作的数据、可由处理电路22执行以执行操作的指令或其任何组合。为促进提供数据存储,存储器模块24可包含一或多个存储器装置26(例如,芯片或集成电路)。换句话说,存储器装置26可各自为有形的、非暂时性计算机可读媒体,其存储处理电路22可存取的数据。
由于远程计算装置11的硬件可被多个客户端装置12利用,所以至少在一些情况下,存储器模块24可存储与不同客户端装置12相对应的数据。为促进识别适当数据,在一些实施例中,数据可被分组并存储为数据块28。实际上,在一些实施例中,与每一客户端装置12相对应的数据可被存储为单独的数据块28。举例来说,第一存储器模块24A中的存储器装置26可存储与第一客户端装置12A相对应的第一数据块28A及与第N客户端装置12N相对应的第N数据块28N。一或多个数据块28可存储在存储器装置26的存储器裸片内。
另外,在一些实施例中,数据块28可对应于提供到客户端装置12的虚拟机(VM)。换句话说,作为说明性实例,远程计算装置11可经由第一数据块28A向第一客户端装置12A提供第一虚拟机,并且经由第N数据块28N向第N客户端装置12N提供第N虚拟机。因此,当第一客户端装置12A接收针对第一虚拟机的用户输入时,第一客户端装置12A可经由通信网络14将用户输入传达到远程计算装置11。至少部分基于用户输入,远程计算装置11可检索第一数据块28A,执行指令以执行对应操作,并且经由通信网络14将操作的结果传达回第一客户端装置12A。
类似地,当第N客户端装置12N接收针对第N虚拟机的用户输入时,第N客户端装置12N可经由通信网络14将用户输入传达到远程计算装置11。至少部分基于用户输入,远程计算装置11可检索第N数据块28N,执行指令以执行对应操作,并且经由通信网络14将操作的结果传达回第N客户端装置12N。因此,远程计算装置11可存取(例如,读取及/或写入)存储在存储器模块24中的各种数据块28。
为促进改进对存储数据块28的存取,存储器模块24可包含控制其存储器装置26中的数据存储的存储器控制器30。在一些实施例中,存储器控制器30可基于在存储器控制器30中形成(例如,编程)的电路连接来操作。因此,在此类实施例中,存储器控制器30可包含一或多个专用集成电路(ASIC)、一或多个现场可编程逻辑门阵列(FPGA)或两者。在任何情况下,如上文描述,存储器模块24可包含实施不同存储器类型的存储器装置26,例如不同存储器类型提供数据存取速度与数据存储密度之间的不同折中。因此,在此类实施例中,存储器控制器30可控制跨越多个存储器装置26的数据存储,以促进利用各种折中,例如使得存储器模块24提供快速数据存取速度以及高数据存储容量。
为帮助说明,图2描绘包含不同类型的存储器装置26的存储器模块24的实例。特定来说,存储器模块24包含一或多个非易失性存储器装置32及一或多个易失性存储器装置34。在一些实施例中,易失性存储器装置34可实施为动态随机存取存储器(DRAM)及/或静态随机存取存储器(SRAM)。换句话说,在此类实施例中,存储器模块24可包含一或多个DRAM装置(例如,芯片或集成电路)、一或多个SRAM装置(例如,芯片或集成电路)或两者。
另外,在一些实施例中,非易失性存储器装置32可实施为快闪(例如,NAND)存储器、相变(例如,3D XPointTM)存储器及/或铁电随机存取存储器(FeRAM)。换句话说,在此类实施例中,存储器模块24可包含一或多个NAND存储器装置、一或多个3D XPointTM存储器装置或两者。实际上,在一些实施例中,非易失性存储器装置32可提供存储级存储器(SCM),其至少在某些情况下可促进减少与实施方案相关的成本,例如通过避免计算***10中其它非易失性数据存储装置。
在任何情况下,在一些实施例中,可通过将非易失性存储器装置32及易失性存储器装置34中的每一者安置在印刷电路板(PCB)的平坦(例如,前及/或后)表面上来实施存储器模块24。为促进经由数据总线25进行数据通信,存储器模块24可包含总线接口36。举例来说,总线接口36可包含沿印刷电路板的(例如,底部)边缘形成的数据引脚(例如,触点)。因此,在一些实施例中,存储器模块24可为单列直插式存储器模块(SIMM)、双列直插式存储器模块(DIMM)或类似者。
另外,在一些实施例中,总线接口36可包含使存储器模块24能够经由在数据总线25上实施的通信协议进行通信的逻辑。举例来说,总线接口36可根据通信协议控制从存储器模块24输出到数据总线25的数据的时序及/或解译从数据总线25输入到存储器模块24数据。因此,在一些实施例中,总线接口36可为双倍数据速率***(DDR4)接口、双倍数据速率第五代(DDR5)接口、***组件互连高速(PCIe)接口、非易失性双列直插式存储器模块(例如,NVDIMM-P)接口及类似者。
在任何情况下,如上文描述,存储器控制器30可控制存储器模块24内的数据存储,例如通过利用由在存储器模块24中实施的存储器类型提供的各种折中来促进改进数据存取速度及/或数据存储效率。因此,如在所描绘实例中,存储器控制器30可经由一或多个内部总线37耦合在总线接口36与存储器装置26之间,内部总线37例如经由在印刷电路板上形成的导电迹线来实施。举例来说,存储器控制器30可控制数据块28是存储在非易失性存储器装置32中还是存储在易失性存储器装置34中。换句话说,存储器控制器30可将数据块28从非易失性存储器装置32转移到易失性存储器装置34中或反之亦然。
为促进数据转移,存储器控制器30可包含缓冲存储器38,例如以提供临时数据存储。在一些实施例中,缓冲存储器38可包含静态随机存取存储器(SRAM),且因此与易失性存储器装置34及非易失性存储器装置32相比可提供更快数据存取速度。缓冲存储器38在某些情况下可为DRAM或FeRAM。另外,为促进存取存储数据块28,存储器模块24可包含例如存储在缓冲存储器38、非易失性存储器装置32、易失性存储器装置34、专用地址映射存储器装置26或其任何组合中的地址映射。
另外,远程计算装置11可与包含在处理电路22及/或数据总线25中或与处理电路22及/或数据总线25分离的服务处理器及/或服务总线通信。服务处理器、处理电路22及/或存储器控制器30可执行错误检测操作及/或错误校正操作(ECC),并且可在远程计算装置11外部安置,使得如果到远程计算装置11的电力供应丢失,那么错误检测及错误校正操作可继续。为简化描述,服务处理器的功能被描述为包含在存储器控制器30中并由存储器控制器30执行,然而,应注意,在一些实施例中,错误校正操作或数据恢复操作可实施为由服务处理器、处理电路22或位于远程计算装置11或客户端装置12内部或外部的额外处理电路执行的功能。
存储器模块24在图2中描绘为包含各种组件或子模块的单个装置。然而,在一些实例中,远程计算装置可包含与构成存储器模块24的各种装置、模块及组件等效的一或多个离散组件。例如,远程计算装置可包含位于一或若干不同芯片或衬底上的非易失性存储器、易失性存储器以及控制器。换句话说,存储器模块24的特征及功能不需要在单个模块中实施以实现本文所描述的益处。
为帮助说明,图3描绘封装级RAIX方案的实例的框图。一般来说,图3描绘存储器模块24、存储器模块24A的实施例,其包含经布置以形成对称RAIX方案的九个非易失性存储器装置32,其中完整非易失性存储器装置32I用于存储对应于其它八个非易失性存储器装置32A到32H的奇偶校验数据。每一非易失性存储器装置32可将对应于存储器地址的数据片段存储在封装52中。数据片段可小于封装52的总体大小,举例来说,数据片段可为512字节,而封装52可存储几千兆字节。应了解,所描绘实例仅希望说明而非限制性的。实际上,在一些实施例中,可使用具有任何合适大小的组件的大于或小于九个非易失性存储器装置32来实施RAIX方案。
在任何情况下,关于图3中所展示的所描绘实施例,每一非易失性存储器装置32存储客户端装置12可存取的特定量的数据。处理电路22及/或存储器控制器30可促进非易失性存储器装置32与客户端装置12之间经由通道的通信。在数据丢失的情况下,可能希望能够恢复存储在封装52中的数据。因此,封装级RAIX方案可用于保护存储在非易失性存储器装置32中的封装52的数据。
如所描绘,封装级RAIX方案在存储器模块24A中实施,意味着在封装52的数据丢失的情况下,可恢复经由相应通道传输到每一非易失性存储器装置32且存储在封装52中的数据。封装级RAIX方案使用XOR逻辑运算来备份每一封装52的数据。即,封装52A的数据与封装52B的数据进行XOR,并且XOR结果为与封装52C的数据进行XOR,依此类推,直到倒数第二个XOR结果与封装52H进行XOR。最后的XOR结果被认为是奇偶校验数据,并存储到封装52I中。由于封装52A到52H的每一位与后续封装52的其对应位进行XOR,所以奇偶校验数据的结束大小与存储在封装52中的数据片段的大小相同。因此,在此实例中,存储在封装52I上的奇偶校验数据可等于512字节(等于通过封装级RAIX方案备份的个别数据片段的大小),并且封装52可具有存储512字节的容量-与其它封装52相同。如先前描述,如果相应非易失性存储器装置32的任何部分发生故障并且发生数据丢失,那么存储在封装52中的奇偶校验数据可用于重新创建丢失数据(例如,通过替换XOR逻辑运算中的奇偶校验数据来重新创建丢失数据)。
为帮助说明,XOR的基本逻辑属性被理解为表示异或,或XOR逻辑函数,并且如果第一输入是逻辑低并且第二输入是逻辑高(例如,0是第一输入且1是第二输入,1是第一输入且0是第二输入),那么导致逻辑高(例如,1),但是如果第一输入及第二输入两者都是逻辑高或逻辑低(例如,0是第一及第二输入,1是第一及第二输入),那么导致逻辑低的输出。如上文描述,可利用此输出关系来备份存储在各种非易失性存储器装置32中的数据。作为简化实例,如果封装52A存储111并且封装52B存储000,那么封装级RAIX方案操作以用奇偶校验数据备份封装52A及52B。因此,封装52A与封装52B进行XOR以创建奇偶校验数据。111XOR000的XOR结果是111。在封装52A的数据丢失的情况下,此奇偶校验数据111可与封装52B的数据进行XOR,以重新创建封装52A的数据-即,111XOR 000等于111。如果封装52A存储101并且封装52B存储110,那么奇偶校验数据等于011。如果封装52B经历数据丢失,那么011XOR101重新创建封装52B的数据并等于110。
然而,由于封装52的数据可为在XOR逻辑运算中使用的最小粒度,因此创建封装52的任何较小数据分组(例如非易失性存储器装置32的个别存储器裸片)可能不能够被单独重新创建。举例来说,存储器裸片可能发生故障并且封装52的其余部分可根据需要起作用,但是因为奇偶校验数据表示封装52的XOR结果,所以从奇偶校验数据重新创建整个封装52以保存丢失数据使其免受存储器裸片的物理故障的影响。在实际操作中,非易失性存储器装置32的整个封装52不太可能经历数据丢失。实际上,此描绘封装级RAIX方案过量供给并使用比足以保护存储器模块24的数据的存储器量更多的存储器来将奇偶校验数据存储在封装52I中。
所描绘封装级RAIX方案遵循8:1保护比(例如,八个封装52A到52H存储由存储奇偶校验数据的一个封装52I备份的数据)。此保护比转化为封装52的12.5%的过量供给(例如,1/8)。一般来说,过量供给的量与RAIX方案效率相关-换句话说,过量供给的百分比越低,用于提供存储器模块24数据保护的存储器越少。相反,非易失性存储器装置32更可能在存储器裸片级别处经历数据丢失(图3中未描绘)。因此,用于防止存储器裸片级数据丢失的RAIX方案更适用于计算***10的正常操作。
为帮助说明封装级与裸片级RAIX方案之间的差异,图4描绘裸片级RAIX方案的实例的框图。一般来说,图4描绘存储器模块24、存储器模块24B的第二实施例,其包含九个非易失性存储器装置32,每一非易失性存储器装置32表示为在存储器裸片58中存储特定量的数据。应了解,所描绘实例仅希望为说明性而非限制性的。实际上,在一些实施例中,可使用大于或小于九个非易失性存储器装置32,使用大于或小于十八个通道来实施RAIX方案,并且可包含任何合适大小的组件。
存储器模块24B遵循裸片级RAIX方案,其中每一封装52被分成存储器裸片58以存储大小为256字节的数据片段。使用个别存储器裸片58而不是个别封装52来确定奇偶校验数据,将过量供给从12.5%(例如,1/8)减少到大约5.8%(例如,1/17)。然而,此分离可能增加电路复杂性,因为可使用增加量的信号路由、组件及/或引脚来提供增加数目的通道。增加的设计复杂性还可能增加与存储器模块24生产相关联的制造及/或设计成本。此外,增加信号路由(例如,通道)的数目可导致信号完整性也降低,例如因信号干扰。因此,对于一些实施例,可能需要平衡这些折衷与过量供给的总体水平的方案,而其它实施例可实施存储器模块24B。
为说明此妥协,图5描绘裸片级RAIX方案的第二实例的框图。存储器模块24的第三实施例(存储器模块24C)包含Z数目个非易失性存储器装置32,其各自表示为将特定量的数据存储在封装52中,其中封装52被分离成多个存储器裸片58。应了解,所描绘实例仅希望为说明性而非限制性的。实际上,在一些实施例中,可使用每非易失性存储器装置32任何数目个存储器裸片58来实施裸片级RAIX方案。
在所描绘裸片级RAIX方案中,来自图3的封装52通常被分成单独存储器裸片58。举例来说,将存储器裸片58A1、58B1、...、58X1存储在同一非易失性存储器装置32A及同一封装52A上。在操作期间,存储器控制器30及/或处理电路22可操作以经由所描绘不对称裸片级RAIX方案来保护存储器模块24C数据。在裸片级RAIX方案中,每一存储器裸片58分别经历XOR逻辑运算,而不是整个封装52经历XOR逻辑运算以创建奇偶校验数据。所得奇偶校验数据存储在非易失性存储器装置32Z的存储器裸片58XZ中。应注意,虽然奇偶校验数据存储在被描绘为最后存储器裸片58XZ的裸片中,但是对奇偶校验数据将被存储在其中的存储器裸片58没有限制。即,举例来说,奇偶校验数据可将被存储在存储器裸片58AZ中或存储器裸片58A1上。奇偶校验数据能够存储在存储器裸片58上,因此可出于存储奇偶校验数据的目的而分配较少存储器-因此存储器裸片58XZ是可经分配以用于与用于支持图3的封装级RAIX方案的整个封装52相同的目的所有裸片。可将非易失性存储器装置32Z的剩余存储器裸片分配为备用存储器,其中备用存储器裸片58AZ、58BZ、...、58CZ可用于操作溢出、额外数据存储、由存储器控制器30及/或处理电路22用于将逻辑地址转换成物理地址的信息及类似者。因此,存储器模块24C是对具有相对高的过量供给且不具有备用存储器的存储器模块24A的改进,以及对不具有备用存储器及高设计复杂性的存储器模块24B的改进。
出于冗余的目的,将封装52划分成存储器裸片58产生约6.25%(例如,1/16)的过量供给,这是从存储器模块24A的12.5%(例如,1/8)过量供给的减少,以及从存储器模块24B的5.8%(例如,1/17)过量供给的增加。尽管过量供给略有增加,但裸片级RAIX方案是对封装级RAIX方案的改进,这是归因于设计简单性以及支持冗余或保护的存储器的最少过量供给。
一般来说,在计算操作期间,客户端装置12从用户或其它组件接收输入,并且响应于输入,请求存储器模块24C的存储器控制器30促进执行存储器操作。客户端装置12可将这些请求作为命令发出,并且可指示从其检索或存储对应数据的逻辑地址。然而,客户端装置12不知道存储对应数据的真实物理地址,因为有时数据被划分并存储在经由一个逻辑地址参考的多个位置中。存储器控制器30可接收这些命令并将逻辑地址转换成物理地址以适当地存取存储数据。
在确定对应数据的物理地址之后,存储器控制器30可操作以读取存储在每一相应存储器裸片58中的数据,或可操作以写入待写入每一相应存储器裸片58中的数据。作为此读取/写入操作的部分,存储器控制器30还可将存储在每一相应存储器裸片58中的数据解析或解译以完成客户端装置12所请求的操作。这些操作通过通过将非易失性存储器装置32通信地耦合到存储器控制器30的通道传输数据片段来执行。
存储器控制器30或其它合适处理电路可促进存储在存储器裸片58中的奇偶校验数据的更新。为此,待存储在每一存储器裸片58中的数据与后续存储器裸片58的数据进行XOR,直到每一存储器裸片58被反映在奇偶校验数据中。存储器控制器30或其它合适处理电路还可促进验证存储在存储器裸片58中的数据的质量。在一些实施例中,存储器控制器30可执行存储器裸片中的数据的XOR以验证所得奇偶校验数据是相同的。如果检测到错误(例如,奇偶校验数据不相同且因此是基于缺陷数据确定),那么这可能意味着存储器裸片58在物理上发生故障、发生数据读取或写入错误或类似者。响应于事件或控制信号,响应于执行读取或写入操作,响应于界定量的时间经过(例如,举例来说,周期性地刷新存储器裸片58中的数据,包含奇偶校验数据)或任何其它合适指示或事件,存储器控制器30可执行这些冗余操作。
如上文描述,计算***10的所描绘组件可用于执行存储器操作。在一些实施例中,裸片级RAIX方案被集成到存储器操作控制流程中。在其它实施例中,响应于特定指示、信号、事件、以周期性或定义的时间间隔或类似者执行裸片级RAIX方案。然而,在某些实施例中,裸片级RAIX方案在存储器操作期间的某些时间并且响应于控制信号来执行。因此,应理解,可以各种方式将裸片级RAIX方案合并入存储器操作。
为帮助说明,图6描绘用于控制存储器模块24的存储器操作及裸片级RAIX备份方案的过程74的实例。一般来说,过程74包含存储器控制器30等待来自主机(例如,处理电路22及/或客户端装置12)的存储器操作请求(过程框76),从主机接收存储器操作请求(过程框78),并确定存储器操作请求是否对应于数据读取事件(决策框80)。响应于存储器操作请求不对应于数据读取事件,存储器控制器30可更新奇偶校验数据,将奇偶校验数据附加到用于写入的数据片段,并写入数据片段(过程框82),其中在完成写入之后,存储器控制器30可等待来自主机的额外存储器操作请求(过程框76)。然而,响应于存储器操作请求对应于数据读取事件,存储器控制器30可从对应存储器地址读取数据片段(过程框84)并确定是否发生数据错误(决策框86)。响应于确定没有发生数据错误,存储器控制器30可等待来自主机的额外存储器操作请求(过程框76),然而,响应于确定确实发生数据错误,存储器控制器30可尝试使用错误校正码(ECC)技术解决错误(过程框88),并确定是否消除数据错误(决策框90)。响应于确定消除数据错误,存储器控制器30可将读取的数据发送到主机(过程框92),并继续等待来自主机的额外存储器操作请求(过程框76)。然而,响应于确定解决的错误不为零,存储器控制器30可确定故障存储器裸片58(过程框94),使用XOR逻辑运算来基于故障存储器裸片58恢复丢失数据(过程框96),将恢复数据发送到主机(过程框92),并继续等待来自主机的额外存储器操作请求(过程框76)。
在任何情况下,如上文描述,存储器控制器30可等待来自其主机装置的存储器操作请求(过程框76)。以此方式,存储器控制器30可为空闲的,并且在由主机装置起始的读取或写入存取事件之间不执行存储器操作(例如,读取、写入)。
存储器控制器30可从主机接收存储器操作请求(过程框78),并且可响应于接收存储器操作请求来执行存储器操作。在一些实施例中,存储器操作请求可通过对应逻辑地址识别请求数据块28或数据片段。如上文描述,当由逻辑地址识别时,存储器控制器30可将逻辑地址转换为物理地址。此物理地址指示数据实际存储在存储器模块24中的何处。举例来说,存储器控制器30可使用地址映射、查找表、等式转换或任何合适方法将逻辑地址转换为物理地址。处理电路22经由与客户端装置12的通信接收各种存储器操作请求,然而在一些实施例中,处理电路22可独立于客户端装置12起始各种存储器操作请求。这些存储器操作请求可包含检索或读取来自非易失性存储器装置32中的一或多者的数据的请求,或将数据存储或写入到非易失性存储器装置32中的一或多者中的请求。以此方式,在存储器操作期间,存储器控制器30可从主机接收逻辑地址,可将逻辑地址转换为指示对应数据将被存储(例如,写入操作)或存储(例如,读取操作)在何处的物理地址,并且可操作以基于对应物理地址读取或写入对应数据。
响应于存储器操作请求,存储器控制器30可确定存储器操作请求是否对应于数据读取事件(决策框80)。存储器控制器30可检查存储在非易失性存储器装置32中的数据的改变及/或可通过假设存储在非易失性存储器装置32中的数据在每次数据写入之后改变来操作。因此,存储器控制器30通常确定是否发生数据写入事件,其中数据写入事件改变存储在存储器裸片58中的任一者中的数据。执行此确定以促进保持存储在存储器裸片58中的奇偶校验数据相关及/或准确。
如果存储器操作请求对应于数据写入事件(例如,不是数据读取事件),那么存储器控制器30可将奇偶校验位附加到待写入的数据片段,并且可将所述数据片段写入存储器(过程框82)。这些奇偶校验位可用在将来的错误校正码操作中以解决较小传输错误(例如,过程框88)。另外,存储器控制器30可更新奇偶校验数据以反映改变的数据片段。存储器模块24的存储器控制器30可对存储器裸片58中的每一者执行XOR逻辑运算,并且可将XOR结果作为更新奇偶校验数据存储到奇偶校验数据存储器裸片58(例如,存储器裸片58XZ)中。在一些实施例中,存储器控制器30可包含XOR逻辑运算中的备用存储器的数据,使得XOR结果表示每一存储器裸片58的XOR及存储在备用存储器中的数据。应注意,在一些实施例中,存储器控制器30响应于接收响应于定时器跟踪最小奇偶校验数据更新间隔而创建的指示或从客户端装置12传输的请求更新奇偶校验数据的指示来更新奇偶校验数据。在这些实施例中,可能希望存储器控制器30更频繁地更新奇偶校验数据,而不仅仅是响应于数据写入操作,并且因此通过存储器控制器30确定存储器操作请求是否对应于数据读取事件,存储器控制器30可响应于每一存储器操作请求而更新奇偶校验数据,除对应于数据读取事件对应的请求,其包含例如基于跟踪时间间隔的请求。在将数据片段附加及写入存储器时,存储器控制器30可等待从主机接收额外存储器操作请求(过程框76)。
然而,响应于确定存储器操作请求对应于数据读取事件,存储器控制器30可读取对应存储器地址处的数据片段(决策框84)。存储器操作请求包含存储所需存储器区段的逻辑地址。存储器控制器30可响应于存储器操作请求在指示逻辑地址处检索期望存储器区段(例如,通过参考转换物理地址并操作以从对应存储器裸片58检索数据片段)。
在读取数据片段之后,存储器控制器30可确定数据是否正确(例如,没有缺陷)(决策框86)。存储器控制器30可通过验证数据读取与最初用存储器裸片58上存储的奇偶校验数据表示的相同来执行各种数据验证技术以确认数据是正确的。这些数据验证技术可促进检测与存储器模块24相关联的物理及数字缺陷。这些缺陷可能包括例如数据写入错误、与物理存储器裸片58相关联的机械缺陷、与非易失性存储器装置32相关联的机械缺陷及类似者的问题。为验证数据,举例来说,存储器控制器30可继续使用XOR验证来确定响应于数据读取事件而读取的数据是否是未损坏及正确的。为此,存储器模块24的存储器控制器30可对每一存储器裸片58的数据进行XOR,并且在一些实施例中,对每一存储器裸片58及备用存储器的数据进行XOR,以确定额外XOR结果。在计算额外XOR结果之后,存储器控制器30可确定XOR结果是否相同。存储器模块24的存储器控制器30可比较额外XOR结果与存储在存储器裸片58中的奇偶校验数据以确定XOR结果是否相等或大体上相似(例如,在相似性阈值内,使得结果被认为是相等的)。
响应于确定XOR结果是否相同并且因此读取数据是否正确(例如,发现没有数据错误),存储器控制器30可继续等待来自主机的额外存储器操作请求(过程框76)。然而,响应于确定XOR结果不相同并且因此读取数据不正确(例如,发现数据错误),存储器控制器30可尝试利用错误校正码(ECC)技术来解决数据错误(过程框88)。错误校正码技术可包含将冗余奇偶校验数据添加到数据片段,使得在读取时,即使发生较小数据损坏,仍可恢复原始数据片段。有各种各样有效的方法来执行此初步质量控制步骤,以验证数据错误不是由例如卷积码及块码方法的较小传输问题引起的。
在尝试利用错误校正码技术解决数据错误之后,存储器控制器30可确定数据错误是否已经从校正消除(决策框90)。如果存储器控制器30在实施错误校正码技术之后确定错误等于零,那么存储器控制器30可将读取数据发送到主机装置以用于进一步处理及/或用于计算活动。在传输读取数据之后,存储器控制器30等待来自主机的额外存储器操作请求(过程框78)。
然而,如果存储器控制器30确定未消除数据错误(例如,错误不等于零),那么存储器控制器30可继续确定存储器裸片58中的哪一者有缺陷或有故障(过程框94)。存储器控制器30可执行各种确定活动以确定哪个存储器裸片58有故障,例如响应于测试写入或读取操作对存储器裸片58进行***测试。此外,在一些实施例中,存储器控制器30可将数据错误传达到客户端装置12并且从主机接收指示,例如源自客户端装置12的用户的指示,其传达哪个存储器裸片58有缺陷或有故障。
当存储器控制器30确定哪个存储器裸片58有故障时,存储器控制器30可使用奇偶校验数据来恢复响应于故障存储器裸片58而丢失的数据(过程框96)。存储器控制器30可通过执行XOR逻辑运算的逆来恢复丢失数据。也就是说,存储器控制器可对存储器裸片58中的每一者进行XOR,而不对故障存储器裸片58数据进行XOR并且包含奇偶校验数据。举例来说,假设存储器裸片58A2有故障-在此实例中,存储器控制器30对所有存储器裸片58进行XOR以确定存储器裸片58C的丢失数据而不对故障存储器裸片58A2的数据进行XOR,并用奇偶校验数据代替存储器裸片58A2的数据以重新创建存储器裸片58A2的丢失数据(例如,存储器裸片58A1的数据与与存储器裸片58的奇偶校验数据进行XOR的存储器裸片58B2的数据进行XOR以确定存储器裸片58A2的丢失数据)。此外,在一些实施例中,存储器控制器30响应于从处理电路22或其它合适处理电路接收进行指示而执行此恢复操作。以此方式,在这些实施例中,存储器控制器30可等待恢复丢失数据,直到执行物理修复为止。
在恢复丢失数据之后,存储器控制器30可将恢复数据传输到主机(过程框92)并继续等待额外存储器操作请求(过程框76)。存储器控制器30可继续过程74以使奇偶校验数据保持最新,以监测存储在非易失性存储器装置32内的数据质量,及/或在数据丢失的情况下执行恢复操作。
因此,本发明的技术效果包含促进改进的冗余操作以防止在裸片级或存储器裸片大小粒度下的数据丢失。这些技术描述用于执行XOR逻辑运算以创建奇偶校验数据、验证数据完整性或质量以及在数据丢失的情况下恢复数据的***及方法,所有这些都在裸片级而不是封装级。这些技术还提供一或多个额外备用存储器裸片,这是对封装级冗余操作的改进。
已经通过实例的方式展示上文描述的特定实施例,并且应理解,这些实施例可容许各种修改及替代形式。应进一步理解,权利要求书不希望限于所揭示的特定形式,而是覆盖落入本发明的精神及范围内的所有修改、等效物及替代物。
本文提出及主张的技术被参考并应用于实际性质的材料对象及具体实例,其显然改进本技术领域,并且因而不是抽象的、无形的或纯理论的。此外,如果额外到本说明书末尾的任何权利要求含有被指定为“用于[执行[功能]的构件...”或“用于执行[功能]的步骤...”的一或多个元件,那么希望依据35U.S.C.112(f)解释此类元件。然而,针对含有以任何其它方式指定的元件的任何权利要求,不希望依据35U.S.C.112(f)解释此类元件。

Claims (20)

1.一种设备,其包括:
印刷电路板;
多个存储器装置,其各自安置在所述印刷电路板的平面表面上,其中所述多个存储器装置中的每一存储器装置包括两个或更多个存储器裸片;
多个通道,其通信地耦合到所述多个存储器装置中的每一存储器装置,其中所述多个通道中的每一通道与每一存储器装置的所述两个或更多个存储器裸片中的至少一者相关联;及
存储器控制器,其通信地耦合到所述多个通道,其中所述存储器控制器经配置以与所述多个存储器装置中的至少一个存储器装置经由数据传输来维持裸片级冗余方案,其中所述存储器控制器经配置以响应于数据写入事件而产生奇偶校验数据。
2.根据权利要求1所述的设备,其中所述多个存储器装置中的一个存储器装置包括将以所述奇偶校验数据表示的存储器裸片及专用于存储所述奇偶校验数据的存储器裸片。
3.根据权利要求1所述的设备,其中所述数据写入事件包括存储器读取操作、存储器写入操作或响应于时间周期经过而产生的指示或触发中的至少一者或其任何组合。
4.根据权利要求1所述的设备,其中所述存储器控制器经配置以至少部分基于在与所述两个或更多个存储器裸片中的一者相关联的所述通道中的一者上传输的数据来产生所述奇偶校验数据。
5.根据权利要求1所述的设备,其中所述存储器控制器经配置以将所述奇偶校验数据写入所述两个或更多个存储器裸片中的一者。
6.根据权利要求1所述的设备,其中所述两个或更多个存储器裸片包括闪存、NAND存储器、相变存储器、3D XPointTM存储器或铁电随机存取存储器中的至少一者,或其任何组合。
7.根据权利要求1所述的设备,其中所述存储器控制器经配置以使用异或XOR逻辑运算来确定表示存储在所述多个存储器装置中的每一存储器装置中的数据的奇偶校验数据。
8.根据权利要求7所述的设备,其中所述存储器控制器经配置以:
确定所述两个或更多个存储器裸片中的第一存储器裸片包括有缺陷数据;
将所述奇偶校验数据与排除所述第一存储器裸片的所述两个或更多个存储器裸片的子集进行XOR;以及
将XOR结果作为对应于所述第一存储器裸片的重新创建数据进行传输,其中所述重新创建数据等于在所述数据写入事件之后存储在所述第一存储器裸片中的数据。
9.根据权利要求1所述的设备,其中所述存储器控制器经配置以将所述奇偶校验数据写入在所述多个存储器装置中的存储器装置的第一存储器裸片上,其中所述多个存储器装置中的所述存储器装置的第二存储器裸片经配置为所述多个存储器装置当中的备用装置,且其中存储在所述第二存储器裸片中的数据经配置以不用于产生所述奇偶校验数据。
10.一种方法,其包括:
在包括多个多裸片封装存储器装置的模块上的存储器装置的第一存储器裸片处识别数据写入事件;
响应于所述识别数据写入事件,使用对对应于所述存储器装置的所述第一存储器裸片的数据的异或XOR逻辑运算来产生XOR结果,其中所述数据经配置以通过多个通道中的通道传输,且其中所述多个通道中的每个通道与每个存储器装置的不同存储器裸片相关联;
将所述XOR结果作为奇偶校验数据写入到所述存储器装置的第二存储器裸片;
确定所述存储器装置的所述第一存储器裸片经历数据错误;以及
使用对来自所述存储器装置的所述第二存储器裸片的所述奇偶校验数据的所述XOR逻辑运算的逆来恢复对应于所述存储器装置的所述第一存储器裸片的所述数据。
11.根据权利要求10所述的方法,其中所述数据写入事件包括数据读取事件、数据写入事件、周期性刷新事件中的至少一者或其任何组合。
12.根据权利要求10所述的方法,其中所述XOR逻辑运算包括对所述第一存储器裸片及第三存储器裸片进行XOR以创建所述XOR结果。
13.根据权利要求10所述的方法,其中所述第一存储器裸片经配置为相变存储器、3DXPointTM存储器或其任何组合。
14.根据权利要求10所述的方法,其中每一者是所述第一存储器裸片,并且所述第二存储器裸片通过一或多个通道耦合到存储器控制器,所述一或多个通道经配置以在存储器操作期间传达数据片段。
15.根据权利要求10所述的方法,其中所述第一存储器裸片及所述第二存储器裸片安置在所述存储器装置上。
16.一种存储器模块,其包括:
多个存储器装置,其包括存储器裸片的第一子集及存储器裸片的第二子集;
多个通道,其通信地耦合到所述多个存储器装置中的每一者,其中所述多个通道的子集中的每个通道与存储器裸片的所述第一子集中的至少一者相关联;及
存储器控制器,其通信地耦合到所述多个通道中的每一者,其中所述存储器控制器经配置以:
经由所述多个通道执行数据读取/写入操作;
确定存储在存储器裸片的所述第一子集中的数据改变;
至少部分基于确定存储在存储器裸片的所述第一子集中的所述数据改变来确定指示存储在存储器裸片的所述第一子集中的数据的奇偶校验数据;
将所述奇偶校验数据存储在存储器裸片的所述第二子集中;
确定数据丢失事件发生;以及
至少部分基于确定所述数据丢失事件发生,使用所述奇偶校验数据及存储在存储器裸片的所述第一子集中的数据来重新创建丢失数据。
17.根据权利要求16所述的存储器模块,其中所述存储器控制器经配置以经由逻辑运算重新创建与存储器裸片的所述第一子集的相应裸片相关联的丢失数据以使存储在存储器裸片的所述第一子集中的所述数据与所述奇偶校验数据进行异或XOR。
18.根据权利要求16所述的存储器模块,其中所述多个通道包括通信地耦合到存储器裸片的通道,其中存储器裸片的所述第二子集包括备用存储器裸片及经配置以存储所述奇偶校验数据的存储器裸片,且其中所述备用存储器裸片经配置以存储与操作溢出相关联的信息、与逻辑到物理地址转换相关联的信息或它们的任意组合。
19.根据权利要求16所述的存储器模块,其中存储器裸片的所述第一子集及存储器裸片的所述第二子集中的每一存储器裸片包括3D XPointTM存储器。
20.根据权利要求16所述的存储器模块,其中所述存储器控制器经配置以:
比较两个异或XOR结果以确定所述两个XOR结果是否相同;以及
当所述XOR结果相同时,指示存储在存储器裸片的所述第一子集中的所述数据是正确的。
CN201910432583.8A 2018-07-20 2019-05-23 裸片级错误恢复方案 Active CN110737539B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/041,204 2018-07-20
US16/041,204 US10628258B2 (en) 2018-07-20 2018-07-20 Die-level error recovery scheme

Publications (2)

Publication Number Publication Date
CN110737539A CN110737539A (zh) 2020-01-31
CN110737539B true CN110737539B (zh) 2021-06-04

Family

ID=69161288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910432583.8A Active CN110737539B (zh) 2018-07-20 2019-05-23 裸片级错误恢复方案

Country Status (2)

Country Link
US (1) US10628258B2 (zh)
CN (1) CN110737539B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220137835A1 (en) * 2020-10-30 2022-05-05 Kioxia Corporation Systems and methods for parity-based failure protection for storage devices

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5469566A (en) * 1992-03-12 1995-11-21 Emc Corporation Flexible parity generation circuit for intermittently generating a parity for a plurality of data channels in a redundant array of storage units
US9208070B2 (en) * 2011-12-20 2015-12-08 Sandisk Technologies Inc. Wear leveling of multiple memory devices
US10067829B2 (en) * 2013-12-13 2018-09-04 Intel Corporation Managing redundancy information in a non-volatile memory
US9954557B2 (en) * 2014-04-30 2018-04-24 Microsoft Technology Licensing, Llc Variable width error correction

Also Published As

Publication number Publication date
US20200026600A1 (en) 2020-01-23
CN110737539A (zh) 2020-01-31
US10628258B2 (en) 2020-04-21

Similar Documents

Publication Publication Date Title
CN112543909B (zh) 用于媒体持久和诊断的增强码字
CN108376120B (zh) 用于管理在非易失性存储器***中写入块的***和方法
US10157004B2 (en) Storage system and method for recovering data corrupted in a host memory buffer
TWI605459B (zh) 基於錯誤類型之錯誤檢查與校正(ecc)的動態應用程式
US7478285B2 (en) Generation and use of system level defect tables for main memory
US8099570B2 (en) Methods, systems, and computer program products for dynamic selective memory mirroring
TWI501251B (zh) 區域錯誤檢測及全域錯誤校正技術
US7900084B2 (en) Reliable memory for memory controller with multiple channels
US20160018998A1 (en) Methods and Systems for Scalable Reliability Management of Non-Volatile Memory Modules
US10127103B2 (en) System and method for detecting and correcting mapping table errors in a non-volatile memory system
US9477549B2 (en) Methods, systems, and computer readable media for address and data integrity checking in flash memory operations
TW201346550A (zh) 實體頁、邏輯頁及碼字對應
US11709745B2 (en) Method for a reliability, availability, and serviceability-conscious huge page support
US20130304970A1 (en) Systems and methods for providing high performance redundant array of independent disks in a solid-state device
CN106663044B (zh) 延长寿命的存储器
US9690649B2 (en) Memory device error history bit
CN112612639A (zh) 操作存储器***的方法、操作主机的方法和计算***
WO2013080299A1 (ja) データ管理装置、データコピー方法、およびプログラム
US9106260B2 (en) Parity data management for a memory architecture
CN110737539B (zh) 裸片级错误恢复方案
KR102023121B1 (ko) 에러를 보정하는 메모리 장치 및 그의 에러 보정 방법
US11455118B1 (en) Method for redundant array of independent disks striping against programming failures and apparatus thereof
US20200133518A1 (en) Tolerating memory stack failures in multi-stack systems
JPWO2013080299A1 (ja) データ管理装置、データコピー方法、およびプログラム

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