CN104731839A - 一种ssd的前端数据管理加速的方法及一种ssd设备 - Google Patents

一种ssd的前端数据管理加速的方法及一种ssd设备 Download PDF

Info

Publication number
CN104731839A
CN104731839A CN201410526441.5A CN201410526441A CN104731839A CN 104731839 A CN104731839 A CN 104731839A CN 201410526441 A CN201410526441 A CN 201410526441A CN 104731839 A CN104731839 A CN 104731839A
Authority
CN
China
Prior art keywords
buf
node
cmd
list
ssd
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.)
Granted
Application number
CN201410526441.5A
Other languages
English (en)
Other versions
CN104731839B (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.)
Ramaxel Technology Shenzhen Co Ltd
Original Assignee
Ramaxel Technology Shenzhen 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 Ramaxel Technology Shenzhen Co Ltd filed Critical Ramaxel Technology Shenzhen Co Ltd
Priority to CN201410526441.5A priority Critical patent/CN104731839B/zh
Publication of CN104731839A publication Critical patent/CN104731839A/zh
Application granted granted Critical
Publication of CN104731839B publication Critical patent/CN104731839B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种SSD的前端数据管理加速的方法,根据SSD端可支持的ncq命令的个数,实现对应的硬件数组矩阵hw own cmd list;将相同的ncq cmd tag的buf node按提交的顺序建立并加入到硬件数组矩阵对应的buf node list;以buf node为单位,按照ncq cmd tag的tag顺序,在同一个buf node list内按照buf node list链表的顺序,hw自动传输有效的buf node数据,hw传输数据时遇到所需buf node还未提交或无效时,则等待所需buf node提交并有效。同时公开了一种采用了该方法的SSD设备。硬件支持cmd之间buf节点的乱序提交,可以有效降低cmd之间数据传输的时间间隔出现概率,提升前端数据传输效率,进而提升前端以及整个SSD的性能。

Description

一种SSD的前端数据管理加速的方法及一种SSD设备
技术领域
本发明涉及一种SSD固态硬盘技术,特别涉及一种SSD的前端数据管理加速的方法及一种SSD设备。
背景技术
相关名词说明:
SSD:Solid State Drive,固态硬盘,与传统的机械硬盘相对应,是基于nand flash的存储设备。
Sata:Serial Advanced Technology Attachment,串行高级技术附件,一种基于行业标准的串行硬件驱动器接口协议。
Host:主机。
Device:指的是SSD设备。
Sata cmd:sata命令,本专利文件指host发出用来通知device进行数据传输的命令行为。
front-end data path:前端数据通路,SATA<->DRAM之间的通路。
back-end data path:后端数据通路,DRAM<->nand之间的通路
ncq cmd:Native Command Queuing,原生命令队列,Sata cmd的一种。
FPDMA:First Party DMA,单方DMA。
Hw,hardware:硬件。
Fw,firmware:固件,本专利文件指的是SSD控制器的控制软件。
Buf node:缓冲区节点。
Sata cmd tag:在ncq cmd的情况下,host在发送这些cmd的时候标记,用于对这些cmd进行区分。
Outstanding cmd:ncq情况下device端的cmd个数。
Xfer cmd:本专利文件指前端已经由Fw提交到Hw的进入hw xfer序列的cmd。
Xfer cmd idx:表明xfer cmd的顺序。
Buf node submit cnt:sw本次向hw提交的buf node个数。
Buf node reclaim cnt:hw本次向fw释放的已经传输完毕的buf node个数
Bank:一种抽象的nand控制器对nand颗粒可以进行并行操作的级别。
nfc:nand flash controller,nand flash控制器,是SSD主控中用于对nandflash颗粒控制的硬件模块。
nfc cmd:nand flash控制器操作命令。
目前基于SATA/SATA-E标准接口的SSD设备广泛采用ncq cmd,ncq是指native command queuing原生命令队列,ncq cmd是Sata cmd的一种,在host与device之间通过ncq cmd进行数据传输,这里host指的系统主机,device指的是SATA/SATA-E标准接口的SSD,一般而言device上的ncq原生命令队列的可以存储32个甚至更多的ncq cmd,最后由device决定选择哪一条ncq cmd作为当前执行的数据传送命令xfer cmd,基于此device内部的数据通路管理可以做ncq cmd的排序,内部加速等优化处理该排序选择。Device决定选择哪一条ncq cmd作为当前的数据传送命令xfer cmd的过程称为前端数据通路管理。
现有的SATA/SATA-E标准的device前端数据通路管理由device上的控制器上的软件具体实现,每个xfer cmd一般都包括多个buf节点的访问,一般分为两类:第一类是不支持不同xfer cmd之间buf节点乱序提交,第二类是使用软件的数据结构支持xfer cmd之间的buf节点乱序提交。
对于第一类方案,会出现以下两个问题。问题一,由于后端数据回收的乱序性,当当前xfer cmd的buf节点未全部提交到前端时,其他xfer cmd的buf节点会全部堵塞在通路上,导致数据通路的负载不均衡影响系统性能。问题二,前端buf节点通路上的积累很多,可能会堆积在前端fw里,因为不能乱序提交到硬件,当上一个xfer cmd的最后一个传输完毕,会出现下一个xfer cmd的第一个未提交到hw的可能,本质上这是fw/hw协作的问题,通路上有buf节点,没有提交到hw,fw操作终究会有延时出现,也就是xfer cmd之间数据传输出现时间空隙进一步影响系统性能。
对于第二类方案,采用纯软件数据结构支持的xfer cmd之间buf乱序提交可以规避上面的问题一,但是问题二却仍然无法完全规避,采用纯软件的方式实现这样一个矩阵,可以支持乱序提交到这个矩阵,可以缓解通路阻塞的问题,但是软件的矩阵不能自动传输,还是需要按照ncq cmd一条一条的提交到hw才能自动传输,本质上两条ncq cmd之间的那个间隙还是没法覆盖掉,由于不能乱序提交到前端硬件;在当前xfer cmd传输完毕时若前端硬件中还没有下一个xfer cmd的buf节点,前端数据传输仍然会出现时间空隙,影响系统性能。其原因是前端硬件不支持xfer cmd之间buf节点的乱序提交,在这种情况下,会出现当前xfer cmd传输结束,但是下一条xfer cmd的buf节点还未提交到前端硬件,此时前端硬件的传输会停住,等待下一条xfer cmd的提交,导致前端数据传输出现暂停,进而影响到系统性能。
发明内容
针对以上缺陷,本发明目的在于如何让前端硬件可支持xfer cmd之间的bufnode实现乱序提交,如何保证xfer cmd之间buf节点乱序提交的情况下前端的硬件自动传输不会出现时间间隙。
本发明提供了一种SSD的前端数据管理加速的方法,其特征在于:SSD控制器根据SSD端可支持的ncq命令的个数,实现对应的硬件数组矩阵hw own cmdlist;将相同的ncq cmd tag的buf node按提交的顺序建立并加入到硬件数组矩阵对应的buf node list;以buf node为单位,按照ncq cmd tag的tag顺序,在同一个buf node list内按照buf node list链表的顺序,hw自动传输有效的buf node数据,hw传输数据时遇到所需buf node还未提交或无效时,则等待至所需buf node提交且有效。
所述的SSD的前端数据管理加速的方法,其特征在于在fw中建立待提交buf列表prepare buf list,fw整合后端提交的需要提交给前端的buf node到prepare buf list,fw按顺序按照buf node的cmd tag提交到该buf node所对应的xfer cmd idx对应hw own cmd list的buf node list。
所述的SSD的前端数据管理加速的方法,其特征在于还设有已提交的bufnode数量的计数器buf node submit cnt,当sw向hw提交一个buf node时,buf node submit cnt自动加1;当hw xfer执行完并释放掉一个buf node后buf node submit cnt自动减1。
还提供了一种SSD设备,其特征在于包括:前端数据管理加速模块,用于实现根据SSD端可支持的ncq命令的个数,实现对应的硬件数组矩阵hw own cmdlist;将相同的ncq cmd tag的buf node按提交的顺序建立并加入到硬件数组矩阵对应的buf node list;以buf node为单位,按照ncq cmd tag的tag顺序,在同一个buf node list内按照buf node list链表的顺序,hw自动传输有效的buf node数据,hw传输数据时遇到所需buf node还未提交或无效时,则等待所需buf node提交并有效。
所述的SSD设备,其特征在于还包括buf node提交模块,用于实现在fw中建立待提交buf列表prepare buf list,fw整合后端提交的需要提交给前端的buf node到prepare buf list,fw按顺序按照buf node的cmd tag提交到该buf node所对应的xfer cmd idx对应hw own cmd list的buf node list。
所述的SSD设备,其特征在于还包括硬件计数器,用于实现已提交的buf node数量的计数器buf node submit cnt,当sw向hw提交一个buf node时,buf nodesubmit cnt自动加1;当hw xfer执行完一个buf node后buf node submit cnt自动减1。
本发明实现了一种硬件支持的SSD的前端数据管理加速的方法,并具体由前端数据管理加速模块来实现,硬件支持cmd之间buf节点的乱序提交,可以有效降低cmd之间数据传输的时间间隔出现概率,提升前端数据传输效率,进而提升前端以及整个SSD的性能。
附图说明
图1是fw提交buf node流程图;
图2是hw操作流程示意图;
图3是hw与fw之间的buf node交互及hw操作机制示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
前端数据管理加速模块设置有硬件实现的待处理命令链表数组hw own cmdlist,hw own cmd list的数组元素cmd idx为:buf节点链表buf node list,buf node list为根据cmd tag建立起记录有相同cmd tag所要求提交的buf node链表。区分不同cmd tag对应的buf node list使用命令索引xfer cmd idx,hw own cmd list的第xfer cmd idx个数组元素即为和xfer cmd idx相同cmdtag对应的buf node;hw接收fw提交的buf node,整合相同cmd tag的buf node到该cmd tag对应的buf node list中。
图1是fw提交buf node流程图,fw接收到后端的提交的buf节点buf node,buf node中通过记录有该buf node所属的xfer cmd的cmd tag,fw上设有待提交的prepare buf list,简称list,fw整合后端提交的需要提交给前端的buf node到list,提交到list的最后,prepare buf list记录有buf node所对应的cmd tag和对应提交到hw的xfer cmd idx。Fw获取当前list上的第一个buf node节点,根据当前buf node节点对应的cmd tag反查xfer cmd idx,判断xfer cmd idx对应的cmd idx是否已经建立,如果已经建立,则提交buf node到对应cmd idx的buf node list,并更新对应的buf node submit cnt;如果cmd idx还未建立,则先建立cmd idx及对应的buf node list并提交给hw,再提交buf node到对应cmd idx的buf node list,并更新对应的buf node submitcnt。
图2是hw操作流程示意图,hw按顺序获取下一个xfer cmd idx,检索是否可以拿到有效的xfer cmd,如果不可以,则继续获取下一个xfer cmd idx;如果可以则判断buf node submit cnt是否大于0,如果为0,则hw挂起等待sw提交buf node;如果buf node submit cnt大于0;hw获取当前xfer cmd的buf node,判断当前buf node是否有效,(判断是否有效的标准是?),如果无效则跳转到判定buf node submit cnt是否大于0,如果有效则执行完并释放掉当前buf node,并对buf node submit cnt做减1操作,接着判断buf node是否为当前xfer cmd的最后一个,如果是则回到hw按顺序获取下一个xfer cmdidx的操作,如果不是则回到判定当前buf node submit cnt是否大于0的操作。
图3是hw与fw之间的buf node交互及hw操作机制示意图,建立了hw owncmd list,包含xfer cmd0-xfer cmd31共32个待处理命令链表数组,xfer cmd0-xfer cmd5为当前有效的xfer cmd,xfer cmd6-xfer cmd31为当前无效xfer cmd;每个圆圈代表一个buf node,图中虚线(Line)的buf node为fw已经提交到hw的buf node,buf node(14)、buf node(15)、buf node(14)、bufnode(46)、buf node(47)、buf node(51)、buf node(52)为当前fw与hw正在进行交互的临界buf node,buf node(104)为fw还未进行提交的buf node;buf node(07)、buf node(28)、buf node(35)为对应xfer cmd最后的buf node。
hw根据黑色线的箭头所示路径扫描当前的hw own cmd list,并按箭头指示方向逐个执行。fw已经将xfer cmd0、xfer cmd2、xfer cmd3对应所有buf node都提交到对应的buf node list中;xfer cmd1、xfer cmd4都还存在sw还未提交buf node到对应的buf node list,xfer cmd5对应的cmd idx还未建立,xfer cmd5及以后的xfer cmd对应所有所需的buf node都未提交到对应的buf node list中。
hw按箭头指示方向开始逐个执行,当当前buf node为当前fw与hw正在进行交互的临界buf node是buf node为无效buf node,因此hw xfer在执行前需要先判断当前buf node是否有效,如果有效则直接执行,如果无效则需等待fw与hw交互结束,当xfer cmd0上对应的buf node list中所有buf node都被hw xfer按顺序执行完成后,直接检测下一个xfer cmd tag也就说xfer cmd1的第一个buf node是否已经存在,如果已经存在,则hw xfer直接执行xfer cmd1的有效buf node,无需与fw做进一步的交互,相当于hw与fw之间通过异步交互的方式完全覆盖掉cmd之间的数据传输间隙。由于xfer cmd1的最后一个buf node未拿到,而xfer cmd2的前面几个节点已经拿到了,说明通路有临时阻塞,hw挂起等待当前cmd的后续节点提交;等到当前xfer cmd对应的buf node全部提交且全部执行完毕后,同样是直接判断下一个xfer cmd tag对应xfer cmd是否有效,如果无效则挂起等待,如果有效则判断xfer cmd tag对应的第一个buf node是否已经存在,如果已经存在,则hw xfer直接执行xfer cmd tag的有效buf node。
以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。

Claims (6)

1.一种SSD的前端数据管理加速的方法,其特征在于:根据SSD端可支持的ncq命令的个数,实现对应的硬件数组矩阵hw own cmd list;将相同的ncq cmdtag的buf node按提交的顺序建立并加入到硬件数组矩阵对应的buf nodelist;以buf node为单位,按照ncq cmd tag的tag顺序,在同一个buf nodelist内按照buf node list链表的顺序,hw自动传输有效的buf node数据,hw传输数据时遇到所需buf node还未提交或无效时,则等待至所需buf node提交且有效。
2.根据权利要求1所述的SSD的前端数据管理加速的方法,其特征在于在fw中建立待提交buf列表prepare buf list,fw整合后端提交的需要提交给前端的buf node到prepare buf list,fw按顺序按照buf node的cmd tag提交到该buf node所对应的xfer cmd idx对应hw own cmd list的buf nodelist。
3.根据权利要求2所述的SSD的前端数据管理加速的方法,其特征在于还设有已提交的buf node数量的计数器buf node submi t cnt,当sw向hw提交一个buf node时,buf node submit cnt自动加1;当hw xfer执行完并释放掉一个buf node后buf node submit cnt自动减1。
4.一种SSD设备,其特征在于包括:前端数据管理加速模块,用于实现根据SSD端可支持的ncq命令的个数,实现对应的硬件数组矩阵hw own cmd list;将相同的ncq cmd tag的buf node按提交的顺序建立并加入到硬件数组矩阵对应的buf node list;以buf node为单位,按照ncq cmd tag的tag顺序,在同一个buf node list内按照buf node list链表的顺序,hw自动传输有效的buf.node数据,hw传输数据时遇到所需buf node还未提交或无效时,则等待所需buf node提交并有效。
5.根据权利要求5所述的SSD设备,其特征在于还包括buf node提交模块,用于实现在fw中建立待提交buf列表prepare buf list,fw整合后端提交的需要提交给前端的buf node到prepare buf list,fw按顺序按照buf node的cmd tag提交到该buf node所对应的xfer cmd idx对应hw own cmd list的buf node list。
6.根据权利要求6所述的SSD设备,其特征在于还包括硬件计数器,用于实现已提交的buf node数量的计数器buf node submit cnt,当sw向hw提交一个buf node时,buf node submit cnt自动加1;当hw xfer执行完一个bufnode后buf node submit cnt自动减1。
CN201410526441.5A 2014-10-08 2014-10-08 一种ssd的前端数据管理加速的方法及一种ssd设备 Active CN104731839B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410526441.5A CN104731839B (zh) 2014-10-08 2014-10-08 一种ssd的前端数据管理加速的方法及一种ssd设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410526441.5A CN104731839B (zh) 2014-10-08 2014-10-08 一种ssd的前端数据管理加速的方法及一种ssd设备

Publications (2)

Publication Number Publication Date
CN104731839A true CN104731839A (zh) 2015-06-24
CN104731839B CN104731839B (zh) 2018-04-27

Family

ID=53455736

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410526441.5A Active CN104731839B (zh) 2014-10-08 2014-10-08 一种ssd的前端数据管理加速的方法及一种ssd设备

Country Status (1)

Country Link
CN (1) CN104731839B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874685A (zh) * 2018-06-21 2018-11-23 郑州云海信息技术有限公司 固态硬盘的数据处理方法以及固态硬盘

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101663652A (zh) * 2007-04-19 2010-03-03 微软公司 用于固态驱动器优化的删除时移除技术
CN102141898A (zh) * 2011-04-26 2011-08-03 记忆科技(深圳)有限公司 固态硬盘读写指令重排序的方法及其系统
CN102171649A (zh) * 2008-12-22 2011-08-31 英特尔公司 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统
US20140195717A1 (en) * 2013-01-08 2014-07-10 Greentec-Usa, Inc. Write Once Read Many Media Methods

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101663652A (zh) * 2007-04-19 2010-03-03 微软公司 用于固态驱动器优化的删除时移除技术
CN102171649A (zh) * 2008-12-22 2011-08-31 英特尔公司 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统
CN102141898A (zh) * 2011-04-26 2011-08-03 记忆科技(深圳)有限公司 固态硬盘读写指令重排序的方法及其系统
US20140195717A1 (en) * 2013-01-08 2014-07-10 Greentec-Usa, Inc. Write Once Read Many Media Methods

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874685A (zh) * 2018-06-21 2018-11-23 郑州云海信息技术有限公司 固态硬盘的数据处理方法以及固态硬盘
CN108874685B (zh) * 2018-06-21 2021-10-29 郑州云海信息技术有限公司 固态硬盘的数据处理方法以及固态硬盘

Also Published As

Publication number Publication date
CN104731839B (zh) 2018-04-27

Similar Documents

Publication Publication Date Title
US11061842B2 (en) Context-aware dynamic command scheduling for a data storage system
US10019181B2 (en) Method of managing input/output(I/O) queues by non-volatile memory express(NVME) controller
US9747044B2 (en) Interleaving read and write requests to reduce latency and maximize throughput in a flash storage device
US8423722B1 (en) System and method for high performance command processing in solid state drives
CN102622316B (zh) 选择性地使能主机传递中断
CN102171649B (zh) 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统
US9524107B2 (en) Host-based device drivers for enhancing operations in redundant array of independent disks systems
US10331584B2 (en) Internal system namespace exposed through use of two local processors and controller memory buffer with two reserved areas
US20160342545A1 (en) Data memory device
US9582433B2 (en) Disk array flushing method and disk array flushing apparatus
US9223373B2 (en) Power arbitration for storage devices
US9880745B2 (en) Reducing concurrency of garbage collection operations
US9367492B2 (en) Storage virtualization apparatus causing access request process to be delayed based on incomplete count and storage virtualization method
WO2017141413A1 (ja) 計算機、通信ドライバ、および通信制御方法
CN110716691B (zh) 调度方法、装置、闪存设备和系统
US9201598B2 (en) Apparatus and method for sharing resources between storage devices
CN108153582B (zh) Io命令处理方法与介质接口控制器
CN104462181A (zh) 一种ssd后端数据通路管理加速模块及ssd设备
CN113196225A (zh) 开放信道矢量命令执行
CN116097228A (zh) 在针对写入集合中的轨道释放高速缓存资源之后获得用于对写入集合中的轨道的预期写入的高速缓存资源
JP2014154023A (ja) ストレージ制御装置、ストレージ制御方法、ストレージシステムおよびプログラム
CN104731839A (zh) 一种ssd的前端数据管理加速的方法及一种ssd设备
CN108228104B (zh) 数据传输方法及固态硬盘控制器
US20170115886A1 (en) Storage device and method of performing a write operation by the same
US20160062925A1 (en) Method and system for managing storage device operations by a host device

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant