CN103488582B - 写高速缓冲存储器的方法及装置 - Google Patents
写高速缓冲存储器的方法及装置 Download PDFInfo
- Publication number
- CN103488582B CN103488582B CN201310400488.2A CN201310400488A CN103488582B CN 103488582 B CN103488582 B CN 103488582B CN 201310400488 A CN201310400488 A CN 201310400488A CN 103488582 B CN103488582 B CN 103488582B
- Authority
- CN
- China
- Prior art keywords
- data block
- stored
- block
- flash card
- disk
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种写高速缓冲存储器的方法,应用闪存卡(即FLASH存储器)作为高速缓冲存储器,在进行数据缓存时,判断闪存卡中是否缓存有与待存储的数据块的磁盘逻辑块地址相同的旧数据块,如果存在,则直接将待存储数据块以异步方式写入所述闪存卡中,如果不存在,则将待存储数据块以异步方式写入所述闪存卡的空闲块中,实现了写数据的缓存,而由于闪存卡不需要备用电池保电,掉电后数据也不会丢失,因此能耗低,而且,闪存卡自身的价格低于动态随机存储器的价格,因此,本申请实施例提供的写高速缓冲存储器的方法,降低了存储***的实现成本。本申请实施例还提供一种写高速缓冲存储器的装置。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种读、写高速缓冲存储器的方法及装置。
背景技术
高速缓冲存储器(cache)是磁盘内部存储和外界接口之间的缓冲器。高速缓冲存储器的一个重要作用就是做为写cache对写入数据进行缓存,即在有数据需要存储至磁盘时,不会马上将数据写入到磁盘中,而是先将数据暂时写入高速缓冲存储器里,然后返回一个“数据已写入”的信号给***,这时***就会认为数据已经写入,并继续执行后续的工作,当高速缓存存储器中的数据达到一定程度时,再将数据从高速缓冲存储器写入到磁盘中。高速缓存存储器的使用,一方面减少了实际的磁盘操作,有效保护磁盘免于重复的读写操作而导致的损坏,一方面也可以减少数据写入所需的时间,从而提高了存储***的写性能。
然而,目前多使用带备用电池(Battery Backup Unit,BBU)保电的动态随机存储器(Dynamic Random Access Memory,DRAM)做为写cache,而备用电池的价格昂贵,能够支持的内存有限,因此,维护动态随机存储器需要消耗更多的电能,因而,使用动态随机存储器做为写cache使得存储***的实现成本较高。
发明内容
本发明实施例提供了一种写高速缓冲存储器的方法,以降低存储***的实现成本。
本发明的第一方面提供一种写高速缓冲存储器的方法,所高速缓冲存储器为闪存卡,所述方法包括:
判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块;
如果是,则将所述待存储数据块以异步方式写入所述闪存卡中;
如果否,则将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中。
在第一方面的第一种可能的实现方式中,所述将所述待存储数据块写入所述闪存卡的空闲块中包括:
判断所述闪存卡中是否存在空闲块;
如果存在,则将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中;
如果不存在,则将所述待存储数据块加入到等待队列,并在所述闪存卡中出现空闲块时,执行将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中的步骤。
在第一方面的第二种可能的实现方式中,在将所述待存储的数据块写入所述闪存卡中的空闲块后,还包括:
保存所述待存储数据块的磁盘逻辑块地址和所述待存储数据块的闪存逻辑块地址的对应关系。
结合第一方面的第二种可能实现方式,在第一方面的第三种可能的实现方式中,所述判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块包括:
判断是否存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址;
如果存在,则确定所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块;否则,确定所述述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块。
结合第一方面或第一方面的任意一种实现方式,在第一方面的第四种可能的实现方式中,还包括:
将所述待存储数据块标记为脏数据块,并将所述待存储数据块加入脏数据块队列。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,还包括:
获取所述闪存卡的当前空闲空间比例;
当所述空闲空间的比例小于第一预设阈值时,确定待读取的脏数据块的个数;
将所述脏数据块队列中的各个脏数据块按照磁盘逻辑块地址进行堆排序,获取第一排序堆;
发起若干个第一异步请求,依据所述待读取的脏数据块的个数从所述第一排序堆堆头开始依次异步读取闪存卡中的脏数据块;
根据读取到的脏数据块的磁盘逻辑块地址将读取到的脏数据块进行堆排序,获取第二排序堆;
发起第二异步请求,将所述读取到的脏数据块从第二排序堆的堆头开始依次异步写入磁盘中,所述第二异步请求的个数为所述待读取的脏数据块的个数。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述堆排序为最小堆排序。
结合第一方面的第五种可能的实现方式,在第一方面的第七种可能的实现方式中,所述堆排序为最大堆排序。
结合第一方面的第五种可能的实现方式,在第一方面的第八种可能的实现方式中,所述第一异步请求的个数依据第一公式确定,所述第一公式为:
V=N+(M-N)*R
其中,V为第一异步请求的个数;N为预设的异步请求个数的下限;M为预设的异步请求个数的上限;R为闪存卡当前的空间利用率。
本发明的第二方面提供一种写高速缓冲存储器的装置,所述高速缓冲存储器为闪存卡,所述装置包括:
判断模块,用于判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块;
第一写模块,用于在所述判断模块判断出所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块时,将所述待存储数据块以异步方式写入所述闪存卡中;
第二写模块,用于在所述判断模块判断出所述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块时,将所述待存储数据块以异步方式写入所述闪存卡的空闲块中。
在第二方面的第一种可能的实现方式中,所述第二写模块包括:
第一判断单元,用于判断所述闪存卡中是否存在空闲块;
第一写单元,用于在所述第一判断单元判断出所述闪存卡中存在空闲块时,将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中;
第二写单元,用于在所述判断单元判断出所述闪存卡中不存在空闲块时,将所述待存储数据块加入等待队列,并在所述闪存卡中出现空闲块时,将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中。
在第二方面的第二种可能的实现方式中,还包括:
保存模块,用于在所述第二写模块将所述待存储数据块写入所述闪存卡中的空闲块后,保存所述待存储数据块的磁盘逻辑块地址和所述待存储数据块的闪存逻辑块地址的对应关系。
在第二方面的第三种可能的实现方式中,所述判断模块包括:
第二判断单元,用于判断是否存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址;
第三判断单元,用于在所述第二判断单元判断出存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址时,确定所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块;
第四判断单元,用于在所述第二判断单元判断出不存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址时,确定所述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块。
结合第二方面或第二方面的任意一种可能的实现方式,在第二方面的第四中可能的实现方式中,还包括:
标记模块,用于在所述第一写模块或第二写模块将所述待存储数据块写入闪存卡后,将所述待存储数据块标记为脏数据块,并将所述待存储数据块加入脏数据块队列。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,还包括:
获取模块,用于获取所述闪存卡的当前空闲空间比例;
确定模块,用于当所述空闲空间比例小于第一预设阈值时,确定待读取的脏数据块的个数;
第一排序模块,用于将所述脏数据块队列中的各个脏数据块按照磁盘逻辑块地址进行堆排序,获取第一排序堆;
第一读模块,用于发起若干个第一异步请求,依据所述待读取的脏数据块的个数从所述第一排序堆堆头开始依次异步读取闪存卡中的脏数据块;
第二排序模块,用于根据读取到的脏数据块的磁盘逻辑块地址将读取到的脏数据块进行堆排序,获取第二排序堆;
第三写模块,用于发起第二异步请求,将所述读取到的脏数据块从所述第二排序堆的堆头开始依次写入到磁盘中,所述第二异步请求的个数为所述待读取的脏数据块的个数。
本发明的第三方面提供一种写高速缓冲存储器的装置,所述高速缓冲存储器为闪存卡,所述装置包括:
至少一个处理器,其被配置为:
判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块;
如果有,则将所述待存储数据块以异步方式写入所述闪存卡中;
如果没有,则将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中;以及
存储器,其耦合至所述至少一个处理器。
在第三方面的第一种可能的实现方式中,被配置为将所述待存储数据块写入所述闪存卡的空闲块中的至少一个处理器进一步被配置为:
判断所述闪存卡中是否存在空闲块;
如果存在,则将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中;
如果不存在,则将所述待存储数据块加入到等待队列,并在所述闪存卡中出现空闲块时,执行将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中的步骤。
在第三方面的第二种可能的实现方式中,所述至少一个处理器进一步被配置为:
在将所述待存储的数据块写入所述闪存卡中的空闲块后,保存所述待存储数据块的磁盘逻辑块地址和所述待存储数据块的闪存逻辑块地址的对应关系。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,被配置为判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块的至少一个处理器进一步被配置为:
判断是否存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址;
如果存在,则确定所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块;否则,确定所述述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块。
结合第三方面或第三方面的任意一种可能的实现方式,在第三方面的第四种可能的实现方式中,所述至少一个处理器进一步被配置为:
在将所述待存储的数据块写入所述闪存卡后,将所述待存储数据块标记为脏数据块,并将所述待存储数据块加入脏数据块队列。
结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述至少一个处理器进一步被配置为:
获取所述闪存卡的当前空闲空间比例;
当所述空闲空间的比例小于第一预设阈值时,确定待读取的脏数据块的个数;
将所述脏数据块队列中的各个脏数据块按照磁盘逻辑块地址进行堆排序,获取第一排序堆;
发起若干个第一异步请求,依据所述待读取的脏数据块的个数从所述第一排序堆堆头开始依次异步读取闪存卡中的脏数据块;
根据读取到的脏数据块的磁盘逻辑块地址将读取到的脏数据块进行堆排序,获取第二排序堆;
发起第二异步请求,将所述读取到的脏数据块从第二排序堆的堆头开始依次异步写入磁盘中,所述第二异步请求的个数为所述待读取的脏数据块的个数。
本发明实施例提供的一种写高速缓冲存储器的方法,应用闪存卡(即FLASH存储器)作为高速缓冲存储器,在进行数据缓存时,判断闪存卡中是否缓存有与待存储的数据块的磁盘逻辑块地址相同的旧数据块,如果存在,则直接将待存储数据块以异步方式写入所述闪存卡中,如果不存在,则将待存储数据块以异步方式写入所述闪存卡的空闲块中,实现了写数据的缓存,而由于闪存卡不需要备用电池保电,掉电后数据也不会丢失,因此能耗低,而且,闪存卡自身的价格低于动态随机存储器的价格,因此,本申请实施例提供的写高速缓冲存储器的方法,降低了存储***的实现成本。
附图说明
图1是本申请实施例提供的一种写高速缓冲存储器的方法的流程图;
图2是本申请实施例提供的另一种写高速缓冲存储器的方法的流程图;
图3是本申请实施例提供的又一种写高速缓冲存储器的方法的流程图;
图4为本申请实施例提供的又一种写高速缓冲存储器的方法的流程图;
图5为本申请实施例提供的将高速缓存存储器中的数据写入到磁盘中的过程的示意图;
图6为本申请实施例提供的一种写高速缓冲存储器的装置的结构示意图;
图7为本申请实施例提供的另一种写高速缓冲存储器的装置的结构示意图;
图8为本申请实施例提供的又一种写高速缓冲存储器的装置的结构示意图;
图9为本申请实施例提供的又一种写高速缓冲存储器的装置的结构示意图;
图10为本申请实施例提供的又一种写高速缓冲存储器的装置的结构示意图;
图11为本申请实施例提供的又一种写高速缓冲存储器的装置的结构示意图;
图12为本申请实施例提供的又一种写高速缓冲存储器的装置的结构示意图;
图13为本申请实施例提供的一体机***中的高速缓冲存储器的架构图;
图14为本申请实施例提供的块存储磁盘阵列中高速缓冲存储器的架构图。
具体实施方式
为了使本领域技术人员能进一步了解本发明的特征及技术内容,请参阅以下有关本发明的详细说明与附图,附图仅提供参考与说明,并非用来限制本发明。
请参看图1,图1为本申请实施例提供的一种写高速缓冲存储器的方法的流程图,其中,所述高速缓冲存储器为闪存卡,即FLASH存储器;所述方法包括:
步骤S101:判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块;如果是,则执行步骤S102,否则,执行步骤S103;
块存储是最传统的存储形式,本申请实施例正是基于块存储技术的写高速缓冲存储器的方法,即数据以数据块的形式存储在高速缓冲存储器和磁盘中。
本申请实例中,所述闪存卡被划为若干逻辑块
所述待存储数据块的磁盘逻辑块地址是写请求中携带的信息,用于指示待存储数据块在磁盘中的存储位置。
本申请实施例中,在接收到写请求后,首先判断高速缓存存储器中是否已经存在与待存储数据块的磁盘逻辑块地址相同的旧数据块,即判断闪存卡中是否存在数据块,而该数据块的磁盘逻辑块地址与所述待存储数据块的磁盘逻辑块地址是相同的。
步骤S102:将所述待存储数据块以异步方式写入所述闪存卡中;
本申请实施例中,如果闪存卡中已经存在与所述待存储数据块的逻辑块地址相同的旧数据块,则不管闪存卡中是否存在空闲块,直接发起对闪存卡的异步写操作,将待存储数据写入所述闪存卡中。
需要说明是,本申请实施例中,所述的空闲块为逻辑意义上的空闲块,因此,在没有空闲块的情况下,其可能还会有物理意义上的空闲空间,因此,在没有空闲块的情况下,还是可以将待存储数据块写入闪存卡中的,进一步的,在没有空闲块也没有物理意义上的空闲空间的情况下,闪存卡会执行擦除流程,具体擦除过程是本领域的公知常识,这里不再赘述。
步骤S103:将所述待存储数据块以异步方式写入所述闪存卡的空闲块中。
本申请实施例中,如果闪存卡中不存在与所述待存储数据块的逻辑块地址相同的旧数据块,则在所述闪存卡中存在空闲块时,发起对闪存卡的异步写操作,将待存储数据写入所述闪存卡中。
本申请实施例提供的一种写高速缓冲存储器的方法,应用闪存卡(即FLASH存储器)作为高速缓冲存储器,在进行数据缓存时,判断闪存卡中是否缓存有与待存储的数据块的磁盘逻辑块地址相同的旧数据块,如果存在,则直接将待存储数据块以异步方式写入所述闪存卡中,如果不存在,则将待存储数据块以异步方式写入所述闪存卡的空闲块中,实现了写数据的缓存,而由于闪存卡不需要备用电池保电,掉电后数据也不会丢失,因此能耗低,而且,闪存卡自身的价格低于动态随机存储器的价格,因此,本申请实施例提供的写高速缓冲存储器的方法,降低了存储***的实现成本,或者说,在同样成本的情况下,本申请实施例能够实现的缓存容量更大。
而且,FLASH存储器能够适应当前主流的硬件平台,不限定操作***,不限定硬件平台,只要有一个PCI-E插槽即可。
上述实施例,优选的,在将待存储数据块写入闪存卡中时,可以采用日志形式的数据布局,即将待存储数据块按闪存逻辑块地址从小到大的顺序依次存储,这样可以有效保证数据I/O的连续性,从而可以使得闪存卡进行垃圾回收时,垃圾块中的有效数据很少,减小了闪存卡的写放大(即减少了对闪存卡的写的次数),从而避免因对闪存卡的写而造成的闪存卡的使用寿命减短的问题。
本申请实施例提供的另一种写高速缓冲存储器的方法的流程图如图2所示,所述步骤S103具体实现流程可以包括:
步骤S201,判断所述闪存卡中是否存在空闲块;如果存在,则执行步骤S202,否则,执行步骤S203;
步骤S202:将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中;
步骤S203:将所述待存储数据块加入到等待队列中;
步骤S204:判断闪存卡中是否出现空闲块,如果是,则执行步骤S202;否则,继续等待。
本申请实施例中,在闪存卡中没有缓存与所述待存储数据块的磁盘逻辑块地址相同的旧数据块时,先判断闪存卡中是否有空闲块,如果有空闲块,则直接对闪存卡发起异步写操作,将待存储数据块写入闪存卡中;如果没有空闲块,则进行等待,直到闪存卡中出现空闲块时,才向闪存卡发起异步写操作,将待存数数据块写入闪存卡的空闲块中。
上述实施例,在将所述待存储的数据块写入所述闪存卡中的空闲块后,还可以包括:
保存所述待存储数据块的磁盘逻辑块地址和所述待存储数据块的闪存逻辑块地址的对应关系。
其中,所述待存储数据块的闪存逻辑块地址就是所述待存储数据块在所述闪存卡中的逻辑块地址,也就是说,在所述缓存卡中没有缓存与所述待存储数据块的磁盘逻辑块地址对应的旧数据块时,在将待存储数据块写入缓存卡中的空闲块中后,保存待存储数据块的磁盘逻辑块地址与该待存储数据块在缓存卡中的逻辑块地址的对应关系。
具体在保存所述待存储数据块的磁盘逻辑块地址和所述待存储数据块的闪存逻辑块地址的对应关系时,可以使用哈希表,如表1所示:
表1哈希表
表1中,各个索引的值(Hn,n=1,2,3,…)是由磁盘逻辑块地址经过哈希算法获取的。DLBAm(m=1,2,3,…)表示磁盘逻辑块地址;FLBAp(p=1,2,3,…)表示闪存逻辑块地址;由于不同的磁盘逻辑块地址经过哈希运算后得到的可能是同一个索引值,所以,在一个索引值下,可能对应多个磁盘逻辑块地址和闪存逻辑块地址的对应关系(如表1所示,索引H1对应两个磁盘逻辑块地址和闪存逻辑块地址的对应关系)。本申请实施例中,为了减少冲突(即为了减少哈希表中同一个索引下对应关系的个数),将索引的个数设置为闪存卡中逻辑块地址个数的1.5倍。
所述哈希算法可以为:磁盘逻辑块地址乘以一个无符号的32位的16进制整数,如所述无符号的32位的16进制整数可以为9e370001,然后,将磁盘逻辑块地址与无符号的32位的16进制整数的乘积对闪存卡中逻辑块地址的个数做取余运算,即可得到磁盘逻辑块地址所对应的哈希值(即索引值),由于磁盘逻辑块地址为32位的16进制数,因此,磁盘逻辑块地址对应的索引值也为32位的16进制数,具体的,可以按照第二公式确定,第二公式为:
H=(DLBA*0x9e370001UL)%N,
其中,H表示磁盘逻辑块地址DLBA所对应的索引值;0x9e370001UL为无符号的32位的16进制整数9e370001;“%”表示对N做取余运算;N表示闪存卡中逻辑块地址的个数。
上述实施例,优选的,所述判断闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块可以包括:
判断是否存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址;
如果存在,则确定所述闪存卡中缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块;否则,确定所述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块。
也就是说,本申请实施例通过磁盘逻辑块地址和闪存逻辑块地址之间的对应关系确定闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块,提高了写数据的速率。
本申请实施例提供的又一种写高速缓冲存储器的方法的流程图如图3所示,在将所述待存储的数据块写入所述闪存卡后,还可以包括:
步骤S301:将所述待存储数据块标记为脏数据块,并将所述待存储数据块加入脏数据块队列。
本申请实施例提供的又一种写高速缓冲存储器的方法的流程图如图4所示,为了保证存储***的有效性,当高速缓冲存储器中的存储的数据量达到一定值时,需要将高速缓存存储器中的数据写入到磁盘中,因此,本申请实施例提供的写高速缓冲存储器的方法还可以包括:
步骤S401:获取所述闪存卡的当前空闲空间比例;
本申请实施例中,将闪存卡中脏数据块所占用的空间以外的空间称为空闲空间,那么,闪存卡的当前空闲空间比例为闪存卡内当前空闲空间占闪存卡总空间的比例。
步骤S402:判断所述空闲空间比例是否小于第一预设阈值,如果是,则执行步骤S403,否则,执行步骤S401;
所述第一预设阈值可以为20%,当然,也可以根据实际需要进行设置,这里不做具体限定。
步骤S403:确定待读取的脏数据块的个数;
所述待读取的脏数据块的个数即是需要从所述高速缓冲存储器中写入磁盘中的数据块的个数。所述待读取的脏数据块的个数可以依据所述空闲空间的比例确定,如,读取脏数据块后,所述闪存卡中空闲空间的比例大于第二预设阈值。所述第二预设阈值可以等于所述第一预设阈值,当然也可以大于所述第一预设阈值,这里不做具体限定。
步骤S404:将所述脏数据块队列中的各个脏数据块按照磁盘逻辑块地址进行堆排序,获取第一排序堆;
为了提高将数据从高速缓冲存储器中写入磁盘中的效率,本申请实施例对脏数据块队列中的各个脏数据块按照磁盘逻辑块地址进行堆排序,所述堆排序可以为最小堆排序,即第一排序堆的堆头为磁盘逻辑块地址最小的脏数据块;所述堆排序也可以为对大堆排序,即第一排序堆的堆头为磁盘逻辑块地址最大的脏数据块。
具体采用哪种排序方式可以根据磁盘的性能确定:如果磁盘支持按磁盘逻辑块地址从小到大的顺序访问,则可以选择最小堆排序;而如果磁盘支持按磁盘逻辑块地址从大到小的顺序访问,则可以选择最大堆排序;
本步骤中,由于时对脏数据块队列中的所有脏数据块队列进行堆排序,所以,也可以称之为全局堆排序。
步骤S405:发起若干个第一异步请求,依据所述待读取的脏数据块的个数从所述第一排序堆的堆头开始依次异步读取闪存卡中的脏数据块;
所述第一异步请求的个数可以为预设值;
步骤S406:根据读取到的脏数据块的磁盘逻辑块地址将读取到的脏数据块进行对排序,获取第二排序堆;
本步骤中,只对读取到的脏数据块进行堆排序,因此,也可以称为局部堆排序,需要说明的是,两次堆排序都使用相同的堆排序方式,即要么都采用最小堆排序,要么都使用最大堆排序。
步骤S407:发起第二异步请求,将所述读取到的脏数据块从第二对序列的堆头开始依次异步写入磁盘中,所述第二异步请求的个数为所述待读取的脏数据块的个数。
在将读取到的脏数据块写入磁盘中后,闪存卡中就有空闲空间了,此时,等待队列中的待存储数据就可以写入闪存卡了。
需要说明的是,在进行最小堆排序的过程中,如果脏数据块队列中新增加的脏数据块的逻辑块地址小于堆头的数据块的逻辑块地址,则将该新增加的脏数据块加入到与该排序堆相对应的脏数据块等待队列中,当堆上的脏数据块都读完时,再对脏数据块等待队列中的脏数据块进行堆排序,以保证从闪存卡中读取的数据块都处于增序状态;如果脏数据块队列中新增加的脏数据块的逻辑块地址大于堆头的数据块的逻辑块地址,则将该新增加的脏数据块直接加入排序堆中进行最小堆排序。
而在进行最大堆排序的过程中,如果脏数据块队列中新增加的脏数据块的逻辑块地址大于堆头的数据块的逻辑块地址,则将该新增加的脏数据块加入到与该排序堆相对应的脏数据块等待队列中,当堆上的脏数据块都读完时,再对脏数据块等待队列中的脏数据块进行堆排序,以保证从闪存卡中读取的数据块都处于降序状态;如果脏数据块队列中新增加的脏数据块的逻辑块地址小于堆头的数据块的逻辑块地址,则将该新增加的脏数据块直接加入到排序堆中进行最大堆排序。
下面举例说明本实施例提供的将高速缓存存储器中的数据写入到磁盘中过程,请参看图5,图5为本申请实施例提供的将高速缓存存储器中的数据写入到磁盘中的过程的示意图;
本例中,脏数据块队列中有10个脏数据块,图中各个脏数据块中的标号为脏数据块的磁盘逻辑块地址;待读取的脏数据块的个数为5个,那么,当闪存卡中,空闲空间的比例小于第一预设阈值时,将该10个脏数据块进行最小堆排序,获得第一排序堆,第一排序堆的堆头为磁盘逻辑块地址为23的脏数据块,后续脏数据块的磁盘逻辑块地址依次为32、33、44、48、79、95、158、189、789;然后,以异步方式从所述第一排序堆的堆头开始,读取磁盘逻辑块地址最小的五个脏数据块,本例中,读取的五个脏数据块的磁盘逻辑块地址分别为:44、32、23、33、48;然后,对读取到的这五个脏数据再次进行最小堆排序,获得第二排序堆,第二排序堆的堆头依然为磁盘逻辑块地址为23的脏数据块,后续脏数据块的磁盘逻辑块地址依次为32、33、44、48;然后,从第二排序堆的堆头开始,将这五个脏数据块以异步方式写入到磁盘中。
本申请实施例中,在将高速缓冲存储器中的数据写入磁盘中时,采用全局堆排序和局部堆排序,并为全局排序堆和局部排序堆都维护了一个等待队列(其中,全局排序堆对应脏数据块队列,局部排序堆对应脏数据块等待队列)保证数据块从高速缓冲存储器中写入磁盘时的顺序性,提高了数据从高速缓冲存储器写入到磁盘中的效率,即提高了刷盘效率。
上述实施例,优选的,所述第一异步请求的个数也可以通过如下方式确定:
所述第一异步请求的个数也可以根据预设的异步请求个数的上限和下限,以及高速缓冲存储器的空间利用率确定,假设第一异步请求的个数的下限为N,即第一异步请求最少可以发起N个,第一异步请求的个数的上限为M,即第一异步请求最多可以发起M个,高速缓冲存储器的空间利用率为R,那么,第一异步请求的个数可以依据第一公式确定,其中,第一公式为:
V=N+(M-N)*R
其中,V为第一异步请求的个数;R=1-P,P为闪存卡中空闲空间的比例。
具体的,N的取值可以为4,M的取值可以为256。
本申请实施例中,根据高速缓冲存储器的空间利用率动态调整第一异步请求的个数,使得在高速缓冲存储器的空间利用率较小的时候以较少的异步请求对磁盘进行操作,而在高速缓冲存储器的空间利用率较大时,以较多的异步请求对磁盘进行操作,而由于异步请求的个数越多,速率越快,对磁盘的操作也就越多,因此,本申请实施例既保证在空间利用率较大时(即空间比较紧张时)以较快的速率将高速缓冲存储器中的数据写入到磁盘中,即在空间利用率较大时,以较快的速率回收缓存空间;又可以保证在空间利用较小时(即空间不紧张时),减少了对磁盘的操作,以减少由于对磁盘的读或写对磁盘造成的损害。
与方法实施例相对应,本申请实施例提供的一种写高速缓冲存储器的装置的结构示意图如图6所示,其中所述高速缓冲存储器为闪存卡,所述装置可以包括:
判断模块601,第一写模块602和第二写模块603;
判断模块601用于判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块;
第一写模块602用于在所述判断模块601判断出所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块时,将所述待存储数据块以异步方式写入所述闪存卡中;
第二写模块603用于在所述判断模块601判断出所述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块时,将所述待存储数据块以异步方式写入所述闪存卡的空闲块中。
本申请实施例提供的另一种写高速缓冲存储器的装置的结构示意图如图7所示,所述第二写模块603可以包括:
第一判断单元701,第一写单元702和第二写单元703;
第一判断单元701用于判断所述闪存卡中是否存在空闲块;
第一写单元702用于在所述第一判断单元701判断出所述闪存卡中存在空闲块时,将所述待存储数据块以异步方式写入所述闪存卡的空闲块中。
第二写单元703用于在所述判断单元判断出所述闪存卡中不存在空闲块时,将所述待存储数据加入等待队列,并在所述闪存卡中出现空闲块时,将所述待存储数据块以异步方式写入所述闪存卡的空闲块中。
本申请实施例提供的又一种写高速缓冲存储器的装置的结构示意图如图8所示,还可以包括:
保存模块801,用于在所述第二写模块603将所述待存储数据块写入所述闪存卡中的空闲块后,保存所述待存储数据块的磁盘逻辑块地址和所述待存储数据块的闪存逻辑块地址的对应关系。
在图8所示实施例的基础上,本申请实施例提供的又一种写高速缓冲存储器的装置的结构示意图如图9所示,所述判断模块601可以包括:
第二判断单元901,第三判断单元902和第四判断单元903;
第二判断单元901用于判断是否存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址;
第三判断单元902用于在所述第二判断单元901判断出存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址时,确定所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块;
第四判断单元903用于在所述第二判断单元901判断出不存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址时,确定所述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块。
本申请实施例提供的又一种写高速缓冲存储器的装置的结构示意图如图10所示,还可以包括:
标记模块1001,用于在所述第一写模块602或所述第二写模块603将所述待存储数据块写入闪存卡后,将所述待存储数据块标记为脏数据块,并将所述待存储数据块加入脏数据块队列。
本申请实施例提供的又一种写高速缓冲存储器的装置的结构示意图如图11所示,还可以包括:
获取模块1101,确定模块1102,第一排序模块1103,第一读模块1104,第二排序模块1105,第三写模块1106;
获取模块1101用于获取所述闪存卡的当前空闲空间比例;
确定模块1102用于当所述空闲空间比例小于第一预设阈值时,确定待读取的脏数据的个数;
第一排序模块1103用于将所述脏数据块队列中的各个脏数据块按照磁盘逻辑块地址进行堆排序,获取第一排序堆;
第一读模块1104用于发起若干个第一异步请求,依据所述待读取的脏数据块的个数从所述第一排序堆的堆头开始依次异步读取闪存卡中的脏数据块;
第二排序模块1105用于根据读取到的脏数据块的磁盘逻辑块地址将读取到的脏数据块进行对排序,获取第二排序堆;
第三写模块1106用于发起第二异步请求,将所述读取到的脏数据块从所述第二排序堆的堆头开始依次写入磁盘中,其中,所述第二异步请求的个数为所述待读取的脏数据块的个数。
本申请实施例提供的又一种写高速缓冲存储器的装置的结构示意图如图12所示,其中,所述高速缓冲存储器为闪存卡,所述装置可以包括:
至少一个处理器1201,以及与所述至少一个处理器耦合的存储器1202;
所述至少一个处理器被配置为:
判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块;
如果有,则将所述待存储数据块以异步方式写入所述闪存卡中;
如果没有,则将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中。
上述实施例,优选的,被配置为将所述待存储数据块写入所述闪存卡的空闲块中的至少一个处理器进一步可以被配置为:
判断所述闪存卡中是否存在空闲块;
如果存在,则将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中;
如果不存在,则将所述待存储数据块加入到等待队列,并在所述闪存卡中出现空闲块时,执行将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中的步骤。
上述实施例,优选的,所述至少一个处理器进一步可以被配置为:
在将所述待存储的数据块写入所述闪存卡中的空闲块后,保存所述待存储数据块的磁盘逻辑块地址和所述待存储数据块的闪存逻辑块地址的对应关系。
上述实施例,优选的,被配置为判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块的至少一个处理器进一步可以被配置为:
判断是否存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址;
如果存在,则确定所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块;否则,确定所述述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块。
上述实施例,优选的,所述至少一个处理器进一步可以被配置为:
在将所述待存储的数据块写入所述闪存卡后,将所述待存储数据块标记为脏数据块,并将所述待存储数据块加入脏数据块队列。
上述实施例,优选的,所述至少一个处理器进一步可以被配置为:
获取所述闪存卡的当前空闲空间比例;
当所述空闲空间的比例小于第一预设阈值时,确定待读取的脏数据块的个数;
将所述脏数据块队列中的各个脏数据块按照磁盘逻辑块地址进行堆排序,获取第一排序堆;
发起若干个第一异步请求,依据所述待读取的脏数据块的个数从所述第一排序堆堆头开始依次异步读取闪存卡中的脏数据块;
根据读取到的脏数据块的磁盘逻辑块地址将读取到的脏数据块进行堆排序,获取第二排序堆;
发起第二异步请求,将所述读取到的脏数据块从第二排序堆的堆头开始依次异步写入磁盘中,所述第二异步请求的个数为所述待读取的脏数据块的个数。
本申请实施例可以应用与一体机***中的Cache架构,与现有技术中的一体机***中的Cache架构不同,本申请实施例提供的一体机***中用FLASH存储器替代NVDIMM(Non-Volatile DIMM,一种非易失性内存)作为高速缓冲存储器,如图13所示;
在一体机的Cache架构中,Cache不存在于业务处理模块,而是存在于各个存储节点中,业务处理模块的功能与现有技术中相同,主要用于I/O(输入/输出)请求的分发处理。I/O请求通过业务处理模块的分发,就可以找到其访问的存储区域所在的是哪个存储节点。
存储节点时I/O请求的处理单元,每一个存储节点中包含自己独立的CPU、独立的Cache,以及一块或者几块磁盘,每个存储节点的磁盘数和Cache大小完全相同,所有的存储节点构成整个存储***的存储池。
本申请实施例中,对于一体机***的写请求,通过业务处理模块的路由到达存储节点,存储节点内的CPU通过本申请实施例提供的写高速缓冲存储器的方法,将写请求写入FLASH存储器后返回“写成功”信息。当FLASH存储器的写数据量达到一定程度时,再通过本申请实施例提供的写高速缓冲存储器的方法,将FLASH存储器的写数据刷新到磁盘中,以回收FLASH存储器上的空间,供后续的写请求使用。
本申请实施例也可以用于块存储磁盘阵列中,与现有技术中的块存储磁盘阵列不同,本申请实施例提供的阵列存储***中用FLASH存储器替代NVRAM(Non-Volatile RandomAccess Memory,非易失性随机访问存储器)作为高速缓冲存储器,如图14所示。
在块存储磁盘阵列一般采用一拖N(即负责业务处理的机头+N台多盘位的磁盘簇的方式组成整体的存储***),高速缓冲存储器存在于存储***的机头部分,机头中的高速缓冲存储器承载着后面左右扩展柜磁盘的I/O缓存功能,机头与磁盘簇一般通过SAS总线连接。本申请实施例中,机头部分的CPU实现写高速缓冲存储器的功能。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。
Claims (18)
1.一种写高速缓冲存储器的方法,其特征在于,所述高速缓冲存储器为闪存卡,所述方法包括:
判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块;
如果是,则将所述待存储数据块以异步方式写入所述闪存卡中;
如果否,则判断所述闪存卡中是否存在空闲块,如果存在,则将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中,如果不存在,则将所述待存储数据块加入到等待队列,并在所述闪存卡中出现空闲块时,将所述待存储数据块以异步方式写入所述闪存卡的空闲块。
2.根据权利要求1所述的方法,其特征在于,在将所述待存储的数据块写入所述闪存卡中的空闲块后,还包括:
保存所述待存储数据块的磁盘逻辑块地址和所述待存储数据块的闪存逻辑块地址的对应关系。
3.根据权利要求2所述的方法,其特征在于,所述判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块包括:
判断是否存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址;
如果存在,则确定所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块;否则,确定所述述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块。
4.根据权利要求1-3任意一项所述的方法,其特征在于,在将所述待存储的数据块写入所述闪存卡后,还包括:
将所述待存储数据块标记为脏数据块,并将所述待存储数据块加入脏数据块队列。
5.根据权利要求4所述的方法,其特征在于,还包括:
获取所述闪存卡的当前空闲空间比例;
当所述空闲空间的比例小于第一预设阈值时,确定待读取的脏数据块的个数;
将所述脏数据块队列中的各个脏数据块按照磁盘逻辑块地址进行堆排序,获取第一排序堆;
发起若干个第一异步请求,依据所述待读取的脏数据块的个数从所述第一排序堆堆头开始依次异步读取闪存卡中的脏数据块;
根据读取到的脏数据块的磁盘逻辑块地址将读取到的脏数据块进行堆排序,获取第二排序堆;
发起第二异步请求,将所述读取到的脏数据块从第二排序堆的堆头开始依次异步写入磁盘中,所述第二异步请求的个数为所述待读取的脏数据块的个数。
6.根据权利要求5所述的方法,其特征在于,所述堆排序为最小堆排序。
7.根据权利要求5所述的方法,其特征在于,所述堆排序为最大堆排序。
8.根据权利要求5所述的方法,其特征在于,所述第一异步请求的个数依据第一公式确定,所述第一公式为:
V=N+(M-N)*R
其中,V为第一异步请求的个数;N为预设的异步请求个数的下限;M为预设的异步请求个数的上限;R为闪存卡当前的空间利用率。
9.一种写高速缓冲存储器的装置,其特征在于,所述高速缓冲存储器为闪存卡,所述装置包括:
判断模块,用于判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块;
第一写模块,用于在所述判断模块判断出所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块时,将所述待存储数据块以异步方式写入所述闪存卡中;
第二写模块,用于在所述判断模块判断出所述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块时,将所述待存储数据块以异步方式写入所述闪存卡的空闲块中;
其中,所述第二写模块包括:
第一判断单元,用于判断所述闪存卡中是否存在空闲块;
第一写单元,用于在所述第一判断单元判断出所述闪存卡中存在空闲块时,将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中;
第二写单元,用于在所述判断单元判断出所述闪存卡中不存在空闲块时,将所述待存储数据块加入等待队列,并在所述闪存卡中出现空闲块时,将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中。
10.根据权利要求9所述的装置,其特征在于,还包括:
保存模块,用于在所述第二写模块将所述待存储数据块写入所述闪存卡中的空闲块后,保存所述待存储数据块的磁盘逻辑块地址和所述待存储数据块的闪存逻辑块地址的对应关系。
11.根据权利要求10所述的装置,其特征在于,所述判断模块包括:
第二判断单元,用于判断是否存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址;
第三判断单元,用于在所述第二判断单元判断出存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址时,确定所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块;
第四判断单元,用于在所述第二判断单元判断出不存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址时,确定所述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块。
12.根据权利要求9-11任意一项所述的装置,其特征在于,还包括:
标记模块,用于在所述第一写模块或第二写模块将所述待存储数据块写入闪存卡后,将所述待存储数据块标记为脏数据块,并将所述待存储数据块加入脏数据块队列。
13.根据权利要求12所述的装置,其特征在于,还包括:
获取模块,用于获取所述闪存卡的当前空闲空间比例;
确定模块,用于当所述空闲空间比例小于第一预设阈值时,确定待读取的脏数据块的个数;
第一排序模块,用于将所述脏数据块队列中的各个脏数据块按照磁盘逻辑块地址进行堆排序,获取第一排序堆;
第一读模块,用于发起若干个第一异步请求,依据所述待读取的脏数据块的个数从所述第一排序堆堆头开始依次异步读取闪存卡中的脏数据块;
第二排序模块,用于根据读取到的脏数据块的磁盘逻辑块地址将读取到的脏数据块进行堆排序,获取第二排序堆;
第三写模块,用于发起第二异步请求,将所述读取到的脏数据块从所述第二排序堆的堆头开始依次写入到磁盘中,所述第二异步请求的个数为所述待读取的脏数据块的个数。
14.一种写高速缓冲存储器的装置,其特征在于,所述高速缓冲存储器为闪存卡,所述装置包括:
至少一个处理器,其被配置为:
判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块;
如果有,则将所述待存储数据块以异步方式写入所述闪存卡中;
如果没有,则判断所述闪存卡中是否存在空闲块,如果存在,则将所述待存储数据块以异步方式写入所述闪存卡中的空闲块中,如果不存在,则将所述待存储数据块加入到等待队列,并在所述闪存卡中出现空闲块时,将所述待存储数据块以异步方式写入所述闪存卡中的空闲块;以及
存储器,其耦合至所述至少一个处理器。
15.根据权利要求14所述的装置,其特征在于,所述至少一个处理器进一步被配置为:
在将所述待存储的数据块写入所述闪存卡中的空闲块后,保存所述待存储数据块的磁盘逻辑块地址和所述待存储数据块的闪存逻辑块地址的对应关系。
16.根据权利要求15所述的装置,其特征在于,被配置为判断所述闪存卡中是否缓存有与待存储数据块的磁盘逻辑块地址相同的旧数据块的至少一个处理器进一步被配置为:
判断是否存在与所述待存储数据块的磁盘逻辑块地址相对应的闪存逻辑块地址;
如果存在,则确定所述闪存卡中缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块;否则,确定所述述闪存卡中未缓存有与所述待存储数据块的磁盘逻辑块地址相同的旧数据块。
17.根据权利要求14-16任意一项所述的装置,其特征在于,所述至少一个处理器进一步被配置为:
在将所述待存储的数据块写入所述闪存卡后,将所述待存储数据块标记为脏数据块,并将所述待存储数据块加入脏数据块队列。
18.根据权利要求17所述的装置,其特征在于,所述至少一个处理器进一步被配置为:
获取所述闪存卡的当前空闲空间比例;
当所述空闲空间的比例小于第一预设阈值时,确定待读取的脏数据块的个数;
将所述脏数据块队列中的各个脏数据块按照磁盘逻辑块地址进行堆排序,获取第一排序堆;
发起若干个第一异步请求,依据所述待读取的脏数据块的个数从所述第一排序堆堆头开始依次异步读取闪存卡中的脏数据块;
根据读取到的脏数据块的磁盘逻辑块地址将读取到的脏数据块进行堆排序,获取第二排序堆;
发起第二异步请求,将所述读取到的脏数据块从第二排序堆的堆头开始依次异步写入磁盘中,所述第二异步请求的个数为所述待读取的脏数据块的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310400488.2A CN103488582B (zh) | 2013-09-05 | 2013-09-05 | 写高速缓冲存储器的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310400488.2A CN103488582B (zh) | 2013-09-05 | 2013-09-05 | 写高速缓冲存储器的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103488582A CN103488582A (zh) | 2014-01-01 |
CN103488582B true CN103488582B (zh) | 2017-07-28 |
Family
ID=49828830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310400488.2A Active CN103488582B (zh) | 2013-09-05 | 2013-09-05 | 写高速缓冲存储器的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103488582B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095116B (zh) * | 2014-05-19 | 2017-12-12 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
CN105988719B (zh) * | 2015-02-07 | 2019-03-01 | 深圳市硅格半导体有限公司 | 存储装置及其处理数据的方法 |
CN105117351B (zh) | 2015-09-08 | 2018-07-03 | 华为技术有限公司 | 向缓存写入数据的方法及装置 |
CN109189726B (zh) * | 2018-08-08 | 2020-12-22 | 奇安信科技集团股份有限公司 | 一种读写日志的处理方法及装置 |
CN109783023B (zh) * | 2019-01-04 | 2024-06-07 | 平安科技(深圳)有限公司 | 一种数据下刷的方法和相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5636355A (en) * | 1993-06-30 | 1997-06-03 | Digital Equipment Corporation | Disk cache management techniques using non-volatile storage |
CN1527973A (zh) * | 2000-06-23 | 2004-09-08 | 英特尔公司 | 非易失性高速缓存 |
CN1862475A (zh) * | 2005-07-15 | 2006-11-15 | 华为技术有限公司 | 磁盘阵列缓存的管理方法 |
CN102136274A (zh) * | 2009-12-30 | 2011-07-27 | 爱国者电子科技有限公司 | 一种具有两种存储介质的移动硬盘 |
CN102169464A (zh) * | 2010-11-30 | 2011-08-31 | 北京握奇数据***有限公司 | 一种用于非易失性存储器的缓存方法、装置及智能卡 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004706B (zh) * | 2009-09-01 | 2012-09-19 | 联芯科技有限公司 | 一种基于ftl的闪存擦写掉电保护方法 |
CN102981783A (zh) * | 2012-11-29 | 2013-03-20 | 浪潮电子信息产业股份有限公司 | 一种基于Nand Flash的Cache加速方法 |
-
2013
- 2013-09-05 CN CN201310400488.2A patent/CN103488582B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5636355A (en) * | 1993-06-30 | 1997-06-03 | Digital Equipment Corporation | Disk cache management techniques using non-volatile storage |
CN1527973A (zh) * | 2000-06-23 | 2004-09-08 | 英特尔公司 | 非易失性高速缓存 |
CN1862475A (zh) * | 2005-07-15 | 2006-11-15 | 华为技术有限公司 | 磁盘阵列缓存的管理方法 |
CN102136274A (zh) * | 2009-12-30 | 2011-07-27 | 爱国者电子科技有限公司 | 一种具有两种存储介质的移动硬盘 |
CN102169464A (zh) * | 2010-11-30 | 2011-08-31 | 北京握奇数据***有限公司 | 一种用于非易失性存储器的缓存方法、装置及智能卡 |
Also Published As
Publication number | Publication date |
---|---|
CN103488582A (zh) | 2014-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102640226B (zh) | 具有内部处理器的存储器及控制存储器存取的方法 | |
Cheong et al. | A flash memory controller for 15μs ultra-low-latency SSD using high-speed 3D NAND flash with 3μs read time | |
CN103488582B (zh) | 写高速缓冲存储器的方法及装置 | |
US8769318B2 (en) | Asynchronous management of access requests to control power consumption | |
CN105117351B (zh) | 向缓存写入数据的方法及装置 | |
CN105980992B (zh) | 一种存储***、识别数据块稳定性的方法以及装置 | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN103425600A (zh) | 一种固态盘闪存转换层中的地址映射方法 | |
CN105260128B (zh) | 一种将数据写入存储设备的方法及存储设备 | |
CN104375895B (zh) | 用于多种存储器间的数据存储调度方法以及装置 | |
CN103814370B (zh) | 利用蒙哥马利乘法结果的分区和分散式存储的模幂运算 | |
CN109358809A (zh) | 一种raid数据存储***及方法 | |
CN108228470A (zh) | 一种处理向nvm写入数据的写命令的方法和设备 | |
CN107430554A (zh) | 通过使用数据的可压缩性作为高速缓存***的标准来提高存储高速缓存性能 | |
CN106294226A (zh) | 基于嵌入式stt‑mram的ssd控制器芯片、固态硬盘 | |
CN108664213A (zh) | 基于分布式缓存的原子写命令处理方法与固态存储设备 | |
CN109101185A (zh) | 固态存储设备及其写命令和读命令处理方法 | |
CN106775462A (zh) | 一种读写过程中减少内存拷贝的方法和装置 | |
CN107391030A (zh) | 数据存储方法、装置、计算机可读存储介质以及计算机设备 | |
CN109213693A (zh) | 存储管理方法、存储***和计算机程序产品 | |
CN105607862A (zh) | 一种dram与mram结合具有备份电源的固态硬盘 | |
CN109558334A (zh) | 垃圾数据回收方法及固态存储设备 | |
CN110489056A (zh) | 控制器以及包括该控制器的存储器*** | |
CN102520885B (zh) | 一种混合硬盘的数据管理*** | |
CN105630699B (zh) | 一种使用mram的固态硬盘及读写缓存管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160726 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant after: Huawei Technologies Co., Ltd. Address before: Building 2, B District, Bantian HUAWEI base, Longgang District, Shenzhen, Guangdong Applicant before: Shenzhen Huawei Technologies Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |