用于响应错误检测的系统与方法 【技术领域】
本发明总体上涉及数据通信, 尤其涉及对错误检测进行响应。背景技术 数据中的错误会阻碍数据的成功存储与发送。 多种因素可能造成数据破坏。 例如, 软错误可能源自由 alpha 粒子或噪声造成的无意位翻转。作为另一个例子, 由于温度或电 压随时间的变化导致的漂移或歪斜可能造成数据中的硬错误。
校正性动作通常是响应于对错误的检测而启动的。例如, 存储器控制器可以在确 定命令在发送过程中被破坏之后重新发布命令。在有些情况下, 存储器控制器可以在经该 存储器控制器与存储器结构之间的链路重新发布命令到该存储器结构之前启动对该链路 的再训练。
校正性动作可能限制存储器结构用以执行某些操作的能力。例如, 在再训练该链 路时, 存储器控制器可能不能够使用该链路向存储器结构发送读命令和写命令。减少存储 器控制器执行校正性动作的时间量可以增加存储器控制器用以执行正常操作的可用性。 可 用性的增加转化为效率的提高和存储器等待时间的减少。因此, 期望增加存储器控制器花 在正常操作上的时间与花在校正性动作上的时间之比。
发明内容
在一种特定的实施方式中, 公开了一种用以响应错误检测的方法。该方法包括向 第一重新驱动设备发布第一命令, 而向第二重新驱动设备发布第二命令。该方法还包括响 应于检测到在存储器控制器与所述第二重新驱动设备之间的发送错误而向该第二重新驱 动设备重新发布所述第二命令。 该方法进一步包括在第一缓冲器处存储响应于所述第一命 令而从所述第一重新驱动设备接收到的第一数据。 该方法包括在第二缓冲器处存储响应于 重新发布的第二命令而从所述第二重新驱动设备接收到的第二数据。 该方法还包括合并所 述第二数据与所述第一数据。
在另一种实施方式中, 公开了一种用以响应错误检测的方法。该方法包括响应 于启动对在存储器控制器与重新驱动设备之间链路的再训练而发送常量模式 (constant pattern)。该方法还包括在该常量模式发送了最小持续时间之后中断该常量模式的发送, 以便发送转变 (transition) 序列。该方法还包括在发送完所述转变序列之后恢复对所述 常量模式的发送。
在另一种实施方式中, 公开了一种用以响应错误检测的方法。该方法包括在第一 擦除控制器处创建第一擦除命令。该方法还包括在第二擦除控制器处创建第二擦除命令。 该方法还包括在存储器控制器端口处交替发布所述第一擦除命令和第二擦除命令。 附图说明
现在将参考附图仅仅作为例子描述本发明的实施方式, 附图中 :图 1 是用以响应错误检测的系统的第一实施方式的框图 ; 图 2 是用以响应错误检测的系统的第二实施方式的框图 ; 图 3 是用以响应错误检测的方法的第一实施方式的流程图 ; 图 4 是用以响应错误检测的系统的第三实施方式的框图 ; 图 5 是用以响应错误检测的方法的第二实施方式的流程图 ; 图 6 是用以响应错误检测的方法的第四实施方式的框图 ; 图 7 是用以响应错误检测的系统的第五实施方式的框图 ; 及 图 8 是用以响应错误检测的方法的第三实施方式的流程图。具体实施方式
图 1 是用以响应错误检测的系统的第一实施方式的图, 该系统总体上标记为 100。 系统 100 包括第一重新驱动设备 104、 第二重新驱动设备 106 及具有第一缓冲器 108 和第二 缓冲器 110 的存储器控制器 102。存储器控制器 102 和第一重新驱动设备 104 可以经第一 高速链路连接, 而存储器控制器 102 和第二重新驱动设备 106 经第二高速链路连接。每条 高速链路可以是指两条单向的高速链路。例如, 存储器控制器 102 可以经第一高速链路的 南向链路向第一重新驱动设备 104 进行发送, 而第一重新驱动设备 104 可以经第一高速链 路的北向链路向存储器控制器 102 进行发送。 总的来说, 存储器控制器 102 可以把单个命令分成两个命令 ( 例如, 第一命令 112 和第二命令 114)。第一命令 112 可以发送到第一重新驱动设备 104, 而第二命令 114 可以 发送到第二重新驱动设备 106。为了完成单个命令, 可以执行第一命令 112 和第二命令 114 两者。存储器控制器 102 可以响应于第一命令 112 的发送而从第一重新驱动设备 104 接收 好的数据 ( 例如, 第一数据 116), 并且可以响应于第二命令 114 的发送而检测存储器控制器 102 与第二重新驱动设备 106 之间的发送错误 118。在没有响应于第一命令 112 和第二命 令 114 而接收到的好的数据的情况下, 对于单个命令的响应可能不能完成。代替丢弃第一 数据 116 并且重新发送第一命令 112 和第二命令 116 两者, 存储器控制器 102 可以存储响 应于第一命令 112 接收到的好的数据 ( 例如, 第一数据 116)。存储器控制器 102 可以向第 二重新驱动设备 106 重新发布第二命令 114( 例如, 重新发布的第二命令 120)。
在响应于重新发布的第二命令 120 而接收到好的数据 ( 第二数据 122) 之后, 存储 器控制器可以合并第一数据 116 和第二数据 122, 以产生对单个命令的同步完成数据响应。 只重新发布第二命令 114 而不是两个命令都重新发布可以防止有些错误。例如, 第一命令 112 的执行可能改变存储器结构中的数据。第一命令 112 的重新发布可能启动对存储器结 构中的改变后的数据而不是如在第一数据 116 中检索到的初始数据的检索。
保存第一数据 116 用以与响应于重新发布的第二命令 120 接收到的第二数据 122 合并可以减少所执行的校正动作的复杂性。 减少校正动作的复杂性可以减少专用于执行校 正动作所花的时间量, 并增加存储器控制器可用于执行正常操作的时间量。增加执行正常 操作所花的时间与执行校正动作所花的时间之比可以提高存储器控制器 102 的效率并减 少存储器等待时间。
存储器控制器 102 可以配置成把第一命令 112 发布到第一重新驱动设备 104, 而 把第二命令 114 发布到第二重新驱动设备 106。存储器控制器 102 可以配置成, 响应于检
测到存储器控制器 102 与第二重新驱动设备 106 之间的发送错误 118 而向第二重新驱动设 备 106 重新发布第二命令 ( 例如, 重新发布的第二命令 120)。存储器控制器 102 配置成, 在第一缓冲器 108 处存储响应于第一命令 112 而从第一重新驱动设备 104 接收到的第一数 据 116。存储器控制器 102 可以配置成在第二缓冲器 110 处存储响应于重新发布的第二命 令 120 而从第二重新驱动设备 106 接收到的第二数据 122。存储器控制器 102 配置成合并 第二数据 122 与第一数据 116。
存储器控制器 102 可以把第一命令 112 发布到第一重新驱动设备 104。第一重新 驱动设备 104 可以解码并重新格式化第一命令 112, 以发送到与该第一重新驱动设备 104 连 接的第一存储器结构 ( 未例示 )。例如, 在解码并重新格式化第一命令 112 之后, 第一重新 驱动设备 104 可以把第一命令 112 发送到第一存储器结构。
响应于从第一重新驱动设备 104 接收到第一命令 112, 第一存储器结构可以把第 一数据 116 发送到第一重新驱动设备 104。第一重新驱动设备 104 可以重新格式化第一数 据 116, 并把重新格式化后的第一数据 116 经第一高速链路的北向链路发送到存储器控制 器 102。响应于接收到第一数据 116, 存储器控制器 102 可以把第一数据 116 存储在第一缓 冲器 108 处。把第一数据 116 存储在第一缓冲器 108 处可以允许存储器控制器 102 在响应 于检测到存储器控制器 102 与第二重新驱动设备 106 之间的发送错误 118 而执行校正动作 时保存好的数据。
检测发送错误 118 可以包括第二重新驱动设备 106 检测从存储器控制器 102 接收 到的第二命令 114 中的发送错误 118。 例如, 第二重新驱动设备 106 可以包括用以检查从存 储器控制器 102 接收到的命令中的循环冗余校验 (CRC) 错误的逻辑。CRC 校验可以指示经 第二南向链路从存储器控制器 102 接收到的第二命令 114 包含 CRC 错误 ( 例如, 发送错误 118)。
在检测到发送错误 118 之后, 第二重新驱动设备 106 可以丢掉 (drop) 从存储器控 制器 102 接收到的第二命令流中的第二后续命令, 并向存储器控制器 102 返回告警状态帧 150。丢掉第二命令流中的第二后续命令可以包括, 第二重新驱动设备 106 不向第二存储器 结构 ( 未例示 ) 重新驱动第二命令 114 或者第二后续命令。
第二重新驱动设备 106 可以响应于检测到发送错误 118 而经第二高速链路的北向 链路向存储器控制器 102 返回告警状态帧的流。存储器控制器 102 可以使用所接收到的告 警状态帧来检测存储器控制器 102 与第二重新驱动设备 106 之间的发送错误 118。 例如, 存 储器控制器 102 可以确定在第二高速链路的南向链路中发生了发送错误 118。该确定可以 基于经第二高速链路的北向链路对告警状态帧 150 的接收。
响应于检测到发送错误 118, 存储器控制器 102 可以停止发布后续命令到第一重 新驱动设备 104 和第二重新驱动设备 106 两者, 以便在存储器控制器 102 与第二重新驱动 设备 106 之间的链路上执行校正动作。例如, 在接收到告警状态帧 150 之后, 存储器控制器 102 可以发布第二高速链路的链路复位。链路复位可以从第二高速链路清除告警状态帧。 在清理了第二高速链路之后, 第二高速链路可以准备好重新发布第二命令流。存储器控制 器 102 可以经第二高速链路的南向链路向第二重新驱动设备 106 重新发布第二命令 ( 例 如, 重新发布的第二命令 120)。
存储器控制器 102 可以向第二重新驱动设备 106 重新发布第二命令流, 以便允许第二重新驱动设备 106 把第二命令流重新驱动到第二存储器结构。 例如, 存储器控制器 102 可以从第二重新驱动设备 106 响应于检测到发送错误 118 而终止第二命令流的点开始重新 发布第二命令流。存储器控制器 102 可以从重新发布的第二命令 120 开始向第二重新驱动 设备 106 重新发布第二命令流。
第二重新驱动设备 106 可以把重新发布的第二命令 120 重新驱动到第二存储器结 构。 响应于接收到重新发布的第二命令 120, 第二存储器结构可以检索第二数据 122 并把该 第二数据 122 发送到第二重新驱动设备 106。第二重新驱动设备 106 可以把第二数据 122 发送到存储器控制器 102。存储器控制器 102 可以把第二数据 122 存储在第二缓冲器 110 中, 以与第一缓冲器 108 中的第一数据 116 合并。代替在检测到发送错误 118 时重新发布 命令到两个重新驱动设备, 存储第一数据 116 允许存储器控制器 102 避免可能由于向第一 重新驱动设备 104 重新发布第一命令 112 而造成的错误。例如, 第一命令 112 的执行可能 已经改变了存储器结构中的原始数据。
重新发布第一命令 112 可能启动对存储器结构中已改变数据的检索, 而不是对如 第一数据 116 检索的原始数据的检索。保存第一数据 116 用以与响应于重新发布的第二命 令 120 而接收到的第二数据 122 合并可以减少所执行的校正动作的复杂性。减少校正动作 的复杂性又可以减少专用于执行校正动作所花的时间量并增加存储器控制器 102 可用于 执行正常处理的时间量。 增加执行正常处理所花的时间与执行校正动作所花的时间之比可 以提高存储器控制器 102 的效率并减少存储器等待时间。 参考图 2, 例示了用以响应错误检测并且总体上标记为 200 的系统的另一种实施 方式的图。系统 200 包括许多在参考图 1 的系统 100 中找到的元件, 其中相似的元件具有 相同的附图标记。
在操作期间, 存储器控制器 102 可以向第一重新驱动设备 104 发布第一命令 112。 第一重新驱动设备 104 可以解码并重新格式化第一命令 112, 以发送到第一存储器结构 ( 未 例示 )。第一存储器结构可以连接到第一重新驱动设备 104。例如, 在解码并重新格式化第 一命令 112 之后, 第一重新驱动设备 104 可以把第一命令 112 发送到第一存储器结构。
响应于从第一重新驱动设备 104 接收到第一命令 112, 第一存储器结构可以把第 一数据 116 发送到第一重新驱动设备 104。第一重新驱动设备 104 可以重新格式化第一数 据 116, 并把重新格式化后的第一数据 116 经第一高速链路的北向链路发送到存储器控制 器 102。响应于接收到第一数据 116, 存储器控制器 102 可以把第一数据 116 存储在第一缓 冲器 108 处。把第一数据 116 存储在第一缓冲器 108 处可以允许存储器控制器 102 在响应 于检测到存储器控制器 102 与第二重新驱动设备 106 之间的发送错误 118 而执行校正动作 时保存好的数据 ( 即, 第一数据 116)。
检测发送错误 118 可以包括第二重新驱动设备 106 检测从存储器控制器 102 接收 到的第二命令 114 中的发送错误 118。 例如, 第二重新驱动设备 106 可以包括用以检查从存 储器控制器 102 接收到的命令中的 CRC 错误的逻辑。CRC 校验可以指示经第二南向链路从 存储器控制器 102 接收到的第二命令 114 包含 CRC 错误 ( 例如, 发送错误 118)。
在检测到发送错误 118 之后, 第二重新驱动设备 106 可以丢掉从存储器控制器 102 接收到的第二命令流中的第二后续命令。第二重新驱动设备 106 还可以向存储器控制器 102 返回告警状态帧。丢掉第二命令流中的第二后续命令可以包括第二重新驱动设备 106
不把第二命令 114 或者第二后续命令重新驱动到第二存储器结构 ( 未例示 )。
第二重新驱动设备 106 可以向存储器控制器 102 返回告警状态帧 160 的流。 帧 160 可以响应于检测到发送错误 118 而经第二高速链路的北向链路返回。存储器控制器 102 可 以使用所接收到的告警状态帧 160 来检测存储器控制器 102 与第二重新驱动设备 106 之间 的发送错误 118。 例如, 存储器控制器 102 可以确定在第二高速链路的南向链路中发生了发 送错误 118。该确定可以基于经第二高速链路的北向链路对告警状态帧的接收。
响应于检测到发送错误 118, 存储器控制器 102 可以停止发布后续命令到第一重 新驱动设备 104 和第二重新驱动设备 106 两者。可以执行在存储器控制器 102 与第二重新 驱动设备 106 之间的第二高速链路上的校正动作。例如, 在接收到告警状态帧 160 之后, 存 储器控制器 102 可以发布第二高速链路的链路复位。链路复位可以从第二高速链路清除告 警状态帧 160。第二高速链路可以进一步准备好重新发布第二命令流。存储器控制器 102 可以经第二高速链路的南向链路向第二重新驱动设备 106 重新发布第二命令 ( 例如, 重新 发布的第二命令 120)。
存储器控制器 102 可以向第二重新驱动设备 106 重新发布第二命令流, 以便允许 第二重新驱动设备 106 把第二命令流重新驱动到第二存储器结构。 例如, 存储器控制器 102 可以从第二重新驱动设备 106 响应于检测到发送错误 118 而终止第二命令流的点开始重新 发布第二命令流。存储器控制器 102 可以从第二命令 ( 例如, 重新发布的第二命令 120) 开 始向第二重新驱动设备 106 重新发布第二命令流。 在特定的实施方式中, 第二重新驱动设备 106 可以把重新发布的第二命令 120 重 新驱动到第二存储器结构。响应于接收到重新发布的第二命令 120, 第二存储器结构可以 检索第二数据 122 并把该第二数据 122 发送到第二重新驱动设备 106。第二重新驱动设备 106 可以把第二数据 122 发送到存储器控制器 102。存储器控制器 102 可以把第二数据 122 存储在第二缓冲器 110 中, 以与第一缓冲器 108 中的第一数据 116 合并。
第二组命令可以在检测到发送错误 118 之前从存储器控制器 102 发布到重新驱动 设备。 例如, 存储器控制器 102 可以在发布第一命令 112 之后向第一重新驱动设备 104 发送 第三命令 162。存储器控制器 102 可以在发布第二命令 114 之后向第二重新驱动设备 106 发送第四命令 166。存储器控制器 102 可以响应于第三命令 162 而接收第三数据 164。第 三数据 164 可以存储在第一缓冲器 108 处。然而, 在从第二重新驱动设备 106 接收到告警 状态帧 160 之后, 存储器控制器 102 可以向第二重新驱动设备 106 重新发布第四命令 ( 例 如, 重新发布的第四命令 170)。存储器控制器 102 可以响应于重新发布的第四命令 170 而 接收第四数据 172。存储器控制器 102 可以把第四数据 172 存储在第二缓冲器 110 处, 以与 第一缓冲器 108 中的第三数据 164 合并。在特定的实施方式中, 第一缓冲器 108 包括几个 缓冲器。第一数据 116 可以存储在第一缓冲器的几个缓冲器中的一个中, 而第三数据 164 可以存储在第一缓冲器的几个缓冲器中的另一个中。
代替在检测到发送错误 118 时向两个重新驱动设备都重新发布命令, 存储第一数 据 116 和第三数据 164 允许存储器控制器 102 避免可能由于向第一重新驱动设备 104 重新 发布第一命令 112 和第三命令 162 而造成的错误。例如, 第一命令 112 的执行可能已经改 变了存储器结构中的原始数据。第一命令 112 的重新发布可能检索存储器结构中已改变的 数据, 而不是如在第一数据 116 中所检索到的原始数据。保存第一数据 116 用以与响应于
重新发布的第二命令 120 而接收到的第二数据 122 合并可以减少所执行的校正动作的复杂 性。 减少校正动作的复杂性可以减少专用于执行校正动作所花的时间量并增加存储器控制 器 102 可用于执行正常处理的时间量。增加执行正常处理所花的时间与执行校正动作所花 的时间之比可以提高存储器控制器 102 的效率并减少存储器等待时间。
图 3 是用以响应错误检测并且总体上标记为 300 的方法的第一实施方式的流程 图。 在特定的实施方式中, 方法 300 是由图 1 和 2 中的任何一个系统或者其组合执行的。 方 法 300 可以包括在块 302 向第一重新驱动设备发布第一命令并向第二重新驱动设备发布第 二命令。例如, 图 1 和 2 的存储器控制器 102 可以向第一重新驱动设备 104 发布第一命令 112, 并向第二重新驱动设备 106 发布第二命令 114。方法 300 还可以包括在块 304 响应于 检测到存储器控制器与第二重新驱动设备之间的发送错误而向第二重新驱动设备重新发 布第二命令。例如, 图 1 和 2 的存储器控制器 102 可以响应于检测到存储器控制器 102 与 第二重新驱动设备 106 之间的发送错误而向第二重新驱动设备 106 重新发布第二命令 120。
方法 300 还可以包括在块 306 把响应于第一命令而从第一重新驱动设备接收到的 第一数据存储在第一缓冲器处。例如, 图 1 和 2 的存储器控制器 102 可以把响应于第一命 令 112 而从第一重新驱动设备 104 接收到的第一数据 116 存储在第一缓冲器 108 处。方法 300 可以包括在块 308 把响应于重新发布的第二命令而从第二重新驱动设备接收到的第二 数据存储在第二缓冲器处。 例如, 存储器控制器 102 可以把响应于重新发布的第二命令 120 而从第二重新驱动设备 106 接收到的第二数据 122 存储在第二缓冲器 110 处。方法 300 还 包括在块 310 合并第二数据与第一数据。例如, 图 1 和 2 的存储器控制器 102 可以合并第 二数据 122 与第一数据 116。 图 4 是用以响应错误检测并且总体上标记为 400 的系统的另一实施方式的图。这 种实施方式可以用作用于响应于如前所述的链路复位而清理链路的方法。系统 400 包括存 储器控制器 402 和重新驱动设备 404。存储器控制器 402 和重新驱动设备 404 可以经链路 406 连接。链路 406 可以包括两条单向的高速链路。例如, 存储器控制器 402 可以经链路 406 的南向链路向重新驱动设备 404 发送, 而重新驱动设备 404 可以经链路 406 的北向链路 向存储器控制器 402 发送。
总的来说, 存储器控制器 402 可以向重新驱动设备 404 发送信号模式, 用以指示存 储器控制器 402 正在启动 407 链路的再训练。为了区分指示链路再训练动作的信号模式的 发送与常规的数据发送, 该信号模式可以是无转变的常量模式。
例如, 存储器控制器 402 可以发送等于数字常量一的一个信号达多个循环。这个 信号将不包括到等于数字常量零的转变。
存储器控制器 402 和重新驱动设备 404 可以依赖于信号模式中的转变来维持对 准。 如果在常量模式的发送期间没有接收到转变, 则存储器控制器 402 与重新驱动设备 404 可能不能够维持对准。例如, 常量模式 408 的发送可能导致存储器控制器 402 与重新驱动 设备 404 失去对准或者变得进一步失准。进一步失准可能导致对准锁定算法在随后的阶段 中执行更多处理来重新获得对准。
在恢复 414 对常量模式 416 的发送之前中断常量模式的发送 409 以便发送转变 412 的序列 410, 可以允许存储器控制器 402 与重新驱动设备 404 在链路再训练工作期间维 持对准。当所发送的转变 412 的个数满足最小可接受的转变密度时, 对准可以维持。在链
路再训练动作期间维持对准可以允许存储器控制器 402 和重新驱动设备 404 在链路再训练 动作的随后阶段使用效率较低的对准锁定算法。例如, 可选择可以相对慢地执行但是具有 减小的功率、 空间与制造需求的对准锁定算法。 因为对准没有丢失, 所以对准锁定算法可以 执行更少的处理来重新确认对准或者恢复对准。 减少对准锁定算法所执行的处理的个数可 以减少链路再训练动作的整体等待时间。 减少链路再训练动作的等待时间可以提高存储器 控制器 402 的整体效率, 而且减小尺寸将使得成本更低。
存储器控制器 402 可以配置成, 响应于启动 407 存储器控制器 402 与重新驱动设 备 404 之间的链路的再训练而发送常量模式。 存储器控制器 402 可以配置成, 在常量模式发 送了最小持续时间之后中断 409 常量模式 408 的发送, 以便发送转变 412 的序列 410。存储 器控制器 402 可以配置成在发送转变 412 的序列 410 之后恢复 414 常量模式 416 的发送。
存储器控制器 402 可以向重新驱动设备 404 发布命令流。 例如, 重新驱动设备 404 可以经链路 406 的南向链路从存储器控制器 402 接收命令流。重新驱动设备 404 可以解码 并重新格式化该命令流, 以发送到与重新驱动设备 404 连接的存储器结构 ( 未例示 )。该 存储器结构可以响应于命令流而检索数据, 并可以把数据发送到重新驱动设备 404。重新 驱动设备 404 可以重新格式化数据, 并且把重新格式化后的数据发送到存储器控制器 402。 例如, 重新驱动设备 404 可以在重新格式化数据之后把数据经链路 406 的北向链路发送到 存储器控制器 402。
检查南向链路和北向链路两者上的通信中的错误。 对经南向链路接收到的命令流 上的错误检测可以由重新驱动设备 404 来执行。例如, 重新驱动设备 404 可以包括用以执 行 CRC 校验的逻辑。CRC 校验可以确定命令流中的特定命令包含单个位错误 ( 即, 发送错 误 )。在检测到发送错误之后, 重新驱动设备 404 可以丢掉命令流中所有后续命令, 并把告 警状态帧返回到存储器控制器 402。
在特定的实施方式中, 重新驱动设备 404 响应于发送错误而经北向链路把告警状 态帧流返回到存储器控制器 402。 存储器控制器 402 可以使用所接收到的告警状态帧, 来检 测存储器控制器 402 与重新驱动设备 404 之间的发送错误。例如, 存储器控制器 402 可以 基于经北向链路对告警状态帧的接收来确定在链路 406 的南向链路中发生的发送错误。
响应于检测到发送错误, 存储器控制器 402 可以执行校正动作。例如, 在接收到告 警状态帧之后, 存储器控制器 402 可以发布链路 406 的链路复位。该链路复位可以从链路 406 清除告警状态帧。链路 406 可以准备好重新发布命令流。例如, 存储器控制器 402 可以 经链路 406 的南向链路向重新驱动设备 404 重新发布命令流。
链路复位可能没有成功地从链路 406 清除告警状态帧。链路 406 可能没有准备好 接收重新发布的命令。例如, 存储器控制器 402 可以在执行链路复位之后在北向链路上继 续接收告警状态帧。存储器控制器 402 可以启动 407 链路再训练动作。链路再训练动作可 以包括再训练存储器控制器 402 与重新驱动设备 404 之间的链路 406。
再训练链路 406 可以包括存储器控制器 402 向重新驱动设备 404 通知该链路正在 被再训练。向重新驱动设备 404 通知存储器控制器 402 正在启动 407 链路再训练动作可以 包括向重新驱动设备 404 发送常量模式 408。在特定的实施方式中, 该常量模式是在重新 驱动设备处禁用正常操作的 “禁用 b” 信号。例如, 在常量模式 408 的发送期间, 存储器控制 器 402 可以发送无转变的数字常量序列。存储器控制器 402 可以发送没有到零的转变的全一。响应于接收到无转变的信号模式, 重新驱动设备 404 可以确定存储器控制器 402 正在 启动 407 链路再训练动作。
该常量模式可以被发送达最小持续时间, 以确保重新驱动设备 404 把该发送注册 为存储器控制器 402 正在启动 407 链路再训练动作的指示。该最小持续时间可以基于重新 驱动设备 404 识别出常量模式的最小单位间隔个数。该单位间隔可以是存储器控制器 402 在链路上以线路速度 (line speed) 发送一个转变的时间。例如, 存储器控制器 402 可以发 送常量模式达一百四十四个单位间隔而没有一个转变, 以便向重新驱动设备 404 指示存储 器控制器 402 已经启动 407 链路再训练动作。
通过发送转变 412 的序列 410, 存储器控制器 402 可以在常量模式已经发送了最小 持续时间之后中断 409 常量模式 408 的发送。发送转变 412 的序列 410 维持存储器控制器 402 与重新驱动设备 404 之间的对准。转变 412 的序列 410 中转变 412 的个数可以基于链 路 406 的最小位转变密度。该最小位转变密度可以指示转变 412 的最小个数, 以便维持存 储器控制器 402 与重新驱动设备 404 之间的位对准。例如, 维持位对准所必需的转变 412 的最小个数可以是八个转变 412。 在恢复全一的常量模式之前, 存储器控制器 402 可以发送 等效于数字常量一和零的交替信号模式。 在发送转变 412 的序列 410 之后, 存储器控制器 402 可以恢复 414 常量模式 416 的 发送。中断 409 常量模式 408 以便发布转变 412 的序列 410 可以允许存储器控制器 402 与 重新驱动设备 404 保持对准。在链路再训练动作期间维持对准可以允许存储器控制器 402 与重新驱动设备 404 在链路再训练动作的随后阶段使用效率较低的对准锁定算法。例如, 可选择执行慢但使用较少功率和占用较少空间的对准锁定算法。 尽管该对准锁定算法可以 执行得相对慢, 但是该对准锁定算法可以执行更少的处理来重新获得对准。减少对准锁定 算法所执行的处理的个数可以减少链路再训练动作的整体等待时间。 减少链路再训练动作 的等待时间可以提高存储器控制器 402 的整体效率。
图 5 是用以响应错误检测并且总体上标记为 500 的方法的第二实施方式的流程 图。在特定的实施方式中, 方法 500 是由图 4 的系统执行的。方法 500 在块 502 包括响应 于启动存储器控制器与重新驱动设备之间的链路的再训练而发送常量模式。例如, 图4的 存储器控制器 402 响应于启动 407 存储器控制器 402 与重新驱动设备 404 之间的链路 406 的再训练而发送常量模式 408。方法 500 还包括在块 504 在常量模式已经发送了最小持续 时间之后中断对常量模式的发送, 以便发送转变序列。例如, 图 4 的存储器控制器 402 可以 在常量模式已经发送了最小持续时间之后中断 409 对常量模式 408 的发送, 以便发送转变 412 的序列 410。方法 500 还包括在块 506 在发送转变的序列之后恢复对常量模式的发送。 例如, 图 4 的存储器控制器 402 可以在发送转变 412 的序列 410 之后恢复 414 对常量模式 416 的发送。
图 6 是用以响应错误检测并且总体上标记为 600 的系统的第五实施方式的图。系 统 600 包括重新驱动设备 604、 具有命令仲裁逻辑 612、 第一擦除控制器 608 和第二擦除控 制器 610 的存储器控制器端口 602。 存储器控制器端口 602 和重新驱动设备 604 经链路 606 连接。链路 606 可以包括两条单向的链路。例如, 存储器控制器 602 可以经链路 606 的南 向链路向重新驱动设备 604 进行发送, 而重新驱动设备 604 可以经链路 606 的北向链路向 存储器控制器 602 进行发送。
总的来说, 每个擦除控制器都可以创建用以擦除特定存储器结构的擦除命令。例 如, 第一擦除控制器 608 可以创建针对第一存储器结构 ( 未例示 ) 的第一擦除命令 614, 而 第二擦除控制器 610 可以创建针对第二存储器结构 ( 未例示 ) 的第二擦除命令 616。存储 器控制器可以交替发布来自每个擦除控制器的擦除命令。 每个擦除控制器之间的交替可以 允许存储器控制器端口 602 经单个链路 606 擦除多个存储器结构。
存储器控制器端口 602 可以配置成在第一擦除控制器 608 处创建第一擦除命令 614。存储器控制器端口 602 可以配置成在第二擦除控制器 610 处创建第二擦除命令 616。 存储器控制器端口 602 可以配置成在存储器控制器端口 602 处交替发布第一擦除命令 614 和第二擦除命令 616。
存储器控制器端口 602 可以使用擦除命令来检测和校正数据中的错误。例如, 第 一擦除控制器 608 可以创建从存储器控制器端口 602 发布的擦除读命令 ( 例如, 第一擦除 命令 )。响应于该擦除读命令的发布, 存储器控制器端口 602 可以接收擦除读数据。存储 器控制器端口 602 可以包括用以检查该擦除读数据中的纠错码 (ECC) 的逻辑。例如, ECC 检查可以指示该擦除读数据包含单个位错误。存储器控制器端口 602 可以调用位冗余控制 (RBS) 来校正错误。 在错误被校正之后, 第一擦除控制器 608 可以创建从存储器控制器端口 602 发布的擦除写命令。该擦除写命令可以把校正后的擦除读数据写到之前从其检索出擦 除读数据的存储器地址中。 存储器控制器端口 602 可以交替发布第一擦除命令 614 和第二擦除命令 616。命 令仲裁逻辑 612 交替发布第一擦除命令 614 和第二擦除命令 616。擦除命令的交替发布可 以包括以下列次序发布擦除命令 : 第一擦除命令、 第二擦除命令、 第一擦除命令和第二擦除 命令。在每个擦除命令之间交替可以允许存储器控制器端口 602 经单个链路 ( 例如, 链路 606) 擦除多个存储器结构。 例如, 第一擦除命令 614 可以针对第一存储器结构, 而第二擦除 命令 616 可以针对第二存储器结构。第一存储器结构和第二存储器结构中的地址可以同时 被同一存储器控制器端口 602 擦除。
参考图 7, 例示了用以响应错误检测并且总体上标记为 700 的系统的另一实施方 式的图。系统 700 包括重新驱动设备 604、 第一存储器结构 730 和第二存储器结构 732。该 系统还包括具有命令仲裁逻辑 612、 第一擦除控制器 608 和第二擦除控制器 610 的存储器 控制器端口 602。存储器控制器端口 602 和重新驱动设备 604 可以经链路 606 连接。链路 606 可以包括两条单向链路。 例如, 存储器控制器可以经链路 606 的南向链路向重新驱动设 备 604 进行发送, 而重新驱动设备 604 可以经链路 606 的北向链路向存储器控制器进行发 送。重新驱动设备 604 可以经第一存储器总线 736 连接到第一存储器结构 730 并经第二存 储器总线 738 连接到第二存储器结构 732。
总的来说, 每个擦除控制器都可以创建用以擦除特定存储器结构的擦除命令。例 如, 第一擦除控制器 608 可以创建针对第一存储器结构 730 的第一擦除命令 614。第二擦 除控制器 610 可以创建针对第二存储器结构 732 的第二擦除命令 616。存储器控制器可以 经链路 606 交替发布来自每个擦除控制器的擦除命令到重新驱动设备 604。重新驱动设备 604 可以把第一擦除命令 614 发布到第一存储器结构 730, 并把第二擦除命令 616 发布到第 二存储器结构 732。每个擦除控制器之间的交替可以允许存储器控制器端口 602 经单个链 路 ( 例如, 链路 606) 擦除多个存储器结构。
存储器控制器端口 602 可以使用擦除命令来检测和校正数据中的错误。例如, 第 一擦除控制器 608 可以创建从存储器控制器端口 602 发布到重新驱动设备 604 的第一擦除 读命令 ( 例如, 第一擦除命令 )。重新驱动设备 604 可以格式化并解码该擦除读命令, 以便 发送到第一存储器结构 730。 例如, 重新驱动设备 604 可以把该擦除读命令变成由第一存储 器结构 730 识别的 DDR 地址。重新驱动设备 604 可以把格式化后的擦除读命令经第一存储 器总线 736 发送到第一存储器结构 730。
响应于接收到格式化后的擦除读命令 ( 例如, 第一擦除命令 ), 第一存储器结构 730 可以检索擦除读数据 ( 例如, 第一数据 720), 并把该擦除读数据经第一存储器总线 736 发送到重新驱动设备 604。第一存储器结构 730 可以按照突发突变四 (burst chop four mode, BC4) 模式检索擦除读数据。在以 BC4 模式运行时, 第一存储器结构 730 可以检索后 面跟着四拍间隙的四拍数据。例如, 第一存储器结构 730 可以把四拍擦除读数据 ( 例如, 第 一数据 720) 发送到重新驱动设备 604, 后面跟着四拍间隙。重新驱动设备 604 可以接收包 括间隙与第一数据 720 的部分的交替模式的第一数据流。
重新驱动设备 604 可以经链路 606 从存储器控制器接收第二擦除命令 616。在特 定的实施方式中, 命令仲裁逻辑 612 交替发布第一擦除命令 614 和第二擦除命令 616。重 新驱动设备 604 可以在第二存储器总线 738 上把第二命令发送到第二存储器结构 732。响 应于第二擦除命令 616, 第二存储器结构 732 可以检索第二数据 722, 并把第二数据 722 经 第二存储器总线 738 发送到重新驱动设备 604。在以 BC4 模式运行时, 第二存储器结构 732 可以向重新驱动设备 604 发送四拍第二数据 722, 后面跟着四拍间隙。 重新驱动设备 604 可 以接收包括间隙与第二数据 722 的部分的交替模式的第二数据流。 重新驱动设备 604 可以格式化并解码第一数据流中的第一数据 720 和第二数据流 中的第二数据 722。例如, 重新驱动设备 604 可以把第一数据 720 和第二数据 722 变成对应 于存储器控制器端口 602 中地址的数据。在格式化第一数据 720 和第二数据 722 之后, 重 新驱动设备 604 可以把第一数据 720 和第二数据 722 经链路 606 发送到存储器控制器端口 602。
重新驱动设备 604 可以交替发送来自第一数据流的第一数据 720 和来自第二数据 流的第二数据 722。重新驱动设备 604 可以发送无间隙的第一数据流和第二数据流。存储 器控制器端口 602 可以接收无间隙的第一数据 720 和第二数据 722 的交替模式。存储器控 制器端口 602 可以把第一数据 720 引导到第一擦除控制器 608 并把第二数据 722 引导到第 二擦除控制器 610。经链路 606 无间隙地接收数据可以提高链路 606 的利用率。
存储器控制器 602 可以包括用以检查经链路 606 接收的数据中的错误的逻辑。例 如, ECC 检查可以指示擦除读数据 ( 例如, 第一数据 720) 包含单个位错误。存储器控制器 端口 602 可以调用 RBS 来校正错误。在错误被校正之后, 第一擦除控制器 608 可以向重新 驱动设备 604 发布擦除写命令 ( 例如, 第一命令 )。重新驱动设备 604 可以格式化该擦除写 命令并把该擦除写命令发送到第一存储器结构 730。该擦除写命令可以指示第一存储器结 构 730 利用被 RBS 校正过的擦除读数据重写第一存储器结构 730 中的数据。
由存储器控制器端口 602 发布的第二擦除命令 616 中的一个可以是擦除写命令。 重新驱动设备 604 可以发布到第一存储器结构 730 和第二存储器结构 732 两者的擦除写命 令的交替模式。第一擦除命令 614 和第二擦除命令 616 的交替发布可以允许存储器控制器
端口 602 经单个链路 606 既擦除第一存储器结构 730 又擦除第二存储器结构 732。对多个 存储器结构执行存储器擦除提高了存储器控制器端口 602 的效率并减小了存储器等待时 间。
图 8 是用以响应错误检测并且总体上标记为 800 的方法的第三实施方式的流程 图。方法 800 是由图 6 和 7 的系统中的任何一种或者其任意组合来执行的。方法 800 包括 在块 802 在第一擦除控制器处创建第一擦除命令。例如, 图 6 和 7 的第一擦除控制器 608 可以创建第一擦除命令 614。方法 800 还包括在块 804 在第二擦除控制器处创建第二擦除 命令。例如, 图 6 和 7 的第二擦除控制器 610 可以创建第二擦除命令 616。方法 800 还包 括在块 806 在存储器控制器端口处交替发布第一擦除命令和第二擦除命令。例如, 图6和 7 的存储器控制器端口 602 可以交替发布第一擦除命令 614 和第二擦除命令 616。
特定的实施方式可以采取完全硬件实施方式、 完全软件实施方式或者包含硬件和 软件元素的实施方式的形式。
所公开的方法是在软件中实现的, 其包括但不限于固件、 驻留软件、 微代码, 等等。
另外, 实施方式可以采取可以从计算机可用或计算机可读介质访问的计算机程序 产品的形式, 其中计算机可用或计算机可读介质提供了由计算机或者任何指令执行系统使 用或者相关使用的程序代码。为了本描述的目的, 计算机可用或计算机可读介质可以是可 包含、 存储、 传送、 传播或运输由指令执行系统、 装置或设备使用或者相关使用的任何装置。
介质可以是电、 磁、 光、 电磁、 红外或者半导体系统 ( 或装置或设备 ) 或者传播介 质。计算机可读介质的例子包括半导体或固态存储器、 磁带、 可拆卸计算机盘、 随机存取存 储器 (RAM)、 只读存储器 (ROM)、 刚性磁盘和光盘。目前光盘的例子包括紧凑盘 - 只读存储 器 (CD-ROM)、 紧凑盘 - 读 / 写 (CD-R/W) 和 DVD。
适于存储和 / 或执行程序代码的数据处理系统将包括至少一个直接或者通过系 统总线间接耦合到存储器元件的处理器。 存储器元件可以包括在程序代码实际执行过程中 所采用的本地存储器、 大容量储存器和高速缓存存储器, 其中高速缓存存储器提供对至少 一些程序代码的临时存储, 以便减少在执行过程中必须从大容量储存器检索代码的次数。
输入 / 输出或者 I/O 设备 ( 包括但不限于键盘、 显示器、 指向设备, 等等 ) 可以直 接或者通过中间 I/O 控制器耦合到系统。
网络适配器也可以耦合到系统, 以便使数据处理系统能够通过中间的私有或公共 网络耦合到其它数据处理系统或远程打印机或存储设备。调制解调器、 线缆调制解调器和 以太网卡仅仅是目前可用的网络适配器的一些类型。
尽管已经通过对各种实施方式的描述例示了本发明, 而且尽管已经相当具体地描 述了这些实施方式, 但是本申请人的意图不是要把所附权利要求的范围约束到或者以任何 途径限制到这种细节。 因此, 本发明更广的方面不限于所示出和描述的具体细节、 代表性装 置、 方法和例示性例子。 相应地, 在不背离如所附权利要求定义的本申请人总的发明构思的 范围的情况下, 可以背离这种细节。