掌桥专利:专业的专利平台
掌桥专利
首页

任务完成系统

文献发布时间:2023-06-19 10:16:30


任务完成系统

技术领域

本发明总体上涉及用于报告任务完成的系统和方法。

背景技术

当任务被排队(发布)以执行时,但是任务执行不一定以发布任务的相同顺序进行时,在某些情况下可能会出现问题,这是因为以任务被排队(发布)的相同顺序将不会发生任务完成的指示。

发明内容

在某些示例性实施方式中,本发明试图提供用于报告任务完成的改进的系统和方法。在某些示例性实施方式中,即使当任务执行以与任务被排队(发布)的顺序不同的顺序发生时,也以与任务被排队(发布)的顺序相同的顺序提供任务完成的指示。

因此,根据本发明的示例性实施方式,提供了一种包括队列处理逻辑的系统,该队列处理逻辑包括用于与存储器进行通信的通信硬件,该存储器被配置为保存具有多个工作控制记录(WCR)的工作控制结构(WCS),所述WCS以具有头部和尾部的先进先出方式进行配置,每个WCR包括工作指定字段,用于定义要执行的工作单元,以及完成指示符,用于指示要执行的工作单元是否已完成,并且初始设置为指示要执行的工作单元尚未完成,并且所述队列处理逻辑被配置为在获取用于执行的工作请求(WR)之后,通过所述通信硬件将与所述WR相对应的WCR推送到所述WCS,并进一步被配置为通过所述通信硬件执行以下操作:A)检查所述WCS头部的WCR,B)当所述WCS头部的WCR的完成指示符指示与所述WCS头部的WCR相关联的工作单元已经完成时:从所述WCS弹出所述WCS头部的WCR;并向所述系统外部的主机处理器报告所述WCS头部的WCR完成;和C)迭代执行A、B和C。

进一步根据本发明的示例性实施方式,队列处理逻辑还被配置为在所述WCS的尾部插入WCR。

仍进一步根据本发明的示例性实施方式,队列处理逻辑被配置为至少部分地基于源自所述主机处理器的请求,在所述WCS的尾部插入WCR。

另外,根据本发明的示例性实施方式,多个WCR中的至少一个由所述WCS从WCR的全局池中分配。

此外,根据本发明的示例性实施方式,存储器在系统外部。

进一步根据本发明的示例性实施方式,系统包括存储器。

仍然根据本发明的示例性实施方式,通信硬件包括总线。

另外,根据本发明的示例性实施方式,在所述工作队列的头部的所述WCR的完成被报告给在所述主机处理器上运行的应用。

此外,根据本发明的示例性实施方式,系统还包括工作处理逻辑,该工作处理逻辑包括工作执行逻辑和完成指示逻辑,并且工作执行逻辑被配置为执行与给定的WCR相关联的工作单元,以及所述完成指示逻辑被配置为当所述工作执行逻辑已完成与所述给定WCR相关联的工作单元时,在所述给定WCR中设置所述完成指示符以指示与所述给定WCR相关联的工作单元已完成。

进一步根据本发明的示例性实施方式,该系统被包括在以下之一中:网元;以及磁盘控制器;和加速器设备。

仍然根据本发明的示例性实施方式,系统被包括在网元中,并且所述网元包括网络接口卡(NIC)。

另外,根据本发明的示例性实施方式,要执行的工作单元包括由NIC通过硬件联网介质进行的数据传输。

此外,根据本发明的示例性实施方式,系统还包括超时逻辑,所述超时逻辑被配置为在超时到期时将所述WCS头部的所述WCR的完成指示符设置为即使与所述WCS头部的所述WCR相关联的工作单元尚未完成,也指示与所述WCS头部的所述WCR相关联的工作单元也已完成。

进一步根据本发明的示例性实施方式,当在所述WCS头部的所述WCR的完成指示符被设置为指示在超时时与所述WCS头部的WCR相关联的工作单元已完成,所述WCS头部的所述WCR的完成指示符被设置为包括错误指示。

根据本发明的另一示例性实施方式,还提供了一种方法,该方法包括在队列处理逻辑中,该队列处理逻辑包括用于与存储器通信的通信硬件,其中,所述存储器被配置为保存具有多个工作控制记录(WCR)的工作控制结构(WCS),所述WCS以具有头部和尾部的先进先出方式被配置,每个WCR包括:工作指定字段,用于定义要执行的工作单元;完成指示符,用于指示要执行的工作单元是否已完成,并且初始设置为指示要执行的工作单元尚未完成,执行以下操作:在获取用于执行的工作请求(WR)之后,通过所述通信硬件将与所述WR相对应的WCR推送到所述WCS,以及通过所述通信硬件执行以下操作:A)检查所述WCS头部的WCR,B)当所述WCS头部的WCR的完成指示符指示与所述WCS头部的WCR相关联的工作单元已经完成时:从所述WCS弹出所述WCS头部的WCR;并向所述系统外部的主机处理器报告所述WCS头部的WCR完成;和C)迭代执行A、B和C。

进一步根据本发明的示例性实施方式,该方法还包括在WCS的尾部插入WCR。

仍进一步根据本发明的示例性实施方式,至少部分地基于源自所述主机处理器的请求,在所述WCS的尾部插入WCR。

另外,根据本发明的示例性实施方式,多个WCR中的至少一个由所述WCS从WCR的全局池中分配。

此外,根据本发明的示例性实施方式,存储器在队列处理逻辑外部。

进一步根据本发明的示例性实施方式,队列处理逻辑包括存储器。

仍然根据本发明的示例性实施方式,通信硬件包括总线。

另外,根据本发明的示例性实施方式,该方法还包括在所述工作队列的头部的所述WCR的完成被报告给在所述主机处理器上运行的应用。

此外,根据本发明的示例性实施方式,由包括工作执行逻辑和完成指示逻辑的工作处理逻辑来执行以下操作:所述工作执行逻辑执行与给定WCR相关联的工作单元,以及当所述工作处理逻辑已完成与所述给定WCR相关联的工作单元时,所述完成指示逻辑在所述给定WCR中设置所述完成指示符以指示与所述给定WCR相关联的工作单元已完成。

进一步根据本发明的示例性实施方式,队列处理逻辑被包括在以下之一中:网元;以及磁盘控制器;和加速器设备。

仍然根据本发明的示例性实施方式,队列处理逻辑被包括在网元中,并且所述网元包括网络接口卡(NIC)。

另外,根据本发明的示例性实施方式,要执行的工作单元包括由NIC通过硬件联网介质进行的数据传输。

此外,根据本发明的示例性实施方式,通过超时逻辑执行以下操作:在超时到期时将所述WCS头部的所述WCR的完成指示符设置为即使与所述WCS头部的所述WCR相关联的工作单元尚未完成,也指示与所述WCS头部的所述WCR相关联的工作单元也已完成。

进一步根据本发明的示例性实施方式,当在所述WCS头部的所述WCR的完成指示符被设置为指示在超时时与所述WCS头部的WCR相关联的工作单元已完成,所述WCS头部的所述WCR的完成指示符被设置为包括错误指示。

附图说明

结合附图,从下面的详细描述中将更全面地理解和了解本发明,其中:

图1是根据本发明的示例性实施方式构造和操作的、用于报告任务完成的系统的简化的部分图示的部分框图;以及

图2是图1的系统的示例性操作方法的简化流程图。

具体实施方式

通过介绍,在某些系统中,已知工作队列(WQ)是用于两个实体之间对接的结构。例如,但不限于前述的一般性,WQ是一种方法,通过该方法,在主机处理器(在本文中也可以称为“CPU”)上运行的有时称为请求实体的实体(作为非限制性示例,可以是软件实体)可以向有时被称为执行实体的硬件实体请求服务。作为非限制性示例,这种执行实体可以包括网络设备。作为进一步的非限制性示例,这样的执行实体可以包括网络接口控制器(NIC)(可以被认为是特定类型的网络设备)、磁盘控制器或加速器设备(例如,通过非限制性示例,是数据压缩或解压缩设备)。请求实体通常将工作请求(WR)推送到WQ;请求实体有时也被称为WR的生产者。WR由执行实体执行,有时被称为WR的消费者。

为了使消费者向生产者发送信号通知WR已完成,可以使用完成队列(CQ)。使用者将完成队列条目(CQE)推送到CQ。每个CQE发送信号通知一个或多个已发布到工作队列的WR的执行完成,这些WR已被处理并完成。

在Kagan等人的美国专利7,152,122中描述了上述类型的系统,该专利的公开内容通过引用合并于此。

在WR开始执行的顺序(或从WQ中提取以执行)也是执行完成的顺序的情况下,也就是说,WR相互依赖,这是因为对于执行后面的WR,通常这样的后面的WR只能在先前的WR完成之后才能完成,因此CQE将以与WQ中的WR相同的顺序推送到CQ。但是,如果每个WR的执行和完成顺序与其他WR无关,则将CQE推送到CQ中的顺序可能是“随机的”;即,没有按任何特定顺序推送CQE。

在本发明的发明人看来,以与将WR发布到WQ相同的顺序从CQ接收CQE可能有益处。在其示例性实施方式中,本发明旨在提供这种益处。

本发明的发明人认为,通常在本发明之前的现有系统中,以实际上以它们开始执行的相同顺序完成的任务发生将CQE以将相关WR推送到工作队列中的相同顺序推入完成队列。这种情况的一个非限制性示例是可靠的连接QP RDMA操作。相比之下,在这样的现有系统中,通常将以与它们开始执行的顺序不同的顺序完成的任务以它们完成的顺序(这不一定是以相关WR发布到WQ的顺序)与CQE一起报告给完成队列。CQE的这种乱序发信号可能给WR生产者带来一定的负担。首先,必须为每个WR报告CQE。由于CQE仅指示其相关WR的完成,并不表示其他WR的完成,因此每个WR需要一个CQE。在以发布WR的顺序报告CQE的情况下,表示WR完成的CQE隐式表示先前WR的完成。

WR生产者的另一个负担是WR生产者可能需要记录并跟踪已完成和发布的WR,因此生产者可以知道哪些WR可以重复使用,因为WR只有在完成后才可以回收(重用)。如本发明的某些示例性实施方式中所寻求的那样,这种负担对于按顺序的完成发信号是不存在的,因为生产者通常只需要跟随已经完成的最后一个WR,并且不需要遵循先前的WR,以便知道哪些WR可被重用。

现在参考图1,图1是根据本发明的示例性实施方式构造和操作的,用于报告任务完成的系统的简化的部分图示的部分框图。

图1的系统总体上标为100,包括主机105和网元110。在不限制本发明示例性实施方式的一般性的情况下,为了简化描述和说明,图1中示出了网元110,作为网络接口卡(NIC);应当理解,可以使用任何适当的网元,例如任何适当的NIC。此外,在不限制本发明的一般性的情况下,应当理解,网元110本身仅是图1的系统中可用的设备的一个特定示例,因为还可以使用不参与网络的设备。其他此类设备的非限制性示例包括:磁盘控制器;数据加速器设备,例如数据压缩或解压缩设备。

应当理解,虽然主机105在图1中被示为包括在系统100中,但是可以替代地在其外部,使得系统100可以替代地包括没有主机105的网元110。

网元110包括:

队列处理逻辑115;和

工作处理逻辑120。

队列处理逻辑115和工作处理逻辑120在下面更详细地描述。

网元110在图1中被示为包括工作控制结构(WCS)125,其在硬件存储器中被实例化。WCS 125可以驻留在网元110的存储器中,或者可以驻留在网元110可访问的另一个存储器中,例如,作为非限制性示例,在主机105的存储器中,如图1所示,可以通过总线130访问网元110。总线130是用于在网元110和存储器之间进行通信的通信硬件的非限制性示例。总线130可以包括例如PCIe总线或另一适当的总线。

为了简化描述和说明,图1中未明确示出网元110的存储器或主机105的存储器。应当理解,WCS 125可以驻留在其他存储器中(既不在网元110内部也不在主机105中),只要其他存储器对可访问网元110。

WCS 125包括多个工作控制记录(WCR),在图1中被示为WCR 132、WCR 134、WCR136、WCR 138、WCR 140和WCR142。可以理解,较小或较大的多个WCR实际上可以包括在WCS125中;通常,在WCS 125中包括更多的多个WCR,为简化描述,在图1中示出了较小的多个。

应当理解,在某些示例性实施方式中,各种WCR可以由WCS 125从全局池动态分配,该全局池也可用于其他工作控制结构;同样,WLC可以在适当的时候由WCR 125重新分配回全局池。在这样的示例性实施方式中,可以通过消除从“通用”存储器而不是从“专用”池中分配和释放WCR的必要性来改善图1的系统的性能。

WCR 132和WCR 142也在图1中以扩展形式示出。WCR 132包括示为设置为0(零)的完成指示符144,指示与WCR 132相关联的工作单元尚未完成。应当理解,零是任意值,并且替代地,可以使用指示与WCR 132相关联的工作单元尚未完成的任何适当值。WCR 132还包括工作指定字段146。

WCR 142还包括完成指示符148,示为设置为1(一个),指示与WCR 142相关的工作单元已经完成。将理解的是,一是任意值,并且替代地,可以使用指示与WCR 142相关联的工作单元已经完成的任何适当的值。WCR 142还包括工作指定字段150。

尽管为了简化描述而未示出,但是应当理解,通常,WCR 134、WCR 136、WCR 138和WCR 140还各自包括完成指示符和工作指定字段。

下面描述图1的系统100的示例性功能,包括如上文刚描述的完成指示符和工作指定字段的示例性使用。

主机105包括主机队列处理模块160。主机队列处理模块160处理:工作队列(WQ)165,其保存工作请求(WR,为简化描述未示出);以及完成队列(CQ)170,其保存完成队列条目(CQE,为简化描述未示出)。如本领域中已知的(并且例如,在授予Kagan等人的美国专利7,152,122中描述,其公开内容通过引用并入本文),主机队列处理模块160将WR发布到WQ165以指示将要完成工作单元(例如,通过网元)并轮询来自CQ 170的CQE,CQE(每个与先前发布的WR相关联)指示相关联的WR指示的工作单元已经完成。然而,本发明的发明人认为至少以下内容在本领域中是未知的:主机105中包括的图1所示的组件和网元110中包括的图1所示的组件之间的相互作用;以及图1所示的包括在网元110中的组件的结构和相互作用。

现在简要描述图1的系统100的示例性操作模式。

当要完成工作单元时(作为非限制性示例,当主机队列处理模块160将WR发布到WQ165时),与该工作单元相关联的WCR被推送(通常推送到WCS125的端部)。作为示例,队列处理逻辑115将WCR 132推送到WCS 125的端部;WCR 132具有完成指示符144,其指示与WCR132相关联的工作单元尚未完成。WCR 132还具有工作指定字段146,该字段指定(向工作处理逻辑120)要执行什么工作。通过特定的非限制性示例,由于在图1的示例性实施方式中,各种元件被示为包括在网元110(诸如NIC)中,因此要执行的工作可以包括发送网络数据。在其他非限制性示例中:1)在磁盘控制器中包括各种元件的情况下,要执行的工作可以包括执行从磁盘控制器控制的磁盘介质的IO READ或IO WRITE;2)在加速器设备中包括各种元件的情况下,要执行的工作可以包括在存储器中压缩数据或解压缩数据。

在工作指定字段146中指定的工作由工作处理逻辑120执行。当适当时在工作指定字段146中指定的工作已经完成时,工作处理逻辑120设置完成指示符144的值,表示工作指定字段146指定的工作已经完成。替代地,可以包括在工作处理逻辑120中或网元110中其他地方的诸如完成指示逻辑(未示出)的特定逻辑可以负责设置完成指示符144的值以指示由工作指定字段146指定的工作已经完成。

应当理解,如上所述,除了以将WCR推入WCS 125的顺序之外,可以完成在WCS 125中的各个WCR的工作指定字段中指定的工作。如上所述,为了提供按顺序发出完成信号,队列处理逻辑115可以轮询位于WCS 125的头部的WCR。替代地,队列处理逻辑115可以被配置为检测WCS 125中的“最旧的”WCR(WCR在WCS 125的头部)具有完成指示符144,指示与该WCR相关的工作已经完成,并且可能在那时(除了为CQ 170中的“最旧”WCR生成CQE之外)还要检查WCS 125中的下一个WCR。简而言之,仅当WCS 125头部的WCR的完成指示符指示WCS 125头部的WCR的工作指定字段所指定的工作已经完成时,队列处理逻辑将WCR从WCS 125的头部弹出,并指示工作已经完成(例如,通过向主机的CQ 170发送CQE)。

具体地,在图1中,示出了在WCS 125的头部的WCR 142,其中完成指示符148被设置为1(一个完成),以示出刚刚描述的情况。

本领域技术人员将理解,即使当由WCR(WCR 132)的工作指定字段指定的工作单元不是按顺序完成(例如,WCR 134、WCR 136、WCR 138、WCR 140和WCR 142)时,图1的系统100的上述示例性功能也将导致按顺序发出完成信号。

应当理解,可能出现这样的情况,其中由于某些系统问题,由特定WCR指定的工作单元“从未”完成,或者在很长的时间内没有完成。在这种情况下,“长”的定义将取决于实际系统的许多参数。为了在这种情况下防止图1的系统“死机”,可以使用超时(例如,通过队列处理逻辑115),以便在超时到期时,WCS头部的WCR的完成指示符在即使相关工作实际上尚未完成时仍被设置为“完成”;在这种情况下,完成指示符还可以可选地设置有错误指示,以发信号通知发生错误的适当系统组件(例如,向主机105中包括的未示出的组件)。

现在参考图2,图2是图1的系统的示例性操作方法的简化流程图。

图2的示例性方法包括以下步骤,应当理解,示例性方法中也可以包括未在图2中示出的附加的可选步骤。作为非限制性示例,可以通过图1的队列处理逻辑115来执行图2的示例性方法的步骤。参考图1的上述描述将更好地理解图2的示例性方法。

在工作请求(WR)开始时(或在获取WR以执行时),对应于WR的工作控制请求(WCR)通过通信硬件被推送到工作控制结构(WCS)(步骤210)。WCS可能在队列处理逻辑外部;在替代示例性实施方式中,WCS可以被包括在队列处理逻辑中。

该方法中的以下步骤也通过通信硬件执行。

A)检查在WCS头部的WCR(步骤220)。

B)当WCS头部的WCR的完成指示符指示与WCS头部的WCR相关联的工作单元已经完成时:WCS头部的WCR从WCS中弹出;通常向外部主机处理器报告在WCS头部的WCR的完成(步骤230)。

C)A、B和C被迭代执行(步骤240)。

应当理解,如果需要,本发明的软件组件可以以ROM(只读存储器)形式实现。如果需要,通常可以使用常规技术在硬件中实现软件组件。还应当理解,软件组件可以例如作为计算机程序产品或在有形介质上被实例化。在某些情况下,可以将软件组件实例化为可由适当的计算机解释的信号,尽管在本发明的某些实施方式中可以排除这样的实例。

应当理解,为清楚起见,在分开的实施方式的上下文中描述的本发明的各种特征也可以在单个实施方式中组合提供。相反,为简洁起见,在单个实施方式的上下文中描述的本发明的各种特征也可以单独地或以任何合适的子组合来提供。

本领域技术人员将认识到,本发明不限于上文已经具体示出和描述的内容。相反,本发明的范围由所附权利要求书及其等同物限定。

相关技术
  • 一种用于分析用于任务完成的捕获的信息的方法、系统及可读存储设备
  • 任务完成系统
技术分类

06120112481572