论文部分内容阅读
随着因特网的飞速发展,对网络设备的灵活性和性能的要求与日俱增。网络处理器作为一种新的应用专用处理器涌现出来。网络处理器一般采用特定的指令集,多处理核,多线程来优化对报文的处理。然而,也正是由于这种体系结构的复杂性,给网络处理器编程带来了很大的挑战。本文将通过介绍Intel开发的一款基于IXA的并行编译器的设计以及性能分析与改进对网络应用程序并行优化挖掘进行研究。学术界和工业界致力于对网络处理器架构和网络应用程序二者各自的特性进行研究和分析,用以说明网络应用程序本身的逻辑特性和网络处理器的并行架构相得益彰。通过研究可以看出,网络应用程序本身的多个特性使其具有天然的可并行逻辑,这为充分挖掘其并行性和开发基于网络处理器的高质量高性能的应用程序奠定了基础。再者,网络处理器专有的硬件架构为应用程序的并行执行提供了硬件基础。IXP C编译器是一款并行编译器,基于充分挖掘串行逻辑的应用程序的并行性作为出发点进行设计。它将串行语义的程序并行化,并适当的映射到网络处理器的硬件架构上。这一特性为网络应用程序的开发者屏蔽了网络处理器的硬件细节,使其仅关注于网络应用程序本身的逻辑。这便利了网络处理器之上的高质量高性能的网络处理程序的开发,并使其具有良好的可移植性与可扩充性。IXP C编译器提供三种主要的映射方式,分别是多处理器多线程模式(MTP: Multiprocessing/Multithreading),流水线模式(Context Pipelining)和粘贴模式(Pasting)。其中最具有并行性挖掘研究代表性的是CTX的任务划分算法。本文在对该算法进行深入分析之后将选取适当的测试用例对MTP与CTX两种映射方式进行性能分析与比较,以及对流水线任务划分算法进行性能分析。通过对实验数据的分析,观察到IXP C编译器的流水线任务划分算法存在着一定的性能缺陷。这主要体现在该算法在IXPC编译器的实现中,权值的设置主要考虑的是计算周期数和最小的活动数据传输集合。但是应该注意到,在实际的应用程序中,要达到高性能的要求,IO延迟的隐藏是非常重要的,这也往往是系统瓶颈的所在。而在IXP C编译器的实现中,IO平衡的问题并没有作为任务划分算法中权值设置的要素之一。为此本文提出了一个解决方案,即通过打破IO操作之间的