用于提高数据处理系统中的操作效率的设备和方法与流程

专利检索2022-05-10  44


用于提高数据处理系统中的操作效率的设备和方法
1.相关申请的交叉引用
2.本技术要求于2020年5月19日提交的、申请号为10

2020

0059573的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文。
技术领域
3.各个实施例涉及一种数据处理系统,并且更特别地,涉及一种基于数据处理系统中的存储器系统执行垃圾收集(gc)的单位来执行主机的段回收的设备和方法。


背景技术:

4.近来,计算环境的范例已经转变为普适计算,这使得可以随时随地访问计算机系统。因此,诸如移动电话、数码相机、笔记本计算机等的便携式电子装置的使用正在迅速增长。这种便携式电子装置通常使用或者包括采用或嵌入至少一个存储器装置的存储器系统,即数据存储装置。数据存储装置可以用作便携式电子装置的主存储装置或辅助存储装置。
5.与硬盘不同,使用非易失性半导体存储器装置的数据存储装置的优点在于,该数据存储装置因为不具有机械驱动部件(例如,机械臂)而具有优异的稳定性和耐久性,并且具有高数据访问速度和低功耗。在具有这种优点的存储器系统的情况下,示例性数据存储装置包括usb(通用串行总线)存储器装置、具有各种接口的存储卡、固态驱动器(ssd)等。


技术实现要素:

6.各个实施例涉及一种数据处理系统,该数据处理系统可以避免存储器系统的复杂性和性能降低,并且提高存储器装置的操作效率,从而向存储器装置快速且稳定地处理数据。
7.实施例可以提供一种用于在数据处理系统中执行gc(垃圾收集)的方法和设备。当存储器系统中能够存储新数据的空闲区域不足时,存储器系统可以通过执行gc来获得能够存储新数据的存储块。当指定和阐明由存储器系统独立执行的gc的操作条件时,存储器系统可以稳定地获得能够存储新数据的空闲区域。根据实施例,当存储器系统获得足够的能够存储新数据的空闲区域时,可以减小存储器系统在大规模数据的编程操作或顺序编程操作期间将执行gc以获得空闲区域的可能性,同时提高存储器系统的输入/输出性能。
8.此外,即使存在足够的能够存储新数据的空闲区域,当存储器系统执行gc时,该存储器系统的资源也会被不必要的操作所消耗,并且在数据输入/输出操作期间可能发生开销。当指定和阐明由存储器系统独立执行的gc的操作条件时,可以减少或阻止存储器系统中可能不必执行的gc,从而提高存储器系统的操作效率。
9.在实施例中,一种数据处理系统可以包括:存储器系统,可以包括存储器装置,该存储器装置包括多个存储块;以及主机,适于将存储块划分为多个逻辑块,并且包括多个段,每个段由多个逻辑块中的至少一个构成。主机基于与存储块中的每一个相对应的有效
逻辑块的数量来选择牺牲段,并且可以对牺牲段执行段回收,并且其中一个或多个存储块因段回收而无效。
10.主机可以从存储器系统获得与逻辑块相对应的有效信息以及存储块的识别信息,并且主机可以基于有效信息和识别信息来计算与存储块中的每一个相对应的有效逻辑块的数量。
11.当执行段回收时,主机可以请求存储器系统使牺牲段中包括的逻辑块的逻辑块地址无效。
12.存储器系统可以根据使有效逻辑块的逻辑块地址无效的请求,将存储器装置的物理页面地址与有效逻辑块的逻辑块地址取消映射以使一个或多个存储块完全无效。
13.存储块可以是由存储器系统执行的垃圾收集的单位。
14.当执行段回收时,主机可以将新的逻辑块地址分配给牺牲段中包括的有效逻辑块,并且可以将对与可以分配新的逻辑块地址的有效逻辑块相对应的数据的写入请求传输到存储器系统。
15.存储器系统可以根据写入请求对目标存储块执行写入操作,并且可以将目标存储块的识别信息传输到主机。
16.存储器系统可以传输识别信息以及对从主机接收的写入请求的确认。
17.与存储块相对应的逻辑块的数量可以不同于与段相对应的逻辑块的数量。
18.在实施例中,提供了一种数据处理系统的操作方法,该数据处理系统包括:存储器系统,包括存储器装置,该存储器装置包括多个存储块;以及主机,适于将存储块划分为多个逻辑块,并且包括多个段,每个段由多个逻辑块中的一个或多个构成,该操作方法可以包括:当决定对牺牲段执行段回收时,由主机基于与存储块中的每一个相对应的有效逻辑块的数量来选择牺牲段;并且由主机对牺牲段执行段回收,其中一个或多个存储块因段回收而完全无效。
19.该操作方法可以进一步包括:从存储器系统获得与逻辑块相对应的有效信息以及存储块的识别信息;并且基于有效信息和识别信息,计算与存储块中的每一个相对应的有效逻辑块的数量。执行段回收可以包括:由主机请求存储器系统使牺牲段中包括的有效逻辑块的逻辑块地址无效。该操作方法可以进一步包括:根据使有效逻辑块的逻辑块地址无效的请求,将存储器装置的物理页面地址与有效逻辑块的逻辑块地址取消映射以使一个或多个存储块完全无效。存储块可以是由存储器系统执行的垃圾收集的单位。执行段回收可以包括:将新的逻辑块地址分配给牺牲段中包括的有效逻辑块;并且将对与可以分配新的逻辑块地址的有效逻辑块相对应的数据的写入请求传输到存储器系统。该操作方法可以进一步包括:由存储器系统根据写入请求对目标存储块执行写入操作;并且由存储器系统将目标存储块的识别信息传输到主机。该操作方法可以进一步包括:由主机将识别信息与可以分配新的逻辑块地址的有效逻辑块进行匹配。该操作方法可以进一步包括:由存储器系统传输存储块的识别信息以及对从主机接收的写入请求的确认。与存储块相对应的逻辑块的数量可以不同于与段相对应的逻辑块的数量。
20.根据本实施例,一种数据处理系统可以包括:存储器系统,包括具有上层物理存储装置的存储装置,每个上层物理存储装置具有下层物理存储装置;以及主机,适于:在逻辑上识别存储装置中的组,每个组由段配置,每个段具有逻辑块,下层物理存储装置分别对应
于逻辑块,并且上层物理存储装置分别对应于组;在组之中选择牺牲组,该牺牲组至少包括有效逻辑块的总和,该有效逻辑块分别对应于牺牲上层物理存储装置内的有效下层物理存储装置;并且基于牺牲组对牺牲上层物理存储装置执行段回收操作。
21.此外,当主机执行段回收时,该主机可以基于与存储块相对应的有效逻辑块的数量来选择牺牲段。因此,存储器系统可以通过执行最小迁移操作来使一个或多个存储块无效。因此,存储器系统可以减少迁移成本。存储器系统可以通过仅执行擦除操作而不进行迁移操作来完成垃圾收集。
附图说明
22.图1示出了根据本公开的实施例的存储器系统。
23.图2示出了根据本公开的实施例的数据处理系统。
24.图3示出了根据本公开的实施例的存储器系统。
25.图4示出了根据本公开的另一实施例的关于存储器系统中的垃圾收集的状态机。
26.图5a和图5b是示出根据实施例的主机的结构的示图。
27.图6a至图6c是示出根据实施例的数据处理系统的逻辑结构的示图。
28.图7是示出根据实施例的段回收的示图。
29.图8a和图8b是示出图7的操作的示图。
30.图9a至图9h是示出段回收的实施例的示图。
31.在本公开中,对“一个实施例”、“示例实施例”、“实施例”、“另一实施例”、“一些实施例”、“各个实施例”、“其它实施例”、“可选实施例”等中包括的各种特征(例如,元件、结构、模块、组件、步骤、操作、特性等)的引用旨在表示任何这样的特征可以被包括在本公开的一个或多个实施例中,但是可以或可能不一定在相同的实施例中组合。
具体实施方式
32.在下文中,参照附图详细描述各个实施例。下面的描述集中于本发明的特征和方面;为了避免不必要地模糊所公开实施例的主题,可以省略公知的技术细节。
33.在下文中,参照附图更详细地描述实施例。
34.图1示出根据本公开的实施例的存储器系统。
35.参照图1,存储器系统110可以包括存储器装置150和控制器130。可以认为存储器装置150和控制器130是物理上分开的组件或元件。存储器装置150和控制器130可以经由至少一个数据路径连接。例如,该数据路径可以包括通道和/或通路。
36.在另一实施例中,存储器装置150和控制器130可以被物理地集成,但是在功能方面分开。当被这样集成时,存储器装置150和控制器130可以利用单个芯片或多个芯片来实施。
37.存储器装置150可以包括多个存储块60。存储块60可以包括一组非易失性存储器单元,在单个擦除操作中,数据被从一组非易失性存储器单元一起移除。尽管未示出,但是存储块60可以包括页面,页面是一组非易失性存储器单元,在单个编程操作中,数据被一起编程到一组非易失性存储器单元中,或者在单个读取操作中,从一组非易失性存储器单元一起输出数据。例如,一个存储块60可以包括多个页面。
38.尽管在图1中未示出,但是存储器装置150可以包括多个存储器平面和/或多个存储器管芯。根据实施例,可以认为存储器平面是逻辑或物理分区,该逻辑或物理分区包括至少一个存储块60、能够控制非易失性存储器单元的阵列的驱动电路以及可以临时存储输入到非易失性存储器单元或从非易失性存储器单元输出的数据的缓冲器。
39.另外,根据实施例,存储器管芯可以包括至少一个存储器平面。存储器管芯可以是在物理上可区分的衬底上实施的一组组件。每个存储器管芯可以通过数据路径连接到控制器130。每个存储器管芯可以包括接口,以与控制器130交换数据和信号。
40.存储器装置150可以在存储器管芯、存储器平面和存储块方面以各种不同的方式进行配置。图1所示的存储器装置150的内部配置是示例;然而,存储器装置150可以根据存储器系统110的不同性能规范而进行不同的配置。本发明不限于图1所示的内部配置。
41.参照图1,存储器装置150可以包括能够将至少一个电压供应到存储块60的电压供应电路70。电压供应电路70可以将读取电压vrd、编程电压vprog、通过电压vpass和/或擦除电压vers供应到存储块60中的非易失性存储器单元。例如,在用于读取存储块60中的非易失性存储器单元中存储的数据的读取操作期间,电压供应电路70可以将读取电压vrd供应到所选择的非易失性存储器单元。在用于将数据存储在非易失性存储器单元中的编程操作期间,电压供应电路70可以将编程电压vprog供应到所选择的非易失性存储器单元。而且,在对所选择的非易失性存储器单元执行的读取操作或编程操作期间,电压供应电路70可以将通过电压vpass供应到未选择的非易失性存储器单元。在用于擦除存储块60中的非易失性存储器单元中存储的数据的擦除操作期间,电压供应电路70可以将擦除电压vers供应到存储块60。
42.可以逐个块地执行用于擦除存储器装置150中存储的数据的擦除操作。存储块60可以是被一起擦除的一组存储器单元。另一方面,可以逐个页面地执行用于读取存储器装置150中存储的数据的读取操作或者用于将数据存储在存储器装置150中的编程操作。小于存储块60的页面可以是被一起编程或读取的一组存储器单元。与dram或sram中的易失性存储器单元不同,难以简单地将数据片段重写到存储块60中的非易失性存储器单元中。可以在不对非易失性存储器单元执行擦除操作的情况下,多次编程数据。但是,为了多次编程数据,控制器130记录和管理关于非易失性存储器单元的附加和单独的信息。
43.可以将多个数据片段存储在多个存储块60中的每一个中。当利用一个新的数据片段来更新数据片段或者不再需要该数据片段时,相应的数据片段可能变得无效。即使存储块60中存储的某些数据片段无效,该存储块60中存储的其它数据片段也可能仍然有效。如上所述,因为擦除操作是逐个块执行的,所以在对存储块60执行擦除操作之前,可能难以有效地使用保持了无效数据的区域(即,存储块60中的某些非易失性存储器单元)来编程其它数据。随着在存储器系统110中执行多个数据输入/输出操作,多个存储块60中的一个或多个中存储的无效数据的量可能会增加,那些存储块留下更少的区域或存储器单元来编程数据。如果不注意这种情况,则可能无法有效地使用存储器装置150中的存储块60。控制器130可以检查存储器装置150的状态,并且执行垃圾收集(gc)以提高存储器系统110的性能。
44.由控制器130执行的垃圾收集(gc)可以包括:通过在动态分配的存储器区域之中搜索不再可用或不再需要的区域来准备存储块以编程新数据;并且擦除该区域中的数据。根据存储器装置150中的非易失性存储器单元的结构或特性,擦除非易失性存储器装置150
中的特定区域中的数据所花费的时间可能变化。进一步地,根据实施例,根据用于操作或控制非易失性存储器装置150的方法和设备(或组件),在非易失性存储器装置150中搜索待擦除的区域所花费的时间可能变化。例如,垃圾收集(gc)可以包括:在存储器装置150中的多个存储块60之中选择待擦除的目标存储块,复制所选择的存储块中的有效数据并将这种数据移动到另一存储块,更新与所复制的数据相关联的映射信息,并且对所选择的存储块执行擦除操作。
45.根据实施例,可以响应于从外部装置接收的请求而手动执行垃圾收集(gc)(手动gc),或者在没有任何外部请求的情况下独立地执行自动垃圾收集(自动gc)。因为手动垃圾收集是由存储器系统110响应于来自外部装置的请求而执行的,所以鉴于存储器系统110的操作性能,手动垃圾收集可能不会导致开销。然而,在没有外部装置干预的情况下执行的自动垃圾收集会导致存储器系统110的操作性能方面的开销。由于该原因,期望确定存储器系统110中的垃圾收集的时间或时段,以减少或避免存储器系统110的性能下降。
46.例如,可以在存储器系统110处于空闲状态时执行垃圾收集(gc)。当在空闲状态下执行垃圾收集(gc)时,不会响应于从外部装置输入的请求(例如,读取请求/写入请求/擦除请求)而执行数据i/o操作。因此,垃圾收集gc不会影响存储器系统110中的数据i/o操作的性能。然而,存储器系统110可能不知道或预测空闲状态将持续多长时间。进一步地,当在休眠模式或省电模式下切断或有限地供应存储器系统110的电力时,控制器130可能难以执行或完成垃圾收集(gc)。当由于各种原因而使得垃圾收集(gc)暂停、延迟或停止时,存储器系统110可能难以获得用于存储新数据的空间(例如,空闲块)。当因为没有足够的空间来对与写入请求相对应的新数据进行编程而直接在与写入请求相对应的编程操作之前执行垃圾收集(gc)时,相应的编程操作可能延迟,使得存储器系统110的数据输入/输出性能(例如,i/o吞吐量)可能劣化。为了避免存储器系统110的数据输入/输出性能(例如,i/o吞吐量)的劣化,控制器130可以包括用于确定执行垃圾收集(gc)的时间或时段的设备(或组件)和方法。
47.响应于从外部装置接收的请求,控制器130可以执行数据输入/输出操作。例如,当控制器130执行与来自外部装置的读取请求相对应的读取操作时,存储器装置150中的多个非易失性存储器单元中存储的数据可以被传送到控制器130。对于读取操作,输入/输出(i/o)控制器192可以通过收发器198将读取命令传输到存储器装置150。收发器198可以将读取命令传输到存储器装置150并接收从存储器装置150输出的数据。收发器198可以将从存储器装置150输出的数据存储在存储器144中。输入/输出(i/o)控制器192可以将存储器144中存储的数据输出到外部装置,作为对读取请求的响应。
48.另外,输入/输出控制器192可以通过收发器198将从外部装置与写入请求一起被输入的数据传输到存储器装置150。在将数据存储在存储器装置150中之后,输入/输出控制器192可以将显示数据被成功编程的对写入请求的响应传输到外部装置。
49.当输入/输出控制器192执行数据输入/输出操作时,操作状态检查器194可以收集关于存储器装置150中的多个存储块60的状态的信息。例如,操作状态检查器194可以将多个存储块60中的每一个分类为存储了数据的存储块,或者未写入数据的空存储块。具体地,多个存储块60中的每一个可以被分类为空闲块、开放块和封闭块,该空闲块未存储数据,该开放块已经被用于编程操作并且包括至少一个空白页面或空页面,该封闭块中的所有页面
都编程了数据,并且如果不首先执行擦除操作就无法编程新数据。当执行诸如编程操作的数据输入/输出操作时,封闭块中的至少一个数据片段可能变得无效。具有至少一个无效数据片段的封闭块可以被称为脏块。
50.操作状态检查器194可以识别关于存储器装置150的多个存储块60的操作状态并将该操作状态存储在控制器130中。操作状态检查器194可以基于操作状态来计算脏块与所有存储块60的比率。例如,当存储器装置150中存在100个存储块并且这些块中的50个是脏块时,脏块的百分比为50%。基于脏块的比率,操作状态检查器194可以估计用于存储数据的日志区域与存储器装置150的总可用存储容量的比率。
51.基于从操作状态检查器194传输的脏块的比率(或其信息),垃圾收集控制器196可以确定是否执行垃圾收集、垃圾收集的运行时间以及垃圾收集的运行间隔。例如,当垃圾收集控制器196基于脏块的百分比确定存储器装置150中能够存储新数据的存储块(例如,空闲块)的数量足够时,垃圾收集控制器196不必立即执行垃圾收集。另一方面,当垃圾收集控制器196确定存储器装置150中的大多数存储块被用于存储了数据并且能够存储新数据的存储块的数量不足时,将尽快执行垃圾收集。
52.当垃圾收集控制器196确定是时候执行垃圾收集时,输入/输出控制器192可以将保持在待进行擦除操作的特定脏块中的有效数据复制到空闲块中,然后擦除没有保持有效数据的该特定脏块以获得新的空闲块。输入/输出控制器192可以交替地或并行地执行垃圾收集以及与来自外部装置的请求相对应的数据输入/输出操作。根据实施例,输入/输出控制器192可以利用多个处理内核或多个知识产权(ip)内核来实施。
53.根据实施例,图1所示的输入/输出控制器192、垃圾收集控制器196、操作状态检查器194中的每一个可以利用被设计为执行其自身功能的单独的电路来实施。可选地,组件可以利用单个芯片或组合电路来实施。
54.在下文中,参照图2和图3,详细描述由存储器系统110执行的某些操作。
55.参照图2,描述根据本公开的实施例的数据处理系统100。参照图2,数据处理系统100可以包括主机102,主机102与存储器系统110接合或可操作地联接。
56.主机102可以包括例如诸如移动电话、mp3播放器和膝上型计算机的便携式电子装置或诸如台式计算机、游戏机、电视(tv)、投影仪等的非便携式电子装置。
57.主机102还包括通常可以管理和控制在主机102中执行的功能和操作的至少一个操作系统(os)。该操作系统可以提供与存储器系统110接合的主机102与存储器系统110的用户之间的互操作性。该操作系统可以支持与用户的请求相对应的功能和操作。作为示例而非限制,可以根据主机102的移动性而将操作系统划分为通用操作系统和移动操作系统。根据系统要求或用户环境,可以将通用操作系统分为个人操作系统和企业操作系统。但是企业操作系统可以专门用于确保和支持高性能计算。移动操作系统可以服从于支持用于移动性的服务或功能(例如,省电功能)。主机102可以包括多个操作系统。主机102可以对应于用户的请求来运行与存储器系统110联接的多个操作系统。主机102可以将与用户的请求相对应的多个命令传输到存储器系统110中,从而在存储器系统110内执行与命令相对应的操作。
58.存储器系统110中的控制器130可以响应于从主机102输入的请求或命令而控制存储器装置150。例如,控制器130可以执行读取操作以将从存储器装置150读取的数据片段提
供到主机102,并且执行写入操作(或编程操作)以将从主机102输入的数据片段存储在存储器装置150中。为了执行数据输入/输出(i/o)操作,控制器130可以控制和管理用于数据读取、数据编程、数据擦除等的内部操作。
59.根据实施例,控制器130可以包括主机接口132、处理器134、错误校正电路138、电源管理单元(pmu)140、存储器接口142和存储器144。图2所示的控制器130中包括的组件可以根据存储器系统110的实施方案、所期望的操作性能或者其它特性或考虑而变化。例如,存储器系统110可以根据主机接口的协议,利用可以与主机102电联接的各种类型的存储装置中的任意一种来实施。合适的存储装置的非限制性示例包括固态驱动器(ssd)、多媒体卡(mmc)、嵌入式mmc(emmc)、缩小尺寸的mmc(rs

mmc)、微型mmc、安全数字(sd)卡、迷你sd、微型sd、通用串行总线(usb)存储装置、通用闪存(ufs)装置、紧凑型闪存(cf)卡、智能媒体(sm)卡、记忆棒等。如上所述,基于存储器系统110的实施方案,可以省略控制器130中的一个或多个组件,或者添加其它组件。
60.主机102和存储器系统110可以包括在特定协议下传输和接收信号、数据片段等的控制器或接口。例如,存储器系统110中的主机接口132可以包括能够将信号、数据片段等传输到主机102或者接收从主机102输入的信号、数据片段等的组件。
61.控制器130中的主机接口132可以接收从主机102输入的信号、命令(或请求)或数据片段。也就是说,主机102和存储器系统110可以使用设定的协议来交换数据。主机102和存储器系统110所支持的用于发送和接收数据的协议或接口的示例包括:通用串行总线(usb)、多媒体卡(mmc)、并行高级技术附件(pata)、小型计算机系统接口(scsi)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)、高速外围组件互连(pcie)、串列scsi(sas)、串行高级技术附件(sata)、移动工业处理器接口(mipi)等。根据实施例,主机接口132是一种用于与主机102交换数据的层,并且利用被称为主机接口层(hil)的固件来实施或由其驱动。
62.作为用于传输和接收数据的接口中的一种,电子集成驱动器(ide)或高级技术附件(ata)可以使用包括40根并行连接的导线的电缆以支持主机102和存储器系统110之间的数据传输和接收。当多个存储器系统110连接到单个主机102时,可以通过使用多个存储器系统110所连接的位置或拨码开关将多个存储器系统110划分为主设备和从设备。被设置为主设备的存储器系统110可以用作主存储器装置。ide(ata)已经演变为fast

ata、atapi和增强型ide(eide)。
63.串行高级技术附件(sata)是一种与电子集成驱动器(ide)装置所使用的各种ata标准的并行数据通信接口兼容的串行数据通信接口。ide接口中的40根导线可以被减少至sata接口中的6根导线。例如,ide的40个并行信号可以被转换为sata的在彼此之间传输的6个串行信号。sata因为其更快的数据传输和接收速率以及主机102中用于数据传输和接收的更少资源消耗而被广泛使用。sata可以支持将多达30个的外部装置连接到主机102中包括的单个收发器。另外,sata可以支持热插拔,这允许即使在主机102和另一装置之间的数据通信正在运行时,外部装置也能够与主机102附接或从主机102拆卸。因此,即使在主机102通电时,存储器系统110也可以作为如通用串行总线(usb)所支持的装置的附加装置来连接或断开。例如,在具有esata端口的主机102中,存储器系统110可以如外部硬盘一样自由拆卸。
64.小型计算机系统接口(scsi)是一种用于计算机、服务器和/或另一外围装置之间的连接的串行数据通信接口。与诸如ide和sata的其它接口相比,scsi可以提供较高的传输速度。利用scsi,主机102和至少一个外围装置(例如,存储器系统110)串联连接,但是可以通过并行数据通信来执行主机102和每个外围装置之间的数据传输和接收。利用scsi,较容易将诸如存储器系统110的装置连接到主机102或与主机102断开。scsi可以支持将15个其它装置连接到主机102中包括的单个收发器。
65.串列scsi(sas)是scsi的串行数据通信版本。利用sas,不仅主机102和多个外围装置串联连接,而且可以以串行数据通信方案来执行主机102和每个外围装置之间的数据传输和接收。sas可以通过串行电缆而不是并行电缆来支持主机102和外围装置之间的连接,从而使用sas轻松地管理设备,并且增强或提高运行可靠性和通信性能。sas可以支持将八个外部装置连接到主机102中包括的单个收发器。
66.高速非易失性存储器(nvme)是一种至少基于被设计为提高配备有非易失性存储器系统110的主机102、服务器、计算装置等的性能和设计灵活性的高速外围组件互连(pcie)的接口。此处,pcie可以使用插槽或特定电缆来连接诸如计算装置的主机102和诸如外围装置的存储器系统110。例如,pcie可以使用多个引脚(例如,18引脚、32引脚、49引脚、82引脚)和至少一根导线(例如,x1、x4、x8、x16)来实现每秒几百mb以上(例如,250mb/s、500mb/s、984.6250mb/s、1969mb/s)的高速数据通信。根据实施例,pcie方案可以实现每秒数十至数百千兆位(giga bits)的带宽。使用nvme的系统可以充分利用以高于硬盘的速度操作的诸如ssd的非易失性存储器系统110的操作速度。
67.根据实施例,主机102和存储器系统110可以通过通用串行总线(usb)连接。通用串行总线(usb)是一种可扩展的、可热插拔的即插即用串行接口,该串行接口可以在主机102和诸如键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等的外围装置之间提供经济有效的标准连接。诸如存储器系统110的多个外围装置可以联接到主机102中包括的单个收发器。
68.参照图2,错误校正电路138可以对待在存储器装置150中处理和待从存储器装置150输出的数据的错误位进行校正,错误校正电路138可以包括错误校正码(ecc)编码器和ecc解码器。此处,ecc编码器可以对待编程到存储器装置150中的数据执行错误校正编码,以生成添加了奇偶校验位的经编码数据,并且将经编码数据存储在存储器装置150中。当控制器130读取存储器装置150中存储的数据时,ecc解码器可以对从存储器装置150读取的数据中包含的错误进行检测和校正。换句话说,在对从存储器装置150读取的数据执行错误校正解码之后,错误校正电路138可以确定错误校正解码是否已经成功并且输出指令信号(例如,校正成功信号或校正失败信号)。错误校正电路138可以使用在ecc编码过程中生成的奇偶校验位来校正读取数据的错误位。当错误位的数量大于或等于可校正错误位的阈值数量时,错误校正电路138可以不校正错误位,而是可以输出指示校正错误位失败的错误校正失败信号。
69.根据实施例,错误校正电路138可以基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(ldpc)码、博斯

查德胡里

霍坤格姆(bose

chaudhuri

hocquenghem,bch)码、涡轮码、里德

所罗门(reed

solomon,rs)码、卷积码、递归系统码(rsc)、网格编码调制(tcm)或分组编码调制(bcm)。错误校正电路138可以包括基于上述代码中的至少一种
来执行错误校正操作的任何和所有电路、模块、系统和/或装置。
70.例如,ecc解码器可以对从存储器装置150传输的数据执行硬判决解码和/或软判决解码。此处,硬判决解码涉及对从存储器装置150中的非易失性存储器单元读取为“0”或“1”的数字数据中的错误进行校正。因为硬判决解码处置二进制逻辑信号,所以用于执行这种解码的电路或算法的设计和/或配置可以较为简单,并且处理速度可以比软判决解码快。
71.软判决解码可以通过两个或更多个量化值(例如,多位数据、近似值、模拟值等)来量化存储器装置150中的非易失性存储器单元的阈值电压,以基于两个或更多个量化值来校正错误。控制器130可以从存储器装置150中的多个非易失性存储器单元接收两个或更多个量化值,然后基于通过将量化值表征为诸如条件概率或可能性的信息的组合而生成的信息来执行解码。
72.根据实施例,ecc解码器可以使用针对软判决解码设计的方法之中的低密度奇偶校验和生成器矩阵(ldpc

gm)码。此处,低密度奇偶校验(ldpc)码使用一种算法,该算法可以根据可靠性从存储器装置150读取若干位数据的值,而不是像硬判决解码一样简单地读取数据1或0,并且通过消息交换迭代重复这样的读取以提高值的可靠性,然后最终将每个位确定为1或0。例如,使用ldpc码的解码算法可以被理解为概率解码。在硬判决解码中,将从非易失性存储器单元输出的值编码为0或1。与硬判决解码相比,软判决解码可以基于随机信息来确定非易失性存储器单元中存储的值。关于可以被认为是存储器装置150中可能发生的错误的位翻转,软判决解码可以提供提高的校正错误和恢复数据的概率,以及提供校正后的数据的可靠性和稳定性。ldpc

gm码可以具有内部ldgm码可以与高速ldpc码串行级联的方案。
73.根据实施例,ecc解码器可以使用针对软判决解码设计的方法之中的低密度奇偶校验卷积码(ldpc

cc)。本文中,ldpc

cc可以基于可变块长度和移位寄存器来采用线性时间编码和流水线解码。
74.根据实施例,ecc解码器可以使用针对软判决解码设计的方法之中的对数似然比涡轮码(llr

tc)。本文中,对数似然比(llr)可以被计算为非线性函数,以获得采样值与理想值之间的距离。另外,涡轮码(tc)可以包括二维或三维的简单码(例如,汉明码),并且在行方向和列方向上重复解码以提高值的可靠性。
75.电源管理单元(pmu)140可以控制控制器130中提供的电力。pmu 140可以监测供应到存储器系统110的电力(例如,供应到控制器130的电压),并且将电力提供到控制器130中的组件。pmu 140不仅可以检测通电或断电,而且可以生成触发信号,以使存储器系统110能够在供应到存储器系统110的电力不稳定时紧急备份当前状态。根据实施例,pmu 140可以包括能够积蓄可以在紧急情况下使用的电力的装置或组件。
76.存储器接口142可以用作用于处置在控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102接收的命令或请求而控制存储器装置150。在存储器装置150是闪速存储器的情况下,在处理器134的控制下,存储器接口142可以生成用于存储器装置150的控制信号,并且可以处理输入到存储器装置150或从存储器装置150输出的数据。例如,当存储器装置150包括nand闪速存储器时,存储器接口142包括nand闪存控制器(nfc)。存储器接口142可以提供用于处置控制器130和存储器装置150之间的命令和数据的接口。根据实施例,存储器接口142可以通过被称为闪存接口层(fil)的固件来
实施或由其驱动,作为用于与存储器装置150交换数据的组件。
77.根据实施例,对于与存储器装置150的数据输入/输出,存储器接口142可以支持开放nand闪存接口(onfi)、切换模式等。例如,onfi可以使用包括能够支持以8位或16位数据为单位进行双向传输和接收的至少一条信号线的数据路径(例如,通道、通路等)。控制器130与存储器装置150之间的数据通信可以通过关于异步单数据速率(sdr)、同步双倍数据速率(ddr)和切换双倍数据速率(ddr)的至少一个接口来实现。
78.存储器144可以是存储器系统110或控制器130中的工作存储器,对针对存储器系统110和控制器130中的操作而接收或传递的临时数据或事务数据进行存储。例如,在响应于来自主机102的请求而从存储器装置150输出的读取数据片段被输出到主机102之前,存储器144可以临时存储该读取数据片段。另外,在将从主机102输入的写入数据片段编程到存储器装置150中之前,控制器130可以将该写入数据片段临时存储在存储器144中。当控制器130控制存储器装置150的诸如数据读取、数据写入、数据编程和/或数据擦除的操作时,在存储器系统110的控制器130和存储器装置150之间传输或生成的数据片段可以被存储在存储器144中。除了该读取数据片段或写入数据片段之外,存储器144还可以存储在主机102和存储器装置150之间执行输入或输出数据片段的操作的信息(例如,映射数据、读取请求、编程请求)。根据实施例,存储器144可以包括命令队列、程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
79.在实施例中,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(sram)、动态随机存取存储器(dram)或两者来实施。尽管图1和图2示出,例如,存储器144被设置在控制器130内,但是本发明不限于此。存储器144可以被设置在控制器130的内部或外部。例如,存储器144可以由具有在存储器144和控制器130之间传送数据和/或信号的存储器接口的外部易失性存储器来实现。
80.处理器134可以控制存储器系统110的全部操作。例如,处理器134可以响应于从主机102接收的写入请求或读取请求而控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以运行固件以控制存储器系统110中的编程操作或读取操作。本文中,固件可以被称为闪存转换层(ftl)。稍后参照图3详细描述ftl的示例。根据实施例,可以利用微处理器或中央处理单元(cpu)来实施处理器134。
81.根据实施例,可以利用至少一个多内核处理器来实施存储器系统110。多内核处理器是一种集成了被认为是不同处理区域的两个或更多个内核的电路或芯片。例如,当多内核处理器中的多个内核独立地驱动或运行多个闪存转换层(ftl)时,可以提高存储器系统110的数据输入/输出速度(或性能)。根据实施例,可以通过多内核处理器中的不同内核独立地执行存储器系统110中的数据输入/输出(i/o)操作。
82.控制器130中的处理器134可以执行与从主机102输入的请求或命令相对应的操作。进一步地,存储器系统110可以独立于来自诸如主机102的外部装置的命令或请求而操作。通常,由控制器130响应于从主机102输入的请求或命令而执行的操作可以被认为是前台操作,而控制器130独立(例如,在没有从主机102输入的请求或命令的情况下)执行的操作可以被认为是后台操作。控制器130可以在存储器装置150中执行关于数据片段的用于读取、写入或编程、擦除等的前台操作或后台操作。另外,与作为从主机102传输的设置命令的设置参数命令或设置特征命令相对应的参数设置操作可以被认为是前台操作。作为在没有
从主机102传输的命令的情况下的后台操作,关于存储器装置150中包括的多个存储块152、154、156,控制器130可以执行垃圾收集(gc)、损耗均衡(wl),用于识别和处理坏块的坏块管理等。
83.根据实施例,基本相似的操作在一个实例中可以作为前台操作执行,而在另一实例中可以作为后台操作执行。例如,如果存储器系统110响应于从主机102输入的请求或命令而执行垃圾收集(例如,手动gc)时,则该垃圾收集可以被认为是前台操作。然而,当存储器系统110独立于主机102执行垃圾收集(例如,自动gc)时,该垃圾收集可以被认为是后台操作。
84.当存储器装置150包括具有非易失性存储器单元的多个管芯(或多个芯片)时,控制器130可以被配置为关于从主机102输入的多个请求或命令执行并行处理,以提高存储器系统110的性能。例如,所传输的请求或命令可以被分布到存储器装置150中的多个管芯或多个芯片并在其中进行并行处理。控制器130中的存储器接口142可以通过至少一个通道和至少一个通路连接到存储器装置150中的多个管芯或芯片。当控制器130响应于与包括非易失性存储器单元的多个页面相关联的请求或命令而通过每个通道或每个通路将多个数据片段分配和存储在多个管芯中时,可以同时或并行地执行与该请求或命令相对应的多个操作。这样的处理方法或方案可以被认为是交错方法。因为利用交错方法操作的存储器系统110的数据输入/输出速度可以比未利用交错方法的存储器系统110的数据输入/输出速度快,所以可以提高存储器系统110的数据i/o性能。
85.作为示例而非限制,控制器130可以识别出与存储器装置150中的多个存储器管芯相关联的多个通道(或通路)中的每一个的状态。对于每个通道/通路,控制器130可以将其确定为具有忙碌状态、就绪状态、活动状态、空闲状态、正常状态和/或异常状态。控制器对通过哪个通道或通路传递指令(和/或数据)的确定可以与物理块地址相关联,例如,指令(和/或数据)传递到哪个(哪些)管芯。对于这样的确定,控制器130可以参考从存储器装置150传递的描述符。作为具有特定格式或结构的数据的描述符可以包括描述有关存储器装置150的特性的参数块或参数页面。例如,描述符可以包括装置描述符、配置描述符、单元描述符等。控制器130可以参考或使用描述符来确定经由哪个(哪些)通道或通路来交换指令或数据。
86.参照图2,存储器系统110中的存储器装置150可以包括被表示为152、154、156的多个存储块,多个存储块中的每一个包括多个非易失性存储器单元。根据实施例,存储块可以是被一起擦除的一组非易失性存储器单元。例如152、154、156的每个存储块可以包括多个页面,页面是一起被读取或编程的一组非易失性存储器单元。尽管在图2中未示出,但是例如152、154、156的每个存储块可以具有高度集成的三维堆叠结构。进一步地,存储器装置150可以包括多个管芯,每个管芯包括多个平面,每个平面包括多个存储块。存储器装置150的配置可以根据存储器系统110的性能而变化。多个存储块152、154、156可以被包括在图1所示的多个存储块60中。
87.在图2所示的存储器装置150中,根据该存储块的一个存储器单元中可以存储或代表的位的数量,多个存储块152、154、156中的每一个可以是诸如单层单元(slc)存储块、多层单元(mlc)存储块等的不同类型的存储块中的任意一种。此处,slc存储块包括由每个存储一位数据的存储器单元实施的多个页面。slc存储块可以具有高数据i/o操作性能和高耐
久性。mlc存储块包括由每个存储多位数据(例如,两位或更多位)的存储器单元实施的多个页面。与slc存储块相比,对于相同的空间,mlc存储块可以具有更大的存储容量。鉴于存储容量,mlc存储块可以高度集成。在实施例中,存储器装置150可以利用诸如以下的mlc存储块来实施:双层单元(dlc)存储块、三层单元(tlc)存储块、四层单元(qlc)存储块或其组合。双层单元(dlc)存储块可以包括由每个能够存储2位数据的存储器单元实施的多个页面。三层单元(tlc)存储块可以包括由每个能够存储3位数据的存储器单元实施的多个页面。四层单元(qlc)存储块可以包括由每个能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可以利用每个包括多个页面的块来实施,该多个页面由每个能够存储五位或更多位数据的存储器单元来实施。
88.根据实施例,控制器130可以将存储器装置150中的多层单元(mlc)存储块用作slc存储块。多层单元(mlc)存储块的数据输入/输出速度可能比slc存储块的数据输入/输出速度慢。也就是说,当mlc存储块用作slc存储块时,读取操作或编程操作的裕量可能减小。当多层单元(mlc)存储块用作slc存储块时,控制器130可以利用多层单元(mlc)存储块更快的数据输入/输出速度。例如,控制器130可以将mlc存储块用作缓冲器来临时存储数据片段,因为缓冲器可能需要较高的数据输入/输出速度来提高存储器系统110的性能。
89.进一步地,根据实施例,控制器130可以在不对存储器装置150中的特定多层单元(mlc)存储块执行擦除操作的情况下,多次将多个数据片段编程到mlc中。通常,非易失性存储器单元具有不支持数据重写的特征。然而,控制器130可以使用多层单元(mlc)可以存储多位数据的特征,以多次将多个1位数据片段编程到mlc中。对于mlc重写操作,当将1位数据片段编程到非易失性存储器单元中时,控制器130可以将编程次数作为单独的操作信息进行存储。根据实施例,在将另一数据片段重写到相同的非易失性存储器单元中之前,可以执行用于均匀地均衡非易失性存储器单元的阈值电压的操作。
90.在本公开的实施例中,存储器装置150可以被实现为诸如闪速存储器的非易失性存储器,例如,nand闪速存储器、nor闪速存储器等。可选地,存储器装置150可以由相变随机存取存储器(pcram)、铁电随机存取存储器(fram)、自旋注入磁存储器(stt

ram)和自旋转移力矩磁性随机存取存储器(stt

mram)等中的至少一种来实施。
91.参照图3,描述根据本公开的另一实施例的存储器系统中的控制器130。控制器130与主机102和存储器装置150协作。如图所示,控制器130包括闪存转换层(ftl)240以及图2的主机接口132、存储器接口142和存储器144。
92.尽管在图3中未示出,但是根据实施例,图2所示的ecc 138可以被包括在闪存转换层(ftl)240中。在另一实施例中,ecc 138可以被实施为被包括在控制器130中或与控制器130相关联的单独的模块、电路、固件等。
93.主机接口132用于处置从主机102传输的命令、数据等。作为示例而非限制,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收的命令、数据等,并且以命令、数据等被存储的顺序将它们输出到缓冲器管理器52。缓冲器管理器52可以对从命令队列56接收的命令、数据等进行分类、管理或调整。事件队列54可以顺序地传输用于处理从缓冲器管理器52接收的命令、数据等的事件。
94.可以从主机102传输相同类型的多个命令或数据,例如读取命令或写入命令,或者可以将不同类型的命令和数据通过主机102混合或打乱之后传输到存储器系统110。例如,
可以将用于读取数据的多个命令(读取命令)传递到存储器系统110,或者可以将用于读取数据的命令(读取命令)和用于编程/写入数据的命令(写入命令)交替地传输到存储器系统110。主机接口132可以顺序地将从主机102传输的命令、数据等存储到命令队列56。此后,主机接口132可以根据已从主机102接收的命令、数据等的类型来估计或预测控制器130将执行哪种内部操作。主机接口132可以至少基于命令、数据等的特性来确定它们的处理顺序和优先级。根据从主机102传输的命令、数据等的特性,主机接口132中的缓冲器管理器52被配置为确定该缓冲器管理器是否应将命令、数据等存储在存储器144中,或者确定该缓冲器管理器是否应将命令、数据等传递到闪存转换层(ftl)240中。事件队列54接收从缓冲器管理器52接收的、待由存储器系统110或控制器130响应于从主机102传输的命令、数据等而内部运行和处理的事件,从而以接收到的顺序将事件传递到闪存转换层(ftl)240中。
95.根据实施例,闪存转换层(ftl)240可以包括主机请求管理器(hrm)46、映射管理器(mm)44、状态管理器(gc/wl)42和块管理器(bm/bbm)48。主机请求管理器(hrm)46可以管理从事件队列54输入的事件。映射管理器(mm)44可以处置或控制映射数据。状态管理器42可以执行垃圾收集(gc)或损耗均衡(wl)。块管理器48可以对存储器装置150中的块运行命令或指令。状态管理器42可以包括图1所示的操作状态检查器194和垃圾收集控制器196。尽管在图3中未示出,但是根据实施例,图2中描述的错误校正电路138可以被包括在闪存转换层(ftl)240中。根据实施例,错误校正电路138可以被实施为控制器130中的单独的模块、电路或固件。
96.另外,根据实施例,闪存转换层(ftl)240可以包括图1中描述的输入/输出控制器192,存储器接口142可以包括图1中描述的收发器198。
97.作为示例而非限制,主机请求管理器(hrm)46可以根据从主机接口132传递的读取和编程命令以及事件,使用映射管理器(mm)44和块管理器48来处置或处理请求。主机请求管理器(hrm)46可以将查询请求发送到映射数据管理器(mm)44,以确定对应于与事件相关联的逻辑地址的物理地址。主机请求管理器(hrm)46可以将读取请求与物理地址一起发送到存储器接口142,以处理读取请求(处置事件)。另一方面,主机请求管理器(hrm)46可以将编程请求(写入请求)发送到块管理器48,以将数据编程到存储器装置150中的特定空页面(没有数据),然后可以将与编程请求相对应的映射更新请求传输到映射管理器(mm)44,以在将逻辑

物理地址相互关联或映射的信息中更新与编程数据有关的项。
98.此处,块管理器48可以将从主机请求管理器(hrm)46、映射数据管理器(mm)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或增强存储器系统110(见图2)的编程或写入性能,块管理器48可以收集编程请求并将针对多个平面和单触发编程操作的闪存编程请求发送到存储器接口142。在实施例中,块管理器48将若干闪存编程请求发送到存储器接口142,以增强或最大化多通道和多方向闪存控制器的并行处理。
99.另一方面,块管理器48可以被配置为根据有效页面的数量来管理存储器装置150中的块,当需要空闲块时选择并擦除没有有效页面的块,并且当确定有必要或期望进行垃圾收集时,选择包括最少数量的有效页面的块。状态管理器42可以执行垃圾收集以将有效数据移动到空块,并且擦除有效数据被移动的块,使得块管理器48可以具有足够的空闲块(没有数据的空块)。如果块管理器48将关于待擦除的块的信息提供到状态管理器42,则状
态管理器42可以检查待擦除的块的所有闪存页面以确定每个页面是否有效。例如,为了确定每个页面的有效性,状态管理器42可以识别每个页面的带外(oob)区域中记录的逻辑地址。为了确定每个页面是否有效,状态管理器42可以将页面的物理地址与被映射到从查询请求获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面将编程请求发送到块管理器48。当编程操作完成时,可以通过映射管理器44进行的更新来更新映射表。
100.映射管理器44可以管理逻辑

物理映射表。映射管理器44可以处理由主机请求管理器(hrm)46或状态管理器42生成的诸如查询、更新等的请求。映射管理器44可以将整个映射表存储在存储器装置150(例如,闪速存储器/非易失性存储器)中,并且根据存储器144的存储容量高速缓存映射条目。当在处理查询或更新请求的同时发生映射高速缓存未命中时,映射管理器44可以将读取请求发送到存储器接口142,以加载存储器装置150中存储的相关映射表。当映射管理器44中的脏高速缓存块的数量超过某个阈值时,可以将编程请求发送到块管理器48,从而得到干净的高速缓存块,并且可以将脏映射表存储在存储器装置150中。
101.另一方面,当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器(hrm)46可以针对相同逻辑地址的页面来编程最新版本的数据,并且即时发出更新请求。当状态管理器42在未正确完成有效页面的复制的状态下请求映射更新时,映射管理器44可以不执行映射表更新。原因在于,如果状态管理器42请求映射更新,并且稍后才完成有效页面复制,则将利用旧的物理信息发出映射请求。仅在最新的映射表仍指向旧的物理地址的情况下,映射管理器44可以执行映射更新操作,以确保准确性。
102.图4示出根据本公开的另一实施例的关于存储器系统中的垃圾收集的状态机。
103.参照图4,与在存储器系统110中执行的垃圾收集相关联的状态机可以包括四个状态382、384、386、388。首先,在垃圾收集输入状态382下,控制器130可以收集关于存储器装置150中的脏块与所有的存储块60的计数或比率的信息。
104.在垃圾收集确定状态384下,控制器130可以确定垃圾收集的运行时间或运行时段。在这种情况下,这样的时间或时段可以基于根据脏块dirty blk的数量或比率来确定的模式而确定。
105.响应于在垃圾收集确定状态384下确定的垃圾收集的运行时间或运行时段,控制器130可以在垃圾收集运行状态386下执行垃圾收集。如果在垃圾收集确定状态384下未确定垃圾收集的运行时间或运行时段,则控制器130在垃圾收集运行状态386下可以不执行垃圾收集。
106.在垃圾收集输出状态388下,控制器130可以通过在垃圾收集运行状态386下执行的垃圾收集在存储器装置150中获得一个或多个新的空闲块free blk。
107.存储器系统110可以响应于来自外部装置的请求而执行数据i/o操作。在垃圾收集输出状态388下获得的空闲块free blk可以用于存储连同请求一起输入的数据,因此,可能出现新的脏块dirty blk,即,空闲块free blk转换为脏块dirty blk。控制器130可以在垃圾收集输入状态382下收集关于脏块dirty blk的数量或比率的信息。
108.根据实施例,在垃圾收集运行状态386下执行的垃圾收集的结果可以被反馈到垃圾收集确定状态384(gc反馈)。例如,当通过垃圾收集获得两个空闲块free blk时,该结果可以被反馈到垃圾收集确定状态384。如果控制器130在垃圾收集确定状态384下确定这两
个所获得的空闲块free blk符合要求时,则控制器130可以确定当前不需要附加的垃圾收集,因此没有确定运行这种附加的垃圾收集的时间或时段。然而,如果控制器130在垃圾收集确定状态384下确定这两个所获得的空闲块free blk不符合要求,则控制器130可以确定用于附加的垃圾收集的时间或时段。
109.图5a和图5b是示出根据实施例的主机的示图。
110.参照图2和图3描述的主机102的操作系统(os)可以包括一个或多个文件系统(fs)。fs统称为在数据处理系统100的os中管理存储器装置150(辅助存储器装置、磁盘或闪速存储器装置)以及存储器装置150中存储的文件的系统。fs也可以指示存储器装置150中存储的文件以及存储文件的结构。fs可以包括日志结构文件系统(lfs)。
111.lfs将存储器装置的整个存储区域划分为多个区域。lfs将日志顺序地分配给多个区域,并且对分配了日志的存储区域(日志区域)执行顺序的写入操作。因此,lfs可以实施较高的写入性能。lfs可以包括闪存友好型文件系统(f2fs)。
112.f2fs是对元数据使用更新延迟方法的lfs。lfs不支持数据重写。因此,当校正数据时,lfs另外将日志分配给未分配日志的新存储区域(空闲区域),并且将数据写入分配了该日志的日志区域。
113.随着空闲区域成为日志区域,更多的日志可能无法再被分配给空闲区域。lfs执行段回收以获得被划分为多个段的存储区域的可用空间。段回收是指将日志区域中的多个段之中的牺牲段改变为空闲区域并将该空闲区域重新用作数据存储区域的操作。牺牲段可以包括有效逻辑块和无效逻辑块。段回收操作包括将与牺牲段中包括的有效逻辑块相对应的数据分配给空闲段的操作。段回收中的一个操作是选择牺牲段。
114.如上所述,将与牺牲段中包括的有效逻辑块相对应的数据复制到空闲段中。因此,牺牲段中存在的有效逻辑块更多,有效数据的写入操作的负载就会增加。因此,优选地,选择有效逻辑块在所有逻辑块之中的比率较低的段作为牺牲段。
115.然而,当文件系统仅考虑段中包括的有效逻辑块的数量来选择牺牲段时,存储器系统110的垃圾收集成本可能增加。
116.因此,根据实施例,主机102可以考虑到由存储器系统110执行的垃圾收集的单位来选择用于段回收的牺牲段。
117.对于该操作,如图5a所示,主机102可以包括主机存储器106、处理器104和主机控制器接口108。
118.主机存储器106可以临时存储从存储器系统110读取的数据以及待写入存储器系统110的数据。
119.主机控制器接口108可以中继在主机102和存储器系统110之间交换的数据。主机控制器接口108可以支持用于交换数据的协议,并且包括用于连接数据电缆的连接器和用于处理数据交换的逻辑。
120.处理器104可以管理主机以及主机存储器106的全部操作。处理器104可以用作fs。
121.根据实施例,段组可以包括位于特定地址区域内的多个段。根据另一实施例,段组中包括的段可以包括已经执行了顺序的写入操作的逻辑块。段组可以对应于由存储器系统110执行的垃圾收集的单位。也就是说,段组可以是存储器装置150中包括的存储块mblk。
122.当在日志区域中选择用于段回收的牺牲段时,fs检查日志区域中的段中的每一个
属于哪个段组,并且计算每个段组的有效逻辑块的数量。当针对日志区域中包括的所有段组计算了有效逻辑块的数量时,fs基于日志区域中所有段组的有效逻辑块的数量来选择牺牲段。
123.所选择的牺牲段不仅可以包括有效逻辑块,而且可以包括由于删除或更新而不再有效的无效逻辑块。牺牲段中包括的有效逻辑块可以被改变为待存储数据的空逻辑块。fs可以通过参考主机存储器106中存储的状态信息的位图来识别牺牲段中包括的逻辑块之中的有效逻辑块。
124.参照图5b描述参照图5a描述的主机102的逻辑模块层。参照图5b,主机102包括用户空间和核心空间。
125.用户空间是运行用户应用程序的位置,核心空间是运行核心的专用区域。为了使用户空间中的用户应用程序访问核心空间,可以使用由该核心提供的系统调用。
126.核心空间可以包括虚拟fs、存储器管理模块和装置驱动器。虚拟fs可以将用户空间的i/o调用连接到合适的fs。存储器管理模块可以管理主机存储器(图5a的106)。装置驱动器可以提供用于控制一个或多个fs和存储器系统110的硬件控制调用。例如,fs可以是ext2、ntfs、smbfs、proc等。
127.虚拟fs可以控制一个或多个fs来彼此交互。为了对不同媒介的不同fs执行读取/写入操作,可以使用系统化的系统调用。例如,可以使用诸如打开()、读取()和写入()的系统调用,而不考虑fs的类型。也是是说,虚拟fs是存在于用户空间和fs之间的抽象层。
128.装置驱动器用作硬件和用户应用程序(或os)之间的接口。装置驱动器是使硬件在特定os下正常操作的程序。装置驱动器可以控制主机控制器接口108。
129.在下文中,参照图6a至图6c描述包括参照图5a和图5b描述的fs的主机102管理存储器系统110的方法。
130.图6a是示出根据实施例的存储器装置中包括的存储区域的结构的示图。图6b是示出主机102中包括的fs的结构的示图。图6c是概念性地示出根据实施例的存储器系统110的读取操作/写入操作/擦除操作的单位以及主机102的读取操作/写入操作/擦除操作的单位的示图。
131.参照图6a,可以将存储器装置150的存储区域划分为页面page,每个页面page对应于存储器系统110的读取操作/写入操作的单位。可以将存储器装置150的存储区域划分为存储块mblk,每个存储块mblk对应于擦除操作的单位。也就是说,存储块mblk中的每一个可以包括多个页面page。当一个页面page的大小是4k字节并且一个存储块mblk包括1024个页面page时,存储块mblk中的每一个可以具有4m字节的大小。存储器系统110可以将页面page的位置表示为物理页面地址ppa。
132.存储块mblk可以是封闭存储块、开放存储块和空闲存储块中的任意一个。封闭存储块是无法再写入数据的存储块mblk,开放存储块是包括未存储数据的空闲页面的存储块mblk,空闲存储块是仅包括空闲页面的存储块mblk。
133.因为存储器系统110的写入操作是根据顺序访问方法执行的,所以可以将数据写入开放存储块和空闲存储块中的页面。即使在更新封闭存储块中存储的数据时,也会将更新后的数据写入空闲存储块,而不是写入封闭存储块。此时,已经存储在封闭存储块中的数据变为无效数据。
134.随着新写入数据或更新所存储的数据,空闲存储块的数量可能变得不足。在这种情况下,无法执行新数据的写入操作。此时,如参照图4所描述的,存储器系统110基于存储块执行垃圾收集。
135.根据实施例的fs可以将存储器装置150的存储区域设置为根据随机访问方法写入数据的随机区域(未示出),可以重写数据的重写区域(未示出)以及根据顺序访问方法写入数据的顺序区域(未示出)中的至少一个。在实施例中,fs将存储器装置150的存储区域划分为随机区域和顺序区域。然而,本发明不限于此。
136.用于存储器系统110的操作的各种信息片段可以存储在存储器装置150的随机区域中。例如,各种信息片段可以包括当前分配的页面的数量、有效页面的数量、数据的存储位置以及被作为位图管理的状态信息。用户使用的各种目录信息片段、数据片段和文件信息片段可以存储在顺序区域中。
137.如图6b所示,顺序区域可以包括分配了日志的日志区域以及未分配日志的空闲区域。日志区域是写入了数据的区域,而空闲区域是即使当前没有写入数据也可以写入数据的区域。
138.因为顺序区域是根据顺序访问方法写入的,所以仅可以将数据写入空闲区域。即使在更新日志区域中存储的数据时,也可能将更新后的数据写入空闲区域,而不是写入日志区域内已经存储了该数据的位置。此时,日志区域中已经存储的该数据变为无效数据。
139.fs可以将存储器装置150的存储区域划分为逻辑块lblk,每个逻辑块lblk对应于fs的数据读取操作/写入操作的单位。fs可以将存储器装置150的存储区域划分为段seg,每个段seg对应于fs的擦除操作的单位。可以在主机102格式化存储器系统110时决定这种划分,但是本发明不限于此。
140.段seg中的每一个可以包括多个逻辑块lblk。例如,当一个逻辑块lblk的大小是4k字节并且一个段seg包括512个逻辑块lblk时,一个段seg可以具有2m字节的大小。主机102可以将逻辑块lblk的位置表示为lba(逻辑块地址)。
141.图6c是概念性地示出根据实施例的存储器系统110的读取操作/写入操作/擦除操作的单位以及主机102的读取操作/写入操作/擦除操作的单位的示图。
142.如参照图6a和图6b所描述的,与存储器系统110的读取操作/写入操作的单位相对应的页面page的大小可以等于与主机102中包括的fs的读取操作/写入操作的单位相对应的逻辑块lblk的大小(例如,4k字节)。在这种情况下,存储器系统110和主机102可以以各自具有4k字节大小的页面或逻辑块为单位执行读取操作/写入操作。主机102的一个逻辑块lblk可以对应于存储器系统110的一个页面page。因此,存储器系统110可以通过将从主机102接收的一个逻辑块地址lba映射到一个物理页面地址ppa来生成l2p映射数据,并且管理存储逻辑块地址lba上的数据的存储区域。
143.然而,存储器系统110的存储块mblk的大小(即,4m字节)可能不等于主机102的段seg的大小(即,2m字节)。也就是说,如图6c所示,一个存储块mblk可以具有与两个段seg相对应的大小。主机102的擦除操作的单位是段seg,而存储器系统110的擦除操作的单位是存储块mblk。也就是说,主机102的段回收的单位可以与存储器系统110的垃圾收集的单位不同。
144.当主机102对一个段执行段回收时,存储器系统110并不仅对与该一个段相对应的
存储块mblk的1/2执行垃圾收集,而是对整个存储块mblk执行垃圾收集。
145.图7示出根据实施例的数据处理系统的操作方法。
146.参照图7描述的数据处理系统可以包括存储器系统110和主机102,存储器系统110包括存储器装置150和控制器130,主机102互连到存储器系统110。
147.主机102可以在逻辑上将存储器装置150的存储区域划分为多个逻辑块,将逻辑块地址分配给逻辑块,并且请求存储器系统110读取或写入与逻辑块相对应的数据。主机102可以在逻辑上将存储器装置150的存储区域划分为多个段,每个段包括多个逻辑块,并且基于段执行段回收。在实施例中,逻辑块是与数据相对应的逻辑空间,并且页面是存储数据的物理空间。
148.当未分配日志的空闲段的数量等于或小于设定值时,在操作s1000中,主机102可以决定对日志区域中包括的段执行段回收以获得空闲段。
149.由主机102执行的段回收操作可以包括:操作s2000,选择待执行段回收的牺牲段vic_seg;以及操作s3000,通过对牺牲段vic_seg执行段回收来获得空闲段。
150.获得空闲段的操作可以包括:将新的逻辑块地址分配给新的有效逻辑块(数据从牺牲段vic_seg中包括的当前有效逻辑块迁移到该新的有效逻辑块)的操作,以及释放分配给当前有效逻辑块(该当前有效逻辑块由于数据迁移而无效)的逻辑块地址lba的无效操作。
151.与分配了日志的逻辑块地址lba相对应的数据被存储在存储器系统110中,而不是主机102中。因此,为了执行使当前有效逻辑块(数据现在存储在该当前有效逻辑块中并将迁移到新的有效逻辑块)的逻辑块地址lba无效的操作,以及将新的逻辑块地址分配给新的有效逻辑块(数据从当前有效逻辑块迁移到该新的有效逻辑块中)的操作,主机102可操作地与存储器系统110接合。
152.更具体地,主机102请求存储器系统110读取与待被无效的当前逻辑块地址lba相对应的数据。主机102将新的逻辑块地址分配给新的有效逻辑块(所接收的数据迁移到该新的有效逻辑块中),并且基于新的逻辑块地址请求存储器系统110写入数据。此外,主机102可以请求存储器系统110使待被无效的当前逻辑块地址lba无效。
153.在从主机102接收写入请求之后,存储器系统110可能确定存储器装置150中包括的空闲存储块的数量不足。因此,存储器系统110可以决定对已经完成了编程操作的封闭存储块执行垃圾收集(gc)。存储器系统110可以将封闭存储块之中有效页面的数量等于或小于阈值的脏块设置为迁移操作的目标。
154.在操作s2000中,可以选择包括较少数量的有效逻辑块的段作为牺牲段vic_seg,以提高段回收的效率。然而,根据实施例,主机102基于与存储块相对应的有效逻辑块的数量来选择牺牲段vic_seg,以考虑存储器系统110的垃圾收集效率以及主机102的段回收效率。
155.例如,当与来自主机的无效请求inv_req相对应的逻辑块地址lba对应于一个或多个存储块时,存储器系统110可以不执行迁移操作,而是使整个存储块中存储的数据无效。存储器系统110可以通过仅执行擦除操作而不进行迁移操作来完成垃圾收集。
156.在操作s3000中,主机102可以将牺牲段vic_seg改变为空闲段。对于该操作,主机102可以使分配给牺牲段vic_seg的逻辑块地址lba无效,并且将牺牲段vic_seg作为空闲段
包括在空闲段列表中。
157.根据实施例,存储器装置150的、通过段回收而无效的页面可以不分散在多个存储块中,而是集中并位于特定的存储块中。因此,可以减少存储器系统110的迁移成本(复制成本)以提高垃圾收集的效率。迁移成本可以包括迁移操作的执行时间和执行间隔。
158.图8a示出参照图7描述的操作s2000中的牺牲段选择方法的细节。
159.在操作s2010中,主机102检查日志区域中包括的段中的每一个中包括的逻辑块的数量nvalid@seg,以及存储块识别信息mblk_id。
160.在操作s2030中,主机102基于nvalid@seg和存储块识别信息mblk_id,计算与各个存储块相对应的有效逻辑块的数量nvalid@mblk。存储块识别信息mblk_id可以指示与逻辑块相对应的存储块。因此,主机102可以使用nvalid@seg和存储块识别信息mblk_id来计算在与存储块mblk1相对应的段中包括的有效逻辑块的数量nvalid@mblk。
161.在操作s2050中,主机102可以选择与有效逻辑块的数量等于或小于阈值或者包括相对较低数量的有效逻辑块的存储块相对应的段作为牺牲段vic_seg。
162.图8b示出如在图7的操作s3000中所描述的主机102结合存储器系统110执行段回收的方法。
163.参照图8b,在操作s3100中,主机102检查在图7的操作s2000中选择的牺牲段vic_seg中包括的有效逻辑块valid_lblk的逻辑块地址lba。
164.与有效逻辑块相对应的数据dat存储在存储器系统110中,而不是主机102中。在操作s3150中,主机102将读取请求rd_req与逻辑块地址lba一起传输到存储器系统110以读取数据。
165.当从主机102一起接收到逻辑块地址lba和读取请求rd_req时,存储器系统110通过参考l2p映射数据来搜索与接收到的逻辑块地址lba相对应的物理页面地址。在操作s3200中,存储器系统110读取与在搜索中找到的物理页面地址相对应的物理位置中存储的数据dat。在操作s3250中,存储器系统110将读取数据dat传输到主机102。主机102可以将从存储器系统110接收的读取数据dat临时存储在主机存储器106中。
166.在操作s3300中,主机102为临时存储的读取数据dat分配新的逻辑块地址new_lba。在操作s3300中的用于有效逻辑块的新的逻辑块地址new_lba可以指示空闲段中包括的逻辑块。
167.在操作s3450中,主机102将数据dat和新的逻辑块地址new_lba与写入请求wt_req一起传输到存储器系统110,以将数据dat存储在存储器系统110中分配了新的逻辑块地址new_lba的新的有效逻辑块中。
168.在操作s3500中,存储器系统110执行将与写入请求wt_req一起接收的数据dat存储在开放存储块中的写入操作。通过操作s3500的写入操作,存储器系统110将存储数据dat的页面的物理页面地址映射到接收到的新的逻辑块地址new_lba。
169.在执行写入操作之后,在操作s3550中,存储器系统110将存储数据dat的存储块的存储块识别信息mblk_id传输到主机102。根据实施例,存储器系统110可以将存储块识别信息mblk_id以及对写入请求wt_req的确认ack传输到主机102。
170.当从存储器系统110接收存储块识别信息mblk_id时,在操作s3600中,主机102可以将接收到的存储块识别信息mblk_id与新的逻辑块地址new_lba进行匹配。可以在随后的
牺牲段选择过程期间使用在操作s3600中与新的逻辑块地址new_lba匹配的存储块识别信息mblk_id来执行段回收。
171.然后,在操作s3700中,主机102使牺牲段vic_seg中包括的有效逻辑块的逻辑块地址lba无效,并且生成空闲段fr_seg。在操作s3700中被无效的逻辑块地址inv_lba是在操作s3100中确定的逻辑块地址。
172.在操作s3750中,主机102将在操作s3700中被无效的逻辑块地址inv_lba传输到存储器系统110。在操作s3800中,存储器系统110基于从主机102接收的被无效的逻辑块地址inv_lba,使存储器系统110中的逻辑块地址无效。基于从主机102接收的被无效的逻辑块地址inv_lba,存储器系统110可以通过改变逻辑块地址的有效信息valid,或者将存储器系统110中管理的映射数据内的物理页面地址与该逻辑块地址inv_lba取消映射,使逻辑块地址无效。
173.此后,参照图9a至图9h详细描述根据实施例的数据处理系统100的操作方法。
174.图9a示出在操作s1000中决定执行段回收的过程的详细实施例。
175.参照图9a,fs包括作为日志区域的第一至第四段seg1至seg4以及作为空闲区域的第五段seg5。存储块mblk包括已经完成了编程操作的第一和第二存储块mblk1和mblk2,以及包括空闲页面并因此可以被编程的第三存储块mblk3。第一至第四段seg1至seg4以及第一和第二存储块mblk1和mblk2存储与有效逻辑块地址lba1、5、6、8、9、11、16、17、18、19和20相对应的数据d1至d11。因为仅第五段seg5是空闲段,所以主机102可以决定执行段回收以获得空闲区域。
176.图9b示出在操作s2000中选择牺牲段的过程的详细实施例。
177.在图9b中,将逻辑块地址lba的有效信息valid和段中包括的有效逻辑块地址的数量nvalid@seg称为状态信息。逻辑块地址lba可以是逻辑块的识别信息。当在操作s1000中决定执行段回收时,在操作s2000中,主机102使用主机存储器106中存储的状态信息来选择牺牲段vic_seg。
178.对于该操作,主机102检查与作为日志区域的第一至第四段seg1至seg4中包括的逻辑块中的每一个相对应的存储块识别信息mblk_id和有效信息valid(图8a的s2010)。主机102可以计算与各个存储块mblk相对应的有效逻辑块的数量(图8a的s2030)。也就是说,主机102可以分别将第一和第二存储块mblk1和mblk2中包括的有效逻辑块的数量计算为5和6。主机102可以选择与有效逻辑块的数量为5的第一存储块mblk1相对应的第一和第二段seg1和seg2作为牺牲段vic_seg(图8a的s2050)。
179.图9c至图9h详细示出操作s3000中的段回收过程的实施例。
180.参照图9b和图9c,主机102可以检查牺牲段中包括的有效逻辑块的逻辑块地址lba1、lba5、lba6、lba8和lba9(图8b的s3100),并且在操作s3150中,将逻辑块地址lba1、lba5、lba6、lba8和lba9与读取请求rd_req一起传输到存储器系统110。
181.存储器系统110对从主机102与读取请求rd_req一起接收的逻辑块地址lba执行读取操作(图8b的s3200)。在操作s3250中,存储器系统110将与读取请求相对应的数据dat传输到主机102。也就是说,如图9a所示,存储器系统110搜索与从主机102与读取请求rd_req一起接收的逻辑块地址lba1、lba5、lba6、lba8和lba9相对应的物理页面地址ppa1、ppa5、ppa6、ppa8和ppa9。然后,在操作s3250中,存储器系统110对在搜索中找到的物理页面地址
ppa1、ppa5、ppa6、ppa8和ppa9执行读取操作,并且将数据d1、d2、d3、d4和d5传输到主机102。
182.图9d详细示出图8b的操作s3300和s3450的实施例。
183.在操作s3300中,主机102可以将新的逻辑块地址lba21、lba22、lba23、lba24和lba25分配给用于从存储器系统110接收的数据d1、d2、d3、d4和d5的逻辑块。在操作s3450中,主机102将对数据d1、d2、d3、d4和d5的写入请求wt_req与新的逻辑块地址lba21、lba22、lba23、lba24和lba25一起传输到存储器系统110。
184.图9e详细示出图8b的操作s3500和s3550的实施例。
185.存储器系统110可以针对新的逻辑块地址lba21、lba22、lba23、lba24和lba25以及数据d1、d2、d3、d4和d5,对作为空闲存储块的第三存储块mblk3执行写入操作。
186.存储器系统110可以将存储数据d1、d2、d3、d4和d5的第三存储块mblk3的识别信息传输到主机102。第三存储块mblk3在存储器系统110内与新的逻辑块地址lba21、lba22、lba23、lba24和lba25映射。
187.图9f示出图8b的操作s3600的详细实施例。主机102可以将第三存储块mblk3的识别信息与新的逻辑块地址lba21、lba22、lba23、lba24和lba25进行匹配。
188.图9g详细示出图8b的操作s3700、s3750和s3800的实施例。
189.主机102对逻辑块地址lba1、lba5、lba6、lba8和lba9执行无效操作。主机102可以通过改变逻辑块地址lba1、lba5、lba6、lba8和lba9的有效信息valid或者将映射数据中的物理页面地址ppa1、ppa5、ppa6、ppa8和ppa9与该逻辑块地址lba1、lba5、lba6、lba8和lba9取消映射来使逻辑块地址lba1、lba5、lba6、lba8和lba9无效。因此,第一存储块mblk1可以变为仅存储无效数据而不存储有效数据的无效存储块。也就是说,在操作s3700中,主机102可以通过使先前的逻辑块地址lba1、lba5、lba6、lba8和lba9无效来将牺牲段seg1和seg2改变为空闲段。
190.图9h详细示出图8b的操作s3750和s3800的实施例。
191.在操作s3750中,主机102将对被无效的逻辑块地址lba1、lba5、lba6、lba8和lba9的无效请求inv_req传输到存储器系统110。
192.在操作s3800中,存储器系统110可以从主机102接收对被无效的逻辑块地址lba1、lba5、lba6、lba8和lba9的无效请求inv_req,从而使第一存储块mblk1无效。
193.当主机102并非基于存储块mblk的有效逻辑块的数量nvalid@mblk选择牺牲段,而是基于段的有效逻辑块的数量nvalid@seg选择牺牲段时,存储器系统110无法通过段回收使第一存储块mblk1无效。
194.例如,当主机102基于段的有效逻辑块的数量nvalid@seg选择牺牲段时,牺牲段将是段“seg1和seg3”,而不是段“seg1和seg2”。
195.因此,主机102使牺牲段seg1和seg3中包括的有效逻辑块地址lba1、lba5和lba11无效,并且将新的逻辑块地址lba21、lba22和lba23分配给与被无效的逻辑块地址lba1、lba5和lba11相对应的数据。
196.主机102可以请求存储器系统110使逻辑块地址lba1、lba5和lba11无效,并且请求存储器系统110写入与新的逻辑块地址lba21、lba22和lba23相对应的新数据。
197.存储器系统110可以将与新的逻辑块地址lba21、lba22和lba23相对应的数据d1、d2和d6写入作为空闲存储块的第三存储块mblk3,并且根据逻辑块地址lba21、lba22和
lba23使物理页面地址ppa1、ppa5和ppa11无效。被无效的物理页面地址ppa1、ppa5和ppa11不是与一个存储块mblk中包括的页面相对应的物理页面地址。被无效的物理页面地址ppa1、ppa5和ppa11分散在第一和第二存储块mblk1和mblk2中。
198.当因为空闲存储块的数量不足而决定执行垃圾收集时,存储器系统110选择第一和第二存储块mblk1和mblk2中的任意一个作为牺牲存储块mblk,并且执行有效数据的迁移操作。也就是说,当主机102执行段回收时,存储器系统110可能执行不必要的迁移操作。
199.因此,当主机通过上述方法执行段回收时,可以考虑由存储器系统执行的垃圾收集的单位来选择牺牲段,这使得可以减少存储器系统的垃圾收集成本。
200.当主机执行垃圾收集时,主机可以基于与存储块相对应的有效逻辑块的数量来选择牺牲段。因此,存储器系统110可以通过执行最小迁移操作来使一个或多个存储块无效。存储器系统110可以通过仅执行擦除操作而不进行迁移操作来完成垃圾收集。
201.尽管已经示出和描述了各个实施例,但是对于本领域技术人员而言显而易见的是,在不脱离如所附权利要求书所限定的本发明的精神和范围的情况下,可以进行各种改变和修改。
转载请注明原文地址:https://win.8miu.com/read-150215.html

最新回复(0)