具有多级纠错码(ECC)的低时延SSD读取架构的制作方法


具有多级纠错码(ecc)的低时延ssd读取架构
1.相关申请的交叉引用
2.本技术要求于2022年1月21日提交的美国临时专利申请序列号63/302,023的权益,该申请通过引用结合于此。
技术领域
3.本公开总体上涉及存储设备,并且更具体地,涉及用于低时延读取请求的架构。


背景技术:



4.本背景技术部分旨在仅提供上下文,并且本部分中任何概念的公开不构成对所述概念是现有技术的承认。
5.存储设备可以以相对较大的单位(例如,大约4kb的大小)来存储数据。对4kb的数据执行纠错可能需要相对较长的时间,这可能会延迟向主机返回读取请求的结果。
6.需要在存储设备中提供低时延读取。


技术实现要素:



7.本公开的实施例可以包括存储设备。存储设备可以包括分量(component)码字和块码字。接口可以接收对数据分块(chunk of data/data chunk)的读取请求。电路可以读取分量码字。纠错码(ecc)解码器可以基于分量码字来确定数据分块。
附图说明
8.下面描述的附图是如何实现本公开的实施例的示例,并且不旨在限制本公开的实施例。本公开的各个实施例可以包括在特定附图中未示出的元素和/或可以省略在特定附图中示出的元素。附图旨在提供说明,并且可能不是按比例绘制的。
9.图1示出了根据本公开的实施例的具有支持低时延读取架构的存储设备的机器。
10.图2示出了根据本公开的实施例的图1的机器的细节。
11.图3示出了根据本公开的实施例的图1的存储设备的细节。
12.图4示出了根据本公开的实施例的图1的存储设备中支持低时延读取架构的奇偶校验矩阵的示例。
13.图5示出了根据本公开的实施例的块码字的示例结构,该块码字包括图1的存储设备中支持低时延读取架构的分量码字。
14.图6示出了根据本公开的实施例的、当图5的分量码字被成功解码时,使用低时延读取架构从图1的存储设备读取和验证数据。
15.图7示出了根据本公开的实施例的、当图5的分量码字未被成功解码时,使用低时延读取架构从图1的存储设备读取和验证数据。
16.图8示出了根据本公开的实施例的、图3的ecc解码器试图纠正图5的分量码字中的错误的示例过程的流程图。
17.图9示出了根据本公开的实施例的、图1的存储设备执行低时延读取的示例过程的流程图。
18.图10a示出了根据本公开的实施例的、图1的存储设备执行低时延读取的另一个示例过程的流程图。
19.图10b继续根据本公开的实施例的、图1的存储设备执行低时延读取的另一个示例过程的图10a的流程图。
20.图11示出了根据本公开的实施例的、图1的存储设备从图5的块码字提取图5的分量码字的示例过程的流程图。
21.图12a示出了根据本公开的实施例的、图1的存储设备生成图5的分量码字和图5的块码字的示例过程的流程图。
22.图12b继续根据本公开的实施例的、图1的存储设备生成图5的分量码字和图5的块码字的示例过程的图12a的流程图。
具体实施方式
23.现在将详细参考本公开的实施例,在附图中示出实施例的示例。在以下具体实施方式中,阐述了多个具体细节,以使得能够彻底理解本公开。然而,应该理解,本领域普通技术人员可以在没有这些具体细节的情况下实践本公开。在其他情况下,没有详细描述公知的方法、过程、组件、电路和网络,以免不必要地模糊实施例的各个方面。
24.应当理解,尽管可以在本文使用术语第一、第二等来描述各种元素,但是这些元素不应该被这些术语所限制。这些术语仅用于区分一个元素和另一个元素。例如,在不脱离本公开的范围的情况下,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块。
25.本文公开的描述中使用的术语仅出于描述特定实施例的目的,并不旨在限制本公开。如在本公开和所附权利要求的描述中所使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另有明确指示。还应该理解,本文使用的术语“和/或”是指并包含一个或多个相关列出项目的任何和所有可能的组合。还将理解,当在本说明书中使用术语“包括”和/或“包含”时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。附图的组件和特征不一定是按比例绘制的。
26.存储设备使计算机系统能够写入数据以进行长期存储,并且在以后读取这些数据。这样的存储设备提供的存储量持续增长,目前多太字节(multi-terabyte)的存储设备正成为标准。
27.但是存储设备并不完美。无论存储设备是使用比特的磁编码的硬盘驱动还是使用电压对比特进行编码的固态驱动(ssd),都可能发生错误。如果存储在存储设备上的数据发生错误,请求数据的应用可能无法接收到正确的数据,这可能会影响所有下游操作。
28.为了防止错误,存储设备可以提供纠错。存储设备可以将纠错码(ecc)和数据一起存储。如果在数据中检测到错误,ecc可能能够纠错,使得请求应用可以接收正确的数据。较长的ecc可以支持较强的纠正(即,较长的ecc可能能够识别和/或纠正更多的错误)。相反,较短的ecc可能支持较弱的纠正,并且存储设备可能能够检测和/或纠正较少的错误。例如,
汉明码可以检测和纠正消息中的单比特错误,但是可能不能检测两比特错误。通过向汉明码添加另一个比特,汉明码可能能够检测消息中的两比特错误(尽管汉明码可能无法纠正两比特错误)。但是,尽管较长的ecc可以支持较强的纠正,但是较长的ecc也可能需要更多的存储用于ecc,潜在地减少了可用于数据的存储量。
29.存储设备通常以特定大小的单元来存储数据,并且纠错码可以与该数据的大小一致。例如,ssd可以以2kb、4kb、8kb或其他大小的块来存储数据。(比特数不是2的幂的块大小也是可能的,这样的块大小可以提供一些额外的效率。)当应用请求读取一些数据时,可以识别存储数据的块,并且可以读取数据和数据的ecc。ecc解码器可以验证数据被正确读取;如果不是,则ecc解码器可以使用ecc来试图纠错。(如上所述,ecc解码器可能对可被识别和/或纠正的错误的数量有限制:如果超过该限制,ecc解码器可能无法纠错。)
30.但是ecc检测器可能必须读取整个数据单元和该数据单元的整个ecc来执行纠错。例如,要对4kb数据块执行纠错,需要读取整个4kb数据块。要处理的数据量越大,码字越大,ecc检测器执行检错和/或纠错所花费的时间就越长。因此,ecc检测器操作所需的时间可以独立于主机实际请求的数据量。换句话说,无论主机请求整个4kb块还是仅请求来自该块的128b,ecc检测器都可以对整个4kb块进行操作。对于单个读取请求,这种延迟可能是可以接受的。但是,对于发出数百或数千个读取请求的应用(诸如深度学习推荐模型(dlrm)),这种延迟可能会在所有这种读取请求上成倍增加,并且可能会(由于应用等待存储设备返回数据)导致效率显著降低。
31.本公开的实施例可以通过提供多级ecc解码器架构来解决这些问题。不对较大单元(诸如4kb块)执行ecc解码,而是可以对较小单元(例如128b块)执行ecc解码。当读取请求到达时,可以识别数据分块,并且可以访问与该数据分块相关联的码字。然后,可以对分块而不是较大单元执行ecc解码,这可以导致更快的处理。
32.在大多数情况下,可能检测不到错误、或者可以基于分块的码字来纠错,并且可以更快地返回数据。在ecc解码器不能基于与分块相关联的码字来纠正分块的情况下,可以读取较大单元的码字。然后,ecc解码器可以试图在较大单元级别进行纠错,之后可以从改较大单元提取数据分块。
33.使用这样的读取架构,在大多数情况下可以执行低时延读取。在基于较小单元的ecc的纠错可能不被执行的情况下,基于较大单元的纠错仍然是可能的,且仅具有较小的开销。
34.图1示出了根据本公开的实施例的具有支持低时延读取架构的存储设备的机器。在图1中,示出了机器105,其也可以被称为主机、系统或服务器。尽管图1将机器105描绘为塔式计算机,但是本公开的实施例可以被扩展到任何形状因子或类型的机器。例如,机器105可以是机架式服务器、刀片式服务器、台式计算机、塔式计算机、微型塔式计算机、台式服务器、膝上型计算机、笔记本计算机、平板计算机、移动设备等。
35.机器105可以包括处理器110、存储器115和存储设备120。处理器110可以是各种处理器。(为了便于说明,处理器110以及下面讨论的其他组件被示出在机器外部:本公开的实施例可以将这些组件包括在机器内。)尽管图1示出了单个处理器110,但是机器105可以包括任何数量的处理器,处理器中的每一个都可以是单核或多核处理器,处理器中的每一个都可以实现精简指令集计算机(risc)架构或复杂指令集计算机(cisc)架构(以及其他可
能),并且可以以任何期望的组合来混合。
36.处理器110可以耦合到存储器115。存储器115可以是各种存储器,诸如闪存、动态随机访问存储器(dram)、静态随机访问存储器(sram)、持久随机访问存储器、铁电随机访问存储器(fram)或非易失性随机访问存储器(nvram),诸如磁阻随机访问存储器(mram)、相变存储器(pcm)或电阻随机访问存储器(reram)。根据需要,存储器115可以是易失性存储器或非易失性存储器。存储器115可以使用任何期望的形状因子:例如,单列直插存储器模块(simm)、双列直插存储器模块(dimm)、非易失性dimm(nvdimm)等。存储器115还可以是不同存储器类型的任何期望的组合。
37.存储器115可以由存储器控制器125管理。存储器115可以用于存储可被称为“短期”的数据:即,预期不被长时间存储的数据。短期数据的示例可以包括临时文件、被应用在本地使用的数据(可能已经从其他存储位置复制)等。
38.处理器110和存储器115还可以支持各种应用可以在其下运行的操作系统。这些应用可以发出从存储器115或存储设备120读取数据或者向存储器115或存储设备120写入数据的请求(也可以被称为命令)。当存储设备120用于支持经由某种文件系统读取或写入数据的应用时,存储设备120可以使用设备驱动器130来访问。尽管图1示出了一个存储设备120,但是机器105中可以有任何数量(一个或多个)的存储设备。存储设备120可以支持任何期望的(一个或多个)协议,包括例如非易失性存储器快速(nvme)协议、串行附接小型计算机系统接口(scsi)(sas)协议或串行at附件(sata)协议。存储设备120还可以包括任何期望的接口,包括例如外围组件互连快速(pcie)接口、计算快速链路(cxl)接口、u.2接口、u.3接口或m.2接口。存储设备120可以支持其中可以从存储设备120访问各个字节的字节寻址、或者支持其中可以从存储设备120访问较大数据单元(并且在从存储设备120访问较大单元之后,应用、操作系统或文件系统可以确定特定感兴趣字节)的块寻址。
39.尽管图1使用通用术语“存储设备”,但是本公开的实施例可以包括可以受益于计算存储单元的使用的任何存储设备格式,其示例可以包括硬盘驱动和固态驱动(ssd)。下面对“ssd”的任何引用都应该被理解为包括本公开的这些其他实施例。
40.术语“存储单元”旨在包括存储设备120和存储器115两者。也就是说,在下面使用术语“存储单元”的地方,该术语应该被理解为包括存储设备120和存储器115两者。尽管下面的讨论可能集中在存储设备120上(并且可能更具体地集中在ssd上),但是可以理解,无论是否明确陈述,本公开的实施例都可以类似地覆盖存储器115,并且因此可以被更一般地理解为是关于存储单元的。
41.一些应用可能会读取可以连续存储的大量数据。对于这样的应用,可以读取数据块(例如,其大小可以是大约4kb)。纠错码(ecc)可以用于确保从存储设备中正确读取数据。
42.但是其他应用可能读取相对少量的数据、或者可能读取作为少量数据分散在多个块中的大量数据。例如,深度学习推荐模型(dlrm)可以将数据作为向量存储在嵌入表中。这些嵌入表可能很大:例如,嵌入表可能存储千兆字节或太字节的数据。但是每个向量可能相对较小:例如,每个向量可能包括128个数据点,其中每个数据点使用四个字节(每个向量大约512b)、或者每个向量可能包括64个数据点,其中每个数据点使用两个字节(每个向量总共128b)。示例读取请求可能包括从一个嵌入表中读取比如64个向量—在上面的示例中总共是32768b或8192b。可能发生的情况是,这些向量分散在存储设备120上的各个块中。换句
话说,在每个4kb块中,只有512b(或128b)可能是感兴趣的。
43.如果将ecc应用于作为整体的块,则为了读取向量,可以使用ecc来读取和验证其中存储了向量的整个块。但是如果感兴趣的仅是该块中单个向量中的512b或者更糟仅是128b,则读取和解码整个4kb块可能会花费时间,这可能会减慢dlrm的执行。如果这个时间跨大量向量(例如64个向量,每个向量存储在存储设备120的不同块中)倍增,则延迟可能变得显著。
44.图2示出了根据本公开的实施例的图1的机器105的细节。在图2中,通常,机器105包括一个或多个处理器110,一个或多个处理器110可以包括存储器控制器120和时钟205,它们可以用于协调机器的组件的操作。处理器110还可以耦合到存储器115,作为示例,存储器115可以包括随机访问存储器(ram)、只读存储器(rom)或其他状态保存介质。处理器110还可以耦合到存储设备125和网络连接器210,网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可以连接到总线215,用户接口220和可以使用输入/输出(i/o)引擎225管理的i/o接口端口以及其他组件可以附接到总线215。
45.图3示出了根据本公开的实施例的图1的存储设备120的细节。在图3中,存储设备120的实现方式被示为固态驱动。在图3中,存储设备120可以包括接口305、主机接口层(hil)310、控制器315和各种闪存芯片320-1至320-8(也被称为“闪存存储装置(flash memory storage)”),它们可以被组织成各种通道325-1至325-4。接口305可以是用于将存储设备120连接到图1的机器105的其他组件的物理接口,并且可以包括例如外围组件互连快速(pcie)接口、计算快速链路(cxl)接口、u.2接口、u.3接口或m.2接口,以及其他可能接口。
46.主机接口层310可以跨接口305管理存储设备120和其他组件(诸如图1的处理器110)之间的通信。主机接口层310还可以(可能通过一个或多个网络连接)管理与远离存储设备120的设备的通信。这些通信可以包括从存储设备120读取数据的读取请求、向存储设备120写入数据的写入请求以及从存储设备120删除数据的删除请求。
47.主机接口层310可以管理只有一个端口的接口305、或者它可以管理跨多个端口的接口305。此外,如果存储设备120包括多个接口,则主机接口层310可以管理多个接口305。可替代地,存储设备120可以包括多个端口,多个端口中的每一个都可以具有管理跨该端口的通信的单独的主机接口层310。本公开的实施例还可以混合各种可能(例如,具有三个端口的ssd可能具有管理一个端口的一个主机接口层以及管理另外两个端口的第二主机接口层)。
48.控制器315可以管理对闪存芯片320-1至320-8的读取和写入操作,以及垃圾收集和其他操作。ssd控制器315可以包括转换层330、读取/写入电路335、ecc编码器340和ecc解码器345。转换层330可以管理如图1的主机105所使用的逻辑地址到存储设备120上实际存储数据的物理地址的映射。通过使用转换层330,当数据在存储设备120内从一个物理地址移动到另一个物理地址时,不需要通知图1的主机105。
49.读取/写入电路335可以用于处理来自图1的机器105的读取和写入请求。尽管图3将读取/写入电路335示为组合电路,但本发明的实施例可以包括用于读取和写入数据的单独的电路。此外,本公开的实施例可以包括多个读取和/或写入电路(或多个读取/写入电路335)以支持并行读取和/或写入操作:例如,每个通道325-1至325-4可以包括单独的读取/
写入电路335,因为在一个通道上读取或写入数据可能不会影响在另一个通道上读取或写入数据。
50.ecc编码器340可以执行编码以支持纠错,并且ecc解码器345可以执行解码以支持纠错。作为如何进行纠错编码和解码的高级描述,当接收到要写入存储设备120的数据时,该数据可以用附加信息(其可以被认为是纠错数据)来扩充。在本公开的一些实施例中,接收到的原始数据和附加信息的组合可以形成码字。附加信息可以被添加到原始数据的末尾、或者附加信息可以散布在原始数据中(如果需要,原始数据也可以被重新排列)。例如,如果原始数据包括比特d0至dn,并且附加信息包括比特e0至ek,则码字可以被表示为c=《d0,d1,d2,
…dn
,e0,e1,e2,
…ek
》(或其某种置换)。
51.问题仍然是如何选择附加信息比特ei。ecc编码器340可以包括奇偶校验矩阵h的表示。可以选择附加信息比特ei,使得奇偶校验矩阵h和码字c的乘积满足等式h
×
c=0。换句话说,如果码字中没有错误,则表示为h
×
c的奇偶校验操作应该返回零向量。一般地,奇偶校验矩阵h可以包括任意数量的行;为了使奇偶校验矩阵h和码字c的乘积成为可能,奇偶校验矩阵h中列的数量可以等于(向量)码字c中项(entry)的数量。乘积h
×
c可以被认为是要求解的线性方程组:如果该线性方程组有解,则乘积h
×
c可以是零向量。
52.如果奇偶校验矩阵h和码字c的乘积不是零向量,则ecc解码器345可以确定在码字c中存在错误。具有错误的这个码字(也可以被称为损坏的码字)可以被表示为码字在这种情况下,ecc解码器345可以试图到尽可能“接近”并且为0的另一个码字(“接近度”可以使用汉明距离来测量,汉明距离测量码字中需要被改变以将一个字改变为另一个字的字符的数量。)如果可以到这样的码字则ecc解码器345能够纠正数据中的错误;如果无法到码字则数据可能是不可纠正的,并且可能返回错误。
53.注意,上述进程可能与数据的大小无关。也就是说,可以为包括正确数量的项的任何码字c计算乘积h
×
c。但是由于奇偶校验矩阵h可以被预先确定(例如,在制造时、或者被编程到存储设备120内的固件中时),奇偶校验矩阵h一般在其大小和值两个方面都是固定的。因为奇偶校验矩阵h的大小一般是固定的,所以码字c的大小可以由奇偶校验矩阵h中列的数量来决定。换句话说,如果预期奇偶校验矩阵h对4kb大小的码字进行操作,则可能无法使用较小的码字(因为可能无法求解由乘积h
×
c表示的线性方程组)。
54.但是,尽管奇偶校验矩阵h的大小可能决定码字c的大小,但这一事实并不妨碍在该方法中使用变体,如本公开的实施例所支持的。一种变体可以包括使用两种不同的奇偶校验矩阵h1和h2的ecc编码器340和ecc解码器345。奇偶校验矩阵h1可以用于生成或验证比如4kb大小的码字,而奇偶校验矩阵h2可以用于生成或验证比如128b大小的码字。换句话说,存储设备120可以为一种大小(比如128b)的数据存储一个码字,而为另一种大小(比如4kb)的数据存储另一个码字。存储设备120甚至可以具有两个或更多个ecc编码器340(和/或两个或更多个ecc解码器345),以支持对使用不同的奇偶校验矩阵生成的码字的使用。
55.但是这种解决方案可能被认为是不高效的。例如,在4kb大小的块中有32个128b大小的数据分块。如果使用不同的奇偶校验矩阵h1和h2,则大约8kb的存储空间可以用于存储4kb的数据。因为将存储设备120的有效容量减半可能被认为是不高效的,所以可以使用另一种方法。
56.在另一种变体中,可以使用图4所示的奇偶校验矩阵h。在图4中,示出了奇偶校验矩阵405。奇偶校验矩阵405可以包括沿着主对角线的各种奇偶校验子矩阵,被标识为h
c0
、h
c1
……
一直到h
cn
。因为每个奇偶校验子矩阵h
ci
都在主对角线上,并且那些行中的所有其他项都是零,所以h
ci
可以用于验证分量码字,并且奇偶校验矩阵405可以用于验证块码字。
57.例如,考虑图5中的块码字505。块码字505可以包括各种分量码字510-1、510-2和510-3(它们可以被统称为分量码字510)。可以使用图4的奇偶校验矩阵405的特定奇偶校验子矩阵h
ci
来验证每个分量码字510。例如,奇偶校验子矩阵h
c0
可以用于验证分量码字510-1,奇偶校验子矩阵h
c1
可以用于验证分量码字510-2
……
一直到奇偶校验子矩阵h
cn
,其可以用于验证分量码字510-3。
58.可以通过提取特定奇偶校验子矩阵h
ci
并计算乘积h
ci
×ci
(其中ci是块码字505中的第i个码字510)或者通过计算乘积(其中是第i个码字510的比特就位并且所有其他比特被设置为0的伪块码字),然后提取将表示乘积h
ci
×ci
的比特,来完成使用奇偶校验子矩阵h
ci
对分量码字510的验证。前种方式具有在执行计算乘积h
ci
×ci
中操作较少的益处,而后种方式可以通过避免在计算中潜在地使用图4的奇偶校验矩阵405和奇偶校验子矩阵h
ci
两者(并且通过辨识不在分量码字ci中的的比特可能对结果没有贡献,从而可以跳过涉及那些比特的操作)来简化实现方式。
59.尽管图4示出了不同的奇偶校验子矩阵h
ci
,但是本公开的实施例可以对多于一个的分量码字使用相同的奇偶校验子矩阵hc。事实上,本公开的实施例可以使用相同的奇偶校验子矩阵hc来验证所有分量码字510。本公开的这些实施例可以减少图4的奇偶校验矩阵405所需的存储量,因为可以仅存储一个奇偶校验子矩阵hc(并且在矩阵操作中适当地重用该hc)。
60.回顾图4和图5,可以观察到,图4的奇偶校验矩阵405还可以包括奇偶校验子矩阵h
sp
和h
spci
,并且块码字505还可以包括超奇偶码字515。奇偶校验子矩阵h
sp
和h
spci
可以用于添加针对块码字的附加奇偶校验:与超奇偶码字515相组合,奇偶校验子矩阵h
sp
和h
spci
可以提供可以跨分量码字510使用的额外检错和/或纠错能力。以这样的方式,块码字505仍然可以提供比分量码字510可以为数据分块提供的更强的纠错。如果分量码字510可能未被验证或纠正,则块码字505仍然可以用于试图确定用户从块中请求的数据。
61.对于不同的奇偶校验子矩阵h
ci
,本公开的实施例可以使用相同的奇偶校验子矩阵h
spc
,而不是不同的奇偶校验子矩阵h
spci
。本公开的这些实施例可以减少图4的奇偶校验矩阵405所需的存储量,因为可以仅存储一个奇偶校验子矩阵h
spc
(并且在矩阵操作中适当地重用该h
spc
)。
62.对于本文的其余部分,术语“块”可以指相对较大量的数据,诸如4kb的数据,而术语“分块”可以指相对较小量的数据,诸如128b。“块”可以是图1的存储设备120中用于纠错的典型单元,而“分块”可以是应用可以从图1的存储设备120请求的数据量。此外,术语“块”可以指除了块之外的存储的单位(例如,用于硬盘驱动的扇区)。
63.在上面的讨论中(并延伸到下面的讨论),码字的大小和数据的大小之间没有区别。例如,上面的讨论涉及4kb大小的数据和4kb大小的码字。因为码字可以包括附加数据以使得能够对原始数据进行纠错,所以可以理解,如果数据的大小是4kb,则对应的码字的大小可以大于4kb;类似地,如果码字的大小是4kb,则对应的数据的大小可能小于4kb。但是由
于本文描述的检错和/或纠错的原理可以与数据的大小或码字的大小无关,所以当数据或码字被描述为比如128b或4kb的大小时,不应该存在混淆。
64.图6示出了根据本公开的实施例的、当图5的分量码字510被成功解码时,使用低时延读取架构从图1的存储设备120读取和验证数据。在图6中,在机器105上运行的应用605可以请求从存储设备120访问数据分块。最终,该读取请求可以被传递到设备驱动器130,设备驱动器130可以将该读取请求传递到存储设备120。存储设备120的主机接口层310可以接收该读取请求,并且图3的控制器315可以使用图3的转换层330来确定所请求的数据驻留的块。
65.在(使用图3的读取/写入电路335)从存储装置(storage)320读取数据时,可以从图5的块码字505提取分量码字510。该提取可以由图3的读取/写入电路335或ecc解码器345来完成。ecc解码器345然后可以试图验证分量码字510。在成功验证分量码字510后,数据分块610可以从存储设备120被提取并且(经由主机接口层310)返回到机器105,并最终返回到应用605。
66.如果ecc解码器345不能验证分量码字510,则ecc解码器可以试图纠正分量码字510中的错误。如果ecc解码器345能够纠正分量码字510中的错误,则数据分块610可以被提取并从存储设备120(经由主机接口层310)返回到机器105,并最终返回到应用605。
67.图7示出了根据本公开的实施例的、当图5的分量码字510未被成功解码时,使用低时延读取架构从图1的存储设备120读取和验证数据。在图7中,该顺序类似于参考图6描述的顺序。不同之处可能在于ecc解码器345可能无法纠正分量码字510中的错误。在这种情况下,ecc解码器345可以试图验证块码字505。因为块码字505更大,所以块码字505可以提供更强的纠正,并且因此可能能够纠正使用分量码字510可能无法纠正的错误(尽管由于给定块码字505大于分量码字510,使用块码字505纠错比使用分量码字510纠错可能花费更长的时间)。如果ecc解码器345能够验证块码字505、或者能够纠正块码字505中的任何错误,则数据分块610可以从存储设备120被提取并且(经由主机接口层310)返回到机器105,并最终返回到应用605。如果ecc解码器345不能验证块码字505并且不能纠正块码字505中的任何错误,则存储设备120可以向机器105返回错误。
68.上面的讨论没有具体解决如何纠正分量码字510(或块码字505)。由于这种纠正可能取决于ecc解码器345的实现方式,因此本公开的实施例可以支持任何期望的方法来纠正码字中的错误。作为示例,迭代解码方法可以用于试图纠正分量码字510中的错误。图8示出了示例迭代解码方法的流程图,该方法可以用于使用图5的块码字505来纠正图5的分量码字510中的错误。类似的方法(具有忽略图5的其他分量码字510或图5的超奇偶码字515的修改)可以用于试图纠正图5的分量码字510内的错误,而不参考图5的块码字505或图5的超奇偶码字515。
69.在图8中,初步假设分量码字有错误。在框805,图3的ecc解码器345可以初始化或递增迭代计数。如果图3的ecc解码器345处于试图纠错的第一次迭代中,则迭代计数可以被初始化为1;否则,迭代计数可以递增1。在框810,图3的ecc解码器345可以解码图5的其他分量码字510。在框815,图3的ecc解码器345可以向图5的分量码字510中的比特分配对数似然比。对数似然比可以表示图5的分量码字510中的特定比特是0或1的似然性。例如,对数似然比的范围可以从-8到7,其中-8表示比特应该是0的非常强的似然性,7表示比特应该是1的
非常强的似然性,而0表示比特可以是0或1的等同似然性。使用对数似然比,图3的ecc解码器345可以改变其值与对数似然比不一致的某些比特:因此对数似然比可以表示哪些比特最有可能是正确的或不正确的指示符。
70.在框820,图3的ecc解码器345可以解码图5的超奇偶码字515。在框825,图3的ecc解码器345可以确定图5的分量码字510是否已经被成功解码(即,错误已经被纠正)、或者在尝试纠错时已经使用了最大迭代次数。如果图5的分量码字510没有被成功解码,并且还没有尝试最大迭代次数,则处理可以返回到框810,以再次试图成功解码图5的分量码字510。否则,在框830,可以返回所请求的数据(如果图5的分量码字510被成功解码)或者可以返回错误(如果达到了最大迭代次数而没有成功解码图5的分量码字510)。
71.图9示出了根据本公开的实施例的、图1的存储设备120执行低时延读取的示例过程的流程图。在图9中,在框905,图1的存储设备120可以从图1的机器105接收读取请求。读取请求可以请求图6的数据分块610,该数据分块610可以小于其中存储图6的数据分块610的块。在框910,图1的存储设备120可以识别图3的存储装置320中包括图6的数据分块610的块。图1的存储设备120可以使用图3的转换层330将由图1的机器105在读取请求中提供的逻辑地址映射到其中存储图6的数据分块610的图3的存储装置320中的物理地址。如上所述,块可以大于图6的数据分块610。
72.在框915,图3的读取/写入电路335可以从块读取图5的分量码字510。在框920,ecc解码器345可以解码图5的分量码字510。一旦图5的分量码字510被解码,在框925,图1的存储设备120可以将图6的数据分块610发送到图1的机器105。
73.图10a-图10b示出了根据本公开的实施例的、图1的存储设备120执行低时延读取的另一个示例过程的流程图。在图10a中,在框1005,图3的ecc解码器345可以试图解码图5的分量码字510。在框1010,图3的ecc解码器345可以确定在图5的分量码字510中是否有错误。如果在图5的分量码字510中没有错误,则在框1015,图1的存储设备120可以例如通过移除(存储在图3的存储装置320的块中的)图5的分量码字510中被添加到图6的数据分块610的ecc比特来确定图6的数据分块610,在这之后处理可以结束。
74.如果在图1的分量码字510中存在错误,则在框1020,图3的ecc解码器345可以确定图5的分量码字510中的错误是否是可纠正的。如果是,则在框1025,图3的ecc解码器345可以纠正图5的分量码字510中的错误,并且处理可以返回到框1015以从纠正后的分量码字确定图6的数据分块610。注意,框1020和1025可以以其他方式来实现。例如,图3的ecc解码器345可以试图纠正图5的分量码字510中的错误,并且可以通过确定不能实际纠正图5的分量码字510中的错误来确定错误是不可纠正的。
75.如果图5的分量码字510中的错误是不可纠正的,则在框1030(图10b),图3的读取/写入电路335可以读取图5的块码字505。在框1035,图3的ecc解码器345可以确定在图5的块码字505中是否有错误。如果在图5的块码字505中没有错误,则在框1040,图1的存储设备120可以例如通过移除(存储在图3的存储装置320的块中的)图5的块码字505中被添加到图6的数据分块610的ecc比特以及不在图6的数据分块610中的任何比特来确定图6的数据分块610,并且处理可以结束。
76.如果在图1的块码字505中存在错误,则在框1045,图3的ecc解码器345可以确定图5的块码字505中的错误是否是可纠正的。如果是,则在框1050,图3的ecc解码器345可以纠
正图5的块码字505中的错误,并且处理可以返回到框1040,以从纠正后的块码字确定图6的数据分块610。注意,框1045和1050可以以其他方式来实现。例如,图3的ecc解码器345可以试图纠正图5的块码字505中的错误,并且可以通过确定不能实际纠正图5的块码字505中的错误来确定错误是不可纠正的。
77.最后,如果图3的ecc解码器345确定图5的块码字505中的错误是不可纠正的,则在框1055,图3的ecc解码器345可以设置错误发生的指示符,使得图1的存储设备120可以向图1的机器105通知该错误。
78.图11示出了根据本公开的实施例的、图1的存储设备120从图5的块码字505提取图5的分量码字510的示例过程的流程图。在图11中,在框1105,图3的读取/写入电路335可以从图3的存储装置320中的块读取图5的块码字505。在框1110,图3的ecc解码器345可以识别形成图5的分量码字510的比特,并且提取这些比特作为图5的分量码字510。
79.注意,如果图3的读取/写入电路335在框1105读取图5的块码字505作为提取图5的分量码字510的部分,则可能不需要可以描述从图3的存储装置320读取图5的块码字505的后续操作。例如,图10b中的框1030描述了在图5的分量码字510具有无法纠正的错误的情况下读取图5的块码字505。但是如果图5的块码字505先前被读取以提取图5的分量码字510,则图5的块码字505可能已经是可用的,而不必再次从图3的存储装置320读取图5的块码字505。
80.图12a-图12b示出了根据本公开的实施例的、图1的存储设备120生成图5的分量码字510和图5的块码字505的示例过程的流程图。在图12a中,在框1205,图1的存储设备120可以接收对图6的数据分块610的写入请求。在框1210,图3的ecc编码器340可以为图6的数据分块610生成图5的分量码字510。如果图1的存储设备120接收多个这样的图6的数据分块610,则框1205和1210可以根据需要经常重复,如虚线箭头1215所示。
81.在框1220(图12b),图3的ecc编码器340可以生成图5的超奇偶码字515,并且在框1225,图3的ecc编码器340可以根据图5的分量码字510和图5的超奇偶码字515形成块码字505。注意,还可能以不同的方式来形成码字:例如,一旦从图1的机器105接收到所有写入请求,ecc编码器340可以生成图5的块码字505,该块码字505可以在逻辑上被划分以形成图5的分量码字510和图5的超奇偶码字515。
82.可替代地,如上所述,本公开的实施例可以使用不同的奇偶校验矩阵来验证图5的分量码字510和图5的块码字505。在本公开的这些实施例中,在框1230,可以基于接收到的数据来生成图5的块码字505。
83.最后,在框1235,图3的读取/写入电路335可以将图5的分量码字510、图5的超奇偶码字515和/或图5的块码字505写入图3的存储装置320中,使得它们可供图3的ecc解码器345用来处理读取请求。
84.在图8-图12b中,示出了本公开的一些实施例。但是本领域技术人员将认识到,通过改变框的次序、省略框或包括附图中未示出的链接,本公开的其他实施例也是可能的。无论是否明确描述,流程图的所有这些变体都被认为是本公开的实施例。
85.本公开的实施例包括存储单元,该存储单元可以被配置为使用高于正常功率(power)水平的功率用于启动(boot)过程。在预期存储单元使用正常功率水平之前,主机可以指定存储单元可以使用的功率量以及可以使用该功率量的持续时间。通过使用高于正常
功率水平的功率水平,存储单元可以更快地启动,提供了优于仅使用指定的正常功率水平启动的存储单元的技术优势。
86.本公开的实施例还可以包括存储单元向主机通知存储单元具有的用于经验证的启动过程的一个或多个功率水平,以及在该功率水平下启动过程可能花费多长时间。通过向主机提供这样的信息,主机可能能够确定存储单元可以用来更快地启动的功率水平,提供了优于仅使用指定的正常功率水平启动的存储单元的技术优势。
87.在一些示例中,硬盘驱动(hdd)在从空闲到活动的转换期间可能消耗比其平均允许范围更多的功率。这可能是hdd所需要的,因为hdd需要将它们的致动器从在空闲时的停放位置移动到盘上。
88.这样的hdd增加的功耗对于主机来说可能是可接受的,因为超出正常允许范围的功率是短暂的,并且可以量化并且可以被外壳(enclosure)级电容器吸收。如果整个外壳从空闲状态恢复,则主机可能会将流量扩散(spread)到hdd,从而分散外壳中的功率尖峰(spike)。
89.固态硬盘(ssd)不具有要移动的致动器。但是ssd仍然具有启动时间。在功率受限的环境(例如12w)部署中,ssd可以自我调节(throttle)以保持在12w以内。调节方法可以包括:降低控制器/dram/通道上的时钟速率,并向nand分发更少的读取/写入,以减少活动和并行性。这些选项可能会减慢ssd的启动时间。
90.一般地,启动来自冷却的(cool)服务器。由于温度较低,所以额外的热量(超过标称额定值)可能是可接受的。主机可以控制所有外壳组件的启动次序。对于需要使用其服务器的客户,可能不期望缓慢启动。在有序启动的场景下,过度设计的电源可以容忍来自ssd的功率偏差。
91.本公开的实施例可以使ssd能够在启动期间消耗更多的功率。额外功率的量和该额外功率的时间长度可以被量化。该额外功率可以用于通过增加(例如,控制器、dram、通道等的)时钟速率或者增加底层闪存的未完成的输入/输出(io)的数量来加速ssd的启动。
92.本公开的实施例还可以允许主机向ssd查询所请求的峰值功耗和持续时间。主机可以接受该信息或者可以向ssd传送关于偏移(excursion)时间和/或峰值功率的下限。在主机设置的这些新限制期间不能完成启动的ssd可以继续以正常功率受限的方式来启动。主机可以使用该信息来分布外壳中所有ssd的启动或者限制功率偏移以适应外壳的能力。
93.尽管以上讨论集中在12w的功率限制,但是本公开的实施例也适用于非12w的功率限制。例如,一些大容量高性能驱动可以被限制在25w或更高。
94.ssd可以提出若干种操作限制选择。这可以减少验证工作。示例选项可以包括:1秒14w;4秒13w;10秒12.5w。
95.尽管以上讨论的焦点是ssd,但是本公开的实施例可以扩展到其他介质(相变存储器(pcm)、磁阻随机访问存储器(mram)、电阻随机访问存储器(reram)等)和其他接口(非易失性双列直插式存储器模块(nvdimm)、高速缓存一致互连协议,诸如计算快速链路(cxl)等)。
96.以下讨论旨在提供其中可以实现本公开的某些方面的一个或多个合适机器的简要概括描述。一个或多个机器可以至少部分地由来自传统输入设备(诸如键盘、鼠标等)的输入、以及通过从另一个机器接收到的指令、与虚拟现实(vr)环境的交互、生物度量反馈或
其他输入信号来控制。如本文所使用的,术语“机器”旨在广义地包含单个机器、虚拟机、或通信耦合的机器、虚拟机或一起操作的设备的系统。示例性机器包括计算设备,诸如个人计算机、工作站、服务器、便携式计算机、手持式设备、电话、平板等,以及运输设备,诸如私人或公共运输,例如汽车、火车、出租车等。
97.一个或多个机器可以包括嵌入式控制器,诸如可编程或不可编程逻辑器件或阵列、专用集成电路(asic)、嵌入式计算机、智能卡等。一个或多个机器可以利用到一个或多个远程机器的一个或多个连接,诸如通过网络接口、调制解调器或其他通信耦合。机器可以通过物理和/或逻辑网络(诸如内联网、互联网、局域网、广域网等)互连。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短程或长程载波和协议,包括射频(rf)、卫星、微波、电气和电子工程师协会(ieee)802.11、光学、红外、电缆、激光等。
98.本公开的实施例可以通过参考或结合包括功能、过程、数据结构、应用程序等的关联数据来描述,关联数据在被机器访问时使得机器执行任务或者定义抽象数据类型或低级硬件上下文。关联数据可以存储在例如易失性和/或非易失性存储器(例如ram、rom等)中、或者存储在其他存储设备及其关联存储介质(包括硬盘驱动、软盘、光存储、磁带、闪存、记忆棒、数字视频盘、生物存储等)中。关联数据可以以封包、串行数据、并行数据、传播信号等的形式,通过包括物理和/或逻辑网络的传输环境来传递,并且可以以压缩格式或加密格式来使用。关联数据可以在分布式环境中使用,并且被本地和/或远程地存储以供机器访问。
99.本公开的实施例可以包括有形的、非暂时性机器可读介质,其包括可由一个或多个处理器执行的指令,这些指令包括执行如本文所述的本公开的元素的指令。
100.上述方法的各种操作可以由能够执行操作的任何合适的部件(诸如各种硬件和/或软件组件、电路和/或模块)来执行。软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以包含在任何“处理器可读介质”中,以供指令执行系统、装置或设备(诸如单核或多核处理器或包含处理器的系统)使用或与之相结合。
101.结合本文公开的实施例描述的方法或算法和功能的块或步骤可以直接包含在硬件、由处理器执行的软件模块或两者的组合中。如果在软件中实现,则这些功能可以作为有形的非暂时性计算机可读介质上的一个或多个指令或代码来存储或传输。软件模块可以驻留在随机访问存储器(ram)、闪存、只读存储器(rom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、寄存器、硬盘、可移动盘、cd rom或本领域已知的任何其他形式的存储介质中
102.已经参考所示实施例描述和示出了本公开的原理,将会认识到,所示实施例可以在布置和细节上进行修改而不背离这些原理,并且可以以任何期望的方式进行组合。并且,尽管前面的讨论集中在特定的实施例上,但是也可以考虑其他的配置。具体地,尽管在本文中使用了诸如“根据本公开的实施例”等表述,但是这些短语旨在概括地指代实施例的可能性,而不是旨在将本公开限制于特定的实施例配置。如本文所使用的,这些术语可以指相同或不同的实施例,这些实施例可以组合成其他实施例。
103.前述说明性实施例不应被解释为限制其公开内容。尽管已经描述了若干个实施例,但是本领域技术人员将容易理解,在本质上不脱离本公开的新颖教导和优点的情况下,对这些实施例的多种修改是可能的。因此,所有这样的修改旨在被包括在权利要求中定义的本公开的范围内。
104.本公开的实施例可以不受限地扩展为以下表述:
105.表述1.本公开的实施例包括存储单元,包括:
106.用于分量码字的存储装置,该分量码字存储在该存储装置中的块中,该块还存储块码字;
107.用于从主机接收对数据分块的读取请求并将该数据分块发送到主机的接口;
108.从该存储装置中的块读取分量码字的电路;
109.用于至少部分地基于分量码字来确定数据分块的纠错码(ecc)解码器。
110.表述2.本公开的实施例包括根据表述1的存储单元,其中,ecc解码器被配置为从分量码字解码数据分块。
111.表述3.本公开的实施例包括根据表述2的存储单元,其中,ecc解码器被配置为至少部分地基于分量码字不包括错误来从分量码字解码数据分块。
112.表述4.本公开的实施例包括根据表述2的存储单元,其中,ecc解码器被配置为根据分量码字生成纠正后的分量码字,并从纠正后的分量码字解码数据分块。
113.表述5.本公开的实施例包括根据表述4的存储单元,其中,ecc解码器被配置为迭代地生成纠正后的分量码字。
114.表述6.本公开的实施例包括根据表述1的存储单元,其中:
115.ecc解码器无法从分量码字解码数据分块;并且
116.存储单元还包括第二ecc解码器,其用于根据块码字生成纠正后的块码字,并从纠正后的块码字解码数据分块。
117.表述7.本公开的实施例包括根据表述6的存储单元,其中,第二ecc解码器被配置为迭代地生成纠正后的块码字。
118.表述8.本公开的实施例包括根据表述6的存储单元,其中,第二ecc解码器是ecc解码器。
119.表述9.本公开的实施例包括根据表述1的存储单元,其中,电路被配置为从该存储装置中的块读取块码字,并从块码字提取分量码字。
120.表述10.本公开的实施例包括根据表述9的存储单元,其中,块码字至少包括分量码字和超奇偶码字。
121.表述11.本公开的实施例包括根据表述1的存储单元,其中:
122.该接口被配置为从主机接收对数据分块的写入请求;并且
123.该存储单元还包括:
124.用于至少部分地基于数据分块来生成分量码字的ecc编码器;和
125.用于将分量码字写入该存储装置中的块的第二电路。
126.表述12.本公开的实施例包括根据表述11的存储单元,还包括:
127.用于至少部分地基于第二数据分块来生成第二分量码字的第二ecc编码器;以及
128.用于至少部分地基于数据分块和第二数据分块来生成超奇偶码字的第三ecc编码器。
129.表述13.本公开的实施例包括根据表述12的存储单元,其中,第二电路被配置为至少部分地基于所述分量码字、第二分量码字和超奇偶码字来形成块码字。
130.表述14.本公开的实施例包括根据表述13的存储单元,其中,第二电路被配置为将
块码字写入该存储装置中的块。
131.表述15.本公开的实施例包括根据表述12的存储单元,其中:
132.第二ecc编码器是ecc编码器;并且
133.第三ecc编码器是ecc编码器。
134.表述16.本公开的实施例包括根据表述11的存储单元,其中:
135.存储单元还包括用于至少部分地基于所述数据分块和第二数据分块来生成块码字的第二ecc编码器;并且
136.第二电路被配置为将块码字写入该存储装置中的块。
137.表述17.本公开的实施例包括根据表述16的存储单元,其中,第二ecc编码器是ecc编码器。
138.表述18.本公开的实施例包括一种方法,包括:
139.在存储单元处从主机接收对数据分块的读取请求,该数据分块包括第一大小;
140.识别存储单元的存储中包括分块的块,该块包括第二大小,第二大小大于第一大小;
141.从存储单元的存储装置中的块读取该分块的分量码字;
142.使用纠错码(ecc)解码器解码该分量码字以确定数据分块;以及
143.将数据分块从存储单元发送到主机,
144.其中,该块包括用于解码该分块的块码字。
145.表述19.本公开的实施例包括根据表述18的方法,其中,使用ecc解码器解码分量码字以确定数据分块,包括:
146.使用ecc解码器确定分量码字不包括错误;以及
147.从分量码字确定数据分块。
148.表述20.本公开的实施例包括根据表述18的方法,其中,解码分量码字以确定数据分块,包括:
149.使用ecc解码器确定分量码字包括错误;
150.使用ecc解码器纠正所述错误以生成纠正后的分量码字;以及
151.从纠正后的分量码字确定数据分块。
152.表述21.本公开的实施例包括根据表述20的方法,其中,使用ecc解码器纠正所述错误以生成纠正后的分量码字,包括:使用ecc解码器迭代地解码分量码字以生成纠正后的分量码字。
153.表述22.本公开的实施例包括根据表述20的方法,其中,解码分量码字以确定数据分块,包括:
154.使用ecc解码器确定分量码字包括第一错误;
155.确定第一错误是不可纠正的;
156.从存储单元的存储装置中的块读取块码字;
157.使用ecc解码器确定块码字包括第二错误;
158.使用ecc解码器纠正第二错误以生成纠正后的块码字;以及
159.从纠正后的块码字确定数据分块。
160.表述23.本公开的实施例包括根据表述22的方法,其中,确定第一错误是不可纠正
的,包括:至少部分地基于使用ecc解码器迭代地解码分量码字和ecc解码器超过最大迭代次数来确定第一错误是不可纠正的。
161.表述24.本公开的实施例包括根据表述22的方法,其中,使用ecc解码器纠正第二错误以生成纠正后的块码字,包括:使用ecc解码器迭代地解码块码字以生成纠正后的块码字。
162.表述25.本公开的实施例包括根据表述24的方法,其中,从纠正后的块码字确定数据分块,包括:至少部分地基于ecc解码器超过最大迭代次数而返回读取错误。
163.表述26.本公开的实施例包括根据表述20的方法,其中,解码分量码字以确定数据分块,包括:
164.使用ecc解码器确定分量码字包括第一错误;
165.确定第一错误是不可纠正的;
166.从存储单元的存储装置中的块读取块码字;
167.使用第二ecc解码器确定块码字包括第二错误;
168.使用第二ecc解码器纠正第二错误以生成纠正后的块码字;以及
169.从纠正后的块码字确定数据分块。
170.表述27.本公开的实施例包括根据表述18的方法,其中,从存储单元的存储装置中的块读取分块的分量码字,包括:
171.从存储单元的存储装置中的块读取块码字;以及
172.从块码字提取分量码字。
173.表述28.本公开的实施例包括根据表述27的方法,其中,块码字至少包括分量码字和超奇偶码字。
174.表述29.本公开的实施例包括根据表述18的方法,还包括:
175.在存储单元处从主机接收对数据分块的写入请求;
176.至少部分地基于数据分块来生成分量码字;以及
177.将分量码字写入存储单元的存储装置中的块。
178.表述30.本公开的实施例包括根据表述29的方法,其中,至少部分地基于数据分块来生成分量码字,包括:
179.至少部分地基于数据分块来生成分量码字;
180.至少部分地基于第二数据分块来生成第二分量码字;以及
181.至少部分地基于数据分块和第二数据分块来生成超奇偶码字。
182.表述31.本公开的实施例包括根据表述30的方法,其中,将分量码字写入存储单元的存储装置中的块,包括:
183.至少部分地基于分量码字、第二分量码字和超奇偶码字来形成块码字;以及
184.将块码字写入存储单元的存储装置中的块。
185.表述32.本公开的实施例包括根据表述29的方法,其中,至少部分地基于数据分块来生成分量码字,包括:至少部分地基于数据分块,使用ecc编码器来生成分量码字。
186.表述33.本公开的实施例包括根据表述32的方法,还包括:
187.至少部分地基于数据分块和第二数据分块,使用第二ecc编码器来生成块码字;以及
188.将块码字写入存储单元的存储装置中的块。
189.表述34.本公开的实施例包括一种制品,该制品包括非暂时性存储介质,该非暂时性存储介质上存储有指令,当由机器执行时,该指令导致:
190.在存储单元处从主机接收对数据分块的读取请求,该数据分块包括第一大小;
191.识别存储单元的存储中包括分块的块,该块包括第二大小,第二大小大于第一大小;
192.从存储单元的存储装置中的块读取该分块的分量码字;
193.使用纠错码(ecc)解码器解码该分量码字以确定数据分块;以及
194.将数据分块从存储单元发送到主机,
195.其中,该块包括用于解码该块的块码字。
196.表述35.本公开的实施例包括根据表述34的制品,其中,使用ecc解码器解码分量码字以确定数据分块,包括:
197.使用ecc解码器确定分量码字不包括错误;以及
198.从分量码字确定数据分块。
199.表述36.本公开的实施例包括根据表述34的制品,其中,解码分量码字以确定数据分块,包括:
200.使用ecc解码器确定分量码字包括错误;
201.使用ecc解码器纠正所述错误以生成纠正后的分量码字;以及
202.从纠正后的分量码字确定数据分块。
203.表述37.本公开的实施例包括根据表述36的制品,其中,使用ecc解码器纠正所述错误以生成纠正后的分量码字,包括:使用ecc解码器迭代地解码分量码字以生成纠正后的分量码字。
204.表述38.本公开的实施例包括根据表述36的制品,其中,解码分量码字以确定数据分块,包括:
205.使用ecc解码器确定分量码字包括第一错误;
206.确定第一错误是不可纠正的;
207.从存储单元的存储装置中的块读取块码字;
208.使用ecc解码器确定块码字包括第二错误;
209.使用ecc解码器纠正第二错误以生成纠正后的块码字;以及
210.从纠正后的块码字确定数据分块。
211.表述39.本公开的实施例包括根据表述38的制品,其中,确定第一错误是不可纠正的,包括:至少部分地基于使用ecc解码器迭代地解码分量码字和ecc解码器超过最大迭代次数来确定第一错误是不可纠正的。
212.表述40.本公开的实施例包括根据表述38的制品,其中,使用ecc解码器纠正第二错误以生成纠正后的块码字,包括:使用ecc解码器迭代地解码块码字以生成纠正后的块码字。
213.表述41.本公开的实施例包括根据表述40的制品,其中,从纠正后的块码字确定数据分块,包括:至少部分地基于ecc解码器超过最大迭代次数而返回读取错误。
214.表述42.本公开的实施例包括根据表述36的制品,其中,解码分量码字以确定数据
分块,包括:
215.使用ecc解码器确定分量码字包括第一错误;
216.确定第一错误是不可纠正的;
217.从存储单元的存储装置中的块读取块码字;
218.使用第二ecc解码器确定块码字包括第二错误;
219.使用第二ecc解码器纠正第二错误以生成纠正后的块码字;以及
220.从纠正后的块码字确定数据分块。
221.表述43.本公开的实施例包括根据表述34所述的制品,其中,从存储单元的存储装置中的块读取分块的分量码字,包括:
222.从存储单元的存储装置中的块读取块码字;以及
223.从块码字提取分量码字。
224.表述44.本公开的实施例包括根据表述43的制品,其中,块码字至少包括分量码字和超奇偶码字。
225.表述45.本公开的实施例包括根据表述34的制品,该非暂时性存储介质上存储有进一步的指令,当由机器执行时,该指令导致:
226.在存储单元处从主机接收对数据分块的写入请求;
227.至少部分地基于数据分块来生成分量码字;以及
228.将分量码字写入存储单元的存储装置中的块。
229.表述46.本公开的实施例包括根据表述45的制品,其中,至少部分地基于数据分块来生成分量码字,包括:
230.至少部分地基于数据分块来生成分量码字;
231.至少部分地基于第二数据分块来生成第二分量码字;以及
232.至少部分地基于数据分块和第二数据分块来生成超奇偶码字。
233.表述47.本公开的实施例包括根据表述46的制品,其中,将分量码字写入存储单元的存储装置中的块,包括:
234.至少部分地基于分量码字、第二分量码字和超奇偶码字来形成块码字;以及
235.将块码字写入存储单元的存储装置中的块。
236.表述48.本公开的实施例包括根据表述45的制品,其中,至少部分地基于数据分块来生成分量码字,包括:至少部分地基于数据分块,使用ecc编码器来生成分量码字。
237.表述49.本公开的实施例包括根据表述48的制品,该非暂时性存储介质上存储有进一步的指令,当由机器执行时,该指令导致:
238.至少部分地基于数据分块和第二数据分块,使用第二ecc编码器来生成块码字;以及
239.将块码字写入存储单元的存储装置中的块。
240.因此,鉴于本文描述的实施例的各种排列,具体实施方式和所附材料仅旨在说明,而不应被视为限制本公开的范围。因此,本公开所要求保护的是可能落入所附权利要求及其等同物的范围和精神内的所有这种修改。

技术特征:


1.一种存储单元,包括:用于分量码字的存储装置,所述分量码字存储在存储装置中的块中,所述块还存储块码字;接口,用于从主机接收对数据分块的读取请求以及将所述数据分块发送到主机;电路,用于从存储装置中的所述块读取分量码字;纠错码ecc解码器,用于至少部分地基于所述分量码字来确定所述数据分块。2.根据权利要求1所述的存储单元,其中,所述ecc解码器被配置为从所述分量码字解码所述数据分块。3.根据权利要求2所述的存储单元,其中,所述ecc解码器被配置为从所述分量码字生成纠正后的分量码字,并且从所述纠正后的分量码字解码所述数据分块。4.根据权利要求3所述的存储单元,其中,所述ecc解码器被配置为迭代地生成所述纠正后的分量码字。5.根据权利要求1所述的存储单元,其中:所述ecc解码器无法从所述分量码字解码所述数据分块;并且所述存储单元还包括第二ecc解码器,用于从所述块码字生成纠正后的块码字,并且从所述纠正后的块码字解码所述数据分块。6.根据权利要求5所述的存储单元,其中,所述第二ecc解码器被配置为迭代地生成所述纠正后的块码字。7.根据权利要求5所述的存储单元,其中,所述第二ecc解码器是ecc解码器。8.根据权利要求1所述的存储单元,其中,所述电路被配置为从存储装置中的所述块读取所述块码字,并且从所述块码字提取所述分量码字。9.一种方法,包括:在存储单元处从主机接收对数据分块的读取请求,所述分块包括第一大小;识别存储单元的存储装置中包括分块的块,所述块包括第二大小,第二大小大于第一大小;从存储单元的存储装置中的所述块读取所述分块的分量码字;使用纠错码ecc解码器解码所述分量码字以确定所述数据分块;以及将所述数据分块从存储单元发送到主机,其中,所述块包括用于解码所述块的块码字。10.根据权利要求9所述的方法,其中,解码所述分量码字以确定所述数据分块,包括:使用ecc解码器确定所述分量码字包括错误;使用ecc解码器纠正所述错误以生成纠正后的分量码字;以及从所述纠正后的分量码字确定所述数据分块。11.根据权利要求10所述的方法,其中,使用ecc解码器纠正所述错误以生成纠正后的分量码字,包括:使用ecc解码器迭代地解码所述分量码字以生成所述纠正后的分量码字。12.根据权利要求10所述的方法,其中,解码所述分量码字以确定所述数据分块,包括:使用ecc解码器确定所述分量码字包括第一错误;确定所述第一错误是不可纠正的;从存储单元的存储装置中的所述块读取所述块码字;
使用ecc解码器确定所述块码字包括第二错误;使用ecc解码器纠正所述第二错误以生成纠正后的块码字;以及从所述纠正后的块码字确定所述数据分块。13.根据权利要求12所述的方法,其中,确定所述第一错误是不可纠正的,包括:至少部分地基于使用ecc解码器迭代地解码所述分量码字并且所述ecc解码器超过最大迭代次数来确定所述第一错误是不可纠正的。14.根据权利要求12所述的方法,其中,使用ecc解码器纠正所述第二错误以生成纠正后的块码字,包括:使用ecc解码器迭代地解码所述块码字以生成所述纠正后的块码字。15.根据权利要求14所述的方法,其中,从所述纠正后的块码字确定所述数据分块,包括:至少部分地基于ecc解码器超过最大迭代次数而返回读取错误。16.根据权利要求10所述的方法,其中,解码所述分量码字以确定所述数据分块,包括:使用ecc解码器确定所述分量码字包括第一错误;确定所述第一错误是不可纠正的;从存储单元的存储装置中的所述块读取所述块码字;使用第二ecc解码器确定所述块码字包括第二错误;使用第二ecc解码器纠正所述第二错误以生成纠正后的块码字;以及从所述纠正后的块码字确定所述数据分块。17.根据权利要求9所述的方法,其中,从存储单元的存储装置中的所述块读取所述分块的分量码字,包括:从存储单元的存储装置中的所述块读取所述块码字;以及从所述块码字提取所述分量码字。18.根据权利要求17所述的方法,其中,所述块码字至少包括所述分量码字和超奇偶码字。19.一种制品,包括非暂时性存储介质,所述非暂时性存储介质上存储有指令,当由机器执行时,所述指令导致:在存储单元处从主机接收对数据分块的读取请求,所述分块包括第一大小;识别存储单元的存储装置中包括分块的块,所述块包括第二大小,第二大小大于第一大小;从存储单元的存储装置中的所述块读取所述分块的分量码字;使用纠错码ecc解码器解码所述分量码字以确定所述数据分块;以及将所述数据分块从存储单元发送到主机,其中,所述块包括用于解码所述块的块码字。20.根据权利要求19所述的制品,其中,解码所述分量码字以确定所述数据分块,包括:使用ecc解码器确定所述分量码字包括错误;使用ecc解码器纠正所述错误以生成纠正后的分量码字;以及从所述纠正后的分量码字确定所述数据分块。

技术总结


公开了一种存储单元。该存储单元可以包括用于分量码字的存储装置。分量码字可以存储在存储装置的块中。该块还可以存储块码字。接口可以从主机接收对数据分块的读取请求,并且可以将该数据分块发送到主机。电路可以从存储装置中的块读取分量码字。纠错码(ECC)解码器可以至少部分地基于该分量码字来确定该数据分块。块。块。


技术研发人员:

李宗旺 杨靖 M.M.阮 M.埃亚西 R.皮楚马尼

受保护的技术使用者:

三星电子株式会社

技术研发日:

2022.05.20

技术公布日:

2022/11/22

本文发布于:2022-11-24 16:50:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/266.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:码字   分量   解码器   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议