CN107817945B - 一种混合内存结构的数据读取方法和系统 - Google Patents
一种混合内存结构的数据读取方法和系统 Download PDFInfo
- Publication number
- CN107817945B CN107817945B CN201610821890.1A CN201610821890A CN107817945B CN 107817945 B CN107817945 B CN 107817945B CN 201610821890 A CN201610821890 A CN 201610821890A CN 107817945 B CN107817945 B CN 107817945B
- Authority
- CN
- China
- Prior art keywords
- data
- storage device
- page
- requested data
- requested
- 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
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000013507 mapping Methods 0.000 claims abstract description 34
- 230000002159 abnormal effect Effects 0.000 claims abstract description 18
- 230000008030 elimination Effects 0.000 claims description 9
- 238000003379 elimination reaction Methods 0.000 claims description 9
- 239000007787 solid Substances 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 239000002699 waste material Substances 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 3
- 230000008520 organization Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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/0608—Saving storage space on storage systems
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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/061—Improving I/O performance
-
- 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
-
- 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/0638—Organizing or formatting or addressing of data
-
- 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/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种混合内存结构的数据读取方法和系统,接收数据读取请求后,判断数据是否在第一存储设备中,若在,则从第一存储设备中读取数据,若不在,则产生携带有数据的虚拟地址的缺页异常请求,根据缺页异常请求在第一存储设备中为数据分配物理微页,并建立虚拟地址与物理微页地址的映射关系,以从第二存储设备中加载所述请求的数据到所述第一存储设备中,并根据映射关系从所述第一存储设备中读取所述请求的数据。由于物理微页为物理页划分成的多个物理微页中与数据分配时的偏移和大小相同的物理微页,因此,以物理微页来管理原本的物理页,不仅可以减少物理内存的浪费,还能支持对随机大小的数据的访问和来自用户的多线程请求。
Description
技术领域
本发明涉及存储器技术领域,更具体地说,涉及一种混合内存结构的数据读取方法和系统。
背景技术
随着云计算、大数据的发展,数据密集型应用希望通过增大系统内存容量来减少对磁盘的访问。虽然采用更大容量的DRAM(Dynamic Random Access Memory,动态随机存取存储器)作为内存可以增大系统的内存容量,但是,在当前工艺特征尺寸的限制下,DRAM的存储密度和容量已经很难再有所提升。
而随着新型非易失性存储介质NVM的出现,闪存尤其是基于闪存的固态硬盘为增大系统的内存容量带来了希望。虽然闪存具有低功耗、低价格和大容量等优势,但是,其也具有高延迟和寿命有限等缺陷,因此,闪存不能直接替代DRAM作为内存。基于此,人们提出了一种包括DRAM和NVM的混合内存结构,但是,在这种混合内存结构中,如何存储和读取数据才能充分发挥DRAM和NVM各自的优势、避免各自的劣势仍是目前人们研究的重点之一。
发明内容
有鉴于此,本发明提供了一种混合内存结构的数据读取方法和系统,以提高包括DRAM和NVM的混合内存结构的性能。
为实现上述目的,本发明提供如下技术方案:
一种混合内存结构的数据读取方法,所述混合内存结构包括第一存储设备和第二存储设备,所述数据读取方法包括:
接收数据读取请求;
判断所述数据读取请求所请求的数据是否在所述第一存储设备中;
若所述请求的数据在所述第一存储设备中,则从所述第一存储设备中读取所述请求的数据;
若所述请求的数据不在所述第一存储设备中,则产生携带有所述请求的数据的虚拟地址的缺页异常请求,根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页,并建立所述虚拟地址与所述物理微页地址的映射关系,从所述第二存储设备中加载所述请求的数据到所述第一存储设备中,并根据所述映射关系从所述第一存储设备中读取所述请求的数据;
其中,所述物理微页为物理页划分成的多个物理微页中与所述请求的数据分配时的偏移和大小相同的物理微页。
优选的,判断所述数据读取请求所请求的数据是否在所述第一存储设备中的过程包括:
从所述数据读取请求中获取所请求的数据的虚拟地址;
从所述虚拟地址对应的页表中查找匹配的页表项,若查找到匹配的页表项,则所述请求的数据在所述第一存储设备中,若没有查找到匹配的页表项,则所述请求的数据不在所述第一存储设备中。
优选的,建立所述虚拟地址与所述物理微页地址的映射关系的过程包括:
将所述物理微页所在物理页的物理页号写入所述虚拟地址对应的页表的页表项中。
优选的,在所述第一存储设备中为所述请求的数据分配物理微页的过程包括:
判断是否首次为所述请求的数据分配物理微页;
若是,为所述请求的数据分配一个新的内存块,并从所述内存块的空闲链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;
若否,则从所述请求的数据相应的链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;
其中,同一物理页被划分成相同大小和偏移的多个物理微页,不同物理页划分成的物理微页的大小和偏移不同,并且,具有相同大小和偏移的物理微页被归为一个模式,通过链表链接。
优选的,所述链表包括活跃链表和非活跃链表,所述活跃链表包含最近被请求过的数据,所述非活跃链表包含最近未被请求的数据,当所有的内存块被用完时,根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页之前还包括:
从非活跃链表的链头开始查询;
若所述链头的数据的访问位为1,则将所述数据移到活跃链表的链尾,并对其访问位清零;
若所述链头的数据的访问位为0,则将所述数据作为淘汰候选数据,若所述数据为脏数据,则在所述数据写回至所述第二存储设备后,回收其物理微页到相应的空闲链表。
优选的,当所述非活跃链表不足时,还包括:
从活跃链表的链头开始查询;
若所述链头的数据的访问位为1,则将所述数据移至所述活跃链表的链尾,并对其访问位清零;
若所述链头的数据的访问位为0,则将所述数据链入非活跃区的链尾。
优选的,所述第一存储设备为动态随机存取存储器,所述第二存储设备为固态硬盘。
一种混合内存结构的数据读取系统,所述混合内存结构包括第一存储设备和第二存储设备,所述读取系统包括:
接收模块,用于接收数据读取请求;
控制模块,用于判断所述数据读取请求所请求的数据是否在所述第一存储设备中,若所述请求的数据在所述第一存储设备中,则从所述第一存储设备中读取所述请求的数据,若所述请求的数据不在所述第一存储设备中,则产生携带有所述请求的数据的虚拟地址的缺页异常请求;
数据读取模块,用于根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页,并建立所述虚拟地址与所述物理微页地址的映射关系,以使所述控制模块从第二存储设备中加载所述请求的数据到所述第一存储设备中,并根据映射关系从所述第一存储设备中读取所述请求的数据;
其中,所述物理微页为物理页划分成的多个物理微页中与所述请求的数据分配时的偏移和大小相同的物理微页。
优选的,所述数据读取模块包括分配模块和修改模块;
所述分配模块用于根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页;
所述修改模块用于将所述物理微页所在物理页的物理页号写入所述虚拟地址对应的页表的页表项中,以建立所述虚拟地址与所述物理微页地址的映射关系。
优选的,所述分配模块包括判断子模块和分配子模块;
所述判断子模块用于判断是否首次为所述请求的数据分配物理微页,若是,产生第一指令并发送至所述分配子模块,若否,则产生第二指令并发送至所述分配子模块;
所述分配子模块用于根据所述第一指令为所述请求的数据分配一个新的内存块,并从所述内存块的空闲链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据,根据所述第二指令从所述请求的数据相应的链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;
其中,同一物理页被划分成相同大小和偏移的多个物理微页,不同物理页划分成的物理微页的大小和偏移不同,并且,具有相同大小和偏移的物理微页被归为一个模式,通过链表链接。
优选的,所述链表包括活跃链表和非活跃链表,所述活跃链表包含最近被请求过的数据,所述非活跃链表包含最近未被请求的数据,所述数据读取模块还包括淘汰模块;
所述淘汰模块用于从非活跃链表的链头开始查询,若所述链头的数据的访问位为1,则将所述数据移到活跃链表的链尾,并对其访问位清零,若所述链头的数据的访问位为0,则将所述数据作为淘汰候选数据,若所述数据为脏数据,则在所述数据写回至所述第二存储设备后,回收其物理微页到相应的空闲链表。
优选的,所述淘汰模块还用于从活跃链表的链头开始查询,若所述链头的数据的访问位为1,则将所述数据移至所述活跃链表的链尾,并对其访问位清零,若所述链头的数据的访问位为0,则将所述数据链入非活跃区的链尾。
优选的,所述第一存储设备为动态随机存取存储器,所述第二存储设备为固态硬盘。
与现有技术相比,本发明所提供的技术方案具有以下优点:
本发明所提供的混合内存结构的数据读取方法和系统,接收数据读取请求后,判断所述数据读取请求所请求的数据是否在所述第一存储设备中,若所述请求的数据在所述第一存储设备中,则从所述第一存储设备中读取所述请求的数据,若所述请求的数据不在所述第一存储设备中,则产生携带有所述请求的数据的虚拟地址的缺页异常请求,根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页,并建立所述虚拟地址与所述物理微页的映射关系,从第二存储设备中加载所述请求的数据到所述第一存储设备中,并根据映射关系从所述第一存储设备中读取所述请求的数据。由于所述物理微页为物理页划分成的多个物理微页中与所述请求的数据的偏移和大小相同的物理微页,因此,以物理微页来管理原本的物理页,不仅可以减少物理内存的浪费,还能支持对随机大小数据的访问和来自用户的多线程请求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的混合内存结构示意图;
图2为本发明实施例提供的混合内存结构的数据读取方法的流程图;
图3为本发明实施例提供的物理内存的划分示意图;
图4为本发明实施例提供的虚拟页与物理页的映射关系示意图;
图5为本发明实施例提供的链表的管理方法示意图;
图6为本发明实施例提供第二存储设备的逻辑组织结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实施例提供了一种混合内存结构的数据读取方法,混合内存结构的整体框架如图1所示,包括第一存储设备和第二存储设备,所述第一存储设备为DRAM,所述第二存储设备为SSD(Solid State Drives,固态硬盘),优选为基于闪存的固态硬盘。基于此,部分数据可以存储在DRAM中,部分数据可以存储在SSD中。
如图2所示,该混合内存结构的数据读取方法包括:
S201:接收数据读取请求;
S202:判断所述数据读取请求所请求的数据是否在所述第一存储设备中,若所述请求的数据在所述第一存储设备中,则进入S203,若所述请求的数据不在所述第一存储设备中,则进入S204;
S203:从所述第一存储设备中读取所述请求的数据;
S204:产生携带有所述请求的数据的虚拟地址的缺页异常请求;
S205:根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页,并建立所述虚拟地址与所述物理微页的映射关系,从第二存储设备中加载所述请求的数据到所述第一存储设备中,并根据映射关系从所述第一存储设备中读取所述请求的数据;其中,所述物理微页为物理页划分成的多个物理微页中与所述请求的数据分配时的偏移和大小相同的物理微页。
本实施例中,接收到用户发送的数据读取请求后,判断所述数据读取请求所请求的数据是否在所述第一存储设备中,其中,判断所述数据读取请求所请求的数据是否在所述第一存储设备中的过程包括:从所述数据读取请求中获取所请求的数据的虚拟地址;从所述虚拟地址对应的页表中查找匹配的页表项,若查找到匹配的页表项,则所述请求的数据在所述第一存储设备中,若没有查找到匹配的页表项,则所述请求的数据不在所述第一存储设备中。
若请求的数据在第一存储设备中,则直接从第一存储设备中读取所述请求的数据;
若所述请求的数据不在所述第一存储设备中,产生携带有所述请求的数据的虚拟地址的缺页异常请求,根据所述缺页异常请求在所述第二存储设备中为所述请求的数据分配物理微页,建立所述虚拟地址与所述物理微页的映射关系,以从第二存储设备中加载所述请求的数据到所述第一存储设备中,并根据映射关系从所述第一存储设备中读取所述请求的数据,其中,在所述第一存储设备中为所述请求的数据分配物理微页的过程包括:
判断是否首次为所述请求的数据分配物理微页;
若是,为所述请求的数据分配一个新的内存块,并从所述内存块的空闲链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;
若否,则从所述请求的数据相应的链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;
其中,同一物理页被划分成相同大小和偏移的多个物理微页,不同物理页划分成的物理微页的大小和偏移不同,并且,具有相同大小和偏移的物理微页被归为一个模式,通过链表链接。
本发明的实施例中,为了减少数据对象管理带来的物理空间浪费,将原有4KB的物理页划分成多个物理微页来管理。具体地,将整个物理空间切割成多个内存块,每个内存块包含多个物理页,每个物理页又划分成多个物理微页以加载数据。其中,物理微页的最小尺寸是用户可配置的,即用户可根据其数据的大小情况设置物理微页的最小值,用户可根据实际的数据大小分布情况设置最小的物理微页尺寸,其他的物理微页的尺寸在此基础上等值递增。
本发明实施例提供的内存划分策略忽略原4KB的物理页边界,将每个4KB的物理页划分成多个尺寸大小相同的物理微页,其中,不同物理页划分的物理微页的尺寸大小不同。并且,具有相同尺寸大小和相同偏移的物理微页被归为一个模式,通过链表链接。需要说明的是,如果物理微页的大小不能被4KB整除,则剩余的空间按照从物理页的结束边界逆向挑选尽量大的物理微页为原则,收集到其他具有相同大小和偏移的物理微页的模式链表中。
本发明实施例提供的物理内存的划分示意图,如图3所示,假设最小的物理微页为256B,a至f各为一个4KB的物理页。a页可按照256B划分为相同大小而不同偏移的物理微页,b页可按照512B被整分。当c页按照768B划分时,在偏移3840B处剩余大小256B,这个剩余空间将与a页最后一个物理微页链入同一个模式链表。d页可按照1024B被整分,e页按照大小1280B划分,其剩余空间与c页最后一个物理微页处理相同。f页以1536B划分,在偏移3072B处剩余大小1024B,该剩余空间将按照尽量大的原则被收集到d页的最后一个微页链表中,而不是被划分成四个256B分别链入a页最后四个微页的模式链表中。
基于此,本发明提供的实施例中,为了实现数据的细粒度管理,每个虚拟页上只分配一个数据,并且,虚拟页上的数据与其分配的物理微页的偏移相同。当用户发送的数据读取请求所请求的数据不在第一存储设备即DRAM中时,触发一个缺页异常,数据读取系统将在第一存储设备即DRAM中寻找一个合适的物理微页,来加载即将从第二存储设备中获取该数据,并将所述物理微页所在物理页的物理页号写入所述虚拟页对应的页表的页表项中,来建立所述虚拟页与所述物理微页的映射关系,其映射关系如图4所示,从而可以根据所述映射关系从所述第一存储设备中读取所述请求的数据。
本实施例中,为每个模式分别建立不同的链表,管理空闲的和使用过的物理微页,使用过的物理微页所在的链表又分为活跃链表和非活跃链表。所述活跃链表包含最近被请求过的数据,所述非活跃链表包含最近未被请求的数据,当所有的内存块被用完时,根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页之前,如图5所示,还包括从第一存储设备到第二存储设备的淘汰过程:
从非活跃链表的链头开始查询;
若所述链头的数据的访问位为1,则将所述数据移到活跃链表的链尾,并对其访问位清零;
若所述链头的数据的访问位为0,则将所述数据作为淘汰候选数据,若所述数据为脏数据,则在所述数据写回至所述第二存储设备后,回收其物理微页到相应的空闲链表。
当所述非活跃链表不足时,还包括:
从活跃链表的链头开始查询;
若所述链头的数据的访问位为1,则将所述数据移至所述活跃链表的链尾,并对其访问位清零;
若所述链头的数据的访问位为0,则将所述数据链入非活跃区的链尾。
其中,可以利用页表项中的访问位,检测该数据最近是否被访问过,可以利用页表项中的脏位,检测该数据是否已变成脏数据。
本实施例中,第二存储设备即SSD被分为多个256KB大小的逻辑块,每个逻辑块包含许多页,每个页包含多个大小与最小微页相同的区。第二存储设备即SSD的逻辑组织结构如图6所示。为了减少第二存储设备即SSD随机写操作的较长延迟,将淘汰的数据组装成256KB的块存入写缓冲区。当写缓冲区快满时,激活相应的后台线程以块为单位顺序写入到第二存储设备即SSD。为了记录数据的虚拟地址与第二存储设备即SSD位置之间的映射关系,实现了一个类似系统页表的映射表ST。ST由虚拟地址索引,存放了数据的元数据,包括SSD位置、数据大小和偏移等。基于此,可以根据请求数据的虚拟地址在映射表ST中查找请求的数据在第二存储设备即SSD中的位置,从而可以将请求的数据从第二存储设备即SSD中加载到第一存储设备中。
由于SSD不支持数据的原地写回,需要延迟较长的擦除操作。因此,即便再次写同一个数据时也应当写到SSD的另一个位置,这将需要更新该数据在ST表中的SSD位置信息。同时,该数据在SSD旧位置上的数据将成为垃圾数据。为了回收SSD上的垃圾空间,实现了一个后台线程来执行垃圾回收策略。垃圾回收策略从达到回收条件的块中挑选有效的数据,组装到写缓冲区中,然后该块可以被擦除并重新使用。有效数据的确认是通过比较其当前SSD位置与ST表中存放的是否一致来判断。如果两者相同,说明该数据是有效数据;否则该数据为旧备份,可以丢弃,并回收其SSD空间。为了在ST上索引数据,在各个块的头部集中存放了数据的虚拟地址。
本发明所提供的混合内存结构的数据读取方法,接收数据读取请求后,判断所述数据读取请求所请求的数据是否在所述第一存储设备中,若所述请求的数据在所述第一存储设备中,则从所述第一存储设备中读取所述请求的数据,若所述请求的数据不在所述第一存储设备中,则产生携带有所述请求的数据的虚拟地址的缺页异常请求,根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页,并建立所述虚拟地址与所述物理微页的映射关系,以根据所述映射关系从所述第二存储设备中读取所述请求的数据。由于所述物理微页为物理页划分成的多个物理微页中与所述请求的数据的偏移和大小相同的物理微页,因此,以物理微页来管理原本的物理页,不仅可以减少物理内存的浪费,还能支持对随机大小的数据的访问和来自用户的多线程请求。
本发明实施例还提供了一种混合内存结构的数据读取系统,所述混合内存结构包括第一存储设备和第二存储设备,其中,所述第一存储设备为DRAM,所述第二存储设备为SSD,优选为基于闪存的固态硬盘,所述读取系统包括:
接收模块,用于接收数据读取请求;
控制模块,用于判断所述数据读取请求所请求的数据是否在所述第一存储设备中,若所述请求的数据在所述第一存储设备中,则从所述第一存储设备中读取所述请求的数据,若所述请求的数据不在所述第一存储设备中,则产生携带有所述请求的数据的虚拟地址的缺页异常请求;
数据读取模块,用于根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页,并建立所述虚拟地址与所述物理微页的映射关系,以使所述控制模块从第二存储设备中加载所述请求的数据到所述第一存储设备中,并根据映射关系从所述第一存储设备中读取所述请求的数据;
其中,所述物理微页为物理页划分成的多个物理微页中与所述请求的数据分配时的偏移和大小相同的物理微页。
其中,所述数据读取模块包括分配模块和修改模块;
所述分配模块用于根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页;
所述修改模块用于将所述物理微页所在物理页的物理页号写入所述虚拟地址对应的页表的页表项中,以建立所述虚拟地址与所述物理微页的映射关系。
其中,所述分配模块包括判断子模块和分配子模块;
所述判断子模块用于判断是否首次为所述请求的数据分配物理微页,若是,产生第一指令并发送至所述分配子模块,若否,则产生第二指令并发送至所述分配子模块;
所述分配子模块用于根据所述第一指令为所述请求的数据分配一个新的内存块,并从所述内存块的空闲链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据,根据所述第二指令从所述请求的数据相应的链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;
其中,同一物理页被划分成相同大小和偏移的多个物理微页,不同物理页划分成的物理微页的大小和偏移不同,并且,具有相同大小和偏移的物理微页被归为一个模式,通过链表链接。
其中,所述链表包括活跃链表和非活跃链表,所述活跃链表包含最近被请求过的数据,所述非活跃链表包含最近未被请求的数据,所述数据读取模块还包括淘汰模块;
所述淘汰模块用于从非活跃链表的链头开始查询,若所述链头的数据的访问位为1,则将所述数据移到活跃链表的链尾,并对其访问位清零,若所述链头的数据的访问位为0,则将所述数据作为淘汰候选数据,若所述数据为脏数据,则则在所述数据写回至所述第二存储设备后,回收其物理微页到相应的空闲链表。
其中,所述淘汰模块还用于从活跃链表的链头开始查询,若所述链头的数据的访问位为1,则将所述数据移至所述活跃链表的链尾,并对其访问位清零,若所述链头的数据的访问位为0,则将所述数据链入非活跃区的链尾。
本发明所提供的混合内存结构的数据读取系统,接收数据读取请求后,判断所述数据读取请求所请求的数据是否在所述第一存储设备中,若所述请求的数据在所述第一存储设备中,则从所述第一存储设备中读取所述请求的数据,若所述请求的数据不在所述第一存储设备中,则产生携带有所述请求的数据的虚拟地址的缺页异常请求,根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页,并建立所述虚拟地址与所述物理微页的映射关系,从第二存储设备中加载所述请求的数据到所述第一存储设备中,并根据映射关系从所述第一存储设备中读取所述请求的数据。由于所述物理微页为物理页划分成的多个物理微页中与所述请求的数据的偏移和大小相同的物理微页,因此,以物理微页来管理原本的物理页,不仅可以减少物理内存的浪费,还能支持对随机大小的数据的访问和来自用户的多线程请求。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种混合内存结构的数据读取方法,其特征在于,所述混合内存结构包括第一存储设备和第二存储设备,所述第一存储设备和所述第二存储设备均为内存设备,所述数据读取方法包括:
接收数据读取请求;
判断所述数据读取请求所请求的数据是否在所述第一存储设备中;
若所述请求的数据在所述第一存储设备中,则从所述第一存储设备中读取所述请求的数据;
若所述请求的数据不在所述第一存储设备中,则产生携带有所述请求的数据的虚拟地址的缺页异常请求;
根据所述缺页异常请求判断是否首次为所述请求的数据分配物理微页;
若是,为所述请求的数据分配一个新的内存块,并从所述内存块的空闲链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;
若否,则从所述请求的数据相应的链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;
其中,同一物理页被划分成相同大小和偏移的多个物理微页,不同物理页划分成的物理微页的大小和偏移不同,并且,具有相同大小和偏移的物理微页被归为一个模式,通过链表链接;
并建立所述虚拟地址与所述物理微页地址的映射关系,从所述第二存储设备中加载所述请求的数据到所述第一存储设备中,并根据所述映射关系从所述第一存储设备中读取所述请求的数据;
其中,所述物理微页为物理页划分成的多个物理微页中与所述请求的数据分配时的偏移和大小相同的物理微页。
2.根据权利要求1所述的方法,其特征在于,判断所述数据读取请求所请求的数据是否在所述第一存储设备中的过程包括:
从所述数据读取请求中获取所请求的数据的虚拟地址;
从所述虚拟地址对应的页表中查找匹配的页表项,若查找到匹配的页表项,则所述请求的数据在所述第一存储设备中,若没有查找到匹配的页表项,则所述请求的数据不在所述第一存储设备中。
3.根据权利要求1所述的方法,其特征在于,建立所述虚拟地址与所述物理微页地址的映射关系的过程包括:
将所述物理微页所在物理页的物理页号写入所述虚拟地址对应的页表的页表项中。
4.根据权利要求1所述的方法,其特征在于,所述链表包括活跃链表和非活跃链表,所述活跃链表包含最近被请求过的数据,所述非活跃链表包含最近未被请求的数据,当所有的内存块被用完时,根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页之前,还包括从第一存储设备到第二存储设备的淘汰过程:
从非活跃链表的链头开始查询;
若所述链头的数据的访问位为1,则将所述数据移到活跃链表的链尾,并对其访问位清零;
若所述链头的数据的访问位为0,则将所述数据作为淘汰候选数据,若所述数据为脏数据,则在所述数据写回至所述第二存储设备后,回收其物理微页到相应的空闲链表。
5.根据权利要求4所述的方法,其特征在于,当所述非活跃链表不足时,还包括:
从活跃链表的链头开始查询;
若所述链头的数据的访问位为1,则将所述数据移至所述活跃链表的链尾,并对其访问位清零;
若所述链头的数据的访问位为0,则将所述数据链入非活跃区的链尾。
6.根据权利要求1所述的方法,其特征在于,所述第一存储设备为动态随机存取存储器,所述第二存储设备为固态硬盘。
7.一种混合内存结构的数据读取系统,其特征在于,所述混合内存结构包括第一存储设备和第二存储设备,所述第一存储设备和所述第二存储设备均为内存设备,所述读取系统包括:
接收模块,用于接收数据读取请求;
控制模块,用于判断所述数据读取请求所请求的数据是否在所述第一存储设备中,若所述请求的数据在所述第一存储设备中,则从所述第一存储设备中读取所述请求的数据,若所述请求的数据不在所述第一存储设备中,则产生携带有所述请求的数据的虚拟地址的缺页异常请求;
数据读取模块,用于根据所述缺页异常请求判断是否首次为所述请求的数据分配物理微页;若是,为所述请求的数据分配一个新的内存块,并从所述内存块的空闲链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;若否,则从所述请求的数据相应的链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;
并建立所述虚拟地址与所述物理微页地址的映射关系,以使所述控制模块从第二存储设备中加载所述请求的数据到所述第一存储设备中,并根据映射关系从所述第一存储设备中读取所述请求的数据;
其中,所述物理微页为物理页划分成的多个物理微页中与所述请求的数据分配时的偏移和大小相同的物理微页。
8.根据权利要求7所述的系统,其特征在于,所述数据读取模块包括分配模块和修改模块;
所述分配模块用于根据所述缺页异常请求在所述第一存储设备中为所述请求的数据分配物理微页;
所述修改模块用于将所述物理微页所在物理页的物理页号写入所述虚拟地址对应的页表的页表项中,以建立所述虚拟地址与所述物理微页地址的映射关系。
9.根据权利要求8所述的系统,其特征在于,所述分配模块包括判断子模块和分配子模块;
所述判断子模块用于判断是否首次为所述请求的数据分配物理微页,若是,产生第一指令并发送至所述分配子模块,若否,则产生第二指令并发送至所述分配子模块;
所述分配子模块用于根据所述第一指令为所述请求的数据分配一个新的内存块,并从所述内存块的空闲链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据,根据所述第二指令从所述请求的数据相应的链表中选取与所述请求的数据的偏移相同的空闲物理微页分配给所述请求的数据;
其中,同一物理页被划分成相同大小和偏移的多个物理微页,不同物理页划分成的物理微页的大小和偏移不同,并且,具有相同大小和偏移的物理微页被归为一个模式,通过链表链接。
10.根据权利要求9所述的系统,其特征在于,所述链表包括活跃链表和非活跃链表,所述活跃链表包含最近被请求过的数据,所述非活跃链表包含最近未被请求的数据,所述数据读取模块还包括淘汰模块;
所述淘汰模块用于从非活跃链表的链头开始查询,若所述链头的数据的访问位为1,则将所述数据移到活跃链表的链尾,并对其访问位清零,若所述链头的数据的访问位为0,则将所述数据作为淘汰候选数据,若所述数据为脏数据,则在所述数据写回至所述第二存储设备后,回收其物理微页到相应的空闲链表。
11.根据权利要求10所述的系统,其特征在于,所述淘汰模块还用于从活跃链表的链头开始查询,若所述链头的数据的访问位为1,则将所述数据移至所述活跃链表的链尾,并对其访问位清零,若所述链头的数据的访问位为0,则将所述数据链入非活跃区的链尾。
12.根据权利要求7所述的系统,其特征在于,所述第一存储设备为动态随机存取存储器,所述第二存储设备为固态硬盘。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610821890.1A CN107817945B (zh) | 2016-09-13 | 2016-09-13 | 一种混合内存结构的数据读取方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610821890.1A CN107817945B (zh) | 2016-09-13 | 2016-09-13 | 一种混合内存结构的数据读取方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107817945A CN107817945A (zh) | 2018-03-20 |
CN107817945B true CN107817945B (zh) | 2021-07-27 |
Family
ID=61601251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610821890.1A Active CN107817945B (zh) | 2016-09-13 | 2016-09-13 | 一种混合内存结构的数据读取方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107817945B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108717395B (zh) * | 2018-05-18 | 2021-07-13 | 记忆科技(深圳)有限公司 | 一种降低动态块映射信息占用内存的方法及装置 |
CN110502452B (zh) * | 2019-07-12 | 2022-03-29 | 华为技术有限公司 | 访问电子设备中的混合缓存的方法及装置 |
CN112242976B (zh) * | 2019-07-17 | 2022-02-25 | 华为技术有限公司 | 一种身份认证方法及装置 |
CN110674051A (zh) * | 2019-09-24 | 2020-01-10 | 中国科学院微电子研究所 | 一种数据存储方法及装置 |
CN115757193B (zh) | 2019-11-15 | 2023-11-03 | 荣耀终端有限公司 | 一种内存的管理方法及电子设备 |
CN116266159B (zh) * | 2021-12-17 | 2024-07-05 | 华为技术有限公司 | 一种缺页异常处理方法和电子设备 |
CN115934002B (zh) * | 2023-03-08 | 2023-08-04 | 阿里巴巴(中国)有限公司 | 固态硬盘的访问方法、固态硬盘、存储系统及云服务器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853665A (zh) * | 2012-12-03 | 2014-06-11 | 华为技术有限公司 | 存储空间分配方法及设备 |
CN105786721A (zh) * | 2014-12-25 | 2016-07-20 | 研祥智能科技股份有限公司 | 一种内存地址映射管理方法及处理器 |
CN105786717A (zh) * | 2016-03-22 | 2016-07-20 | 华中科技大学 | 软硬件协同管理的dram-nvm层次化异构内存访问方法及系统 |
CN105893274A (zh) * | 2016-05-11 | 2016-08-24 | 华中科技大学 | 一种面向异构内存系统建立检查点的装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069475B1 (en) * | 2010-10-26 | 2015-06-30 | Western Digital Technologies, Inc. | Hybrid drive selectively spinning up disk when powered on |
US20130198453A1 (en) * | 2012-01-26 | 2013-08-01 | Korea Electronics Technology Institute | Hybrid storage device inclucing non-volatile memory cache having ring structure |
US9535627B2 (en) * | 2013-10-02 | 2017-01-03 | Advanced Micro Devices, Inc. | Latency-aware memory control |
US9342402B1 (en) * | 2014-01-28 | 2016-05-17 | Altera Corporation | Memory interface with hybrid error detection circuitry for modular designs |
KR20160056380A (ko) * | 2014-11-10 | 2016-05-20 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
-
2016
- 2016-09-13 CN CN201610821890.1A patent/CN107817945B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853665A (zh) * | 2012-12-03 | 2014-06-11 | 华为技术有限公司 | 存储空间分配方法及设备 |
CN105786721A (zh) * | 2014-12-25 | 2016-07-20 | 研祥智能科技股份有限公司 | 一种内存地址映射管理方法及处理器 |
CN105786717A (zh) * | 2016-03-22 | 2016-07-20 | 华中科技大学 | 软硬件协同管理的dram-nvm层次化异构内存访问方法及系统 |
CN105893274A (zh) * | 2016-05-11 | 2016-08-24 | 华中科技大学 | 一种面向异构内存系统建立检查点的装置 |
Non-Patent Citations (1)
Title |
---|
Page Overlays: An Enhanced Virtual Memory Framework;Vivek Seshadri et al.;《2015 ACM/IEEE 42nd Annual International Symposium on Computer Architecture(ISCA)》;20151001;79-91 * |
Also Published As
Publication number | Publication date |
---|---|
CN107817945A (zh) | 2018-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107817945B (zh) | 一种混合内存结构的数据读取方法和系统 | |
US9652386B2 (en) | Management of memory array with magnetic random access memory (MRAM) | |
KR101324688B1 (ko) | 영구 가비지 컬렉션을 갖는 메모리 시스템 | |
US9229876B2 (en) | Method and system for dynamic compression of address tables in a memory | |
KR100849221B1 (ko) | 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치 | |
KR100453053B1 (ko) | 플래쉬 메모리용 파일 시스템 | |
CN105718530B (zh) | 文件存储系统及其文件存储控制方法 | |
US20140089564A1 (en) | Method of data collection in a non-volatile memory | |
CN106502587B (zh) | 硬盘数据管理方法和硬盘控制装置 | |
Agarwal et al. | A closed-form expression for write amplification in nand flash | |
US20130166828A1 (en) | Data update apparatus and method for flash memory file system | |
KR20110117099A (ko) | 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법 | |
CN104424110B (zh) | 固态驱动器的主动回收 | |
US20160170879A1 (en) | Systems and methods for managing cache of a data storage device | |
CN109558333B (zh) | 具有可变额外存储空间的固态存储设备命名空间 | |
US11016889B1 (en) | Storage device with enhanced time to ready performance | |
CN103970669A (zh) | 用于加速在固态设备中的回收操作的物理到逻辑地址映射 | |
CN111104045A (zh) | 一种存储控制方法、装置、设备和计算机存储介质 | |
US20150220433A1 (en) | Method for managing flash memories having mixed memory types using a finely granulated allocation of logical memory addresses to physical memory addresses | |
US20140082031A1 (en) | Method and apparatus for managing file system | |
EP2264602A1 (en) | Memory device for managing the recovery of a non volatile memory | |
Subramani et al. | Garbage collection algorithms for nand flash memory devices--an overview | |
CN107203341A (zh) | 基于闪存的数据存储方法、装置以及闪存芯片 | |
KR101026634B1 (ko) | 하이브리드 플래시 메모리의 데이터 저장 방법 | |
KR101077901B1 (ko) | 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 |
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 |