CN111639037B - 一种缓存的动态分配方法、装置及DRAM-Less固态硬盘 - Google Patents

一种缓存的动态分配方法、装置及DRAM-Less固态硬盘 Download PDF

Info

Publication number
CN111639037B
CN111639037B CN202010398316.6A CN202010398316A CN111639037B CN 111639037 B CN111639037 B CN 111639037B CN 202010398316 A CN202010398316 A CN 202010398316A CN 111639037 B CN111639037 B CN 111639037B
Authority
CN
China
Prior art keywords
cache
benefit
mapping table
virtual
data
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
Application number
CN202010398316.6A
Other languages
English (en)
Other versions
CN111639037A (zh
Inventor
张吉兴
杨亚飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Dapu Microelectronics Co Ltd
Original Assignee
Shenzhen Dapu Microelectronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Dapu Microelectronics Co Ltd filed Critical Shenzhen Dapu Microelectronics Co Ltd
Priority to CN202010398316.6A priority Critical patent/CN111639037B/zh
Publication of CN111639037A publication Critical patent/CN111639037A/zh
Application granted granted Critical
Publication of CN111639037B publication Critical patent/CN111639037B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例涉及固态硬盘应用领域,公开了一种缓存的动态分配方法、装置及DRAM‑Less固态硬盘,DRAM‑Less固态硬盘包括主控制器,主控制器包括缓存空间,缓存空间包括数据缓存以及映射表缓存,该方法包括:预先分配数据缓存以及映射表缓存的内存大小;建立数据缓存对应的第一虚拟收益表以及映射表缓存对应的第二虚拟收益表;在预设更新周期结束时,计算数据缓存对应的第一虚拟收益表的第一平均虚拟收益以及映射表缓存对应的第二虚拟收益表的第二平均虚拟收益;根据第一平均虚拟收益以及第二平均虚拟收益,动态分配数据缓存以及映射表缓存的内存大小。通过动态分配主控制器的缓存空间,本发明能够提高DRAM‑Less固态硬盘的读写性能。

Description

一种缓存的动态分配方法、装置及DRAM-Less固态硬盘
技术领域
本发明涉及固态硬盘应用领域,特别是涉及一种缓存的动态分配方法、装置及DRAM-Less固态硬盘。
背景技术
固态硬盘(Solid State Drives,SSD),是采用固态电子存储芯片阵列而制成的硬盘,固态硬盘包括控制单元和存储单元(FLASH存储芯片或DRAM存储芯片)。目前固态硬盘***中有相当部分是存在动态随机存取存储器(Dynamic Random Access Memory,DRAM)的,所以SSD有较大的数据缓存空间用来缓存数据。
但目前也有一部分SSD控制器不外带DRAM,仅仅有一个较小的内部静态随机存取存储器(Static Random Access Memory,SRAM),这就大大限制了SSD内部的缓存数量,导致采用现有的缓存管理方法只能缓存较少的数据,降低了缓存的效果。尤其是当没有DRAM时一般闪存转换层(Flash translation layer,FTL)中的映射表是存储在FLASH闪存中的,只有在使用的时候才分段调度到SRAM中,当映射表在SRAM中时会根据缓存策略,读取一部分数据到缓存中,如果下次再读取命中缓存,则直接从缓存中读取数据。
由于缺乏DRAM,用户数据和FTL映射表只能部分缓存在主控制器的SRAM中,而主流主控的SRAM一般只有几百KB,而现有技术并没有解决缺乏DRAM导致SSD的读写性能下降的问题,因此,如何更好地利用主控制器以提升SSD的读写性能成为亟待解决的问题。
发明内容
本发明实施例旨在提供一种缓存的动态分配方法、装置及DRAM-Less固态硬盘,其解决了目前缺乏DRAM导致SSD的读写性能下降的技术问题,提高DRAM-Less固态硬盘的读写性能。
为解决上述技术问题,本发明实施例提供以下技术方案:
第一方面,本发明实施例提供一种缓存的动态分配方法,应用于DRAM-Less固态硬盘,所述DRAM-Less固态硬盘包括主控制器,所述主控制器包括缓存空间,所述缓存空间包括数据缓存以及映射表缓存,所述方法包括:
预先分配所述数据缓存以及映射表缓存的内存大小;
建立所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表;
在预设更新周期结束时,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益以及映射表缓存对应的第二虚拟收益表的第二平均虚拟收益;
根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小。
在一些实施例中,所述数据缓存对应的第一虚拟收益表包括一一对应的逻辑块地址数据、读收益值以及写收益值,所述计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益,包括:
获取所述第一虚拟收益表中的每一逻辑块地址数据对应的读收益值以及写收益值;
对每一逻辑块地址数据对应的读收益值以及写收益值进行求和,计算所述第一虚拟收益表的和值;
获取所述更新周期结束时所述数据缓存淘汰的逻辑块地址数据的个数;
根据所述第一虚拟收益表的和值以及所述逻辑块地址数据的个数,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益。
在一些实施例中,所述方法还包括:
当主机IO读取的逻辑块地址数据命中所述第一虚拟收益表中的逻辑块地址数据时,则增加所述第一虚拟收益表中与该逻辑块地址数据对应的读收益值;
当主机IO写入的逻辑块地址数据命中所述第一虚拟收益表中的逻辑块地址数据时,则增加所述第一虚拟收益表中与该逻辑块地址数据对应的写收益值。
在一些实施例中,所述映射表缓存对应的第二虚拟收益表包括一一对应的映射表管理单元、读收益值以及写收益值,所述计算所述映射表缓存对应的第二虚拟收益表的第二平均虚拟收益,包括:
获取所述第二虚拟收益表中的每一映射表管理单元对应的读收益值以及写收益值;
对所述每一映射表管理单元对应的读收益值以及写收益值进行求和,计算所述第二虚拟收益表的和值;
获取所述更新周期结束时所述第二虚拟收益表的映射表管理单元的个数;
根据所述第二虚拟收益表的和值以及所述第二虚拟收益表的映射表管理单元的个数,计算所述映射表缓存对应的第二虚拟收益表的第二平均虚拟收益。
在一些实施例中,所述方法还包括:
若所述映射表缓存内存占满,基于LRU算法,选择所述映射表缓存中的映射表管理单元,将其加入所述第二虚拟收益表;
当主机IO读取的逻辑块地址数据命中所述第二虚拟收益表中与该逻辑块地址数据对应的映射表管理单元时,则增加所述映射表管理单元的读收益值;
当主机IO写入的逻辑块地址数据命中所述第二虚拟收益表中与该逻辑块地址数据对应的映射表管理单元时,则增加所述映射表管理单元的写收益值。
在一些实施例中,所述根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小,包括:
若所述第一平均虚拟收益大于所述第二平均虚拟收益,则将所述映射表缓存的部分内存划分到所述数据缓存;
若所述第一平均虚拟收益小于所述第二平均虚拟收益,则将所述数据缓存的部分内存划分到所述映射表缓存。
在一些实施例中,每一所述逻辑块地址数据与所述映射表管理单元占用的内存空间大小相同,所述将所述映射表缓存的部分内存划分到所述数据缓存,包括:
基于LRU算法,选择所述映射表缓存中最近最少使用的映射表管理单元,将其对应的内存空间划分到所述数据缓存;
所述将所述数据缓存的部分内存划分到所述映射表缓存,包括:
基于LRU算法,选择所述数据缓存中的最近最少使用的逻辑块地址数据,将其对应的内存空间划分到所述映射表缓存。
在一些实施例中,在动态分配所述数据缓存以及映射表缓存的内存大小之后,所述方法还包括:
在更新周期结束后,清空所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表。
第二方面,本发明实施例提供一种缓存的动态分配装置,应用于DRAM-Less固态硬盘,所述DRAM-Less固态硬盘包括主控制器,所述主控制器包括缓存空间,所述缓存空间包括数据缓存以及映射表缓存,所述装置包括:
内存分配单元,用于预先分配所述数据缓存以及映射表缓存的内存大小;
虚拟收益表建立单元,用于建立所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表;
平均虚拟收益计算单元,用于在预设更新周期结束时,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益以及映射表缓存对应的第二虚拟收益表的第二平均虚拟收益;
动态分配单元,用于根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小。
在一些实施例中,所述数据缓存对应的第一虚拟收益表包括逻辑块地址数据、读收益值以及写收益值,所述平均虚拟收益计算单元,具体用于:
获取所述第一虚拟收益表中的每一逻辑块地址数据对应的读收益值以及写收益值;
对每一逻辑块地址数据对应的读收益值以及写收益值进行求和,计算所述第一虚拟收益表的和值;
获取所述更新周期结束时所述数据缓存淘汰的逻辑块地址数据的个数;
根据所述第一虚拟收益表的和值以及所述逻辑块地址数据的个数,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益。
在一些实施例中,所述映射表缓存对应的第二虚拟收益表包括映射表管理单元、读收益值以及写收益值,所述平均虚拟收益计算单元,具体用于:
获取所述第二虚拟收益表中的每一映射表管理单元对应的读收益值以及写收益值;
对所述每一映射表管理单元对应的读收益值以及写收益值进行求和,计算所述第二虚拟收益表的和值;
获取所述更新周期结束时所述第二虚拟收益表的映射表管理单元的个数;
根据所述第二虚拟收益表的和值以及所述第二虚拟收益表的映射表管理单元的个数,计算所述映射表缓存对应的第二虚拟收益表的第二平均虚拟收益。
在一些实施例中,所述动态分配单元,具体用于:
若所述第一平均虚拟收益大于所述第二平均虚拟收益,则将所述映射表缓存的部分内存划分到所述数据缓存;
若所述第一平均虚拟收益小于所述第二平均虚拟收益,则将所述数据缓存的部分内存划分到所述映射表缓存。
在一些实施例中,逻辑块地址数据与所述映射表管理单元占用的内存空间大小相同,所述动态分配单元,具体用于:
基于LRU算法,选择所述映射表缓存中最近最少使用的映射表管理单元,将其对应的内存空间划分到所述数据缓存;
所述将所述数据缓存的部分内存划分到所述映射表缓存,包括:
基于LRU算法,选择所述数据缓存中的最近最少使用的逻辑块地址数据,将其对应的内存空间划分到所述映射表缓存。
在一些实施例中,所述装置还包括:
重置单元,用于在更新周期结束后,清空所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表。
第三方面,本发明实施例提供一种DRAM-Less固态硬盘,所述DRAM-Less固态硬盘包括:
闪存芯片,所述闪存芯片包括多个晶圆,每一所述晶圆包括多个分组,每一所述分组包括多个物理块,每一所述物理块包括多个物理页;
主控制器,所述主控制器包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的缓存的动态分配方法。
第四方面,本发明实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使DRAM-Less固态硬盘能够执行如上所述的缓存的动态分配方法。
本发明实施例的有益效果是:区别于现有技术的情况下,本发明实施例提供的一种缓存的动态分配方法,应用于DRAM-Less固态硬盘,所述DRAM-Less固态硬盘包括主控制器,所述主控制器包括缓存空间,所述缓存空间包括数据缓存以及映射表缓存,所述方法包括:预先分配所述数据缓存以及映射表缓存的内存大小;建立所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表;在预设更新周期结束时,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益以及映射表缓存对应的第二虚拟收益表的第二平均虚拟收益;根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小。通过动态分配主控制器的缓存空间,本发明能够提高DRAM-Less固态硬盘的读写性能。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明实施例提供的一种DRAM-Less固态硬盘的结构示意图;
图2是本发明实施例提供的一种FTL映射表的示意图;
图3是本发明实施例提供的一种数据缓存与映射表缓存的示意图;
图4是本发明实施例提供的一种缓存的动态分配方法的流程示意图;
图5是本发明提供的第一虚拟收益表和第二虚拟收益表的示意图;
图6是图4中的步骤S30的一种细化流程图;
图7是图4中的步骤S30的另一种细化流程图;
图8是本发明实施例提供的一种逻辑块地址与映射表管理单元的对应关系的示意图;
图9是本发明实施例提供的一种缓存的动态分配方法的工作流程示意图;
图10是本发明实施例提供的一种数据缓存与映射表缓存的初始状态的示意图;
图11是本发明实施例提供的一种数据缓存与映射表缓存的另一状态的示意图;
图12是本发明实施例提供的一种数据缓存与映射表缓存的又一状态的示意图;
图13是本发明实施例提供的一种数据缓存与映射表缓存的再一状态的示意图;
图14是本发明实施例提供的一种更新的数据缓存与映射表缓存的示意图;
图15是本发明实施例提供的一种缓存的动态分配装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
固态硬盘(Solid State Drives,SSD)无外置动态随机存取存储器(DynamicRandom Access Memory,DRAM),即无外置DRAM缓存,通常也被称为无缓存方案,它是指通过固件适应省去DRAM芯片的固态硬盘解决方案。但是,无外置DRAM缓存并不意味着完全没有缓存,实际上它同样需要查找映射表,只是映射表的结构不同,容量较小并且存储于主控内集成的小容量SRAM当中。由于不需要额外的DRAM芯片,无外置DRAM缓存固态硬盘的成本更低,在处理好性能与成本关系的基础上也能取得更好的性价比。
但是,由于DRAM-Less固态硬盘缺少DRAM,用户数据和FTL映射表只能部分缓存在主控的SRAM中,而主控的SRAM一般内存空间较小,现有技术中SSD固件都是采用预先分配好数据缓存和映射表缓存的大小,这种方式的缺点在于会导致固态硬盘的读写性能下降。
基于此,本发明提出一种缓存的动态分配方法、装置及DRAM-Less固态硬盘,通过动态分配主控制器的缓存空间,实现提高DRAM-Less固态硬盘的读写性能。
在本发明实施例中,该固态硬盘为不带动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)的固态硬盘,即DRAM-Less的固态硬盘,请参阅图1,图1是本发明实施例提供的一种DRAM-Less固态硬盘的结构示意图;其中,该DRAM-Less固态硬盘由一系列闪存阵列组成,DRAM-Less固态硬盘内部包括多个闪存控制器(Flash Memory Controller,FMC),每个闪存控制器控制一个通道(Channel),闪存控制器之间独立工作,每个通道有自己的通道总线,每个通道上挂载多个闪存芯片(Chip)。
如图1所示,该DRAM-Less固态硬盘10,包括:主控制器11以及闪存芯片12,所述主控制器11连接所述闪存芯片12;
具体的,所述主控制器11,包括:一个或多个处理器111以及存储器112。其中,图1中以一个处理器111为例。
处理器111和存储器112可以通过总线或者其他方式连接,图1中以通过总线连接为例。
存储器112作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器111通过运行存储在存储器112中的非易失性软件程序、指令以及模块,从而执行本发明实施例的DRAM-Less固态硬盘的缓存的动态分配方法的各种功能应用以及数据处理。
存储器112可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器112可选包括相对于处理器111远程设置的存储器,这些远程存储器可以通过网络连接至处理器111。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。所述模块存储在所述存储器112中,当被所述一个或者多个处理器111执行时,执行本发明实施例中的DRAM-Less固态硬盘的缓存的动态分配方法。
具体的,所述闪存芯片12,包括多个晶圆(Die),每个晶圆由多个分组(Plane)组成,每个分组由多个块(Block)组成,即本发明中所述的物理块(Block),其中,块是闪存芯片12擦除的基本单位,每个块有多个页(Page),即物理页,其中,物理页(Page)是闪存芯片12读写的基本单位。
由于DRAM-Less的固态硬盘缺少DRAM,但是主流的主控中会有非常少量的静态随机存取存储器(Static Random Access Memory,SRAM),提供给固件作为映射表的缓存,但其容量小并且价格昂贵,本发明假设主机的逻辑块地址(Logical Block Address,LBA)大小等于闪存物理页的大小都为4KB,并且SSD固件采用4KB颗粒度的映射机制。
请参阅图2,图2是本发明实施例提供的一种FTL映射表的示意图;
如图2所示,主机的每一LBA数据以及每一闪存物理页的大小均为4KB,而FTL映射表中的每一映射表管理单元的大小为4B,每一映射表管理单元对应一LBA数据,所述映射表管理单元用于存储LBA数据在闪存中存储的物理地址。
请再参阅图3,图3是本发明实施例提供的一种数据缓存与映射表缓存的示意图;
如图3所示,固态硬盘的主控制器(主控)包括内部静态随机存取存储器(InternalStatic Random Access Memory,ISRAM),为提升SSD的读写性能,SSD固件一般都会设计数据缓存和映射表缓存,主机写入的琐碎小数据首先缓存在数据缓存中,待凑满一个物理页大小后刷到Flash闪存上,从而有效提升写命令的性能,另外如果主机读请求的数据如果正好在数据缓存中,那么也能大大提升读性能。
由于闪存物理页异地写入特性,SSD固件需要维护映射表实时记录LBA数据写入物理页的位置,以便后续读取时能找到数据所在位置,如果映射表存储在缓存中,那么访问映射表的延时很小,性能就能提升。
可以理解的是,数据缓存和映射表缓存越大性能越好。对于没有配备DRAM的DRAM-Less固态硬盘,只能使用主控自身昂贵而珍稀的高速内存ISRAM作为缓存,然而ISRAM总量毕竟很少,如图3所示,ISRAM存储一小部分用户数据和映射表,而完整的用户数据和映射表则存储在闪存中。
现有技术中SSD固件都是预先分配好数据缓存和映射表缓存的大小,后续无论主机的工作量(workload)如何变化都不改变它们的大小。数据缓存和映射表缓存都按照4KB颗粒度进行管理,且都使用最近最少使用算法(Least Recently Used,LRU)淘汰掉最冷的缓存数据。
由于无法调整数据缓存和映射表缓存的大小,导致SSD读写性能的下降,假设主控的ISRAM一共768KB,分配给数据缓存512KB,映射表缓存256KB,由于固定数据缓存和映射表缓存,如下常见的SSD工作场景的性能无法达到最优:
Workload 1:主机访问LBA连续的8MB的数据空间,那么该workload所需访问的最大的映射表大小为8MB/4KB*4B=8KB(映射表缓存),映射表缓存剩下的256KB-8KB=248KB是没有体现价值的,如果数据缓存能使用它,那么***性能将会提升。
Workload 2:主机没有请求下发,数据缓存闲置,SSD内部触发了垃圾回收,垃圾回收会频繁更新整个映射表,较大的映射表缓存将会提升垃圾回收的效率。然而由于静态配置策略数据缓存不会被垃圾回收任务利用到。
从上述例子可以看出,固定数据缓存和映射表缓存的内存大小无法提高固态硬盘的读写性能,有鉴于此,本发明创造性地提出通过动态分配数据缓存以及映射表缓存的方式,以提高固态硬盘的读写性能。
请参阅图4,图4是本发明实施例提供的一种缓存的动态分配方法的流程示意图;
该缓存的动态分配方法,应用于DRAM-Less固态硬盘,所述DRAM-Less固态硬盘包括主控制器,所述主控制器包括缓存空间,所述缓存空间包括数据缓存以及映射表缓存,其中,该缓存的动态分配方法,其执行主体是所述DRAM-Less固态硬盘的主控制器。
如图4所示,该缓存的动态分配方法,包括:
步骤S10:预先分配所述数据缓存以及映射表缓存的内存大小;
具体的,所述DRAM-Less固态硬盘的主控制器包括缓存空间,而所述缓存空间的内存有限,因此,需要对所述缓存空间进行分配,即预先分配所述数据缓存以及映射表缓存的内存大小,可以理解的是,为了尽可能地利用所述缓存空间,所述数据缓存以及所述映射表缓存之和应为所述缓存空间的内存大小,例如:若所述缓存空间的内存大小为A,所述数据缓存的内存大小为B,所述映射表缓存的内存大小为C,则有:A=B+C。在本发明实施例中,所述主控制器的缓存空间为主控制器的内部静态随机存取存储器(Internal Static RandomAccess Memory,ISRAM)。
步骤S20:建立所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表;
请再参阅图5,图5是本发明提供的第一虚拟收益表和第二虚拟收益表的示意图;
如图5所示,数据缓存对应第一虚拟收益表,映射表缓存对应第二虚拟收益表,所示数据缓存包括多个LBA数据(逻辑块地址数据),所示映射表缓存包括多个L2P Entry(映射表管理单元),所示第一虚拟收益表包括LBA数据及其对应的Read hit收益值(读收益值)、Write hit收益值(写收益值),所示第二虚拟收益表包括多个L2P Entry及其对应的Read hit收益值(读收益值)、Write hit收益值(写收益值)。
具体的,所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表保存在所述DRAM-Less固态硬盘的主控制器的芯片内部,例如:所述主控制器的高速寄存器,比如:数据紧耦合存储器(Data Tightly Coupled Memory,DTCM),通过建立所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表,能够反映主机IO对数据缓存或映射表缓存的命中率,并且,由于所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表保存于主控制器的高速寄存器,因此能够在不占用主控制器的缓存空间的前提下,提高固态硬盘的读写性能。
步骤S30:在预设更新周期结束时,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益以及映射表缓存对应的第二虚拟收益表的第二平均虚拟收益;
具体的,所述更新周期为用户设置的一个时间片段,所述更新周期用于确定主机IO在一段时间内命中数据缓存对应的第一虚拟收益表中的逻辑块地址数据以及确定主机IO在一段时间内命中映射表缓存对应的第二虚拟收益表中的映射表管理单元。通过预设更新周期,能够基于一段时间内的主机IO来确定数据缓存和映射表缓存的内存大小,实现主控制器的缓存空间的有效分配。
请再参阅图6,图6是图4中的步骤S30的一种细化流程图;
具体的,所述数据缓存对应的第一虚拟收益表包括一一对应的逻辑块地址数据、读收益值以及写收益值,如图6所示,所述计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益,包括:
步骤S311:获取所述第一虚拟收益表中的每一逻辑块地址数据对应的读收益值以及写收益值;
具体的,所述数据缓存对应第一虚拟收益表,所述数据缓存位于主控制器的缓存空间,所述第一虚拟收益表位于所述主控制器的芯片内部,当所述数据缓存中的逻辑块地址数据被淘汰之后,所述主控制器将在所述第一虚拟收益表中增加所述逻辑块地址数据,而在所述第一虚拟收益表中的每一逻辑块地址数据均对应一个读收益值(Read hit)以及写收益值(Write hit),所述读收益值以及写收益值分别用于表示该逻辑块地址数据在被数据缓存淘汰之后,其被主机IO命中的读次数以及写次数。
在本发明实施例中,所述方法还包括:
在更新周期内,当主机IO没有命中数据缓存时,基于LRU算法,选择一个淘汰的逻辑块地址数据加入所述第一虚拟收益表。
在本发明实施例中,所述方法还包括:
当主机IO读取的逻辑块地址数据命中所述第一虚拟收益表中的逻辑块地址数据时,则增加所述第一虚拟收益表中与该逻辑块地址数据对应的读收益值;
当主机IO写入的逻辑块地址数据命中所述第一虚拟收益表中的逻辑块地址数据时,则增加所述第一虚拟收益表中与该逻辑块地址数据对应的写收益值。
具体的,当主机IO读取的逻辑块地址数据命中所述第一虚拟收益表中的逻辑块地址数据时,则将所述第一虚拟收益表中与该逻辑块地址数据对应的读收益值增加一个单位,在本发明实施例中,所述一个单位可以自由设置,例如:设置为1、2、3、4等,所述写收益值的增加方式与读收益值的增加方式类似,在此不再赘述。
步骤S312:对每一逻辑块地址数据对应的读收益值以及写收益值进行求和,计算所述第一虚拟收益表的和值;
具体的,所述第一虚拟收益表中可能不存在逻辑块地址数据,或者,可能存在一个或多个逻辑块地址数据,所述对每一逻辑块地址数据对应的读收益值以及写收益值进行求和,即,对所述第一虚拟收益表中的全部逻辑块地址数据对应的读收益值和写收益值进行求和,进而得到所述第一虚拟收益表的和值。
步骤S313:获取所述更新周期结束时所述数据缓存淘汰的逻辑块地址数据的个数;
具体的,在更新周期结束时,获取所述数据缓存淘汰的逻辑块地址数据的个数,亦即,获取所述第一虚拟收益表中的逻辑块地址数据的个数。
步骤S314:根据所述第一虚拟收益表的和值以及所述逻辑块地址数据的个数,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益。
具体的,所述第一平均虚拟收益=第一虚拟收益表的和值/逻辑块地址数据的个数。
请再参阅图7,图7是图4中的步骤S30的另一种细化流程图;
具体的,所述映射表缓存对应的第二虚拟收益表包括一一对应的映射表管理单元、读收益值以及写收益值,所述映射表缓存位于主控制器的缓存空间,所述第二虚拟映射表位于所述主控制器的芯片内部,当所述数据缓存中的逻辑块地址数据发生改变时,所述映射表缓存也随之改变,而映射表缓存将选择相应的映射表管理单元使其加入第二虚拟收益表中,如图7所示,所述计算所述映射表缓存对应的第二虚拟收益表的第二平均虚拟收益,包括:
步骤S321:获取所述第二虚拟收益表中的每一映射表管理单元对应的读收益值以及写收益值;
具体的,当映射表缓存中的映射表管理单元被替换掉之后,将被加入到第二虚拟收益表中,而所述第二虚拟收益表中的每一映射表管理单元均对应一个读收益值和写收益值,所述读收益值和写收益值分别用于表示在该映射表管理单元被加入到第二虚拟收益表之后,其对应的逻辑块地址数据被主机IO命中的读次数以及写次数。
在本发明实施例中,所述方法还包括:
若所述映射表缓存内存占满,基于LRU算法,选择所述映射表缓存中的映射表管理单元,将其加入所述第二虚拟收益表;
当主机IO读取的逻辑块地址数据命中所述第二虚拟收益表中与该逻辑块地址数据对应的映射表管理单元时,则增加所述映射表管理单元的读收益值;
当主机IO写入的逻辑块地址数据命中所述第二虚拟收益表中与该逻辑块地址数据对应的映射表管理单元时,则增加所述映射表管理单元的写收益值。
具体的,所述LRU算法为最近最少使用算法(Least Recently Used,LRU),当主机IO读取的逻辑块地址数据命中所述第二虚拟收益表中与该逻辑块地址数据对应的映射表管理单元时,将所述映射表管理单元的读收益值增加一个单位,在本发明实施例中,所述一个单位可以自由设置,例如:设置为1、2、3、4等,所述写收益值的增加方式与读收益值的增加方式类似,在此不再赘述。
步骤S322:对所述每一映射表管理单元对应的读收益值以及写收益值进行求和,计算所述第二虚拟收益表的和值;
具体的,所述第二虚拟收益表中可能不存在映射表管理单元,或者,可能存在一个或多个映射表管理单元,所述对每一映射表管理单元对应的读收益值以及写收益值进行求和,即,对所述第二虚拟收益表中的全部映射表管理单元对应的读收益值和写收益值进行求和,进而得到所述第二虚拟收益表的和值。
步骤S323:获取所述更新周期结束时所述第二虚拟收益表的映射表管理单元的个数;
具体的,在更新周期结束时,获取所述第二虚拟收益表中的映射表管理单元的个数,所述映射表管理单元的个数即为映射表缓存中的被LRU算法选中的映射表管理单元,可以理解的是,在某一时间,所述第二虚拟收益表中的映射表管理单元可以与所述映射表缓存中的映射表管理单元相同。
步骤S324:根据所述第二虚拟收益表的和值以及所述第二虚拟收益表的映射表管理单元的个数,计算所述映射表缓存对应的第二虚拟收益表的第二平均虚拟收益。
具体的,所述第二虚拟收益表的第二平均虚拟收益=第二虚拟收益表的和值/第二虚拟收益表的映射表管理单元的个数。
步骤S40:根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小。
具体的,所述根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小,包括:
若所述第一平均虚拟收益大于所述第二平均虚拟收益,则将所述映射表缓存的部分内存划分到所述数据缓存;
若所述第一平均虚拟收益小于所述第二平均虚拟收益,则将所述数据缓存的部分内存划分到所述映射表缓存。
其中,当所述更新周期结束时,需要计算主机IO对于第一虚拟收益表以及第二虚拟收益表的命中率,所述主机IO对于第一虚拟收益表和第二虚拟收益表的命中率通过第一平均虚拟收益以及第二平均虚拟收益表征,若所述第一平均虚拟收益大于所述第二平均虚拟收益,则意味着增加数据缓存可能在下一时间段内能带来更好的读写性能,因此,通过将所述映射表缓存的部分内存划分到所述数据缓存,以提高固态硬盘的读写性能;
若所述第一平均虚拟收益小于所述第二平均虚拟收益,则意味着增加映射表缓存可能在下一时间段内能带来更好的读写性能,因此,通过将所述数据缓存的部分内存划分到所述映射表缓存,以提高固态硬盘的读写性能。
具体的,所述将所述映射表缓存的部分内存划分到所述数据缓存,包括:
基于LRU算法,选择所述映射表缓存中最近最少使用的映射表管理单元,将其对应的内存空间划分到所述数据缓存;
具体的,所述将所述数据缓存的部分内存划分到所述映射表缓存,包括:
基于LRU算法,选择所述数据缓存中的最近最少使用的逻辑块地址数据,将其对应的内存空间划分到所述映射表缓存。
在本发明实施例中,所述方法还包括:
根据主机访问所述DRAM-Less固态硬盘的频率,动态设置所述更新周期。
具体的,所述主机访问所述DRAM-Less固态硬盘的频率通过更新周期内所述主机IO的读写次数表征,若更新周期内所述主机IO的读写次数大于预设读写次数,则确定所述主机访问所述DRAM-Less固态硬盘的频率高,若更新周期内所述主机IO的读写次数小于等于预设读写次数,则确定所述主机访问所述DRAM-Less固态硬盘的频率低。
若所述主机访问所述DRAM-Less固态硬盘的频率高,则缩短所述更新周期,若所述主机访问所述DRAM-Less固态硬盘的频率低,则延长所述更新周期,其中,可以通过设置缩短系数以及延长系数来动态调整所述更新周期,例如:当所述主机访问所述DRAM-Less固态硬盘的频率高,则将当前的更新周期乘以缩短系数,以确定更新后的更新周期,当所述主机访问所述DRAM-Less固态硬盘的频率低,则将当前的更新周期乘以延长系数,以确定更新后的更新周期,其中,所述缩短系数和延长系数可以根据具体需要进行设置,例如:所述缩短系数设置为0.8,所述延长系数设置为1.2。
在本发明实施例中,在动态分配所述数据缓存以及映射表缓存的内存大小之后,所述方法还包括:
在更新周期结束后,清空所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表。
可以理解的是,在更新周期结束后,通过重新分配数据缓存以及映射表缓存,此时需要重置所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表,以方便计算下一更新周期的第一平均虚拟收益以及第二平均虚拟收益,以此类推。
请再参阅图8,图8是本发明实施例提供的一种逻辑块地址与映射表管理单元的对应关系的示意图;
在本发明实施例中,每一所述逻辑块地址数据与所述映射表管理单元占用的内存空间大小相同,如图8所示,每一个映射表管理单元(L2P Entry)对应1K个逻辑块地址数据(LBA),而每一个映射表管理单元(L2P Entry)占用的内存大小为4KB,相当于LBA数据在闪存中存储的位置记录在映射表的4个字节中,即,一个映射表管理单元(L2P Entry)记录的是1K个逻辑上连续的LBA对应的物理地址信息。
请再参阅图9,图9是本发明实施例提供的一种缓存的动态分配方法的工作流程示意图;
如图9所示,该缓存的动态分配方法,包括:
步骤S91:重置数据缓存的第一虚拟收益表和映射表缓存的第二虚拟收益表;
具体的,在上一个更新周期结束后,将重置所述数据缓存的第一虚拟收益表和映射表缓存的第二虚拟收益表。
步骤S92:处理新的主机读写请求LBA_x;
具体的,所述主控制器接收主机下发的IO请求,对所述IO请求进行处理,例如:读取或写入主机下发的LBA_x数据。
步骤S93:LBA_x是否命中数据缓存的第一虚拟收益表;
具体的,判断所述LBA_x是否命中数据缓存的第一虚拟收益表,若是,则进入步骤S94:将所述数据缓存的第一虚拟收益表中LBA_x对应的hit收益值加1,例如:若主机下发的请求为写入LBA_x,则将所述第一虚拟收益表中LBA_x对应的Write hit收益值加1,若主机下发的请求为读取LBA_x,则将所述第一虚拟收益表中LBA_x对应的Read hit收益值加1。若否,则进入步骤S95:判断LBA_x是否命中数据缓存。
步骤S94:第一虚拟收益表中LBA_x对应的hit收益值加1;
具体的,若主机下发的请求为写入LBA_x,则将所述第一虚拟收益表中LBA_x对应的Write hit收益值加1,若主机下发的请求为读取LBA_x,则将所述第一虚拟收益表中LBA_x对应的Read hit收益值加1。
步骤S95:LBA_x是否命中数据缓存;
具体的,若所述LBA_x命中数据缓存,则进入步骤S97:更新周期是否结束;若所述LBA_x不命中数据缓存,则进入步骤S96:将替换出的LBA_t加入第一虚拟收益表。
可以理解的是,本发明也可以改变LBA_x是否命中数据缓存和LBA_x是否命中数据缓存的第一虚拟收益表的判断顺序,即,可以先判断LBA_x是否命中数据缓存,再判断LBA_x是否命中数据缓存的第一虚拟收益表,并不影响实质结果。
步骤S96:将替换出的LBA_t加入第一虚拟收益表;
具体的,若所述LBA_x不命中数据缓存,则根据LRU算法,从数据缓存中选择一个逻辑块地址数据LBA_t,在数据缓存中将所述LBA_t替换为LBA_x,并将所述LBA_t加入所述第一虚拟收益表。
可以理解的是,对映射表缓存处理主机IO的方式与上述的数据缓存处理IO的方式类似,在此不再赘述,值得说明的是,映射表缓存的判断顺序与数据缓存的判断顺序保持一致,例如:若所述数据缓存的判断顺序为先判断LBA_x是否命中数据缓存的第一虚拟收益表,再判断LBA_x是否命中数据缓存,则映射表缓存的判断顺序为先判断是否命中映射表缓存的第二虚拟收益表,再判断是否命中映射表缓存,以保持一致性。
步骤S97:判断更新周期是否结束;
具体的,判断预设更新周期是否结束,若是,则进入步骤S98:计算数据缓存和映射表缓存的第一平均虚拟收益T1和第二平均虚拟收益T2;若否,则返回步骤S92:处理新的主机读写请求;
步骤S98:计算数据缓存和映射表缓存的第一平均虚拟收益T1和第二平均虚拟收益T2;
具体的,根据数据缓存的第一虚拟收益表中的全部逻辑块地址数据的读收益值和写收益值,以及所述第一虚拟收益表中的逻辑块地址数据的数量,计算所述第一平均虚拟收益T1;根据映射表缓存的第二虚拟收益表中的全部映射表管理单元的读收益值和写收益值,以及所述第二虚拟收益表中的映射表管理单元的数量,计算所述第二平均虚拟收益T2。
步骤S99:T1>T2;
具体的,判断所述第一平均虚拟收益T1是否大于所述第二平均虚拟收益T2,若是,则进入步骤S991;若否,则进入步骤S992;
步骤S991:从映射表缓存划分部分内存空间给数据缓存;
具体的,从映射表缓存中划分一个逻辑块地址数据的内存空间给数据缓存,即,从映射表缓存划分4KB buffer给数据缓存。
步骤S992:从数据缓存划分部分内存空间给映射表缓存;
具体的,从数据缓存划分一个映射表管理单元的内存空间给映射表缓存,即,从数据缓存划分4KB buffer给映射表缓存;
所谓动态分配数据缓存和映射表缓存的大小,其实就是将数据缓存的一小块buffer割下来给映射表缓存使用,或者反过来将映射表缓存的一小块缓存割下来给数据缓存使用,使得***总性能得到提升。关键是如何决策牺牲谁的buffer。***性能之所以会提升是因为IO命中了数据缓存或映射表缓存,所以决策模型基本可以聚焦于谁的命中率提升较高。如图5所示,在当前的缓存配置下,当主机IO没有命中数据缓存那么LRU算法就会选出一个淘汰掉的LBA_x,该LBA_x淘汰掉后,如果后续主机读写LBA_x,那么就会产生不命中,而且主机读写LBA_x次数越多造成的数据缓存命中率下降越大,这是维持当前数据缓存大小不变带来的代价。
假设此时***有额外的一块4KB空闲buffer供数据缓存使用,那么数据缓存就不用淘汰掉LBA_x,主机后续读写LBA_x就会命中数据缓存,这就是增加一个4KB buffer带来的命中率提升,如图5所示,将一个周期内从数据缓存淘汰下来的所有LBA_y以及后续主机对它们的读写次数(R_y,W_y)记录在第一虚拟收益表中,更新周期结束时计算数据缓存的第一平均虚拟收益T1(4KB buffer的平均命中率提升)=(R_1+W_1+R_2+W_2+...+R_n+W_n)/n,n为周期内数据缓存淘汰出去的LBA个数。
同理,维护映射表缓存对应的第二虚拟收益表,第二虚拟收益表中记录的是淘汰出去的L2P Entry_i以及对应的读写命中次数(R_i,W_i),更新周期结束后,计算映射表缓存的第二平均虚拟收益T2,然后比较T1和T2,如果T1大于T2,说明在这一更新周期内,提升数据缓存所带来的收益(命中率提升)较大,根据主机workload的时间局限性,有理由相信在下一更新周期内增大数据缓存更加有助于提升总命中率,因此固件决策出在下一个更新周期开始时,从映射表缓存中切割出一块4KB buffer给数据缓存;反之,如果T1小于T2则从数据缓存中切割出一块4KB buffer给映射表缓存。下一更新周期开始时,清空数据缓存和映射表缓存分别对应的第一虚拟收益表和第二虚拟收益表。
下面结合实例具体阐述如何动态分配数据缓存以及映射表缓存的内存大小。
请参阅图10,图10是本发明实施例提供的一种数据缓存与映射表缓存的初始状态的示意图;
假设更新周期设置为Time_TH,某一更新周期起始时刻数据缓存大小为9*4KB,映射表缓存大小为4*4KB,如图10所示,SSD ISRAM在初始状态下的数据缓存和映射表缓存中存储的LBA Index和L2P Entry Index分别为:数据缓存中缓存了LBA 0,1,3,4097,4098,4099,8192,8193,8194,映射表缓存中缓存了L2P Entry 0,4,8,9,其对应的第一虚拟收益表和第二虚拟收益表均为清空状态。
在之后的时间段Time_TH内,主机发起了读LBA 1024,1025,1026,0,1,3,0,1,3的IO流,首先LBA 1024,1025,1026会把数据缓存中最旧的LBA 0,1,3替换掉,然后第一虚拟收益表中记录LBA 0,1,3,然后LBA 1024,1025,1026进入映射表缓存,这三个LBA都属于L2PEntry 1,所以L2P Entry 1替换掉映射表缓存中的L2P Entry 0,且将L2P Entry 0记录在第二虚拟收益表中,再参阅图11,图11是本发明实施例提供的一种数据缓存与映射表缓存的另一状态的示意图,此时SSD ISRAM的状态如图11所示;
可以理解的是,LBA数据进入数据缓存之后是通过一个一个进行替换的,此处为了简略一次性以3个为例进行阐述,本发明中选择LBA数据的方式为LRU算法。
之后,LBA 0,1,3进入数据缓存替换掉最旧的LBA 4097,4098,4099,并将LBA4097,4098,4099加到第一虚拟收益表,且由于LBA 0,1,3之前已经记录在第一虚拟收益表中了,所以将LBA 0,1,3对应的read hit收益值各加1;同样道理,LBA 0,1,3属于L2P Entry0,所以替换掉映射表缓存中的L2P Entry 4,将L2P Entry 4添加到第二虚拟收益表中,且L2P Entry 0之前已经记录在第二虚拟收益表中了,所以其read hit收益值加3(该过程是3个IO查找映射表),此时SSD ISRAM的状态如图12所示;
再之后,LBA 0,1,3第二次进入数据缓存,由于数据缓存中已存在LBA 0,1,3了,所以直接更新第一虚拟收益表中对应的read hit收益值,同理直接更新映射表缓存对应的第二虚拟收益表中的值,此时SSD ISRAM的状态如图13所示;
该更新周期结束之后,计算数据缓存的第一平均虚拟收益T1=(2+2+2+0+0+0)/6=1,映射表缓存的第二平均虚拟收益T2=(6+0)/2=3,所以对于当前workload来说增大映射表缓存带来的收益(命中率提升)比较大,则SSD固件从数据缓存中切割出4KB buffer(最冷的)给到映射表缓存,且清空各自的虚拟收益表中内容,开始下一轮周期,并一直持续下去,如图14所示,此时数据缓存多出一个LBA数据内存大小的空间,映射表缓存减少一个L2PEntry内存大小的空间,从而实现动态分配主控制器的缓存空间。
在本发明实施例中,通过提供一种缓存的动态分配方法,应用于DRAM-Less固态硬盘,所述DRAM-Less固态硬盘包括主控制器,所述主控制器包括缓存空间,所述缓存空间包括数据缓存以及映射表缓存,所述方法包括:预先分配所述数据缓存以及映射表缓存的内存大小;建立所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表;在预设更新周期结束时,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益以及映射表缓存对应的第二虚拟收益表的第二平均虚拟收益;根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小。通过动态分配主控制器的缓存空间,本发明能够提高DRAM-Less固态硬盘的读写性能。
请参阅图15,图15是本发明实施例提供的一种缓存的动态分配装置的结构示意图。
其中,该缓存的动态分配装置,应用于DRAM-Less固态硬盘,所述DRAM-Less固态硬盘包括主控制器,所述主控制器包括缓存空间,所述缓存空间包括数据缓存以及映射表缓存,所述装置包括:
内存分配单元151,用于预先分配所述数据缓存以及映射表缓存的内存大小;
虚拟收益表建立单元152,用于建立所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表;
平均虚拟收益计算单元153,用于在预设更新周期结束时,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益以及映射表缓存对应的第二虚拟收益表的第二平均虚拟收益;
动态分配单元154,用于根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小。
在本发明实施例中,所述数据缓存对应的第一虚拟收益表包括逻辑块地址数据、读收益值以及写收益值,所述平均虚拟收益计算单元,具体用于:
获取所述第一虚拟收益表中的每一逻辑块地址数据对应的读收益值以及写收益值;
对每一逻辑块地址数据对应的读收益值以及写收益值进行求和,计算所述第一虚拟收益表的和值;
获取所述更新周期结束时所述数据缓存淘汰的逻辑块地址数据的个数;
根据所述第一虚拟收益表的和值以及所述逻辑块地址数据的个数,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益。
在本发明实施例中,所述映射表缓存对应的第二虚拟收益表包括映射表管理单元、读收益值以及写收益值,所述平均虚拟收益计算单元,具体用于:
获取所述第二虚拟收益表中的每一映射表管理单元对应的读收益值以及写收益值;
对所述每一映射表管理单元对应的读收益值以及写收益值进行求和,计算所述第二虚拟收益表的和值;
获取所述更新周期结束时所述第二虚拟收益表的映射表管理单元的个数;
根据所述第二虚拟收益表的和值以及所述第二虚拟收益表的映射表管理单元的个数,计算所述映射表缓存对应的第二虚拟收益表的第二平均虚拟收益。
在本发明实施例中,所述动态分配单元,具体用于:
若所述第一平均虚拟收益大于所述第二平均虚拟收益,则将所述映射表缓存的部分内存划分到所述数据缓存;
若所述第一平均虚拟收益小于所述第二平均虚拟收益,则将所述数据缓存的部分内存划分到所述映射表缓存。
在本发明实施例中,逻辑块地址数据与所述映射表管理单元占用的内存空间大小相同,所述动态分配单元,具体用于:
基于LRU算法,选择所述映射表缓存中最近最少使用的映射表管理单元,将其对应的内存空间划分到所述数据缓存;
所述将所述数据缓存的部分内存划分到所述映射表缓存,包括:
基于LRU算法,选择所述数据缓存中的最近最少使用的逻辑块地址数据,将其对应的内存空间划分到所述映射表缓存。
在本发明实施例中,所述装置还包括:
重置单元,用于在更新周期结束后,清空所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表。
由于装置实施例和方法实施例是基于同一构思,在内容不互相冲突的前提下,装置实施例的内容可以引用方法实施例的,在此不赘述。
在本发明实施例中,通过提供一种缓存的动态分配装置,应用于DRAM-Less固态硬盘,所述DRAM-Less固态硬盘包括主控制器,所述主控制器包括缓存空间,所述缓存空间包括数据缓存以及映射表缓存,所述装置包括:内存分配单元,用于预先分配所述数据缓存以及映射表缓存的内存大小;虚拟收益表建立单元,用于建立所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表;平均虚拟收益计算单元,用于在预设更新周期结束时,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益以及映射表缓存对应的第二虚拟收益表的第二平均虚拟收益;动态分配单元,用于根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小。通过动态分配主控制器的缓存空间,本发明能够提高DRAM-Less固态硬盘的读写性能。
本发明实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如图1中的一个处理器111,可使得上述一个或多个处理器可执行上述任意方法实施例中的缓存的动态分配方法,例如,执行上述任意方法实施例中的缓存的动态分配方法,例如,执行以上描述的图4所示的各个步骤;也可实现图15所述的各个单元的功能。
以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种缓存的动态分配方法,应用于DRAM-Less固态硬盘,所述DRAM-Less固态硬盘包括主控制器,所述主控制器包括缓存空间,其特征在于,所述缓存空间包括数据缓存以及映射表缓存,所述方法包括:
预先分配所述数据缓存以及映射表缓存的内存大小;
建立所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表;
在预设更新周期结束时,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益以及映射表缓存对应的第二虚拟收益表的第二平均虚拟收益;
根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小。
2.根据权利要求1所述的方法,其特征在于,所述数据缓存对应的第一虚拟收益表包括一一对应的逻辑块地址数据、读收益值以及写收益值,所述计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益,包括:
获取所述第一虚拟收益表中的每一逻辑块地址数据对应的读收益值以及写收益值;
对每一逻辑块地址数据对应的读收益值以及写收益值进行求和,计算所述第一虚拟收益表的和值;
获取所述更新周期结束时所述数据缓存淘汰的逻辑块地址数据的个数;
根据所述第一虚拟收益表的和值以及所述逻辑块地址数据的个数,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当主机IO读取的逻辑块地址数据命中所述第一虚拟收益表中的逻辑块地址数据时,则增加所述第一虚拟收益表中与该逻辑块地址数据对应的读收益值;
当主机IO写入的逻辑块地址数据命中所述第一虚拟收益表中的逻辑块地址数据时,则增加所述第一虚拟收益表中与该逻辑块地址数据对应的写收益值。
4.根据权利要求1所述的方法,其特征在于,所述映射表缓存对应的第二虚拟收益表包括一一对应的映射表管理单元、读收益值以及写收益值,所述计算所述映射表缓存对应的第二虚拟收益表的第二平均虚拟收益,包括:
获取所述第二虚拟收益表中的每一映射表管理单元对应的读收益值以及写收益值;
对所述每一映射表管理单元对应的读收益值以及写收益值进行求和,计算所述第二虚拟收益表的和值;
获取所述更新周期结束时所述第二虚拟收益表的映射表管理单元的个数;
根据所述第二虚拟收益表的和值以及所述第二虚拟收益表的映射表管理单元的个数,计算所述映射表缓存对应的第二虚拟收益表的第二平均虚拟收益。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述映射表缓存内存占满,基于LRU算法,选择所述映射表缓存中的映射表管理单元,将其加入所述第二虚拟收益表;
当主机IO读取的逻辑块地址数据命中所述第二虚拟收益表中与该逻辑块地址数据对应的映射表管理单元时,则增加所述映射表管理单元的读收益值;
当主机IO写入的逻辑块地址数据命中所述第二虚拟收益表中与该逻辑块地址数据对应的映射表管理单元时,则增加所述映射表管理单元的写收益值。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小,包括:
若所述第一平均虚拟收益大于所述第二平均虚拟收益,则将所述映射表缓存的部分内存划分到所述数据缓存;
若所述第一平均虚拟收益小于所述第二平均虚拟收益,则将所述数据缓存的部分内存划分到所述映射表缓存。
7.根据权利要求6所述的方法,其特征在于,每一所述逻辑块地址数据与所述映射表管理单元占用的内存空间大小相同,所述将所述映射表缓存的部分内存划分到所述数据缓存,包括:
基于LRU算法,选择所述映射表缓存中最近最少使用的映射表管理单元,将其对应的内存空间划分到所述数据缓存;
所述将所述数据缓存的部分内存划分到所述映射表缓存,包括:
基于LRU算法,选择所述数据缓存中的最近最少使用的逻辑块地址数据,将其对应的内存空间划分到所述映射表缓存。
8.根据权利要求1所述的方法,其特征在于,在动态分配所述数据缓存以及映射表缓存的内存大小之后,所述方法还包括:
在更新周期结束后,清空所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表。
9.一种缓存的动态分配装置,应用于DRAM-Less固态硬盘,所述DRAM-Less固态硬盘包括主控制器,所述主控制器包括缓存空间,其特征在于,所述缓存空间包括数据缓存以及映射表缓存,所述装置包括:
内存分配单元,用于预先分配所述数据缓存以及映射表缓存的内存大小;
虚拟收益表建立单元,用于建立所述数据缓存对应的第一虚拟收益表以及所述映射表缓存对应的第二虚拟收益表;
平均虚拟收益计算单元,用于在预设更新周期结束时,计算所述数据缓存对应的第一虚拟收益表的第一平均虚拟收益以及映射表缓存对应的第二虚拟收益表的第二平均虚拟收益;
动态分配单元,用于根据所述第一平均虚拟收益以及第二平均虚拟收益,动态分配所述数据缓存以及映射表缓存的内存大小。
10.一种DRAM-Less固态硬盘,其特征在于,所述DRAM-Less固态硬盘包括:
闪存芯片,所述闪存芯片包括多个晶圆,每一所述晶圆包括多个分组,每一所述分组包括多个物理块,每一所述物理块包括多个物理页;
主控制器,所述主控制器包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8任一项所述的缓存的动态分配方法。
CN202010398316.6A 2020-05-12 2020-05-12 一种缓存的动态分配方法、装置及DRAM-Less固态硬盘 Active CN111639037B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010398316.6A CN111639037B (zh) 2020-05-12 2020-05-12 一种缓存的动态分配方法、装置及DRAM-Less固态硬盘

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010398316.6A CN111639037B (zh) 2020-05-12 2020-05-12 一种缓存的动态分配方法、装置及DRAM-Less固态硬盘

Publications (2)

Publication Number Publication Date
CN111639037A CN111639037A (zh) 2020-09-08
CN111639037B true CN111639037B (zh) 2023-06-09

Family

ID=72330070

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010398316.6A Active CN111639037B (zh) 2020-05-12 2020-05-12 一种缓存的动态分配方法、装置及DRAM-Less固态硬盘

Country Status (1)

Country Link
CN (1) CN111639037B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559385A (zh) * 2020-12-22 2021-03-26 深圳忆联信息***有限公司 提升ssd写性能的方法、装置、计算机设备及存储介质
CN113778911B (zh) * 2021-08-04 2023-11-21 成都佰维存储科技有限公司 L2p数据缓存方法、装置、可读存储介质及电子设备
CN115203075B (zh) * 2022-06-27 2024-01-19 威胜能源技术股份有限公司 一种分布式动态映射缓存设计方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049397A (zh) * 2012-12-20 2013-04-17 中国科学院上海微***与信息技术研究所 一种基于新型存储器的固态硬盘内部缓存管理方法及***
CN103678166A (zh) * 2013-08-16 2014-03-26 记忆科技(深圳)有限公司 一种采用固态硬盘作为计算机高速缓存的实现方法及***
CN104166634A (zh) * 2014-08-12 2014-11-26 华中科技大学 一种固态盘***中的映射表缓存管理方法
CN104657461A (zh) * 2015-02-10 2015-05-27 北京航空航天大学 基于内存与ssd协作式的文件***元数据搜索缓存方法
WO2017054737A1 (zh) * 2015-09-30 2017-04-06 华为技术有限公司 一种基于大容量固态存储的地址映射方法及装置
CN110968529A (zh) * 2019-11-28 2020-04-07 深圳忆联信息***有限公司 无缓存固态硬盘的实现方法、装置、计算机设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049397A (zh) * 2012-12-20 2013-04-17 中国科学院上海微***与信息技术研究所 一种基于新型存储器的固态硬盘内部缓存管理方法及***
CN103678166A (zh) * 2013-08-16 2014-03-26 记忆科技(深圳)有限公司 一种采用固态硬盘作为计算机高速缓存的实现方法及***
CN104166634A (zh) * 2014-08-12 2014-11-26 华中科技大学 一种固态盘***中的映射表缓存管理方法
CN104657461A (zh) * 2015-02-10 2015-05-27 北京航空航天大学 基于内存与ssd协作式的文件***元数据搜索缓存方法
WO2017054737A1 (zh) * 2015-09-30 2017-04-06 华为技术有限公司 一种基于大容量固态存储的地址映射方法及装置
CN110968529A (zh) * 2019-11-28 2020-04-07 深圳忆联信息***有限公司 无缓存固态硬盘的实现方法、装置、计算机设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李东阳 ; 刘鹏 ; 丁科 ; 田浪军 ; .基于固态硬盘的云存储分布式缓存策略.计算机工程.2013,(第04期),全文. *

Also Published As

Publication number Publication date
CN111639037A (zh) 2020-09-08

Similar Documents

Publication Publication Date Title
CN111639037B (zh) 一种缓存的动态分配方法、装置及DRAM-Less固态硬盘
CN103902474B (zh) 一种支持固态盘缓存动态分配的混合存储***和方法
US10126964B2 (en) Hardware based map acceleration using forward and reverse cache tables
EP3414665B1 (en) Profiling cache replacement
US6968424B1 (en) Method and system for transparent compressed memory paging in a computer system
CN105930282B (zh) 一种用于nand flash的数据缓存方法
JP5404483B2 (ja) メモリシステム
JP7013294B2 (ja) メモリシステム
JP2017138852A (ja) 情報処理装置、記憶装置およびプログラム
CN105339910B (zh) 在混合驱动器中的虚拟nand容量扩展
GB2511325A (en) Cache allocation in a computerized system
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
JP2012141946A (ja) 半導体記憶装置
JP2008502069A (ja) メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法
JP2003131946A (ja) キャッシュメモリ制御装置及び方法
CN103543955A (zh) 利用固态硬盘作为设备读缓存的方法、***及固态硬盘
JP7500311B2 (ja) メモリシステム及び情報処理システム
CN113342265B (zh) 缓存管理方法、装置、处理器及计算机装置
US11630779B2 (en) Hybrid storage device with three-level memory mapping
CN113243007A (zh) 存储级存储器访问
US20230120184A1 (en) Systems, methods, and devices for ordered access of data in block modified memory
CN110737607B (zh) 管理hmb内存的方法、装置、计算机设备及存储介质
US20240020014A1 (en) Method for Writing Data to Solid-State Drive
CN116795735B (zh) 固态硬盘空间分配方法、装置、介质及***
CN117806989A (zh) 基于持久化内存的高速数据处理方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant