CN116264100A - 快速存储器ecc错误纠正 - Google Patents

快速存储器ecc错误纠正 Download PDF

Info

Publication number
CN116264100A
CN116264100A CN202211336669.9A CN202211336669A CN116264100A CN 116264100 A CN116264100 A CN 116264100A CN 202211336669 A CN202211336669 A CN 202211336669A CN 116264100 A CN116264100 A CN 116264100A
Authority
CN
China
Prior art keywords
logic
error
read data
data
read
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
Application number
CN202211336669.9A
Other languages
English (en)
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.)
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 CN116264100A publication Critical patent/CN116264100A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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/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
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

具有错误检查和纠正(ECC)电路的存储器控制器可以检测从存储器读取的数据中的错误,并且利用重试流程来纠正该错误。当从存储器接收到读取数据时,将读取数据存储在存储器控制器处的读取数据缓冲器中。一旦ECC电路在读取数据中检测到错误,重试流程就能够从读取数据缓冲器访问该数据,而不是再次从存储器读取数据。与从存储器重新读取数据的重试流程相比,从读取数据缓冲器访问数据减少了纠正流程所需的总体时间。

Description

快速存储器ECC错误纠正
技术领域
描述总体上涉及存储器系统,并且更特别地,描述涉及错误检查和纠正(ErrorChecking and Correction,ECC)。
背景技术
存储器系统采用错误检查和纠正(ECC)来提高系统的可靠性并减少系统故障和崩溃的风险。ECC通常在存储器管芯上执行,或在主机的存储器控制器上执行,或在两者上执行。主机从存储器读取数据。在将数据提供到主机之前,ECC电路对从存储器读取的数据中的错误进行检查。ECC电路执行错误检测、即检测数据中的错误,并进行错误纠正、即纠正检测到的错误。
可以利用简单的ECC纠正方案(如单错误纠正双错误检测(SECDED))执行行内纠正。例如,在读取缓存行时使用行内纠正。在行内纠正中,读取的数据通过错误检测逻辑和错误纠正逻辑两者。因此,即使读取没有错误,数据也会通过错误纠正逻辑。通过错误纠正逻辑会在流量流中增加一个或多个时钟周期的延迟。
执行更复杂的全设备损坏纠正的服务器ECC需要更长的时间来完成纠正。因此,ECC的检测和纠正是分开进行的。读取的数据首先通过错误检测逻辑。然后,当在读取的数据中检测到错误时,错误纠正逻辑被启用。当错误纠正逻辑被启用时,流量被停止,有错误的读取数据再次从存储器重新读取并通过错误纠正逻辑。完成整个重试流程所需的时间通常需要数千个时钟周期。
图1A示出了在读取的数据中没有错误的情况下对行内错误纠正和具有分离的检测数据路径和纠正数据路径的ECC进行比较的时序图。时钟102代表系统的定时信号,并为信息流提供参考。每次从存储器的读取会提供读取的数据的两个要素(也被称为数据包或字),在时序图中的数据输入104中由D0和D1表示。在行内纠正中,没有错误的读取的数据会通过错误检测逻辑和错误纠正逻辑两者。在图1A的示例中,数据通过错误检测逻辑需要一个时钟周期,并且读取的数据通过错误纠正逻辑需要一个时钟周期。行内纠正106示出:在D0在数据输入104中可用之后两个时钟周期后,D0才在行内纠正106的输出端处可用。
类似地,图1A示出:在D1在数据输入104上可用之后两个时钟周期后,D1才出现在行内纠正106上。检测时序图108指示出了读取的数据在错误检测路径与错误纠正路径分离的系统中的返回。图中示出需要一个时钟周期来返回没有错误的读取数据。对于无错误的情况,具有行内纠正的SECDED码通常需要两个时钟周期,而具有分离的检测路径和纠正路径的ECC仅执行检测,这需要一个时钟周期。
图1B示出了当读取的数据中存在错误时对行内错误纠正和具有分离的检测数据路径和纠正数据路径的ECC进行比较的时序图。行内纠正106示出了行内纠正的时序,其与图1A的情况相同,其中,行内纠正逻辑在两个时钟周期中返回数据。然而,对于具有分离的用于ECC检测的数据路径和用于ECC纠正的数据路径的ECC纠正,重试流程需要很长的时间来返回数据。重试流程110示出了具有分离的用于检测和纠正的数据路径的服务器ECC纠正的时序图,其中,重试延迟在一千个时钟周期(或更多)的数量级上。重试流程增加了延迟,因为该过程要求流量停止,以便从存储器重新读取具有错误的数据。一旦数据被重新读取,它就会通过复杂的ECC纠正逻辑,这会进一步增加延迟。
附图说明
以下描述包括对具有以实施方式的示例的方式给出的图示的图的讨论。应以示例的方式来理解附图,而不是以限制的方式。如本文所使用的,对一个或多个示例的引用应理解为描述被包括在本发明的至少一个实施方式中的特定特征、结构或特性。本文出现的诸如“在一个示例中”或“在替代示例中”的短语提供了本发明的实施方式的示例,并且不一定都是指同一实施方式。然而,它们也不一定相互排斥。
图1A示出了在读取的数据中没有错误的情况下对行内错误纠正和具有分离的检测数据路径和纠正数据路径的ECC进行比较的时序图。
图1B示出了当读取的数据中存在错误时对行内错误纠正和具有分离的检测数据路径和纠正数据路径的ECC进行比较的时序图。
图2是利用存储器控制器的系统的框图。
图3是示出了错误检查和纠正(ECC)操作的框图。
图4A和图4B分别是在没有错误的情况下执行单个和多个读取命令的时序图。
图4C是在具有错误的情况下执行多个读取命令的时序图。
图5是使用存储在读取数据缓冲器(RDB)中的读取数据进行ECC错误纠正的重试流程的示例的流程图。
图6是可以实现使用读取数据缓冲器进行ECC错误纠正的重试流程的计算系统的示例的框图。
接下来对某些细节和实施方式进行描述,包括对图的非限制性描述,这些图可以描绘一些或所有的示例,以及其他潜在的实施方式。
具体实施方式
如本文所述,具有错误检查和纠正(ECC)电路的存储器控制器可以利用重试流程检测和纠正从存储器读取的数据中的错误。当检测到错误时,重试流程能够从读取数据缓冲器访问数据。从读取数据缓冲器访问数据显著地降低了由错误纠正流程引入的延迟。
在重试流程中使用在读取数据缓冲器(RDB)中存储的读取数据,将允许快速ECC错误纠正,并避免传统方法由于阻塞流量和清除待处理事务而引起的长延迟。此外,将来自RDB的数据用于错误纠正流程降低了错误发生频率较高时的开销。
如本文所述,ECC电路具有两个数据路径:检测数据路径(称为第一数据路径)、以及纠正数据路径(称为第二数据路径)。错误检测电路在第一数据路径上处理读取的数据。如果ECC错误检测电路没有在读取的数据中检测到任何ECC错误,则读取的数据被提供到主机内部数据总线上。在一个示例中,读取的数据可以首先被缓存在重排序电路中,以使所有的数据按照它们被请求的顺序被提供到数据总线上。
如果错误检测电路在读取的数据中检测到ECC错误,则触发重试流程。重试流程停止对新的读取命令的执行。然而,重试流程并不从RDB中清除未完成的读取。而是,首先完成生效的读取命令。然后,向读取数据缓冲器发送重试命令,以重新读取检测到错误的读取数据。读取的数据被提供到第二数据路径上的错误纠正电路。如果错误纠正逻辑成功地纠正了错误,则纠正的读取数据被返回到数据总线上。
在一个示例中,纠正的读取数据将通过重排序电路。如果错误纠正逻辑不能够或未成功纠正数据,则向主机系统发出错误不可纠正的指示。
图2是利用存储器控制器的系统的框图。计算系统接收命令以对操作数执行操作。命令和操作数被存储在存储器中。处理器从存储器接收命令和操作数,执行预期的计算,并在需要时在存储器中存储信息。
系统200包括主机电路210和存储器电路250。主机电路210包括处理器逻辑212和存储器控制器逻辑214。
处理器逻辑212可以是或包括片上系统(SoC)、现场可编程门阵列(FPGA)、中央处理单元(CPU)、加速器、图形处理单元(GPU)、或其他逻辑。处理器212经由存储器控制器214和数据总线240与存储器250通信耦合。处理器212代表单核或多核处理器。
存储器控制器214控制和调节处理器212对存储器电路250的访问。当处理器212需要数据时,存储器控制器214产生读取命令并从存储器电路250接收数据。类似地,当处理器212需要在存储器中存储数据时,存储器控制器逻辑214产生写命令以使存储器存储数据。
数据总线240在主机210和存储器电路250之间传输数据。输入/输出接口(I/O)226和252使数据在数据总线240上可用。当执行读取命令时,存储器控制器输入/输出(I/O)接口226从存储器I/O接口252接收数据并将读取的数据发送到处理器212。当执行写命令时,存储器控制器214使用I/O接口226和252通过数据总线240向存储器电路250发送数据。
在一个示例中,存储器控制器逻辑214是以硬件实现的。在一个示例中,存储器控制器逻辑214是以软件实现的。在一个示例中,存储器控制器逻辑214被实现为硬件和软件的组合。如本文所用,“逻辑”可以包括硬件逻辑(例如,电路)或软件逻辑,或硬件逻辑和软件逻辑的组合。
在一些示例实施方式中,处理器以特定顺序请求数据。例如,当数据之间存在依赖关系时。另一个示例是当处理器执行与不同线程或程序相关的操作时。与线程或程序相关的数据只有在处理器执行相应的线程或程序时才能使用。重排序逻辑228确保处理器逻辑212以所请求的相同顺序接收数据。
I/O接口逻辑226在主机电路210和存储器电路250之间接口。命令逻辑216产生并执行用于访问存储器电路250的命令。例如,为了从存储器电路250获得数据,命令逻辑216产生读取命令并将读取命令发送到存储器电路250执行。对读取命令的执行使得从存储电路250中的特定地址或位置检索数据,并将数据返回给主机210。存储器控制器214将从存储器中获得的数据(也被称为读取数据)存储在读取数据缓冲器(RDB)电路224中。RDB电路224是一个小型的存储器,其在读取数据通过ECC逻辑之前暂时保存读取数据。在一个示例中,RDB电路224是一个便笺式存储器。便笺式存储器是一种高速存储器,用于保存数据以便快速检索。
错误检查和纠正(ECC)逻辑负责检测和纠正数据中的错误。ECC错误检测逻辑218从读取数据缓冲器电路224接收读取数据,并调查其是否有错误。ECC错误纠正逻辑220执行用于纠正读取数据中的错误的操作。ECC错误检测逻辑218和ECC错误纠正逻辑220由ECC错误管理器逻辑222调节和管理。
存储器电路250包括存储器单元阵列和逻辑(图2中未示出)以及I/O接口252。I/O接口252将存储器单元连接到总线240。存储器可以是或可以包括易失性或非易失性存储器。
图3是示出了系统300执行错误检查和纠正(ECC)操作的框图。命令逻辑216产生并发送读取命令信号310,以从存储器电路250检索数据。存储器电路250经由I/O接口252和总线240向I/O接口226发送读取数据。读取数据缓冲器(RDB)电路224存储读取的数据。命令逻辑216可以产生并执行多个连续的读取命令信号。当命令逻辑216执行多个读取命令时,RDB电路224存储对应于每个读取命令的读取数据。ECC过程分为两个独立的过程:ECC错误检测过程(其中读取数据通过第一数据路径302)、以及ECC行内错误纠正过程(其中读取数据通过第二数据路径304)。
第一数据路径302上的ECC错误检测逻辑218从读取数据缓冲器224接收读取数据。ECC错误检测逻辑218对读取数据执行ECC错误检测。如果ECC错误检测218没有在读取数据中检测到任何错误,则存储器控制器将读取数据返回给主机处理器。当存储器控制器必须以特定的顺序向处理器交付数据时,重排序逻辑228接收读取数据,将读取数据按正确的顺序排列,并将数据返回给主机处理器(例如,图2中的处理器212)。在一个示例中,重排序逻辑228按照产生相应的读取命令的顺序返回读取数据。在另一个示例中,重排序逻辑228按照执行相应的读取命令的顺序返回读取数据。
当ECC错误检测逻辑218在读取数据中检测到错误时,该读取数据被发送到第二数据路径304以进行ECC错误纠正程序。命令逻辑216发送触发ECC错误纠正程序的重试命令312。
在一个示例中,ECC错误纠正程序是单错误纠正和双重错误检测(SECDED)错误纠正码,例如汉明码(Hamming Code)。在一个示例中,ECC错误纠正是纠正多个位错误的ChipkillTM ECC。在另一个示例中,ECC错误纠正是
Figure BDA0003915531490000061
单设备数据纠正(SDDC)算法。
存储器错误可以由几个不同来源中的任何一个导致,例如噪音、干扰或实体损坏。此外,存储器错误可以是瞬时或软错误(它可能在一次读取中发生,但在随后的对同一位置的读取中不存在),或者是将持续存在的永久性错误或硬故障。
在一个示例中,响应于由ECC错误检测逻辑218检测到错误,命令逻辑216产生并发送重试命令312。在一个示例中,按以下方式产生重试命令312。ECC错误检测逻辑218响应于检测到错误,产生错误触发信号306,并将错误触发信号306发送到ECC错误管理器逻辑222。ECC错误管理器逻辑222响应于接收到错误触发信号306,产生错误信号308,并将其发送到命令逻辑216。最后,命令逻辑216响应于接收到错误信号308,产生重试命令312。
在另一个示例中,ECC错误检测218响应于检测到错误,将错误触发信号306发送到命令逻辑216。然后,命令逻辑216响应于接收到错误触发信号306,产生重试命令312。
命令逻辑216将重试命令312发送到读取数据缓冲器(RDB)电路224。RDB电路224响应于重试命令312,将ECC错误检测逻辑218检测到(一个或多个)错误的读取数据发送到第二数据路径304上的ECC错误纠正逻辑220。
第二数据路径304上的ECC错误纠正逻辑220接收来自RDB电路224的读取数据,并执行ECC错误纠正程序。如果ECC错误纠正逻辑220成功地纠正了读取数据的(一个或多个)错误,则它返回读取数据。然而,如果ECC错误纠正逻辑220不能纠正读取数据中的(一个或多个)错误,则它向ECC错误管理器逻辑222发送信号并触发用于处理不可纠正的错误的过程(例如,如图5所示)。
使用RDB电路224来重新读取数据以进行ECC错误纠正,避免了停止流量、清除数据路径以及从存储器重新读取数据。读取和写入命令的调度器不会受影响。在检测到错误之后,数据路径暂时停止从RDB电路224读取新事务。存储器控制器将任何未完成的读取事务返回给主机处理器。ECC错误纠正逻辑220从RDB电路224获得具有ECC错误的数据,然后执行纠正。ECC纠正逻辑220返回纠正的数据,并且恢复从RDB电路224的读取。
图4A和图4B是在没有错误的情况下执行单个和多个读取命令的时序图,而图4C是在具有错误的情况下执行多个读取命令的时序图。时序图400示出了读取命令的执行。在一个示例中,当读取命令被执行时(例如,图3中的读取命令信号310),存储器控制器逻辑(例如,图2中的存储器控制器214)产生早期读取有效信号402。因此,早期读取有效信号指示了执行读取命令。早期读取有效信号402使得能够从存储器(例如,图2中的存储器250)检索读取数据。读取数据信号404是读取数据呈内部数据总线上的信号形式的物理表现。当接收到与读取命令相关联的数据时,错误有效信号406指示错误纠正逻辑可以对读取数据执行ECC。错误信号408指示是否由ECC错误检测逻辑218检测到错误。
在图4A中,读取数据信号404示出了读取数据经过ECC错误检测逻辑218的时序的一个示例。每个读取数据需要两个时钟周期,读取数据的占据第一个时钟周期的第一部分由后缀0指示,读取数据的占据第二个周期的第二部分由后缀1指示。例如,在图4A中,读取数据信号404中的D0和D1是读取数据D的两个部分。
早期读取有效信号402在时间Ta指示ECC逻辑已经准备好从存储器接收读取数据。读取数据信号404在时间Tb指示ECC错误检测已经完成了对读取数据D的两部分的返回。
在一个示例实施方式中,在产生早期读取有效信号402和ECC错误检测逻辑(例如,图3中的ECC错误检测逻辑218)完成错误检测之间经过的时间可以是几十个时钟周期。在一个示例实施方式中,在产生早期读取有效信号402和ECC错误检测逻辑(例如,图3中的ECC错误检测逻辑218)完成错误检测之间经过的时间是6至16个时钟周期。
在图4B中,时序图420示出了执行多个读取命令的示例时序。当多个读取命令被执行时,产生多个早期读取有效信号402。多个连续的早期读取有效信号402由1、2、...、n指示。每个早期读取有效信号与一个读取命令和一个读取数据相关联。例如,早期读取有效信号402“1”与读取数据D相关联,在读取数据信号404中由D0和D1表示。类似地,早期读取有效信号402“2”与读取数据E相关联,在读取数据信号404中由E0和E1表示。另外,读取数据F(由读取数据信号404的F0和F1表示)和读取数据G(由读取数据信号404的G1和G2表示)也与早期读取有效信号相关联,在图420中由于时间间断而没有明确标识这些信号。当ECC错误检测逻辑(例如,图3中的ECC错误检测逻辑218)累积了这两部分的读取数据时,错误有效信号406上的脉冲或信号指示ECC错误检测逻辑可以执行检测程序。
在一个示例实施方式中,与执行单个读取命令类似,在产生早期读取有效信号402和ECC错误检测逻辑(例如,图3中的ECC错误检测逻辑218)完成错误检测之间经过的时间可以是几十个时钟周期。在另一个示例实施方式中,在产生早期读取有效信号402和ECC错误检测逻辑(例如,图3中的ECC错误检测逻辑218)完成错误检测之间经过的时间是6至16个时钟周期。
图4C示出了使用重试命令从RDB访问数据的ECC错误纠正的示例时序图。在一个示例中,当ECC检测逻辑在读取数据中检测到错误时,它触发命令逻辑执行重试命令。当命令逻辑执行重试命令时,存储器控制器允许RDB电路接收所有与执行重试命令之前发出的早期读取有效信号对应的读取数据。存储器控制器停止执行在执行重试命令之后发出的读取命令。在一个示例中,存储器控制器停止执行在执行重试命令之后发出的读取命令达几十个时钟周期。响应重试信号,ECC错误纠正(例如,图3中的ECC错误纠正逻辑220)从RDB接收读取数据。当读取数据通过ECC错误纠正逻辑220时,常规数据流量被阻断。
在示例时序图440中,由“1”、“2”、“3”、“4”和“5”指示的早期读取有效信号402分别与读取数据D(D0和D1)、E(E0和E1)、F(F0和F1)、G(G0和G1)和H(H0和H1)相关联。错误信号408“1”指示在读取数据E中检测到错误,并触发命令逻辑执行重试命令。在执行重试命令之前已经发出了与读取数据F和G对应的早期读取有效信号402的“3”和“4”。因此,存储器控制器允许从存储器检索与早期读取有效信号402“3”和“4”相关联的读取数据F和G。在一个示例中,早期读取有效信号402“5”也允许被完成,因为它在时间上接近于对读取数据E中错误的检测。因此,存储器控制器允许对读取数据H的读取。
在读取数据E中检测到的错误触发命令逻辑来产生重试命令信号。重试命令信号被发送到RDB以对读取数据E进行重新读取并将其发送到ECC错误纠正逻辑。早期读取有效信号402“6”是响应于重试命令信号而产生的。响应于重试命令和早期读取有效信号402“6”,RDB将读取数据E发送到ECC错误纠正,这由读取数据信号404“1”示出。读取数据信号404“2”示出ECC错误纠正逻辑返回的读取数据E,并且相应的错误信号408指示ECC错误纠正成功纠正了错误。最后,早期读取有效信号402“7”恢复从存储器读取数据,在几个时钟周期后,如读取数据信号404“7”所示,读取数据J(J0和J1)在存储器控制器处可用。
在一个示例中,在时间Tc,错误信号408“1”指示ECC错误检测逻辑在读取数据E中检测到错误,在时间Td,ECC错误纠正逻辑将纠正的读取数据E返回到主机处理器。在重试流程从RDB重读读取数据E的情况下,在时间Tc检测到错误和在时间Td返回纠正的数据之间经过的时间可能需要几十个时钟周期。传统上,在检测到错误和返回纠正的数据之间的时间可能需要数千个时钟周期。在重试流程中从RDB读取数据将ECC纠正时间从数千个时钟周期减少到几十个时钟周期。
在一个实施方式的示例中,读取数据在早期读取有效信号402之后六(6)个时钟周期后可用。例如,在图4C中,由信号404D0和D1表示的读取数据D在早期读取有效信号402“1”之后六(6)个时钟周期后可用。
在另一个示例实施方式中,读取数据可以在早期读取有效信号402之后16个时钟周期后可用。
每个读取数据占据两个时钟周期。例如,在图4C中,D0和D1是读取数据D的两个部分,并且每个部分需要一个时钟周期。因此,需要两(2)个时钟周期来累积数据并将其传递到ECC错误检测逻辑218或ECC错误纠正逻辑220。
ECC错误纠正程序可以是一个复杂的算法。更复杂的ECC错误纠正程序将需要更多的时钟周期来完成。在一个示例实施方式中,ECC错误纠正程序需要三(3)个时钟周期来完成全部的纠正。一旦ECC错误纠正程序成功地纠正了读取数据中的(一个或多个)错误,纠正的读取数据就被返回给处理器。当存储器控制器必须以特定的顺序向处理器交付数据时,重排序逻辑228接收读取数据,将读取数据以正确的顺序排列,并将数据返回给主处理器(例如,图2中的处理器212)。
在一个示例实施方式中,系统在完成ECC错误纠正之后至少一个时钟周期后恢复新事务。
在一个示例实施方式中,ECC错误纠正程序阻断12个时钟周期的流量和常规事务。在另一个示例实施方式中,ECC错误纠正程序阻断22个时钟周期的流量和常规事务。
图5是使用存储在读取数据缓冲器(RDB)中的读取数据进行ECC错误纠正的重试流程500的流程图。在框502中,存储器接收读取数据命令并将读取数据发送到主机。在框504中,读取数据缓冲器(RDB)从存储器接收读取数据并存储读取数据。在框506中,错误检查和纠正(ECC)从RDB接收数据,并对读取数据执行ECC错误检测。在框508中,ECC错误检测逻辑在读取数据中发现错误,向命令逻辑发送错误指示,并且命令逻辑响应于错误指示而发送重试命令。在框510中,ECC错误纠正逻辑响应于来自命令逻辑的重试命令,从RDB接收读取数据。在框512中,ECC错误纠正逻辑对从RDB接收的读取数据进行ECC错误纠正。接下来,在框514中,ECC错误纠正逻辑决定ECC错误纠正是否成功地纠正了读取数据中的错误。如果ECC错误纠正逻辑未能纠正错误,则在框518中,ECC错误纠正逻辑向ECC错误管理器逻辑发送信号以指示读取数据中的错误是不可纠正的,并启动用于处理(一个或多个)不可纠正的错误的过程。然而,如果ECC错误纠正逻辑成功地纠正了读取数据中的错误,则ECC错误纠正逻辑将返回读取数据,如框516中所述。在框516中,系统(例如,处理器、存储器控制器、主机或它们的组合)决定是否需要重新排序。当数据的顺序对处理器至关重要时,重新排序是必要的。如果重新排序是必要的,则返回的读取数据被交付到重排序逻辑;否则,读取数据被发送到处理器。
图6是可以实现使用读取数据缓冲器进行ECC错误纠正的重试流程的计算系统的一个示例的框图。系统600表示根据本文的任何示例的计算设备,并且可以是膝上型计算机、台式计算机、平板计算机、服务器、游戏或娱乐控制系统、嵌入式计算设备或其他电子设备。
在一个示例中,存储器控制器622包括ECC 624,以用于对存储器630的数据执行错误检查和纠正。在一个示例中,ECC 624可以检测读取数据中的错误并执行重试流程。响应于检测到读取数据中的错误,重试流程从读取数据缓冲器检索读取数据以用于ECC错误纠正。
系统600包括处理器610,该处理器610可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核或其他处理硬件、或者组合,以为系统600提供指令的处理或执行。处理器610可以是一个主机处理器设备。处理器610控制系统600的整体操作,并且可以是或可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑设备(PLD)、或此类设备的组合。
系统600包括启动/配置616,其代表用于存储启动代码(例如,基本输入/输出系统(BIOS))、配置设定、安全硬件(例如,可信平台模块(TPM))或在主机OS(操作系统)之外操作的其他系统级硬件的存储器。启动/配置616可以包括非易失性存储设备,例如只读存储器(ROM)、闪存或其他存储器设备。
在一个示例中,系统600包括耦合到处理器610的接口612,该接口612可以代表高速接口或高吞吐量接口,其用于需要较高带宽连接的系统组件,例如存储器子系统620或图形接口组件640。接口612代表接口电路,它可以是一个独立的组件,也可以集成到处理器管芯上。接口612可以作为电路集成到处理器管芯上,或者作为组件集成到片上系统上。如果存在,则图形接口640与图形组件连接,以用于向系统600的用户提供视觉显示。图形接口640可以是独立的组件,也可以集成到处理器管芯或芯片上系统上。在一个示例中,图形接口640可以驱动向用户提供输出的高清(HD)显示器或超高清(UHD)显示器。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口640基于存储在存储器630中的数据或基于由处理器610执行的操作或基于两者产生显示。
存储器子系统620代表系统600的主存储器,并为将由处理器610执行的代码或将用于执行例程的数据值提供存储。存储器子系统620可以包括一个种或多种的随机存取存储器(RAM)(例如,DRAM、3DXP(三维交叉点))、或其他存储器设备、或此类设备的组合。存储器630存储和托管例如操作系统(OS)632,以在系统600中提供执行指令的软件平台。此外,应用634可以在来自存储器630的操作系统632的软件平台上执行。应用634代表具有其自己的操作逻辑以执行一个或多个功能的程序。过程636代表向操作系统632或一个或多个应用634或其组合提供辅助功能的代理或例程。操作系统632、应用634和过程636提供软件逻辑以为系统600提供功能。在一个示例中,存储器子系统620包括存储器控制器622,该存储器控制器622是用于产生和向存储器630发出命令的存储器控制器。可以理解的是,存储器控制器622可以是处理器610的一个实体部分或接口612的一个实体部分。例如,存储器控制器622可以是集成到具有处理器610的电路上(例如,集成到处理器管芯或集成到片上系统)的集成存储器控制器。
虽然没有明确示出,但可以理解,系统600可以包括设备之间的一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线或其他。总线或其他信号线可以将组件通信耦合或电耦合在一起,或者将组件既通信耦合又电耦合。总线可以包括:实体通信线路、点对点连接、桥接器、适配器、控制器、或其他电路或其组合。例如,总线可以包括以下项中的一者或多者:系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)、或其他总线、或其组合。
在一个示例中,系统600包括接口614,该接口614可以耦合到接口612。接口614可以是比接口612速度低的接口。在一个示例中,接口614代表接口电路,其可以包括独立的组件和集成电路。在一个示例中,多个用户接口组件、外围组件、或两者都耦合到接口614。网络接口650向系统600提供以下能力:通过一个或多个网络与远程设备(例如,服务器或其他计算设备)进行通信。网络接口650可以包括:以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或其他基于有线或无线标准的或专有的接口。网络接口650可以与远程设备交换数据,这可以包括发送存储在存储器中的数据或接收将存储在存储器中的数据。
在一个示例中,系统600包括一个或多个输入/输出(I/O)接口660。I/O接口660可以包括用户通过其与系统600交互的一个或多个接口组件(例如,音频、字母数字、触觉/触摸或其他接口)。外围接口670可以包括上面没有具体提到的任何硬件接口。外围一般指依赖性地连接到系统600的设备。依赖性连接是这样的连接:其中系统600提供软件平台或硬件平台或两者,操作在这些平台上执行并且用户使用这些平台进行交互。
在一个示例中,系统600包括存储设备子系统680,用于以非易失性方式存储数据。在一个示例中,在某些系统实施方式中,存储设备680的至少某些组件可以与存储器子系统620的组件重叠。存储设备子系统680包括(一个或多个)存储设备684,其可以是或可以包括任何用于以非易失性方式存储大量数据的常规介质,例如一个或多个磁性的、固态的NAND、3DXP或基于光学的磁盘、或其组合。存储设备684以持久的状态保存代码或指令和数据686(即,尽管系统600的电源被中断,但该值仍被保留)。存储设备684可以被笼统地认为是“存储器”,但存储器630通常是用于向处理器610提供指令的执行或操作存储器。然而,存储设备684是非易失性的,存储器630可以包括易失性存储器(即,如果系统600的电力被中断,则数据的值或状态是不确定的)。在一个示例中,存储设备子系统680包括控制器682,用于与存储器684接口。在一个示例中,控制器682是接口614或处理器610的实体部分,或者可以包括在处理器610和接口614两者中的电路或逻辑。
电源602向系统600的组件提供电力。更具体地,电源602通常与系统600中的一个或多个供电设备604接口以向系统600的组件提供电力。在一个示例中,供电设备604包括交流到直流(交流电到直流电)适配器,以插入墙上的插座。这种交流电可以是可再生能源(例如,太阳能)电源602。在一个示例中,电源602包括直流电源,例如外部交流到直流转换器。在一个示例中,电源602或供电设备604包括无线充电硬件,以经由接近充电场来充电。在一个示例中,电源602可以包括内部电池或燃料电池源。
在示例1中,一种存储器控制器,包括:错误检测逻辑,位于第一数据路径上,用于响应于读取命令被发送到存储器,从读取数据缓冲器(RDB)电路接收读取数据,并且对所述读取数据执行错误检查和纠正(ECC)错误检测;以及错误纠正逻辑,位于第二数据路径上,用于响应于所述错误检测逻辑在所述读取数据中检测到ECC错误,执行ECC错误纠正,所述错误纠正逻辑用于响应于重试命令被发送到所述RDB电路,从所述RDB电路接收所述读取数据。
在示例2中,根据示例1的存储器控制器,还包括:命令逻辑,所述命令逻辑用于响应于接收到错误信号,将所述重试命令发送到所述RDB电路。
在示例3中,根据任一前述示例的存储器控制器,还包括:错误管理器逻辑,所述错误管理器逻辑用于在所述错误检测逻辑检测到所述ECC错误时,将所述错误信号发送到所述命令逻辑。
在示例4中,根据任一前述示例的存储器控制器,其中,所述RDB电路将接收与在执行所述重试命令之前发出的早期读取有效信号对应的所有读取数据。
在示例5中,根据任一前述示例的存储器控制器,所述存储器控制器用于停止执行在执行所述重试命令之后发出的读取命令达几十个时钟周期。
在示例6中,根据任一前述示例的存储器控制器,所述存储器控制器用于响应于所述重试命令,对于新事务停止从所述RDB电路进行读取。
在示例7中,根据任一前述示例的存储器控制器,还包括:重排序逻辑,所述重排序逻辑用于按照产生相应读取命令的顺序来返回所述读取数据。
在示例8中,根据前述示例中任一项的存储器控制器,其中,所述错误纠正逻辑包括单设备数据纠正(SDDC)。
在示例9中,根据任一前述示例的存储器控制器,其中,所述错误纠正逻辑用于执行长于2个周期的错误纠正过程。
在示例10中,根据任一前述示例的存储器控制器,其中,所述RDB电路是便笺式存储器。
在示例11中,一种计算机系统,包括:处理器;以及存储器控制器,包括:错误检测逻辑,位于第一数据路径上,用于响应于读取命令被发送到存储器,从读取数据缓冲器(RDB)电路接收读取数据,并且对所述读取数据执行错误检查和纠正(ECC)错误检测;以及错误纠正逻辑,位于第二数据路径上,用于响应于所述错误检测逻辑在所述读取数据中检测到ECC错误,执行ECC错误纠正,所述错误纠正逻辑用于响应于重试命令被发送到所述RDB电路,从所述RDB电路接收所述读取数据。
在示例12中,根据示例11的计算机系统,其中,所述存储器控制器还包括:命令逻辑,所述命令逻辑用于响应于接收到错误信号,将所述重试命令发送到所述RDB电路。
在示例13中,根据任一前述示例的计算机系统,其中,所述存储器控制器还包括:错误管理器逻辑,所述错误管理器逻辑用于在所述错误检测逻辑检测到所述ECC错误时,将所述错误信号发送到所述命令逻辑。
在示例14中,根据任一前述示例的计算机系统,其中,所述存储器控制器用于停止执行在执行所述重试命令之后发出的读取命令达几十个时钟周期。
在示例15中,根据任一前述示例的计算机系统,其中,所述存储器控制器用于响应于所述重试命令,针对新事务停止从所述RDB电路进行读取。
在示例16中,根据任一前述示例的计算机系统,所述错误纠正逻辑包括单设备数据纠正(SDDC)。
在示例17中,根据任一前述示例的计算机系统,其特征在于以下项中的一个或多个:所述处理器包括多核主机处理器;所述计算机系统包括通信地耦合到所述处理器的显示器;所述计算机系统包括通信地耦合到所述处理器的网络接口;以及所述计算机系统包括为所述计算机系统供电的电池。
在示例18中,一种方法包括:向存储器发送读取数据命令;从存储器接收读取数据;将读取数据存储在读取数据缓冲器(RDB)电路中;对读取数据执行错误检查和纠正(ECC)错误检测;以及响应于在读取数据中检测到ECC错误:向读取数据缓冲器电路发送重试命令;响应于重试命令:从读取数据缓冲器(RDB)电路接收读取数据;以及对从读取数据缓冲器电路接收的读取数据执行ECC错误纠正。
在示例19中,根据示例18的方法,其中,响应于接收到错误信号而发送重试命令。
在示例20中,根据前述任一示例的方法,其中,执行ECC错误纠正包括执行单设备数据纠正(SDDC)。
本文示出的流程图提供了各种过程动作的顺序的示例。流程图可以指示由软件或固件例程执行的操作以及实体操作。流程图可以示出有限状态机(FSM)的状态的实施方式的示例,其可以在硬件和/或软件中实现。虽然以特定的次序或顺序示出,但除非另有规定,否则动作的顺序可以修改。因此,示出的图应仅被理解为示例,并且过程可以以不同的顺序执行,一些动作可以并行执行。此外,可以省略一个或多个动作;因此,并非所有实施方式都将执行所有动作。
关于本文描述的各种操作或功能,它们可以被描述或定义为软件代码、指令、配置和/或数据。该内容可以是直接可执行的(“对象”或“可执行”形式)、源代码或差异代码(“增量”或“补丁”代码)。本文所述的软件内容可以经由存储有内容的制造品提供,或经由操作通信接口以经由通信接口发送数据的方法提供。机器可读存储介质可以使机器执行所描述的功能或操作,并包括以机器(例如,计算设备、电子系统等)可访问的形式存储信息的任何机制,例如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪存设备等)。通信接口包括与硬线介质、无线介质、光学介质等任何一种介质对接以便与另一设备进行通信的任何机制,如存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等。可以通过提供配置参数和/或发送信号来配置通信接口,使其准备好提供描述软件内容的数据信号。可以经由发送至通信接口的一个或多个命令或信号来访问通信接口。
本文描述的各种组件可以是执行所述操作或功能的装置。本文描述的每个组件包括:软件、硬件或这些的组合。这些组件可以作为软件模块、硬件模块、专用硬件(例如,特定应用硬件、特定应用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬接线电路等实现。
除了本文描述的内容外,可以对所公开的内容和本发明的实施方式进行各种修改而不偏离其范围。因此,本文的说明和示例应以说明性而非限制性的意义来解释。本发明的范围应仅参照所附权利要求来衡量。

Claims (19)

1.一种存储器控制器,包括:
错误检测逻辑,位于第一数据路径上,用于响应于读取命令被发送到存储器,从读取数据缓冲器(RDB)电路接收读取数据,并且对所述读取数据执行错误检查和纠正(ECC)错误检测;以及
错误纠正逻辑,位于第二数据路径上,用于响应于所述错误检测逻辑在所述读取数据中检测到ECC错误,执行ECC错误纠正,所述错误纠正逻辑用于响应于重试命令被发送到所述RDB电路,从所述RDB电路接收所述读取数据。
2.根据权利要求1所述的存储器控制器,还包括:命令逻辑,所述命令逻辑用于响应于接收到错误信号,将所述重试命令发送到所述RDB电路。
3.根据权利要求2所述的存储器控制器,还包括:错误管理器逻辑,所述错误管理器逻辑用于在所述错误检测逻辑检测到所述ECC错误时,将所述错误信号发送到所述命令逻辑。
4.根据权利要求2或3所述的存储器控制器,其中,所述RDB电路将接收与在执行所述重试命令之前发出的早期读取有效信号对应的所有读取数据。
5.根据权利要求2-4中任一项所述的存储器控制器,其中,所述存储器控制器用于停止执行在执行所述重试命令之后发出的读取命令达几十个时钟周期。
6.根据权利要求2-5中任一项所述的存储器控制器,其中,所述存储器控制器用于响应于所述重试命令,对于新事务停止从所述RDB电路进行读取。
7.根据权利要求1-6中任一项所述的存储器控制器,还包括:重排序逻辑,所述重排序逻辑用于按照产生相应读取命令的顺序来返回所述读取数据。
8.根据权利要求1-7中任一项所述的存储器控制器,其中,所述错误纠正逻辑包括单设备数据纠正(SDDC)。
9.根据权利要求1-8中任一项所述的存储器控制器,其中,所述错误纠正逻辑用于执行长于2个周期的错误纠正过程。
10.根据权利要求1-9中任一项所述的存储器控制器,其中,所述RDB电路是便笺式存储器。
11.一种计算机系统,包括:
处理器;以及
存储器控制器,包括:
错误检测逻辑,位于第一数据路径上,用于响应于读取命令被发送到存储器,从读取数据缓冲器(RDB)电路接收读取数据,并且对所述读取数据执行错误检查和纠正(ECC)错误检测;以及
错误纠正逻辑,位于第二数据路径上,用于响应于所述错误检测逻辑在所述读取数据中检测到ECC错误,执行ECC错误纠正,所述错误纠正逻辑用于响应于重试命令被发送到所述RDB电路,从所述RDB电路接收所述读取数据。
12.根据权利要求11所述的计算机系统,其中,所述存储器控制器还包括:命令逻辑,所述命令逻辑用于响应于接收到错误信号,将所述重试命令发送到所述RDB电路。
13.根据权利要求12所述的计算机系统,其中,所述存储器控制器还包括:错误管理器逻辑,所述错误管理器逻辑用于在所述错误检测逻辑检测到所述ECC错误时,将所述错误信号发送到所述命令逻辑。
14.根据权利要求12或13所述的计算机系统,其中,所述存储器控制器用于停止执行在执行所述重试命令之后发出的读取命令达几十个时钟周期。
15.根据权利要求12-14中的任一项所述的计算机系统,其中,所述存储器控制器用于响应于所述重试命令,针对新事务停止从所述RDB电路进行读取。
16.根据权利要求12-15中任一项所述的计算机系统,其中,所述错误纠正逻辑包括单设备数据纠正(SDDC)。
17.根据权利要求12-16中任一项所述的计算机系统,其中,所述错误纠正逻辑用于执行长于2个周期的错误纠正过程。
18.根据权利要求12-17中任一项所述的计算机系统,其中,所述RDB电路是便笺式存储器。
19.根据权利要求11-16中任一项所述的计算机系统,其特征在于以下项中的一个或多个:
所述处理器包括多核主机处理器;
所述计算机系统包括通信地耦合到所述处理器的显示器;
所述计算机系统包括通信地耦合到所述处理器的网络接口;以及
所述计算机系统包括为所述计算机系统供电的电池。
CN202211336669.9A 2021-12-14 2022-10-28 快速存储器ecc错误纠正 Pending CN116264100A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/550,859 US20220107866A1 (en) 2021-12-14 2021-12-14 Fast memory ecc error correction
US17/550,859 2021-12-14

Publications (1)

Publication Number Publication Date
CN116264100A true CN116264100A (zh) 2023-06-16

Family

ID=80932292

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211336669.9A Pending CN116264100A (zh) 2021-12-14 2022-10-28 快速存储器ecc错误纠正

Country Status (4)

Country Link
US (1) US20220107866A1 (zh)
CN (1) CN116264100A (zh)
DE (1) DE102022127895A1 (zh)
NL (1) NL2033511B1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116932424A (zh) * 2023-09-14 2023-10-24 上海芯联芯智能科技有限公司 一种基于ecc检测的缓存访问方法、装置、介质和设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719389B2 (en) * 2017-12-01 2020-07-21 Burlywood, Inc. Enhanced data storage with concatenated inner and outer error correction codes
KR20210010718A (ko) * 2019-07-17 2021-01-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템에서의 에러정정방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116932424A (zh) * 2023-09-14 2023-10-24 上海芯联芯智能科技有限公司 一种基于ecc检测的缓存访问方法、装置、介质和设备
CN116932424B (zh) * 2023-09-14 2023-12-15 上海芯联芯智能科技有限公司 一种基于ecc检测的缓存访问方法、装置、介质和设备

Also Published As

Publication number Publication date
US20220107866A1 (en) 2022-04-07
DE102022127895A1 (de) 2023-06-15
NL2033511A (en) 2023-06-27
NL2033511B1 (en) 2023-11-16

Similar Documents

Publication Publication Date Title
US10789117B2 (en) Data error detection in computing systems
EP1449082B1 (en) Error correcting memory and method of operating same
JP7155103B2 (ja) Ddrメモリエラーリカバリ
US10372570B2 (en) Storage device, test system for testing the same, and method thereof
TWI553650B (zh) 以記憶體控制器來處理資料錯誤事件之方法、設備及系統
US9632863B2 (en) Track error-correcting code extension
US20090265509A1 (en) Memory system and method having volatile and non-volatile memory devices at same hierarchical level
TWI635503B (zh) 半導體記憶體裝置及操作該半導體記憶體裝置的方法
US20150309868A1 (en) Method and apparatus to perform concurrent read and write memory operations
US11334423B2 (en) Memory devices for performing repair operation, memory systems including the same, and operating methods thereof
US10990291B2 (en) Software assist memory module hardware architecture
US11531585B2 (en) Memory module and operating method
US20170371785A1 (en) Techniques for Write Commands to a Storage Device
CN116264100A (zh) 快速存储器ecc错误纠正
WO2021088368A1 (zh) 一种存储器的修复方法及装置
US6799293B2 (en) Sparse byte enable indicator for high speed memory access arbitration method and apparatus
US11281277B2 (en) Power management for partial cache line information storage between memories
US20230214297A1 (en) Storage device including mapping memory and method of operating the same
EP4155894A1 (en) Technologies for memory mirroring across an interconnect
EP4310846A1 (en) Storage controllers, operating methods of storage controllers, and operating methods of storage devices including storage controllers
US20220108764A1 (en) Address generation for adaptive double device data correction sparing
US20220326860A1 (en) Method and apparatus to perform bank sparing for adaptive double device data correction
US20230282300A1 (en) Semiconductor device and semiconductor system
WO2023027787A1 (en) Access request management using sub-commands
KR20230123801A (ko) Dwa 인코더 및 dwa 디코더를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication