CN103942161A - 只读缓存的去冗余系统及方法以及缓存的去冗余方法 - Google Patents

只读缓存的去冗余系统及方法以及缓存的去冗余方法 Download PDF

Info

Publication number
CN103942161A
CN103942161A CN201410168498.2A CN201410168498A CN103942161A CN 103942161 A CN103942161 A CN 103942161A CN 201410168498 A CN201410168498 A CN 201410168498A CN 103942161 A CN103942161 A CN 103942161A
Authority
CN
China
Prior art keywords
data
buffer memory
read
data address
cryptographic hash
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
CN201410168498.2A
Other languages
English (en)
Other versions
CN103942161B (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.)
Beijing Xinruiyun Technology Co., Ltd.
Original Assignee
HANGZHOU BINGTE 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 HANGZHOU BINGTE TECHNOLOGY Co Ltd filed Critical HANGZHOU BINGTE TECHNOLOGY Co Ltd
Priority to CN201410168498.2A priority Critical patent/CN103942161B/zh
Publication of CN103942161A publication Critical patent/CN103942161A/zh
Application granted granted Critical
Publication of CN103942161B publication Critical patent/CN103942161B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种只读缓存的去冗余系统、只读缓存的去冗余方法和缓存的去冗余方法,所述去冗余系统包括主控模块、数据块和索引模块,数据块与索引模块一一对应,索引模块内设有缓存替换信息单元和数据地址标签单元,索引模块内还设有数据块哈希值单元,数据地址标签单元内设有多个的数据地址标签,同一数据地址标签单元中所有的数据地址标签在缓存中均指代对应的同一数据块。本发明通过计算比较每个数据块的哈希值,寻找并合并冗余数据,同时给每个数据块增加了多个数据地址标签,以达到对应不同数据地址的冗余数据块在缓存中共享一个数据块的目的,节省了缓存的存储空间。

Description

只读缓存的去冗余系统及方法以及缓存的去冗余方法
技术领域
本发明涉及电数据存储及处理技术领域,尤其涉及一种只读缓存的去冗余系统、只读缓存的去冗余方法和缓存的去冗余方法。
背景技术
缓存的数据存储于高速存储介质中,数据通常以数据块的形式在缓存中管理,每个数据块需要使用数据地址标签来存储数据使用者在访问低速存储介质时使用的数据地址,为了实现高效的缓存替换算法,每个数据块还需要存储一些缓存替换信息。在典型的缓存设计中,大部分缓存存储空间被数据块占用,缓存替换信息和数据地址标签只占用少量空间。由于高速存储介质的价格昂贵,缓存的数据存储容量通常远小于低速存储介质,在高速存储介质性能一定的情况下,缓存对系统性能的帮助很大程度上取决于缓存的数据存储容量,因此提高缓存的有效数据容量将提高系统的整体性能。
现有缓存设计中每个数据块都对应于某个访问低速存储介质时使用的数据地址,该地址存储于缓存的数据地址标签中。缓存通过该地址来判断数据使用者需要访问的数据是否已经存储在缓存中,在很多缓存应用中,不同数据地址标签对应的数据块内容是相同的,这些为冗余数据块,对于这些冗余数据块,缓存仍然给每个数据块都分配存储空间,造成了缓存存储空间的浪费。
发明内容
本发明所要解决的技术问题是针对现有技术存在的上述问题,提供了一种提高缓存有效容量的只读缓存的去冗余系统、只读缓存的去冗余方法和缓存的去冗余方法。
为解决上述问题,本发明的一种技术方案是:
一种只读缓存的去冗余系统,包括主控模块、若干用于存储数据的数据块和若干用于索引数据块的索引模块,主控模块分别与数据块和索引模块相连,数据块与索引模块一一对应,索引模块内设有用于存储数据块访问记录的缓存替换信息单元和用于存储低速存储介质上访问数据地址的数据地址标签单元,所述索引模块内还设有用于存储数据块哈希值的数据块哈希值单元,主控模块计算数据块的哈希值并将哈希值写入数据块哈希值单元中存储,所述数据地址标签单元内设有多个的数据地址标签,同一数据地址标签单元中所有的数据地址标签在低速存储介质上指代的数据内容相同,同一数据地址标签单元中所有的数据地址标签在缓存中均指代对应的同一数据块。
优选地,所述缓存替换信息单元内存储有数据块的访问记录和数据冗余度,所述数据冗余度为数据地址标签单元中有效数据地址标签的个数。
相比较于现有技术,本发明的只读缓存的去冗余系统通过计算比较每个数据块的哈希值,寻找并合并冗余数据,同时给每个数据块增加了多个数据地址标签,这些数据标签用于存储数据内容相同的数据块所对应的数据使用者在访问低速存储介质时使用的数据地址,以达到对应不同数据地址的冗余数据块在缓存中共享一个数据块的目的,节省了缓存的存储空间。
本发明的另一种技术方案是:
一种只读缓存的去冗余方法,所述方法基于上述提及的去冗余系统,所述方法包括如下步骤:
a)主控模块读取数据时,根据读取的访问数据地址,搜索只读缓存中所有数据地址标签单元中的数据地址标签,若数据地址标签单元中包含所述访问数据地址,则读取访问数据地址对应数据块中的数据并将数据返回到主控模块,同时更新缓存替换信息单元中的替换信息,否则,进入步骤b;
b)从低速存储介质中读取所述访问数据地址对应的访问数据并将数据返回到主控模块,同时主控模块计算访问数据的哈希值;
c)将访问数据的哈希值与缓存中所有数据块哈希值单元中的哈希值进行比较,若缓存中包含访问数据的哈希值,则将所述访问数据地址存储到哈希值相同的索引模块的数据地址标签单元中,同时更新缓存替换信息单元中的替换信息,否则,进入步骤d;
d)检测缓存是否已满,若缓存未满,将所述访问数据写入缓存的数据块中,进入步骤e,否则,根据缓存替换算法选择需要被替换的数据块,将访问数据写入需要被替换的数据块中,进入步骤e;
e)更新与步骤d中数据块对应的索引模块,将所述访问数据地址存储到数据地址标签单元中,更新缓存替换信息单元中的替换信息,并将步骤b中计算得到的哈希值写入数据块哈希值单元中存储。
优选地,所述更新缓存替换信息单元中的替换信息具体为:更新数据块的访问记录和数据冗余度,所述数据冗余度为数据地址标签单元中有效数据地址标签的个数。
优选地,所述步骤d中的缓存替换算法具体为:将缓存中所有数据块根据数据冗余度从低到高进行排序,选择数据冗余度相同且数据冗余度最低的数据块,采用LRU算法计算出需要被替换的数据块。
优选地,所述哈希值是采用哈希函数计算得到,哈希函数为MD5、SHA或SHA256中的一种。
相比较于现有技术,本发明的只读缓存的去冗余方法通过数据块哈希值比较寻找并合并冗余数据,同时给每个数据块增加了多个数据地址标签,这些数据标签用于存储数据内容相同的数据块所对应的数据使用者在访问低速存储介质时使用的数据地址,以达到对应不同数据地址的冗余数据块在缓存中共享一个数据块的目的,节省了缓存的存储空间,同时结合数据的冗余度优化了缓存替换算法。
本发明的再一种技术方案是:
一种缓存的去冗余方法,所述方法基于权利要求1所述的去冗余系统,所述方法包括操作类型判断步骤、读操作去冗余步骤和写操作步骤,具体为:
操作类型判断步骤:判断主控模块的操作类型,若是读操作,则进入读操作去冗余步骤,若是写操作,则进入写操作步骤;
读操作去冗余步骤:根据读操作的访问数据地址,判断访问数据地址是否已保存在只读缓存或读写缓存中,若访问数据地址均不在只读缓存和读写缓存中,则进入步骤A,若访问数据地址已保存在读写缓存中存储,则进入步骤B,若访问数据地址已保存在只读缓存中,则进入步骤C,否则,返回操作类型判断步骤;
写操作步骤:根据写操作的访问数据地址,判断访问数据地址是否已保存在只读缓存和读写缓存中,若访问数据地址均不在只读缓存和读写缓存中,则进入步骤B,若访问数据地址已保存在读写缓存中存储,则进入步骤B,若访问数据地址已保存在只读缓存中,则进入步骤D,否则,返回操作类型判断步骤;
A)从低速存储介质中读取所述访问数据地址对应的访问数据并将数据返回到主控模块,同时主控模块计算访问数据的哈希值;将访问数据的哈希值与只读缓存中所有数据块哈希值单元中的哈希值进行比较,若只读缓存中包含访问数据的哈希值,则将所述访问数据地址存储到哈希值相同的索引模块的数据地址标签单元中,同时更新缓存替换信息单元中的替换信息,返回操作类型判断步骤,否则,进入步骤A1;
A1)检测只读缓存是否已满,若缓存未满,将所述访问数据写入缓存的数据块中,进入步骤A2,否则,根据缓存替换算法选择需要被替换的数据块,将访问数据写入需要被替换的数据块中,进入步骤A2;
A2)更新与步骤A1中数据块对应的索引模块,将所述访问数据地址存储到数据地址标签单元中,更新缓存替换信息单元中的替换信息,并将步骤A中计算得到的哈希值写入数据块哈希值单元中存储,返回操作类型判断步骤;
B)由读写缓存处进行读写访问,返回操作类型判断步骤;
C)根据读取的访问数据地址,读取访问数据地址对应数据块中的数据并将数据返回到主控模块,同时更新缓存替换信息单元中的替换信息,返回操作类型判断步骤;
D)在只读缓存中删除写操作地址对应的数据地址标签,返回步骤B。
优选地,所述更新缓存替换信息单元中的替换信息具体为:更新数据块的记录和数据冗余度,所述数据冗余度为数据地址标签单元中有效数据地址标签的个数。
优选地,所述步骤A1中的缓存替换算法具体为:将缓存中所有数据块根据数据冗余度从低到高进行排序,选择数据冗余度相同且数据冗余度最低的数据块,采用LRU算法计算出需要被替换的数据块。
相比较于现有技术,本发明的缓存的去冗余方法适用于缓存的读操作和写操作,通过读写操作的区分及访问地址的存储位置来判断是否应用只读缓存去冗余方法,针对于只读缓存,使用数据块哈希值比较寻找并合并冗余数据,同时给每个数据块增加了多个数据地址标签,以达到对应不同数据地址的冗余数据块在缓存中共享一个数据块的目的,节省了缓存的存储空间,同时结合数据的冗余度优化了缓存替换算法,针对于读写缓存则采用普通缓存方式,该方法尤其适合文件和磁盘等需要支持读写操作的缓存。
附图说明
图1是本发明只读缓存的去冗余系统的结构原理框图。
图2是本发明只读缓存的去冗余方法的流程图。
图3是本发明只读缓存的去冗余方法中一种实例的缓存结构框图。
图4是本发明缓存的去冗余方法的缓存结构框图。
图5是本发明缓存的去冗余方法的条件判断图。
具体实施方式
下面结合附图和实施例进一步详细说明本发明,但本发明的保护范围并不限于此。
参照图1,本发明的只读缓存的去冗余系统,包括主控模块、若干用于存储数据的数据块和若干用于索引数据块的索引模块,主控模块分别与数据块和索引模块相连,数据块与索引模块一一对应,即索引模块1用于索引数据块1,索引模块N用于索引数据块N。索引模块和数据块存储于只读缓存中,用于提高光驱等只读设备的访问性能。索引模块内设有缓存替换信息单元、数据地址标签单元和数据块哈希值单元,缓存替换信息单元、数据地址标签单元和数据块哈希值单元用于提高只读缓存的有效容量。
数据块哈希值单元用于存储数据块哈希值,主控模块在读取访问时,会计算每个数据块的哈希值并将哈希值写入与该数据块对应的数据块哈希值单元中存储,通过每个数据块的哈希值可以识别只读缓存中内容相同的冗余数据块。数据块哈希值单元给缓存中每个数据块增加一个字段用于存储数据内容的哈希值,哈希值用于快速判断不同数据块的数据内容是否相同。哈希值的计算方法可以使用通用的哈希函数如MD5(Message Digest Algorithm MD5)、SHA(Secure HashAlgorithm)等,将大块的数据通过数学运算得到一个数据量很小的哈希值。比如使用一个256位的二进制数来存储一个8K字节数据块的哈希值,通过哈希值的比较,缓存可以快速的判断两个数据块是否包含完全一样的数据。如果两个数据块的哈希值不同,那么这两个数据块的数据内容必然不同,如果两个数据块的哈希值相同,那么这两个数据块有很高的概率包含相同的数据。根据实际应用的要求,可以选择是否对哈希值相同的数据块进行完整数据比较来确定数据内容是否相同,如果采用SHA256等用于加密应用的哈希函数,两个不同数据块产生同样哈希值的概率远远小于硬件存储设备数据出错的概率,因此对大多数应用将不需要再进行完整数据比较。
数据地址标签单元用于存储低速存储介质上访问数据地址,数据地址标签单元内设有多个的数据地址标签,同一数据地址标签单元中所有的数据地址标签在低速存储介质上指代的数据内容相同,同一数据地址标签单元中所有的数据地址标签在缓存中均指代对应的同一数据块。缓存的每个数据块相对于现有技术增加了多个数据地址标签,这些数据标签用于存储数据内容相同的数据块所对应的数据使用者在访问低速存储介质时使用的数据地址。由于数据块的容量通常远大于数据地址标签对存储空间的占用,并且合并了内容相同的冗余数据块,这样的设计就能达到对应不同数据地址的冗余数据块在缓存中共享一个数据块的目的,节省了缓存的存储空间。
缓存替换信息单元用于存储数据块访问记录等,缓存替换信息单元内存储有数据块的访问记录和数据冗余度,访问记录包括访问频次、访问时间等,其中数据冗余度为数据地址标签单元中数据地址标签的有效存储个数,即存储的访问数据地址的个数。根据缓存替换信息单元的替换信息,优化了传统的缓存替换算法。如果缓存的存储空间已经完全被数据块占用,再分配新的数据块到缓存时就需要用新的数据块替换掉一个原有的数据块,缓存替换算法用于在缓存中选择相对不重要的数据块作为被替换的对象。使用本发明提出的去冗余缓存设计之后,可以根据数据块的数据冗余度来判断数据块的重要性,数据冗余度指某个数据块对应的不同数据地址的数量,该值越大,就有越多的地址包含该数据块的数据,其数据冗余度和相对重要性就越高。因此,缓存替换算法需要优先选择冗余度低的数据块作为被替换的对象。
参照图1-2,本发明的一种只读缓存的去冗余方法,所述方法基于上述提及的去冗余系统,所述方法包括如下步骤:
a)主控模块读取数据时,根据读取的访问数据地址,搜索只读缓存中所有数据地址标签单元中的数据地址标签,若数据地址标签单元中包含所述访问数据地址,则读取访问数据地址对应数据块中的数据并将数据返回到主控模块,同时更新缓存替换信息单元中的替换信息,否则,进入步骤b;
b)从低速存储介质中读取所述访问数据地址对应的访问数据并将数据返回到主控模块,同时主控模块计算访问数据的哈希值;
c)将访问数据的哈希值与缓存中所有数据块哈希值单元中的哈希值进行比较,若缓存中包含访问数据的哈希值,则将所述访问数据地址存储到哈希值相同的索引模块的数据地址标签单元中,同时更新缓存替换信息单元中的替换信息,否则,进入步骤d;
d)检测缓存是否已满,若缓存未满,将所述访问数据写入缓存的数据块中,进入步骤e,否则,根据缓存替换算法选择需要被替换的数据块,将访问数据写入需要被替换的数据块中,进入步骤e;
e)更新与步骤d中数据块对应的索引模块,将所述访问数据地址存储到数据地址标签单元中,更新缓存替换信息单元中的替换信息,将缓存中所有数据块根据数据冗余度从低到高进行排序,选择数据冗余度相同且数据冗余度最低的数据块,采用LRU(Least Recently Used)算法计算出需要被替换的数据块,并将步骤b中计算得到的哈希值写入数据块哈希值单元中存储。
上述步骤中提及的更新缓存替换信息单元中的替换信息具体为:更新数据块的访问记录和数据冗余度,所述数据冗余度为数据地址标签单元中有效数据地址标签的个数。其中,哈希值是采用哈希函数计算得到,哈希函数为MD5、SHA或SHA256中的一种。
参照图3的缓存结构框图,本发明的一个比较简单的应用,该应用的场景是为只读光盘驱动器增加一个高速读缓存,对于同一数据地址,数据使用者只对数据进行读取操作。该实例中的低速存储介质指光盘驱动器,缓存的存储介质使用操作系统管理的动态内存。该实例假设只读设备数据访问的地址为20位,该缓存分为256个缓存区域,每个缓存区域包含64个数据块。每个数据块的大小是4K字节,每个数据块哈希值为256位,那么整个缓存的数据块容量总和是64M字节。数据使用者访问缓存时首先定位缓存区域,缓存区域一般由数据地址的高8位确定,数据地址标签包含数据地址的低12位,每个数据块最多可以对应四个数据地址标签,使用四个数据地址标签来存储该数据块对应的访问数据地址。缓存替换信息包括最近最少使用(LRU)算法需要使用的数据块访问相对时间信息以及数据块的冗余度,数据冗余度等于数据块对应的有效数据地址标签的个数,其值为0至4。在使用缓存替换算法选择需要被替换的数据块时,首先在数据冗余度为0的数据块中使用LRU算法选择需要被替换的数据块,如果没有数据冗余度为0的数据块,则在数据冗余度为1的数据块中选择,以此类推。这样的缓存替换算法将优先保留数据冗余度高的数据块,以便覆盖更多的数据地址,从而提高缓存的有效容量。
参照图2-3,本实例只读缓存的去冗余方法,包括如下步骤:
a)主控模块读取数据时,根据读取的访问数据地址的高8位确定缓存区域,搜索缓存区域中所有数据地址标签单元中的数据地址标签,若数据地址标签单元中包含所述访问数据地址,则读取访问数据地址对应数据块中的数据并将数据返回到主控模块,同时更新缓存替换信息单元中的替换信息,否则,进入步骤b;
b)从低速存储介质中读取所述访问数据地址对应的访问数据并将数据返回到主控模块,同时主控模块计算访问数据的哈希值;
c)将访问数据的哈希值与缓存区域中所有数据块哈希值单元中的哈希值进行比较,若缓存区域中包含访问数据的哈希值,检测该哈希值对应的数据块已有有效的数据地址标签,数据地址标签单元中数据地址标签是否已满,若已经有四个有效的数据地址标签了,则随机删除一个已有数据地址标签,替换为当前访问数据地址,若未满,则将所述访问数据地址存储到哈希值相同的索引模块的数据地址标签单元中,同时更新缓存替换信息单元中的替换信息,若缓存中不包含访问数据的哈希值,进入步骤d;
d)检测缓存区域是否已满,若缓存未满,将所述访问数据写入缓存区域的数据块中,进入步骤e,否则,根据缓存替换算法选择需要被替换的数据块,将访问数据写入需要被替换的数据块中,进入步骤e;
e)更新与步骤d中数据块对应的索引模块,将所述访问数据地址存储到数据地址标签单元中,更新缓存替换信息单元中的替换信息,将缓存区域中所有数据块根据数据冗余度从低到高进行排序,选择数据冗余度相同且数据冗余度最低的数据块中,采用LRU算法计算出需要被替换的数据块,并将步骤b中计算得到的哈希值写入数据块哈希值单元中存储。
参照图4-5,本发明的另一技术方案:缓存的去冗余方法,所述方法包括操作类型判断步骤、读操作去冗余步骤和写操作步骤,该方法主要针对硬盘文件缓存,并将硬盘文件缓存区分为只读缓存和读写缓存两种。采用该方法进行缓存时,具有如下特点:其一,需要支持对数据的写操作;其二,文件的大小是可变的,而不是固定的大小;其三,数据读取的地址是文件的路径和文件名而不是一个固定长度的数据地址。本文中为了简化说明,在此设计实例中我们假设操作系统可以将文件的路径和文件名通过一个表格映射为一个20位的地址。
本发明的缓存的去冗余方法具体为:
操作类型判断步骤:判断主控模块的操作类型,若是读操作,则进入读操作去冗余步骤,若是写操作,则进入写操作步骤;
读操作去冗余步骤:根据读操作的访问数据地址,判断访问数据地址是否已保存在只读缓存或读写缓存中,若访问数据地址均不在只读缓存和读写缓存中,则进入步骤A,若访问数据地址已保存在读写缓存中存储,则进入步骤B,若访问数据地址已保存在只读缓存中,则进入步骤C,否则,返回操作类型判断步骤;
写操作步骤:根据写操作的访问数据地址,判断访问数据地址是否已保存在只读缓存和读写缓存中,若访问数据地址均不在只读缓存和读写缓存中,则进入步骤B,若访问数据地址已保存在读写缓存中存储,则进入步骤B,若访问数据地址已保存在只读缓存中,则进入步骤D,否则,返回操作类型判断步骤;
A)从低速存储介质中读取所述访问数据地址对应的访问数据并将数据返回到主控模块,同时主控模块计算访问数据的哈希值;将访问数据的哈希值与只读缓存中所有数据块哈希值单元中的哈希值进行比较,若只读缓存中包含访问数据的哈希值,则将所述访问数据地址存储到哈希值相同的索引模块的数据地址标签单元中,同时更新缓存替换信息单元中的替换信息,返回操作类型判断步骤,否则,进入步骤A1;
A1)检测只读缓存是否已满,若缓存未满,将所述访问数据写入缓存的数据块中,进入步骤A2,否则,根据缓存替换算法选择需要被替换的数据块,将访问数据写入需要被替换的数据块中,进入步骤A2;
A2)更新与步骤A1中数据块对应的索引模块,将所述访问数据地址存储到数据地址标签单元中,更新缓存替换信息单元中的替换信息,并将步骤A中计算得到的哈希值写入数据块哈希值单元中存储,返回操作类型判断步骤;
B)由读写缓存处进行读写访问,返回操作类型判断步骤;
C)根据读取的访问数据地址,读取访问数据地址对应数据块中的数据并将数据返回到主控模块,同时更新缓存替换信息单元中的替换信息,返回操作类型判断步骤;
D)在只读缓存中删除写操作地址对应的数据地址标签,返回步骤B。
其中,更新缓存替换信息单元中的替换信息具体为:更新数据块的访问记录和数据冗余度,所述数据冗余度为数据地址标签单元中有效数据地址标签的个数。步骤A1中的缓存替换算法具体为:将缓存中所有数据块根据数据冗余度从低到高进行排序,选择数据冗余度相同且数据冗余度最低的数据块中,采用LRU算法计算出需要被替换的数据块。
参照图4,本发明的缓存的去冗余方法的缓存结构框图,在利用本发明的方法消除冗余时,把文件分为两类,第一类是有大量读操作,但是很少有写操作的文件,该类文件拥有比较稳定的冗余性。比如在硬盘用于存储多个虚拟机用户的应用软件时,同一个软件的文件在不同用户的存储空间中实际上包含同样的内容,并且,这些软件的大部分文件是不需要更改的。第二类文件是有大量的写操作的文件,比如用户配置信息等,这类文件通常只有很少的冗余性,并且其内容多变,难于在缓存中实现高效的去冗余。基于以上分类,本发明将第一类文件缓存于本发明提出的去冗余缓存中,并且只支持读操作,由图4中的只读缓存完成该功能,只读缓存的设计与本发明中只读缓存的去冗余方法相同。第二类文件缓存于不带去冗余功能的传统缓存中,由图4中的读写缓存完成该功能。并且,只读缓存和读写缓存的内容具有互斥性,同一数据地址的文件只能在两种缓存中的一个出现。
本发明的缓存的去冗余方法适用于缓存的读操作和写操作,对于只读缓存和读写缓存都不包括的数据按照第一类文件处理,并将其存储于只读缓存中,对于有任何写操作的文件,都按照第二类文件处理,由读写缓存完成数据访问。通过读写操作的区分及访问地址的存储位置来判断是否应用缓存去冗余方法,针对与只读缓存,使用数据块哈希值比较寻找并合并冗余数据,同时给每个数据块增加了多个数据地址标签,已达到对应不同数据地址的冗余数据块在缓存中共享一个数据块的目的,节省了缓存的存储空间,同时结合数据的冗余度优化了缓存替换算法,针对于读写缓存则采用普通缓存方式,该方法尤其适合文件类缓存。
上述说明中,凡未加特别说明的,均采用现有技术中的技术手段。

Claims (9)

1.一种只读缓存的去冗余系统,包括主控模块、若干用于存储数据的数据块和若干用于索引数据块的索引模块,主控模块分别与数据块和索引模块相连,数据块与索引模块一一对应,索引模块内设有用于存储数据块访问记录的缓存替换信息单元和用于存储低速存储介质上访问数据地址的数据地址标签单元,其特征在于,所述索引模块内还设有用于存储数据块哈希值的数据块哈希值单元,主控模块计算数据块的哈希值并将哈希值写入数据块哈希值单元中存储,所述数据地址标签单元内设有多个的数据地址标签,同一数据地址标签单元中所有的数据地址标签在低速存储介质上指代的数据内容相同,同一数据地址标签单元中所有的数据地址标签在缓存中均指代对应的同一数据块。
2.根据权利要求1所述的只读缓存的去冗余系统,其特征在于,所述缓存替换信息单元内存储有数据块的访问记录和数据冗余度,所述数据冗余度为数据地址标签单元中有效数据地址标签的个数。
3.一种只读缓存的去冗余方法,其特征在于,所述方法基于权利要求1所述的去冗余系统,所述方法包括如下步骤:
a)主控模块读取数据时,根据读取的访问数据地址,搜索只读缓存中所有数据地址标签单元中的数据地址标签,若数据地址标签单元中包含所述访问数据地址,则读取访问数据地址对应数据块中的数据并将数据返回到主控模块,同时更新缓存替换信息单元中的替换信息,否则,进入步骤b;
b)从低速存储介质中读取所述访问数据地址对应的访问数据并将数据返回到主控模块,同时主控模块计算访问数据的哈希值;
c)将访问数据的哈希值与缓存中所有数据块哈希值单元中的哈希值进行比较,若缓存中包含访问数据的哈希值,则将所述访问数据地址存储到哈希值相同的索引模块的数据地址标签单元中,同时更新缓存替换信息单元中的替换信息,否则,进入步骤d;
d)检测缓存是否已满,若缓存未满,将所述访问数据写入缓存的数据块中,进入步骤e,否则,根据缓存替换算法选择需要被替换的数据块,将访问数据写入需要被替换的数据块中,进入步骤e;
e)更新与步骤d中数据块对应的索引模块,将所述访问数据地址存储到数据地址标签单元中,更新缓存替换信息单元中的替换信息,并将步骤b中计算得到的哈希值写入数据块哈希值单元中存储。
4.根据权利要求3所述的只读缓存的去冗余方法,其特征在于,所述更新缓存替换信息单元中的替换信息具体为:更新数据块的访问记录和数据冗余度,所述数据冗余度为数据地址标签单元中有效数据地址标签的个数。
5.根据权利要求4所述的只读缓存的去冗余方法,其特征在于,所述步骤d中的缓存替换算法具体为:将缓存中所有数据块根据数据冗余度从低到高进行排序,选择数据冗余度相同且数据冗余度最低的数据块,采用LRU算法计算出需要被替换的数据块。
6.根据权利要求3所述的只读缓存的去冗余方法,其特征在于,所述哈希值是采用哈希函数计算得到,哈希函数为MD5、SHA或SHA256中的一种。
7.一种缓存的去冗余方法,其特征在于,所述方法基于权利要求1所述的去冗余系统,所述方法包括操作类型判断步骤、读操作去冗余步骤和写操作步骤,具体为:
操作类型判断步骤:判断主控模块的操作类型,若是读操作,则进入读操作去冗余步骤,若是写操作,则进入写操作步骤;
读操作去冗余步骤:根据读操作的访问数据地址,判断访问数据地址是否已保存在只读缓存或读写缓存中,若访问数据地址均不在只读缓存和读写缓存中,则进入步骤A,若访问数据地址已保存在读写缓存中存储,则进入步骤B,若访问数据地址已保存在只读缓存中,则进入步骤C,否则,返回操作类型判断步骤;
写操作步骤:根据写操作的访问数据地址,判断访问数据地址是否已保存在只读缓存和读写缓存中,若访问数据地址均不在只读缓存和读写缓存中,则进入步骤B,若访问数据地址已保存在读写缓存中存储,则进入步骤B,若访问数据地址已保存在只读缓存中,则进入步骤D,否则,返回操作类型判断步骤;
A)从低速存储介质中读取所述访问数据地址对应的访问数据并将数据返回到主控模块,同时主控模块计算访问数据的哈希值;将访问数据的哈希值与只读缓存中所有数据块哈希值单元中的哈希值进行比较,若只读缓存中包含访问数据的哈希值,则将所述访问数据地址存储到哈希值相同的索引模块的数据地址标签单元中,同时更新缓存替换信息单元中的替换信息,返回操作类型判断步骤,否则,进入步骤A1;
A1)检测只读缓存是否已满,若缓存未满,将所述访问数据写入缓存的数据块中,进入步骤A2,否则,根据缓存替换算法选择需要被替换的数据块,将访问数据写入需要被替换的数据块中,进入步骤A2;
A2)更新与步骤A1中数据块对应的索引模块,将所述访问数据地址存储到数据地址标签单元中,更新缓存替换信息单元中的替换信息,并将步骤A中计算得到的哈希值写入数据块哈希值单元中存储,返回操作类型判断步骤;
B)由读写缓存处进行读写访问,返回操作类型判断步骤;
C)根据读取的访问数据地址,读取访问数据地址对应数据块中的数据并将数据返回到主控模块,同时更新缓存替换信息单元中的替换信息,返回操作类型判断步骤;
D)在只读缓存中删除写操作地址对应的数据地址标签,返回步骤B。
8.根据权利要求7所述的缓存的去冗余方法,其特征在于,所述更新缓存替换信息单元中的替换信息具体为:更新数据块的访问记录和数据冗余度,所述数据冗余度为数据地址标签单元中有效数据地址标签的个数。
9.根据权利要求8所述的缓存的去冗余方法,其特征在于,所述步骤A1中的缓存替换算法具体为:将缓存中所有数据块根据数据冗余度从低到高进行排序,选择数据冗余度相同且数据冗余度最低的数据块,采用LRU算法计算出需要被替换的数据块。
CN201410168498.2A 2014-04-24 2014-04-24 只读缓存的去冗余系统及方法以及缓存的去冗余方法 Active CN103942161B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410168498.2A CN103942161B (zh) 2014-04-24 2014-04-24 只读缓存的去冗余系统及方法以及缓存的去冗余方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410168498.2A CN103942161B (zh) 2014-04-24 2014-04-24 只读缓存的去冗余系统及方法以及缓存的去冗余方法

Publications (2)

Publication Number Publication Date
CN103942161A true CN103942161A (zh) 2014-07-23
CN103942161B CN103942161B (zh) 2017-02-15

Family

ID=51189833

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410168498.2A Active CN103942161B (zh) 2014-04-24 2014-04-24 只读缓存的去冗余系统及方法以及缓存的去冗余方法

Country Status (1)

Country Link
CN (1) CN103942161B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239575A (zh) * 2014-10-08 2014-12-24 清华大学 一种虚拟机镜像文件存储、分发方法及装置
CN105095113A (zh) * 2015-07-21 2015-11-25 浪潮(北京)电子信息产业有限公司 一种缓存管理方法和系统
WO2017173754A1 (zh) * 2016-04-06 2017-10-12 中国科学院计算技术研究所 片上重复寻址的方法及装置
CN108462885A (zh) * 2018-05-09 2018-08-28 广东工业大学 一种基于区块链的视频存储方法、装置及介质
CN109002401A (zh) * 2018-05-04 2018-12-14 广东睿江云计算股份有限公司 基于动态缓冲的虚拟机磁盘复制过程读取方法及装置
CN110083549A (zh) * 2019-04-01 2019-08-02 福建天泉教育科技有限公司 一种缓存读写的方法及终端
CN116303135A (zh) * 2023-02-24 2023-06-23 格兰菲智能科技有限公司 任务数据的装载方法、装置和计算机设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819304A (en) * 1996-01-29 1998-10-06 Iowa State University Research Foundation, Inc. Random access memory assembly
US6393544B1 (en) * 1999-10-31 2002-05-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for calculating a page table index from a virtual address
US7269663B2 (en) * 2001-09-28 2007-09-11 Intel Corporation Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache
US7747565B2 (en) * 2005-12-07 2010-06-29 Microsoft Corporation Garbage collector support for transactional memory
US10146545B2 (en) * 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
CN103150395B (zh) * 2013-03-25 2014-07-23 中国人民解放军国防科学技术大学 基于ssd的文件系统目录路径解析方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239575A (zh) * 2014-10-08 2014-12-24 清华大学 一种虚拟机镜像文件存储、分发方法及装置
CN105095113A (zh) * 2015-07-21 2015-11-25 浪潮(北京)电子信息产业有限公司 一种缓存管理方法和系统
CN105095113B (zh) * 2015-07-21 2018-06-29 浪潮(北京)电子信息产业有限公司 一种缓存管理方法和系统
WO2017173754A1 (zh) * 2016-04-06 2017-10-12 中国科学院计算技术研究所 片上重复寻址的方法及装置
US10684946B2 (en) 2016-04-06 2020-06-16 Institute of Computing Technology, Chinese Academy of Science Method and device for on-chip repetitive addressing
CN109002401A (zh) * 2018-05-04 2018-12-14 广东睿江云计算股份有限公司 基于动态缓冲的虚拟机磁盘复制过程读取方法及装置
CN108462885A (zh) * 2018-05-09 2018-08-28 广东工业大学 一种基于区块链的视频存储方法、装置及介质
CN110083549A (zh) * 2019-04-01 2019-08-02 福建天泉教育科技有限公司 一种缓存读写的方法及终端
CN116303135A (zh) * 2023-02-24 2023-06-23 格兰菲智能科技有限公司 任务数据的装载方法、装置和计算机设备
CN116303135B (zh) * 2023-02-24 2024-03-22 格兰菲智能科技有限公司 任务数据的装载方法、装置和计算机设备

Also Published As

Publication number Publication date
CN103942161B (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
US10303596B2 (en) Read-write control method for memory, and corresponding memory and server
CN108804350B (zh) 一种内存访问方法及计算机系统
CN103942161A (zh) 只读缓存的去冗余系统及方法以及缓存的去冗余方法
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
US20220137849A1 (en) Fragment Management Method and Fragment Management Apparatus
KR102152238B1 (ko) 단편화를 해결하는 메모리 세그먼트 재매핑
US8595463B2 (en) Memory architecture with policy based data storage
CN102576333B (zh) 非易失性存储器中的数据高速缓存
US8595451B2 (en) Managing a storage cache utilizing externally assigned cache priority tags
US11188262B2 (en) Memory system including a nonvolatile memory and a volatile memory, and processing method using the memory system
CN101645043B (zh) 写数据的方法、读数据的方法及存储设备
CN105095116A (zh) 缓存替换的方法、缓存控制器和处理器
CN101097547A (zh) 用智能最近最少使用方案在高速缓存中进行功率性能调整
KR20100081880A (ko) 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법
KR20140092493A (ko) 가상화 시스템에서의 메모리 관리 방법
CN105117351A (zh) 向缓存写入数据的方法及装置
CN110532200B (zh) 一种基于混合内存架构的内存系统
CN103399823A (zh) 业务数据的存储方法、设备和系统
US11989452B2 (en) Read-disturb-based logical storage read temperature information identification system
US11922067B2 (en) Read-disturb-based logical storage read temperature information maintenance system
CN114281719A (zh) 用于通过地址映射来扩展命令编排的系统及方法
CN102508790A (zh) 一种应用于内容解析存储的基于内容的缓存方法
US20040015669A1 (en) Method, system, and apparatus for an efficient cache to support multiple configurations
JP2019144921A (ja) 情報処理装置及び情報処理方法
Pratibha et al. Efficient flash translation layer for flash memory

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 311121 Building 402, No. 22 Longquan Road, Cangqian Street, Yuhang District, Hangzhou City, Zhejiang Province

Patentee after: Hangzhou ice Polytron Technologies Inc

Address before: 311121 7th Floor, 19th Building, 998 Wenyi West Road, Yuhang District, Hangzhou City, Zhejiang Province

Patentee before: HANGZHOU BINGTE TECHNOLOGY CO., LTD.

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20190514

Address after: Room 202, 2nd floor, No. 17 Zhongguancun Software Park, Wangxi Road, Haidian District, Beijing, 100094

Patentee after: Beijing Xinruiyun Technology Co., Ltd.

Address before: 311121 Building 402, No. 22 Longquan Road, Cangqian Street, Yuhang District, Hangzhou City, Zhejiang Province

Patentee before: Hangzhou ice Polytron Technologies Inc

TR01 Transfer of patent right