用于通过地址映射来扩展命令编排的系统及方法与流程

文档序号:29509066发布日期:2022-04-06 19:25阅读:96来源:国知局
用于通过地址映射来扩展命令编排的系统及方法与流程

1.本发明实施例大体上涉及用于通过处理命令以管理非易失性存储器来操作数据存储装置的系统及方法,且更特定来说,涉及用于使用扩展命令编排的地址映射来处理命令以管理非易失性存储器的系统及方法。


背景技术:

2.存储装置可经由逻辑到物理地址映射读取非易失性存储器中的数据块。在接收请求数据块的读取的多个命令之后,存储装置可执行命令编排以依序发出多个读取。鉴于易失性存储器的有限容量及存储装置的有限处理能力,仍期望改进高效及可扩展命令编排。


技术实现要素:

3.本发明实施例涉及用于使用扩展命令编排的地址映射来处理命令以管理非易失性存储器的系统及方法。
4.根据某些方面,实施例提供一种用于处理命令以管理非易失性存储器的装置。所述装置可包含控制器及易失性存储器。所述控制器可经配置以从第一命令获得第一地址信息。所述控制器可经配置以基于所述第一地址信息读取元数据表的第一条目。所述控制器可经配置以基于所述元数据表的所述第一条目确定对应于所述第一地址信息的第一元数据页面是否正由所述控制器处理。所述控制器可经配置以响应于确定对应于所述第一地址信息的所述第一元数据页面正被处理而基于所述元数据表的所述第一条目确定多个处理状态中所述第一元数据页面的第一处理状态且根据所述第一元数据页面的所述第一处理状态处理所述第一命令。所述控制器可经配置以响应于确定对应于所述第一地址信息的所述第一元数据页面未被处理而基于所述元数据表的所述第一条目从所述非易失性存储器读取所述第一元数据页面。
5.根据其它方面,实施例提供一种处理命令以管理非易失性存储器的方法。所述方法可包含由处理器从第一命令获得第一地址信息。所述方法可包含由所述处理器基于所述第一地址信息读取元数据表的第一条目。所述方法可包含由所述处理器基于所述元数据表的所述第一条目确定对应于所述第一地址信息的第一元数据页面是否正由所述控制器处理。所述方法可包含响应于确定对应于所述第一地址信息的所述第一元数据页面正被处理而由所述处理器基于所述元数据表的所述第一条目确定多个处理状态中所述第一元数据页面的第一处理状态且根据所述第一元数据页面的所述第一处理状态处理所述第一命令。所述方法可包含响应于确定对应于所述第一地址信息的所述第一元数据页面未被处理而由所述处理器基于所述元数据表的所述第一条目从所述非易失性存储器读取所述第一元数据页面。
附图说明
6.所属领域的一般技术人员将在结合附图检阅具体实施例的以下描述之后明白本
发明实施例的这些及其它方面及特征,其中:
7.图1是说明根据一些实施例的实例计算机系统的框图;
8.图2是说明根据一些实施例的使用地址映射的实例命令编排系统的框图;
9.图3a及图3b说明根据一些实施例的使用地址映射来执行命令编排的实例过程;
10.图4是说明根据一些实施例的用于命令编排的地址映射的实例的框图;及
11.图5是说明根据一些实施例的用于使用地址映射来执行命令编排的实例方法的流程图。
具体实施方式
12.根据某些方面,本公开中的实施例涉及用于使用扩展命令编排的地址映射来处理命令以管理非易失性存储器的技术。
13.就高性能系统来说,避免性能瓶颈是很重要的。并行化操作会导致意外竞争条件,其通常变成瓶颈或漏洞。就分页ftl(闪存转译层)来说,读取或写入的多次请求会导致需要加载页面,从而导致扩展命令编排或排序的问题。例如,读取及写入两者需要加载含有映射信息的相同元数据页面(或mdpage)。此问题的一种解决方案是保留在提取过程中加载的页面的排序列表以确定哪些页面正被加载或处理。例如,红黑树可用于维持具有o(log2 n)的计算复杂性的可搜寻排序列表,其中n是树的节点数(或页面数)。然而,此解决方案会导致高设计复杂性且期望改进性能及可扩展性。对于分页系统,存在追踪有效页面的状态的一般可扩展性问题。这些有效页面可具有许多不同状态(超过加载)需要本发明解决的追踪。
14.为了解决此问题,根据某些方面,本公开中的实施例涉及用于使用地址映射来追踪有效操作且相应地执行命令编排的技术。在一些实施例中,命令编排系统(例如ftl)可利用存储器中的大映射(例如元数据映射)。不是在元数据映射中存储指示页面(例如元数据页面)在非易失性存储器(例如闪存)中的位置的值,而是命令编排系统可用指示页面已在加载过程中的特殊设置值替换所述值。
15.在一些实施例中,元数据映射(mdmap)可为用于追踪给定(元数据)页面的非易失性存储器中的位置的存储器内表。在一些实施例中,元数据映射可包含提供给数据的地址(例如逻辑地址)与其中存储数据或数据的元数据页面的物理存储器的地址(例如“物理地址”)之间的映射信息。在一些实施例中,元数据映射可具有多个条目,其中的每一者含有元数据页面(mdpage)的地址,所述元数据页面包含给定元数据页码的映射信息(元数据)。在一些实施例中,由元数据映射定义的地址空间的一部分可不用于非易失性存储器中的地址,且地址空间的此未使用部分可代以分配给编排管理使用。在一些实施例中,当元数据页面在读取提取中时,命令编排系统可通过使用对应于用于发出及追踪读取过程的执行标签(exectag)的地址值而非使用元数据页面的地址来使用地址改向。在一些实施例中,执行标签可与由元数据映射定义的地址空间的未使用部分中的地址相关联。
16.在一些实施例中,执行标签可具有未定元数据页面的读取的请求链表。例如,当新请求到达时,常规ftl可尝试在元数据映射中查找闪存地址以发出对应(元数据)页面的读取。根据一些实施例的命令编排系统可代以执行查找以找到指示元数据页面的读取已在进行中的值且可代以将请求添加到适当链表。在一些实施例中,在完成元数据读取操作(mdread)之后,命令编排系统可服务于可基于所述链表服务的排队请求。
17.在一些实施例中,命令编排系统可将此经修改地址映射技术应用于命令编排过程的不同阶段,例如晶片上高速缓存/缓冲或修整状态。在一些实施例中,可使用此经修改地址映射技术来管理背景修整操作。例如,当元数据页面经受背景修整操作时,命令编排系统可通过使用对应于用于追踪修整过程的修整标签(trimtag)的地址值而非使用元数据页面的地址来使用地址改向。在一些实施例中,命令编排系统可处置至少两个命令分组到其中的元数据包单元的页面。例如,当在元数据包单元中处理元数据页面时,命令编排系统可通过使用对应于用于追踪元数据包装过程的包装标签(packtag)的地址值来使用地址改向。
18.在一些实施例中,命令编排系统可处置存储于存储器高速缓存(例如dram)中的页面。例如,当元数据页面存储于高速缓存中时,命令编排系统可通过使用对应于读取高速缓存标签(rdcachetag)的地址值来使用地址改向,所述读取高速缓存标签指示元数据页面在dram中的位置,(例如)作为全相联高速缓存机制。类似地,当存储于高速缓存中的元数据页面已被修改但未写入到非易失性存储器(例如,页面是脏的)时,命令编排系统可通过使用对应于写入高速缓存标签(wrcachetag)的地址值来使用地址改向,所述写入高速缓存标签指示关于脏元数据页面的额外信息在dram中的位置。在一些实施例中,执行标签、修整标签、包装标签、读取高速缓存标签、写入高速缓存标签可定义为由元数据映射定义的地址空间的相应未使用部分。
19.根据某些方面,本公开中的实施例涉及一种用于处理命令以管理非易失性存储器的装置。所述装置可包含控制器及易失性存储器。所述控制器可经配置以从第一命令获得第一地址信息。所述控制器可经配置以基于所述第一地址信息读取元数据表的第一条目。所述控制器可经配置以基于所述元数据表的所述第一条目确定对应于所述第一地址信息的第一元数据页面是否正由所述控制器处理。所述控制器可经配置以响应于确定对应于所述第一地址信息的所述第一元数据页面正被处理而基于所述元数据表的所述第一条目确定多个处理状态中所述第一元数据页面的第一处理状态且根据所述第一元数据页面的所述第一处理状态处理所述第一命令。所述控制器可经配置以响应于确定对应于所述第一地址信息的所述第一元数据页面未被处理而基于所述元数据表的所述第一条目从所述非易失性存储器读取所述第一元数据页面。
20.根据某些方面,本公开中的实施例涉及一种处理命令以管理非易失性存储器的方法。所述方法可包含由处理器从第一命令获得第一地址信息。所述方法可包含由所述处理器基于所述第一地址信息读取元数据表的第一条目。所述方法可包含由所述处理器基于所述元数据表的所述第一条目确定对应于所述第一地址信息的第一元数据页面是否正由所述控制器处理。所述方法可包含响应于确定对应于所述第一地址信息的所述第一元数据页面正被处理而由所述处理器基于所述元数据表的所述第一条目确定多个处理状态中所述第一元数据页面的第一处理状态且根据所述第一元数据页面的所述第一处理状态处理所述第一命令。所述方法可包含响应于确定对应于所述第一地址信息的所述第一元数据页面未被处理而由所述处理器基于所述元数据表的所述第一条目从所述非易失性存储器读取所述第一元数据页面。
21.本公开中的实施例至少具有以下优点及益处。
22.本公开中的实施例可提供用于使用经修改地址映射来改进命令编排的有用技术。利用通过用对应于处理状态的值(标签)替换闪存地址的经修改地址映射技术,根据一些实
施例的命令编排系统可确定哪些页面在计算复杂性o(1)的加载过程(或其它过程)中。此命令编排方法还可达成比常规技术(例如使用红黑树的技术)更佳的可扩展性及更低设计复杂性。此外,通过将高速缓存标签添加到映射地址空间,根据一些实施例的命令编排系统可通过全相联高速缓存而非n路高速缓存来达成更高性能及可扩展性。命令编排系统还可根据需要使用替换值来引用列表及其它数据以高效追踪与目标元数据页面相关联的操作过程。这些改进可为键值存储系统提供额外益处及简化,此具有比旧有命名空间/逻辑寻址的典型元数据量大得多的元数据量。
23.图1是说明根据一些实施例的实例计算机系统的框图。
24.参考图1,计算机系统1000可包含主机10及固态硬盘(ssd)100,ssd 100是存储装置且可用作信息处理设备(例如主机10)的主存储装置。ssd 100可并入信息处理设备中或可经由电缆或网络连接到信息处理设备。
25.主机10可为存取ssd 100的信息处理设备(计算装置)。主机10可为在ssd 100中存储大量各种数据的服务器(存储服务器),或可为个人电脑。主机包含用于控制文件操作(例如创建、保存、更新或删除)的文件系统15。例如,zfs、btrfs、xfs、ext 4或ntfs可用作文件系统15。替代地,文件对象系统(例如ceph对象存储进程)或键值存储系统(例如rocksdb)可用作文件系统15。
26.ssd 100包含(例如)控制器120及闪存180作为非易失性存储器(例如nand型闪存)。ssd 100可包含随机存取存储器作为易失性存储器,例如dram(动态随机存取存储器)110。在一些实施例中,控制器120可包含随机存取存储器,例如sram(静态随机存取存储器)。随机存取存储器(例如dram 110)具有(例如)读取缓冲器作为用于暂时存储从闪存180读出的数据的缓冲区,具有写入缓冲器作为用于暂时存储写入闪存180中的数据的缓冲区,及具有缓冲器用于废弃项目收集。在一些实施例中,控制器120可包含dram 110。
27.在一些实施例中,闪存180可包含存储器单元阵列,其包含多个闪存块(例如nand块)182-1到182-m。块182-1到182-中的每一者可用作擦除单元。块182-1到182-m中的每一者包含多个物理页面。在一些实施例中,在闪存180中,数据读取及数据写入基于页面执行,且数据擦除基于块执行。
28.在一些实施例中,控制器120可为经配置以控制闪存180的存储器控制器。控制器120包含(例如)处理器(例如cpu)150、闪存接口140及dram接口130、主机接口190,其中所有可经由总线128互连。dram接口130可用作经配置以控制对dram 110的存取的dram控制器。闪存接口140可用作经配置以控制闪存180(例如nand型闪存)的闪存控制电路(例如nand控制电路)。
29.主机接口190可用作从主机15接收各种请求及将对请求的响应传输到主机10的电路。请求可包含各种命令,例如i/o命令及控制命令。i/o命令可包含(例如)写入命令、读取命令、修整命令(取消映射命令)、格式化命令及刷新命令。写入命令也称为程序命令。格式化命令可为用于取消映射整个存储器系统(ssd 100)的命令。
30.处理器150可经配置以控制闪存接口140及dram接口130。处理器150可经配置以通过执行存储于(例如)rom(未展示)中的控制程序(例如固件)来执行各种过程。在一些实施例中,处理器150可执行命令控制160以执行用于处理从信息处理设备(例如主机计算机)接收的各种命令的命令处理。处理器150可经配置以用作闪存转译层(ftl)170来执行闪存180
的数据管理及块管理。ftl 170可包含查找表控制172、废弃项目收集控制174、损耗均衡控制176及闪存控制178。数据管理可包含指示逻辑地址(例如lba(逻辑块地址))与闪存180的物理地址之间的对应关系的映射信息的管理。在一些实施例中,查找表控制172可使用地址转译表(逻辑/物理地址转译表,例如图2及3中的元数据映射230、330)执行(1)每一逻辑块地址(lba)或每一逻辑页面地址与(2)每一物理地址之间的映射管理。ftl 170可用作命令编排系统(例如图2及3中的命令编排系统2000或3000)以通过管理元数据映射(例如图2及3中的元数据映射230、330)及多个队列(例如图3a及3b中的队列366)来依序执行多个读取。废弃项目收集控制单元174可执行废弃项目收集(gc),其是经执行以产生空闲块作为数据写入目的地块的过程。损耗均衡控制176可执行损耗均衡,其是均衡块擦除次数使得可通过防止块发生更多擦除来降低ssd 100的故障概率的过程。闪存控制单元178可执行闪存接口140的控制。
31.图2是说明根据一些实施例的使用地址映射的实例命令编排系统的框图。参考图2,命令编排系统2000可使用地址映射来追踪有效操作且相应地执行命令编排。在一些实施例中,命令编排系统2000可包含闪存转译层(例如图1中的ftl 170)且利用元数据映射230用于地址映射。在一些实施例中,元数据映射230可为用于追踪给定(元数据)页面的非易失性存储器中的位置的存储器内表(例如,存储于像图1中的dram 110的易失性存储器中)。在一些实施例中,元数据映射可具有多个条目(例如条目232、234),其中的每一者含有元数据页面(mdpage)的闪存地址,所述元数据页面包含用于给定元数据页码(例如元数据页码260)的映射信息(或元数据)。例如,闪存系统(例如图10中的ssd100)可从计算装置(例如图1中的主机10)接收可包含命令信息216(例如,其是否为读取命令、写入命令等)、数据的逻辑地址信息212及大小214或其它参数信息218的命令210。ftl可基于命令210确定数据的元数据页码260。ftl可使用元数据页码260作为指数来查找元数据映射230以定位含有对应于数据的元数据页面244的物理(闪存)地址的条目234。类似地,元数据映射的条目232可含有元数据页面244的物理(闪存)地址。在一些实施例中,元数据页面244可包含指示目标数据256的位置的非易失性存储器(例如图1中的闪存180)中的页面的物理地址254。在一些实施例中,元数据页面244可包含其它元数据252,例如块状态、数据状态、块的内容的ecc(纠错码)或关于内容的信息(文件id、页面id、字节计数、版本或ecc)中的至少一者。
32.图3a及图3b说明根据一些实施例的使用地址映射来执行命令编排的实例过程。参考图3a,在一些实施例中,不是在元数据映射中存储指示页面(例如元数据页面)在非易失性存储器(例如图1中的闪存180)中的位置的值,而是命令编排系统3000可用指示页面已在加载过程中或正在其它过程中处理的特殊设置值替换位置值。在一些实施例中,命令编排系统3000可用闪存系统的控制器(例如图1中的控制器120)实施。例如,闪存系统(例如图1中的ssd 100)可从主机10(见图1)接收包含数据的逻辑地址信息312及大小314的命令310。闪存系统可基于由命令314指示的数据大小来分配或创建由userexectags(351、352等)指示的适当数目个用户执行标签以追踪命令310的执行以允许命令并行执行。例如,用户执行标签的数目可基于命令大小及预定页面大小来确定,使得每一用户执行标签可含有用于存取对应页面或元数据页面的信息。在一些实施例中,用户执行标签可包含用于使用对应页面执行命令(或其部分)的信息。在一些实施例中,闪存系统的ftl(例如ftl 170)或命令控制(例如图1中的命令控制160)可分配用户执行标签的数目。ftl可基于用户执行标签351确
定数据的元数据页码#1(321)。接着,ftl可使用元数据页码321作为指数来查找元数据映射330以定位可含有对应于命令310的数据的元数据页面1(363)的物理(闪存)地址342的条目332。在一些实施例中,命令编排系统3000可分配由sysexectag指示的系统执行标签(例如365)以执行加载于易失性存储器(例如图1中的dram 110)中的元数据页面1(363)的读取(mdread)。接着,命令编排系统3000可用系统执行标签地址空间(sysexectag地址空间)364的地址344替换(由345标示的虚线指示)含于条目332中的当前地址值。在一些实施例中,sysexectag地址空间364可为由元数据映射定义的地址空间的一部分(例如图3a中所展示的232总地址空间),其未用于非易失性存储器中的地址,例如,在闪存地址空间362外。地址空间的此未使用部分364可代以分配给编排管理使用。
33.在一些实施例中,响应于确定元数据页面363在读取提取中,命令编排系统3000可通过使用对应于用于(例如)发出及追踪读取过程的系统执行标签(sysexectag)1(365)的地址值344而非使用元数据页面的闪存地址342来使用地址改向。在一些实施例中,系统执行标签1(365)可与由元数据映射330定义的地址空间的未使用部分(例如sysexectagtag地址空间364)中的地址344相关联。在一些实施例中,系统执行标签可具有或指向未定元数据页面的读取的userexectag请求的队列366。在一些实施例中,队列366可存储于与sysexectag 365的存储器位置分离的易失性存储器中,使得系统执行标签365含有队列366的存储器地址。在一些实施例中,队列366可使用由sysexectag365指示的单独表来管理。在一些实施例中,队列366可由可在o(1)时间执行队列操作(例如入队及离队)的fifo(先入先出)数据结构的任何实施方案替换,例如阵列、单链表或双链表等。在一些实施例中,响应于确定没有未定元数据页面1的读取的请求,队列366可为空的,因为其仅含有空值367。在一些实施例中,如图3a中所展示,在命令编排系统分配sysexectag1(365)且发出元数据页面363的读取之后,userexectag1(351)可放置或添加到队列366(或与sysexectag 365相关联的任何fifo数据结构)以在读取完成之后被服务或处理。在命令编排系统完成userexectag1(351)的服务或处理(例如通过使用元数据页面363执行命令310(或其部分))之后,userexectag1(351)可从队列366(或与sysexectag 365相关联的任何fifo数据结构)移除。
34.在一些实施例中,可能没有非易失性存储器空间分配给系统执行标签的地址(因为系统执行标签地址空间在闪存地址空间外),且系统执行标签可存储于易失性存储器(例如图1中的dram 110)中。在一些实施例中,系统执行标签在易失性存储器中的地址可与含于元数据映射330的条目332中的地址344相关联。换言之,命令编排系统可基于含于元数据映射330的条目332中的地址344计算系统执行标签在易失性存储器中的地址。例如,系统执行标签在易失性存储器中的地址可基于地址344从sysexectag地址空间364的起始地址的偏移来计算。在一些实施例中,执行标签可包含关于元数据页面当前经受的过程的信息(例如过程的过程id或过程的种类,例如读取过程、写入过程等)及/或关于存取元数据页面的信息(例如加载于易失性存储器中的元数据页面的地址)。
35.参考图3b,例如,当新用户执行标签请求到达时,根据一些实施例的命令编排系统3000可执行查找元数据映射以找到指示元数据页面的读取已在进行中的值且可代以将请求添加到适当队列或任何fifo数据结构(例如链表)。例如,除从主机10接收命令1(310)(见图3a)之外,闪存可接收包含数据的逻辑地址信息372及大小374的另一命令370。系统可分
配用户执行标签3或userexectag3(391)。基于命令370及userexectag3(391),ftl 170可确定命令370请求与命令310先前请求(见图3a)相同的数据的元数据页码#1(321)。接着,ftl可使用元数据页码321作为指数来查找元数据映射330以定位条目332。此时,元数据映射的条目332可含有sysexectag地址空间364的地址344,而非对应于数据的元数据页面1(363)的闪存地址。在一些实施例中,命令编排系统3000可基于sysexectag地址空间364的地址344来识别或定位或存取系统执行标签1(365),例如通过基于地址344从sysexectag地址空间364的起始地址的偏移来计算系统执行标签1在易失性存储器中的地址。
36.在一些实施例中,命令编排系统3000可确定地址344在sysexectag地址空间364内。响应于所述确定,系统可通过确定图3a中所展示的队列366具有userexectag1(351)来辨识元数据页面1的读取操作(mdread)已在进行中(但尚未完成)。接着,命令编排系统3000可将当前请求userexectag3(391)(来自命令2)添加到队列366。在一些实施例中,在完成元数据页面1的读取操作之后,命令编排系统可从队列366移除userexectag1(351),接着服务或处理userexectag1(351),接着从队列366移除userexectag3(391),接着服务或处理userexectag3(391)。响应于确定userexectag3(391)的服务或过程已完成,命令编排系统可确定队列366是空的,因为其仅含有空值367。在一些实施例中,响应于确定队列366是空的,命令编排系统可用元数据页面1(363)的地址342更新元数据映射330的条目332(见图3a)。
37.图4是说明根据一些实施例的用于命令编排的地址映射的实例的框图。根据一些实施例的命令编排系统可将经修改地址映射技术(如图2、3a及3b中所展示)应用于命令编排过程的不同阶段,例如包装或修整或高速缓存。
38.在一些实施例中,执行标签、修整标签、包装标签、读取高速缓存标签、写入高速缓存标签可定义为由元数据映射定义的地址空间的相应未使用部分。例如,参考图4,由元数据映射的4字节大小条目定义的地址空间400(2
32
地址空间)可包含具有26个地址的包装标签(packtag)地址空间412,其中包装标签(packtag)可指示对应元数据页面以至少两个命令分组到其中的元数据包单元处理。地址空间400可包含具有28个地址的系统执行标签(sysexectag)地址空间410,其中系统执行标签(sysexectag)可指示哪个读取过程正加载对应元数据页面,如图3a及3b中所说明。地址空间400可包含具有2
13
个地址的修整标签(trimtag)地址空间408,其中修整标签(trimtag)可指示对应元数据页面在背景修整操作中。地址空间400可包含具有2
14
个地址的写入高速缓存标签(wrcachetag)地址空间406,其中写入高速缓存标签(wrcachetag)可指示对应脏元数据页面在易失性存储器(例如图1中的dram 110)中的位置。地址空间400可包含具有2
20
个地址的读取高速缓存标签(rdcachetag)地址空间404,其中读取高速缓存标签(rdcachetag)可指示对应元数据页面在dram中的位置。地址空间400可包含具有可指示含有元数据页面的闪存位置的约2
32-2
20
个地址的闪存地址空间402。
39.在一些实施例中,背景修整操作可使用类似于图3a及3b中所说明的经修改地址映射技术的经修改地址映射技术来管理。例如,当元数据页面经受背景修整操作时,命令编排系统可通过使用对应于用于追踪修整过程的修整标签(trimtag)的修整标签地址空间(例如图4中的修整标签地址空间408)的地址值而非使用闪存地址空间(例如图4中的闪存地址空间402)中的元数据页面的闪存地址来使用地址改向。在接收对当前经受背景修整过程的
特定数据的请求之后,命令编排系统可基于与特定数据的元数据页面相关联的修整标签来辨识或追踪元数据页面所在的修整过程。
40.在一些实施例中,命令编排系统可处置至少两条注释分组到其中的元数据包单元的页面。例如,当以元数据包单元处理元数据页面时,命令编排系统可通过使用对应于用于追踪命令包装过程的包装标签(packtag)的包装标签地址空间(例如图4中的包装标签地址空间412)的地址值来使用地址改向。在接收对当前经受用于将两个或更多个命令分组到包装命令单元中的包装过程的特定数据的请求之后,命令编排系统可基于与特定数据的元数据页面相关联的包装标签来辨识或追踪元数据页面所在的包装过程。
41.在一些实施例中,命令编排系统可处置存储于存储器高速缓存(例如图1中的dram110)中的页面。例如,当元数据页面存储于高速缓存中时,命令编排系统可通过使用对应于指示元数据页面在高速缓存(例如dram)中的位置的读取高速缓存标签(rdcachetag)的读取高速缓存标签地址空间(例如图4中的读取高速缓存标签地址空间404)的地址值来使用地址改向。在一些实施例中,命令编排系统可基于读取高速缓存标签地址空间404中的经改向地址计算存储于高速缓存中的元数据页面的地址。例如,存储于高速缓存中的元数据页面的地址可基于经改向地址从读取高速缓存标签地址空间404的起始地址的偏移来计算。
42.在一些实施例中,当存储于高速缓存(例如图1中的dram 110)中的元数据页面已被修改但未写入到非易失性存储器(例如,页面是脏的)时,命令编排系统可通过使用对应于指示脏元数据页面在高速缓存(例如dram)中的位置的写入高速缓存标签(wrcachetag)的写入高速缓存标签地址空间(例如图4中的写入高速缓存标签地址空间406)的地址值来使用地址改向。在一些实施例中,命令编排系统可基于写入高速缓存标签地址空间406中的经改向地址计算存储于高速缓存中的脏元数据页面的地址。例如,存储于高速缓存中的脏元数据页面的地址可基于经改向地址从写入高速缓存标签地址空间406的起始地址的偏移来计算。在一些实施例中,在将元数据页面写入到非易失性存储器之后,命令编排系统可响应于确定元数据页面从高速缓存移除而用闪存地址的地址值更新对应于元数据页面的元数据映射的条目,或响应于确定(干净)元数据页面保留而用读取高速缓存地址的地址值更新对应于元数据页面的元数据映射的条目。
43.在一些实施例中,用于处理命令(例如图2、3a及3b中的命令210、310、370)以管理非易失性存储器(例如图1中的闪存180)的装置(例如图1中的ssd 110)可包含控制器(例如图1中的控制器120)及易失性存储器(例如图1中的dram 110)。控制器可经配置以从第一命令(例如图3a及3b中的命令310、320)获得第一地址信息(例如图3a及3b中的逻辑地址信息312、352)。控制器可经配置以基于第一地址信息读取元数据表的第一条目(例如图3a中的元数据映射330的条目332)。控制器可经配置以基于元数据表的第一条目(例如图3a中闪存地址空间362中的地址342或系统执行标签地址空间364中的地址344)确定对应于第一地址信息的第一元数据页面是否正由控制器处理。控制器可经配置以响应于确定对应于第一地址信息的第一元数据页面正被处理(例如,当条目含有图3b中系统执行标签地址空间364中的地址344时)而基于元数据表的第一条目(例如图3b中元数据映射330的条目332)确定多个处理状态中第一元数据页面的第一处理状态(例如如通过图3b中的执行标签365所指示那样加载的状态)且根据第一元数据页面的第一处理状态处理第一命令(例如,将来自图3b
中的命令2的请求添加到队列366)。控制器可经配置以响应于确定对应于第一地址信息的第一元数据页面未被处理(例如,当条目332含有图3a中闪存地址空间362中的地址342时)而基于元数据表的第一条目(例如含于图3a中的条目332中的地址342)从非易失性存储器读取第一元数据页面363。
44.在一些实施例中,元数据表(例如图2、3a及3b中的元数据映射230、330)可存储于易失性存储器(例如图1中的dram 110)中。在一些实施例中,多个处理状态(例如由图4中所展示的多个标签指示的状态)可包含用于读取操作的加载状态(例如图4中的exectag)、用于修整操作的加载状态(例如图4中的trimtag)、用于包装操作的加载状态(例如图4中的packtag)、高速缓存中的页面状态(例如图4中的rdcachetag)或高速缓存中的脏页面状态(例如图4中的wrcachetag)中的至少一者。
45.在一些实施例中,在确定第一元数据页面是否正由控制器处理时,控制器可经配置以基于第一条目(例如图3a及3b中的条目332)确定第一地址(例如图3a及3b中的地址342或地址344)。控制器可经配置以响应于确定第一地址(例如图3a中的地址342)在非易失性存储器的地址空间(例如图3a及3b中的闪存地址空间362)内而确定第一元数据页面(例如图3a中的元数据页面1(363))未被处理。控制器可经配置以响应于确定第一地址(例如图3b中的地址344)在非易失性存储器的地址空间(例如在图3b中的闪存地址空间362外的系统执行标签地址空间364)外而确定第一元数据页面正被处理。在一些实施例中,多个处理状态中的每一者可与在非易失性存储器的地址空间外的相应地址空间(例如图4中的包装标签地址空间412、系统执行标签地址空间410、修整标签地址空间408、写入高速缓存标签地址空间406、读取高速缓存标签地址空间404)相关联。在一些实施例中,在确定第一元数据页面的第一处理状态时,控制器可经配置以基于第一条目(例如图3b中的条目332)确定第一地址(例如图3b中的地址344)且确定第一地址(例如图3b中的地址344)在与第一处理状态相关联的地址空间(例如图3b中的系统执行标签地址空间364)内。
46.在一些实施例中,控制器可经配置以为第一元数据页面(例如图3a中的元数据页面1(363))创建第一请求队列(例如图3a中的队列366)。控制器可经配置以响应于确定第一元数据页面正被处理而将对应于第一命令(例如图3b中的命令2(370))的请求(例如图3b中的请求368)添加到第一队列(例如图3b中的队列366)。控制器可经配置以确定第一元数据页面的当前处理是否完成。控制器可经配置以响应于确定第一元数据页面的当前处理已完成而从第一队列(例如图3b中的队列366)移除请求且通过读取第一元数据页面(例如图3b中的元数据页面1(363))来处理经移除请求(例如图3b中的请求368)。控制器可经配置以确定第一元数据页面的当前处理是否完成。响应于确定第一元数据页面的当前处理已完成,控制器可经配置以确定第一队列是空的。响应于确定第一队列是空的,控制器可经配置以用指示第一元数据页面的位置(例如图3b中元数据页面1(363)的地址)的非易失性存储器的地址更新元数据表的第一条目(例如图3b中的元数据映射330的条目332)。在一些实施例中,第一队列可为链表(例如图3b中队列366的链表实施方案)。
47.图5是说明根据一些实施例的用于使用地址映射来执行命令编排的实例方法的流程图。在此实例中,过程开始于s502:由处理器(例如图1中的处理器250)从第一命令(例如图3a及3b中的命令310、370)获得第一地址信息(例如图3a及3b中的逻辑地址信息312、372)。
48.在s504中,在一些实施例中,处理器可基于第一地址信息读取元数据表的第一条目(例如图3a中的元数据映射330的条目332)。在一些实施例中,元数据表可存储于易失性存储器(例如图1中的dram 110)中。
49.在s506中,在一些实施例中,处理器可基于元数据表的第一条目(例如图3a中闪存地址空间362中的地址342或系统执行标签地址空间364中的地址344)确定对应于第一地址信息的第一元数据页面是否正由控制器处理。在一些实施例中,在确定第一元数据页面是否正由控制器处理时(例如,当条目含有图3b中系统执行标签地址空间364中的地址344时),处理器可基于第一条目(例如图3a及3b中的条目332)确定第一地址(例如图3a及3b中的地址342或地址344),响应于确定第一地址(例如图3a中的地址342)在非易失性存储器的地址空间(例如图3a及3b中的闪存地址空间362)内而确定第一元数据页面(例如图3a中的元数据页面1(363))未被处理,且响应于确定第一地址(例如图3b中的地址344)在非易失性存储器的地址空间(例如在图3b中的闪存地址空间362外的系统执行标签地址空间)外而确定第一元数据页面正被处理。
50.在一些实施例中,多个处理状态中的每一者可与在非易失性存储器的地址空间外的相应地址空间(例如图4中的包装标签地址空间412、系统执行标签地址空间410、修整标签地址空间408、写入高速缓存标签地址空间406、读取高速缓存标签地址空间404)相关联。在确定第一元数据的第一处理状态时,处理器可基于第一条目(例如图3b中的条目332)确定第一地址(例如图3b中的地址344)且确定第一地址(例如图3b中的地址344)在与第一处理状态相关联的地址空间(例如图3b中的系统执行标签地址空间364)内。
51.在s508中,在一些实施例中,响应于确定对应于第一地址信息的第一元数据页面正被处理(例如,当条目含有图3b中系统执行标签地址空间364中的地址344时),处理器可基于元数据表的第一条目(例如图3b中的元数据映射330的条目332)确定多个处理状态中第一元数据页面的第一处理状态(例如由图3b中的执行标签365所指示那样加载的状态)且根据第一元数据页面的第一处理状态处理第一命令(例如,将来自图3b中的命令2的请求添加到队列366)。在一些实施例中,多个处理状态(例如由图4中所展示的多个标签指示的状态)可包含用于读取操作的加载状态(例如图4中的exectag)、用于修整操作的加载状态(例如图4中的trimtag)、用于包装操作的加载状态(例如图4中的packtag)、高速缓存中的页面状态(例如图4中的rdcachetag)或高速缓存中的脏页面状态(例如图4中的wrcachetag)中的至少一者。
52.在一些实施例中,处理器可为第一元数据页面(例如图3a中的元数据页面1(363))创建第一请求队列(例如图3a中的队列366)。响应于确定第一元数据页面正被处理,处理器可将对应于第一命令(例如图3b中的命令2(370))的请求(例如图3b中的请求368)添加到第一队列(例如图3b中的列队366)。处理器可确定第一元数据页面的当前处理是否完成。响应于确定第一元数据页面的当前处理已完成,处理器可从第一队列(例如图3b中的队列366)移除请求且通过读取第一元数据页面(例如图3b中的元数据页面1(363))来处理经移除请求(例如图3b中的请求368)。处理器可确定第一元数据页面的当前处理是否完成。响应于确定第一元数据页面的当前处理已完成,处理器可确定第一队列是空的。响应于确定第一队列是空的,处理器可用指示第一元数据页面的位置(例如图3b中元数据页面1(363)的地址)的非易失性存储器的地址更新元数据表的第一条目(例如图3b中元数据映射330的条目
332)。在一些实施例中,第一队列可为链表(例如图3b中队列366的链表实施方案)。
53.在s510中,在一些实施例中,响应于确定对应于第一地址信息的第一元数据页面未被处理(例如,当条目332含有图3a中闪存地址空间362中的地址342时),处理器可基于元数据表的第一条目(例如含于图3a中的条目332中的地址342)从非易失性存储器读取第一元数据页面363。
54.提供以上描述来使所属领域的技术人员能够实践本文中所描述的各个方面。所属领域的技术人员将易于明白对这些方面的各种修改,且本文中所定义的一般原理可应用于其它方面。因此,权利要求书不希望受限于本文中所展示的方面,而是应被给予与书面权利要求书一致的全范围,其中单数元件的指涉不希望意谓“有且仅有一个”(除非特别说明),而是意谓“一或多个”。除非另外特别说明,否则术语“一些”是指一或多个。所属领域的一般技术人员已知或以后会知道的整个以上描述中所描述的各个方面的元件的所有结构及功能等效物通过引用的方式明确并入本文中且希望由权利要求书涵盖。此外,本文中所公开的任何内容不希望公之于众,无论此公开是否在权利要求书中明确叙述。任何权利要求元件不应被解释为构件+功能,除非元件使用短语“用于

的构件”明确叙述。
55.应理解,所公开的过程中步骤的特定顺序或层次是说明性方法的实例。基于设计偏好,应理解,过程中步骤的特定顺序或层次可重排,同时保持在以上描述的范围内。随附方法权利要求依样本顺序呈现各个步骤的元素,且不意谓受限于所呈现的特定顺序或层次。
56.提供所公开的实施方案的以上描述来使所属领域的技术人员能够制造或使用所公开的标的物。所属领域的技术人员将易于明白对这些实施方案的各种修改,且可在不背离以上描述的精神或范围的情况下将本文中所定义的一般原理应用于其它实施方案。因此,以上描述不希望受限于本文中所展示的实施方案,而是应被给予与本文中所公开的原理及新颖特征一致的最广范围。
57.所说明及描述的各个实例仅作为实例供于说明权利要求书的各种特征。然而,关于任何给定实例展示及描述的特征不一定限于相关联实例,而是可与所展示及描述的其它实例一起使用或组合。此外,权利要求书不希望受任何一个实例限制。
58.以上方法描述及过程流程图仅供为说明性实例且不希望要求或暗示各个实例的步骤必须依所呈现的顺序执行。所属领域的技术人员将了解,上述实例中步骤的顺序可依任何顺序执行。例如“之后”、“接着”、“接下来”等的字词不希望限制步骤的顺序;这些字词仅用于通过方法的描述引导读者。此外,单数权利要求元件的任何指涉(例如,使用冠词“一”或“所述”)不应被解释为将元件限制为单数。
59.结合本文中所公开的实例描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚说明硬件与软件的此可互换性,各种说明性组件、块、模块、电路及步骤已在上文大体上根据其功能进行描述。此功能实施为硬件还是软件取决于施加于整个系统的特定应用及设计约束。技术人员可针对每一特定应用依不同方式实施所描述的功能,但此类实施决策不应被解译为导致背离本公开的范围。
60.用于实施结合本文中所公开的实例描述的各种说明性逻辑、逻辑块、模块及电路的硬件可用经设计以执行本文中所描述的功能的通用处理器、dsp、asic、fpga或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合实施或执行。通用处理器可
为微处理器,但在替代例中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如dsp与微处理器的组合、多个微处理器、与dsp核心结合的一或多个微处理器或任何其它此配置。替代地,一些步骤或方法可由专针对给定功能的电路系统执行。
61.在一些示范性实例中,所描述的功能可以硬件、软件、固件或其任何组合实施。以软件实施的功能可作为一或多个指令或代码存储于非暂时性计算机可读存储媒体或非暂时性处理器可读存储媒体上。本文中所公开的方法或算法的步骤可体现于可驻留于非暂时性计算机可读或处理器可读存储媒体上的处理器可执行软件模块中。非暂时性计算机可读或处理器可读存储媒体可为可由计算机或处理器存取的任何存储媒体。例如但不限于,此类非暂时性计算机可读或处理器可读存储媒体可包含ram、rom、eeprom、闪存、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置或可用于以指令或数据结构的形式存储期望程序码且可由计算机存取的任何其它媒体。如本文中所使用,磁盘及光盘包含压缩磁盘(cd)、激光盘、光盘、数字多功能光盘(dvd)、软盘及蓝光光盘,其中磁盘通常磁性地复制数据,而光盘利用激光来光学复制数据。以上的组合也包含于非暂时性计算机可读及处理器可读媒体的范围内。另外,方法或算法的操作可作为代码及/或指令的一个或任何组合或集合驻留于可并入到计算机程序产品中的非暂时性处理器可读存储媒体及/或计算机可读存储媒体上。
62.提供所公开实例的以上描述来使所属领域的技术人员能够制造或使用本公开。所属领域的技术人员将易于明白对这些实例的各种修改,且可在不背离本公开的精神或范围的情况下将本文中所定义的一般原理应用于一些实例。因此,本公开不希望受限于本文中所展示的实例,而是应被给予与随附权利要求书及本文中所公开的原理及新颖特征一致的最广范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1