首页> 中国专利> 包括用于执行纠错和存储器测试操作的封装内定序器的存储器子系统

包括用于执行纠错和存储器测试操作的封装内定序器的存储器子系统

摘要

定序器部件的处理设备可以从所述定序器部件外部的控制器接收数据。所述定序器部件的所述处理设备可以对从所述定序器部件外部的所述控制器接收的所述数据执行纠错操作,以生成与所述数据相关联的码字。所述码字可以存储在与所述定序器部件耦合的存储器部件处。

著录项

  • 公开/公告号CN112823340A

    专利类型发明专利

  • 公开/公告日2021-05-18

    原文格式PDF

  • 申请/专利权人 美光科技公司;

    申请/专利号CN201980066784.9

  • 发明设计人 S·米塔尔;戴颖煜;吴程元;J·朱;

    申请日2019-09-06

  • 分类号G06F11/10(20060101);G06F11/22(20060101);G06F11/263(20060101);

  • 代理机构11287 北京律盟知识产权代理有限责任公司;

  • 代理人王龙

  • 地址 美国爱达荷州

  • 入库时间 2023-06-19 11:00:24

说明书

技术领域

本公开的实施例总体上涉及存储器子系统,更具体地说,涉及包括用于执行纠错和存储器测试操作的封装内定序器的存储器子系统。

背景技术

存储器子系统可以是存储系统,诸如固态驱动器(SSD)或硬盘驱动器(HDD)。存储器子系统可以是存储器模块,诸如双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)或非易失性双列直插式存储器模块(NVDIMM)。存储器子系统可以包括一或多个存储数据的存储器部件。存储器子系统可以包括一或多个存储数据的存储器部件。存储器部件可以是例如非易失性存储器部件和易失性存储器部件。一般而言,主机系统可以利用存储器子系统将数据存储在存储器部件处,并且从存储器部件中检索数据。

附图说明

通过下面给出的详细描述和通过本公开的各种实施例的附图,可以更充分地理解本公开。

图1示出了根据本公开的一些实施例的包括存储器子系统的示例性计算环境。

图2是根据本公开的一些实施例的用于对数据执行编码纠错操作的示例性方法的流程图。

图3是根据本公开的一些实施例的用于对数据执行解码纠错操作的示例性方法的流程图。

图4是根据本公开的一些实施例的用于执行存储器部件的测试的示例性方法的流程图。

图5是本公开的实施例可以在其中操作的示例性计算机系统的框图。

具体实施方式

本公开的各方面涉及一种包括用于执行纠错和存储器测试操作的封装内定序器部件的存储器子系统。存储器子系统在下文还称为“存储器设备”。存储器子系统的实例是经由外围互连(例如,输入/输出总线、存储区域网络)耦合到中央处理单元(CPU)的存储设备。存储设备的实例包括固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器和硬盘驱动器(HDD)。存储器子系统的另一实例是经由存储器总线耦合到CPU的存储器模块。存储器模块的实例包括双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插式存储器模块(NVDIMM)等。在一些实施例中,存储器子系统是混合存储器/存储子系统。通常,主机系统可以利用包括一或多个存储器部件的存储器子系统。主机系统可以提供要存储在存储器子系统处的数据,并且可以请求从存储器子系统中检索数据。

存储器子系统可以包括能够存储来自主机系统的数据的多个存储器部件。每个存储器部件可以包括不同类型的媒介。媒介的实例包括但不限于非易失性存储器和基于闪存的存储器的交叉点阵列,诸如单级单元(SLC)存储器、三级单元(TLC)存储器和四级单元(QLC)存储器。不同类型的媒介的特征可能因媒介类型的不同而不同。与存储器部件相关联的特征的一个实例是数据密度。数据密度对应于存储器部件的每个存储器单元可以存储的数据量(例如,数据位)。存储器部件的特征的另一实例是访问速度,其对应于存储器部件访问存储在存储器部件处的数据的时间量。

存储器子系统还可以包括可操作地耦合到存储器部件的控制器。控制器可以作为主机系统和存储器子系统的存储器部件之间的“桥”,用于数据发送和/或管理。在一些情况下,控制器和相关联的存储器部件可以由不同的供应商制造,并且控制器和/或存储器部件中的每一者可以具有相应的封装。为了增加存储器子系统的容量,可以向存储器子系统添加存储器部件,并且控制器可以与多个存储器部件接口。在传统系统中,当在控制器和存储器部件之间使用并行接口时,控制器可以包括大量引脚来与存储器部件接口。包括大量引脚会增加控制器的封装尺寸,这又会增加传统系统的形状因数。

在一些传统系统中,控制器使用串行器/解串行器(SerDes)连接(例如,串行高级技术附接(SATA)、通用串行总线(USB)、外围部件互连高速(PCIe)、通用闪存(UFS)等)与主机系统接口来最小化引脚数。传统控制器可以包括定序器部件,所述定序器部件使用特定于存储器部件的存储器类型的协议和时序要求(例如,读取/写入延时等)来与与存储器部件接口并指示存储器部件。控制器可以经由并行接口与存储器部件接口,利用双倍数据速率(DDR)来获得一定的带宽和容量。增加与控制器直接接口的存储器部件的数量会占用更多空间,并且在路由并行接口时造成困难。结果,控制器和存储器部件之间的路由路径(例如,迹线)可能很长,从而危及信号完整性。进一步,使用经由并行接口到存储器部件的更长的路由路径会导致负载更大,从而消耗不期望的功率量。

另外,为了改善存储在存储器子系统中的数据的可靠性,一些传统控制器可以执行纠错操作。纠错操作可以指用于纠正数据中的一或多个错误的任意合适的技术,诸如纠错码、冗余操作等。

纠错操作使用特定于耦合到传统控制器的存储器部件的存储器类型的参数。例如,参数可以用于基于存储器部件的类型来配置码字的尺寸。当新一代存储器部件添加到存储器子系统以扩展存储器子系统的容量时,控制器的固件通常用新一代存储器部件的存储器类型的新参数来更新。可以关闭控制器进行更新,从而导致处理停机期。当更新控制器时,存储器系统可能会因为控制器没有执行纠错操作而出现吞吐量问题。此外,当试图解码码字时,控制器可以从存储码字的存储器部件读取和重读数据。数据可以通过控制器和存储器部件之间的并行接口发送,由于迹线的长度,这会使用不期望的功率量和/或影响数据完整性。

进一步,传统上,当测试存储器部件时,存储器部件可以耦合到对存储器部件执行一或多个测试的测试板。每种存储器类型的存储器部件可以有不同的测试要求。因此,可以有不同的测试板专用于测试特定类型的存储器部件。使用专用测试板测试存储器部件的成本可能会非常高。进一步,对于一些较新的存储器部件,可能没有开发测试板来测试较新的存储器部件。

本公开的各方面通过将定序器部件与控制器分离并且在单个封装中包括具有一或多个存储器部件的定序器部件来解决上述和其它缺陷。定序器部件可以执行纠错操作和/或存储器测试操作。定序器部件可以在独立的硅中制造,存储器部件可以在独立的管芯中制造,并且独立的硅和独立的管芯可以包括在同一封装中。封装可以指支持电触点的外壳,电触点将封装连接到应用板,并防止物理损坏和腐蚀。应用板可以指控制器、封装和/或存储器部件所在的印刷电路板。每个定序器部件与一定类型(例如,交叉点阵列、NAND闪存等)的存储器部件操作,并且可以与具有所述类型存储器的多个存储器部件一起操作。定序器部件可以经由特定于存储器类型的协议与存储器部件接口。每个封装可以包括与各自不同类型的存储器部件接口的多个定序器部件。进一步,存储器子系统可以包括多个封装,每个封装包括与一或多个存储器部件接口的一或多个定序器部件。

定序器部件可以经由SerDes连接与控制器接口,所述连接提供比并行接口更高的带宽。进一步,SerDes连接比并行连接使用更少的引脚。因此,使用所公开的技术可以减少控制器中的引脚数,同时仍然容纳与耦合到控制器的封装中包括的相同数量或更多的存储器部件。减少控制器的引脚数可以导致存储器子系统的形状因数减小,所述存储器子系统包括与包括更多引脚的先前传统系统相同的容量(例如,相同数量的存储器部件)。

进一步,可以改善信号完整性,因为独立封装内的定序器部件和存储器部件之间的距离比定序器部件位于控制器内的传统系统中的定序器部件和存储器部件之间的距离短。也就是说,封装比应用板小,因此,封装内的定序器部件和存储器部件之间的迹线比传统系统的短,在传统系统中,迹线在应用板上延伸。与路由路径较长的传统系统相比,较短的迹线可以改善信号完整性,以及降低封装负载和消耗更小的功率。

在一些实施例中,定序器部件可以执行纠错操作。例如,定序器部件可以包括执行纠错引擎的处理设备。纠错引擎可以包括分别执行编码纠错操作和解码纠错操作的编码器和解码器。纠错引擎可以编程为基于定序器部件所附接的存储器部件的存储器类型来执行纠错操作。在定序器部件处执行至少一些纠错操作可以降低控制器处的复杂性,因为控制器不必管理与存储器子系统中不同存储器类型的存储器部件相关联的所有不同的纠错码参数。进一步,通过减少控制器和定序器部件之间的连接上的数据流量,可以降低功耗并且改善数据信号的完整性,因为定序器部件可以在封装中本地执行纠错操作,并且将解码的数据发送到控制器。也就是说,在一些实施例中,执行至少一些纠错操作的定序器部件可以减少通过控制器和定序器部件之间的连接发送的数据流量。

在一些实施例中,定序器部件可以迭代地执行纠错操作,直到从一或多个存储器部件读取的数据中的错误被纠正。例如,可以执行第一纠错操作来纠正数据中的至少一个错误,并且可以对修改的数据执行另一纠错操作来纠正另一错误。此类实施例可以增强存储器子系统的性能,因为与在传统存储器系统中使用存储器部件和控制器之间的较长的迹线相比较,在纠错期间使用封装中的较短的迹线,存储器部件和定序器部件之间的多个数据发送更快。此外,在一些实施例中,定序器部件可以执行第一级的一或多个纠错操作,其纠正从一或多个存储器部件读取的数据中包括的一或多个错误,并且控制器可以执行第二级的一或多个纠错操作,以纠正数据中包括的附加(例如,剩余)错误。此类实施例还可以通过纠正定序器部件处的大多数错误来增强性能,从而减少传统存储器系统中控制器和存储器部件之间来回发送的次数。

在一些实施例中,定序器部件可以向控制器发送通知,通知指示定序器部件包括纠错功能。这一通知可以使控制器将从主机接收的原始数据发送到定序器部件,而不对原始数据执行编码纠错操作。在此类情况下,定序器部件可以接收原始数据并且对原始数据进行编码,以基于封装中的存储器部件的存储器类型来生成码字。此外,如果定序器部件指示定序器部件不具有纠错功能或者不提供指示定序器部件包括纠错功能的通知,则控制器可以对与耦合到所述定序器部件的存储器部件相关联的任意数据执行纠错操作。在另一实例中,控制器可以查询定序器部件以确定定序器是否具有纠错功能。如果不具有,则控制器可以对与耦合到所述定序器部件的存储器部件相关联的任意数据执行纠错操作。

另外,在一些实施例中,定序器部件还可以包括存储器测试引擎,以对耦合到定序器部件的存储器部件执行一或多个测试。包括存储器测试引擎和在定序器部件内执行存储器测试可以降低与测试存储器部件相关联的成本。进一步,存储器测试引擎可以更新以执行特定于耦合到定序器部件的存储器部件的类型的测试,从而能够测试缺少测试板的新的存储器部件类型。存储器测试引擎可以包括测试模式生成器和比较器。测试模式生成器可以生成对应于向一或多个存储器部件读取和/或写入数据的操作的测试模式。测试模式生成器可以生成要写入一或多个存储器部件的数据。测试模式可以模拟一定的操作条件,诸如执行多次写入,以确定存储器部件在一定温度下是否可以正常工作。进一步,测试模式可以强调用于通过定序器部件和存储器部件之间的接口将信号从定序器部件发送到存储器部件的测试时序要求。可以利用不同的电压来执行测试,以确定存储器部件是否在不同的电压下正确地写入和/或读取数据。进一步,存储器测试引擎可以对存储器参数进行编程,诸如读取电压电平,以提高测试期间读取数据的质量。

测试模式可以基于一或多个存储器部件的存储器类型。例如,在不同的存储器类型上可能存在已知的接口问题,因此测试模式可以包括某些读取和/或写入模式,以筛选出特定存储器类型中的缺陷。测试模式生成器可以由测试工程师编程。在一些实施例中,测试模式可以已经存储在存储器测试引擎可访问的存储器中和/或可以从另一部件和/或设备接收。

在执行测试模式以读取和/或写入数据之后,比较器可以用于通过将从一或多个存储器部件检索到的数据与写入一或多个存储器部件的数据进行比较来确定从一或多个存储器部件读取的数据是否是特定测试所预期的。如果测试成功,检索到的数据和写入的数据应所述匹配,并且可以发送指示成功的通知。如果测试不成功,检索到的数据和写入的数据应所述不匹配,并且可以发送指示不成功的通知。

本公开的一些优点包括通过在定序器处执行纠错操作以及减少存储器控制器和存储器部件之间的发送次数来增强存储器子系统的性能。进一步,可以通过在定序器处执行纠错操作来降低功耗,因为在纠错操作期间由定序器读取的数据通过短的迹线在定序器和存储器部件之间发送。这可以通过使用定序器和存储器部件之间的短的迹线来执行纠错操作来改善信号完整性,如果在发送期间数据中没有引入错误,则这可以改善纠正任意错误的质量。附加优点可以包括通过在定序器中包括存储器测试引擎来降低测试存储器部件的成本。

图1示出了根据本公开的一些实施例的包括存储器子系统110的示例性计算环境100。存储器子系统110可以包括媒介,诸如存储器部件112。存储器部件112可以是易失性存储器部件、非易失性存储器部件或其组合。在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合存储器/存储子系统。

在一些实施例中,存储器部件112可以包括在封装130中。可以存在多个封装(由省略号131表示),每个封装包括一或多个相应的存储器部件。如图所示,存储器部件112A至112N耦合到封装130A中的定序器部件140。应当理解,封装130中可以包括多个定序器部件,并且每个定序器部件可以耦合到一或多个相应的存储器部件。每个定序器部件140可以在独立的硅中制造,每个存储器部件112可以在独立的管芯中制造。存储器子系统110可以包括存储器系统控制器115(下文称为“控制器”)。定序器部件140和存储器部件112可以包括在单个封装130中,并且经由短的迹线162耦合,以改善从定序器部件140向存储器部件112发出命令的性能。与传统布置相比较,通过在定序器部件140和存储器部件之间使用较短的迹线,可以降低功率负载消耗,并且可以提高数据信号完整性。此外,如本文所讨论的,将定序器部件140移动到与控制器115分离的封装130可以提供许多其它益处,诸如降低存储器子系统110的形状因数、增加控制器115和存储器部件112之间的带宽等。

例如,与并行接口相比较,封装130中的定序器部件140和存储器部件112可以经由SerDes接口160耦合到控制器115。SerDes接口160提供比并行接口更高的带宽,并且还使用更少的输出引脚,从而减少控制器115向存储器子系统110提供相同容量(例如,存储器部件112的数量)所需的引脚数量。例如,SerDes接口可以使用六个引脚(例如,两个用于时钟,两个用于发送,两个用于接收),而并行接口可以使用二十多个引脚进行操作。通过减小控制器110的尺寸,减少控制器115的输出引脚数可以改善整个存储器子系统110的形状因数。进一步,从控制器115移除定序器部件140也可以减小控制器115的尺寸。

定序器部件140可以执行一或多个操作,并且可以基于相应的定序器部件耦合到的存储器部件112的类型来配置。例如,定序器部件140可以包括纠错引擎141、存储器测试引擎145和协议引擎150。纠错引擎141可以执行一或多个纠错操作来对从控制器115接收的数据进行编码和/或对从存储器部件112A读取的数据进行解码。因此,纠错引擎141可以包括编码器142和解码器143。解码纠错操作可以使用任意合适的纠错技术,诸如纠错码、冗余操作(例如,XOR)等。纠错码可以用于改善存储在存储器子系统110中的数据的可靠性。纠错码可以指用于表示数据序列的技术,以使得引入到数据中的错误能够基于其它剩余数据被检测和纠正。数据序列可以称为码字。纠错码的类型可以包括分组码(例如汉明码、里德-所罗门码等)。冗余操作可以指使用逻辑操作(例如,XOR)来重构数据。冗余重构操作使用精确错误位置的信息,并且已知错误位置的数量不超过阈值。

在封装130中使用较短的迹线可以改善纠错过程的性能,从而增强存储器子系统的整体性能。进一步,在一些实施例中,控制器不需要管理存储器部件112的存储器类型的各种纠错参数,因为每个封装的相应的定序器部件可以管理其各自的存储器部件112的参数。

此外,定序器部件140可以包括存储器测试引擎145,以对存储器部件112执行一或多个测试。可以定制测试以确保存储器部件112与控制器115兼容。存储器测试引擎145包括测试模式生成器146和比较器147。测试模式生成器146可以生成测试模式来测试存储器部件112。测试模式可以对应于与要在存储器部件112上执行的生成数据相关联的操作(例如,读取和/或写入)。测试可以强调通过使用测试模式来测试存储器部件112在各种温度下的操作来测试存储器部件112。另外,测试模式可以测试当发送和/或接收与存储器部件112相关联的数据信号时的时序窗口。测试可以确保存储器部件112满足经由存储器部件112和定序器部件140之间的接口发送信号的时序要求。测试模式生成器146可以在整个测试期间施加不同的电压,以确定当施加不同的电压时,存储器部件112是否正常工作(例如,存储正确的数据)。此外,由于不同的存储器类型(例如,交叉点阵列、闪存等)可以与不同的读取电压电平相关联,测试模式生成器146可以对诸如读取电压电平的存储器参数进行编程,以增强从特定存储器类型的存储器部件112读取的数据的质量。

测试完成后,比较器147可以将从存储器部件112读取的数据和与测试期间写入存储器部件112的测试模式相关联的数据进行比较。如果数据如预期的那样(例如,读取的数据与写入的数据匹配),则比较器147可以确定测试成功地完成,并且可以提供指示成功的通知。如果数据没有如预期的那样(例如,读取的数据与写入的数据不匹配),则比较器147可以确定测试没有成功地完成,并且可以提供指示不成功的通知。

定序器部件140还可以使用协议引擎150来执行其它操作。例如,协议引擎150可以通过对存储器部件112的存储器类型实施时序要求来试图最大化存储器部件112和定序器部件140之间的接口带宽。时序要求可能与对存储器类型执行读取/写入操作的延时相关。协议引擎150可以基于存储器部件112的类型的延时来确定何时发出读取/写入命令。进一步,协议引擎150可以基于与命令和命令中涉及的地址相关的某些规则对命令重新排序。也就是说,协议引擎150可以通过考虑确保数据一致性的规则来对读取/写入请求重新排序。例如,如果存在对相同的地址的写入请求和读取请求,则规则可以规定读取请求不能移到写入请求之前,因为读取请求将返回旧数据。因此,协议引擎150可以基于存储器部件112的带宽对操作重新排序,并应用何时将操作发送到存储器部件112的时序。

通常,计算环境100可以包括使用存储器子系统110的主机系统120。例如,主机系统120可以向存储器子系统110写入数据,并从存储器子系统110读取数据。主机系统120可以是计算设备,例如台式计算机、膝上型计算机、网络服务器、移动设备或包括存储器和处理设备的此类计算设备。主机系统120可以包括或耦合到存储器子系统110,使得主机系统120可以从存储器子系统110读取数据或向存储器子系统写入数据。主机系统120可以经由物理主机接口耦合到存储器子系统110。如本文所用,“耦合到”通常指部件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间部件)(无论是有线的还是无线的),包括诸如电、光、磁等的连接。物理主机接口的实例包括但不限于串行/解串行(SerDes)接口、串行高级技术附件(SATA)接口、外围部件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)等。物理主机接口可以用于在主机系统120和存储器子系统110之间发送数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可以进一步利用NVM快速(NVMe)接口来访问存储器部件112A至112N。物理主机接口可以提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。

存储器部件112可以包括不同类型的非易失性存储器部件和/或易失性存储器部件的任意组合。非易失性存储器部件的实例包括“与非”(NAND)型闪存存储器。每个存储器部件112可以包括一或多个存储器单元的阵列,诸如单级单元(SLC)或多级单元(MLC)(例如,三级单元(TLC)或四级单元(QLC))。在一些实施例中,特定的存储器部件可以包括存储器单元的SLC部分和MLC部分。每个存储器单元可以存储由主机系统120使用的一或多位数据(例如,数据块)。尽管描述了诸如NAND型闪存存储器的非易失性存储器部件,但是存储器部件112可以基于诸如易失性存储器的任意其它类型的存储器。在一些实施例中,存储器部件112可以是但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、或非((NOR))闪存存储器、电可擦除可编程只读存储器(EEPROM)和非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可以结合可堆叠的交叉网格数据访问阵列,基于体电阻的变化来执行位存储。另外,与多种基于闪存的存储器相比,交叉点非易失性存储器可以执行就地写入操作,其中可以对非易失性存储器单元进行编程,而无需事先擦除非易失性存储器单元。此外,存储器部件112的存储器单元可以被分组为存储器页面或数据块,其可以指用于存储数据的存储器部件的单元。

控制器115可以经由定序器部件140与存储器部件112通信,以执行诸如在存储器部件112处读取数据、写入数据或擦除数据的操作以及其它此类操作。在一个实例中,控制器115可以包括具有编码器118和解码器121的错误部件116。在一些实施例中,对于包括缺少纠错功能的定序器的封装,错误部件116可以用于分别使用编码器118和解码器121来执行任意合适的编码和/或解码纠错操作。在一些实施例中,错误部件116可以用作第二级纠错,以对由定序器部件140的纠错引擎141执行的第一级纠错部分纠正的数据提供附加纠错功能。在一些实施例中,错误部件116可以对从主机系统120接收的数据的一部分进行编码,并且将部分编码的数据发送到定序器部件140,以使得数据能够由纠错引擎141完成编码。在一些实施例中,控制器115可以接收定序器部件140包括纠错功能的通知。在此类情况下,控制器115可以将从主机系统120接收的原始数据转发给定序器部件140。原始数据可以指没有应用纠错操作(例如,编码)的数据。

如果使用,错误部件116可以执行用附加数据位(例如,奇偶校验位)对由主机系统120接收的原始数据进行编码的编码纠错操作,以形成将经由定序器部件140写入存储器部件112的码字。错误部件116还可以执行通过移除附加数据位来解码码字的解码纠错操作。编码/解码操作可以使用基于要在其中存储数据的存储器部件112的类型的某些配置参数。控制器115可以向定序器部件140发送一或多个码字。定序器部件140可以通过考虑存储器部件112A至112N的带宽和可用性、存储器部件112A至112N的时序要求(例如,读取/写入延时)以及关于读取/写入操作的定序的规则,来确定哪些码字的哪些部分要存储在存储器部件112A至112N上。

控制器115可以包括硬件,诸如一或多个集成电路和/或分立元件、缓冲存储器或其组合。控制器115可以是微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或者其它合适的处理器。控制器115可以包括配置为执行存储在本地存储器119中的指令的处理器(处理设备)117。在所示实例中,控制器115的本地存储器119包括配置为存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流程和路由的指令的嵌入式存储器,包括处理存储器子系统110和主机系统120之间的通信。在一些实施例中,本地存储器119可以包括存储存储器指针、提取的数据等的存储器寄存器。本地存储器119还可以包括用于存储微代码的只读存储器(ROM)。虽然图1中的示例性存储器子系统110已经示出为包括控制器115,但是在本公开的另一实施例中,存储器子系统110可以不包括控制器115,而是可以依赖于外部控制(例如,由外部主机提供,或者由与存储器子系统分离的处理器或控制器提供)。

通常,控制器115可以从主机系统120接收命令或操作,并且可以将命令或操作转换成指令或适当的命令,以实现对存储器部件112的期望的访问。在一些实施例中,控制器115还可以执行与存储器部件112相关联的逻辑块地址和物理块地址之间的地址转换。控制器115还可以执行存储器管理操作,诸如确定为存储器部件的存储器类型定制的损耗均衡方案,以及向定序器部件140发布表示损耗均衡方案的操作。

控制器115可以负责其它操作,诸如垃圾收集操作、加密操作和/或缓存操作。控制器115可以进一步包括主机接口电路,以经由物理主机接口与主机系统120通信。主机接口电路可以将从主机系统接收的命令转换成经由定序器部件140访问存储器部件112的命令指令,以及将与存储器部件112相关联的响应转换成用于主机系统120的信息。

存储器子系统110还可以包括未示出的附加电路系统或部件。在一些实施例中,存储器子系统110可以包括高速缓存或缓冲器(例如,DRAM)和地址电路(例如,行解码器和列解码器),其可以从控制器115接收地址并且解码地址以访问存储器部件112。

图2是根据本公开的一些实施例的用于对数据执行编码纠错操作的示例性方法200的流程图。方法200可以通过处理逻辑来执行,所述处理逻辑可以包括硬件(例如,处理设备、电路系统、专用逻辑、可编程逻辑、微代码、设备的硬件、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或它们的组合。在一些实施例中,方法200由图1的定序器部件140的处理设备(例如,纠错引擎141)执行。尽管以特定的次序或顺序示出,但是除非另有规定,否则可以修改过程的顺序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的顺序执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流也是可能的。

在框210处,定序器部件140的处理设备从定序器部件140外部的控制器115接收数据。定序器部件140包括在包括存储器部件112A的封装130中,并且控制器115在封装130的外部。从控制器115接收的数据可以由主机系统120作为原始数据(例如,来自主机系统120的未被编码的数据)发送到控制器115,并且主机系统120可以指定所述数据将被写入存储器部件112。在一些实施例中,在接收数据之前,定序器部件140的处理设备可以向控制器115发送通知,所述通知指示定序器部件140包括执行纠错操作的功能。通知可以使得控制器115将原始数据发送到存储器控制器115外部的定序器部件140,而不在控制器115处对原始数据执行编码操作。在一些实施例中,在控制器115和定序器140协调执行纠错操作的情况下,控制器115可以部分编码数据,并且定序器部件140的处理设备可以对从控制器115接收的部分编码的数据进行完全编码。

在框220处,定序器部件140的处理设备对从控制器115接收的数据执行纠错操作。纠错操作可以是编码纠错操作,其用附加数据位(例如,奇偶校验位)对从控制器115接收的原始数据或部分编码的数据进行编码,以生成码字。处理设备可以接收存储器部件112A的存储器类型的指示。存储器类型可以对应于存储器部件112A的结构(例如,交叉点、闪存等)。编码纠错操作可以使用基于要在其中存储码字的存储器部件112A的存储器类型的某些配置参数。例如,可以基于存储器部件112A的存储器类型来选择码字的尺寸、码字的速率和/或码字的类型。

在一些实施例中,最大距离可分离码,诸如里德-所罗门码,可以用于编码纠错操作。里德-所罗门码通过向数据中添加额外的冗余位来编码数据块。例如,每个s位的k个数据符号可以编码成n个符号码字,其中奇偶校验符号被添加到k个数据符号。可以基于数据块生成数学运算(例如,多项式),并且可以使用数学运算来获得奇偶校验位。奇偶校验位可以添加到数据块中。

各种原因(例如,噪声通信、存储器部件故障、异步掉电等)会导致码字的数据包括错误(例如,翻转的位、丢失的位等)。如果存储在存储器部件112A或存储器部件112A-112N处的码字中存在错误,则码字的奇偶校验位或其它位可以在原始数学运算中使用,以获得原始数据块和/或奇偶校验位,并且纠正码字中的错误。

在框230处,定序器部件140的处理设备将码字存储在耦合到定序器部件140的存储器部件112A处。在一些实施例中,可能有多个存储器部件112A-112N耦合到定序器部件140。处理设备可以基于存储器部件112A-112N的带宽、存储器部件112A-112N的可用存储、损耗均衡等来确定存储器部件112A-112N中的一或多个用于存储码字。例如,处理设备可以在多于一个存储器部件112A-112N上对码字进行分条,以分发码字,这可以实现某些技术,诸如独立磁盘冗余阵列。

图3是根据本公开的一些实施例的用于对数据执行解码纠错操作的示例性方法300的流程图。方法300可以通过处理逻辑来执行,所述处理逻辑可以包括硬件(例如,处理设备、电路系统、专用逻辑、可编程逻辑、微代码、设备的硬件、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或它们的组合。在一些实施例中,方法300由图1的定序器部件140的处理设备(例如,纠错引擎141)执行。尽管以特定的次序或顺序示出,但是除非另有规定,否则可以修改过程的顺序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的顺序执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流也是可能的。

在框310处,定序器部件140的处理设备接收读取存储在存储器部件112A处的数据(例如,码字)的操作。操作可以由主机系统120发送到控制器115,并且控制器115可以将操作发送到定序器部件140的处理设备。

在框320处,响应于接收操作,定序器部件140的处理设备从存储器部件112A或存储器部件112A-112N中检索码字。

在框330处,定序器部件140的处理设备执行与码字相关联的解码操作以生成数据。在一些实施例中,解码操作可以包括将纠错码应用于码字,以试图解码码字(例如,移除奇偶校验位)和/或修复一或多个位错误。例如,将纠错码应用于存储在存储器部件112A或存储器部件112A-112N中的数据可以导致获得包括至少一个纠正位的更新数据。如果使用里德-所罗门码,用于编码码字的数学运算(例如,多项式)可以与码字的一或多个原始位和/或奇偶校验位一起使用,以获得将包括错误的位改变到的正确位。

在一些实施例中,定序器部件140的处理设备可以识别数据的一部分包括第一错误,所述第一错误无法由定序器部件140执行的解码操作进行解码。解码操作可能已经纠正了一或多个其它错误,但是数据的所述部分可能仍然包括至少一个其它错误。因此,处理设备可以在包括所述部分的数据上执行另一纠错操作(例如,纠错码、冗余操作等)。执行数据的多次读取可以使处理设备能够获得指示数据的值是可信的(例如,每次读取返回相同的值)、经历翻转(例如,移动读取电压电平显示值变化)还是错误的(例如,错误的值)的信息。如前所述,由于定序器部件140接近封装130中的存储器部件112A,定序器部件140和存储器部件112A之间的迹线较短,从而降低了功耗并且改善了解码期间的读取延时。因此,在具有存储器部件112A的封装130中包括执行纠错操作的定序器部件140可以改善存储器子系统110的性能。

在一些实施例中,当定序器部件140的处理设备识别数据的一部分包括无法由定序器部件140执行的解码操作进行解码的错误时,处理设备可以将数据发送到控制器115,以使控制器115解码数据的至少所述部分,以纠正无法由定序器部件140执行的解码操作进行解码的错误。作为由定序器部件140执行的解码操作的结果,数据可以包括至少一个纠正的位。在本实施例中,由定序器部件140执行的解码操作可以表示第一级纠错,而由控制器115执行的解码操作可以表示第二级纠错。纠错操作可以使用也可以不使用与错误位位置相关的任意信息。在一些实施例中,由定序器部件140执行的第一级纠错可以比由控制器115执行的第二级纠错更强。也就是说,第一级纠错通常比第二级纠错能纠正更多的错误。例如,第一级纠错可以纠正128字节码字中的第一数量的位(例如,20),而第二级纠错可以纠正比第一数量的位少的第二数量的位(例如,1个符号)。在任意实施例中,当解码码字并且获得原始数据时,原始数据可以发送到主机系统120。

图4是根据本公开的一些实施例的用于执行存储器部件112A的测试的示例性方法400的流程图。方法400可以由处理逻辑来执行,所述处理逻辑可以包括硬件(例如,处理设备、电路系统、专用逻辑、可编程逻辑、微代码、设备的硬件、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或它们的组合。在一些实施例中,方法400由图1的定序器部件140的处理设备(例如,存储器测试引擎145)执行。尽管以特定的次序或顺序示出,但是除非另有规定,否则可以修改过程的顺序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的顺序执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流也是可能的。

在框410处,定序器部件140的处理设备生成测试模式来执行存储器部件的测试。定序器部件140驻留在与控制器115分离的封装130中。测试模式可以对应于存储器部件112A处的数据的读取、写入和/或擦除操作。处理设备可以生成要执行的操作模式,以及要写入和/或从存储器部件112A读取的数据。某些存储器类型的存储器部件112A可以与某些问题(例如,桥接问题)相关联。处理设备可以接收存储器部件112A的存储器类型的指示,并且基于存储器类型定制测试模式以测试已知问题。

测试模式可以设计为在一定温度下测试存储器部件112A是否正常工作(例如,正确存储数据并且正确提供数据)。考虑到存储器部件112A的存储器类型,可以基于存储器部件112A的设计规范来选择温度。测试模式可以使用要执行的特定数量或顺序的操作,以使存储器部件112A在操作期间达到各种温度。进一步,在测试期间可以使用各种不同的电压来评估当施加不同的电压时存储器部件是否正常工作。此类温度和/或电压强调测试可以提供存储器部件112A的耐久性的指示。

在一些实施例中,测试模式可以经由定序器部件140和存储器部件112A之间的接口强调与存储器部件112A相关联的测试时序要求(例如,时序窗口)。时序要求可以指定存储器部件112A必须发送信号和/或执行操作的时间量。测试时序要求可以确保存储器部件112A满足与存储器部件112A的存储器类型相关联的某些响应度标准,并且可以确保存储器部件112A与存储器部件112A要操作的控制器115兼容。在一些实施例中,可以生成测试模式以在不同的温度和/或不同的电压下强调测试时序要求。

在框420处,定序器部件140的处理设备执行测试模式以将数据写入存储器部件112A。如上所述,在一些实施例中,测试模式可以包括任意合适的操作模式(例如,写入、读取、擦除等)和被确定为对测试存储器部件112A的一或多个方面有用的数据。

在框430处,定序器部件140的处理设备从存储器部件112A中检索数据。处理设备可以通过从存储器部件112A读取数据来检索数据。在一些情况下,数据可以包括一或多个错误(例如,翻转位、擦除位等)。执行存储器测试引擎145的定序器部件140的处理设备可以编程存储器参数,诸如读取电平电压以试图使用修改的读取电平电压来重新读取数据。在一些实施例中,使用不同的读取电平电压可以无错误地返回数据。如果数据仍然含有一或多个错误,则处理设备可以使用定序器部件140的纠错引擎141来试图纠正错误。纠错引擎141可以对写入存储器部件112A的测试模式的数据执行一或多个纠错操作,并且将经纠正的数据返回给存储器测试引擎145。

在框440处,定序器部件140的处理设备将检索到的数据与写入存储器部件112A的测试模式的数据进行比较。执行比较器147的定序器部件140的处理设备可以将检索到的数据与写入存储器部件112A的测试模式的数据进行比较。

在框450处,定序器部件140的处理设备基于检索到的数据与测试模式的数据的比较来确定存储器部件112A的测试是否成功地完成。例如,如果检索到的数据与写入存储器部件112A的测试模式的写入的数据匹配,则处理设备可以确定测试成功地完成(例如,存储器部件112A按预期工作)。响应于确定存储器部件112A的测试成功地完成,处理设备可以发送指示测试成功地完成的通知。如果检索到的数据与写入存储器部件112A的测试模式的数据不匹配,则处理设备可以确定测试没有成功地完成。响应于确定存储器部件112A的测试没有成功地完成,处理设备可以发送指示测试没有成功地完成的通知。

将存储器测试引擎145嵌入到包括存储器部件112A-112N的单个封装130中的定序器部件140中可以降低与测试存储器部件112A-112N相关联的复杂性和成本。例如,可能不需要专用于存储器部件的存储器类型的单独的板,因为存储器测试引擎145专门为耦合到定序器部件140的存储器部件112A-112N的存储器类型生成测试模式。因此,封装130可以连接到存储器类型不可知的板,以使用定序器部件140的存储器测试引擎145来测试存储器部件。包括不同存储器类型的存储器部件的多个不同的封装130可以使用相同的存储器类型不可知的板来运行它们各自的测试。

图5示出了计算机系统500的示例性机器,其中可以执行一组指令,用于使机器执行本文讨论的任意一或多种方法。在一些实施例中,计算机系统500可以对应于包括、耦合到或利用存储器子系统(例如,图1的存储器子系统110)的主机系统(例如,图1的主机系统120),或者可以用于执行控制器的操作或者执行定序器部件140的操作(例如,执行对应于图1的纠错引擎141和/或存储器测试引擎145的操作)。在另选的实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。所述机器可以客户端-服务器网络环境中的服务器或客户端机器的身份操作,充当对等(或分布式)网络环境中的对等机器,或者充当云计算基础架构或环境中的服务器或客户端机器。

所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络电器、服务器、网络路由器、交换机或网桥或能够执行指定要由所述机器采取的动作的指令集(按顺序或以其它方式执行)的任意机器。此外,虽然示出了单个机器,但是术语“机器”也应被理解为包括机器的任意集合,这些机器单独地或共同地执行一组(或多组)指令以执行本文所讨论的任意一或多个方法。

示例性计算机系统500包括处理设备502、主存储器504(例如,只读存储器(ROM)、闪存存储器,诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)之类的动态随机存取存储器(DRAM)等)、静态存储器506(例如,闪存存储器、静态随机存取存储器(SRAM)等)和数据存储系统518,它们经由总线530彼此通信。

处理设备502表示一或多个通用处理设备,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或者实现其它指令集的处理器或者实现指令集的组合的多个处理器。处理设备502还可以是一或多个专用处理设备,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备602被配置为执行用于执行本文所讨论的操作和步骤的指令526。计算机系统500可以进一步包括网络接口设备508以通过网络520进行通信。

数据存储系统518可以包括机器可读存储媒介524(也被称为计算机可读媒介),在所述机器可读存储媒介上存储有具体体现本文所述的方法或功能中的任意一或多种的一或多个指令集526或软件。指令526还可以在由计算机系统500执行所述指令期间完全或至少部分地驻留在主存储器504内和/或处理设备502内,主存储器504和处理设备502也构成机器可读存储媒介。机器可读存储媒介524、数据存储系统518和/或主存储器504可以对应于图1的存储器子系统110。

在一个实施例中,指令526包括实现对应于图1的定序器部件140的纠错引擎141和/或存储器测试引擎145的功能的指令。尽管在示例性实施例中将机器可读存储媒介524示出为单个媒介,但是术语“机器可读存储媒介”应被认为包括存储一或多个指令集的单个媒介或多个媒介。术语“机器可读存储媒介”还应被理解为包括能够存储或编码由机器执行的一组指令并且使机器执行本公开的任意一或多种方法的任意媒介。因此,术语“机器可读存储媒介”应被认为包括但不限于固态存储器、光学媒介和磁性媒介。

已经根据对计算机存储器内的数据位的操作的算法和符号表示来呈现前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将其工作实质传达给本领域其他技术人员的方式。算法在此并且通常被认为是导致期望结果的自洽操作序列。这些操作是需要物理地操纵物理量的那些操作。通常,尽管不是必须的,但是这些量采取能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。已经证明,有时原则上出于通用的原因将这些信号称为位、值、元素、符号、字符、项、数量等是方便的。

然而,应当牢记,所有这些或类似术语将与适当的物理量相关联并且仅仅是应用于这些量的方便标签。本公开可以涉及计算机系统或类似电子计算设备的动作和过程,所述计算机系统或类似电子计算设备将被表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转换为被类似地表示为计算机系统存储器或寄存器或其它这种信息存储系统内的物理量的其它数据。

本公开还涉及一种用于执行本文的操作的装置。这种装置可以被具体构造用于预期目的,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以被存储在计算机可读存储媒介中,例如但不限于:任意类型的磁盘,包括软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适于存储电子指令的任意类型的媒介,每个媒介都耦合到计算机系统总线。

本文中呈现的算法和显示并非固有地与任意特定计算机或其它装置相关。各种通用系统可以与根据本文的教导的程序一起使用,或者可以证明构造更专用的设备来执行所述方法是方便的。如下文描述中所阐述的,将出现用于各种这些系统的结构。另外,未参考任意特定编程语言来描述本公开。应当理解,可以使用各种编程语言来实施如本文所述的本公开的教导。

本公开可以被提供作为计算机程序产品或软件,其可以包括上面存储有指令的机器可读媒介,所述指令可以用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒介包括用于以机器(例如,计算机)可读的形式存储信息的任意机构。在一些实施例中,机器可读(例如,计算机可读)媒介包括机器(例如,计算机)可读存储媒介,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒介、光学存储媒介、闪存存储器部件等。

在前述说明书中,已参考本公开的特定示例性实施例描述了本公开的实施例。将显而易见的是,在不脱离如以下权利要求书中阐述的本公开的实施例的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,应以说明性意义而不是限制性意义来理解本说明书和附图。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号