CN114676072A - 数据处理方法以及装置 - Google Patents
数据处理方法以及装置 Download PDFInfo
- Publication number
- CN114676072A CN114676072A CN202210573048.6A CN202210573048A CN114676072A CN 114676072 A CN114676072 A CN 114676072A CN 202210573048 A CN202210573048 A CN 202210573048A CN 114676072 A CN114676072 A CN 114676072A
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- memory page
- information
- address
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供数据处理方法以及装置,其中所述数据处理方法包括:接收针对待访问存储空间的物理访问地址的查询请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址,确定包含所述逻辑访问地址的内存页,并在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,在第一类型内存模块获取所述内存页的页信息,将所述页信息写入第二类型内存模块中的所述内存页,其中,所述页信息中包含所述逻辑访问地址与物理访问地址间的映射关系,将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种数据处理方法。
背景技术
随着存储技术的发展,固态硬盘也在不断升级,传统的固态硬盘SSD(SolidStateDrive),也逐步升级成ZNS SSD,其中ZNS(Zoned Namespace,分区命名空间)为基于zone大小的管理空间的一种NVME协议的新特性,形成的ZNS SSD即为分区命名空间固态硬盘。
分区命名空间固态硬盘作为一种新型的NVME(NVM Express)SSD,凭借高效的协议交互及良好的性能表现己在各大互联网厂商展开适配及应用。
但目前随着SSD的容量逐渐增大,大容量SSD对FTL的设计带来了具大挑战,即如何克服目前SSD所面临的写操作放大问题,从而使SSD能够提供更高以及更稳定的随机写性能,成为亟需解决的问题。
发明内容
有鉴于此,本说明书实施例提供了一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种数据处理方法,包括:
接收针对待访问存储空间的物理访问地址的查询请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址;
确定包含所述逻辑访问地址的内存页,并在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,在第一类型内存模块获取所述内存页的页信息;
将所述页信息写入第二类型内存模块中的所述内存页,其中,所述页信息中包含所述逻辑访问地址与物理访问地址间的映射关系;
将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
可选地,所述确定包含所述逻辑访问地址的内存页之后,还包括:
将所述内存页的页标识作为索引查询内存页表中是否包含所述内存页的地址信息,其中,所述地址信息为所述内存页在第二类型内存模块中的存储地址对应的地址信息;
若否,则确定所述内存页表中不包含所述内存页的地址信息。
可选地,所述将所述地址信息的写入结果返回之后,还包括:
接收针对待访问存储空间的物理访问地址的获取请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址;
确定所述逻辑访问地址的内存页,并根据所述内存页的页标识查询内存页表中所述内存页的地址信息;
根据所述地址信息在所述第二类型内存模块中查询所述内存页的页信息,并根据所述页信息中包含的所述逻辑访问地址与物理访问地址间的映射关系,确定所述逻辑访问地址对应的物理访问地址并返回。
可选地,所述确定包含所述逻辑访问地址的内存页,包括:
根据内存页的大小,以及所述查询请求中包含的逻辑访问地址的地址范围,确定包含所述逻辑访问地址的内存页。
可选地,所述根据内存页的大小,以及所述查询请求中包含的逻辑访问地址的地址范围,确定包含所述逻辑访问地址的内存页,包括:
确定所述查询请求中包含的逻辑访问地址的地址范围;
确定所述地址范围与内存页的大小的比值,根据比值结果确定包含所述逻辑访问地址的内存页。
可选地,所述将所述页信息写入第二类型内存模块中的所述内存页之后,还包括:
根据所述内存页的页信息写入结果,对所述第二类型内存模块中存储的内存页数据链表进行更新。
可选地,所述根据所述内存页的页信息写入结果,对所述第二类型内存模块中存储的内存页数据链表进行更新,包括:
确定所述第二类型内存模块中存储的至少两个内存页的访问频率;
根据所述访问频率对所述至少两个内存页的页标识进行排序,并根据排序结果对所述第二类型内存模块中存储的内存页数据链表进行更新。
可选地,所述在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,还包括:
判断所述第二类型内存模块是否存在空闲存储空间;
若是,则执行所述在第一类型内存模块获取所述内存页的页信息的步骤;
若否,则查询所述第二类型内存模块中存储的至少两个内存页的使用状态;
获取所述第二类型内存模块中存储的内存页数据链表,并根据所述使用状态以及所述内存页数据链表中至少两个内存页的内存页标识的顺序关系,确定待删除的目标内存页;
删除所述第二类型内存模块中存储的所述目标内存页,并删除所述内存页数据链表中所述目标内存页的内存页标识。
可选地,所述删除所述第二类型内存模块中存储的所述目标内存页之前,还包括:
获取所述目标内存页的页信息,并确定所述页信息中包含的所述目标内存页的状态信息;
在根据所述状态信息确定所述页信息发生变化的情况下,将所述页信息存储至所述第一类型内存模块。
可选地,所述删除所述内存页数据链表中所述目标内存页的内存页标识之后,还包括:
确定包含所述逻辑访问地址的内存页,并在所述第二类型内存模块中分配所述内存页对应的存储空间;
在第一类型内存模块获取所述内存页的页信息,将所述页信息写入第二类型内存模块中的所述存储空间;
将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
根据本说明书实施例的第二方面,提供了一种数据处理装置,包括:
接收模块,被配置为接收针对待访问存储空间的物理访问地址的查询请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址;
获取模块,被配置为确定包含所述逻辑访问地址的内存页,并在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,在第一类型内存模块获取所述内存页的页信息;
写入模块,被配置为将所述页信息写入第二类型内存模块中的所述内存页,其中,所述页信息中包含所述逻辑访问地址与物理访问地址间的映射关系;
返回模块,被配置为将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令实现任意一项所述数据处理方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意一项所述数据处理方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据处理方法的步骤。
本说明书一个实施例通过接收针对待访问存储空间的物理访问地址的查询请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址,确定包含所述逻辑访问地址的内存页,并在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,在第一类型内存模块获取所述内存页的页信息,将所述页信息写入第二类型内存模块中的所述内存页,其中,所述页信息中包含所述逻辑访问地址与物理访问地址间的映射关系,将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
本说明书实施例利用第一类型内存模块存储全量的内存页的页信息,并利用第二类型内存模块存储访问频率较高的热数据,从而实现FTL(内存转换层)分层技术,能够在保持内存转换层的最小块管理粒度的前提下,实现内存资源消耗最小化、可配置化,即能够克服目前SSD所面临的写操作放大问题,从而使SSD能够提供更高以及更稳定的随机写性能。
附图说明
图1是本说明书一个实施例提供的一种数据处理方法的流程图;
图2a是本说明书一个实施例提供的第一种数据处理过程的示意图;
图2b是本说明书一个实施例提供的第二种数据处理过程的示意图;
图2c是本说明书一个实施例提供的第三种数据处理过程的示意图;
图2d是本说明书一个实施例提供的第四种数据处理过程的示意图;
图3是本说明书一个实施例提供的一种数据处理方法的处理过程流程图;
图4是本说明书一个实施例提供的一种数据处理装置的结构示意图;
图5是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
SSD:固态硬盘。
NAND SSD:基于闪存介质的固态硬盘。
ZNS SSD:基于ZNS协议接口的NVMe固态硬盘。
MLC/TLC/QLC/PLC:不同类型的闪存介质技术。
DRAM:内存介质。
Cache:缓存技术。
LBA(Logic Block Address):逻辑访问地址,又称为线性地址,通常是逻辑上划分的地址,就是将硬盘中的所有扇区按照特定的顺序、从头至尾线性排列,并对排列结果进行编号。
PBA:物理访问地址,物理硬件上实际的存储位置。
热数据:经常被访问的数据。
冷数据:不经常被访问的数据。
FTL(FlashTransactionLayer):闪存转换层。
Optane:一种超高速内存技术,兼容NVMe存储协议。
当前ZNS SSD内部的FTL实现同样可以用于应用层,作为通用块接口与ZNS SSD之间的数据转换媒介,但其存在以下几点缺陷:
1.资源消耗大:当前FTL设计,通常为一层结构,每个用户LBA地址对应物理盘上的PBA地址,FTL中对会对每个LBA条目维护其相应的元数据条目,例如物理盘上对应的PBA、有效状态等。因此FTL大小取决于SSD的空间大小,即LBA的大小范围。过往的几年,NAND介质密度发展较慢,SSD通常为MLC或TLC,容量大小通常在100-2000GB之间,但到目前为止,NAND介质已发展到144层QLC、PLC,单块SSD大小已演进到16-32TB之间,未来甚至会更大,导致对SSD空间进行管理的FTL大小也随之上升,否则无法满足当前SSD空间的管理。但DRAM密度的增长远小于NAND介质,云计算计算节点的系统中除去云计算系统软件使用的资源后,往往无法提供足够大的DRAM空间来支持高密介质Host端FTL。
2.写操作放大问题:为了解决高密介质FTL对资源消耗的问题,业内通常的做法是增大FTL对数据块的管理粒度,通过增大数据块的管理粒度,可以减少FTL中所管理的条目数量,从而减少FTL对资源的消耗。然而,FTL增大对数据块的管理粒度后,用户读写数据块的粒度与FTL管理数据块的变得不匹配,从而间接导致了写放大问题,导致SSD的性能下降。例如,FTL采用64KB的粒度来管理SSD内部数据块,相比起4KB的粒度,FTL大小减少15倍,资源消耗变为以前的1/16。然而,用户对4KB数据块的写入,会触发读改写(Read-Modify-Write)操作,SSD先读取64KB数据到内存中,改写其中的4KB,最后将改写后的整个64KB写入SSD,更新FTL,该操作中对写操作放大为16倍。写操作放大会导致SSD性能变得更低。
基于此,本说明书实施例提供一种数据处理方法,针对Optane介质与高密介质QLC/PLC ZNS SSD混合存储的架构下设计了分层FTL技术,具体可划分Optane介质部分空间作为全量Host FTL空间,将DRAM作为FTL的缓存Cache来存储FTL的热数据,从而实现面向高密闪存Zoned Namespace的分层FTL技术,能够在保持最小块管理粒度4KB的前提下,实现内存资源消耗最小化、可配置化。有效解决了当前高密度介质QLC,以及未来PLC介质在FTL设计上所面临的挑战,包括FTL资源占用大问题以及大粒度FTL设计导致的写放大问题。
在本说明书中,提供了一种数据处理方法,本说明书同时涉及一种数据处理装置,一种计算设备,一种计算机可读存储介质,以及一种计算机程序,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一个实施例提供的一种数据处理方法的流程图,具体包括以下步骤。
步骤102,接收针对待访问存储空间的物理访问地址的查询请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址。
具体的,待访问存储空间,即可以是分区命名空间固态硬盘(Zoned NamespaceSolid State Disk,ZNS SSD)中的存储分区(Zone);由于分区命名空间固态硬盘中的数据以分区的形式进行存储,具体可将分区命名空间固态硬盘划分为多个存储分区(Zone),将分区信息开放给上层应用,由上层应用结合自身需求将数据进行分区存储,相同生命周期的数据写入相同的存储分区。
本说明书实施例中,由于NAND SSD当前已被广泛应用到云存储系统中,该介质的SSD通常需要按整个擦除块来进行擦除,而擦除块的粒度大小与用户最小操作的块粒度大小一致,意味着用户通用块设备随机写接口与SSD本身的写入特性是相违背的。因此SSD内部通常会维护用户的读写地址(逻辑访问地址)与实际的物理访问地址的映射关系,称为FTL(Flash-Transaction- Layer),用来支持块设备层接口随机写、原地更新等特性。同时,FTL也用于针对SSD内部碎片管理,进行垃圾回收的数据块管理。
目前,业内常见的方案为SSD内部的FTL实现。
基于此,由于越来越多的传统闪存硬件厂商已逐步开始提供ZNS接口的NAND SSD。基于ZNS协议接口的NAND SSD,能够更好地解决基于传统块接口的SSD所面临的写放大问题,从而使SSD能够提供更高以及更稳定的随机写性能。
ZNS SSD的特点是将SSD空间划分成多个Zone,每个Zone支持随机读,但只能够顺序写入以及对整个Zone进行擦除。要充分利用ZNS SSD优势,需要应用层自己维护Flash-Transaction-Layer(FTL)来对SSD空间进行管理。
其中,FTL的主要作用分两部分:一是应用层需要维护设备逻辑访问地址与底层物理访问地址的映射关系,使得能够针对用户所发起的对SSD随机写操作转换成针对Zone的顺序写操作;二是对用户随机写所产生的碎片进行整理垃圾回收,释放更多的可用空间。
然而,随着NAND介质密度增长,大容量SSD对FTL的设计带来了巨大挑战。从MLC到TLC,到目前的QLC以及未来的PLC,基于NAND的SSD空间变得越来越大,意味着FTL需要更多的内存资源,管理更多的元数据才能够满足当前高密介质大容量的特点,否则需要增大数据管理粒度(例如通常FTL使用最小扇区4KB来管理SSD内部空间,而当前QLC NAND SSD内部的FTL使用64KB的粒度来管理SSD内部空间,未来会变得更大),从而来减少资源开销,但该方式会造成一定的写放大,从而降低硬盘的读写性能。
因此,本说明书实施例提供一种面向高密闪存Zoned Namespace的分层FTL技术,具体可将Optane作为硬盘缓存为ZNS提速,即划分Optane介质部分空间作为全量Host FTL空间,将DRAM作为FTL的缓存Cache来存储FTL的热数据,既能够作为媒介实现从通用块设备接口与ZNS接口的转换和内部数据管理,同时能够利用分层的设计,达到节约系统资源,为高密介质提供高效FTL的可行性。
实际应用中,用户在存在数据写需求时,即可向分区命名空间固态硬盘发送数据写请求,分区命名空间固态硬盘在接收到该数据写请求时,可为用户分配逻辑访问地址,并可基于该逻辑访问地址生成物理访问地址的查询请求,以查询对应的物理访问地址,从而实现将用户所发起的对SSD的随机写操作转换成针对Zone的顺序写操作,而该查询请求中即可包含待访问存储空间的逻辑访问地址。
步骤104,确定包含所述逻辑访问地址的内存页,并在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,在第一类型内存模块获取所述内存页的页信息。
具体的,如前所述,本说明书实施例提供一种面向高密闪存Zoned Namespace的分层FTL技术,而分层FTL整体由三部分组成:
1)L2P Page(LogicalToPhysical Page):即内存页,用于记录当前逻辑访问地址(LBA)对应物理访问地址(PBA)所在的内存页(page),每个page维护多个LBA对应的PBA,以及该Page对应的相关状态。全量的Page存储于第一类型内存模块(Optane元数据区域)中。
2)L2P Table(Logical To Physical Table):即内存页表,用于维护各L2P Page的列表,L2P Table由Key-Value(键值对)形式的数组构成,表中每个Key为LBA地址对应的Page编号,Value为L2P Page的指针,指向该L2P Page的地址信息。通过数组快速查找的特点,可以根据Key直接查找到对应的L2P Page,从而解析得到对应的PBA地址。
3)L2P Page Cache:第二类型内存模块(DRAM)中的L2P Page缓存部分,只有经常被访问的L2P Page才会被关联到L2P Table中,否则L2P Table中的该Page条目为空NULL。
本说明书实施例提供的L2P Page结构如表1所示。
表1
成员变量 | 说明 |
Hits | 命中次数统计 |
Updates | Page状态: |
Page_no | Page编号 |
State | clean/dirty |
Page *prev,*next | Page链表指针 |
L1[1] | L2P数组 |
其中,Hits表示L2P Page的命中次数统计结果,也表示L2P Page的访问次数;Updates表示Page状态,如正在使用或非正在使用;Page_no即Page编号,也即内存页的页标识;State即Page的数据变化状态,clean表示未发生变化,dirty表示发生变化;Page *prev,*next即Page链表指针,prev即表示内存页数据链表中该Page的前一Page,next即表示内存页数据链表中该Page的后一Page;L1[1]即L2P数组,由于本说明书实施例中,每个Page按大小包含了高密介质全量LBA范围内的部分(1024个)LBA元数据,且每个Page中的L1[1]为4KB大小的数组,因此,每个Page中的L1[1]管理1024个4byte的LBA元数据,即1024个与LBA存在映射关系的PBA。
进一步的,本说明书实施例可划分Optane介质部分空间作为全量Host FTL空间,将DRAM作为FTL的缓存Cache来存储FTL的热数据,并通过内存页表对各内存页进行管理,但本说明书实施例中,只有经常被访问的L2P Page,其页信息才会被写入第二类型内存模块,写入后,其对应的地址信息才会被关联到L2P Table中,否则L2P Table中的该Page条目为空NULL。因此,在确定包含所述逻辑访问地址的内存页之后,还包括:
将所述内存页的页标识作为索引查询内存页表中是否包含所述内存页的地址信息,其中,所述地址信息为所述内存页在第二类型内存模块中的存储地址对应的地址信息;
若否,则确定所述内存页表中不包含所述内存页的地址信息。
具体的,确定包含该逻辑访问地址的内存页后,可先通过该内存页的页标识索引内存页表(L2P Table)中是否包含该内存页的地址信息,该地址信息即用于在第二类型内存模块中查询该内存页的页信息,而页信息中即可包含逻辑访问地址与物理访问地址的映射关系;在确定内存页表中不包含该内存页的地址信息的情况下,即表征该内存页的页信息未被写入第二类型内存模块。这种情况下,由于第一类型内存模块(Optane)中存储了全量内存页的页信息,因此,可先从第一类型内存模块获取该内存页的页信息,然后将获取的页信息写入第二类型内存模块,对应的第一种数据处理过程的示意图如图2a所示。
图2a中,内存页表中不为空的区域均存储有内存页的地址信息,可基于该地址信息在第二类型内存模块中的对应位置读取该内存页的页信息,以根据页信息中包含的逻辑访问地址与物理访问地址间的映射关系,查询逻辑访问地址对应的物理访问地址,从而实现将用户对SSD随机写操作转换成针对Zone的顺序写操作。
具体实施时,确定包含所述逻辑访问地址的内存页,具体可根据内存页的大小,以及所述查询请求中包含的逻辑访问地址的地址范围,确定包含所述逻辑访问地址的内存页。
进一步的,根据内存页的大小,以及所述查询请求中包含的逻辑访问地址的地址范围,确定包含所述逻辑访问地址的内存页,包括:
确定所述查询请求中包含的逻辑访问地址的地址范围;
确定所述地址范围与内存页的大小的比值,根据比值结果确定包含所述逻辑访问地址的内存页。
具体的,用户在存在数据写需求时,即可向分区命名空间固态硬盘发送数据写请求,分区命名空间固态硬盘在接收到该数据写请求时,可为用户分配逻辑访问地址,并调用ftl_l2p_pin(LBA,n,callback)请求获取该逻辑访问地址(LBA)对应的物理访问地址(PBA),并开启互斥锁,然后计算LBA对应的Page编号Page_no,并通过Page_no在L2P Table中索引到对应Page。
其中,n用于表征LBA的地址范围,或用于表征待处理的LBA的数量,ftl_l2p_pin(LBA,n,callback)即表示需获取第1至第n个LBA对应的PBA。
由于每个内存页按大小包含了高密介质全量LBA范围内的部分(1024个)LBA元数据,且每个Page中的L1[1]为4KB大小的数组,因此,每个Page中的L1[1]管理1024个4byte的LBA元数据,即1024个与LBA存在映射关系的PBA。
基于此,根据内存页的大小,以及查询请求中包含的逻辑访问地址的地址范围,确定包含逻辑访问地址的内存页,即计算LBA对应的Page编号Page_no,以通过Page_no在L2PTable中索引到对应Page,具体即在确定需获取第1至第n个LBA对应的PBA的情况下,可确定n与内存页的大小(1024)的比值,根据比值结果确定包含该逻辑访问地址的内存页。例如,若n等于5,则5除以1024,其比值结果为:商等于0,余数等于5,即表示这5个LBA对应的PBA均存储于内存页1中;若n等于1025,则1025除以1024,其比值结果为:商等于1,余数等于1,即表示这1025个LBA对应的PBA,前1024个均存储于内存页1,第1025个存储于内存页2中。
确定包含逻辑访问地址的内存页后,可通过内存页的页标识Page_no在L2P Table中索引到对应Page,若索引结果为NULL,则触发page_in(page_no)操作,并提交异步读请求至Opatne,读请求完成后,将读取的内存页的业信息写入至第二类型内存模块中,写入的位置对应的地址信息(Page指针)指向该内存页。
具体实施时,为实现仅使用第二类型内存模块中少量且可配置的内存空间大小达到LBA的高效查找,可通过Least Recently Used (LRU)的方式对第二类型内存模块中内存页的页信息进行冷热替换,具体即在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,判断所述第二类型内存模块是否存在空闲存储空间;
若是,则执行所述在第一类型内存模块获取所述内存页的页信息的步骤;
若否,则查询所述第二类型内存模块中存储的至少两个内存页的使用状态;
获取所述第二类型内存模块中存储的内存页数据链表,并根据所述使用状态以及所述内存页数据链表中至少两个内存页的内存页标识的顺序关系,确定待删除的目标内存页;
删除所述第二类型内存模块中存储的所述目标内存页,并删除所述内存页数据链表中所述目标内存页的内存页标识。
具体的,为实现在第二类型内存模块中对内存页信息的高效查找,可对第二类型内存模块中所存储的内存页对应的页标识通过链表的形式组成内存页数据链表(RankList),并通过各内存页的页信息中包含的Hits次数(内存页的访问次数)对各内存页的页标识进行排序,并基于排序结果生成内存页数据链表,对应的第二种数据处理过程的示意图如图2b所示。
图2b中,内存页表中不为空的区域均存储有内存页的地址信息,可基于该地址信息在第二类型内存模块中的对应位置读取该内存页的页信息,以根据页信息中包含的逻辑访问地址与物理访问地址间的映射关系,查询逻辑访问地址对应的物理访问地址。而第二类型内存模块可通过各内存页的页信息中包含的Hits次数,对各内存页的页标识进行排序,并基于排序结果生成内存页数据链表,从而提高对各内存页的页信息的查找效率。
实际应用中,第二类型内存模块中内存页的访问次数发生变化时,即可根据各内存页的当前访问次数对内存页数据链表中各内存页的页标识进行rank up(排名上升)或者rank down(排名下降)操作,使访问频率高的热点Page(热数据)保持在链表头部。当第二类型内存模块的存储空间使用完,即不存在空闲存储空间的情况下,若需为新的内存页分配存储空间,则会触发第二类型内存模块中内存页的淘汰置换流程。
具体可查询第二类型内存模块中存储的至少两个内存页的使用状态,该使用状态可以是正在使用或非正在使用,并根据使用状态以及内存页数据链表中至少两个内存页的内存页标识的顺序关系,确定待删除的目标内存页,具体可从内存页数据链表尾部开始,查找非正在使用的内存页进行淘汰,即删除第二类型内存模块中存储的该非正在使用的内存页,并删除内存页数据链表中该非正在使用的内存页的页标识。
进一步的,删除所述第二类型内存模块中存储的所述目标内存页之前,还包括:
获取所述目标内存页的页信息,并确定所述页信息中包含的所述目标内存页的状态信息;
在根据所述状态信息确定所述页信息发生变化的情况下,将所述页信息存储至所述第一类型内存模块。
具体的,如前所述,每个内存页的页信息中包含该页信息的数据变化状态State,clean表示未发生变化,即将该内存页的页信息从第一类型内存模块写入到第二类型内存模块后,页信息中的数据未发生变化;而dirty表示发生变化,即将该内存页的页信息从第一类型内存模块写入到第二类型内存模块后,页信息中的数据发生变化;因此,在确定需将某一非正在使用的内存页从第二类型内存模块删除之前,可先根据当前内存页的状态(clean/dirty)确定是否要将该内存页的页信息回刷至Optane介质,具体即根据该非正在使用的内存页的页信息中包含的状态信息State,确定页信息中的数据是否发生变化,在确定其发生变化的情况下,可将该页信息先存储至第一类型内存模块,然后将其从第二类型内存模块删除。
步骤106,将所述页信息写入第二类型内存模块中的所述内存页,其中,所述页信息中包含所述逻辑访问地址与物理访问地址间的映射关系。
具体的,在从第一类型内存模块中获取该内存页的页信息后,即可将该页信息写入第二类型内存模块的内存页,该页信息中即包含逻辑访问地址与物理访问地址间的映射关系,以基于该映射关系确定与用户的逻辑访问地址对应的物理访问地址。
具体实施时,将所述页信息写入第二类型内存模块中的所述内存页之后,还包括:
根据所述内存页的页信息写入结果,对所述第二类型内存模块中存储的内存页数据链表进行更新。
进一步的,根据所述内存页的页信息写入结果,对所述第二类型内存模块中存储的内存页数据链表进行更新,包括:
确定所述第二类型内存模块中存储的至少两个内存页的访问频率;
根据所述访问频率对所述至少两个内存页的页标识进行排序,并根据排序结果对所述第二类型内存模块中存储的内存页数据链表进行更新。
具体的,如前所述,第二类型内存模块中内存页的访问次数发生变化时,即可根据各内存页的当前访问次数进行rank up或者rank down操作,使访问频率高的热点Page(热数据)保持在链表头部。具体即根据内存页的页信息写入结果,对第二类型内存模块中存储的内存页数据链表进行更新。
实际应用中,可根据第二类型内存模块中各内存页的访问次数(访问频率)的大小,并按照由大到小的顺序对各内存页的页标识进行排序,以根据排序结果对第二类型内存模块中存储的内存页数据链表进行更新,使得访问频率高的热点Page(热数据)保持在链表头部,以提高第二类型内存模块对内存页的页信息的查找效率。
步骤108,将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
具体的,在将内存页的页信息写入第二类型内存模块后,即可将页信息的写入位置对应的地址信息写入内存页表,并将写入结果返回,以响应物理访问地址的查询请求。
实际应用中,在确定内存页表中不包含内存页的地址信息的情况下,提交异步读请求至Opatne;读请求完成后,将读取的页信息写入第二类型内存模块中,写入的位置对应的地址信息(Page指针)指向该内存页;写入完成后,异步操作完成,触发回调Callback,具体即将地址信息的写入结果返回,以响应查询请求。
另外,根据权利要求1所述的数据处理方法,所述将所述地址信息的写入结果返回之后,还包括:
接收针对待访问存储空间的物理访问地址的获取请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址;
确定所述逻辑访问地址的内存页,并根据所述内存页的页标识查询内存页表中所述内存页的地址信息;
根据所述地址信息在所述第二类型内存模块中查询所述内存页的页信息,并根据所述页信息中包含的所述逻辑访问地址与物理访问地址间的映射关系,确定所述逻辑访问地址对应的物理访问地址并返回。
具体的,在接收到地址信息的写入结果后,可重新提交物理访问地址的获取请求,并确定包含该获取请求中的逻辑访问地址的内存页,然后根据内存页的页标识查询内存页表中该内存页的地址信息,以根据地址信息在第二类型内存模块中查询内存页的页信息,并根据页信息中包含的逻辑访问地址与物理访问地址间的映射关系,确定该逻辑访问地址对应的物理访问地址并返回。
具体即在异步操作完成,触发回调Callback后,通过同步操作ftl_l2p_get(LBA),在对应的内存页中查找对应的PBA,并返回;然后可调用ftl_l2p_unpin(LBA,1),释放互斥锁;至此,获取PBA的过程结束。
本说明书实施例提供的第三种数据处理过程的示意图如图2c所示。图2c中的算法输入为应用访问的LBA地址,算法输出为对应设备空间的PBA地址。
具体的算法流程如下:
1:调用ftl_l2p_pin(LBA,1,callback)请求获取PBA,开启互斥锁;计算LBA对应的Page编号Page_no;
2:通过Page_no在L2P Table中索引到对应Page,Page若为NULL,触发page_in(page_no)操作;
3:提交异步读请求至Opatne;
4:读请求完成,Page信息读取至内存中,Page指针指向该Page;
5:异步操作完成,触发回调Callback;
6:通过同步操作ftl_l2p_get(LBA);
7:在Page中查找对应的PBA,并返回;
8:调用ftl_l2p_unpin(LBA,1),释放互斥锁;
9:获取PBA结束。
本说明书实施例中,删除所述内存页数据链表中所述目标内存页的内存页标识之后,还包括:
确定包含所述逻辑访问地址的内存页,并在所述第二类型内存模块中分配所述内存页对应的存储空间;
在第一类型内存模块获取所述内存页的页信息,将所述页信息写入第二类型内存模块中的所述存储空间;
将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
具体的,本说明书实施例在根据内存页的页标识查询内存页表中不包含内存页的地址信息,并在确定第二类型内存模块中不存在空闲存储空间的情况下,可触发LRU策略,从内存页数据链表尾部开始,查找非正在使用中的内存页进行淘汰;淘汰完成后,在第二类型内存模块分配新的内存页,并将该内存页的页标识添加至内存页数据链表尾部,将该内存页的存储空间在第二类型内存模块的地址信息写入内存页表中;最后并将地址信息的写入结果返回,以响应查询请求。
本说明书实施例提供的第四种数据处理过程的示意图如图2d所示。图2d中的算法输入为应用访问的LBA地址,算法输出为对应设备空间的PBA地址。
具体的算法流程为:
1:调用ftl_l2p_pin(LBA,1,callback)请求获取PBA,开启互斥锁;计算LBA对应的Page编号Page_no;通过Page_no在L2P Table中索引到应对Page;
2:Page为NULL,判断Page Cache空间是否已满is_cache_full();
3:若是,则触发LRU策略;
4:从当前Rank List尾部开始,查找非正在使用中的Page,进行淘汰;根据当前Page的状态(clean/dirty)决定是否要将该Page数据回刷至Optane介质;
5:分配新Page,并添加至Rank List队尾,Page地址插入对应L2P Table中;
6:触发page_in(page_no)操作,异步读取Opaten数据至该Page中;
7:异步操作完成,数据已填充至该Page中;
8:异步操作完成,触发回调Callback;
然后可通过同步操作ftl_l2p_get(LBA),在Page中查找对应的PBA,并返回,调用ftl_l2p_unpin(LBA,1),释放互斥锁,获取PBA结束。
本说明书实施例将分层的思想与FTL的设计结合起来,通过Optane介质以及DRAM的特点构成分层FTL设计,能够在保持最小块管理粒度4KB的前提下,实现内存资源消耗最小化、可配置化。有效解决了当前高密度介质QLC,以及未来PLC介质在FTL设计上所面临的挑战,包括FTL资源占用大的问题以及大粒度FTL设计导致的写操作放大的问题。
本说明书一个实施例通过接收针对待访问存储空间的物理访问地址的查询请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址,确定包含所述逻辑访问地址的内存页,并在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,在第一类型内存模块获取所述内存页的页信息,将所述页信息写入第二类型内存模块中的所述内存页,其中,所述页信息中包含所述逻辑访问地址与物理访问地址间的映射关系,将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
本说明书实施例利用第一类型内存模块存储全量的内存页的页信息,并利用第二类型内存模块存储访问频率较高的热数据,从而实现FTL(内存转换层)分层技术,能够在保持内存转换层的最小块管理粒度的前提下,实现内存资源消耗最小化、可配置化,即能够克服目前SSD所面临的写操作放大问题,从而使SSD能够提供更高以及更稳定的随机写性能。
下述结合附图3,以本说明书提供的数据处理方法在ZNS SSD的应用为例,对所述数据处理方法进行进一步说明。其中,图3示出了本说明书一个实施例提供的一种数据处理方法的处理过程流程图,具体包括以下步骤。
步骤302,接收针对ZNS SSD的待访问存储空间的物理访问地址的查询请求。
步骤304,确定查询请求中包含的逻辑访问地址的地址范围。
步骤306,确定地址范围与内存页的大小的比值,根据比值结果确定包含逻辑访问地址的内存页。
步骤308,将内存页的页标识作为索引查询内存页表中是否包含内存页的地址信息,若不包含,则确定第二类型内存模块是否存在空闲存储空间,其中,地址信息为内存页在第二类型内存模块中的存储地址对应的地址信息。
步骤310,若存在,则查询第二类型内存模块中存储的至少两个内存页的使用状态。
步骤312,获取第二类型内存模块中存储的内存页数据链表,并根据使用状态以及内存页数据链表中至少两个内存页的内存页标识的顺序关系,确定待删除的目标内存页。
步骤314,获取目标内存页的页信息,并确定页信息中包含的目标内存页的状态信息。
步骤316,在根据状态信息确定页信息发生变化的情况下,将页信息存储至第一类型内存模块。
步骤318,删除第二类型内存模块中存储的目标内存页,并删除内存页数据链表中目标内存页的内存页标识。
步骤320,确定包含逻辑访问地址的内存页,并在第二类型内存模块中分配内存页对应的存储空间。
步骤322,在第一类型内存模块获取内存页的页信息,将页信息写入第二类型内存模块中的存储空间。
步骤324,将内存页在第二类型内存模块的地址信息写入内存页表,并将地址信息的写入结果返回,以响应查询请求。
另外,还可接收针对待访问存储空间的物理访问地址的获取请求,其中,查询请求中包含待访问存储空间的逻辑访问地址;
确定逻辑访问地址的内存页,并根据内存页的页标识查询内存页表中内存页的地址信息;
根据地址信息在第二类型内存模块中查询内存页的页信息,并根据页信息中包含的逻辑访问地址与物理访问地址间的映射关系,确定逻辑访问地址对应的物理访问地址并返回。
本说明书实施例利用第一类型内存模块存储全量的内存页的页信息,并利用第二类型内存模块存储访问频率较高的热数据,从而实现FTL(内存转换层)分层技术,能够在保持内存转换层的最小块管理粒度的前提下,实现内存资源消耗最小化、可配置化,即能够克服目前SSD所面临的写操作放大问题,从而使SSD能够提供更高以及更稳定的随机写性能。
与上述方法实施例相对应,本说明书还提供了数据处理装置实施例,图4示出了本说明书一个实施例提供的一种数据处理装置的结构示意图。如图4所示,该装置包括:
接收模块402,被配置为接收针对待访问存储空间的物理访问地址的查询请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址;
获取模块404,被配置为确定包含所述逻辑访问地址的内存页,并在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,在第一类型内存模块获取所述内存页的页信息;
写入模块406,被配置为将所述页信息写入第二类型内存模块中的所述内存页,其中,所述页信息中包含所述逻辑访问地址与物理访问地址间的映射关系;
返回模块408,被配置为将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
可选地,所述数据处理装置,还包括查询模块,被配置为:
将所述内存页的页标识作为索引查询内存页表中是否包含所述内存页的地址信息,其中,所述地址信息为所述内存页在第二类型内存模块中的存储地址对应的地址信息;
若否,则确定所述内存页表中不包含所述内存页的地址信息。
可选地,所述数据处理装置,还包括处理模块,被配置为:
接收针对待访问存储空间的物理访问地址的获取请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址;
确定所述逻辑访问地址的内存页,并根据所述内存页的页标识查询内存页表中所述内存页的地址信息;
根据所述地址信息在所述第二类型内存模块中查询所述内存页的页信息,并根据所述页信息中包含的所述逻辑访问地址与物理访问地址间的映射关系,确定所述逻辑访问地址对应的物理访问地址并返回。
可选地,所述获取模块404,进一步被配置为:
根据内存页的大小,以及所述查询请求中包含的逻辑访问地址的地址范围,确定包含所述逻辑访问地址的内存页。
可选地,所述获取模块404,进一步被配置为:
确定所述查询请求中包含的逻辑访问地址的地址范围;
确定所述地址范围与内存页的大小的比值,根据比值结果确定包含所述逻辑访问地址的内存页。
可选地,所述数据处理装置,还包括更新模块,被配置为:
根据所述内存页的页信息写入结果,对所述第二类型内存模块中存储的内存页数据链表进行更新。
可选地,所述更新模块,进一步被配置为:
确定所述第二类型内存模块中存储的至少两个内存页的访问频率;
根据所述访问频率对所述至少两个内存页的页标识进行排序,并根据排序结果对所述第二类型内存模块中存储的内存页数据链表进行更新。
可选地,所述数据处理装置,还包括判断模块,被配置为:
判断所述第二类型内存模块是否存在空闲存储空间;
若是,则执行所述在第一类型内存模块获取所述内存页的页信息的步骤;
若否,则查询所述第二类型内存模块中存储的至少两个内存页的使用状态;
获取所述第二类型内存模块中存储的内存页数据链表,并根据所述使用状态以及所述内存页数据链表中至少两个内存页的内存页标识的顺序关系,确定待删除的目标内存页;
删除所述第二类型内存模块中存储的所述目标内存页,并删除所述内存页数据链表中所述目标内存页的内存页标识。
可选地,所述数据处理装置,还包括存储模块,被配置为:
获取所述目标内存页的页信息,并确定所述页信息中包含的所述目标内存页的状态信息;
在根据所述状态信息确定所述页信息发生变化的情况下,将所述页信息存储至所述第一类型内存模块。
可选地,所述数据处理装置,还包括确定模块,被配置为:
确定包含所述逻辑访问地址的内存页,并在所述第二类型内存模块中分配所述内存页对应的存储空间;
在第一类型内存模块获取所述内存页的页信息,将所述页信息写入第二类型内存模块中的所述存储空间;
将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
图5示出了根据本说明书一个实施例提供的一种计算设备500的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。
计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备500还可以是移动式或静止式的服务器。
其中,处理器520用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据处理方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的数据处理方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (13)
1.一种数据处理方法,包括:
接收针对待访问存储空间的物理访问地址的查询请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址;
确定包含所述逻辑访问地址的内存页,并在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,在第一类型内存模块获取所述内存页的页信息;
将所述页信息写入第二类型内存模块中的所述内存页,其中,所述页信息中包含所述逻辑访问地址与物理访问地址间的映射关系;
将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
2.根据权利要求1所述的数据处理方法,所述确定包含所述逻辑访问地址的内存页之后,还包括:
将所述内存页的页标识作为索引查询内存页表中是否包含所述内存页的地址信息,其中,所述地址信息为所述内存页在第二类型内存模块中的存储地址对应的地址信息;
若否,则确定所述内存页表中不包含所述内存页的地址信息。
3.根据权利要求1所述的数据处理方法,所述将所述地址信息的写入结果返回之后,还包括:
接收针对待访问存储空间的物理访问地址的获取请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址;
确定所述逻辑访问地址的内存页,并根据所述内存页的页标识查询内存页表中所述内存页的地址信息;
根据所述地址信息在所述第二类型内存模块中查询所述内存页的页信息,并根据所述页信息中包含的所述逻辑访问地址与物理访问地址间的映射关系,确定所述逻辑访问地址对应的物理访问地址并返回。
4.根据权利要求1所述的数据处理方法,所述确定包含所述逻辑访问地址的内存页,包括:
根据内存页的大小,以及所述查询请求中包含的逻辑访问地址的地址范围,确定包含所述逻辑访问地址的内存页。
5.根据权利要求4所述的数据处理方法,所述根据内存页的大小,以及所述查询请求中包含的逻辑访问地址的地址范围,确定包含所述逻辑访问地址的内存页,包括:
确定所述查询请求中包含的逻辑访问地址的地址范围;
确定所述地址范围与内存页的大小的比值,根据比值结果确定包含所述逻辑访问地址的内存页。
6.根据权利要求1所述的数据处理方法,所述将所述页信息写入第二类型内存模块中的所述内存页之后,还包括:
根据所述内存页的页信息写入结果,对所述第二类型内存模块中存储的内存页数据链表进行更新。
7.根据权利要求6所述的数据处理方法,所述根据所述内存页的页信息写入结果,对所述第二类型内存模块中存储的内存页数据链表进行更新,包括:
确定所述第二类型内存模块中存储的至少两个内存页的访问频率;
根据所述访问频率对所述至少两个内存页的页标识进行排序,并根据排序结果对所述第二类型内存模块中存储的内存页数据链表进行更新。
8.根据权利要求1所述的数据处理方法,所述在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,还包括:
判断所述第二类型内存模块是否存在空闲存储空间;
若是,则执行所述在第一类型内存模块获取所述内存页的页信息的步骤;
若否,则查询所述第二类型内存模块中存储的至少两个内存页的使用状态;
获取所述第二类型内存模块中存储的内存页数据链表,并根据所述使用状态以及所述内存页数据链表中至少两个内存页的内存页标识的顺序关系,确定待删除的目标内存页;
删除所述第二类型内存模块中存储的所述目标内存页,并删除所述内存页数据链表中所述目标内存页的内存页标识。
9.根据权利要求8所述的数据处理方法,所述删除所述第二类型内存模块中存储的所述目标内存页之前,还包括:
获取所述目标内存页的页信息,并确定所述页信息中包含的所述目标内存页的状态信息;
在根据所述状态信息确定所述页信息发生变化的情况下,将所述页信息存储至所述第一类型内存模块。
10.根据权利要求8所述的数据处理方法,所述删除所述内存页数据链表中所述目标内存页的内存页标识之后,还包括:
确定包含所述逻辑访问地址的内存页,并在所述第二类型内存模块中分配所述内存页对应的存储空间;
在第一类型内存模块获取所述内存页的页信息,将所述页信息写入第二类型内存模块中的所述存储空间;
将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
11.一种数据处理装置,包括:
接收模块,被配置为接收针对待访问存储空间的物理访问地址的查询请求,其中,所述查询请求中包含所述待访问存储空间的逻辑访问地址;
获取模块,被配置为确定包含所述逻辑访问地址的内存页,并在根据所述内存页的页标识查询内存页表中不包含所述内存页的地址信息的情况下,在第一类型内存模块获取所述内存页的页信息;
写入模块,被配置为将所述页信息写入第二类型内存模块中的所述内存页,其中,所述页信息中包含所述逻辑访问地址与物理访问地址间的映射关系;
返回模块,被配置为将所述内存页在所述第二类型内存模块的地址信息写入所述内存页表,并将所述地址信息的写入结果返回,以响应所述查询请求。
12.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至10任意一项所述数据处理方法的步骤。
13.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至10任意一项所述数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210573048.6A CN114676072A (zh) | 2022-05-25 | 2022-05-25 | 数据处理方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210573048.6A CN114676072A (zh) | 2022-05-25 | 2022-05-25 | 数据处理方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114676072A true CN114676072A (zh) | 2022-06-28 |
Family
ID=82080836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210573048.6A Pending CN114676072A (zh) | 2022-05-25 | 2022-05-25 | 数据处理方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114676072A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115079957A (zh) * | 2022-07-20 | 2022-09-20 | 阿里巴巴(中国)有限公司 | 请求处理方法、装置、控制器、设备及存储介质 |
CN116974952A (zh) * | 2023-09-25 | 2023-10-31 | 元执(江苏)智能科技有限公司 | 数字动态处理方法、装置、设备及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425600A (zh) * | 2013-08-23 | 2013-12-04 | 中国人民解放军国防科学技术大学 | 一种固态盘闪存转换层中的地址映射方法 |
CN104156324A (zh) * | 2014-08-11 | 2014-11-19 | 四川九成信息技术有限公司 | 一种嵌入式系统的程序运行方法 |
CN104156178A (zh) * | 2014-08-11 | 2014-11-19 | 四川九成信息技术有限公司 | 一种嵌入式终端数据访问方法 |
CN104268094A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
CN109960667A (zh) * | 2017-12-14 | 2019-07-02 | 北京忆恒创源科技有限公司 | 大容量固态存储设备的地址转换方法与装置 |
CN110262982A (zh) * | 2019-05-05 | 2019-09-20 | 杭州电子科技大学 | 一种固态硬盘地址映射的方法 |
US20220075732A1 (en) * | 2020-09-10 | 2022-03-10 | Micron Technology, Inc. | Data alignment for logical to physical table compression |
-
2022
- 2022-05-25 CN CN202210573048.6A patent/CN114676072A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425600A (zh) * | 2013-08-23 | 2013-12-04 | 中国人民解放军国防科学技术大学 | 一种固态盘闪存转换层中的地址映射方法 |
CN104156324A (zh) * | 2014-08-11 | 2014-11-19 | 四川九成信息技术有限公司 | 一种嵌入式系统的程序运行方法 |
CN104156178A (zh) * | 2014-08-11 | 2014-11-19 | 四川九成信息技术有限公司 | 一种嵌入式终端数据访问方法 |
CN104268094A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
CN109960667A (zh) * | 2017-12-14 | 2019-07-02 | 北京忆恒创源科技有限公司 | 大容量固态存储设备的地址转换方法与装置 |
CN110262982A (zh) * | 2019-05-05 | 2019-09-20 | 杭州电子科技大学 | 一种固态硬盘地址映射的方法 |
US20220075732A1 (en) * | 2020-09-10 | 2022-03-10 | Micron Technology, Inc. | Data alignment for logical to physical table compression |
Non-Patent Citations (1)
Title |
---|
周权彪等: "基于缓存映射项重用距离的闪存地址映射方法", 《计算机研究与发展》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115079957A (zh) * | 2022-07-20 | 2022-09-20 | 阿里巴巴(中国)有限公司 | 请求处理方法、装置、控制器、设备及存储介质 |
CN116974952A (zh) * | 2023-09-25 | 2023-10-31 | 元执(江苏)智能科技有限公司 | 数字动态处理方法、装置、设备及系统 |
CN116974952B (zh) * | 2023-09-25 | 2023-12-12 | 元执(江苏)智能科技有限公司 | 数字动态处理方法、装置、设备及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3608788B1 (en) | Internal memory access method and computer system | |
CN107066393B (zh) | 提高地址映射表中映射信息密度的方法 | |
CN108804031B (zh) | 最佳记录查找 | |
Park et al. | A reconfigurable FTL (flash translation layer) architecture for NAND flash-based applications | |
CN110825748B (zh) | 利用差异化索引机制的高性能和易扩展的键值存储方法 | |
US9471500B2 (en) | Bucketized multi-index low-memory data structures | |
CN109582593B (zh) | 一种基于计算的ftl地址映射读、写方法 | |
CN114676072A (zh) | 数据处理方法以及装置 | |
CN101488153A (zh) | 嵌入式Linux下大容量闪存文件系统的实现方法 | |
CN114546296B (zh) | 一种基于zns固态硬盘的全闪存系统和地址映射方法 | |
CN109783398A (zh) | 一种基于相关感知页面级ftl固态硬盘性能优化方法 | |
CN110968269A (zh) | 基于scm与ssd的键值存储系统及读写请求处理方法 | |
CN115427941A (zh) | 数据管理系统和控制的方法 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
US20240020014A1 (en) | Method for Writing Data to Solid-State Drive | |
CA2415018C (en) | Adaptive parallel data clustering when loading a data structure containing data clustered along one or more dimensions | |
CN108664217A (zh) | 一种降低固态盘存储系统写性能抖动的缓存方法及系统 | |
CN111078143B (zh) | 基于段映射进行数据布局和调度的混合存储方法及系统 | |
US10185660B2 (en) | System and method for automated data organization in a storage system | |
WO2023124423A1 (zh) | 一种存储空间分配方法、装置、终端设备及存储介质 | |
CN115079957B (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
CN108804571B (zh) | 一种数据存储方法、装置以及设备 | |
WO2022262381A1 (zh) | 一种数据压缩方法及装置 | |
CN115964350A (zh) | 一种文件系统管理模型及系统 | |
CN115344201A (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 |