CN111443874A - 基于内容感知的固态盘内存缓存管理方法、设备及固态盘 - Google Patents
基于内容感知的固态盘内存缓存管理方法、设备及固态盘 Download PDFInfo
- Publication number
- CN111443874A CN111443874A CN202010232889.1A CN202010232889A CN111443874A CN 111443874 A CN111443874 A CN 111443874A CN 202010232889 A CN202010232889 A CN 202010232889A CN 111443874 A CN111443874 A CN 111443874A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- mapping table
- request
- read
- 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.)
- Granted
Links
Images
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/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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- 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/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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于内容感知的固态盘内存缓存管理方法、设备及固态盘,属于计算机存储领域,包括:创建影子缓存,用于缓存首次被读取的数据块的元数据;创建数据缓存,缓存写入的和被多次读取的数据块;初始化主映射表和二级映射表,分别用于记录逻辑地址到物理地址或虚拟地址的映射关系,以及虚拟地址到物理地址的映射关系;接收到读写操作请求时,根据逻辑地址查找主映射表以获取主映射表条目,然后判断是否存在对应的二级映射表条目,若是,则从二级映射表条目提取数据状态标志,否则,从主映射表条目提取数据状态标志;结合数据状态标志和请求类型,执行请求。本发明能够减轻底层并行单元访问竞争,从而提升固态盘的读性能。
Description
技术领域
本发明属于计算机存储领域,更具体地,涉及一种基于内容感知的固态盘内存缓存管理方法、设备及固态盘。
背景技术
近年来,SSD(Solid State Disk,固态盘)由于其随机访问速度快,功耗低,健壮性强等特点逐步取代传统的HDD(Hard Disk Drive)存储,并被广泛应用在当代各种存储系统中。尽管SSD有很多杰出的特性,但是由于底层的闪存(flash)存储介质的擦写次数有限,SSD的使用寿命较短,这严重阻碍了SSD在可靠性敏感的产品系统中的大规模部署。
数据去重作为一种有效的空间节省技术,被广泛应用于备份系统和主存储系统。数据去重技术又称为重复数据删除,指在一个数据文件集合中,只保存唯一的数据副本,而将重复的数据删除。由于只保留一份重复数据的副本和对应的指纹,数据去重技术可以消除重复的写数据,从而减少写入flash存储设备的数据量,这些减少的数据写入量可以直接提升SSD的使用寿命。在研究中发现,在去重的过程中,重复的写请求会被取消,其对应的逻辑地址会指向重复数据所在的物理单元,会使得部分存储的数据有多个地址引用,产生高度去重的数据块。
传统的固态盘内存缓存管理方法,采用一对一的方式缓存映射关系,即一个逻辑地址对应一个物理地址的映射关系,由于动态数据分配的随机性会使得高度去重的数据块集中到小部分并行单元上造成的读分布不均匀,从而使得重复的逻辑地址映射到小部分并行单元上,最终降低读并行性,造成读性能下降。同时拥有较多高度去重的数据的并行单元,其访问竞争会增加,也会直接削弱读性能。在混合读写且访问密集的情况下,不均匀的读分布所带来的问题尤其突出。总的来说,现有的基于数据去重的固态盘中,底层并行存储单元由于高度去重的数据块分布不均衡,会产生访问竞争,从而影响固态盘的读性能。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种基于内容感知的固态盘内存缓存管理方法、设备及固态盘,其目的在于,缓存高热度的读数据块,以减轻底层并行单元由于高度去重的数据块分布不均衡而带来的访问竞争,从而提升固态盘的读性能。
为实现上述目的,按照本发明的第一方面,提供了一种基于内容感知的固态盘内存缓存管理方法,包括:
预先在内置缓存中创建影子缓存和数据缓存,并初始化主映射表和二级映射表;影子缓存用于缓存首次被读取的数据块的元数据,数据缓存用于缓存写入的数据块以及被多次读取的数据块;二级映射表用于记录虚拟地址到物理地址的映射关系,以及对应数据状态标志;主映射表用于记录逻辑地址到物理地址或虚拟地址的映射关系,以及对应数据的脏数据标志、二级映射标志和数据状态标志;二级映射标志用于指示数据是否经过了去重,数据状态标志用于指示数据的缓存状态,脏数据标志用于指示数据是否为脏数据;
接收到读写操作请求时,根据逻辑地址查找主映射表,获取到对应的主映射表条目后,根据其中的二级映射标志判断数据是否经过了去重,若是,则根据所获取到的主映射表条目中的虚拟地址查找二级映射表,以获取对应的二级映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志;否则,直接将所获取到的主映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志;
提取到目标数据状态标志后,结合请求的读写操作类型,执行请求。
进一步地,本发明第一方面提供的基于内容感知的固态硬盘内存缓存管理方法中,提取到数据状态标志后,结合请求的读写操作类型,执行请求,包括:
若请求为读请求,则按照如下步骤执行该读请求:
(R1)根据目标数据状态标志判断数据的缓存状态,若数据被缓存在数据缓存中,说明读命中,则转入步骤(R2);若数据的元数据被缓存在影子缓存中,说明读不命中且该数据块只被访问过一次,则转入步骤(R3);若为其他情况,说明读不命中且数据块未被读过,则转入步骤(R4);
(R2)从数据缓存中读取数据,读请求执行结束;
(R3)根据目标映射条目中的物理地址,从闪存存储介质中读取数据,并将该数据缓存到数据缓存,同时更新目标映射条目中的数据状态标志,以指示该数据被缓存在数据缓存中,读请求执行结束;
(R4)根据目标映射条目中的物理地址,从闪存存储介质中读取数据,并将该数据的元数据存储到影子缓存中,同时更新目标映射条目中的数据状态标志,以指示该数据的元数据被缓存在影子缓存中,读请求执行结束。
进一步地,本发明第一方面提供的基于内容感知的固态硬盘内存缓存管理方法中,提取到数据状态标志后,结合请求的读写操作类型,执行请求,还包括:
若请求为写请求,则按照如下步骤执行该写请求:
(W1)根据目标数据状态标志判断数据的缓存状态,若数据被缓存在数据缓存中,说明写命中,则转入步骤(W2);否则,说明写不命中,转入步骤(W3);
(W2)将数据写入数据缓存中,覆盖旧的数据,之后转入步骤(W4);
(W3)将数据写入数据缓存中,之后转入步骤(W4);
(W4)获取逻辑地址所对应的主映射表条目,并更新其中的数据状态标志和脏数据标志,以指示该数据被缓存在数据缓存中,且该数据为脏数据,写请求执行结束。
进一步地,本发明第一方面提供的基于内容感知的固态硬盘内存缓存管理方法,还包括:
将数据块从数据缓存中移除时,获取该数据块所属的主映射表条目,并根据其中的脏数据标志判断该数据块是否为脏数据,若是,则将其写回闪存存储介质,并更新脏数据标志;否则,直接移除。
进一步地,本发明第一方面提供的基于内容感知的固态硬盘内存缓存管理方法,还包括:
将数据缓存中的数据从数据缓存写入闪存存储介质时,尝试进行数据去重操作,若操作成功,且数据去重操作导致闪存存储介质中一个数据块有多个逻辑地址引用时,为该数据块创建一个虚拟地址,并根据该数据块的虚拟地址、物理地址以及缓存状态创建一个新的二级映射表条目,插入二级映射表中,使得重复请求的逻辑地址都指向所创建的虚拟地址。
进一步地,本发明第一方面提供的基于内容感知的固态硬盘内存缓存管理方法,还包括:
在执行写请求的过程中,将数据缓存中的数据从数据缓存写入闪存存储介质时,尝试进行数据去重操作,若操作成功,则取消该写请求。
进一步地,本发明第一方面提供的基于内容感知的固态硬盘内存缓存管理方法中,影子缓存所存储的元数据的条数,与数据缓存所存储的数据块的数量相等;这样设置缓存大小能够减小复杂度,既避免了因影子缓存过大而导致冷数据被缓存到数据缓存,又避免了因影子缓存太小而识别不出高热度的读数据块。
按照本发明的第二方面,提供了一种基于内容感知的固态硬盘内存缓存管理设备,包括:初始化模块、主映射表查询模块、二级映射表查询模块以及请求执行模块;
初始化模块,用于在内置缓存中创建影子缓存和数据缓存,并初始化主映射表和二级映射表;影子缓存用于缓存首次被读取的数据块的元数据,数据缓存用于缓存写入的数据块以及被多次读取的数据块;二级映射表用于记录虚拟地址到物理地址的映射关系,以及对应数据状态标志;主映射表用于记录逻辑地址到物理地址或虚拟地址的映射关系,以及对应数据的脏数据标志、二级映射标志和数据状态标志;二级映射标志用于指示数据是否经过了去重,数据状态标志用于指示数据的缓存状态,脏数据标志用于指示数据是否为脏数据;
主映射表查询模块,用于接收到读写操作请求时,根据逻辑地址查找主映射表,获取到对应的主映射表条目后,根据其中的二级映射标志判断数据是否经过了去重,若是,则触发二级映射表查询模块;否则,直接将所获取到的主映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志,之后触发请求执行模块;
二级映射表查询模块,用于根据主映射表查询模块获取到的主映射表条目中的虚拟地址查找二级映射表,以获取对应的二级映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志,之后触发请求执行模块;
请求执行模块,用于结合目标数据状态标志和请求的读写操作类型,执行请求。
按照本发明的第三方面,提供了一种固态盘,包括:内置缓存、闪存存储介质以及本发明第二方面提供的基于内容感知的固态硬盘内存缓存管理设备。
总体而言,通过本发明所构思的以上技术方案,利用由主映射表和二级映射表构成的两级映射表结构记录逻辑地址到物理地址/虚拟地址的映射关系,以及虚拟地址到物理地址的映射关系,将传统的一对一的缓存映射关系变成了多对一的缓存映射关系,由此能够提升内置缓存的利用率,并提高数据缓存的命中率;同时利用影子缓存和数据缓存相结合的双缓存机制,使得高热度的读数据块被缓存在数据缓存中,能够进一步提高读请求的缓存命中率。总的来说,本发明能够有效提高读请求的命中率,一方面,能够提升固态盘的读性能,另一方面,能够减轻由于数据去重技术导致的底层并行单元中读不均匀分布而加剧的访问竞争,提升固态盘的整体性能。
附图说明
图1为本发明实施例提供的基于内容感知的固态盘内存缓存管理方法流程图;
图2为本发明实施例提供的固态盘示意图;
图3为本发明提供的应用实例示意图;其中的(a)为执行请求前缓存及映射表的状态;(b)为读请求执行完成后缓存及映射表的状态;(c)为写请求执行完成后缓存及映射表的状态。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在详细解释本发明的技术方案之前,先对本发明所涉及的元数据信息进行简要介绍。在基于数据去重技术的SSD中,会在控制器的内部维护映射表和指纹表,其中,指纹表用于维护所有已写入flash存储的数据块的指纹以及对应的物理地址,映射表用于维护逻辑地址和物理地址的映射关系,以及逻辑地址的状态。
为了缓存高热度的读数据块,以减轻底层并行单元由于高度去重的数据块分布不均衡而带来的访问竞争,从而提升固态盘的读性能,本发明所提供的基于内容感知的固态盘内存缓存管理方法,如图1所示,包括:
预先在内置缓存中创建影子缓存和数据缓存,并初始化主映射表和二级映射表;影子缓存用于缓存首次被读取的数据块的元数据,数据缓存用于缓存写入的数据块以及被多次读取的数据块;二级映射表用于记录虚拟地址到物理地址的映射关系,以及对应数据状态标志;主映射表用于记录逻辑地址到物理地址或虚拟地址的映射关系,以及对应数据的脏数据标志、二级映射标志和数据状态标志;二级映射标志用于指示数据是否经过了去重,数据状态标志用于指示数据的缓存状态,脏数据标志用于指示数据是否为脏数据;
接收到读写操作请求时,根据逻辑地址查找主映射表,获取到对应的主映射表条目后,根据其中的二级映射标志判断数据是否经过了去重,若是,则根据所获取到的主映射表条目中的虚拟地址查找二级映射表,以获取对应的二级映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志;否则,直接将所获取到的主映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志;
提取到目标数据状态标志后,结合请求的读写操作类型,执行请求;
在实际应用中,可以将逻辑地址作为主映射表的索引,将虚拟地址作为二级映射表的索引;为便于创建映射关系,对于首次被读请求访问的数据块,可以将其逻辑地址作为元数据,若该数据块经过了去重处理,则将其虚拟地址作为元数据,这样,在该数据块第二次被读请求访问时,直接根据其元数据和读请求的逻辑地址即可创建相应的映射表条目;
在实际实现中,可以用lpn_state_flag表示数据状态标志,其取值可能有三种,例如,lpn_state_flag=1表示数据缓存于数据缓存中,lpn_state_flag=2表示数据的元数据缓存于影子缓存中,lpn_state_flag=0表示数据既没有缓存在数据缓存中,其元数据也没有缓存在影子缓存中,主映射表条目和二级映射表条目中,数据状态标志的含义相同;可以用vpn_flag表示二级映射标志,其取值可能有两种,例如,vpn_flag=0表示数据没有进行去重处理,也就不存在相应的二级映射表条目,vpn_flag=1表示数据进行了去重处理,在二级映射表中会有相应的二级映射表条目,在查询主映射表时,根据主映射表条目中的vpn_flag的取值,即可判断是否存在对应的二级映射表条目;可以用dirty_flag表示脏数据标志,其取值可能有两种,例如,dirty_flag=0,表示不是脏数据,那么数据被从数据缓存中移除时,无需写回闪存存储介质,dirty_flag=1,表示是脏数据,那么数据从数据缓存中移除时,需要写回闪存存储介质;
本实施例即采用了上述各标志的编码方式,应当说明的是,以上关于各标志的具体取值含义,仅为一种实例性的说明,不应理解为对本发明的唯一限定。
在本实施例中,提取到数据状态标志后,结合请求的读写操作类型,执行请求,包括:
若请求为读请求,则按照如下步骤执行该读请求:
(R1)根据目标数据状态标志lpn_state_flag判断数据的缓存状态,若数据被缓存在数据缓存中,即lpn_state_flag=1,说明读命中,则转入步骤(R2);若数据的元数据被缓存在影子缓存中,即lpn_state_flag=2,说明读不命中且该数据块只被访问过一次,则转入步骤(R3);若为其他情况,即lpn_state_flag=0,说明读不命中且数据块未被读过,则转入步骤(R4);
(R2)从数据缓存中读取数据,读请求执行结束;
(R3)根据目标映射条目中的物理地址,从闪存存储介质中读取数据,并将该数据缓存到数据缓存,同时更新目标映射条目中的数据状态标志,以指示该数据被缓存在数据缓存中,即将lpn_state_flag的值更新为1,读请求执行结束;
(R4)根据目标映射条目中的物理地址,从闪存存储介质中读取数据,并将该数据的元数据存储到影子缓存中,同时更新目标映射条目中的数据状态标志,以指示该数据的元数据被缓存在影子缓存中,即更新lpn_state_flag的值为2,读请求执行结束;
本实施例中,提取到数据状态标志后,结合请求的读写操作类型,执行请求,还包括:
若请求为写请求,则按照如下步骤执行该写请求:
(W1)根据目标数据状态标志lpn_state_flag判断数据的缓存状态,若数据被缓存在数据缓存中,即lpn_state_flag=1,说明写命中,则转入步骤(W2);否则,说明写不命中,转入步骤(W3);
(W2)将数据写入数据缓存中,覆盖旧的数据,之后转入步骤(W4);
(W3)将数据写入数据缓存中,之后转入步骤(W4);
(W4)获取逻辑地址所对应的主映射表条目,并更新其中的数据状态标志和脏数据标志,以指示该数据被缓存在数据缓存中,且该数据为脏数据,即将lpn_state_flag的值更新为1,将dirty_flag的值更新为1,写请求执行结束。
在一个可选的实施方式中,上述基于内容感知的固态硬盘内存缓存管理方法,还可包括:
将数据块从数据缓存中移除时,获取该数据块所属的主映射表条目,并根据其中的脏数据标志dirty_flag判断该数据块是否为脏数据,若是,即dirty_flag=1,则将其写回闪存存储介质,并更新脏数据标志dirty_flag=0;否则,即dirty_flag=0,直接移除。
在一个可选的实施方式中,上述基于内容感知的固态硬盘内存缓存管理方法,还可包括:
将数据缓存中的数据从数据缓存写入闪存存储介质时,尝试进行数据去重操作,若操作成功,且数据去重操作导致闪存存储介质中一个数据块有多个逻辑地址引用时,为该数据块创建一个虚拟地址,并根据该数据块的虚拟地址、物理地址以及缓存状态创建一个新的二级映射表条目,插入二级映射表中,使得重复请求的逻辑地址都指向所创建的虚拟地址。
在一个可选的实施方式中,上述基于内容感知的固态硬盘内存缓存管理方法,还可包括:
在执行写请求的过程中,将数据缓存中的数据从数据缓存写入闪存存储介质时,尝试进行数据去重操作,若操作成功,则取消该写请求。
在一个可选的实施方式中,上述基于内容感知的固态硬盘内存缓存管理方法中,影子缓存所存储的元数据的条数,与数据缓存所存储的数据块的数量相等;这样设置缓存大小能够减小复杂度,既避免了因影子缓存过大而导致冷数据被缓存到数据缓存,又避免了因影子缓存太小而识别不出高热度的读数据块。
上述基于内容感知的固态盘内存缓存管理方法,利用由主映射表和二级映射表构成的两级映射表结构记录逻辑地址到物理地址/虚拟地址的映射关系,以及虚拟地址到物理地址的映射关系,将传统的一对一的缓存映射关系变成了多对一的缓存映射关系,由此能够提升内置缓存的利用率,并提高数据缓存的命中率;同时利用影子缓存和数据缓存相结合的双缓存机制,使得高热度的读数据块被缓存在数据缓存中,能够进一步提高读请求的缓存命中率。总的来说,上述基于内容感知的固态盘内存缓存管理方法能够有效提高读请求的命中率,一方面,能够提升固态盘的读性能,另一方面,能够减轻由于数据去重技术导致的底层并行单元中读不均匀分布而加剧的访问竞争,提升固态盘的整体性能。
在本发明的另外一个实施例中,提供了一种基于内容感知的固态硬盘内存缓存管理设备,包括:初始化模块、主映射表查询模块、二级映射表查询模块以及请求执行模块;
初始化模块,用于在内置缓存中创建影子缓存和数据缓存,并初始化主映射表和二级映射表;影子缓存用于缓存首次被读取的数据块的元数据,数据缓存用于缓存写入的数据块以及被多次读取的数据块;二级映射表用于记录虚拟地址到物理地址的映射关系,以及对应数据状态标志;主映射表用于记录逻辑地址到物理地址或虚拟地址的映射关系,以及对应数据的脏数据标志、二级映射标志和数据状态标志;二级映射标志用于指示数据是否经过了去重,数据状态标志用于指示数据的缓存状态,脏数据标志用于指示数据是否为脏数据;
主映射表查询模块,用于接收到读写操作请求时,根据逻辑地址查找主映射表,获取到对应的主映射表条目后,根据其中的二级映射标志判断数据是否经过了去重,若是,则触发二级映射表查询模块;否则,直接将所获取到的主映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志,之后触发请求执行模块;
二级映射表查询模块,用于根据主映射表查询模块获取到的主映射表条目中的虚拟地址查找二级映射表,以获取对应的二级映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志,之后触发请求执行模块;
请求执行模块,用于结合目标数据状态标志和请求的读写操作类型,执行请求;
在本发明实施例中,各模块的具体实施方式可参考上述方法实施例中的描述,在此将不作复述。
在本发明的有一个实施例中,提供了一种固态盘,如图2所示,包括:内置缓存、闪存存储介质以及上述基于内容感知的固态硬盘内存缓存管理设备;
如图2所示,为了在数据写入闪存存储介质之前,对数据进行去重处理,相应地,在固态盘中还存在去重模块,去重模块主要是对新来的写请求进行去重尝试,可选地,在本实施例中,采用SHA1的哈希算法,每4K的内容进行一次指纹计算;在执行写请求时,从内置缓存区移除的写请求进入去重模块之后进行去重尝试,如果发现该写请求的内容已经存在于flash存储设备里,则取消该请求。
应用实例:
图3为上述基于内容感知的固态盘内存缓存管理方法的一个应用实例,图3中的(a)是运行过一段时间的状态,此时,一个请求序列Request={R7 R5 R1 R6 W7 W3 W0}达到,其中的“W”表示写操作,“R”表示读操作,字母之后的数字对应请求的逻辑地址,请求大小均为4K;
图3中的Buffer是数据缓存,使用请求的逻辑地址(Lx)或虚拟地址(Vx)进行缓存管理;Ghost是影子缓存,用来记录首次访问的数据块的元数据(逻辑地址或虚拟地址),如果数据块有多个地址引用,使用虚拟地址,否则使用逻辑地址。
采用上述基于内容感知的固态盘内存缓存管理方法,写请求不管命中与否,数据直接写入内置数据缓存区;读请求命中时直接从内置缓存区读数据,读不命中时,只有当前读请求所对应的数据被至少读过一次才会缓存进内置数据缓存区。执行请求序列Request中各请求的具体过程为:
执行读请求R7时,首先检查对应主映射表条目中的二级映射标志,不存在,接着获取主映射表条目中的数据状态标志,该请求要访问的数据未被缓存且是第一次被访问,因此从flash存储中读取数据,同时将逻辑地址L7插入到读影子缓存中,并更新数据状态为GHOST(2);
执行读请求R5时,通过主映射表条目中的数据状态标志获知数据已经存储在内置数据缓存区,因此直接从内置数据缓存区读取数据(L5),并且将数据移到链表头;
执行读请求R1时,通过二级映射表条目中的数据状态标志获知该数据已经存储在内置数据缓存区,因此从内置数据缓存区读取数据(V2),并且将数据移到链表头;执行读请求R6时,通过主映射表条目中的数据状态标志获知数据没有存储在内置数据缓存区,但是该数据已被读过一次,因此从flash存储中读取数据,同时将数据插入到内置数据缓存链表头,并且移除影子缓存中的元数据记录(L6),更新主映射表条目中的数据状态标志为BUFFER(1);
读请求执行完后的,缓存及映射表的状态如图3中的(b)所示;
执行写请求W7时,通过主映射表条目中的数据状态标志获知该数据没有被缓存,因此将数据插入到内置数据缓存链表头,移除影子缓存中的元数据(L7),更新脏数据标志(dirty_flag)为1,数据状态标志为BUFFER(1);
执行写请求W0时,通过主映射表条目中的数据状态标志获知该数据没有被缓存,因此将数据插入到内置数据缓存链表头,移除读影子缓存中的元数据(V1),更新脏数据标志(dirty_flag)为1,主映射表条目中的数据状态标志为BUFFER(1),二级表映射条目中的数据状态标志为0;
执行写请求W4时,通过二级映射表条目中的数据状态标志获知旧数据已经被缓存,因此对缓存的数据直接进行写更新,并将数据移动到数据缓存链表头,更新脏数据标志(dirty_flag)为1,主映射表条目中的数据状态标志为BUFFER(1),二级表映射条目中的数据状态标志为0;
写请求执行完后缓存及映射表的状态如图3中的(c)所示。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于内容感知的固态硬盘内存缓存管理方法,其特征在于,包括:
预先在内置缓存中创建影子缓存和数据缓存,并初始化主映射表和二级映射表;所述影子缓存用于缓存首次被读取的数据块的元数据,所述数据缓存用于缓存写入的数据块以及被多次读取的数据块;所述二级映射表用于记录虚拟地址到物理地址的映射关系,以及对应数据状态标志;所述主映射表用于记录逻辑地址到物理地址或虚拟地址的映射关系,以及对应数据的脏数据标志、二级映射标志和数据状态标志;所述二级映射标志用于指示数据是否经过了去重,所述数据状态标志用于指示数据的缓存状态,所述脏数据标志用于指示数据是否为脏数据;
接收到读写操作请求时,根据逻辑地址查找所述主映射表,获取到对应的主映射表条目后,根据其中的二级映射标志判断数据是否经过了去重,若是,则根据所获取到的主映射表条目中的虚拟地址查找所述二级映射表,以获取对应的二级映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志;否则,直接将所获取到的主映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志;
提取到所述目标数据状态标志后,结合请求的读写操作类型,执行请求。
2.如权利要求1所述的基于内容感知的固态硬盘内存缓存管理方法,其特征在于,提取到数据状态标志后,结合请求的读写操作类型,执行请求,包括:
若请求为读请求,则按照如下步骤执行该读请求:
(R1)根据所述目标数据状态标志判断数据的缓存状态,若数据被缓存在所述数据缓存中,则转入步骤(R2);若数据的元数据被缓存在所述影子缓存中,则转入步骤(R3);若为其他情况,则转入步骤(R4);
(R2)从所述数据缓存中读取数据,读请求执行结束;
(R3)根据所述目标映射条目中的物理地址,从闪存存储介质中读取数据,并将该数据缓存到所述数据缓存,同时更新所述目标映射条目中的数据状态标志,以指示该数据被缓存在所述数据缓存中,读请求执行结束;
(R4)根据所述目标映射条目中的物理地址,从闪存存储介质中读取数据,并将该数据的元数据存储到所述影子缓存中,同时更新所述目标映射条目中的数据状态标志,以指示该数据的元数据被缓存在所述影子缓存中,读请求执行结束。
3.如权利要求2所述的基于内容感知的固态硬盘内存缓存管理方法,其特征在于,提取到数据状态标志后,结合请求的读写操作类型,执行请求,还包括:
若请求为写请求,则按照如下步骤执行该写请求:
(W1)根据所述目标数据状态标志判断数据的缓存状态,若数据被缓存在所述数据缓存中,则转入步骤(W2);否则,转入步骤(W3);
(W2)将数据写入所述数据缓存中,覆盖旧的数据,之后转入步骤(W4);
(W3)将数据写入所述数据缓存中,之后转入步骤(W4);
(W4)获取逻辑地址所对应的主映射表条目,并更新其中的数据状态标志和脏数据标志,以指示该数据被缓存在所述数据缓存中,且该数据为脏数据,写请求执行结束。
4.如权利要求3所述的基于内容感知的固态硬盘内存缓存管理方法,其特征在于,还包括:
将数据块从所述数据缓存中移除时,获取该数据块所属的主映射表条目,并根据其中的脏数据标志判断该数据块是否为脏数据,若是,则将其写回闪存存储介质,并更新脏数据标志;否则,直接移除。
5.如权利要求4所述的基于内容感知的固态硬盘内存缓存管理方法,其特征在于,还包括:
将所述数据缓存中的数据从所述数据缓存写入闪存存储介质时,尝试进行数据去重操作,若操作成功,且数据去重操作导致闪存存储介质中一个数据块有多个逻辑地址引用时,为该数据块创建一个虚拟地址,并根据该数据块的虚拟地址、物理地址以及缓存状态创建一个新的二级映射表条目,插入所述二级映射表中,使得重复请求的逻辑地址都指向所创建的虚拟地址。
6.如权利要求3所述的基于内容感知的固态硬盘内存缓存管理方法,其特征在于,还包括:
在执行写请求的过程中,将所述数据缓存中的数据从所述数据缓存写入闪存存储介质时,尝试进行数据去重操作,若操作成功,则取消该写请求。
7.如权利要求1-6任一项所述的基于内容感知的固态硬盘内存缓存管理方法,其特征在于,所述影子缓存所存储的元数据的条数,与所述数据缓存所存储的数据块的数量相等。
8.一种基于内容感知的固态硬盘内存缓存管理设备,其特征在于,包括:初始化模块、主映射表查询模块、二级映射表查询模块以及请求执行模块;
所述初始化模块,用于在内置缓存中创建影子缓存和数据缓存,并初始化主映射表和二级映射表;所述影子缓存用于缓存首次被读取的数据块的元数据,所述数据缓存用于缓存写入的数据块以及被多次读取的数据块;所述二级映射表用于记录虚拟地址到物理地址的映射关系,以及对应数据状态标志;所述主映射表用于记录逻辑地址到物理地址或虚拟地址的映射关系,以及对应数据的脏数据标志、二级映射标志和数据状态标志;所述二级映射标志用于指示数据是否经过了去重,所述数据状态标志用于指示数据的缓存状态,所述脏数据标志用于指示数据是否为脏数据;
所述主映射表查询模块,用于接收到读写操作请求时,根据逻辑地址查找所述主映射表,获取到对应的主映射表条目后,根据其中的二级映射标志判断数据是否经过了去重,若是,则触发所述二级映射表查询模块;否则,直接将所获取到的主映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志,之后触发所述请求执行模块;
所述二级映射表查询模块,用于根据所述主映射表查询模块获取到的主映射表条目中的虚拟地址查找所述二级映射表,以获取对应的二级映射表条目作为目标映射条目,并从中提取数据状态标志作为目标数据状态标志,之后触发所述请求执行模块;
所述请求执行模块,用于结合所述目标数据状态标志和请求的读写操作类型,执行请求。
9.一种固态盘,其特征在于,包括:内置缓存、闪存存储介质以及权利要求8所述的基于内容感知的固态硬盘内存缓存管理设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232889.1A CN111443874B (zh) | 2020-03-28 | 2020-03-28 | 基于内容感知的固态盘内存缓存管理方法、设备及固态盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232889.1A CN111443874B (zh) | 2020-03-28 | 2020-03-28 | 基于内容感知的固态盘内存缓存管理方法、设备及固态盘 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111443874A true CN111443874A (zh) | 2020-07-24 |
CN111443874B CN111443874B (zh) | 2021-07-27 |
Family
ID=71649168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010232889.1A Active CN111443874B (zh) | 2020-03-28 | 2020-03-28 | 基于内容感知的固态盘内存缓存管理方法、设备及固态盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111443874B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559564A (zh) * | 2020-11-19 | 2021-03-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种应用层状态信息的存取方法、装置和介质 |
CN114546267A (zh) * | 2022-02-14 | 2022-05-27 | 深圳源创存储科技有限公司 | 一种基于大数据计算的固态硬盘及固态硬盘系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019963A (zh) * | 2012-12-31 | 2013-04-03 | 华为技术有限公司 | 一种高速缓存的映射方法及存储设备 |
CN107122130A (zh) * | 2017-04-13 | 2017-09-01 | 杭州宏杉科技股份有限公司 | 一种数据重删方法及装置 |
CN107273046A (zh) * | 2017-06-06 | 2017-10-20 | 华中科技大学 | 一种基于固态盘阵列的数据处理方法及系统 |
CN108459826A (zh) * | 2018-02-01 | 2018-08-28 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN110413235A (zh) * | 2019-07-26 | 2019-11-05 | 华中科技大学 | 一种面向ssd去重的数据分配方法及系统 |
-
2020
- 2020-03-28 CN CN202010232889.1A patent/CN111443874B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019963A (zh) * | 2012-12-31 | 2013-04-03 | 华为技术有限公司 | 一种高速缓存的映射方法及存储设备 |
CN107122130A (zh) * | 2017-04-13 | 2017-09-01 | 杭州宏杉科技股份有限公司 | 一种数据重删方法及装置 |
CN107273046A (zh) * | 2017-06-06 | 2017-10-20 | 华中科技大学 | 一种基于固态盘阵列的数据处理方法及系统 |
CN108459826A (zh) * | 2018-02-01 | 2018-08-28 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN110413235A (zh) * | 2019-07-26 | 2019-11-05 | 华中科技大学 | 一种面向ssd去重的数据分配方法及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559564A (zh) * | 2020-11-19 | 2021-03-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种应用层状态信息的存取方法、装置和介质 |
CN112559564B (zh) * | 2020-11-19 | 2022-08-12 | 山东云海国创云计算装备产业创新中心有限公司 | 一种应用层状态信息的存取方法、装置和介质 |
CN114546267A (zh) * | 2022-02-14 | 2022-05-27 | 深圳源创存储科技有限公司 | 一种基于大数据计算的固态硬盘及固态硬盘系统 |
CN114546267B (zh) * | 2022-02-14 | 2022-11-18 | 深圳源创存储科技有限公司 | 一种基于大数据计算的固态硬盘及固态硬盘系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111443874B (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
CN107066393B (zh) | 提高地址映射表中映射信息密度的方法 | |
US9471500B2 (en) | Bucketized multi-index low-memory data structures | |
US8799601B1 (en) | Techniques for managing deduplication based on recently written extents | |
CN108604165B (zh) | 存储装置 | |
US10061704B2 (en) | Systems and methods for managing cache of a data storage device | |
CN107924291B (zh) | 存储系统 | |
KR20120090965A (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
WO2009033419A1 (fr) | Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données | |
CN113312300B (zh) | 一种融合数据传输和存储的非易失内存缓存方法 | |
US10635356B2 (en) | Data management method and storage controller using the same | |
WO2024066613A1 (zh) | 多级缓存系统的访问方法、数据存储方法及装置 | |
WO2016123748A1 (zh) | 一种闪存存储系统及其读写、删除方法 | |
CN111443874B (zh) | 基于内容感知的固态盘内存缓存管理方法、设备及固态盘 | |
KR101077901B1 (ko) | 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
CN110968266B (zh) | 一种基于热度的存储管理方法及系统 | |
CN110413235B (zh) | 一种面向ssd去重的数据分配方法及系统 | |
KR101153688B1 (ko) | 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템 | |
CN114741028A (zh) | 一种基于ocssd的持久键值存储方法、设备及系统 | |
CN107506156B (zh) | 一种块设备的io优化方法 | |
US10860233B2 (en) | Half-match deduplication | |
CN112162703B (zh) | 缓存实现方法及缓存管理模块 | |
US20240070135A1 (en) | Hash engine for conducting point queries | |
CN116974472A (zh) | 面向存储架构的重复数据删除方法、装置及可读介质 | |
CN116185949A (zh) | 缓存存储方法以及相关设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CB03 | Change of inventor or designer information |
Inventor after: Wang Fang Inventor after: Feng Dan Inventor after: Lu Mengting Inventor before: Lu Mengting Inventor before: Wang Fang Inventor before: Feng Dan |
|
CB03 | Change of inventor or designer information |