一种基于主机内存空间的区域信息表管理方法与流程

文档序号:24408031发布日期:2021-03-26 18:08阅读:115来源:国知局
1.本发明涉及一种ssd区域信息管理方法,具体是一种基于主机内存空间的区域信息表管理方法。
背景技术
::2.固态硬盘(ssd)的存储组件采用nandflash,随着nandflash的堆叠层数及单个cell可表示位数的增加,寿命也会不断降低。传统的ssd产品用户数据落盘顺序大概率是随机的,长时间运行就会有物理存储块(block)内的用户数据是无效的。为了回收物理块给新数据使用,就需要引入垃圾回收的策略。而垃圾回收过程中的数据搬移会造成用户数据写放大,增加了nand颗粒的擦写次数,天然减少使用寿命。为了优化上层文件系统与盘侧的重复垃圾回收算法、减少写入放大对寿命的影响,改善存储系统性能,一种基于区域命名空间技术(zonednamespace,zns)ssd成为一种新的技术趋势。znsssd核心思想是通过文件系统与ssd的联动配合,将ssd部分闪存转换层(flashtranslationlayer,ftl)的功能交给上层系统执行,由主机(host)维护所写逻辑地址(lba)数据的有效性,并保证所有lba顺序写入每一个openzone中。当一个区域(zone)写满后,主机直接使用区域复位(zonereset)命令对其进行擦除,可以节省ssd本身的垃圾回收流程,从而降低了ssd的写入放大效应,减小整盘替换空间,提高了整盘的使用寿命和性能,压缩开发成本。3.在znsssd固件开发过程中,需要定义区域信息(zoneinfo)结构体表来记录每一个zone的状态、写指针、属性等,以便管理和维护zone的使用。例如设计每个区域信息的大小为16字节,一个4t容量的ssd需要使用10000个zone,整个zoneinfotable的大小就是150k字节的量级。传统的设计方法是将该信息存储在ssd的缓存中,并在上电或下电时进行恢复或者保存。但是随着ssd容量向8t、16t增加,会导致ssd缓存空间的增大。这不仅会占用更多的缓存空间,还会带来功耗和成本的增加。技术实现要素:4.为了有效地解决上述问题、兼顾系统设计的硬件成本,本发明提出了一种基于主机内存空间(hostmemorybuffer,hmb)的区域信息表管理方法。5.为了解决所述技术问题,本发明采用的技术方案是:一种基于主机内存空间的区域信息表管理方法,包括以下步骤:s01)、配置ssd的主机内存空间功能,ssd向主机申请一块内存空间,设计一硬件逻辑单元以保证ssd的cpu可直接域信息存放到主机内存空间中,在不进行重启或者关机的情况下,本内存空间不被释放;s02)、数据更新时,cpu可直接发起读、修改或写的请求;s03)、在ssd下电的时候,将主机端保存的域信息表全部存到ssd的norflash中,在ssd上电的时候,先想主机申请内存空间,然后在将保存于norflash中的域信息表恢复到主机的内存空间中。6.进一步的,所述硬件逻辑单元为互联模块,互联模块将cpu发出的本地访存地址转换成主机端地址,并将数据请求发送到ssd接口界面端口上,通过接口控制器(如pcie)形成数据包传递到主机内存中。7.进一步的,所述硬件逻辑单元为dma单元,dma单元将cpu发出的本地访存地址转换成主机端地址,并将数据请求发送到ssd接口界面所在总线桥上,将数据传递到接口,通过pcie接口的数据包传递到主机内存中。进一步的,首次上电时,在ssd上电初始化流程中,cpu以域为单位将域信息表初始化为特定值,所述特定值用于表示所有的域处于空状态。8.进一步的,非首次上电时,将保存在norflash中的数据表读到ssd的读写缓存buffer中,再通过硬件逻辑单元搬移到主机分配好的内存中。9.进一步的,ssd运行过程中,若域信息表的状态跟随数据读写发生改变,cpu通过硬件逻辑单元将本地最新的域信息传送到主机内存中。10.进一步的,下电时,将正在使用的域空间关闭,并封存数据,将需要更新的域信息数据利用硬件逻辑单元更新到主机的内存中,然后将主机内存中所有的域信息通过dma单元批量读到ssd内部的写缓存中,再存入norflash的对应空间中。11.进一步的,设置定期刷写,保证域信息表在norflash中有旧版本备份,旧版本的更新采用如下策略:1、对应的zone发生了状态更新时,将对应的域信息刷写到norflash中;2、当发生复位时,在复位处理流程里将数据全部回刷到norflash中。12.本发明的有益效果是:本发明通过引入主机内存使用技术,扩展了ssd的缓存空间,节省了ssd的布线面积和成本,有着明显的经济收益。其次本专利根据技术需要提供了整体的运行和上下电维护方法,保证设计具有可行性。与传统域命名空间固态硬盘相比,可以明显节省ddr使用,缩小硬件成本、盘的pcb面积与整盘功耗,保证了上下电过程的可靠性,对工程实践提供了一种可行的方法。附图说明13.图1为本发明的系统框图;图2为本方法正常运行及掉电时的流程图。具体实施方式14.下面结合附图和具体实施例对本发明作进一步的说明。15.实施例1本实施例公开一种基于主机内存空间的区域信息表管理方法,包括域信息状态机流转维护、上下电管理的整体设计方法。znsssd中lba域是固件管理的最小单元。域信息包含域状态(state)、写指针(writepointer,wp)、标识号(id)等。这些zone信息都需要记录并进行管理。一个zone的大小由ssd厂商自行决定,将整块固态硬盘划分为n个zone,那么域信息表的大小即为16*n个字节。16.如图1所示,本方法首先配置ssd的hmb功能,ssd向host申请一块内存单元,设计一芯片硬件逻辑单元使得ssd的cpu可以直接将zone信息存放到host内存单元中。在域信息数据需要更新时,cpu直接发起读‑改‑写的操作。在ssd下电的时候,需要将host端保存的域信息表全部保存到spinorflash中。在ssd上电的时候,先向主机申请hmb空间,然后再将保存于flash内的信息表恢复到主机系统的内存空间中。这种域信息的管理控制方法,不仅可以充分利用主机多余的内存资源,节省ssd的内存消耗和功耗,降低整体的硬件设计成本,还可以获得动态的资源配置能力,扩展ssd的内存空间范围。17.针对传输域信息表的大小,硬件逻辑单元有两种实现方式,当用于cpu小量数据传输,硬件逻辑单元采用互联模块,当用于上下电时的大批量数据传输,硬件逻辑单元采用dma模块。18.两种实现方式的工作过程分别为:互联模块将cpu发出的本地访存地址转换成主机端地址,并将数据请求发送到ssd接口界面端口上,通过接口控制器(如pcie)形成数据包传递到主机内存中。19.所述硬件逻辑单元为dma单元,dma单元将cpu发出的本地访存地址转换成主机端地址,并将数据请求发送到ssd接口界面所在总线桥上,将数据传递到接口,通过pcie接口的数据包传递到主机内存中。进一步的,首次上电时,在ssd上电初始化流程中,cpu以域为单位将域信息表初始化为特定值,所述特定值用于表示所有的域处于空状态。20.如图2所示,本实施例所述方法具体包括以下步骤:a、根据nvme协议,在nvmeidentify字段中的hmpre(hostmemorybufferpreferredsize)字段和hmmin(hostmemorybufferminimumsize)字段,声明ssd需要host分配的内存大小,分配的内存可以给ssd当rambuffer使用,简称hostmemorybuffer(hmb);b、进一步,host根据盘声明的size分配内存,并通过setfeature将内存地址告知ssd;在不进行重启或者关机的情况下,该内存不会被释放;c、为方便cpu在正常运行时可以直接读写主机内存地址,需要ssd主控芯片内部设计硬件逻辑单元,实现cpu快速更新域信息表(此时更新数据块会以zone为单位);具体的是该硬件单元会将cpu发出的本地访存地址转换成主机端地址,并此数据请求发送到ssd接口界面所在总线桥上,将数据传递到接口模块控制器,通过接口控制器生成数据包传递到主机内存中。21.d、如果是首次上电,则在ssd上电初始化流程中,cpu以域为单位将域信息表范围初始化为特定值,这些特定值能够表示所有的zone处于空状态e、如果是非首次上电,则将保存在norflash中的数据表读到ssd的读写缓存buffer中,再通过dma单元大批量快速搬移到主机分配好的内存中,写入到主机内存中;f、在ssd运行过程中,随着数据读写的发生,域信息表的状态会需要经常性修改,cpu可以通过硬件模块将本地最新的域信息传送到主机内存中;g、下电时,首先需要将正在使用的域空间(还未关闭)进行关闭,并封存数据,将小部分需要更新的域信息数据利用硬件逻辑更新到主机的内存中,之后需要将主机内存里所有的域信息通过dma大批量读到ssd内部的写缓存中,再存入flash的对应空间中。22.h、考虑到使用过程中可能会出现异常掉电。本方案制定了定期刷写的方法,保证域信息表在flash中会有旧版本备份。此旧版本的更新采用如下策略:1、在对应的zone发生了状态更新时需要将对应的域信息所在对应块刷写到norflash中。23.2、当发生复位reset时,需要在reset处理流程里将数据全部回刷到norflash中。24.以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1