多处理器环境中的流水线处理方法和设备技术

技术编号:2821103 阅读:235 留言:0更新日期:2012-04-11 18:40
本申请涉及多处理器环境中的流水线处理方法和设备,其中,将任务分割为交叠的子任务分配给多个处理器,其中各子任务中的交叠部分由处理对应子任务的处理器共享,在各处理器执行所述子任务的过程中,确定各处理器的状态,并根据各处理器的状态动态决定各子任务中交叠的部分由处理对应子任务的处理器中的哪一个处理器来执行。根据本发明专利技术,实现了子任务在多处理器之间的动态均衡,从而充分利用了计算资源而实现多核处理器的最佳增益。

【技术实现步骤摘要】

本专利技术涉及流水线技术,尤其涉及多处理器环境中的流水线处理方法和i殳备。
技术介绍
作为一种刚出现并逐渐受到广泛关注的网络应用,DPI (Deep Packet Inspection,深度数据包检查)是对性能敏感的。其处理性能需 求与接口网速(interface wire-speed )比例相关,这是因为DPI不双处 理数据包标题(包头),还处理数据包有效载荷。多处理器(多核或者多芯片,例如SMP (对称多处理器))是一 种解决DPI的性能问题的有前景的方法,这是因为它具有强大的处理/ 计算能力。但是,在某些情况下,DPI难以采用用于进行数据负载平 衡的传统的并行编程模型。原因在于,网络通信通常是基于流/会话方 式的(所谓的"流",指的是任意"源-目的"地之间通信的数据包流), 流内的各数据包相互间高度相关,因此应当按顺序对流内的数据包进 行处理以维持数据相关性。不幸的是,由于存在例如VPN (虚拟专用 网络)隧道这样的应用场合,网络流可能具有非常"巨大"的尺寸,甚 至可能独占整个电缆带宽,极端情况是所有的数据包都在单个隧道流 中,不得不按顺序处理,也就是说无法4艮好地并行处理。流水线技术(pipelining)是另一种利用(leverage)并行处理资 源以增进性能的方法,尽管以前在通用CPU平台中并不常见。传统上, 流水线技术主要用在硬件体系结构的设计上。最近在网络处理器 (Netwrok Processor)技术中,提出将流水线技术作为一种针对网络 数据的编程模型。DPI应用的处理(检查)对象是数据包,或者说数 据包组成的流,但是DPI应用本身是一个程序,其包括许多子程序或者例程。因此,可以利用流水线技术对DPI应用程序函数本身进行分 割。通过流水线技术,编程人员可以将大任务分割为多个接续进行的 较小的子任务,并将它们分配到多个处理单元,以使这些处理单元并 行工作而实现性能的提高。与并行编程模型相比,流水线技术是一种 "任务负载平衡(Task Load-Balancing)"方法而不是"数据负载平衡(Data Load-Balancing),,方法,因此保持了数据的相关性。另一方面,注意到只有当子任务负载在各处理器之间良好均衡 时,计算资源才能被充分利用而实现多核处理器的最佳增益。但是, 传统的流水线编程受制于非常差的自适应性,任务只能被预先分割并 被静态地分配给特定的处理器。注意到每一个数据包的执行代码路径(code path)常常相互不同,也就是说,同一个DPI应用,对于不同 的数据包,其参与的子程序以及各子程序对计算资源的需求可能存在 差异,因此难以期望通过静态的方法实现高的资源利用率。对于DPI 应用来说,这是至关重要的问题,因为即使是百分之一的性能增益损 失也会导致与所需的性能不匹配。类似地,对于DPI应用之外的其他许多应用,也存在子任务在多 处理器之间的均衡的问题,而无论所述任务是什么或者其处理的数据 是什么。上面以DPI为例来说明现有技术面临的问题,只是因为DPI 的数据负载均衡和任务负载均衡问题尤为迫切。
技术实现思路
鉴于上述问题,需要使子任务负载在各处理器之间更好地均衡。 为此,本专利技术提供了一种用于多核处理器环境中的,动态流水线 子任务调度方法。其主要思想在于在流水线中,在相互配合的处理 器之间共享部分代码/例程,并基于它们的实时负载在处理器之间动态地调度子任务。进一步,本专利技术还提供了针对下述问题的解决方案1)如何在处理器之间共享代码/例程以实现适应性,同时避免不必要的开销;2)如何以最小的开销触发子任务的再分配,如何确定从何处进 行再分配,具体地,本专利技术提供了一种多处理器环境中的流水线处理方法, 包括将任务分割为交叠的子任务分配给多个处理器,其中各子任务 中的交叠部分由处理对应子任务的处理器共享;在各处理器执行所述 子任务的过程中,确定各处理器的状态;以及,根据各处理器的状态 动态地决定各子任务中交叠的部分由处理对应子任务的处理器中的哪 一个处理器来执行。本专利技术还提供了一种多处理器环境中的流水线处理设备,包括 分割装置,将任务分割为交叠的子任务分配给多个处理器,其中各子 任务中的交叠部分由处理对应子任务的处理器共享;处理器状态确定 装置,在各处理器执行所述子任务的过程中,确定各处理器的状态; 以及动态调节装置,根据各处理器的状态动态决定各子任务中交叠的 部分由处理对应子任务的处理器中的哪一个处理器来执行。在本专利技术的一种优选实施方式中,可以根据以下因素之一或者它 们的组合来确定各处理器的工作负荷各处理器任务队列的状态;各 处理器指令队列的状态;各处理器的吞吐量;各处理器的处理延时。 或者可以由各处理器定期主动告知其状态。在本专利技术的一种优选实施方式中,任务的分割还可以包括分析 任务,获得该任务的子函数的调用关系图;根据所述调用关系图确定 该任务的子函数的关键路径;以及,根据所述关键路径进行任务的分 割。在本专利技术的一种优选实施方式中,根据所述关键路径进行任务的 分割还可以包括分析所述关键路径中各子函数的自身时间和/或代码 长度;以及,根据任务中各子函数的累积自身时间和/或累积代码长度 进行任务的分割。在本专利技术的一种优选实施方式中,根据所述关鍵路径进行任务的 分割还可以考虑至少以下因素中的至少 一个各子函数的自身时间; 各子函数的代码长度;任务的代码冗余比例;指令/数据的局部性;本地存储器大小;高速緩存大小;各子函数本身的负栽稳定性;以及子 函数之间的耦合程度。根据本专利技术的一种优选实施方式,处理器状态的确定和/或所述动态调节可以被集成在所述任务本身当中,也可以通过在外部监测处 理器和/或任务来实现。根据本专利技术的上述方案,实现了子任务在多处理器之间的动态均衡,从而充分利用了计算资源而实现多核处理器的最佳增益。附图说明下面结合附图对本专利技术进行详细说明。附图中 图1图示了现有技术中对任务的静态分割; 图2图示了本专利技术的任务动态分割方法;图3到图6图示了根据本专利技术的一种优选实施方式的流水线处理方法的各个步骤;图7图示了根据本专利技术的一种优选实施方式的流水线处理方法的流程图8图示了图7所示流水线处理方法的任务分割步骤的详细流程图9图示了根据本专利技术的一种优选实施方式的子任务动态调节的 示意图10图示了根据本专利技术的一种优选实施方式的流水线处理设备 的框图。具体实施例方式作为举例, 一个应用程序具有ll个函数或者说例程main()、 Fl() 到FIO(),它们的调用关系如图l所示。按照传统的流水线处理技术, 是对各函数进行静态的分割。例如,Fl()由处理器并l执行,F2()到F6() 以及F5()的进一 步函数调用由处理器# 2执行,F7()及其以后的函数调 用由处理器# 3执行。如
技术介绍
部分所述,这种静态分割的适应性差,在应用程序的实际执行过程中,随所处理的数据的不同,各处理器的任务有可能并不均衡。例如,当F4()不调用F7()时,此时处理器#3对 该应用程序而言就空闲了 ,而处理器并2需要处理比F4()调用F70时更 多的任务,也就是要多处理F5()、 F6()等。因此,针对这种问题,本专利技术提出了一种新的流水线处理方法。 即,在分割子任务并分配给各处理器时,使各处理器处理的子任务本文档来自技高网
...

【技术保护点】
一种多处理器环境中的流水线处理方法,包括: 将任务分割为交叠的子任务分配给多个处理器,其中各子任务中的交叠部分由处理对应子任务的处理器共享; 在各处理器执行所述子任务的过程中,确定各处理器的状态; 根据各处理器的状态动态决定各子任务中交叠的部分由处理对应子任务的处理器中的哪一个处理器来执行。

【技术特征摘要】

【专利技术属性】
技术研发人员:郑凯冯博绍凌
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1