CN107430537B - 从片上动态随机存取存储器错误校正码中提取选择性信息 - Google Patents

从片上动态随机存取存储器错误校正码中提取选择性信息 Download PDF

Info

Publication number
CN107430537B
CN107430537B CN201680012438.9A CN201680012438A CN107430537B CN 107430537 B CN107430537 B CN 107430537B CN 201680012438 A CN201680012438 A CN 201680012438A CN 107430537 B CN107430537 B CN 107430537B
Authority
CN
China
Prior art keywords
error
read data
correction
check bits
memory device
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
CN201680012438.9A
Other languages
English (en)
Other versions
CN107430537A (zh
Inventor
D·达斯
B·纳莱
K·S·贝恩斯
J·B·哈尔伯特
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN107430537A publication Critical patent/CN107430537A/zh
Application granted granted Critical
Publication of CN107430537B publication Critical patent/CN107430537B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • 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
    • 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/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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

Landscapes

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

Abstract

存储器子系统中的错误校正包括在执行内部错误检测和校正之后生成内部校验比特,以及向存储器控制器提供内部校验比特的存储器设备。存储器设备响应于来自存储器控制器的读取请求,执行内部错误检测以检测读取数据中的错误。如果在读取数据中检测到错误,则存储器设备选择性地执行内部错误校正。存储器设备在执行内部错误检测和校正之后,生成指示针对读取数据的错误向量的校验比特,并且响应于读取请求,将校验比特与读取数据一起提供给存储器控制器。存储器控制器可以应用校验比特用于存储器设备外部的错误校正。

Description

从片上动态随机存取存储器错误校正码中提取选择性信息
技术领域
本发明的实施例总体上涉及存储器管理,并且更具体地涉及根据片上错误校验和校正仅从存储器设备中选择所选定的信息。
版权声明/许可
本专利文献的公开的部分可以包含受版权保护的材料。版权所有者不得异议通过专利文献或专利公开中的任何一个的再现,如其出现在专利商标局专利文件或记录中,但无论如何可以以其他方式保留所有版权。版权声明适用于以下和在此处的附图中所描述的所有数据、以及以下描述的任何软件:
Figure GDA0003009270940000011
2015,Intel Corporation,保留所有权利。
背景技术
易失性存储器资源都在当前计算平台上获得了广泛使用,无论是针对服务器、桌上型计算机还是膝上型计算机、移动设备还是消费电子和商业电子产品。DRAM(动态随机存取存储器)设备是使用中最常见的存储器设备类型。然而,随着生产DRAM的制造工艺不断缩放到更小的几何尺寸,DRAM错误预计会增加。用于解决增加的DRAM错误的一种技术是采用片上ECC(错误校验和校正)。片上ECC是指驻存在存储器设备本身上的错误检测和校正逻辑。利用片上ECC逻辑,DRAM可以例如通过单个错误校正(SEC)或单个错误校正、双重错误检测(SECDED)技术来校正单个比特失败。除了系统级ECC之外,可以使用片上ECC,但是系统级ECC不了解在存储器设备级别执行的是什么错误校正。然而,提供由DRAM执行的错误校正的细节将暴露关于DRAM的设计和操作的敏感数据。
附图说明
以下描述包括附图的讨论,其具有通过本发明的实施例的实现方式的示例给出的说明。附图应当以示例而非限制的方式来理解。如本文所使用的,针对一个或多个“实施例”的引用将被理解为描述被包括在本发明的至少一个实现方式中的特定特征、结构和/或特性。因此,本文出现的例如“在一个实施例中”或“在替代实施例中”的短语描述了本发明的各种实施例和实现方式,并不一定全部是指相同的实施例。然而,它们也不一定相互排斥。
图1是其中存储器设备将内部ECC校验比特暴露给主机的系统的实施例的框图。
图2是生成用于发送到主机的内部校验比特的存储器设备处的逻辑的实施例的框图。
图3是用于执行包括将内部校验比特从存储器设备发送到主机的错误校正的过程的实施例的流程图。
图4是其中可以实现具有交换的内部校验比特的ECC的计算系统的实施例的框图。
图5是其中可以实现具有交换的内部校验比特的ECC的移动设备的实施例的框图。
以下某些细节和实现方式的描述,包括可以描绘以下所述的实施例中的一些或全部的附图的描述,以及讨论本文呈现的发明概念的其他潜在实施例或实施方式。
具体实施方式
如本文所述,存储器子系统中的错误校验和校正(ECC)包括存储器设备在执行内部错误检测和校正之后生成内部校验比特,并且将内部校验比特提供给存储器控制器。存储器设备响应于来自存储器控制器的读取请求,执行内部错误检测来检测读取数据中的错误。如果在读取数据中检测到错误,则存储器设备选择性地执行内部错误校正。存储器设备在执行内部错误检测和校正之后生成指示针对读取数据的错误向量的校验比特,并且响应于读取请求将校验比特与读取数据一起提供给存储器控制器。如果无错误或者如果存储器设备校正了单个错误,则要发送到存储器控制器的校验比特将示出无错误。校验比特将示出由存储器设备检测到的多比特错误,而不指示存储器设备的单个比特错误信息。存储器控制器可以应用用于存储器设备外部的系统级ECC的校验比特。
在存储器子系统的可靠性、可使用性和可服务性(RAS)级别中存在很多改进。提供对内部ECC信息的存取将预计会进一步改进系统级ECC。然而,提供对存储器设备的内部校正数据(错误的比特)的存取揭露了关于包括单个比特校正的所有校正的信息。如本文所述,存储器子系统能够实现从存储器设备中交换内部校验比特,其可以提供在存储器设备级别仅关于校正的选择的信息。具体地,通过生成用于校正的数据的校验比特,存储器设备可以将校验比特提供给无法区分单个比特错误(SBE)情况与无错误情况的存储器控制器。
因此,在一个实施例中,本文描述的ECC允许存储器设备传递ECC信息以用于改进系统级ECC,而不揭露私有信息。传递的ECC信息可以被称为后校正校验比特。尽管用于SBE的校验比特不会揭露关于存储器设备的信息,但是存储器控制器可以使用指示多比特错误的校验比特来改进系统ECC。存储器控制器可以从校验比特中提取多比特错误信息。存储器控制器可以应用多比特信息来确定如何将ECC应用于系统(例如,通过知道存储器中哪里发生错误)。在一个实施例中,存储器控制器使用来自存储器设备的内部校验比特作为元数据以用于改进目标为多比特错误的SDDC(单个设备数据校正)ECC操作。
针对存储器设备的引用可以应用于不同的存储器类型。存储器设备通常指易失性存储器技术。易失性存储器是如果设备电源中断则其状态(并因此存储在其中的数据)是不确定的存储器。非易失性存储器是指即使设备电源中断其状态是确定的存储器。动态易失性存储器需要刷新存储在设备中的数据来维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或某些变体,例如同步DRAM(SDRAM)。如本文所述的存储器子系统可以与许多存储器技术兼容,例如DDR3(双数据速率版本3,最初由JEDEC(联合电子设备工程委员会)在2007年6月27日发布,当前版本21)、DDR4(DDR版本4,由JEDEC在2012年9月发布的初始规范)、LPDDR3(低功耗DDR版本3,JESD209-3B,由JEDEC在2013年8月发布)、LPDDR4(低功耗双重数据速率(LPDDR)版本4,JESD209-4,由JEDEC于2014年8月发布)、WIO2(WideI/O 2(WideIO2),JESD229-2,最初由JEDEC于2014年8月发布)、HBM(高带宽存储器DRAM,JEDD235最初由JEDEC于2013年10月发布)、DDR5(DDR版本5,当前由JEDEC讨论)、LPDDR5(当前由JEDEC讨论)、WIO3(Wide I/O 3,当前由JEDEC讨论)、HBM2(HBM版本2),当前由JEDEC讨论)和/或其他,以及基于此类规范的衍生品或扩展的技术。
除了易失性存储器之外,或者替代易失性存储器,在一个实施例中,针对存储器设备的引用可以是指即使设备电源被中断,其状态是确定的非易失性存储器设备。在一个实施例中,非易失性存储器设备是可成组寻址的存储器设备,例如NAND或NOR技术。因此,存储器设备还可以包括未来一代非易失性设备,例如三维交叉点存储器设备(ThreeDimensional Crosspoint Memory Device)或其他按字节可寻址的非易失性存储器设备。在一个实施例中,存储器设备可以是或包括多阈值级别NAND闪速存储器、NOR闪速存储器、单级或多级相变存储器(PCM)、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、含有忆阻器技术的磁阻随机存取存储器(MRAM)存储器、或自旋转移矩(STT)-MRAM、或上述任何一种的组合、或其他存储器。
图1是其中存储器设备将内部ECC校验比特暴露给主机的系统的实施例的框图。系统100表示存储器子系统的组件。系统100可以被包括在使用具有内部ECC的存储器的任何类型的计算设备或电子电路中。处理器110表示基于被存储在存储器130中的数据或存储到存储器130中的数据来执行操作的任何类型的处理逻辑或组件。处理器110可以是或包括主机处理器、中央处理单元(CPU)、微控制器或微处理器、图形处理器、外围处理器、专用处理器或其他处理器。处理器110可以是或包括单核或多核电路。
存储器控制器120表示用于与存储器130进行交互并且管理对存储器130的数据进行存取的逻辑。在一个实施例中,存储器控制器120被集成到处理器110的硬件内。在一个实施例中,存储器控制器120是与处理器110分开的独立的硬件。存储器控制器120可以是在包括处理器110的基板上的单独的电路。存储器控制器120可以是被集成在具有包含处理器110的管芯的公共基板(例如,作为片上系统(SoC))上的单独的管芯或芯片。在一个实施例中,存储器130中的至少一些即使不是全部可以被包括在具有处理器110和/或存储器控制器120的SoC上。
处理器110通常在系统100的上下文中被理解为生成针对来自存储器130的数据的请求,并且响应于这样的请求而消耗从存储器130返回的数据。在一个实施例中,处理器110和存储器控制器120可以一起被认为是“主机”,针对该“主机”存储器130存储并返回数据。在一个实施例中,存储器130仅包括易失性存储器资源。在一个实施例中,存储器130包括非易失性存储器资源。在一个实施例中,存储器130包括具有内部ECC的DDR4DRAM(其可以在工业中被称为DDR4e)。
在一个实施例中,系统100包括多个存储器资源130。存储器130可以以支持经由存储器控制器120利用ECC的存取的任何类型的架构在系统100中被实现。存储器130可以被管理,例如作为具有单独的通道、DIMM(双列直插存储器模块)、等级、DRAM、存储体、页面、行的不同级别的存储器。每个单独的存储器级别和资源可以是独立地可寻址的。存储器控制器120包括I/O(输入/输出),其包括用于与存储器130的相对应的I/O 132互连的硬件资源。I/O可以包括驱动器、ODT(片上终止器)、引脚、连接器、迹线、焊盘、导线和/或其他硬件。I/O122和132通常被组织在信号线的一个或多个总线,例如,用于发送存取命令和地址信息的存储器控制器120的命令/地址(C/A)总线,以及用于允许存储器控制器120和存储器130交换数据的数据总线)中。利用读取(Read)命令从不同的存储器资源读取数据,或者利用写入(Write)命令将数据写入存储器资源。
在一个实施例中,存储器控制器包括ECC管理器124,其用于管理系统100的存储器存取中的错误校验和校正。在一个实施例中,存储器130包括由ECC管理器134管理的内部ECC。存储器控制器120的ECC管理器124管理系统范围的ECC,并且可以在多个不同存储器资源(例如,多个存储器资源130)当中并行地检测并校正错误。用于系统范围的ECC的许多技术是已知的,并且许多技术可以包括以横跨多个资源来分散错误的方式来管理存储器资源的ECC管理器124。通过横跨多个资源来分散错误,存储器控制器120可以恢复数据,即使在存储器130中存在一个或多个失败的事件中。存储器失败通常被分类为软错误或软失败或者硬错误或硬失败,软错误或软失败是通常由随机环境条件引起的暂时性的比特错误,硬错误或硬失败是由于硬件失败而发生的非暂时性比特错误。
存储器130的ECC管理器134管理在阵列136的存储器资源中发生的一个或多个错误。存储器130内的ECC的使用可以被称为内部ECC或片上ECC或内部片上ECC。通常,内部ECC是指在存储器130内实现的ECC,而无需存储器控制器120或主机进行的ECC操作的命令或管理。阵列136包括多行数据,其可以是一个或多个字宽。针对实现ECC的存储器130,阵列136包括用于在内部将失败映射到不同物理资源的备用存储器资源。因此,可以通过将数据映射到不同的可用存储器资源并校正错误来恢复阵列136中的失败。在一个实施例中,ECC管理器134实现针对阵列136中的数据的SEC(单个错误校正)或SECDED(单个错误校正、双重错误检测)过程或操作。因此,存储器130可以返回校正的数据以代替具有错误的数据。
在一个实施例中,存储器控制器120可以使用来自一个或多个存储器设备130的片上ECC的信息来增强系统级ECC。如果存储器130内的ECC被称为内部ECC,则外部ECC可以是指在存储器设备130外的ECC。主机的ECC管理器124管理外部ECC。在一个实施例中,ECC管理器124可以监测单独的存储器资源130的总体健康,例如DRAM设备的健康。应该理解,主机对内部ECC校正细节的完全存取将暴露DRAM供应商失败数据,其可以包括私有数据和/或DRAM制造商原本不想共享的其他数据。
在一个实施例中,ECC管理器134被配置为共享关于内部ECC的选择性信息,其可以提供由主机使用的信息,而不泄漏每个存储器130的失败数据。在一个实施例中,ECC管理器134生成并且提供对校验比特的存取所述校验比特提供关于多比特错误的独有的信息。通过不揭露关于SBE失败的信息,存储器130的失败数据通常不是已知的,但主机仍然可以使用多比特失败信息来校正由硬失败(例如,经由SDDC ECC)导致的多比特错误。在一个实施例中,存储器控制器120可以生成触发存储器130来暴露内部ECC校验比特的读取命令。例如,存储器控制器120可以生成两个周期的读取命令,读取命令之后是CAS(列地址选通)命令。在一个实施例中,存储器控制器120设置较高阶地址比特以触发存储器130暴露内部ECC校验比特。例如,存储器控制器120可以将地址比特13设置为逻辑1(A13=1)以从DRAM阵列提取ECC比特。可替代地使用不同的地址或控制比特的逻辑值。在一个实施例中,ECC比特的读取延迟被设置为与用于读取数据是相同的,以简化交换内部ECC信息的实现。
应当理解,存储器控制器124的ECC管理器124和存储器130的ECC管理器134可以是或包括错误检测逻辑和错误校正逻辑。错误检测逻辑是指检测读取数据中的错误的逻辑(如图2所示的硬件逻辑)。ECC管理器134的错误检测逻辑可以响应于来自存储器控制器120的读取请求来检测错误。错误校正逻辑是指校正读取数据中的错误的逻辑(如图2所示的硬件逻辑)。ECC管理器134的错误校正逻辑可以响应于读取请求来校正从阵列136读取的数据中的错误。错误校正逻辑可以被认为是选择性地进行操作的,因为其只需在检测到错误时才校正错误。在一个实施例中,错误检测逻辑可以在执行内部错误检测和校正之后生成指示针对读取数据的错误向量的校验比特。因此,校验比特将指示针对不具有错误的数据无错误,以及针对具有已校正的SBE的数据无错误。如果这样的错误被检测到,则校验比特可以指示多比特错误,所述校验比特向存储器控制器120提供关于多比特错误的信息。
如果读取命令指示发送该比特,I/O 132可以选择性地将校验比特发送到存储器控制器120的I/O 122。另外,存储器130可以生成内部ECC信息而无需向主机发送信息。在一个实施例中,存储器控制器120的ECC管理器124被配置为使用校验比特作为元数据,以用于对并行地从多个存储器设备130读取的数据进行的SDDC ECC的应用。
图2是在存储器设备处的生成用于发送到主机的内部校验比特的逻辑的实施例的框图。系统200是根据图1的系统100的存储器子系统的一个示例。主机210包括管理对存储器220的存取的存储器控制器或等同物或替代电路或组件。主机210针对从存储器220读取的数据执行外部ECC。
系统200示出了存储器220中的写入路径232,所述写入路径表示用于将数据从主机210写入到存储器220的路径。主机210将数据242提供给存储器220以用于写入到存储器阵列。在一个实施例中,存储器220利用校验比特生成器222生成校验比特244,以用于将其与数据一起存储在存储器中。校验比特244可以使得存储器220能够校正在写入到存储器阵列和从存储器阵列读取中可能发生的错误。数据242和校验比特244可以被包括被写入到存储器资源的码字输入246。
读取路径234表示用于将数据从存储器220读取到主机210的路径。在一个实施例中,写入路径232和读取路径234的至少某些硬件组件是相同的硬件。在一个实施例中,存储器220响应于来自主机210的读取命令提取码字输出252。码字可以包括数据254和校验比特256。数据254和校验比特256可以分别对应于被写入到写入路径232的数据242和校验比特244。应当理解,读取路径234中的错误校正可以包括将XOR(异或)树应用于相对应的H矩阵以检测错误并选择性地校正错误(在单个比特错误的情况下)。如本领域所理解的,H矩阵是指汉明码奇偶校验矩阵,其示出了码字的数字的线性组合如何等于零。因此,H矩阵行识别必须满足作为码字一部分的分量或数字的奇偶校验方程的系数。在一个实施例中,存储器220包括伴随式解码224,其使存储器能够将校验比特256应用于数据254以检测读取数据中的错误。伴随式解码224可以生成用于生成用于读取数据的适当错误信息的伴随式(syndrome)258。数据254也可以被转发到用于校正检测到的错误的错误校正228。
在一个实施例中,伴随式解码224将伴随式258传递给伴随式生成器226以生成错误向量。在一个实施例中,校验比特生成器222和伴随式生成器226完全由用于存储器设备的相对应的H矩阵所指定。在一个实施例中,如果读取数据中无错误(例如,零伴随式258),则伴随式生成器226生成无错误信号262。在一个实施例中,如果读取数据中存在多个错误(例如,非零伴随式258,其与相对应的H矩阵中的列中的任何一列不匹配),伴随式生成器226生成DUE(检测到的未校正的错误)信号264,其指示检测到的、未校正的错误。DUE信号264可以指示存储器220不能通过内部ECC来校正的多比特错误。
在一个实施例中,如果存在单个比特错误(例如,非零伴随式258,其与相对应的H矩阵的列中的一个匹配),则伴随式生成器226可以生成具有错误位置260的CE(校正的错误)信号,其是用于错误校正逻辑228的校正的错误指示。错误校正228可以将校正的错误应用于数据254中的指定位置,以生成用于输出到主机210的校正的数据266。在一个实施例中,错误校正228还生成校验比特268,其包括用于读取数据的校验比特。
校验比特268可以被认为是指示发送到主机210的读取数据中的错误的状态的错误向量。应当理解,零伴随式(无错误262)条件和引起校正的数据266的校正的SBE将具有相同的校验比特268,指示没有到主机210的错误。因此,校验比特268将不提供关于存储器220中的SBE的信息,而是仅提供关于多比特错误的信息。
图3是用于执行包括将内部校验比特从存储器设备发送到主机的错误校正的处理的实施例的流程图。所示的过程可以是根据本文所述的任何实施例的由存储器子系统执行的处理。更具体地,流程图示出了存储器控制器302和存储器304的操作。通常,存储器控制器302生成读取请求并且将读取请求发送到存储器304。存储器304响应于读取请求而返回数据和校验比特。
在一个实施例中,存储器控制器302从主机系统的处理器接收读取请求,312。存储器控制器生成读取命令以服务于来自主机的读取请求,314。在一个实施例中,存储器控制器设置该命令的逻辑值以请求来自于存储器设备的内部校验比特,316。存储器控制器将读取命令发送到存储器设备,318。
在一个实施例中,存储器304接收读取命令并对读取命令进行解码,320。解码包括确定该命令是否被设置为请求内部校验比特。存储器存取来自存储器阵列中的寻址的数据,322。在一个实施例中,存储器执行错误检测,324。如果读取数据中无错误(326NONE分支),则存储器生成具有指示无错误的校验比特的错误向量,328。如果存在单个比特错误(326SBE分支),则在一个实施例中,存储器校正单个比特错误,330。在单个比特错误被校正之后,存储器可以生成具有指示无错误的校验比特的错误向量,328。
如果存在多比特错误(326MBE分支),则在一个实施例中,存储器生成多比特错误的指示,332。无论是生成多比特错误的指示还是生成指示无错误的错误向量,存储器都将数据和伴随的校验比特返回到存储器控制器,334。存储器控制器接收数据和校验比特,并将校验比特用于错误校正,336。
图4是其中实现具有交换的内部校验比特的ECC的计算系统的实施例的框图。系统400表示根据本文描述的任何实施例的计算设备,并且可以是膝上型计算机、桌上型计算机、服务器、游戏或娱乐控制系统、扫描仪、复印机、打印机、路由或交换设备、或其他电子设备。系统400包括处理器420,其提供用于系统400的指令的处理、操作管理和执行。处理器420可以包括任何类型的微处理器、中央处理单元(CPU)、处理核心或提供用于系统400的处理的其他处理硬件。处理器420控制系统400的总体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑设备(PLD)等,或这些设备的组合。
存储器子系统430表示系统400的主存储器,并提供用于由处理器420执行的代码,或者执行例程将使用的数据值的临时存储。存储器子系统430可以包括一个或多个存储器设备,例如只读存储器(ROM)、闪存、一个或多个种类的随机存取存储器(RAM)、或其它存储器设备、或这些设备的组合。此外,存储器子系统430存储并且托管操作系统(OS)436以用于提供用于在系统400中执行指令的软件平台。另外,其他指令438被存储并且从存储子系统430中执行其他指令438以提供系统400的逻辑和处理。OS 436和指令438由处理器420执行。存储器子系统430包括其中存储数据、指令、程序或其他项目的存储器设备432。在一个实施例中,存储器子系统包括存储器控制器434,其是生成命令并向存储器设备432发出命令的存储器控制器。应当理解,存储器控制器434可以是处理器420的物理部分。
处理器420和存储器子系统430耦合到总线/总线系统410。总线410是表示通过适当的桥、适配器和/或控制器连接的任何一个或多个单独的物理总线、通信线路/接口、和/或点对点连接的抽象。因此,总线410可以包括以下中的一个或多个:例如,系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(通常称为“火线”)。总线410的总线也可以对应于网络接口450中的接口。
系统400还包括一个或多个输入/输出(I/O)接口440、网络接口450、一个或多个内部大容量存储设备460和耦合到总线410的外围接口470。I/O接口440可以包括一个或多个接口组件,通过该一个或多个接口组件用户与系统400进行交互,例如,视频、音频和/或字母数字接合。网络接口450向系统400提供了通过一个或多个网络与远程设备(例如,服务器、其他计算设备)进行通信的能力。网络接口450可以包括以太网适配器、无线互连组件、USB(通用串行总线)或其他基于有线或无线标准的或专有的接口。
存储装置460可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如一个或多个磁性、固态或基于光学的盘或组合。存储装置460将代码或指令和数据462保持在持续状态(即,该值被保留尽管系统400的电源中断)。存储装置460一般可以被认为是“存储器”,尽管存储器430是用于将指令提供到处理器420的执行或操作存储器。然而存储装置460是非易失性的,而存储器430可以包括易失性存储器(即,如果系统400电源中断,则数据的值或状态是不确定的)。
外围设备接口470可以包括上面没有具体提及的任何硬件接口。外围设备通常是指从属地连接到系统400的设备。从属的连接是其中系统400提供在其上操作执行并且用户利用其进行交互的软件和/或硬件平台的连接。
在一个实施例中,存储器子系统430包括ECC 480。ECC 480被示出为单独的元件,但表示存储器设备432中的内部ECC和存储器控制器434中的系统级ECC。内部ECC在响应于读取请求来执行错误检测和校正之后生成内部校验比特。存储器控制器434的外部ECC可以使用校验比特作为元数据来增强系统级的错误校正。在一个实施例中,系统400是服务器设备。在一个实施例中,在服务器设备中,系统400可以是在服务器配置中组合在一起的多个系统中的一个。例如,服务器可以被实现为与机箱系统中的其他刀片式服务器组合的刀片式服务器。
图5是其中实现了具有交换的内部校验比特的ECC的移动设备的实施例的框图。设备500表示移动计算设备,例如计算平板计算机、移动电话或智能电话、支持无线的电子阅读器、可穿戴计算设备或其他移动设备。应当理解,通常组件中的某些组件被示出,而不是这种设备的所有组件都在设备500中被示出。
设备500包括执行设备500的主要处理操作的处理器510。处理器510可以包括一个或多个物理设备、例如微处理器、应用处理器、微控制器、可编程逻辑设备或其他处理单元。由处理器510执行的处理操作包括在其上执行应用和/或设备功能的操作平台或操作系统的执行。处理操作包括与同人类用户或与其他设备进行的I/O(输入/输出)相关的操作、与电源管理相关的操作、和/或与将设备500连接到另一设备相关的操作。处理操作还可以包括与音频I/O和/或显示I/O相关的操作。
在一个实施例中,设备500包括音频子系统520,其表示与向计算设备提供音频功能相关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动器、编解码器)组件。音频功能可以包括扬声器和/或耳机输出以及麦克风输入。用于这些功能的设备可以被集成到设备500中,或者被连接到设备500。在一个实施例中,用户通过提供由处理器510接收和处理的音频命令来与设备500进行交互。
显示子系统530表示针对用户提供可视和/或触觉显示以用于与计算设备进行交互的硬件(例如,显示器设备)和软件(例如,驱动器)组件。显示子系统530包括显示接口532,其包括用于向用户提供显示的特定屏幕或硬件设备。在一个实施例中,显示接口532包括与处理器510分离的用于执行与显示相关的至少一些处理的逻辑。在一个实施例中,显示子系统530包括向用户提供输出和输入的触摸屏设备。在一个实施例中,显示子系统530包括向用户提供输出的高清(HD)显示器。高分辨率可以指具有大约100PPI(像素/英寸)或更大的像素密度的显示器,并且可以包括诸如全高清(例如,1080p)、视网膜显示、4K(超高清晰度或UHD)或其他的格式。
I/O控制器540表示与和用户进行交互相关的硬件设备和软件组件。I/O控制器540可以操作以用于管理作为音频子系统520和/或显示子系统530的部分的硬件。另外,I/O控制器540示出了用于连接到设备500的附加设备的连接点,通过该连接点用户可以与系统进行交互。例如,可以被附接到设备500的设备可以包括麦克风设备、扬声器或立体声系统、视频系统或其他显示设备、键盘或小键盘设备、或用于与特定应用(例如读卡器或其他设备)一起使用的其他I/O设备。
如上所述,I/O控制器540可以与音频子系统520和/或显示子系统530进行交互。例如,通过麦克风或其他音频设备的输入可以针对设备500的一个或多个应用或功能提供输入或命令。另外,可以提供音频输出,而不是或另外显示输出。在另一示例中,如果显示子系统包括触摸屏,则显示设备还充当输入设备,其可以至少部分地由I/O控制器540来管理。还可以在设备500上存在附加按钮或开关以用于提供由I/O控制器540管理的功能。
在一个实施例中,I/O控制器540管理以下设备:例如,加速度计、照相机、光传感器或其他环境传感器、陀螺仪、全球定位系统(GPS)、或可被包含在设备500中的其他硬件。该输入可以是直接用户交互,以及向系统提供环境输入以用于影响其操作(例如,针对噪声进行滤波、针对亮度检测调整显示、针对摄像机应用闪光灯或其他功能)的部分。在一个实施例中,设备500包括电源管理550,其管理电池电量使用、电池的充电以及与节电操作相关的特征。
存储器子系统560包括用于将信息存储到存储器设备500的存储器设备562。存储器子系统560可以包括非易失性(如果存储器设备的电源被中断,则状态不改变)和/或易失性(如果存储器设备的电源被中断,则状态是不确定的)存储器设备。存储器560可以存储与系统500的应用和功能的执行相关的应用数据、用户数据、音乐、照片、文档或其他数据、以及系统数据(无论是长期的还是临时的)。在一个实施例中,存储器子系统560包括存储器控制器564(其也可以被认为是系统500的控制的部分,并且可以潜在地被认为是处理器510的部分)。存储器控制器564包括用于生成命令并向存储器设备562发出命令的调度器。
连接570包括用于使设备500能够与外部设备进行通信的硬件设备(例如,无线和/或有线连接器和通信硬件)和软件组件(例如,驱动器、协议栈)。外部设备可以是单独的设备,例如其他计算设备、无线接入点或基站、以及外围设备例如是耳机、打印机或其他设备。
连接570可以包括多个不同类型的连接。为了概括,设备500被示出为具有蜂窝连接572和无线连接574。蜂窝连接572通常指由无线载波提供的蜂窝网络连接,例如经由以下方式提供的:GSM(全球移动通信系统)或变体或衍生物、CDMA(码分多址)或变体或衍生物、TDM(时分复用)或变体或衍生物、LTE(长期演进,也称为“4G”)、或其他蜂窝服务标准。无线连接574是指不是蜂窝的无线连接,并且可以包括个人区域网(例如蓝牙)、局域网(例如WiFi)和/或广域网(例如WiMax)或其他无线通信。无线通信是指通过使用调制的电磁辐射穿过非固体介质来传输数据。有线通信通过固体通信介质而发生。
外围设备连接580包括用于进行外围设备连接的硬件接口和连接器,以及软件组件(例如,驱动器、协议栈)。应当理解,设备500可以是到其他计算设备的外围设备(“到”582),也可以是已连接到它的外围设备(“从”584)。设备500通常具有“对接”连接器,其用于连接到其他计算设备,出于例如管理(例如,下载和/或上传、改变、同步)设备500上的内容的目的。另外,对接连接器可以允许设备500连接到允许设备500控制(例如到视听系统或其他系统的)内容输出的某些外围设备。
除了专用对接连接器或其他专用连接硬件之外,设备500可以经由通用或基于标准的连接器来进行外围连接580。通用类型可以包括通用串行总线(USB)连接器(其可以包括多个不同硬件接口中的任意一个)、包括微型显示端口(MDP)的显示端口、高清多媒体接口(HDMI)、Firewire或其他类型。
在一个实施例中,存储器子系统560包括ECC 566。ECC 566被示出为单独的元件,但表示存储器设备562中的内部ECC和存储器控制器564中的系统级ECC。内部ECC在响应于读取请求执行错误检测和校正之后生成内部校验比特。存储器控制器564的外部ECC可以使用校验比特作为元数据来增强系统级的错误校正。
一方面,一种用于存储器子系统中的错误校正的方法包括:响应于来自相关联的存储器控制器的读取请求,在存储器设备中执行内部错误检测以检测读取数据中的错误;响应于检测到所述读取数据中的错误,选择性地针对所述读取数据执行内部错误校正操作;在执行所述内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;并且响应于所述读取请求将所述校验比特与所述读取数据一起提供给所述存储器控制器,所述校验比特用于由所述存储器控制器在所述存储器设备外部的附加错误校正中使用。
在一个实施例中,生成指示所述错误向量的所述校验比特还包括响应于检测到所述读取数据中无错误而生成指示无错误的错误向量。在一个实施例中,生成指示所述错误向量的所述校验比特还包括响应于检测到所述读取数据中的单个比特错误而生成指示无错误的错误向量,其中,所述错误校正操作还包括执行单个比特错误校正。在一个实施例中,生成指示所述错误向量的所述校验比特还包括响应于检测到所述读取数据中的多比特错误而生成指示未校正错误的错误向量,其中,所述错误校正操作还包括检测所述多比特错误。在一个实施例中,向所述读取数据提供所述校验比特包括提供所述校验比特作为元数据,以用于由所述存储器控制器针对与并行地从附加存储器设备读取数据相关的所述读取数据执行的单个设备数据校正(SDDC)错误校验和校正(ECC)操作。在一个实施例中,提供所述校验比特还包括响应于由所述存储控制器发出的读取列地址选通(CAS)命令中的地址比特的逻辑值来选择性地提供所述校验比特。
一方面,一种应用内部错误校正的存储器设备,包括:错误检测逻辑,其用于响应于来自相关联的存储器控制器的读取请求,在存储器设备中执行内部错误检测以检测读取数据中的错误;错误校正逻辑,其用于响应于检测到读取数据中的错误而选择性地针对所述读取数据执行内部错误校正操作,并且在执行内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;以及I/O(输入/输出)硬件,其用于响应于所述读取请求将所述校验比特与所述读取数据一起发送到存储器控制器,所述校验比特用于由所述存储器控制器在所述存储器设备外部的附加错误校正中使用。
在一个实施例中,所述错误校正逻辑用于响应于检测到所述读取数据中无错误而生成指示无错误的错误向量。在一个实施例中,所述错误校正逻辑用于响应于检测到所述读取数据中的单个比特错误而生成指示无错误的错误向量,其中,所述错误校正操作还包括执行单个比特错误校正。在一个实施例中,所述错误校正逻辑用于响应于检测到所述读取数据中的多比特错误而生成指示未校正错误的错误向量,其中,所述错误校正操作还包括检测所述多比特错误。在一个实施例中,所述I/O硬件用于提供所述读取数据与所述校验比特,所述校验比特作为元数据,以用于由所述存储器控制器针对与并行地从附加存储器设备读取数据相关的所述读取数据执行的单个设备数据校正(SDDC)错误校验和校正(ECC)操作。在一个实施例中,所述I/O硬件用于由所述存储控制器发出的读取列地址选通(CAS)命令中的地址比特的逻辑值来选择性地提供所述校验比特。
在一个方面,一种在存储器子系统中执行错误校正的存储器控制器,包括:C/A(命令/地址)逻辑,其用于生成针对相关联的存储器设备的读取命令,所述读取命令请求内部校验比特与所述读取数据一起被返回;与所述存储器设备耦合的I/O(输入/输出)硬件,其用于将所述读取命令发送到所述存储器设备,以使得所述存储器设备执行内部错误检测以检测读取数据中的错误、响应于检测到存储数据中的错误,选择性地针对所述读取数据执行内部错误校正操作、并且在执行内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;并且用于响应于所述读取请求,接收所述校验比特与所述读取数据;以及错误校正逻辑,其用于存取所述校验比特以用于所述存储器设备外部的附加错误校正。
在一个实施例中,所述C/A逻辑用于生成具有指示所述存储设备发送所述校验比特的逻辑值的读取列地址选通(CAS)命令。在一个实施例中,所述I/O硬件用于响应于检测到所述读取数据中的多比特错误而接收指示未校正错误的错误向量。在一个实施例中,所述错误校正逻辑用于存取所述校验比特作为元数据以用于针对与并行地从附加存储器设备读取数据相关的所述读取数据执行的单个设备数据校正(SDDC)错误校验和校正(ECC)操作。
一方面,一种具有存储器子系统的电子设备,包括:存储器控制器,其用于生成读取命令以从相关联的存储器设备读取数据,所述读取命令包括针对来自响应于所述读取命令在所述存储器设备处执行的内部错误校正操作的内部校验比特的请求;多个DRAM(动态随机存取存储器设备),其中每个各自包括可寻址的存储器位置的存储器阵列,其中,所述存储器阵列是根据多个不同的粒度级别可寻址的,每个DRAM包括错误检测逻辑,其用于响应于所述读取命令执行内部错误检测以检测读取数据中的错误;错误校正逻辑,其用于响应于检测到读取数据中的错误而选择性地针对所述读取数据执行内部错误校正操作,并且在执行内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;以及I/O(输入/输出)硬件,其用于响应于所述读取请求将所述校验比特与所述读取数据一起发送到所述存储器控制器;其中,所述存储器控制器用于存取所述校验比特以用于所述DRAM外部的附加错误校正;以及机箱系统,其用于将所述存储器子系统耦合到刀片服务器。
在一个实施例中,所述存储器控制器还包括C/A(命令/地址)逻辑,其用于生成具有指示所述DRAM发送所述校验比特的逻辑值的读取列地址选通(CAS)命令。在一个实施例中,所述DRAM错误校正逻辑用于响应于检测到所述读取数据中的多比特错误,生成指示未校正错误的错误向量。在一个实施例中,所述存储器控制器还包括错误校正逻辑,其用于存取所述校验比特作为元数据,以用于针对与来自附加存储器设备的并行的读取数据相关的所述读取数据执行的单个设备数据校正(SDDC)错误校验和校正(ECC)操作。
一方面,一种用于存储器子系统中的错误校正的方法,包括:生成针对相关联的存储器设备的读取命令,所述读取命令请求内部校验比特与读取数据一起被返回;发送所述读取命令到所述存储器设备,用于使所述存储器设备执行内部错误检测以检测读取数据中的错误、响应于检测到读取数据中的错误,选择性地针对所述读取数据执行内部错误校正操作、以及在执行内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;并且用于响应于所述读取请求,接收所述校验比特与所述读取数据;并且存取所述校验比特以用于所述存储器设备外部的附加错误校正。
在一个实施例中,生成所述读取命令还包括生成具有指示所述存储设备发送所述校验比特的逻辑值的读取列地址选通(CAS)命令。在一个实施例中,存取指示所述错误向量的所述校验比特还包括响应于检测到所述读取数据中无错误而存取指示无错误的错误向量。在一个实施例中,存取指示所述错误向量的所述校验比特还包括响应于检测到所述读取数据中的单个比特错误,存取指示无错误的错误向量,并且还包括执行单个比特错误校正。在一个实施例中,存取指示所述错误向量的所述校验比特还包括响应于检测到所述读取数据中的多比特错误,存取指示未校正错误的错误向量,并且还包括检测所述多比特错误。在一个实施例中,存取所述校验比特与所述读取数据包括存取所述校验比特作为元数据,以用于针对与来自附加存储器设备的并行的读取数据相关的所述读取数据执行的单个设备数据校正(SDDC)错误校验和校正(ECC)操作。
一方面,一种用于在存储器子系统中的错误校正的装置,包括:用于响应于来自相关联的存储器控制器的读取请求,在存储器设备中执行内部错误检测以检测读取数据中的错误的单元;用于响应于检测到所述读取数据中的错误,选择性地针对所述读取数据执行内部错误校正操作的单元;用于在执行所述内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特的单元;以及用于响应于所述读取请求将所述校验比特与所述读取数据一起提供给所述存储器控制器的单元,所述校验比特用于由所述存储器控制器在所述存储器设备外部的附加错误校正中所使用。
在一个实施例中,用于生成指示所述错误向量的所述校验比特的单元还包括用于响应于检测到所述读取数据中无错误而生成指示无错误的错误向量的单元。在一个实施例中,用于生成指示所述错误向量的所述校验比特的单元还包括用于响应于检测到所述读取数据中的单个比特错误而生成指示无错误的错误向量的单元,其中,所述错误校正操作还包括执行单个比特错误校正。在一个实施例中,用于生成指示所述错误向量的所述校验比特的单元还包括用于响应于检测到所述读取数据中的多比特错误而生成指示未校正错误的错误向量的单元,其中,所述错误校正操作还包括检测所述多比特错误。在一个实施例中,用于提供所述校验比特与所述读取数据的单元包括用于提供所述校验比特作为元数据,以用于由所述存储器控制器针对与来自附加存储器设备的并行的读取数据相关的所述读取数据执行的单个设备数据校正(SDDC)错误校验和校正(ECC)操作的单元。在一个实施例中,用于提供所述校验比特的单元还包括用于响应于由所述存储控制器发出的读取列地址选通(CAS)命令中的地址比特的逻辑值来选择性地提供所述校验比特的单元。
在一个方面,一种制品,包括具有存储在其上的内容的计算机可读存储介质,所述内容当被存取时提供用于执行以下操作的指令,所述操作包括:响应于来自相关联的存储器控制器的读取请求,在存储器设备中执行内部错误检测以检测读取数据中的错误;响应于检测到所述读取数据中的错误,选择性地针对所述读取数据执行内部错误校正操作;在执行所述内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;并且响应于所述读取请求将所述校验比特与所述读取数据一起提供给所述存储器控制器,所述校验比特用于由所述存储器控制器在所述存储器设备外部的附加错误校正中所使用。
在一个实施例中,用于生成指示所述错误向量的所述校验比特的内容还包括用于响应于检测到所述读取数据中无错误而生成指示无错误的错误向量的内容。在一个实施例中,用于生成指示所述错误向量的所述校验比特的内容还包括用于响应于检测到所述读取数据中的单个比特错误而生成指示无错误的错误向量的内容,其中,所述错误校正操作还包括执行单个比特错误校正。在一个实施例中,用于生成指示所述错误向量的所述校验比特的内容还包括用于响应于检测到所述读取数据中的多比特错误而生成指示未校正错误的错误向量的内容,其中,所述错误校正操作还包括检测所述多比特错误。在一个实施例中,用于提供所述校验比特与所述读取数据的内容包括用于提供所述校验比特作为元数据,以用于由所述存储器控制器针对与来自附加存储器设备的并行的读取数据相关的所述读取数据执行的单个设备数据校正(SDDC)错误校验和校正(ECC)操作的内容。在一个实施例中,用于提供所述校验比特的内容还包括用于响应于由所述存储控制器发出的读取列地址选通(CAS)命令中的地址比特的逻辑值来选择性地提供所述校验比特的内容。
在一方面,一种用于存储器子系统中的错误校正的装置包括:用于生成针对相关联的存储器设备的读取命令的单元,所述读取命令请求内部校验比特与读取数据一起被返回;用于发送所述读取命令到所述存储器设备的单元,用于使所述存储器设备执行内部错误检测以检测读取数据中的错误、响应于检测到读取数据中的错误,针对所述读取数据选择性地执行内部错误校正操作、以及在执行内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;并且用于响应于所述读取请求,接收所述校验比特与所述读取数据;以及用于存取所述校验比特以用于所述存储器设备外部的附加错误校正的单元。
在一个实施例中,用于生成所述读取命令的单元还包括用于生成具有指示所述存储设备发送所述校验比特的逻辑值的读取列地址选通(CAS)命令的单元。在一个实施例中,用于存取指示所述错误向量的所述校验比特的单元还包括用于响应于检测到所述读取数据中无错误而存取指示无错误的错误向量的单元。在一个实施例中,用于存取指示所述错误向量的所述校验比特的单元还包括用于响应于检测到所述读取数据中的单个比特错误,而存取指示无错误的错误向量的单元,并且还包括用于执行单个比特错误校正的单元。在一个实施例中,用于存取指示所述错误向量的所述校验比特的单元还包括用于响应于检测到所述读取数据中的多比特错误而存取指示未校正错误的错误向量的单元,还包括用于检测所述多比特错误的单元。在一个实施例中,用于存取所述校验比特与所述读取数据的单元包括用于存取所述校验比特作为元数据,以用于针对与来自附加存储器设备的并行的读取数据相关的所述读取数据执行的单个设备数据校正(SDDC)错误校验和校正(ECC)操作的单元。
在一个方面,一种制品,其包括具有存储在其上的内容的计算机可读存储介质,所述内容当被存取时,提供用于执行以下操作的指令,所述操作包括:生成针对相关联的存储器设备的读取命令,所述读取命令请求内部校验比特与读取数据一起被返回;将所述读取命令发送到所述存储器设备,用于使所述存储器设备执行内部错误检测以检测读取数据中的错误、响应于检测到读取数据中的错误,选择性地针对所述读取数据执行内部错误校正操作、以及在执行内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;并且用于响应于所述读取请求,接收所述校验比特与所述读取数据;并且存取所述校验比特以用于所述存储器设备外部的附加错误校正。
在一个实施例中,用于生成所述读取命令的内容还包括用于生成具有指示所述存储设备发送所述校验比特的逻辑值的读取列地址选通(CAS)命令的内容。在一个实施例中,用于存取指示所述错误向量的所述校验比特的内容还包括用于响应于检测到所述读取数据中无错误而存取指示无错误的错误向量的内容。在一个实施例中,用于存取指示所述错误向量的所述校验比特的内容还包括用于响应于检测到所述读取数据中的单个比特错误,而存取指示无错误的错误向量的内容,并且还包括用于执行单个比特错误校正的内容。在一个实施例中,用于存取指示所述错误向量的所述校验比特的内容还包括用于响应于检测到所述读取数据中的多比特错误而存取指示未校正错误的错误向量的内容,并且还包括用于检测所述多比特错误的内容。在一个实施例中,用于存取所述校验比特与所述读取数据的内容包括用于存取所述校验比特作为元数据,以用于针对与来自附加存储器设备的并行的读取数据相关的所述读取数据执行的单个设备数据校正(SDDC)错误校验和校正(ECC)操作的内容。
如本文所示的流程图提供了各种处理动作的序列的示例。流程图可以指示要由软件或固件例程执行的操作,以及物理操作。在一个实施例中,流程图可以示出可以在硬件和/或软件中被实现的有限状态机(FSM)的状态。尽管以特定的序列或顺序被示出,但除非另有指示,动作的顺序可以被修改。因此,所示出的实施例应当仅被理解为示例,并且可以以不同的顺序来执行处理,并且可以并行地执行一些动作。另外,在各种实施例中可以省略一个或多个动作;因此,在每个实施例中并不要求所有动作。其他处理流程是可能的。
某种程度上,本文中所描述的各种操作或功能,它们可以被描述或定义为软件代码、指令配置和/或数据。内容可以是直接可执行(“对象”或“可执行”形式)的、源代码或差异代码(“delta”或“patch”代码)。本文所描述的实施例的软件内容可以经由具有存储在其上的内容的制品来提供,或者经由操作通信接口以经由通信接口发送数据的方法来提供。机器可读存储介质可以使得机器执行所描述的功能或操作,并且包括以机器(例如,计算设备、电子系统等)可存取的形式存储信息的任何机制,例如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。通信接口包括与硬连线、无线、光学等介质中的任何一种交互以与另一设备进行通信的任何机制,例如,存储器总线接口、处理器总线接口、因特网连接、磁盘控制器等。通信接口可以通过以下方式被配置:提供配置参数和/或发送信号以使得通信接口准备提供描述软件内容的数据信号。通信接口可以经由发送到通信接口的一个或多个命令或信号被访问。
本文所描述的各种组件可以是用于执行所描述的操作或功能的单元。本文所描述的每个组件包括软件、硬件或其组合。这些组件可以被实现为软件模块、硬件模块、专用硬件(例如,应用指定硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。
除了本文所描述的之外,在不脱离本发明的范围的情况下,可以对所公开的实施例和本发明的实现进行各种修改。因此,这里的举例性示出和示例应当被解释为说明性的而不是限制含义的。本发明的范围应该仅通过参考下面的权利要求来测量。

Claims (21)

1.一种用于执行错误校正的系统,包括:
多个存储器设备;以及
与所述存储器设备耦合的存储器控制器,所述存储器控制器包括:
与所述存储器设备耦合的I/O(输入/输出)硬件,其用于将读取命令发送到相关联的存储器设备,所述读取命令包括内部校验比特与读取数据一起被返回的请求,以使得所述相关联的存储器设备执行内部错误检测以检测读取数据中的错误、响应于检测到读取数据中的错误而针对所述读取数据选择性地执行内部错误校正操作、并且在执行内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;并且所述I/O硬件响应于所述读取命令,接收所述校验比特与所述读取数据,
其中,所述存储器控制器存取所述校验比特以用于所述相关联的存储器设备外部的系统错误校正。
2.根据权利要求1所述的系统,其中,所述I/O硬件用于发送两个周期的读取命令,其中所述读取命令包括所述校验比特,随后是读取列地址选通CAS命令以指示所述相关联的存储器设备。
3.根据权利要求1所述的系统,其中,所述I/O硬件用于接收响应于所述相关联的存储器设备检测到所述读取数据中无错误而指示无错误的错误向量。
4.根据权利要求1所述的系统,其中,所述I/O硬件用于接收响应于所述相关联的存储器设备检测到所述读取数据中的单个比特错误而指示无错误的错误向量,其中,内部错误检测和校正包括执行单个比特错误校正。
5.根据权利要求1所述的系统,其中,所述I/O硬件用于接收响应于所述相关联的存储器设备检测到所述读取数据中的多比特错误而指示未校正错误的错误向量,其中,内部错误检测和校正包括检测所述多比特错误。
6.根据权利要求1所述的系统,所述存储器控制器还包括错误校正逻辑,其中,所述错误校正逻辑用于存取所述校验比特作为元数据以用于针对与来自附加存储器设备的并行的读取数据相关的所述读取数据执行的单个设备数据校正SDDC错误校验和校正(ECC)操作。
7.一种用于存储器子系统中的错误校正的方法,包括:
生成针对相关联的存储器设备的读取命令,所述读取命令包括内部校验比特与读取数据一起被返回的请求;
将所述读取命令发送到所述相关联的存储器设备,以使得所述相关联的存储器设备执行内部错误检测以检测读取数据中的错误、响应于检测到读取数据中的错误而针对所述读取数据选择性地执行内部错误校正操作、以及在执行内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;
响应于所述读取命令,接收所述校验比特与所述读取数据;并且
存取所述校验比特以用于所述相关联的存储器设备外部的系统错误校正。
8.根据权利要求7所述的方法,其中,发送所述读取命令包括生成两个周期的读取命令,其中读取命令包括所述校验比特,随后是读取列地址选通CAS命令以指示所述相关联的存储器设备。
9.根据权利要求7所述的方法,其中,接收所述校验比特包括接收响应于所述相关联的存储器设备检测到所述读取数据中无错误而指示无错误的错误向量。
10.根据权利要求7所述的方法,其中,接收所述校验比特包括接收响应于所述相关联的存储器设备检测到所述读取数据中的单个比特错误而指示无错误的错误向量,其中,内部错误检测和校正包括执行单个比特错误校正。
11.根据权利要求7所述的方法,其中,接收所述校验比特包括接收响应于所述相关联的存储器设备检测到所述读取数据中的多比特错误而指示未校正错误的错误向量,其中,内部错误检测和校正包括检测所述多比特错误。
12.根据权利要求7所述的方法,其中,存取针对系统错误校正的所述校验比特包括存取所述校验比特作为元数据,以用于针对与来自附加存储器设备的并行的读取数据相关的所述读取数据执行的单个设备数据校正SDDC错误校验和校正(ECC)操作。
13.一种用于执行错误校正的存储器控制器,包括:
与相关联的存储器设备耦合的I/O(输入/输出)硬件,其用于将读取命令发送到所述相关联的存储器设备,所述读取命令包括内部校验比特与读取数据一起被返回的请求,以使得所述相关联的存储器设备执行内部错误检测以检测读取数据中的错误、响应于检测到读取数据中的错误而针对所述读取数据选择性地执行内部错误校正操作、并且在执行内部错误检测和校正之后,生成指示针对所述读取数据的错误向量的校验比特;并且所述I/O硬件响应于所述读取命令,接收所述校验比特与所述读取数据;以及
错误校正逻辑,其用于存取所述校验比特,以用于所述相关联的存储器设备外部的系统错误校正。
14.根据权利要求13所述的存储器控制器,其中,所述I/O硬件用于发送两个周期的读取命令,其中所述读取命令包括所述校验比特,随后是读取列地址选通CAS命令以指示所述相关联的存储器设备。
15.根据权利要求13所述的存储器控制器,其中,所述I/O硬件用于接收响应于所述相关联的存储器设备检测到所述读取数据中无错误而指示无错误的错误向量。
16.根据权利要求13所述的存储器控制器,其中,所述I/O硬件用于接收响应于所述相关联的存储器设备检测到所述读取数据中的单个比特错误而指示无错误的错误向量,其中,内部错误检测和校正包括执行单个比特错误校正。
17.根据权利要求13所述的存储器控制器,其中,所述I/O硬件用于接收响应于所述相关联的存储器设备检测到所述读取数据中的多比特错误而指示未校正错误的错误向量,其中,内部错误检测和校正包括检测所述多比特错误。
18.根据权利要求13所述的存储器控制器,其中,所述错误校正逻辑用于存取所述校验比特作为元数据以用于针对与来自附加存储器设备的并行的读取数据相关的所述读取数据执行的单个设备数据校正SDDC错误校验和校正(ECC)操作。
19.一种用于存储器子系统中的错误校正的设备,包括:
存储指令的存储器;以及
耦合到所述存储器的处理器,所述指令在被所述处理器执行时执行根据权利要求7-12中的任一项所述的方法。
20.一种用于存储器子系统中的错误校正的装置,包括用于执行根据权利要求7-12中的任一项所述的方法的单元。
21.一种具有指令的计算机可读介质,所述指令在被处理器执行时,使所述处理器执行根据权利要求7-12中的任一项所述的方法。
CN201680012438.9A 2015-03-27 2016-03-07 从片上动态随机存取存储器错误校正码中提取选择性信息 Active CN107430537B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/670,413 US9811420B2 (en) 2015-03-27 2015-03-27 Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
US14/670,413 2015-03-27
PCT/US2016/021142 WO2016160274A1 (en) 2015-03-27 2016-03-07 Extracting selective information from on-die dram ecc

Publications (2)

Publication Number Publication Date
CN107430537A CN107430537A (zh) 2017-12-01
CN107430537B true CN107430537B (zh) 2021-08-24

Family

ID=56975578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680012438.9A Active CN107430537B (zh) 2015-03-27 2016-03-07 从片上动态随机存取存储器错误校正码中提取选择性信息

Country Status (5)

Country Link
US (2) US9811420B2 (zh)
KR (1) KR102552933B1 (zh)
CN (1) CN107430537B (zh)
TW (1) TWI605460B (zh)
WO (1) WO2016160274A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9904591B2 (en) 2014-10-22 2018-02-27 Intel Corporation Device, system and method to restrict access to data error information
US9740558B2 (en) 2015-05-31 2017-08-22 Intel Corporation On-die ECC with error counter and internal address generation
US9842021B2 (en) 2015-08-28 2017-12-12 Intel Corporation Memory device check bit read mode
US9852809B2 (en) 2015-12-28 2017-12-26 Micron Technology, Inc. Test mode circuit for memory apparatus
US9891864B2 (en) 2016-01-19 2018-02-13 Micron Technology, Inc. Non-volatile memory module architecture to support memory error correction
WO2017192626A1 (en) 2016-05-02 2017-11-09 Intel Corporation Internal error checking and correction (ecc) with extra system bits
US10120749B2 (en) * 2016-09-30 2018-11-06 Intel Corporation Extended application of error checking and correction code in memory
KR20190054533A (ko) 2017-11-14 2019-05-22 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법
KR102449346B1 (ko) 2017-12-12 2022-10-04 삼성전자주식회사 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템
US20190042358A1 (en) * 2018-02-06 2019-02-07 Intel Corporation Shared parity check for correcting memory errors
CN108600043A (zh) * 2018-04-02 2018-09-28 郑州云海信息技术有限公司 连接服务器和控制端的方法、服务器Memory功能模块测试方法
US10692560B2 (en) 2018-06-06 2020-06-23 Intel Corporation Periodic calibrations during memory device self refresh
US10719397B2 (en) 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
WO2020000316A1 (zh) 2018-06-28 2020-01-02 华为技术有限公司 容错处理的方法、装置和服务器
KR102717146B1 (ko) 2018-11-19 2024-10-15 삼성전자주식회사 반도체 메모리 장치 및 이를 구비하는 메모리 시스템
CN109862076B (zh) * 2018-12-30 2022-05-03 贝壳技术有限公司 一种业务数据交互方法、装置和系统
JP7058759B2 (ja) 2019-01-22 2022-04-22 株式会社アドバンテスト 1または複数の被テストデバイスをテストするための自動試験装置、1または複数の被テストデバイスの自動試験のための方法、および、コマンドエラーを処理するためのコンピュータプログラム
US10872010B2 (en) * 2019-03-25 2020-12-22 Micron Technology, Inc. Error identification in executed code
US11237903B2 (en) * 2019-06-25 2022-02-01 Intel Corporation Technologies for providing ECC pre-provisioning and handling for cross-point memory and compute operations
CN112289365B (zh) * 2019-07-24 2024-02-23 华邦电子股份有限公司 半导体存储器装置
US11294766B2 (en) 2019-08-13 2022-04-05 Micron Technology, Inc. Coordinated error correction
US11436071B2 (en) 2019-08-28 2022-09-06 Micron Technology, Inc. Error control for content-addressable memory
KR20210089016A (ko) 2020-01-07 2021-07-15 삼성전자주식회사 메모리 컨트롤러 및 메모리 시스템
CN111310891A (zh) * 2020-01-20 2020-06-19 苏州浪潮智能科技有限公司 一种卷积运算方法、装置、设备及存储介质
US11314589B2 (en) 2020-05-15 2022-04-26 Intel Corporation Read retry to selectively disable on-die ECC
KR20210149314A (ko) * 2020-06-02 2021-12-09 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11170869B1 (en) 2020-06-04 2021-11-09 Western Digital Technologies, Inc. Dual data protection in storage devices
US11907544B2 (en) * 2020-08-31 2024-02-20 Micron Technology, Inc. Automated error correction with memory refresh
US11593197B2 (en) * 2020-12-23 2023-02-28 Samsung Electronics Co., Ltd. Storage device with data quality metric and selectable data recovery scheme
US12086026B2 (en) 2021-03-17 2024-09-10 Micron Technology, Inc. Multiple error correction code (ECC) engines and ECC schemes
US20210224155A1 (en) * 2021-04-08 2021-07-22 Intel Corporation Reduction of latency impact of on-die error checking and correction (ecc)
US11789817B2 (en) * 2021-04-26 2023-10-17 Micron Technology, Inc. Error correction for internal read operations
US20240241778A1 (en) * 2021-12-13 2024-07-18 Intel Corporation In-system mitigation of uncorrectable errors based on confidence factors, based on fault-aware analysis

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044483A (en) * 1998-01-29 2000-03-28 International Business Machines Corporation Error propagation operating mode for error correcting code retrofit apparatus
CN1942864A (zh) * 2004-04-14 2007-04-04 皇家飞利浦电子股份有限公司 校正数据存储器中错误的数据处理设备
CN101097784A (zh) * 2006-06-30 2008-01-02 英特尔公司 改善存储装置的可靠性、可用性及可维修性
CN202930048U (zh) * 2012-10-30 2013-05-08 深圳市江波龙电子有限公司 闪存及包含该闪存的存储设备

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100272708B1 (ko) * 1997-12-30 2000-11-15 전주범 D-vhs시스템에서 셔플링을 이용한 디지털 데이터의 코딩/디코딩 방법
US7099221B2 (en) * 2004-05-06 2006-08-29 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US7322002B2 (en) 2004-05-26 2008-01-22 Micron Technology, Inc. Erasure pointer error correction
US7444579B2 (en) 2005-04-28 2008-10-28 Micron Technology, Inc. Non-systematic coded error correction
US7755961B2 (en) * 2006-07-07 2010-07-13 Rao G R Mohan Memories with selective precharge
US8136008B1 (en) * 2007-03-30 2012-03-13 Link—A—Media Devices Corporation ECC with out of order completion
US7958427B1 (en) * 2007-03-30 2011-06-07 Link—A—Media Devices Corporation ECC with out of order completion
US20080288712A1 (en) 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
US8006166B2 (en) 2007-06-12 2011-08-23 Micron Technology, Inc. Programming error correction code into a solid state memory device with varying bits per cell
KR100888842B1 (ko) * 2007-06-28 2009-03-17 삼성전자주식회사 읽기 전압을 최적화할 수 있는 플래시 메모리 장치 및그것의 독출 전압 설정 방법
US8086936B2 (en) 2007-08-31 2011-12-27 International Business Machines Corporation Performing error correction at a memory device level that is transparent to a memory channel
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US7934052B2 (en) * 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
US8737129B2 (en) * 2008-11-14 2014-05-27 Samsung Electronics Co., Ltd. Nonvolatile memory device and read method thereof
JP2010146654A (ja) * 2008-12-19 2010-07-01 Toshiba Corp メモリ装置
US8438453B2 (en) * 2009-05-06 2013-05-07 Apple Inc. Low latency read operation for managed non-volatile memory
US8255620B2 (en) * 2009-08-11 2012-08-28 Texas Memory Systems, Inc. Secure Flash-based memory system with fast wipe feature
KR101602939B1 (ko) 2009-10-16 2016-03-15 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
WO2011094454A2 (en) * 2010-01-27 2011-08-04 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
US8533572B2 (en) 2010-09-24 2013-09-10 Intel Corporation Error correcting code logic for processor caches that uses a common set of check bits
US8402349B2 (en) * 2010-12-06 2013-03-19 Apple Inc. Two dimensional data randomization for a memory
US8484542B2 (en) * 2011-02-08 2013-07-09 Sandisk Technologies Inc. Data recovery using additional error correction coding data
KR101739878B1 (ko) 2011-02-22 2017-05-26 삼성전자주식회사 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템
US9032269B2 (en) * 2011-07-22 2015-05-12 Sandisk Technologies Inc. Systems and methods of storing data
US9195551B2 (en) 2012-03-29 2015-11-24 Intel Corporation Enhanced storage of metadata utilizing improved error detection and correction in computer memory
US9146856B2 (en) 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
US8839073B2 (en) * 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
CN103578535B (zh) * 2012-07-23 2016-06-15 华邦电子股份有限公司 用于读取nand快闪存储器的方法和设备
US9009566B2 (en) 2012-09-12 2015-04-14 Macronix International Co., Ltd. Outputting information of ECC corrected bits
US9026888B2 (en) 2012-12-21 2015-05-05 Intel Corporation Method, system and apparatus for providing access to error correction information
US9329943B2 (en) * 2013-01-08 2016-05-03 Symantec Corporation Methods and systems for instant restore of system volume
US9367391B2 (en) 2013-03-15 2016-06-14 Micron Technology, Inc. Error correction operations in a memory device
US10115174B2 (en) 2013-09-24 2018-10-30 2236008 Ontario Inc. System and method for forwarding an application user interface
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
KR102210327B1 (ko) 2014-08-21 2021-02-01 삼성전자주식회사 에러 알림 기능이 있는 메모리 장치
US9558066B2 (en) 2014-09-26 2017-01-31 Intel Corporation Exchanging ECC metadata between memory and host system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044483A (en) * 1998-01-29 2000-03-28 International Business Machines Corporation Error propagation operating mode for error correcting code retrofit apparatus
CN1942864A (zh) * 2004-04-14 2007-04-04 皇家飞利浦电子股份有限公司 校正数据存储器中错误的数据处理设备
CN101097784A (zh) * 2006-06-30 2008-01-02 英特尔公司 改善存储装置的可靠性、可用性及可维修性
CN202930048U (zh) * 2012-10-30 2013-05-08 深圳市江波龙电子有限公司 闪存及包含该闪存的存储设备

Also Published As

Publication number Publication date
US20180024878A1 (en) 2018-01-25
CN107430537A (zh) 2017-12-01
WO2016160274A1 (en) 2016-10-06
TWI605460B (zh) 2017-11-11
US20160283318A1 (en) 2016-09-29
US9811420B2 (en) 2017-11-07
KR102552933B1 (ko) 2023-07-10
KR20170129703A (ko) 2017-11-27
US10496473B2 (en) 2019-12-03
TW201638966A (zh) 2016-11-01

Similar Documents

Publication Publication Date Title
CN107430537B (zh) 从片上动态随机存取存储器错误校正码中提取选择性信息
CN107924698B (zh) Dram设备、错误校正管理的方法和存储器控制器
CN107430538B (zh) 基于错误类型的ecc的动态应用
US10872011B2 (en) Internal error checking and correction (ECC) with extra system bits
US10572343B2 (en) Targeted aliasing single error correction (SEC) code
US9934143B2 (en) Mapping a physical address differently to different memory devices in a group
CN109661654B (zh) 存储器中的差错校验和纠正码的扩展应用
US9697094B2 (en) Dynamically changing lockstep configuration
WO2014046750A1 (en) Method, apparatus and system for providing error correction information

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