CN117331500A - 一种乱序聚合处理方法、装置及固态硬盘 - Google Patents
一种乱序聚合处理方法、装置及固态硬盘 Download PDFInfo
- Publication number
- CN117331500A CN117331500A CN202311271414.3A CN202311271414A CN117331500A CN 117331500 A CN117331500 A CN 117331500A CN 202311271414 A CN202311271414 A CN 202311271414A CN 117331500 A CN117331500 A CN 117331500A
- Authority
- CN
- China
- Prior art keywords
- data frame
- current
- linked list
- aggregation
- flag bit
- 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
Links
- 238000004220 aggregation Methods 0.000 title claims abstract description 161
- 230000002776 aggregation Effects 0.000 title claims abstract description 160
- 239000007787 solid Substances 0.000 title claims abstract description 32
- 238000003672 processing method Methods 0.000 title claims abstract description 22
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000000034 method Methods 0.000 claims abstract description 31
- 230000004931 aggregating effect Effects 0.000 claims abstract description 7
- 238000004590 computer program Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 10
- 230000006978 adaptation Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种乱序聚合处理方法、装置及固态硬盘,涉及通信技术领域,该方法包括:获取聚合输入输出的数据帧;其中,数据帧包括数据结构信息,数据结构信息包括数据帧的聚合位置信息、链表指针标识和相邻数据帧信息;根据数据帧的数据结构信息,配置各聚合输入输出各自对应的链表标志位信息;根据配置完成的链表标志位信息,对聚合输入输出对应的全部数据帧进行处理;本发明通过聚合IO的各数据帧中数据结构信息的设置,能够识别聚合IO的各数据帧的关联性,从而利用数据帧的数据结构信息,配置各聚合IO各自对应的链表标志位信息,从而对乱序传输的数据帧进行正确聚合,实现处理聚合IO时的乱序处理,提高了固态硬盘的读写效率。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种乱序聚合处理方法、装置及固态硬盘。
背景技术
NVMe(Non-volatile memory express,非易失性内存主机控制器接口规范)是一种专门用于访问通过PCIe(PCI-Express,一种总线和接口标准)总线附加的非易失性内存介质的通讯规范。Nvme协议与PCIe协议相结合,利用固态硬盘(Solid State Drives,SSD)的并行特性,提高了SSD的读取和写入速度,实现了更快的非易失性存储。
目前,在SSD磁盘读写过程中,将连续地址的小IO(Input/Output,输入输出)读写内容聚合为大IO,是一种常见的提高读写效率的方法。该方法可以有效减小读写时间、降低读写延迟。然而,现有技术中的IO聚合方案只涉及对聚合条件的优化,即对如何组成聚合报文进行了优化;但对于关联的聚合报文,应该如何识别其关联性,以完成聚合报文的处理,在现有技术方案中并没有相关阐述。因此,如何能够识别聚合IO的报文关联性,以实现乱序传输的数据帧的正确聚合,是现今急需解决的问题。
发明内容
本发明的目的是提供一种乱序聚合处理方法、装置及固态硬盘,以识别聚合IO的报文关联性,实现乱序传输的数据帧的正确聚合。
为解决上述技术问题,本发明提供一种乱序聚合处理方法,包括:
获取聚合输入输出的数据帧;其中,所述数据帧包括数据结构信息,所述数据结构信息包括数据帧的聚合位置信息、链表指针标识和相邻数据帧信息;所述数据帧存储在链表中;
根据所述数据帧的数据结构信息,配置各所述聚合输入输出各自对应的链表标志位信息;
根据配置完成的链表标志位信息,对所述聚合输入输出对应的全部数据帧进行处理;其中,所述配置完成的链表标志位信息包括相应的聚合输入输出对应的全部数据帧的数据结构信息。
在一些实施例中,所述聚合位置信息包括首数据帧标识、尾数据帧标识和中间数据帧信息,所述中间数据帧信息包括中间数据帧存在标识和中间数据帧达到标识。
在一些实施例中,所述聚合输入输出对应的全部数据帧的数量小于或等于3。
在一些实施例中,所述相邻数据帧信息包括前一数据帧信息和/或后一数据帧信息;其中,所述前一数据帧信息包括前一数据帧存在标识和前一数据帧链表指针标识,所述后一数据帧信息包括后一数据帧存在标识和后一数据帧链表指针标识。
在一些实施例中,所述获取聚合输入输出的数据帧,包括:
固态硬盘接收主机的输入输出请求;
根据所述输入输出请求的输入输出类型和目的地址,对所述输入输出请求进行聚合,得到所述聚合输入输出,并配置各所述聚合输入输出各自对应的数据帧。
在一些实施例中,所述根据所述数据帧的数据结构信息,配置各所述聚合输入输出各自对应的链表标志位信息,包括:
根据当前数据帧的数据结构信息,配置当前链表标志位信息中当前数据帧对应的标志位;其中,当前链表标志位信息为当前数据帧对应的聚合输入输出的链表标志位信息,所述标志位包括所述聚合位置信息中的首数据帧标识、尾数据帧标识、中间数据帧存在标识和中间数据帧达到标识对应的标志位、所述链表指针标识对应的标志位以及所述相邻数据帧信息中的前一数据帧存在标识和前一数据帧链表指针标识对应的标志位;
更新当前链表标志位信息中各数据帧对应的目标标志位;其中,所述目标标志位为所述首数据帧标识、所述尾数据帧标识、所述中间数据帧存在标识和所述中间数据帧达到标识对应的标志位。
在一些实施例中,所述聚合输入输出对应的全部数据帧的数量小于或等于3,所述根据当前数据帧的数据结构信息,配置当前链表标志位信息中当前数据帧对应的标志位,包括:
若当前聚合输入输出对应的全部数据帧的数量为1,则将当前链表标志位信息中当前数据帧对应的首数据帧标识、尾数据帧标识、中间数据帧存在标识、中间数据帧达到标识、前一数据帧存在标识和前一数据帧链表指针标识的标志位配置为0,将当前数据帧对应的链表指针标识的标志位配置为当前数据帧的链表指针标识;其中,当前聚合输入输出为当前数据帧对应的聚合输入输出;
若当前聚合输入输出对应的全部数据帧的数量为2或3,则在当前数据帧为当前聚合输入输出的首个数据帧时,将当前链表标志位信息中当前数据帧对应的首数据帧标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置为当前数据帧的链表指针标识;
在当前数据帧为当前聚合输入输出的最后一个数据帧时,将当前链表标志位信息中当前数据帧对应的首数据帧标识和前一数据帧存在标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置当前数据帧的链表指针标识,将当前数据帧对应的前一数据帧链表指针标识的标志位由0配置当前数据帧对应的前一数据帧链表指针标识;
在当前数据帧为当前聚合输入输出的中间数据帧时,将当前链表标志位信息中当前数据帧对应的中间数据帧存在标识、中间数据帧达到标识和前一数据帧存在标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置当前数据帧的链表指针标识,将当前数据帧对应的前一数据帧链表指针标识的标志位由0配置当前数据帧对应的前一数据帧链表指针标识;
相应的,所述更新当前链表标志位信息中各数据帧对应的目标标志位,包括:
若当前聚合输入输出对应的全部数据帧的数量为2或3,利用当前链表标志位信息中当前数据帧对应的为1的目标标志位,更新当前链表标志位信息中前一数据帧对应的目标标志位。
在一些实施例中,所述根据配置完成的链表标志位信息,对所述聚合输入输出对应的全部数据帧进行处理,包括:
根据当前链表标志位信息中首个数据帧对应的目标标志位,检测当前链表标志位信息是否配置完成;
若是,则根据当前链表标志位信息,对当前聚合输入输出对应的全部数据帧进行处理;其中,当前聚合输入输出为当前链表标志位信息对应的聚合输入输出。
本发明还提供了一种乱序聚合处理装置,包括:
数据获取模块,用于获取聚合输入输出的数据帧;其中,所述数据帧包括数据结构信息,所述数据结构信息包括数据帧的聚合位置信息、链表指针标识和相邻数据帧信息;所述数据帧存储在链表中;
链表配置模块,用于根据所述数据帧的数据结构信息,配置各所述聚合输入输出各自对应的链表标志位信息;
聚合处理模块,用于根据配置完成的链表标志位信息,对所述聚合输入输出对应的全部数据帧进行处理;其中,所述配置完成的链表标志位信息包括相应的聚合输入输出对应的全部数据帧的数据结构信息。
此外,本发明还提供了一种固态硬盘,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述所述的乱序聚合处理方法的步骤。
本发明所提供的一种乱序聚合处理方法,包括:获取聚合输入输出的数据帧;其中,数据帧包括数据结构信息,数据结构信息包括数据帧的聚合位置信息、链表指针标识和相邻数据帧信息;数据帧存储在链表中;根据数据帧的数据结构信息,配置各聚合输入输出各自对应的链表标志位信息;根据配置完成的链表标志位信息,对聚合输入输出对应的全部数据帧进行处理;其中,配置完成的链表标志位信息包括相应的聚合输入输出对应的全部数据帧的数据结构信息;
可见,本发明通过聚合IO的各数据帧中数据结构信息的设置,能够识别聚合IO的各数据帧的关联性,从而利用数据帧的数据结构信息,配置各聚合IO各自对应的链表标志位信息,从而利用链表标志位信息对乱序传输的数据帧进行正确聚合,实现处理聚合IO时的乱序处理,能够提高固态硬盘的读写效率。此外,本发明还提供了一种乱序聚合处理装置及固态硬盘,同样具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种乱序聚合处理方法的流程图;
图2为本发明实施例所提供的一种磁盘中实际的满条带场景的示意图;
图3为本发明实施例所提供的一种磁盘中实际的跨条带场景的示意图;
图4为本发明实施例所提供的一种不跨条带数据帧的示意图;
图5为本发明实施例所提供的一种跨两条带数据帧的示意图;
图6为本发明实施例所提供的一种跨三条带数据帧的示意图;
图7为本发明实施例所提供的一种不跨条带数据帧对应的数据结构示意图;
图8为本发明实施例所提供的一种跨两条带数据帧对应的数据结构示意图;
图9为本发明实施例所提供的一种跨三条带数据帧对应的数据结构示意图;
图10为本发明实施例所提供的一种数据帧组合的示意图;
图11为本发明实施例所提供的一种链表创建过程的示意图;
图12为本发明实施例所提供的一种跨两条带聚合IO的一个数据帧对应的链表标志位信息配置的示意图;
图13为本发明实施例所提供的一种跨两条带聚合IO的一个数据帧对应的链表标志位信息更新的示意图;
图14为本发明实施例所提供的一种跨两条带聚合IO对应的链表标志位信息配置完成的示意图;
图15为本发明实施例所提供的一种不跨条带聚合IO对应的链表标志位信息配置完成的示意图;
图16为本发明实施例所提供的一种跨三条带聚合IO的尾条带数据帧对应的链表标志位信息配置更新的示意图;
图17为本发明实施例所提供的一种跨三条带聚合IO的中间条带数据帧对应的链表标志位信息配置的示意图;
图18为本发明实施例所提供的一种跨三条带聚合IO的首条带数据帧对应的链表标志位信息配置的示意图;
图19为本发明实施例所提供的一种乱序聚合处理装置的结构框图;
图20为本发明实施例所提供的一种固态硬盘的结构示意图;
图21为本发明实施例所提供的一种计算机可读存储介质的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例所提供的一种乱序聚合处理方法的流程图。该方法可以包括:
步骤101:获取聚合输入输出的数据帧;其中,数据帧包括数据结构信息,数据结构信息包括数据帧的聚合位置信息、链表指针标识和相邻数据帧信息;数据帧存储在链表中。
可以理解的是,在磁盘中保留信息,实质上就是通过总线对磁盘进行读写操作。对于相邻地址数据,期望能将相邻地址数据凑齐后,一次性全部写入。在大部分模式下,磁盘写入的基本单元可以称之为条带(stripe),在条带中,同一个IO(输入输出)中的数据放在相邻地址段中,连续读写,如图2所示,IO0的全部数据可以放在一个条带内。如果某个IO的数据不能完全放到某个条带中,它就会被分割放置在两个或更多不同的条带,且IO之间地址连续,这种如图3所示,IO1的数据可以放在两个条带内。
对应的,本实施例中IO在进行聚合时,按照IO类型(如IO读请求或IO写请求)进行聚合,具有相同目的地址的IO被封装为1个数据帧(即条带数据帧),可以称之为“不跨条带数据帧”,如图4所示。如果个别IO需要被两个数据帧共享,可以称之为“跨两条带数据帧”,如图5所示。如果需要被三个数据帧共享,可以称之为“跨三条带数据帧”,如图6所示。
相应的,本实施例中获取的数据帧中的数据与其在硬盘中的存储位置存在映射关系,如图3中上边的数据对应图5中的第一个数据帧,图3中下边的数据对应图5中的第二个数据帧。
需要说明的是,本实施例中的聚合输入输出(即聚合IO)进行IO聚合处理后得到的IO请求,如多个目的地址相邻的IO请求聚合得到的IO请求和未聚合到其他IO请求的IO请求;每个聚合IO的数据帧可以为1个或多个。本实施例中通过在数据帧中设置数据结构信息,使处理器(如SSD的处理器)能够配置聚合IO对应的链表标志位信息,从而确定获取的每个聚合IO的各数据帧之间的关联性,以利用链表标志位信息对乱序传输的数据帧进行正确聚合。
对应的,对于本步骤中的数据帧内的数据结构信息的具体内容,可以由设计人员根据实用场景和用户需求自行设置,如数据帧内的数据结构信息可以包括该数据帧的聚合位置信息、链表指针标识和相邻数据帧信息,聚合位置信息可以用于表述该数据帧在聚合IO的全部数据帧的位置(如首个数据帧、中间数据帧或末尾数据帧)的信息,链表指针标识可以为用于表述该数据帧在链表(Linked list)中存储位置的唯一标识,相邻数据帧信息可以用于表述聚合IO对应的全部数据帧中该数据帧相邻的数据帧的信息。本实施例中获取的聚合输入输出的数据帧可以存在链表中;链表是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer);本实施例中使用链表结构可以克服需要预先知道数据大小的问题,实现灵活的内存动态管理。
相应的,本实施例并不限定数据帧的聚合位置信息的具体内容,如本实施例中某个聚合IO对应的全部数据帧的数量能够大于或等于3时,数据帧的聚合位置信息包括首数据帧标识、尾数据帧标识和中间数据帧信息,中间数据帧信息包括中间数据帧存在标识和中间数据帧达到标识;其中,首数据帧标识可以用于标识该数据帧是否为聚合IO中的首个数据帧(即第一个数据帧),尾数据帧标识可以用于标识该数据帧是否为聚合IO中的末尾数据帧(即最后一个数据帧),中间数据帧存在标识可以用于标识聚合IO是否存在首个数据帧和末尾数据帧之间的数据帧,中间数据帧达到标识可以用于该数据帧是否为聚合IO中的中间数据帧;相应的,某个聚合IO对应的全部数据帧的数量最大为3,即聚合输入输出对应的全部数据帧的数量小于或等于3时,中间数据帧存在标识和中间数据帧达到标识的数量均可以为1;某个聚合IO对应的全部数据帧的数量能够大于3时,中间数据帧存在标识和中间数据帧达到标识的数量均可以为大于1的数值,如聚合输入输出对应的全部数据帧的数量小于或等于4时,中间数据帧存在标识和中间数据帧达到标识的数量均可以为2,即每对中间数据帧存在标识和中间数据帧达到标识可以标记1个中间数据帧的存在和接收情况。对应的,本实施例中聚合IO对应的全部数据帧的数量小于或等于2时,数据帧的聚合位置信息可以包括首数据帧标识和尾数据帧标识。
同样的,本实施例并不限定相邻数据帧信息的具体内容,如数据帧的相邻数据帧信息包括前一数据帧信息和/或后一数据帧信息;其中,前一数据帧信息可以用于表述聚合IO中该数据帧之前的一个数据帧(即前一数据帧)的信息,后一数据帧信息聚合IO中该数据帧之后的一个数据帧(即前一数据帧)的信息;前一数据帧信息包括用于标识前一数据帧是否存在的前一数据帧存在标识和前一数据帧链的表指针标识(即前一数据帧链表指针标识),后一数据帧信息包括用于标识后一数据帧是否存在的后一数据帧存在标识和后一数据帧链的表指针标识(后一数据帧链表指针标识)。
举例来说,如图7至图9所示,数据结构信息可以包括FstCIDisTail(即尾数据帧标识)、LastCIDisHead(即首数据帧标识)、MiddleCIDIsBody(即中间数据帧存在标识)、UseCIDBody(即中间数据帧达到标识)、context_idx(即链表指针标识)、prior_head_context_idx_vld(前一数据帧存在标识)和prior_head_context_idx(前一数据帧链表指针标识);如图7所示,链表中链表指针标识为context_idx_0的数据帧对应的聚合IO可以不跨条带数据帧;如图8所示,链表中链表指针标识为context_idx_3和context_idx_4的两个数据帧对应的聚合IO可以跨两条带数据帧;如图9所示,链表中链表指针标识为context_idx_9、context_idx_10和context_idx_11的三个数据帧对应的聚合IO可以跨三条带数据帧。
可以理解的是,本实施例中固态硬盘的处理器(即处理器件)可以利用各软件模块实现本实施例所提供的乱序聚合处理方法,也可以利用各硬件单元实现本实施例所提供的乱序聚合处理方法,本实施例对此不做任何限制。对应的,对于本步骤中获取聚合输入输出的数据帧的具体方式,可以由设计人员自行设置,如固态硬盘的Data_Fetcher(数据加载)单元可以直接接收前级单元IO聚合处理后,乱序传输的聚合IO的数据帧;固态硬盘的CTX_CTRL(链表控制)单元可以根据数据帧中的信息,建立链表,获取数据帧的数据结构信息,以识别跨条带数据帧。
对应的,本实施例所提供的方法还可以包括聚合IO的生成过程,如本步骤中固态硬盘可以接收主机的输入输出请求;根据输入输出请求的输入输出类型和目的地址,对输入输出请求进行聚合,得到聚合输入输出,并配置各聚合输入输出各自对应的数据帧。如图10所示,可以将主机中地址相邻的IO请求进行聚合,放在同一个数据帧中,如图10中的“数据帧0”所示;图10仅为示意图,真实读写SSD过程中,地址相邻的IO请求数量应该远超过2个,因此在同一个数据帧中聚合IO的数量会比图示的更多;在将相邻IO请求进行聚合后,如果有特殊IO请求需要进行多次处理,将其生成为跨条带数据帧,如图10中的“数据帧3和4”和“数据帧9、10和11”所示;生成的数据帧可以包含图7-9所示的数据结构信息;生成数据帧后,系统开始进行处理,发送数据帧和处理数据帧均可能为乱序,即按照数据帧10-9-7-8-6…的顺序进行发送和处理;由于发送和处理均为乱序,因此在数据帧完成前级模块的处理后,本实施例中可以通过链表标志位信息的配置,实现跨条带的识别和聚合。
步骤102:根据数据帧的数据结构信息,配置各聚合输入输出各自对应的链表标志位信息。
可以理解的是,本实施例中处理器可以根据获取的聚合IO的数据帧的数据结构信息,通过配置各聚合IO各自对应的链表标志位信息,识别各聚合IO的全部数据帧是否均已获取以及各已获取的数据帧在相应的聚合IO的位置,从而利用链表标志位信息实现跨条带的识别和聚合。
对应的,对于本步骤中根据数据帧的数据结构信息,配置各聚合输入输出各自对应的链表标志位信息的具体方式,可以由设计人员自行设置,如数据结构信息包括首数据帧标识、尾数据帧标识、中间数据帧存在标识和中间数据帧达到标识、链表指针标识、前一数据帧存在标识和前一数据帧链表指针标识时,本步骤中固态硬盘可以先根据当前数据帧的数据结构信息,配置当前链表标志位信息中当前数据帧对应的标志位;更新当前链表标志位信息中各数据帧对应的目标标志位;其中,当前链表标志位信息为当前数据帧对应的聚合输入输出的链表标志位信息,标志位包括聚合位置信息中的首数据帧标识、尾数据帧标识、中间数据帧存在标识和中间数据帧达到标识对应的标志位、链表指针标识对应的标志位以及相邻数据帧信息中的前一数据帧存在标识和前一数据帧链表指针标识对应的标志位;目标标志位为首数据帧标识、尾数据帧标识、中间数据帧存在标识和中间数据帧达到标识对应的标志位。
相应的,对于上述根据当前数据帧的数据结构信息,配置当前链表标志位信息中当前数据帧对应的标志位的具体方式,可以有设计人员自行设置,如若当前聚合输入输出对应的全部数据帧的数量为1,则将当前链表标志位信息中当前数据帧对应的首数据帧标识、尾数据帧标识、中间数据帧存在标识、中间数据帧达到标识、前一数据帧存在标识和前一数据帧链表指针标识的标志位配置为0,将当前数据帧对应的链表指针标识的标志位配置为当前数据帧的链表指针标识;其中,当前聚合输入输出为当前数据帧对应的聚合输入输出;
若当前聚合输入输出对应的全部数据帧的数量为2或3,则在当前数据帧为当前聚合输入输出的首个数据帧时,将当前链表标志位信息中当前数据帧对应的首数据帧标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置为当前数据帧的链表指针标识;
在当前数据帧为当前聚合输入输出的最后一个数据帧时,将当前链表标志位信息中当前数据帧对应的首数据帧标识和前一数据帧存在标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置当前数据帧的链表指针标识,将当前数据帧对应的前一数据帧链表指针标识的标志位由0配置当前数据帧对应的前一数据帧链表指针标识;
在当前数据帧为当前聚合输入输出的中间数据帧时,将当前链表标志位信息中当前数据帧对应的中间数据帧存在标识、中间数据帧达到标识和前一数据帧存在标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置当前数据帧的链表指针标识,将当前数据帧对应的前一数据帧链表指针标识的标志位由0配置当前数据帧对应的前一数据帧链表指针标识。
对应的,上述更新当前链表标志位信息中各数据帧对应的目标标志位的过程,可以为若当前聚合输入输出对应的全部数据帧的数量为2或3,利用当前链表标志位信息中当前数据帧对应的为1的目标标志位,更新当前链表标志位信息中前一数据帧对应的目标标志位。
举例来说,按照数据帧4-3-0-11-10-9的顺序接收到数据帧的情况下,可以按照这一建立如图11所示的链表,CTX_CTRL单元处理的当前数据帧为链表指针标识(context_idx)为6的数据帧时,可以将context_idx作为当前数据帧的链表地址,利用数据帧中的FstCIDisTail(即尾数据帧标识)、LastCIDisHead(即首数据帧标识)、MiddleCIDIsBody(即中间数据帧存在标识)、UseCIDBody(即中间数据帧达到标识)、prior_head_context_idx_vld(前一数据帧存在标识)和prior_head_context_idx(前一数据帧链表指针标识)等信息,配置当前数据帧对应的聚合IO的链表标志位信息;此时,链表标志位信息中当前数据帧对应的标志位的状态可以如图12所示。
CTX_CTRL单元将当前数据帧需要处理的数据,如CQ(Completion Queue,完成队列)信息发往CQ Processer(完成队列处理器,或称硬盘控制器)单元处理,CQ Processer单元处理完毕后,返回当前数据帧对应的context_idx。CQ Processer模块处理完毕后,CTX_CTRL单元根据prior_head_context_idx_vld和prior_head_context_idx,得知当前数据帧的前序数据帧(即前一数据帧)会写入context_idx=4的位置,因此将当前数据帧(context_idx=6)对应的为1的目标标记位(FstCIDisTail)更新到链表标志位信息中前序数据帧的对应位置;即由于context_idx=4的位置此时未写入数据,因此FstCIDisTail、MiddleCIDIsBody、UseCIDBody和LastCIDisHead均为0,可以使用context_idx=6的标记,对context_idx=4位置的对应标记进行覆盖,结果如图13所示;同时,可以将context_idx=6这一信息更新至context_idx=4位置的next_head_context_idx(下一数据帧链表指针标识)域段。这样,就建立起了链表的双向查找机制。
接下来,CTX_CTRL单元接收到的下一个数据帧,即当前数据帧为链表指针标识(context_idx)为4的数据帧时,由于该数据帧之前已经配置了标志位,因此,CTX_CTRL单元可以在写入当前链表标志位信息中该数据帧对应的标志位时不采用“覆盖”而采用“凑齐”的原则,仅对为0的标志位进行配置更新,结果可以如图14所示。之后,CTX_CTRL单元当前数据帧需要处理的数据发往CQ Processer单元处理,CQ Processer单元处理完毕后,返回当前数据帧对应的context_idx;由于返回的context_idx对应的当前链表标志位信息中首个数据帧(context_idx=4)对应的目标标志位为FstCIDisTail=1、MiddleCIDIsBody=0、UseCIDBody=0和LastCIDisHead=1,则可以确定当前链表标志位信息已配置完成,即跨两条带的聚合IO已凑齐,且已在CQ Processer模块完成全部的数据处理动作,可以从链表中释放当前链表标志位信息对应的两个数据帧。
对于CTX_CTRL单元接收到的下一个数据帧,即当前数据帧为链表指针标识(context_idx)为3的数据帧,其为不跨条带数据帧,当前数据帧对应的当前链表标志位信息可以如图15所示,当前链表标志位信息中首个数据帧对应的目标标志位为FstCIDisTail=0、MiddleCIDIsBody=0、UseCIDBody=0和LastCIDisHead=0;在经过CQ Processer模块处理后,可以直接完成链表的数据帧释放。
接下来,对于跨三条带的聚合IO的数据帧的处理,即context_idx为1、11和0的数据帧的处理,与上述跨两条带的处理过程类似,在此不再赘述,处理过程中跨三条带的聚合IO的链表标志位信息的内容可以经过图16至图18的变化。
步骤103:根据配置完成的链表标志位信息,对聚合输入输出对应的全部数据帧进行处理;其中,配置完成的链表标志位信息包括相应的聚合输入输出对应的全部数据帧的数据结构信息。
可以理解的是,本实施例中固态硬盘可以利用配置完成的链表标志位信息,确定相应的聚合IO的全部数据帧的在该聚合IO的顺序以及各数据帧的链表存储位置,从而能够对该聚合IO对应的全部数据帧进行聚合。
对应的,本步骤中固态硬盘还可以根据当前链表标志位信息中的目标标志位,检测当前链表标志位信息是否配置完成,即当前链表标志位信息对应的聚合IO的全部数据帧是否均已获取,从而在当前链表标志位信息配置完成后,对当前聚合输入输出对应的全部数据帧进行处理;在当前链表标志位信息未配置完成时,返回步骤101继续获取下一数据帧。
举例来说,相邻数据帧信息包括前一数据帧信息时,链表标志位信息中目标标志位的更新可以向首个数据帧凑齐;相应的,固态硬盘可以根据当前链表标志位信息中首个数据帧对应的目标标志位,检测当前链表标志位信息是否配置完成;若是,则根据当前链表标志位信息,对当前聚合输入输出对应的全部数据帧进行处理;当前聚合输入输出为当前链表标志位信息对应的聚合输入输出。例如,首个数据帧对应的目标标志位{FstCIDisTail,MiddleCIDIsBody,UseCIDBody,LastCIDisHead}为{0,0,0,0}、{1,0,0,1}或{1,1,1,1}时,可以确定当前链表标志位信息配置完成;{FstCIDisTail,MiddleCIDIsBody,UseCIDBody,LastCIDisHead}={0,0,0,0}时,当前链表标志位信息对应聚合IO不跨条带数据帧;{FstCIDisTail,MiddleCIDIsBody,UseCIDBody,LastCIDisHead}={1,0,0,1}时,当前链表标志位信息对应聚合IO跨两条带数据帧;{FstCIDisTail,MiddleCIDIsBody,UseCIDBody,LastCIDisHead}={1,1,1,1}时,当前链表标志位信息对应聚合IO跨三条带数据帧。
进一步的,配置完成的链表标志位信息对应的聚合IO的全部数据帧处理完成后,可以从链表中删除)该聚合IO的全部数据帧,以释放链表指针标识,方便后续的数据帧存储。
本实施例中,本发明实施例通过聚合IO的各数据帧中数据结构信息的设置,能够识别聚合IO的各数据帧的关联性,从而利用数据帧的数据结构信息,配置各聚合IO各自对应的链表标志位信息,从而利用链表标志位信息对乱序传输的数据帧进行正确聚合,实现处理聚合IO时的乱序处理,能够提高固态硬盘的读写效率。
相应于上面的方法实施例,本发明实施例还提供了一种乱序聚合处理装置,下文描述的一种乱序聚合处理装置与上文描述的一种乱序聚合处理方法可相互对应参照。
请参考图19,图19为本发明实施例所提供的一种乱序聚合处理装置的结构框图。该装置可以包括:
数据获取模块10,用于获取聚合输入输出的数据帧;其中,数据帧包括数据结构信息,数据结构信息包括数据帧的聚合位置信息、链表指针标识和相邻数据帧信息;数据帧存储在链表中;
链表配置模块20,用于根据数据帧的数据结构信息,配置各聚合输入输出各自对应的链表标志位信息;
聚合处理模块30,用于根据配置完成的链表标志位信息,对聚合输入输出对应的全部数据帧进行处理;其中,配置完成的链表标志位信息包括相应的聚合输入输出对应的全部数据帧的数据结构信息。
在一些实施例中,聚合位置信息包括首数据帧标识、尾数据帧标识和中间数据帧信息,中间数据帧信息包括中间数据帧存在标识和中间数据帧达到标识。
在一些实施例中,聚合输入输出对应的全部数据帧的数量小于或等于3。
在一些实施例中,相邻数据帧信息包括前一数据帧信息和/或后一数据帧信息;其中,前一数据帧信息包括前一数据帧存在标识和前一数据帧链表指针标识,后一数据帧信息包括后一数据帧存在标识和后一数据帧链表指针标识。
在一些实施例中,数据获取模块10可以包括:
接收子模块,用于固态硬盘接收主机的输入输出请求;
聚合子模块,用于根据输入输出请求的输入输出类型和目的地址,对输入输出请求进行聚合,得到聚合输入输出,并配置各聚合输入输出各自对应的数据帧。
在一些实施例中,链表配置模块20可以包括:
配置子模块,用于根据当前数据帧的数据结构信息,配置当前链表标志位信息中当前数据帧对应的标志位;其中,当前链表标志位信息为当前数据帧对应的聚合输入输出的链表标志位信息,标志位包括聚合位置信息中的首数据帧标识、尾数据帧标识、中间数据帧存在标识和中间数据帧达到标识对应的标志位、链表指针标识对应的标志位以及相邻数据帧信息中的前一数据帧存在标识和前一数据帧链表指针标识对应的标志位;
更新子模块,用于更新当前链表标志位信息中各数据帧对应的目标标志位;其中,目标标志位为首数据帧标识、尾数据帧标识、中间数据帧存在标识和中间数据帧达到标识对应的标志位。
在一些实施例中,聚合输入输出对应的全部数据帧的数量小于或等于3,配置子模块可以具体用于若当前聚合输入输出对应的全部数据帧的数量为1,则将当前链表标志位信息中当前数据帧对应的首数据帧标识、尾数据帧标识、中间数据帧存在标识、中间数据帧达到标识、前一数据帧存在标识和前一数据帧链表指针标识的标志位配置为0,将当前数据帧对应的链表指针标识的标志位配置为当前数据帧的链表指针标识;其中,当前聚合输入输出为当前数据帧对应的聚合输入输出;
若当前聚合输入输出对应的全部数据帧的数量为2或3,则在当前数据帧为当前聚合输入输出的首个数据帧时,将当前链表标志位信息中当前数据帧对应的首数据帧标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置为当前数据帧的链表指针标识;
在当前数据帧为当前聚合输入输出的最后一个数据帧时,将当前链表标志位信息中当前数据帧对应的首数据帧标识和前一数据帧存在标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置当前数据帧的链表指针标识,将当前数据帧对应的前一数据帧链表指针标识的标志位由0配置当前数据帧对应的前一数据帧链表指针标识;
在当前数据帧为当前聚合输入输出的中间数据帧时,将当前链表标志位信息中当前数据帧对应的中间数据帧存在标识、中间数据帧达到标识和前一数据帧存在标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置当前数据帧的链表指针标识,将当前数据帧对应的前一数据帧链表指针标识的标志位由0配置当前数据帧对应的前一数据帧链表指针标识;
相应的,更新子模块可以具体用于若当前聚合输入输出对应的全部数据帧的数量为2或3,利用当前链表标志位信息中当前数据帧对应的为1的目标标志位,更新当前链表标志位信息中前一数据帧对应的目标标志位。
在一些实施例中,聚合处理模块30可以包括:
完成检测子模块,用于根据当前链表标志位信息中首个数据帧对应的目标标志位,检测当前链表标志位信息是否配置完成;
处理子模块,用于若配置完成,则根据当前链表标志位信息,对当前聚合输入输出对应的全部数据帧进行处理;其中,当前聚合输入输出为当前链表标志位信息对应的聚合输入输出。
本实施例中,本发明实施例通过聚合IO的各数据帧中数据结构信息的设置,能够识别聚合IO的各数据帧的关联性,从而通过链表配置模块20利用数据帧的数据结构信息,配置各聚合IO各自对应的链表标志位信息,从而利用链表标志位信息对乱序传输的数据帧进行正确聚合,实现处理聚合IO时的乱序处理,能够提高固态硬盘的读写效率。
相应于上面的方法实施例,本发明实施例还提供了一种固态硬盘,下文描述的一种固态硬盘与上文描述的一种乱序聚合处理方法可相互对应参照。
请参考图20,图20为本发明实施例所提供的一种固态硬盘的结构示意图。该诱饵文件投放设备可以包括:
存储器D1,用于存储计算机程序;
处理器D2,用于执行计算机程序时实现上述方法实施例所提供的乱序聚合处理方法的步骤。
相应于上面的方法实施例,本发明实施例还提供了一种计算机可读存储介质,下文描述的一种计算机可读存储介质与上文描述的一种乱序聚合处理方法可相互对应参照。
请参考图21,图21为本发明实施例所提供的一种计算机可读存储介质的结构示意图。该计算机可读存储介质40上存储有计算机程序41,计算机程序41被处理器执行时实现如上述方法实施例所提供的乱序聚合处理方法的步骤。
该计算机可读存储介质40具体可以为U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的存储介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、固态硬盘及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
以上对本发明所提供的一种乱序聚合处理方法、装置及固态硬盘进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种乱序聚合处理方法,其特征在于,包括:
获取聚合输入输出的数据帧;其中,所述数据帧包括数据结构信息,所述数据结构信息包括数据帧的聚合位置信息、链表指针标识和相邻数据帧信息;所述数据帧存储在链表中;
根据所述数据帧的数据结构信息,配置各所述聚合输入输出各自对应的链表标志位信息;
根据配置完成的链表标志位信息,对所述聚合输入输出对应的全部数据帧进行处理;其中,所述配置完成的链表标志位信息包括相应的聚合输入输出对应的全部数据帧的数据结构信息。
2.根据权利要求1所述的乱序聚合处理方法,其特征在于,所述聚合位置信息包括首数据帧标识、尾数据帧标识和中间数据帧信息,所述中间数据帧信息包括中间数据帧存在标识和中间数据帧达到标识。
3.根据权利要求1所述的乱序聚合处理方法,其特征在于,所述聚合输入输出对应的全部数据帧的数量小于或等于3。
4.根据权利要求1所述的乱序聚合处理方法,其特征在于,所述相邻数据帧信息包括前一数据帧信息和/或后一数据帧信息;其中,所述前一数据帧信息包括前一数据帧存在标识和前一数据帧链表指针标识,所述后一数据帧信息包括后一数据帧存在标识和后一数据帧链表指针标识。
5.根据权利要求1所述的乱序聚合处理方法,其特征在于,所述获取聚合输入输出的数据帧,包括:
固态硬盘接收主机的输入输出请求;
根据所述输入输出请求的输入输出类型和目的地址,对所述输入输出请求进行聚合,得到所述聚合输入输出,并配置各所述聚合输入输出各自对应的数据帧。
6.根据权利要求1至5任一项所述的乱序聚合处理方法,其特征在于,所述根据所述数据帧的数据结构信息,配置各所述聚合输入输出各自对应的链表标志位信息,包括:
根据当前数据帧的数据结构信息,配置当前链表标志位信息中当前数据帧对应的标志位;其中,当前链表标志位信息为当前数据帧对应的聚合输入输出的链表标志位信息,所述标志位包括所述聚合位置信息中的首数据帧标识、尾数据帧标识、中间数据帧存在标识和中间数据帧达到标识对应的标志位、所述链表指针标识对应的标志位以及所述相邻数据帧信息中的前一数据帧存在标识和前一数据帧链表指针标识对应的标志位;
更新当前链表标志位信息中各数据帧对应的目标标志位;其中,所述目标标志位为所述首数据帧标识、所述尾数据帧标识、所述中间数据帧存在标识和所述中间数据帧达到标识对应的标志位。
7.根据权利要求6所述的乱序聚合处理方法,其特征在于,所述聚合输入输出对应的全部数据帧的数量小于或等于3,所述根据当前数据帧的数据结构信息,配置当前链表标志位信息中当前数据帧对应的标志位,包括:
若当前聚合输入输出对应的全部数据帧的数量为1,则将当前链表标志位信息中当前数据帧对应的首数据帧标识、尾数据帧标识、中间数据帧存在标识、中间数据帧达到标识、前一数据帧存在标识和前一数据帧链表指针标识的标志位配置为0,将当前数据帧对应的链表指针标识的标志位配置为当前数据帧的链表指针标识;其中,当前聚合输入输出为当前数据帧对应的聚合输入输出;
若当前聚合输入输出对应的全部数据帧的数量为2或3,则在当前数据帧为当前聚合输入输出的首个数据帧时,将当前链表标志位信息中当前数据帧对应的首数据帧标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置为当前数据帧的链表指针标识;
在当前数据帧为当前聚合输入输出的最后一个数据帧时,将当前链表标志位信息中当前数据帧对应的首数据帧标识和前一数据帧存在标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置当前数据帧的链表指针标识,将当前数据帧对应的前一数据帧链表指针标识的标志位由0配置当前数据帧对应的前一数据帧链表指针标识;
在当前数据帧为当前聚合输入输出的中间数据帧时,将当前链表标志位信息中当前数据帧对应的中间数据帧存在标识、中间数据帧达到标识和前一数据帧存在标识的标志位由0配置为1,将当前数据帧对应的链表指针标识的标志位由0配置当前数据帧的链表指针标识,将当前数据帧对应的前一数据帧链表指针标识的标志位由0配置当前数据帧对应的前一数据帧链表指针标识;
相应的,所述更新当前链表标志位信息中各数据帧对应的目标标志位,包括:
若当前聚合输入输出对应的全部数据帧的数量为2或3,利用当前链表标志位信息中当前数据帧对应的为1的目标标志位,更新当前链表标志位信息中前一数据帧对应的目标标志位。
8.根据权利要求6所述的乱序聚合处理方法,其特征在于,所述根据配置完成的链表标志位信息,对所述聚合输入输出对应的全部数据帧进行处理,包括:
根据当前链表标志位信息中首个数据帧对应的目标标志位,检测当前链表标志位信息是否配置完成;
若是,则根据当前链表标志位信息,对当前聚合输入输出对应的全部数据帧进行处理;其中,当前聚合输入输出为当前链表标志位信息对应的聚合输入输出。
9.一种乱序聚合处理装置,其特征在于,包括:
数据获取模块,用于获取聚合输入输出的数据帧;其中,所述数据帧包括数据结构信息,所述数据结构信息包括数据帧的聚合位置信息、链表指针标识和相邻数据帧信息;所述数据帧存储在链表中;
链表配置模块,用于根据所述数据帧的数据结构信息,配置各所述聚合输入输出各自对应的链表标志位信息;
聚合处理模块,用于根据配置完成的链表标志位信息,对所述聚合输入输出对应的全部数据帧进行处理;其中,所述配置完成的链表标志位信息包括相应的聚合输入输出对应的全部数据帧的数据结构信息。
10.一种固态硬盘,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述的乱序聚合处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311271414.3A CN117331500A (zh) | 2023-09-28 | 2023-09-28 | 一种乱序聚合处理方法、装置及固态硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311271414.3A CN117331500A (zh) | 2023-09-28 | 2023-09-28 | 一种乱序聚合处理方法、装置及固态硬盘 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117331500A true CN117331500A (zh) | 2024-01-02 |
Family
ID=89294663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311271414.3A Pending CN117331500A (zh) | 2023-09-28 | 2023-09-28 | 一种乱序聚合处理方法、装置及固态硬盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117331500A (zh) |
-
2023
- 2023-09-28 CN CN202311271414.3A patent/CN117331500A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109564545B (zh) | 用于压缩地址的方法和设备 | |
US20200257620A1 (en) | Memory Block Reclamation Method and Apparatus | |
CN109542636B (zh) | 一种数据更新的方法及装置 | |
CN110727403B (zh) | 元数据管理方法及装置 | |
CN112558868B (zh) | 一种配置数据存储的方法和装置及设备 | |
EP2919120A1 (en) | Memory monitoring method and related device | |
US11550508B2 (en) | Semiconductor storage device and control method thereof | |
CN112214240A (zh) | 主机输出输入命令的执行装置及方法及计算机可读取存储介质 | |
WO2019174206A1 (zh) | 一种存储设备的数据读取方法、装置、终端设备和存储介质 | |
CN116679887B (zh) | 用于NAND Flash的通用控制模块及方法 | |
US9152348B2 (en) | Data transmitting method, memory controller and data transmitting system | |
CN117331500A (zh) | 一种乱序聚合处理方法、装置及固态硬盘 | |
CN112825024A (zh) | 命令融合、拆分方法与NVMe控制器 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
CN112130765B (zh) | Eeprom数据读写方法及装置 | |
US10838621B2 (en) | Method and flash memory controller capable of avoiding inefficient memory block swap or inefficient garbage collection | |
CN116917876A (zh) | 一种数据处理方法及装置 | |
CN112988038A (zh) | 非易失性存储器的数据写入方法、终端和可读存储介质 | |
CN114816833B (zh) | 一种flash数据的写入方法、装置以及系统 | |
CN113067581B (zh) | 解码系统、解码方法、电子设备及存储介质 | |
US20230315622A1 (en) | Method and non-transitory computer-readable storage medium and apparatus for data access in response to host discard commands | |
US20240004552A1 (en) | Method for performing memory operation and apparatus | |
CN109388513B (zh) | 数据校验的方法、阵列控制器及硬盘 | |
CN107749307B (zh) | 存储系统写盘失败时的重写方法、装置、设备和存储介质 | |
US9069486B2 (en) | Data transfer control device and data storage device |
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 |