CN106527988A - 一种固态硬盘数据迁移的方法及装置 - Google Patents

一种固态硬盘数据迁移的方法及装置 Download PDF

Info

Publication number
CN106527988A
CN106527988A CN201610963837.5A CN201610963837A CN106527988A CN 106527988 A CN106527988 A CN 106527988A CN 201610963837 A CN201610963837 A CN 201610963837A CN 106527988 A CN106527988 A CN 106527988A
Authority
CN
China
Prior art keywords
queue
cache
data
data block
caching
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
Application number
CN201610963837.5A
Other languages
English (en)
Other versions
CN106527988B (zh
Inventor
王永刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201610963837.5A priority Critical patent/CN106527988B/zh
Publication of CN106527988A publication Critical patent/CN106527988A/zh
Application granted granted Critical
Publication of CN106527988B publication Critical patent/CN106527988B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

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

一种固态硬盘数据迁移的方法及装置
技术领域
本发明涉及存储技术领域,特别是涉及一种固态硬盘数据迁移的方法及装置。
背景技术
随着计算机技术的飞速发展和数字化时代的到来,在日常生活、科学研究以及公司业务中频繁使用数字化和网络化技术,使得数据呈现爆炸式增长,而数据的产生往往是需要承载或记录的,这就迫使存储技术快速发展以容纳快速增长的数据。
HDD(Hard Disk Drive,机械硬盘),即硬盘驱动器。最基本的电脑存储器,电脑硬盘C盘、D盘为磁盘分区都属于硬盘驱动器。但是机械硬盘由于存储和读写跨度慢、延迟较大、启动慢、产生大量的磁盘碎片、噪音大、容易发生机械故障、工作温度范围(5-55℃)较窄和抗震动效果极差,渐渐的满足不了现代计算机的高要求。SSD(Solid State Drives,固态硬盘),也叫固盘,应运而生。
SSD是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。固态硬盘的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质,另外一种是采用DRAM作为存储介质。由于其稳定的性能而且有效的克服了上述机械硬盘的缺点,SSD的应用越来越广。
但是由于SSD的价格比HDD要高很多,目前存储系统应用较多的是HDD与SSD混合的存储阵列,SSD在混合存储阵列中被用作缓存(Cache)。SSD缓存中存放的是热点数据的副本,当业务发生改变时,也就是当前的热点数据发生变化时,需要将当前新的热点数据迁移到SSD缓存中,而将之前的旧热点数据迁移出去,这样SSD Cache才能提供较好的加速效果。
对于热点数据切换的方法,现有技术为基于LRU最近最少使用页面置换算法(Least Recently Used),即首先淘汰最长时间未被使用的页面;和基于LFU最近最不常用页面置换算法(Least Frequently Used),即淘汰一定时期内被访问次数最少的页面。基于这两种算法在热点进行切换时,由于该两种算法无法识别热点数据是否发生了切换,只能按照算法的要求对数据进行换进换出,这就导致了热点数据替换不及时且替换时间太长。在切换过程中,若热点数据无法快速进入缓存,则会导致整个SSD Cache的加速效果较差,系统的访问响应时间较长,访问率较低。
发明内容
本发明实施例的目的是提供一种固态硬盘的数据迁移的方法及装置,在热点数据发生变化时,提供良好的加速效果,提高了系统响应时间和访问率。
为解决上述技术问题,本发明实施例提供以下技术方案:
本发明实施例一方面提供了一种固态硬盘的数据迁移的方法,包括:
在缓存数据池和预缓存数据池分别建立缓存队列和预缓存队列,所述缓存队列包括缓存数据块的访问热度信息,所述预缓存队列包括未缓存数据块的访问热度信息;所述数据块对应的对象位于队列的级别随着访问热度的增加而提升;
计算当前固态硬盘中缓存数据的缓存命中率;
根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度,更新所述缓存队列以及所述预缓存队列;
当所述预缓存队列中所述对象的当前级别达到预设级别时,将所述对象迁入所述缓存队列,并将其对应的所述数据块写入缓存。
优选的,在所述根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度,更新所述缓存队列以及所述预缓存队列之后还包括:
当所述缓存队列中所述对象的当前级别达到第二预设级别时,将所述对象迁出所述缓存队列,并将其对应的所述数据块从所述缓存中擦除。
优选的,所述根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度为:
当所述缓存命中率位于第一预设值与第二预设值之间时,所述提升跨度为预设第一跨度值,所述第一预设值小于所述第二预设值;
当所述缓存命中率大于所述第二预设值时,所述提升跨度为小于所述预设第一跨度值的数值;
当所述缓存命中率小于所述第一预设值时,所述提升跨度为大于所述预设第一跨度值的数值。
优选的,在所述缓存数据池和预缓存数据池建立缓存队列和预缓存队列之前,还包括:
获取所述对象的配置信息,所述配置信息为以下任意一项或任意组合:
物理块标识参数、访问次数参数以及脏块参数;
其中,所述物理块标识参数为所述对象对应的缓存的数据块在机械硬盘的物理块号;所述访问次数参数为所述缓存数据块被命中的次数;所述脏块参数为未被写入内存或所述缓存的修改过的数据块。
优选的,所述计算当前固态硬盘中缓存数据的缓存命中率为:
判断当前访问数据块是否为所述缓存数据;
当判定所述当前访问数据块为所述缓存数据时,则利用命中所述当前访问数据块的次数与总访问次数的比率计算所述缓存命中率。
优选的,所述判断当前数据块是否为所述缓存数据为:
创建哈希链表,所述哈希链表的哈希键值对应所述对象的所述物理块标识参数;
获取所述当前数据块的物理块号,并计算所述哈希键值;
根据所述哈希键值在所述哈希链表中匹配哈希桶;
当判定所述哈希桶中存在与所述当前数据块的物理块号相等的所述物理块标识参数时,根据所述物理块标识参数确定对应的所述对象;
当所述对象与所述缓存数据块相对应时,则判定所述当前数据块为所述缓存数据。
本发明实施例另一方面提供了一种固态硬盘的数据迁移的装置,包括:
建立模块,用于在缓存数据池和预缓存数据池分别建立缓存队列和预缓存队列,所述缓存队列包括缓存数据块的访问热度信息,所述预缓存队列包括未缓存数据块的访问热度信息;所述数据块对应的对象位于队列的级别随着访问热度的增加而提升;
计算模块,用于计算当前固态硬盘中缓存数据的缓存命中率;
更新模块,用于根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度,更新所述缓存队列以及所述预缓存队列;
迁入模块,用于当所述预缓存队列中所述对象的当前级别达到预设级别时,将所述对象迁入所述缓存队列,并将其对应的所述数据块写入缓存。
优选的,还包括:
迁出模块,用于当所述缓存队列中所述对象的当前级别达到第二预设级别时,将所述对象迁出所述缓存队列,并将其对应的所述数据块从所述缓存中擦除。
优选的,所述根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度为:
当所述缓存命中率位于第一预设值与第二预设值之间时,所述提升跨度为预设第一跨度值,所述第一预设值小于所述第二预设值;
当所述缓存命中率大于所述第二预设值时,所述提升跨度为小于所述预设第一跨度值的数值;
当所述缓存命中率小于所述第一预设值时,所述提升跨度为大于所述预设第一跨度值的数值。
优选的,所述计算模块包括:
判断单元,用于判断当前访问数据块是否为所述缓存数据;
计算单元,用于当判定所述当前访问数据块为所述缓存数据时,则利用命中所述当前访问数据块的次数与总访问次数的比率计算所述缓存命中率。
本发明实施例提供了一种固态硬盘数据迁移的方法,通过建立缓存队列和预缓存队列,根据数据块访问热度的高低将其对应的对象排列于相应的队列中;根据缓存数据的缓存命中率调整各所述对象级别的提升跨度,然后更新预缓存队列;判断更新后的预缓存队列中各所述对象的当前级别是否达到预设级别,当所述对象的当前级别达到预设级别后,将其对应的数据块写入缓存中。
本发明的优点在于根据缓存数据的缓存命中率调整各所述对象级别的提升跨度,缓存命中率反映了当时缓存数据的访问热度,当缓存命中率较低时,当前缓存的数据不为热点数据,将提升跨度调整升高,加快预缓存队列中对象级别的升高,当预缓存队列中的对象的级别达到预设级别时,便将所述对象对应的数据块写入缓存,这样就保证了在热点数据发生变化后,快速识别切换后的热点数据,从而快速的将当前的热点数据写入缓存,进而提高固态硬盘缓存的加速效果,提升系统的响应时间以及访问率。
此外,本发明实施例还针对固态硬盘数据迁移的方法提供了相应的实现装置,进一步使得所述方法更具有实用性,所述装置具有相应的优点。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的示例性应用场景的框架示意图;
图2为本发明实施例提供的一种固态硬盘数据迁移方法的流程示意图;
图3为本发明实施例提供的缓存数据池与预缓存数据池的结构示意图;
图4为本发明实施例提供的预缓存队列和缓存队列的原理示意图;
图5为本发明实施例提供的哈希链表的结构示意图;
图6为本发明实施例提供的调整队列提升跨度的流程示意图;
图7为本发明实施例提供的另一种固态硬盘数据迁移方法的流程示意图;
图8为本发明实施例提供的一种固态硬盘数据迁移装置的结构图;
图9为本发明实施例提供的另一种固态硬盘数据迁移装置的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
本申请的发明人经过研究发现,现有技术无法识别热点数据的是否发生了切换,只能按照算法要求对数据进行换进换出,这就导致了热点数据替换时间太长,在切换过程中,热点数据无法快速进入缓存,导致整个SSD Cache的加速效果较差,系统的访问响应时间较长,访问率较低。鉴于此,本申请通过根据数据块访问热度的高低将其对应的对象排列于相应的队列中;根据缓存数据的缓存命中率调整各所述对象级别的提升跨度,然后更新预缓存队列;判断更新后的预缓存队列中各所述对象的当前级别是否达到预设级别,当当前级别达到预设级别后,将其对应的数据块写入缓存中。通过及时更新缓存命中率调整提升跨度,实现了快速的识别切换后的热点数据,从而加快热点数据写入缓存,这样就保证了在热点数据发生变化后,提高固态硬盘缓存的加速效果,提升系统的响应时间以及访问率。
基于上述本发明实施例的技术方案,本申请实施例的应用场景之一,可以通过客户端101与用户之间的交互来实现。如图1所示,在这一应用场景中,客户端101使用SSD与HDD混合的存储阵列,用户访问客户端101。用户访问次数较多的数据块为了便于用户读写,将其放入SSD缓存中暂时存储,当用户进行下一次访问时直接从缓存中读取。当用户访问内容发生变化时,缓存没有存储相应的数据块,那么用户访问时响应时间就会变长,客户端101通过建立缓存队列和预缓存队列,根据数据块访问热度的高低将其对应的对象排列于相应的队列中;通过及时更新缓存命中率调整缓存队列和预缓存队列提升跨度,这样就可快速识别当前访问的数据(热点数据),将热点数据块写入缓存中,提高了访问率,有效的缩短了响应时间。其中,访问信息可以是通过客户端101与服务器102之间进行交互来进行访问服务器上的信息,或者,是用于直接访问客户端101自身的信息,本申请实施例对此不做限定。
需要注意的是,上述应用场景仅是为了便于理解本申请的思想和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。
实施例一:
首先参见图2,图2为本发明实施例提供的一种固态硬盘数据迁移的方法的流程示意图,本发明实施例可包括以下内容:
S201:在缓存数据池和预缓存数据池分别建立缓存队列和预缓存队列,所述缓存队列包括缓存数据块的访问热度信息,所述预缓存队列包括未缓存数据块的访问热度信息;所述数据块对应的对象位于队列的级别随着访问热度的增加而提升。
缓存数据池(cache_pool)和预缓存数据池(pre_cache_pool)的结构如图3所示,两个池中的数据可通过两段连续的内存进行保存,这两段内存可按照对象(entry)大小为单位进行等大的划分并编号,两个池中entry的个数相同。entry的参数可包括以下任意一项或任意组合:
表参数list、哈希表参数hlist、物理块标识参数oblock、访问次数参数hit_count以及脏块参数dirty;
其中,oblock为entry对应的SSD设备缓存的数据块在HDD设备上的物理块号,这样entry的编号与oblock构成了SSD物理块与HHD物理块之间缓存关系的空间映射关系;所述访问次数参数为缓存数据块被命中的次数,反映了entry对应的数据块的热度,在缓存数据块被命中后加1;脏数据表示源数据已被修改,但还未写入内存或缓存。
缓存数据池中的entry是对SSD设备物理块的抽象,entry的个数与SSD设备中物理块的个数相同并与其一一对应,例如entry0对应SSD设备中块号为0的物理块。而预缓存数据池中的entry为未被缓存的数据块的热度信息。
初始化时,SSD设备的物理块没有缓存数据,把数据池中entry放在一个空闲链表中,当HDD的数据块需要缓存到SSD中时,从空闲链表中获取一个空闲entry,相对应的SSD物理块上写入数据。
可采用多级队列mq(multi quene)算法在所述缓存数据池和预缓存数据池分别建立缓存队列(cache_queue)和预缓存队列(pre_cache_queue),mq算法不仅可用于维护SSD设备中的缓存数据块的热度信息,还可以维护该设备中未缓存的数据块的热度信息,mq算法将这些热度信息放置在多级队列中,如图4所示,级别越高的队列,对应着的数据块的访问热度越大,例如,mq算法建立了2个16级的队列,一个为缓存队列,一个为预缓存队列,第16级为该队列的最高级,对应着热度最大的数据块。
S202:计算当前固态硬盘中缓存数据的缓存命中率。
在计算缓存命中率之前,应该先去判断当前访问数据块是否为所述缓存数据;当判定所述当前数据块为所述缓存数据时,则利用命中所述当前访问数据块的次数与总访问次数的比率计算所述缓存命中率。
判断当前数据块是否为所述缓存数据块具体为:
如图5所示,创建哈希链表,所述哈希链表的哈希键值对应所述对象的所述物理块标识参数;
获取所述当前数据块的物理块号,并计算所述哈希键值;
根据所述哈希键值在所述哈希链表中匹配哈希桶;
当判定所述哈希桶中存在与所述当前数据块的物理块号相等的所述物理块标识参数时,根据所述物理块标识参数确定对应的所述对象;
当所述对象与所述缓存数据块相对应时,则判定所述当前数据块为所述缓存数据块。
缓存命中率为命中缓存的次数与总访问次数的占比,即当前固态硬盘中缓存数据被访问的次数与总次数的比率,反映了当前缓存的数据的热度信息,进一步可反映访问时的响应时间以及访问率,也就是反映了当前硬件的性能状况。所述缓存命中率与性能表现成正比,故缓存命中率可用来衡量性能表现情况。
根据缓存命中率的大小,可设置三个范围,即:
所述第一预设范围为0-20%;
所述第二预设范围为20%-50%;
所述第三预设范围为50%-100%。
当所述缓存命中率在第一预设范围时,表示性能差,即当前缓存数据块的访问热度较低,已经不是最新的访问热点数据了;
当所述缓存命中率在第二预设范围时,表示性能中等,即当前缓存数据块的访问热度一般,不是最新的访问热点数据了,但也数据热点数据;
当所述缓存命中率在第三预设范围时,表示性能优异,即当前缓存数据块的访问热度高,是最新的访问热点数据。
需要说明的是,上述所述三级范围仅仅为一个优选的方案,在实际操作中并不受此限定;响应的范围对应的值也是优选的方案,在实际操作中,本领域技术人员可根据实际情况进行自定义。
S203:根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度,更新所述缓存队列以及所述预缓存队列。
给所述缓存队列和预缓存队列设置对象级别的提升跨度,即在所述对象随着当前热度在多级队列中进行排序时的级别跨度。例如,设置当前队列中级别跨度为1,当判断对象的热度发生变化后,假设当前该对象处于6级,则当前热度发生变化后,如果热度增加则可提升到7级;如果热度降低,则降低到5级。当然,上述例子是为了更好的理解本申请方案,实际中并不受限于此。
根据所述缓存命中率(性能表现情况)调整提升跨度时,如图6所示,可为:
当所述缓存命中率位于第一预设值与第二预设值之间时,所述提升跨度为预设第一跨度值,所述第一预设值小于所述第二预设值;
当所述缓存命中率大于所述第二预设值时,所述提升跨度为小于所述预设第一跨度值的数值;
当所述缓存命中率小于所述第一预设值时,所述提升跨度为大于所述预设第一跨度值的数值。
根据所述缓存命中率调整提升跨度,举例子来说,例如:
所述第一预设范围为0-20%,所述预缓存队列以及缓存队列的提升跨度增大;
所述第二预设范围为20%-50%,所述预缓存队列以及缓存队列的提升跨度不变;
所述第三预设范围为50%-100%,所述预缓存队列以及缓存队列的提升跨度减小。
当所述缓存命中率在第一预设范围时,表示性能差,即当前缓存数据块的访问热度较低,已经不是最新的访问热点数据了,故应该加快提升跨度,使得预缓存队列以及缓存队列的所述对象在排序时快速跨级,从而加快热点数据写入缓存和非热点数据的迁出缓存;
当所述缓存命中率在第二预设范围时,表示性能中等,即当前缓存数据块的访问热度一般,不是最新的访问热点数据了,但也数据热点数据,故保持当前的跨度,使得预缓存队列以及缓存队列的所述对象在排序时保持稳定的状态;
当所述缓存命中率在第三预设范围时,表示性能好,即当前缓存数据块的访问热度高,是最新的访问热点数据,故应该降低提升跨度,使得预缓存队列以及缓存队列的所述对象在排序时级别跨度较小,使得热点数据长时间保存在缓存中,避免非热点数据写入缓存。
需要说明的是,在上述三级范围内对提升跨度的进行调整仅仅为一个优选的方案,在实际操作中并不受此限定;响应的范围对应的值也是优选的方案,在实际操作中,本领域技术人员可根据实际情况进行自定义。
需要说明的是,在具体实施过程中,S201中的热度信息是不断变化的,为了保证及时对队列进行更新,快速识别当前的热点数据,对于缓存命中率的计算和相对的调整提升跨度可实时进行,当然,优选的可周期性进行。例如,设定固定时间如5ms,在5ms到达后,便对缓存命中率进行一次计算,相应的对提升跨度进行一次调整,并将队列进行更新。
S204:当所述预缓存队列中所述对象的当前级别达到预设级别时,将所述对象迁入所述缓存队列,并将其对应的所述数据块写入缓存。
更新后的预缓存队列中各所述对象处于新的级别,可与预设的阈值相比较,如果超过预设级别,则说明当前预缓存队列中的对象对应的数据为热点数据,将该对象移入缓存队列中,对应着数据块写入缓存中。举例来说,如图4所示假设预缓存队列中对象entry级别为14,更新后的级别为15,而预设级别为15,即当预缓存队列中的对象处于15级及以上时,将该对象迁入缓存队列,而该对象迁入后,根据与缓存队列中的对象热度信息相比,将其排列在级别为2的队列中。当然,该例子为更好的理解本申请的技术方案,实际操作中并不受限于此。
由上可知,本发明实施例提供了一种固态硬盘数据迁移的方法,通过建立缓存队列和预缓存队列,根据数据块访问热度的高低将其对应的对象排列于相应的队列中;根据缓存数据的缓存命中率调整各所述对象级别的提升跨度,然后更新预缓存队列;判断更新后的预缓存队列中各所述对象的当前级别是否达到预设级别,当当前级别达到阈值后,将其对应的数据块写入缓存中。通过及时更新缓存命中率调整提升跨度,实现了快速的识别切换后的热点数据,从而加快热点数据写入缓存,这样就保证了在热点数据发生变化后,提高固态硬盘缓存的加速效果,提升系统的响应时间以及访问率。
考虑在实际操作过程中,为了更方便的使用该方法,基于上述实施例做了部分改进。
实施例二:
参见图7,图7为本发明实施例提供的另一种固态硬盘数据迁移的方法的流程示意图,具体的可包括以下内容:
S701-S704:具体的与实施例一的S201-S204所描述一致,此处不再赘述。
S705:当所述缓存队列中所述对象的当前级别达到第二预设级别时,将所述对象迁出所述缓存队列,并将其对应的所述数据块从所述缓存中擦除。
具体的,更新后的缓存队列中各所述对象处于新的级别,可与预设的级别相比较,如果低于预设级别,则说明当前缓存队列中的对象对应的数据不为热点数据,将该对象移出缓存队列中,对应着数据块从缓存中擦除。举例来说,假设缓存队列中对象entry级别为3,更新后的级别为2,而预设级别为2,即当缓存队列中的对象处于2级及以下时,将该对象对应的数据不是热点数据,应该迁出缓存队列,进一步的,将其对应的数据块从缓存中擦除。当然,该例子为更好的理解本申请的技术方案,实际操作中并不受限于此。
由上可知,本发明实施例基于实施例一,通过建立缓存队列和预缓存队列,根据数据块访问热度的高低将其对应的对象排列于相应的队列中;通过及时更新缓存命中率调整缓存队列和预缓存队列提升跨度,实现了快速的识别切换后的热点数据,从而加快热点数据写入缓存,这样就保证了在热点数据发生变化后,提高固态硬盘缓存的加速效果,提升系统的响应时间以及访问率;而且还将缓存中不是热点数据的数据块擦除,增大缓存的剩余空间,一定程度上有利于提升运算速度,而且,通过及时擦除非热点数据,可以有效的迁入热点数据,在缓存空间占用率高的时候便可不浪费时间去进行清理缓存,节省时间和人力。
本发明实施例还针对固态硬盘数据迁移的方法提供了相应的实现装置,进一步使得所述方法更具有实用性。下面对本发明实施例提供的一种固态硬盘数据迁移的装置进行介绍,下文描述的固态硬盘数据迁移的装置与上文描述的固态硬盘数据迁移的方法可相互对应参照。
实施例三:
参见图8,图8为本发明实施例提供的一种固态硬盘数据迁移装置的结构图,该装置可包括:
建立模块801,用于在缓存数据池和预缓存数据池分别建立缓存队列和预缓存队列,所述缓存队列包括缓存数据块的访问热度信息,所述预缓存队列包括未缓存数据块的访问热度信息;所述数据块对应的对象位于队列的级别随着访问热度的增加而提升。
计算模块802,用于计算当前固态硬盘中缓存数据的缓存命中率。
所述计算模块包括:
判断单元8021,用于判断当前访问数据块是否为所述缓存数据;
计算单元8022,用于当判定所述当前访问数据块为所述缓存数据时,则利用命中所述当前访问数据块的次数与总访问次数的比率计算所述缓存命中率。
所述判断单元进一步包括:
创建子单元80211,用于创建哈希链表,所述哈希链表的哈希键值对应所述对象的所述物理块标识参数;
获取子单元80212,用于获取所述当前数据块的物理块号,并计算所述哈希键值;
第一确定子单元80213,用于根据所述哈希键值在所述哈希链表中匹配哈希桶;
第二确定子单元80214,用于当判定所述哈希桶中存在与所述当前数据块的物理块号相等的所述物理块标识参数时,根据所述物理块标识参数确定对应的所述对象;
判断子单元80215,用于当所述对象与所述缓存数据块相对应时,则判定所述当前数据块为所述缓存数据块。
更新模块803,用于根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象级别的提升跨度,更新所述缓存队列以及所述预缓存队列。
迁入模块804,用于当所述预缓存队列中所述对象的当前级别达到预设级别时,将所述对象迁入所述缓存队列,并将其对应的所述数据块写入缓存。
本发明实施例所述一种固态硬盘数据迁移装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
由上可知,本发明实施例提供了一种固态硬盘数据迁移的装置,通过建立缓存队列和预缓存队列,根据数据块访问热度的高低将其对应的对象排列于相应的队列中;根据缓存数据的缓存命中率调整各所述对象级别的提升跨度,然后更新预缓存队列;判断更新后的预缓存队列中各所述对象的当前级别是否达到预设级别,当当前级别达到预设级别后,将其对应的数据块写入缓存中。通过及时更新缓存命中率调整提升跨度,实现了快速的识别了切换后的热点数据,从而加快热点数据写入缓存,这样就保证了在热点数据发生变化后,提高固态硬盘缓存的加速效果,提升系统的响应时间以及访问率。
实施例四:
此外,在实际操作中,考虑到应用时操作方便,请参见图9,图9为本发明实施例提供的一种固态硬盘数据迁移装置的结构图。
在实施例三基本功能模块的基础上,还可以包括:
迁出模块905,用于当所述缓存队列中所述对象的当前级别达到第二预设级别时,将所述对象迁出所述缓存队列,并将其对应的所述数据块从所述缓存中擦除。
本发明实施例所述一种固态硬盘数据迁移装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。此外,相同功能模块的说明请参照实施例三,此处不再赘述。
本发明实施例在实施例三的基础上,不仅可实现了快速的识别切换后的热点数据,从而加快热点数据写入缓存,这样就保证了在热点数据发生变化后,提高固态硬盘缓存的加速效果,提升系统的响应时间以及访问率;而且还将缓存中不是热点数据的数据块擦除,增大缓存的剩余空间,一定程度上有利于提升运算速度,而且,通过及时擦除非热点数据,可以有效的迁入热点数据,在缓存空间占用率高的时候便可不浪费时间去进行清理缓存,节省时间和人力。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的一种固态硬盘数据迁移方法以及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (10)

1.一种固态硬盘数据迁移的方法,其特征在于,包括:
在缓存数据池和预缓存数据池分别建立缓存队列和预缓存队列,所述缓存队列包括缓存数据块的访问热度信息,所述预缓存队列包括未缓存数据块的访问热度信息;所述数据块对应的对象位于队列的级别随着访问热度的增加而提升;
计算当前固态硬盘中缓存数据的缓存命中率;
根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度,更新所述缓存队列以及所述预缓存队列;
当所述预缓存队列中所述对象的当前级别达到预设级别时,将所述对象迁入所述缓存队列,并将其对应的所述数据块写入缓存。
2.根据权利要求1所述的方法,其特征在于,在所述根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度,更新所述缓存队列以及所述预缓存队列之后还包括:
当所述缓存队列中所述对象的当前级别达到第二预设级别时,将所述对象迁出所述缓存队列,并将其对应的所述数据块从所述缓存中擦除。
3.根据权利要求1所述的方法,其特征在于,所述根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度为:
当所述缓存命中率位于第一预设值与第二预设值之间时,所述提升跨度为预设第一跨度值,所述第一预设值小于所述第二预设值;
当所述缓存命中率大于所述第二预设值时,所述提升跨度为小于所述预设第一跨度值的数值;
当所述缓存命中率小于所述第一预设值时,所述提升跨度为大于所述预设第一跨度值的数值。
4.根据权利要求3所述的方法,其特征在于,在所述缓存数据池和预缓存数据池建立缓存队列和预缓存队列之前,还包括:
获取所述对象的配置信息,所述配置信息为以下任意一项或任意组合:
物理块标识参数、访问次数参数以及脏块参数;
其中,所述物理块标识参数为所述对象对应的缓存的数据块在机械硬盘的物理块号;所述访问次数参数为所述缓存数据块被命中的次数;所述脏块参数为未被写入内存或所述缓存的修改过的数据块。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述计算当前固态硬盘中缓存数据的缓存命中率为:
判断当前访问数据块是否为所述缓存数据;
当判定所述当前访问数据块为所述缓存数据时,则利用命中所述当前访问数据块的次数与总访问次数的比率计算所述缓存命中率。
6.根据权利要求5所述的方法,其特征在于,所述判断当前访问数据块是否为所述缓存数据为:
创建哈希链表,所述哈希链表的哈希键值对应所述对象的物理块标识参数;
获取所述当前访问数据块的物理块号,并计算所述哈希键值;
根据所述哈希键值在所述哈希链表中匹配哈希桶;
当判定所述哈希桶中存在与所述当前访问数据块的物理块号相等的所述物理块标识参数时,根据所述物理块标识参数确定对应的所述对象;
当所述对象与所述缓存数据块相对应时,则判定所述当前访问数据块为所述缓存数据。
7.一种固态硬盘数据迁移的装置,其特征在于,包括:
建立模块,用于在缓存数据池和预缓存数据池分别建立缓存队列和预缓存队列,所述缓存队列包括缓存数据块的访问热度信息,所述预缓存队列包括未缓存数据块的访问热度信息;所述数据块对应的对象位于队列的级别随着访问热度的增加而提升;
计算模块,用于计算当前固态硬盘中缓存数据的缓存命中率;
更新模块,用于根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度,更新所述缓存队列以及所述预缓存队列;
迁入模块,用于当所述预缓存队列中所述对象的当前级别达到预设级别时,将所述对象迁入所述缓存队列,并将其对应的所述数据块写入缓存。
8.根据权利要求7所述的装置,其特征在于,还包括:
迁出模块,用于当所述缓存队列中所述对象的当前级别达到第二预设级别时,将所述对象迁出所述缓存队列,并将其对应的所述数据块从所述缓存中擦除。
9.根据权利要求8所述的装置,其特征在于,所述根据所述缓存命中率确定所述缓存队列以及所述预缓存队列中各所述对象的当前级别的提升跨度为:
当所述缓存命中率位于第一预设值与第二预设值之间时,所述提升跨度为预设第一跨度值,所述第一预设值小于所述第二预设值;
当所述缓存命中率大于所述第二预设值时,所述提升跨度为小于所述预设第一跨度值的数值;
当所述缓存命中率小于所述第一预设值时,所述提升跨度为大于所述预设第一跨度值的数值。
10.根据权利要求7至9任意一项所述的装置,其特征在于,所述计算模块包括:
判断单元,用于判断当前访问数据块是否为所述缓存数据;
计算单元,用于当判定所述当前访问数据块为所述缓存数据时,则利用命中所述当前访问数据块的次数与总访问次数的比率计算所述缓存命中率。
CN201610963837.5A 2016-11-04 2016-11-04 一种固态硬盘数据迁移的方法及装置 Active CN106527988B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610963837.5A CN106527988B (zh) 2016-11-04 2016-11-04 一种固态硬盘数据迁移的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610963837.5A CN106527988B (zh) 2016-11-04 2016-11-04 一种固态硬盘数据迁移的方法及装置

Publications (2)

Publication Number Publication Date
CN106527988A true CN106527988A (zh) 2017-03-22
CN106527988B CN106527988B (zh) 2019-07-26

Family

ID=58326998

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610963837.5A Active CN106527988B (zh) 2016-11-04 2016-11-04 一种固态硬盘数据迁移的方法及装置

Country Status (1)

Country Link
CN (1) CN106527988B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107092564A (zh) * 2017-04-21 2017-08-25 深信服科技股份有限公司 一种数据处理方法及装置
CN107273306A (zh) * 2017-06-19 2017-10-20 郑州云海信息技术有限公司 一种固态硬盘的数据读取、数据写入方法及固态硬盘
CN107291635A (zh) * 2017-06-16 2017-10-24 郑州云海信息技术有限公司 一种缓存替换方法和装置
CN108196795A (zh) * 2017-12-30 2018-06-22 惠龙易通国际物流股份有限公司 一种数据存储方法、设备及计算机存储介质
CN108763110A (zh) * 2018-03-22 2018-11-06 新华三技术有限公司 一种数据缓存方法及装置
CN108932150A (zh) * 2017-05-24 2018-12-04 中兴通讯股份有限公司 基于ssd和磁盘混合存储的缓存方法、装置及介质
CN110825908A (zh) * 2019-11-04 2020-02-21 安超云软件有限公司 一种对象的迁移方法、装置、电子设备及存储介质
CN112230863A (zh) * 2020-11-09 2021-01-15 平安普惠企业管理有限公司 用户数据读写方法、装置、电子设备及计算机存储介质
CN113254270A (zh) * 2021-05-28 2021-08-13 济南浪潮数据技术有限公司 一种存储缓存热点数据自恢复方法、系统及存储介质
CN115878677A (zh) * 2023-02-09 2023-03-31 徐工汉云技术股份有限公司 分布式多级缓存的数据处理方法和装置
CN116069529A (zh) * 2023-03-16 2023-05-05 天翼云科技有限公司 一种动态缓存方法、装置、电子设备及计算机可读介质
CN117055820A (zh) * 2023-10-09 2023-11-14 苏州元脑智能科技有限公司 一种固态硬盘的命令处理方法、固态硬盘和存储介质
US11924304B2 (en) 2018-07-27 2024-03-05 International Business Machines Corporation Accessing cached data using hash keys
CN118332019A (zh) * 2024-06-13 2024-07-12 深圳特为科创信息技术有限公司 一种低代码平台的数据缓存方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117248A (zh) * 2011-03-09 2011-07-06 浪潮(北京)电子信息产业有限公司 一种缓存系统和在缓存系统中缓存数据的方法
CN102203749A (zh) * 2010-12-31 2011-09-28 华为技术有限公司 多级缓存下固态硬盘的写方法及装置
CN102760101A (zh) * 2012-05-22 2012-10-31 中国科学院计算技术研究所 一种基于ssd 的缓存管理方法及系统
US20140208018A1 (en) * 2013-01-22 2014-07-24 International Business Machines Corporation Tiered caching and migration in differing granularities
CN105302493A (zh) * 2015-11-19 2016-02-03 浪潮(北京)电子信息产业有限公司 一种混合存储阵列中ssd缓存的换入换出控制方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102203749A (zh) * 2010-12-31 2011-09-28 华为技术有限公司 多级缓存下固态硬盘的写方法及装置
CN102117248A (zh) * 2011-03-09 2011-07-06 浪潮(北京)电子信息产业有限公司 一种缓存系统和在缓存系统中缓存数据的方法
CN102760101A (zh) * 2012-05-22 2012-10-31 中国科学院计算技术研究所 一种基于ssd 的缓存管理方法及系统
US20140208018A1 (en) * 2013-01-22 2014-07-24 International Business Machines Corporation Tiered caching and migration in differing granularities
CN105302493A (zh) * 2015-11-19 2016-02-03 浪潮(北京)电子信息产业有限公司 一种混合存储阵列中ssd缓存的换入换出控制方法及系统

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107092564A (zh) * 2017-04-21 2017-08-25 深信服科技股份有限公司 一种数据处理方法及装置
CN108932150B (zh) * 2017-05-24 2023-09-15 中兴通讯股份有限公司 基于ssd和磁盘混合存储的缓存方法、装置及介质
CN108932150A (zh) * 2017-05-24 2018-12-04 中兴通讯股份有限公司 基于ssd和磁盘混合存储的缓存方法、装置及介质
CN107291635A (zh) * 2017-06-16 2017-10-24 郑州云海信息技术有限公司 一种缓存替换方法和装置
CN107273306B (zh) * 2017-06-19 2021-01-12 苏州浪潮智能科技有限公司 一种固态硬盘的数据读取、数据写入方法及固态硬盘
CN107273306A (zh) * 2017-06-19 2017-10-20 郑州云海信息技术有限公司 一种固态硬盘的数据读取、数据写入方法及固态硬盘
CN108196795A (zh) * 2017-12-30 2018-06-22 惠龙易通国际物流股份有限公司 一种数据存储方法、设备及计算机存储介质
CN108196795B (zh) * 2017-12-30 2020-09-04 惠龙易通国际物流股份有限公司 一种数据存储方法、设备及计算机存储介质
CN108763110B (zh) * 2018-03-22 2021-01-26 新华三技术有限公司 一种数据缓存方法及装置
CN108763110A (zh) * 2018-03-22 2018-11-06 新华三技术有限公司 一种数据缓存方法及装置
US11924304B2 (en) 2018-07-27 2024-03-05 International Business Machines Corporation Accessing cached data using hash keys
CN110825908A (zh) * 2019-11-04 2020-02-21 安超云软件有限公司 一种对象的迁移方法、装置、电子设备及存储介质
CN110825908B (zh) * 2019-11-04 2023-04-25 安超云软件有限公司 一种对象的迁移方法、装置、电子设备及存储介质
CN112230863A (zh) * 2020-11-09 2021-01-15 平安普惠企业管理有限公司 用户数据读写方法、装置、电子设备及计算机存储介质
CN113254270A (zh) * 2021-05-28 2021-08-13 济南浪潮数据技术有限公司 一种存储缓存热点数据自恢复方法、系统及存储介质
CN113254270B (zh) * 2021-05-28 2022-06-14 济南浪潮数据技术有限公司 一种存储缓存热点数据自恢复方法、系统及存储介质
CN115878677A (zh) * 2023-02-09 2023-03-31 徐工汉云技术股份有限公司 分布式多级缓存的数据处理方法和装置
CN116069529A (zh) * 2023-03-16 2023-05-05 天翼云科技有限公司 一种动态缓存方法、装置、电子设备及计算机可读介质
CN117055820B (zh) * 2023-10-09 2024-02-09 苏州元脑智能科技有限公司 一种固态硬盘的命令处理方法、固态硬盘和存储介质
CN117055820A (zh) * 2023-10-09 2023-11-14 苏州元脑智能科技有限公司 一种固态硬盘的命令处理方法、固态硬盘和存储介质
CN118332019A (zh) * 2024-06-13 2024-07-12 深圳特为科创信息技术有限公司 一种低代码平台的数据缓存方法及系统
CN118332019B (zh) * 2024-06-13 2024-08-06 深圳特为科创信息技术有限公司 一种低代码平台的数据缓存方法及系统

Also Published As

Publication number Publication date
CN106527988B (zh) 2019-07-26

Similar Documents

Publication Publication Date Title
CN106527988A (zh) 一种固态硬盘数据迁移的方法及装置
CN104794064B (zh) 一种基于区域热度的缓存管理方法
CN102760101B (zh) 一种基于ssd 的缓存管理方法及系统
Jiang et al. S-FTL: An efficient address translation for flash memory by exploiting spatial locality
CN104115133B (zh) 用于复合非易失性存储设备的数据迁移的方法、系统和设备
US20140115241A1 (en) Buffer management apparatus and method
CN105117180B (zh) 一种数据存储方法和装置以及固态硬盘
CN107066397A (zh) 剖析缓存替换
CN103064797B (zh) 数据处理方法和虚拟机管理平台
CN105095113B (zh) 一种缓存管理方法和系统
CN103514110B (zh) 非易失性存储设备的缓存管理方法及装置
CN109062505A (zh) 一种缓存策略写入分层硬件架构下的写性能优化方法
US9971698B2 (en) Using access-frequency hierarchy for selection of eviction destination
CN106354615A (zh) 固态硬盘日志生成方法及其装置
CN107391398A (zh) 一种闪存缓存区的管理方法及系统
CN103902473B (zh) 一种数据处理方法及数据缓存系统
CN104503703B (zh) 缓存的处理方法和装置
Niu et al. Hybrid storage systems: A survey of architectures and algorithms
US20130013850A1 (en) Relative heat index based hot data determination for block based storage tiering
CN107463509A (zh) 缓存管理方法、缓存控制器以及计算机系统
Wu et al. APP-LRU: A new page replacement method for PCM/DRAM-based hybrid memory systems
CN107729268A (zh) 一种基于capi接口的内存扩展装置与方法
Debnath et al. Large block CLOCK (LB-CLOCK): A write caching algorithm for solid state disks
CN110795363A (zh) 一种存储介质的热页预测方法和页面调度方法
CN110888600A (zh) 一种面向nand闪存的缓冲区管理方法

Legal Events

Date Code Title Description
C06 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