【24h】

Effective thread management on network processors with compiler analysis

机译:通过编译器分析对网络处理器进行有效的线程管理

获取原文
获取原文并翻译 | 示例

摘要

Mapping packet processing tasks on network processor micro-engines involves complex tradeoffs that relating to maximizing parallelism and pipelining. Due to an increase in the size of the code store and complexity of the application requirements, network processors are being programmed with heterogeneous threads that may execute code belonging to different tasks on a given micro-engine. Also, most network applications are streaming applications that are typically processed in a pipelined fashion. Thus, the tasks on different micro-engines are pipelined in such a way as to maximize the throughput. Tasks themselves could have different run time performance demands. Traditionally, runtime management involving processor sharing, real-time scheduling etc. is provided by the runtime environment (typically an operating system) using the hardware support for timers and interrupts that allows time slicing the resource amongst the tasks. However, due to stringent performance requirements on network processors (which process packets from very high speed network traffic), neither OS nor hardware mechanisms are typically feasible/available.In this paper, we show that it is very difficult and inefficient for the programmer to meet the constraints of runtime management by coding them statically. Due to the infeasibility of hardware or OS solution (even in the near future), the only choice left is a compiler approach.We propose a complete compiler solution to automatically insert explicit context switch (ctx) instructions provided on the processors so that the execution of programs is better manipulated at runtime to meet their constraints. We show that such an approach is feasible opening new application domains that would need heterogeneous thread programming. Such approaches would in general become important for multi-core processors.
机译:在网络处理器微引擎上映射数据包处理任务涉及复杂的权衡,这些权衡涉及最大化并行性和流水线。由于代码存储区的大小增加和应用程序需求的复杂性,网络处理器正在使用异构线程编程,这些线程可以在给定的微引擎上执行属于不同任务的代码。而且,大多数网络应用程序都是流应用程序,通常以流水线方式进行处理。因此,以使吞吐量最大化的方式对不同微引擎上的任务进行流水线处理。任务本身可能具有不同的运行时性能要求。传统上,运行时环境(通常是操作系统)使用对计时器和中断的硬件支持来提供涉及处理器共享,实时调度等的运行时管理,从而可以在任务之间进行时间分割。但是,由于对网络处理器(处理来自高速网络流量的数据包)的严格性能要求,因此操作系统和硬件机制通常都不可行/不可用。在本文中,我们证明了程序员很难而且效率低下通过静态编码来满足运行时管理的约束。由于硬件或OS解决方案(甚至在不久的将来)不可行,剩下的唯一选择就是编译器方法。我们提出了一个完整的编译器解决方案,可以自动插入处理器上提供的显式上下文切换(ctx)指令以便执行程序的更好地在运行时进行操作以满足它们的约束。我们证明了这种方法对于打开​​需要异构线程编程的新应用程序域是可行的。通常,这样的方法对于多核处理器将变得重要。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号