一种固态硬盘缓存管理方法及固态硬盘技术

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

【技术实现步骤摘要】
一种固态硬盘缓存管理方法及固态硬盘
本专利技术涉及固态硬盘控制技术,特别涉及一种固态硬盘缓存管理方法及固态硬盘。
技术介绍
SATASSD的控制器设计和固件(FW)设计需要遵循ATA接口协议,ATA协议规定原生命令队列NCQ(NativeCommandQueuing)读写命令数据传输的数据帧信息结构(DataFIS-DataFrameInformationStructure,简称数据包)最大也建议为8KB,因为每次建立数据包的传输需要消耗一定的时间,所以单个命令形成的数据包越少,建立数据包传输造成的时间消耗越少。最理想的情况是命令的每个数据包都是8KB的,最后一笔不足8KB的数据包除外。当前SATASSD的固件设计中闪存转换层FTL(FlashTranslationLayer)采用4KB的映射机制,理所当然的缓存管理模块也是以4KB为单位管理且以链表形式管理,这样比较简单实用,如图1是常规的缓存管理示意图,逻辑链表上维护的是物理缓存块的索引值,缓存Buffer管理模块每次从逻辑链表头部摘下一个索引值,计算出该索引值对应的4KB物理缓存块的地址给申请者,申请者使用完归还后,缓存管理模块本文档来自技高网...

【技术保护点】
1.一种固态硬盘缓存管理方法,其特征在于将固态硬盘缓存按8KB为单位划分为多个管理单元,每个管理单元分为2个4KB单位的子缓存管理单元,并设置分配数记录每个管理单元已经被分配的数目,外部模块以4KB为单位向缓存管理模块申请缓存,按申请顺序只有管理单元的分配数为2时才从新的管理单元中分配新的子缓存管理单元。

【技术特征摘要】
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在空闲时重置缓存管理模块,重置换存管理模块将逻辑链表中相邻的缓存块的索引值...

【专利技术属性】
技术研发人员:许毅姚兰郑春阳
申请(专利权)人:深圳忆联信息系统有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1