CN113076180B - 上行数据通路的构建方法及数据处理系统 - Google Patents
上行数据通路的构建方法及数据处理系统 Download PDFInfo
- Publication number
- CN113076180B CN113076180B CN202010307559.4A CN202010307559A CN113076180B CN 113076180 B CN113076180 B CN 113076180B CN 202010307559 A CN202010307559 A CN 202010307559A CN 113076180 B CN113076180 B CN 113076180B
- Authority
- CN
- China
- Prior art keywords
- dtu
- command
- data path
- sub
- processing unit
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请提供了上行数据通路的构建方法及数据处理系统,该方法包括:在下行数据通路的一个或多个任务处理单元中,向数据传输单元DTU中写入一个或多个回调函数索引以构建用于所述DTU的上行数据通路;其中,所述一个或多个回调函数索引指示的一个或多个回调函数构成了所述上行数据通路,所述DTU承载子命令;响应于所述子命令处理完成,调用所述DTU中记录的一个或多个回调函数索引所指示的回调函数,以通过所述上行数据通路返回所述子命令的处理结果。
Description
技术领域
本申请涉及存储技术,特别地,涉及上行数据通路的构建方法及数据处理系统。
背景技术
一些应用中,处理器处理大规模并发任务。例如用于网络设备、存储设备的嵌入式处理器,处理并发的多个网络包或IO命令。
在桌面CPU、服务器CPU中,通过运行操作系统,由操作系统通过分时间片和/或抢占的方式调度在CPU上运行的多个进程和/或线程来处理任务,用户无须过多干预进程/线程之间的切换。由操作系统选择恰当的进程/线程进行调度,以充分利用CPU计算能力。然而,在嵌入式CPU中,可使用的存储器、CPU处理能力等资源都受限,并且所处理的任何具有特殊性,例如是大规模并发的相对简单任务。以及一些嵌入式系统对性能,特别是任务处理延迟有严格要求,现有技术的操作系统对此场景难以适用。
为提升任何处理的性能,通常将任务分为多个阶段(或称为子任务),对于单个任务,其各阶段要被依次处理,而对于多个任务则可被并发处理。
在申请号为201811095364.7、201811160925.7与2019102538859的中国专利申请中提供了基于信号-槽的任务调度方案,以处理大量的并发IO命令,并保证多个IO命令的整体服务质量。
图1A是任务调度的示意图。
图1A中,从左向右的方向是时间流逝的方向。还展示了被处理的多个任务(1-1、2-1、3-1、1-2、2-2与3-2),其中在结构为“a-b”的附图标记中,在前的符号a指示任务,而在后的符号b指示任务中包括的子任务。图1A展示了按时间顺序处理的3个任务,每个任务包括2个子任务。
实线箭头指示了处理多个任务的时间顺序,虚线箭头指示了任务处理的逻辑顺序。例如,以任务1为例,要先处理其子任务1-1(任务1-1),再处理其子任务1-2(任务1-2)。依然作为举例,参看图1A,在处理完子任务1-1后,为提高任务处理的并行性而调度执行子任务2-1与子任务3-1,随后识别出执行子任务1-2的条件满足,而在处理完子任务3-1后,调度执行子任务1-2。
在处理器上,通过执行代码段来处理任务(或子任务)。单一CPU(或CPU核),任一时刻仅处理单一任务。示例性地,如图1A所示,对于待处理的多个任务,先执行处理子任务1-1的代码段、接下来执行处理子任务2-1的代码段、接下来执行处理子任务3-1的代码段、接下来执行处理子任务1-2的代码段、接下来执行处理子任务2-2的代码段以及接下来执行处理子任务3-2的代码段。可选地,在各个处理任务(或子任务)的代码段中指示了任务处理的逻辑顺序。例如,该逻辑顺序包括子任务1-2要在任务子1-1之后处理。作为又一个例子,在处理子任务1-1的代码段中指示其逻辑顺序在后处理的代码段应为处理子任务1-2的代码段。
图1B是任务处理系统的框图。
参看图1B,任务处理系统包括软件与硬件两部分。硬件包括例如运行软件的一个或多个CPU,与处理相关任务的其他硬件资源(例如,存储器、编解码器、接口、加速器、中断控制器、DMA单元等)。
将在CPU上运行的软件的代码段称为任务处理单元。任务处理系统包括多个任务处理单元。每个任务处理单元处理相同或不同的任务。例如,任务处理单元0处理任务的第一子任务(例如子任务1-1、子任务2-1与子任务3-1),而任务处理单元1、任务处理单元2与任务处理单元3处理任务的第二子任务(例如子任务1-2、子任务2-2与子任务3-2)。
任务处理系统还包括软件实现的任务管理单元,用于调度任务处理单元之一在硬件上运行。
任务处理单元所需的资源包括例如缓存单元、处理任务的描述符(或称上下文)等。
存储设备,用于为同其耦合的主机提供存储能力。主机同存储设备之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced TechnologyAttachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated DriveElectronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVMExpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备处理IO命令。IO命令包括例如读命令、写命令或其他IO命令。存储设备包括接口、控制部件、一个或多个NVM芯片以及l可选的DRAM(Dynamic Random Access Memory,动态随机访问存储器)。存储设备的控制部件包括一个或多个CPU。CPU运行软件或固件来作为任务处理单元处理IO命令。
存储设备还将IO命令切分为一个或多个子命令来处理。每个子命令具有相对一致的规格,例如访问相同大小的地址范围,从而使得处理子命令的任务处理单元能够以较简单的方式实现。
发明内容
需要提供多种规格的存储设备,例如具有不同的存储容量、不同的性能和/或差异化的功能。从而要为不同规格的存储设备提供不同的设计方案版本。这些不同的设计方案又具有共性,并希望重用既有的技术成果,也希望团队的多人开发的组件能有效组合与交互,还希望设计方案易于扩展以提供增强的功能和/或性能。
为了解决现有技术中要为不同规格的存储设备提供不同的设计方案版本的技术问题,根据本申请的第一方面,提供了根据本申请的第一方面的第一下行数据通路的构建方法,包括:创建至少一个任务处理单元;创建至少一个通道;将所述至少一个任务处理单元关联于所述至少一个通道。
根据本申请的第一方面的第一下行数据通路的构建方法,提供了根据本申请的第一方面的第二下行数据通路的构建方法,任务处理单元包括入站接口、出站接口和DTU处理模块;所述方法还包括:入站接口从同其关联的通道获取DTU;出站接口向同其关联的通道添加DTU;DTU处理模块从通过入站接口获取的DTU提取子命令,处理子命令,并将承载处理后的子命令的DTU通过出站接口添加到同其关联的通道。
根据本申请的第一方面的第一或第二下行数据通路的构建方法,提供了根据本申请的第一方面的第三下行数据通路的构建方法,通道包括DTU列表和多个操作DTU列表的函数,所述DTU列表包括容纳一个或多个DTU的容器,所述多个操作DTU列表的函数至少包括第一Push函数和Pop函数;其中,所述第一Push函数被调用时,向所述DTU列表添加至少一个DTU;所述Pop函数被调用时,从所述DTU列表获取至少一个DTU。
根据本申请的第一方面的第三下行数据通路的构建方法,提供了根据本申请的第一方面的第四下行数据通路的构建方法,通道还包括直接转发单元,所述多个操作DTU列表的函数还包括第二Push函数;其中,响应于所述第二Push函数被调用,所述直接转发单元将通过所述第二Push函数获取DTU提供给任务处理单元。
根据本申请的第一方面的第四下行数据通路的构建方法,提供了根据本申请的第一方面的第五下行数据通路的构建方法,所述创建至少一个通道,还包括:创建通道的直接转发单元,并设置目的索引;其中,目的索引指示的同任务处理单元关联的函数,直接转发单元调用所述同任务处理单元关联的函数以将从第二Push函数获取的DTU提供给任务处理单元。
根据本申请的第一方面的第一至第五下行数据通路的构建方法之一,提供了根据本申请的第一方面的第六下行数据通路的构建方法,其中,通道从一个或多个同其关联的任务处理单元获取DTU,而仅向一个同其关联的任务处理单元提供DTU。
根据本申请的第一方面的第一至第四下行数据通路的构建方法之一,提供了根据本申请的第一方面的第七下行数据通路的构建方法,DTU是承载子命令和/或子命令上下文的消息单元。
根据本申请的第一方面的第一至第七下行数据通路的构建方法之一,提供了根据本申请的第一方面的第八下行数据通路的构建方法,下行通络还包括至少一个资源管理器;资源管理器管理指定资源的使用;所述方法还包括将至少一个任务处理单元和至少一个资源管理器进行关联,从而任务管理器通过与其关联的资源管理器访问资源。
根据本申请的第一方面的第八下行数据通路的构建方法,提供了根据本申请的第一方面的第九下行数据通路的构建方法,还包括:将一个或多个通道与一个或多个资源管理器相关联,其中,向通道注册资源管理器的监视函数;响应于通道被添加了DTU,所注册的监视函数被调用,以访问同被调用的监视函数对应的资源管理器所管理的资源。
根据本申请的第一方面的第八或第九下行数据通路的构建方法,提供了根据本申请的第一方面的第十下行数据通路的构建方法,还包括:资源管理器管理指定资源的分配或回收;资源管理器管理指定资源的状态。
根据本申请的第一方面的第一至第十下行数据通路的构建方法之一,提供了根据本申请的第一方面的第十一下行数据通路的构建方法,通道的数量小于等于任务处理单元的数量。
根据本申请的第一方面的第一至第十一下行数据通路的构建方法之一,提供了根据本申请的第一方面的第十二下行数据通路的构建方法,所述将所述至少一个任务处理单元关联于所述至少一个通道,包括:为所述下行通道的每个任务处理单元的入站接口设置与其关联的一个或多个通道;为所述下行通道的每个任务处理单元的出站接口设置与其关联的通道。
根据本申请的第一方面的第一至第十二下行数据通路的构建方法之一,提供了根据本申请的第一方面的第十三下行数据通路的构建方法,任务处理单元是可被调度的软件单元,而通道不可被调度。
根据本申请的第一方面的第一至第十三下行数据通路的构建方法之一,提供了根据本申请的第一方面的第十四下行数据通路的构建方法,将所述至少一个任务处理单元关联于所述至少一个通道,包括:将一个任务处理单元与两个及以上的通道进行关联;和/或,将一个任务处理单元与一个通道进行关联。
根据本申请的第一方面的第一至第十四下行数据通路的构建方法之一,提供了根据本申请的第一方面的第十五下行数据通路的构建方法,被创建的所述至少一个任务处理单元,包括第一任务处理单元与第二任务处理单元,其中第一任务处理单元与第二任务处理单元是处理相同或不同任务的任务处理单元。
根据本申请的第一方面的第十五下行数据通路的构建方法,提供了根据本申请的第一方面的第十六下行数据通路的构建方法,所述至少一个任务处理单元,包括处理地址转换任务的第一任务处理单元、处理数据组装任务的第二任务处理单元与处理垃圾回收任务的第三任务处理单元;被创建的所述创建至少一个通道,包括第一通道、第二通道与第三通道;所述第一任务处理单元的入站接口被关联于所述第一通道与第三通道;所述第一任务处理单元的出站接口被关联于所述第二通道;所述第二任务处理单元的入站接口被关联于所述第二通道;所述第三任务处理单元的出站接口被关联于所述第三通道。
根据本申请的第一方面的第十六下行数据通路的构建方法,提供了根据本申请的第一方面的第十七下行数据通路的构建方法,所述第一任务处理单元被关联于管理地址映射表资源的资源管理器;所述第二任务处理单元被关联于管理加速器资源的资源管理器;所述第三任务处理单元被关联于管理存储介质资源的资源管理器。
根据本申请的第一方面的第十五至第十七下行数据通路的构建方法之一,提供了根据本申请的第一方面的第十八下行数据通路的构建方法,所述至少一个任务处理单元,还包括处理地址转换任务的第四任务处理单元;被创建的所述创建至少一个通道,还包括第四通道与第五通道;所述第四任务处理单元的入站接口被关联于所述第四通道;所述第四任务处理单元的出站接口被关联于所述第五通道;所述第二任务处理单元的入站接口被关联于所述第五通道。
根据本申请的第一方面的第十八下行数据通路的构建方法,提供了根据本申请的第一方面的第十九下行数据通路的构建方法,被创建的至少一个通道,还包括第六通道;所述第四任务处理单元的入站接口被关联于所述第六通道;所述第三任务处理单元的出站接口被关联于所述第六通道。
根据本申请的第一方面的第一至第十九下行数据通路的构建方法之一,提供了根据本申请的第一方面的第二十下行数据通路的构建方法,所述方法还包括将所述下行数据通路和命令传输单元及子命令处理单元进行关联;其中,命令传输单元将IO命令拆分为一个或多个子命令,获取DTU承载子命令,以及将承载了子命令的DTU交付同自身耦合的任务处理单元;子命令处理单元根据DTU承载的子命令访问存储介质。
根据本申请的第一方面的第二十下行数据通路的构建方法,提供了根据本申请的第一方面的第二十一下行数据通路的构建方法,将至少一个任务处理单元中的第一任务处理单元与所述命令传输单元进行关联,所述第一任务处理单元与所述命令传输单元直接连接或通过通道耦合,所述第一任务处理单元为至少一个任务处理单元中第一个处理子命令的任务处理单元;将至少一个任务处理单元中的第二任务处理单元与所述子命令处理单元进行关联,第二任务处理单元与所述子命令处理单元直接连接,所述第二任务处理单元为至少一个任务处理单元中最后一个处理子命令的任务处理单元。
根据本申请的第二方面,提供了根据本申请的第二方面的第一信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现根据上述第一方面中任一项所述的方法。
根据本申请的第三方面,提供了根据本申请的第三方面的第一下行数据通路的构建装置,包括:第一创建单元,用于创建至少一个任务处理单元;第二创建单元,用于创建至少一个通道;关联单元,用于将所述至少一个任务处理单元关联于所述至少一个通道。
根据本申请的第四方面,提供了根据本申请的第四方面的第一下行数据通路,包括:至少一个任务处理单元和至少一个通道;其中,至少一个任务处理单元中的第一任务处理单元从与自身关联的通道中获取DTU,所述DTU携带子命令,所述第一任务处理单元为至少一个任务处理单元中的任意一个任务处理单元,第二任务处理单元为至少一个任务处理单元中第一任务处理单元以外的一个任务处理单元;所述第一任务处理单元处理子命令,并在子命令处理完成后,将所述DTU填充至与自身关联的通道,以使所述第二任务处理单元从通道中获取所述DTU。
根据本申请的第四方面的第一下行数据通路,提供了根据本申请的第四方面的第二下行数据通路,所述第一任务处理单元从与自身关联的第一通道中获取所述DTU,并在子命令处理完成后,将所述DTU填充至与自身关联的第二通道中,以使所述第二任务处理单元从所述第二通道中获取所述DTU;或者,所述第一任务处理单元从与自身关联的第一通道中获取所述DTU,并在子命令处理完成后,将所述DTU填充至与所述第一通道中,以便所述第二任务处理单元从所述第一通道中获取所述DTU;其中,所述第一通道和所述第二通道均与所述第一任务处理单元关联,且所述第一通道和所述第二通道为不同的通道。
根据本申请的第四方面的第一或第二下行数据通路,提供了根据本申请的第四方面的第三下行数据通路,所述第一任务处理单元包括入站接口、出站接口和DTU处理模块;DTU处理模块通过入站接口,从与所述第一任务处理单元关联的通道中获取所述DTU;DTU处理模块从所述DTU中获取子命令、处理子命令并将处理后的子命令承载于所述DTU;DTU处理模块通过出站接口,将所述DTU添加至与所述第一任务处理单元关联的通道。
根据本申请的第四方面的第一至第三下行数据通路之一,提供了根据本申请的第四方面的第四下行数据通路,至少一个通道中的每个通道包括DTU列表和多个操作DTU列表的函数,所述DTU列表用于容纳多个DTU,所述多个操作DTU列表的函数至少包括第一Push函数和Pop函数;其中,任务处理单元通过调用第一Push函数,在所述DTU列表添加至少一个DTU;任务处理单元通过调用所述Pop函数,从所述DTU列表中获取至少一个DTU。
根据本申请的第四方面的第四下行数据通路,提供了根据本申请的第四方面的第五下行数据通路,每个通道还包括直接转发单元,所述多个操作DTU列表的函数还包括第二Push函数;所述第一任务处理单元调用所述第二Push函数时,所述直接转发单元从所述第二Push函数中获取所述DTU,以及将所述DTU被提供给所述第二任务处理单元。
根据本申请的第四方面的第一至第五下行数据通路之一,提供了根据本申请的第四方面的第六下行数据通路,所述下行数据通路还包括至少一个资源管理器;资源管理器管理指定资源的使用;至少一个任务处理单元关联于至少一个资源管理器,从而任务处理单元通过与其关联的资源管理器访问资源。
根据本申请的第四方面的第六下行数据通路,提供了根据本申请的第四方面的第七下行数据通路,资源管理器管理多种类型的资源,所述多种类型的资源至少包括缓存资源、地址映射表资源、计算资源和/或存储介质资源。
根据本申请的第四方面的第七下行数据通路,提供了根据本申请的第四方面的第八下行数据通路,一个资源管理器管理多种类型的资源;或者,多个资源管理器中的每个资源管理器管理一种类型的资源,不同资源管理器管理不同类型的资源。
根据本申请的第四方面的第七或第八下行数据通路,提供了根据本申请的第四方面的第九下行数据通路,任务处理单元的入站接口调用与自身关联的通道的Pop函数,以获取DTU;任务处理单元的出站接口调用与自身关联的通道的Push函数,以将DTU添加到通道中。
根据本申请的第四方面的第一至第九下行数据通路之一,提供了根据本申请的第四方面的第十下行数据通路,所述第一任务处理单元还包括回调函数;所述第一任务处理单元在将所述DTU添加到通道中之前,在所述DTU中写入指示所述回调函数的回调函数索引;其中,通过所述回调函数索引调用所述回调函数,使得向资源管理器请求释放资源。
根据本申请的第四方面的第一至第十下行数据通路之一,提供了根据本申请的第四方面的第十一下行数据通路,多个任务处理单元与第三通道关联,若多个任务处理单元调用所述第三通道的第一Push函数,将来自于多个任务处理单元的多个DTU添加至所述第三通道中的DTU列表,所述第三通道为至少一个通道中的任一通道。
根据本申请的第四方面的第一至第十一下行数据通路之一,提供了根据本申请的第四方面的第十二下行数据通路,多个通道与所述第一任务处理单元关联,所述第一任务处理单元按照多个通道的优先级从多个通道中获取DTU;或者,所述第一任务处理单元轮询多个通道,以从多个通道中获取DTU。
根据本申请的第四方面的第一至第十二下行数据通路之一,提供了根据本申请的第四方面的第十三下行数据通路,所述下行数据通路包括第三任务处理单元、第四任务处理单元、第五任务处理单元、第六任务处理单元、多个通道和资源管理器,所述第三任务处理单元处理缓存任务,所述第四任务处理单元处理地址转换任务,所述第五任务处理单元处理数据组装任务、所述第六任务处理单元处理垃圾回收任务;其中,所述第三任务处理单元从第三通道或第七通道中获取DTU,执行缓存任务,并将携带了缓存任务执行结果的DTU添加至第四通道;所述第四任务处理单元从所述第四通道获取DTU,执行地址转换任务,并将携带了地址转换任务执行结果的DTU添加至第五通道;所述第五任务处理单元从所述第五通道获取DTU,执行数据组装任务,并将携带有数据组装任务执行结果的DTU发送给子命令处理单元;所述第六任务处理单元从第六通道获取DTU,执行垃圾回收任务,并将携带了垃圾回收任务执行结果的DTU添加至所述第七通道。
根据本申请的第四方面的第十二下行数据通路,提供了根据本申请的第四方面的第十四下行数据通路,所述下行数据通路包括第三任务处理单元、第四任务处理单元、第五任务处理单元、第六任务处理单元、第七任务处理单元、第八任务处理单元、多个通道和资源管理器,所述第三任务处理单元和所述第四任务处理单元处理缓存任务,所述第五任务处理单元和所述第六任务处理单元处理地址转换任务,所述第七任务处理单元处理数据组装任务、所述第八任务处理单元处理垃圾回收任务;其中,所述第三任务处理单元从第三通道中获取DTU,执行缓存任务,并将携带了缓存任务执行结果的DTU添加至第五通道;所述第四任务处理单元从第四通道中获取DTU,执行缓存任务,并将携带了缓存任务执行结果的DTU添加至第六通道;所述第五任务处理单元从所述第五通道和/或第十通道获取DTU,执行地址转换任务,并将携带了地址转换任务执行结果的DTU添加至第七通道;所述第六任务处理单元从所述第六通道和/或第十一通道获取DTU,执行地址转换任务,并将携带了地址转换任务执行结果的DTU添加至第八通道;所述第七任务处理单元从所述第七通道和/或所述第八通道获取DTU,执行数据组装任务,并将携带有数据组装任务执行结果的DTU发送给子命令处理单元;所述第八任务处理单元从第九通道获取DTU,执行垃圾回收任务,并将携带了垃圾回收任务执行结果的DTU添加至所述第十通道和/或所述第十一通道。
根据本申请的第五方面,提供了根据本申请的第五方面的第一上行数据通路的构建方法,包括:在下行数据通路的一个或多个任务处理单元中,向数据传输单元DTU中写入一个或多个回调函数索引以构建用于所述DTU的上行数据通路;其中,所述一个或多个回调函数索引指示的一个或多个回调函数构成了所述上行数据通路,所述DTU承载子命令;响应于所述子命令处理完成,调用所述DTU中记录的一个或多个回调函数索引所指示的回调函数,以通过所述上行数据通路返回所述子命令的处理结果。
根据本申请的第五方面的第一上行数据通路的构建方法,提供了根据本申请的第五方面的第二上行数据通路的构建方法,所述DTU中的一个或多个回调函数索引是有序的,按顺序被调用的所述DTU中的一个或多个回调函数索引所指示的回调函数构成了所述上行数据通路,其中,调用所述DTU中的一个或多个回调函数索引所指示的回调函数的顺序是构建所述上行数据通路中向所述DTU写入所述一个或多个回调函数索引的逆序。
根据本申请的第五方面的第一或第二上行数据通路的构建方法,提供了根据本申请的第五方面的第三上行数据通路的构建方法,第一任务处理单元处理所述子命令时,向所述DTU写入第一回调函数索引;其中,所述第一回调函数索引所指示的回调函数用于释放所述第一任务处理单元为处理所述子命令分配的第一资源,所述第一任务处理单元为所述下行数据通路中的任务处理单元。
根据本申请的第五方面的第一至第三上行数据通路的构建方法之一,提供了根据本申请的第五方面的第四上行数据通路的构建方法,第二任务处理单元处理所述子命令时,向所述DTU写入第二回调函数索引;其中,所述第二回调函数索引所指示的回调函数用于释放所述第一任务处理单元为处理所述子命令分配的第一资源,所述第二任务处理单元为所述下行数据通路中的任务处理单元。
根据本申请的第五方面的第一至第四上行数据通路的构建方法之一,提供了根据本申请的第五方面的第五上行数据通路的构建方法,所述下行数据通路包括多个任务处理单元,多个任务处理单元中的每个任务处理单元在处理所述子命令的过程中,均在所述DTU中写入回调函数索引;其中,所述子命令为每个任务处理单元从所述DTU中获取的,每个任务处理单元写入所述DTU中的回调函数相同或不同。
根据本申请的第五方面的第一至第五上行数据通路的构建方法之一,提供了根据本申请的第五方面的第六上行数据通路的构建方法,所述上行数据通路还包括监视单元,所述监视单元是所述上行数据通路的第一个任务处理单元;所述监视单元监视并识别所述子命令是否被处理完成;响应于所述子命令处理完成,监视单元获取指示了所述子命令的处理结果的所述DTU。
根据本申请的第五方面的第六上行数据通路的构建方法,提供了根据本申请的第五方面的第七上行数据通路的构建方法,所述下行数据通路的最后一个任务处理单元将所述DTU发送给子命令处理单元,所述子命令处理单元缓存所述DTU,处理所述DTU指示的所述子命令,并将所述子命令的处理结果提供给所述监视单元。
根据本申请的第五方面的第一至第七上行数据通路的构建方法之一,提供了根据本申请的第五方面的第八上行数据通路的构建方法,所述一个或多个任务处理单元是可被调度的。
根据本申请的第五方面的第一至第八上行数据通路的构建方法之一,提供了根据本申请的第五方面的第九上行数据通路的构建方法,所述上行数据通路中被最后调用的回调函数将所述DTU发送给命令传输单元;命令传输单元根据所述DTU的指示获取所述子命令的处理结果;将一个或多个子命令的处理结果返回给命令的发出方,所述命令包括所述一个或多个子命令;以及命令传输单元释放所述DTU。
根据本申请的第五方面的第九上行数据通路的构建方法,提供了根据本申请的第五方面的第十上行数据通路的构建方法,所述命令传输单元响应于收到命令,将命令拆分为一个或多个子命令,并为每个子命令分配DTU,以及在分配的DTU中指示子命令之一。
根据本申请的第六方面,提供了根据本申请的第六方面的第一信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如第五方面中任一项所述的方法。
根据本申请的第七方面,提供了根据本申请的第七方面的第一上行数据通路的构建装置,包括:回调函数索引生成单元,用于在下行数据通路的一个或多个任务处理单元中,向数据传输单元DTU中写入一个或多个回调函数索引以构建用于所述DTU的上行数据通路;其中,所述一个或多个回调函数索引指示的一个或多个回调函数构成了所述上行数据通路,所述DTU承载子命令,所述下行数据通路中的一个任务处理单元获取并处理DTU中指示的所述子命令,并将DTU提供给下行数据通路的另一任务处理单元;回调函数索引调用单元,用于响应于所述子命令处理完成,依次调用所述DTU中记录的一个或多个回调函数,以通过所述上行数据通路返回所述子命令的处理结果。
根据本申请的第八方面,提供了根据本申请的第八方面的第一数据处理系统,包括上行数据通路与下行数据通路;所述下行数据通路包括一个或多个任务处理单元;其中,所述多个任务处理单元中的第一任务处理单元与命令传输单元耦合,所述多个任务处理单元中的第二任务处理单元与子命令处理单元耦合;所述下行数据通路处理命令传输单元提供的DTU,并在处理所述DTU过程中构建用于所述DTU的所述上行数据通路;响应于所述子命令被子命令处理单元处理完成,通过所述上行数据通路向所述命令传输单元获取所述子命令的处理结果。
根据本申请的第八方面的第一数据处理系统,提供了根据本申请的第八方面的第二数据处理系统,所述上行数据通路还包括监视单元,所述子命令处理单元与所述监视单元耦合;所述监视单元从所述子命令处理单元,获取子命令处理完成指示;响应于所述子命令处理完成指示,所述监视单元调用数据传输单元DTU指示的回调函数,以通过所述上行数据通路向所述命令传输单元提供所述子命令的处理结果。
根据本申请的第八方面的第一或第二数据处理系统,提供了根据本申请的第八方面的第三数据处理系统,所述监视单元根据所述子命令处理完成指示获取所述DTU;并从所述DTU中,获取至少一个回调函数索引;其中,回调函数索引指示回调函数,所述至少一个回调函数索引为所述下行数据通路的一个或多个任务处理单元处理子命令时,写入所述DTU中的;其中,所述至少一个回调函数构成所述上行数据通路。
根据本申请的第八方面的第三数据处理系统,提供了根据本申请的第八方面的第四数据处理系统,所述监视单元调用所述至少一个回调函数索引指示的回调函数。
根据本申请的第八方面的第四数据处理系统,提供了根据本申请的第八方面的第五数据处理系统,所述监视单元按照所述至少一个回调函数索引的写入顺序,正序地依次调用同所述至少一个回调函数索引对应的所述至少一个回调函数。
根据本申请的第八方面的第四数据处理系统,提供了根据本申请的第八方面的第六数据处理系统,所述监视单元按照所述至少一个回调函数索引的写入顺序,倒序地依次调用同所述至少一个回调函数索引对应的所述至少一个回调函数。
根据本申请的第八方面的第四至第六数据处理系统之一,提供了根据本申请的第八方面的第七数据处理系统,响应于所述至少一个回调函数被调用,执行所述至少一个回调函数中的第一回调函数,以向所述命令单元发送所述子命令的处理结果;其中,所述第一回调函数为所述第一任务处理单元处理子命令时写入所述DTU中的回调函数。
根据本申请的第八方面的第七数据处理系统,提供了根据本申请的第八方面的第八数据处理系统,执行所述第一回调函数,以释放第一资源。
根据本申请的第八方面的第七或第八数据处理系统,提供了根据本申请的第八方面的第九数据处理系统,所述处理数据系统还包括资源管理器;执行所述第一回调函数时,向所述资源管理器请求释放第一资源,所述第一资源为所述第一任务处理单元在处理子命令时向所述资源管理器请求分配得到的;响应于释放第一资源的请求,所述资源管理器释放所述第一资源。
根据本申请的第八方面的第四至第九数据处理系统之一,提供了根据本申请的第八方面的第十数据处理系统,响应于所述至少一个回调函数被调用,执行所述至少一个回调函数中的第二回调函数,以向所述资源管理器请求释放第二资源,所述第二资源为所述第二任务处理单元在处理子命令时向所述资源管理器请求分配得到的;响应于释放第二资源的请求,所述资源管理器释放所述第二资源。
根据本申请的第八方面的第十数据处理系统,提供了根据本申请的第八方面的第十一数据处理系统,所述监视单元在调用所述第二回调函数之后,调用所述第一回调函数。
根据本申请的第八方面的第一至第十一数据处理系统之一,提供了根据本申请的第八方面的第十二数据处理系统,所述监视单元轮询所述子命令处理单元,获取所述子命令处理完成指示。
根据本申请的第八方面的第一至第十二数据处理系统之一,提供了根据本申请的第八方面的第十三数据处理系统,所述至少一个任务处理单元是可被调度的处理单元。
根据本申请的第九方面,提供了根据本申请的第九方面的第一数据处理系统,包括命令传输单元与多个数据通路;其中,数据通路包括下行数据通路与上行数据通路;下行数据通路包括一个或多个任务处理单元;下行数据通路与所述命令传输单元耦合;所述命令传输单元为要处理的一个或多个第一子命令分配DTU来承载子命令,以及将承载了子命令的DTU提供给所述多个数据通路的第一数据通路的下行数据通路;其中,第一子命令关联于访问第一设备的命令,以及第一数据通路对应于所述第一设备。
根据本申请的第九方面的第一数据处理系统,提供了根据本申请的第九方面的第二数据处理系统,下行数据通路的第一任务处理单元与所述命令传输单元耦合;所述命令传输单元将承载了第一子命令的DTU提供给第一数据通路的下行数据通路的第一任务处理单元。
根据本申请的第九方面的第一或第二数据处理系统,提供了根据本申请的第九方面的第三数据处理系统,所述命令传输单元为要处理的一个或多个第二子命令分配DTU来承载子命令,以及将承载了第二子命令的DTU提供给第二数据通路的下行数据通路的第一任务处理单元;其中,所述第二子命令关联于访问第二设备的命令,以及第二数据通路对应于所述第二设备。
根据本申请的第九方面的第一至第三数据处理系统之一,提供了根据本申请的第九方面的第四数据处理系统,所述多个数据通路各自对应于命令要访问的设备;所述命令传输单元根据命令要访问的设备,确定将同该命令关联的子命令提供给的数据通路之一。
根据本申请的第九方面的第一至第四数据处理系统之一,提供了根据本申请的第九方面的第五数据处理系统,所述下行数据通路是如上述第四方面中任一项所述的下行数据通路;和/或,所述上行数据通路是如上述第八方面中任一项所述的上行数据通路。
根据本申请的第九方面的第一至第五数据处理系统之一,提供了根据本申请的第九方面的第六数据处理系统,还包括第一子命令处理单元;所述多个数据通路的第一多个数据通路各自的下行数据通路耦合所述第一子命令处理单元;所述第一多个数据通路各自的下行数据通路的最后一个任务处理单元将DTU发送给所述第一子命令处理单元,所述第一子命令处理单元缓存从所述第一多个数据通路各自的下行数据通路接收的DTU,并处理接收的DTU指示的子命令。
根据本申请的第九方面的第六数据处理系统,提供了根据本申请的第九方面的第七数据处理系统,所述第一子命令处理单元同第一多个数据通路各自的上行数据通路的监视单元耦合;所述监视单元从所述第一子命令处理单元获取子命令的处理结果;所述监视单元获取承载处理完成的子命令的DTU,从处理完成的子命令的DTU获取至少一个回调函数索引,以及调用所述至少一个回调函数索引所指示的回调函数。
根据本申请的第九方面的第六或第七数据处理系统,提供了根据本申请的第九方面的第八数据处理系统,所述第一子命令处理单元耦合一个或多个第一NVM芯片;和/或,所述第一多个数据通路各自关联于多个命名空间之一。
根据本申请的第九方面的第八数据处理系统,提供了根据本申请的第九方面的第九数据处理系统,所述第一多个数据通路的每个都耦合第一资源管理器,所述第一多个数据通路的每个的下行数据通路的任务处理单元通过第一资源管理器访问第一资源。
根据本申请的第九方面的第九数据处理系统,提供了根据本申请的第九方面的第十数据处理系统,所述第一资源关联于所述一个或多个第一NVM芯片。
根据本申请的第九方面的第十数据处理系统,提供了根据本申请的第九方面的第十一数据处理系统,所述第一多个数据通路各自耦合多个第二资源管理器之一,所述第一多个数据通路各自的下行数据通路的任务处理单元通过所耦合的第二资源管理器访问第二资源。
根据本申请的第九方面的第六至第十一数据处理系统之一,提供了根据本申请的第九方面的第十二数据处理系统,所述第一子命令处理单元耦合一个或多个第一NVM芯片;和/或,所述第一多个数据通路各自关联于遵循SATA协议的存储设备、遵循开放通道协议的存储设备、遵循键值(K-V)存储协议的存储设备、遵循NVMe协议的存储设备和/或遵循NVMe协议的多个命名空间之一。
根据本申请的第九方面的第六至第十二数据处理系统之一,提供了根据本申请的第九方面的第十三数据处理系统,还包括第二子命令处理单元;所述多个数据通路的第三数据通路的下行数据通路耦合所述第二子命令处理单元;所述第三数据通路的下行数据通路将DTU发送给所述第二子命令处理单元,所述第二子命令处理单元处理接收的DTU指示的第三子命令;其中所述第三子命令关联于访问第三设备的命令,以及第三数据通路对应于所述第三设备。
根据本申请的第九方面的第十三数据处理系统,提供了根据本申请的第九方面的第十四数据处理系统,所述第二子命令处理单元耦合一个或多个随机访问存储器芯片;所述第三数据通路关联于非易失内存设备。
根据本申请的第九方面的第十四数据处理系统,提供了根据本申请的第九方面的第十五数据处理系统,所述第二子命令处理单元获取第三子命令的处理结果,并获取承载处理完成的第三子命令的DTU,通过第三数据通路的上行数据通路将承载处理完成的第三子命令提供给命令传输单元。
根据本申请的第九方面的第六至第十五数据处理系统之一,提供了根据本申请的第九方面的第十六数据处理系统,所述命令传输单元将关联于管理命令的子命令提供给所述多个数据通路的第四数据通路的第一任务处理单元。
根据本申请的第九方面的第一至第十六数据处理系统之一,提供了根据本申请的第九方面的第十七数据处理系统,所述多个数据通路都耦合管理第一资源的第一资源管理器,第一资源管理器处理所述多个数据通路使用第一资源的多个实例的冲突;和/或,所述多个数据通路的每个耦合到管理第二资源的多个第二资源管理器之一,每个第二资源管理器独占第二资源的一个或多个实例。
根据本申请的第十方面,提供了根据本申请的第十方面的第一数据处理方法,应用于数据处理系统,所述数据处理单元包括命令传输单元、多个数据通路和至少一个子命令处理单元,每个数据通路包括上行数据通路和下行数据通路,所述方法包括:所述命令传输单元为一个或多个第一子命令分配DTU来承载子命令,并将承载了子命令的DTU提供给所述多个数据通路之一的第一数据通路的下行数据通路;其中,第一子命令关联于访问第一设备的命令,以及第一数据通路对应于所述第一设备。
根据本申请的第十方面的第一数据处理方法,提供了根据本申请的第十方面的第二数据处理方法,所述命令传输单元将承载了第一子命令的DTU提供给第一数据通路的下行数据通路的第一任务处理单元。
根据本申请的第十方面的第一或第二数据处理方法,提供了根据本申请的第十方面的第三数据处理方法,所述命令传输单元为要处理的一个或多个第二子命令分配DTU来承载子命令,以及将承载了第二子命令的DTU提供给第二数据通路的下行数据通路的第一任务处理单元;其中,所述第二子命令关联于访问第二设备的命令,以及第二数据通路对应于所述第二设备。
根据本申请的第十方面的第一至第三数据处理方法之一,提供了根据本申请的第十方面的第四数据处理方法,其中所述多个数据通路各自对应于命令要访问的设备;所述方法还包括:所述命令传输单元根据命令要访问的设备,确定将同该命令关联的子命令提供给的数据通路之一。
根据本申请的第十方面的第一至第四数据处理方法之一,提供了根据本申请的第十方面的第五数据处理方法,所述下行数据通路是如上述第四方面中任一项所述的下行数据通路;和/或,所述上行数据通路是上述第八方面中任一项所述的上行数据通路。
根据本申请的第十方面的第一至第五数据处理方法之一,提供了根据本申请的第十方面的第六数据处理方法,其中,所述多个数据通路中的第一多个数据通路的下行数据通路均与第一子命令处理单元耦合,所述方法还包括:所述第一多个数据通路的下行数据通路均将DTU发送给所述第一子命令处理单元;所述第一子命令处理单元缓存多个DTU,并处理所述多个DTU指示的多个子命令,所述多个DTU为所述第一多个数据通路发送给所述第一子命令处理单元的。
根据本申请的第十方面的第六数据处理方法,提供了根据本申请的第十方面的第七数据处理方法,所述数据处理系统还包括监视单元,所述第一子命令处理单元与所述监视单元耦合,所述方法还包括:所述监视单元从至少一个子命令处理单元获取子命令的处理结果;所述监视单元获取承载处理完成的子命令的DTU,从处理完成的子命令的DTU获取至少一个回调函数索引,以及调用所述至少一个回调函数索引所指示的回调函数。
根据本申请的第十方面的第一至第七数据处理方法之一,提供了根据本申请的第十方面的第八数据处理方法,所述数据处理系统还包括资源管理器;所述第一多个数据通路的每个都耦合第一资源管理器;所述方法还包括:所述第一多个数据通路的每个的下行数据通路的任务处理单元通过第一资源管理器访问第一资源。
根据本申请的第十方面的第七或第八数据处理方法,提供了根据本申请的第十方面的第九数据处理方法,该方法还包括:所述命令传输单元接收到数据通过的上行数据通路提供的一个或多个子命令的处理结果后,将一个或多个子命令的处理结果合并为一个命令的处理结果。
根据本申请的第十方面的第九数据处理方法,提供了根据本申请的第十方面的第十数据处理方法,该方法还包括:在接收到一个命令关联的所有子命令的处理结果之后,将所述所有子命令的处理结果合并为一个命令的处理结果。
根据本申请的第十方面的第六或第七数据处理方法,提供了根据本申请的第十方面的第十一数据处理方法,所述数据处理系统还包括第二子命令处理单元;所述多个数据通路的第三数据通路的下行数据通路耦合所述第二子命令处理单元;所述方法还包括:所述第三数据通路的下行数据通路将DTU发送给所述第二子命令处理单元,所述第二子命令处理单元处理接收的DTU指示的第三子命令;其中所述第三子命令关联于访问第三设备的命令,以及第三数据通路对应于所述第三设备。
根据本申请的第十方面的第十一数据处理方法,提供了根据本申请的第十方面的第十二数据处理方法,所述第二子命令处理单元耦合一个或多个随机访问存储器芯片;所述第三数据通路关联于非易失内存设备。
根据本申请的第十方面的第十二数据处理方法,提供了根据本申请的第十方面的第十三数据处理方法,该方法还包括:所述第二子命令处理单元获取第三子命令的处理结果,并获取承载处理完成的第三子命令的DTU,通过第三数据通路的上行数据通路将承载处理完成的第三子命令提供给命令传输单元。
根据本申请的第十方面的第一至第十三数据处理方法之一,提供了根据本申请的第十方面的第十四数据处理方法,所述多个数据通路都耦合管理第一资源的第一资源管理器,第一资源管理器处理所述多个数据通路使用第一资源的多个实例的冲突;和/或,所述多个数据通路的每个耦合到管理第二资源的多个第二资源管理器之一,每个第二资源管理器独占第二资源的一个或多个实例。
根据本申请的第十一方面,提供了根据本申请的第十一方面的第一存储设备,包括至少一存储芯片和至少一个数据通路,每个数据通路对应于一个或多个存储芯片;响应于接收到命令,所述存储设备通过所述至少一个数据通路中的一个数据通路访问与所述一个数据通路对应的存储芯片,并完成所述命令指示的操作,所述操作包括读操作、写操作和擦除操作。
根据本申请的第十一方面的第一存储设备,提供了根据本申请的第十一方面的第二存储设备,至少一个数据通路包括第一类通路、第二类通路和第三类通路中的至少一者,所述第一类通路、第二类通路和第三类通路具有至少一个相同或不同的任务处理单元。
根据本申请的第十一方面的第二存储设备,提供了根据本申请的第十一方面的第三存储设备,至少一个数据通路还包括第四类通路,所述第四类通路处理管理命。
根据本申请的第十一方面的第二存储设备,提供了根据本申请的第十一方面的第四存储设备,每个数据通路均包括第一任务处理单元、第二任务处理单元和第三任务处理单元,其中,第一任务处理单元处理缓存任务,第二任务处理单元处理地址转换任务。
根据本申请的第十一方面的第二或第四存储设备,提供了根据本申请的第十一方面的第五存储设备,所述第二类通路和所述第一类通路包括第三任务处理单元,所述第三任务处理单元处理数据组装任务。
根据本申请的第十一方面的第二、第四或第五存储设备,提供了根据本申请的第十一方面的第六存储设备,所述第一类通路包括第四任务处理单元,所述第四任务处理单元处理垃圾回收任务。
根据本申请的第十一方面的第一至第六存储设备之一,提供了根据本申请的第十一方面的第七存储设备,第三类通路对应的存储芯片为RAM芯片;第一类通路或第二类通路对应的存储芯片为NVM芯片。
根据本申请的第十一方面的第一至第七存储设备之一,提供了根据本申请的第十一方面的第八存储设备,所述存储设备还包括命令传输单元;响应于接收到命令,所述命令传输单元将命令拆分为至少一个子命令,并根据命令携带的标识信息确定将由命令拆分出的子命令提供给的数据通路类型。
根据本申请的第十一方面的第八存储设备,提供了根据本申请的第十一方面的第九存储设备,所述命令传输单元向第一数据通路发送所述至少一个子命令,以通过第一数据通路访问第一存储芯片;其中,所述标识信息指示操作的对象为所述第一存储芯片,所述第一数据通路为与所述第一存储芯片对应的数据通路。
根据本申请的第十一方面的第八或第九存储设备,提供了根据本申请的第十一方面的第十存储设备,所述命令传输单元根据所述标识信息,确定待访问的所述第一存储芯片;根据存储芯片与数据通路的对应关系,确定所述第一数据通路。
根据本申请的第十一方面的第一存储设备,提供了根据本申请的第十一方面的第十一存储设备,所述存储设备包括多个命令传输单元和命令分配单元,每个命令传输单元对应于一个数据通路;响应于接收到命令,所述命令分配单元根据命令携带的标识信息确定第一命令传输单元,所述第一命令传输单元与第一数据通路对应,所述标识信息指示操作的对象为所述第一存储芯片,所述第一数据通路为与所述第一存储芯片对应的数据通路;所述第一命令传输单元将命令拆分为至少一个子命令,并向所述第一数据通路发送所述至少一个子命令,以通过所述第一数据通路访问所述第一存储芯片。
根据本申请的第十二方面,提供了根据本申请的第十二方面的第一数据通路,包括通道、至少一个任务处理单元和至少一个资源管理器,至少一个资源管理器管理不同类型的资源;至少一个任务处理单元在处理子命令时,向至少一个资源管理器请求分配资源;响应于获得资源,至少一个任务处理单元将所获得的资源分配给DTU,所述DTU为至少一个任务处理单元从通道中获取的,所述DTU携带子命令;响应于分配给DTU的资源使用完成,至少一个任务处理单元向至少一个资源管理器释放资源。
根据本申请的第十二方面的第一数据通路,提供了根据本申请的第十二方面的第二数据通路,所述至少一个任务处理单元在处理子命令时,根据子命令的类型判断是否向至少一个资源管理器请求资源;判断结果为否时,不向至少一个资源管理器请求资源。
根据本申请的第十二方面的第一或第二数据通路,提供了根据本申请的第十二方面的第三数据通路,在至少一个任务处理单元给所述DTU分配多个资源时,在所述多个资源均使用完成之后,至少一个任务处理单元向至少一个资源管理器释放资源;响应于资源被释放,至少一个资源管理器回收所述多个资源。
根据本申请的第十二方面的第三数据通路,提供了根据本申请的第十二方面的第四数据通路,至少一个任务处理单元中的每个任务处理单元释放自身分配给所述DTU的至少一个资源;或者,至少一个任务处理单元中的第一任务处理单元释放至少一个任务处理单元的第二任务处理单元分配给所述DTU的至少一个资源。
根据本申请的第十二方面的第一至第四数据通路之一,提供了根据本申请的第十二方面的第五数据通路,根据资源的类型,每个任务处理单元向所述DTU分配一个类型的资源,并且每个任务处理单元释放自身对应的资源类型的至少一个资源。
根据本申请的第十二方面的第一数据通路,提供了根据本申请的第十二方面的第六数据通路,所述数据通路包括一个资源管理器,所述一个资源管理器管理至少一个类型的资源;响应于资源分配请求,所述一个资源管理器分配至少一个资源并提供给至少一个任务处理单元;其中,在至少一个资源数量大于1时,至少一个资源的类型不同。
根据本申请的第十二方面的第一数据通路,提供了根据本申请的第十二方面的第七数据通路,所述数据通路包括多个资源管理器,所述多个资源管理器管理多个类型的资源;响应于资源分配请求,所述多个资源管理器分配多个不同类型的资源并提供给多个任务处理单元。
根据本申请的第十二方面的第一至第七数据通路之一,提供了根据本申请的第十二方面的第八数据通路,至少一个任务处理单元将所获得的资源分配给DTU时,至少一个任务处理单元还在所述DTU中写入回调函数索引,所述回调函数索引指向至少一个任务处理单元中的回调函数。
根据本申请的第十二方面的第八数据通路,提供了根据本申请的第十二方面的第九数据通路,在所述回调函数被调用时,向至少一个资源管理器释放资源。
根据本申请的第十二方面的第一至第九数据通路之一,提供了根据本申请的第十二方面的第十数据通路,至少一个任务处理单元在数据下行传输或数据上行传输的过程中,向至少一个资源管理器发送资源释放请求。
根据本申请的第十二方面的第一至第十数据通路之一,提供了根据本申请的第十二方面的第十一数据通路,至少一个任务处理单元从通道中获取所述DTU之后,判断分配给所述DTU的资源是否使用完成;判断结果为是时,至少一个任务处理单元向至少一个资源管理器释放资源。
根据本申请的第十二方面的第十一数据通路,提供了根据本申请的第十二方面的第十二数据通路,若判断出分配给所述DTU的多个资源均使用完成,至少一个任务处理单元按照多个资源分配顺序的正序或倒序,依次释放多个资源。
根据本申请的第十二方面的第一至第十二数据通路之一,提供了根据本申请的第十二方面的第十三数据通路,通道包括监视单元;监视单元监视对其所在通道添加DTU或取出DTU的发生,并作为响应通知一个或多个资源管理器。
根据本申请的第十二方面的第十三数据通路,提供了根据本申请的第十二方面的第十四数据通路,监视单元记录了一个或多个资源管理器向其注册的监视函数;响应于监视单元对所在通道添加DTU或取出DTU的发生,调用所注册的监视函数以通知一个或多个资源管理器。
根据本申请的第十二方面的第十三或第十四数据通路,提供了根据本申请的第十二方面的第十五数据通路,监视单元通知资源管理器来请求分配用于所述DTU的资源;和/或,监视单元通知资源管理器其所管理的资源的状态发生变化。
根据本申请的第十三方面,提供了根据本申请的第十三方面的第一资源管理方法,应用于任务处理单元,所述方法包括:从通道中获取DTU,所述DTU携带子命令;在处理子命令时,向至少一个资源管理器请求分配资源;响应于从资源管理器中获得资源,将所获得的资源分配给所述DTU;响应于分配给DTU的资源使用完成,向至少一个资源管理器释放资源。
根据本申请的第十三方面的第一资源管理方法,提供了根据本申请的第十三方面的第二资源管理方法,在向至少一个资源管理器请求分配资源之前,所述方法还包括:根据子命令的类型判断是否请求分配资源;判断结果为否时,不请求分配资源。
根据本申请的第十三方面的第一或第二资源管理方法,提供了根据本申请的第十三方面的第三资源管理方法,所述在处理子命令时,向至少一个资源管理器请求分配资源,包括:向一个资源管理器请求分配资源,以使一个资源管理器分配一个资源;或者,向一个资源管理器请求分配资源,以使一个资源管理器分配多个资源;或者,向多个资源管理器请求分配资源,以使多个资源管理器分配多个资源;其中,所述多个资源管理器分配多个资源包括:多个资源管理器分别分配一个资源,多个资源中的每个资源类型不同。
根据本申请的第十三方面的第一至第三资源管理方法之一,提供了根据本申请的第十三方面的第四资源管理方法,所述响应于从资源管理器中获得资源,将所获得的资源分配给所述DTU,包括:在从资源管理器中获得一个资源时,将所述一个资源分配给所述DTU;或者,在从资源管理器中获得多个资源时,将多个资源按照请求分配的顺序分配给所述DTU。
根据本申请的第十三方面的第四资源管理方法,提供了根据本申请的第十三方面的第五资源管理方法,在将资源分配给所述DTU时,还在所述DTU中写入回调函数索引,包括:在将多个资源分配给所述DTU时,在所述DTU中写入至少一个回调函数索引;其中,在所述DTU中写入多个回调函数索引包括:按照多个资源的分配顺序,写入顺序正序地或倒序多个回调函数的索引。
根据本申请的第十三方面的第一至第五资源管理方法之一,提供了根据本申请的第十三方面的第六资源管理方法,在所述响应于分配给DTU的资源使用完成,向至少一个资源管理器释放资源之前,所述方法还包括:判断分配给所述DTU的资源是否使用完成;
判断结果为是时,确定分配给所述DTU的资源使用完成。
根据本申请的第十三方面的第五或第六资源管理方法,提供了根据本申请的第十三方面的第七资源管理方法,所述响应于分配给DTU的资源使用完成,向至少一个资源管理器释放资源,包括:通过所述DTU中的至少一个回调函数索引,调用至少一个回调函数,以释放至少一个资源;其中,在调用多个回调函数时,按照多个资源的分配顺序,正序地或倒序地依次调用多个回调函数。
根据本申请的第十四方面,提供了根据本申请的第十四方面的第一信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如上述第十三方面中任一项所述的方法。
根据本申请的第十五方面,提供了根据本申请的第十五方面的第一资源管理方法,应用于资源管理器,所述方法包括:响应于至少一个任务处理单元请求分配资源,为至少一个任务处理单元分配资源;响应于至少一个任务处理单元释放资源释放请求,回收所分配的资源。
根据本申请的第十五方面的第一资源管理方法,提供了根据本申请的第十五方面的第二资源管理方法,所述响应于至少一个任务处理单元请求分配资源,为至少一个任务处理单元分配资源,包括:响应于一个任务处理单元请求分配一个资源,为所述一个任务处理单元分配一个资源;或者,响应于一个任务处理单元请求分配一次资源,为所述一个任务处理单元分配多个资源,多个资源的类型不同;或者,响应于多个任务处理单元请求分配多个资源,为所述多个任务处理单元分配多个资源,多个资源的类型相同或不同,且所述多个任务处理单元中的每个任务处理单元获得至少一个资源。
根据本申请的第十五方面的第一或第二资源管理方法,提供了根据本申请的第十五方面的第三资源管理方法,所述响应于至少一个任务处理单元释放资源,回收所分配的资源,包括:响应于一个任务处理单元释放一个资源,回收所分配的一个资源;或者,响应于一个任务处理单元释放一次资源,回收所分配的多个资源,多个资源的类型不同;或者,响应于多个任务处理单元释放多个资源,回收所分配的多个资源,多个资源的类型相同或不同。
根据本申请的第十六方面,提供了根据本申请的第十六方面的第一信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如上述第十五方面中任一项所述的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1A为现有技术中的任务调度的示意图;
图1B为现有技术中的任务处理系统的框图;
图2A为本申请实施例提供的任务处理系统的框图;
图2B为本申请实施例提供的任务处理单元的框图;
图2C为本申请实施例提供的处理DTU的流程示意图;
图2D为本申请实施例提供的通道的框图;
图3A为本申请实施例提供的下行数据通路的示意图;
图3B为本申请实施例提供的构建下行通路的流程示意图;
图3C为本申请实施例提供的又一下行数据通路的示意图;
图4A为本申请实施例提供的又一下行数据通路的示意图;
图4B为本申请实施例提供的又一下行数据通路的示意图;
图5A为本申请实施例提供的上行数据通路的示意图;
图5B为本申请实施例提供的又一上行数据通路的示意图;
图5C为本申请实施例提供的构建上行通路的流程示意图;
图5D为本申请实施例提供的DTU的示意图;
图6A为本申请实施例提供的资源管理的示意图;
图6B为本申请实施例提供的又一资源管理的示意图;
图6C为本申请实施例提供的又一资源管理的示意图;
图7为本申请实施例提供的一种存储设备的框图;
图8A为本申请实施例提供的又一种存储设备的框图;
图8B为本申请实施例提供的又一种存储设备的框图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2A展示了根据本申请实施例的用于存储设备的任务处理系统的框图。
存储设备的控制部件的CPU运行软件(也称为固件)。运行的软件包括调度器、任务处理单元、通道与资源管理器。调度器调度任务处理单元的运行。任务处理单元是操作系统的线程、进程、任务或其他可被调度器调度的软件单元。
任务处理单元、通道与资源管理器各自包括一个或多个实例,图2A中展示了4个任务处理单元(210、212、214与216)、4个通道(220、222、224与226)与2个资源管理器(240与245)。
通道被用于任务处理单元之间的通信。通道承载的消息单元被称为数据传输单元(DTU,DataTransfer Unit)。作为举例,DTU同子命令一一对应。为每个子命令分配DTU来承载子命令有关的上下文并跟踪子命令的处理过程与结果。DTU是例如封装的数据结构的实例。子命令例如访问相同大小的存储空间。通道包括例如DTU列表,以容纳一个或多个DTU。
通道还包括处理DTU操作的函数,例如向DTU列表添加DTU的Push函数和/或从DTU列表取出DTU的函数。可选地,还可向通道注册自定义的回调函数。注册到通道的回调函数用来例如调用资源管理器提供的服务。
根据本申请的实施例,通道实例可被绑定到任务处理单元。通道从一个或多个被绑定的任务处理单元接收DTU,而仅向一个被绑定的任务处理单元提供DTU。
根据本申请的实施例,仅任务处理单元得以使用通道,调度器不能调用或调度通道实例。在任务处理单元中记录为其绑定的通道实例的索引,从而任务处理单元得以通过例如Push/Pop函数操作通道实例。
通过在任务处理单元实例之间绑定通道实例,使得任务处理单元从被绑定的通道获取DTU,处理DTU承载的子命令,并将处理后的子命令通过DTU添加给其他通道。这样各任务处理单元实例之间通过通道耦合,使得各任务处理单元实例被解耦,并且得以并发且异步地被执行。一个任务处理单元实例的执行过程与当前状态,不影响(例如阻塞)其他任务处理单元实例的执行。若控制部件包括多个CPU,各CPU得以并行处理各任务处理单元实例。
资源管理器管理指定资源的使用,例如分配、释放和/或回收。资源管理器仅被任务处理单元和/或通道调用,而不被通道调用或调度。根据一种实施方式,任务处理系统中被多个任务处理单元共享的资源(例如,FTL表(记录了存储设备的逻辑地址到NVM芯片的物理地址的映射)或缓存)由资源管理器管理。任务处理单元通过指定的资源管理单元来访问指定的资源,若多个任务处理单元实例对指定资源的访问存在冲突,资源管理单元通过加锁、排队等方式解决冲突。
图2B展示了根据本申请实施例的任务处理单元的框图。图2C展示了根据本申请实施例的任务处理单元所实施的流程图。
参看图2B,任务处理单元包括入站接口、出站接口、DTU处理模块与可选的一个或多个回调函数。
入站接口从绑定到该任务处理单元的通道获取DTU。例如,通过调用被绑定的通道的Pop函数从其DTU列表中获取DTU。出站接口向绑定到该任务处理单元的通道添加DTU。例如,通过调用被绑定的通道的Push函数向其DTU列表添加DTU。DTU处理模块对从入站接口获取的DTU提取子命令,处理子命令,并将处理后的子命令承载于DTU中通过出站接口添加到通道。DTU处理模块可选地将一个或多个回调函数的索引添加到DTU中,以构建上行数据通路。后面还将详细描述构建上行数据通路的实施方式。
可选地,任务处理单元包括两个或更多入站接口,和/或两个或更多出站接口。每个入站接口耦合到通道之一。每个出站接口耦合到通道之一。
根据本申请的实施例,任务处理系统提供例如任务处理单元、通道、资源管理器的模板,例如程序员的用户通过复制模板,并为复制的模板添加所需的代码来构建任务处理单元。以任务处理单元为例,其可重用的部分(例如入站接口、出站接口、DTU处理模块)由模板提供,而需要为其设置入站接口所耦合的通道实例,出站接口所耦合的通道实例与任务处理单元要实现的处理子命令的功能(例如,为子命令分配缓存,或者为子命令查询其要访问的物理地址)。从而构建任务处理单元时,仅需关注任务处理单元实例的特定功能的实现,而无须关注如何获取待处理子命令,如何并发处理子命令等问题。
图2C展示了DTU处理单元处理DTU的流程图。
参看图2C,DTU处理单元(也参看图2B)从其所在的任务处理单元的每个入站接口所耦合的通道获取DTU(260)。DTU处理单元轮询每个有待处理DTU的入站接口。可选地,任务处理单元的多个入站接口各自具有优先级,DTU处理单元根据优先级从各入站接口获取DTU。
获取的DTU承载了子命令。DTU处理单元从DTU中获取子命令,并根据子命令的内容处理子命令(262)。可选地,每个任务处理单元的DTU处理单元实施子命令的特定阶段的处理。多个任务处理单元对子命令的处理可以相同或不同。例如,两个任务处理单元处理子命令的相同阶段,从而这两个任务处理单元并行处理两个子命令。作为又一个例子,两个任务处理单元处理子命令的不同阶段,从而这两个任务处理单元对同一子命令先后处理。
DTU处理单元处理后的子命令,依然被承载于DTU。DTU处理单元将承载了其处理完成的子命令的DTU通过出站接口发出(264)。出站接口所耦合的通道又耦合了其他任务处理单元。例如,DTU处理单元根据DTU所承载的子命令接下来所要经历的处理,选择出站接口之一来发送该DTU。依然可选地,任务处理单元的多个出站接口各自具有优先级,DTU处理单元根据优先级通过各出站接口发送DTU。
图2D展示了根据本申请实施例的通道的框图。
通道包括DTU列表与多个操作DTU列表的函数(270、272、274)。DTU列表容纳多个DTU。耦合到通道的任务处理单元(通过出站接口)调用Push函数(270)用于向DTU列表添加DTU,而(通过入站接口)调用Pop函数(274)则从DTU列表取出DTU。
从DTU被添加到DTU列表,到从DTU列表中将该DTU取出,可能经历了较长的时间。例如,若DTU列表被实现为队列,DTU被添加到队列的队尾,直到其成为队头后才会被从队列取出。而一些DTU所代表的子命令希望被低延迟的处理。因而,可选地,通道还包括Push函数(272)。Push函数(272)不同于Push函数(270)。耦合到通道的任务处理单元调用Push函数(272)向通道提供DTU,而作为响应,通道的直接转发单元从Push函数(272)获取的DTU,还调用目的索引指示的函数,并将获取的DTU提供给目的索引指示的函数以完成对该DTU的递送。从而,调用通道的Push函数(272)向通道提供的DTU被提供给由目的索引所指示的函数并由该函数立即处理,降低了DTU在通道中停留的时间。目的索引所指示的函数是从该通道接收DTU的任务处理单元的函数。从而Push函数(272)、直接转发单元与目的索引构成了通道的快速处理DTU的通路。
通道的DTU列表、多个操作DTU列表的函数与直接转发单元是其可重用的部分,由模板提供。在实例化通道时,为DTU列表提供存储空间以容纳DTU。可选地,还设置目的索引,以向通道的直接转发单元指示接收DTU的函数。
可选地,通道还包括监视单元。监视单元监视DTU列表的操作(例如,添加和/或取出),和/或监视对DTU的直接转发操作。
根据可选的实施例,一个或多个资源管理器通过监视单元监视通过Push函数(270)将DTU添加到DTU列表的操作。从而资源管理器得以及时知晓同DTU相关的资源被使用,或者为DTU分配所需的资源。
作为举例,资源管理器向监视单元注册监视函数。响应于Push函数(270)被调用,调用所注册的一个或多个监视函数。通过Push函数(270)向通道添加的DTU或其携带的参数被作为监视函数的参数。
依然作为举例,添加到通道并待另一任务处理单元处理的DTU需要某种资源,该种资源的分配需要一定时间。监视函数响应于DTU被添加到通道而向对应的资源管理器申请该种资源,从而使资源申请操作适当地提前。当任务处理单元从通道中获取了DTU时,该种资源已被分配给该DTU,从而降低了处理该DTU的延迟(隐藏了资源分配时间)。
作为又一个例子,资源管理器需要监视某种资源的状态。例如,存储数据的存储介质资源,除了有“空闲”与“被使用”状态外,“被使用”状态的存储介质所存储的数据可能因更新而失效,并处于“失效”状态。资源管理器维护存储介质的状态,从“被使用”状态到“空闲”状态的转换由资源释放操作触发,而从“空闲”状态到“被使用”状态的转换由资源分配操作触发。根据本申请的实施例,资源管理器通过对通道的Push函数(270)的操作的监视或对DTU列表的操作的监视而获知从“被使用”状态到“失效”状态的转换。例如,监视函数获取承载写子命令的DTU对应的逻辑地址与物理地址,并记录物理地址对应的存储介质的状态为“失效”。从而任务处理单元或其他方无须另外以其他方式向资源管理器通告这种状态变化。
图3A展示了根据本申请实施例的下行数据通路的示意图。
根据本申请的实施例,数据通路包括下行数据通路与上行数据通路。下行数据通路用于处理IO命令的子命令,上行数据通路用于收集并递送子命令的处理结果。
下行数据通路包括任务处理单元(310、312、314、316)及连接任务处理单元并在数据处理单元之间传递DTU的通道(320、322、324)。
通道连接两个或多个数据处理单元。通道单向传输DTU。从而通道连接的多个任务处理单元是DTU的生产者与消费者关系。参看图3A,任务处理单元310通过通道320向任务处理单元314提供DTU,是生产者,任务处理单元314是任务处理单元310生产的DTU的消费者。任务处理单元312也通过通道320向任务处理单元314提供DTU。根据本申请的实施例,一个通道可以耦合到一个或多个作为DTU生产者的任务处理单元(例如,相对于通道320的任务处理单元310、312),但仅耦合一个作为DTU消费者的任务处理单元(例如,相对于通道320的任务处理单元316)。任务处理单元能够向多个通道发送DTU,也能从多个通道接收DTU。例如,任务处理单元312向两个通道(320与324)发送DTU,任务处理单元从两个通道(322与324)接收DTU。
在可选的实施方式中,调度器响应于通道有待处理的DTU而将耦合到该通道的作为消费者的任务处理单元调度执行,或者使该任务处理单元出于可被调度的状态。任务处理单元被调度执行后,从其耦合的通道获取DTU并处理。
下行数据通路可被构建。为构建下行数据通路,创建一个或多个任务处理单元,以及创建一个或多个通道。将所创建的通道绑定到所创建的任务处理单元,并指示任务处理单元从该通道获取DTU还是通过该通道递送DTU。
下行数据通路的构建在任务处理系统初始化时进行。可选地,在任务处理系统工作期间,构建下行数据通路,或者变更已构建的下行数据通路。
图3B展示了构建下行数据通路的流程图。
为构建下行数据通路创建下行数据通路的一个或多个任务处理单元(340)与一个或多个通道(350)。作为举例,为构建图3A展示的下行数据通路,创建任务处理单元(310、312、314与316)与通道(320、322与324)。
按照指定的耦合关系,将创建的通道绑定到任务处理单元的入站接口/出站接口(360)。依然作为举例,为构建图3A展示的下行数据通道,将通道320绑定到任务处理单元310的出站接口与任务处理单元312的出站接口。将通道320还绑定到任务处理单元314的入站接口。将通道322绑定到任务处理单元314的出站接口与任务处理单元316的入站接口。将通道324绑定到任务处理单元312的出站接口与任务处理单元316的入站接口。
图3C展示了根据本申请又一实施例的下行数据通路的示意图。
缓存管理单元380、地址映射单元382与数组组装单元384分别是实施对子命令的不同处理功能的任务处理单元。图3C展示的下行数据通路300包括多个通道(370、372与374)、多个任务处理单元(缓存管理单元380、地址映射单元382与数据组装单元384)与多个资源管理器(390、392与394)。从而图3C展示的下行数据通路用于实现存储设备的功能。
存储设备还包括命令传输单元302与子命令处理单元304。可选地,命令传输单元302根据指定的存储协议同主机交换IO命令。命令传输单元将IO命令拆分为一个或多个子命令,用分配DTU承载子命令,以及将DTU交付给下行数据通路300。下行数据通路300对子命令进行一阶段或多阶段的处理,最终将DTU交付给子命令处理单元304。子命令处理单元304将DTU承载的子命令转换为访问存储介质的命令。作为举例,子命令处理单元304是介质接口控制器。子命令处理单元304还查询存储介质,以获取处理子命令的结果,数据通过的上行数据通路将子命令的处理结果交付给命令传输单元302。如果需要,命令传输单元302将收集由同一IO命令拆分的所有子命令的处理结果,并向主机指示IO命令处理完成。
作为举例,命令传输单元302将DTU添加到通道370,通过通道370,承载了子命令的DTU被提供给缓存管理单元380。缓存管理单元380为子命令分配缓存,并将子命令所访问的数据搬移到所分配的缓存。缓存管理单元380关联于资源管理器390。资源管理器390管理缓存资源,例如,管理缓存资源的分配与释放。缓存管理单元380响应于从通道370获取的DTU所承载的子命令,向资源管理器390请求分配缓存。在承载子命令的DTU中还记录为子命令所分配的缓存。响应于将子命令所访问的数据搬移到缓存,缓存管理单元380完成了对子命令的处理,并将承载该子命令的DTU发送到通道372。
可选地,命令传输单元302处理遵循多种存储协议的IO命令,存储协议包括例如SAS/SATA协议、开放通道(OpenChannel)协议、键值(Key-Value)存储协议和/或NVMe协议等。
地址映射单元380从通道372获取DTU,并获取DTU所承载的子命令。地址映射单元380为子命令分配物理地址,并建立子命令要访问的逻辑地址与物理地址的映射。地址映射单元关联于资源管理器392。资源管理器392管理地址映射表,其中记录了存储设备的所有逻辑地址与物理地址的映射关系。地址映射单元382响应于DTU而请求资源管理器392为其分配同DTU承载的子命令所访问的逻辑地址关联的条目,条目中记录了该逻辑地址与物理地址的关联关系。在承载子命令的DTU中还记录为子命令所分配的条目。响应于获得了子命令所访问的物理地址,缓存管理单元382完成了对子命令的处理,并将承载该子命令的DTU发送到通道374。
数据组装单元384从通道374获取DTU,并获取DTU所承载的子命令。数据组装单元384组装子命令要访问的数据,以便生成向存储介质写入数据的命令。数据组装单元384关联于资源管理器394。资源管理器394管理用于异或计算的加速器(称为“异或单元”)。数据组装单元384响应于DTU而请求资源管理器394为其分配异或单元。
数据组装单元384操作子命令处理单元304将组装好的数据写入存储介质。可选地,数据组装单元384还根据DTU中的记录,向资源管理器(390、392和/或394)释放未改DTU从其分配的一种或多种资源。
图4A展示了根据本申请再一实施例的下行数据通路的示意图。
缓存管理单元410、地址映射单元412与数组组装单元414、日志单元416与垃圾回收单元418分别是不同能的任务处理单元。图4A展示的下行数据通路包括多个通道(420、421、422、424、426与428)与多个任务处理单元(缓存管理单元410、地址映射单元412、数据组装单元414、日志单元416与垃圾回收单元418)。图4A展示的下行数据通路用于实现存储设备的功能。存储设备还包括命令传输单元402与子命令处理单元404。
作为举例,命令传输单元402将DTU添加到通道420,通过通道420,承载了子命令的DTU被提供给缓存管理单元410。缓存管理单元410处理后的DTU被添加到通道422。地址映射单元412从通道422获取DTU,并将处理后的DTU添加到通道424。数据组装单元414从通道424获取DTU,并根据DTU承载的子命令通过子命令处理单元404访问存储介质。
数据组装单元414还生成DTU添加到通道426。日志单元416从通道416获取DTU,根据DTU生成要记录的日志,并将处理后的DTU添加到通道428。数据组装单元414也从通道428获取DTU,根据DTU承载的子命令将日志写入存储介质。
垃圾回收单元418生成指示垃圾回收操作的子命令的DTU并添加到通道421。缓存管理单元还从通道421获取DTU,并处理其中的子命令。
图4B展示了根据本申请依然再一实施例的下行数据通路的示意图。
图4B展示的下行数据通路包括多个通道(420、421、422、424、426、428、431、430、432与434)与多个任务处理单元(缓存管理单元410、缓存管理单元411、地址映射单元412、地址映射单元413、数据组装单元414、日志单元416与垃圾回收单元418)。
同图4A展示的下行数据通路相比,图4B展示的下行数据通路包括两个缓存管理单元与两个地址映射单元。缓存管理单元411与缓存管理单元410并行工作。地址映射单元413与地址映射单元412并行工作。从而图4B展示的下行数据通路得以并行处理命令传输单元402提供的多个子命令,增强了子命令处理能力。
作为举例,命令传输单元402将DTU添加到通道420,通过通道420,承载了子命令的DTU被提供给缓存管理单元410。缓存管理单元410处理后的DTU被添加到通道422。地址映射单元412从通道422获取DTU,并将处理后的DTU添加到通道424。数据组装单元414从通道424获取DTU,并根据DTU承载的子命令通过子命令处理单元404访问存储介质。
数据组装单元414还生成DTU添加到通道426。日志单元416从通道416获取DTU,根据DTU生成要记录的日志,并将处理后的DTU添加到通道428。数据组装单元414也从通道428获取DTU,根据DTU承载的子命令将日志写入存储介质。
垃圾回收单元418生成指示垃圾回收操作的子命令的DTU并添加到通道421。缓存管理单元还从通道421获取DTU,并处理其中的子命令。
根据本申请的实施例,为增强任务处理系统的处理能力提供了便利。参看图4B,通过为下行数据通路提供并行的多个任务处理单元与同其耦合的通道,任务处理能力得到增强。由于任务处理单元是可调度的,当例如存储设备的控制部件的处理器核数增加或线程数增加,下行数据通路上增加的任务处理单元得以利用增加的处理器核或线程,从而增加的处理器核或线程被方便且充分利用来并行处理更多的子命令。一些情况下,由于子命令处理各阶段的不均衡性,找到对处理各阶段的最划分与最优资源分配是困难的。例如,缓存管理与地址映射阶段的工作负担相比于日志管理要更重。而根据本申请的实施例,对下行数据通路的调整变得简单,通过调整下行数据通路,测试不同数量的任务处理单元和/或通道的设置,以便捷地找到最优或较优的下行数据通路结构。
DTU承载了一种或多种子命令,下行数据通路为处理DTU分配了一种或多种资源。在完成对DTU承载的子命令的处理后,要释放为DTU分配的多种资源并递送对应多种子命令的多种处理结果。即使相同类型的子命令,也存在处理成功/失败等多种状态。因而对于每个DTU,存在不同的资源释放方式,和/或处理结果识别与递送方式。因而,需要通过不同的上行数据通路,以对应不同的处理方式。
根据本申请的实施例,在下行数据通路处理DTU的过程中,为每个DTU构建上行数据通路,并在DTU承载的子命令被处理完成后,通过所构建的上行数据通路对该DTU进行处理。
图5A展示了根据本申请实施例的上行数据通路的示意图。
参看图5A,下行数据通路包括例如多个任务处理单元(510、520与530),任务处理单元还包括一个或多个回调函数(512、522与532)。图5A的例子中,任务处理单元510包括回调函数512,任务处理单元520包括回调函数522,任务处理单元530包括回调函数532。任务处理单元510处理的DTU通过通道(由箭头简单示出)提供给任务处理单元520,任务处理单元处理的DTU通过通道提供给任务处理单元530。
下行数据通路的任务处理单元在处理DTU时,将一个或多个自身的回调函数的索引记录在所处理的DTU中。从而在该DTU承载子命令被处理完成,从该DTU中获取一个或多个回调函数索引并调用这些回调函数,以完成上行数据通路对该DTU的处理。从而这些回调函数构成了该DTU的上行数据通路或其部分。
在图5A的例子中,任务处理单元530是下行数据通路的最后一个任务处理单元。其将DTU 542承载的子命令提交给子命令处理单元(未示出)。子命令处理单元缓存DTU 542,处理DTU 542指示的子命令,并将子命令的处理结果提供给监视单元550。
监视单元550监视并识别子命令是否被处理完成。响应于子命令处理完成,监视单元520获取指示了子命令的处理结果的DTU 542。例如,监视单元550接收到子命令处理单元发送的子命令处理完成指示,确定子命令处理完成。又如,监视单元550对子命令处理单元进行轮询,轮询到子命令完成指示,则确定子命令处理完成。作为响应,监视单元550获取承载了被处理完成的子命令的DTU 542,从DTU 542中获取其中的一个或多个回调函数索引(例如,回调函数512、522与532),按指定的顺序调用这些回到函数索引所指示的回调函数。作为举例,回调函数532用于释放任务处理单元530为DTU 542分配的资源,回调函数522用于释放任务处理单元520为DTU 542分配的资源,回调函数512用于释放任务处理单元510为DTU 542分配的资源。回调函数512还将DTU 542提供给命令传输单元(未示出)。回调函数512是上行数据通路中被最后调用的回调函数。命令传输单元根据DTU 542的指示获取子命令的处理结果。命令传输单元还释放DTU 542,从而DTU 542可被用于承载其他子命令并提供给下行数据通路。
可选地,命令传输单元还合并多个子命令的处理结果。这些被合并的子命令来源于同一个命令。响应于由同一命令产生的多个子命令都处理完成,命令传输单元向命令发出方返回该命令的处理结果。
从而在图5A的例子中,在逻辑上,回调函数537、回调函数527与回调函数517依次处理DTU 547(由虚线箭头指示),监视单元550与回调函数(512、522与532)构成了该DTU542的上行数据通路。
从而根据本申请的实施例,一个或多个回调函数索引被记录DTU中,监视单元550根据要处理的DTU中的回调函数索引按指定顺序调用对应的回调函数,实现了为每个DTU构建专用于该DTU的上行数据通路,并用构建的上行数据通路处理各DTU,从而在对上行数据通路中能对各DTU提供不同的处理方式。
图5B展示了根据本申请的又一实施例的上行数据通路的示意图。
在图5B的例子中,下行数据通路包括三个任务处理单元,分别是缓存管理单元515、地址映射单元525与数据组装单元535(也参看图4A与图4B)。下行数据通路还包括管理缓存资源的资源管理器、管理映射表资源的资源管理器与管理加速器资源的资源管理器(未示出资源管理器,仅示出了被管理的资源)。
缓存管理单元515为处理DTU 547从缓存资源中获取了缓存单元分配给DTU 547。地址映射单元525为DTU 547分配映射表资源(例如,锁定映射表的条目)用于记录承载写入数据的存储介质的地址。数据组装单元535为DTU 547分配加速器资源(用于为写入数据计算校验数据),并将DTU 547承载的子命令提交给子命令处理单元(例如,介质接口控制器)(未示出)。
作为举例,处理DTU 547时,缓存管理单元515将回调函数517的索引记录在被处理的DTU 547中,地址映射单元525将回调函数527的索引记录在DTU 547中,而数据组装单元535将回调函数537的索引记录在DTU 547中。回调函数517用于例如释放分配给DTU 547的缓存资源。回调函数527用于例如将分配给DTU 547的存储介质地址写入映射表条目并为该映射表条目解锁。回调函数537用于例如记录分配给DTU 547的加速器释放。
监视单元555轮询子命令处理单元,获知DTU 547对应的子命令被处理完成。监视单元555从DTU 547中获取其中记录的回调函数(517、527与537)的索引,并调用这些回调函数。
作为举例,回调函数(517、527与537)使用DTU或DTU记录的变量作为参数,以处理该DTU。依然作为举例,监视单元555按回调函数537、回调函数527与回调函数517的顺序调用这些回调函数。调用回调函数的顺序是例如其被添加到DTU 547中的顺序的逆序。从而,各任务处理单元按操作堆栈的方式向DTU 547中添加回调函数的索引,监视单元555也按操作堆栈的方式从DTU 547中获取回调函数的索引并调用对应的回调函数。
图5C展示了根据本申请实施例的构建上行数据通路的流程图。
下行数据通路的一个任务处理单元中,向DTU中写入一个或多个回调函数索引(570),并将DTU通过提供给下行数据通路的另一任务处理单元。该另一任务处理单元也向DTU中写入一个或多个回调函数索引(572)。通过一个或多个任务处理单元在DTU中写入一个或多个回调函数索引,这些回调函数索引所指示的回调函数,构成了处理该DTU的上行数据通路。
在该DTU承载的子命令被子命令处理单元处理完成后,获取该DTU中记录的所有回调函数索引,并依次调用这些回调函数索引所指示的回调函数(574),以通过上行数据通路处理该DTU。
可选地,任务处理单元根据其对DTU承载的子命令所进行的处理或为其分配的资源,选择向该DTU中记录的回调函数索引,而回调函数索引对应的回调函数是预置在该任务处理单元中的。例如,选择将释放所分配的资源的回调函数对应的索引,或者选择将处理子命令执行失败场景的回调函数对应的索引。
可选地,一个任务处理单元为DTU添加一个或多个回调函数索引。依然可选地,一个或多个任务处理单元不为其处理的DTU添加任何回调函数索引。从而,下行数据通路中的任务处理单元的数量大于、等于或小于上行数据通路中的任务处理单元的数量。例如,下行数据通路共有5个任务处理单元,但这5个任务处理单元在处理DTU的过程中,只有缓存管理单元与地址映射单元在处理子命令的时向DTU中各自写入了一个回调函数索引。此时的DTU中共有两个回调函数索引。从而在用于该DTU的上行数据通路仅包括两个回调函数。
例如,缓存管理单元515在向DTU 547写入回调函数517的索引之后,缓存管理单元515的回调函数517即成为上行数据通路505的一部分,即缓存管理单元515既是下行数据通路的组成部分,也是上行数据通路的组成部分。通过回调函数517的索引来调用回调函数517时,通过执行回调函数517,释放在DTU 547时请求资源管理器分配的缓存资源。
在又一个例子中,缓存管理单元515在处理子命令时并未向DTU 547中写入回调函数517的索引。而地址映射单元525在处理DTU 547时,向DTU 547中写入了回调函数527的索引,回调函数527用于释放缓存管理单元525为DTU 547分配的缓存资源。在处理完DTU 547后,调用DTU 547记录的回调函数527的索引以执行回调函数527,并释放了缓存资源。可选地,还在DTU 547中记录分配的缓存资源的标识信息,并在释放缓存资源时用改标识信息指示具体的缓存资源。
在一些实施例中,下行数据通路包括多个任务处理单元,多个任务处理单元中的每个任务处理单元在处理DTU承载的子命令的过程中,均在DTU中写入回调函数的索引。每个任务处理单元写入DTU中的回调函数索引指示的回调函数相同或不同。在一个例子中,缓存管理单元515在处理DTU时请求分配了缓存资源,而地址映射转换单元525和数据组装单元535在处理DTU时并未请求缓存资源,从而缓存管理单元515向DTU写入的回调函数索引与地址映射转换单元525和数据组装单元535向DTU写入的回调函数索引不同,依然可选地,地址映射转换单元525和数据组装单元535向DTU写入的回调函数索引相同。
通过上行数据通路的回调函数还向命令传输单元返回子命令的处理结果。
可选地,DTU 547中的一个或多个回调函数索引是有序的,按顺序调用这些回调函数索引所指示的回调函数。按顺序被调用的DTU 547中的一个或多个回调函数构成了上行数据通路。作为举例,调用DTU 547中回调函数索引所指示的的一个或多个回调函数的顺序是构建上行数据通路中向DTU写入这些回调函数索引的逆序。
图5D展示了DTU的示意图。
如图5所示,DTU中记录了回调函数索引,回调函数索引指示了包括回调函数索引A、回调函数索引B和回调函数索引C的回调函数列表。作为举例,回调函数索引A是缓存管理单元515写入的,回调函数索引B是地址映射单元525写入的,回调函数索引C是数据组装单元535写入的。回调函数列表中的回调函数索引A、回调函数索引B和回调函数索引C是有序的。图5D中,回调函数列表的左侧相对于右侧是更早被写入DTU的回调函数索引。可选地,在上行数据通路中,按照回调函数索引被写入DTU的写入顺序的逆序,通过回调函数索引C、回调函数索引B和回调函数索引A的顺序来依次调用3个回调函数。
在一些实施例中,监视单元获取到DTU后,通过回调函数列表中的回调函数索引,调用一个或多个回调函数。例如,监视单元获取到回调函数列表中的最后一个回调函数索引为回调函数索引C,通过回调函数索引C调用回调函数C1,以执行该回调函数C1。在执行完回调函数C1后,监视单元继续通过回调函数索引B调用回调函数B1。在执行完回调函数B1后,监视单元220继续通过回调函数索引A调用回调函数A1。作为举例,回调函数A1是上行数据通路的最后一个回调函数,其还将DTU返回给命令传输单元,该DTU携带了子命令的处理结果。
图6A展示了根据本申请实施例的资源管理的示意图。
任务处理单元从通道获取DTU并处理。在处理DTU的过程中,向资源管理器请求资源,用于对DTU所承载的子命令的处理。任务处理单元在DTU中记录被分配的资源的标识,以指示当前该DTU占用了该资源。任务处理单元还向该DTU中记录回调函数索引,该回调函数索引所指示的回调函数被执行时将释放该资源。任务处理单元将处理后的DTU通过通道提供给其他任务处理单元或提供给子命令处理单元。
图6B展示了根据本申请又一实施例的资源管理的示意图。
下行数据通路包括两个任务处理单元(610、612),两个资源管理器(620、622)。图6B中,DTU 640、DTU 642与DTU 644展示了相同DTU的不同阶段。DTU 640被任务处理单元610处理后被展示为DTU 642,而DTU 642被任务处理单元612处理后被展示为DTU 644。
任务处理单元610处理DTU 640时,向资源管理器620请求分配资源A。例如,资源A代表缓存资源。任务处理单元610向任务处理单元612提供DTU 642,并在DTU 642中记录被分配的资源A与回调函数A1的索引。回调函数A1被执行时向资源管理器释放资源A。
任务处理单元612处理DTU 642时,向资源管理器622请求分配资源B。例如,资源B代表加速器资源。任务处理单元612生成DTU 644,并在DTU 644中记录被分配的资源B与回调函数B1的索引。回调函数B1被执行时向资源管理器释放资源B。从而DTU 644中记录的被分配的资源A与回调函数A1的索引是任务处理单元610添加的,而被分配的资源B与回调函数B1的索引是任务处理单元612添加的。
图6C展示了根据本申请又一实施例的资源管理的示意图。
下行数据通路包括三个任务处理单元(650、652与654),两个资源管理器(660、662)。图6C中,DTU 670、DTU 672与DTU 674展示了相同DTU的不同阶段。而DTU 670与DTU680代表不同的DTU。DTU 680与DTU 682代表相同DTU的不同阶段。DTU 670被任务处理单元650处理后被展示为DTU 672,而DTU 672被任务处理单元652处理后被展示为DTU 674。DTU680被任务处理单元654处理后被展示为DTU 682。
任务处理单元650处理DTU 670时,向资源管理器660请求分配资源A。例如,资源A代表缓存资源。任务处理单元650向任务处理单元652提供DTU 672,并在DTU 672中记录被分配的资源A。任务处理单元650在DTU 672中还记录了回调函数索引,但作为举例,该回调函数索引所指示的回调函数被执行时,不用于释放资源A。
任务处理单元654处理DTU 680时,向资源管理器660请求分配资源A’。资源A’与资源A是同类资源(例如,缓存资源),但资源A’与资源A分别代表该类资源的不同实例。任务处理单元654在DTU 682中记录被分配的资源A与回调函数索引,该回调函数索引所指示的回调函数被执行时,不用于释放资源A’。
资源管理器管理资源的分配。例如,资源管理器660确保资源的一份实例(例如,资源A)不会既分配给DTU 672又分配给DTU 682。例如,资源管理器660为每个资源实例维护锁,以确保一个资源实例仅被分配给一个DTU。资源管理器还管理对资源实例的释放。从而根据本申请实施例的任务处理系统的下行数据通路,可包括多个具有相同功能和/或使用相同资源的任务处理单元,这些任务处理单元通过同一资源管理器请求资源。
依然参看图6C,任务处理单元650向DTU 672添加的回调函数不用于释放其为DTU672请求的资源A。其意味着对同一资源的分配与释放,不必由同一任务处理单元负责(而可由另一任务处理单元负责),从而带来任务处理的灵活性。可以理解地,由同一任务处理单元负责释放其分配的资源,也是可行的。
任务处理单元652处理DTU 672时,向资源管理器622请求分配资源B。任务处理单元652生成DTU 674,并在DTU 644中记录被分配的资源B与回调函数B1的索引。回调函数B1被执行时向资源管理器释放资源B。任务处理单元652还在DTU 674中记录回调函数A1的索引。回调函数A1被执行时向资源管理器释放资源A。
图7展示了利用根据本申请实施例的任务处理系统构建的存储设备的框图。
根据本申请实施例的任务处理系统被用于构建存储设备,并由例如存储设备的控制部件实施。
任务处理系统包括命令传输单元、数据通路与子命令处理单元。子命令处理单耦合于存储介质。
命令传输单元根据指定的存储协议同主机交换IO命令。命令传输单元将IO命令拆分为一个或多个子命令,分配DTU来承载子命令,以及将DTU交付给数据通路。
数据通路包括下行数据通路与上行数据通路。下行数据通路对子命令进行一阶段或多阶段的处理,最终将DTU交付给子命令处理单元。子命令处理单元将DTU承载的子命令转换为访问存储介质的命令。作为举例,子命令处理单元是介质接口控制器。子命令处理单元还查询存储介质,以获取访问存储介质的命令的处理结果。上行数据通路将子命令的处理结果交付给命令传输单元。作为举例,上行数据通路轮询子命令处理单元,以获得子命令的处理结果。如果需要,命令传输单元将收集由同一IO命令拆分为一个或多个子命令,在由同一IO命令拆分的所有子命令都处理完成后,向主机提供该IO命令的处理结果。
根据本申请的实施例,为在存储设备中支持虚拟化提供了便利。例如,NVMe协议定义了命名空间(NameSpace,简称为NS)。命名空间向访问存储设备的主机展示了虚拟存储设备或逻辑存储设备。从而通过在单一控制部件上提供多个命名空间,每个命名空间都向主机提供了虚拟化的存储设备。作为又一个例子,由存储设备的单一控制部件同时提供由不同存储协议访问的多种虚拟存储设备,例如,同时支持NVMe协议、开放通道(OpenChannel)协议和/或SATA协议的存储设备。
还为各虚拟存储设备分配资源。例如,缓存资源、存储介质资源、加速器资源为各虚拟存储设备共享是有利的,映射表资源为各虚拟存储设备独占是有利的。
根据本申请的实施例,对上述多种需求的实现提供了便利。
图8A展示了利用根据本申请又一实施例的任务处理系统构建的存储设备的框图。
根据图8A的实施例,存储设备向主机展示例如NVMe协议的多个命名空间(分别记为NS0、NS1、NS2与NS3)。主机得以根据NVMe协议访问每个命名空间提供的虚拟存储设备。
根据本申请实施例的任务处理系统被用于构建图8A展示的存储设备,并由例如存储设备的控制部件实施。
任务处理系统的实例包括命令传输单元、多个数据通路(810、812、814与816)与子命令处理单元。子命令处理单耦合于存储介质。多个数据通路(810、812、814与816)的每个,分别用于提供命名空间之一。作为举例,数据通路810提供命名空间NS0,数据通路812提供命名空间NS1,数据通路814提供命名空间NS2,而数据通路816提供命名空间NS3。
命令传输单元将主机提供的IO命令拆分为子命令,并根据IO命令访问的命名空间,将从IO命令拆分出的子命令提供给同命名空间对应的数据通路。例如,IO命令访问命名空间NS2,则命令传输单元将从该IO命令拆分出的所有子命令都提供给数据通路814,由数据通路814处理访问命名空间NS2的所有IO命令。
从而,根据本申请的实施例,通过复制数据通路,便捷地使存储设备提供了多命名空间的功能。
可选地,为各命名空间提供其独占的映射表资源,以及提供共享的其他资源(存储介质资源、加速器资源等)。从而,任务处理系统提供例如4个用于管理映射表资源的资源管理器,每个用于管理映射表资源的资源管理器被耦合到数据通路之一,并且仅管理同其耦合的数据通路关联的命名空间对应的映射表资源,从而实现了在各命名空间之间对映射表资源的有效隔离。而任务处理系统还为每个数据通路提供其专用的管理其他类型资源的资源管理器。以用于管理存储介质的存储介质资源管理器为例,耦合到各数据通路的各存储介质资源管理器管理存储设备的例如所有存储介质,从而每个数据通路都可用存储设备的任何可用的存储介质来承载被子命令写入的数据,提高了存储介质资源的利用率,并且有助于实现存储设备的全局磨损均衡。
可以理解地,数据通路、资源管理器与被管理的各种资源之间,在根据本申请的实施例中,可其他具有多种对应关系。例如,可以为每个数据通路提供独占的存储介质资源,以减轻数据通路之间相互的影响。重要的事,根据本申请的任务处理系统,数据通路得以被便捷地复制,资源管理器得以被便捷地耦合于数据通路,存储设备的资源得以被资源管理便捷地管理。从而,加快了存储设备的新功能的开发。
图8B展示了利用根据本申请再一实施例的任务处理系统构建的存储设备的框图。
根据图8B的实施例,存储设备向主机展示多种设备的功能,例如NVMe存储设备、开放通道(OC,OpenChannel)存储设备、具有指定功能的加速器、MCTP(管理组件传输协议,Management Component Transport Protocol)端点、NVMe设备的管理队列(AdminQueue)等。主机得以根据不同的协议访问每个设备提供的功能。
根据本申请实施例的任务处理系统被用于构建图8B展示的存储设备,并由例如存储设备的控制部件实施。
任务处理系统的实例包括命令传输单元、多个数据通路(820、822、824与826)与多个子命令处理单元(380、386与839)。子命令处理单元830耦合于存储介质。子命令处理单元893耦合于加速器(例如,根据AES/SM4标准执行加密/解密计算的加速器)
作为举例,数据通路820提供NVMe存储设备的功能,处理NVMe协议的IO命令;数据通路822提供OC存储设备功能,处理OC协议的IO命令。数据通路824处理MCTP协议的管理命令或NVMe协议的管理命令。数据通路826处理对加速器的访问请求。
命令传输单元根据命令所使用的协议将命令转发的对应的数据通路。可选地,对于IO命令,数据通路820和/或数据通路822的第一个任务处理单元实施从IO命令到子命令的拆分。IO命令要访问存储设备的存储设置。由单一的子命令处理单元830服务数据通路820与数据通路822,使得数据通路820提供的NVMe存储设备与数据通路822提供的OC存储设备都可使用存储设备的所有存储介质,从而提高了存储介质的利用率。
依然可选地,命令传输单元将IO命令拆分为子命令,为子命令分配DTU,并根据其协议而提供给同协议对应的数据通路。命令传输单元也为管理命令与访问加速器的命令分配DTU。用DTU承载各种命令从而得以在数据通路中被一个或多个任务处理单元处理。作为举例,命令传输单元无须将管理命令和/或访问加速器的命令拆分为子命令,而由DTU承载管理命令和/或访问加速器的命令。
对于管理命令(例如,遵循MCTP协议或NVMe协议),其查询或设置设备的状态,由数据通路824与子命令处理单元836处理。在管理命令查询例如存储设备可用空间大小时,子命令处理单元836从内存中获取存储介质的使用状态而无须同专用的硬件相关联。在管理命令查询例如设备温度时,子命令处理单元836耦合例如温度传感器(未示出)以获取温度信息。
子命令处理单元839耦合的加速器是例如根据AES/SM4标准执行加密/解密计算的加速器。可选地,数据通路820与数据通路822的资源管理器将加速器封装为资源,并由数据处理单元820/830的任务处理单元使用。数据通路826与子命令处理单元839则将加速器展示为提供相关服务的设备,从而主机得以直接使用加速器。
从而,根据本申请的实施例,通过创建多种数据通路,便捷地使存储设备提供了多种虚拟设备的功能。
虽然当前申请参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种上行数据通路的构建方法,其特征在于,包括:
在下行数据通路的一个或多个任务处理单元中,向数据传输单元DTU中写入一个或多个回调函数索引以构建用于所述DTU的上行数据通路;其中,所述一个或多个回调函数索引指示的一个或多个回调函数构成了所述上行数据通路,所述DTU承载子命令,其中,所述子命令是指将IO命令拆分所得到的子命令,DTU是承载子命令和/或子命令上下文的消息单元;
响应于所述子命令处理完成,调用所述DTU中记录的一个或多个回调函数索引所指示的回调函数,以通过所述上行数据通路返回所述子命令的处理结果。
2.如权利要求1所述的方法,其特征在于,所述DTU中的一个或多个回调函数索引是有序的,按顺序被调用的所述DTU中的一个或多个回调函数索引所指示的回调函数构成了所述上行数据通路,其中,调用所述DTU中的一个或多个回调函数索引所指示的回调函数的顺序是构建所述上行数据通路中向所述DTU写入所述一个或多个回调函数索引的逆序。
3.如权利要求1或2所述的方法,其特征在于,第一任务处理单元处理所述子命令时,向所述DTU写入第一回调函数索引;其中,所述第一回调函数索引所指示的回调函数用于释放所述第一任务处理单元为处理所述子命令分配的第一资源,所述第一任务处理单元为所述下行数据通路中的任务处理单元。
4.如权利要求1或2所述的方法,其特征在于,所述上行数据通路还包括监视单元,所述监视单元是所述上行数据通路的第一个任务处理单元;所述监视单元监视并识别所述子命令是否被处理完成;响应于所述子命令处理完成,监视单元获取指示了所述子命令的处理结果的所述DTU。
5.如权利要求1或2所述的方法,其特征在于,所述上行数据通路中被最后调用的回调函数将所述DTU发送给命令传输单元;命令传输单元根据所述DTU的指示获取所述子命令的处理结果;将一个或多个子命令的处理结果返回给命令的发出方,所述命令包括所述一个或多个子命令;以及命令传输单元释放所述DTU。
6.一种数据处理系统,其特征在于,包括上行数据通路与下行数据通路;所述下行数据通路包括一个或多个任务处理单元;其中,所述多个任务处理单元中的第一任务处理单元与命令传输单元耦合,所述多个任务处理单元中的第二任务处理单元与子命令处理单元耦合;所述下行数据通路处理命令传输单元提供的DTU,并在处理所述DTU过程中构建用于所述DTU的所述上行数据通路,其中,在下行数据通路的一个或多个任务处理单元中,向数据传输单元DTU中写入一个或多个回调函数索引以构建用于所述DTU的上行数据通路;
响应于所述子命令被子命令处理单元处理完成,通过所述上行数据通路向所述命令传输单元获取所述子命令的处理结果。
7.如权利要求6所述的数据处理系统,其特征在于,所述上行数据通路还包括监视单元,所述子命令处理单元与所述监视单元耦合;所述监视单元从所述子命令处理单元,获取子命令处理完成指示;
响应于所述子命令处理完成指示,所述监视单元调用数据传输单元DTU指示的回调函数,以通过所述上行数据通路向所述命令传输单元提供所述子命令的处理结果。
8.如权利要求7所述的数据处理系统,其特征在于,所述监视单元根据所述子命令处理完成指示获取所述DTU;并从所述DTU中,获取至少一个回调函数索引;其中,回调函数索引指示回调函数,所述至少一个回调函数索引为所述下行数据通路的一个或多个任务处理单元处理子命令时,写入所述DTU中的;其中,所述至少一个回调函数构成所述上行数据通路。
9.如权利要求8所述的数据处理系统,其特征在于,响应于所述至少一个回调函数被调用,执行所述至少一个回调函数中的第一回调函数,以向所述命令单元发送所述子命令的处理结果;其中,所述第一回调函数为所述第一任务处理单元处理子命令时写入所述DTU中的回调函数。
10.一种信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现根据权利要求1-5之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010307559.4A CN113076180B (zh) | 2020-04-17 | 2020-04-17 | 上行数据通路的构建方法及数据处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010307559.4A CN113076180B (zh) | 2020-04-17 | 2020-04-17 | 上行数据通路的构建方法及数据处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113076180A CN113076180A (zh) | 2021-07-06 |
CN113076180B true CN113076180B (zh) | 2022-04-01 |
Family
ID=76609048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010307559.4A Active CN113076180B (zh) | 2020-04-17 | 2020-04-17 | 上行数据通路的构建方法及数据处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113076180B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114143862B (zh) * | 2021-12-13 | 2023-09-15 | 楚雄高新领创科技有限公司 | 一种数据园区管理后台与移动终端通信的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10171657B1 (en) * | 2018-07-06 | 2019-01-01 | Genesys Telecommunications Laboratories, Inc. | System and method for omni-channel notification and selection |
CN109284180A (zh) * | 2018-08-30 | 2019-01-29 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、电子设备及存储介质 |
CN113282341A (zh) * | 2020-02-20 | 2021-08-20 | 浙江宇视科技有限公司 | 一种业务控制方法、装置、设备和介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159747B (zh) * | 2007-11-12 | 2010-09-01 | 中兴通讯股份有限公司 | 一种基于tcp并发多链路的通信系统及其方法 |
-
2020
- 2020-04-17 CN CN202010307559.4A patent/CN113076180B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10171657B1 (en) * | 2018-07-06 | 2019-01-01 | Genesys Telecommunications Laboratories, Inc. | System and method for omni-channel notification and selection |
CN109284180A (zh) * | 2018-08-30 | 2019-01-29 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、电子设备及存储介质 |
CN113282341A (zh) * | 2020-02-20 | 2021-08-20 | 浙江宇视科技有限公司 | 一种业务控制方法、装置、设备和介质 |
Non-Patent Citations (1)
Title |
---|
基于SBB架构冗余磁盘阵列控制器间通信信道的设计与应用;王炎轶;《中国优秀博硕士学位论文全文数据库(硕士)》;20160715;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113076180A (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9606838B2 (en) | Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines | |
US11561830B2 (en) | System and method for low latency node local scheduling in distributed resource management | |
WO2019223596A1 (zh) | 事件处理方法、装置、设备及存储介质 | |
US20180225155A1 (en) | Workload optimization system | |
US10275558B2 (en) | Technologies for providing FPGA infrastructure-as-a-service computing capabilities | |
US9063918B2 (en) | Determining a virtual interrupt source number from a physical interrupt source number | |
US10013264B2 (en) | Affinity of virtual processor dispatching | |
US10467052B2 (en) | Cluster topology aware container scheduling for efficient data transfer | |
US10579419B2 (en) | Data analysis in storage system | |
CN113076180B (zh) | 上行数据通路的构建方法及数据处理系统 | |
CN113076189B (zh) | 具有多数据通路的数据处理系统及用多数据通路构建虚拟电子设备 | |
Zou et al. | DirectNVM: Hardware-accelerated NVMe SSDs for high-performance embedded computing | |
JP6584529B2 (ja) | ファイルにアクセスするための方法および装置、ならびに記憶システム | |
CN113535377A (zh) | 数据通路、其资源管理方法及其信息处理设备 | |
CN113535345A (zh) | 下行数据通路的构建方法及设备 | |
US9176910B2 (en) | Sending a next request to a resource before a completion interrupt for a previous request | |
JP2003345614A (ja) | シングルプロセッサ向けosによる並列処理システム | |
CN115221099A (zh) | 一种任务处理的方法及系统 | |
CN116662008A (zh) | 一种异构硬件统一纳管调度节点控制器 | |
CN116710906A (zh) | 一种集成芯片及数据搬运方法 | |
CN118093152A (zh) | 一种多核系统信息调度方法、装置、电子设备及存储介质 | |
JP2011257973A (ja) | メモリ管理方法及びメモリ管理装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |