CN107329696A - 一种保证数据崩溃一致性的方法及*** - Google Patents
一种保证数据崩溃一致性的方法及*** Download PDFInfo
- Publication number
- CN107329696A CN107329696A CN201710483457.6A CN201710483457A CN107329696A CN 107329696 A CN107329696 A CN 107329696A CN 201710483457 A CN201710483457 A CN 201710483457A CN 107329696 A CN107329696 A CN 107329696A
- Authority
- CN
- China
- Prior art keywords
- write
- memory
- cache lines
- data
- cache
- 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
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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开一种保证数据崩溃一致性的方法及***,包括:确定写请求对应的第一缓存行的写频度;当第一缓存行的写频度大于等于阈值时,在非易失高速缓冲存储器的第二缓存行中写入写请求对应的数据;当第一缓存行的写频度小于阈值时,将第一缓存行中的数据迁移入非易失内存存储器中,当第一缓存行的数据迁移完后,在第一缓存行中写入写请求对应的数据;当写请求所属的内存事务完成后,若对第一缓存行的数据未进行迁移,则将第一缓存行中的数据标记为无效数据,将第二缓存行中的数据标记为新有效数据;若对第一缓存行的数据进行迁移,则将第一缓存行中的数据标记为新有效数据。本发明减少对相对慢速的非易失内存的写操作的次数,提升存储***的性能。
Description
技术领域
本发明属于计算机存储技术领域,更具体地,涉及一种保证数据崩溃一致性的方法及***。
背景技术
随着计算机多核技术和计算机应用技术的发展,当前应用对内存的需求越来越大,传统的动态随机访问存储器(Dynamic Random Access Memory,DRAM)因其巨大的能耗、工艺密度的限制,已经无法满足应用日益增加的内存要求。新型非易失性存储器(Non-Volatile Memory,NVM)因其读写速度接近DRAM、待机功耗小、可扩展性强等特征,成为替代DRAM提供大内存的理想存储介质。然而相比传统的DRAM内存,非易失性存储器也因其读写次数有限、读写时延大、写能耗高等缺陷无法直接替代DRAM成为内存。
用于计算机主存储器的动态随机访问存储器(Dynamic Random Access Memory,DRAM)面临着容量难以扩展以及能耗高等问题。新型的非易失存储器(Non-VolatileMemory,NVM)(例如相变存储器、自旋转移力矩磁随机存储器和阻变式存储器等)具有可按字节粒度进行读写操作、高存储密度、低功耗的特性,同时在没有外部电源供电的情况下能够保留数据内容。这些新型非易失存储器的延迟小到与动态随机存储器的延迟处于同一数量级,甚至能够与处理器高速缓冲存储器(SRAM)相媲美,为构建高可靠性、大容量、低功耗的持久性内存***提供了可能。在持久性内存***中,处理器可以直接通过内存访问指令访问由新型非易失存储器构成的持久性内存。
然而在计算机***中,修改持久性介质中保存的数据时,需要保证数据在***掉电或者崩溃的时候不受损坏。在采用DRAM作为内存的计算机***中,数据大多存放于外存(例如磁盘、固态硬盘),依靠文件***、数据库等手段保证数据的崩溃一致性。而对于数据从处理器高速缓冲存储器到DRAM的过程,计算机并没有提供保证数据崩溃一致性的手段。
现有技术可通过引入日志技术来保证持久性内存数据的崩溃一致性,而日志技术要求对存储介质划分额外的日志区,且一次用户写请求会造成两次内部写操作,即首先对日志区进行写操作,然后对数据区域进行写操作。因此,现有通过日志技术保证数据崩溃一致性的技术增加了对用户请求的响应延迟,降低了整个***的性能。
发明内容
针对现有技术的缺陷,本发明的目的在于解决现有保证数据崩溃一致性的日志技术增加了对用户请求的响应延迟,降低了整个***的性能技术问题。
为实现上述目的,第一方面,本发明提供了一种保证数据崩溃一致性的方法,该方法适用于包括非易失高速缓冲存储器和非易失内存存储器的存储***,包括:确定写请求的写操作地址对应的第一缓存行的写频度,所述第一缓存行为在所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行,所述第一缓存行中存在所述写操作地址的旧有效数据,所述写请求属于内存事务,所述内存事务包括M个待写入所述存储***的写请求,M为大于0的整数;当第一缓存行的写频度大于或等于写频度阈值时,在所述非易失高速缓冲存储器的第二缓存行中写入所述写请求对应的数据,所述第二缓存行为第一缓存行在非易失高速缓冲存储器所属组内处于空闲状态的缓存行,所述空闲状态为不存在有效数据的状态;当第一缓存行的写频度小于写频度阈值时,将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据;当所述写请求所属的内存事务完成后,若所述第一缓存行的写频度大于或等于写频度阈值,则在第二缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的无效数据,将所述第二缓存行中的数据标记为所述写操作地址的新有效数据;若所述第一缓存行的写频度小于写频度阈值,则在第一缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的新有效数据;其中,若内存事务包括的M个待写入所述存储***的写请求对应的数据均被写入所述存储***中,则所述内存事务完成。
需要说明的是,写操作地址的旧有效数据和新有效数据分别为前后两次相同写操作地址的写请求写入的数据。
其中,非易失高速缓冲存储器和非易失内存存储器均可通过NVM实现,可选用不同访问速度的NVM分别实现。例如非易失高速缓冲存储器的访问速度相比非易失内存存储器的访问速度快约一个数量级。
需要说明的是,写频度阈值可根据实际需要设置,也可取经验值。例如在单位时间内一个缓存行中写操作次数大于或等于一定数值,则认为该缓存行的写频度较高,反之则认为该缓存行的写频度较低。
需要说明的是,根据写频度确定写请求的数据的写入方式可包括写时复制和版本更迭两种,其中,写时复制为:第一缓存行写频度高,则在第二缓存行中写入写请求对应的数据。版本更迭为:第一缓存行写频度低,则先将第一缓存行中的数据迁移入内存中,迁移结束后再在第一缓存行写入写请求对应的数据。相应地,写时复制和版本更迭也可以理解为两种副本策略。
本发明实施例针对内存事务中不同访问频度的数据块,采用不同的副本策略,最大化利用非易失高速缓冲存储器的高性能,减少对相对慢速的非易失内存的写操作的次数,降低数据副本策略对于***性能的影响,减小了对用户请求的响应延迟,提升存储***的性能。
可选地,当第一缓存行的写频度大于或等于写频度阈值,若所述第一缓存行在非易失高速缓冲存储器所属组内除所述第一缓存行外不存在处于空闲状态的缓存行,则将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据。
本发明实施例在非易失高速缓冲存储器中空闲空间不够用时,即使待写入数据块的写频度较高,也需要通过版本更迭的方式写入该数据块,以避免***时延,保证***的性能。
可选地,若所述存储***掉电时,所述写请求所属的内存事务未完成,则在存储***重启后将所述写请求写入在所述非易失高速缓冲存储器中的数据标记成无效。
本发明实施例通过在存储***掉电重启后将正在写入的写请求标记成无效的方式,避免了内存事务未完成写入时,掉电导致其对应的旧有效数据失效或新有效数据不完整的情况。例如,当采用写时复制方式更新数据时,若在所述写请求所属内存事务未完成时掉电,则***重启后将第二缓存行写入的数据标记为无效,此时第一缓存行的数据还未被标记为无效,故该写请求的原始数据未被损坏或者丢失。当采用版本更迭方式更新数据时,若在所述写请求所属内存事务未完成时掉电,则在***重启时第一缓存行的数据还未被迁移走,故该写请求的原始数据未被损坏或者丢失。需要说明的是,数据从非易失高速缓冲存储器中迁移入非易失内存存储器指的是将非易失高速缓冲存储器中的数据复制到非易失内存存储器,当复制完成后,将非易失高速缓冲存储器中的数据标记为无效。若复制未完成,则迁移未结束,即原始数据并未被标记为无效。
可选地,该方法还包括:接收写请求,当所述非易失高速缓冲存储器中不存在写请求的写操作地址的旧有效数据时:若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且不存在存储有有效数据的缓存行,则在所述非易失内存存储器中写入所述写请求对应的数据;若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且存在存储有有效数据的候选缓存行,则将所述候选缓存行中的数据迁移入所述非易失内存存储器中,当所述候选缓存行中的数据迁移完后,在迁移数据后的候选缓存行中的写入所述写请求对应的数据;若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内存在处于空闲状态的缓存行,则在所述处于空闲状态的缓存行中写入所述写请求对应的数据。
需要说明的是,在所述非易失内存存储器中写入所述写请求对应的数据时,需要在非易失内存存储器中的临时日志区写入所述写请求对应的数据,以免破坏写操作地址在非易失内存存储器中的原始数据。所述非易失内存存储器的临时日志区为一段不提供给用户直接访问的存储空间。当事务结束时,将非易失内存存储器临时日志区中所述写请求的数据写入数据原本的位置。
可选地,该方法还包括:接收读请求,当所述非易失高速缓冲存储器中存在所述读请求的读操作地址的有效数据时,所述非易失高速缓冲存储器向所述易失性高速缓冲存储器返回所述读操作地址的有效数据;当所述非易失高速缓冲存储器中不存在所述读请求的读操作地址的有效数据时,若所述非易失高速缓冲存储器中地址标记位与所述读操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且不存在存储有有效数据的缓存行,则向所述非易失内存存储器请求所述读请求对应的数据并返回给所述易失性高速缓冲存储器;若所述非易失高速缓冲存储器中地址标记位与所述读操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且存在存储有有效数据的候选缓存行,则将所述候选缓存行中的数据迁移入所述非易失内存存储器中,当所述候选缓存行中的数据迁移完后,向所述非易失内存存储器请求所述读操作地址对应的数据并写入迁移数据后的候选缓存行中,并向所述易失性高速缓冲存储器返回所述读操作地址对应的数据;若所述非易失高速缓冲存储器中存在处于空闲状态的缓存行,则向所述非易失内存存储器请求所述读操作地址对应的数据并写入所述处于空闲状态的缓存行中,并向所述易失性高速缓冲存储器返回所述读操作地址对应的数据。
本发明实施例对内存事务的读、写请求,充分利用了非易失高速缓冲存储器的高性能,针对不同频度的写操作采取不同的副本策略,减少了对相对慢速的非易失内存的写次数,极大地保证了存储***的性能。
可选地,所述候选缓存行包括至少一个缓存行将所述候选缓存行中的数据迁移入所述非易失内存存储器中,包括:根据缓存替换算法将在所述至少一个缓存行中确定一个待写回内存的缓存行,将所述待写回内存的缓存行中的数据迁移入所述非易失内存存储器中。
具体地,缓存替换算法可以为近期最少使用算法(Least Recently Used,LRU)。
第二方面,本发明提供了一种保证数据崩溃一致性的***,包括:处理器、非易失高速缓冲存储控制器、非易失高速缓冲存储器以及非易失内存存储器;所述处理器,用于发送内存事务开始和结束指令,以及发送内存读写操作指令;所述非易失高速缓冲存储控制器用于执行以下操作:确定写请求的写操作地址对应的第一缓存行的写频度,所述第一缓存行为在所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行,所述第一缓存行中存在所述写操作地址的旧有效数据,所述写请求属于内存事务,所述内存事务包括M个待写入所述存储***的写请求;当第一缓存行的写频度大于或等于写频度阈值时,在所述非易失高速缓冲存储器的第二缓存行中写入所述写请求对应的数据,所述第二缓存行为第一缓存行在非易失高速缓冲存储器所属组内处于空闲状态的缓存行,所述空闲状态为不存在有效数据的状态;当第一缓存行的写频度小于写频度阈值时,将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据;当所述写请求所属的内存事务完成后,若所述第一缓存行的写频度大于或等于写频度阈值,则在第二缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的无效数据,将所述第二缓存行中的数据标记为所述写操作地址的新有效数据;若所述第一缓存行的写频度小于写频度阈值,则在第一缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的新有效数据;其中,若内存事务包括的M个待写入所述存储***的写请求对应的数据均被写入所述存储***中,则所述内存事务完成。
可选地,所述非易失高速缓冲存储控制器,还用于执行以下操作:当第一缓存行的写频度大于或等于写频度阈值,若所述第一缓存行在非易失高速缓冲存储器所属组内除所述第一缓存行外不存在处于空闲状态的缓存行,则将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据。
可选地,所述非易失高速缓冲存储控制器,还用于执行以下操作:若所述存储***掉电时,所述写请求所属的内存事务未完成,则在存储***重启后将所述写请求写入在所述非易失高速缓冲存储器中的数据标记成无效。
可选地,所述非易失高速缓冲存储控制器,还用于执行以下操作:接收写请求,当所述非易失高速缓冲存储器中不存在写请求的写操作地址的旧有效数据时:若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且不存在存储有有效数据的缓存行,则在所述非易失内存存储器中写入所述写请求对应的数据;若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且存在存储有有效数据的候选缓存行,则将所述候选缓存行中的数据迁移入所述非易失内存存储器中,当所述候选缓存行中的数据迁移完后,在迁移数据后的候选缓存行中的写入所述写请求对应的数据;若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内存在处于空闲状态的缓存行,则在所述处于空闲状态的缓存行中写入所述写请求对应的数据。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
(1)本发明实施例针对内存事务中不同访问频度的数据块,采用不同的副本策略,最大化利用非易失高速缓冲存储器的高性能,减少对相对慢速的非易失内存的写操作的次数,降低数据副本策略对于***性能的影响,减小了对用户请求的响应延迟,提升存储***的性能。
(2)本发明实施例通过掉电重启后将未完成的内存事务以及写入的部分数据标记成无效的方式,避免了未完成的内存事务对应的旧有效数据失效,以及避免了未完成内存事务写入数据不完整等情况。
(3)本发明实施例在非易失高速缓冲存储器中空闲空间不够用时,即使待写入数据块的写频度较高,也需要通过版本更迭的方式写入该数据块,以避免***时延,保证***的性能。
(4)本发明实施例对内存事务的读、写请求,充分考虑写操作地址对应的有效数据(待写入数据的原始数据)存在非易失高速缓冲存储器和非易失内存存储器的两种情况,空闲存储空间或者可转成空闲空间的不同情况,充分结合了非易失高速缓冲存储器和非易失内存存储器的优缺点,极大地保证了存储***的性能。
附图说明
图1为本发明实施例提供的一种保证数据崩溃一致性的方法流程示意图;
图2为本发明实施例提供的两种根据写频度高低确定的写操作方式示意图;
图3为本发明实施例提供的一种保证数据崩溃一致性的***结构示意图;
图4为本发明实施例提供的另一种保证数据崩溃一致性的***结构示意图;
图5为本发明实施例提供的易失性高速缓冲存储器读流程示意图;
图6为本发明实施例提供的易失性高速缓冲存储器写流程示意图;
图7为本发明实施例提供的非易失高速缓冲存储器读流程示意图;
图8为本发明实施例提供的非易失高速缓冲存储器写流程示意图;
图9为本发明实施例提供的非易失内存存储器的临时日志区中的数据恢复至数据区的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为本发明实施例提供的一种保证数据崩溃一致性的方法流程示意图,该方法适用于包括非易失高速缓冲存储器和非易失内存存储器的存储***,如图1所示,包括步骤S101至步骤S104。
在步骤S101,确定写请求的写操作地址对应的第一缓存行的写频度,所述第一缓存行为在所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行,所述第一缓存行中存在所述写操作地址的旧有效数据,所述写请求属于内存事务,所述内存事务包括M个待写入所述存储***的写请求。
在步骤S102,当第一缓存行的写频度大于或等于写频度阈值时,在所述非易失高速缓冲存储器的第二缓存行中写入所述写请求对应的数据,所述第二缓存行为第一缓存行在非易失高速缓冲存储器所属组内处于空闲状态的缓存行,所述空闲状态为不存在有效数据的状态。
可选地,当第一缓存行的写频度大于或等于写频度阈值,若所述第一缓存行在非易失高速缓冲存储器所属组内除所述第一缓存行外不存在处于空闲状态的缓存行,则将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据。
在步骤S103,当第一缓存行的写频度小于写频度阈值时,将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据。
在步骤S104,当所述写请求所属的内存事务完成后,若所述第一缓存行的写频度大于或等于写频度阈值,则在第二缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的无效数据,将所述第二缓存行中的数据标记为所述写操作地址的新有效数据;若所述第一缓存行的写频度小于写频度阈值,则在第一缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的新有效数据。
其中,若内存事务包括的M个待写入所述存储***的写请求对应的数据均被写入所述存储***中,则所述内存事务完成。可以理解的是,内存事务中的每个写请求均采用上述步骤S101至步骤S103中的方法写入对应的数据。需要说明的是,若写操作地址对应的第一缓存行的写频度大于或等于写频度阈值时,在非易失高速缓冲存储器的第二缓存行中写入写请求对应的数据,可理解为第一缓存行在非易失高速缓冲存储器中进行写时复制。若写操作地址对应的第一缓存行的写频度小于写频度阈值时,将第一缓存行的数据迁移入非易失内存存储器中,当第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入写请求对应的数据,可理解为第一缓存行在非易失高速缓冲存储器与非易失内存存储器进行版本更迭。写时复制和版本更迭可参照图2给出的示意。
可选地,若所述存储***掉电时,所述写请求所属的内存事务未完成,则在存储***重启后将所述写请求写入在所述非易失高速缓冲存储器中的数据标记成无效。
可选地,该方法还包括:接收写请求,当所述非易失高速缓冲存储器中不存在写请求的写操作地址的旧有效数据时:若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且不存在存储有有效数据的缓存行,则在所述非易失内存存储器中写入所述写请求对应的数据;若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且存在存储有有效数据的候选缓存行,则将所述候选缓存行中的数据迁移入所述非易失内存存储器中,当所述候选缓存行中的数据迁移完后,在迁移数据后的候选缓存行中的写入所述写请求对应的数据;若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内存在处于空闲状态的缓存行,则在所述处于空闲状态的缓存行中写入所述写请求对应的数据。
可选地,该方法还包括:接收读请求;当所述非易失高速缓冲存储器中存在所述读请求的读操作地址的有效数据时,所述非易失高速缓冲存储器向所述易失性高速缓冲存储器返回所述读操作地址的有效数据;当所述非易失高速缓冲存储器中不存在所述读请求的读操作地址的有效数据时,若所述非易失高速缓冲存储器中地址标记位与所述读操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且不存在存储有有效数据的缓存行,则向所述非易失内存存储器请求所述读请求对应的数据并返回给所述易失性高速缓冲存储器;若所述非易失高速缓冲存储器中地址标记位与所述读操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且存在存储有有效数据的候选缓存行,则将所述候选缓存行中的数据迁移入所述非易失内存存储器中,当所述候选缓存行中的数据迁移完后,向所述非易失内存存储器请求所述读操作地址对应的数据并写入迁移数据后的候选缓存行中,并向所述易失性高速缓冲存储器返回所述读操作地址对应的数据;若所述非易失高速缓冲存储器中存在处于空闲状态的缓存行,则向所述非易失内存存储器请求所述读操作地址对应的数据并写入所述处于空闲状态的缓存行中,并向所述易失性高速缓冲存储器返回所述读操作地址对应的数据。
可选地,所述候选缓存行包括至少一个缓存行;将所述候选缓存行中的数据迁移入所述非易失内存存储器中,包括:根据缓存替换算法将在所述至少一个缓存行中确定一个待写回内存的缓存行,将所述待写回内存的缓存行中的数据迁移入所述非易失内存存储器中。
相应地,图3为本发明实施例提供的一种保证数据崩溃一致性的***,包括:处理器、易失高速缓冲存储器、非易失高速缓冲存储器、非易失高速缓冲存储控制器以及非易失内存存储器。处理器,用于发送内存事务开始和结束指令,以及发送内存读写操作指令。
非易失高速缓冲存储控制器用于执行以下操作:确定写请求的写操作地址对应的第一缓存行的写频度,所述第一缓存行为在所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行,所述第一缓存行中存在所述写操作地址的旧有效数据,所述写请求属于内存事务,所述内存事务包括M个待写入所述存储***的写请求;当第一缓存行的写频度大于或等于写频度阈值时,在所述非易失高速缓冲存储器的第二缓存行中写入所述写请求对应的数据,所述第二缓存行为第一缓存行在非易失高速缓冲存储器所属组内处于空闲状态的缓存行,所述空闲状态为不存在有效数据的状态;当第一缓存行的写频度小于写频度阈值时,将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据;当所述写请求所属的内存事务完成后,若所述第一缓存行的写频度大于或等于写频度阈值,则在第二缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的无效数据,将所述第二缓存行中的数据标记为所述写操作地址的新有效数据;若所述第一缓存行的写频度小于写频度阈值,则在第一缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的新有效数据;其中,若内存事务包括的M个待写入所述存储***的写请求对应的数据均被写入所述存储***中,则所述内存事务完成。
可选地,非易失存储高速缓冲存储控制器还用于执行以下操作:当第一缓存行的写频度大于或等于写频度阈值,若所述第一缓存行在非易失高速缓冲存储器所属组内除所述第一缓存行外不存在处于空闲状态的缓存行,则将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据。
可选地,非易失高速缓冲存储控制器,还用于执行以下操作:若所述存储***掉电时,所述写请求所属的内存事务未完成,则在存储***重启后将所述写请求写入在所述非易失高速缓冲存储器中的数据标记成无效。
可选地,非易失高速缓冲存储控制器,还用于执行以下操作:接收写请求,当所述非易失高速缓冲存储器中不存在写请求的写操作地址的旧有效数据时:若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且不存在存储有有效数据的缓存行,则在所述非易失内存存储器中写入所述写请求对应的数据;若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且存在存储有有效数据的候选缓存行,则将所述候选缓存行中的数据迁移入所述非易失内存存储器中,当所述候选缓存行中的数据迁移完后,在迁移数据后的候选缓存行中的写入所述写请求对应的数据;若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内存在处于空闲状态的缓存行,则在所述处于空闲状态的缓存行中写入所述写请求对应的数据。
可选地,非易失高速缓冲存储控制器,还用于执行以下操作:接收读请求;当所述非易失高速缓冲存储器中存在所述读请求的读操作地址的有效数据时,所述非易失高速缓冲存储器向所述易失性高速缓冲存储器返回所述读操作地址的有效数据;当所述非易失高速缓冲存储器中不存在所述读请求的读操作地址的有效数据时,若所述非易失高速缓冲存储器中地址标记位与所述读操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且不存在存储有有效数据的缓存行,则向所述非易失内存存储器请求所述读请求对应的数据并返回给所述易失性高速缓冲存储器;若所述非易失高速缓冲存储器中地址标记位与所述读操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且存在存储有有效数据的候选缓存行,则将所述候选缓存行中的数据迁移入所述非易失内存存储器中,当所述候选缓存行中的数据迁移完后,向所述非易失内存存储器请求所述读操作地址对应的数据并写入迁移数据后的候选缓存行中,并向所述易失性高速缓冲存储器返回所述读操作地址对应的数据;若所述非易失高速缓冲存储器中存在处于空闲状态的缓存行,则向所述非易失内存存储器请求所述读操作地址对应的数据并写入所述处于空闲状态的缓存行中,并向所述易失性高速缓冲存储器返回所述读操作地址对应的数据。
可以理解的是,图3所述的***还可包括更多或更少的部件,各部件的功能可参照上述图1中的具体介绍,在此不做赘述。
图4为本发明实施例提供的另一种保证数据崩溃一致性的***,如图4所示,该***32位处理器有2个核心,每个核心有2个硬件线程。每个处理器核心对应一个易失性高速缓冲存储器及其控制器。2个处理器核心共享一个非易失高速缓冲存储器及其控制器。同时***中还存在非易失内存存储器和非易失内存控制器。
需要说明的是,当易失性高速缓冲存储器或非易失性高速缓冲存储器中存在读或写操作地址对应的旧有效数据时,则为读或写命中,否则对应读或写不命中。
(1.1)易失性高速缓冲存储器
易失性高速缓冲存储器由易失性介质构成,每个缓存行由标识位和数据块组成。处理器核ID表示对于该缓存行数据的操作由哪个处理器核心发起,硬件线程ID表示该缓存行数据的操作由处理器核心的那个硬件线程发起,事务ID表示该缓存行数据所属内存事务的编号。处理器核ID,硬件线程ID,事务ID三元组唯一确定一个内存事务。缓存行状态位有三种状态(FREE、PERSISTENT、DIRTY)。FREE表示该缓存行无数据,DIRTY表示该缓存行数据被修改且修改没有持久化,PERSISTENT表示该缓存行的数据修改已被持久化或者从非易失高速缓冲存储器中替换到该缓存行中。易失性高速缓冲存储器缓存行中替换标识位用于缓存行替换过程。其中处理器核ID占1bit,硬件线程ID占1bit,事务ID占8bits,状态位为占2bits。易失性高速缓冲存储器可用容量为256KB,采用4路组相联方式,每一个缓存行数据大小为64B,共1024个缓存组,标签位为14bits。替换算法采用LRU算法。
(1.2)易失性高速缓冲控制器,包括:控制寄存器、事务ID计数器、事务地址缓冲队列以及缓存替换控制逻辑。
控制寄存器:用于接收处理器核心发起的控制命令,并将信号传递给易失性高速缓冲控制器的其它部件。
事务ID计数器:用于记录当前易失性高速缓冲控制器工作在哪个事务阶段,当新事务开始时,事务ID计数器进行加1操作。当易失性高速缓冲存储器写入数据时,处理器核ID、硬件线程ID和事务ID也会随之写入。计数器的位数为8bits。
事务地址缓冲队列:用于存储当前事务中没有被持久化的写操作数据对应缓存行的地址。事务地址缓冲队列中记录32位地址,队列深度为16。
缓存替换控制逻辑:用于缓存发生读写不命中时,控制缓存行的替换。
(1.3)非易失高速缓冲存储器
非易失高速缓冲存储器由非易失性介质构成,每个缓存行由标识位和数据块组成。处理器核ID表示对于该缓存行数据的操作由哪个处理器核心发起,硬件线程ID表示该缓存行数据的操作由处理器核心的那个硬件线程发起,事务ID表示该缓存行数据所属内存事务的编号。处理器核ID,硬件线程ID,事务ID三元组唯一确定一个内存事务。缓存行状态位有四种状态(FREE、COW_PENDING、VERSION_PENDING、COMMITED)。FREE表示该缓存行空闲。COW_PENDING表示该缓存行在非易失高速缓冲存储器中进行写时复制,且所属事务没有提交。VERSION_PENDING表示该缓存行在非易失高速缓冲存储器与非易失内存存储器进行版本更迭,且所属事务没有提交。COMMITED表示该缓存行的数据所属事务已经提交,或者是从非易失内存中读取的。非易失性高速缓冲存储器缓存行中替换标识位用于缓存行替换过程。写频度计数位用于判断该缓存行数据写频度的高低。
其中,处理器核ID占1bit,硬件线程ID占1bit,事务ID占8bits,状态位为占2bits。易失性高速缓冲存储器可用容量为8MB,采用16路组相联方式,每一个缓存行数据大小为64B,共8192个缓存组,标签位为9bits。写频度计数位为4位。替换算法采用LRU算法。
(1.4)非易失高速缓冲控制器,包括:控制寄存器、事务地址队列组、缓存替换控制逻辑以及内存日志模式标识位寄存器。
控制寄存器:用于接收易失性高速缓冲存储控制器的信号,并将信号传递给易失性缓冲存储事务管理器的其它部件。
事务地址队列组:总共4个地址队列,每个队列深度为32位;用于记录CPU核心中每个硬件线程当前执行的事务中每个缓存行数据的地址。
缓存替换控制逻辑:用于缓存发生读写不命中时,控制缓存行的替换。
内存日志模式标识位寄存器:每个处理器核心的硬件线程分配一个标识位,总共4bits,每bit表示该核心硬件线程的当前事务是否用到了临时内存日志模式。
需要说明的是,临时内存日志模式为非易失高速缓冲存储器中不存在写请求的写操作地址的有效数据时:若非易失高速缓冲存储器中不存在处于空闲状态的缓存行,且不存在存储有有效数据且未进行迁移的缓存行,则在非易失内存存储器中写入写请求对应的数据。其中,此时写请求对应的数据写在非易失内存存储器的临时日志区。
(1.5)非易失内存存储器
非易失内存存储器分为临时日志区和数据区。
临时日志区在非易失高速缓冲存储器空间不够时,存放临时的数据副本。
数据区是呈现给用户的可用空间。
临时日志区由日志区元数据块和硬件线程临时日志块组成。日志区元数据块存放日志区空间元数据信息及空间使用情况。一个硬件线程临时日志块用于记录一个硬件线程正在进行的事务的多个缓存行的数据。数据区空间为4GB,4个额外的硬件线程临时日志块,每个硬件线程临时日志块大小为64MB。
硬件线程临时日志块中核ID、硬件线程ID、事务ID共同确定一个事务。状态为表示该临时日志区中数据是否有效。
(1.6)事务接口
事务开始指令(TxBegin):由程序员调用,表示一个内存事务开始。
事务结束指令(TxEnd):由程序员调用,表示一个内存事务结束。
TxBegin和TxEnd之间多个内存读写操作被定义为一个事务。
以下基于图4所示的***详细介绍本发明实施例提供的保证数据崩溃一致性读写操作处理流程。
(2.1)易失性高速缓冲存储器读流程(如图5所示)
(2.1.1)接受处理器读操作的地址,判断数据对应缓存行是否命中。如果命中,转到2.1.2;否则转到2.1.3
(2.1.2)命中。易失性高速缓冲存储器直接返回被命中缓存行的数据。同时按具体替换算法更新缓存替换标识位。
(2.1.3)不命中。
(2.1.3.1)如果此时易失性高速缓冲存储器中读操作对应空间全是DIRTY状态的缓存行,将易失性高速缓冲控制器事务地址队列中地址对应的缓存行写回非易失高速缓冲存储器中。从而对应空间所有DIRTY状态的缓存行的状态变为PERSISTENT。
(2.1.3.2)如果此时易失性高速缓冲存储器中读操作对应空间不存在FREE状态的缓存行,易失性高速缓冲存储器采用缓存替换算法将处于PERSISTENT状态的缓存行写回非易失高速缓冲存储器,产生FREE状态的缓存行。
(2.1.3.3)易失性高速缓冲存储器向下级非易失高速缓冲存储器请求对应读操作地址的缓存行数据,写入FREE状态缓存行,同时写入本次读操作所属处理器核ID、硬件线程ID、事务的ID,将该缓存行状态置为PERSISTENT。按具体替换算法更新缓存替换标识位。
(2.1.3.4)最后向处理器返回读操作地址的数据。
(2.2)易失性高速缓冲存储器写流程(如图6所示)
(2.2.1)接受处理器写操作的地址,判断数据对应缓存行是否命中。如果命中,转到2.2.2;否则转到2.2.3
(2.2.2)命中。将写操作地址加入事务地址队列中。直接修改易失性高速缓冲存储器的缓存行数据,将该缓存行状态置为DIRTY,同时写入写操作所属处理器核ID、硬件线程ID、事务ID。更新缓存替换标识位。
(2.2.3)不命中。
(2.2.3.1)如果此时易失性高速缓冲存储器中写操作对应空间全是DIRTY状态的缓存行,将易失性高速缓冲控制器事务地址队列中地址对应的缓存行写回非易失高速缓冲存储器中。从而对应空间所有DIRTY状态的缓存行的状态变为PERSISTENT。
(2.2.3.2)如果此时易失性高速缓冲存储器中写操作对应空间不存在FREE状态的缓存行,易失性高速缓冲存储器采用缓存替换算法将处于PERSISTENT状态的缓存行写回非易失高速缓冲存储器,产生FREE状态的缓存行。
(2.2.3.3)易失性高速缓冲存储器向下级非易失高速缓冲存储器请求对应读操作地址的缓存行数据,写入FREE状态缓存行。将写操作地址加入事务地址队列中,根据写操作数据修改缓存行内容,同时写入本次写操作所属事务的ID,将该缓存行状态置为DIRTY。更新缓存替换标识位。
(2.2.3.4)向处理器返回本次写操作完成。
(2.3)易失性高速缓冲存储器响应处理器TxBegin指令
在收到处理器发出TxBegin指令后,易失性高速缓冲控制器将事务ID计数器进行加1操作,表示一个新事务的开始。
(2.4)易失性高速缓冲存储器响应处理器TxEnd指令
在收到处理器发出TxEnd指令后,易失性高速缓冲控制器将事务地址队列中的地址对应的缓存行写入非易失高速缓冲存储器中,每写入一个缓存行,将易失性高速缓冲存储器中该缓存行的状态置为PERSISTENT状态。最后再向非易失高速缓冲控制器和非易失内存控制器发送事务结束信号。
(2.5)非易失高速缓冲存储器读流程(如图7所示)
(2.5.1)接受易失性高速缓冲存储器读操作的地址,判断数据对应缓存行是否命中。如果命中,转到2.5.2;否则转到2.5.3
(2.5.2)读命中。非易失高速缓冲存储器向易失性高速缓冲存储器返回被命中的缓存行的数据,并更新缓存替换标志位。结束。
(2.5.3)读不命中。
(2.5.3.1)如果此时非易失高速缓冲存储器中读操作对应空间全是COW_PENDING或者VERSION_PENDING状态的缓存行。此时采取绕过非易失高速缓冲存储器的方法,向非易失内存请求缓存行的数据直接返回给上层易失性高速缓冲存储器。读操作结束。
(2.5.3.2)如果此时非易失高速缓冲存储器中读操作对应空间不存在FREE状态的缓存行,非易失高速缓冲存储器采用缓存替换算法将处于COMMITED状态的缓存行写回非易失内存存储器,产生FREE状态的缓存行。
(2.5.3.3)非易失高速缓冲存储器向下级非易失内存存储器请求对应读操作地址的缓存行大小的数据,写入FREE状态缓存行,同时写入本次读操作所属处理器核ID、硬件线程ID、事务的ID,将该缓存行状态置为COMMITED。按具体替换算法更新缓存替换标识位,同时初始化写频度计数器。
(2.5.3.4)向易失性高速缓冲存储器返回读操作地址的数据。
(2.6)非易失高速缓冲存储器写流程(如图8所示)
(2.6.1)接受易失性高速缓冲存储器写操作地址,判断写操作地址是否命中,如果命中转到2.6.2。如果不命中,转到2.6.3。
(2.6.2)写命中。根据该命中的缓存行写频度计数器来判断本次写操作地址写频度的高低。如果是地址写频度高的缓存行,则按照2.7的步骤进行数据的写入。如果是地址写频度低的缓存行,则按照2.8的步骤进行数据的写入。
(2.6.3)写不命中。
(2.6.3.1)如果此时非易失高速缓冲存储器中写操作对应空间全是COW_PENDING或者VERSION_PENDING状态的缓存行。则按照2.9的步骤进行数据的写入。
(2.6.3.2)如果此时非易失高速缓冲存储器中写操作对应空间不存在FREE状态的缓存行,非易失高速缓冲存储器采用缓存替换算法将处于COMMITED状态的缓存行写回非易失内存存储器,产生FREE状态的缓存行。
(2.6.3.3)非易失高速缓冲存储器向下级非易失内存存储器请求对应写操作地址的缓存行大小的数据,写入FREE状态缓存行,同时写入本次写操作所属处理器核ID、硬件线程ID、事务的ID,将该缓存行状态置为COMMITED。按具体替换算法更新缓存替换标识位,同时初始化写频度计数器。按照2.8的步骤进行数据的写入。
(2.7)地址写频度高的缓存行持久化过程
如果该次写操作地址对应写频度较高的缓存行,则采用在非易失高速缓冲存储器中进行写时复制的方式写入。
(2.7.1)当该次写操作对应的非易失缓冲存储器空间没有FREE状态的缓存行,则在对应空间所有处于COMMITED状态的缓存行采用缓存替换算法进行替换,产生FREE状态的缓存行。如果没有其它处于COMMITED状态的缓存行,则直接采用2.8的步骤进行数据写入。
(2.7.2)将本次写操作命中的缓存行的数据写入FREE缓存行中,再修改缓存行数据,将其状态置为COW_PENDING,同时将命中的缓存行的缓存替换标识位和写频度计数器进行更新。写操作结束。
(2.8)地址写频度低的缓存行持久化过程
如果该次写操作的地址对应缓存行为写频度较低的缓存行,则采用在非易失高速缓冲存储器和非易失内存之间进行版本更新写入。将对应缓存行原本的数据写入非易失内存中,将其状态置为VERSION_PENDING状态,同时将本次写操作命中的缓存行的数据写入,更新该缓存行的缓存替换标识位和写频度计数器。写操作结束。
(2.9)绕过非易失高速缓冲存储器的持久化过程
将缓存行所属硬件线程的内存日志模式寄存器置位,表示当前事务使用了内存的临时日志区。将对非易失高速缓冲存储器的写缓存行操作的数据写入内存的临时日志区。
(2.10)TxBegin信号处理过程
将TxBegin所属硬件线程的内存日志模式寄存器复位。
(2.11)TxEnd信号处理过程
将VERSION_PENDING状态的缓存行写入非易失内存存储器的数据区,将缓存行状态置为COMMITED。同时将缓冲区中所有处于COW_PENDING状态的缓存行变成COMMITED状态,将该缓冲行对应的保存旧数据的缓存行置为FREE状态。如果TxEnd所属硬件线程的内存日志模式寄存器处于置位状态,则需要将内存临时日志区处于该事务的缓存行数据写回数据区。先想该硬件线程对应的区域写入一个提交数据块,然后将数据写入数据区,待所有数据写完,则将该区域的状态为置为无效。
(3)恢复过程(如图9所示)
需要说明的是,为避免写请求直接写入内存时将内存中的原始数据破坏,需要在空闲空间写入该写请求对应的数据。可以通过设置临时日志区的方式,以在临时日志区写入直接写入内存的写请求的数据,在写请求结束或者临时日志区写满时,再将临时日志区的数据写回数据区。临时日志区和数据区均属于非易失内存存储器。
(3.1)检查非易失内存存储器临时日志区对应每个硬件线程区域中数据是否有效,有效转到3.2,无效转到3.3。
(3.2)查看提交块是否有效。
(3.2.1)如果没有提交块数据,则需要舍弃这些事务数据,同时,将非易失高速缓冲存储器中对应事务的缓存行全部置为FREE。结束。
(3.2.2)如果存在提交块,则需要将这些数据写回数据区,同时将非易失高速缓冲存储器中属于该事务的缓存行写入数据区。最后将该区域置为无效。
(3.3)此时临时日志区并没有事务数据,所以只需要处理非易失高速缓冲存储器中的数据了。
(3.3.1)如果存在COW_PENDING或者VERSION_PENDING状态的缓存行,获取其处理器核ID、硬件线程ID、事务ID。如果该事务在非易失高速缓冲存储器中存在处于COMMITED状态的缓存行,则将COW_PENDING状态的缓存行变成COMMITED,同时将对应存放旧数据的缓存行变成FREE。将VERSION_PENDING状态的缓存行的数据写入非易失内存中,写入非易失内存后,将VERSION_PENDING状态的缓存行变成COMMITED。结束。
(3.3.2)如果该事务在非易失高速缓冲存储器中没有处于COMMITED状态的缓存行,那么直接将该事务的缓存行全部置为FREE。结束。
本发明包括基于新型非易失高速缓冲存储器的持久性内存***架构以及针对不同访问频度的数据动态切换的副本策略。针对内存事务中不同访问频度的数据块,采用不同的高速缓冲存储器缓存行替换算法及副本策略,最大化利用非易失高速缓冲存储器的高性能,利用内存写操作访问地址的局部性,充分发挥非易失高速缓存的写入性能,减少对相对慢速的非易失内存的写操作的次数,从而降低副本策略对***性能的影响。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种保证数据崩溃一致性的方法,其特征在于,所述方法适用于包括非易失高速缓冲存储器和非易失内存存储器的存储***,包括:
确定写请求的写操作地址对应的第一缓存行的写频度,所述第一缓存行为在所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行,所述第一缓存行中存在所述写操作地址的旧有效数据,所述写请求属于内存事务,所述内存事务包括M个待写入所述存储***的写请求,M为大于0的整数;
当第一缓存行的写频度大于或等于写频度阈值时,在所述非易失高速缓冲存储器的第二缓存行中写入所述写请求对应的数据,所述第二缓存行为第一缓存行在非易失高速缓冲存储器所属组内处于空闲状态的缓存行,所述空闲状态为不存在有效数据的状态;
当第一缓存行的写频度小于写频度阈值时,将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据;
当所述写请求所属的内存事务完成后,若所述第一缓存行的写频度大于或等于写频度阈值,则在第二缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的无效数据,将所述第二缓存行中的数据标记为所述写操作地址的新有效数据;若所述第一缓存行的写频度小于写频度阈值,则在第一缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的新有效数据;
其中,若内存事务包括的M个待写入所述存储***的写请求对应的数据均被写入所述存储***中,则所述内存事务完成。
2.根据权利要求1所述的保证数据崩溃一致性的方法,其特征在于,当第一缓存行的写频度大于或等于写频度阈值,若所述第一缓存行在非易失高速缓冲存储器所属组内除所述第一缓存行外不存在处于空闲状态的缓存行,则将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据。
3.根据权利要求1或2所述的保证数据崩溃一致性的方法,其特征在于,若所述存储***掉电时,所述写请求所属的内存事务未完成,则在存储***重启后将所述写请求写入在所述非易失高速缓冲存储器中的数据标记成无效。
4.根据权利要求1所述的保证数据崩溃一致性的方法,其特征在于,还包括:
接收写请求,当所述非易失高速缓冲存储器中不存在写请求的写操作地址的旧有效数据时:
若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且不存在存储有有效数据的缓存行,则在所述非易失内存存储器中写入所述写请求对应的数据;
若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且存在存储有有效数据的候选缓存行,则将所述候选缓存行中的数据迁移入所述非易失内存存储器中,当所述候选缓存行中的数据迁移完后,在迁移数据后的候选缓存行中的写入所述写请求对应的数据;
若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内存在处于空闲状态的缓存行,则在所述处于空闲状态的缓存行中写入所述写请求对应的数据。
5.根据权利要求1所述的保证数据崩溃一致性的方法,其特征在于,还包括:
接收读请求;
当所述非易失高速缓冲存储器中存在所述读请求的读操作地址的有效数据时,所述非易失高速缓冲存储器向所述易失性高速缓冲存储器返回所述读操作地址的有效数据;
当所述非易失高速缓冲存储器中不存在所述读请求的读操作地址的有效数据时,若所述非易失高速缓冲存储器中地址标记位与所述读操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且不存在存储有有效数据的缓存行,则向所述非易失内存存储器请求所述读请求对应的数据并返回给所述易失性高速缓冲存储器;若所述非易失高速缓冲存储器中地址标记位与所述读操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且存在存储有有效数据的候选缓存行,则将所述候选缓存行中的数据迁移入所述非易失内存存储器中,当所述候选缓存行中的数据迁移完后,向所述非易失内存存储器请求所述读操作地址对应的数据并写入迁移数据后的候选缓存行中,并向所述易失性高速缓冲存储器返回所述读操作地址对应的数据;若所述非易失高速缓冲存储器中存在处于空闲状态的缓存行,则向所述非易失内存存储器请求所述读操作地址对应的数据并写入所述处于空闲状态的缓存行中,并向所述易失性高速缓冲存储器返回所述读操作地址对应的数据。
6.根据权利要求4或5所述的保证数据崩溃一致性的方法,其特征在于,所述候选缓存行包括至少一个缓存行;
将所述候选缓存行中的数据迁移入所述非易失内存存储器中,包括:
根据缓存替换算法将在所述至少一个缓存行中确定一个待写回内存的缓存行,将所述待写回内存的缓存行中的数据迁移入所述非易失内存存储器中。
7.一种保证数据崩溃一致性的***,其特征在于,包括:处理器、非易失高速缓冲存储控制器、非易失高速缓冲存储器以及非易失内存存储器;
所述处理器,用于发送内存事务开始和结束指令,以及发送内存读写操作指令;
所述非易失高速缓冲存储控制器,用于执行以下操作:
确定写请求的写操作地址对应的第一缓存行的写频度,所述第一缓存行为在所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行,所述第一缓存行中存在所述写操作地址的旧有效数据,所述写请求属于内存事务,所述内存事务包括M个待写入所述存储***的写请求,M为大于0的整数;当第一缓存行的写频度大于或等于写频度阈值时,在所述非易失高速缓冲存储器的第二缓存行中写入所述写请求对应的数据,所述第二缓存行为第一缓存行在非易失高速缓冲存储器所属组内处于空闲状态的缓存行,所述空闲状态为不存在有效数据的状态;当第一缓存行的写频度小于写频度阈值时,将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据;当所述写请求所属的内存事务完成后,若所述第一缓存行的写频度大于或等于写频度阈值,则在第二缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的无效数据,将所述第二缓存行中的数据标记为所述写操作地址的新有效数据;若所述第一缓存行的写频度小于写频度阈值,则在第一缓存行中写完所述写请求对应的数据后,将所述第一缓存行中的数据标记为所述写操作地址的新有效数据;其中,若内存事务包括的M个待写入所述存储***的写请求对应的数据均被写入所述存储***中,则所述内存事务完成。
8.根据权利要求7所述的保证数据崩溃一致性的***,其特征在于,所述非易失高速缓冲存储控制器,还用于执行以下操作:
当第一缓存行的写频度大于或等于写频度阈值,若所述第一缓存行在非易失高速缓冲存储器所属组内除所述第一缓存行外不存在处于空闲状态的缓存行,则将所述第一缓存行中所述写操作地址的旧有效数据迁移入所述非易失内存存储器中,当所述第一缓存行的数据迁移完后,在迁移数据后的第一缓存行中写入所述写请求对应的数据。
9.根据权利要求7或8所述的保证数据崩溃一致性的***,其特征在于,所述非易失高速缓冲存储控制器,还用于执行以下操作:若所述存储***掉电时,所述写请求所属的内存事务未完成,则在存储***重启后将所述写请求写入在所述非易失高速缓冲存储器中的数据标记成无效。
10.根据权利要求7或8所述的保证数据崩溃一致性的***,其特征在于,所述非易失高速缓冲存储控制器,还用于执行以下操作:
接收写请求,当所述非易失高速缓冲存储器中不存在写请求的写操作地址的旧有效数据时:若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且不存在存储有有效数据的缓存行,则在所述非易失内存存储器中写入所述写请求对应的数据;若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内不存在处于空闲状态的缓存行,且存在存储有有效数据的候选缓存行,则将所述候选缓存行中的数据迁移入所述非易失内存存储器中,当所述候选缓存行中的数据迁移完后,在迁移数据后的候选缓存行中的写入所述写请求对应的数据;若所述非易失高速缓冲存储器中地址标记位与所述写请求的写操作地址相吻合的缓存行所属组内存在处于空闲状态的缓存行,则在所述处于空闲状态的缓存行中写入所述写请求对应的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710483457.6A CN107329696B (zh) | 2017-06-23 | 2017-06-23 | 一种保证数据崩溃一致性的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710483457.6A CN107329696B (zh) | 2017-06-23 | 2017-06-23 | 一种保证数据崩溃一致性的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107329696A true CN107329696A (zh) | 2017-11-07 |
CN107329696B CN107329696B (zh) | 2019-05-14 |
Family
ID=60195936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710483457.6A Active CN107329696B (zh) | 2017-06-23 | 2017-06-23 | 一种保证数据崩溃一致性的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107329696B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107784121A (zh) * | 2017-11-18 | 2018-03-09 | 中国人民解放军国防科技大学 | 一种基于非易失内存的日志文件***的小写优化方法 |
CN110018790A (zh) * | 2019-03-26 | 2019-07-16 | 华中科技大学 | 一种保证持久性内存中数据崩溃一致性的方法及*** |
CN110727632A (zh) * | 2018-07-16 | 2020-01-24 | 华为技术有限公司 | 一种数据处理方法和装置 |
CN111079201A (zh) * | 2019-12-09 | 2020-04-28 | 华中科技大学 | 一种安全nvm***及其崩溃后的数据恢复方法 |
CN111221474A (zh) * | 2020-01-02 | 2020-06-02 | 广州虎牙科技有限公司 | 一种数据的存储方法、装置、设备和存储介质 |
CN113342265A (zh) * | 2021-05-11 | 2021-09-03 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
CN114328281A (zh) * | 2021-11-30 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 固态硬盘异常掉电处理方法、装置、电子设备及介质 |
CN112540931B (zh) * | 2020-12-16 | 2022-05-24 | 华中科技大学 | 保证安全非易失内存中数据崩溃一致性的方法及处理器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751225A (zh) * | 2008-12-04 | 2010-06-23 | 上海华虹Nec电子有限公司 | 一种混合硬盘的数据存取方法 |
CN103246616A (zh) * | 2013-05-24 | 2013-08-14 | 浪潮电子信息产业股份有限公司 | 一种长短周期访问频度的全局共享缓存替换方法 |
US20140372686A1 (en) * | 2010-07-14 | 2014-12-18 | Nimble Storage, Inc. | Methods and systems for marking data in a flash-based cache as invalid |
CN105786721A (zh) * | 2014-12-25 | 2016-07-20 | 研祥智能科技股份有限公司 | 一种内存地址映射管理方法及处理器 |
-
2017
- 2017-06-23 CN CN201710483457.6A patent/CN107329696B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751225A (zh) * | 2008-12-04 | 2010-06-23 | 上海华虹Nec电子有限公司 | 一种混合硬盘的数据存取方法 |
US20140372686A1 (en) * | 2010-07-14 | 2014-12-18 | Nimble Storage, Inc. | Methods and systems for marking data in a flash-based cache as invalid |
CN103246616A (zh) * | 2013-05-24 | 2013-08-14 | 浪潮电子信息产业股份有限公司 | 一种长短周期访问频度的全局共享缓存替换方法 |
CN105786721A (zh) * | 2014-12-25 | 2016-07-20 | 研祥智能科技股份有限公司 | 一种内存地址映射管理方法及处理器 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107784121B (zh) * | 2017-11-18 | 2020-04-24 | 中国人民解放军国防科技大学 | 一种基于非易失内存的日志文件***的小写优化方法 |
CN107784121A (zh) * | 2017-11-18 | 2018-03-09 | 中国人民解放军国防科技大学 | 一种基于非易失内存的日志文件***的小写优化方法 |
CN110727632A (zh) * | 2018-07-16 | 2020-01-24 | 华为技术有限公司 | 一种数据处理方法和装置 |
CN110727632B (zh) * | 2018-07-16 | 2022-11-11 | 超聚变数字技术有限公司 | 一种数据处理方法和装置 |
CN110018790A (zh) * | 2019-03-26 | 2019-07-16 | 华中科技大学 | 一种保证持久性内存中数据崩溃一致性的方法及*** |
CN110018790B (zh) * | 2019-03-26 | 2020-05-19 | 华中科技大学 | 一种保证持久性内存中数据崩溃一致性的方法及*** |
CN111079201B (zh) * | 2019-12-09 | 2021-12-03 | 华中科技大学 | 一种安全nvm***及其崩溃后的数据恢复方法 |
CN111079201A (zh) * | 2019-12-09 | 2020-04-28 | 华中科技大学 | 一种安全nvm***及其崩溃后的数据恢复方法 |
CN111221474A (zh) * | 2020-01-02 | 2020-06-02 | 广州虎牙科技有限公司 | 一种数据的存储方法、装置、设备和存储介质 |
CN112540931B (zh) * | 2020-12-16 | 2022-05-24 | 华中科技大学 | 保证安全非易失内存中数据崩溃一致性的方法及处理器 |
CN113342265A (zh) * | 2021-05-11 | 2021-09-03 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
CN113342265B (zh) * | 2021-05-11 | 2023-11-24 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
CN114328281A (zh) * | 2021-11-30 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 固态硬盘异常掉电处理方法、装置、电子设备及介质 |
CN114328281B (zh) * | 2021-11-30 | 2023-11-14 | 苏州浪潮智能科技有限公司 | 固态硬盘异常掉电处理方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107329696B (zh) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107329696B (zh) | 一种保证数据崩溃一致性的方法及*** | |
CN104794070B (zh) | 基于动态非覆盖raid技术的固态闪存写缓存***及方法 | |
CN102722339B (zh) | 供电安全数据管理*** | |
CN109643275B (zh) | 存储级存储器的磨损均衡设备和方法 | |
CN107632939A (zh) | 用于存储装置的映射表 | |
US20140129758A1 (en) | Wear leveling in flash memory devices with trim commands | |
US10346096B1 (en) | Shingled magnetic recording trim operation | |
CN107025070B (zh) | 版本化存储设备和方法 | |
CN104050094A (zh) | 管理高速缓存存储区的***、方法和计算机可读介质 | |
CN105335098A (zh) | 一种基于存储级内存的日志文件***性能提高方法 | |
TW201007449A (en) | Flash memory storage system and data writing method thereof | |
CN110032521A (zh) | 用于增强闪存转换层映射灵活性以得到性能和寿命改进的方法和*** | |
TWI718710B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN106815152A (zh) | 一种优化页级闪存转换层的方法 | |
CN103544110A (zh) | 一种基于固态盘的块级连续数据保护方法 | |
CN109144899A (zh) | 用于管理表恢复的方法 | |
CN109739696B (zh) | 一种双控存储阵列固态硬盘缓存加速方法 | |
CN105607862A (zh) | 一种dram与mram结合具有备份电源的固态硬盘 | |
CN102520885B (zh) | 一种混合硬盘的数据管理*** | |
US11416403B2 (en) | Method and apparatus for performing pipeline-based accessing management in storage server with aid of caching metadata with hardware pipeline module during processing object write command | |
US20200310669A1 (en) | Optimized handling of multiple copies in storage management | |
JP2011238261A (ja) | 記憶装置および情報処理システム | |
CN110275678B (zh) | 一种基于stt-mram的固态存储器件随机访问性能提升方法 | |
US20220206711A1 (en) | Devices and methods for optimized fetching of multilingual content in media streaming | |
TWI745986B (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 |