首页> 中国专利> SSD主控Buffer、SSD主控及SSD非对齐写数据传输控制方法

SSD主控Buffer、SSD主控及SSD非对齐写数据传输控制方法

摘要

本发明公开了一种SSD主控Buffer、SSD主控及SSD非对齐写数据传输控制方法,整个读填充过程中,CPU只参与了一个步骤,其他过程都由逻辑根据数据传输控制规则自动完成buffer的申请、数据同步、buffer的释放,极大节省了CPU时间资源的消耗,提高CPU处理其他事务的能力;另外,在本发明方法中,Read DMA一旦完成写part2、part3数据,此时part2、part3所在的RD flag已置位,即使part1数据并没有准备好,但Read DMA依然立即执行读取part1+part2+part3操作,如此极大减小Read DMA等待时间,有效提升DMA间传输效率。

著录项

  • 公开/公告号CN106776404A

    专利类型发明专利

  • 公开/公告日2017-05-31

    原文格式PDF

  • 申请/专利权人 湖南国科微电子股份有限公司;

    申请/专利号CN201611177857.6

  • 申请日2016-12-19

  • 分类号G06F13/28;

  • 代理机构长沙正奇专利事务所有限责任公司;

  • 代理人卢宏

  • 地址 410131 湖南省长沙市经济技术开发区东十路南10号

  • 入库时间 2023-06-19 02:23:20

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-04-07

    授权

    授权

  • 2017-06-23

    实质审查的生效 IPC(主分类):G06F13/28 申请日:20161219

    实质审查的生效

  • 2017-05-31

    公开

    公开

说明书

技术领域

本发明涉及SSD数据读写领域,特别是一种SSD主控Buffer、SSD主控及SSD非对齐写数据传输控制方法。

背景技术

在主流SSD主控中,前端必须按sector(512Byte)长度数据对齐的方式读写数据,而SSD为方便管理常采用unit(unit大小为4KByte或8KByte)对齐方式下刷数据和查改表项。非对齐写指读写数据的范围不是按照unit对齐的写行为,如图1所示。在图1场景下,需要通过读操作将非对齐部分(黄色区域)补齐,该补齐操作称为读填充,补齐后再下刷数据到flash并改表。

结合图1、图2现有方法对SSD非对齐写可分解为以下几个步骤:

1.CPU从Buffer中为Write DMA分配写缓存,该缓存记为bufferA,bufferA大小等于Part2+part1+part3数据大小;

2.CPU启动Write DMA写数据part1到bufferA内指定位置;

3.CPU启动Read DMA写数据part2/part3到bufferA内指定位置;

4.Part1或part2或part3数据传输完成时,Wirte DMA或Read DMA上报CPU写完成;

中断, 当part1+part2+part3都传输完毕时,进入下一步,否则等待;

5.CPU启动 Read DMA读取part2+part1+par3;

6.Read DMA读完成后,上报CPU 读完成中断;

7.CPU释放bufferA空间。

从现有方法可知,几乎每个关键步骤都需要CPU参与,占用CPU时间资源严重,且操作较为繁琐。从步骤4进入第5步的条件是 part2、part1、part3数据都传输完毕,等待时间过长,传输效率低下。也正是因为存在上述缺点,导致SSD在执行非对齐写相较对齐写的带宽下降非常厉害。

综上,可知现有技术存在以下缺点:

(1)占用CPU时间资源较多,现有技术方法步骤很多,且基本都需要CPU介入到传输处理中,显然CPU时间资源消耗严重,必然导致一次DMA间数据传输延迟的增加,同时导致CPU处理其他任务的能力变弱,拖累整个SSD系统的性能表现。

(2)DMA间无效等待时间过长,传输效率低下。结合现有技术方法的描述可知,只有在Part1、part2、part3都完成数据传输后,才可启动Read DMA的数据传输, 即Read DMA有相当长一段时间在等待数据传输完成,这些无效的等待也是传输延迟较长的一个重要原因。

本发明涉及的名词解释或者缩写如下:

SSD:Solid State Drive,固态硬盘,一种利用Flash介质存储用户数据的存储设备。

DMA:Direct Memory Access;直接存储访问模块

Buffer:缓存;

Sector:扇区,在SSD SATA协议中常指连续512Byte长度数据单元。

发明内容

本发明所要解决的技术问题是,针对现有技术不足,提供一种SSD主控Buffer、SSD主控及SSD非对齐写数据传输控制方法,解决现有非对齐写方法中占用CPU时间资源较多、DMA间传输效率低下问题,提升DMA间数据传输效率,减少无效等待,最终提升SSD数据吞吐能力。

为解决上述技术问题,本发明所采用的技术方案是: 一种SSD主控Buffer,包括多个存储单元;还包括WD Flag空间和RD Flag空间,且每个存储单元在WD Flag空间中都有专属的Lbit信息描述该存储单元的可写入状态,每个存储单元在RD Flag空间中都有专属的Lbit信息描述该存储单元的可读取状态;若某存储单元对应的WD flag空间专属的Lbit信息为状态0,则表示Write DMA可写该存储单元;若该存储单元对应的WD flag为状态1,则表示该存储单元已由Write DMA写满或者为Read DMA写数据预留空间;若某存储单元对应的RD Flag空间专属的Lbit信息为状态0,则表示Read DMA 可写该存储单元,若该存储单元对应的RD Flash空间专属的Lbit信息为状态1,则表示该存储单元由Write DMA写满或者由Read DMA写满。

L>=1,所述存储单元大小为512B。在SSD行业标准中传输的基本单元为512B,所以设计存储单元大小为512B。

相应的,本发明提供了一种SSD主控,包括CPU、Write DMA和Read DMA;还包括上述Buffer;所述Write DMA将非unit对齐部分,即part2的数据传输地址和长度上报给CPU;所述CPU根据传输地址和长度,计算part2、part3的传输起始地址和长度,计算part1+part2+part3的传输起始地址和数据长度,依次向Read DMA下发写part2数据请求、写part3数据的请求、读part1+part2+part3数据请求;其中,part1即非unit对其部分;part3即末尾unit需要读填充部分;READ DMA完成写part1、part2数据,同时完成读part1+part2+part3数据读取。

相应的,本发明还提供了一种利用上述SSD主控对SSD非对齐写数据进行传输控制的方法,包括以下步骤:

1)Write DMA将写指针移动到下一个unit,将起始unit需要读填充部分,即part2对应的WD flag空间专属的Lbit信息置1,同时启动part1数据传输,并上报CPU 传输地址和长度;

2)CPU根据传输地址和长度,计算part2、part3的传输起始地址和长度,计算part1+part2+part3的传输起始地址和数据长度,依次向Read DMA下发写part2数据请求、写part3数据的请求、读part1+part2+part3数据请求;其中,part1即非unit对其部分;part3即末尾unit需要读填充部分;

3)READ DMA完成写part1、part2数据,Read DMA完成读part1+part2+part3数据读取。

步骤1)中,若Write DMA将写指针移动到下一个unit时,超过buffer边界,则读写到Buffer右边界时, 下一次读写位置自动跳转到Buffer的左边界起始位置进行读写。

步骤1)中,启动part1数据传输的规则为:

A)若Write DMA需要写某存储单元时,发现该存储单元对应的WD flag空间为0,则立即将数据写入该空间,写该存储单元后,立即将与该存储单元对应的WD flag空间和RD flag空间置1;

B)若Write DMA需要写某存储单元时,发现该存储单元对应的WD flag空间为1,则暂停Write DMA的数据传输,直至该空间的WD flag空间被其他模块(例如,Read DMA模块或CPU)清0后,Write DMA再按规则A)继续数据传输。

步骤3)中,READ DMA完成写part1、part2数据适应以下规则:

I) 若Read DMA需要写某存储单元,取数据时发现该存储单元对应的RD flag空间值都为0,则立即将数据写入该存储单元,写满该存储单元后,立即将与该该存储单元对应的RDflag空间置1;

II)若Read DMA需要写某存储单元,取数据时发现该存储单元对应的RD flag空间值都为1,则暂停Read DMA的数据传输,直至该存储单元的RD flag空间被其他模块清0,ReadDMA再继续按规则I)继续数据传输。

步骤6)中,Read DMA完成读part1+part2+part3数据读取适应以下规则:

i)若Read DMA需要从某存储单元取数据时,发现该存储单元对应的RD flag空间值都为1,则取走该存储单元内的数据,当该存储单元的数据被全部取走后,将该该存储单元对应的WD flag空间和RD flag空间都清0;

ii)若Read DMA需要从某存储单元取数据时,发现该存储单元对应的RD flag空间值为0,则暂停Read DMA的数据传输,直至该存储单元的RD flag空间被其他模块置1后,ReadDMA再按规则i)继续数据传输。

与现有技术相比,本发明所具有的有益效果为:本发明将DMA间传输以及读填充操作中的缓存空间分配、数据同步、缓存空间释放都通过WD flag和RD flag结合硬件实现的DMA传输控制规则来自动完成,将CPU从上述这些繁重的处理中解脱出来,极大的节省宝贵的CPU时间资源,有效提升CPU处理SSD其他业务的能力;结合WD flag和RD flag机制,ReadDMA完成数据写入后,便可立即执行数据读取操作,Read DMA并不需要等待Write DMA数据传输完成后才启动数据传输,极大减少Read DMA无效等待时间,由此使得DMA传输效率得到明显提升;在非对齐场景下,Write DMA巧妙的将执行读填充的缓存空间的WD flag置位,以阻止自身覆盖写,而不去置位RD flag为Read DMA执行读填充预留空间,从而让整个非对齐写下的Write DMA写,Read DMA读填充、Read DMA取数据操作依赖WD flag和RD flag自动配合起来。

附图说明

图1为非对齐写数据结构示意图;

图2为常用数据传输管理硬件结构;

图3为本发明中SSD内DMA间数据传输管理示意图。

具体实施方式

本发明方案如图3所示。其与现有技术的最大区别在于多了两个硬件模块WD flag和RD flag。

WD Flag(Write DMA Flag)定义:根据SSD前端协议可知,SSD传输数据肯定是sector对齐,每个sector大小为512B。因此在本方案中规定Buffer中每个sector空间在WDFlag中都有专属的1bit信息与其对应。某sector空间的WD Flag为0表示Write DMA可写该sector空间;若其WD Flash置1表示该sector空间由Write DMA写满或者为Read DMA写数据预留空间。

RD Flag(Read DMA Flag)定义:根据SSD前端协议可知,SSD传输数据肯定是sector对齐,每个sector大小为512B。因此在本方案中规定Buffer中每个sector空间在RDFlag中都有专属的1bit信息与其对应。某sector空间的RD Flag为0表示Read DMA 可写该sector空间,若其RD Flash置1表示该sector空间由Write DMA写满或者由Read DMA写满。

结合WD Flag、RD Flag,硬件需实现以下DMA传输控制规则:

①若Write DMA需要写某sector空间时发现其对应的WD flag为0,则立即将数据写入该空间,写满512B后,立即将与该空间对应的WD flag和RD flag置1.

②若Write DMA需要写某sector空间时发现其对应的WD flag为1,则暂停Write DMA的数据传输,直至该空间的WD flag被其他模块清0后,Write DMA再按规则①继续数据传输。

③若Read DMA需要写某sector空间取数据时发现其对应的RD flag值都为0,则立即将数据写入该空间,写满512B后,立即将与该空间对应的RD flag置1.

④若Read DMA需要写某sector空间取数据时发现其对应的RD flag值都为1,则暂停Read DMA的数据传输,直至该空间的RD flag被其他模块清0,Read DMA再继续按规则③继续数据传输。.

⑤若Read DMA需要从某sector空间取数据时发现其对应的RD flag值都为1,则取走该空间内的数据,取走512B后,将该空间对应的WD flag和RD flag都清0.

⑥若Read DMA需要从某sector空间取数据时发现其对应的RD flag值为0,则暂停ReadDMA的数据传输,直至该空间的RD flag被其他硬件模块置1后,Read DMA再按规则⑤继续数据传输。

⑦Write DMA/Read DMA具备Buffer回环读写功能,即读写到Buffer右边界时, 下一次读写位置自动跳转到Buffer的左边界起始位置进行读写。

⑧Write DMA在写某段空间时,需要将起始unit中需要读填充部分的WD flag置1,而不操作RD flag(如图2中part2数据对应的WD flag)。

具备上述定义和规则后,若要完成相同的工作,假设开始WD flag、RD flag值都为0。本方案实现步骤如下:

(1)Write DMA将写指针移动到下一个unit(若超过buffer边界,则应用规则⑦),将起始unit需要读填充(part2)的空间的WD flag置1(规则⑧),同时启动part1数据传输(传输过程中应用规则①和规则②),并上报CPU 传输地址和长度,

(2)CPU根据传输地址和长度,计算part2、part3的传输起始地址和长度,计算part1+part2+part3的传输起始地址和数据长度,依次向Read DMA下发写part2数据请求、写part3数据的请求、读part1+part2+part3数据请求。这些请求缓存于Read DMA命中FIFO中,按顺序执行

(3)READ DMA根据规则③和规则④完成写part1、part2数据。Read DMA 根据规则⑤和规则⑥完成读part1+part2+part3数据读取。显然当Read DMA完成part1+part2+part3数据传输后,其WD flag、RD flag被请0,即这段缓存被自动释放。

从上述操作流程可知,整个读填充过程,CPU只参与了一个步骤,其他过程都由逻辑根据数据传输控制规则自动完成buffer的申请、数据同步、buffer的释放,极大节省了CPU时间资源的消耗,提高CPU处理其他事务的能力;另外,在本方法中,Read DMA一旦完成写part2、part3数据,此时part2、part3所在的RD flag已置位,即使part1数据并没有准备好,但Read DMA依然立即执行读取part1+part2+part3操作,如此极大减小Read DMA等待时间,有效提升DMA间传输效率。

具体地,本发明原理如下:

1、约定指定大小的存储单元(如512B大小)和WD Flag空间、RD flag, Buffer由多个存储单元组成,每个存储单元在WD Flag、RD flag中都有专属的1bit或多bit信息与其对应。若某存储单元的RD Flag为状态0,表示该存储单元未写满;若某存储单元的RD flag为状态1,表示该存储单元数据已满。若存储单元的WD Flag为状态0,表项该存储单元Write DMA可写,若存储单元的WD Flag为状态1,则该存储单元Write DMA不可写。

2、在1的基础之上,Write DMA需要写buffer内某存储单元时,若其WD Flag为状态0,则Write DMA可写该存储单元,存储单元写满后,立即将其WD flag和RD flag置1;若其WDFlag为状态1,则Write DMA不可写该存储单元,并将Write DMA的写操作挂起,直至WD Flag变换为状态0,方可激活Write DMA继续写。

3、在3基础之上,Read DMA需要写buffer内某存储单元时,若其RD Flag为状态0,则Read DMA可写该存储单元,存储单元写满后,立即将其RD flag置1;若其RD flag为1,则Read DMA不可写该存储单元,并将Read DMA写操作挂起,直至RD flag变换为状态0,方可激活Read DMA继续写。

4、在1的基础之上,Read DMA需要读buffer内某存储单元时,若其RD Flag为状态1,则Read DMA可读该存储单元,读取完存储单元后,立即将其WD Flag和RD flag置位状态0;若其RD Flag为状态0,则Read DMA 不可读该存储单元,并将Read DMA的读操作挂起,直至RD Flag变换为状态1,方可激活Read DMA继续读。

5、在2和3的基础上,当Write DMA/Read DMA写超出Buffer的终点时,则WriteDMA/Read DMA写指针跳转到Buffer的起始位置继续开始写入数据。

6、在4的基础之上,当Read DMA读超出Buffer的终点时,则Read DMA读指针跳转到Buffer的起始位置继续开始读取数据。

、在4的基础之上,Write DMA可自动完成数据存放目标空间的分配,且无需关心目标空间是否超出buffer大小,目标空间是否被其他传输占用,因为这些都将通过WD Flag自动控制。并将起始unit需要读填充部分的WD flag置1,且不需操作RD flag。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号