CN105205009B - 一种基于大容量固态存储的地址映射方法及装置 - Google Patents
一种基于大容量固态存储的地址映射方法及装置 Download PDFInfo
- Publication number
- CN105205009B CN105205009B CN201510641672.5A CN201510641672A CN105205009B CN 105205009 B CN105205009 B CN 105205009B CN 201510641672 A CN201510641672 A CN 201510641672A CN 105205009 B CN105205009 B CN 105205009B
- Authority
- CN
- China
- Prior art keywords
- grades
- mapping tables
- logical block
- block addresses
- main memory
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种基于大容量固态存储的地址映射方法,其特征在于,包括:获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;根据所述全局2级映射表,查询所述逻辑区块地址所对应的主存中的所述3级映射表;如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中,将所述待写入数据写入所述物理页号。
Description
技术领域
本发明涉及电子通信技术领域,尤其涉及一种基于大容量固态存储的地址映射方法及装置。
背景技术
存储领域常用的数据载体是机械硬盘和固态硬盘(SSD),固态硬盘具有体积小,能耗低,抗干扰能力强,寻址时间极小,每秒进行读写操作的次数(IOPS)高等特点,相较于传统磁盘,flash等固态硬盘存储可以做到微秒级的的延迟,而传统磁盘只能做到毫秒级延迟。但是,由于flash等固态硬盘本身(1)修改数据不能直接在原数据上重写,导致非定点更新;(2)数据读写的基本单位是页,而擦除的基本单位是块;(3)由于寿命问题,每个擦除块只能被擦除有限的次数等固有特性,所以基于flash等固态硬盘的存储***,需要模拟读写机械硬盘的传统块设备的行为,对***屏蔽固态驱动器的特性。
闪存转换层(FTL)算法,其实就是一种逻辑区块地址(LBA)到物理页号(PPN)的映射。当文件***发送指令要写入或者更新一个特定的逻辑页,闪存转换层(FTL)实际上就是把数据写入到一个不同的空闲物理页并更新映射表,并把这个页上包含的旧数据置为无效。正是因为闪存转换层(FTL)的存在,操作***才能把当成硬盘驱动器那样的操作,因此,闪存转换层(FTL)算法的性能也就直接影响flash等固态硬盘的性能表现。
早期的flash等固态硬盘容量较小,每个芯片的页数有限,所述小粒度的页级映射策略,是一种高效灵活的映射方法,可以把任何一个逻辑页映射到任意的物理页,每个映射关系对应一个映射条目。但是由于映射的粒度小,当flash等固态硬盘容量较大时,需要消耗大量的内存来存储映射表信息,不适宜大容量的固态存储***。
使用块级映射地址的转换,通过地址映射将逻辑块号转化成物理块号,根据逻辑地址中的块号偏移将数据写入物理块中具有相同偏移的物理页。由于采用粗粒度的映射,映射表显著减少。但是假如N个页面组成一个块,跟基本的页映射算法相比,块映射的映射表数量降低为原来的1/N,使得整个映射表能够完全存储在主存RAM中。块级映射方案中,替代块的空间利用率很低,造成存储空间的浪费;另一方面,当进行flash等固态硬盘的擦除操作时,需要大量的数据擦除和迁移操作,***运行一段时间需要频繁的垃圾回收,造成***的性能抖动。
发明内容
本发明实施例提供一种基于大容量固态存储的地址映射方法及装置,通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或待写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
第一方面提供一种基于大容量固态存储的地址映射方法,其特征在于,包括:
获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;
根据所述全局2级映射表,查询所述逻辑区块地址所对应的主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述主存中3级映射表和固态硬盘中的3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中;
在所述主存中所述逻辑区块地址所对应的3级映射表中,将待写入数据写入所述物理页号所对应的存储空间。
在第一方面第一种可能的实现方式中,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,其特征在于,还包括:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
结合第一方面或第一方面第一种可能的实现方式,在第二种可能的实现方式中,在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,在所述将所述物理页号写入所述固态硬盘中之后,还包括:
将所述逻辑区块地址与所述物理页号在所述2级映射表与1级映射表中进行更新。
结合第一方面至第一方面第三种可能的实现方式,在第四种可能的实现方式中,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还包括:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中之后,对所述三级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。
第二方面提供一种一种基于大容量固态存储的地址映射方法,其特征在于,包括:
获取用于读固态硬盘中数据的读命令,所述读命令携带待写入数据的逻辑区块地址;
在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
从所述物理页上读取所述数据。
第三方面提供一种基于大容量固态存储的地址映射方法,其特征在于,包括:
获取用于读或写固态硬盘中数据的命令,所述命令包括读命令或写命令;
判断所述命令是读命令或写命令;
如果所述命令是读命令,所述读命令携带逻辑区块地址,在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
从所述物理页上读取所述数据;
如果所述命令是写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址,根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间。
在第三方面第一种可能的实现方式中,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,其特征在于,还包括:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
结合第三方面或第三方面第一种可能的实现方式,在第二种可能的实现方式中,在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
结合第三方面第二种可能的实现方式,在第三种可能的实现方式中,在所述将所述物理页号写入所述固态硬盘中之后,还包括:
将所述逻辑区块地址与所述物理页号在所述2级映射表与1级映射表中进行更新。
结合第三方面至第三方面第三种可能的实现方式,在第四种可能的实现方式中,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还包括:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,对所述三级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。
第四方面提供一种基于大容量固态存储的地址映射装置,其特征在于,包括:
获取模块,获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;
处理模块,用于根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理模块,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理模块,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
所述处理模块,还用于在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间;
存储模块,包括所述固态硬盘模块与所述主存模块,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
结合第四方面,在第四方面第一种可能的实现方式中,所述处理模块,在所述还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,还用于:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
结合第四方面第一种可能的实现方式,在第四方面第二种可能的实现方式中,所述处理模块,在所述还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
结合第四方面第二种可能的实现方式,在第三种可能的实现方式中,所述处理模块,在所述还用于将所述物理页号写入所述固态硬盘中之后,还用于:
将所述逻辑区块地址与所述物理页号在所述2级映射表与1级映射表中进行更新。
结合第四方面第三种可能的实现方式,在第四种可能的实现方式中,所述处理模块,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还用于:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,对所述三级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。
第五方面提供一种基于大容量固态存储的地址映射装置,其特征在于,包括:
获取模块,获取用于读固态硬盘中数据的读命令,所述读命令携带待写入数据的逻辑区块地址;
处理模块,用于在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理模块,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理模块,还用于从所述物理页上读取所述数据;
存储模块,包括所述固态硬盘模块与所述主存模块,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
第六方面提供一种基于大容量固态存储的地址映射装置,其特征在于,包括:获取模块,获取用于读或写固态硬盘中数据的命令,所述命令包括读命令或写命令;
处理模块,用于判断所述命令是读命令或写命令;
所述处理模块,还用于如果所述命令是读命令,所述读命令携带逻辑区块地址,在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理模块,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理模块,还用于从所述物理页上读取所述数据;
所述处理模块,还用于如果所述命令是写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址,根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理模块,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理模块,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
所述处理模块,还用于在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间;
存储模块,包括所述固态硬盘模块与所述主存模块,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
结合第六方面,在第六方面第一种可能的实现方式中,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,其特征在于,还包括:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
结合第六方面或第六方面第一种可能的实现方式,在第二种可能的实现方式中,所述处理模块,在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
结合第六方面第二种可能的实现方式,在第三种可能的实现方式中,所述处理模块,在所述将所述物理页号写入所述固态硬盘中之后,还包括:
将所述逻辑区块地址与所述物理页号在所述2级映射表与1级映射表中进行更新。
结合第六方面至第六方面第三种可能的实现方式,在第四种可能的实现方式中,所述处理模块,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还包括:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,对所述三级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。
第七方面提供一种基于大容量固态存储的地址映射装置,其特征在于,包括:
接收器,获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;
处理器,用于根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理器,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理器,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
所述处理器,还用于在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间;
存储器,包括所述固态硬盘与所述主存,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
结合第七方面,在第七方面第一种可能的实现方式中,所述处理器,在所述还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,还用于:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
结合第七方面第一种可能的实现方式,在第七方面第二种可能的实现方式中,所述处理器,在所述还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
结合第七方面第二种可能的实现方式,在第三种可能的实现方式中,所述处理器,在所述还用于将所述物理页号写入所述固态硬盘中之后,还用于:
将所述逻辑区块地址与所述物理页号在所述2级映射表与1级映射表中进行更新。
结合第七方面第三种可能的实现方式,在第四种可能的实现方式中,所述处理器,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还用于:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,对所述三级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。
第八方面提供一种基于大容量固态存储的地址映射装置,其特征在于,包括:
接收器,获取用于读固态硬盘中数据的读命令,所述读命令携带待写入数据的逻辑区块地址;
处理器,用于在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理器,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理器,还用于从所述物理页上读取所述数据;
存储器,包括所述固态硬盘与所述主存,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
第九方面提供一种基于大容量固态存储的地址映射装置,其特征在于,包括:
接收器,获取用于读或写固态硬盘中数据的命令,所述命令包括读命令或写命令;
处理器,用于判断所述命令是读命令或写命令;
所述处理器,还用于如果所述命令是读命令,所述读命令携带逻辑区块地址,在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理器,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理器,还用于从所述物理页上读取所述数据;
所述处理器,还用于如果所述命令是写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址,根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理器,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理器,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
所述处理器,还用于在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间;
存储器,包括所述固态硬盘与所述主存,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
结合第九方面,在第九方面第一种可能的实现方式中,所述处理器,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,其特征在于,还包括:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
结合第九方面或第九方面第一种可能的实现方式,在第二种可能的实现方式中,所述处理器,在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
结合第九方面第二种可能的实现方式,在第三种可能的实现方式中,所述处理器,在所述将所述物理页号写入所述固态硬盘中之后,还包括:
将所述逻辑区块地址与所述物理页号在所述2级映射表与1级映射表中进行更新。
结合第九方面至第九方面第三种可能的实现方式中的任一可能的实现方式,在第四种可能的实现方式中,所述处理器,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还包括:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,对所述三级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。
本发明通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或待写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存。因为本方案无需直接从固态硬盘的3级映射表中遍历查询所述逻辑区块地址所对应的物理页号,且在主存仅仅存有一部分经常被访问的热数据对应的3级映射表,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于大容量固态存储的地址映射方法的流程图;
图2为本发明实施例提供的另一种基于大容量固态存储的地址映射方法的流程图;
图3为本发明实施例提供的另一种基于大容量固态存储的地址映射方法的流程图;
图4为本发明实施例提供的另一种基于大容量固态存储的地址映射方法的流程图;
图5为本发明实施例提供的一种基于大容量固态存储的地址映射的装置的结构图;
图6为本发明实施例提供的另一种基于大容量固态存储的地址映射的装置的结构图;
图7为本发明实施例提供的另一种基于大容量固态存储的地址映射的装置的结构图;
图8为本发明实施例提供的另一种基于大容量固态存储的地址映射的装置的结构图;
图9为本发明实施例提供的一种基于大容量固态存储的地址映射表;
图10为本发明实施例提供的另一种基于大容量固态存储的地址映射表;
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供的一种基于大容量固态存储的地址映射方法,其特征在于,包括:
步骤S101,获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;
步骤S102,根据所述全局2级映射表,查询所述逻辑区块地址所对应的主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
步骤S103,如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
步骤S104,控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
步骤S105,在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间。
有益效果:通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或代写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
如图2所示,本发明实施例提供的另一种基于大容量固态存储的地址映射方法,其特征在于,包括:
步骤S201,获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;
步骤S202,根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
步骤S203,如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
步骤S204,控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
步骤S205,在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间。
进一步地,步骤S206,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,其特征在于,还包括:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
进一步地,步骤S207,在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
进一步地,步骤S208,在所述将所述物理页号写入所述固态硬盘中之后,还包括:
将所述逻辑区块地址与所述物理页号在所述2级映射表与1级映射表中进行更新。
进一步地,步骤S209,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还包括:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,对所述三级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。
有益效果:通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或代写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
如图3所示,本发明实施例提供的另一种基于大容量固态存储的地址映射方法,其特征在于,包括:
步骤S301,获取用于读固态硬盘中数据的读命令,所述读命令携带待写入数据的逻辑区块地址;
步骤S302,在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
步骤S303,如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
步骤S304,从所述物理页上读取所述数据。
有益效果:通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或代写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
如图4所示,本发明实施例提供的另一种基于大容量固态存储的地址映射方法,其特征在于,包括:
步骤S401,获取用于读或写固态硬盘中数据的命令,所述命令包括读命令或写命令;
步骤S402,判断所述命令是读命令或写命令;
步骤S403,如果所述命令是读命令,所述读命令携带逻辑区块地址,在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
步骤S404,如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
步骤S405,从所述物理页上读取所述数据;
步骤S406,如果所述命令是写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址,根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
步骤S407,如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
步骤S408,控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
步骤S409,在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间。
有益效果:通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或代写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
如图5所示,本发明实施例提供的另一种基于大容量固态存储的地址映射装置,其特征在于,包括:
获取模块501,获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;
处理模块502,用于根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理模块502,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理模块502,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
所述处理模块502,还用于在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间;
存储模块503,包括所述固态硬盘505模块与所述主存模块504,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
所述获取模块501,与所述处理模块502,与所述存储模块503都通过总线506连接。
进一步地,所述处理模块502,在所述还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,还用于:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
进一步地,所述处理模块502,在所述还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
进一步地,所述处理模块502,在所述还用于将所述物理页号写入所述固态硬盘中之后,还用于:
将所述逻辑区块地址与所述物理页号在所述2级映射表与1级映射表中进行更新。
进一步地,所述处理模块502,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还用于:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,对所述三级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号;
存储模块503,包括所述固态硬盘505模块与所述主存模块504,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
所述获取模块501,与所述处理模块502,与所述存储模块503都通过总线506连接。
有益效果:通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或代写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
如图5所示,本发明实施例提供的另一种基于大容量固态存储的地址映射装置,其特征在于,包括:
获取模块501,获取用于读固态硬盘中数据的读命令,所述读命令携带待写入数据的逻辑区块地址;
处理模块502,用于在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理模块502,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理模块502,还用于从所述物理页上读取所述数据;
存储模块503,包括所述固态硬盘505模块与所述主存模块504,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
获取模块501,与所述处理模块502,与所述存储模块503都通过总线506连接。
有益效果:通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或代写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
如图5所示,本发明实施例提供的另一种基于大容量固态存储的地址映射装置,其特征在于,包括:
获取模块501,获取用于读或写固态硬盘中数据的命令,所述命令包括读命令或写命令;
处理模块502,用于判断所述命令是读命令或写命令;
所述处理模块502,还用于如果所述命令是读命令,所述读命令携带逻辑区块地址,在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理模块502,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理模块502,还用于从所述物理页上读取所述数据;
所述处理模块502,还用于如果所述命令是写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址,根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理模块502,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理模块502,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中;
所述处理模块502,还用于在所述主存中所述逻辑区块地址所对应的3级映射表中,将待写入数据写入所述物理页号所对应的存储空间;
存储模块503,包括所述固态硬盘505模块与所述主存模块504,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
获取模块501,与所述处理模块502,与所述存储模块503都通过总线506连接。
有益效果:通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或代写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
如图6所示,本发明实施例提供的一种基于大容量固态存储的地址映射装置,其特征在于,包括:
接收器601,获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;
处理器602,用于根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理器602,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理器602,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
所述处理器602,还用于在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间;
存储器603,包括所述固态硬盘605与所述主存604,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表;
所述接收器601,与所述处理器602,与存储器603都通过总线606连接。
有益效果:通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或代写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。进一步地,所述处理器602,在所述还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,还用于:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
进一步地,所述处理器602,在所述还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
进一步地,所述处理器602,在所述还用于将所述物理页号写入所述固态硬盘中之后,还用于:
将所述逻辑区块地址与所述物理页号在所述2级映射表与1级映射表中进行更新。
进一步地,所述处理器602,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还用于:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中之后,对所述三级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。如图6所示,本发明实施例提供的另一种基于大容量固态存储的地址映射装置,其特征在于,包括:
接收器601,获取用于读固态硬盘中数据的读命令,所述读命令携带待写入数据的逻辑区块地址;
处理器602,用于在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理器602,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理器602,还用于从所述物理页上读取所述数据;
存储器603,包括所述固态硬盘605与所述主存604,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表;
所述接收器601,与所述处理器602,与存储器603都通过总线606连接。
有益效果:通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或代写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
如图6所示,本发明实施例提供的另一种基于大容量固态存储的地址映射装置,其特征在于,包括:
接收器601,获取用于读或写固态硬盘中数据的命令,所述命令包括读命令或写命令;
处理器602,用于判断所述命令是读命令或写命令;
所述处理器602,还用于如果所述命令是读命令,所述读命令携带逻辑区块地址,在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理器602,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理器602,还用于从所述物理页上读取所述数据;
所述处理器602,还用于如果所述命令是写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址,根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理器602,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理器602,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的三级映射表中;
所述处理器602,还用于在所述主存中所述逻辑区块地址所对应的三级映射表中,将待写入数据写入所述物理页号所对应的存储空间;
存储器603,包括所述固态硬盘605与所述主存604,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表;
所述接收器601,与所述处理器602,与存储器603都通过总线606连接。
有益效果:通过根据将要被读或写入的数据的逻辑区块地址,在2级映射表中查找所述逻辑区块地址对应的3级映射表,从所述3级映射表中读出所述数据或者在为所述逻辑区块地址分配的物理页号中写入所述数据的多级顺序映射方案,由于在2级映射表中仅存储3级映射表的索引,而且只有在主存中的3级映射表没有存储所述待读或代写入数据时,才将固态硬盘中的所述逻辑区块地址所对应的3级映射表写入主存,从而解决了在大容量存储的情形下页级映射由于映射粒度小需要消耗大量主存存储空间的问题,也避免了块级映射进行块操作时涉及数据较多导致的性能不稳定问题,从而达到了简化映射关系以减少主存存储空间的消耗并且维持性能稳定的效果。
如图7所示,为本发明实施例提供的另一种基于大容量固态存储的地址映射的装置的结构图;
所述装置用于执行本申请文件中前述各种基于大容量固态存储的地址映射方法。所述装置包括:服务器701,固态硬盘702,总线707,所述服务器701包括处理器702和主存703,所述固态硬盘包括固态硬盘控制权705和存储芯片706,所述固态硬盘704、处理器702与主存703都与所述总线707相连。
如图8所示,为本发明实施例提供的另一种基于大容量固态存储的地址映射的装置的结构图;
所述装置用于执行本申请文件中前述各种基于大容量固态存储的地址映射方法。所述装置包括:服务器801,固态硬盘802,与总线807,与接收器808,所述服务器801包括处理器802和主存803,所述固态硬盘包括固态硬盘控制权805和存储芯片806,所述固态硬盘804、处理器802与主存803、与接收器808都与所述总线807相连,所述接收器808与所述固态硬盘804相连。
图9所示,为本发明实施例提供的一种基于大容量固态存储的地址映射表;
通过主存中的1级映射表索引主存中的2级映射表,根据逻辑区块地址(LBA),再通过主存中的2级映射表索引主存中的3级映射表,如果在主存中的2级映射表中显示为如图所示的TRN,N为正整数,则直接继续所述主存中的3级映射表,找到物理页号(PPN),无需继续索引固态硬盘中的3级映射表;如果在主存中的2级映射表中显示为如图所示的null,则说明主存中不存在需要查找的物理页号,需要继续索引固态硬盘中的3级映射表以查找逻辑区块地址所对应的PPN。
如图10所示,为本发明实施例提供的另一种基于大容量固态存储的地址映射表;
当上层操作***下发一个逻辑区块地址(LBA)=3的读操作,在主存2级映射表中命中(第一个条目LBA=0),得到其主存3级映射表表所在地址100,所述主存3级映射表的第四个条目中所对应内容1,即为所要查找的数据的PPN地址,反馈上层操作***,根据该PPN可获取所读数据;当主存2级映射表中未命中,则根据主存映射表中3级表的地址信息,找到固态硬盘中所述逻辑区块地址对应的3级映射表,存储到主存中,同时向上层操作***反馈PPN。
当上层操作***下发一个逻辑区块地址LBA=10的写请求的时候,首先查询主存中2级映射表,因为LBA=10(8<10<12),所以直接索引到主存中2级表的第一个表的第三个条目,主存地址命中,为热数据,即主存地址为200的地址所在的主存3级表中第三个条目,其中PPN=11为之前的LBA-PPN关系,当前,为新写数据分配新的物理地址13,第三个条目中PPN=11改写为13,同时存储到SSD的日志表中,追加映射关系10-13(LBA-PPN),将新得到的PPN反馈给上层操作***;如果查询主存中2级映射表未命中,如LBA=13的写请求,则根据主存2级表中的固态硬盘地址找到固态硬盘中3级映射表的位置,LBA=13所对应的PPN为2,将该表中条目内容写到主存3级表中,为该主存3级表分配地址空间,并将所述地址空间的信息写到主存2级映射表相应条目中,对所述LBA=13所在条目,为新写数据分配新的PPN地址(PPN=J),将LBA=13所对应的PPN的值null改写为J,同时存储到固态硬盘的日志表中,追加映射关系13-J(LBA-PPN),将新得到的PPN反馈给上层操作***。
本发明可以通过多种实施方式来实现,本发明实施例可以由特定软硬件组件进行执行,那些本领域技术人员认为各种不同的软件或硬件的组合也可以被应用来执行本发明实施例,上述被硬件执行的特定操作也可以被软件来实施。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (21)
1.一种基于大容量固态存储的地址映射方法,其特征在于,包括:
获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;
根据全局2级映射表,查询所述逻辑区块地址所对应的主存中的3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述主存中3级映射表和固态硬盘中的3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中;
在所述主存中所述逻辑区块地址所对应的3级映射表中,将所述待写入数据写入所述物理页号所对应的存储空间。
2.根据权利要求1所述的方法,其特征在于,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,其特征在于,还包括:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
3.根据权利要求1或2所述的方法,其特征在于,在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
4.根据权利要求3所述的方法,其特征在于,在所述将所述物理页号写入所述固态硬盘中之后,还包括:
将所述逻辑区块地址与所述物理页号在2级映射表与1级映射表中进行更新。
5.如权利要求3所述的方法,其特征在于,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还包括:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中之后,对所述3级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。
6.一种基于大容量固态存储的地址映射方法,其特征在于,包括:
获取用于读固态硬盘中数据的读命令,所述读命令携带待写入数据的逻辑区块地址;
在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
从所述物理页上读取所述数据。
7.一种基于大容量固态存储的地址映射方法,其特征在于,包括:
获取用于读或写固态硬盘中数据的命令,所述命令包括读命令或写命令;
判断所述命令是读命令或写命令;
如果所述命令是读命令,所述读命令携带逻辑区块地址,在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
从所述物理页上读取所述数据;
如果所述命令是写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址,根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述主存中3级映射表和固态硬盘中的3级映射表3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中;
在所述主存中所述逻辑区块地址所对应的3级映射表中,将所述待写入数据写入所述物理页号所对应的存储空间。
8.一种基于大容量固态存储的地址映射装置,其特征在于,包括:
获取模块,获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;
处理模块,用于根据全局2级映射表,查询所述逻辑区块地址所对应的主存中的3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述主存中3级映射表和固态硬盘中的3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理模块,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理模块,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中;
所述处理模块,还用于在所述主存中所述逻辑区块地址所对应的3级映射表中,将所述待写入数据写入所述物理页号所对应的存储空间;
存储模块,包括所述固态硬盘与所述主存,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
9.根据权利要求8所述的装置,其特征在于,所述处理模块,在所述还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,还用于:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
10.根据权利要求8或9所述的装置,其特征在于,所述处理模块,在所述还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
11.根据权利要求10所述的装置,其特征在于,所述处理模块,在所述还用于将所述物理页号写入所述固态硬盘中之后,还用于:
将所述逻辑区块地址与所述物理页号在2级映射表与1级映射表中进行更新。
12.如权利要求10所述的装置,其特征在于,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还用于:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中之后,对所述3级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。
13.一种基于大容量固态存储的地址映射装置,其特征在于,包括:
获取模块,获取用于读固态硬盘中数据的读命令,所述读命令携带待写入数据的逻辑区块地址;
处理模块,用于在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理模块,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理模块,还用于从所述物理页上读取所述数据;
存储模块,包括所述固态硬盘与所述主存,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
14.一种基于大容量固态存储的地址映射装置,其特征在于,包括:
获取模块,获取用于读或写固态硬盘中数据的命令,所述命令包括读命令或写命令;
处理模块,用于判断所述命令是读命令或写命令;
所述处理模块,还用于如果所述命令是读命令,所述读命令携带逻辑区块地址,在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理模块,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理模块,还用于从所述物理页上读取所述数据;
所述处理模块,还用于如果所述命令是写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址,根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述主存中3级映射表和固态硬盘中3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理模块,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理模块,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中;
所述处理模块,还用于在所述主存中所述逻辑区块地址所对应的3级映射表中,将所述待写入数据写入所述物理页号所对应的存储空间;
存储模块,包括所述固态硬盘与所述主存,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
15.一种基于大容量固态存储的地址映射装置,其特征在于,包括:
接收器,获取用于将数据写入固态硬盘的写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址;
处理器,用于根据全局2级映射表,查询所述逻辑区块地址所对应的主存中的3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述主存中3级映射表和固态硬盘中的3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理器,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理器,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中;
所述处理器,还用于在所述主存中所述逻辑区块地址所对应的3级映射表中,将所述待写入数据写入所述物理页号所对应的存储空间;
存储器,包括所述固态硬盘与所述主存,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
16.根据权利要求15所述的装置,其特征在于,所述处理器,在所述还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之前,还用于:
判断所述主存中存储所述3级映射表的空间是否到达预设阈值,在达到所述预设阈值的情况下,则根据预设缓存规则将冷数据从所述主存移出并写入到所述固态硬盘中,以为将所述固态硬盘中的逻辑区块地址所对应的3级映射表写入所述主存提供存储空间。
17.根据权利要求15或16所述的装置,其特征在于,所述处理器,在所述还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中之后,还包括:
将所述物理页号写入所述固态硬盘中;或,将所述逻辑区块地址与所述物理页号写入主存中后,将所述物理页号写入所述固态硬盘中。
18.根据权利要求17所述的装置,其特征在于,所述处理器,在所述还用于将所述物理页号写入所述固态硬盘中之后,还用于:
将所述逻辑区块地址与所述物理页号在2级映射表与1级映射表中进行更新。
19.如权利要求17所述的装置,其特征在于,所述处理器,在所述如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中之后,还用于:
将所述3级映射表中的所述逻辑区块地址所对应的计数器加一;
在所述控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中之后,对所述3级映射表中的所述逻辑区块地址所对应的计数器减一,以确认所述待写入数据的所述逻辑区块地址获得了对应的物理页号。
20.一种基于大容量固态存储的地址映射装置,其特征在于,包括:
接收器,获取用于读固态硬盘中数据的读命令,所述读命令携带待写入数据的逻辑区块地址;
处理器,用于在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理器,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理器,还用于从所述物理页上读取所述数据;
存储器,包括所述固态硬盘与所述主存,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
21.一种基于大容量固态存储的地址映射装置,其特征在于,包括:
接收器,获取用于读或写固态硬盘中数据的命令,所述命令包括读命令或写命令;
处理器,用于判断所述命令是读命令或写命令;
所述处理器,还用于如果所述命令是读命令,所述读命令携带逻辑区块地址,在主存中通过全局2级映射表,查询所述主存中3级映射表中存储的所述逻辑区块地址所对应的物理页号,所述全局2级映射表用于索引所述主存中的3级映射表和固态硬盘中的3级映射表;
所述处理器,还用于如果所述主存中的所述3级映射表中未存储所述逻辑区块地址所对应的物理页号,则根据所述全局2级映射表索引所述固态硬盘中的所述3级映射表,将所述固态硬盘中的所述3级映射表中存储的所述逻辑区块地址及与所述逻辑区块地址对应的物理页号读出;
所述处理器,还用于从所述物理页上读取所述数据;
所述处理器,还用于如果所述命令是写命令,所述写命令携带待写入数据及所述待写入数据的逻辑区块地址,根据所述全局2级映射表,查询所述逻辑区块地址所对应的所述主存中的所述3级映射表,所述全局2级映射表用于索引所述主存中3级映射表和固态硬盘中的3级映射表,所述主存中3级映射表和固态硬盘中的3级映射表用于存储所述逻辑区块地址及与所述逻辑区块地址对应的物理页号的映射关系;
所述处理器,还用于如果所述主存中不存在所述逻辑区块地址所对应的3级映射表,则根据所述全局2级映射表索引所述固态硬盘中的3级映射表中,将所述逻辑区块地址所对应的所述固态硬盘中的3级映射表读出并存储到所述主存中;
所述处理器,还用于控制固态硬盘控制器为所述逻辑区块地址分配物理页号,并将所述物理页号存储在所述主存中所述逻辑区块地址所对应的3级映射表中;
所述处理器,还用于在所述主存中所述逻辑区块地址所对应的3级映射表中,将所述待写入数据写入所述物理页号所对应的存储空间;
存储器,包括所述固态硬盘与所述主存,用于存储所述全局2级映射表、及存储所述主存中3级映射表和固态硬盘中的3级映射表。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510641672.5A CN105205009B (zh) | 2015-09-30 | 2015-09-30 | 一种基于大容量固态存储的地址映射方法及装置 |
PCT/CN2016/100631 WO2017054737A1 (zh) | 2015-09-30 | 2016-09-28 | 一种基于大容量固态存储的地址映射方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510641672.5A CN105205009B (zh) | 2015-09-30 | 2015-09-30 | 一种基于大容量固态存储的地址映射方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105205009A CN105205009A (zh) | 2015-12-30 |
CN105205009B true CN105205009B (zh) | 2018-05-11 |
Family
ID=54952703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510641672.5A Active CN105205009B (zh) | 2015-09-30 | 2015-09-30 | 一种基于大容量固态存储的地址映射方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105205009B (zh) |
WO (1) | WO2017054737A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105205009B (zh) * | 2015-09-30 | 2018-05-11 | 华为技术有限公司 | 一种基于大容量固态存储的地址映射方法及装置 |
CN106021159B (zh) * | 2016-05-12 | 2018-03-20 | 北京匡恩网络科技有限责任公司 | 大容量固态硬盘逻辑地址到物理地址映射方法 |
CN107423232B (zh) * | 2016-05-24 | 2020-10-16 | 北京忆芯科技有限公司 | Ftl快速访问方法与装置 |
CN107918613B (zh) * | 2016-10-08 | 2022-01-21 | 上海宝存信息科技有限公司 | 因应服务质量的固态硬盘访问方法以及使用该方法的装置 |
CN108021512A (zh) * | 2017-11-22 | 2018-05-11 | 深圳忆联信息***有限公司 | 一种固态硬盘映射管理方法及固态硬盘 |
CN108647157B (zh) * | 2018-03-14 | 2021-10-01 | 深圳忆联信息***有限公司 | 一种基于相变存储器的映射管理方法及固态硬盘 |
CN108491335B (zh) * | 2018-03-30 | 2020-12-29 | 深圳忆联信息***有限公司 | 处理映射表项的方法、装置、设备及介质 |
CN108763100B (zh) * | 2018-05-28 | 2020-10-09 | 深圳忆联信息***有限公司 | 一种固态存储设备快速trim方法及其*** |
CN109491604B (zh) * | 2018-11-01 | 2021-07-02 | 郑州云海信息技术有限公司 | 一种硬盘盘符重复问题的处理方法、装置及*** |
CN109446116A (zh) * | 2018-11-15 | 2019-03-08 | 苏州韦科韬信息技术有限公司 | 一种大容量固态硬盘映射方法 |
TWI715162B (zh) * | 2019-08-26 | 2021-01-01 | 點序科技股份有限公司 | 記憶體驗證方法及記憶體驗證系統 |
CN111338982B (zh) * | 2020-02-11 | 2021-01-05 | 上海威固信息技术股份有限公司 | 一种大容量固态盘内地址映射方法 |
CN111459919B (zh) * | 2020-04-26 | 2024-06-11 | 深圳佰维存储科技股份有限公司 | 数据查询方法、加载组件、搜索组件和存储介质 |
CN111639037B (zh) * | 2020-05-12 | 2023-06-09 | 深圳大普微电子科技有限公司 | 一种缓存的动态分配方法、装置及DRAM-Less固态硬盘 |
CN112486861B (zh) * | 2020-11-30 | 2024-05-14 | 深圳忆联信息***有限公司 | 固态硬盘映射表数据查询方法、装置、计算机设备及存储介质 |
CN112559386B (zh) * | 2020-12-22 | 2024-06-18 | 深圳忆联信息***有限公司 | 提升ssd性能的方法、装置、计算机设备及存储介质 |
CN112764685B (zh) * | 2021-01-26 | 2022-07-15 | 华中科技大学 | 一种消除固态盘中预写式日志重复数据写的方法及设备 |
CN113419975B (zh) * | 2021-06-11 | 2023-03-17 | 联芸科技(杭州)股份有限公司 | 存储器的控制***及地址映射方法和地址映射装置 |
CN113590506A (zh) * | 2021-08-02 | 2021-11-02 | 联芸科技(杭州)有限公司 | Hmb的表项管理方法及固态硬盘的控制*** |
CN116737064B (zh) * | 2023-03-29 | 2024-04-05 | 深圳市领德创科技有限公司 | 一种固态硬盘的数据管理方法和*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645043A (zh) * | 2009-09-08 | 2010-02-10 | 成都市华为赛门铁克科技有限公司 | 写数据的方法、读数据的方法及存储设备 |
CN101751343A (zh) * | 2009-12-28 | 2010-06-23 | 成都市华为赛门铁克科技有限公司 | 固态硬盘数据写入方法及装置 |
CN101819509A (zh) * | 2010-04-19 | 2010-09-01 | 清华大学深圳研究生院 | 一种固态硬盘读写方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7660941B2 (en) * | 2003-09-10 | 2010-02-09 | Super Talent Electronics, Inc. | Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories |
KR100885181B1 (ko) * | 2007-02-06 | 2009-02-23 | 삼성전자주식회사 | 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법 |
US8321597B2 (en) * | 2007-02-22 | 2012-11-27 | Super Talent Electronics, Inc. | Flash-memory device with RAID-type controller |
CN103440206B (zh) * | 2013-07-25 | 2016-06-01 | 记忆科技(深圳)有限公司 | 一种固态硬盘及其混合映射方法 |
CN105205009B (zh) * | 2015-09-30 | 2018-05-11 | 华为技术有限公司 | 一种基于大容量固态存储的地址映射方法及装置 |
-
2015
- 2015-09-30 CN CN201510641672.5A patent/CN105205009B/zh active Active
-
2016
- 2016-09-28 WO PCT/CN2016/100631 patent/WO2017054737A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645043A (zh) * | 2009-09-08 | 2010-02-10 | 成都市华为赛门铁克科技有限公司 | 写数据的方法、读数据的方法及存储设备 |
CN101751343A (zh) * | 2009-12-28 | 2010-06-23 | 成都市华为赛门铁克科技有限公司 | 固态硬盘数据写入方法及装置 |
CN101819509A (zh) * | 2010-04-19 | 2010-09-01 | 清华大学深圳研究生院 | 一种固态硬盘读写方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017054737A1 (zh) | 2017-04-06 |
CN105205009A (zh) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105205009B (zh) | 一种基于大容量固态存储的地址映射方法及装置 | |
US10761780B2 (en) | Memory system | |
CN102981963B (zh) | 一种固态盘的闪存转换层的实现方法 | |
CN108804350A (zh) | 一种内存访问方法及计算机*** | |
CN105930282B (zh) | 一种用于nand flash的数据缓存方法 | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
US10740251B2 (en) | Hybrid drive translation layer | |
US20140089564A1 (en) | Method of data collection in a non-volatile memory | |
CN107832013B (zh) | 一种管理固态硬盘映射表的方法 | |
US20140082323A1 (en) | Address mapping | |
CN106326133A (zh) | 存储***、存储管理装置、存储器、混合存储装置及存储管理方法 | |
US20140331024A1 (en) | Method of Dynamically Adjusting Mapping Manner in Non-Volatile Memory and Non-Volatile Storage Device Using the Same | |
KR20110117099A (ko) | 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법 | |
KR20170097609A (ko) | 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법 | |
CN104166634A (zh) | 一种固态盘***中的映射表缓存管理方法 | |
EP2715510A1 (en) | Method for storage devices to achieve low write amplification with low over provision | |
CN106326134A (zh) | Ftl地址映射的方法及装置 | |
CN114546296B (zh) | 一种基于zns固态硬盘的全闪存***和地址映射方法 | |
CN105095113B (zh) | 一种缓存管理方法和*** | |
KR101061483B1 (ko) | 메모리 회로 및 메모리 회로의 엑세스 방법, 메모리 관리 시스템 및 메모리 관리방법 | |
KR20160105624A (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
US11630779B2 (en) | Hybrid storage device with three-level memory mapping | |
CN113254358A (zh) | 用于地址表高速缓存管理的方法和*** | |
US11748012B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN104424117A (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 |