CN113254358A - 用于地址表高速缓存管理的方法和*** - Google Patents
用于地址表高速缓存管理的方法和*** Download PDFInfo
- Publication number
- CN113254358A CN113254358A CN202010552338.3A CN202010552338A CN113254358A CN 113254358 A CN113254358 A CN 113254358A CN 202010552338 A CN202010552338 A CN 202010552338A CN 113254358 A CN113254358 A CN 113254358A
- Authority
- CN
- China
- Prior art keywords
- logical address
- mapping table
- address
- correlation
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000013507 mapping Methods 0.000 claims abstract description 164
- 230000004044 response Effects 0.000 claims abstract description 38
- 230000015654 memory Effects 0.000 claims description 246
- 230000003247 decreasing effect Effects 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 7
- 230000007423 decrease Effects 0.000 claims description 7
- 238000007726 management method Methods 0.000 description 29
- 238000013519 translation Methods 0.000 description 13
- 238000013500 data storage Methods 0.000 description 11
- 238000005192 partition Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000000875 corresponding effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000003321 amplification Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 239000000463 material Substances 0.000 description 5
- 238000003199 nucleic acid amplification method Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013481 data capture Methods 0.000 description 2
- 238000001465 metallisation Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- JWZQBEUBJXSDPP-UHFFFAOYSA-N 5-cyclohexyl-6-methylpyrimidine-2,4-diamine Chemical compound CC1=NC(N)=NC(N)=C1C1CCCCC1 JWZQBEUBJXSDPP-UHFFFAOYSA-N 0.000 description 1
- 101100072002 Arabidopsis thaliana ICME gene Proteins 0.000 description 1
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 1
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000000356 contaminant Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 239000002159 nanocrystal Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000005693 optoelectronics Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 229910052814 silicon oxide Inorganic materials 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
在用于地址表高速缓存管理的方法中,可接收与第一读取命令相关联的第一逻辑地址。所述第一逻辑地址可与地址映射表的第一区段相关联。随后可接收与第二读取命令相关联的第二逻辑地址。所述第二逻辑地址可与所述地址映射表的第二区段相关联。可以响应于在所述第二逻辑地址之前接收所述第一逻辑地址而增大使所述第一区段与所述第二区段相关联的相关性度量。所述第一逻辑地址和所述第二逻辑地址可各自映射到所述地址映射表内的物理地址,且映射表高速缓存可配置成存储两个或更多个区段。随后可基于所述相关性度量管理所述映射表高速缓存。
Description
背景技术
映射表高速缓存管理是闪存管理的至关重要的部分。映射表高速缓存通常用于通过避免因首先进行逻辑到物理地址转译的需要所致的进行针对每一主体读取请求的NAND闪存的两个读取操作的需要来改善读出时延。然而,由于高速缓存的有限大小,因此需要管理高速缓存以最大化高速缓存命中率且最小化高速缓存未命中率。在常规***中,可根据需要将数据引入到高速缓存中,且可实施最近使用(LRU)逐出策略。然而,这些方法是次优的。
映射表高速缓存使用的优化由于闪存管理的相关决策(例如,高速缓存逐出)不仅在作出决策时影响即刻时间点,且还可具有更难以优化的长期影响的事实而为复杂的。需要管理映射表高速缓存的高速缓存内容以改良更长期性能。
发明内容
本公开涉及一种用于地址表高速缓存管理的方法。可接收与第一读取命令相关联的第一逻辑地址。第一逻辑地址可与地址映射表的第一区段相关联。随后可接收与第二读取命令相关联的第二逻辑地址。第二逻辑地址可与地址映射表的第二区段相关联。使第一逻辑地址与第二逻辑地址相关联的相关性度量可以响应于在第二逻辑地址之前接收第一逻辑地址而增大。第一逻辑地址和第二逻辑地址可各自映射到地址映射表内的物理地址,且映射表高速缓存可配置成存储两个或更多个区段。随后可基于相关性度量管理映射表高速缓存。
本公开进一步涉及用于地址表高速缓存管理的设备。设备可包括处理器和存储器。存储器可存储指令,所述指令在由处理器执行时,将设备配置成接收包括第一逻辑地址的第一读取命令,其中映射表高速缓存的第一区段包括第一逻辑地址。指令可将设备进一步配置成接收包括第二逻辑地址的第二读取命令,其中地址映射表的第二区段包括第二逻辑地址。设备随后可响应于映射表高速缓存未能包含第二区段且响应于在第二读取命令之前接收第一读取命令而增大使第一区段与第二区段相关联的相关性度量。设备还可配置成基于相关性度量来管理映射表高速缓存。
本公开最后涉及一种用于地址表高速缓存管理的***。***可包括非易失性存储器、易失性存储器、输入/输出接口、高速缓存管理器、高速缓存区段管理器、高速缓存加载器以及存储控制器。非易失性存储器可配置成存储地址映射表。易失性存储器可配置成存储包括区段集合的映射表高速缓存。每一区段可包括逻辑块地址(LBA)与物理块地址之间的地址映射。输入/输出接口可配置成接收存储命令。存储命令可包括独特地识别存储于非易失性存储器上的数据块集合的逻辑地址。高速缓存管理器可配置成将区段从非易失性存储器的地址映射表加载到易失性存储器的映射表高速缓存中。高速缓存区段管理器可配置成管理LBA相关性表。LBA相关性表可基于针对多个区段中的区段的LBA的读取命令请求来包括多个区段中的每一个的相关性度量。高速缓存加载器可配置成响应于非高速缓存的区段相对于映射表高速缓存中的其它区段而具有比驻存区段的一个或多个相关性度量更高的相关性度量而从非易失性存储器的地址映射表撷取非高速缓存的区段。存储控制器还可配置成使用由高速缓存管理器提供的物理地址来服务存储命令。
附图说明
为了容易地识别对任何特定元件或动作的论述,附图标记中的一个或多个最高有效数字指的是首次介绍所述元件的图号。
图1是根据一个实施例的存储***100的框图。
图2示出根据一个实施例的主机和存储装置的框图。
图3示出根据一个实施例的存储***300。
图4示出根据一个实施例的地址映射表400。
图5示出根据一个实施例的映射表高速缓存500。
图6示出根据一个实施例的LBA相关性表600。
图7示出根据一个实施例的逻辑地址请求追踪或读取命令追踪700。
图8是根据一个实施例的存储***800的框图。
图9示出根据一个实施例的地址映射表900。
图10示出根据一个实施例的映射表高速缓存1000。
具体实施方式
在本发明中,赫布学习规则(Hebbian Learning rule)可用于存储装置中的闪存管理,且更确切地说用于高速缓存管理。“存储装置”是指被配置、编程、设计或工程改造以在存储装置并不使用来自电源的电力时将数据存储一段时间且将数据保持在存储装置中的任何硬件、***、子***、电路、组件、模块、非易失性存储器媒体、硬盘驱动器、存储阵列、装置或设备。存储装置的实例包含(但不限于)硬盘驱动器、闪存存储器、MRAM存储器、固态存储装置、简单磁盘捆绑(Just a Bunch Of Disks;JBOD)、简单闪存捆绑(Just a BunchOf Flash;JBOF)、外部硬盘、内部硬盘以及类似物。
本公开的实施例提出基于使用如下文所提议的赫布学习规则实时映射强烈相关的逻辑块地址(LBA)和/或LBA范围来管理地址高速缓存的设备、***以及方案。(本文中可互换使用的对于单一LBA或一个或多个LBA范围的参考。)赫布学习规则基于指示关联/关系的活动或事件来识别将多少权重分配到两个概念、目标或事物之间的关联。
可在装置寿命期间使用赫布学习规则在运行中映射强烈相关的LBA。接着,LBA相关性映射可用于通过改良以下闪存管理操作来改良存储装置性能:
1.逐出具有与其它区段的LBA弱相关的LBA的区段。
2.根据获悉的LBA相关性从非易失性存储媒体上传区段。
3.根据强烈相关的LBA巩固和更新管理存储控制器表。
4.根据强烈相关的LBA且根据有效数据计数器(VC=0)来促激活NAND闪存压缩操作,其中强烈相关的LBA可通过来后台操作而经移动到通用物理擦除块并组织成通用区段。
“区段”是指配置成存储逻辑地址和与逻辑地址相关联的物理地址的数据结构。在一个实施例中,逻辑地址可包括LBA范围且物理地址可包括对应的物理块地址范围。“区段大小”是指一起定义区段的数据字节的数目。在某些实施例中,区段可包含与区段相关联的元数据。在这类实施例中,区段大小可包含元数据。
可在区段层级下管理LBA之间的相关性。可最初通过将地址映射表***成若干区段来组织区段。尽管区段的数目可能影响LBA相关性表的效率,但将地址映射表***成更大数目的区段可提供更佳精细度且由此提供更高命中率。“命中率”是指由主机和区段请求LBA或LBA范围的频率的测量,包含所请求LBA或LBA范围的区段在高速缓存中。可追踪每一区段的命中率。命中率可表达为整数、实数、十进制数字或百分比形式。
用于计算命中率的一个公式可包含使对于高速缓存中的区段的LBA的请求的数目的计数除以LBA请求服务的总数目。举例来说,假设在1000个LBA请求中,500个请求给定区段A内的LBA。在这一实例中,命中率是0.5或50%。
存储控制器可保持含有“相关性度量”的LBA相关性表。“相关性度量”是指请求、识别或接收第一逻辑地址后接第二逻辑地址的依序顺序的关系、关联或相关性的量值的测量、分数或等级。在某些实施例中,可以关于一段时间测量相关性度量。在某些实施例中,相关性度量越高,那么在第一逻辑地址后紧接或不久将请求、识别或接收第二逻辑地址的可能性越强或越高。相关性度量可与在合适的粒度层级下传达关联、关系或相关性的任何比例尺或测量单位相关联。举例来说,在一个实施例中,相关性度量与0与1之间的实数的比例尺相关联,其中比例尺上的0表示顺序之间的极低或不存在的相关性且比例尺上的1表示极高或可能相关性,其中将在对于第二逻辑地址之请求后请求第一逻辑地址。0与1之间的此比例尺可以容易地转化为表示相关性度量的百分比。在另一实例中,在一个实施例中,相关性度量与1与10之间的全部数目的比例尺相关联,其中比例尺上的1表示一点或无相关性且比例尺上的10表示最大或高相关性。存储控制器可能够识别当前请求的LBA和先前请求的LBA。在某些实施例中,存储控制器可配置成保持紧接在特定先前所请求的LBA之后请求当前所请求的LBA的频率的历史。每当主机***请求存储操作(例如读取命令)到特定LBA且随后从不同区段请求另一LBA时,存储控制器可增大LBA相关性表内的两个高速缓存区段的相关性度量。在一些实施例中,从不同区段请求LBA可减小包含LBA的相关性度量。
对于均匀分散在非易失性存储媒体上的数据,平均相关性度量可以是-7/8*X,其中X等于所服务的LBA存取的数目。数据存取和相关逻辑地址可能不完全是无规的,且LBA之间可能存在相关性,且每一区段的平均分数可经偏置。在一个实施例中,在极强相关性可能引起正数时,中等相关性可能引起较小负数且较弱相关性可能产生较大负数。
LBA相关性表的一个实施例可经建构并维持,使得存储控制器可“预测”哪一区段应为预取易失性存储器,例如地址映射表高速缓存,以增大高速缓存“命中”的可能性。另一副产物可以是高速缓存的碎片整理和存储在非易失性存储器装置中的物理数据。
图1是示出根据所公开的解决方案的包含分区存储装置的存储***100的一个实施例的示意性框图。存储***100包括存储装置102、存储控制器104、存储器裸片106、主机110、用户应用程序112、存储客户端114、逻辑地址空间116、元数据118、闪存转译层120、地址映射表122、数据总线124、总线126、至少一个主机128以及网络130。
存储***100包含至少一个存储装置102,所述存储装置102包括由总线126连接的存储控制器104和一个或多个存储器裸片106。在一些实施例中,存储***100可包含两个或更多个存储装置。“存储控制器”是指配置成管理非易失性存储器媒体上的数据操作的任何硬件、装置、组件、元件或电路,且可包括一个或多个处理器、可编程处理器(例如,FPGA)、ASIC、微控制器或其类似物。在一些实施例中,存储控制器配置成将数据存储在非易失性存储器媒体上以将数据传送到非易失性存储器装置和/或从非易失性存储器媒体读出数据以从非易失性存储器装置传送数据等等。“非易失性存储器”是指非易失性存储器媒体的简称。在某些实施例中,非易失性存储器媒体是指非易失性存储器媒体和逻辑、控制器、处理器、状态机和/或管理非易失性存储器媒体并提供对非易失性存储器媒体的存取的其它***电路。
“处理器”是指配置成接收、解译、解码以及执行机器指令的任何电路、组件、芯片、裸片、封装或模块。处理器的实例可包含(但不限于)中央处理单元、通用处理器、特殊应用处理器、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、芯片上***(SoC)、虚拟处理器、处理器内核以及类似物。
“存储器”是指被配置、编程、设计、布置或工程改造成保持数据的任何硬件、电路、组件、模块、逻辑、装置或设备。某些类型的存储器需要获得恒定电源以存储并保持数据。当电源不可用时,其它类型的存储器保持和/或存储数据。
“存储器裸片”是指以一个或多个电路形成于一个或多个半导体材料层的上、下或内的方式制得的一片半导体材料。确切地说,可在电子级硅(EGS)或其它半导体材料(例如GaAs)的晶片上大规模生产集成电路和存储器电路。将晶片划分成各自包含集成电路的非依赖型版本的小段。所述段在本文中被称作“裸片”或“存储器裸片”。
在一个实施例中,存储器裸片是包含用于以非易失性存储器媒体和/或非易失性存储器阵列形式操作的功能电路的裸片。“非易失性存储器媒体”是指配置成在去除主电源后保持用于表示零或一的二进制值的可改变的物理特征的任何硬件、装置、组件、元件或电路。非易失性存储器媒体可包括非易失性存储媒体的一个实例。可改变的物理特征的实例包含(但不限于)电晶体的阀值电压、存储器单元的电阻层级、通过存储器单元的电流电平、磁极定向、螺旋传送力矩以及类似物。
可改变的物理特征是一旦设定,使得物理特征保持充分固定,使得当用于非易失性存储器媒体的主电源不可用时,在读取、检索或感测二进制值时,可测量、检测或感测可变的物理特征换句话说,非易失性存储器媒体是被配置成使得在用于非易失性存储器媒体的电源经去除且随后恢复后,可获取存储于非易失性存储器媒体上的数据的存储媒体。非易失性存储器媒体可包括一个或多个非易失性存储器元件,其可包含(但不限于)芯片、封装、面板、存储器裸片以及类似物。
非易失性存储器媒体的实例包含(但不限于)ReRAM、忆阻器存储器、可编程金属化单元存储器、相变存储器(PCM、PCME、PRAM、PCRAM、双向通用存储器、硫属化物RAM或C-RAM)、NAND闪存存储器(例如,2D NAND闪存存储器、3D NAND闪存存储器)、NOR闪存存储器、纳米随机存取存储器(纳米RAM或NRAM)、基于纳米晶体线的存储器、基于硅-氧化物的低于10纳米处理存储器、石墨烯存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)、可编程金属化单元(PMC)、导电桥接RAM(CBRAM)、磁阻性RAM(MRAM)、磁性存储媒体(例如,硬盘、磁带)、光学存储媒体或其类似物。
尽管非易失性存储器媒体在本文中被称作“存储器媒体”,但在不同实施例中,非易失性存储器媒体可更一般来说被称作非易失性存储器。由于非易失性存储器媒体能够在去除电源时存储数据,因此非易失性存储器媒体还可被称作记录媒体、非易失性记录媒体、存储媒体、存储器、非易失性存储器、易失性存储器介质、非易失性存储器介质、非易失性存储器或其类似物。
在某些实施例中,可在块层级下寻址存储于非易失性存储器媒体中的数据,其意味着将非易失性存储器媒体中的数据组织成各自具有特有逻辑地址(例如,LBA)的数据块。在其它实施例中,可在字节层级下寻址存储于非易失性存储器媒体中的数据,其意味着将非易失性存储器媒体中的数据组织成各自具有唯一地址(例如逻辑地址)的数据字节(8位)。字节可寻址非易失性存储器媒体的一个实例是存储类存储器(SCM)。
“非易失性存储媒体”是指配置成在去除主电源后保持用于表示零或一的二进制值的可改变的物理特征的任何硬件、装置、组件、元件或电路。
“非易失性存储器阵列”是指组织成具有行和列的阵列结构的非易失性存储单元(还被称作存储器单元或非易失性存储器单元)的集合。存储器阵列可使用行识别符和列识别符来寻址。
每一存储装置102可包含两个或更多个存储器裸片106,例如闪存存储器、纳米随机存取存储器(“纳米RAM或NRAM”)、磁阻性RAM(“MRAM”)、动态RAM(“DRAM”)、相变RAM(“PRAM”)等。在另外的实施例中,数据存储装置102可包含其它类型的非易失性和/或易失性数据存储器,例如动态RAM(“DRAM”)、静态RAM(“SRAM”)、磁性数据存储器、光学数据存储器和/或其它数据存储技术。存储器裸片106可配置到存储器阵列108中。
“存储器阵列”是指组织成具有行和列的阵列结构的存储单元(还被称作存储器单元)集合。存储器阵列可使用行识别符和列识别符来寻址。“存储器单元”是指配置成在感测、读取或检测存储媒体以确定哪一二进制值经最后存储于存储器单元中时借助于存储媒体的可确定物理特征来表示一个或多个二进制值的存储媒体类型。在本文中可互换地使用存储器单元和存储单元。
在本文中也被称为存储装置的存储装置102可以是如此处所描绘的主机110内的组件且可以使用数据总线124,例如***组件互连高速(“PCI-e”)总线、串行高级技术附件(“serial ATA”)总线或其类似物进行连接。在另一实施例中,存储装置102在主机110外部且连接通用串行总线(“USB”)连接、电气电子工程师学会(Institute of Electrical andElectronics Engineers;“IEEE”)1394总线(“FireWire”)或其类似物。在其它实施例中,使用***组件互连(“PCI”)高速总线将存储装置102连接到主机110,所述***组件互连高速总线使用外部电或光学总线扩展或总线联网解决方案,例如无限频带或PCI高速高级切换(“PCIe-AS”)或其类似物。“主机”是指配置成发送和接收存储命令的任何计算装置或计算机装置或计算机***。主机的实例包含(但不限于)计算机、笔记本电脑、移动装置、家用电器、虚拟机、企业服务器、桌面、平板电脑、主要框以及类似物。
在不同实施例中,存储器装置102可以呈双列直插式存储器模块(“DIMM”)、子卡或微模块的形式。在另一实施例中,存储装置102是安装在架装刀片(rack-mounted blade)内的组件。在另一实施例中,存储装置102内含于直接整合到较高层级装配(例如,底板、笔记本电脑、图形处理器)上的封装内。在另一实施例中,包括存储装置102的个别组件直接整合到较高层级装配上,而无需中间封装。
在另一实施例中,替代以DAS形式直接连接到主机110,可经由数据网络将数据存储装置102连接到主机110。举例来说,数据存储装置102可包含存储区域网络(“SAN”)存储装置、网络附接存储(“NAS”)装置、网络共享或其类似物。在一个实施例中,存储***100可包含数据网络,例如因特网、广域网(“WAN”)、城域网(“MAN”)、局域网(“LAN”)、令牌环(token ring)、无线网络、光纤通道网络、SAN、NAS、ESCON或其类似物或网络的任何组合。数据网络还可包含来自IEEE 802系列网络技术的网络,例如以太网、令牌环、Wi-Fi、Wi-Max以及类似物。数据网络可包含服务器、开关、路由器、电缆线、无线电,以及用于促进主机110与数据存储装置102之间的联网的其它设备。
存储***100包含连接到存储装置102的至少一个主机110。可以使用多个主机110且其可包括:服务器、存储区域网络(“SAN”)的存储控制器、工作站、个人计算机、笔记本电脑、手持式计算机、超级计算机、计算机集群、网络交换机、路由器或家用电器、数据库或存储设备、数据获取或数据捕获***、诊断***、测试***、机器人、便携式电子装置、无线装置或其类似物。在另一实施例中,主机110可以是客户端,且存储装置102自主地对从主机110发送的服务数据请求进行操作。在这个实施例中,可以使用计算机网络、***总线、直接附接存储(DAS)或适于计算机与自主式存储装置102之间的连接的其它通信构件来连接主机110和存储装置102。
所描绘实施例展示作为主机110的部分,与存储客户端114通信的用户应用程序112。在一个实施例中,用户应用程序112是在存储客户端114上或结合所述存储客户端114操作的软件应用程序。
“存储客户端”是指配置成与存储装置通信以使用存储服务的任何硬件、软件、固件或逻辑组件或模块。存储客户端的实例包含(但不限于)操作***、文件***、数据库应用程序、数据库管理***(“DBMS”)、服务器应用程序、服务器、卷管理器、核心程序层级进程、用户层级进程、应用程序、移动应用程序、线程、进程以及类似物。“硬件”是指实施为模拟和/或数字电路的功能元件。“软件”是指实施为机器存储器(例如,读/写易失性存储器媒体或非易失性存储器媒体)中的处理器可执行指令的逻辑。“固件”是指实施为存储于易失性存储器媒体和/或非易失性存储器媒体上的处理器可执行指令的逻辑。
“易失性存储器”是指易失性存储器媒体的简称。在某些实施例中,易失性存储器是指易失性存储器媒体和逻辑、控制器、处理器、状态机和/或管理易失性存储器媒体并提供对易失性存储器媒体的存取的其它***电路。“易失性存储器媒体”是指配置成保持用于表示零或一的二进制值的可变的物理特征,其中在去除主电源时或除非主电源用于刷新所展现二进制值时,可变的物理特征恢复到不再表示所述二进制值的默认状态。易失性存储器媒体的实例包含(但不限于)动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、双倍数据速率随机存取存储器(DDR RAM)或其它随机存取固态存储器。
尽管易失性存储器媒体在本文中被称作“存储器媒体”,但在不同实施例中,易失性存储器媒体可更一般来说被称作易失性存储器。
在某些实施例中,可在字节层级下寻址存储于易失性存储器媒体中的数据,其意味着将易失性存储器媒体中的数据组织成各自具有唯一地址(例如逻辑地址)的数据字节(8位)。
“逻辑”是指机器存储器电路、非暂时性机器可读媒体和/或电路***,其借助于其材料和/或材料能量配置包括可应用于影响装置的操作的控制和/或程序信号,和/或设置和值(例如电阻、阻抗、电容、电感、电流/电压额定值等)。磁性媒体、电子电路、电气和光学存储器(易失性和非易失性两个)以及固件是逻辑的实例。逻辑专门排除纯信号或软件本身(但是不排除包括软件且借此形成物质的配置的机器存储器)。
“电路”是指具有至少一个离散电路的电路、具有至少一个集成电路的电路、具有至少一个专用集成电路的电路、形成由计算机程序配置的通用计算装置(例如,由至少部分地进行本文中所描述的进程或装置的计算机程序配置的通用计算机,或由至少部分地实行本文中所描述的进程或装置的计算机程序配置的微处理器)的电路、形成存储器装置(例如,随机存取存储器的形式)的电路或形成通信装置(例如,调制解调器、通信交换机或光电设备)的电路。
存储客户端114管理文件和数据,并利用存储控制器104和相关联存储器裸片106的功能和特征。存储客户端的代表性实例包含(但不限于)服务器、文件***、作业***、数据库管理***(“DBMS”)、卷管理器以及类似物。存储客户端114与存储装置102内的存储控制器104通信。在一些实施例中,存储客户端114可包含在主机128上操作或另外可通过网络130存取的远程存储客户端。存储客户端可包含(但不限于)操作***、文件***、数据库应用程序、服务器应用程序、核心程序层级进程、用户层级进程、应用程序以及类似物。
存储客户端114可向主机110和/或用户应用程序112呈现逻辑地址空间116。“逻辑地址空间”是指存储器资源的逻辑表示。逻辑地址空间可包括多个(例如,一系列)逻辑地址。逻辑地址空间116可包括多个(例如,一系列)逻辑地址。如本文中所用,逻辑地址是指用于参考存储器资源(例如,数据)的任何识别符,包含(但不限于)逻辑块地址(LBA)、柱区/头/扇区(cylinder/head/sector;CHS)地址、文件名、对象识别符、索引节、通用唯一识别符(UUID)、全局唯一识别符(GUID)、哈希代码、标记、索引条目、范围、程度或其类似物。
“逻辑地址”是指用于参考存储器资源(例如,数据)的任何识别符,包含(但不限于)逻辑块地址(LBA)、柱区/头/扇区(CHS)地址、文件名、对象识别符、索引节、通用唯一识别符(UUID)、全局唯一识别符(GUID)、哈希代码、标记、索引条目、范围、程度或其类似物。逻辑地址不指示数据在存储媒体上的物理位置,但是为对所述数据的抽象参考。
“逻辑块地址”是指块存储装置中所用来使可用于遍及存储媒体的用户数据存储的n个逻辑块中的每一个与地址相关联的值。在某些块存储装置中,逻辑块地址(LBA)可介于每一卷或分割区0到n的范围变化。在块存储装置中,每一LBA直接映射到特定数据块,且每一数据块映射到物理存储装置媒体上的物理扇区的特定集合。
用于主机110(和/或存储客户端114)的装置驱动器可将元数据118保持在存储客户端114,例如逻辑到物理地址映射结构内,以将逻辑地址空间116的逻辑地址映射到存储器裸片106上的存储位置。装置驱动器可配置成向一个或多个存储客户端提供存储服务。
存储客户端114可包括闪存转译层120和地址映射表122。“闪存转译层”或“逻辑地址到物理地址(L2P)转译”是指包含逻辑到物理地址转译的闪存存储器装置中的逻辑提供由存储客户端使用的逻辑块地址和存储控制器存储数据的物理块地址的抽象概念。逻辑到物理转译层将存储于非易失性存储媒体上的数据的逻辑块地址(LBA)映射到物理地址。这一映射允许使用例如逻辑块地址的逻辑识别符在逻辑地址空间中参考数据。逻辑识别符不指示数据在固态存储媒体上的物理位置,但是为对所述数据的抽象参考。
闪存转译层120接收经处理的数据以及一个或多个控制信号以确定闪存转译层队列深度。闪存转译层120可以通过控制信号与地址映射表122相互作用以确定适当的物理地址,以将数据和命令发送到存储器裸片106和易失性存储器。在一个实施例中,闪存转译层120还从存储器裸片106接收数据输出。
“地址映射表”是指使逻辑块地址与存储于非易失性存储器阵列上的数据的物理地址相关联的数据结构。表可经实施为索引、映射、b树、内容可寻址存储器(CAM)、二叉树和/或哈希表以及类似物。地址映射表122存储存储装置102上的数据块的地址位置,以供闪存转译层120利用。具体来说,闪存转译层120搜索地址映射表122,以确定包含于存储命令中的逻辑块地址是否在地址映射表122中具有条目。如果是,那么使用与逻辑块地址相关联的物理地址以在存储器裸片106上指导存储操作。
“数据块”是指物理存储媒体上的可使用存储命令存取和/或可寻址的最小存储空间物理量。物理存储媒体可以是易失性存储器媒体、非易失性存储器媒体、永久性存储器、非易失性存储器、闪存存储媒体、硬盘驱动器或其类似物。某些常规的存储装置将物理存储媒体分割成卷或逻辑分割区(还被称作分割区)。每一卷或逻辑分割区可包含多个扇区。将一个或多个扇区组织成块(还被称作数据块)。在例如那些与操作***介接的某些存储***中,数据块被称为集群。在例如那些与UNIX、Linux或类似操作***介接的其它存储***中,数据块简称为块。数据块或集群表示存储媒体上由存储控制器管理的最小存储空间物理量。块存储装置可使可用于遍及物理存储媒体的用户数据存储的n个数据块与逻辑块地址(LBA)相关联,从0到n编号。在某些块存储装置中,逻辑块地址可介于每一卷或逻辑分割区0到n的范围变化。在常规块存储装置中,逻辑块地址直接映射到一个且仅一个数据块。
“存储操作”是指为改变或获得表示为存储单元的状态特征的数据值而在存储器单元上进行的操作。存储操作的实例包含(但不限于)从存储器单元读取数据(或感测存储器单元的状态)、将数据写入(或编程)到存储器单元和/或将存储于存储器单元中的数据擦除。
“特征”是指目标或事物的任何性质、特质、品质或属性。特征的实例包含(但不限于)条件、使用就绪、使用未就绪、化学组合物、水含量、温度、相对湿度、颗粒数、数据值、污染物数以及类似物。
在一个实施例中,存储***100包含通过一个或多个计算机网络130连接到一个或多个主机128的一个或多个客户端。主机128可以是服务器、SAN的存储控制器、工作站、个人计算机、笔记本电脑、手持式计算机、超级计算机、计算机集群、网络交换机、路由器或家用电器、数据库或存储设备、数据获取或数据捕获***、诊断***、测试***、机器人、便携式电子装置、无线装置或其类似物。网络130可包含因特网、广域网(“WAN”)、城域网(“MAN”)、局域网(“LAN”)、令牌环、无线网络、光纤通道网络、SAN、网络附接存储(“NAS”)、ESCON或其类似物或网络的任何组合。网络130还可包含来自IEEE 802系列网络技术的网络,例如以太网、令牌环、WiFi、WiMax以及类似物。
网络130可包含服务器、开关、路由器、电缆线、无线电,以及用于促进主机110或多个主机与主机128或客户端的联网的其它设备。在一个实施例中,存储***100包含作为对等体经由网络130进行通信的多个主机。在另一实施例中,存储***100包含作为对等体经由网络130进行通信的多个存储器装置102。所属领域的技术人员将认识到包括一个或多个计算机网络和相关设备的其它计算机网络,所述设备具有一个或多个客户端或其它计算机与一个或多个存储器装置102或连接到一个或多个主机的一个或多个存储器装置102之间的单个或冗余连接。在一个实施例中,存储***100包含通过网络130连接到主机128而非主机110的两个或更多个存储器装置102。
在一个实施例中,存储客户端114通过包括输入/输出(I/O)接口的主机接口与存储控制器104通信。举例来说,存储装置102可以支持由国际信息技术标准委员会(theInterNational Committee for Information Technology Standards;“INCITS”)维持的ATA接口标准、ATA分组数据接口(ATA Packet Interface;“ATAPI”)标准、小型计算机***接口(小型计算机***接口;“SCSI”)标准和/或光纤通道标准。
在一个示例实施例中,数据块包含八个扇区,所述块为4KB。在例如那些与操作***介接的某些存储***中,数据块被称为集群。在例如那些与UNIX、Linux或类似操作***介接的其它存储***中,数据块简称为块。块或数据块或集群表示存储媒体上由存储管理器管理的最小存储空间物理量,所述存储管理器为例如存储控制器、存储***、存储单元、存储装置或其类似物。
在一些实施例中,存储控制器104可配置成将数据存储在一个或多个非对称一次写入存储媒体,例如存储器裸片106内的固态存储存储器单元上。如本文中所使用,“一次写入”存储媒体是指每次在上面写入或编程新数据时被重新初始化(例如,擦除)的存储媒体。如本文中所使用,“非对称”存储媒体是指对于不同存储操作具有不同时延的存储媒体。许多类型的固态存储媒体(例如,存储器裸片)是非对称的;例如,读取操作可能比写入/编程操作快得多,且写入/编程操作可能比擦除操作快得多(例如,读取存储媒体可能比擦除快数百倍,且比编程存储媒体快数十倍)。
存储器裸片106可以分割成可以作为群组擦除的存储器分区(例如,擦除块),以便尤其考虑到存储器裸片106或其类似物的非对称性质。“擦除块”是指逻辑擦除块或物理擦除块。在一个实施例中,物理擦除块表示给定存储器裸片内的可以给定时间擦除(例如,由于存储器裸片上的存储单元的布线)的最小存储单元。在一个实施例中,逻辑擦除块表示响应于接收擦除命令而可通过存储控制器擦除的最小存储单元或存储块。在此类实施例中,当存储控制器接收指定特定逻辑擦除块的擦除命令时,存储控制器可同时擦除逻辑擦除块内的每一物理擦除块。应注意,给定逻辑擦除块内的物理擦除块可以视为在物理地址空间内为连续的,即使其驻存在单独的裸片中。因此,术语“连续”可不仅可应用于存储于相同物理介质内的数据,且还可应用于存储于单独媒体内的数据。
因而,就地修改单个数据段可能需要擦除包括数据的整个擦除块,并将经过修改的数据连同原始不变数据一起重写到擦除块。这可能带来低效的写入放大,从而可能过度损耗存储器裸片106。“写入放大”是指非易失性存储装置上进行的确切地说引起比第一情况下的最初写入数据更多次数的写入任何数据和用户数据的写入/编程操作的测量。在某些实施例中,写入放大可计数由非易失性存储装置进行的写入操作的数目以管理和保持存储于非易失性存储装置上的数据。在其它实施例中,写入放大测量数据量、位数、书写超出非易失性存储装置上初始存储的数据的书写。
因此,在一些实施例中,存储控制器104可配置成异地写入数据。如本文中所使用,“异地”写入数据是指将数据写入到不同媒体存储位置,而非“就地”覆写数据(例如,覆写数据的原始物理位置)。异地修改数据可以避免写入放大,这是由于无需擦除和复制具有待修改数据的擦除块上的现有有效数据。此外,异地写入数据可以从许多存储操作的时延路径中去除擦除(例如,擦除时延不再是写入操作的关键路径的部分)。
通过存储管理器管理数据块具体包含针对读取操作、写入操作或维持操作,对特定数据块进行寻址。块存储装置可使可用于遍及存储媒体的用户数据存储的n个块与逻辑块地址相关联,从0到n编号。在某些块存储装置中,逻辑地址可介于每一卷或分割区0到n的范围变化。
在常规块存储装置中,逻辑地址直接映射到物理存储装置媒体上的特定数据块。在常规块存储装置中,每一数据块映射到物理存储媒体上的物理扇区的特定集合。然而,某些存储装置并不直接或必定使逻辑地址与特定物理数据块相关联。这些存储装置可以仿真常规块存储接口以维持与块存储客户端114的兼容性。
在一个实施例中,存储控制器104提供块I/O仿真层,其充当块装置接口或API。在这个实施例中,存储客户端114通过这一块装置接口与存储装置通信。在一个实施例中,块I/O仿真层根据这一块装置接口从存储客户端114接收命令和逻辑地址。因此,块I/O仿真层提供与块存储客户端114的存储装置兼容性。
在一个实施例中,存储客户端114通过包括直接接口的主机接口与存储控制器104通信。在这个实施例中,存储装置直接交换特定于非易失性存储装置的信息。“非易失性存储装置”是指配置成在去除主电源后保持用于表示零或一的二进制值的可改变的物理特征的任何硬件、装置、组件、元件或电路。非易失性存储装置的实例包含(但不限于)硬盘驱动器(HDD)、固态驱动器(SSD)、非易失性存储器媒体以及类似物。
使用直接接口的存储装置可以使用多种组织构造来将数据存储于存储器裸片106中,所述组织构造包含(但不限于)块、扇区、页、逻辑块、逻辑页、擦除块、逻辑擦除块、ECC码字、逻辑ECC码字或以有利于存储器裸片106的技术特性的任何其它格式或结构。
存储控制器104从存储客户端114接收逻辑地址和命令,并进行与存储器裸片106相关的对应操作。存储控制器104可支持块I/O仿真、直接接口或两个。
图2中展示适用于实施某些实施例的非易失性存储器***。主机***200将数据存储到非易失性存储装置202中且从非易失性存储装置202检索数据。非易失性存储装置202可以嵌入于主机***200中或可以卡或其它可去除的驱动器形式存在,例如通过机械和电接头以可拆卸方式连接到主机***200的固态磁盘(SSD)。主机***200可以是多个固定或便携式数据产生装置中的任一个,例如个人计算机、移动电话、个人数字助理(PDA)或其类似物。主机***200经由通信通道204与存储装置通信。
非易失性存储装置202含有存储控制器206和非易失性存储器208。如图2中所展示,存储控制器206包含处理器210和控制器存储器212。处理器210可包括微处理器、微控制器、专用集成电路(ASIC)、现场可编程门阵列、逻辑数字电路、或其它目前已知或随后研发的逻辑处理能力。控制器存储器212可包含例如随机存取存储器(RAM 214)的易失性存储器和/或非易失性存储器,以及用于处理存储器管理的处理器可执行指令216。RAM214可包含一个或多个多种类型的RAM中的任一个,例如静态RAM(SRAM)或动态RAM(DRAM)。
如下文更详细地论述,非易失性存储装置202可包含用于存储器管理的功能。在操作中,处理器210可执行存储器管理指令(其可驻存于指令216中)用于存储器管理功能的操作。存储器管理功能可控制非易失性存储装置202内的非易失性存储器208的一个或多个部分的分配。
非易失性存储器208可包含非易失性存储器媒体(例如闪存存储器)。一个或多个存储器类型可以包含于非易失性存储器208中。存储器可包含存储器阵列108。在非易失性存储器208包含闪存存储器作为非易失性存储器的实施例中,存储器阵列108可由相同类型的闪存存储器单元或不同类型的闪存存储器单元组成。举例来说,存储器阵列108可由单层级单元(SLC)类型闪存和每单元容量具有两个或更多个位的多层级单元(MLC)类型闪存存储器两个组成以利用SLC闪存的较高写入速度和MLC闪存的较高密度。存储器阵列108还涵盖闪存存储器类型的不同组合。另外,非易失性存储器208还可包含易失性存储器,例如多种形式的随机存取存储器中的任一种(RAM 232)。
非易失性存储器208的存储器阵列108可包含各自由一组页组成的闪存存储器的物理块,其中闪存存储器的物理块(还被称作擦除块)是一组页且页是存储器中的最小写入单元。存储器中的物理块包含表示为针对存储客户端(例如文件***224)的逻辑块的操作块。非易失性存储装置202可呈便携式闪存驱动器、整合式固态驱动器或多种已知闪存驱动器格式中的任一种的形式。在又其它实施例中,非易失性存储装置202可仅包含具有一个或多个分割区的单一类型的闪存存储器。
再次参看图2,主机***200可包含运行一个或多个应用程序220的处理器218。当待将数据存储于非易失性存储装置202中或从所述非易失性存储装置202检索数据时,应用程序220通过一个或多个操作***应用编程接口(API)222与文件***224通信。文件***224可以是在处理器218上执行的软件模块,且管理非易失性存储装置202中的文件。文件***224管理逻辑地址空间中的数据集群。文件***224可以是电路、软件,或电路和软件的组合。因此,文件***224可以是可由主机***200的处理器执行的独立芯片或软件。主机***200上的存储装置驱动器226转译来自文件***224的指令以经由主机***200与非易失性存储装置202之间的通信通道204传输。用于经由通信通道204通信的接口可以是多种已知接口中的任一种,例如SD、MMC、USB存储装置、SATA和SCSI接口。主机***200利用文件***数据结构来保持已由主机***200指派到数据的所有逻辑块地址(LBA)的逻辑地址范围。
除了可以存储于非易失性存储装置202上的闪存存储器中的用户数据和主机产生的文件***数据结构之外,存储装置自身存储并维持地址映射表228、逻辑到物理映射表或追踪由主机文件***供应的逻辑地址和存储装置保持数据的物理地址的其它数据结构。可将主要逻辑到物理映射表,有时被称作地址映射表228存储于存储器阵列108中。可将地址映射表228的一部分的复本高速缓冲于非易失性存储装置202的RAM 214中作为映射表高速缓存230以更快存取逻辑到物理映射信息。“映射表高速缓存”是指配置成使LBA和/或LBA范围与物理块地址和/或物理块地址范围相关联的数据结构。
在非易失性存储装置202内,存储控制器206可充当所公开设备的处理器。控制器存储器212可存储指令216,所述指令216在由存储控制器206执行时将设备配置成接收与第一读取命令相关联的第一逻辑地址,其中映射表高速缓存230的第一区段包括第一逻辑地址。非易失性存储装置202可进一步接收与第二读取命令相关联的第二逻辑地址,其中地址映射表228的第二区段包括第二逻辑地址。存储控制器206可响应于映射表高速缓存230未能包含第二区段且响应于在第二逻辑地址之前接收第一逻辑地址而增大使第一区段与第二区段相关联的相关性度量。存储控制器206可因此基于相关性度量来管理映射表高速缓存230。
图3示出根据所要求解决方案的作为配置成实施高速缓存管理策略的存储***300的部分的存储装置302。“高速缓存管理策略”是指用于具有多少高速缓存条目、将高速缓存条目制成多大、何时加载高速缓存条目、加载多少高速缓存条目、何时且如何逐出高速缓存条目以及类似物的方法、规则以及要求集合。在实施例中,本文中所公开的区段包括高速缓存条目。存储装置302包含存储控制器304和非易失性存储器306。非易失性存储器306包含用户数据308和地址映射表310的至少一个完整复本。在某些实施例中,存储控制器304可保持复制地址映射表310的复本以防止发生地址映射表310中的数据的可能讹用。在某些实施例中,地址映射表310还可被称作组分配表(GAT表)。
存储控制器304包含高速缓存管理器312、易失性存储器314及输入/输出接口316。输入/输出接口316从主机接收存储命令且针对每一命令将数据和/或响应返回到主机。存储控制器304使用由高速缓存管理器312提供的物理地址来服务存储命令(例如,读取命令、写入命令、存储装置302维持操作)。易失性存储器314通常大小受限且存储映射表高速缓存318。
“存储命令”是指存储控制器服务的任何命令,包含由存储控制器外部的存储装置或主机发布的命令以及存储控制器内部的组件或模块发布的任何命令。存储命令的实例包含(但不限于)读取命令、写入命令、状态命令、测试模式命令、垃圾收集(数据迁移命令)、读取清理(存储于存储器单元中的数据值的更新)命令以及类似物。映射表高速缓存318容纳存储于地址映射表310中的一部分数据(例如,组织成高速缓存条目(例如区段)的数据的复本)。
高速缓存管理器312处理映射表高速缓存318内的区段的加载、卸载以及代替。卸载区段或代替区段被称作逐出。高速缓存管理器312可使用某些准则来确定逐出哪种区段。高速缓存管理器312可基于满足逐出阀值的一个或多个相关性度量来使用逐出阀值。如果区段的LBA具有满足逐出阀值的相关性度量,那么从映射表高速缓存逐出区段。“阀值”是指高于或低于其时满足条件或将出现相关事件的设定。“逐出阀值”是指定义相关性度量的阀值,使得当相关性度量处于或低于逐出阀值时,相关性度量满足逐出阀值。在一个实施例中,请求第一LBA后接特定第二LBA,相关性度量增大更多倍。在另一实施例中,如果在特定时间窗口内由第二LBA请求第一LBA,那么相关性度量可能仅增大。
存储控制器304另外包含易失性存储器314,其配置成存储包括区段集合的映射表高速缓存318。输入/输出接口316配置成接收包括逻辑地址的读取命令,所述逻辑地址独特地识别存储于非易失性存储器上的数据块集合。在一个实施例中,存储装置302还可包含由地址映射表310和用户数据308构成的非易失性存储器306。
图4描绘地址映射表400的一个实施例。在一个实施例中,地址映射表400可由存储控制器304的高速缓存管理器312维持以将LBA或其它逻辑地址映射到非易失性存储器306上的物理位置。在所描绘实施例中,地址映射表400是具有若干条目的B树。在所描绘实施例中,地址映射表400的节点包含对非易失性存储器306中的物理位置的直接参考。举例来说,这展示于具有两个条目的节点402中,每一条目包含由字母标示(即,“A”和“M”)指示的LBA范围404和物理块地址406。
在所示出的实施例中,LBA范围404(即,“202”到“207”)可对应于由“202”到“207”的连续全部数字识别的逻辑块地址集合。区段0 410和区段1 412中的每一个包括一个或多个节点402且由此也包含表示存储于非易失性存储器306上的地址映射表400的一部分的至少一个LBA范围404。
在其它实施例中,地址映射表400可包含映射到反向映射中的条目的链路或其类似物。在不同实施例中,地址映射表400可由或不由反向映射使用。在其它实施例中,地址映射表400中的参考可包含α-数值的特征、十六进制的特征、指标、链路以及类似物。
在所描绘实施例中,地址映射表400包含多个节点。在所描绘实施例中,每一节点能够存储两个条目。在其它实施例中,每一节点可能够存储更大数目的条目,每一层级处的条目数目可通过使用或其类似物随地址映射表400生长或收缩而变化。
在所描绘实施例中,每一条目将LBA的可变长度范围映射到非易失性存储器306中的物理位置。此外,尽管在所描绘实施例中,LBA的可变长度范围由起始地址和结束地址表示,但在其它实施例中,LBA的可变长度范围可由起始地址和长度或其类似物表示。在另一实施例中,替代存储LBA的可变长度范围,地址映射表400可将单一LBA或其它逻辑地址存储在条目中作为数据值和/或相关元数据的起始地址。
在示出的实例中,地址映射表400由树数据结构表示,可将类似树数据结构维持在高速缓存管理器312内和/或非易失性存储器306上。在树结构中,左侧侧边上的节点402可包含小于根节点408的起始地址的所有LBA。举例来说,这一实例中的起始LBA是范围205到207内的205。根节点408还包含LBA范围209到212。如所示出,左侧子树中的每一节点具有小于205的LBA值且右侧子树中的每一节点具有大于212的LBA值。
节点402可存储一个或多个LBA范围404。举例来说,节点402的每一条目可包括所展示的LBA范围404和物理块地址406。高速缓存管理器312可将地址映射表400分割划分成区段,例如区段0 410和区段1 412。每一区段可包括一个或多个LBA范围,所述一个或多个LBA范围一起表示存储于非易失性存储媒体上的地址映射表400的一部分。
在一个实施例中,首字母‘A’到‘M’可表示存储对应LBA范围的数据的非易失性存储器306中的逻辑或物理擦除块。“物理擦除块”是指可以给定时间擦除(例如,由于存储器裸片上的存储单元的布线)的给定存储器裸片内的最小存储单元。在其它实施例中,首字母可表示非易失性存储器306的其它物理地址或位置。
在所描绘实施例中,地址映射表400中的会员资格表示非易失性存储器306中的会员资格(或存储)。在另一实施例中,条目可进一步包含非易失性存储器306是否存储对应于LBA范围内的逻辑块的数据、反向映射的数据和/或其它数据的指示符。
图5示出根据一个实施例的映射表高速缓存500。映射表高速缓存500可以填充有至少两个区段,例如图4中示出的区段0 410和区段1 412。每一区段可包括至少一个逻辑地址,例如LBA或LBA范围;及用于存储于非易失性存储媒体上的数据块的对应物理地址。在一个实施例中,区段包括一个或多个节点402。高速缓存管理器312可使用映射表高速缓存500来追踪对于映射表高速缓存500内的区段的命中率。在一个实施例中,命中率是每当请求LBA作为存储操作的部分时递增的数值且在区段中发现LBA与物理地址之间的映射。图5示出区段0命中率502和区段1命中率504。
在某些实施例中,在请求区段中所提及的LBA由主机请求或由高速缓存管理器312接收之前,高速缓存管理器312可将区段加载到映射表高速缓存500中。在请求接收区段的LBA之前加载区段的这一进程被称作预取。在一个实施例中,高速缓存管理器312可基于满足预取阀值的相关性度量来将区段预取到映射表高速缓存500中。“预取阀值”是指定义相关性度量的阀值,使得当相关性度量处于或高于预取阀值时,相关性度量满足预取阀值。
另外或替代地,高速缓存管理器312可响应于逻辑地址(例如LBA范围)具有满足逐出阀值的相关性度量而从映射表高速缓存500逐出区段。相关性度量与逻辑地址对,例如LBA范围相关联。在某些实施例中,如果相关性度量低于逐出阀值,那么高速缓存管理器312可配置成从映射表高速缓存500逐出区段。在此类实施例中,低于逐出阀值的LBA范围对的相关性度量可以意味着请求的第一LBA范围接着请求的第二LBA范围之间的相关性是较低或较弱的。因此,当LBA范围对的相关性度量低于逐出阀值时,高速缓存管理器312可逐出包含所述LBA范围对中的第一LBA范围的区段。
举例来说,假设相关性度量是整数且逐出阀值是整数,例如10。当映射表高速缓存中的区段的LBA范围的相关性度量小于10时,高速缓存管理器312逐出那个区段。
另外,高速缓存管理器312可使用区段的LBA范围的相关性度量以进行其它操作。举例来说,高相关性度量可表示强相关性或高相关性。因此,高速缓存管理器312可基于映射表高速缓存中的区段的一个或多个相关性度量来配置或调节存储控制器管理表。
在一个实施例中,高速缓存管理器312可基于相关性度量来改变如何组织区段以及将何种LBA包含于区段中。举例来说,相关性度量表示在第一LBA范围后将请求第二LBA范围可能程度。如果第一LBA范围包含在映射表高速缓存中的区段中且第二LBA范围包含在未在映射表高速缓存中的第二区段中,那么高速缓存管理器312可确定应合并两个区段中的每一个中的LBA范围。
用于进行此组合的候选区段可以是具有高于某一阀值的相关性度量的LBA范围。举例来说,如果LBA范围A在区段0 410中且LBA范围B不在区段0 410或区段1 412中,但代替地在区段4(未显示)中且存储于地址映射表310中且LBA范围A具有在0到1比例尺上的相关性度量0.8,那么高速缓存管理器312可将区段0 410和区段4合并成新区段并将新区段存储在映射表高速缓存500中。
在另一实施例中,高速缓存管理器312可改变区段的大小,使得其包含更多或更少LBA范围。举例来说,如果所有(但一个)区段的LBA范围包含在0到1比例尺上的大于0.5的相关性度量,那么高速缓存管理器312可减小所有区段的大小并去除给定区段中具有小于0.5的相关性度量的LBA范围,使得区段仅包含具有大于0.5的相关性度量的LBA范围。相反地,高速缓存管理器312可增大区段大小,使得将具有带更高相关性度量的LBA范围的区段存储于映射表高速缓存500中。
在一个实施例中,指令可配置存储装置以将映射表高速缓存500填充有至少两个区段,例如所展示的区段0及区段1。每一区段可包括与存储于非易失性存储媒体内的数据块的一个或多个物理地址对应的一个或多个逻辑地址,例如LBA或LBA范围。映射表高速缓存500可进一步用于追踪对于映射表高速缓存500中的每一区段的命中率,例如所显示的区段0命中率502和区段1命中率504。
图6示出根据一个实施例的LBA相关性表600。“LBA相关性表”是指配置成追踪、记录或监测第一LBA或LBA范围与第二LBA或LBA范围之间的关系和指示两个LBA或LBA范围之间的关系的强度或权重的相关性度量的数据结构。所属领域的技术人员将认识到,LBA相关性表不一定仅实施为一个表结构而可包括多种数据结构,包含阵列、列表、数据库、文件、暂存器集合、包括行和列的表结构以及类似物。
LBA相关性表600的列可包括上一LBA存取602、当前LBA存取604以及相关性度量606。上一LBA存取602可以是上一存取或接收用于服务或由主机请求的LBA或LBA范围。当前LBA存取604可以是当前由主机存取或服务或请求的LBA或LBA范围。高速缓存管理器312可使用LBA相关性表600来追踪一个LBA或LBA范围(例如LBA范围“A”)的存取接着特定其它LBA(例如LBA范围“B”)的存取的频繁程度。LBA相关性表600还可追踪请求的反向顺序,LBA范围“B”的存取接着存取LBA范围“A”的频繁程度等等。在一个实施例中,相关性度量606数值上表示“A”存取接着“B”存取等的相关性,且可以如关于下文图7所描述递增和递减。
LBA相关性表600的每一行存储一对LBA(上一LBA存取602和604)的相关性度量。在示例LBA相关性表600中,示出LBA“A”接着LBA“B”对、LBA“B”接着LBA“A”对以及LBA“D”接着LBA“E”对。当参考特定行的相关性度量时,LBA相关性表600的其它行各自包含上一LBA存取602和当前LBA存取604,所述上一LBA存取602和当前LBA存取604一起为除所参考的相关性度量的行的对以外的一对其它逻辑地址。
如在所示出的实施例中,相关性度量606可以是0与1之间的十进制值,其中值0表示无相关性且值1表示完整相关性。也就是说,具有相关性度量606 1的LBA对(例如图式中的“A”和“B”)可指示LBA“A”的每一存取接着LBA“B”的存取。LBA“D”的存取接着LBA“E”的存取的相关性度量606值0.10可指示仅10%的对LBA“D”的存取接着对LBA“E”的存取。
在其它实施例中,相关性度量可以使用不同比例尺进行计算,且一些相关性度量可以是负值以及正值。所示出的实施例仅是一个实例,且不意图作为所公开解决方案的限制。
在一个实施例中,高速缓存管理器312使用LBA相关性表600来定义、组织以及管理映射表高速缓存318内的区段。举例来说,高速缓存管理器312可组织区段,使得将具有更高相关性度量的更多LBA范围分组到相同区段中。以这种方式,高速缓存管理器312可使用相关性度量使映射表高速缓存318内的区段相关联,同时相关性度量直接使一个LBA范围(上一LBA存取602)与另一LBA范围(当前LBA存取604)相关。举例来说,高速缓存管理器312可基于相关性度量的值当中的共性来组织区段。
图7示出根据一个实施例的读取命令追踪700。所示出的读取命令追踪700包含四种不同情况:情况1:在相关性窗口702内在A后存取B;情况2,在相关性窗口704内在B后存取A;情况3,在相关性窗口706外部在A后存取B;及情况4,在反相关性窗口708内在B后存取A。
当在相关性窗口702内在A后存取B时,可在时间t0时存取与地址映射表的第一读取命令和第一区段相关联的第一逻辑地址“A”,如由LBA A存取710所示出。“相关性窗口”是指时间跨度,其包含第一逻辑地址X,例如单一逻辑块地址(LBA)、LBA范围的接收,或参考第一逻辑地址X的存储命令的接收,接着第二逻辑地址Y(例如单一LBA、LBA范围)的接收,或参考第二逻辑地址Y的另一存储命令的接收,使得在所述顺序下,第一逻辑地址X的接收接着第二逻辑地址Y的接收表示X与Y之间的顺序关系以及将来重复的可能性。可以任何时间单位,包含纳秒、微秒、秒、分钟、小时、天、周或其类似物测量相关性窗口。相关性窗口是时间跨度,其配置成使得在相关性窗口期间以时间顺序接收、识别、或请求的两个逻辑地址指示针对两个逻辑地址的请求的顺序中的关联或相关性。确切地说,两个逻辑地址的接收顺序可以依赖于预测将来将以所述相同顺序接收、请求或识别的相同两个逻辑地址的可能性。
在稍后时间t1时,可接收与地址映射表的第二读取命令和第二区段相关联的第二逻辑地址“B”作为LBA B存取712。当在LBA B存取712之前出现LBA A存取710时,使第一区段与第二区段相关联的相关性度量可能增大。第一逻辑地址和第二逻辑地址可各自映射到地址映射表内的物理地址,且映射表高速缓存可配置成存储两个或更多个区段,其中基于相关性度量来管理映射表高速缓存。在一个实施例中,可将递增加权因子应用于相关性度量,使得相关性度量响应于LBA B存取712在横跨LBA A存取710和LBA B存取712两个的相关性窗口714内出现而增大。这是通过下文等式1来描述:
W(A到B):W(A到B)+Δ
等式1
其中W(A到B)是直接在LBA B存取712之前出现的LBA A存取710的相关性度量,且Δ是递增加权因子。“因子”是指定义量、变量或公式使得将因子应用于值或由值表示的关系增大或减小所述值。在一个实施例中,与因子合并的值是相关性度量。
因子还可被称作权重或加权因子,这是因为其应用/与值合并增大或减小值的量值。其中值表示关系,这种增大或减小类似于增大或减小两个事物之间的关系的强度、连接、关联。“递增加权因子”是指增大相关性度量的量值的因子。
当在相关性窗口704内在B后存取A时,在一些实施例中,相关性度量可响应于t1时出现的LBA A存取710在t0时的LBA B存取712之后而减小。减小相关性度量可包括如通过下文等式2所描述的应用减小加权因子:
W(A到B):W(A到B)–Δ/10
等式2
其中W(A到B)是直接在LBA B存取712之前出现的LBA A存取710的相关性度量,且Δ/10是减小加权因子。“减小加权因子”是指减小相关性度量的量值的因子。应注意,可以这种方式减小W(A到B),即使W(B到A)或在LBA A存取710之前出现的LBA B存取712的相关性度量增大,如在用于W(A到B)的相关性窗口702内在A后存取B中所示出。在一些实施例中,相关性度量可响应于映射表高速缓存未能包含第一区段且响应于LBA B存取712在LBA A存取710之前出现而减小。还应注意,减小加权因子可并入调谐参数。“调谐参数”是指包含权重参数、区段大小、映射表高速缓存大小、滑动回望窗口的大小以及类似物的可配置参数。
当在相关性窗口706外部在A后存取B时,可将零加权因子应用于相关性度量,使得相关性度量响应于根据t0时的LBA A存取710的接收测量的t1时的LBA B存取712属于相关性窗口714外部而不变。“零加权因子”是指当应用于相关性度量时未引起相关性度量的量值改变的因子。此零加权因子的应用可如下文等式3中所展现:
W(A到B):W(A到B)+0
等式3
其中在反相关性窗口708内在B后存取A,在一些实施例中,响应于在横跨LBA B存取712和LBA A存取710的接收的反相关性窗口716内在t1时的LBA A存取710之前在t0时接收LBA B存取712,可通过应用减小加权因子(如等式2中所展示)来减小相关性度量。先前所描述的相关性窗口714可以小于这种情况的反相关性窗口716。“反相关性窗口”是指将两个逻辑地址的相对顺序关系表示为关于相关性窗口内的两个逻辑地址的顺序的相关性窗口类型。具体来说,“非相关性窗口”是指时间跨度,其包含第一逻辑地址X,例如单一逻辑块地址(LBA)、LBA范围的接收,或参考第一逻辑地址Y的存储命令的接收,接着第二逻辑地址X(例如单一LBA、LBA范围)的接收,或参考第二逻辑地址X的另一存储命令的接收,使得在所述顺序下,第一逻辑地址Y的接收接着第二逻辑地址X的接收表示逻辑地址X与逻辑地址Y之间的减小或减弱的顺序关系,在所述顺序(X且随后Y)中,具有将来重复的可能性。可以任何时间单位,包含纳秒、微秒、秒、分钟、小时、天、周或其类似物测量非相关性窗口。非相关性窗口是时间跨度,其配置成使得在非相关性窗口期间以时间顺序接收、识别、或请求的两个逻辑地址指示针对两个逻辑地址的接收或请求的相对顺序的减小或减弱的关联或相关性。确切地说,反相关性窗口内的两个逻辑地址的接收顺序可以依赖于减小将来将以相对相同顺序接收、请求或识别相同两个逻辑地址的可能性预测。
图8示出根据所要求解决方案的作为配置成管理映射表高速缓存816的存储***800的部分的存储装置802。存储装置802包含存储控制器804和非易失性存储器806。非易失性存储器806包含所存储的用户数据808和地址映射表810的至少一个完整复本。在某些实施例中,地址映射表810还可被称作组分配表(GAT表)。存储控制器804另外包含易失性存储器814,其配置成存储包括区段集合的映射表高速缓存816。
存储控制器804包含高速缓存管理器812、易失性存储器814及输入/输出接口818。输入/输出接口818从主机接收存储命令824并针对每一命令将数据和/或响应返回到主机。输入/输出接口818可配置成接收存储命令824,所述存储命令824包括独特地识别存储于非易失性存储器806上的数据块集合的逻辑地址,存储控制器804使用由高速缓存管理器812提供的物理地址来服务存储命令824(例如,读取命令826、写入命令828、存储装置维持操作以及类似物)。易失性存储器814通常大小受限且存储映射表高速缓存816。映射表高速缓存816可包括区段834集合,区段834各自包括LBA 830与物理块地址832之间的地址映射。
高速缓存管理器812配置成将区段从非易失性存储器806中的地址映射表810加载到易失性存储器814中的映射表高速缓存816中。高速缓存管理器812配置成将易失性存储器814映射表高速缓存816的经修改区段存储于非易失性存储器806地址映射表810中。高速缓存管理器812包含高速缓存区段管理器820和高速缓存加载器822。
“高速缓存加载器”是指被配置、编程、设计、布置或工程改造成将数据从非易失性存储媒体加载到高速缓存的任何硬件、软件、固件、电路、电子组件、模块、逻辑、装置或设备,所述数据可以存储在易失性存储媒体中。高速缓存加载器可将数据加载于固定或可变大小的部分或数据块中。在一个实施例中,高速缓存加载器将数据装载到呈固定大小的高速缓存,例如区段中。另外或替代地,在一个实施例中,高速缓存加载器可从存储于非易失性存储媒体上的地址映射表中撷取非高速缓存区段,并将非高速缓存区段加载到高速缓存中。高速缓存加载器822配置成响应于高速缓存未命中和填充高速缓存而基于一个或多个相关性度量且基于存储命令(例如,读取命令或写入命令)的逻辑地址来确定高速缓存逐出候选者,且配置成利用可对应于存储命令的逻辑地址的替代区段来代替映射表高速缓存816中的高速缓存逐出候选者。在另一实施例中,胜于高速缓存加载器822,高速缓存管理器812可利用替代区段来代替高速缓存逐出候选者。在一个实施例中,高速缓存加载器822基于区段的满足逐出阀值的一个或多个相关性度量来识别高速缓存逐出候选者。
“存储命令”是指与存储操作相关的任何命令。存储命令的实例包含(但不限于)读取命令、写入命令、管理命令、维持命令、诊断命令、测试模式命令及存储控制器可从主机接收或发布到另一组件、装置或***的任何其它命令。“读取命令”是指从存储器单元读取数据的存储命令类型。“写入命令”是指配置成指导接受体将一个或多个数据块写入或存储于永久性存储媒体,例如硬盘驱动器、非易失性存储媒体或其类似物上的存储命令。写入命令可包含可引起将数据写入到存储装置的物理存储媒体的任何存储命令。写入命令可包含足够数据来填充一个或多个数据块,或写入命令可包含足够数据来填充一个或多个数据块的一部分。在一个实施例中,写入命令包含起始LBA指示写入到存储媒体上的数据的LBA数目的计数。
逐出阀值是定义应何时从映射表高速缓存逐出区段的准则。具体来说,在一个实施例中,逐出阀值定义相关性度量应保持高于以避免处映射表高速缓存逐出的层级。在某一实施例中,逐出阀值是由存储装置802服务的存储命令所参考的区段以避免从映射表高速缓存逐出的最小次数数目。换句话说,在某些实施例中,逐出阀值可以是相关性度量应达到或超出的最小层级,否则将从映射表高速缓存逐出区段。
在所公开的***中,高速缓存区段管理器820可配置成管理LBA相关性表,例如图6中示出的LBA相关性表。LBA相关性表可基于针对对应于多个区段834的LBA 830的读取命令826请求来包括多个区段中的每一个的相关性度量。高速缓存加载器822可配置成在非高速缓存的区段838具有比映射表高速缓存816中的驻存区段836和其它区段834的一个或多个相关性度量更高的相关性度量时从非易失性存储器806的地址映射表810撷取非高速缓存的区段838。“非高速缓存的区段”是指不驻存在高速缓存,非依赖型高速缓存、主高速缓存或高速缓存层次中的高速缓存层中的区段。“驻存区段”是指存储、加载或另外占据高速缓存和/或高速缓存的存储器的区段。
图9和图10描绘地址映射表900和映射表高速缓存1000的额外的实施例。基于相关性度量,高速缓存管理器可调节区段大小、定义和/或组成以改良存储器装置的性能。高速缓存管理器可动态地“在运行中”进行这些调节。举例来说,如图4中所示出的区段0 410和区段1 412可经调节以形成区段0 902和区段1 904,其中某些LBA范围(例如,具有类似相关性度量的那些LBA范围)经重新分配到如图9中所展示的新区段2 906。
这可允许映射表高速缓存1000保持具有更高命中率的新区段,其可确保高度相关的地址范围良好展现于高速缓存内。举例来说,当如地址映射表400和映射表高速缓存500中所示出定义时,区段0 410和区段1 412可分别具有区段0命中率502和区段1命中率504。然而,高速缓存管理器可确定不同配置的区段可产生具有区段2命中率1006的区段2 906,所述区段2命中率1006高于分别针对新配置的区段0 902和区段1 904的区段0命中率1002和区段1命中率1004。
在一些实施例中,管理映射表高速缓存1000可包括将包括第二逻辑地址的区段预取到映射表高速缓存1000中,其中相关性度量满足预取阀值。映射表高速缓存1000管理还可包括从映射表高速缓存逐出区段,所述逐出区段包括具有满足逐出阀值的相关性度量的逻辑地址。映射表高速缓存1000的管理可包含改变映射表高速缓存的区段的区段大小,例如如所示出的地址映射表400和地址映射表900中所反映,减小区段0 410到区段0 902。
可基于使逻辑地址与第二逻辑地址相关联的相关性度量来配置存储控制器管理表。“存储控制器管理表”是指配置成追踪、记录或监测关于存储控制器的操作的统计、条件和/或设定的数据结构。所属领域的技术人员将认识到,存储控制器管理表可包括用以指多种数据结构(包含包括行和列的结构)的属类名,且可以使用包含阵列、列表、数据库、文件、寄存器集合以及类似物的多种数据结构来实施。
存储控制器管理表的实例包含(但不限于)仍打开的数据块或物理或逻辑擦除块(即,用户可将更多数据写入到其中而无须擦除)、或具有较大数目的失效数据块的物理或逻辑擦除块(即,例如用户删除某物,但所述数据仍在区块中,这是因为您仅可擦除完整块而非部分块)以及类似物的列表。
在某些实施例中,相关性度量可用于作出其它存储控制器管理决策。映射表高速缓存的至少两个区段可基于第一逻辑地址与第二逻辑地址之间的相关性度量和包含于至少两个区段内的一对其它逻辑地址的相关性度量进行合并,如通过将区段0 410和区段1412的部分合并以形成区段2 906所反映。
在本公开内,可以将不同的实体(其可以不同地称作“单元”、“电路”、其它组件等)描述或要求为“配置成”进行一个或多个任务或操作。配置成[进行一个或多个任务]的[实体]的此表述在本文中用于指结构(即,例如电子电路的物理物体)。更具体来说,此表述用于指示这个结构被布置成在操作期间进行一个或多个任务。即使结构当前未***作,也可以将结构称为“配置成”进行一些任务。“配置成将信用分配到多个处理器核心的信用分配电路”意图涵盖例如具有在操作期间进行这种功能的电路的集成电路,即使所论述的集成电路当前未被使用(例如,未连接到电源)也如此。因此,描述或叙述为“配置成”进行一些任务的实体是指物理物体,例如装置、电路、存储可执行以实施任务的程序指令的存储器等。这一短语在本文中并不用于指无形物体。
术语“配置成”并不意指“可配置成”。举例来说,将不认为未编程的FPGA“配置成”进行一些特定功能,尽管其在编程之后可以是“可配置成”进行所述功能的也如此。
在所附权利要求书中结构“被配置成”执行一个或多个任务的叙述明确地不打算为所述权利要求元素援引35U.S.C.§112(f)。因此,本申请中并不另外包含“用于[执行功能]的构件”构造的权利要求书不应依据35U.S.C§112(f)解释。
如本文中所使用,术语“基于”用于描述影响确定的一个或多个因素。这一术语并不排除额外因素会影响确定的可能性。也就是说,确定可能仅仅基于指定因素或基于指定因素以及其它未指定的因素。考虑短语“基于B确定A”。此短语指定B为用于确定A或影响A的确定的因素。此短语并不排除A的确定还可以基于例如C的某一其它因素。这一短语还意图涵盖仅仅基于B确定A的实施例。如本文中所使用,短语“基于”与短语“至少部分地基于”同义。
如本文中所使用,短语“响应于”描述触发效果的一个或多个因素。这一短语并不排除额外因素会影响或以其它方式触发效果的可能性。也就是说,效果可能仅仅响应于那些因素,或可能响应于指定因素以及其它未指定因素。考虑短语“响应于B而进行A”。这一短语指定B为触发A的性能的因素。这一短语并不排除也可以响应于例如C的某一其它因素而进行A。这一短语还意图涵盖仅仅响应于B而进行A的实施例。
如本文中所使用,除非另外陈述,否则术语“第一”、“第二”等用作在其之前的名词标记,且并不暗示任何类型的顺序(例如,空间、时间、逻辑等)。例如,在具有八个寄存器的寄存器组中,术语“第一寄存器”和“第二寄存器”可用于指八个寄存器中的任两个,而非例如仅逻辑寄存器0和1。
当在权利要求书中使用时,术语“或”用作包含性的而非排他性的或。举例来说,短语“x、y或z中的至少一个”意指x、y和z中的任一个,以及其任何组合。
Claims (20)
1.一种方法,其包括:
接收与第一读取命令相关联的第一逻辑地址,所述第一逻辑地址与地址映射表的第一区段相关联;
接收与第二读取命令相关联的第二逻辑地址,所述第二逻辑地址与所述地址映射表的第二区段相关联;
响应于在所述第二逻辑地址之前接收所述第一逻辑地址而增大使所述第一逻辑地址与所述第二逻辑地址相关联的相关性度量;
其中所述第一逻辑地址和所述第二逻辑地址各自映射到所述地址映射表内的物理地址,且映射表高速缓存配置成存储两个或更多个区段;以及
使用所述相关性度量管理所述映射表高速缓存。
2.根据权利要求1所述的方法,其进一步包括响应于在所述第一逻辑地址之前接收所述第二逻辑地址而减小所述相关性度量。
3.根据权利要求2所述的方法,其中减小所述相关性度量进一步包括:
将减小加权因子应用于所述相关性度量,使得所述相关性度量还响应于确定在反相关性窗口内接收所述第一逻辑地址而减小,所述反相关性窗口横跨所述第一逻辑地址和所述第二逻辑地址的接收。
4.根据权利要求2所述的方法,其进一步包括:
响应于在反相关性窗口内在所述第一逻辑地址之前接收所述第二逻辑地址而减小所述相关性度量;且
其中增大所述相关性度量进一步包括响应于在相关性窗口内接收所述第二逻辑地址而增大所述相关性度量。
5.根据权利要求4所述的方法,其中所述相关性窗口小于所述反相关性窗口。
6.根据权利要求1所述的方法,其中增大所述相关性度量进一步包括:
将递增加权因子应用于所述相关性度量,使得所述相关性度量响应于在相关性窗口内接收所述第二逻辑地址而增大,所述相关性窗口横跨所述第一逻辑地址和所述第二逻辑地址的接收。
7.根据权利要求1所述的方法,其中增大所述相关性度量进一步包括:
将零加权因子应用于所述相关性度量,使得所述相关性度量响应于确定在相关性窗口外部接收所述第二逻辑地址而不变,根据所述第一逻辑地址的接收测量所述相关性窗口。
8.根据权利要求1所述的方法,其中管理所述映射表高速缓存包括以下中的一个:
将包括所述第二逻辑地址的区段预取到所述映射表高速缓存中,其中
所述相关性度量满足预取阀值;
从所述映射表高速缓存逐出区段,所述区段包括具有满足逐出阀值的所述相关性度量的逻辑地址;
改变所述映射表高速缓存的区段的区段大小;
基于使所述第一逻辑地址与所述第二逻辑地址相关联的所述相关性度量来配置存储控制器管理表;以及
基于所述第一逻辑地址与所述第二逻辑地址之间的所述相关性度量和包含于所述至少两个区段内的一对其它逻辑地址的另一相关性度量来将所述映射表高速缓存的至少两个区段合并。
9.根据权利要求1所述的方法,其进一步包括:
利用至少两个区段填充所述映射表高速缓存,每一区段包括存储于非易失性存储媒体上的数据块的逻辑地址和对应物理地址;以及
追踪针对所述映射表高速缓存中的每一区段的命中率。
10.根据权利要求1所述的方法,其中所述第一逻辑地址和所述第二逻辑地址包括逻辑块地址(LBA)且每一区段包括一个或多个LBA范围,所述一个或多个LBA范围一起表示存储于非易失性存储媒体上的地址映射表的一部分。
11.一种设备,其包括:
处理器;以及
存储器,其存储指令,所述指令在由所述处理器执行时将所述设备配置成:
接收包括第一逻辑地址的第一读取命令,其中映射表高速缓存的第一区段包括所述第一逻辑地址;
接收包括第二逻辑地址的第二读取命令,其中地址映射表的第二区段包括所述第二逻辑地址;
响应于所述映射表高速缓存未能包含所述第二区段且响应于在接收包括所述第二逻辑地址的第二读取命令之前接收包括所述第一逻辑地址的所述第一读取命令而增大使所述第一区段与所述第二区段相关的相关性度量;以及
基于所述相关性度量管理所述映射表高速缓存。
12.根据权利要求11所述的设备,其中所述指令将所述设备进一步配置成:
响应于所述映射表高速缓存未能包含所述第一区段且响应于在接收包括所述第一逻辑地址的所述第一读取命令之前接收包括所述第二逻辑地址的所述第二读取命令而减小所述相关性度量。
13.根据权利要求12所述的设备,其中减小所述相关性度量进一步包括:
将减小加权因子应用于所述相关性度量,使得所述相关性度量还响应于确定在反相关性窗口内接收所述第一读取命令而减小,所述反相关性窗口横跨所述第一读取命令和所述第二读取命令的接收。
14.根据权利要求12所述的设备,其中所述指令将所述设备进一步配置成:
响应于在反相关性窗口内在接收包括所述第一逻辑地址的所述第一读取命令之前接收包括所述第二逻辑地址的所述第二读取命令而减小所述相关性度量,所述反相关性窗口横跨所述第二读取命令和所述第一读取命令的接收;且
其中增大所述相关性度量进一步包括响应于在相关性窗口内接收所述第二读取命令而增大所述相关性度量,所述相关性窗口横跨所述第一读取命令和所述第二读取命令的接收。
15.根据权利要求11所述的设备,其中增大所述相关性度量进一步包括:
将递增加权因子应用于所述相关性度量,使得所述相关性度量响应于确定在相关性窗口内接收所述第二读取命令而增大,所述相关性窗口横跨所述第一读取命令和所述第二读取命令的接收。
16.根据权利要求11所述的设备,其中增大所述相关性度量进一步包括:
将零加权因子应用于所述相关性度量,使得所述相关性度量响应于确定在相关性窗口外部接收所述第二读取命令而不变,根据所述第一读取命令的接收测量所述相关性窗口。
17.根据权利要求11所述的设备,其中管理所述映射表高速缓存包括以下中的一个:
将包括所述第二逻辑地址的区段预取到所述映射表高速缓存中,其中
所述相关性度量满足预取阀值;
从所述映射表高速缓存逐出区段,所述区段包括具有满足逐出阀值的相关性度量的逻辑地址;
基于使所述第一逻辑地址与所述第二逻辑地址相关联的所述相关性度量来配置存储控制器管理表;以及
基于所述第一逻辑地址与所述第二逻辑地址之间的所述相关性度量和所述至少两个区段的所述相关性度量中的一个或多个来将所述映射表高速缓存的至少两个区段合并。
18.根据权利要求11所述的设备,其中所述指令将所述设备进一步配置成:
利用至少两个区段填充所述映射表高速缓存,每一区段包括一个或多个逻辑地址和存储于非易失性存储媒体上的数据块的对应的一个或多个物理地址;且
追踪针对所述映射表高速缓存中的每一区段的命中率。
19.根据权利要求11所述的设备,其中所述第一逻辑地址和所述第二逻辑地址包括逻辑块地址(LBA)且每一区段包括一个或多个LBA范围,所述一个或多个LBA范围一起表示存储于非易失性存储媒体上的地址映射表的一部分。
20.一种***,其包括:
非易失性存储器,配置成存储地址映射表;
易失性存储器,配置成存储包括区段集合的映射表高速缓存,每一区段包括逻辑块地址(LBA)与物理块地址之间的地址映射;
输入/输出接口,配置成接收包括逻辑地址的存储命令,所述逻辑地址独特地识别存储于所述非易失性存储器上的数据块集合;
高速缓存管理器,配置成将区段从所述非易失性存储器的所述地址映射表加载到所述易失性存储器的所述映射表高速缓存中;
高速缓存区段管理器,配置成基于所述多个区段中的区段的LBA的读取命令请求来管理LBA相关性表,所述LBA相关性表包括多个区段中的每一个的相关性度量;
高速缓存加载器,配置成响应于所述非高速缓存的区段相对于所述映射表高速缓存中的其它区段而具有比驻存区段的一个或多个相关性度量更高的相关性度量而从所述非易失性存储器的所述地址映射表撷取非高速缓存的区段;以及
存储控制器,配置成使用由所述高速缓存管理器提供的物理地址来服务所述存储命令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/788,117 | 2020-02-11 | ||
US16/788,117 US10997080B1 (en) | 2020-02-11 | 2020-02-11 | Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113254358A true CN113254358A (zh) | 2021-08-13 |
Family
ID=75689392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010552338.3A Pending CN113254358A (zh) | 2020-02-11 | 2020-06-17 | 用于地址表高速缓存管理的方法和*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US10997080B1 (zh) |
CN (1) | CN113254358A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115629720A (zh) * | 2022-12-20 | 2023-01-20 | 鹏钛存储技术(南京)有限公司 | 基于闪存为介质的存储设备上的非对称条带化方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11314446B2 (en) * | 2020-06-25 | 2022-04-26 | Micron Technology, Inc. | Accelerated read translation path in memory sub-system |
KR20220067776A (ko) * | 2020-11-18 | 2022-05-25 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
US11494097B2 (en) * | 2020-12-07 | 2022-11-08 | Western Digital Technologies, Inc. | Fast initialization of secure HMB |
US11625323B2 (en) * | 2020-12-07 | 2023-04-11 | Micron Technology, Inc. | Generating and using session tables for session-based memory management |
US11561698B2 (en) * | 2021-04-20 | 2023-01-24 | EMC IP Holding Company LLC | NVMEoF flow control from initiator based on transaction latency |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130297879A1 (en) * | 2012-05-01 | 2013-11-07 | International Business Machines Corporation | Probabilistic associative cache |
US20140013052A1 (en) * | 2012-07-06 | 2014-01-09 | Seagate Technology Llc | Criteria for selection of data for a secondary cache |
US20140013053A1 (en) * | 2012-07-06 | 2014-01-09 | Seagate Technology Llc | Determining a criterion for movement of data from a primary cache to a secondary cache |
US20140129760A1 (en) * | 2012-11-02 | 2014-05-08 | Samsung Electroncs Co., Ltd. | Non-volatile memory system and host configured to communicate with the same |
US20140289451A1 (en) * | 2013-03-20 | 2014-09-25 | Phison Electronics Corp. | Method of recording mapping information, and memory controller and memory storage apparatus using the same |
US20200034299A1 (en) * | 2018-07-25 | 2020-01-30 | SK Hynix Inc. | Memory system and method for operating the same |
CN116340213A (zh) * | 2021-12-22 | 2023-06-27 | 美光科技公司 | 用于快速***启动的数据高速缓存 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5889969A (en) | 1995-03-27 | 1999-03-30 | International Business Machines Corporation | Logical bus structure including plural physical busses for a multiprocessor system with a multi-level cache memory structure |
US5819310A (en) | 1996-05-24 | 1998-10-06 | Emc Corporation | Method and apparatus for reading data from mirrored logical volumes on physical disk drives |
JP4252139B2 (ja) | 1998-12-16 | 2009-04-08 | 株式会社日立製作所 | 記憶装置システム |
US6571318B1 (en) * | 2001-03-02 | 2003-05-27 | Advanced Micro Devices, Inc. | Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism |
US20040109376A1 (en) | 2002-12-09 | 2004-06-10 | Jin-Shin Lin | Method for detecting logical address of flash memory |
US6976147B1 (en) * | 2003-01-21 | 2005-12-13 | Advanced Micro Devices, Inc. | Stride-based prefetch mechanism using a prediction confidence value |
US7120766B2 (en) | 2003-12-22 | 2006-10-10 | Inernational Business Machines Corporation | Apparatus and method to initialize information disposed in an information storage and retrieval system |
US7392340B1 (en) | 2005-03-21 | 2008-06-24 | Western Digital Technologies, Inc. | Disk drive employing stream detection engine to enhance cache management policy |
US8898540B1 (en) | 2010-04-06 | 2014-11-25 | Marvell Israel (M.I.S.L) Ltd. | Counter update through atomic operation |
US10606754B2 (en) | 2012-04-16 | 2020-03-31 | International Business Machines Corporation | Loading a pre-fetch cache using a logical volume mapping |
US9208086B1 (en) | 2014-01-09 | 2015-12-08 | Pure Storage, Inc. | Using frequency domain to prioritize storage of metadata in a cache |
US10268584B2 (en) | 2014-08-20 | 2019-04-23 | Sandisk Technologies Llc | Adaptive host memory buffer (HMB) caching using unassisted hinting |
US10229051B2 (en) | 2015-12-30 | 2019-03-12 | Samsung Electronics Co., Ltd. | Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device |
TWI664568B (zh) | 2016-11-15 | 2019-07-01 | 慧榮科技股份有限公司 | 資料儲存裝置之操作方法 |
US10579538B2 (en) | 2018-02-21 | 2020-03-03 | Western Digital Technologies, Inc. | Predicting addresses in non-volatile storage |
US10963394B2 (en) | 2018-04-16 | 2021-03-30 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
TWI698874B (zh) * | 2018-08-31 | 2020-07-11 | 大陸商合肥沛睿微電子股份有限公司 | 快閃記憶體控制器及相關的存取方法及電子裝置 |
US11016904B2 (en) * | 2018-11-14 | 2021-05-25 | Samsung Electronics Co., Ltd. | Storage device for performing map scheduling and electronic device including the same |
TWI709854B (zh) * | 2019-01-21 | 2020-11-11 | 慧榮科技股份有限公司 | 資料儲存裝置及用於存取邏輯至物理位址映射表之方法 |
KR20200132047A (ko) * | 2019-05-15 | 2020-11-25 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치 |
-
2020
- 2020-02-11 US US16/788,117 patent/US10997080B1/en active Active
- 2020-06-17 CN CN202010552338.3A patent/CN113254358A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130297879A1 (en) * | 2012-05-01 | 2013-11-07 | International Business Machines Corporation | Probabilistic associative cache |
US20140013052A1 (en) * | 2012-07-06 | 2014-01-09 | Seagate Technology Llc | Criteria for selection of data for a secondary cache |
US20140013053A1 (en) * | 2012-07-06 | 2014-01-09 | Seagate Technology Llc | Determining a criterion for movement of data from a primary cache to a secondary cache |
US20140129760A1 (en) * | 2012-11-02 | 2014-05-08 | Samsung Electroncs Co., Ltd. | Non-volatile memory system and host configured to communicate with the same |
US20140289451A1 (en) * | 2013-03-20 | 2014-09-25 | Phison Electronics Corp. | Method of recording mapping information, and memory controller and memory storage apparatus using the same |
US20200034299A1 (en) * | 2018-07-25 | 2020-01-30 | SK Hynix Inc. | Memory system and method for operating the same |
CN116340213A (zh) * | 2021-12-22 | 2023-06-27 | 美光科技公司 | 用于快速***启动的数据高速缓存 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115629720A (zh) * | 2022-12-20 | 2023-01-20 | 鹏钛存储技术(南京)有限公司 | 基于闪存为介质的存储设备上的非对称条带化方法 |
Also Published As
Publication number | Publication date |
---|---|
US10997080B1 (en) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10430084B2 (en) | Multi-tiered memory with different metadata levels | |
US10922235B2 (en) | Method and system for address table eviction management | |
US10838859B2 (en) | Recency based victim block selection for garbage collection in a solid state device (SSD) | |
US10997080B1 (en) | Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address | |
Jiang et al. | S-FTL: An efficient address translation for flash memory by exploiting spatial locality | |
US9378131B2 (en) | Non-volatile storage addressing using multiple tables | |
US10649661B2 (en) | Dynamically resizing logical storage blocks | |
US8949568B2 (en) | Memory storage device, and a related zone-based block management and mapping method | |
US9146688B2 (en) | Advanced groomer for storage array | |
US11747989B2 (en) | Memory system and method for controlling nonvolatile memory | |
US20140229654A1 (en) | Garbage Collection with Demotion of Valid Data to a Lower Memory Tier | |
US11194737B2 (en) | Storage device, controller and method for operating the controller for pattern determination | |
US10936203B2 (en) | Memory storage device and system employing nonvolatile read/write buffers | |
WO2012106362A2 (en) | Apparatus, system, and method for managing eviction of data | |
WO2012116369A2 (en) | Apparatus, system, and method for managing contents of a cache | |
WO2012014140A2 (en) | Logical to physical address mapping in storage systems comprising solid state memory devices | |
JP2022536056A (ja) | 不揮発性メモリにおける摩耗を意識したブロック・モード変換 | |
CN116364148A (zh) | 一种面向分布式全闪存储***的磨损均衡方法及*** | |
US10891057B1 (en) | Optimizing flash device write operations | |
KR20220062629A (ko) | 하이브리드 dimm에서의 비휘발성 메모리를 위한 낮은 레이턴시 캐시 | |
US11663136B2 (en) | Storage capacity recovery source selection | |
US10698621B2 (en) | Block reuse for memory operations | |
US20240012580A1 (en) | Systems, methods, and devices for reclaim unit formation and selection in a storage device | |
US20230236737A1 (en) | Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same | |
EP4220414A1 (en) | Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |