CN112650450B - 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘 - Google Patents

固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘 Download PDF

Info

Publication number
CN112650450B
CN112650450B CN202011568130.7A CN202011568130A CN112650450B CN 112650450 B CN112650450 B CN 112650450B CN 202011568130 A CN202011568130 A CN 202011568130A CN 112650450 B CN112650450 B CN 112650450B
Authority
CN
China
Prior art keywords
index
resource
units
request
solid state
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
CN202011568130.7A
Other languages
English (en)
Other versions
CN112650450A (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 CN202011568130.7A priority Critical patent/CN112650450B/zh
Publication of CN112650450A publication Critical patent/CN112650450A/zh
Application granted granted Critical
Publication of CN112650450B publication Critical patent/CN112650450B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及固态硬盘控制技术,特别涉及一种固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘。该方法包括:建立包含多个单元的资源池,所述资源池中的每一单元的单元颗粒度相同,每一单元都包括其对应且唯一的资源编号;设置包含多个索引项的索引模块,每个所述索引项包括其对应且唯一的索引编号;在所述索引模块接收到软件请求时,根据所述请求获取所述索引编号关联的资源编号,并操作所述资源编号对应的单元,以响应所述请求。本发明通过索引模块负责与软件交互,进行软件和硬件的相互隔离,降低了软硬件的交互次数,另外,软件请求是基于索引模块,索引模块执行的动作是基于资源池,可以直接响应软件请求的数据,降低了资源的浪费。

Description

固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘
技术领域
本发明涉及固态硬盘控制技术,特别涉及一种固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘。
背景技术
目前,基于固态硬盘的缓存方案中,在读写操作时,均采用固定大小的区块进行管理和释放。而在读写方向上,数据块大小通常是不对称的,如:16K写,96K写,16K读,4K读等。假设固定的区块大小为16K,如果当前需要传输4K的数据,此时也仍需要申请16K的数据量;如果当前需要传输96K的数据,此时则需要软件与硬件之间交互6次,最后传输96K。
发明人在实现本发明实施例的过程中,发现相关技术至少存在以下问题:在需要传输的数据量小于预设区块大小时,会造成资源的浪费;在需要传输的数据量大于预设区块大小时,会增加软硬件的交互次数,从而造成软件延迟。
发明内容
本发明实施方式主要解决的技术问题是如何减少资源浪费,并降低软硬件的交互次数。
为解决上述技术问题,本发明实施方式采用的一个技术方案是:提供一种固态硬盘缓存管理方法,所述方法包括:
建立包含多个单元的资源池,所述资源池中的每一单元的单元颗粒度相同,每一单元都包括其对应且唯一的资源编号;
设置包含多个索引项的索引模块,每个所述索引项包括其对应且唯一的索引编号;
在所述索引模块接收到软件请求时,根据所述请求获取所述索引编号关联的资源编号,并操作所述资源编号对应的单元,以响应所述请求。
可选地,在根据所述请求获得所述索引编号关联的资源编号时,所述方法还包括:
以链表形式将所述资源编号存储至所述索引编号对应的索引项;
当所述链表中的所述资源编号对应的单元使用完毕时,将所述资源编号从所述链表中删除,并回收所述资源编号对应的单元至所述资源池。
可选地,所述建立包含多个单元的资源池包括:
根据存储资源的总量和单元颗粒度确定单元的数量M,并建立包含所述M个单元的资源池,所述M为正整数,M大于等于1。
可选地,所述请求为资源申请请求,所述根据所述请求获取所述索引编号关联的资源编号,并操作所述资源编号对应的单元,以响应所述请求,包括:
获取所述资源申请请求的数据量大小;
根据所述数据量大小和所述单元颗粒度确定所述资源申请请求的单元的数量N,以及所述N个单元对应的资源编号,所述N为正整数,N大于等于1;
确定索引项;
将所述N个单元对应的资源编号与确定的所述索引项的索引编号关联,以实现在所述索引项中挂起所述资源编号对应的N个单元;
控制所述索引项中挂起的所述N个单元为运行状态,并返回所述索引项给所述软件。
可选地,所述请求为资源释放请求,所述根据所述请求获取所述索引编号关联的资源编号,并操作所述资源编号对应的单元,以响应所述请求,包括:
获取所述资源释放请求的数据量大小;
根据所述数据量大小查找为运行状态的索引项;
获取所述索引项中已申请但尚未使用的单元;
控制所述尚未使用的单元释放,并将释放的单元以及所述单元的资源编号存储至所述资源池。
可选地,所述方法还包括:
控制所述索引项中已使用完的单元释放,并将所述单元的资源编号和所述单元回收至所述资源池。
可选地,所述方法还包括:
当所述索引项中全部的单元都被回收至所述资源池时,回收所述索引项至所述索引模块。
可选地,所述索引项的存储容量大于或等于所述资源池中单元的总存储量。
为解决上述技术问题,本发明实施方式采用的另一个技术方案是:提供一种固态硬盘缓存控制器,包括:至少一个处理器;以及存储器,所述存储器中加载有索引模块和资源池,并存储有程序;当所述程序被所述至少一个或多个处理器执行时,所述程序使所述固态硬盘缓存控制器基于所述索引模块和所述资源池执行如上所述的固态硬盘缓存管理方法。
为解决上述技术问题,本发明实施方式采用的又一个技术方案是:提供一种固态硬盘,包括:如上所述的固态硬盘缓存控制器,以及与所述固态硬盘缓存控制器通信连接的至少一个闪存介质。
区别于相关技术的情况,本发明实施例提供了一种固态硬盘缓存管理方法、固态硬盘缓存控制器和固态硬盘,通过设置资源池和索引模块,资源池包括多个单元,每一单元的单元颗粒度相同,并且每一单元有其对应且唯一的资源编号;索引模块包括多个索引项,每个索引项包括其对应且唯一的索引编号;在索引模块接收到软件的请求时,根据该请求获得索引编号关联的资源编号,并操作所述资源编号对应的单元,从而响应所述请求。本发明提供的实施方式,通过索引模块负责与软件交互,进行软件和硬件的相互隔离,降低了软硬件的交互次数,从而提升了硬件资源的利用率。另外,软件请求是基于索引模块,索引模块执行的动作是基于资源池,由此可以直接响应软件请求的数据,降低了资源的浪费。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明实施例提供的一种固态硬盘缓存管理方法的流程图;
图2是当所述请求为资源申请请求时,根据所述请求获取所述索引编号关联的资源编号,并操作所述资源编号对应的单元,以响应所述请求的方法的流程图;
图3是当所述请求为资源释放请求时,根据所述请求获取所述索引编号关联的资源编号,并操作所述资源编号对应的单元,以响应所述请求的方法的流程图;
图4是本发明实施例提供的一种在固态硬盘中建立所述索引模块和所述资源池的示意图;
图5是本发明实施例提供的一种固态硬盘缓存控制器的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明实施例提供的固态硬盘缓存管理方法、固态硬盘缓存控制器以及固态硬盘,针对相关技术中采用固定大小的物理块进行管理和释放缺乏灵活性的弊端,提供了一种缓冲区管理方案,通过索引模块和资源池,完成了资源的链表式管理、申请、释放;通过新建立的索引模块负责与软件交互,进行了软件与硬件的相互隔离,降低了软硬件的交互次数,无论数据大小,可以通过控制使其仅需交互一次,总体上提升了硬件资源的利用率。
具体地,请参阅图1,图1是本发明实施例提供的一种固态硬盘缓存管理方法的流程图。该方法包括:
S11、建立包含多个单元的资源池,所述资源池中的每一单元的单元颗粒度相同,每一单元都包括其对应且唯一的资源编号。
在本实施例中,基于硬件的缓存空间建立一个资源池,所述资源池中包括多个单元(cell),所述单元用于提供数据的读空间或写空间,每一所述单元分别对应硬件缓存的一片物理存储区,如SRAM空间,DRAM空间等。
其中,所述建立包含多个单元的资源池包括:根据存储资源的总量和单元颗粒度确定单元的数量M,并建立包含所述M个单元的资源池,所述M为正整数,并且M大于等于1。
所述单元颗粒度是指一个单元的的大小,比如4K、8K等。资源池中的每一单元的单元颗粒度相同,由此可以提升使用效率。所述单元颗粒度大小具体可以取数据块的最大公约值。
所述存储资源的总量是指所述资源池能够提供的总的数据存储空间大小,比如可以是一个数据块或多个数据块的总存储容量。
比如,所述存储资源的总量为32K,单元颗粒度为4K,则根据存储资源的总量和单元颗粒度确定单元的数量M为8,即所述资源池中总共包括8个单元。
可以将资源池中的每一单元分别进行资源编号,根据所述资源编号管理所述单元。比如,8个单元可以分别命名的资源编号包括0、1、2、3、4、5、6、7,等。这里对资源编号的命名不做特别设置,可以是数字、字母等其中的至少一个组成。
S12、设置包含多个索引项的索引模块,每一所述索引项包括其对应且唯一的索引编号。
所述索引项可以理解为标签模块,一个标签模块对应一个关联的链表,链表中的每一元素可以由所述资源池中的单元的资源编号构成。所述索引项也包括其对应且唯一的索引编号,所述索引编号用于标识所述索引项。比如,索引编号可以命名为0、1、2、3、4、5……N,这里对索引编号的命名不做特别设置,可以是数字、字母等其中的至少一个组成。
在软件与硬件交互时,即是基于所述索引项进行的,软件仅关心所述索引项的总的数据量,而对于所述索引项中的单元的展开方式以及链表的具体组织细节不关心。由此,可降低软件与硬件之间的交互次数。
其中,所述索引项中关联的单元的数量N可根据资源请求的大小决定,比如,一个单元是4K,请求的资源是8k,则可以在一个空闲的索引项中关联两个所述单元。被所述索引项关联的单元可以处于挂起状态,待将请求的资源返回给发起请求的用户时,可以使挂起状态的单元为运行状态。
为了保证索引模块中的索引项可以容纳所有的单元,可设置所述索引项的存储容量大于或等于所述资源池中单元的总存储量。
另外,为了保证资源的复用率,在一个索引项的链表上的单元,在其使用完毕后应当即可被释放,而无需等到整个索引项的单元都使用完毕才释放。被释放的单元对应的资源编号从所述链表中删除,所述单元回收至所述资源池。
S13、在所述索引模块接收到软件请求时,根据所述请求获取所述索引编号关联的资源编号,并操作所述资源编号对应的单元,以响应所述请求。
所述索引模块可用于接收软件的请求,该请求包括资源申请请求和资源释放请求。所述索引模块根据所述请求获取请求的总数据量,根据该总数据量确定待操作的单元的数量N,最后是以索引项的身份来响应软件的请求,至于索引项中单元的具体配置由硬件部分完成。其中,在索引项配置单元时,可以通过关联索引编号和单元对应的资源编号,从而确定每一索引项的单元,包括单元的数量N,以及所述N个单元对应的资源编号,所述N为正整数,N大于等于1。其中,上述M是所述资源池中全部的单元的数量,所述N是一个索引项关联的单元的数量,N小于或等于M。
其中,当所述请求为资源申请请求时,请参阅图2,所述根据所述请求获取所述索引编号关联的资源编号,并操作所述资源编号对应的单元,以响应所述请求,包括:
S131、获取所述资源申请请求的数据量大小;
S133、根据所述数据量大小和所述单元颗粒度确定所述资源申请请求的单元的数量N,以及所述N个单元数目对应的资源编号,所述N为正整数,N大于等于1;
S135、确定索引项;
S137、将所述N个单元对应的资源编号与确定的所述索引项的索引编号关联,以实现在所述索引项中挂起所述资源编号对应的N个单元;
S139、控制所述索引项中挂起的所述N个单元为运行状态,并返回所述索引项给所述软件。
其中,一个资源申请请求对应一个索引项,确定的索引项可以是索引模块中当前为空闲状态的索引项中的一个索引项,该索引项中对应的单元数量N根据资源申请请求的数据量大小和单元颗粒度决定,比如,资源申请请求的数据量大小为16K,单元颗粒度为4K,则确定的单元数量N为4个,可以在所述索引项中,将所述索引项的索引编号与确定的4个单元的资源编号进行关联。
其中,如果资源申请请求的数据量大于当前可使用的单元的总数据量,则可以先申请已有的单元至对应的索引项,待资源量充足时,可补充剩下未提供的数据量;当然,也可以直接执行退出机制,待资源池中有满足所述资源申请请求的数据量时在重复上述动作。
其中,如果软件连续发送多个资源申请请求时,索引模块可按照接收请求的顺序处理每一请求,索引项的创建可在接收到请求时触发,一个请求对应一个索引项,这样不会造成索引项数量不能与请求数量匹配的情况,但是可能配置的索引项中的单元的资源不能满足所述请求的数据量,此时可以执行上述等待机制或退出机制。另外,所述索引项也可是预先都设置好的,设置的索引项的数量大于或等于单元的总量,如果当前没有可响应请求的索引项时,表示索引项资源不足,也即是单元资源不足,此时结束处理。
需要说明的是,针对软件发起的请求以及响应所述请求,都是由所述索引模块来与软件交互。在数据资源充足的情况下,索引模块可以动态地配置满足所述请求的数据量,比如16K写,96K写,16K读,4K读等,由此,不会造成资源的浪费,可操作性强,具有较高的灵活性。
在一些实施例中,所述方法还包括:当所述资源申请请求的数据量大小大于所述资源池中能够使用的单元的存储容量时,则执行退出机制或等待机制,在所述单元的存储容量满足所述资源申请请求的数据量大小时,重新处理所述资源申请请求。
其中,当所述请求为源释放请求时,可以由软件发起该资源释放请求,也可以由硬件主动释放资源,所述硬件能够实时的监测资源是使用情况,并管理资源。
如果是软件发起的资源释放请求,请参阅图3,所述根据所述请求获取所述索引编号关联的资源编号,并操作所述资源编号对应的单元,以响应所述请求,包括:
S132、获取所述资源释放请求的数据量大小;
S134、根据所述数据量大小查找为运行状态的索引项;
S136、获取所述索引项中已申请但尚未使用的单元;
S138、控制所述尚未使用的单元释放,并将释放的单元以及所述单元的资源编号存储至所述资源池。
其中,根据所述数据量大小查找为运行状态的索引项,即是在运行状态的索引项中查找与所述数据量大小匹配的索引项,然后针对该索引项执行释放动作,释放针对的是索引项中具体的单元,由于硬件可以监测每一单元的运行状态,便也可以获知哪些单元不是当前正在使用的单元,这些单元可以被释放掉,以提高资源的复用率。
其中,如果与所述数据量大小匹配的索引项包含多个时,具体释放哪个索引项可以由硬件控制器决定,比如,释放包含最多空闲状态的单元的索引项,或者释放最先使用的索引项,或者释放最近使用的索引项,等。
其中,被释放的单元可以回收至所述资源池,以及所述单元的资源编号也在所述资源池中被管理。
上述是由软件发起资源释放请求,值得说明的是,还可以由硬件本身主动释放资源。如果是硬件发起资源释放请求,可以在硬件传输完成后,控制所述索引项中已使用完的单元释放,并将所述单元的资源编号和所述单元回收至所述资源池。
上述无论是软件发起的资源释放请求,还是硬件发起的资源释放请求,都可以在索引项中运行或挂起的单元都被使用后,回收该索引项。因此,所述方法还包括:当所述索引项中全部的单元都被回收至所述资源池时,回收所述索引项至所述索引模块。回收的索引项作为空闲的索引项,可以在下一次请求来到时,针对所述索引项执行相应的读数据或写数据操作。
本发明实施例提供的固态硬盘缓存管理方法,通过设置资源池和索引模块,完成了资源的链式管理、申请、释放。进行了软、硬件的相互隔离,减少了软硬件的交互次数,提升了硬件资源的利用率。如前文所描述,假设单元颗粒度是4K,则无论是传输4K,16K还是96K,软硬件交互只需要一次,降低了延迟,有利于固态硬盘读写带宽和IOPS(Input/OutputOperations Per Second,每秒进行读写操作的次数)的提升,同时也带来了更好的灵活性。
下面基于具体的实例来说明上述固态硬盘缓存管理方法。
例如,请参阅图4,图4是一种在固态硬盘中建立所述索引模块和所述资源池的示意图。其中,Tag Pool对应索引模块,索引模块中的Tag对应索引项,索引编号为0、1、2、3……M-1,每一索引项关联一链表,链表中存储单元的资源编号。Resource Pool对应资源池,资源池包括多个单元,每一单元有其对应的资源编号,比如图4中资源编号为0、1、2、3……N-1。其中,M和N都是大于或等于1的整数。每一单元都对应硬件Memory的一片位置。
其中,所述索引模块用于从资源池中申请资源,并组织链表,若链表中的资源单元使用完毕,则删除该单元,并将该单元回收至资源池。同时,该索引模块负责与软件的交互。
比如,软件申请索引项Tag,申请的数据量为a;硬件检测索引模块中是否存在空闲的索引项;若不存在空闲的索引项,则提示Tag资源不足,可以结束处理;若存在空闲的索引项,获取该索引项Tag,根据数据量a从资源池中申请空闲单元,并将申请的空闲单元基于该索引项Tag进行链式管理,其包括在链表中存放所述空闲单元的资源编号,管理空闲单元的排列顺序等。如果当前该索引项Tag中实际分配的单元的总数据量满足所述申请的数据量a,则可以向软件返回所述索引项Tag,并将该索引项Tag中的单元的由挂起状态变为运行状态。其中,如果当前该索引项Tag中实际分配的单元的总数据量不满足所述申请的数据量a,则可以继续向所述资源池申请空闲的单元,直到当前该索引项Tag中实际分配的单元的总数据量满足所述申请的数据量a。
又比如,软件释放索引项Tag,软件发起释放Tag请求,该请求具体是释放Tag i;硬件接收到该请求后,在运行状态的数据表中查找索引项Tag i,并进一步查找Tag i中已申请但还未使用的单元j;硬件将所述单元j进行释放,并将单元j回收至所述资源池;检测所述Tag i中的单元是否都已全部回收,若否,则重复上述过程,直到所述Tag i中的单元都全部被回收,此时,可以将所述Tag i回收到所述索引模块中。
具体地,假设资源池中的单元的颗粒度为4K,并且可用总量为32K,即资源编号为0至7。按照时间顺序,该系统的状态迁移过程具体可参考下述表1:
表1
其中,在时间点0,软件动作和硬件动作都是初始化状态,空闲的索引项包括0、1、2、3、4、5、6、7,空闲的单元包括0、1、2、3、4、5、6、7。在时间点1时,软件申请16K,索引模块接收到该请求后,向资源池申请16K数据存储空间,并申请索引项0,索引项0关联的单元包括0-1-2-3;在时间点2时,软件申请4K,索引模块接收到该请求后,向资源池申请4K数据存储空间,并申请索引项1,索引项1关联的单元包括4;在时间点3时,软件申请8K,索引模块接收到该请求后,向资源池申请8K数据存储空间,并申请索引项2,索引项2关联的单元包括5-6;在时间点4时,硬件主动释放8K,索引模块控制索引项0关联的单元1-3释放,当然也可以是释放单元2-4,具体选择释放哪个单元是根据单元当前是使用状态决定的;在时间点5时,软件申请4K,索引模块接收到该请求后,向资源池申请4K数据存储空间,并申请索引项3,索引项3关联的单元包括7;在时间点6时,硬件主动释放8K,索引模块控制索引项2关联的单元5、6释放;在时间点7时,软件申请16K,索引模块接收到该请求后,向资源池申请16K数据存储空间,并申请索引项4,索引项4关联的单元包括1-3-5-6;在时间点8时,软件请求释放16K,而由于当前空闲的单元仅包括0和2,因此硬件只能释放8K,即释放单元0和2。
上述被释放的单元都可以回收至资源池。所述索引项中的单元都被回收至资源池时,同样回收所述索引项至索引模块的资源池中。
请参阅图5,图5是本发明实施例提供的一种固态硬盘缓存控制器20的硬件结构示意图,该固态硬盘缓存控制器20可用于执行如上所述的固态硬盘缓存管理方法,该固态硬盘缓存控制器20包括:一个或多个处理器21以及存储器22,图5中以一个处理器21为例。
处理器21和存储器22可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的固态硬盘缓存管理方法对应的程序指令/模块,包括所述索引模块和所述资源池。处理器21通过运行存储在存储器22中的非易失性软件程序、指令以及模块,从而执行固态硬盘缓存控制器的各种功能应用以及数据处理,即实现上述方法实施例固态硬盘缓存管理方法。
存储器22可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器。
所述一个或者多个模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述任意方法实施例中的固态硬盘缓存管理方法,例如,执行以上描述的图1、图2、图3中的方法步骤。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
本发明实施例还提供一种固态硬盘,所述固态硬盘包括上述实施例所述的固态硬盘缓存控制器20,以及至少一个闪存介质。所述固态硬盘缓存控制器20与所述至少一个闪存介质通信连接。
本实施例提供的固态硬盘,通过索引模块负责与软件交互,进行软件和硬件的相互隔离,降低了软硬件的交互次数,从而提升了所述固态硬盘的硬件资源的利用率。另外,软件请求是基于索引模块,索引模块执行的动作是基于资源池,由此可以直接响应软件请求的数据,降低了资源的浪费。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (8)

1.一种固态硬盘缓存管理方法,其特征在于,所述方法包括:
建立包含多个单元的资源池,所述资源池中的每一单元的单元颗粒度相同,每一单元都包括其对应且唯一的资源编号;
设置包含多个索引项的索引模块,每个所述索引项包括其对应且唯一的索引编号;
在所述索引模块接收到软件请求时,根据所述请求获取所述索引编号关联的资源编号,并操作所述资源编号对应的单元,以响应所述请求,具体的:
在所述索引模块接收到资源申请请求时,获取所述资源申请请求的数据量大小;根据所述数据量大小和所述单元颗粒度确定所述资源申请请求的单元的数量N,以及所述N个单元对应的资源编号,所述N为正整数,N大于等于1;确定索引项;将所述N个单元对应的资源编号与确定的所述索引项的索引编号关联,以实现在所述索引项中挂起所述资源编号对应的N个单元;控制所述索引项中挂起的所述N个单元为运行状态,并返回所述索引项给所述软件;
或在所述索引模块接收到资源释放请求时,获取所述资源释放请求的数据量大小;根据所述数据量大小查找为运行状态的索引项;获取所述索引项中已申请但尚未使用的单元;控制所述尚未使用的单元释放,并将释放的单元以及所述单元的资源编号存储至所述资源池。
2.根据权利要求1所述的方法,其特征在于,在根据所述请求获得所述索引编号关联的资源编号时,所述方法还包括:
以链表形式将所述资源编号存储至所述索引编号对应的索引项;
当所述链表中的所述资源编号对应的单元使用完毕时,将所述资源编号从所述链表中删除,并回收所述资源编号对应的单元至所述资源池。
3.根据权利要求1所述的方法,其特征在于,所述建立包含多个单元的资源池包括:
根据存储资源的总量和单元颗粒度确定单元的数量M,并建立包含所述M个单元的资源池,所述M为正整数,M大于等于1。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
控制所述索引项中已使用完的单元释放,并将所述单元的资源编号和所述单元回收至所述资源池。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述索引项中全部的单元都被回收至所述资源池时,回收所述索引项至所述索引模块。
6.根据权利要求1所述的方法,其特征在于,所述索引项的存储容量大于或等于所述资源池中单元的总存储量。
7.一种固态硬盘缓存控制器,其特征在于,包括:
至少一个处理器;
以及存储器,所述存储器中加载有索引模块和资源池,并存储有程序;
当所述程序被所述至少一个或多个处理器执行时,所述程序使所述固态硬盘缓存控制器基于所述索引模块和所述资源池执行权利要求1至6任一项所述的方法。
8.一种固态硬盘,其特征在于,包括:权利要求7所述的固态硬盘缓存控制器,以及与所述固态硬盘缓存控制器通信连接的至少一个闪存介质。
CN202011568130.7A 2020-12-25 2020-12-25 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘 Active CN112650450B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011568130.7A CN112650450B (zh) 2020-12-25 2020-12-25 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011568130.7A CN112650450B (zh) 2020-12-25 2020-12-25 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘

Publications (2)

Publication Number Publication Date
CN112650450A CN112650450A (zh) 2021-04-13
CN112650450B true CN112650450B (zh) 2024-02-27

Family

ID=75363392

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011568130.7A Active CN112650450B (zh) 2020-12-25 2020-12-25 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘

Country Status (1)

Country Link
CN (1) CN112650450B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1866218A (zh) * 2005-12-22 2006-11-22 华为技术有限公司 软件系统的资源管理方法
CN102184211A (zh) * 2011-05-03 2011-09-14 成都市华为赛门铁克科技有限公司 文件系统和检索、写入、修改或删除文件的方法与装置
CN104199892A (zh) * 2014-08-26 2014-12-10 上海爱数软件有限公司 一种基于压缩合并异步更新的索引读写方法
CN106933583A (zh) * 2017-03-06 2017-07-07 联想(北京)有限公司 操作系统中识别硬件设备的方法及计算机设备
WO2018077292A1 (zh) * 2016-10-28 2018-05-03 北京市商汤科技开发有限公司 数据处理方法和系统、电子设备
CN110351877A (zh) * 2018-04-04 2019-10-18 维沃移动通信有限公司 非竞争随机接入资源配置方法和设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1866218A (zh) * 2005-12-22 2006-11-22 华为技术有限公司 软件系统的资源管理方法
CN102184211A (zh) * 2011-05-03 2011-09-14 成都市华为赛门铁克科技有限公司 文件系统和检索、写入、修改或删除文件的方法与装置
CN104199892A (zh) * 2014-08-26 2014-12-10 上海爱数软件有限公司 一种基于压缩合并异步更新的索引读写方法
WO2018077292A1 (zh) * 2016-10-28 2018-05-03 北京市商汤科技开发有限公司 数据处理方法和系统、电子设备
CN106933583A (zh) * 2017-03-06 2017-07-07 联想(北京)有限公司 操作系统中识别硬件设备的方法及计算机设备
CN110351877A (zh) * 2018-04-04 2019-10-18 维沃移动通信有限公司 非竞争随机接入资源配置方法和设备

Also Published As

Publication number Publication date
CN112650450A (zh) 2021-04-13

Similar Documents

Publication Publication Date Title
JP6314355B2 (ja) メモリ管理方法およびデバイス
US20190370043A1 (en) Cooperative memory management
CN108900626B (zh) 一种云环境下数据存储方法、装置及系统
JP2012142012A5 (zh)
US11188365B2 (en) Memory overcommit by speculative fault
US11740812B2 (en) Data storage device idle time processing
US10691477B2 (en) Virtual machine live migration using intelligent order of pages to transfer
CN110162396A (zh) 内存回收方法、装置、系统和存储介质
CN101093454A (zh) 一种在分布式系统中执行sql脚本文件的方法和装置
US11366689B2 (en) Hardware for supporting OS driven observation and anticipation based on more granular, variable sized observation units
CN109460302B (zh) 用于数据流式计算的内存管理系统及其方法
KR102387922B1 (ko) 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
CN113254223B (zh) 一种系统重启后的资源分配方法、系统及相关组件
CN108733585B (zh) 缓存系统及相关方法
CN114385349A (zh) 容器组部署方法和装置
US10289329B2 (en) Burst buffer dynamic logical volume sizing in high performance computing environment
CN112650450B (zh) 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘
US10976934B2 (en) Prioritizing pages to transfer for memory sharing
CN107209738B (zh) 储存存储器直接访问
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
CN115618966A (zh) 用于训练机器学习模型的方法、装置、设备和介质
CN108415779A (zh) 用于通过主机结构接口的队列管理的技术
CN110618794B (zh) 一种SSD固件访问NandFlash的方法和系统
CN117332881B (zh) 分布式训练方法及电子设备
US20170131937A1 (en) Prioritizing memory pages to copy for memory migration

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