用于增强闪存转换层映射灵活性以得到性能和寿命改进的方法和系统与流程

文档序号:18214057发布日期:2019-07-19 22:30阅读:172来源:国知局
用于增强闪存转换层映射灵活性以得到性能和寿命改进的方法和系统与流程

本公开一般地涉及数据存储的领域。更具体地,本公开涉及用于增强通过闪存转换层映射的灵活性的方法和系统。



背景技术:

因特网和云计算的激增继续创建大量的数字内容。已经创建各种存储系统和服务器来访问并存储此类数字内容。存储系统或服务器可包括多个驱动器(例如,固态驱动器(ssd)),并且驱动器可包括非易失性存储器,诸如用于持久存储的nand闪存。nand闪存由裸片构成,所述裸片可包括多个平面,其中一平面可包括多个块并且一块可包括多个页。可在页级别从nand闪存读取数据,或者将数据编程在nand闪存上(例如,写入到nand闪存),并且可以在块级别从nand闪存擦除数据。

为了为存储的数据提供故障弹性,存储系统可以使用日志文件系统,所述日志文件系统使用日志来在将变化提交给文件系统之前记录变化。用于日志的一种策略是使用完整日志模式,在所述完整日志模式下数据被写入两次:首先,系统通过块将数据(即,元数据和所对应的数据)写入到日志中;其次,系统移动数据并将数据写入到驱动器上的固定位置。虽然完整日志模式可提供高级别的保护免于文件系统损毁和数据丢失,但是完整日志模式还可以导致基于写入放大的性能降低(由于写入数据两次──首先写入到日志并且其次写入到固定位置而导致)。

此外,数据被在页级别并以固定顺序编程在nand闪存上(例如,写入到nand闪存),并且以块或k的倍数页存储(例如,与raid条带类似)。然而,因为传入数据的大小可能不总是等于完整块大小或k个页的倍数,所以块的一些页可能保持开放或未编程。开放块(例如,具有一些未编程页的块)的原始误码率高于完整块(例如,其页被全部编程的块)的原始误码率。常规存储系统通过用虚设数据填充开放页来解决此问题,这可导致系统中不必要的低效率。此外,系统的效率可能受到常规垃圾收集程序的限制。



技术实现要素:

一个实施例促进减少的写入放大。在操作期间,所述系统由计算装置接收要将数据写入到非易失性存储器的请求。所述系统基于所述非易失性存储器的块的目的页的第一物理块地址将所述数据的第一页写入到所述块,其中,所述目的页是所述块的第一可用页。所述系统通过所述计算装置的闪存转换层模块在数据结构中将所述数据的第一页的第一逻辑块地址映射到所述第一物理块地址。

另一实施例促进计算装置中的主动垃圾收集。在操作期间,响应于完成要将数据写入到非易失性存储器的请求,所述系统:由所述计算装置识别被标记为有资格回收并且包括有效页的块;将来自所识别的块的所述有效页复制到写入有所述数据的所述非易失性存储器的一个或更多个块,其中,相应的有效页被写入到相应的块的第一可用页;将所述相应的有效页的原始物理块地址标记为无效的;并且,通过所述计算装置的闪存转换层模块将所述相应的有效页的逻辑块地址映射到所述相应的块的第一可用页的物理块地址,从而促进主动垃圾收集。

在一些实施例中,响应于完成所述请求,并且响应于确定所识别的块的第一有效页将由所述计算装置读取,所述系统在将所述有效页复制到所述一个或更多个块之前将所述第一有效页复制到所述一个或更多个块。

在一些实施例中,数据基于日志文件系统被存储在所述非易失性存储器中。

在一些实施例中,识别被标记为有资格回收的所述块是基于所述块是否包括少于预定阈值的多个有效页。

在一些实施例中,完成所述请求涉及通过以下步骤以顺序方式将所述数据写入到所述非易失性存储器的一个或更多个块:基于所述一个或更多个块的目的页的第一物理块地址将所述数据的第一页写入到所述非易失性存储器,其中,所述目的页是相应的块的第一可用页;以及通过所述闪存转换层模块在数据结构中将所述数据的第一页的第一逻辑块地址映射到所述第一物理块地址。

在一些实施例中,响应于确定在所述数据结构中针对所述数据的第一页的第一逻辑块地址的搜索返回所述第一物理块地址,所述系统:用新的物理块地址替换所述第一物理块地址;将所述第一物理块地址标记为无效的;并且基于所述新的物理块地址将所述数据的第一页写入到所述非易失性存储器。

在一些实施例中,完成所述要将所述数据写入到所述非易失性存储器的请求包括将所述数据写入到所述非易失性存储器的一个或更多个块。以顺序方式将所述数据写入到所述非易失性存储器的一个或更多个块进一步包括:经由所述非易失性存储器的多个通道分发所述数据;基于一次固定的页数的倍数,经由相应的通道将所述数据写入到所述非易失性存储器的相应的块,其中,所述固定的页数的倍数被用于内部数据恢复。

附图说明

图1图示依照本申请的实施例的促进主动垃圾收集的示例性环境。

图2a图示依照现有技术的用于在完整日志模式下将数据写入到非易失性存储器的示例性通信。

图2b图示依照现有技术的用于在完整日志模式下将数据写入到非易失性存储器的示例性通信。

图3a图示依照现有技术的在日志文件系统中将数据写入到非易失性存储器时的示例性通信和数据结构。

图3b图示依照本申请的实施例的在日志文件系统中将数据写入到非易失性存储器时的示例性通信和数据结构。

图4a图示依照现有技术的用于在日志文件系统中更新存储在非易失性存储器中的数据的示例性通信。

图4b图示依照本申请的实施例的用于在日志文件系统中更新存储在非易失性存储器中的数据的示例性通信。

图5图示依照本申请的实施例的用于在非易失性存储器中经由多个通道顺序地写入数据的示例性架构。

图6a图示依照本申请的实施例的在主机触发的垃圾收集中的示例性通信。

图6b图示依照本申请的实施例的在主机触发的垃圾收集中的示例性通信,包括处理具有较高优先级的主机读取以进行回收。

图7a呈现依照本申请的实施例的图示用于促进主动垃圾收集的方法的流程图。

图7b呈现依照本申请的实施例的图示用于促进主动垃圾收集的方法的流程图。

图8图示依照本申请的实施例的促进主动垃圾收集的示例性计算机系统。

图9图示依照本申请的实施例的促进主动垃圾收集的示例性设备。

在图中,相似的附图标记指代相同的图元素。

具体实施方式

以下描述被呈现来使得本领域的任何技术人员能够做出并使用实施例,并且是在特定应用及其要求的背景下提供的。对所公开的实施例的各种修改对于本领域的技术人员而言将是容易地显而易见的,并且在不脱离本公开的精神和范围的情况下,可以将本文所限定的一般原理应用于其他实施例和应用。因此,本文所描述的实施例不限于所示出的实施例,而是将符合与本文所公开的原理和特征一致的最宽范围。

概要

本文所描述的实施例提供通过使用增强闪存转换层(ftl)映射来解决促进减少的写入放大和高效的垃圾收集的问题的系统。如上所述,使用完整日志模式可提供高级别的保护免于文件系统损毁和数据丢失,但是也可以导致基于写入放大的性能降低(即,由于写入数据两次—首先写入到日志并且其次写入到固定位置而导致)。此外,用虚设数据填充nand闪存中的开放页可导致系统中不必要的低效率。另外,控制器或ftl模块可能受到用于垃圾收集的当前方法限制,这也可降低系统的效率。

本文所描述的实施例通过使用减少写入放大的增强ftl映射并且还通过使用主机触发的垃圾收集方法(其使用增强ftl映射)来解决这些低效率。在完整日志模式下发生的写入放大由系统写入数据(和元数据)两次产生:首先,写入到日志区域,并且其次,写入到在非易失性存储器(例如,持久储存器)中具有固定位置的数据区域,如在下面关于图2a、图2b和图3a所描述的。本文所描述的实施例通过使用消除了对“校验指示”数据(即,首先将数据写入到日志区域)的需要的ftl映射表来解决此问题,并且因此仅记录如一次写入到数据区域的数据的物理块地址,如在下面关于图3b所描述的。

此外,数据在页级别并以固定顺序被编程在nand闪存上,并且以块或k的倍数页存储。当块的页保持开放或未编程时(例如,当传入数据的大小不确切地等于块大小或k的倍数时),这可以导致较高的原始误码率。常规系统通过用虚设数据填充开放页来解决此问题。然而,这可以导致低效率。本文所描述的实施例通过使用主机触发的垃圾收集来解决此问题。也就是说,紧接在主机写入请求已完成之后(并且在一些实施例中,在向主机通知数据已被提交之前),系统主动地识别有资格回收的块,并且将所识别的块中的任何有效页复制到具有开放页的块中的第一可用开放页(例如,写入指针在刚刚写入有数据的块中的位置)。在下面关于图5、图6a和图6b描述主动垃圾收集。

因此,本文所描述的实施例提供提高存储系统的效率的系统。提高的效率可包括减少的写入放大,以及改进的垃圾收集。通过增强逻辑块地址到物理块地址的ftl映射,系统消除写入数据两次的需要,并且进一步提供通过主机写入触发的主动垃圾收集。结果,本文所描述的实施例可提供性能和寿命两者方面的改进,从而产生更高效的存储系统。

术语“存储服务器”或“存储系统”指代可具有多个存储驱动器或存储装置的服务器,其中数据可以被写入到驱动器或装置以用于持久存储。

术语“存储控制模块”、“存储控制器”和“控制器”指代位于驱动器内的模块或组件,并且可以可互换地使用。在本公开中,存储控制器可在表或数据结构中执行查找。

术语“主机触发的垃圾收集”指代本文所描述的实施例,其中在完成处理要写入数据的请求时触发垃圾收集过程,如在下面关于图6a、图6b、图7a和图7b所描述的。

示例性环境

图1图示依照本申请的实施例的促进主动垃圾收集的示例性环境100。环境100可包括与用户104相关联的计算装置102。计算装置102可包括例如平板、移动电话、电子阅读器、膝上型计算机、台式计算机或任何其他计算装置。计算装置102可经由网络110与存储服务器112、114和116(其可以是分布式存储系统的一部分)进行通信。存储服务器可包括多个存储驱动器,并且每个驱动器可包括控制器和用于数据存储的多个物理介质。

例如,存储服务器116可包括:网络接口卡(nic)122;中央处理单元(cpu)124;dramdimm126;以及许多具有控制器的ssd(例如,具有控制器134的ssd132、具有控制器138的ssd136、具有控制器142的ssd140以及具有控制器146的ssd144)。ssd140可包括:ssd控制器142;闪存转换层(ftl)模块154;nand控制器156;以及各自包括多个页的多个块(例如,具有页162.1-162.n的块160和具有页166.1-166.n的块164)。注意,nand控制器156可经由多个通道与裸片上的多个平面进行通信,其中平面可包括多个块。在下面关于图3b、图4b和图5描述经由通道的示例性通信。

在现有技术中用于在完整日志模式下写入数据的示例性通信

图2a图示依照现有技术的用于在完整日志模式下将数据写入到非易失性存储器的示例性通信200。在操作期间,可经由顺序写入功能212将数据(例如,元数据和数据)写入到日志202。随后(如通过实线213所描绘的),可经由提交主机功能214将数据提交给日志204。稍后(或者与主机写命令异步地,如通过虚线215所描绘的),可以经由随机写入功能216将数据写入到固定位置206(例如,非易失性存储器或其他持久储存器)。

图2b图示依照现有技术的用于在完整日志模式下将数据写入到非易失性存储器的示例性通信230。在操作期间,可(经由通信252)将数据从dramdimm250写入到日志区域242。随后(并且与图2a的异步操作215类似),可以从dramdimm250(经由通信256)或者从日志区域242(经由通信254)将数据写入到经映射的物理位置(即,数据区域244)中,即,作为解耦操作。

因此,在常规系统中在完整日志模式下,要存储的数据被写入两次。主机存储器(例如,dramdimm250)在数据被写入到数据区域中之前仍然是脏的,这导致大写入放大并且可导致低效系统。

图3a图示依照现有技术的在日志文件系统中将数据写入到非易失性存储器时的示例性通信300和数据结构340。在操作期间,常规系统可接收数据312/314/316(例如,作为将数据写入到系统的持久储存器的请求的一部分)。数据312/314/316中的每一个均可以是具有逻辑块地址的块,其中相应的块基于连续的物理块地址(pba)(诸如pba313(“pba_i”)、pba315(“pba_j”)和pba317(“pba_k”))被顺序地写入到日志区域302。随后,常规系统可将数据312/314/316复制到数据区域322,其中相应的块基于用于常规系统的持久储存器的配置被以非顺序方式写入到数据区域322。

例如,可经由通信304将数据312写入到数据区域322,在pba333(“pba_x”)处作为数据332(其lba等于“lba_1”)。类似地,可经由通信306将数据314写入到数据区域322,在pba335(“pba_z”)处作为数据334(其lba等于“lba_2”)。另外,可经由通信308将数据316写入到数据区域322,在pba337(“pba_y”)处作为数据336(其lba等于“lba_3”)。常规系统可维护ftl映射表340,并且,响应于通信304、306和308,更新表340以分别包括条目346、347和348。条目346可包括数据区域322中的lba至pba的映射:{lba_1;pba_x}。类似地,条目347和348可分别包括:{lba_2;pba_z};以及{lba_3;pba_y}。因此,图3a所示的常规系统需要两个单独的写入操作,其中ftl映射包括数据区域中的lba至pba映射,即,来自第二写入操作。如上面所讨论的,写入数据两次可导致大写入放大,这可降低系统的效率。

用于在完整日志模式下写入数据的示例性通信

图3b图示依照本申请的实施例的在日志文件系统中将数据写入到非易失性存储器时的示例性通信350和数据结构370。在操作期间,系统可接收数据362/364/366(例如,作为将数据写入到系统的持久储存器的请求的一部分)。数据362/364/366中的每一个均可以是具有逻辑块地址的块。可基于连续的pba(诸如pba363(“pba_i”)、pba365(“pba_j”)和pba367(“pba_k”))将每个块顺序地写入到数据区域352。接下来,不是将数据写入到第二区域,而是系统可简单地更新ftl映射表370以分别包括条目376、377和378。条目376可包括数据区域352中的lba至pba的映射:{lba_1;pba_i}。类似地,条目377和378可分别包括:{lba_2;pba_j};以及{lba_3;pba_k}。因此,通过增强ftl模块以仅在第一数据区域中将lba映射到pba,图3b所示的系统消除了对两个单独的写入操作的需要。通过使用ftl映射来消除附加写入操作,本文所描述的实施例减少写入放大,这可导致改进的且更更效的系统。

此外,如果要写入的数据包括对已经被写入到持久储存器的数据的更新,则系统还可通过简单地写入到数据区域并且通过更新ftl映射表(例如,通过用新pba替换旧pba,并且通过将旧pba标记为对垃圾收集无效)来在完整日志模式下写入经更新的版本,如在下面关于图4b(更新数据)以及图6a和图6b(主机触发的垃圾收集)所描述的。

在现有技术中相对于在示例性实施例中的在完整日志模式下更新数据

图4a图示依照现有技术的用于在日志文件系统中更新存储在非易失性存储器中的数据的示例性通信400。与图2b的通信230和图3a的通信300类似,图4a中的常规系统写入数据两次:首先写入到日志区域402,然后写入到数据区域422。当要写入的数据包括对已经被写入到持久储存器的数据的更新时,常规系统仍然写入数据两次,再次导致大写入放大。例如,在接收到数据412(“a0”)时,常规系统可首先将数据412写入到日志区域402,其次将数据412写入到数据区域422作为数据432(经由通信442)。常规系统可在其ftl映射表中创建一个条目,所述条目将a0的lba映射到存储有数据432的pba(如上面关于图3a所描述的)。在接收到数据414(“a1”)并确定a1是对a0的更新时,系统可首先将a1写入到日志区域402,其次将a1写入到数据区域422作为数据434(经由通信444)。常规系统可将a1的lba映射到存储有数据434的pba。在接收到数据416(“a2”)并确定a2也是对a0的更新时,常规系统可首先将a2写入到日志区域402,其次将a2写入到数据区域422作为数据436(经由通信446)。常规系统可将a2的lba映射到存储有数据436的pba。因此,在常规系统中,此更新系列需要六次将数据写入到六个不同的位置。

图4b图示依照本申请的实施例的用于在日志文件系统中更新存储在非易失性存储器中的数据的示例性通信450。与图3b的通信350类似,图4b中的系统仅一次将数据(包括更新)写入到数据区域452。在接收到数据462时,系统可将数据462写入到数据区域452,并且创建(或者更新)ftl映射表470中的条目。表470可包括将lba472映射到pba474的条目。例如,在时间490(t1),系统可创建(或者更新)将数据462的lba(“lba_a”)映射到存储有数据462的pba463(“pba_q”)的条目482。在接收到数据464并确定数据464是对数据462的更新时,系统可将数据464写入到数据区域452,并且通过将数据464的lba(“lba_a”)映射到存储有数据464的pba465(“pba_r”)来更新表470中的条目482(在时间492(t2)的条目484)。最后,在接收数据466并确定数据466是对数据462(或464)的更新时,系统可将数据466写入到数据区域452,并且通过将数据466的lba(“lba_a”)映射到存储有数据466的pba467(“pba_s”)来更新表470中的条目484(在时间494(t3)的条目486)。因此,同图4a的常规系统对比,在图4b的系统中,此更新系列仅需要三次将数据写入到三个不同的位置,这减少写入放大并且可改进系统的效率和性能。

用于经由多个通道顺序地写入数据的示例性架构

在本文所描述的系统的实施例中,数据被顺序地写入到非易失性存储器(“顺序写入”)。系统可提取多个通道以并行工作。为了增加吞吐量,系统可经由非易失性存储器的多个通道分发要写入的数据的页。

在nand闪速存储器中,内部数据恢复被类似于raid的存储。基于固定的页数作为用户数据,raid组可生成raid奇偶校验。用户数据和奇偶校验数据两者被写入到nand介质。raid组可以一次使用固定的页数(k)。然而,传入数据可能不总是具有为k的倍数的大小,这导致块的一些页保持开放或未编程。开放块(例如,具有一些未编程页的块)的原始误码率高于完整块(例如,其页被全部编程的块)的原始误码率。如果块的特定数量的页保持开放或未编程,则这可以触发处于开放状态并且正在等待更多页完成k页数据的某些raid组。在常规系统中,控制器可生成虚设数据以填充开放恢复组。但是,这可以导致系统效率低。

本文所描述的实施例通过继顺序写入之后复制(设置为要回收的块的)有效页以填充任何开放页来解决此问题。图5图示依照本申请的实施例的用于在非易失性存储器中经由多个通道顺序地写入数据的示例性架构500。架构500可指示包括nand控制器502的非易失性存储器,所述nand控制器502经由多个通道540-554分别与多个nandlun512-526进行通信。nandlun可包括多个块,所述多个块可各自包括多个页。例如,nandlun512可包括具有页513.1-513.n的块513。

主机触发的垃圾收集中的示例性通信;针对主机读数据的示例性优化

图6a图示依照本申请的实施例的主机触发的垃圾收集中的示例性通信600。通信600可发生在非易失性存储器(诸如如图5所描绘的nand闪速储存器)中。在操作期间,系统可执行数据的顺序写入(即,像上面关于图3b所描述的那样写入到数据区域)。可分别经由通道644和通道646将数据顺序地写入到例如块608和块610(如通过垂直条纹框所示)。同时,在与开放或无效页(通过白色框来指示)相比较时,非易失性存储器可包括具有变化数量或百分比的有效页(通过对角条纹框来指示)的块。可以基于各种条件(例如,块是否包括小于预定阈值的数量或百分比的有效页、块中的特定百分比的有效页是否设置为过期)或者基于预定时间段或间隔将这些块标记为有资格回收。例如,块602可包括开放页611、613、615、617、618和619以及有效页612、614和616,并且可被标记为有资格回收,因为块602包括少于例如50%的有效页。类似地,块606可包括四个有效页622、624、626和628,并且还可被标记为有资格回收,因为块606包括少于50%的有效页。

在完成顺序写入之后,系统可以确定块608和610包括需要被填充的开放页。不是用虚设数据填充这些开放页,而是系统可识别被标记为有资格或准备好回收(“标记块”)并且包括有效页的块,例如块602和606。系统可从写入指针位置开始将来自标记块602和606的有效页复制到块608和610,所述写入指针位置指示最后数据被顺序地写入到非易失性存储器的位置。例如,系统可在写入指针位置632处将来自块602的有效页616复制到块608(功能631),并且可针对已复制的有效页简单地修改lba至pba映射(如上面关于图3b和图4b所描述的)。系统还可将原始pba标记为无效(或开放)。类似地,系统可在写入指针位置634处将来自块606的有效页624复制到块610(功能633),并且可针对已复制的有效页修改lba至pba映射。

因此,通过使用顺序写入(其是主机触发的操作)来触发从标记块复制有效页以填充开放块,系统可节省来自标记块的附加nand读取操作。系统可进一步减轻由于通过垃圾收集引起的主机i/o操作而导致的任何潜在影响,这也可节省nand带宽。

图6b图示依照本申请的实施例的主机触发的垃圾收集中的示例性通信650,包括处理具有较高优先级的主机读取以进行回收。通信650与通信600类似,并且进一步包括主机读取的优先化,也就是说,主机何时读取要回收的(标记)块的有效页。当当前写入nand(即,块608、610和660)具有开放块或条带时,并且当主机或计算装置从标记块读取有效页时,系统可通过在回收(即,复制)标记块的其他有效页之前回收要读取的页来优先考虑它。

例如,在完成顺序写入时,系统可确定块608、610和660包括需要被填充的开放页。系统可从标记块(例如,识别为有资格或准备好回收的块)(诸如块602和606)复制有效页。系统可确定标记块606的有效页626将由主机或计算装置读取,并且为此页指派较高优先级以进行回收,例如,在从块606复制其他有效页之前(即,在将有效页624复制到块610之前,如上面关于图6a所描述的)在写入指针位置672处将来自块606的有效页626复制到块660(功能671)。系统还可针对有效页624更新lba至pba映射信息。以这种方式,ftl映射表的灵活性允许主动垃圾收集更高效地发生,包括回收要由主机读取的页的优先化。

此外,主机触发的垃圾收集(上面关于图6a和图6b所描述的)不限于主机写入操作。只要系统执行对要回收的块的有效页的主机读取,系统就可以日志方式写入该有效页(例如,在写入页的末尾处附加有效页)并且ftl模块或控制器可相应地更新lba至pba映射。

本文所描述的实施例提供通过映射日志区域而不是复制数据来增强nand储存器中的闪存转换层的灵活性并且进一步支持主机触发的垃圾收集的系统。增强ftl映射可消除双重写入行为,减少nand的磨损,并且提高系统的容量利用的效率。主机触发的垃圾收集可节省附加读取,减轻通过读取操作引起的噪声的影响,并且使i/o性能稳定。

用于促进计算装置中的主动垃圾收集的方法

图7a呈现依照本申请的实施例的图示用于促进主动垃圾收集的方法的流程图700。在操作期间,系统接收要将数据写入到非易失性存储器的请求(操作702)。系统通过经由多个通道分发数据来以顺序方式将数据写入到非易失性存储器的一个或更多个块(操作704)。系统完成要写入数据的请求(例如,通过到达到非易失性存储器的数据区域的写入的结束)(操作706)。如果在完成顺序写入之后没有开放raid条带或开放块(判定708),则系统将顺序写入提交给主机(操作716),并且操作返回。

如果在完成顺序写入之后存在开放raid条带或开放块(判定708),则系统在第一数据结构(例如,块图)中执行搜索以识别被标记为有资格回收的开放块(或开放raid条带所属于的块)(操作710)。

如果开放块被标记用于回收(判定712),则操作像图7b的标签a处所描述的那样继续。如果开放块未被标记用于回收(判定712),则系统用虚设数据填充开放块或开放条带(操作714)并且将顺序写入提交给主机(操作716)。注意,操作714仅在系统在块的开头时发生。

图7b呈现依照本申请的实施例的图示用于促进主动垃圾收集的方法的流程图730。在操作期间,如果存在要从标记块读取的有效页(判定732),则系统首先回收要读取的页以避免附加读取成本(操作734)。如果没有要从标记块读取的有效页(判定732),则系统开始从标记块中回收有效页。系统将有效页标记为无效的,并且将来自标记块的有效页复制到开放块(或条带)(操作736)。如果标记块中的所有有效页都未被回收(判定738)(即,如果在标记块中还有尚未回收的任何剩余的页),则操作返回到标签a以处理任何剩余的有效页。如果标记块中的所有有效页都被回收(判定738),则系统通过闪存转换层(ftl)模块来更新第一数据结构(例如,块图)和第二数据结构(例如,ftl映射)以指示标记块已被回收(操作740)。系统然后在图7a的操作708处继续。

示例性计算机系统和设备

图8图示依照本申请的实施例的促进主动垃圾收集的示例性计算机系统800。计算机系统800包括处理器802、存储器804和存储装置808。计算机系统800可以是计算装置或存储装置。存储器804可包括用作受管理存储器的易失性存储器(例如,ram),并且可用于存储一个或更多个存储器池。此外,计算机系统800可联接到显示装置810、键盘812和指点装置814。存储装置808可存储操作系统816、内容处理系统818和数据834。

内容处理系统818可包括指令,所述指令当由计算机系统800执行时,可使计算机系统800执行本公开中描述的方法和/或过程。例如,内容处理系统818可包括用于接收和发送数据分组的指令,所述数据分组包括写入或者读取数据的请求、要编码并存储的数据或者数据块或页。内容处理系统818可进一步包括用于完成要将数据写入到非易失性存储器的请求的指令(数据写入模块830)。内容处理系统818可包括用于由所述计算装置识别被标记为有资格回收并且包括有效页的块的指令(块识别模块826)。内容处理系统818可包括用于将来自所识别的块的有效页复制到写入有数据的非易失性存储器的一个或更多个块的指令(有效页复制模块824)。内容处理系统818可包括用于将相应的有效页的原始物理块地址标记为无效的指令(pba管理模块822)。内容处理系统818可包括用于由计算装置的闪存转换层模块将相应的有效页的逻辑块地址映射到相应块的第一可用页的物理块地址的指令(ftl映射模块828)。

内容处理系统818可进一步包括用于响应于确定所识别的块的第一有效页将由计算装置读取(主机读取确定模块832)而在将所述有效页复制到所述一个或更多个块之前将所述第一有效页复制到所述一个或更多个块(有效页复制模块824)的指令。

数据834可包括由本公开中描述的方法和/或过程需要作为输入的或者作为输出生成的任何数据。具体地,数据834可至少存储:要存储、写入、检索或复制的数据;数据块;块被标记为有资格回收的指示器;有效页或编程页;开放或未编程页;要回收的页或块;逻辑块地址(lba);物理块地址(pba);第一数据结构;块图;表中的条目;lba至pba的映射;顺序写入的结束;块的第一可用页;写入指针位置;日志文件系统;页数;有效页数;预定阈值;通道;固定的页数;以及固定的页数的倍数。

图9图示依照本申请的实施例的促进主动垃圾收集的示例性设备900。设备900可包括可以经由有线、无线、量子光或电通信通道彼此通信的多个单元或设备。设备900可以使用一个或更多个集成电路来实现,并且可以包括比图9所示的那些更少或更多的单元或设备。进一步地,设备900可以被集成在计算机系统中,或者作为能够与其他计算机系统和/或装置进行通信的单独的装置被实现。具体地,设备900可包括执行与图8的计算机系统800的模块820-832类似的功能或操作的单元902-914,包括:通信单元902;pba管理单元904;有效页复制单元906;块识别单元908;闪存转换层(ftl)映射单元910;数据写入单元912;以及主机读取确定单元914。

在此具体实施方式中描述的数据结构和代码通常被存储在计算机可读存储介质上,所述计算机可读存储介质可以是可存储供由计算机系统使用的代码和/或数据的任何装置或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、诸如磁盘驱动器、磁带、cd(紧致盘)、dvd(数字通用盘或数字视频盘)的磁和光学存储装置,或能够存储现在已知或稍后开发的计算机可读介质的其他介质。

可将在具体实施方式部分中描述的方法和过程具体实现为代码和/或数据,所述代码和/或数据可被存储在如上所述的计算机可读存储介质中。当计算机系统读取并执行存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行作为数据结构和代码具体实现的并且存储在计算机可读存储介质内的方法和过程。

此外,上述的方法和过程可被包括在硬件模块中。例如,硬件模块可包括但不限于专用集成电路(asic)芯片、现场可编程门阵列(fpga)以及现在已知或稍后开发的其他可编程逻辑器件。当硬件模块被激活时,硬件模块执行包括在硬件模块内的方法和过程。

已经出于图示和描述的目的呈现了本文所描述的上述实施例。它们不旨在为详尽的或者将本文所描述的实施例限于所公开的形式。因此,许多修改和变化对于本领域的技术人员而言将是显而易见的。附加地,以上公开内容不旨在限制本文所描述的实施例。本文所描述的实施例的范围由所附权利要求限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1