CN116841454A - 应用于存储器的缓存管理方法以及存储器 - Google Patents
应用于存储器的缓存管理方法以及存储器 Download PDFInfo
- Publication number
- CN116841454A CN116841454A CN202210305821.0A CN202210305821A CN116841454A CN 116841454 A CN116841454 A CN 116841454A CN 202210305821 A CN202210305821 A CN 202210305821A CN 116841454 A CN116841454 A CN 116841454A
- Authority
- CN
- China
- Prior art keywords
- cache
- write
- mapping table
- read
- hot spot
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 22
- 238000013507 mapping Methods 0.000 claims abstract description 143
- 239000007787 solid Substances 0.000 claims description 19
- 238000000034 method Methods 0.000 abstract description 18
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 230000006837 decompression Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开一种应用于存储器的缓存管理方法以及存储器。该方法包括:在缓存单元上划分出热点写缓存和随机写缓存;重复累计设定时段内一级映射表中的各个索引地址所对应的写操作数量,根据所对应的写操作数量对一级映射表中的各个索引地址进行从大到小排序,并将写操作数量居前的多个索引地址记为系统热点;对于接收到的写命令,如果其对应的索引地址属于系统热点,则在热点写缓存中分配热点单元格,并将对应的索引地址指向的二级映射表的全部数据载入到热点单元格中,否则,在随机写缓存中分配随机写单元格,并基于写命令向随机写单元格中写入数据。该方法能够减少二级映射表的载入载出操作,有助于提升存储器的读写性能和使用寿命。
Description
技术领域
本发明涉及数据存储技术领域,特别涉及一种应用于存储器的缓存管理方法以及存储器。
背景技术
固态硬盘(SSD,Solid State Drives)是用固态电子存储芯片制作的存储硬盘,存储硬盘包括控制器和存储介质。目前最主流的固态硬盘采用存储介质(flash Memory)作为存储介质来存储数据,例如以NAND flash为例的非易失性存储器。
固态硬盘已经被广泛使用在各种场合,在使用SSD存储写数据时,需要用到FTL(flash Translation Layer,闪存转换层)的映射表,用于记录主机逻辑空间地址到flash闪存物理地址的映射关系。因此,SSD中不仅保存着用户写入的写数据,也保存着维护写数据映射关系的映射表。
目前Dram-less固态硬盘(无DRAM)管理映射表的方法是建立二级映射表,主要是将写数据对应的逻辑地址分组存放在一级映射表中,一级映射表中包括多个数据块对应的逻辑地址,然后建立多个二级映射表,每个二级映射表存储一个数据块对应的逻辑地址和物理地址的映射关系对。对于Dram-less固态硬盘,一级映射表存储在其控制器的缓存单元(缓存单元通常采用SRAM)中,多个二级映射表存储在存储介质中。但是在控制器接收到主机访问命令时,需要将要访问的二级映射表从存储介质载入到缓存单元中,由于缓存单元的容量是有限的,因此当缓存单元的容量被占满时,则需要将一些二级映射表从缓存单元中载出。因此可以理解,二级映射表的载入载出和固态硬盘的访问性能密切相关,减少二级映射表的载入载出操作将有助于提高固态硬盘的访问性能。
发明内容
鉴于上述问题,本发明的目的在于提供一种应用于存储器的缓存管理方法及装置,通过对存储器的缓存单元进行规划和管理,以减少二级映射表的载入载出操作。
根据本发明的第一方面,提供一种应用于存储器的缓存管理方法,所述存储器包括控制器和存储介质,所述控制器包括缓存单元,所述缓存单元存储有一级映射表,所述一级映射表存储有多个索引地址,以指向在所述存储介质上存储的多个二级映射表,所述缓存管理方法由所述控制器执行,包括:
在所述缓存单元上划分出热点写缓存和随机写缓存;
持续累计设定时段内所述一级映射表中的各个索引地址所对应的写操作数量,根据所述各个索引地址所对应的写操作数量对所述一级映射表中的各个索引地址进行从大到小排序,并将所述写操作数量居前的多个索引地址记为系统热点;
对于接收到的写命令,如果其对应的索引地址属于系统热点,则在所述热点写缓存中分配热点单元格,并将对应的索引地址指向的二级映射表的全部数据载入到所述热点单元格中,否则,在所述随机写缓存中分配随机写单元格,并基于所述写命令向所述随机写单元格中写入数据。
可选地,还包括:在所述缓存单元上还划分出读缓存,并在接收到读命令时,从所述读缓存中分配读单元格来载入对应的索引地址指向的二级映射表。
可选地,对于接收到的写命令,如果其对应的索引地址是系统热点,但其对应的索引地址指向的二级映射表已经缓存在所述随机写缓存和/或所述读缓存中,则从所述随机写缓存和/或所述读缓存中将其对应的索引地址指向的二级映射表合并至所述热点单元格中。
可选地,在执行所述在执行所述从所述读缓存中分配读单元格来载入对应的索引地址指向的二级映射表的步骤中,还对二级映射表进行压缩。
可选地,在所述缓存单元上分配固定大小的读单元格,以存储压缩后的二级映射表。
可选地,在所述读缓存中,根据压缩后的二级映射表的大小分配非固定大小的读单元格来存储压缩后的二级映射表。
可选地,还包括:在所述读缓存中,持续累计每个二级映射表在设定时段内的访问量,并在所述读缓存空间不足时,按访问量从小到大的排序优先释放访问量低的读单元格。
可选地,还包括:对基于写命令累计的写操作数量进行数据平滑。
可选地,所述存储器为Dram-less固态硬盘。
根据本发明的第二方面,提供一种存储器,包括:
控制器,与主机连接,用于从所述主机接收写数据;
存储介质,与所述控制器连接,用于存储所述写数据,
所述控制器还包括缓存单元,用于存储与所述写数据对应的一级映射表,所述存储介质还用于存储与所述一级映射表对应的映射表数据,所述控制器用于上述任一项所述的缓存管理方法。
根据本实施例,通过统计写命令的访问次数并将访问次数居前的若干个二级映射表确定为热点,其余为非热点,并为热点分配热点单元格,以存储对应的二级映射表的全部数据,而随机写缓存则根据写命令进行更新,热点单元格存储的二级映射表内的数据永远是最新最全,但随机写缓存的二级映射表可能只是一部分数据,如此确保热点的二级映射表能够停留在缓存中,从而能够减少控制器和存储介质之间的二级映射表的载入载出操作,有助于提升存储器的读写性能和使用寿命。
进一步地,将二级映射表压缩后写入到读缓存中,能够减少写放大,并且由于读写的映射表变小了,还能够降低功耗。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示出了根据本发明实施例的固态硬盘的示意性框图;
图2示出了固态硬盘中的二级映射表的存储方式;
图3是本公开实施例提供的一种应用于存储器的缓存管理方法的流程图;
图4是用于示意本公开实施例的存储方式的示意图;
图5a至图5c是随机写模式、短时间频繁写模式和长时间频繁写模式的柱形图;
图6是本公开一实施例所使用的压缩方法的流程图;
图7是本公开另一实施例所使用的压缩方法的流程图。
具体实施方式
以下将参照附图更详细地描述本发明。在各个附图中,相同的元件采用类似的附图标记来表示。为了清楚起见,附图中的各个部分没有按比例绘制。此外,可能未示出某些公知的部分。
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
图1示出了根据本发明实施例的固态硬盘的示意性框图。
如图1所示,计算机系统100包括主机110和固态硬盘,固态硬盘包括控制器120和存储介质130,控制器120与主机110连接,用于与主机110交换写数据。控制器120连接主机110与存储介质130,将主机110的写数据存入存储介质130。
控制器120包括主机接口121、处理器123、缓存单元124和存储器控制器128。控制系统120的主机接口121连接至主机110,以传输数据和读写指令。处理器123与主机接口121、缓存单元124和存储器控制器128相连接,处理器123对读写指令进行解析并执行读写操作。缓存单元124例如为SRAM,用于存储映射表,存储器控制器128控制写数据的传输和存储。处理器123还用于实现存储器控制的核心软件层,即FTL(flash Translation Layer,闪存转换层),FTL由若干程序组成,处理器123执行程序,使得在接收到读写指令时,能够对指令进行转换,从而完成对存储介质130的访问,因而主机110的文件系统和操作系统可以像访问自己的存储器一样访问存储介质。该FTL还有例如支持坏块管理、损耗均衡、垃圾回收、断电恢复、写平衡技术等特点。
存储介质130例如为闪存芯片阵列。为了提高数据读写性能,控制器120的存储器控制器128可以经由多个通道(例如CH0和CH2)对存储介质130的闪存芯片进行读写,每个通道连接一组闪存芯片。
缓存单元124可以使用SRAM和/或DRAM。比较而言,SRAM作为缓存,具有速度优势,但价格更昂贵且单位空间上存储容量更小。相应地,为了提升缓存空间利用率,Dram-less固态硬盘(无DRAM)采用二级映射表进行地址管理。
如图2所示,先将写数据对应的逻辑地址LAA(logic allocate unit address)进行分组,按照数据块(例如图1中的物理块131和132)进行存储。参见图2中左侧,固态硬盘中所有的逻辑地址被等分成m+1块(0至m)存储至一级映射表中。可以将一级映射表(一级表)看作有m+1个元素的数组L1[m](下标从0开始)。数组L1[m]分别存储有(m+1)个索引地址,该(m+1)个索引地址分别指向(m+1)个单元格,这些单元格位于Dram-less固态硬盘的存储介质上,用于存储一个二级映射表,每个二级映射表包含对应的数据块的逻辑地址和物理地址之间的映射关系。以L1[1]为例,其指向存储介质中的单元格b1,b1内存储着LAA 0~LAA(x-1)和FAA0~FAA(x-1)的映射关系,FAA是Flash Access Agent(物理地址)的缩写。但是由于逻辑地址LAA 0~LAA(x-1)是数值上连续的,因此在一些实施方式中,每个单元格可按照以下方式存储二级映射表:先存储逻辑首地址LAA0(第一个逻辑地址),然后按照顺序依次存储LAA 0~LAA(x-1)对应的FAA0~FAA(x-1)。每个单元格大小固定,例如为4kB,则二级映射表将占用(m+1)*4kB个闪存空间。
现有技术中,控制器120对从主机接收到的写命令,根据写命令从一级映射表中读取对应的索引地址,并判断索引地址所指向的二级映射表是否已经存在于缓存单元124中,如果是,则根据写命令更新缓存单元124中对应的二级映射表,如果否,则为写命令在缓存单元124中另外申请一个缓存单元格c1,该缓存单元格的大小和二级映射表的大小保持一致,然后根据写命令将相应数据写入到缓存单元格c1中,并在适当时候(例如c1已满或者缓存单元不足需要腾出缓存空间)将c1中的数据刷新到b1中。
但是这种按需申请缓存空间的方案,当实时访问一级表非常随机时,会出现频繁的二级映射表的载入载出操作,如此一方面会增加控制器和存储介质之间的带宽占用;另一方面,缓存单元上的二级映射表在数据变化很小时就可能需要存储到存储介质中,这会增大写放大。
图3是本公开实施例提供的一种应用于存储器的缓存管理方法的流程图。包括以下步骤。
在步骤S301中,在缓存单元上划分出热点写缓存和随机写缓存。
在步骤S302中,累计在设定时段内一级映射表中的各个索引地址所对应的写操作数量,根据各个索引地址所对应的写操作数量对一级映射表中的各个索引地址进行从大到小排序,并将写操作数量居前的多个索引地址记为系统热点。
在步骤S303中,对于接收到的写命令,如果其对应的索引地址属于系统热点,则在热点写缓存中分配热点单元格,并将对应的索引地址指向的二级映射表的全部数据载入到热点单元格中,否则,为随机写缓存中分配随机写单元格,并基于写命令向随机写单元格中写入数据。
根据本实施例,通过统计写命令的访问次数并将访问次数居前的若干个二级映射表确定为热点,其余为非热点,并为热点分配热点单元格,以存储对应的二级映射表的全部数据,而随机写缓存则根据写命令进行更新,热点单元格存储的二级映射表内的数据永远是最新最全,但随机写缓存的二级映射表可能只是一部分数据,如此确保热点的二级映射表能够停留在缓存中,从而能够减少控制器和存储介质之间的二级映射表的载入载出操作,有助于提升存储器的读写性能和使用寿命。
但应指出的是,步骤S302和步骤S303并不是顺序执行,步骤S302需要重复执行,例如步骤S302根据不断接收到的写命令计算每隔预设时间间隔(如1s)的各个索引地址所对应的写操作数量,而步骤S303则可在每接收到一个写命令时执行一次。
参考图4所示,可在缓存单元124中申请一个用于存储统计值的数组空间,该数组空间的大小可与一级映射表的表项数目对应,控制器120每接收到一条写命令,则更新写命令所对应的数组空间内的统计值,统计值表示一级映射表中的各个索引地址所对应的写操作数量,对统计值进行从大到小的排序,同时,在缓存单元124中划分出热点写缓存、随机写缓存和读缓存,热点写缓存可由一组热点单元格d1至dm组成,用于缓存统计值居前的m个索引地址指向的二级映射表。对于接收到的任意写命令,如果其对应的索引地址是属于系统热点,即该索引地址属于统计值居前的m个索引地址中的一个,则分配热点单元格来载入该索引地址指向的二级映射表的全部数据,否则,则在随机缓存中分配例如c1至cn这样的随机写单元格来写入写命令的映射关系。
可选地,控制器120可事先设定热点写缓存、读缓存和随机写缓存的比例关系,并根据比例关系进行空间划分。而且应指出的是,为了方便,可将热点单元格d1至dm、随机写单元格c1至cn、读单元格k1至kk设置为大小相同的单元格,例如二级映射表为4K,则热点单元格、随机写单元格和读单元格的大小都是4K,但并不必须如此。
下面基于图4描述读写操作的状态变化流程并相应地如何更新缓存。
某一时刻,控制器120要开始写L1[1](F000)所对应的二级映射表,此时L1[1]不属于系统热点(即不属于排序居前的n个表项),则根据写命令得到一个随机写单元格c1,并根据写命令向c1中写入映射关系数据。
如果随着时间推移,主机针对L1[1]所对应的二级映射表发生连续高频访问,则到某个时刻,计算出L1[1]是当前的系统热点,则控制器120为L1[1]分配一个热点单元格,此时L1[1]所对应的二级映射表可能在随机单元格c1,可能在存储介质130上,如果发生过读操作,则还可能在读缓存的读单元格k1中,也就是说,L1[1]所对应的二级映射表至少存储在这三个存储位置中的,则控制器120相应地从这些存储位置读取数据并合并到热点单元格d1,最终,热点单元格d1中会存储最全最新的二级映射表,同时,控制器120会将L1[1]所对应的随机写缓存和/或读缓存中的L1[3]的二级映射表删除,此时L1[1]指向热点单元格d1和存储介质130上的单元格b1。如此,热点单元格就存储了唯一的L1[1]所对应的最新最全的二级映射表。后续关于L1[1]的二级映射表的读写操作都基于热点单元格进行,也就减少了L1[1]所对应的二级映射表的载入载出操作,这种情况下,系统对L1[1]的读写,就能获得近似包含DRAM方案的读写性能。
随着系统的运行,关于L1[1]的访问量降低,在某个时刻,L1[1]失去热点单元格的使用权,此时需要将L1[1]所占用的热点单元格的数据刷新存储介质中。
但如果随着时间推移,主机针对L1[1]的访问并没有发生连续高频访问,即L1[1]一直未成为系统热点,那么关于L1[1]所对应的二级映射表更新在随机写缓存中进行。当随机缓存内的存储空间不足时,则可能需要将L1[1]所对应的二级映射表刷新到存储介质上并释放其在随机缓存中所占据的随机写单元格,从而使得如果再次需要访问L1[1]所对应的二级映射表还要从存储介质上导入到缓存单元中。
图5a至图5c是随机写模式、短时间频繁写模式和长时间频繁写模式的柱形图,图5a表征某个二级表瞬时大量写入。参考图5a至图5c所示,根据本实施例,只有图5c的这种频繁且均衡的访问的二级映射表会长时间被保存在热点写缓存内,而5a对应的二级映射表则不会到达热点缓存,而图5b对应的二级映射表虽然有可能到达热点缓存但不会持久,但是一旦过了相应时段,则会丢失热点缓存,通过这种方式能够提高读写性能。
可选地,对于基于写命令统计得到的写操作数量,采用类似于数据滤波的方式将统计值进行数据平滑,降低瞬时某个一级表大量数据写入对系统热点值的影响(因为主机对SSD的写入有时就是短时间的使用,比如系统拷贝了一个大文件,数据集中于某个一级表,在拷贝结束后可能很久都不会再有对该一级表的写入了,所以希望将这种情况排除出系统热点)。
对于控制器120接收到的每个读命令,控制器120可以先确定该命令对应的二级映射表是属于系统热点,如果是,则可从相应的热点单元格中读取映射关系数据,如果否,则从存储介质上读取二级映射表,并加载到读缓存的一个读单元例如k1中,如果随着时间的推移,则对应的二级映射表变为系统热点,则就到热点单元格中读取。此外,参考图4所示,读缓存空间有限,随着时间流逝,读缓存可能无法再提供新的单元格,则此时需要释放读单元格,为了这一目的,可根据读命令累计每个二级映射表在设定时段内的访问量,并在读缓存空间不足时,按访问量从小到大的排序优先释放访问量低的读单元格。
在一些实施例中,控制器120从存储介质上读取二级映射表并将二级映射表存储到读单元之前,对二级映射表进行存储。可以设定一个所有二级映射表都能压缩到的压缩率,将这个压缩率和存储介质上用来存储二级映射表的固定单元格的大小相乘,得到固定大小的读单元格的大小。但可选地,根据压缩后的二级映射表的大小在读缓存中动态申请或分配非固定大小的读单元格来存储压缩后的二级映射表。
如图6所示,一个示例性的压缩方法包括以下步骤。
步骤S601中,根据数值上是否连续将多个物理地址划分为至少一个段。
步骤S602中,统计至少一个段的每个段包含的物理地址的个数。
步骤S603中,以存储至少一个段的每个段的起始物理地址及包含的物理地址的个数来代替存储多个物理地址。
在上文提及,二级映射表可存储逻辑首地址与对应的多个物理地址。当将二级映射表从存储介质上读出后,可先对二级映射表数据进行压缩,通过将二级映射表数据的多个物理地址划分为多个段,每个段可以包含一个物理地址,也可以包含多个物理地址,但如果包含多个物理地址,则该多个物理地址是数值上连续的,例如某段包含数值上连续的物理地址FAA与FAA+1,得到若干个这样的段之后,分别统计每个段包含的物理地址的个数,然后在缓存单元中,将从存储所有物理地址改变为存储若干个段中的每个段的起始物理地址及其包含的物理地址的个数。
举例说明。为了方便说明,本示例采用十进制数值表征物理地址。假设有2048个物理地址,其前444个物理地址为:
100,101,102,103,104,105,106,107,108,109,110,125,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,...................,811,300,301,302,303,...................,499。
按顺序扫描上述地址,第1个地址到第11个地址是数值上连续的,将其划分在第一段,起始物理地址是100,第一段的地址个数等于11,第12个地址与上个地址不连续是不连续的,将其划分在第二段,起始物理地址是125,第二段的地址个数是1,第12个地址到第42个地址是连续的,将其划分在第三段,起始物理地址是255,第三段的地址个数为31,第43个地址与上个地址不连续,将其划分在第四段,起始物理地址是600,第四段的地址个数为212,第254个地址与上个地址不连续,将其划分在第五段,起始物理地址是300,地址个数为200,以此类推。然后在闪存存储器中,分别存储第一至第五段的起始物理地址和地址个数。
但是应该看到,这种方法不总是能够节省存储空间。例如,如果二级映射表存储的多个物理地址数值上都不连续,则可以这样的存储方式反而增加了存储空间。因此提供另一实施例的压缩方法,如图7所示,包括如下步骤。
在步骤S701中,根据数值上是否连续将多个物理地址划分为至少一个段。本步骤之后会得到至少一个段,如果至少一个段中的某个段包含两个或以上的物理地址,则该段包含的物理地址在数值上连续。
在步骤S702中,统计至少一个段的每个段包含的物理地址的个数。
在步骤S703中,计算两种存储方式各自所需的存储空间的大小。新的存储方式为存储至少一个段的每个段的起始物理地址及包含的物理地址的个数,原来的存储方式为存储所有物理地址。
在步骤S704中,判断新的存储方式所需空间是否小于原来的存储方式所需空间,如果是,则执行步骤S705。
在步骤S705中,以存储至少一个段的每个段的起始物理地址及包含的物理地址的个数来代替存储多个物理地址。
和图5的实施例相比,本实施例增加了判断步骤,仅在新的存储方式所需空间比原来的存储方式所需空间的条件下才使用新的存储方式代替旧的存储方式。
在上述实施例中,通过对读命令缓存的二级映射表进行压缩,能够减少对于缓存单元124的空间占用,例如,一些情况下,上述压缩算法能够将一个二级映射表对缓存单元124的空间占用减少60%。
在进一步的实施例中,虽然读缓存中存储的多个二级映射表可以采用大小相同的单元格来存储,但是压缩后的各个二级映射表的大小可能并不相同,因而没有必要采用相同大小的单元格进行存储,而是采用大小不同的单元格进行存储,但同时可采用链表来进行组织,链表上的每个节点对应一个二级映射表,而且每个节点与下一个节点相连。
在进一步的实施例中,统计在读缓存中每个二级映射表在设定时段内的访问量,并根据访问量管理读缓存的存储空间,例如当读缓存的容量用尽,则占用访问量最小的二级映射表所使用的单元格来缓存新的二级映射表。
此外,如上文所述,控制器120在接收到写命令时,如果发现该对应的索引地址已经成为系统热点,且所指向的二级映射表已经被缓存在读缓存中,则控制器120需要从读缓存中将二级映射表复制到热点单元格中,如果在读缓存中的二级映射表已经采用上述压缩方法进行了压缩,则需要解压缩,所述解压缩就是将至少一个段的每个段的起始物理地址及包含的物理地址的个数恢复为多个物理地址,可结合压缩方法对应给出解压缩方法,这里就不再详细描述。
依照本发明的实施例如上文所述,这些实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施例。显然,根据以上描述,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地利用本发明以及在本发明基础上的修改使用。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (10)
1.一种应用于存储器的缓存管理方法,所述存储器包括控制器和存储介质,所述控制器包括缓存单元,所述缓存单元存储有一级映射表,所述一级映射表存储有多个索引地址,以指向在所述存储介质上存储的多个二级映射表,所述缓存管理方法由所述控制器执行,包括:
在所述缓存单元上划分出热点写缓存和随机写缓存;
累计设定时段内所述一级映射表中的各个索引地址所对应的写操作数量,根据所述各个索引地址所对应的写操作数量对所述一级映射表中的各个索引地址进行从大到小排序,并将所述写操作数量居前的多个索引地址记为系统热点;
对于接收到的写命令,如果其对应的索引地址属于系统热点,则在所述热点写缓存中分配热点单元格,并将对应的索引地址指向的二级映射表的全部数据载入到所述热点单元格中,否则,在所述随机写缓存中分配随机写单元格,并基于所述写命令向所述随机写单元格中写入数据。
2.根据权利要求1所述的缓存管理方法,还包括:在所述缓存单元上还划分出读缓存,并在接收到读命令时,从所述读缓存中分配读单元格来载入对应的索引地址指向的二级映射表。
3.根据权利要求2所述的缓存管理方法,其中,对于接收到的写命令,如果其对应的索引地址是系统热点,但其对应的索引地址指向的二级映射表被分散地存储在所述随机写缓存、所述读缓存和所述存储介质中的至少一个,则从所述随机写缓存、所述读缓存和所述存储介质中的至少一个读取出数据并合并至所述热点单元格中。
4.根据权利要求2所述的缓存管理方法,其中,在执行所述从所述读缓存中分配读单元格来载入对应的索引地址指向的二级映射表的步骤中,还对所述对应的索引地址指向的二级映射表进行压缩。
5.根据权利要求4所述的缓存管理方法,其中,在所述缓存单元上分配固定大小的读单元格,以存储压缩后的二级映射表。
6.根据权利要求4所述的缓存管理方法,其中,在所述读缓存中,根据压缩后的二级映射表的大小分配非固定大小的读单元格来存储压缩后的二级映射表。
7.根据权利要求2所述的缓存管理方法,还包括:在所述读缓存中,累计每个二级映射表在设定时段内的访问量,并在所述读缓存空间不足时,按访问量从小到大的排序优先释放访问量低的读单元格。
8.根据权利要求1所述的缓存管理方法,还包括:对基于写命令累计的写操作数量进行数据平滑。
9.根据权利要求1至8任意一项所述的缓存管理方法,其中,所述存储器为Dram-less固态硬盘。
10.一种存储器,包括:
控制器,与主机连接,用于从所述主机接收写数据;
存储介质,与所述控制器连接,用于存储所述写数据,
所述控制器还包括缓存单元,用于存储与所述写数据对应的一级映射表,所述存储介质还用于存储与所述一级映射表对应的映射表数据,所述控制器用于执行权利要求1-9任一项所述的缓存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210305821.0A CN116841454A (zh) | 2022-03-25 | 2022-03-25 | 应用于存储器的缓存管理方法以及存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210305821.0A CN116841454A (zh) | 2022-03-25 | 2022-03-25 | 应用于存储器的缓存管理方法以及存储器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116841454A true CN116841454A (zh) | 2023-10-03 |
Family
ID=88165822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210305821.0A Pending CN116841454A (zh) | 2022-03-25 | 2022-03-25 | 应用于存储器的缓存管理方法以及存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116841454A (zh) |
-
2022
- 2022-03-25 CN CN202210305821.0A patent/CN116841454A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9329995B2 (en) | Memory device and operating method thereof | |
US10067881B2 (en) | Compression and caching for logical-to-physical storage address mapping tables | |
US10126964B2 (en) | Hardware based map acceleration using forward and reverse cache tables | |
JP6613375B2 (ja) | プロファイリングキャッシュ置換 | |
US10922235B2 (en) | Method and system for address table eviction management | |
JP3507132B2 (ja) | フラッシュメモリを用いた記憶装置およびその記憶制御方法 | |
CN105930282B (zh) | 一种用于nand flash的数据缓存方法 | |
US20050015557A1 (en) | Nonvolatile memory unit with specific cache | |
EP2626792A1 (en) | Wear leveling method, memory device, and information system | |
US8954656B2 (en) | Method and system for reducing mapping table size in a storage device | |
CN103608782A (zh) | Lsb页面和msb页面中的选择性数据存储 | |
KR101297442B1 (ko) | 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템 | |
US8621134B2 (en) | Storage tiering with minimal use of DRAM memory for header overhead | |
WO2017149592A1 (ja) | ストレージ装置 | |
US20160170879A1 (en) | Systems and methods for managing cache of a data storage device | |
WO2014142337A1 (ja) | ストレージ装置と方法及びプログラム | |
CN107678685B (zh) | 基于闪存的存储路径优化的键值存储管理方法 | |
CN108733576B (zh) | 一种固态硬盘及其内存转换层对映方法 | |
CN113590045A (zh) | 数据分层式存储方法、装置及存储介质 | |
KR20160121819A (ko) | 이종 메모리 기반 데이터 관리 장치 | |
CN115079957B (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
CN116841454A (zh) | 应用于存储器的缓存管理方法以及存储器 | |
CN116737613A (zh) | 映射表管理方法及存储器 | |
US10552086B2 (en) | Global pool of garbage collection units (GCUs) in a shared non-volatile memory device | |
US20230138215A1 (en) | Memory system controlling nonvolatile memory |
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 |