CN116917876A - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN116917876A CN116917876A CN202180094528.8A CN202180094528A CN116917876A CN 116917876 A CN116917876 A CN 116917876A CN 202180094528 A CN202180094528 A CN 202180094528A CN 116917876 A CN116917876 A CN 116917876A
- Authority
- CN
- China
- Prior art keywords
- command
- commands
- order
- sequence
- preserving
- 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
- 238000003672 processing method Methods 0.000 title abstract description 10
- 238000000034 method Methods 0.000 claims abstract description 70
- 238000012545 processing Methods 0.000 claims description 89
- 230000015654 memory Effects 0.000 claims description 77
- 238000004891 communication Methods 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 22
- 238000004806 packaging method and process Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 abstract description 13
- 238000005538 encapsulation Methods 0.000 abstract description 8
- 238000013500 data storage Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 44
- 238000004321 preservation Methods 0.000 description 25
- 230000009471 action Effects 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000014759 maintenance of location Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- 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
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及数据存储技术领域,公开了一种数据处理方法及装置,保证多个命令之间的执行顺序。首先,第一设备获取多个第一命令。然后,第一设备对第一命令进行封装,得到第二命令,封装包括为具有保序要求的目标命令添加顺序标识。接下来,第一设备并行发送多个第二命令。第二设备并行接收多个第二命令,对第二命令解封装,然后根据顺序标识对多个第一命令进行调度。第一设备将多个第二命令并行发送给第二设备,第二设备通过顺序标识可以保证多个第一命令的执行顺序,还可以合理利用自身的空闲时间,及时处理多个第一命令,减少多个第一命令的执行等待时间,提高存储***性能。
Description
本申请实施例涉及数据存储领域,尤其涉及一种数据处理方法及装置。
用户的操作行为(例如应用程序操作、下载图片、网聊等),可以理解为对文件***进行操作,例如对文件(即数据)的读取和保存,文件***将这些用户操作行为转化为IO读、IO写等命令。
在某些场景下,多个命令之间有保序要求,如何保证多个命令之间的执行顺序,是需要解决的技术问题。
发明内容
本申请实施例提供一种数据处理方法及装置,用以保证多个命令之间的执行顺序。
第一方面,提供了一种数据处理方法,首先,第一设备获取多个第一命令。然后,所述第一设备对所述第一命令进行封装,得到第二命令,其中,在所述多个第一命令包括至少两个具有保序要求的目标命令的情况下,所述封装包括为所述目标命令添加顺序标识,所述顺序标识用于指示所述目标命令的执行顺序。接下来,所述第一设备并行发送多个第二命令。
可选的,所述封装还包括格式转换,转换后的格式满足第一设备与第二设备之间的协议。
第一方面中,第一设备将多个第二命令(包括第一命令及所述第一命令对应的顺序标识)并行发送给第二设备,第二设备可以根据顺序标识依次对多个第一命令进行调度,依次执行多个第一命令。不但可以保证多个第一命令的执行顺序,而且第二设备可以合理利用自身的空闲时间,及时处理多个第一命令,减少多个第一命令的执行等待时间,提高存储***性能,提高用户体验。
在一种可能的实现中,所述第一命令为IO命令。
在一种可能的实现中,任一所述第一命令为:对用户数据的写命令或对节点数据的写命令,所述节点数据用于指示所述用户数据所存储的位置。
在一种可能的实现中,所述对节点数据的写命令的执行顺序在所述对用户数据的写命令的执行顺序之前。可以理解为该数据处理方法应用于flash友好文件***(flash friendly file system,F2FS)。
在一种可能的实现中,所述第一命令用于将数据从内存(第一设备侧的内存)写入闪存阵列(第二设备侧的闪存阵列)中。
在一种可能的实现中,所述顺序标识为序列号,通过所述序列号的数值大小指示命令的执行顺序。
例如,序列号小的命令的执行顺序早于序列号大的命令的执行顺序,或者序列号大的命令的执行顺序早于序列号小的命令的执行顺序。
在一种可能的实现中,第一设备还可以获取保序标识命令,所述保序标识命令用于指 示:位于所述保序标识命令前面的命令的执行顺序早于所述保序标识命令的下一个命令(位于所述保序标识命令后面的首个命令)的执行顺序。进一步,可以将在所述保序标识命令之前获取到的第一命令和在所述保序标识命令之后获取到的首个命令,确定为目标命令。
在一种可能的实现中,第一设备为在所述保序标识命令之前获取到的第一命令添加的序列号,与为在所述保序标识命令之后获取到的首个第一命令添加的序列号不同。
例如,第一设备为在所述保序标识命令之前获取到的第一命令添加的序列号、小于为在所述保序标识命令之后获取到的首个第一命令添加的序列号。或者,第一设备为在所述保序标识命令之前获取到的第一命令添加的序列号、大于为在所述保序标识命令之后获取到的首个第一命令添加的序列号。
在一种可能的实现中,所述第一设备并行地、乱序地发送多个所述第二命令。
在一种可能的实现中,所述封装还包括:为所述多个第一命令中的除所述目标命令外的第一命令添加顺序标识。
第二方面,提供了一种数据处理方法,第二设备并行接收多个第二命令。然后,对所述第二命令解封装,所述解封装包括解析所述第二命令包括的第一命令和顺序标识,所述顺序标识用于指示具有保序要求的命令的执行顺序。接下来,所述第二设备根据所述顺序标识,对所述多个第一命令进行调度。
第二方面中,第二设备并行地接收多个第二命令,在解析出顺序标识后,第二设备可以根据顺序标识依次对多个第一命令进行调度,依次执行多个第一命令。不但可以保证多个第一命令的执行顺序,而且第二设备可以合理利用自身的空闲时间,及时处理多个第一命令,减少多个第一命令的执行等待时间,提高存储***性能,提高用户体验。
在一种可能的实现中,所述顺序标识为序列号;所述第二设备可以按照所述序列号的数值大小,调度多个所述第一命令。
在一种可能的实现中,所述第二设备并行地、乱序地接收多个第二命令。
第三方面,提供了一种数据处理装置,所述装置具有实现上述第一方面及第一方面任一可能的实现中的功能。这些功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的功能模块。
在一种可能的实现中,所述数据处理装置包括:文件***层、驱动层、第一接口层。
所述文件***层,用于获取多个第一命令。或者,所述驱动层,用于获取多个第一命令。可以理解的是,所述文件***层在获取到多个第一命令后,向所述驱动层发送所述多个第一命令。
所述驱动层,用于对所述第一命令进行封装,得到第二命令,其中,在所述多个第一命令包括至少两个具有保序要求的目标命令的情况下,所述封装包括为所述目标命令添加顺序标识,所述顺序标识用于指示所述目标命令的执行顺序。
所述第一接口层,用于并行发送多个所述第二命令。
在一种可能的实现中,所述文件***层还可以向所述驱动层发送保序标识命令(flag);相应的,所述驱动层,还用于从所述文件***层获取保序标识命令。所述保序标识命令(flag)用于指示:位于所述保序标识命令(flag)前面的第一命令的执行顺序早于,所述保序标 识命令(flag)的下一个第一命令(位于所述保序标识命令后面的首个命令)的执行顺序。可选的,所述保序标识命令(flag)在任意的两个目标命令之间发送,且所述保序标识命令(flag)与所述两个目标命令中发送时间靠后的所述目标命令之间不存在其它命令。
所述驱动层,还用于将在所述保序标识命令之前获取到的第一命令和在所述保序标识命令之后获取到的首个命令,确定为目标命令。
在一种可能的实现中,所述驱动层为在所述保序标识命令之前获取到的第一命令添加的序列号,与为在所述保序标识命令之后获取到的首个第一命令添加的序列号不同。
在一种可能的实现中,所述第一接口层并行地、乱序地发送多个所述第二命令。
在一种可能的实现中,所述封装还包括:为所述多个第一命令中的除所述目标命令外的第一命令添加顺序标识。
第四方面,提供了一种数据处理装置,所述装置具有实现上述第二方面及第二方面任一可能的实现中的功能。这些功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的功能模块。
在一种可能的实现中,所述数据处理装置包括:第二接口层,命令调度层。
所述第二接口层,用于并行接收多个第二命令。
所述命令调度层,用于对所述第二命令解封装,所述解封装包括解析所述第二命令包括的第一命令和顺序标识,所述顺序标识用于指示具有保序要求的命令的执行顺序;根据所述顺序标识,对所述多个第一命令进行调度。
第五方面,提供了一种数据处理装置,包括处理器,可选的,还包括存储器;所述处理器和所述存储器耦合;所述存储器,用于存储计算机程序或指令;所述处理器,用于执行所述存储器中的部分或者全部计算机程序或指令,当所述部分或者全部计算机程序或指令被执行时,用于实现上述第一方面及第一方面任一可能的实现的方法中第一设备的功能,或实现上述第二方面及第二方面任一可能的实现中第二设备的功能。
在一种可能的实现中,所述装置还可以包括通信接口,所述通信接口与所述处理器耦合,所述通信接口,用于发送所述处理器处理后的信号,或者接收输入给所述处理器的信号。所述接口可以执行第一方面及第一方面任一可能的实现中第一设备执行的发送动作或接收动作;或者,执行第二方面及第二方面任一可能的实现中第二设备执行的发送动作或接收动作。
例如,在用于实现上述第一方面及第一方面任一可能的实现的方法中第一设备的功能时:
所述处理器,用于:获取多个第一命令;对所述第一命令进行封装,得到第二命令,其中,在所述多个第一命令包括至少两个具有保序要求的目标命令的情况下,所述封装包括为所述目标命令添加顺序标识,所述顺序标识用于指示所述目标命令的执行顺序;
所述通信接口,用于:并行地发送多个所述第二命令。
示例的,所述第一命令为IO命令。
示例的,所述第一命令为:对用户数据的写命令;或,对节点数据的写命令;其中,所述节点数据用于指示所述用户数据所存储的位置。
示例的,所述顺序标识为序列号,通过所述序列号的数值大小指示执行顺序。
示例的,所述处理器,还用于:获取保序标识命令,所述保序标识命令用于指示:位于所述保序标识命令前面的命令的执行顺序早于所述保序标识命令的下一个命令的执行顺序;将在所述保序标识命令之前获取到的第一命令和在所述保序标识命令之后获取到的首个命令,确定为目标命令。
示例的,为在所述保序标识命令之前获取到的第一命令添加的序列号,与为在所述保序标识命令之后获取到的首个第一命令添加的序列号不同。
示例的,所述通信接口在用于并行地发送多个所述第二命令时,具体用于:并行地、乱序地发送多个所述第二命令。
示例的,所述封装还包括:为所述多个第一命令中的除所述目标命令外的第一命令添加顺序标识。
第六方面,提供了一种存储控制器,包括:处理器,以及耦合至所述处理器的通信接口;
所述通信接口,用于:并行地接收多个第二命令;
所述处理器,用于:对所述第二命令进行解封装,所述解封装包括解析所述第二命令包括的第一命令和顺序标识,所述顺序标识用于指示具有保序要求的命令的执行顺序;根据所述顺序标识,调度多个所述第一命令。
在一种可能的实现中,所述顺序标识为序列号;所述处理器在用于根据所述顺序标识,调度多个所述第一命令时,具体用于:按照所述序列号的数值大小,调度多个所述第一命令。
第七方面,提供了一种闪存,所述闪存包括第六方面介绍的存储控制器,以及闪存阵列;所述存储控制器,用于:调度所述第一命令对所述闪存阵列进行访问。
第八方面,提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序包括用于实现第一方面及第一方面任一可能的实现中的功能的指令,或用于实现第二方面及第二方面任一可能的实现中的功能的指令。
或者,一种计算机可读存储介质,用于存储计算机程序,所述计算机程序被计算机执行时,可以使得所述计算机执行上述第一方面及第一方面任一可能的实现的方法中第一设备执行的方法,或执行上述第二方面及第二方面任一可能的实现中第二设备执行的方法。
第九方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面及第一方面任一可能的实现中由第一设备执行的方法,或执行上述第二方面及第二方面任一可能的实现中由第二设备执行的方法。
上述第三方面至第九方面的技术效果可以参照第一方面至第二方面中的描述,重复之处不再赘述。
图1为本申请实施例适用的一种NAND Flash存储***结构图;
图2为本申请实施例适用的一种数据处理过程示意图;
图3为本申请实施例适用的另一种NAND Flash存储***结构图;
图4为本申请实施例适用的一种数据处理装置结构图;
图5为本申请实施例适用的一种数据处理装置结构图。
以下对本申请实施例的部分用语进行解释说明,以便于本领域技术人员理解。
1)本申请的文件***,可以理解为用于管理文件的***。文件***的数据包括节点数据(node data)和用户数据(user data)。用户数据即为文件本身,例如图片、视频、聊天记录等。节点数据用于文件***索引文件在存储设备中的逻辑位置。
用户的操作行为(例如应用程序操作、下载图片、网聊等),可以理解为对文件***进行操作,主要是文件的读取和保存,文件***将这些用户操作行为转化为IO读、IO写、FLUSH等命令(命令也可以替换为请求)。
这些IO读命令、IO写命令所对应的数据包括:文件本身(例如图片)的user data,还可以包括文件***生成的用于记录user data在文件***的哪个位置的节点数据(node data)。节点数据(node data)类似一张多级索引表,大部分情况下,这些节点数据(node data)需要先等待文件本身(例如图片)的用户数据(user data)先写入存储设备,才能保存节点数据(node data)到存储设备。以便于文件***根据节点数据(node data)搜索文件本身(例如图片)的用户数据(user data)。如果先保存节点数据(node data)到存储设备,但是文件本身(例如图片)的用户数据(user data)没有存储到与节点数据(node data)对应的逻辑位置上,则文件***在根据节点数据(node data)搜索文件本身(例如图片)的用户数据(user data),会因为无法找到用户数据(user data)而出现异常。
目前,文件***在文件本身(例如图片)的用户数据(user data)和相关的节点数据(node data)之间,通过串行的方式或者通过之间穿插FLUSH命令的方式来进行保序。
2)Flash闪存和内存的区别
内存:例如随机存取存储器(random access memory,RAM),电源关闭数据不保留。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关。在断电时会丢失其存储内容,主要用于存储短时间使用的程序。
Flash:电源关闭数据保留。具备电子可擦除可编程只读存储器(electrically EPROM,EEPROM)的性能,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,还可以快速读取数据。目前Flash主要包括NOR Flash和NADN Flash。
为便于理解本申请实施例,接下来对本请的应用场景进行介绍,本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
用户在使用电子设备时,图片、聊天记录、视频等信息会先存储到电子设备的内存中, 该内存可以是数据交换的缓冲区(称为cache),该缓存区可以看做是中央处理器(central processing unit,CPU)的一部分。对于不想丢失的信息,CPU可以将信息从内存中提取出来,存储到存储设备(例如存储卡)的闪存阵列中。当然,对于需要及时查看的信息,CPU也可以将信息从闪存阵列中提取出来,存储到内存中。或者,当***上电时,CPU将闪存阵列中的待运行数据复制到内存(例如RAM)中进行存储;当***开始掉电时,CPU将内存(例如RAM)中运行的数据复制到闪存阵列中进行存储。
接下来结合图1所示,介绍一种基于NAND Flash的存储***示意图,介绍一下信息从内存存储到闪存阵列(NAND Flash介质层)中,以及从闪存阵列存储到内存中的过程。
如图1所示,该存储***包括:内存、主机Host文件***层、Host驱动层、Host设备硬件接口层、设备Device硬件接口层、Device命令调度层、Device命令处理层、NAND Flash介质层。例如,内存可以看做是电子设备中的CPU中的缓冲区。主机侧可以看做是电子设备中的CPU。设备Device侧可以看做是电子设备的存储设备(例如存储卡)中的控制器(处理器)。NAND Flash介质层可以看作是存储卡中的闪存阵列。
Host文件***层主要负责调度和处理用户操作请求,将用户操作请求转换为块设备请求、将块设备请求下发给Host驱动层,还可以处理Host驱动层返回的块设备请求的执行结果。Host驱动层主要负责接收Host文件***层下发的块设备请求,将块设备请求转换为Host和Device接口协议要求的格式的命令。通过Host设备硬件接口层将命令发送给Device设备,同时处理Device设备返回的命令执行结果。Host设备硬件接口层和Device硬件接口层主要负责提供用于Host和Device的命令高速交互的通道。Device命令调度层主要负责调度Host驱动层下发的命令,并发送给Device命令处理层。Device命令处理层主要负责处理Host下发的命令,并返回命令的执行结果给Host。NAND Flash介质层存储命令中携带的数据。
对于基于NAND Flash的存储***而言,存在典型的请求(请求也可以称为命令),例如,IO写请求和IO读请求。Host文件***层通过IO写请求,将内存中的特定数据写入NAND Flash介质中。Host文件***层通过IO读请求从NAND Flash介质中读取特定的数据到内存中。
在某些场景下,多个并发的IO写命令之间有保序要求。例如,flash友好文件***(flash friendly file system,F2FS)中,IO写命令包括:文件本身的用户数据(user data)的IO写命令,还可以包括节点数据(node data)的IO写命令。这些节点数据(node data)需要先等待用户数据(user data)先写入存储设备闪存阵列(例如NAND Flash介质),才能保存节点数据(node data)到存储设备的闪存阵列(例如NAND Flash介质)。即,先执行用户数据(user data)的IO写命令,再执行节点数据(node data)的IO写命令。再例如,任意的4个IO写命令,依次为IO_W0、IO_W1、IO_W2、IO_W3,IO_W1和IO_W2有保序要求,例如必须先执行完IO_W1写命令,才能执行IO_W2写命令,其余命令之间的顺序不进行限制。
Host文件***层可以在多个有保序要求的IO写命令之间,执行下发等待。即一个IO写命令执行完成,返回命令的执行结果给Host文件***层后,Host文件***层再下发下一个IO写命令。Host文件***层通过串行执行的方式,保证有保序要求的多个IO写命令的执行顺序。
但是串行执行命令,时延较长,会影响存储***的性能,特别是存储***中优先级较 高业务的命令串行等待,会导致整个存储***在有命令保序要求的场景下,性能大幅降低,用户体验较差。
基于此,本申请提出并行发送多个命令的技术方案,为多个命令分别分配顺序标识,通过顺序标识来指示执行命令的先后顺序,减少多个命令的执行等待时间,提高存储***性能,提高用户体验。
接下来将结合附图对方案进行详细介绍。附图中以虚线标识的特征或内容可理解为本申请实施例的可选操作或者可选结构。
如图2所示,提供了一种数据处理方法,包括以下步骤:
步骤201:第一设备获取多个第一命令。
此处的第一命令为命令本身,“第一”是为了便于与后续的第二命令进行区分,第二命令为经过封装后的命令,例如对第一命令进行了格式转换,再例如,第二命令包括命令本身(即第一命令)及为命令本身(即第一命令)分配(分配与添加可以相互替换)的顺序标识。
所述第一命令可以是IO命令,也可以是RPMB命令。所述第一命令包括写命令和/或读命令。例如IO写命令和/或IO读命令。例如,写命令(第一命令)用于将内存(第一设备侧的内存)中的数据写入闪存阵列(第二设备侧的闪存阵列)中,读命令用于将闪存阵列中的数据读取至内存中。
获取的所述多个第一命令可以是全部的第一命令均没有保护要求;也可以是全部的第一命令有保序要求;也可以是部分(至少两个)第一命令有保序要求,部分第一命令没有保序要求。例如,获取到4个第一命令,分别为:IO_W0、IO_W1、IO_W2、IO_W3,IO_W1和IO_W2有保序要求,例如必须先执行完IO_W1命令,才能执行IO_W2命令,其余命令之间的顺序不进行限制。
例如,命令的类型可以是对用户数据的写命令,也可以是对节点数据的写命令。例如所述多个第一命令包括:对用户数据的写命令和对节点数据的写命令,所述节点数据用于指示所述用户数据所存储的位置。例如,所述对节点数据的写命令的执行顺序需要在所述对用户数据的写命令的执行顺序之后,即,先执行用户数据(user data)的命令,再执行节点数据(node data)的命令。
结合图1,步骤201中的过程可以是Host文件***层执行,也可以是Host驱动层执行。
步骤202:所述第一设备对所述第一命令进行封装,得到第二命令。
本申请将未进行封装之前的命令称为第一命令,将封装之后的命令称为第二命令。
在一种示例中,所述封装也可以称为封装命令格式,所述封装包括进行格式转换,转换后的格式(即第二命令的格式)满足第一设备与第二设备之间的通信协议。
在一种示例中,在所述多个第一命令包括至少两个具有保序要求的目标命令的情况下,所述封装还包括为所述目标命令添加顺序标识,所述顺序标识用于指示所述目标命令的执行顺序。
例如,在命令域段添加顺序标识。
可选的,所述封装还包括:为所述多个第一命令中的除所述目标命令外的第一命令添加顺序标识。也就是第一设备可以只为具有保序要求的目标命令添加顺序标识,可选的,也可以为没有保序要求的第一命令添加顺序标识。除所述目标命令外的第一命令(没有保 序要求)的顺序标识不进行限制,可以是相同的,也可以是不同的。
第一设备可以在所述多个第一命令中识别出哪些命令为具有保序要求的第一命令(为了便于区分,将具有保序要求的第一命令称为目标命令),哪些命令为不具有保序要求的第一命令。
例如,第一设备可以根据命令类型确定哪些命令具有保序要求,例如用户数据(user data)的命令与节点数据(node data)的命令有保序要求。例如先执行用户数据(user data)的命令,再执行节点数据(node data)的命令。
例如,第一设备可以通过命令的优先级确定哪些命令具有保序要求。例如,命令的优先级可以通过命令类型体现,例如用户数据(user data)的命令与节点数据(node data)的命令有保序要求。再例如,命令的优先级也可以通过优先级标识体现,例如,具有优先级标识的命令有保序要求。再例如,命令的优先级也可以通过业务体现,例如,某一业务的命令与另一业务的命令有保序要求。第一设备还可以根据优先级确定第一命令中的目标命令的执行顺序要求。例如,优先级较高的目标命令的执行顺序在前,优先级较低的目标命令的执行顺序在后。
再例如,所述第一设备在获取所述多个第一命令时,还可以获取保序标识命令(flag);所述保序标识命令(flag)用于指示:位于所述保序标识命令(flag)前面的第一命令的执行顺序早于,所述保序标识命令(flag)的下一个第一命令(位于所述保序标识命令后面的首个第一命令)的执行顺序。
第一设备可以通过保序标识命令来识别哪些命令具有保序要求,例如,将在所述保序标识命令(flag)前面获取到的第一命令,和在所述保序标识命令(flag)后面获取到首个第一命令确定为具有保序要求的目标命令。
例如,在第一设备获取到的命令顺序为:IO_W0、IO_W1、flag、IO_W2、IO_W3时,可以将IO_W0、IO_W1、IO_W2确定为目标命令,IO_W0、IO_W1的执行顺序位于IO_W2的执行顺序之前。对于IO_W3与其它几个命令的执行顺序没有限制。
例如,在第一设备获取到的命令顺序为:IO_W1、flag、IO_W2、IO_W0、IO_W3时,可以将IO_W1、IO_W2确定为目标命令,IO_W1的执行顺序位于IO_W2的执行顺序之前。对于IO_W0、IO_W3之间的执行顺序没有限制,对于IO_W0、IO_W3与其它几个命令的执行顺序也没有限制。
例如,在第一设备获取到的命令顺序为:IO_W0、flag、IO_W3、IO_W1、flag、IO_W2时,可以将IO_W0、IO_W3、IO_W1、IO_W2确定为目标命令,IO_W0的执行顺序位于IO_W3的执行顺序之前,且IO_W0、IO_W3、IO_W1的执行顺序位于IO_W2的执行顺序之前。
一种示例中,所述顺序标识包括序列号(serial number,SN),可以通过所述序列号的数值大小表示所述多个第一命令的执行顺序。例如,序列号小的命令的执行顺序早于序列号大的命令的执行顺序。再例如,序列号小的命令的执行顺序晚于序列号大的命令的执行顺序,即序列号大的命令的执行顺序小于序列号小的命令的执行顺序。或者,所述顺序标识可以a、b、c、A、B、C等。
所述第一设备在为所述多个第一命令分配序列号SN时,可以是:
一种示例中,为需要执行顺序在前的目标命令(第一命令)分配的序列号、大于为需要执行顺序在后的目标命令(第一命令)分配的序列号(即序列号大的先执行,序列号小 的后执行)。对没有保序要求的第一命令分配的序列号的大小不进行限制。
例如,优先级较高的第一命令的执行顺序在前,优先级较低的第一命令的执行顺序在后,则可以按照优先级由高至低、序列号由大至小的顺序,为多个第一命令分配的序列号;即,为优先级较高的第一命令分配的序列号大,为优先级较低的第一命令分配的序列号小。
例如,先执行用户数据(user data)的命令,再执行节点数据(node data)的命令时,为对节点数据的写命令分配的序列号大于为对用户数据的写命令分配的序列号。
例如,为在所述保序标识命令之前获取到的第一命令添加的序列号,与为在所述保序标识命令之后获取到的首个第一命令添加的序列号不同。
例如,为在保序标识命令(flag)之前获取到的命令添加的序列号大于,为在所述保序标识命令之后获取到的首个命令添加的序列号。对于在所述保序标识命令之后获取到的第二个命令、第三个命令……等,添加的序列号的数值大小不进行限制。
另一种示例中,当然也可以反之,即为需要执行顺序在前的第一命令分配的序列号、小于为需要执行顺序在后的第一命令分配的序列号(即序列号小的先执行,序列号大的后执行)。对没有保序要求的第一命令分配的序列号的大小不进行限制。
例如,以按照优先级由高至低、序列号由小至大的顺序,为多个第一命令分配的序列号;即,为优先级较高的第一命令分配的序列号小,为优先级较低的第一命令分配的序列号大。
例如,为对节点数据的写命令分配的序列号小于为对用户数据的写命令分配的序列号。
例如,为在保序标识命令(flag)之前获取到的命令添加的序列号小于,为在所述保序标识命令之后获取到的首个命令添加的序列号。对于在所述保序标识命令之后获取到的第二个命令、第三个命令……等,添加的序列号的数值大小不进行限制。
所述目标命令为:所述多个第一命令中具有保序要求的命令,对于其它的没有保序要求的第一命令,添加的序列号的大小不进行限制。例如,4个第一命令,分别为:IO_W0、IO_W1、IO_W2、IO_W3。IO_W1和IO_W2有保序要求,例如必须先执行完IO_W1命令,才能执行IO_W2命令,其余命令之间的顺序不进行限制。
如果规定序列号小的先执行,序列号大的后执行,则为这4个第一命令分配序列号SN:例如IO_W0_SNx、IO_W1_SNx、IO_W2_SNx+1、IO_W3_SNx;再例如,IO_W0_SNx、IO_W1_SNx、IO_W2_SNx+1、IO_W3_SNx+1;再例如,IO_W0_SNx、IO_W1_SNx、IO_W2_SNx+2、IO_W3_SNx+1等。只要保证IO_W1的序列号小于IO_W2的序列号即可。
如果规定序列号大的先执行,序列号小的后执行,则为这4个第一命令分配序列号SN时,只要保证IO_W1的序列号大于IO_W2的序列号即可。
可以理解的是,IO_W0和IO_W3,也可以不分配序列号SN。
结合图1,步骤202中的过程可以是Host驱动层执行。
步骤203:第一设备并行发送多个第二命令。相应的,第二设备并行接收多个第二命令。
并行发送多个命令所需的时间小于设定阈值,该设定阈值远远小于串行发送(需要等待处理结果的串行发送)多个命令的时间。“并行发送多个命令”也可以理解为无需等待前一命令的处理结果,即可发送下一命令。“并行发送”也可以理解为无需等待处理结果的串行发送。
例如,串行发送4个命令包括:先发送命令1;当接收到该命令1的处理结果后,再 发送命令2;当接收到命令2的处理结果后,再发送命令3;当接收到命令3的处理结果后,再发送命令4。如果,命令1与命令2、命令2与命令3、命令3与命令4的发送时间间隔均为10s,则串行发送4个命令总共用了30s。
并行发送4个命令包括:在发送命令时,无需考虑上一个命令是否已经收到处理结果。例如,先发送命令1,不考虑是否接收到该命令1的处理结果后,就发送命令2;不考虑是否接收到命令2的处理结果,就发送命令3;不考虑是否接收到命令3的处理结果,就发送命令4。并行发送这4个命令总共用10s。或者,这4个命令的先后顺序不进行限制,可以随意顺序(例如,乱序)发送。
对于第二设备来说,在并行接收4个命令时,可能是依次接收到命令1、命令2、命令3、命令4;也可能是乱序接收到命令1、命令2、命令3、命令4。也就是第一设备可以乱序发送多个第二命令,第二设备乱序接收多个第二命令。此处的乱序是相对于第一设备获取多个第一命令的顺序而言的。当第二命令的发送顺序,与第二命令对应的第一命令的获取顺序不一致时,可以理解为乱序发送第二命令。
例如,第一设备获取4个第一命令时的获取顺序分别为命令1、命令2、命令3、命令4。第一设备发送第二命令的顺序为:命令1,命令3,命令4,命令2。这种情况可以理解为乱序发送第二命令。
另外,第一设备在并行地发送多个第二命令时,可以是在一个线程中并行地发送多个第二命令,也可以是在多个线程中并行地发送多个第二命令。
结合图1,步骤203中的过程可以是Host硬件接口层执行和Device硬件接口层执行。
步骤204:所述第二设备在接收到多个第二命令后,对第二命令进行解封装,所述解封装包括解析所述第二命令包括的第一命令和为所述第一命令添加的顺序标识。
所述顺序标识用于指示具有保序要求的命令的执行顺序。结合上文介绍可知,在添加顺序标识时,可能是所有的第一命令都添加了顺序标识,则所有的第二命令均可解析出顺序标识。也可能是一部分第一命令添加了顺序标识,另一部分第一命令没有添加顺序标识,则一部分第二命令可以解析出顺序标识,另一部分第二命令无法解析出顺序标识。
进一步地,所述顺序标识用于指示第一命令的执行顺序。
例如可以在命令域段解析顺序标识。
结合图1,步骤204中的过程可以是Device命令调度层执行。
步骤205:所述第二设备根据所述顺序标识,对所述多个第一命令进行调度,进一步地,并根据调度结果依次执行所述多个第一命令。
一种示例,所述第二设备根据所述顺序标识,串行地对所述多个第一命令进行调度。例如先调度命令1,但接收到命令1的处理结果后,再调度命令2,当接收到命令2的处理结果后,再调度命令3。
第二设备接收到多个命令,可以先解析该命令(命令的命令域段)中是否包括顺序标识。如果解析出命令中不包括顺序标识(或者不能解析出顺序标识),则可以按照接收顺序执行命令。如果解析出命令中包括顺序标识,则可以按照顺序标识执行命令。
如果有些第二命令可以解析出顺序标识,有些第二命令没有解析出顺序标识,对于其他的没有解析出顺序标识的命令,执行顺序不限定。
例如,4个第一命令,分别为:IO_W0、IO_W1、IO_W2、IO_W3。IO_W1和IO_W2有保序要求,例如必须先执行完IO_W1命令,才能执行IO_W2命令,其余命令之间的顺 序不进行限制。规定序列号小的先执行,序列号大的后执行。
第二设备依次接收到4个命令,分别为IO_W0、IO_W1_SNx、IO_W2_SNx+1、IO_W3,则第二设备对于IO_W1和IO_W2的调度顺序为:先调度IO_W1,再调度IO_W2,IO_W0和IO_W3的调度顺序不进行限定。
例如,按照接收顺序依次调度,即依次调度IO_W0、IO_W1、IO_W2、IO_W3。
再例如,先调度有顺序标识的命令,例如依次调度IO_W1、IO_W2、IO_W0、IO_W3。
再例如,最后调度有顺序标识的命令,例如依次调度IO_W0、IO_W3、IO_W1、IO_W2。
第二设备执行完某个第一命令后,可以将该第一命令的处理结果返回给第一设备。对于处理结果的返回的过程,本申请不进行限定。
第一设备在串行发送(需要等待处理结果的串行发送)多个第一命令时,例如先发送了命令1,当接收到命令1的处理结果后,再发送命令2。一方面,如果第二设备在处理完命令1,向第一设备反馈命令1的处理结果的过程中,第二设备仍然有能力继续处理命令,但是第一设备为了等待命令1的处理结果,还未把命令2发送给第二设备,则第二设备的空闲时间被浪费。另一方面,当第一设备将命令2发送给第二设备时,第二设备可能负载变大或其它原因,无法及时处理命令2,则命令2需要持续等待被处理,多个第一命令被处理的时间延长。
在本申请中,第一设备将多个第二命令(包括第一命令及所述第一命令对应的顺序标识)并行发送给第二设备,第二设备可以根据顺序标识依次对多个第一命令进行调度,依次执行多个第一命令。不但可以保证多个第一命令的执行顺序,而且第二设备可以合理利用自身的空闲时间,及时处理多个第一命令,减少多个第一命令的执行等待时间,提高存储***性能,提高用户体验。
在一种示例中,所述第一设备包括:驱动层、第一接口层。可选的,还包括:文件***层。
当所述第一设备为Host时,所述文件***层例如为图1中的Host文件***层,所述驱动层例如为图1中的Host驱动层,所述第一接口层例如为图1中的Host硬件接口层。
在步骤201中,所述第一设备获取多个第一命令,可以是所述驱动层获取多个第一命令。例如该获取方式为接收来自所述文件***层的多个第一命令。也可以是:所述文件***层获取多个第一命令。
关于获取第一命令的具体细节可以参见步骤201处的描述,重复之处不再赘述。
在步骤202中,所述第一设备对所述第一命令进行封装,可以是:所述驱动层对所述第一命令进行封装。
关于对所述第一命令进行封装的具体细节可以参见步骤202处的描述,重复之处不再赘述。
可以理解的是,所述文件***层在获取到多个第一命令后,向所述驱动层发送所述多个第一命令。
在一个可选的示例中,所述文件***层还可以根据所述多个第一命令的执行顺序,向所述驱动层发送所述多个第一命令和保序标识命令(flag),相应的,所述驱动层从文件***层获取多个第一命令和保序标识命令(flag);所述保序标识命令(flag)用于指示:位于所述保序标识命令(flag)前面的第一命令的执行顺序早于,所述保序标识命令(flag) 的下一个第一命令的执行顺序。
所述保序标识命令(flag)在任意的两个目标命令之间发送,且所述保序标识命令(flag)与所述两个目标命令中发送时间靠后的所述目标命令之间不存在其它命令;所述目标命令为:所述多个第一命令中具有保序要求的命令。
在4个第一命令,分别为:IO_W0、IO_W1、IO_W2、IO_W3的情况下:
例如,IO_W1和IO_W2有保序要求(即IO_W1和IO_W2为两个目标命令),例如必须先执行完IO_W1命令,才能执行IO_W2命令,其余命令之间的顺序不进行限制。
文件***层向驱动层发送这4个第一命令和保序标识命令的顺序包括但不限于以下的任一项:
IO_W0、IO_W1、flag、IO_W2、IO_W3;或,IO_W0、IO_W3、IO_W1、flag、IO_W2;或,IO_W1、flag、IO_W2、IO_W0、IO_W3;或,IO_W1、IO_W0、IO_W3、flag、IO_W2等。只要保证IO_W1位于IO_W2之前,且flag后相邻的命令为IO_W2即可。
再例如,IO_W0、IO_W1和IO_W2有保序要求(即IO_W0、IO_W1和IO_W2为三个目标命令),例如必须先执行完IO_W1命令,再执行完IO_W1命令,再执行IO_W2命令,其余命令之间的顺序不进行限制。
文件***层向驱动层发送这4个第一命令和保序标识命令的顺序包括但不限于以下的任一项:
IO_W0、flag、IO_W1、flag、IO_W2、IO_W3;或,IO_W0、IO_W3、flag、IO_W1、flag、IO_W2;或,IO_W0、flag、IO_W1、flag、IO_W3、IO_W2、IO_W0、IO_W3等。只要保证IO_W0位于IO_W1之前,IO_W1位于IO_W2之前,且一个flag后相邻的命令为IO_W1,另一个flag后相邻的命令为IO_W2即可。
在步骤203中,所述第一设备并行发送多个所述第二命令,可以是:所述第一接口层并行发送多个所述第二命令。关于并行发送多个第二命令的具体细节可以参见步骤203处的描述,重复之处不再赘述。
在一种示例中,所述第二设备包括:第二接口层,命令调度层,可选的,还包括命令处理层。
当所述第二设备为设备Device时,所述第二接口层例如为图1中的Device硬件接口层,所述命令调度层例如为图1中的Device命令调度层,所述命令处理层例如为图1中的Device命令处理层。
在步骤203中,所述第二设备并行接收多个第二命令,可以是:所述第二接口层并行接收多个第二命令。
可以理解的是,所述第二接口层将多个第二命令并行发送给所述命令调度层。
在步骤204中,所述第二设备在接收到多个第二命令后,对第二命令进行解封装,可以是所述命令调度层为对所述第二命令进行解封装。
在步骤205中,所述第二设备根据所述顺序标识,对所述多个第一命令进行调度,可以是:所述命令调度层根据每个第一命令对应的顺序标识,对所述多个第一命令进行调度。
对所述多个第一命令进行调度,可以理解为串行将多个第一命令发送给所述命令处理层。串行将第一命令发送给命令处理层,可以理解为当接收到一个第一命令的处理结果后,再将下一个第一命令发送给命令处理层。
在步骤205中,所述第二设备根据调度结果依次执行所述多个第一命令,可以是:所述命令处理层接收来自所述命令调度层的第一命令,并执行。
命令调度层发送给命令处理层的命令上不携带顺序标识(例如序列号),命令处理层给Flash介质层的命令中也不携带顺序标识(例如序列号)。
如图3所示,提供了一种基于NAND Flash的存储***示意图,在图1的基础上,该存储***新增加了:功能1(可选的)、功能2和功能3。与图1的相同之处不再重复赘述。
功能1(可选的):在Host文件***层新增加文件***保序功能。
如果Host文件***层获取的多个第一命令(例如IO写命令)之间有保序的要求,则可以通过功能1下发保序标识命令(flag)给Host驱动层。在某些场景下,Host文件***层下发给Host驱动层的已有命令可以使Host驱动层识别命令需要保序,则功能1不需要。例如,Host文件***层下发给Host驱动层的第一命令包括节点数据的命令和用户数据的命令,Host驱动层可以区分出这两种类型的第一命令之间有保序要求,则Host文件***层无需再向Host驱动层下发保序标识命令。
例如,Host文件***层获取到4个第一命令,分别为IO_W0、IO_W1、IO_W2、IO_W3,IO_W1和IO_W2有保序要求,例如必须先执行完IO_W1命令,才能执行IO_W2命令,其余命令之间的顺序不进行限制。文件***保序功能可以在需要保序的IO_W1命令和IO_W2命令之间下发保序标识命令flag,以实现通知Host驱动层,IO_W1命令和IO_W2命令之间需要保序。例如,文件***保序功能向Host驱动层发送这4个第一命令和保序标识命令flag的顺序可以是:IO_W0、IO_W1、flag、IO_W2、IO_W3。
功能2:在Host驱动层新增驱动保序处理功能。
驱动保序处理功能维护命令的顺序标识,例如维护命令的序列号值。Host驱动层和Device命令调度层维护的顺序标识(例如序列号初值)固定或者彼此协商。驱动保序处理功能对多个第一命令(例如IO写命令)分配顺序标识(例如序列号值)。
一种示例中,驱动保序处理功能接收到Host文件***层下发的多个第一命令,按照预设的序列号值规则,为多个第一命令分配对应的序列号。例如,为第一个接收到的IO_W0命令分配的序列号为SNx,为第二个接收到的IO_W1命令分配的序列号为SNx,为第三个接收到的IO_W2命令分配的序列号为SNx。如果驱动保序处理功能在接收到的IO_W1命令后,接收到Host文件***层下发的保序标识命令(flag),在保序标识命令(flag)之后,接收到IO_W2命令,则可以将保序标识命令的下一个命令(即IO_W2命令)的序列号值按照某种规则做变化,以体现保序标识命令的下一个命令(即IO_W2命令)的执行顺序应该排在保序标识命令(flag)之前的命令的后面。例如,如果规定序列号小的先执行,序列号大的后执行,可以对序列号的值增加1,为IO_W2命令分配的序列号为SNx+1。再例如,如果规定序列号大的先执行,序列号小的后执行,可以对序列号的值减去1,为IO_W2命令分配的序列号为SNx-1。
对于后续第四个接收到的IO_W3命令,可以不添加序列号,也可以添加序列。如果添加序列号,对于序列号的大小不进行限制,例如,添加序列号为SNx+1,SNx,SNx-1,SNx+2。
Host驱动层的驱动保序处理功能的序列号变化规则、和Device命令调度层的序列号变化规则固定或者彼此协商已知。例如,Host驱动层和Device命令调度层对序列号初值固定 从1开始,且依次递增加1。
Host驱动层对IO_W0、IO_W1封装命令结构,在序列号小的先执行,序列号大的后执行的情况下,命令域段添加序列号SN为x,因为接收到保序标识命令(flag),所以对Host驱动层维护的序列号SN增加1,对后续接收的IO_W2的命令域段添加SN为x+1,对于接收的IO_W3的命令域段添加SN是任意的,例如添加序列号为SNx+1,得到IO_W3_SNx+1。驱动保序处理功能通过Host设备硬件接口层和Device硬件接口层将4个第二命令(分别为IO_W0_SNx、IO_W1_SNx、IO_W2_SNx+1、IO_W3_SNx+1)发送给Device命令调度层。
可以理解的是,这4个第二命令的发送顺序可以是随意的,由于第二命令中包括序列号,Device命令调度层可以根据序列号,依次对第一命令进行调度,满足第一命令的保序需求。
功能3:在Device命令调度层新增命令保序处理功能。
命令保序处理功能对Host驱动层下发的第二命令,按照第二命令中的顺序标识(例如序列号)所规定的顺序,对多个第一命令进行调度。
例如,Device命令调度层接收Host驱动层下发的IO_W0_SNx、IO_W1_SNx、IO_W2_SNx+1、IO_W3_SNx+1这4个命令。可能会出现先接收到IO_W2_SNx+1,再接收到IO_W1_SNx,则命令保序处理功能对IO_W1_SNx和IO_W2_SNx+1按照序列号SN由小至大进行排序处理。
命令保序处理功能将4个第二命令:IO_W0_SNx、IO_W1_SNx、IO_W2_SNx+1、IO_W3_SNx+1还原为Host文件***层获取到的第一命令:IO_W0、IO_W1、IO_W2、IO_W3,并将这些第一命令按照序列号的顺序发送给Device命令处理层,由Device命令处理层对第一命令进行具体处理,最终将数据写入NAND FLASH介质层中。
可以理解的是,Host命令调度层发送给Host命令处理层的第一命令中不携带序列号,Host处理层给NAND FLASH介质层的第一命令中也不携带序列号。
基于NAND FLASH的存储***中,通过携带表征命令执行顺序的序列号,使整个存储***IO路径涉及的几个环节,按照预先定义的序列号规则进行命令之间的顺序处理。Host下发给Device的命令携带表征命令执行顺序的序列号,来通知Device处理命令的先后顺序,Device按照序列号来处理命令,从而解决了Host文件***层在多个命令之间有保序要求时,只能依次等待之前下发给Host驱动层的命令的处理结果,再下发后续命令,而引起的命令串行执行的问题。
前文介绍了本申请实施例的方法,下文中将介绍本申请实施例中的装置。方法、装置是基于同一技术构思的,由于方法、装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
本申请实施例可以根据上述方法示例,对装置进行功能模块的划分,例如,可以对应各个功能划分为各个功能模块,也可以将两个或两个以上的功能集成在一个模块中。这些模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,具体实现时可以有另外的划分方式。
基于与上述方法的同一技术构思,参见图4,提供了一种数据处理装置400结构示意 图,该装置400可以包括:处理模块410,可选的,还包括接收模块420a、发送模块420b、存储模块430。处理模块410可以分别与存储模块430和接收模块420a和发送模块420b相连,所述存储模块430也可以与接收模块420a和发送模块420b相连。
在一种示例中,上述的接收模块420a和发送模块420b也可以集成在一起,定义为收发模块。
在一种示例中,该装置400可以为第一设备,也可以为应用于第一设备中的芯片或功能单元。该装置400具有上述方法中第一设备的任意功能,例如,该装置400能够执行上述图2、图3的方法中由第一设备执行的各个步骤。
所述接收模块420a,可以执行上述方法实施例中第一设备执行的接收动作。
所述发送模块420b,可以执行上述方法实施例中第一设备执行的发送动作。
所述处理模块410,可以执行上述方法实施例中第一设备执行的动作中,除发送动作和接收动作外的其它动作。
在一种示例中,所述存储模块430,可以存储第一设备执行的方法的计算机执行指令,以使处理模块410和接收模块420a和发送模块420b执行上述示例中第一设备执行的方法。
示例的,存储模块可以包括一个或者多个存储器,存储器可以是一个或者多个设备、电路中用于存储程序或者数据的器件。存储模块可以是寄存器、缓存或者RAM等,存储模块可以和处理模块集成在一起。存储模块可以是ROM或者可存储静态信息和指令的其他类型的静态存储设备,存储模块可以与处理模块相独立。
所述收发模块可以是输入或者输出接口、管脚或者电路等。
在一种示例中,该装置400可以为第二设备,也可以为应用于第二设备中的芯片或功能单元。该装置400具有上述方法中第二设备的任意功能,例如,该装置400能够执行上述图2、图3的方法中由第二设备执行的各个步骤。
所述接收模块420a,可以执行上述方法实施例中第二设备执行的接收动作。
所述发送模块420b,可以执行上述方法实施例中第二设备执行的发送动作。
所述处理模块410,可以执行上述方法实施例中第二设备执行的动作中,除发送动作和接收动作外的其它动作。
在一种示例中,所述存储模块430,可以存储第二设备执行的方法的计算机执行指令,以使处理模块410和接收模块420a和发送模块420b执行上述示例中第二设备执行的方法。
示例的,存储模块可以包括一个或者多个存储器,存储器可以是一个或者多个设备、电路中用于存储程序或者数据的器件。存储模块可以是寄存器、缓存或者RAM等,存储模块可以和处理模块集成在一起。存储模块可以是ROM或者可存储静态信息和指令的其他类型的静态存储设备,存储模块可以与处理模块相独立。
所述收发模块可以是输入或者输出接口、管脚或者电路等。
以上介绍了本申请实施例的应用于第一设备的装置和应用于第二设备的装置,以下介绍所述应用于第一设备的装置和所述应用于第二设备的装置可能的产品形态。应理解,但凡具备上述图4所述的应用于第一设备的装置的特征的任何形态的产品,和应用于第二设备的装置的特征的任何形态的产品,都落入本申请的保护范围。还应理解,以下介绍仅为举例,不应限制本申请实施例的应用于第一设备的装置的产品形态,和应用于第二设备的 装置的产品形态仅限于此。
作为一种可能的产品形态,装置可以由一般性的总线体系结构来实现。
如图5所示,提供了一种数据处理装置500的示意性框图。
该装置500可以包括:处理器510,可选的,还包括通信接口520、存储器530。该通信接口520,可以用于接收程序或指令并传输至所述处理器510,或者,该通信接口520可以用于该装置500与其他通信设备进行通信交互,比如交互控制信令和/或业务数据等。该通信接口520可以为代码和/或数据读写通信接口,或者,该通信接口520可以为处理器与收发机之间的信号传输通信接口。所述处理器510和所述存储器530之间电耦合。
一种示例中,该装置500可以为第一设备,也可以为应用于第一设备中的芯片。应理解,该装置具有上述方法中第一设备的任意功能,例如,所述装置500能够执行上述图2、图3的方法中由第一设备执行的各个步骤。示例的,所述存储器530,用于存储计算机程序;所述处理器510,可以用于调用所述存储器530中存储的计算机程序或指令,执行上述示例中第一设备执行的方法,或者通过所述通信接口520执行上述示例中第一设备执行的方法。
一种示例中,该装置500可以为第二设备,也可以为应用于第二设备中的芯片。应理解,该装置具有上述方法中第二设备的任意功能,例如,所述装置500能够执行上述图2、图3的方法中由第二设备执行的各个步骤。示例的,所述存储器530,用于存储计算机程序;所述处理器510,可以用于调用所述存储器530中存储的计算机程序或指令,执行上述示例中第二设备执行的方法,或者通过所述通信接口520执行上述示例中第二设备执行的方法。
图4中的处理模块410可以通过所述处理器510来实现。
图4中的接收模块420a和发送模块420b可以通过所述通信接口520来实现。或者,通信接口520分为接收器和发送器,接收器执行接收模块的功能,发送器执行发送模块的功能。
图4中的存储模块430可以通过所述存储器530来实现。
作为一种可能的产品形态,装置可以由存储控制器(存储控制器也可以称为芯片或芯片***)来实现。
一种可能的实现方式中,存储控制器包括:处理器,以及耦合至所述处理器的通信接口;
图4中的处理模块410可以通过处理器来实现。
图4中的接收模块420a和发送模块420b可以通过通信接口来实现。或者,输入输出接口分为输入接口和输出接口,输入接口执行接收模块的功能,输出接口执行发送模块的功能。
图4中的存储模块430可以通过存储介质来实现。
例如,所述通信接口,用于:并行地接收多个第二命令;
所述处理器,用于:对所述第二命令进行解封装,所述解封装包括解析所述第二命令包括的第一命令和顺序标识,所述顺序标识用于指示具有保序要求的命令的执行顺序;根据所述顺序标识,调度多个所述第一命令。
在一种可能的实现中,所述顺序标识为序列号;所述处理器在用于根据所述顺序标识, 调度多个所述第一命令时,具体用于:
按照所述序列号的数值大小,调度多个所述第一命令。
作为一种可能的产品形态,装置可以由闪存来实现,所述闪存包括上述介绍的存储控制器,以及闪存阵列;
所述存储控制器,用于:调度所述第一命令对所述闪存阵列进行访问。
作为一种可能的产品形态,本申请实施例的装置,还可以使用下述来实现:一个或多个FPGA(现场可编程门阵列)、PLD(可编程逻辑器件)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本申请通篇所描述的各种功能的电路的任意组合。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被计算机执行时,可以使得所述计算机用于执行上述数据处理的方法。或者说:所述计算机程序包括用于实现上述数据处理的方法的指令。
本申请实施例还提供了一种计算机程序产品,包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机可以执行上述提供的数据处理的方法。
本申请实施例还提供了一种数据处理***,所述***包括:执行上述数据处理的方法的第一设备和第二设备。
另外,本申请实施例中提及的处理器可以是中央处理器(central processing unit,CPU),基带处理器,基带处理器和CPU可以集成在一起,或者分开,还可以是网络处理器(network processor,NP)或者CPU和NP的组合。处理器还可以进一步包括硬件芯片或其他通用处理器。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)及其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等或其任意组合。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。应注意,本申请描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本申请实施例中提及的收发器中可以包括单独的发送器,和/或,单独的接收器,也可 以是发送器和接收器集成一体。收发器可以在相应的处理器的指示下工作。可选的,发送器可以对应物理设备中发射机,接收器可以对应物理设备中的接收机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中的“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请中所涉及的多个,是指两个或两个以上。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。
Claims (20)
- 一种数据处理装置,其特征在于,包括:处理器,以及耦合至所述处理器的通信接口;所述处理器,用于:获取多个第一命令;对所述第一命令进行封装,得到第二命令,其中,在所述多个第一命令包括至少两个具有保序要求的目标命令的情况下,所述封装包括为所述目标命令添加顺序标识,所述顺序标识用于指示所述目标命令的执行顺序;所述通信接口,用于:并行地发送多个所述第二命令。
- 如权利要求1所述的装置,其特征在于,所述第一命令为IO命令。
- 如权利要求1或2所述的装置,其特征在于,所述第一命令为:对用户数据的写命令;或,对节点数据的写命令;其中,所述节点数据用于指示所述用户数据所存储的位置。
- 如权利要求1-3任一项所述的装置,其特征在于,所述顺序标识为序列号,通过所述序列号的数值大小指示命令的执行顺序。
- 如权利要求1-4任一项所述的装置,其特征在于,所述处理器,还用于:获取保序标识命令,所述保序标识命令用于指示:位于所述保序标识命令前面的命令的执行顺序早于所述保序标识命令的下一个命令的执行顺序;将在所述保序标识命令之前获取到的第一命令和在所述保序标识命令之后获取到的首个命令,确定为目标命令。
- 如权利要求5所述的装置,其特征在于,为在所述保序标识命令之前获取到的第一命令添加的序列号,与为在所述保序标识命令之后获取到的首个第一命令添加的序列号不同。
- 如权利要求1-6任一项所述的装置,其特征在于,所述通信接口在用于并行地发送多个所述第二命令时,具体用于:并行地、乱序地发送多个所述第二命令。
- 如权利要求1-7任一项所述的装置,其特征在于,所述封装还包括:为所述多个第一命令中的除所述目标命令外的第一命令添加顺序标识。
- 一种存储控制器,其特征在于,包括:处理器,以及耦合至所述处理器的通信接口;所述通信接口,用于:并行地接收多个第二命令;所述处理器,用于:对所述第二命令进行解封装,所述解封装包括解析所述第二命令包括的第一命令和顺序标识,所述顺序标识用于指示具有保序要求的命令的执行顺序;根据所述顺序标识,调度多个所述第一命令。
- 如权利要求9所述的存储控制器,其特征在于,所述顺序标识为序列号;所述处理器在用于根据所述顺序标识,调度多个所述第一命令时,具体用于:按照所述序列号的数值大小,调度多个所述第一命令。
- 一种闪存,其特征在于,包括:如权利要求9或10所述的存储控制器,以及闪存阵列;所述存储控制器,用于:调度所述第一命令对所述闪存阵列进行访问。
- 一种数据处理方法,其特征在于,所述方法包括:获取多个第一命令;对所述第一命令进行封装,得到第二命令,其中,在所述多个第一命令包括至少两个 具有保序要求的目标命令的情况下,所述封装包括为所述目标命令添加顺序标识,所述顺序标识用于指示所述多个目标命令的执行顺序;并行地发送多个所述第二命令。
- 如权利要求12所述的方法,其特征在于,所述顺序标识为序列号,所述序列号的数值大小用于指示执行顺序。
- 如权利要求12或13所述的方法,其特征在于,还包括:获取保序标识命令,所述保序标识命令用于指示:位于所述保序标识命令前面的命令的执行顺序早于,所述保序标识命令的下一个命令的执行顺序;将位于所述保序标识命令前面的命令的执行顺序早于,所述保序标识命令的首个命令的确定为目标命令。
- 如权利要求12-14任一项所述的方法,其特征在于,为在保序标识命令之前获取到的第一命令添加的序列号与,为在所述保序标识命令之后获取到的首个第一命令添加的序列号不同。
- 如权利要求12-15任一项所述的方法,其特征在于,所述封装还包括:为所述多个第一命令中的除所述目标命令外的第一命令添加顺序标识。
- 一种数据处理方法,其特征在于,所述方法包括:并行地接收多个第二命令;对第二命令进行解封装,得到第一命令,解封装包括解析第二命令包括的第一命令和顺序标识,所述顺序标识用于指示多个有保序要求的命令的执行顺序;根据所述顺序标识,调度多个第一命令。
- 如权利要求17所述的方法,其特征在于,所述顺序标识为序列号;所述根据所述顺序标识,调度多个第一命令,包括:按照所述序列号由数值大小,调度所述多个第一命令。
- 一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序包括用于实现权利要求12-16任一项所述的方法的指令,或者实现权利要求17或18所述的方法的指令。
- 一种计算机程序产品,其特征在于,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求12-16任一项所述的方法,或者执行如权利要求17或18任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/097050 WO2022251984A1 (zh) | 2021-05-29 | 2021-05-29 | 一种数据处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116917876A true CN116917876A (zh) | 2023-10-20 |
Family
ID=84323785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180094528.8A Pending CN116917876A (zh) | 2021-05-29 | 2021-05-29 | 一种数据处理方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240086114A1 (zh) |
EP (1) | EP4322015A4 (zh) |
CN (1) | CN116917876A (zh) |
WO (1) | WO2022251984A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117271100B (zh) * | 2023-11-21 | 2024-02-06 | 北京国科天迅科技股份有限公司 | 算法芯片集群调度方法、装置、计算机设备和存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055504B (zh) * | 2016-05-17 | 2019-08-16 | 华为技术有限公司 | 控制数据传输的方法、装置及计算机设备 |
CN107391630B (zh) * | 2017-07-10 | 2020-03-31 | 北京京东尚科信息技术有限公司 | 处理并行网络请求的方法、装置及终端设备 |
CN107748696B (zh) * | 2017-09-20 | 2020-05-01 | 深圳壹账通智能科技有限公司 | 一种任务调度的方法及终端设备 |
US10761775B2 (en) * | 2018-02-09 | 2020-09-01 | Samsung Electronics Co., Ltd. | System and method for NVMe inter command association in SSD storage using a bridge device |
EP3792743A4 (en) * | 2018-06-30 | 2021-06-30 | Huawei Technologies Co., Ltd. | NVME-BASED DATA WRITING PROCESS, DEVICE AND SYSTEM |
CN112040001A (zh) * | 2020-09-07 | 2020-12-04 | 平安科技(深圳)有限公司 | 一种基于分布式存储的请求处理方法及装置 |
CN112767978B (zh) * | 2021-01-11 | 2022-10-14 | 湖南国科微电子股份有限公司 | 一种ddr命令调度方法、装置、设备及介质 |
-
2021
- 2021-05-29 EP EP21943366.1A patent/EP4322015A4/en active Pending
- 2021-05-29 CN CN202180094528.8A patent/CN116917876A/zh active Pending
- 2021-05-29 WO PCT/CN2021/097050 patent/WO2022251984A1/zh active Application Filing
-
2023
- 2023-11-17 US US18/512,033 patent/US20240086114A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022251984A1 (zh) | 2022-12-08 |
EP4322015A1 (en) | 2024-02-14 |
US20240086114A1 (en) | 2024-03-14 |
EP4322015A4 (en) | 2024-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10732876B2 (en) | Memory access technology and computer system | |
CN110851371B (zh) | 报文处理方法及相关设备 | |
US20240086114A1 (en) | Data processing method and apparatus | |
US11734083B1 (en) | Systems and methods for inter-partition communication | |
CN111181874B (zh) | 一种报文处理方法、装置及存储介质 | |
CN111562883B (zh) | 固态硬盘的缓存管理***、方法、装置 | |
CN115904259B (zh) | 非易失性存储器标准NVMe指令的处理方法及相关装置 | |
CN102170401B (zh) | 一种数据的处理方法和设备 | |
CN108153597B (zh) | 一种linux设备管理装置及方法 | |
CN111970213A (zh) | 排队*** | |
CN116303211A (zh) | 一种应用于车载场景的cpu多核间通信方法及装置 | |
CN113170500B (zh) | 一种信息传输方法及装置 | |
US9338219B2 (en) | Direct push operations and gather operations | |
CN115658219A (zh) | 数据通信方法及相关装置、***、介质和程序产品 | |
CN115563038A (zh) | 基于dma控制器的数据处理***、方法和数据处理设备 | |
CN112328519B (zh) | 一种pcie设备、基于sr-iov的数据包有序传输方法和*** | |
CN106814973B (zh) | 存储器的割包控制器、存储器及存储器的割包控制方法 | |
CN117667793B (zh) | 一种多通道描述符管理***、方法、设备、介质 | |
CN108595351A (zh) | 一种面向网络转发处理的dma发送控制方法 | |
CN111200594B (zh) | 接收数据的方法、装置、数据接收设备和存储介质 | |
CN112835823B (zh) | 存储控制器应答发送方法 | |
US20090313393A1 (en) | Method of increasing efficiency of end point memory in usb devices | |
CN117331500A (zh) | 一种乱序聚合处理方法、装置及固态硬盘 | |
CN115718712A (zh) | 基于虚拟串口的数据传输方法、装置、设备和存储介质 | |
CN115766627A (zh) | 一种星载高速交换存储一体化缓存控制方法及装置 |
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 |