CN108255420A - 一种固态硬盘缓存管理方法及固态硬盘 - Google Patents

一种固态硬盘缓存管理方法及固态硬盘 Download PDF

Info

Publication number
CN108255420A
CN108255420A CN201711406418.2A CN201711406418A CN108255420A CN 108255420 A CN108255420 A CN 108255420A CN 201711406418 A CN201711406418 A CN 201711406418A CN 108255420 A CN108255420 A CN 108255420A
Authority
CN
China
Prior art keywords
cache blocks
addr
memory management
caching
new
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
Application number
CN201711406418.2A
Other languages
English (en)
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 Union Memory Information System Co Ltd
Original Assignee
Shenzhen Union Memory Information System 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 Union Memory Information System Co Ltd filed Critical Shenzhen Union Memory Information System Co Ltd
Priority to CN201711406418.2A priority Critical patent/CN108255420A/zh
Publication of CN108255420A publication Critical patent/CN108255420A/zh
Pending legal-status Critical Current

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/061Improving I/O performance
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种固态硬盘缓存管理方法及固态硬盘,其特征在于将固态硬盘缓存按8KB为单位划分为多个管理单元,每个管理单元分为2个4KB单位的子缓存管理单元,并设置分配数记录每个管理单元已经被分配的数目,外部模块以4KB为单位向缓存管理模块申请缓存,按申请顺序只有管理单元的分配数为2时才从新的管理单元中分配新的子缓存管理单元。引入新的缓存管理方法,配合拼接模块能提高8KB Data FIS的形成概率,进而实现提升固态硬盘读写性能的效果。

Description

一种固态硬盘缓存管理方法及固态硬盘
技术领域
本发明涉及固态硬盘控制技术,特别涉及一种固态硬盘缓存管理方法及固态硬盘。
背景技术
SATA SSD的控制器设计和固件(FW)设计需要遵循ATA接口协议,ATA协议规定原生命令队列NCQ(Native Command Queuing)读写命令数据传输的数据帧信息结构(Data FIS-Data Frame Information Structure,简称数据包)最大也建议为8KB,因为每次建立数据包的传输需要消耗一定的时间,所以单个命令形成的数据包越少,建立数据包传输造成的时间消耗越少。最理想的情况是命令的每个数据包都是8KB的,最后一笔不足8KB的数据包除外。
当前SATA SSD的固件设计中闪存转换层FTL(Flash Translation Layer) 采用4KB的映射机制,理所当然的缓存管理模块也是以4KB为单位管理且以链表形式管理,这样比较简单实用,如图1是常规的缓存管理示意图,逻辑链表上维护的是物理缓存块的索引值,缓存Buffer管理模块每次从逻辑链表头部摘下一个索引值,计算出该索引值对应的4KB物理缓存块的地址给申请者,申请者使用完归还后,缓存管理模块根据缓存块地址逆向计算出对应的索引值,把该索引值挂到链表尾部。由于固件设计中命令重排序的策略,最先申请出去的缓存块不一定优先与主机传输数据,所以也并不能保证优先申请出去的缓存块优先返还给缓存管理模块,即最后逻辑链表上相邻的索引值对应的物理块地址不一定是物理连续的,见图1中逻辑索引与物理块的对应关系,存在交错情况。
为了提高8KB Data FIS的个数,在固件中增加一个拼接模块,如图2所示, 4KB的buffer首先放入拼接模块,由拼接模块尝试拼成8KB的Data FIS后再传给SSD控制器,但是这技术依赖于连续两个从buffer模块申请出的4KB buffer 在物理上也是连续的,但是由于SSD内部存在命令重排序的策略,在SSD运行期间,buffer模块中逻辑链表上相邻的索引值不一定都是物理连续的,如果这种不连续概率很大,那么拼接模块的作用也不大。
为了保证8KB Data FIS的拼成,现有技术中存在一个拼接8KB Data FIS 的模块,图2是增加拼接模块后的数据结构图,提交至Data FISFIFO的buffer 块地址段首先送入拼接模块,由拼接模块决定是否形成Data FIS描述符,该模块维护了以下字段:
1.start_addr:缓存的buffer块起始地址。
2.end_addr:缓存的buffer块末尾地址。
3.is_valid:指示是否有有效缓存。
图3是拼接模块的拼接流程图,拼接模块获得新buffer块后的处理流程如下:判断is_valid是否置起,如果没有置起则置起is_valid,并置start_addr 为新buffer块的起始地址,置end_addr为新buffer块的末尾地址并结束流程;如果is_valid已经置起则判断end_addr是否等于新buffer块的起始地址,如果不等于则说明拼接模块之前缓存的buffer与新来的buffer块不连续,则把之前缓存的buffer形成Data FIS描述符刷到SSD控制器的Data FIS FIFO,再把新来的buffer块缓存下来,即置start_addr为新buffer块的起始地址,置 end_addr为新buffer块的末尾地址并结束流程;如果end_addr等于新buffer 块的起始地址则将新buffer块与之前缓存的buffer拼接起来,即置end_addr 为新buffer块的末尾地址;如果拼接后的buffer没有超过8KB则结束流程,否则切割出8KB形成Data FIS描述符刷到SSD控制器的Data FIS FIFO并记录剩余buffer,即start_addr增大8KB;如果新buffer块不是命令的最后一段 buffer则结束流程,否则将拼接模块中剩余的buffer形成Data FIS描述符刷到SSD控制器的Data FIS FIFO,清除is_valid标志并结束流程。
以图2中的示例为例,一个命令分配了六块4KB的buffer,其中第一块合第二块不连续,第二块和第三块连续,第三块和第四块不连续,第四、第五、第六块是连续的,它们在拼接模块中的处理如下:
Step1:第一块buffer进入拼接模块,发现is_valid无效,则设置 start_addr、end_addr为第一块buffer的始末地址,置is_valid为有效。
Step2:第二块buffer进入拼接模块,发现is_valid有效,且end_addr 不等于第二块buffer的起始地址,那么把第一块形成Data FIS描述符,然后置start_addr、end_addr为第二块buffer的始末地址。
Step3:第三块buffer进入拼接模块,发现is_valid有效,且end_addr 等于第三块buffer的起始地址,则合并第二第三块buffer,即置end_addr为第三块buffer的末尾地址,且此时缓存的buffer满了8KB,则把前8KB形成 Data FIS刷走,然后剩余buffer为0,则置is_valid为无效。
Step4:第四块buffer进入拼接模块,发现is_valid无效,则设置 start_addr、end_addr为第四块buffer的始末地址,置is_valid为有效。
Step5:第五块buffer进入拼接模块,发现is_valid有效,且end_addr 等于第五块buffer的起始地址,则合并第四第五块buffer,即置end_addr为第五块buffer的末尾地址,且此时缓存的buffer满了8KB,则把前8KB形成 Data FIS刷走,然后剩余buffer为0,则置is_valid为无效。
Step6:第六块buffer进入拼接模块,发现is_valid无效,则设置 start_addr、end_addr为第六块buffer的始末地址,置is_valid为有效,且此为命令的最后一笔buffer,则强制将缓存中的buffer都形成Data FIS刷走。
另外,该技术的效果取决于buffer管理模块逻辑链表上相邻的buffer索引值对应的物理buffer是否连续,如果都是连续的,那么拼接模块拼成8KB的概率可以达到百分之百,所以为了使新技术能发挥最大作用,SSD需要在空闲期间(内部不处理主机请求)重置(Reset)buffer管理模块,重置后的buffer 管理模块中逻辑链表上相邻的buffer索引值对应的物理buffer都是连续的。
但是,在运行期间SSD不能随意重置buffer管理模块,否则固件会出错。那么运行期间buffer模块中逻辑链表上相邻的索引值对应的4KB buffer物理地址不一定是连续的,这从源头上限制了拼接模块的作用。
发明内容
针对以上缺陷,本发明目的是本发明目的是如何降低建立数据包传输造成的时间消耗。
为了解决以上问题本发明提出了固态硬盘缓存管理方法,其特征在于将固态硬盘缓存按8KB为单位划分为多个管理单元,每个管理单元分为2个4KB单位的子缓存管理单元,并设置分配数记录每个管理单元已经被分配的数目,外部模块以4KB为单位向缓存管理模块申请缓存,按申请顺序只有管理单元的分配数为2时才从新的管理单元中分配新的子缓存管理单元。
所述的固态硬盘缓存管理方法,其特征在于通过逻辑链表的索引,将连续的2个索引值作为一个缓存管理单元,每个缓存管理单元每分配一个子缓存管理单元,分配数加1,当分配数为2时,将该缓存管理单元从逻辑链表中移除。
所述的固态硬盘缓存管理方法,其特征在于当已分配使用的缓存管理单元的两个子缓存管理单元都被回收时,将该缓存管理单元挂到逻辑链表尾部。
所述的固态硬盘缓存管理方法,其特征在于每次申请缓存管理单元时都从逻辑链表的表头开始分配缓存管理单元。
所述的固态硬盘缓存管理方法,其特征在于在SSD控制器与SSD缓存管理模块中增加拼接模块,所述拼接模块将主机下发的读命令或写命令的缓存块中连续的缓存块拼接为8K大小的数据包,并通过数据包描述符表描述拼接的信息, 所述SSD控制器的DMA根据描述符表描述的信息控制读或写的数据传输;所述拼接模块缓存块上一个缓存信息,至少包括上一个缓存块的块起始地址 start_addr、块尾地址end_addr和是否有效标志is_valid;所述拼接模块缓存接收到一个新缓存块,将新缓存块的块起始地址start_addr与上一个缓存块的块尾地址end_addr进行比较判断是否连续,如果连续则将上一个缓存块和新缓存块进行拼接,拼接为8K大小的数据包,并对应更新数据包描述符表数据;所述拼接模块至少维护以下信息:缓存块的块起始地址start_addr、块尾地址 end_addr和是否有效标志is_valid;提交到数据包队列的缓存块地址首先送入到所述拼接模块,判断is_valid是否被置起,如果没有置起则置起is_valid,并置start_addr为新缓存块的起始地址,置end_addr为新缓存块的末尾地址并结束本次拼接;如果is_valid已经置起则判断end_addr是否等于新缓存块的起始地址,如果不等于则说明拼接模块之前缓存的缓存与新来的缓存块不连续,则把之前缓存的缓存形成数据包描述符表刷到SSD控制器的数据包队列,再把新来的缓存块缓存下来,即置start_addr为新缓存块的起始地址,置 end_addr为新缓存块的末尾地址并结束流程;如果end_addr等于新缓存块的起始地址则将新缓存块与之前缓存的缓存拼接起来,即置end_addr为新缓存块的末尾地址;如果拼接后的缓存没有超过8KB则结束本次拼接,否则切割出8KB 形成Data FIS描述符表刷到SSD控制器的数据包队列并记录剩余缓存;如果新缓存块不是命令的最后一段缓存则结束拼接,否则将拼接模块中剩余的缓存形成数据包描述符表刷到SSD控制器的数据包队列,清除is_valid标志并结束拼接;SSD在空闲时重置缓存管理模块,重置换存管理模块将逻辑链表中相邻的缓存块的索引值对应的物理缓存整理为连续状态。
一种固态硬盘,其特征在于将固态硬盘缓存按8KB为单位划分为多个管理单元,每个管理单元分为2个4KB单位的子缓存管理单元,并设置分配数记录每个管理单元已经被分配的数目,外部模块以4KB为单位向缓存管理模块申请缓存,按申请顺序只有管理单元的分配数为2时才从新的管理单元中分配新的子缓存管理单元。
所述的固态硬盘,其特征在于通过逻辑链表的索引,将连续的2个索引值作为一个缓存管理单元,每个缓存管理单元每分配一个子缓存管理单元,分配数加1,当分配数为2时,将该缓存管理单元从逻辑链表中移除。
所述的固态硬盘,其特征在于当已分配使用的缓存管理单元的两个子缓存管理单元都被回收时,将该缓存管理单元挂到逻辑链表尾部。
所述的固态硬盘,其特征在于每次申请缓存管理单元时都从逻辑链表的表头开始分配缓存管理单元。
本发明的有益效果是:引入新的缓存管理方法,配合拼接模块能提高8KB DataFIS的形成概率,进而实现提升固态硬盘读写性能的效果。
附图说明
图1是常规的缓存管理示意图;
图2是增加拼接模块后的数据结构图;
图3是拼接模块的拼接流程图;
图4是buffer模块管理示意图;
图5是8KB单元内部物理地址分布示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
提出了一种新的buffer管理方法,使得相邻两次申请出去的4KB buffer 物理地址是连续的,核心思想为buffer模块按照8KB为单元管理buffer,但是外部模块还是按照4KB为单元申请或返回buffer,图4图4是buffer模块管理示意图,在buffer模块初始化时,逻辑链表上相邻的4KB索引值对应的4KB buffer在物理上是连续的,那么我们为相邻的两个4KB索引值提供一个管理单元,我们称它为8KB管理单元,这个8KB管理单元维护了一个变量:分配数,表示在这个8KB单元内已分配出的4KB buffer数目。
buffer管理模块对外分配4KB buffer的流程为,查看逻辑链表头部的8KB 管理单元,如果它的分配数为0,那么分配出该单位内第一个4KB buffer,然后分配数加1且结束流程,否则分配数一定为1,那么分配出该单元内的第二个 4KB buffer,然后分配数加1,此时分配数一定等于2,说明该单元内的两个4KB 都被分配出去了,那么把这个8KB管理单元从逻辑链表头摘除并结束流程。这样可以保证同一8KB管理单元内连续分配出去的两个4KBbuffer在物理上肯定是连续的。
buffer管理模块回收4KB buffer的流程为,计算4KB buffer(除以2)对应的8KB管理单元,且分配数减1,如果分配数等于1则结束流程,否则分配数一定等于0,那么将该8KB管理单元挂到逻辑链表尾部并结束流程。这样可以保证逻辑链表上所有8KB管理单元内的两个4KB buffer在物理上是连续的。
SSD运行期间,由于固件的命令重排序,4KB buffer不一定按照分配出去的顺序返回,8KB单元管理技术,不能保证逻辑链表上相邻8KB单元对应的物理 buffer地址连续,但会保证8KB单元内部的两个4KB buffer永远是物理连续的,图5是8KB单元内部物理地址分布示意图,如此,一个命令除了头部和尾部的 4KB不一定能拼成8KB的Data FIS,中间的Data FIS肯定都是8KB的,读写性能将大大提升。
还是以图2中的示例为例,一个命令需要分配六块4KB的buffer,buffer 管理模块分配buffer的步骤为:
分配第一块buffer:buffer管理模块查看逻辑链表头第一个8KB管理单元,发现分配数为0,则分配出该8KB管理单元中第一个4KB buffer且分配数加1。
分配第二块buffer:buffer管理模块查看逻辑链表头第一个8KB管理单元,发现分配数为1,则分配出该8KB管理单元中第二个4KB buffer且分配数加1,然后把该8KB管理单元从逻辑链表摘除。
分配第三块buffer:buffer管理模块查看逻辑链表头第一个8KB管理单元,发现分配数为0,则分配出该8KB管理单元中第一个4KB buffer且分配数加1。
分配第四块buffer:buffer管理模块查看逻辑链表头第一个8KB管理单元,发现分配数为1,则分配出该8KB管理单元中第二个4KB buffer且分配数加1,然后把该8KB管理单元从逻辑链表摘除。
分配第五块buffer:buffer管理模块查看逻辑链表头第一个8KB管理单元,发现分配数为0,则分配出该8KB管理单元中第一个4KB buffer且分配数加1。
分配第六块buffer:buffer管理模块查看逻辑链表头第一个8KB管理单元,发现分配数为1,则分配出该8KB管理单元中第二个4KB buffer且分配数加1,然后把该8KB管理单元从逻辑链表摘除。
以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。

Claims (10)

1.一种固态硬盘缓存管理方法,其特征在于将固态硬盘缓存按8KB为单位划分为多个管理单元,每个管理单元分为2个4KB单位的子缓存管理单元,并设置分配数记录每个管理单元已经被分配的数目,外部模块以4KB为单位向缓存管理模块申请缓存,按申请顺序只有管理单元的分配数为2时才从新的管理单元中分配新的子缓存管理单元。
2.根据权利要求1所述的固态硬盘缓存管理方法,其特征在于通过逻辑链表的索引,将连续的2个索引值作为一个缓存管理单元,每个缓存管理单元每分配一个子缓存管理单元,分配数加1,当分配数为2时,将该缓存管理单元从逻辑链表中移除。
3.根据权利要求1所述的固态硬盘缓存管理方法,其特征在于当已分配使用的缓存管理单元的两个子缓存管理单元都被回收时,将该缓存管理单元挂到逻辑链表尾部。
4.根据权利要求2所述的固态硬盘缓存管理方法,其特征在于每次申请缓存管理单元时都从逻辑链表的表头开始分配缓存管理单元。
5.根据权利要求1至4任意一项所述的固态硬盘缓存管理方法,其特征在于在SSD控制器与SSD缓存管理模块中增加拼接模块,所述拼接模块将主机下发的读命令或写命令的缓存块中连续的缓存块拼接为8K大小的数据包,并通过数据包描述符表描述拼接的信息,所述SSD控制器的DMA根据描述符表描述的信息控制读或写的数据传输;所述拼接模块缓存块上一个缓存信息,至少包括上一个缓存块的块起始地址start_addr、块尾地址end_addr和是否有效标志is_valid;所述拼接模块缓存接收到一个新缓存块,将新缓存块的块起始地址start_addr与上一个缓存块的块尾地址end_addr进行比较判断是否连续,如果连续则将上一个缓存块和新缓存块进行拼接,拼接为8K大小的数据包,并对应更新数据包描述符表数据;所述拼接模块至少维护以下信息:缓存块的块起始地址start_addr、块尾地址end_addr和是否有效标志is_valid;提交到数据包队列的缓存块地址首先送入到所述拼接模块,判断is_valid是否被置起,如果没有置起则置起is_valid,并置start_addr为新缓存块的起始地址,置end_addr为新缓存块的末尾地址并结束本次拼接;如果is_valid已经置起则判断end_addr是否等于新缓存块的起始地址,如果不等于则说明拼接模块之前缓存的缓存与新来的缓存块不连续,则把之前缓存的缓存形成数据包描述符表刷到SSD控制器的数据包队列,再把新来的缓存块缓存下来,即置start_addr为新缓存块的起始地址,置end_addr为新缓存块的末尾地址并结束流程;如果end_addr等于新缓存块的起始地址则将新缓存块与之前缓存的缓存拼接起来,即置end_addr为新缓存块的末尾地址;如果拼接后的缓存没有超过8KB则结束本次拼接,否则切割出8KB形成DataFIS描述符表刷到SSD控制器的数据包队列并记录剩余缓存;如果新缓存块不是命令的最后一段缓存则结束拼接,否则将拼接模块中剩余的缓存形成数据包描述符表刷到SSD控制器的数据包队列,清除is_valid标志并结束拼接;SSD在空闲时重置缓存管理模块,重置换存管理模块将逻辑链表中相邻的缓存块的索引值对应的物理缓存整理为连续状态。
6.一种固态硬盘,其特征在于将固态硬盘缓存按8KB为单位划分为多个管理单元,每个管理单元分为2个4KB单位的子缓存管理单元,并设置分配数记录每个管理单元已经被分配的数目,外部模块以4KB为单位向缓存管理模块申请缓存,按申请顺序只有管理单元的分配数为2时才从新的管理单元中分配新的子缓存管理单元。
7.根据权利要求6所述的固态硬盘,其特征在于通过逻辑链表的索引,将连续的2个索引值作为一个缓存管理单元,每个缓存管理单元每分配一个子缓存管理单元,分配数加1,当分配数为2时,将该缓存管理单元从逻辑链表中移除。
8.根据权利要求6所述的固态硬盘,其特征在于当已分配使用的缓存管理单元的两个子缓存管理单元都被回收时,将该缓存管理单元挂到逻辑链表尾部。
9.根据权利要求7所述的固态硬盘,其特征在于每次申请缓存管理单元时都从逻辑链表的表头开始分配缓存管理单元。
10.根据权利要求6至9任意一项所述的固态硬盘,其特征在于在SSD控制器与SSD缓存管理模块中增加拼接模块,所述拼接模块将主机下发的读命令或写命令的缓存块中连续的缓存块拼接为8K大小的数据包,并通过数据包描述符表描述拼接的信息,所述SSD控制器的DMA根据描述符表描述的信息控制读或写的数据传输;所述拼接模块缓存块上一个缓存信息,至少包括上一个缓存块的块起始地址start_addr、块尾地址end_addr和是否有效标志is_valid;
所述拼接模块缓存接收到一个新缓存块,将新缓存块的块起始地址start_addr与上一个缓存块的块尾地址end_addr进行比较判断是否连续,如果连续则将上一个缓存块和新缓存块进行拼接,拼接为8K大小的数据包,并对应更新数据包描述符表数据;所述拼接模块至少维护以下信息:缓存块的块起始地址start_addr、块尾地址end_addr和是否有效标志is_valid;
提交到数据包队列的缓存块地址首先送入到所述拼接模块,判断is_valid是否被置起,如果没有置起则置起is_valid,并置start_addr为新缓存块的起始地址,置end_addr为新缓存块的末尾地址并结束本次拼接;如果is_valid已经置起则判断end_addr是否等于新缓存块的起始地址,如果不等于则说明拼接模块之前缓存的缓存与新来的缓存块不连续,则把之前缓存的缓存形成数据包描述符表刷到SSD控制器的数据包队列,再把新来的缓存块缓存下来,即置start_addr为新缓存块的起始地址,置end_addr为新缓存块的末尾地址并结束流程;如果end_addr等于新缓存块的起始地址则将新缓存块与之前缓存的缓存拼接起来,即置end_addr为新缓存块的末尾地址;
如果拼接后的缓存没有超过8KB则结束本次拼接,否则切割出8KB形成Data FIS描述符表刷到SSD控制器的数据包队列并记录剩余缓存;如果新缓存块不是命令的最后一段缓存则结束拼接,否则将拼接模块中剩余的缓存形成数据包描述符表刷到SSD控制器的数据包队列,清除is_valid标志并结束拼接;
SSD在空闲时重置缓存管理模块,重置换存管理模块将逻辑链表中相邻的缓存块的索引值对应的物理缓存整理为连续状态。
CN201711406418.2A 2017-12-22 2017-12-22 一种固态硬盘缓存管理方法及固态硬盘 Pending CN108255420A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711406418.2A CN108255420A (zh) 2017-12-22 2017-12-22 一种固态硬盘缓存管理方法及固态硬盘

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711406418.2A CN108255420A (zh) 2017-12-22 2017-12-22 一种固态硬盘缓存管理方法及固态硬盘

Publications (1)

Publication Number Publication Date
CN108255420A true CN108255420A (zh) 2018-07-06

Family

ID=62723485

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711406418.2A Pending CN108255420A (zh) 2017-12-22 2017-12-22 一种固态硬盘缓存管理方法及固态硬盘

Country Status (1)

Country Link
CN (1) CN108255420A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117098A (zh) * 2018-09-27 2019-01-01 郑州云海信息技术有限公司 一种固态硬盘中提高数据传输性能的方法
CN109446113A (zh) * 2018-11-10 2019-03-08 苏州韦科韬信息技术有限公司 一种优化固态硬盘缓存管理方法
CN109521964A (zh) * 2018-11-15 2019-03-26 苏州韦科韬信息技术有限公司 一种固态硬盘中raid资源的管理方法
CN110633054A (zh) * 2019-09-18 2019-12-31 深圳市硅格半导体有限公司 一种提高sata逻辑写性能的预启动方法及其***
CN110968527A (zh) * 2018-09-30 2020-04-07 北京忆恒创源科技有限公司 Ftl提供的缓存
CN112486852A (zh) * 2020-12-01 2021-03-12 合肥大唐存储科技有限公司 一种固态硬盘及其地址映射方法
WO2021218101A1 (zh) * 2020-04-26 2021-11-04 北京泽石科技有限公司 固态硬盘的缓存管理***、方法、装置
CN115269455A (zh) * 2022-09-30 2022-11-01 湖南兴天电子科技股份有限公司 基于fpga的磁盘数据读写控制方法、装置和存储终端
CN115686372A (zh) * 2022-11-07 2023-02-03 武汉麓谷科技有限公司 一种基于zns固态硬盘zrwa功能的数据管理的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101630992A (zh) * 2008-07-14 2010-01-20 中兴通讯股份有限公司 共享内存管理方法
US7802025B2 (en) * 2007-06-26 2010-09-21 International Business Machines Corporation DMA engine for repeating communication patterns
CN102053914A (zh) * 2009-10-30 2011-05-11 慧荣科技股份有限公司 记忆装置以及存储器的数据存取方法
CN105868123A (zh) * 2016-04-07 2016-08-17 武汉数字派特科技有限公司 一种并发数据的缓存结构及方法
CN106598504A (zh) * 2016-12-26 2017-04-26 华为机器有限公司 数据存储方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7802025B2 (en) * 2007-06-26 2010-09-21 International Business Machines Corporation DMA engine for repeating communication patterns
CN101630992A (zh) * 2008-07-14 2010-01-20 中兴通讯股份有限公司 共享内存管理方法
CN102053914A (zh) * 2009-10-30 2011-05-11 慧荣科技股份有限公司 记忆装置以及存储器的数据存取方法
CN105868123A (zh) * 2016-04-07 2016-08-17 武汉数字派特科技有限公司 一种并发数据的缓存结构及方法
CN106598504A (zh) * 2016-12-26 2017-04-26 华为机器有限公司 数据存储方法及装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117098A (zh) * 2018-09-27 2019-01-01 郑州云海信息技术有限公司 一种固态硬盘中提高数据传输性能的方法
CN110968527A (zh) * 2018-09-30 2020-04-07 北京忆恒创源科技有限公司 Ftl提供的缓存
CN110968527B (zh) * 2018-09-30 2024-05-28 北京忆恒创源科技股份有限公司 Ftl提供的缓存
CN109446113A (zh) * 2018-11-10 2019-03-08 苏州韦科韬信息技术有限公司 一种优化固态硬盘缓存管理方法
CN109521964A (zh) * 2018-11-15 2019-03-26 苏州韦科韬信息技术有限公司 一种固态硬盘中raid资源的管理方法
CN110633054A (zh) * 2019-09-18 2019-12-31 深圳市硅格半导体有限公司 一种提高sata逻辑写性能的预启动方法及其***
WO2021218101A1 (zh) * 2020-04-26 2021-11-04 北京泽石科技有限公司 固态硬盘的缓存管理***、方法、装置
CN112486852A (zh) * 2020-12-01 2021-03-12 合肥大唐存储科技有限公司 一种固态硬盘及其地址映射方法
CN112486852B (zh) * 2020-12-01 2024-05-14 合肥大唐存储科技有限公司 一种固态硬盘及其地址映射方法
CN115269455A (zh) * 2022-09-30 2022-11-01 湖南兴天电子科技股份有限公司 基于fpga的磁盘数据读写控制方法、装置和存储终端
CN115269455B (zh) * 2022-09-30 2022-12-23 湖南兴天电子科技股份有限公司 基于fpga的磁盘数据读写控制方法、装置和存储终端
CN115686372A (zh) * 2022-11-07 2023-02-03 武汉麓谷科技有限公司 一种基于zns固态硬盘zrwa功能的数据管理的方法

Similar Documents

Publication Publication Date Title
CN108255420A (zh) 一种固态硬盘缓存管理方法及固态硬盘
JP6729914B2 (ja) ソリッドステートストレージドライブ、システム、および方法
US9910597B2 (en) Memory system having a plurality of writing modes
CN103049397B (zh) 一种基于相变存储器的固态硬盘内部缓存管理方法及***
CN102651009B (zh) 一种存储***中检索数据的方法和设备
TWI729264B (zh) 選擇逐出的快取列的方法、記憶體快取控制器及執行讀修改寫操作的方法
TWI534702B (zh) 有效管理階層之間的資料轉移的設備
CN103019962B (zh) 数据缓存处理方法、装置以及***
WO2018119901A1 (zh) 存储***和固态硬盘
CN107885456A (zh) 减少io命令访问nvm的冲突
CN104424103B (zh) 固态储存装置中高速缓存的管理方法
US20080120456A1 (en) Method for flash memory data management
CN105389135B (zh) 一种固态盘内部缓存管理方法
CN107797759B (zh) 访问缓存信息的方法、装置与驱动器
WO2012159863A1 (en) Storage adapter performance optimization
CN108108130A (zh) 一种提升固态硬盘读写性能的方法及固态硬盘
CN110389709A (zh) 顺序流检测与数据预读
JP2019160306A (ja) 機械学習訓練のためのスラブ基盤のメモリ管理
US9699254B2 (en) Computer system, cache management method, and computer
CN115993930A (zh) 用于有序访问块修改存储器中的数据的***、方法和装置
CN109213423A (zh) 基于地址屏障无锁处理并发io命令
Sun et al. HIPA: A hybrid load balancing method in SSDs for improved parallelism performance
US9632950B2 (en) Storage control device controlling access to a storage device and access controlling method of a storage device
CN106557277B (zh) 磁盘阵列的读方法及装置
CN109446113A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20180706

RJ01 Rejection of invention patent application after publication