CN101110047B - 存储器重放机制 - Google Patents
存储器重放机制 Download PDFInfo
- Publication number
- CN101110047B CN101110047B CN2007100923079A CN200710092307A CN101110047B CN 101110047 B CN101110047 B CN 101110047B CN 2007100923079 A CN2007100923079 A CN 2007100923079A CN 200710092307 A CN200710092307 A CN 200710092307A CN 101110047 B CN101110047 B CN 101110047B
- Authority
- CN
- China
- Prior art keywords
- memory
- transaction
- point
- mistake
- redundant
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
Abstract
本发明的实施例主要涉及用于存储器重放机制的系统、方法和设备。在一些实施例中,重放逻辑包括重置逻辑,其重置点对点存储器互连中的至少一些链路。此外,重放逻辑可以包括用于存储事务数据的重放队列以及在事务数据指示已定义事务响应错误时启动重置的重放控制器。也描述和主张了其他的实施例。
Description
技术领域
本发明的实施例一般涉及集成电路领域,尤其是用于存储器重放机制的系统,方法和设备。
背景技术
存储器系统通常包括对稳定性、可用性和可服务性(RAS)的特定水平的支持。RAS支持可包括对检测和/或校正某些存储器内容错误的支持。此外,RAS支持可包括对检测和/或校正在接收方产生错误位的信令错误的支持。
典型地,错误检测和/或校正机制包括增加冗余信息到数据中以保护数据免受特定故障的影响。错误检测机制的一个例子是循环冗余码(CRC)。错误校正机制的一个例子是纠错码(ECC)。
随着处理器速度增加,增加由存储器总线所支持的数据速率成为了相应的压力。通常,常规存储器总线基于多点(通常称为多分支(multi drop))结构。这种常规多点存储器总线结构由于存储器速度和尺寸需要显著增加,而越来越不能满足需要。
点对点存储器互连常常支持高于常规存储器总线的数据速率。点对点存储器互连可以采用具有缓冲器的存储模块,将存储器互连和该模块上的存储器件隔离。点对点存储器架构的例子包括基于全缓冲双列直插式存储器模块(DIMM)技术的架构。全缓冲DIMM技术指这样一种存储器架构,其至少部分地基于由固态技术组织(Solid State Technology Organization,JEDEC)所颁布的全缓冲DIMM规定。由诸如全缓冲DIMM的点对点存储器架构所支持的更高的数据速率,对提供适当水平的RAS提出了新的挑战。
发明内容
根据本发明的一方面,提供了一种集成电路,其包括:重置逻辑,用于重置点对点存储器互连中的至少一些链路;重放队列,用于存储与存储器事务有关的事务数据;以及与重置逻辑和重放队列耦合的重放控制器逻辑,如果事务数据指示了已定义事务响应错误,则重放控制器逻辑启动重置。
根据本发明的另一方面,提供了一种方法,其包括:从点对点存储器互连接收事务数据,其中事务数据与事务相关联;检测与事务相关的事务响应错误;以及至少部分地启动快速重置响应,以检测与该事务相关的事务响应错误。
此外,本发明还提供了一种系统,其包括:与点对点存储器互连耦合的存储器模块;以及通过点对点存储器互连与存储器模块耦合的存储器控制器。所述存储器控制器包括,用于重置点对点存储器互连的至少一部分的重置逻辑;用于存储与存储器事务有关的事务数据的重放队列;以及与重置逻辑和重放队列耦合的重放控制器逻辑,如果事务数据指示已定义事务响应错误,则重放控制器逻辑启动重置。
附图说明
通过附图以示例性的方式而非限制性方式说明本发明的实施例,附图中相似的附图标记表示相似的元件。
图1是说明了根据本发明实施例实现的计算系统的选定方面的高级框图。
图2是说明了根据本发明实施例具有多个分支的存储器系统的选定方面的高级框图。
图3是说明根据本发明实施例的重放逻辑的选定方面的框图。
图4是说明根据本发明实施例的非冗余存储器读取方法的选定方面的流程图。
图5是说明根据本发明实施例的非冗余存储器写入方法的选定方面的流程图。
图6是说明根据本发明实施例的配置读取方法的选定方面的流程图。
图7是说明根据本发明实施例的冗余存储器读取的选定方面的流程图。
图8是说明根据本发明实施例的存储器分支的退化和冗余存储器读取的选定方面的流程图。
图9是说明根据本发明实施例的冗余存储器写入的选定方面的流程图。
图10是说明根据本发明实施例的在重放期间进行擦除的非冗余存储器读取方法的选定方面的流程图。
图11是说明根据本发明实施例的在重放期间进行擦除的冗余存储器读取的选定方面的流程图。
图12的流程图说明了根据本发明实施例的在重放期间进行擦除的存储器分支退化和冗余存储器读取的选定方面。
图13是说明根据本发明实施例的电子系统的选定方面的框图。
图14是说明根据本发明的可选实施例的电子系统的选定方面的框图。
具体实施方式
本发明的实施例一般涉及用于存储器重放机制的系统、方法和设备。在一些实施例中,重放逻辑分析飞行中(in-flight)事务的事务响应数据以便确定其是否包含已定义的事务响应错误。如果其包含,那么重放机制对存储器互连的链路执行基于硬件的重置。然后,重放逻辑可以重放事务。正如下面将进一步描述的那样,重放逻辑可以支持广泛的存储器数据事务,包括:存储器读/写、配置读/写、重新挂银(re-silver)事务、存储器擦除、备份事务等等。
图1是说明根据本发明实施例实现的计算系统的选定方面的高级框图。计算系统100包括请求者102、主机110、以及一个或者多个存储器模块104。请求者102可以是处理器(例如,中央处理单元和/或核)、服务处理器、输入/输出装置(例如,外设部件互连(PCI)Express装置)、存储器本身、或者请求访问存储器的系统100的任何其他元件。
(多个)存储器模块104可以具有多种结构和引脚配置中的任何一种。例如,存储器模块104可以构造成双列直插式存储器模块(DIMM),小外形DIMM(SO-DIMM)、微型DIMM等等。(多个)存储器模块104可以采用电接触连接器与互连130耦接,所述电接触连接器可具有几乎任何引脚配置,包括240引脚、144引脚、72引脚等。
(多个)存储器模块104包括存储器件122。为了更好地说明,示出了四个存储器件。可以理解,本发明的实施例可以包括更多的存储器件或者更少的存储器件。存储器件122可以是多种存储器件中任何一种,包括,例如,动态随机存取存储器件(DRAM)。
在一些实施例中,每个存储器模块104包括缓冲器120。缓冲器120将存储器件122与互连130隔开。在一些实施例中,系统100至少部分基于全缓冲DIMM技术。在这样的实施例中,缓冲器120可以是高级存储器缓冲器(AMB)。在一些实施例中,如果缓冲器120在其从主机110接收到的存储器事务中检测到特定错误,那么缓冲器120发送警告(或者警告流)给主机110。例如,如果缓冲器120检测到写数据中的信令错误(例如,CRC错误)、读命令中的错误等等,那么缓冲器120可发送警告。类似地,如果,例如,缓冲器120成功地接收了存储器写入,那么缓冲器120可以提供确认响应(或者简单地,确认)。
互连130是点对点互连。点对点互连广泛地指由一个或者多个点对点链路(例如,1301和1302)组成的互连。互连130可以是微分的或者单端的。在所示的实施例中,互连130包括一个或者多个北向位通道(north boundbit-lane)134和一个或者多个南向位通道132。在一些实施例中,互连130至少部分基于全缓冲DIMM技术。
主机110提供请求者102和主系统存储器(例如,由存储器模块104提供)之间的接口。在一些实施例中,主机110是存储器控制器。该存储器控制器可以与处理器集成,或者它可以实现在单独的集成电路(例如,存储器控制器中心(memory controller hub))上。主机110包括重放逻辑112。如果检测到特定的事务响应错误,那么重放逻辑112提供重放多种存储器事务的机制。术语“事务响应错误”表示响应于存储器事务(例如,读事务、写事务、存储器配置等等)所检测到的错误。在一些实施例中,重放逻辑112包括快速重置逻辑,用于在检测到特定的事务响应错误时自动重新训练(retrain)互连130的链路。参照图3-8在下面进一步讨论重放逻辑112。
在一些实施例中,互连130包括两个或者更多个分支。分支表示以锁步(lock-step)方式运行的信道的集合。分支可以是单个信道。额外的分支可以用于支持其中具有两个(或者更多个)基本上相同的存储器镜像(image ofmemory)的冗余(或者镜像)存储器。图2是说明根据本发明实施例的具有多个分支的存储器系统的选定方面的高级框图。
计算系统200包括请求者102、主机110、和点对点互连230。点对点互连230包括分支240和242(每个具有一个或者多个存储器模块104)。在一些实施例中,计算系统200提供冗余存储器系统,其中分支240和242包括基本上相同的存储器镜像。也就是说,分支240可以包括实质上和分支242相同的数据。在一些实施例中,请求者102可以从任一镜像读取数据。在一些实施例中,来自请求者102的数据写入可以写入到分支240和242两者中。
图3是说明根据本发明实施例的重放逻辑的选定方面的框图。在一些实施例中,如果检测到特定的事务响应错误,则重放逻辑310提供重放存储器事务的机制。例如,重放逻辑310可以从存储器(例如图1所示的存储器106)接收事务响应数据,并且确定该事务响应数据是否包含事务响应错误。正如下面进一步描述的那样,如果重放逻辑310检测到响应错误,则它可以启动产生所述响应错误的存储器事务的重放。
重放逻辑310包括快速重置序列发生器320、重放控制器330、重放队列340和数据路径350。在可选实施例中,较之图3中所示的那些元件,重放逻辑310可以包括更多的元件、更少的元件、和/或不同的元件。互连360将重放逻辑310耦接到一个或者多个存储器模块(例如,存储器模块104,如图1中所示)。在一些实施例中,互连360至少部分地基于全缓冲DIMM技术。
数据路径350从互连360接收事务响应数据。事务响应数据可以包括,例如,读数据、确认、和/或警告。警告指的是来自缓冲器(例如如图1所示的缓冲器120)的警告,其指示主机和存储器之间通信中的命令错误和/或数据错误。在一些实施例中,数据路径350与错误检测/校正逻辑370交互,以确定事务响应数据是否包含错误(例如,信令错误和/或存储内容错误)。错误检测/校正逻辑370确定事务响应数据是否包含事务响应错误。错误检测/校正逻辑370可以是适于检测信令错误和/或存储内容错误的任何错误检测/校正逻辑。例如,错误检测/校正逻辑370可以是ECC和/或CRC。
重放队列340跟踪飞行中的存储器事务。“飞行中的”存储器事务指的是已经存储器子系统上发出但是还没有退出的事务。对每个事务,数据路径350将事务数据342转送给重放队列340。事务数据342可以包括,例如,事务标识符(ID)、寻址信息、启动程序(ID)等。在一些实施例中,事务数据342也包括指示事务响应数据是否包含事务响应错误的指示符。例如,在所示的实施例中,事务数据342包括状态位344。状态位344指示是否在事务响应数据中检测到特定事务响应错误。在一些实施例中,存在三个状态位344,并且这些状态位中每一个指示是否以下响应错误之一被检测到:警告、CRC错误和无法校正的ECC错误。在可选择的实施例中,存在不同数量的状态位,和/或状态位可以表示更多、更少、和/或不同的事务响应错误。
重放控制器330控制重放逻辑310的选定方面。在一些实施例中,重放控制器330分析存储在重放队列340中的事务数据(例如,342)并且基于例如以下因素确定适当的重放过程:(1)所检测到的事务响应错误,(2)存储器系统是否是冗余的,(3)事务的类型(例如,存储器读/写、配置读/写,等等)。由重放控制器330控制的重放过程将参照图4-9在下面进一步讨论。
在一些实施例中,几乎任何类型的信息传送都可以被重放。术语“信息传送”是指包含数据的传送。数据可以是存储器数据(例如,用于存储器读取或者存储器写入),或者所述数据可以是配置数据(例如,用于配置存储器模块、其缓冲器、和/或DRAM的各个方面)。存储器数据事务可来自于各种外部和/或内部请求者。外部请求者可以包括处理器、I/O设备、系统管理总线等等。内部请求者可以包括主机(例如,存储器控制器)本身。例如,主机可以产生诸如重新挂银事务、擦除事务、备份事务等等的存储器数据事务。“重新挂银事务”是指其中数据被重新复制到冗余分支的事务(例如,在数据已经在冗余分支中被丢失了以后)。“备份事务”是指根据需要,复制数据到冗余列(rank)以生成备份。列是提供数据的存储器件的集合。擦除事务是指擦除存储在存储器子系统中的数据,例如,以修复存储器中可校正的错误。
重放控制器330也控制快速重置序列发生器320。快速重置序列发生器320是基于硬件的链路/信道重新训练机制。术语“链路/信道重新训练”是指重新排列存储器互连(例如,图1所示的互连130)的链路上的所有的(或者一些)位通道。在一些实施例中,快速重置序列发生器320执行基于硬件的链路/信道重新训练算法,该算法与通常从内建操作系统(BIOS)中推倒的、相对复杂的(并且基于软件)初始训练序列相比,更加简单(并且,因此,更加快速)。运行时,如果在事务数据342中检测到特定的事务响应错误,则重放控制器330可以自动命令快速重置序列发生器320启动快速重置。例如,在一些实施例中,如果状态位344指示任何以下错误:警告、CRC错误或者无法校正的ECC错误,则重放控制器330命令快速重置序列发生器320启动快速重置。
一般地,重放逻辑310的操作包括从点对点互连360接收事务响应数据,以及确定数据是否包含特定的事务响应错误。如果其包含,则重放控制器330启动快速重置并且随后进行该事务(例如,重放事务)的重放。重放事务的细节可以根据被重放事务(例如,存储器读/写、配置读/写,等等)的类型以及存储器系统是否是冗余的而不同。重放逻辑310的运行将参照图4-9在下面进一步讨论。
图4是说明根据本发明实施例的非冗余存储器读取方法的选定方面的流程图。术语“非冗余存储器读取”是指在非冗余存储器系统中进行的存储器读取。外部请求者或者内部请求者(例如,在备份或者重新挂银事务期间)可以产生如402所示的非冗余存储器读取。
重放逻辑(例如,重放逻辑310,如图3中所示)确定事务响应数据是否包含由进程框404、410和412所示的某些已定义的错误。在一些实施例中,已定义的错误包括警告、CRC错误和无法校正的ECC错误。如果重放逻辑没有检测到已定义的错误,则所述事务不进行重放(410)就可以完成。例如,如果所述数据不包含错误(410),则将其转发给请求者428。类似地,如果数据包括ECC可校正错误(404),则错误检测/校正逻辑校正该错误并且数据被转发给请求者406。
然而,参照进程框412,重放逻辑在响应数据中检测已定义错误之一。在一些实施例中,如果响应数据包含已定义错误之一,则重放逻辑自动执行快速重置(414)。如果快速重置不成功(416),则数据中毒了并且请求者得到通知408。
可选择地,如果快速重置是成功的,则重放控制器重放产生错误的事务(418)。对重放事务响应数据(重放响应数据)进行分析以确定其是否包含由420、422和426所示的已定义错误之一。如果该数据不包含已定义错误(422和426)之一,则它被转发给请求者(428),或者在ECC可校正错误的情况下,错误被校正且然后该数据被转发给请求者(424)。如果重放响应数据确实包括已定义错误之一,则其中毒并且请求者得到通知(408)。
图5是说明根据本发明实施例的非冗余存储器(或者配置)写入方法的选定方面的流程图。术语“非冗余存储器写入”是指在非冗余存储器系统中进行的存储器写入。参照进程框502,主机(例如,主机110)执行存储器写入。重放逻辑分析事务响应数据,以确定它是否包含已定义错误(504和508)。如果它不包含已定义错误(504),则事务完成(506)。
参考进程框508,响应数据包含已定义错误中的一种。在一些实施例中,已定义错误包括警告和/或确认错误。如果响应数据包括一种已定义错误(510)则重放逻辑执行快速重置,并且确定快速重置是否成功。如果快速重置不成功(512),则丢弃事务(514)。
或者,如果快速重置成功,则存储器写入被重放(516)。对重放响应数据进行分析以确定它是否包含已定义错误(518和520)。如果该重放响应不包含一种已定义错误(例如,如果它指示成功确认),则事务完成(506)。然而,如果该重放响应确实包含一种已定义错误(518),则丢弃事务(514)。
图6是说明根据本发明实施例的配置读取方法的选定方面的流程图。术语“配置读取”是指从存储器(例如,如图1所示的存储器106)的元件中读取配置信息。在一些实施例中,位于存储器模块上的缓冲器(例如,如图1所示的缓冲器120)包含诸如状态位、热数据等的配置数据。“配置读取”包括从一个或多个存储器缓冲器中读取一些或者全部这种配置数据。存储器读取的请求者可以是内部的或者外部的。外部请求者的一个例子是可以读和/或写配置数据到例如存储器模块的系统BIOS。
参考进程框602,主机执行配置读取。重放逻辑确定事务响应数据是否包含已定义错误(604和608)。如果响应数据是无错误的,则主机将数据传送到请求者(606)。
然而,参考进程框608,重放逻辑检测至少一种已定义错误。已定义错误可以包括,例如,警告和/或CRC错误。在一些实施例中,如果重放逻辑检测到一种已定义错误(610),则它自动执行快速重置并且确定快速重置是否成功。如果快速重置不成功(612),则重放逻辑主设备中断该事务并且通知请求者(614)。
或者,如果快速重置成功,则重放逻辑重放配置读取(616)。重放逻辑分析重放响应数据以确定其是否包含已定义错误(618和620)。如果重放响应数据不包含已定义错误(620),则数据被传送到请求者(606)。然而,如果重放响应数据确实包含已定义错误(618),则重放逻辑主设备中止所述配置并且通知请求者(614)。
图7是说明根据本发明实施例的冗余存储器读取的选定方面的流程图。术语“冗余存储器读取”是指在冗余存储器系统中进行的存储器读取。一般地,冗余存储器系统可以包括两个或者更多个分支(例如,分支240和242,如图2所示)。每个分支可以包含基本上相同的存储器镜像。为了方便说明,用术语“本地分支”描述在其上进行存储器读取事务的分支。术语“远程分支”是指除了在其上发出存储器读取的分支之外的分支。
在一些实施例中,在冗余存储器系统上的重放机制考虑发生在本地分支上的事务响应错误是否超出退化阈值。术语“退化阈值”是指使冗余存储器系统退化成其分支之一被禁止的阈值。退化阈值可以由很多种原则(和/或策略)所确定,包括事务响应所发生的次数、事务错误发生频率等等。在一个实施例中,退化阈值基于在同一分支上所检测到的两个连续的事务响应错误。为了方便描述,下面的实施例将针对基于两次连续读取的退化阈值进行描述。需要注意的是,备选实施例可以基于不同的退化阈值。
参照进程框702,主机执行到分支X的第一冗余存储器读取。术语“冗余存储器读取”指的是在冗余存储器系统中进行的存储器读取。“第一”冗余存储器读取是指未超过退化阈值的存储器读取。采用术语“分支X”和“分支Y”作为方便的标记来区分冗余存储器系统中的两个分支。对于该冗余存储器读取,分支“X”是本地分支,分支“Y”是远程分支。
重放逻辑确定事务响应数据是否包含已定义错误(714、710和704)。如果该数据不包含已定义错误,则根据需要校正任何其他错误(例如,可校正的ECC错误)(712),且数据被转发给请求者(712,706)。如果未检测到已定义错误,则接下来的冗余读取被认为是第一冗余读取(708)。
然而,如果检测到已定义错误(714),则重放逻辑自动在这两个分支上进行快速重置,并且确定快速重置是否成功(716)。如果分支X和Y中一个或者两个都没有成功地快速重置(732,742),则分支X被禁止(734,744)。如果分支Y失败(或者两个分支都失败),则事务中毒,并且通知请求者(740)。如果仅分支X失败,则,在分支X被禁止以后,进程流遵循与两个分支都通过快速重置时基本相同的进程。
如果两个分支都通过了快速重置(718),则接下来的冗余读取被认为是“第二”冗余读取(720)。重放逻辑在722在分支Y(例如其他分支)上重放非冗余存储器读取。如果重放响应数据包含已定义错误,则事务中毒并且请求者得到通知(740)。如果没有包含已定义错误(724和726),则如果必要的话校正其他错误(728),并且数据被转发到请求者(728和730)。
图8是说明根据本发明实施例的冗余存储器读取和存储器分支退化的选定方面的流程图。为了方便说明,假定退化阈值是来自同一分支的两个连续的响应数据错误。可以理解,在备选实施例中,可以采用不同的退化阈值。
参照进程框802,重放逻辑进行到分支X的第二冗余存储器读取。也就是说,之前的到分支X的冗余存储器读取导致一个已定义事务响应错误。重放逻辑确定响应数据是否包含已定义错误(814、810和804)。如果响应数据不包含已定义错误(810和804),则如果必要可校正任何其它错误,且数据被转发给请求者(812和806)。在一些实施例中,如果响应数据不包含已定义错误(808),则认为后续的冗余存储器读取是“第一”冗余存储器读取。
如果响应数据确实包含已定义错误(814),则重放逻辑在分支X和Y上都进行快速重置(816)。在一些实施例中,分支X被禁止(818)以支持一致的执行,并且接下来的读取是非冗余读取(820)。在步骤822,重放逻辑在分支Y(例如,相反的分支)上重放非冗余存储器读取。如果重放响应数据包含已定义错误(832),则事务中毒并且请求者得到通知(834)。如果不包含已定义错误(824和828),则可根据需要校正任何其他错误(826),并且数据被转发给请求者(826和830)。
图9是说明根据本发明实施例的冗余存储器写入的选定方面的流程图。“冗余存储器写入”是指对冗余存储器系统的写入。主机执行到两个分支的冗余存储器写入(902),并且确定响应数据是否包含已定义错误(904-910)。如果响应数据不包含已定义错误(904),则事务完成918。如果来自任何一个分支的响应数据确实包含已定义错误(906-910),则重放逻辑进行这两个分支(912-916)的快速重置,并且确定对于每个分支快速重置是否成功。
如果任一分支的快速重置失败(例如,920),则禁止失败的分支(例如,922)。如果两个分支都通过了,则对其失败导致了快速重置(924)的那个分支进行冗余存储器写入的重放。检查重放响应数据是否有已定义错误(例如926和928)。如果不包括已定义错误,则事务完成(例如,930)。否则,在其上进行事务重放的分支被禁止(例如,932)并且事务完成(例如,934)。图9也说明了按照本发明一些实施例的分支失败、分支禁止和重放的另外的组合。
重放期间的擦除
在一些实施例中,自动重放的事务响应错误包括诸如ECC可校正错误的可校正错误。在这样的实施例中,可以执行重放期间的需求擦除。术语“需求擦除”是指,如果在重放操作期间检测到可校正的错误则修复存储器中的可校正错误。图10、11和12分别与图4、7和8类似,只是图10、11和12说明了重放期间执行需求擦除的选定方面。为了便于参照,图10、11和12的讨论集中在重放期间的需求擦除特征。
在所示实施例中,可校正错误(例如ECC可校正错误)的检测自动触发由1002、1102和1202所示的重置。如果重置成功,则事务被重放(418、722和822)。分析重放事务响应数据以确定其是否包含错误。
如果重放事务响应数据包含可校正错误,则校正该错误,将已校正响应数据转发给请求者,并且将已校正数据的副本写入存储器(例如,1004、1104和1204)。重放中的写入存储器阶段为坏写入响应的“嵌套”重放创造了机会。因此,在一些实施例中,写操作的任何另外的错误都被当作全新的写入对待。
在一些实施例中,主机可以检测下面的错误组合中任一种:“新的”响应数据和之前的响应数据中的信令错误;和/或信令错误与软件错误的组合。在这样的实施例中,将“新”的响应数据(在重放操作之后获得)与来自之前的读操作(例如,1006、1106、1206)的响应数据相比较(至少部分地)。如果“新”的响应数据与之前传送的响应数据匹配,则没有信令错误发生,并且ECC逻辑可以被用作区分可校正或者不可校正错误的标准,并且完成数据的正确操作。如果“新”的数据不与之前传送的数据匹配,则在两个传送之一中发生信令错误,并且执行另一重试操作直到来自两个顺序传送的数据匹配。
图13是说明根据本发明实施例的电子系统的选定方面的框图。电子系统1300包括处理器1310、存储器控制器1320、存储器1330、输入/输出(I/O)控制器1340、射频(RF)电路1350和天线1360。运行时,系统1300利用天线1360发射和接收信号,并且这些信号由如图13所示的各种元件处理。天线1360可以是定向的或者全向的天线。正如这里所使用的,术语“全向天线”是指在至少一个平面内具有基本均匀的辐射图的任何天线。例如,在一些实施例中,天线1360可以是诸如偶极天线或者四分之一波长天线的全向天线。另外,例如,在一些实施例中,天线1360可以是诸如抛物柱面反射器天线、接线天线、或者八木天线的定向天线。在一些实施例中,天线1360可以包括多个物理天线。
射频电路1350与天线1360及I/O控制器1340进行通信。在一些实施例中,射频电路1350包括与通信协议对应的物理接口(PHY)。例如,射频电路550可以包括调制器、解调器、混频器、频率合成器、低噪声放大器、功率放大器等等。在一些实施例中,射频电路1350可以包括外差接收器,并且在其他实施例中,射频电路1350可以包括直接转换接收器。例如,在具有多个天线1360的实施例中,每个天线可以耦合至对应的接收器。运行时,射频电路1350从天线1360接收通信信号,并且提供模拟的或者数字的信号给I/O控制器1340。进一步地,I/O控制器1340可以提供信号给射频电路1350,该射频电路1350对信号进行处理并且将它们传送给天线1360。
(多个)处理器1310可以是任何类型的处理设备。例如,处理器1310可以是微处理器、微控制器等等。进一步地,处理器1310可以包括任何数目的处理核或者可以包括任何数目的独立处理器。
存储器控制器1320提供在处理器1310和如图13所示的其它元件之间的通信路径。在一些实施例中,存储器控制器1320也是提供其他功能的中心设备(hub device)的一部分。如图13所示,存储器控制器1320耦合至(多个)处理器1310、I/O控制器1340和存储器1330。在一些实施例中,存储器控制器1320包括重放逻辑(例如,如图3所示的重放逻辑310),用于检测已定义错误、进行自动快速重置、以及重放特定的事务。
存储器1330可以包括多个存储器件。这些存储器件可以基于任何类型的存储器技术。例如,存储器1330可以是随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、诸如FLASH存储器的非易失性存储器、或者任何其它类型的存储器。
存储器1330可以代表一个或多个模块中的单个存储器件或者多个存储器件。存储器控制器1320通过互连1322将数据提供到存储器1330并且响应于读请求从存储器1330接收数据。可通过互连1322或者通过不同的互连(未示出),提供命令和/或地址给存储器1330。存储器控制器1330可以从处理器1310或者其它源接收待存储在存储器1330中的数据。存储器控制器1330可以将其从存储器1330接收的数据提供给处理器1310或其他目的地。互连1322可以是双向互连或者单向互连。互连1322可以包括多个并行的导体。信号可以是差分的或者单端的。在一些实施例中,互连1322采用向前的、多相时钟方案工作。
存储器控制器1320也耦合至I/O控制器1340,并且提供在(多个)处理器1310和I/O控制器1340之间的通信路径。I/O控制器1340包括诸如串行口、并行口、通用串行总线(USB)接口等的、用于与I/O电路进行通信的电路。如图13所示,I/O控制器1340提供到射频电路1350的通信路径。
图14是说明按照本发明的另一实施例的电子系统的选定方面的框图。电子系统1400包括存储器1330、I/O控制器1340、射频电路1350和天线1360,所有的这些已经参照图13在前面描述。电子系统1400也包括(多个)处理器1410和存储器控制器1420。如图14所示,存储器控制器1420可以和(多个)处理器1410位于相同的芯片上。在一些实施例中,存储器控制器1420包括重放逻辑(例如,如图3所示的重放逻辑310),用于检测已定义错误、进行自动快速重置、以及重放特定的事务。(多个)处理器1410可以是前面参照处理器1310(图5)所描述的任何类型的处理器。由图13和14代表的系统包括桌面计算机、便携式计算机、服务器、蜂窝电话、个人数字助理、数字家用系统等。
本发明实施例的元件也可以作为存储机器可执行指令的机器可读介质提供。机器可读介质可以包括,但是不局限于:闪存、光盘、光盘-只读存储器(CD-ROM)、数字通用/视频盘(DVD)ROM、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或者光学卡、传播介质或者适于存储电子指令其它类型机器可读介质。例如,本发明的实施例可以作为计算机程序下载,该计算机程序可通过通信链路(例如,调制解调器或网络连接),以嵌入在载波中或者其它传播介质中的数据信号的方式,从远程计算机(例如,服务器)传送到请求计算机(例如,用户)。
值得注意的是,贯穿整个说明书所提及的“一个实施例”或者“实施例”是指:和该实施例相关的特定特征、结构或者特性包含在本发明至少一个实施例中。因此,需要强调和注意的是,在本说明书的不同部分对“实施例”或者“一个实施例”或者“备选实施例”的引用不必全部指同一个实施例。进一步地,特定特征、结构或者特性在本发明的一个或者多个实施例中可以适当地组合。
类似地,需要注意的是,在本发明实施例的前面描述中,为了使公开内容更流畅以便帮助理解一个或者多个各种创造性方面,各种特征有的时候被组合到单个实施例、附图或者其描述中。然而,所公开的方法并不解释为反映这样的意图,即,所要求保护的主题需要比每个权利要求中所明确描述的特征更多的特征。而是,正如接下来的权利要求所反映的,不需要单个前面所公开的实施例中的全部特征,即存在创造性。因此,本说明书之后的权利要求据此明确结合到该说明书中。
Claims (30)
1.一种用于存储器重放机制的集成电路,包括:
快速重置序列发生器逻辑,用于快速重置点对点存储器互连中的至少一些链路;
数据路径单元,用于从所述点对点存储器互连中接收事务数据;
重放队列,与所述数据路径单元耦合,用于存储与存储器事务有关的所述事务数据;以及
与快速重置序列发生器逻辑和重放队列耦合的重放控制器逻辑,如果事务数据指示已定义事务响应错误,则重放控制器逻辑通过快速重置序列发生器来启动所述快速重置。
2.如权利要求1所述的集成电路,其中已定义事务响应错误是以下之一:
来自存储器模块的警告;
循环冗余校验CRC错误;和
无法校正的错误校验码ECC错误。
3.如权利要求2的集成电路,其中事务数据包括指示已定义事务响应错误的一个或者多个状态位。
4.如权利要求1的集成电路,其中,如果所述快速重置成功,则重放控制器逻辑可操作来启动存储器事务的重放。
5.如权利要求4的集成电路,其中存储器事务是冗余信息传送,并且进一步,其中所述快速重置序列发生器逻辑可操作来快速重置点对点存储器互连的本地分支和远程分支。
6.如权利要求5的集成电路,其中冗余信息传送包括以下之一:
冗余存储器读取;和
冗余存储器写入。
7.如权利要求6的集成电路,其中,如果冗余信息传送是冗余存储器读取,则重放控制器逻辑可操作来重放到远程分支的存储器事务。
8.如权利要求7所述的集成电路,其中重放控制器逻辑包括:
退化逻辑,其确定本地分支是否表现出超出退化阈值的事务响应错误,并且如果本地分支表现出超出退化阈值的事务响应错误,则禁止本地分支。
9.如权利要求6的集成电路,其中,如果冗余信息传送是冗余存储器写入,则重放控制器逻辑可操作来重放到本地分支的存储器事务。
10.如权利要求1的集成电路,其中点对点存储器互连是全缓冲双列直插式存储器模块DIMM存储器互连。
11.如权利要求1的集成电路,其中已定义事务响应错误包括可校正的ECC错误,并且其中,重放控制器逻辑还包括对存储器写入进行排队的逻辑。
12.一种用于存储器重放机制的方法,包括:
从点对点存储器互连中的链路接收事务数据,其中事务数据与事务相关联;
检测与事务相关的事务响应错误;以及
至少部分地响应检测到与该事务相关的事务响应错误而启动快速重置,其中,所述快速重置重新训练所述点对点存储器互连中的至少一些链路。
13.如权利要求12的方法,其中事务响应错误包括至少以下之一:
来自存储器模块的警告;
循环冗余校验CRC错误;和
无法校正的错误校验码ECC错误。
14.如权利要求12的方法,进一步包括:
如果快速重置成功,则重放所述事务。
15.如权利要求14的方法,其中,所述事务是冗余信息传送,并且进一步地,其中启动快速重置包括:
启动存储器互连的本地分支和远程分支的快速重置。
16.如权利要求15的方法,其中冗余信息传送包括以下之一:
冗余存储器读取;和
冗余存储器写入。
17.如权利要求16的方法,其中重放事务包括:
如果冗余信息传送是冗余存储器读取,则重放到远程分支的事务。
18.如权利要求17的方法,进一步包括:
确定本地分支是否表现出超出退化阈值的事务响应错误,以及
如果本地分支表现出超出退化阈值的事务响应错误,则禁止本地分支。
19.如权利要求16的方法,其中重放所述事务包括:
如果冗余信息传送是冗余存储器写入,则重放到表现出事务响应错误的本地分支的事务。
20.如权利要求14的方法,其中所述事务是至少以下之一:
非冗余存储器读取;
非冗余存储器写入;
配置读取;和
配置写入。
21.如权利要求12的方法,其中点对点存储器互连是全缓冲双列直插式存储器模块DIMM存储器互连。
22.一种用于存储器重放机制的系统,包括:
与点对点存储器互连耦合的存储器模块;以及
通过点对点存储器互连与存储器模块耦合的存储器控制器,
所述存储器控制器包括,
用于快速重置点对点存储器互连中的至少一些链路的快速重置序列发生器逻辑;
数据路径单元,用于从所述点对点存储器互连中接收事务数据;
重放队列,与所述数据路径单元耦合,用于存储与存储器事务有关的所述事务数据;以及
与所述快速重置序列发生器逻辑和所述重放队列耦合的重放控制器逻辑,如果事务数据指示已定义事务响应错误,则该重放控制器逻辑通过快速重置序列发生器来启动所述快速重置。
23.如权利要求22的系统,其中已定义事务响应错误是以下之一:
来自存储器模块的警告;
循环冗余校验CRC错误;和
无法校正的错误校验码ECC错误。
24.如权利要求22的系统,其中,如果所述快速重置成功,则所述重放控制器逻辑可操作来启动存储器事务的重放。
25.如权利要求24的系统,其中存储器事务是冗余信息传送,并且进一步地,其中所述快速重置序列发生器逻辑可操作来快速重置点对点存储器互连的本地分支和远程分支。
26.如权利要求25的系统,其中冗余信息传送包括以下之一:
冗余存储器读取;和
冗余存储器写入。
27.如权利要求26的系统,其中,如果冗余信息传送是冗余存储器读取,则所述重放控制器逻辑可操作来重放到远程分支的存储器事务。
28.如权利要求27的系统,其中重放控制器逻辑包括:
退化逻辑,其用于确定本地分支是否表现出超出退化阈值的事务响应错误,并且如果本地分支表现出超出退化阈值的事务响应错误,则禁止本地分支。
29.如权利要求26的系统,其中,如果冗余信息传送是冗余存储器写入,则所述重放控制器辑可操作来重放到本地分支的存储器事务。
30.如权利要求26的系统,其中点对点存储器互连是全缓冲双列直插式存储器模块DIMM存储器互连。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/357,492 US7587625B2 (en) | 2006-02-16 | 2006-02-16 | Memory replay mechanism |
US11/357492 | 2006-02-16 | ||
US11/357,492 | 2006-02-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101110047A CN101110047A (zh) | 2008-01-23 |
CN101110047B true CN101110047B (zh) | 2010-11-17 |
Family
ID=38437903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100923079A Active CN101110047B (zh) | 2006-02-16 | 2007-02-15 | 存储器重放机制 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7587625B2 (zh) |
EP (1) | EP1984822B1 (zh) |
JP (1) | JP5039061B2 (zh) |
KR (1) | KR100992334B1 (zh) |
CN (1) | CN101110047B (zh) |
AT (1) | ATE456090T1 (zh) |
DE (1) | DE602007004448D1 (zh) |
TW (1) | TWI354888B (zh) |
WO (1) | WO2007098062A2 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8028198B2 (en) | 2007-07-30 | 2011-09-27 | Micron Technology, Inc. | Devices, methods, and apparatuses for detection, sensing, and reporting functionality for semiconductor memory |
US8151266B2 (en) * | 2008-03-31 | 2012-04-03 | Qualcomm Incorporated | Operating system fast run command |
US8234540B2 (en) | 2008-07-01 | 2012-07-31 | International Business Machines Corporation | Error correcting code protected quasi-static bit communication on a high-speed bus |
US8245105B2 (en) * | 2008-07-01 | 2012-08-14 | International Business Machines Corporation | Cascade interconnect memory system with enhanced reliability |
US8078848B2 (en) * | 2009-01-09 | 2011-12-13 | Micron Technology, Inc. | Memory controller having front end and back end channels for modifying commands |
US8539309B2 (en) * | 2009-09-17 | 2013-09-17 | International Business Machines Corporation | System and method for responding to error detection |
US9158616B2 (en) * | 2009-12-09 | 2015-10-13 | Intel Corporation | Method and system for error management in a memory device |
US8862973B2 (en) * | 2009-12-09 | 2014-10-14 | Intel Corporation | Method and system for error management in a memory device |
KR101187642B1 (ko) * | 2011-05-02 | 2012-10-08 | 에스케이하이닉스 주식회사 | 집적 회로의 모니터링 장치 |
US9823986B2 (en) | 2013-04-30 | 2017-11-21 | Hewlett Packard Enterprise Development Lp | Memory node error correction |
EP3005117A4 (en) * | 2013-05-29 | 2017-01-18 | Hewlett-Packard Enterprise Development LP | Invoking an error handler to handle an uncorrectable error |
US9626270B2 (en) * | 2014-09-26 | 2017-04-18 | Intel Corporation | Link retraining based on runtime performance characteristics |
EP3057027B1 (en) * | 2015-02-16 | 2018-06-13 | Nxp B.V. | Method for secure data reading, computer program product and data handling system |
US9817738B2 (en) * | 2015-09-04 | 2017-11-14 | Intel Corporation | Clearing poison status on read accesses to volatile memory regions allocated in non-volatile memory |
US9904593B2 (en) * | 2015-11-13 | 2018-02-27 | Taiwan Semiconductor Manufacturing Co., Ltd. | Memory device and correction method |
US11675659B2 (en) * | 2016-07-15 | 2023-06-13 | Advanced Micro Devices, Inc. | DDR memory error recovery |
US10437946B1 (en) * | 2016-09-01 | 2019-10-08 | Xilinx, Inc. | Using implemented core sources for simulation |
US10635613B2 (en) * | 2017-04-11 | 2020-04-28 | Micron Technology, Inc. | Transaction identification |
US10391764B2 (en) | 2017-05-16 | 2019-08-27 | Canon Kabushiki Kaisha | Element substrate, printhead, and printing apparatus |
US10459785B2 (en) | 2017-09-27 | 2019-10-29 | Western Digital Technologies, Inc. | Error detection for training non-volatile memories |
US11442813B2 (en) | 2017-10-11 | 2022-09-13 | Hewlett-Packard Development Company, L.P. | Memory devices including execution trace buffers |
US11334457B1 (en) | 2019-06-27 | 2022-05-17 | Samsung Electronics Co., Ltd. | Semiconductor memory device and memory system including the same |
US11243831B2 (en) * | 2019-07-15 | 2022-02-08 | Micron Technology, Inc. | Reset and replay of memory sub-system controller in a memory sub-system |
CN110727530B (zh) * | 2019-09-12 | 2021-02-19 | 无锡江南计算技术研究所 | 基于窗口的错误访存请求重传系统及方法 |
US11531601B2 (en) | 2019-12-30 | 2022-12-20 | Advanced Micro Devices, Inc. | Error recovery for non-volatile memory modules |
US11137941B2 (en) * | 2019-12-30 | 2021-10-05 | Advanced Micro Devices, Inc. | Command replay for non-volatile dual inline memory modules |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3754482B2 (ja) * | 1996-02-29 | 2006-03-15 | 株式会社日立製作所 | メモリ転写機能を有する情報処理装置 |
US6333929B1 (en) | 1997-08-29 | 2001-12-25 | Intel Corporation | Packet format for a distributed system |
US7404032B2 (en) * | 2000-01-05 | 2008-07-22 | Rambus Inc. | Configurable width buffered module having switch elements |
US6766429B1 (en) * | 2000-08-31 | 2004-07-20 | International Business Machines Corporation | Low cost and high RAS mirrored memory |
US7028213B2 (en) * | 2001-09-28 | 2006-04-11 | Hewlett-Packard Development Company, L.P. | Error indication in a raid memory system |
US6917967B2 (en) | 2002-12-13 | 2005-07-12 | Sun Microsystems, Inc. | System and method for implementing shared memory regions in distributed shared memory systems |
US7028147B2 (en) * | 2002-12-13 | 2006-04-11 | Sun Microsystems, Inc. | System and method for efficiently and reliably performing write cache mirroring |
US7386768B2 (en) * | 2003-06-05 | 2008-06-10 | Intel Corporation | Memory channel with bit lane fail-over |
US7111153B2 (en) * | 2003-09-30 | 2006-09-19 | Intel Corporation | Early data return indication mechanism |
US20060026375A1 (en) | 2004-07-30 | 2006-02-02 | Christenson Bruce A | Memory controller transaction scheduling algorithm using variable and uniform latency |
US7292950B1 (en) * | 2006-05-08 | 2007-11-06 | Cray Inc. | Multiple error management mode memory module |
-
2006
- 2006-02-16 US US11/357,492 patent/US7587625B2/en active Active
-
2007
- 2007-02-14 TW TW096105514A patent/TWI354888B/zh not_active IP Right Cessation
- 2007-02-15 AT AT07751004T patent/ATE456090T1/de not_active IP Right Cessation
- 2007-02-15 DE DE602007004448T patent/DE602007004448D1/de active Active
- 2007-02-15 CN CN2007100923079A patent/CN101110047B/zh active Active
- 2007-02-15 KR KR1020087019946A patent/KR100992334B1/ko active IP Right Grant
- 2007-02-15 JP JP2008555397A patent/JP5039061B2/ja not_active Expired - Fee Related
- 2007-02-15 EP EP07751004A patent/EP1984822B1/en active Active
- 2007-02-15 WO PCT/US2007/004210 patent/WO2007098062A2/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
DE602007004448D1 (de) | 2010-03-11 |
EP1984822A2 (en) | 2008-10-29 |
TW200834299A (en) | 2008-08-16 |
JP2009527819A (ja) | 2009-07-30 |
WO2007098062A3 (en) | 2007-11-22 |
CN101110047A (zh) | 2008-01-23 |
ATE456090T1 (de) | 2010-02-15 |
KR20080087035A (ko) | 2008-09-29 |
EP1984822B1 (en) | 2010-01-20 |
WO2007098062A2 (en) | 2007-08-30 |
US7587625B2 (en) | 2009-09-08 |
KR100992334B1 (ko) | 2010-11-05 |
JP5039061B2 (ja) | 2012-10-03 |
TWI354888B (en) | 2011-12-21 |
US20070226579A1 (en) | 2007-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101110047B (zh) | 存储器重放机制 | |
US8898408B2 (en) | Memory controller-independent memory mirroring | |
CN101097784B (zh) | 改善存储装置的可靠性、可用性及可维修性 | |
CN106463179B (zh) | 利用存储器控制器处理数据错误事件的方法、装置和系统 | |
US8327105B2 (en) | Providing frame start indication in a memory system having indeterminate read data latency | |
US8140936B2 (en) | System for a combined error correction code and cyclic redundancy check code for a memory channel | |
US7644347B2 (en) | Silent data corruption mitigation using error correction code with embedded signaling fault detection | |
US7765368B2 (en) | System, method and storage medium for providing a serialized memory interface with a bus repeater | |
CN102568606B (zh) | 用于使用相同存储器类型来支持纠错模式和非纠错模式的系统、方法和器件 | |
US8732532B2 (en) | Memory controller and information processing system for failure inspection | |
US8201069B2 (en) | Cyclical redundancy code for use in a high-speed serial link | |
KR102553780B1 (ko) | 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20060092803A (ko) | 파일 제어 시스템 및 파일 제어 장치 | |
US7328368B2 (en) | Dynamic interconnect width reduction to improve interconnect availability | |
WO2004003744A2 (en) | A memory subsystem including error correction | |
US10740179B2 (en) | Memory and method for operating the memory | |
KR20180078426A (ko) | 데이터 저장 장치의 에러 정정 코드 처리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |