多线程化分组处理的制作方法

文档序号:7791239阅读:274来源:国知局
多线程化分组处理的制作方法
【专利摘要】公开一种用于并行处理对顺序敏感的数据分组的系统。来自多个依次排序的数据分组的第一数据分组被引向第一分流引擎。来自多个依次排序的数据分组的第二数据分组被引向第二分流引擎,其中第二数据分组依次跟随第一数据分组。第二分流引擎从第一分流引擎接收信息,其中该信息反映第一分流引擎正在处理第一数据分组。基于在第二分流引擎接收的信息,第二分流引擎处理第二数据分组,从而在第一分流引擎对第一数据分组的处理中的关键事件在第二分流引擎对第二数据分组的处理中的关键事件之前出现。
【专利说明】多线程化分组处理

【技术领域】
[0001] 本发明总体上涉及计算机联网,并且更具体地涉及利用多个分组处理引擎来多线 程化接收的分组。

【背景技术】
[0002] 高性能联网不断面临挑战:本地联网技术正在比处理器和存储器速度更快地变得 更快。每当以太网技术提供另一速度增量时,联网开发者必须发现用于使系统的其余部分 能够跟进--甚至在快速现代硬件上--的方式。
[0003] 联网设备通常利用缓冲器、即在联网设备中暂时存储数据的存储器区域以补偿在 集中器、复用器、交换机、路由器等上的传入(或者传出)端口的拥塞。例如,如果传入流量 的水平超过交换机的资源,则在传入交换机端口的缓冲器可以暂时存储过量流量直至交换 机具有用于处理流量的充分资源。缓冲器也可以服务于暂时存储分组数据以在下游设备未 在可接受的时间段内接收分组而无错误的情况下允许重传。
[0004] 接收计算机系统的网络接口硬件通常在分组内容被写入到系统存储器之前向缓 冲器中接收分组。随着处理开销变成显著,为了减少缓冲器溢出可能性,可以向一个或者多 个分流引擎发送在缓冲器中的分组用于处理和向存储器中写入。一个或者多个分流引擎经 常提供特征、比如解析分组首部、校验和计算、首部分离和分散-聚集存储分组。
[0005] 可以运用多个分流引擎以并行处置来自不同逻辑端口、线程或者其它连接的分 组。在这样的系统中,分组处理可以称为"多线程化"


【发明内容】

[0006] 本发明的一个实施例的方面公开一种用于并行处理对顺序敏感的数据分组的方 法和系统。向网络接口设备中接收多个依次排序的数据分组。网络接口设备将来自多个依 次排序的数据分组的第一数据分组引向第一分流引擎。网络接口设备将来自多个依次排 序的数据分组的第二数据分组引向第二分流引擎,其中第二数据分组依次跟随第一数据分 组。第二分流引擎从第一分流引擎接收信息,其中该信息反映第一分流引擎正在处理第一 数据分组。基于在第二分流引擎接收的信息,第二分流引擎处理第二数据分组,从而在第一 分流引擎对第一数据分组的处理中的关键事件在第二分流引擎对第二数据分组的处理中 的关键事件之前出现。
[0007] 从第一方面来看,本发明提供一种用于并行处理对顺序敏感的数据分组的方法。 该方法包括以下步骤:向网络接口设备中接收多个依次排序的数据分组;网络接口设备将 来自多个依次排序的数据分组的第一数据分组引向第一分流引擎;网络接口设备将来自多 个依次排序的数据分组的第二数据分组引向第二分流引擎,其中第二数据分组依次跟随第 一数据分组;第二分流引擎从第一分流引擎接收信息,其中信息反映第一分流引擎正在处 理第一数据分组;并且基于在第二分流引擎接收的信息,第二分流引擎处理第二数据分组, 从而在第一分流引擎对第一数据分组的处理中的关键事件在第二分流引擎对第二数据分 组的处理中的关键事件之前出现。
[0008] 优选地,从第一分流引擎接收的信息包括来自以下各项的一项或者多项:基于第 一分流引擎正在处理的第一数据分组的大小的、指向存储器中的指针的预测的位置、第一 分流引擎对第一数据分组的处理的状态指示和序列号。
[0009] 优选地,状态指示包括第一分流引擎是否已经对第一数据分组完成有效性校验、 是否已经到达在处理中的校验点、是否已经检测到致命错误、是否已经完成第一数据分组 的处理或者前述各项的组合。
[0010] 优选地,在第一数据分组和第二数据分组的处理中的关键事件包括开始处理相应 第一数据分组或者第二数据分组、完成有效性校验、通过在处理中的校验点和向存储器中 写入相应第一数据分组或者第二数据分组。
[0011] 优选地,第二分流引擎处理第二数据分组、从而在第一分流引擎对第一数据分组 的处理中的关键事件在第二分流引擎对第二数据分组的处理中的关键事件之前出现的步 骤包括以下步骤中的一个或者多个步骤:第二分流引擎在从第一分流引擎接收已经对第一 数据分组完成有效性校验的通知之后开始处理第二数据分组;第二分流引擎在从第一分流 引擎接收第一分流引擎已经在处理第一数据分组时通过对应校验点的通知之后继续处理 第二数据分组通过在处理中的校验点;以及第二分流引擎在第一分流引擎已经向存储器中 写入第一数据分组的通知之后向存储器中写入第二数据分组。
[0012] 优选地,从第一分流引擎接收的信息包括致命错误在第一数据分组的处理中出现 的通知,并且响应于接收致命错误出现的通知,第二分流引擎丢弃第二数据分组。
[0013] 优选地,该方法还包括以下步骤:第一分流引擎基于第一分流引擎正在处理的第 一数据分组的大小计算指向存储器中的指针的预测的位置;并且第一分流引擎输出预测的 位置。
[0014] 优选地,该方法还包括以下步骤:第一分流引擎确定第一数据分组尚未通过有效 性测试并且作为响应为第二数据分组重新计算指向存储器中的指针的预测的位置;第一分 流引擎输出重新计算的预测的位置;并且第一分流引擎丢弃第一数据分组。
[0015] 优选地,该方法还包括以下步骤:第一分流引擎确定致命错误已经在第一数据分 组的处理期间出现;并且第一分流引擎输出致命错误的通知。
[0016] 优选地,该方法还包括以下步骤:第一分流引擎完成第一数据分组的处理;第一 分流引擎输出已经处理第一数据分组的通知;并且第一分流引擎向存储器中写入来自第一 数据分组的信息。
[0017] 优选地,在处理中的校验点包括以下各项中的一项或者多项:向软件部件发送中 断和更新情境存储设施。
[0018] 优选地,第一数据分组和第二数据分组来自相同逻辑端口、线程或者输入连接。
[0019] 从第二方面来看,本发明提供一种用于并行处理对顺序敏感的数据分组的系统, 该系统包括:用于经由网络连接接收数据分组的缓冲器;可以从缓冲器被指派数据分组的 多个分流引擎,多个分流引擎中的每个分流引擎能够处理数据分组并且向系统存储器中存 储来自数据分组的信息;在来自多个分流引擎的至少第一分流引擎和第二分流引擎之间的 通信接口,其中通信接口允许在第一分流引擎输出的信号由第二分流引擎接收;其中系统 可操作为:向缓冲器中接收多个数据分组;将来自多个数据分组的第一数据分组引向第一 分流引擎;将来自多个数据分组的第二数据分组引向第二分流引擎,其中第二数据分组依 次跟随第一数据分组;在第二分流引擎从第一分流引擎接收信息,其中信息反映第一分流 引擎正在处理第一数据分组;并且基于在第二分流引擎接收的信息,在第二分流引擎处理 第二数据分组,从而在第一分流引擎对第一数据分组的处理中的关键事件在第二分流引擎 对第二数据分组的处理中的关键事件之前出现。
[0020] 优选地,从第一分流引擎接收的信息包括来自以下各项的一项或者多项:基于第 一分流引擎正在处理的第一数据分组的大小的、指向存储器中的指针的预测的位置、第一 分流引擎对第一数据分组的处理的状态指示和序列号。
[0021] 优选地,状态指示包括第一分流引擎是否已经对第一数据分组完成有效性校验、 是否已经到达在处理中的校验点、是否已经检测到致命错误、是否已经完成第一数据分组 的处理或者前述各项的组合。
[0022] 优选地,在第一数据分组和第二数据分组的处理中的关键事件包括开始处理相应 第一数据分组或者第二数据分组、完成有效性校验、通过在处理中的校验点和向存储器中 写入相应第一数据分组或者第二数据分组。
[0023] 优选地,该系统可操作为第二分流引擎处理第二数据分组,从而在第一分流引擎 对第一数据分组的处理中的关键事件在第二分流引擎对第二数据分组的处理中的关键事 件之前出现。该系统可操作为:在从第一分流引擎接收已经对第一数据分组完成有效性校 验的通知之后在第二分流引擎开始处理第二数据分组;在从第一分流引擎接收第一分流引 擎已经在处理第一数据分组时通过对应校验点的通知之后在第二分流引擎继续处理第二 数据分组通过在处理中的校验点;并且在第一分流引擎已经向存储器中写入第一数据分组 的通知之后在第二分流引擎向存储器中写入第二数据分组。
[0024] 优选地,从第一分流引擎接收的信息包括致命错误在第一数据分组的处理中出现 的通知,并且响应于接收致命错误出现的通知,系统可操作为丢弃第二数据分组。
[0025] 优选地,该系统还可操作为:基于第一分流引擎正在处理的第一数据分组的大小 为第二数据分组计算指向存储器中的指针的预测的位置;并且在第一分流引擎输出预测的 位置。
[0026] 优选地,该系统还可操作为:在第一分流引擎确定第一数据分组尚未通过有效性 测试并且作为响应为第二数据分组重新计算指向存储器中的指针的预测的位置;在第一分 流引擎输出重新计算的预测的位置;并且丢弃第一数据分组。
[0027] 优选地,该系统还可操作为:确定致命错误已经在第一数据分组的处理期间出现; 并且在第一分流引擎输出致命错误的通知。
[0028] 优选地,该系统还可操作为:在第一分流引擎完成第一数据分组的处理;在第一 分流引擎输出已经处理第一数据分组的通知;并且向存储器中写入来自第一数据分组的信 息。
[0029] 优选地,在处理中的校验点包括以下各项中的一项或者多项:向软件部件发送中 断和更新情境存储设施。
[0030] 优选地,第一数据分组和第二数据分组来自相同逻辑端口、线程或者输入连接。
[0031] 从第三方面来看,本发明提供一种包括计算机程序代码的计算机程序,该计算机 程序代码存储于计算机可读介质上以在向计算机系统中加载并且在其上执行时使计算机 系统执行根据第一方面的方法的所有步骤。

【专利附图】

【附图说明】
[0032] 现在将参照如附图中所示本发明的实施例仅通过示例描述本发明,在附图中:
[0033] 图1图示根据本发明的一个示例实施例的联网数据处理系统;
[0034] 图2描绘根据一个示例实施例的网络适配器的部件处理数据分组的示例场景;
[0035] 图3图示在图2中描述的处理序列的后续状态;以及
[0036] 图4描绘根据一个示例实施例的用于对顺序敏感的数据分组的多线程化处理。

【具体实施方式】
[0037] 现在将参照各图具体描述本发明。图1图示根据本发明的一个实施例的大体上表 示为100的联网数据处理系统。数据处理系统100包括连接到网络104的计算机系统102。 网络104代表通信信道互连的计算机和设备的汇集,这些通信信道有助于在互连的计算机 和设备之间的通信和资源共享。通信信道可以包括有线、无线通信链路或者光纤线缆。计 算机系统102可以是能够通过网络与另一计算设备通信的任何计算设备、比如服务器计算 机、客户端计算机、笔记本计算机、膝上型计算机、平板计算机、手持设备或者智能电话、瘦 客户端、路由器、集线器或者任何其它电子设备或者计算系统。
[0038] 网络适配器106允许计算机系统102通过网络104通信。在另一实施例中,可以 使用任何网络接口设备。网络适配器106向缓冲器108中接收传入数据分组。在分组到达 时,派发器110向分组处理引擎112U14或者116之一指派每个分组。派发器110是网络 适配器106的部件,该部件包括用于确定分组处理引擎何时变成可用并且将在缓冲器108 中的下一分组引向可用引擎的控制逻辑。分组处理引擎112U14和116中的每个分组处理 引擎是优选地在网络适配器106上的分流引擎,该分流引擎包括用于处理接收的数据分组 并且向系统存储器中写入来自数据分组的信息的控制逻辑。控制逻辑是为了执行具体功能 而需要的步骤序列并且在该优选实施例中通过固件、通常为硬接线的计算机电路和其它硬 件或者备选地通过在只读存储器(ROM)上存储并且由一个或者多个控制电路执行的低级 程序指令来实施。
[0039] 本发明的实施例认识在希望保持接收的分组的顺序时、例如在从相同逻辑端口、 线程或者连接接收分组时这样保持顺序时的多线程化分组处理难度。接口 118提供在分组 处理引擎112U14和116之间的通信接口从而允许并行处理对顺序敏感的数据分组。在描 绘的实施例中,分组处理引擎112U14和116中的每个分组处理引擎的输出端口连接到来 自引擎112、114和116的其它分组处理引擎中的每个分组处理引擎的输入端口。在一个备 选实施例中,接口 118可以使通信限于所有分组处理引擎的某个子集。本领域普通技术人 员将认识在各种实施例中,计算机系统102可以包含任何数目的分组处理引擎。接口 118 可以用来传达多个处理引擎正在处理的来自相同逻辑端口、线程或者连接的分组的序列和 状态,从而可以运用并行处理并且维持顺序。
[0040] 在分组处理引擎处理数据分组时,处理引擎按照指引如何处置该处理的相关条件 集合、即情境信息进行该处理。例如处理引擎可能需要在存储器中的如下位置,它将在处理 之后在该位置写入在数据分组中的信息。相似地,处理引擎可能需要用于某个类型的数据 分组的系统权限或者可以从在为具体线程而接收的数据分组序列中的顺序受益。计算机系 统102在情境存储设施、例如高速缓存存储器中积累这样的情境信息,并且处理引擎可以 从情境存储设施接收情境信息。
[0041] 在该优选实施例中,随着在计算机系统102接收数据分组,可以分配在系统存储 器中的存储器缓冲器列表以接收数据分组。向情境存储装置120添加指向每个存储器缓冲 器列表中的指针和在每个列表中的可用缓冲器的计数。情境存储装置120可以维持指针的 当前状态和计数。在接收用于具体线程的数据分组时,情境存储装置可以向正在处理数据 分组的分组处理引擎传达指向为具体线程而分配的存储器中的指针的当前位置并且可以 传达可用缓冲器的计数。此外,在各种实施例中,情境存储装置120也可以向分组处理引擎 传达其它情境信息、例如权限。在分组处理引擎112U14或者116已经完成处理数据分组 时,在指针指定的位置向系统存储器122中写入来自数据分组的信息。随后将指针移向在 列表中的下一可用缓冲器,并且在情境存储装置120中更新该更新的指针位置和任何新计 数。
[0042] 在本发明的一个优选实施例中,第一个开始处理用于逻辑端口、线程或者连接的 数据分组的分组处理引擎视为主处理引擎并且从情境存储装置120接收情境信息。在另一 分组处理引擎已经正在处理用于相同逻辑端口、线程或者连接的数据分组之时被指派数据 分组的分组处理引擎视为次处理引擎。次处理引擎经由接口 118从主处理引擎接收情境信 息(主处理引擎的状态、权限和预测的指针位置)。次处理引擎直至接收主处理引擎已经向 存储器中写入的通知才向存储器中写入。
[0043] 图2描绘根据一个示例实施例的网络适配器106的部件正在处理数据分组的示例 场景。
[0044] 在实施为先入先出(FIFO)队列的缓冲器108接收线程A的分组1、线程B的分组 1和线程A的分组2。派发器110发现这里描绘为处理引擎116的下一可用分组处理引擎 和指引将由处理引擎116处理的线程A的分组。由于线程A的分组1是待处理的线程A的 第一分组,所以处理引擎116是主处理引擎并且从情境存储装置120至少读入指向用于线 程A的存储器列表中的指针(用粗体描绘连接)。
[0045] 派发器110向这里描绘为处理引擎112的下一可用分组处理引擎指派线程B的分 组1这下一数据分组。无其它分组处理引擎正在处理来自线程B的数据分组,因此处理引 擎112也是主处理引擎并且从情境存储装置120至少读入指向用于线程B的存储器列表中 的指针。
[0046] 最后,派发器110向处理引擎114指派线程A的分组2。由于线程A的分组1正 在由处理引擎116并行处理,所以处理引擎114是次处理引擎。充当主处理引擎的处理引 擎116基于处理引擎116当前正在处理的数据分组的大小为下一依次分组预测指向用于线 程A的存储器列表中的指针的位置。在处理引擎116的输出端口上放置情境信息,该情境 信息至少包括指向存储器中的指针的预测的位置。作为次处理引擎的处理引擎114从处理 引擎116这一主处理引擎而不是情境存储装置120读取情境信息(用粗体描绘连接)。处 理引擎116也可以输出状态更新,从而次处理引擎可以确定它们可以继续处理它们自己的 数据分组有多远。
[0047] 图3图示在图2中描绘的处理序列的后续状态。在处理引擎116已经完成线程A 的分组1之后,处理引擎114变成新的主引擎。派发器110向现在可用的处理引擎116指 派线程A的分组3这另一个被缓冲器108接收的分组。处理引擎116现在是处理引擎114 的次处理引擎。处理引擎114为下一依次分组预测情境信息、例如指向存储器中的指针将 在线程A的分组2已经完成处理时指向何处并且在处理引擎116可访问的输出端口上放置 情境信息。
[0048] 图4描绘根据一个示例实施例的用于顺序特有的数据分组的多线程化处理的更 具体逻辑流程(控制逻辑400)。
[0049] 控制逻辑400向缓冲器中接收数据分组(步骤402),并且对数据分组可以被分流 到的可用处理引擎定位(步骤404)。在步骤406中,控制逻辑400确定另一处理引擎是否 正在处理来自相同线程(或者需要在数据分组之间的顺序特有性的其它逻辑连接)的数据 分组(判决406)。
[0050] 响应于确定无来自相同线程的其它数据分组正在被处理(判决406的否分支),控 制逻辑400向可用处理引擎指派数据分组并且标记或者指明处理引擎为主处理引擎(步骤 408)。在一个实施例中,向处理引擎传递它是主处理引擎的标志值。在第二实施例中,可以 向处理引擎传递可以从其读取情境信息的地址,该地址是情境存储设施的地址,该情境存 储设施例如包含指向为接收的数据而分配的存储器中的指针、在分配的存储器中的项目的 当前计数、序列顺序、各种权限等(例如,情境存储装置120)。
[0051] 在步骤410中,控制逻辑400从情境存储装置向处理引擎中读取清净之并且可以 开始处理数据分组。控制逻辑400为后续依次数据分组计算和输出情境值(步骤412)。例 如基于正在处理的数据分组的大小,控制逻辑400可以预测指向存储器中的指针将在向存 储器中写入数据分组之后指向何处。可以在处理引擎的一个或者多个输出端口上放置预测 的指针值。此外,处理引擎可以输出应当处理的下一依次数据分组、各种权限和它自己的处 理序列的当前状态。
[0052] 控制逻辑400在处理引擎中执行数据分组的有效性校验(步骤414)。通常,在数 据分组中的错误造成丢弃数据分组并且继续处理下一数据分组。处理引擎例如通过计算校 验和来执行一个或者多个有效性测试并且确定错误是否存在于数据分组中(判决416)。
[0053] 如果确定数据分组无效(判决416的否分支),则控制逻辑400修改处理引擎输出 的情境值以假如将出现分组丢弃则指示正确值。例如不会为下一数据分组推进指向存储器 中的指针。在修改情境值之后,控制逻辑400丢弃数据分组(步骤420)并且输出处理引擎 已经完成它的有效性校验的指示(步骤422),从而可以处理后续数据分组。
[0054] 在另一方面,如果确定数据分组有效(判决416的是分支),则控制逻辑400输出 处理引擎已经完成它的有效性校验的指示(步骤424),从而可以基于原来计算的情境值处 理(来自步骤412)后续依次数据分组。
[0055] 在有效性校验之后,控制逻辑400确定处理引擎是否引起致命错误(判决426)。 如果检测到致命错误(判决426的是分支),则处理引擎输出指明错误的指示(步骤428)。 如果未检测到致命错误(判决426的否分支),则控制逻辑400确定数据分组的处理是否 已经通过约定校验点(步骤430)。在分组处理中的某些点,处理后续数据分组的次处理引 擎直至主处理引擎已经完成相同动作才可以执行某些动作。例如在处理数据分组的过程期 间,处理引擎可能必须向各种软件部件发送中断。这一动作可能需要在次处理引擎发送中 断之前由主处理引擎完成。作为另一示例,处理引擎在处理数据分组时更新情境存储设施。 情境存储设施应当在情境处理设施由处理后续第二数据分组的处理引擎更新之前由处理 第一数据分组的处理引擎更新。
[0056] 如果控制逻辑400确定已经通过这样的校验点(判决430的是分支),则控制逻辑 400从处理引擎输出通过校验点的通知(步骤432)。在步骤432中输出通知之后或者备选 地在确定尚未通过校验点(判决430的否分支)之后,控制逻辑400确定处理引擎是否已 经完成处理数据分组(判决434)。如果处理引擎尚未完成处理数据分组(判决434的否分 支),则处理引擎继续在经过步骤426-434迭代地循环之时处理数据分组以确定是否已经 检测到致命错误、是否已经完成任何校验点和处理引擎是否已经完成数据分组的处理。
[0057] 如果处理引擎已经完成处理数据分组(判决434的是分支),则控制逻辑400从处 理引擎输出完成的指示(步骤436)并且在一个优选实施例中利用从情境存储设施向处理 引擎传递的指向存储器中的指针来向存储器中写入数据分组的信息(步骤438)。
[0058] 回顾判决406,如果确定另一处理引擎正在处理相同线程的数据分组(判决406的 是分支),则控制逻辑400向可用处理引擎指派数据分组、标记或者指明处理引擎为次并且 指示主处理引擎(步骤440)。在一个实施例中,向处理引擎传递指示它是次处理引擎的标 志值。在第二实施例中,传递从其读取情境信息的地址,该地址是主处理引擎的一个或者多 个输出的地址。在这样的实施例中,正在传递的地址可以作用为指明处理引擎为次并且指 示主处理引擎。
[0059] 控制逻辑400从主处理引擎向次处理引擎中读取情境值(步骤442)。情境值可以 包括序列信息、计算或者预测的存储器指针位置、各种权限、主处理引擎的状态等。基于接 收的情境值,控制逻辑400确定主处理引擎是否已经为主处理引擎正在处理的数据分组完 成验证校验(判决444)。
[0060] 如果主处理引擎尚未完成验证校验(判决444的否分支),则次处理引擎不会开始 处理它自己的数据分组并且将继续从主处理引擎读入值直至它接收已经完成校验的指示。 如果已经完成验证校验(判决444的是分支),则控制逻辑400开始在次处理引擎中处理数 据分组(步骤446)。
[0061] 控制逻辑400确定是否已经到达约定校验点(判决448),次处理引擎在该约定校 验点不能在主处理引擎已经通过对应校验点之前执行动作或者继续处理数据分组。如果已 经到达这样的校验点(判决4448的是分支),则控制逻辑400确定主处理引擎是否已经通 过校验点(判决450)。如果主处理引擎尚未通过校验点(判决450的否分支),则处理未 继续并且控制逻辑400继续校验主处理引擎通过校验点。如果主处理引擎已经通过约定校 验点(判决450的是分支),或者备选地,如果未到达校验点(判决448的否分支),则控制 逻辑400确定是否已经检测到来自主处理引擎的任何致命错误(判决452)。
[0062] 如果次处理引擎未接收主处理引擎检测到致命错误的指示(判决452的是分支), 则次处理引擎通过未通知任何软件和未向情境存储设施存储回情境来静默地终止处理它 自己的数据分组。如果尚未接收致命错误的指示(判决452的否分支),则控制逻辑400确 定次处理引擎是否已经完成数据分组的处理(判决454)。
[0063] 如果次处理引擎尚未完成处理数据分组(判决454的否分支),则次处理引擎继续 在经过步骤448-454迭代地循环之时处理数据分组以确定主处理引擎是否已经通过次处 理引擎到达的任何校验点、是否已经在主处理引擎中检测到致命错误和次处理引擎是否已 经完成数据分组的处理。
[0064] 如果次处理引擎已经完成处理数据分组(判决454的是分支),则控制逻辑400确 定主处理引擎是否已经完成处理它自己的数据分组(判决456)而如果不是(判决456的 否分支)则等待主处理引擎完成它的处理。如果主处理引擎已经完成(判决456的是分 支),则控制逻辑400在一个优选实施例中利用从主处理引擎向次处理引擎传递的指向存 储器中的指针来向存储器写入来自次处理引擎正在处理的数据分组的信息。
[〇〇65] 基于前文,已经公开一种用于对顺序敏感的数据分组执行多线程化处理的方法和 系统。然而可以进行许多修改和替换而未脱离本发明的范围。就这一点而言,在流程图或者 框图中的每个块可以代表用于实施指定的逻辑功能的控制逻辑模块、段或者部分。也应当 指出在一些备选实现方式中,在块中指出的功能可以未按照在各图中指出的顺序出现。因 此,已经通过示例而非限制来公开本发明。
【权利要求】
1. 一种用于并行处理对顺序敏感的数据分组的方法,所述方法包括以下步骤: 向网络接口设备中接收多个依次排序的数据分组; 所述网络接口设备将来自所述多个依次排序的数据分组的第一数据分组引向第一分 流引擎; 所述网络接口设备将来自所述多个依次排序的数据分组的第二数据分组引向第二分 流引擎,其中所述第二数据分组依次跟随所述第一数据分组; 所述第二分流引擎从所述第一分流引擎接收信息,其中所述信息反映所述第一分流引 擎正在处理所述第一数据分组;以及 基于在所述第二分流引擎接收的所述信息,所述第二分流引擎处理所述第二数据分 组,从而在所述第一分流引擎对所述第一数据分组的所述处理中的关键事件在所述第二分 流引擎对所述第二数据分组的所述处理中的关键事件之前出现。
2. 根据权利要求1所述的方法,其中从所述第一分流引擎接收的所述信息包括来自以 下各项的一项或者多项: 基于所述第一分流引擎正在处理的所述第一数据分组的大小的、指向存储器中的指针 的预测的位置、所述第一分流引擎对所述第一数据分组的处理的状态指示和序列号。
3. 根据权利要求2所述的方法,其中所述状态指示包括所述第一分流引擎是否已经对 所述第一数据分组完成有效性校验、是否已经到达在处理中的校验点、是否已经检测到致 命错误、是否已经完成所述第一数据分组的处理或者前述各项的组合。
4. 根据任一前述权利要求所述的方法,其中在所述第一数据分组和第二数据分组的所 述处理中的所述关键事件包括: 开始处理所述相应第一数据分组或者第二数据分组、完成有效性校验、通过在处理中 的校验点和向存储器中写入所述相应第一数据分组或者第二数据分组。
5. 根据任一前述权利要求所述的方法,其中所述第二分流引擎处理所述第二数据分 组、从而在所述第一分流引擎对所述第一数据分组的所述处理中的关键事件在所述第二分 流引擎对所述第二数据分组的所述处理中的关键事件之前出现的所述步骤包括以下步骤 中的一个或者多个步骤: 所述第二分流引擎在从所述第一分流引擎接收已经对所述第一数据分组完成有效性 校验的通知之后开始处理所述第二数据分组; 所述第二分流引擎在从所述第一分流引擎接收所述第一分流引擎已经在处理所述第 一数据分组时通过对应校验点的通知之后继续处理所述第二数据分组通过在处理中的校 验点;以及 所述第二分流引擎在所述第一分流引擎已经向存储器中写入所述第一数据分组的通 知之后向存储器中写入所述第二数据分组。
6. 根据任一前述权利要求所述的方法,其中从所述第一分流引擎接收的所述信息包括 致命错误在所述第一数据分组的所述处理中出现的通知,并且响应于接收所述致命错误出 现的所述通知,所述第二分流引擎丢弃所述第二数据分组。
7. 根据任一前述权利要求所述的方法,还包括以下步骤: 所述第一分流引擎基于所述第一分流引擎正在处理的所述第一数据分组的大小计算 指向存储器中的指针的预测的位置;以及 所述第一分流引擎输出所述预测的位置。
8. 根据权利要求7所述的方法,还包括以下步骤: 所述第一分流引擎确定所述第一数据分组尚未通过有效性测试并且作为响应为所述 第二数据分组重新计算指向存储器中的指针的所述预测的位置; 所述第一分流引擎输出所述重新计算的预测的位置;以及 所述第一分流引擎丢弃所述第一数据分组。
9. 根据权利要求1至7中的任一权利要求所述的方法,还包括以下步骤: 所述第一分流引擎确定致命错误已经在所述第一数据分组的处理期间出现;以及 所述第一分流引擎输出所述致命错误的通知。
10. 根据权利要求1至7中的任一权利要求所述的方法,还包括以下步骤: 所述第一分流引擎完成所述第一数据分组的处理; 所述第一分流引擎输出已经处理所述第一数据分组的通知;以及 所述第一分流引擎向存储器中写入来自所述第一数据分组的信息。
11. 根据权利要求4所述的方法,其中在处理中的所述校验点包括以下各项中的一项 或者多项: 向软件部件发送中断和更新情境存储设施。
12. 根据任一前述权利要求所述的方法,其中所述第一数据分组和第二数据分组来自 相同逻辑端口、线程或者输入连接。
13. -种用于并行处理对顺序敏感的数据分组的系统,所述系统包括: 用于经由网络连接接收数据分组的缓冲器; 能够从所述缓冲器被指派数据分组的多个分流引擎,所述多个分流引擎中的每个分流 引擎能够处理数据分组并且向系统存储器中存储来自数据分组的信息; 在来自所述多个分流引擎的至少第一分流引擎和第二分流引擎之间的通信接口,其中 所述通信接口允许在所述第一分流引擎输出的信号由所述第二分流引擎接收; 其中所述系统可操作为: 向所述缓冲器中接收多个数据分组; 将来自所述多个数据分组的第一数据分组引向所述第一分流引擎; 将来自所述多个数据分组的第二数据分组引向所述第二分流引擎,其中所述第二数据 分组依次跟随所述第一数据分组; 在所述第二分流引擎从所述第一分流引擎接收信息,其中所述信息反映所述第一分流 引擎正在处理所述第一数据分组;以及 基于在所述第二分流引擎接收的所述信息,在所述第二分流引擎处理所述第二数据分 组,从而在所述第一分流引擎对所述第一数据分组的所述处理中的关键事件在所述第二分 流引擎对所述第二数据分组的所述处理中的关键事件之前出现。
14. 根据权利要求13所述的系统,其中从所述第一分流引擎接收的所述信息包括来自 以下各项的一项或者多项: 基于所述第一分流引擎正在处理的所述第一数据分组的大小的、指向存储器中的指针 的预测的位置、所述第一分流引擎对所述第一数据分组的处理的状态指示和序列号。
15. 根据权利要求14所述的系统,其中所述状态指示包括所述第一分流引擎是否已经 对所述第一数据分组完成有效性校验、是否已经到达在处理中的校验点、是否已经检测到 致命错误、是否已经完成所述第一数据分组的处理或者前述各项的组合。
16. 根据权利要求13至15中的任一权利要求所述的系统,其中在所述第一数据分组和 第二数据分组的所述处理中的所述关键事件包括: 开始处理所述相应第一数据分组或者第二数据分组、完成有效性校验、通过在处理中 的校验点和向存储器中写入所述相应第一数据分组或者第二数据分组。
17. 根据权利要求13至16中的任一权利要求所述的系统,其中所述系统可操作为所述 第二分流引擎处理所述第二数据分组、从而在所述第一分流引擎对所述第一数据分组的所 述处理中的关键事件在所述第二分流引擎对所述第二数据分组的所述处理中的关键事件 之前出现的所述步骤包括所述系统可操作为: 在从所述第一分流引擎接收已经对所述第一数据分组完成有效性校验的通知之后在 所述第二分流引擎开始处理所述第二数据分组; 在从所述第一分流引擎接收所述第一分流引擎已经在处理所述第一数据分组时通过 对应校验点的通知之后在所述第二分流引擎继续处理所述第二数据分组通过在处理中的 校验点;以及 在所述第一分流引擎已经向存储器中写入所述第一数据分组的通知之后在所述第二 分流引擎向存储器中写入所述第二数据分组。
18. 根据权利要求13至17中的任一权利要求所述的系统,其中从所述第一分流引擎接 收的所述信息包括致命错误在所述第一数据分组的所述处理中出现的通知,并且响应于接 收所述致命错误出现的所述通知,所述系统可操作为丢弃所述第二数据分组。
19. 根据权利要求13至18中的任一权利要求所述的系统,其中所述系统还可操作为: 基于所述第一分流引擎正在处理的所述第一数据分组的大小为所述第二数据分组计 算指向存储器中的指针的预测的位置;以及 在所述第一分流引擎输出所述预测的位置。
20. 根据权利要求19所述的系统,其中所述系统还可操作为: 在所述第一分流引擎确定所述第一数据分组尚未通过有效性测试并且作为响应为所 述第二数据分组重新计算指向存储器中的指针的所述预测的位置; 在所述第一分流引擎输出所述重新计算的预测的位置;以及 丢弃所述第一数据分组。
21. 根据权利要求13至19中的任一权利要求所述的系统,其中所述系统还可操作为: 确定致命错误已经在所述第一数据分组的处理期间出现;以及 在所述第一分流引擎输出所述致命错误的通知。
22. 根据权利要求13至19中的任一权利要求所述的系统,其中所述系统还可操作为: 在所述第一分流引擎完成所述第一数据分组的处理; 在所述第一分流引擎输出已经处理所述第一数据分组的通知;以及 向存储器中写入来自所述第一数据分组的信息。
23. 根据权利要求16所述的系统,其中在处理中的所述校验点包括以下各项中的一项 或者多项: 向软件部件发送中断和更新情境存储设施。
24. 根据权利要求13至23中的任一权利要求所述的系统,其中所述第一和第二数据分 组来自相同逻辑端口、线程或者输入连接。
25. -种包括计算机程序代码的计算机程序,所述计算机程序代码存储于计算机可读 介质上以在向计算机系统中加载并且在其上执行时使所述计算机系统执行根据权利要求1 至12中的任一权利要求所述的方法的所有步骤。
【文档编号】H04L12/70GK104094558SQ201380008187
【公开日】2014年10月8日 申请日期:2013年2月15日 优先权日:2012年2月29日
【发明者】R·E·富斯, S·M·威伦博格 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1