基于存储业务模式检测的改进的存储器装置性能的制作方法

文档序号:33699203发布日期:2023-03-31 17:40阅读:31来源:国知局

1.本公开的实施例大体上涉及存储器子系统,且更具体地说,涉及基于存储业务模式检测的改进的存储器装置性能。


背景技术:

2.存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可以例如是非易失性存储器装置和易失性存储器装置。一般来说,主机系统可以利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
附图说明
3.根据下文给出的实施方式且根据本公开的各种实施例的附图将更加充分地理解本公开。
4.图1示出根据本公开的一些实施例的包含存储器子系统的实例计算系统。
5.图2为示出根据本公开的一些实施例的命令序列所针对的lba的图表。
6.图3示出根据本公开的一些实施例的实例虚拟块。
7.图4为根据本公开的一些实施例的用于基于存储业务模式检测的改进的存储器装置性能的实例方法的流程图。
8.图5为本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
9.本公开的各种实施例涉及用于基于存储业务模式检测的改进的存储器装置性能的存储器子系统。存储器子系统可以是存储装置、存储器模块或存储装置和存储器模块的混合。下文结合图1来描述存储装置和存储器模块的实例。一般来说,主机系统可利用存储器子系统,所述存储器子系统包含一或多个存储器装置,例如存储数据的存储器装置。主机系统可以提供待存储于存储器子系统处的数据,且可以请求从存储器子系统检索数据。
10.主机系统可将存取请求(例如,写入命令、读取命令)发送到存储器子系统,以便将数据存储在存储器子系统的存储器装置上以及从存储器装置读取数据。如由主机请求指定,待读取或写入的数据在下文中被称作“主机数据”或“用户数据”。主机请求可包含主机数据的逻辑地址信息(例如,逻辑块地址(lba)、名字空间),其为主机系统与主机数据关联的位置。主机系统可实施文件系统以将主机数据/用户数据存储在存储器子系统中。如本文中所使用,文件系统可包括实施以控制存储数据和/或从存储器子系统检索数据的方式的软件。
11.用于特定文件系统的写入序列可包含用于存储元数据的存储器的一部分的写入命令。对逻辑块地址(lba)的写入命令可存储在高速缓存器中。周期性地,存储到高速缓存器的数据可提交到存储器子系统的存储器装置。一些系统(例如,第四扩展(ext4)文件系统)阻止对存储装置的操作,直到从高速缓存器到存储器装置的数据和相关元数据移动成
功完成为止。无法在存储器子系统处处理命令可能导致用户所感知的系统滞后。举例来说,对文件系统的一些存取可能暂时不可用(例如,被阻止),直到可能被视为系统关键的特定操作成功完成为止。这类操作可包含对特定元数据区域的写入,所述特定元数据区域可能与设计成例如维持数据完整性的日志提交操作或其它操作相关联。因此,当服务特定元数据写入时,用于处理用户级命令的文件系统的不可用性可被视为系统滞后,这可降低用户体验。
12.本公开的各种实施例解决以上和其它缺陷。举例来说,数个实施例可提供针对与文件系统相关联的元数据区域的改进的操作时延,由此改进用户体验。举例来说,多个实施例可包含基于输入/输出(io)模式识别特定文件系统。还可识别用于存储文件系统的元数据的存储器装置的特定区域(例如,lba范围),且可采取动作以便改进对所识别元数据区域的存取的时延。举例来说,存储器装置的块可保留用于元数据区域,可针对元数据区域实施垃圾收集策略,和/或对元数据区域的存取可优先于各种其它操作,例如包含垃圾收集操作的后台和/或内务处理操作。
13.如本文中所使用,元数据是指描述不同数据的数据。元数据可包含描述文件结构的数据和/或描述文件系统的数据。举例来说,元数据可用于数据完整性。元数据可包含可描述内部文件系统结构(例如,ext4日志)的专用数据结构。元数据区域描述用于存储元数据的存储器装置的一部分(例如,lba范围)。
14.本文中的图式遵循编号规定,其中第一一或多个数字对应于图式编号,且剩余的数字标识图式中的元件或组件。可通过使用类似数字来识别不同图之间的类似元件或组件。举例来说,105可表示图1中的元件“05”,且类似元件可表示为图3中的305。可使用连字符和额外数字或字母指代图式内的类似元件。参见例如图2中的元件226-1、...、226-5。如将了解,可添加、交换和/或去除本文中的各种实施例中展示的元件,以提供本公开的数个额外实施例。另外,如应了解,图中提供的元件的比例和相对标度意图说明本发明的某些实施例,并且不应以限制性意义理解。
15.图1示出根据本公开的一些实施例的包含存储器子系统103的实例计算系统100。存储器子系统103可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置106)、一或多个非易失性存储器装置(例如,存储器装置105),或其组合。
16.存储器子系统103可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态硬盘(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡,以及硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so-dimm),和各种类型的非易失性双列直插式存储器模块(nvdimm)。
17.计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(iot)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
18.计算系统100可包含耦合到一或多个存储器子系统103的主机系统102。在一些实施例中,主机系统102耦合到不同类型的存储器子系统103。图1示出耦合到一个存储器子系统103的主机系统102的实例。如本文所用,“耦合到”或“与...耦合”一般是指组件之间的连
接,所述连接可以是间接通信连接或直接通信连接(例如,无中间组件),无论有线还是无线,包含例如电连接、光学连接、磁性连接等。
19.主机系统102可包含处理器芯片组和由所述处理器芯片组执行的软件栈。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,nvdimm控制器)和存储协议控制器(例如,外围组件互连高速(pcie)控制器、sata控制器)。主机系统102使用存储器子系统103,例如,将数据写入到存储器子系统103以及从存储器子系统103读取数据。
20.主机系统102可经由物理主机接口耦合到存储器子系统103。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、pcie接口、通用串行总线(usb)接口、光纤通道、串行附接scsi(sas)、小型计算机系统接口(scsi)、双数据速率(ddr)存储器总线、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)、开放式nand快闪接口(onfi)、双数据速率(ddr)、低功率双数据速率(lpddr),或任何其它接口。物理主机接口可用于在主机系统102与存储器子系统103之间传输数据。在存储器子系统103通过pcie接口与主机系统102耦合时,主机系统102可进一步利用nvm快速(nvme)接口来存取存储器组件(例如,存储器装置105)。物理主机接口可提供用于在存储器子系统103与主机系统102之间传递控制、地址、数据和其它信号的接口。图1将存储器子系统103示出为实例。一般来说,主机系统102可经由同一通信连接、多个单独的通信连接和/或通信连接的组合来存取多个存储器子系统。
21.存储器装置105、106可包含不同类型的非易失性存储器装置105和/或易失性存储器装置106的任何组合。易失性存储器装置(例如,存储器装置106)可以但不限于是随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
22.非易失性存储器装置(例如,存储器装置105)的一些实例包含与非(nand)型快闪存储器和就地写入存储器(write-in-place memory),例如三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand型快闪存储器包含例如二维nand(2d nand)和三维nand(3d nand)。
23.存储器装置105中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(slc)每单元可存储一个位。其它类型的存储器单元,例如双层级单元(blc)、三层级单元(tlc)、四层级单元(qlc)和五层级单元(plc)每单元可存储多个位,且可被称为多层级单元(mlc)。在一些实施例中,存储器装置105、106中的每一个可包含一或多个存储器单元阵列,例如slc、blc、tlc、qlc、plc或其任何组合。在一些实施例中,特定存储器装置可以包含存储器单元的slc部分,以及blc部分、tlc部分、qlc部分或plc部分。存储器装置105、106的存储器单元可分组为页,所述页可指用以存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,nand),页可被分组以形成块。
24.虽然描述例如3d交叉点非易失性存储器单元阵列和nand型存储器(例如,2d nand、3d nand)和3d交叉点非易失性存储器单元阵列等非易失性存储器装置105,但存储器装置105可基于任何其它类型的非易失性存储器或存储装置、相变存储器(pcm)、自选存储
器、其它基于硫族化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、“或非”(nor)快闪存储器,以及电可擦除可编程只读存储器(eeprom)。
25.存储器子系统控制器104(或简称为控制器104)可与存储器装置105通信以执行操作,例如在存储器装置105处读取数据、写入数据或擦除数据,及其它这类操作。存储器子系统控制器104可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬编码)逻辑的数字电路系统以执行本文所描述的操作。存储器子系统控制器104可为微控制器、专用逻辑电路(例如现场可编程门阵列(fpga)、专用集成电路(asic)等),或其它合适的处理器。
26.存储器子系统控制器104可包含处理器107(例如,处理装置),其配置成执行存储在本地存储器(例如,未展示)中的指令。存储器子系统控制器104的本地存储器可包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统103的操作(包含处置存储器子系统103与主机系统102之间的通信)的各种过程、操作、逻辑流程和例程。
27.在一些实施例中,本地存储器可包含存储器寄存器,其存储存储器指针、获取的数据等。举例来说,本地存储器还可包含用于存储微码的只读存储器(rom)。虽然图1中的实例存储器子系统103已示出为包含存储器子系统控制器104,但在本公开的另一实施例中,存储器子系统103不包含存储器子系统控制器104,而是可依靠外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
28.一般来说,存储器子系统控制器104可从主机系统102接收命令或操作,且可将命令或操作转换成指令或适当命令以实现对存储器装置105和/或存储器装置106的所要存取。存储器子系统控制器104可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置105相关联的逻辑地址(例如,逻辑块地址(lba)、名字空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器104可进一步包含主机接口电路系统以经由物理主机接口与主机系统102通信。主机接口电路系统可将从主机系统接收的命令转换成命令指令以存取存储器装置105和/或存储器装置106,以及将与存储器装置105和/或存储器装置106相关联的响应转换成用于主机系统102的信息。
29.存储器子系统103还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统103可包含高速缓存器或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器104接收地址且对地址进行解码以存取存储器装置105。在各种实例中,本地存储器可包括可结合存储器装置105/106利用的高速缓存器111。
30.在一些实施例中,存储器装置105包含本地媒体控制器110,其结合存储器子系统控制器104操作以对存储器装置105的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器104)可在外部管理存储器装置105(例如,对存储器装置105执行媒体管理操作)。
31.在各种实例中,存储器子系统103可为受管理nand(mnand)装置,其中外部控制器(例如,104)与一或多个nand裸片(例如,105)一起封装。在mnand装置中,外部控制器104可处置例如媒体管理的高层级存储器管理功能,且本地媒体控制器110可管理较低层级存储
器过程中的一些,例如何时执行编程验证操作、blc、tlc、qlc、plc编程操作和/或校准等。
32.存储器子系统控制器104还可包含快闪转换层(ftl)108。ftl 108可负责各种功能。举例来说,ftl 108可执行地址转换(例如,逻辑到物理)、垃圾收集、ecc和耗损均衡,以及各种其它功能。
33.存储器子系统控制器104还可包含检测组件109。检测组件109可包括经配置以执行本文中所描述的实例的asic。虽然检测组件109可实施为电路系统(例如,asic),但检测组件109也可实施为固件和/或软件。举例来说,固件和/或软件可包含指令,所述指令在由存储器子系统控制器104执行时可使存储器子系统控制器104执行本文中所描述的实例,例如由图2、3、4描述的实例。虽然检测组件109展示为与ftl 108分离实施,但检测组件109可以是ftl 108的一部分。检测组件109可检测存储器装置105/106的元数据区域。元数据区域的类型可取决于特定文件系统而变化,但可包含例如日志区域。检测组件109还可确定与对存储器装置105/106的元数据区域的写入相关联的特定文件系统101。
34.如本文所使用,文件系统101控制如何存储和检索数据。文件系统101可控制数据在存储于存储器子系统103中时如何分离。文件系统102可控制数据的命名和/或数据的部分(例如,分离的部分)。文件系统102可控制用于管理存储于存储器子系统103中的数据的结构和逻辑规则。文件系统101可为例如网络文件系统、数据库文件系统、事务文件系统和/或移动装置文件系统。移动文件系统可为例如第四扩展(ext4)文件系统或快闪友好型文件系统(f2fs)。
35.检测组件109可进一步检测用于存储器装置105/106的元数据区域和/或用户区域的io模式。如本文中所使用,互换地使用术语检测、识别和确定。
36.检测组件109可例如基于检测到的io模式确定与文件系统相关联的元数据区域(例如,lba范围)的文件系统类型和/或位置。举例来说,可监测(例如,跟踪)io模式的强制单元存取命令,且在文件系统元数据区域通常经由强制单元存取而存取的条件下使用所述强制单元存取命令来识别元数据区域。举例来说,文件系统通常在与存取元数据区域相关联的特定可识别模式中采用强制单元存取命令。因此,强制单元存取命令还可用于检测特定io模式。如本文中所使用,强制单元存取命令为写入命令,所述写入命令的对应数据绕过写入高速缓存器(例如,高速缓存器111)而直接写入到存储器装置。
37.在各种实例中,ftl 108可经配置以响应于识别元数据区域(例如,ext4日志区域)而实施对存储器装置103的性能的改进。举例来说,ftl 108可保留用于日志区域的存储器装置105、106的一或多个块。ftl 108可将存储器装置105、106的保留块的存储器单元配置为单层级单元(slc)。ftl 108还可实施垃圾收集策略。ftl 108可经由垃圾收集器112实施垃圾收集策略。垃圾收集器112被示出为实施于ftl 108中,但可实施于ftl 108外部。mtf 108可针对日志区域实施垃圾收集策略。针对日志区域实施的垃圾收集策略可以不同于针对存储器装置105、106的不同区域实施的垃圾收集策略。
38.ftl 108还可使到日志区域的命令相比于到存储器装置105、106的不同区域的不同命令优先。ftl 108可存取命令队列113。ftl 108可存取命令队列113以选择和优先化存储于命令队列113中的命令。命令队列113可将传入命令存储到存储器装置105、106。图3中进一步描述垃圾收集器112和命令队列113。
39.图2为示出根据本公开的一些实施例的命令序列所针对的lba的图表。在图2中,x
轴表示时间且y轴表示对应于存储器装置的lba空间。如图2中所展示,lba空间包含日志区域220。lba空间的剩余部分可用于例如用户数据(例如,用户lba)、额外日志区域和/或其它元数据。
40.日志区域220可为用于跟踪尚未提交以供存储的文件系统改变的日志文件系统的专用元数据区域。举例来说,日志区域220可存储用户lba的指针和/或日志区域220的指针。日志区域220还可被称作日志220。日志220可实施为循环缓冲器。作为实例,与图2相关联地描述的日志220可与例如用于linux的扩展4(ext4)文件系统的日志文件系统的日志块装置相关联。虽然与图2相关联地描述的实例涉及ext4文件系统,但实施例不限于特定类型的日志记录文件系统。
41.图2示出多个写入命令223、日志写入命令224-1、224-2、224-3和224-4(统称为日志写入命令224),以及日志提交命令225-1、225-2、225-3和225-4(统称为日志提交225)。如本文中所使用,日志写入命令(例如,224)是指涉及日志区域(例如,220)的写入命令,而常规写入命令(例如,223)是指涉及用户lba空间的写入命令。日志提交命令225是指刷新命令226后接(对日志区域220的)强制单元存取命令的序列。强制单元存取命令是指写入命令,所述写入命令的对应数据绕过写入高速缓存器而直接写入到存储器装置。因此,在一连串日志写入224的结束处使用的日志提交225涉及刷新命令之后的强制单元存取,使得在不利用存储器子系统的高速缓存器的情况下,对应于强制单元存取的数据直接写入到存储器装置。相比于强制单元存取,日志写入命令224和常规写入命令223在(经由刷新命令)写入到存储器装置之前写入到存储器子系统的高速缓存器(例如,写入高速缓存器)。高速缓存器可实施于存储器子系统(例如,图1中展示的103)内的各种位置中。举例来说,高速缓存器可位于例如存储器装置105、106的存储器装置上和/或位于控制器104上的本地存储器中,以及其它位置。
42.文件系统日志(例如,ext4日志)可在特定系统利用期间具有与其相关联的可识别(例如,特定)业务模式(关于io业务)。系统的稳固性和性能可对日志区域220的性能敏感。如果存储装置可在快速执行和可靠数据存储的情况下处置到日志区域220的业务,那么用户体验可能受益。由于一或多个日志(例如,220)的位置对于文件系统来说为未知的,所以识别日志区域可能是有利的,以便提高系统性能。
43.作为实例,考虑用户更新数据库(例如,在用户插入新电话号码、制作新照片、使其账号与云服务同步等等时),其可能涉及日志区域220中的至少两个或三个写入操作,这可被称作日志的日志(journal of the journal)。根据数个实施例,在确定日志区域(例如,220)的位置后,存储器子系统可检测对日志区域220的存取且可用以加速检测到的存取的执行(相较于将执行存取的速度,其未被识别为涉及日志区域),由此提供改进的数据库性能和/或用户体验。另外,由于通过特定文件系统发布到存储装置的写入业务为存储装置的整个使用期限中的总写入业务的不变百分比,所以通过在特定底层装置区域中(例如,在nand slc块中)含有这一业务,存储装置的总体耐久性可增强。
44.举例来说,文件系统利用特定协议将命令提供到存储器子系统,所述特定协议例如嵌入式多媒体控制器(emmc)协议或小型计算机系统接口(scsi)协议。scsi协议可与例如通用快闪存储(ufs)装置和/或固态硬盘(ssd)相关联。
45.由于特定文件系统命令为协议相关的,且文件系统很可能不了解底层存储装置
(例如,emmc、ufs、ssd等),所以本文中所描述的各种实例是指通常为读取、写入、刷新、强制单元存取、读取元数据、写入元数据、丢弃等文件系统命令。表1提供为协议特定命令/标志到通用文件系统命令的实例映射。举例来说,如表1中展示,可使用scsi协议将读取命令提供为read_10命令。可使用scsi协议将写入命令提供为write_10命令。可使用scsi协议将强制单元存取命令提供为具有fua标签(例如,标志)的write_10。与用户文件元数据有关的写入命令可使用scsi协议提供为使用系统数据标签(例如,标志)的write_10命令或使用emmc协议提供为具有data_tag标签的cmd23或cmd25。如本文中所使用,到元数据区域的读取或写入命令可包括具有例如data_tag或系统数据标签(其可被称作数据标签)的标签的命令。
46.表1
[0047][0048]
ext4日志区域220可在规则系统利用期间具有特定业务。在系统的常规利用期间,可利用多个标准存取日志区域220。举例来说,第一标准可包含以lba顺序次序执行日志写入命令。如本文中所使用,lba顺序次序描述位置n处及由m个lba组成的日志写入后接n+m位置处的另一日志写入。举例来说,到日志区域220的第一写入命令的结束lba可邻近于到日志区域220的第二写入命令的开始lba。在第一lba与第二lba之间不存在第三lba的情况下,如果第一lba后接第二lba,那么lba(例如,第一lba和第二lba)可相邻。
[0049]
第二标准可包含到日志区域220的一连串常规写入命令(例如,日志写入命令224)将以后接强制单元存取命令的刷新命令(例如,刷新命令226-1、226-2、226-3、226-4和226-5)结束。刷新命令(例如,226)后接强制单元存取命令的这一特定序列可被称作日志提交(例如,225)。应注意,日志提交命令225表示到日志区域220的强制单元存取命令和紧接在强制单元存取前的对应个别刷新命令226的组合。如本文中所使用,刷新命令是指执行以将数据从高速缓存器移动到存储器装置的命令。举例来说,日志写入命令224可能涉及写入到高速缓存器。刷新命令可用于将数据从高速缓存器提交到存储器装置。强制单元存取命令涉及将对应于日志提交225的数据在不首先写入到高速缓存器的情况下(例如,绕过写入高速缓存器)直接存储到存储器装置。
[0050]
可基于第一标准和/或第二标准识别日志区域220(例如,可确定特定lba范围)。举例来说,可通过确定写入命令正以顺序lba次序执行来识别日志区域220。还可基于刷新命令后接强制单元存取命令而识别日志区域220。可通过使用标签(例如,rel_write和/或fua标签)来识别强制单元存取命令。
[0051]
图2展示日志区域220的顺序和循环性质以及用于存取日志区域220的命令的特定序列。在各种实施例中,每一日志写入命令224(或一连串日志写入命令)后接刷新命令和强制单元存取命令。如上文所提及,刷新命令226后接强制单元存取命令的特定序列被称作个
别日志提交命令225。举例来说,日志写入命令224-1依序后接刷新命令226-1和对应于日志提交命令225-1的强制单元存取。如图2中展示,在日志区域220内,以顺序次序执行写入命令。举例来说,对应于日志写入224-2的开始lba邻近于对应于日志提交225-1的结束lba。也就是说,对应于日志提交225-1的强制单元存取的结束lba紧接在对应于日志写入224-2的开始lba之前。
[0052]
在各种实施例中且如图2中展示,日志区域220可实施为循环缓冲器,例如使得将开始和结束lba被视为相邻lba。举例来说,日志提交命令225-3的结束lba对应于日志区域220的结束lba,且日志写入命令224-4的开始lba对应于日志区域220的开始lba。在各种实例中,由于日志写入命令224-4邻近于日志提交命令225-4且日志提交命令225-4邻近于日志写入命令224-1,所以可将日志写入命令224-4视为针对日志提交224-3依序出现。如本文中进一步描述,根据本公开的多个实施例,与日志区域220相关联的存取模式的循环性质可用于识别日志区域220在存储器装置的lba空间内的特定位置(例如,lba范围)。
[0053]
可通过可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑来执行用于识别日志区域的方法。在一些实施例中,方法由图1的检测组件109执行。尽管以特定顺序或次序展示,但除非另外规定,否则可修改过程的次序。因此,所示出的实施例应仅理解为实例,且所示出的过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实施例中可省略一或多个过程。因此,并非每一实施例中都需要所有操作。其它过程流程是可能的。
[0054]
方法包含(例如,在存储器子系统处从主机)接收命令。方法包含确定命令是否为写入命令。如果接收到的命令不是写入命令,那么执行所述命令。
[0055]
如果接收到的命令是写入命令,那么方法包含确定接收到的命令是否连续或与候选日志区域(例如,日志区域220)重叠。如本文中所使用,候选日志区域描述可能成为日志区域的lba范围。可跟踪到候选日志区域的存取命令以确定候选日志区域是否足以用于将候选日志区域视为日志区域。关于候选日志区域的重叠描述接收到的命令的lba范围是否在候选日志区域的lba范围内。重叠还可描述接收到的命令的lba是否与候选日志区域的lba连续。举例来说,日志写入命令224-4并不与可包含例如日志写入命令224-1、224-2和224-3的lba的候选日志区域重叠。日志写入命令224-3可与包含例如日志写入命令224-1和224-2的lba的候选日志区域重叠。
[0056]
如果接收到的命令并不与候选日志区域重叠,那么可审查接收到的命令以确定接收命令是否为强制单元存取命令。方法可确定接收到的命令是否包括标签或与标签相关联。可审查与接收到的命令相关联的标签以确定标签是否为rel_write标签和fua标签中的一个。如果与接收命令相关联的标签为rel_write标签和fua标签中的一个,那么接收到的命令可为强制单元存取命令。如果接收到的命令不为强制单元存取命令,那么可执行所述命令。
[0057]
虽然方法可包含确定接收到的方法是否与候选日志区域重叠以及确定接收到的命令是否为强制单元存取命令,但方法可以不同次序执行两种确定或仅执行确定中的一个。举例来说,方法可在确定接收到的命令是否与候选日志区域重叠之前确定接收到的命令是否为强制单元存取命令。替代地,方法可仅执行确定中的一个,所述确定包含确定接收
到的命令是否与候选日志区域重叠或确定接收到的命令是否为强制单元存取命令。
[0058]
如果接收到的命令与候选日志区域重叠或如果接收到的命令为强制单元存取命令,那么方法可包含添加或合并候选日志区域列表。如果接收到的命令并不与候选日志区域重叠且为强制单元存取命令,那么可将新候选日志区域添加到候选日志区域列表中。如果接收到的命令与候选日志区域重叠,那么接收到的命令可与候选日志区域合并。如果接收到的命令的lba与候选日志区域的lba合并(例如,添加到其中),那么命令可与候选日志区域合并。
[0059]
可作出关于接收到的命令和/或新创建的候选日志区域是否与已存在候选日志区域相接的确定。如果新创建的候选日志区域或接收到的命令的lba邻近于已存在候选日志区域的lba,那么接收到的命令或新创建的候选日志区域可为连续的。
[0060]
如果接收到的命令或新创建的候选日志区域与已存在候选日志区域相接,那么计数器可针对已存在候选日志区域递增。可将计数器称作命中计数器。计数器可表示已存在候选日志区域的使用。举例来说,以连续方式使用的候选日志区域越多,那么候选日志区域越有可能实际上是日志区域。计数器可针对已存在候选日志区域递增。如果接收到的命令或新创建的候选日志区域不与已存在候选日志区域相接,那么方法可包含确定候选日志区域的计数器是否大于阈值。如果计数器大于阈值,那么方法可将接收到的命令标记为日志写入命令和/或可将候选日志区域标记为日志区域。将接收到的命令标记为日志写入命令和/或将候选日志区域标记为日志区域可提供加快日志写入命令的执行以限制存储器装置、存储器子系统和/或计算环境的停滞的能力。方法可接着通过执行接收到的命令来继续进行。
[0061]
图3示出根据本公开的一些实施例的实例虚拟块334。图3描绘多个存储器装置305-1、305-2、305-3、305-4。存储器装置305-1、305-2、305-3、305-4可统称为存储器装置305。
[0062]
在各种实例中,存储器装置305-1、305-2、305-3、305-4中的每一个可为单独的nand装置。举例来说,存储器装置305-1可为第一nand装置,存储器装置305-2可为第二nand装置,存储器装置305-3可为第三nand装置,且存储器装置305-4可为第四nand装置。存储器装置305可为受管理nand(mnand)装置,其包括第一nand装置、第二nand装置、第三nand装置、第四and装置和控制器以及其它组件。
[0063]
存储器装置305-1、305-2、305-3、305-4(例如,nand装置)可划分成被称作块的范围。存储器装置305-1、305-2、305-3、305-4中的一或多个可划分成虚拟块334。虚拟块334可包括来自存储器装置305-1、305-2、305-3、305-4中的每一个的相同块或来自存储器装置305-1、305-2、305-3、305-4中的每一个的不同块。举例来说,虚拟块334可包括来自存储器装置305-1的块335-1、来自存储器装置305-2的块335-2、来自存储器装置305-3的块335-3和来自存储器装置305-4的块335-4。尽管图3中展示四个存储器装置305-1、305-2、305-3、305-4,但虚拟块334可包括来自多于四个存储器装置的块或来自少于四个存储器装置的块。来自存储器装置305-1、305-2、305-3、305-4中的每一个的第一块的联合可被称为第一虚拟块(例如,虚拟块334)。
[0064]
在各种情况下,虚拟块334的存储器单元可被配置为slc、blc、tlc、qlc或plc。鉴于对到存储器装置305的日志区域的业务的处置可对存储器装置305的使用和/或对包括存储
器装置的系统的使用具有影响,ftl可经配置以保留用于日志业务的一或多个虚拟块,包含虚拟块334。如本文所使用,日志业务描述到日志区域的业务,包含到日志区域的存取命令。
[0065]
每当检测到日志写入命令时,可将日志写入命令引导到保留用于日志区域的虚拟块334。可检测如图2中所描述的日志写入命令。通过保留用于日志区域的虚拟块(例如,虚拟块334),可相比于在不保留一或多个虚拟块的情况下实施的日志区域增强日志区域的写入性能。与其它种类的虚拟块相比,使用slc实施的虚拟块334可提供较好写入处理量。如本文所使用,处理量描述在写入数据或读取数据(例如,存取数据)时的效率。
[0066]
在各种实例中,可监测传入命令以确定存储器装置305的日志区域。命令可传入到存储器装置305。传入命令可包括混合业务331。混合业务331包括日志业务332和非日志业务333。非日志业务333(例如,“普通”业务)可包含到保留用于用户数据、操作系统数据和/或不同类型的数据的存储器装置305的区域的存取命令。可识别日志业务332(例如,日志命令)且将其用于确定存储器装置305的日志区域。响应于确定日志区域,可将对日志区域的后续写入引导到保留用于对日志区域的写入的slc虚拟块(例如,虚拟块334)。
[0067]
可通过确定到开始逻辑块地址(lba)和结束lba的传入命令是否为写入命令来监测混合业务331。响应于确定传入命令为写入命令,可作出关于传入命令是否为强制单元存取命令的确定。响应于确定写入命令为强制单元存取命令,可响应于开始lba到结束lba被存取阈值次数而将开始lba到结束lba标记为存储器装置的日志区域。日志区域可以是ext4文件系统日志区域。因而,虚拟块334可具有日志区域的开始lba和结束lba。
[0068]
在各种实例中,ftl可包括垃圾收集器(例如,图1中的垃圾收集器112)。垃圾收集器为可用于实施垃圾收集策略的硬件或固件。垃圾收集策略定义如何实行存储器装置305的垃圾收集。垃圾收集器可利用启发法来确定选择并清理哪些虚拟块。如本文所使用,清理虚拟块334可包含擦除存储于包括虚拟块334的存储器单元中的数据。
[0069]
在各种情况下,垃圾收集器可实施特定针对于虚拟块334的垃圾收集策略。可响应于保留用于日志区域的虚拟块334而实施特定针对于虚拟块334的垃圾收集策略。由用于虚拟块334的垃圾收集器实施的垃圾收集策略可避免或延迟对虚拟块334的清理操作。
[0070]
在虚拟块334可能不如其它虚拟块那样频繁需要清洁的情况下,针对虚拟块334实施的垃圾收集策略可延迟或避免清理操作。由于到日志区域的业务的性质,虚拟块334的存储器单元被覆写。鉴于循环地写入日志区域,在不需要实施清理操作的情况下清理虚拟块334,或独立于以延迟方式实施的清理操作而清理虚拟块。举例来说,在循环地写入日志区域的情况下,可以设定的时间间隔重写存储于日志区域中的数据。以设定的时间间隔重写数据可构成存储数据的存储器单元的清理。因而,可重写(例如,清理)日志区域的存储器单元,而无需执行由垃圾收集器使用垃圾策略实施的清理操作。
[0071]
在许多实例中,可针对存储器装置305-1、305-2、305-3、305-4的块335-1、335-2、335-3、335-4中的每一个实施相同垃圾收集策略。针对存储器装置305-1、305-2、305-3、305-4的块335-1、335-2、335-3、335-4中的每一个实施相同垃圾收集策略可包含独立地针对块335-1、335-2、335-3、335-4中的每一个实施相同垃圾收集策略,而不是作为整体针对块335-1、335-2、335-3、335-4实施相同垃圾收集策略。还可针对存储器装置305-1、305-2、305-3、305-4的块335-1、335-2、335-3、335-4中的每一个实施不同垃圾收集策略,其中不同垃圾收集策略特定针对于块335-1、335-2、335-3、335-4。举例来说,可针对块335-1实施第
一垃圾收集策略,可针对块335-2实施第二垃圾收集策略,可针对块335-3实施第三垃圾收集策略,且可针对块335-4实施第四垃圾收集策略,其中响应于虚拟块334保留用于日志区域而选择第一、第二、第三和第四垃圾收集策略。
[0072]
通过利用特定针对于虚拟块334的垃圾收集策略,可改进存储器装置305的使用期限要求的结束。通过延迟或限制针对虚拟块334实施的垃圾收集操作,与不同垃圾收集策略相比,可限制存储器装置305的耗损。限制存储器装置305的耗损可延长存储器装置305的使用期限。
[0073]
通过实施特定针对于虚拟块334的垃圾收集策略,可含有存储器装置305的写入放大因子。如本文所使用,写入放大因子描述一数据量的写入,所述数据量为写入到存储器装置305的实际数据量的整倍数。与经配置以充当blc/tlc/qlc/plc的不同虚拟块的不同存储器单元相比,将虚拟块334的存储器单元配置为slc可改进虚拟块334的耗损规范。
[0074]
虽然图1的命令队列113示出为在ftl 108外部实施,但是可以在ftl 108中实施。命令队列可存储包括混合业务331的命令。举例来说,命令队列可存储包括日志业务332的命令和包括非日志业务333的命令。非日志业务可被称为“普通”业务333,可包括例如用户数据读取/写入命令、垃圾收集命令等命令。
[0075]
ftl可使日志写入命令优先于其它命令。鉴于在进行日志修改时不存取文件系统,日志写入命令的优先化可改进系统性能。与不使日志写入命令优先的ftl相比,使日志写入命令优先的ftl可使文件系统不可用性周期更短,且提供总体更好的系统性能。
[0076]
可利用命令队列使日志写入命令(例如,日志业务332)优先。举例来说,命令队列中的命令可经重新组织以使得在存储于命令队列中的其它命令之前处理日志写入命令。可在存储于命令队列中的非日志命令之前选择存储于命令队列中的循环命令以用于执行。可使日志写入命令优先于垃圾收集命令,以及为非日志写入命令的其它类型的命令。
[0077]
实施本文中所描述的实例的益处包含改进的用户感知到的性能、改进的存储器装置305的耐久性,以及用于存储器装置305的更好的写入性能和时延服务质量。改进用户感知到的性能可通过使日志存取优先化以限制文件系统的脱机时间来实现。改进存储器装置305的耐久性可通过与标准写入业务相比准确地选择和隔离日志写入业务来实现。改进存储器装置305的耐久性可描述延长存储器装置305的使用期限。可通过使用slc块且通过避免或限制在存储器装置305中执行垃圾收集操作来实现改进存储器装置305的写入性能和时延服务质量。在避免或限制垃圾收集操作的条件下,通过减少执行到虚拟块334的存取命令的时延,避免或限制执行垃圾收集操作可改进虚拟块334的写入性能。
[0078]
图4为根据本公开的一些实施例的对应于检测电路系统的实例方法480的流程图。方法480可由可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑执行。在一些实施例中,方法480由图1的ftl 108执行。尽管以特定顺序或次序展示,但除非另外规定,否则可修改过程的次序。因此,所示出的实施例应仅理解为实例,且所示出的过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实施例中可省略一或多个过程。因此,并非每一实施例中都需要所有操作。其它过程流程是可能的。
[0079]
在481处,可监测传入命令以确定存储器装置的日志区域。在482处,响应于确定日志区域,可实施特定针对于日志区域的垃圾收集策略。
[0080]
实施特定针对于日志区域的垃圾收集策略可包含延迟日志区域的垃圾收集。垃圾收集策略的延迟可相对于(例如,相比于)特定针对于非日志区域的不同垃圾收集策略。日志区域的垃圾收集策略可包含基于日志区域的循环写入的垃圾收集的延迟时间。相比于非日志区域的垃圾收集策略,延迟时间可描述垃圾收集的延迟间隔。可基于日志区域的循环写入的时间间隔来选择延迟时间。举例来说,延迟时间可为日志区域的循环写入的时间间隔的整倍数。
[0081]
在各种实例中,延迟日志区域的垃圾收集可包含无限延迟日志区域的垃圾收集。无限延迟日志区域的垃圾收集可包含暂停到日志区域的垃圾收集命令。无限延迟日志区域的垃圾收集还可包含制止实施日志区域的垃圾收集策略或制止将垃圾收集命令提供到日志区域。
[0082]
可在存储器装置的独立块中将日志区域的日志数据与非日志数据分离。也就是说,日志数据可存储于存储器装置的独立块中。可在存储器装置的独立块上实施特定针对于日志区域的垃圾收集策略。独立块的存储器单元可为slc,使得独立块可被称为slc块。与存储器装置的其它块相比,特定针对于日志区域的垃圾收集策略可限制日志区域的写入放大因子。
[0083]
在各种情况下,可监测传入命令以确定存储器装置的日志区域。到日志区域的额外命令可优先于到存储器装置的不同区域的不同命令。额外命令可优先于队列(例如,命令队列)中的不同命令。可在执行不同命令之前执行经优先化额外命令。相比于在不进行优先化的情况下执行额外命令,经优先化额外命令可在较少时间内执行。额外命令可优先于垃圾收集操作。
[0084]
图5示出计算机系统590的实例机器,在所述机器中可执行指令集以用于使机器执行本文中所论述的方法中的一或多种。在一些实施例中,计算机系统590可类似于图1的存储器子系统控制器104。在替代实施例中,机器可连接(例如联网)到lan、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
[0085]
机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定待由机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的集合,所述集合单独地或共同地执行一(或多个)指令集以执行本文中所论述的方法中的一或多种。
[0086]
实例计算机系统590包含经由总线597彼此通信的处理装置592、主存储器594(例如,只读存储器(rom)、快闪存储器、动态随机存取存储器(dram),例如同步dram(sdram)或rambus dram(rdram)等)、静态存储器598(例如,快闪存储器、静态随机存取存储器(sram)等)以及数据存储系统599。数据存储系统599可为存储器子系统,例如图1中所描述的存储器子系统103(例如,ufs、emmc等)。
[0087]
处理装置592,其可类似于图1中的处理器107,表示一或多个通用处理装置,例如微处理器、中央处理单元等。更确切地说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处
理器或实施指令集的组合的处理器。处理装置592还可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置592经配置以执行指令593以用于执行本文所论述的操作和步骤。计算机系统590可进一步包含网络接口装置595以在网络596上通信。
[0088]
数据存储系统599可包含机器可读存储媒体591(也称为计算机可读媒体),所述机器可读存储媒体上存储有一或多个指令集593或体现本文所描述的方法或功能中的一或多个的软件。指令593还可在由计算机系统590执行其期间完全或至少部分地驻存于主存储器594内和/或处理装置592内,所述主存储器594和处理装置592还构成机器可读存储媒体。机器可读存储媒体591、数据存储系统599和/或主存储器594可对应于图1的存储器子系统103。
[0089]
在一个实施例中,指令593包含用以实施对应于图1的ftl 108的功能的指令。所述指令可包含与基于存储业务模式检测改进存储器装置性能相关联的ftl指令589(例如,图1中的ftl 108)。虽然在实例实施例中将机器可读存储媒体591展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多个指令集的单个媒体或多个媒体。还应认为术语“机器可读存储媒体”包含能够存储或编码供机器执行的指令集且使得机器执行本公开的方法中的一或多种的媒体。因此应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
[0090]
已就对计算机存储器内的数据位的操作的算法和符号表示而言呈现了先前详细描述的一些部分。这些算法描述和表示为数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。算法在本文中且一般被认为是产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操控的那些操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电信号或磁信号的形式。主要出于常用的原因,已证明将这些信号称为位、值、元素、符号、字符、术语、编号或类似者有时是方便的。
[0091]
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便标记。本公开可涉及将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操控且变换成类似地表示为计算机系统的存储器或寄存器或其它此类信息存储系统内的物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
[0092]
本公开还涉及一种用于执行本文中的操作的设备。此设备可出于预期目的而专门构建,或其可包含由存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储于计算机可读存储媒体中,所述计算机可读存储媒体如但不限于各自耦合到计算机系统总线的包含软盘、光盘、cd-rom和磁性光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁性卡或光学卡的磁盘类型或适合于存储电子指令的媒体类型。
[0093]
本文中呈现的算法和显示器并非在本质上与特定计算机或其它设备相关。各种通用系统可根据本文中的教示与程序一起使用,或其可以证明构造更专用的设备来执行方法是方便的。将如下文描述中所阐述的那样呈现用于各种这些系统的结构。另外,不参考特定编程语言来描述本公开。应了解,可使用多种编程语言来实施如本文所描述的本公开的教示。
[0094]
本公开可提供为计算机程序产品或软件,所述计算机程序产品或软件可包含其上
存储有可用以对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如计算机)可读的形式存储信息的机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
[0095]
在前述说明书中,已参考本公开特定实例实施例描述了本公开的实施例。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开实施例的更广精神和范围的情况下对本公开进行各种修改。因此,说明书和图式应被视为说明性的而非限制性的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1