CN106055487B - 一种分区着色实现存储***加速的方法及*** - Google Patents
一种分区着色实现存储***加速的方法及*** Download PDFInfo
- Publication number
- CN106055487B CN106055487B CN201610377542.XA CN201610377542A CN106055487B CN 106055487 B CN106055487 B CN 106055487B CN 201610377542 A CN201610377542 A CN 201610377542A CN 106055487 B CN106055487 B CN 106055487B
- Authority
- CN
- China
- Prior art keywords
- page
- subregion
- obliquely
- cache
- paging
- 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.)
- Active
Links
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/0893—Caches characterised by their organisation or structure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种分区着色实现存储***加速的方法及***,包括1)对存储介质进行分页和分区处理,并对分区处理后的存储进行灰度处理,其中分页将存储介质的存储空间按照设定的大小进行逻辑划分而成的一段连续的存储区域,所述的分区为包含相同数目的连续多个分页的一段存储区域;2)处理输入输出请求,通过捕获向存储介质发起的所有输入输出请求,并将特定的输入输出请求重定向到高速缓存;3)定时的TOUCH位重置,其中TOUCH位表示一个周期内某个页是否被访问过。与现有技术相比,本发明具有提高存储***的访问效率等优点。
Description
技术领域
本发明涉及存储***,尤其是涉及一种分区着色实现存储***加速的方法及***,通过提高缓存的命中率,使得存储***更多地从快速存储设备中进入输入输出,以达到用更少的投资,提高存储***的访问效率。
背景技术
当前,计算机存储***的容量越来越大,计算机性能也快速增长。但是与存储相关的访问速度却没有相应的大幅提高。虽然固态硬盘的读写速度非常高,但是单位容量成本也非常高。因此,完全采用固态硬盘的存储***固然可以大幅提高***的响应速度,但是其成本也是采用相同容量的机械磁盘的好几倍,甚至是几十倍。而且根据数据访问的特点,在一段时间内,其访问大多都是集中于某一个特定的区域,甚至是有的数据在生命周期内,都不再被访问。将这些数据存储在固态磁盘上是一种严重的浪费。
基于这样的考虑,很多的存储***会使用固态硬盘作为机械磁盘加速设备,将机械磁盘上的活跃数据存储在固态磁盘上,而将一些不活跃的数据存储在机械磁盘上。通过存储分层处理,可以在容量,成本与速率之间取得一个良好的平衡。但是,固态磁盘相比于机械磁盘的容量上是有很大差别的,固态磁盘加速设备的容量有可能随着使用时间的加长,导致没有空闲的空间用于新的数据加速。这就需要将已经存放在固态磁盘上的数据删除,并腾出空间来存放新的数据。
理想的状态下,所有的数据操作都从加速磁盘中进行读写,即命中率为100%。这样存储***即具有机械磁盘的容量,又有固态磁盘的速度。但是现实情况很难达到理想状态,只能通过各种途径来向理想状态接近,即提高加速设备的命中率。对于命中率的处理,一般有如下方法:
1.完全不处理。即存储***的加速空间满时,随机地将某个旧数据移出加速设备,然后将新数据写入加速设备。毫无疑问,这么处理是很不理想的,有可能被移除的数据可能是将要被访问,或者访问非常频繁的。有可能在下次输入输出时,又会使用到这个数据,则会被再次加载到加速设备中。最差的情况是,新数据与旧数据会在机械磁盘与固态磁盘之间来回切换,导致数据的访问性能反而下降。
2.针对特定的应用进行特别优化。比如针对数据库应用的特点以及用户数据访问的特点来调整缓存替换的方法。这个方法可以有效地针对特定的数据场景提高其缓存的命中率。但是一旦数据访问模式有变量,这个方法就不能很好适应,导致命中率的下降,进而退化成没有优化的情况,甚至是更糟。因此,即便是相同的应用类型,但是用户不同、配置不同、数据量不同等等情况,都没有办法对缓存算法进行通用化,进而限制了其使有范围。
基于这样的分析,好的缓存替换算法,应该具有很好的数据预测能力,并动态地调整替换算法,使其能够针对不同的应用环境,不同的输入输出场景都能够自动学习与适应,以期最大化地提高缓存的命中率,来提高存储***的性能。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种分区着色实现存储***加速的方法及***,利用存储***的输入输出历史数据进行统计处理,以提高缓存的利用率以及命中率来提高数据的访问效率,这样可以提高整个存储***的性能。
本发明的目的可以通过以下技术方案来实现:
一种分区着色实现存储***加速的方法,其特征在于,包括以下步骤:
1)对存储介质进行分页和分区处理,并对分区处理后的存储进行灰度处理,其中分页将存储介质的存储空间按照设定的大小进行逻辑划分而成的一段连续的存储区域,所述的分区为包含相同数目的连续多个分页的一段存储区域;
2)处理输入输出请求,通过捕获向存储介质发起的所有输入输出请求,并将特定的输入输出请求重定向到高速缓存;
3)定时的TOUCH位重置,其中TOUCH位表示一个周期内某个页是否被访问过。
所述的步骤1)中分页包括源介质分页和高速缓存分页,其中源介质分页到高速缓存分页的对应关系为影射,其为源介质与高速缓存被分成相同大小的逻辑存储空间单元。
所述的步骤1)中分区目的是对区域内的存储进行灰度处理,在同一个分区内的所有分页具有相同的灰度值,分区是针对源介质分页进行的划分,具体划分过程如下:
1.1)所有的分区初始的灰度值为0,当某个分区内的某个页被访问时,这个分区的灰度值加1,其他区域的灰度值减1;
1.2)在表示分区的数据中,为分区内的每个分页都设置一个EXIST位与一个TOUCH位;当某个分页有缓存,则EXIST位为1,否则为零;如果相应的分页被访问到时,相应的TOUCH位会被置1;同时有另一个异步过程,会定时去重置所分区内的分页的TOUCH位。
所述的步骤2)处理输入输出请求具体为:
将捕获到的输入输出请求先进行判断,如果是输出请求,即写请求,则不对写请求做任何操作,并等待下一个请求的到来;如果是输入请求,即读请求,则执行如下步骤:
2.1)当截获一个输入操作即读请求时,则用输入请求中的地址计算所在的影射页,并在已经存在的影射中查找有没有相应的影射项存在,如果存在,则执行2.2)操作;如果不存在,则执行2.3)的操作;
2.2)直接影射这个输入操作到高速缓存中,同时将这个页所对应的分区的灰度增加1,其他的分区的灰度减1,对这个分页所对应分区内的TOUCH位置1;返回步骤2.1);
2.3)先检查相应的调整缓存中是否还有空间,如果有空间则执行2.3.1);否则执行2.3.2);
2.3.1)分配一个影射项,并将源介质中对应的页数据复制到高速缓存中的一个可用的影射页中,并创建一个影射项来记录这个新的影射,同时将这个分区的灰度增加1,其他的分区的灰度减少1,对这个分页所在分区内的EXIST位与TOUCH位置1;返回步骤2.1);
2.3.2)先在分区灰度从小到大的分区中查找一个EXIST位为1,TOUCH位为0的页,如果找到,则将这个页中的数据用新的源介质中的数据替换,并更新影射表以反映新的影射,将旧分区中对应页的EXIST位设置为0,同时对这个新的分页在对应分区内的EXIST与TOUCH位设置1;返回步骤2.1)。
所述的步骤3)中的TOUCH位重置具体为:根据设定的时间间隔,清理所有的分区中分页对应的TOUCH位,将其设置为0。
一种分区着色实现存储***加速的***,包括:
初始化模块,用来对存储***进行准备工作;
IO处理模块,用于处理输入输出的捕获和影射的处理;
TOUCH模块,用于周期性地处理分区中的TOUCH位的设置操作。
所述的初始化模块具体工作过程如下:
1.1、向初始化模块发送BIND指令,以及相应的源介质以及高速缓存参数,建立源介质与高速缓存之间的影射关系;
1.2、初始化模块取得源介质的大小以及高速缓存的大小;并将两者按照影射页大小规则设置影射页大小为MAP_PAGE_SIZE,并按分区大小的规则设置分区大小为REGION_SIZE,同时计算源介质的分区个数为REGION_COUNT;高速缓存页的总数CACHE_PAGE_NR;
1.3、设置一个数组GRAY,大小为REGION_COUNT,并将这个数组的所有元素都设置为0,同时针对数组中的每个元素,设置两个关联变量,一个变量为MAPPED,一个变量为TOUCHED;变量中的每个位表示一个影射页的相应状态;将这两个变量的所有位都设置为0;
1.4、启动TOUCH模块,TOUCH模块中包含一个独立的进程,该进程按指定的周期参数,周期性地设置所有的GRAY数组元素中的TOUCHED变量为0;
1.5、将IO处理模块的输入输出的捕获方法设置在源介质的输入输出处理路径中;
1.6、将记录当前已经使用的缓存页数的变量CUR_CACHE_NR的值设置为0。
所述的IO处理模块具体工作过程如下:
2.0、IO处理模块将捕获到的输入输出请求先进行判断,如果是输出请求,即写请求,则不对写请求做任何操作,并等待下一个请求的到来;如果是输入请求,即读请求,则执行如下步骤:
2.1、先取得请求中的目标地址,根据该地址,结合MAP_PAGE_SIZE与REGION_SIZE的大小计算获取其所在的页PAGE,以及所在的分区REGION;
2.2、判断获取的页在影射表中是否有针对这个页的影射,如果有,则执行2.2.1,否则执行2.2.2;
2.2.1、在影射表中取得相应的影射后,将GRAY数组中REGION下标所在的元素的值增加1,而数组的其它元素的值减1;同时将与GRAY数组中REGION下标所在的元素关联的TOUCHED变量中影射页PAGE所对应的位设置为1;然后返回步骤2.0,等待下一个输入的到来;
2.2.2、若没有找到相应的影射,则首先判断CUR_CACHE_NR的值是否小于CACHE_PAGE_NR,如果小于表示缓存中还有空闲的高速缓存页,则执行2.2.2.1,否则表示已经没有空闲的缓存页,则执行2.2.2.2;
2.2.2.1、若高速缓存中还存在空闲的缓存页,则给当前的输入请求所在的页分配一个空闲缓存页,并将源介质中这一页的数据复制到这个空闲的缓存页中,同时将这个请求所在的分区的灰度元素,即GRAY数组中REGION下标所在的元素的值增加1,而数组的其它元素的值减1;同时将与GRAY数组中REGION下标所在的元素关联的TOUCHED变量,MAPPED变量中影射页PAGE所对应的位都设置为1;返回步骤2.0,等待下一个输入的到来;
2.2.2.2、若高速缓存中已经没有空闲的空间了,需要将原有的影射中替换一个。
所述的步骤2.2.2.2具体为:
A、从灰度最小到最大的分区中依次查找GRAY元素,找到某个数组元素,其相关的MAPPED与TOUCHED变量中,MAPPED变量对应的位为1,而TOUCHED变量中对应的位为0的位置;并将这个位置所对应的页的影射表项替换成新的影射,同时将源介质相应页的数据复制到旧影射中高速缓存页中,即覆盖原来的数据;
B、将这个请求所在的分区的灰度元素,即GRAY数组中REGION下标所在的元素的值增加1,而数组的其它元素的值减1;同时将与GRAY数组中REGION下标所在的元素关联的TOUCHED变量,MAPPED变量中影射页PAGE所对应的位都设置为1;
C、将旧的页所在的分区的GRAY数组元素关联的MAPPED变量中对应的页的位设置为0,以表示相应的的页已经不存在影射表中了;
D、返回步骤2.0,等待下一个输入的到来。
所述的TOUCH模块按照初始化过程中指定的周期,周期性能扫描GRAY数组数组中与各个元素关联的TOUCHED变量,将其全部置为零。
与现有技术相比,本发明具有以下优点:
1.提高了高速缓存的命中率,加快了访问速度。由于命中率的提高,更多的数据从缓存中读取,因此可以提高存储***的整体性能。
2.可以通过自动的历史数据着色,可以根据数据的访问历史情况动态地调整高速缓存数据替换的策略,可以使命中率保持稳定,而不会因为应用的不同而导致命中率的不同。
3.通过使用动态的高速缓存替换策略,使保存在缓存中的数据都是活跃数据,提高了***的响应时间。
附图说明
图1为灰度落点示意图;
图2为分区与分页示意图;
图3为读请求的流程图;
图4为***构成图;
图5为IO处理流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
本发明通过捕获向存储介质发起的所有输入输出请求,并将特定的输入输出请求重定向到高速缓存,进而达到提高存储***数据访问速度的目的。同时,为了尽可能地提高高速缓存的命中率,尽量多将集中访问的区域的数据存放于调整缓存中,而不经常访问的区域的数据少放在缓存中。为了性能优化的需求,可选择尽量大以及尽量快的高速缓存磁盘。
本发明中使用到的概念如下:
A、高速缓存:有时也称为缓存或者缓存介质,是由固态磁盘或者其他类似的具有高输入输出速率的存储介质。
B、源介质:指的是被高速缓存加速的存储原始数据的存储介质。
C、分页:将存储介质的存储空间按照固定的大小进行逻辑划分而成的一段连续的存储区域,或者表示这段存储区域的逻辑空间。其从0开始连续编号。
D、分区:是包含相同数目的连续多个分页的一段连续存储区域,或者这段存储区域的逻辑空间。其从0开始连续编号。
E、灰度:是指用来表示输入输出范围处于分区,或者分页之内的频度。将输入输出的范围落在某个分区以及分页,想象成向这个区域滴下一滴墨水,并平均分配到整个区域内所形成的颜色变化。当某个区域的落点越多时,该区域则表现得越黑。在***运行一段时间后,如果不对这些区域的灰度进行调整,则可能整个区域都会变成黑色的,因此在某个输入输出落入某个区域,这个区域的灰度会加重,同时其他区域的灰度会减轻。区域中的落点越多,则越黑,反之则越白,如图1所示。
F、影射:是源介质的分页到高速缓存中分页的对应关系。这两个页中存储的是相同的数据。
为了实现本发明,步骤如下:
1.分页与分区处理
1.1分页
为了更高效地处理读写请求,减少数据在高速缓存与源介质之间迁移数据,提高缓存介质的命中率,简化及优化缓存影射,源介质与高速缓存被分成相同大小的逻辑存储空间单元,称为影射页。它是源介质与高速缓存之间复制数据的基本单元。
影射页大小为***内存页的整数幂次方位数大小。***基本的内存页大小为4KB,则可用的倍数为1,2,4,8,16,32,64倍等。最小为4倍,即16KB,最大为512倍,即2048KB。影射页一旦固定,将不得改变。
在计算机***中,一次读写的数据单位一般最大为4KB,因此分页的处理方式,可以扩大预读的范围,从而减少源介质与高速缓存之间数据迁移的次数,也就是减少了读写操作的次数,因此这会导致重定向表的命中率等比例提高,并且因为IO次数变少,相应的读写数据的时间就少,提高了存储***的总体性能。
1.2分区及其灰度,分区中的分页EXIST位与TOUCH位
分区的目的是对区域内的存储进行灰度处理。在同一个分区内的所有分页有相同的灰度值。分区是针对源介质的分页进行的划分,不是针对高速缓存分页的划分。
1.2.1所有的分区初始的灰度值为0,当某个分区内的某个页被访问时,这个分区的灰度值加1,其他的区域的灰度值减1。通过这样的相对调整,不会导致区域的灰度值只增不减。灰度值的大小表示了该区域数据的活跃程度。值越大,活跃程度越高,越应该保留在缓存中。反之,则越有可能被替换出缓存中。其可能性与灰度匹配。
为了简化处理,分区的大小为影射页的2的幂次方倍。可用的倍数为32,64,128倍等,最小不得小32倍。于另外在分页之上再加上分区进行处理,是为了加速影射的处理,而不需要每次都要对所有影射进行调整,这样可以减少影射的额外计算负担。
1.2.2在表示分区的数据中,为分区的内的每个分布都设置一个EXIST位与一个TOUCH位。当某个页有缓存,则EXIST位为1,否则为零。而如果相应的分页访问到时,相应的TOUCH位会被置1。同时有另一个异步的过程,会定时去重置所分区内的分页的TOUCH位。
分区分页的关系图如图2所示。
2.输入输出处理
在处理一个读请求时,首先从读请求中提取读取的位置,并根据这个位置数据计算其所落入的逻辑影射页的编号中,并使用这个编号在重定向表中进行查询,看是否有相应的影射表项存在,并根据结果进行相应的处理。
2.1读请求
当截获一个输入操作即读请求时,则用输入请求中的地址计算所在的影射页,并在影射表中查找有没有相应的影射存在。如果存在,则执行2.1.1操作。如果不存在,则执行2.1.2的操作。
2.1.1直接影射这个输入操作到高速缓存中。同时将这个页所对应的分区的灰度增加1,其他的分区的灰度减1。对这个分页所对应分区内的TOUCH位置1。
2.1.2先检查相应的调整缓存中是否还有空间,如果有空间则执行2.1.2.1。否则执行2.1.2.2。
2.1.2.1分配一个影射项,并将源介质中的对应的页数据复制到高速缓存中的一个可用的影射页中。并创建一个影射项来记录这个新的影射。并将这个分区的灰度增加1,其他的分区的灰度减少1。对这个分页所在分区内的EXIST位与TOUCH位置1。
然后请求重定向到高速缓存的影射页中,并准备截获下一个输入操作。
2.1.2.2先在分区灰度从小到大的分区中查找一个EXIST位为1,TOUCH位为0的页,如果找到,则将这个页中的数据用新的源介质中的数据替换,并更新影射表以反映新的影射。将旧分区中对应页的EXIST位设置为0,同时对这个新的分页在对应分区内的EXIST与TOUCH位设置1。
然后请求重定向到高速缓存的影射页中,并准备截获下一个输入操作。
对于读请求,即输入请求的流程图如图3所示。
2.2写请求
写请求也称输出请求。当写请求出现时,在本发明中,不对写请求进行重定向,而是直接让其写入到源介质的相应的位置。如果在示来的某个时间需要访问,则按照读数据的方式进行处理。
3.定时的TOUCH位重置进程
这个进程的工作是间隔一定的时间间隔内,清理所有的分区中的分页对应的TOUCH位,将其设置为0。这个假设是基于在一个周期内,分区的访问已经由灰度进行了累积,而分页的TOUCH位是表示一个周期内,某个页是否被访问过。因为在有些情况下,分区内的影射页很少被访问,但是偶尔某个页在某个时期内非常活跃时,但是却在替换页时被替换出去。为了防止这种情况的发生,而设置了这样的位来处理。以抵消在特殊情况下灰度值导致的加速效果的退化。这个周期是可以由存储***来调整的。
本发明整个***三个主要的模块构成,如图4所示,
其中,初始化模块1用来对存储***进行准备工作,IO处理模块2用于处理输入输出的捕获,影射的处理,等IO相关的工作。TOUCH模块3周期性地处理分区中的TOUCH位的设置操作。
1.初始化
为方便后续的处理,首先需要对存储***进行初始化。初始化的顺序执行如下步骤:
1.1向初始化模块发送BIND指令,以及相应的源介质以及高速缓存参数,以此来建立源介质与高速缓存之间的影射关系。
1.2初始化模块取得源介质的大小,以及高速缓存的大小。并将两者按照影射页大小规则设置影射页大小为MAP_PAGE_SIZE,并按分区大小的规则设置分区大小为REGION_SIZE。并计算源介质的分区个数为REGION_COUNT。高速缓存页的总数CACHE_PAGE_NR。
1.3设置一个数组GRAY,大小为REGION_COUNT,并将这个数组的所有元素都设置为0。同时针对数组中的每个元素,设置两个关联变量,一个变量为MAPPED,一个变量为TOUCHED。变量中的每个位表示一个影射页的相应状态。将这两个变量的所有位都设置为0。
1.4启动TOUCH模块,并指针其周期参数。TOUCH模块中包含一个独立的进程。这个进程会按指定的周期参数,周期性地设置所有的GRAY数组元素中的TOUCHED变量为0。
1.5将IO处理模块的输入输出的捕获方法设置在源介质的输入输出处理路径中,这样IO处理模块可以捕获所有的放送到源介质中的输入输出请求。
1.6将记录当前已经使用的缓存页数的变量CUR_CACHE_NR的值设置为0。
当实始化过程完成后则将控制权交给IO处理模块。IO处理模块按照步骤2的方式进行处理。
2.处理输入输出
IO处理模块将捕获到的输入输出请求先进行判断,如果是输出请求,即写请求,则不对写请求做任何操作。并等待下一个请求的到来。如果是输入请求,即读请求,则执行如下步骤:
2.1先取得请求中的目标地址。并根据这个地址,并结合MAP_PAGE_SIZE与REGION_SIZE的大小计算获取其所在的页PAGE,才及所在的分区REGION。
2.2利用PAGE在影射表中查找是否有针对这个页的影射,如果有,则执行2.2.1。否则执行2.2.2。
2.2.1执行到这个步骤,则说明在影射表中取得了相应的影射。然后将GRAY数组中REGION下标所在的元素的值增加1,而数组的其它元素的值减1。同时将与GRAY数组中REGION下标所在的元素关联的TOUCHED变量中影射页PAGE所对应的位设置为1。然后返回步骤2,等待下一个输入的到来。
2.2.2执行到这个步骤,说明没有找到相应的影射。则首先判断CUR_CACHE_NR的值是否小于CACHE_PAGE_NR,如果小于表示缓存中还有空闲的高速绑存页,则执行2.2.2.1,否则表示已经没有空闲的缓存页,则执行2.2.2.2。
2.2.2.1当执行这个步骤,说明高速缓存中还存在空闲的缓存页,则给当前的输入请求所在的页分配一个空闲缓存页,并将源介质中这一页的数据复制到这个空闲的缓存页中。同时将这个请求所在的分区的灰度元素,即GRAY数组中REGION下标所在的元素的值增加1,而数组的其它元素的值减1。同时将与GRAY数组中REGION下标所在的元素关联的TOUCHED变量,MAPPED变量中影射页PAGE所对应的位都设置为1。
执行完上面的步骤后,则将针对源介质的输入请求重定向到高速缓存中。并返回步骤2,等待下一个输入的到来。
2.2.2.2执行到这个步骤,说明高速缓存中已经没有空闲的空间了。因此需要将原有的影射中替换一个。其执行如下过程:
A、从灰度最小到最大的分区中依次查找GRAY元素,找到某个数组元素,其相关的MAPPED与TOUCHED变量中,MAPPED某个位为1,而TOUCHED变量中对应的位为0的位置。并将这个位置所对应的页的影射表项替换成新的影射。并将源介质相应页的数据复制到旧影射中高速缓存页中,即覆盖原来的数据。
B、将这个请求所在的分区的灰度元素,即GRAY数组中REGION下标所在的元素的值增加1,而数组的其它元素的值减1。同时将与GRAY数组中REGION下标所在的元素关联的TOUCHED变量,MAPPED变量中影射页PAGE所对应的位都设置为1。
C、将旧的页所在的分区的GRAY数组元素关联的MAPPED变量中对应的页的位设置为0,以表示相应的的页已经不存在影射表中了。
D、执行完上面的步骤后,则将针对源介质的输入请求重定向到高速缓存中。并返回步骤2,等待下一个输入的到来。
整个流程如图5所示。
3.TOUCH模块的处理
TOUCH模块会按照初始化过程中指定的周期,周期性能扫描GRAY数组数组中与各个元素关联的TOUCHED变量,将其全部置为零即可。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种分区着色实现存储***加速的方法,其特征在于,包括以下步骤:
1)对存储介质进行分页和分区处理,并对分区处理后的存储进行灰度处理,其中分页将存储介质的存储空间按照设定的大小进行逻辑划分而成的一段连续的存储区域,所述的分区为包含相同数目的连续多个分页的一段存储区域;
2)处理输入输出请求,通过捕获向存储介质发起的所有输入输出请求,并将特定的输入输出请求重定向到高速缓存;
3)定时的TOUCH位重置,其中TOUCH位表示一个周期内某个页是否被访问过;
所述的步骤1)中分区目的是对区域内的存储进行灰度处理,在同一个分区内的所有分页具有相同的灰度值,分区是针对源介质分页进行的划分,具体划分过程如下:
1.1)所有的分区初始的灰度值为0,当某个分区内的某个页被访问时,这个分区的灰度值加1,其他区域的灰度值减1;
1.2)在表示分区的数据中,为分区内的每个分页都设置一个EXIST位与一个TOUCH位;当某个分页有缓存,则EXIST位为1,否则为零;如果相应的分页被访问到时,相应的TOUCH位会被置1;同时有另一个异步过程,会定时去重置所分区内的分页的TOUCH位。
2.根据权利要求1所述的一种分区着色实现存储***加速的方法,其特征在于,所述的步骤1)中分页包括源介质分页和高速缓存分页,其中源介质分页到高速缓存分页的对应关系为影射,其为源介质与高速缓存被分成相同大小的逻辑存储空间单元。
3.根据权利要求1所述的一种分区着色实现存储***加速的方法,其特征在于,所述的步骤2)处理输入输出请求具体为:
将捕获到的输入输出请求先进行判断,如果是输出请求,即写请求,则不对写请求做任何操作,并等待下一个请求的到来;如果是输入请求,即读请求,则执行如下步骤:
2.1)当截获一个输入操作即读请求时,则用输入请求中的地址计算所在的影射页,并在已经存在的影射中查找有没有相应的影射项存在,如果存在,则执行2.2)操作;如果不存在,则执行2.3)的操作;
2.2)直接影射这个输入操作到高速缓存中,同时将这个页所对应的分区的灰度增加1,其他的分区的灰度减1,对这个分页所对应分区内的TOUCH位置1;返回步骤2.1);
2.3)先检查相应的调整缓存中是否还有空间,如果有空间则执行2.3.1);否则执行2.3.2);
2.3.1)分配一个影射项,并将源介质中对应的页数据复制到高速缓存中的一个可用的影射页中,并创建一个影射项来记录这个新的影射,同时将这个分区的灰度增加1,其他的分区的灰度减少1,对这个分页所在分区内的EXIST位与TOUCH位置1;返回步骤2.1);
2.3.2)先在分区灰度从小到大的分区中查找一个EXIST位为1,TOUCH位为0的页,如果找到,则将这个页中的数据用新的源介质中的数据替换,并更新影射表以反映新的影射,将旧分区中对应页的EXIST位设置为0,同时对这个新的分页在对应分区内的EXIST与TOUCH位设置1;返回步骤2.1)。
4.根据权利要求1所述的一种分区着色实现存储***加速的方法,其特征在于,所述的步骤3)中的TOUCH位重置具体为:根据设定的时间间隔,清理所有的分区中分页对应的TOUCH位,将其设置为0。
5.一种分区着色实现存储***加速的***,其特征在于,包括:
初始化模块,用来对存储***进行准备工作;
IO处理模块,用于处理输入输出的捕获和影射的处理;
TOUCH模块,用于周期性地处理分区中的TOUCH位的设置操作;
所述的初始化模块具体工作过程如下:
1.1、向初始化模块发送BIND指令,以及相应的源介质以及高速缓存参数,建立源介质与高速缓存之间的影射关系;
1.2、初始化模块取得源介质的大小以及高速缓存的大小;并将两者按照影射页大小规则设置影射页大小为MAP_PAGE_SIZE,并按分区大小的规则设置分区大小为REGION_SIZE,同时计算源介质的分区个数为REGION_COUNT;高速缓存页的总数CACHE_PAGE_NR;
1.3、设置一个数组GRAY,大小为REGION_COUNT,并将这个数组的所有元素都设置为0,同时针对数组中的每个元素,设置两个关联变量,一个变量为MAPPED,一个变量为TOUCHED;变量中的每个位表示一个影射页的相应状态;将这两个变量的所有位都设置为0;
1.4、启动TOUCH模块,TOUCH模块中包含一个独立的进程,该进程按指定的周期参数,周期性地设置所有的GRAY数组元素中的TOUCHED变量为0;
1.5、将IO处理模块的输入输出的捕获方法设置在源介质的输入输出处理路径中;
1.6、将记录当前已经使用的缓存页数的变量CUR_CACHE_NR的值设置为0。
6.根据权利要求5所述的***,其特征在于,所述的IO处理模块具体工作过程如下:
2.0、IO处理模块将捕获到的输入输出请求先进行判断,如果是输出请求,即写请求,则不对写请求做任何操作,并等待下一个请求的到来;如果是输入请求,即读请求,则执行如下步骤:
2.1、先取得请求中的目标地址,根据该地址,结合MAP_PAGE_SIZE与REGION_SIZE的大小计算获取其所在的页PAGE,以及所在的分区REGION;
2.2、判断获取的页在影射表中是否有针对这个页的影射,如果有,则执行2.2.1,否则执行2.2.2;
2.2.1、在影射表中取得相应的影射后,将GRAY数组中REGION下标所在的元素的值增加1,而数组的其它元素的值减1;同时将与GRAY数组中REGION下标所在的元素关联的TOUCHED变量中影射页PAGE所对应的位设置为1;然后返回步骤2.0,等待下一个输入的到来;
2.2.2、若没有找到相应的影射,则首先判断CUR_CACHE_NR的值是否小于CACHE_PAGE_NR,如果小于表示缓存中还有空闲的高速缓存页,则执行2.2.2.1,否则表示已经没有空闲的缓存页,则执行2.2.2.2;
2.2.2.1、若高速缓存中还存在空闲的缓存页,则给当前的输入请求所在的页分配一个空闲缓存页,并将源介质中这一页的数据复制到这个空闲的缓存页中,同时将这个请求所在的分区的灰度元素,即GRAY数组中REGION下标所在的元素的值增加1,而数组的其它元素的值减1;同时将与GRAY数组中REGION下标所在的元素关联的TOUCHED变量,MAPPED变量中影射页PAGE所对应的位都设置为1;返回步骤2.0,等待下一个输入的到来;
2.2.2.2、若高速缓存中已经没有空闲的空间了,需要将原有的影射中替换一个。
7.根据权利要求6所述的***,其特征在于,所述的步骤2.2.2.2具体为:
A、从灰度最小到最大的分区中依次查找GRAY元素,找到某个数组元素,其相关的MAPPED与TOUCHED变量中,MAPPED变量对应的位为1,而TOUCHED变量中对应的位为0的位置;并将这个位置所对应的页的影射表项替换成新的影射,同时将源介质相应页的数据复制到旧影射中高速缓存页中,即覆盖原来的数据;
B、将这个请求所在的分区的灰度元素,即GRAY数组中REGION下标所在的元素的值增加1,而数组的其它元素的值减1;同时将与GRAY数组中REGION下标所在的元素关联的TOUCHED变量,MAPPED变量中影射页PAGE所对应的位都设置为1;
C、将旧的页所在的分区的GRAY数组元素关联的MAPPED变量中对应的页的位设置为0,以表示相应的的页已经不存在影射表中了;
D、返回步骤2.0,等待下一个输入的到来。
8.根据权利要求6所述的***,其特征在于,所述的TOUCH模块按照初始化过程中指定的周期,周期性能扫描GRAY数组数组中与各个元素关联的TOUCHED变量,将其全部置为零。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610377542.XA CN106055487B (zh) | 2016-05-31 | 2016-05-31 | 一种分区着色实现存储***加速的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610377542.XA CN106055487B (zh) | 2016-05-31 | 2016-05-31 | 一种分区着色实现存储***加速的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106055487A CN106055487A (zh) | 2016-10-26 |
CN106055487B true CN106055487B (zh) | 2019-03-22 |
Family
ID=57172357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610377542.XA Active CN106055487B (zh) | 2016-05-31 | 2016-05-31 | 一种分区着色实现存储***加速的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106055487B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442533A (zh) * | 2019-07-18 | 2019-11-12 | 合肥杰发科技有限公司 | 一种提高访问性能的方法、设备及存储介质 |
WO2022021158A1 (zh) * | 2020-07-29 | 2022-02-03 | 华为技术有限公司 | 缓存***、方法和芯片 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1345234A1 (en) * | 2002-03-11 | 2003-09-17 | STMicroelectronics S.r.l. | Semiconductor memory with self-refresh capability |
US8386714B2 (en) * | 2010-06-29 | 2013-02-26 | International Business Machines Corporation | Reducing write amplification in a cache with flash memory used as a write cache |
CN102323909B (zh) * | 2011-09-13 | 2014-03-19 | 北京北大众志微***科技有限责任公司 | 实现使用大容量高速缓存的内存管理方法及装置 |
CN102681792B (zh) * | 2012-04-16 | 2015-03-04 | 华中科技大学 | 一种固态盘内存分区方法 |
CN102981979B (zh) * | 2012-11-15 | 2015-12-23 | 上海爱数软件有限公司 | 一种提高存储***数据访问速度的方法 |
CN103049394A (zh) * | 2012-11-30 | 2013-04-17 | 记忆科技(深圳)有限公司 | 固态硬盘数据缓存的方法及其*** |
KR102366808B1 (ko) * | 2014-10-22 | 2022-02-23 | 삼성전자주식회사 | 캐시 메모리 시스템 및 그 동작방법 |
-
2016
- 2016-05-31 CN CN201610377542.XA patent/CN106055487B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106055487A (zh) | 2016-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109978751A (zh) | 多gpu帧渲染 | |
CN106875011A (zh) | 二值权重卷积神经网络加速器的硬件架构及其计算流程 | |
CN105468439A (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 | |
EP2732370B1 (en) | Instruction culling in graphics processing unit | |
CN105184367A (zh) | 深度神经网络的模型参数训练方法及*** | |
JP7087825B2 (ja) | 学習装置および学習方法 | |
CN106055487B (zh) | 一种分区着色实现存储***加速的方法及*** | |
CN109558421A (zh) | 基于缓存的数据处理方法、***、装置及存储介质 | |
CN107766079A (zh) | 处理器以及用于在处理器上执行指令的方法 | |
CN105491117A (zh) | 面向实时数据分析的流式图数据处理***及方法 | |
JP2019212171A (ja) | 学習装置および学習方法 | |
CN111079888A (zh) | 一种基于混合qpso-de寻优预测水质溶氧方法及*** | |
CN109189994A (zh) | 一种面向图计算应用的cam结构存储*** | |
CN109189726A (zh) | 一种读写日志的处理方法及装置 | |
KR20220001811A (ko) | 에너지 효율을 개선할 수 있는 그래픽 처리 장치를 위한 메모리 컨트롤러 및 이의 메모리 제어 방법 | |
WO2021070303A1 (ja) | 演算処理装置 | |
CN110750363B (zh) | 计算机存储管理方法和装置、电子设备和存储介质 | |
CN108334532A (zh) | 一种基于Spark的Eclat并行化方法、***及装置 | |
Zhao et al. | A novel biogeography-based optimization algorithm with momentum migration and taxonomic mutation | |
CN108628889A (zh) | 基于时间片的数据抽样方法、***和装置 | |
CN111722923A (zh) | 一种异构资源的调用方法、装置和计算机可读存储介质 | |
CN108920097A (zh) | 一种基于交织存储的三维数据处理方法 | |
CN108762763A (zh) | 面向大规模复杂数据应用领域的并行i/o优化方法 | |
CN111737347B (zh) | 在Spark平台顺序切分数据的方法及装置 | |
CN108256694A (zh) | 基于重复遗传算法的模糊时间序列预测***、方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |