无用数据收集-自动数据放置的制作方法

文档序号:15828633发布日期:2018-11-03 00:10阅读:218来源:国知局

本申请要求于2017年4月25日提交的美国临时专利申请序列号62/490,027的权益,该申请出于所有目的通过引用全部并入本文。

本申请与2017年4月27日提交的美国专利申请序列号15/499,877(目前未决)相关,美国专利申请序列号15/499,877要求于2017年2月13日提交的美国临时专利申请序列号62/458,566和2017年3月14日提交的美国临时专利申请序列号62/471,350的权益;美国专利申请序列号15/499,877是2016年11月4日提交的美国专利申请序列号15/344,422(目前未决)的部分继续申请,美国专利申请序列号15/344,422要求美国临时专利申请序列号62/383,302的权益,并且是2016年5月2日提交的美国专利申请序列号15/144,588的部分继续申请(目前未决),美国专利申请序列号15/144,588要求2015年10月22日提交的美国临时专利申请序列号62/245,100以及2015年7月13日提交的美国临时专利申请序列号62/192,045的权益;美国专利申请序列号15/499,877是2016年4月5日提交的美国专利申请序列号15/090,799(目前未决)的部分继续申请,美国专利申请序列号15/090,799要求2015年10月22日提交的美国临时专利申请序列号62/245,100和2015年7月13日提交的美国临时专利申请序列号62/192,045的权益,所有这些申请出于所有目的均通过引用并入本文。

本申请与2017年4月6日提交的美国专利申请序列号15/458,968(目前未决)相关,美国专利申请序列号15/458,968要求于2017年1月20日提交的美国临时专利申请序列号62/448,958和2016年10月26日提交的美国临时专利申请序列号62/413,177的权益,所有这些申请出于所有目的通过引用并入本文。

本申请与2016年5月27日递交的美国专利申请序列号15/167,974相关,美国专利申请序列号15/167,974要求2016年3月16日递交的美国临时专利申请序列号62/309,446的权益,这两件申请出于所有目的通过引用并入本文。

本申请与2016年5月4日提交的美国专利申请序列号15/146,708(目前未决)相关,美国专利申请序列号15/146,708要求2016年3月1日提交的美国临时专利申请序列号62/302,162的权益,并且是2016年2月17日提交的美国专利申请15/046,439(目前未决)的部分继续申请,美国专利申请15/046,439要求2015年11月30日提交的美国临时专利申请序列号62/261,303的权益,所有这些申请出于所有目的通过引用并入本文。

本发明构思总体上涉及固态驱动器(ssd),并且更具体地涉及改进ssd内的无用数据(garbage)收集。

背景技术

多流技术是一种开发来为固态驱动器(固态硬盘)(ssd)提供更好的续航能力和性能的方案。具有相同流id的数据可以被分配给一个流,并且最终一起存储在相同的擦除块中。可能期望具有相同流id的数据一起失效,这意味着这些数据具有相同的寿命。在进行无用数据收集时,如果擦除块的所有页都无效,则开销会减少,这是因为擦除块中没有剩余的有效数据需要编程到另一个块。

ssd或闪存转换层(ftl)可以包括自动流检测算法,可以基于数据操作的属性(例如,频率、新近性、顺序性等)生成流id,并且将数据置于流适合的擦除块中。但是在进行无用数据收集时,与不同流相关联的有效数据可能混合,从而破坏了多流的效用。

仍然需要一种方法来管理对无用数据收集期间有效数据可以被编程到其中的块的选择,以保持多流的益处。



技术实现要素:

本发明构思的实施例可以延伸到以下陈述而无限制:

1.本发明构思的实施例包括固态驱动器(ssd),包括:

闪存,用于存储数据;

ssd控制器,用于管理将数据写入闪存以及从闪存读取数据,ssd控制器包括:

自动流检测逻辑,用于响应于数据的属性来选择流标识符(id);以及

无用数据收集逻辑,用于在闪存中选择用于无用数据收集的擦除块,以及响应于自动流检测逻辑针对擦除块中的有效数据所确定的第一流id,将所述有效数据编程到第二块中,

其中自动流检测逻辑操作用于在无用数据收集逻辑已选择用于无用数据收集的擦除块之后确定第一流id。

陈述2.本发明构思的实施例包括根据陈述1的ssd,其中:

ssd控制器包括:输入/输出(i/o)队列,用于管理来自主机上应用的请求;以及

无用数据收集逻辑包括:写请求逻辑,用于将针对有效数据的写请求放入i/o队列中。

陈述3.本发明构思的实施例包括根据陈述2的ssd,ssd控制器还包括:接收器,用于从应用接收第二写请求,所述第二写请求包括有效数据。

陈述4.本发明构思的实施例包括根据陈述3的ssd,其中ssd响应于来自自动流检测逻辑的第二流id将有效数据写入擦除块。

陈述5.本发明构思的实施例包括根据陈述4的ssd,其中第一流id是第二流id。

陈述6.本发明构思的实施例包括根据陈述2的ssd,其中无用数据收集逻辑还包括用于对擦除块进行擦除的擦除逻辑。

陈述7.本发明构思的实施例包括根据陈述6的ssd,其中擦除逻辑操作用于在写请求由ssd处理之后对擦除块进行擦除。

陈述8.本发明构思的实施例包括根据陈述6的ssd,其中擦除逻辑操作用于在写请求逻辑将写请求放入i/o队列中之后并且在写请求由ssd处理之前对擦除块进行擦除。

陈述9.本发明构思的实施例包括根据陈述1的ssd,其中:

无用数据收集逻辑操作用于在对有效数据进行编程之前向自动流检测逻辑请求第一流id;以及

无用数据收集逻辑包括:

块选择逻辑,用于响应于第一流id选择第二块;以及

编程逻辑,用于将有效数据写入第二块。

陈述10.本发明构思的实施例包括根据陈述9的ssd,其中第二块是仅存储在无用数据收集期间编程的数据的特殊块。

陈述11.本发明构思的实施例包括根据陈述1的ssd,其中流id响应于以下各项中的至少一项:有效数据的逻辑块地址(lba)、负责最初将有效数据写入ssd的应用的应用id、有效数据的剩余寿命、有效数据的顺序性、有效数据的更新频率、有效数据的新近性、有效数据的写入大小、有效数据的写入时间、有效数据的读取频率以及有效数据的读取温度。

陈述12.本发明构思的实施例包括一种方法,包括:

识别固态驱动器(ssd)上用于无用数据收集的擦除块;

识别擦除块中需要编程的有效数据;以及

将擦除块中的有效数据编程到第二块中,所述第二块是响应于流标识符(id)而选择的,其中在识别到擦除块中需要编程的有效数据之后并且响应于有效数据的属性,确定流id。

陈述13.本发明构思的实施例包括根据陈述12的方法,还包括在识别擦除块中需要编程的有效数据之前:

在ssd处接收来自应用的写请求中的有效数据;

响应于有效数据的属性确定第二流id;

响应于第二流id选择擦除块;以及

将有效数据写入擦除块。

陈述14.本发明构思的实施例包括根据陈述13的方法,其中流id是第二流id。

陈述15.本发明构思的实施例包括根据陈述12的方法,其中将擦除块中的有效数据编程到第二块中包括将用于将有效数据写入第二块的写请求放入输入/输出(i/o)队列中。

陈述16.本发明构思的实施例包括根据陈述15的方法,还包括对擦除块进行擦除。

陈述17.本发明构思的实施例包括根据陈述16的方法,其中对擦除块进行擦除包括在将有效数据写入第二块之前对擦除块进行擦除。

陈述18.本发明构思的实施例包括根据陈述12的方法,其中将擦除块中的有效数据编程到第二块中包括:

响应于有效数据的属性确定有效数据的流id;

响应于流id选择第二块;以及

将有效数据编程到第二块中。

陈述19.本发明构思的实施例包括根据陈述18的方法,其中响应于流id选择第二块包括:响应于流id选择特殊块,所述特殊块仅存储在无用数据收集期间编程的数据。

陈述20.本发明构思的实施例包括根据陈述12的方法,其中流id响应于以下各项中的至少一项:有效数据的逻辑块地址(lba)、用于最初将有效数据写入ssd的应用的应用id、有效数据的剩余寿命、有效数据的顺序性、有效数据的更新频率、有效数据的新近性、有效数据的写入大小、有效数据的写入时间、有效数据的读取频率以及有效数据的读取温度。

陈述21.本发明构思的实施例包括一种包括非暂时性存储介质的物品,所述非暂时性存储介质上存储有指令,所述指令在由机器执行时使得:

识别固态驱动器(ssd)上用于无用数据收集的擦除块;

识别擦除块中需要编程的有效数据;以及

将擦除块中的有效数据编程到第二块中,所述第二块是响应于流标识符(id)而选择的,其中在识别到擦除块中需要编程的有效数据之后并且响应于有效数据的属性,确定流id。

陈述22.本发明构思的实施例包括根据陈述21的物品,所述非暂时性存储介质上存储有另外的指令,所述指令在由所述机器执行时使得在识别擦除块中需要编程的有效数据之前:

在ssd处接收来自应用的写请求中的有效数据;

响应于有效数据的属性确定第二流id;

响应于第二流id选择擦除块;以及

将有效数据写入擦除块。

陈述23.本发明构思的实施例包括根据陈述22的物品,其中流id是第二流id。

陈述24.本发明构思的实施例包括根据陈述21的物品,其中将擦除块中的有效数据编程到第二块中包括:将用于将有效数据写入第二块的写请求放入输入/输出(i/o)队列中。

陈述25.本发明构思的实施例包括根据陈述24的物品,非暂时性存储介质上存储有另外的指令,所述指令在由机器执行时使得对擦除块进行擦除。

陈述26.本发明构思的实施例包括根据陈述25的物品,其中对擦除块进行擦除包括在将有效数据写入第二块之前对擦除块进行擦除。

陈述27.本发明构思的实施例包括根据陈述21的物品,其中将擦除块中的有效数据编程到第二块中包括:

响应于有效数据的属性确定有效数据的流id;

响应于流id选择第二块;以及

将有效数据编程到第二块中。

陈述28.本发明构思的实施例包括根据陈述27的物品,其中响应于流id选择第二块包括:响应于流id选择特殊块,所述特殊块仅存储在无用数据收集期间编程的数据。

陈述29.本发明构思的实施例包括根据陈述21的物品,其中流id响应于以下各项中的至少一项:有效数据的逻辑块地址(lba),用于最初将有效数据写入ssd的应用的应用id、有效数据的剩余寿命、有效数据的顺序性、有效数据的更新频率、有效数据的新近性、有效数据的写入大小、有效数据的写入时间、有效数据的读取频率以及有效数据的读取温度。

附图说明

图1示出了根据本发明构思的实施例的具有固态驱动器(ssd)的机器。

图2示出了图1的机器的附加细节。

图3示出了图1的ssd的细节。

图4示出了为写请求确定流id的自动流检测逻辑。

图5示出了图1的ssd中的无用数据收集将有效数据从擦除块移动到另一块。

图6示出了可以在确定流id时使用的数据的各种属性。

图7示出了图3的ssd控制器的细节。

图8示出了图7的无用数据收集逻辑的细节。

图9示出了根据本发明构思的实施例的图8的写请求逻辑将有效数据提交给图7的输/入输出(i/o)队列以编程有效数据。

图10示出了根据本发明构思的实施例的图8的块选择逻辑响应于从图7的自动流检测逻辑接收的流id来选择块。

图11示出了根据本发明构思的实施例的使用流id执行无用数据收集的示例过程的流程图。

图12示出了根据本发明构思的实施例的对来自擦除块的有效数据进行编程的示例过程的流程图。

具体实施方式

现在具体参照本发明构思的实施例,实施例的示例在附图中示出。在下面的详细描述中,提出了许多具体细节来实现对本发明构思的透彻理解。然而,应该理解,本领域普通技术人员可以在没有这些具体细节的情况下实践本发明构思。在其他实例中,没有详细描述公知的方法、过程、组件、电路和网络,以避免不必要地使实施例的方案模糊不清。

应当理解,尽管在本文中可以使用术语“第一”、“第二”等来描述各种元件,但是这些元件不应该受这些术语的限制。这些术语仅用来将元件彼此区分。例如,在不背离本发明构思的范围的情况下,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块。

本文在本发明构思的描述中使用的术语仅用于描述具体实施例,而不是为了限制本发明构思。本发明构思的描述和所附权利要求中使用的单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另有明确说明。还应理解,本文所使用的术语“和/或”是指并且包括一个或多个关联列出项目的任何一个和所有可能的组合。还应该理解,术语“包括”和/或“包含”在本说明书中使用时,表明存在所陈述的特征、整体、步骤、操作、元件和/或组件,但是并没有排除存在或另外添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其组合。附图的组件和特征不一定按比例绘制。

在基于流的无用数据收集的情况下,即使数据最初基于流id而被放置在块中,仍有可能混合不同寿命的数据。这可以是因为单个流中数据的寿命可以随着时间的推移而演变。例如,可能会存在“热”数据可能被分配了流标识符(id)为8的时间段。但随着主机上的工作负载改变,数据温度发生变化,因此分配给给定流id的较旧数据块可能与具有相同流id的较新块的预期寿命不同。

但即使无用数据收集也可以使用流技术。作为无用数据收集的一部分对有效数据进行编程可以使用自动流检测算法,这通过传递擦除块中有效数据的逻辑块地址(lba)或任何其他属性,并将有效数据写入相应检测到的针对这些有效lba的当前流id来实现。这种方法有助于将有效数据与具有类似特性的其他数据放在一起。另外,由于在对数据进行编程时重新确定流id,所以不需要将流id与数据一起存储。

有两种方法可以用来使用流id对有效数据进行编程。一种方法是将编程操作视为新写入。更具体地说,有效数据可以在写请求中被提交给ssd,这种写请求可能看起来如同来自应用程序的原始写请求。这种方法有两个优点:首先,无用数据收集不必专门写入有效数据,而是可以将该过程留给ssd中已有的逻辑;其次,擦除块可以在有效数据被实际写入新块之前被擦除。但是这种方法确实存在这样的担忧,即如果在块被擦除之后并且在有效数据的调度写入完成之前发生电源故障(或者一些类似的不幸事件),则数据可能会丢失。另一种方法是使得无用数据收集逻辑从自动流检测算法请求流id,并使用该流id来确定写入有效数据的位置。

图1示出了根据本发明构思的实施例的具有固态驱动器(ssd)的机器。在图1中,示出了机器105。机器105可以是任何期望的机器,包括但不限于台式或膝上型计算机、服务器(独立服务器或机架式服务器),或可受益于本发明构思的实施例的任何其他设备。机器105还可以包括专门的便携式计算设备、平板电脑、智能电话和其他计算设备。机器105可以运行任何期望的应用:数据库应用是很好的示例,但是本发明构思的实施例可以延伸到任何期望的应用。

机器105无论其具体形式如何可以包括处理器110、存储器(内存)115和固态驱动器(ssd)120。处理器110可以是任何种类的处理器:例如intelxeon、celeron、itanium或atom处理器、amdopteron处理器、arm处理器等。尽管图1示出了单个处理器,但是机器105可以包括任何数量的处理器。存储器115可以是任何种类的存储器,例如闪存、静态随机存取存储器(sram)、持久性随机存取存储器、铁电随机存取存储器(fram)或诸如磁阻随机存取存储器(mram)等非易失性随机存取存储器(nvram),但通常是dram。存储器115也可以是不同存储器类型的任何期望组合。存储器115可以由同样作为器件105一部分的存储器控制器125控制。

ssd120可以是任何种类的ssd,并且甚至可以扩展为包括(即使在不使用闪存时)执行无用数据收集的其他类型存储装置。ssd120可以由设备驱动器130控制,设备驱动器130可以驻留在存储器115内。

图2示出了图1的机器105的附加细节。参考图2,机器105通常包括一个或多个处理器110,处理器110可以包括存储器控制器125和时钟205,时钟205可以用于协调机器105的组件的操作。处理器110还可以耦接到存储器115,存储器115可以包括例如随机存取存储器(ram)、只读存储器(rom)或其他状态保存介质。处理器110还可以耦接到存储设备120,并耦接到网络连接器210,网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可以连接到总线215,总线215上可以接有用户接口220和可以使用输入/输出引擎225管理的输入/输出接口端口等其他组件。

图3示出了图1的ssd120的细节。在图3中,ssd120可以包括主机接口逻辑305、ssd控制器310以及可以被组织成各种通道320-1至320-4的各种闪存芯片315-1至315-8。主机接口逻辑305可以管理ssd120与图1的机器105之间的通信。ssd控制器310可以管理对闪存芯片315-1至315-8的读取和写入操作以及无用数据收集操作。ssd控制器310可以包括闪存转换层325以执行这些管理中的一些。尽管图3将ssd120示出为包括组织成四个通道320-1至320-4的八个闪存芯片315-1至315-8,但是本发明构思的实施例可以支持组织为任意数量通道的任何数量闪存芯片。

图4示出了为写请求确定流id的自动流检测逻辑。在图4中,示出了各种写请求405-1至405-4。每个写请求405-1至405-4可以分别包括逻辑块地址(lba)410-1至410-4。自动流检测逻辑415可以使用lba410-1至410-4来确定写请求405-1至405-4被分配到的流标识符(id)420-1至420-4。例如,自动流检测逻辑415可以如2017年4月27日提交的美国专利申请序列号15/499,877(其出于所有目的通过引用并入本文中)中所描述的那样操作,以基于lba410-1至410-4分配流id420-1至420-4。但是,尽管图4示出了自动流检测逻辑415使用lba410-1至410-4来确定流id420-1至420-4,但是本发明构思的实施例可以使用写请求405-1至405-4的任何期望属性来确定流id420-1至420-4。

在使用闪存(以及执行无用数据收集的其他设备)的ssd中,闪存通常被组织为包含多个页(page)的擦除块(eraseblock)。每个页可以处于以下三种状态之一:空闲(当前未存储任何数据)、有效(当前存储数据)和无效(先前存储有效数据,但不再存储有效数据且尚未空闲)。

当新数据写入闪存时,定位空闲页,并将数据写入该空闲页。该页然后被标记为存储有效数据。页在擦除块中通常按顺序写入。但是闪存的单独页通常可以被写入一次;单独页不可被覆写。因此,当应用要改变闪存中存储的数据时,包含该数据的整个页被写入闪存中的新页。原始页然后被标记为无效。无用数据收集是ssd以擦除块粒度回收无效页的处理。该处理包括重置擦除块中的所有页,并再次将这些页标记为空闲。

页可以具有三种可能状态而不是仅两种状态的原因在于执行无用数据收集的方式。如果对单个页执行无用数据收集,则不需要无效状态:一旦数据失效就可以进行无用数据收集,并立即使页空闲。但无用数据收集通常在比单独页更大的区块(chunk)上运行。这些区块称为擦除块(eraseblock)或超级块(superblock),并且可以包含任意数量的页。当对块进行无用数据收集时,块中的每个页都被置于空闲状态。因此,在可以擦除当前块中的页之前,块中的任何当前有效数据必须写入闪存中某一其他块的另一空闲页(该处理称为编程)。在只要块中的任何数据失效就发起无用数据收集的情况下,ssd会花费大量的时间将数据从块中的有效页移动到其他块。除了对来自擦除块的有效数据进行编程本身可能会增加大量开销的事实以外,闪存通常可能仅被访问了有限次数就变得不可靠(或变差、不可用)。因此,期望最小化对来自擦除块的有效数据进行编程所耗费的时间。但同时,无用数据收集不能推迟直至擦除块中的每个页被标记为无效:闪存可能最终处于这样的状态:每个块仅包含标记为有效或无效的页(即,没有空闲页),这意味着无法将另外的数据写入闪存。

图5示出了图1的ssd120中的无用数据收集将有效数据从擦除块编程到另一块。在图5中,示出了块505-1至505-10,其中更详细地示出了块505-2。块505-2被示出为包括四个页510-1至510-4。页510-1、510-2和510-4当前被标记为无效,而页510-3被标记为有效,这意味着页510-3当前存储有效数据。因此,当块505-2成为无用数据收集的目标时,必须将页510-3中的有效数据编程到另一块例如块505-8中,块505-8被示出为包括页515-1至515-4。可以将页510-3中的有效数据编程到页515-1中,如虚线箭头520所示。在将页510-3中的有效数据编程到页515-1之后,块505-2中的所有页被标记为无效,并且整个擦除块505-2可以进行无用数据收集。

尽管图5示出了十个块505-1至505-10并且每个块包括四个页,但是本发明构思的实施例可以支持图1的ssd120包括任意数量的块,每个块具有任意数量的页。本发明构思的实施例不限于特定数量的块或者每个块中特定数量的页。

图6示出了可以在确定图4的流id420-1至420-4时使用的各种数据属性。在图6中,示出了属性605。属性605可以包括lba410、应用id610和剩余寿命615。因此,例如,lba410可以是被写入图1的ssd120的数据的lba,应用id610可以是请求将数据写入图1的ssd120的应用的id,并且剩余寿命615可以是在数据失效(被较新的数据替换或完全删除)之前数据预期保留在图1的ssd120上的时间。在确定流id时使用的其他可能属性可以包括:

顺序性620:写入数据的lba是否在先前lba(紧邻的在前写请求或一定窗口内的某先前写请求)之后的页中。

更新频率625:写入数据预计被更新(这会使要写入当前数据的页无效)的频率。

新近性630:写入数据的lba前次被写入的时间的新近程度。

写入大小635:写入数据的大小(相对于大约同时的其他写入的大小)。

写入时间640:数据写入的时间(相对于大约同时的其他写入的时间)。

读取频率645:读取数据被读取的频率(相对于其他数据)。

读取温度650:读取数据的“温度”:也即,读取数据被认为是“热”还是“冷”。

本发明构思的实施例可以支持图6所示的属性之外的其他属性。例如,写入数据的应用所需的服务质量(qos):根据需要,也可以使用任何其他属性。

在现有技术中,仅在接收到写请求405-1至405-4时确定图4的流id420-1到420-4。尽管图4的流id420-1至420-4可以被存储为图4的写请求405-1至405-4所写入的数据的元数据,但是图4的流id420-1至420-4不更新。但是当作为无用数据收集的一部分将擦除块中的有效数据(例如,图5的有效数据510-3)写入新块时,最初写入图5的有效数据510-3时所确定的流id无法正确地表示当前与图5的有效数据510-3相匹配的流。换句话说,如果图5的有效数据510-3此时作为新的写请求被接收,则图5的有效数据510-3可能被分配到与最初写入时所分配的流不同的流。在对图5的有效数据510-3进行编程时更新流id的优点在于,与使用原始流id来选择图5的有效数据510-3要写入到的块的情况相比,可以将图5的有效数据510-3编程到存储属性更为相似的数据的块中。

已经解释了无用数据收集的处理和将图4的流id420-1至420-4应用于无用数据收集处理的益处,可以进一步讨论本发明构思的实施例。图7示出了图3的ssd控制器310的细节。在图7中,除了闪存转换层315之外,ssd控制器310可以包括接收器705、输入/输出(i/o)队列710、自动流检测逻辑415和无用数据收集逻辑715。接收器705可以从任何源(例如,图1的机器105上运行的应用)接收图4的写请求405-1至405-4。一旦收到,可以将图4的写请求405-1至405-4放入i/o队列710中以进行处理。当从i/o队列710中移除特定的写请求时,可以使用自动流检测逻辑415来确定针对该写请求的合适流id,然后可以将数据写入图3的合适闪存315-1至315-8中。

无用数据收集逻辑715可以根据需要从图3的闪存315-1至315-8恢复擦除块。擦除块可以使用任何期望的算法来选择。然而并非将图5的有效数据510-3编程到任何随机可用页中,而是无用数据收集逻辑715可以受益于使用自动流检测逻辑415选择合适的块来编程图5的有效数据510-3。下面参照图8进一步讨论无用数据收集逻辑。

图8示出了图7的无用数据收集逻辑715的细节。在本发明构思的一个实施例中,无用数据收集逻辑715可以包括写请求逻辑805和擦除逻辑810。当无用数据收集逻辑715被调用以对擦除块(例如,图5的擦除块505-2)进行擦除时,假定在该擦除块中存在图5的有效数据510-3,那么写请求逻辑805可以向图7的收器705和i/o队列710提交写请求,就如同图1的机器105上运行的应用提交写请求一样。(如果擦除块不包含具有有效数据的页,那么显然没有需要编程的有效数据:擦除块中的每个页都包含无效数据,擦除块可以被直接擦除。)以这种方式,当写请求被处理时,将有效数据510-3写入图1的ssd120中的新页。从图1的ssd120的角度来看,该写请求与在图1的机器105上运行的应用提交的写请求没有不同,并被相应处理。一旦已将写请求提交给图7的i/o队列710,擦除逻辑810就可以擦除图5的块505-2。注意,在擦除逻辑810可以开始之前,无用数据收集逻辑715不需要等待有效数据被写入新页:有效数据完全在图7的i/o队列710内,并会被依次写入。当然,如果保证在不可预见的情况(例如电源故障)下没有数据丢失,那么擦除逻辑810可以等待直到数据已经被成功写入为止,然后擦除图5的擦除块505-2。但是如果图1的ssd120提供了这样的保证,那么很可能在图1的ssd120内已经存在其他机制以确保图7的i/o队列710中的数据不会由于不可预见的情况而丢失。

图9示出了根据本发明构思的实施例的图8的写请求逻辑805将有效数据提交给图7的i/o队列710以编程有效数据。在图9中,一旦块505-2已被选作擦除块并且已经识别出有效数据510-3,那么写请求逻辑805可以创建写请求以将有效数据510-3重新写回到图1的ssd120上的新页。可以将该写请求提交给i/o队列710,并且与来自在图1的机器105上运行的应用的原始写请求同样地处理。

尽管本领域技术人员可能认为:将有效数据510-3放入i/o队列710中以避免由图7的无用数据收集逻辑715直接对有效数据510-3进行编程会增加原始写请求的写入等待时间,但是对写入延迟的实际影响可能很小。理想地,图7的无用数据收集逻辑715在对图1的ssd120的其他需求较低时进行操作。如果图1的ssd120正从图1的机器105上运行的应用接收许多原始写请求,则图7的无用数据收集逻辑715理想地应当不开始恢复擦除块。图7的无用数据收集逻辑715可能在图1的ssd120具有极低空闲页计数的情况下开始。但是,如果出现这种情况,那么无论如何都可能会发生有效数据的编程,这对原始写请求的写入延迟具有类似的预期影响。因此,如同原始写请求一样使用i/o队列710对有效数据510-3进行编程,这不太可能具有比传统的无用数据收集更大的影响。而且由于有效数据510-3可能与具有相似属性(例如,剩余寿命)的其他数据放置在一起,所以通过减少将来有效数据的编程来增强无用数据收集性能。

回到图8,根据本发明构思的另一实施例,无用数据收集逻辑715可以包括擦除逻辑810、块选择逻辑815和编程逻辑820。块选择逻辑815可以访问图7的自动流检测逻辑415,以便为图5的有效数据510-3确定新的流id。也就是说,块选择逻辑815可以将针对图5中有效数据510-3的图6中的一个或多个属性605传递到图7的自动流检测逻辑415,并接收返回的流id。块选择逻辑815然后可以使用该流id来选择要编程有效数据510-3的合适块,编程可以通过编程逻辑820使用传统技术来执行。注意,块选择逻辑815可以基于从图7的自动流检测逻辑415接收的流id,选择任何合适的块。例如,所选块可以是保持响应于从在图1的机器105上运行的应用接收到的、具有所选流[d的原始写请求而写入的数据的块。或者,所选块可能是特殊块,仅存储由于无用数据收集而编程的并被分配了该流id的数据。本发明构思的实施例还可以将块选择逻辑815实现为以其他方式响应于接收到的流id来选择块。

图10示出了根据本发明构思的实施例的图8的块选择逻辑815响应从图7的自动流检测逻辑415接收的流id来选择块。在图10中,块选择逻辑815可以从自动流检测逻辑415接收流id1005。流id1005可以使用有效数据510-3的属性来确定。一旦已经选择了块(例如,块505-8),则可以定位块505-8中的空闲页(例如,空闲页1010-3),并且编程逻辑820可以将有效数据510-3写入空闲页1010-3。一旦该操作完成,那么图1的擦除逻辑810可以对擦除块505-2进行擦除,从而使这些页空闲。

不管图7的无用数据收集逻辑715如何实现,本发明构思的实施例在接近要编程有效数据510-3时确定用于编程有效数据510-3的流id。也就是说,图7的无用数据收集逻辑715不依赖于在有效数据510-3最初被编程时确定的图4的流id420-1至420-4:相反,图7的无用数据收集逻辑715在接近有效数据510-3被编程到新(空闲)页时确定用于编程有效数据510-3的流id。图7的无用数据收集逻辑715也不依赖于可能已经与有效数据510-3一起存储的这种流id:先前确定的流id可能不再反映对有效数据510-3进行编程的最佳流选择。

图11示出了根据本发明构思的实施例的使用图10的流id1005执行无用数据收集的示例过程的流程图。在图11中,在方框1105处,图7的接收器705可以接收图4的写命令405-1至405-4中的一个或多个。在方框1110处,图7的自动流检测逻辑415可以针对图4的写命令405-1至405-4确定图4的流id420-1至420-4。在方框1115处,图3的ssd控制器310可以选择与图4的流id420-1至420-4相关联的数据可以写入到的块,在方框1120处,图3的ssd控制器310可以执行写命令405-1至405-4,将数据写入图3的闪存315-1至315-8。

在方框1125处,图3的ssd控制器310可以检查是否到了应当执行无用数据收集的时间。如果否,则处理可以返回到方框1105以处理附加的写(或其他)命令。但是如果到了图3的ssd控制器310执行无用数据收集的时间,则处理继续到方框1130。图3的ssd控制器310可以前台操作或后台操作的形式执行无用数据收集:在后一种情况下,方框1125与图3的ssd控制器310确定无用数据收集的时间已经到来几乎无关,而与活动是否降低到可以在对来自应用的读和写请求的影响减小或最小的情况下进行无用数据收集的水平有关。在方框1130处,图7的无用数据收集逻辑715可以识别擦除块,例如图5的擦除块505-2。在方框1135处,图7的无用数据收集逻辑715可以识别图5的擦除块505-2内的有效数据。并且在方框1140处,图7的无用数据收集逻辑715可以基于如图7的自动流检测逻辑415所确定的图10的流id1005将图5的有效数据510-3编程到第二块中。处理然后可以返回到方框1105以处理另一写(或其他)命令,或者返回到方框1130以擦除另一擦除块。

可以注意到,图11中示出的示例过程不涉及对擦除块进行擦除。这是因为擦除操作的定时可以根据本发明构思的实施例而变化。在图12中示出了擦除操作,在下面描述。

图12示出了根据本发明构思的实施例在无用数据收集期间对来自图5的擦除块510-3的图5的有效数据510-3进行编程的示例过程的流程图。图12实际上描述了执行编程操作的两种不同方法。在本发明构思的一个实施例中,在方框1205处,图8的写请求逻辑805可以将写请求放入图7的i/o队列710中。实际上,除了写请求的源以外,方框1205与图11的方框1105相同。就此而言,将图5的有效数据510-3写入空闲页的动作就如同源自在图1的机器105上的应用的写动作一样处理。在方框1210处,图8的擦除逻辑810然后可以擦除图5的擦除块505-2,等待写请求完成或不等待。

在本发明构思的另一个实施例中,在方框1215处,图8的块选择逻辑815可以向图7的自动流检测逻辑415请求图10的流id1005。在方框1220处,图8的块选择逻辑815可以基于图10的流id1005来选择块。在方框1225处,图8的编程逻辑820可以将图5的有效数据510-3写入所选块中的空闲页,之后在方框1230处图8的擦除逻辑810可以擦除图5的擦除块505-2。

在图11-12中,示出了本发明构思的一些实施例。但是本领域技术人员将认识到,通过改变方框的顺序,省略方框或通过包括未在附图中示出的连接,本发明构思的其他实施例也是可能的。流程图的所有这些变化被认为是本发明构思的实施例,无论是否明确描述。

以下讨论旨在提供可以实现本发明构思的某些方面的合适机器的简要、一般性描述。机器可以至少部分地通过来自传统输入设备(例如,键盘,鼠标等)的输入以及通过从另一机器接收的指示、与虚拟现实(vr)环境的交互、生物测定反馈或其他输入信号来进行控制。本文所使用的术语“机器”旨在广义地涵盖单个机器、虚拟机或者通信耦接的机器、虚拟机或一起操作的设备的系统。示例性机器包括计算设备如个人计算机、工作站、服务器、便携式计算机、手持设备、电话、平板电脑等,以及运输设备如私人或公共运输(例如汽车、火车、出租车等)。

机器可以包括嵌入式控制器,例如可编程或不可编程逻辑器件或阵列、专用集成电路(asic)、嵌入式计算机、智能卡等。机器可以利用到一个或多个远程机器的一个或多个连接,例如通过网络接口、调制解调器或其他通信耦接。机器可以通过物理和/或逻辑网络(例如,内联网、互联网、局域网、广域网等)的方式进行互连。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短距离或长距离载波和协议,包括射频(rf)、卫星、微波、电气和电子工程师协会(ieee)802.11、光学、红外、电缆、激光等。

本发明构思的实施例可以通过参考或结合包括功能、过程、数据结构、应用程序等的关联数据来描述,这些关联数据当由机器访问时,引起机器执行任务或定义抽象数据类型或低级硬件上下文。关联数据可以存储在例如易失性和/或非易失性存储器(例如,ram、rom等)中或存储在其他存储设备及其相关联的存储介质中,包括硬盘驱动、软盘、光学存储器件、磁带、闪存、记忆棒、数字视频盘、生物存储器件等。关联数据可以以数据包、串行数据、并行数据、传播信号等形式通过传输环境(包括物理和/或逻辑网络)传递,并且可以以压缩或加密格式使用。关联数据可以在分布式环境中使用,并且本地和/或远程地存储以供机器访问。

本发明构思的实施例可以包括包含由一个或多个处理器可执行的指令的有形非暂时性机器可读介质,所述指令包括用于执行本文所述的发明构思的要素的指令。

已经参考所示实施例描述和说明了本发明构思的原理,将认识到,在不脱离这些原理的前提下所示实施例可以在布置和细节上修改,并且可以以任何期望的方式组合。并且尽管前述讨论集中在具体实施例上,但是能想到其他配置。特别是,尽管在本文使用了诸如“根据本发明构思的实施例”等表达,但是这些短语意指一般地提及实施例可能性,而并非旨在将本发明构思限于具体实施例配置。本文所使用的这些术语可以提及可组合到其他实施例中的相同或不同的实施例。

前述说明性实施例不应被解释为限制其发明构思。尽管描述了一些实施例,然而本领域技术人员应容易理解,在不实质上脱离本公开的新颖教义和优点的前提下,可以对这些实施例进行多种修改。因此,所有这种修改应包括在权利要求中所限定的本发明构思的范围内。

因此,鉴于这里描述的实施例的各种变化,在此的详细描述和所附材料仅旨在是说明性的,而不应被视为限制本发明构思的范围。因此,所要求保护的发明构思是所有可能落入所附权利要求及其等同物的范围和精神内的所有这些修改。

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