通过流水线变换自动地并行网络应用程序的装置和方法

文档序号:6505024阅读:457来源:国知局
专利名称:通过流水线变换自动地并行网络应用程序的装置和方法
技术领域
本发明的一个或更多个实施方案总地涉及网络处理器应用领域。更具体来说,本发明的一个或更多个实施方案涉及用于通过流水线变换(pipeline transformation)自动地并行网络应用程序的方法和装置。
背景技术
网络处理器(NP)被专门地设计以执行分组处理。常规地,网络处理器可以被用作高速通信路由器的核心部件(element)来执行这样的分组处理。为了解决高速网络处理的独特难题,现代NP一般具有高度并行的多处理器体系结构。例如,属于IntelInternetExchangeTMArchitecture(因特网交换体系结构,IXA)NP族的因特网交换处理器系列包括使用微引擎簇(micro-engine cluster)处理分组的NP。微引擎簇可以由并行运行的多个微引擎(具有分组处理能力的可编程处理器)组成。
然而,与网络处理器利用的高度并行的多处理器体系结构相比,传统的网络应用程序易于使用顺序语义来编码。一般来说,这样的网络应用程序被典型地编码为使用始终运行的分组处理单元(分组处理级(packet processing stage,PPS))。因此,当新的分组到达时,PPS执行一系列任务(例如分组接收、路由表查找以及所述分组的入队列)。因此,它通常表示为每次迭代处理不同分组的无限循环(或PPS循环)。
因此,在网络处理器的并行体系结构和网络应用程序的顺序语义之间存在很大差距(gap)。解决此问题的一条途径是调适用于编码传统网络应用的并行编程范型(paradigm)。如本领域的技术人员所了解,并行程序涉及将应用划分(partition)成子任务、管理不同子任务之间的同步与通信以及将各个子任务映射到多处理器系统上。不幸的是,这样的并行编程范型是非传统的并且对于大多数人来说是不熟悉的。
附图简要说明在附图中,本发明的各种实施方案是以实施例的方式来说明的,而不是以限制的方式来进行的,并且其中

图1是根据本发明的一个实施方案,实现并行编译器来执行顺序应用程序的流水线变换的计算机系统的框图。
图2A-2B根据本发明的一个实施方案,描述顺序网络应用程序的流水线变换。
图3A-3C根据本发明的一个实施方案,描述从顺序分组处理级形成的流水线级之间的活跃变量(live variable)传输。
图4根据本发明的一个实施方案,示出图3A的顺序PPS循环的初始变换。
图5根据本发明的一个实施方案,示出根据图3A的PPS循环体形成的控制流图(CFG)。
图6根据本发明的一个实施方案,描述从图5的CFG的归纳图形成的相关图。
图7根据本发明的一个实施方案,示出从图6的有向图的归纳图形成的控制流模型。
图8是根据本发明的一个实施方案,示出被配置为提供D级处理器流水线的网络处理器的框图。
图9是根据本发明的一个实施方案,示出用于顺序网络应用程序的流水线变换的方法的流程图。
图10是根据本发明的一个实施方案,示出用于构建流网络模型的流程图的框图。
图11是根据本发明的一个实施方案,示出用于构建流网络的方法的流程图。
图12是根据本发明的一个实施方案,示出用于构建流网络的方法的流程图。
图13是根据本发明的一个实施方案,示出用于从流网络模型中选择平衡的最小代价割分的方法的流程图。
图14是根据本发明的一个实施方案,示出用于使用迭代平衡push-relabel算法执行网络流模型的平衡的最小代价分割的方法的流程图。
图15是根据本发明的一个实施方案,示出用于将流网络模型的最小割分变换成D流水线级的方法的流程图。
图16是根据本发明的一个实施方案,示出用于将流网络模型的最小割分变换成D流水线级的方法的流程图。
详细描述描述用于通过流水线变换自动地并行顺序网络应用的方法和装置。在一个实施方案中,所述方法包括将网络处理器配置为D级处理器流水线(D-stage processor pipeline)。一旦被配置,顺序网络应用程序被变换成D流水线级(D-pipeline stage)。一旦被变换,D流水线级在D级处理器流水线中被并行执行。在一个实施方案中,通过将网络应用程序模型化为流网络模型并将流网络模型分割成D流水线级来执行网络应用的变换,从而D-1分割导致D流水线级。
在下面的描述中,使用了某些术语来描述本发明的特征。例如,术语“逻辑”代表被配置为执行一个或更多个功能的硬件和/或软件。例如,“硬件”的实施例包括,但不限制或不限定于,集成电路、有限状态机或甚至组合逻辑。集成电路可以采取诸如微处理器的处理器、专用集成电路、数字信号处理器、微控制器等等的形式。
“软件”的实施例包括应用、小应用程序(applet)、例程(routine)或甚至指令串形式的可执行代码。软件可以被储存在任何计算机或机器可读介质中,例如可编程电子电路、包括易失性存储器(例如随机访问存储器等)和/或非易失性存储器(例如任何类型的只读存储器“ROM”,闪存存储器)半导体存储器设备、软盘、光盘(例如致密盘或数字视频盘“DVD”)、硬驱动器盘等等。
在一个实施方案中,本发明可以被提供为可以包括具有存储在其上的指令的机器或计算机可读介质的制品,所述指令可以用于将计算机(或其他电子设备)编程为根据本发明的一个实施方案执行处理。计算机可读介质可以包括,但不限于,软盘、光盘、致密盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机访问存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存等等。
系统图1是根据本发明的一个实施方案,示出包括并行编译器200的计算机系统100的框图。如所示出的,计算机系统100包括CPU 110、存储器140和耦合到存储器控制器中心(hub)(MCH)120的图形控制器130。如本文所描述的,MCH 120可以被称为北桥,并且在一个实施方案中,MCH 120可以被称为存储器控制器。此外,计算机系统100包括I/O(输入/输出)控制器中心(ICH)160。如本文所描述的,ICH 160可以被称为南桥或I/O控制器。南桥(或ICH160)被耦合到本地I/O 150和硬盘驱动器设备(HDD)190。
在示出的实施方案中,ICH 160耦合到I/O总线172,I/O总线172耦合多个I/O设备,例如PCI或外设部件互连(PCI)设备170,包括PCI-express、PCI-X、第三代I/O(3GIO)或其他类似的互连协议。总起来说,MCH 120和ICH 160被称为芯片组180。如本文所描述的,术语“芯片组”是以对本领域技术人员来说众所周知的方式被用来在整体上描述耦合到CPU 110以执行期望的系统功能性的各种器件。在一个实施方案中,主存储器140是易失性存储器,包括但不限于,随机访问存储器(RAM)、同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据率(DDR)SDRAM(DDR SDRAM)、Rambus DRAM(RDRAM)、直接RDRAM(DRDRAM)等等。
与常规计算机系统相比,计算机系统100包括用于将顺序网络应用变换成D流水线级(并行网络应用)的并行编译器200。因此,编译器200可以桥接网络处理器的并行体系结构和用来编码常规网络应用程序的顺序编程模型之间的差距。解决此问题的一条途径是使用并行编程范型来编码网络应用。不幸的是,一般来说,这种并行编程范型是非传统的并且对于网络程序员来说是不熟悉的。根据本发明的一个实施方案,提供并行编译器200来自动地将顺序网络应用变换成并行网络应用程序,如图2A和2B所示出。
参见图2A,示出顺序网络应用的顺序分组处理级(PPS)280。如图2B所描述的,PPS 280可以被变换成三个流水线级并行的网络应用流水线300,以供在例如图1的网络处理器500的D级处理器流水线内执行。在一个实施方案中,网络应用的顺序PPS通过流水线变换被变换成D流水线级并行的网络应用程序,例如参照图3A-3C所示出。
具有代表性地,PPS 290被分割成D=2的D-PPS流水线级(图3B和3C),所述D-PPS流水线级的每一级包括来自原始PPS 290的部分功能性。在一个实施方案中,通过根据网络流模型模型化PPS 290来执行D流水线级的选择。如果图G=(V,W)具有两个奇异点(distinguished vertex)——源点s和汇点(sink)t,并且如果对于每条边(v,w)∈E,它都具有正实值容量(capacity)c(v,w),则图G=(V,W)是流网络。有向流网络N=(V,E)的v-w分割(cut)(X,X)是将V分割成X和X的二分操作,从而v∈X而w∈X。具有在X中的起始节点并且具有在X中的终端节点的边被称作前向边(forward edge)。cut(X,X)的容量是仅从X到X的前向边上的容量的和。
如本文所描述的,术语“割分”是指将PPS循环体分成两段(piece)的一组控制流点。总体来说,对PPS循环体执行的一个或更多个分割形成多个PPS流水线级。在一个实施方案中,如果PPS循环体被划分成D级,则从PPS循环体290中选择D-1个割分。在一个实施方案中,割分是非重叠的。在一个实施方案中,网络应用到D流水线级并行的网络应用的变换从网络应用的初始转换开始。
在一个实施方案中,网络应用程序被变换成静态单赋值(SSA)形式。具有代表性地,顺序PPS 290(图3A)被变换成如图4中所示出的SSA代码序列400。一旦被变换,从图4的SSA代码序列形成用于图3A的PPS循环290的PPS体的控制流图。在一个实施方案中,图3A的PPS循环体被模型化为控制流图(CFG),如图5中所示出。如本文所描述的,CFG是程序的控制流的图形表示,其中每个点(vertex)代表基本块(basic block),并且每条边示出基本块之间的潜在控制流。CFG具有唯一的源节点(入口(entry))。
具有代表性地,一旦应用所有分割,则要求控制流图中的每个节点处于一个流水线级中。在一个实施方案中,图5的CFG 420的强连通分量(strongly connected component,SSC)节点被标识。SSC是有向图的节点的子集S,从而S中的任何节点从S中的任何其他节点是可达的,并且S不是任何更大的这样的集合的子集。一旦被标识,形成CFG 420的归纳(summary)。在一个实施方案中,使用对归纳图(summary graph)中的SSC节点的标识来消除从较后的级到较前的级的控制相关性。因此,在一个实施方案中,如本文所描述的,流水线变换不应该分裂CFG 420中是潜在循环的任何SSC节点。
如图6中所示出的,从图5的CFG420的归纳图形成相关图。在一个实施方案中,相关图(DG)460被用来消除从较前的级到较后的级的数据相关性。在一个实施方案中,除了非循环承载数据和控制相关性之外,DG 460还示出PPS循环承载流相关性。因此,一般来说,PPS循环承载流相关性的源点和汇点在DG 460的相同SSC节点中。从有向图460形成有向图的归纳,所述归纳还标识其中的SSC节点。因此,相关图460的SSC节点确保流水线变换被限定于将整个SSC置于一个或更多个并排的割分上的分割考虑。
如参照图7所示出的,在一个实施方案中,从图6的有向图460的归纳图形成控制流模型480。流网络模型包括唯一的源节点和唯一的汇节点,以及包括指令的多个程序节点。除了唯一的源节点和唯一的汇节点以及包括指令的多个程序节点之外,针对可以被包括在活跃集(live set)中的每个对象,在流网络中引入变量节点和控制节点。SSA变换(图4)之后,每个变量仅具有一个定义点(definition point),并且因此仅具有一条定义边(definitionedge)。控制节点也如此。
因此,与定义边相关联的权重(容量)(用于变量的VCost和用于控制对象的CCost)正确地模拟如果所述边被切割时传输相关联变量或控制对象的代价。此外,从源点流出的边和流入汇点的边的权重被设置为0,因为分割这样的边将不会招致任何活跃集数据的传输。所有其他边具有无限权重,从而它们不受分割影响。从图7的流网络模型480中可以选择产生平衡的代码大小的割分。
在一个实施方案中,一般来说,要求选择的割分满足以下准则中的一条或更多条。选择的割分消除从较后的级到较前的级的任何数据或控制相关性。此外,一个实施方案要求最小化在相邻级之间的边界处有效(alive)的数据。如本文所描述的,在相邻级之间的边界处有效的数据被称为“活跃集数据”。在进一步的实施方案中,要求活跃割分的选择提供应用程序级之间的平衡的代码大小。在一个实施方案中,要求选择提供平衡的最小代价割分的割分。在一个实施方案中,利用启发式迭代平衡push-relabel算法来在图7的流网络模型中选择平衡的最小代价割分。
图8是根据本发明的一个实施方案,示出被配置为提供D级处理器流水线的网络处理器100的框图。具有代表性地,两个或更多个处理器被组织成流水线,其中每一级包括原始PPS循环的一部分。因此,每个处理器资源(例如缓存)可以被更充分地利用。通过对每个分组处理进行流水线化,分组处理的拮据的性能预算可以被分布到所有流水线级上。从而,网络应用的吞吐量得到改进。消除从较后的级到较前的级的相关性回避了原始PPS循环每次迭代之间复杂的同步。通过选择平衡的最小代价割分,级之间的通信减少。现在描述用于实现本发明的实施方案的过程方法。
操作图9是根据本发明的一个实施方案,示出用于顺序应用程序(例如顺序网络应用)的流水线变换的方法600的流程图。在处理框602处,为顺序网络应用构建流网络模型。一旦被构建,在处理框660处,流网络模型被分割成多(D)个初步(preliminary)流水线级。在一个实施方案中,流网络模型被分割成D流水线级,以供在例如图8的NP 500的D级处理器流水线内执行。在一个实施方案中,可以如图7的流网络模型480示出的那样形成流网络模型。在处理框700处,修改D初步流水线级来在它们之间执行控制流和变量的传输,以形成诸如图2B的应用300的并行网络应用的D流水线级。
图10是根据本发明的一个实施方案,示出用于构建图9的处理框602的流网络模型的方法604的流程图。在处理框606处,顺序应用程序被变换成如图4中所描述的静态单赋值(SSA)形式。在处理框608处,从应用程序的循环体建立例如参照图5所示出的控制流图(CFG)。在处理框512处,基于在处理框610处形成的CFG的归纳图和CFG的被标识的强连通分量(SSC)建立例如参照图7所示出的相关图(DG)。在处理框616处,根据在处理框614处形成的DG的归纳图和DG的被标识的SSC节点构建流节点模型。在一个实施方案中,从图3A的顺序应用程序290生成如参照图7所示出的流网络模型。
图11是根据本发明的一个实施方案,示出用于构建图10的处理框616的流网络模型的方法618的流程图。在处理框620处,给流网络模型指派唯一的源点和唯一的汇节点。一旦被添加,在处理框622处,针对在DG的归纳图中标识的每个SSC节点,将程序节点添加到流网络模型。一旦程序节点被添加,在处理框624处,针对由多个程序节点定义并使用的每个应用程序变量,将变量节点添加到流网络。
在处理框626处,针对在DG的归纳图中被标识为具有受控相关性(controlleddependence)的源点的每个SSC节点,将控制节点添加到流网络模型。在处理框628处,生成边以将对应的程序节点连接到对应的变量节点。在处理框630处,生成边以将对应的程序节点连接到对应的控制节点。在一个实施方案中,向每条生成的边指派权重。在处理框632处,在程序节点和源节点与汇节点中的一个之间生成边。在一个实施方案中,根据示出如图12中所描述的方法636的流程图形成流网络模型。
在一个实施方案中,一旦形成流网络模型,与定义边相关联的权重(或容量)(用于变量的VCost和用于控制对象的CCost)正确地模拟如果流网络模型中的对应边被分割时传输相关联变量或控制对象的代价。同样地,在一个实施方案中,一旦形成流网络模型,流网络模型被分割成D(流水线化程度(degree))级。从而,变换操作将D-1个连续的割分应用于例如网络应用程序的分组处理级(PPS),从而每个割分是平衡的最小代价割分。
图13,根据本发明的一个实施方案,描述用于执行图9的处理框660的流网络模型的分割的方法的流程图。在处理框662处,每个程序节点的权重(W(N))被设置为包括在对应节点内的指令的数目。在处理框664处,将流网络模型中的每个非程序节点设置为0权重。在处理框665处,将流网络模型中的每个程序节点的权重(W(N))的和储存在一值中(T)。在处理框668处,变量i被设置为值1,并且变量d被设置为值D(流水线化等级数)。在处理框670处,确定变量i是否小于变量d或流水线化的程度。从而,在处理框672处,使用平衡的最小代价分割算法在流网络模型中选择割分,从而(i-e)·T/d≤W(N)≤(i+e)·T/d (1)在一个实施方案中,d是平衡程度,并且范围从1到0的预定义常数e是平衡方差。平衡方差反映割分的平衡和权重之间的折衷。如果平衡方差接近于0,则算法搜索更平衡的割分而不是更小权重的割分。可替换地,如果平衡方差接近于1,则算法搜索更大权重的割分而不是更少平衡的割分,权重的最小化被认为更加重要。在一个实施方案中,在本发明的操作期间可以容易地确定平衡方差的最优值。在处理框698中,变量i和变量d以及变量T被更新,从而重复处理框672的操作来使能(enable)平衡的最小代价割分的选择。
在一个实施方案中,使用启发式迭代平衡push-relabel算法来在流网络模型中选择平衡的最小代价割分。在一个实施方案中,所述算法改编自由A.V.Goldberg和R.E.Tarjan在“A New Approach to The Maximum Flow Problem(针对最大流问题的新方法)”(Proc.18thACM STOC,1986,PP.136-146)中描述的迭代平衡push-relabel算法。因此,图14是示出处理框672的选择最小代价割分的方法674的流程图,所述方法如H.Yang和D.F.Wong在“Efficient Flow Based Min-Cut Balanced Partitioning(基于Min-Cut平衡划分的有效流)”(Proc.IEEE Int’l Conf.Computer-Aided Design,1994,PP.50-55)中所描述。
图15是根据本发明的一个实施方案,用于将初步流水线级变换成并行应用程序的D流水线级的方法702的流程图。在处理框704处,选择初步流水线级。一旦已选择,在处理框706处,与选择的级对应的PPS循环的控制流图被选择。在处理框708处,从选择的控制流图中移除未被包括在选择的初步级中的指令。在处理框710处,根据从前一级传输到选择的初步级的变量和控制对象,变换控制流图。在处理框712处,从已变换控制流图重新构建PPS循环体,以形成流水线级。
相应地,通过针对D初步的流水线级中的每一个重复处理框704-712,顺序网络应用被变换成并行网络应用的D流水线级。在可替换的实施方案中,根据图16中描述的流程图所示出的方法720执行初步流水线级的变换。在一个实施方案中,从经过归纳的CFG建立控制相关性。然而,经过归纳的CFG中的条件(conditional)可以是包括多个基本块的循环。在处理框730处,为该循环的每一个后继块(successor block)中对应的控制对象赋不同值。此外,在处理框726处,所述条件节点的重新构建应该通过分支到所有后继块来替换循环,如处理框726中所示出。
在可替换的实施方案中,此启发式方法(heuristics)的有效实现不需要在每次迭代中从最开始就执行push-relabel算法。具有代表性地,push-relabel算法可以如下递增地实现(a)使用一般的push-relabel算法查找用于流网络的初始最小割分,并且(b)节点被压缩到源点或汇点之后,使用push-relabel算法定位具有以下初始状态的已更新最小割分(i)将源点的所有流出边的预流(pre-flow)设置为他们的容量并据此更新余量(excess),留下其他边的预流为未改变;(ii)将源点的标签设置为新的节点数目;以及(iii)如果节点被压缩到源点,则留下其他节点的标签为未改变;否则,将节点设置为0。
可替换的实施方案已经描述了并行编译器的一个实现的几个方面,所述编译器用于提供将顺序网络应用变换成D流水线级(并行网络应用程序)的操作。然而,并行编译器的各种实现提供包括、补足、补充和/或替代上述特征的很多特征。在不同实施方案的实现中,特征可以被实现为多个处理器的部分或网络处理器的部分。此外,出于解释的目的,前面的描述使用具体的术语来提供对本发明的实施方案的全面理解。然而,本领域的技术人员将会清楚,不要求所述具体细节来实践本发明的实施方案。
此外,尽管本文描述的实施方案致力于使用流网络分析来选择D流水线级,但是本领域的技术人员将意识到,可以使用其他图论启发式方法来执行D流水线级的选择。实际上,如所附权利要求书所定义的,用来分切网络应用程序模型的启发式方法,诸如数据流分析或其他类似的图论启发式方法落入用于选择D流水线级的实施方案中。为了最佳地解释本发明的实施方案的原理和它的实践应用,选择并描述上述实施方案。这些实施方案被选择,由此使本领域的其他技术人员能够用适合于所预期的特定使用的各种修改来最佳地利用本发明和各种实施方案。
应该理解,尽管在前面的描述中已经阐述本发明的各种实施方案的很多特性和优势以及本发明的各种实施方案的结构和功能的细节,但是此公开仅仅是说明性的。在一些情况下,仅使用一个这样的实施方案来详细描述某些子配件(subassembly)。然而,应该认识到并期望,可以在本发明的其他实施方案中使用这样的子配件。在本发明的实施方案的原理内,在由所附权利要求书被表达的语句的宽泛的通用意义所指定的程度上,可以在细节上,特别是在组成部分的结构和管理上作出改变。
已经公开示例性实施方案和最佳模式,可以对已公开实施方案作出修改和变化,同时仍然落入所附权利要求书所定义的本发明的实施方案的范围内。
权利要求
1.一种方法,包括将一个或更多个处理器配置为D级处理器流水线;将顺序应用程序变换成D流水线级;以及在所述D级处理器流水线中并行地执行所述D流水线级。
2.如权利要求1所述的方法,其中,变换所述顺序应用程序的操作包括构建用于所述顺序应用程序的流网络模型;从所述流网络模型中选择多个初步流水线级;以及修改所述初步流水线级来在它们之间执行控制流和变量的传输,以形成所述D流水线级。
3.如权利要求2所述的方法,其中,构建所述流网络模型的操作包括将所述应用程序变换成静态单赋值形式;为所述应用程序的循环体建立控制流图;基于所述控制流图的归纳图和所述控制流图的被标识的强连通分量(SSC)建立相关图;以及根据所述相关图的归纳图和所述相关图的被标识的SSC节点构建所述流网络模型。
4.如权利要求3所述的方法,其中,构建所述流网络模型的操作包括给所述流网络模型指派唯一的源节点和唯一的汇节点;针对在所述相关图的所述归纳图中标识的每个SSC节点,将程序节点添加到所述流网络模型;针对由多个程序节点定义并使用的每个变量,将变量节点添加到所述流网络模型;针对在所述相关图的所述归纳图中被标识为控制相关性的源点的每个SSC节点,将控制节点C添加到所述流网络模型;生成具有相关联权重的边,以将对应的程序节点连接到对应的变量节点;生成具有相关联权重的边,以将对应的程序节点连接到对应的控制节点;以及在所述程序节点和所述源节点与所述汇节点中的一个之间生成边。
5.如权利要求4所述的方法,其中,生成具有相关联权重的边以将对应的程序节点连接到对应的变量节点的操作还包括(i)选择定义变量节点V的程序节点N;(ii)将从节点N到节点V的具有权重VCost的定义边添加到所述流网络模型;(iii)针对定义变量节点V的每个程序节点N,重复(i)-(ii);(iv)选择使用变量节点W的程序节点M;(v)将从所述节点W到所述程序节点M的具有指派的无限权重的边添加到所述流网络模型;以及(vi)针对使用变量节点W的每个程序节点M,重复(iv)-(v)。
6.如权利要求4所述的方法,其中,生成具有相关联权重的边以将对应的程序节点连接到对应的控制节点的操作还包括(i)选择具有相关联控制节点C的程序节点N;(ii)添加从所述选择的节点N到所述相关联控制节点C的定义边;(iii)将权重CCost关联到所述边;(iv)针对具有相关联控制节点的每个程序节点,重复(i)-(iii);(v)选择程序节点N,所述程序节点N具有对另一个程序节点M的受控相关性;(vi)关联M与所述控制节点C;(vii)添加从所述相关联控制节点C到所述选择的程序节点N的边;(viii)给所述边指派无限权重;以及(ix)针对具有与另一个程序节点M的受控相关性的每个节点N,重复(v)-(viii)。
7.如权利要求4所述的方法,其中,在程序节点和所述源节点与所述汇节点中的一个之间生成所述边的操作包括(i)在所述流网络模型中选择没有前驱节点的程序节点;(ii)添加从所述源节点到所述选择的程序节点的边;(iii)给所述边指派0权重;(iv)针对不具有前驱的每个程序节点,重复(i)-(iii);(v)在所述流网络中选择不具有后继的程序节点;(vi)添加从所述选择的程序节点到所述汇节点的边;(vii)给所述添加的边指派0权重;以及(viii)针对所述流网络模型中没有后继节点的每个程序节点,重复(v)-(vii)。
8.如权利要求2所述的方法,其中,选择所述多个初步流水线级的操作包括将所述流网络模型分割成D-1个连续割分,从而每个割分是平衡的最小代价割分。
9.如权利要求8所述的方法,其中,使用迭代平衡push-relabel算法执行分割操作。
10.如权利要求2所述的方法,其中,修改所述初步流水线级的操作包括选择初步流水线级;更改所述选择的初步流水线级,以使能活跃变量到和从所述选择的初步流水线级的适当传输;更改所述选择的初步流水线级,以使能控制流到和从所述选择的初步流水线级的适当传输;以及针对每个初步流水线级,重复所述选择、更改和更改操作,以形成并行网络应用的所述D流水线级。
11.一种制品,所述制品包括具有储存在其上的指令的机器可读介质,所述指令可以被用来对系统编程,以执行方法,所述方法包括将一个或更多个处理器配置为D级处理器流水线;将顺序应用程序变换成D流水线级;以及在所述D级处理器流水线中并行执行所述D流水线级。
12.如权利要求11所述的制品,其中,变换所述顺序应用程序的操作包括构建用于所述顺序应用程序的流网络模型;从所述流网络模型中选择多个初步流水线级;以及修改所述初步流水线级来执行它们之间控制流和变量的传输,以形成所述D流水线级。
13.如权利要求12所述的制品,其中,构建所述流网络模型的操作包括将所述应用程序变换成静态单赋值形式;建立用于所述应用程序的循环体的控制流图;基于所述控制流图的归纳图和所述控制流图的被标识的强连通分量(SSC)建立相关图;以及根据所述相关图的归纳图和所述相关图的被标识的SSC节点构建所述流网络模型。
14.如权利要求13所述的制品,其中,构建所述流网络模型的操作包括给所述流网络模型指派唯一的源节点和唯一的汇节点;针对在所述相关图的所述归纳图中标识的每个SSC节点,将程序节点添加到所述流网络模型;针对由多个程序节点定义并使用的每个变量,将变量节点添加到所述流网络模型;针对在所述相关图的所述归纳图中被标识为控制相关性的源点的每个SSC节点,将控制节点C添加到所述流网络模型;生成具有相关联权重的边,以将对应的程序节点连接到对应的变量节点;生成具有相关联权重的边,以将对应的程序节点连接到对应的控制节点;以及在所述程序节点和所述源节点与所述汇节点中的一个之间生成边。
15.如权利要求14所述的制品,生成具有相关联权重的边以将对应的程序节点连接到对应的变量节点的操作还包括;(i)选择定义变量节点V的程序节点N;(ii)将从节点N到节点V的具有权重VCost的定义边添加到所述流网络模型;(iii)针对定义变量节点V的每个程序节点N,重复(i)-(ii);(iv)选择使用变量节点W的程序节点M;(v)将从所述节点W到所述程序节点M的具有指派的无限权重的边添加到所述流网络模型;以及(vi)针对使用变量节点W的每个程序节点M,重复(iv)-(v)。
16.如权利要求14所述的制品,其中,生成具有相关联权重的边以将对应的程序节点连接到对应的控制节点的操作还包括(i)选择具有相关联控制节点C的程序节点N;(ii)添加从所述选择的节点N到所述相关联控制节点C的定义边;(iii)将权重CCost关联到所述边;(iv)针对具有相关联控制节点的每个程序节点,重复(i)-(iii);(v)选择程序节点N,所述程序节点N具有对另一个程序节点M的受控相关性;(vi)关联M与所述控制节点C;(vii)添加从所述相关联控制节点C到所述选择的程序节点N的边;(viii)给所述边指派无限权重;以及(ix)针对具有与另一个程序节点M的受控相关性的每个节点N,重复(v)-(viii)。
17.如权利要求14所述的制品,其中,在程序节点和所述源节点与所述汇节点中的一个之间生成所述边的操作包括(i)在所述流网络模型中选择没有前驱节点的程序节点;(ii)添加从所述源节点到所述选择的程序节点的边;(iii)给所述边指派0权重;(iv)针对不具有前驱的每个程序节点,重复(i)-(iii);(v)在所述流网络中选择不具有后继的程序节点;(vi)添加从所述选择的程序节点到所述汇节点的边;(vii)给所述添加的边指派0权重;以及(viii)针对所述流网络模型中没有后继节点的每个程序节点,重复(v)-(vii)。
18.如权利要求12所述的制品,其中,选择所述多个初步流水线级的操作包括将所述流网络模型分割成D-1个连续割分,从而每个割分是平衡的最小代价割分。
19.如权利要求18所述的制品,其中,使用迭代平衡push-relabel算法执行分割操作。
20.如权利要求12所述的方法,其中,修改所述初步流水线级的操作包括选择初步流水线级;更改所述选择的初步流水线级,以使能活跃变量到和从所述选择的初步流水线级的适当传输;更改所述选择的初步流水线级,以使能控制流到和从所述选择的初步流水线级的适当传输;以及针对每个初步流水线级,重复所述选择、更改和更改操作,以形成并行网络应用程序的所述D流水线级。
21.一种方法,包括从顺序应用程序构建流网络模型;将所述流网络模型分割成多个初步流水线级;以及变换所述初步流水线级来在它们之间执行控制流和变量的传输,以形成并行应用程序的D流水线级。
22.如权利要求21所述的方法,其中,变换所述初步应用程序级的操作包括(i)选出初步应用程序级;(ii)选择为与所述选择的初步应用程序级对应的分组处理级(PPS)循环生成的控制流图;(iii)如果指令未被包括在所述选择的初步流水线级中,则从所述控制流图中移除所述指令;(iv)根据传输自前一级的变量和控制对象,变换所述选择的控制流图;(v)从所述已变换控制流图重新构建所述PPS循环,以形成流水线级;以及针对每个初步流水线级,重复(i)-(v),以形成并行网络应用程序的D流水线级。
23.如权利要求22所述的方法,其中,变换所述控制流的操作还包括在所述控制流图的入口处为传输自前一流水线级的控制对象选择值;针对从所述前一流水线级接收的每个控制对象,使用所述控制对象构建条件指令;以及用所述条件指令替换所述CFG中对应的条件节点。
24.如权利要求22所述的方法,其中,变换所述控制流的操作还包括为传输自前一流水线级的变量选择值;以及针对传输到下一流水线级的每个变量,在所述控制流图中所述变量的定义之后,将所述变量的值设置为特有临时变量。
25.如权利要求22所述的方法,其中,变换所述控制流图的操作还包括针对要被传输到下一流水线级的每个控制对象,在所述控制流图中,在与所述控制对象相关联的条件节点的每个可替换后继节点中放置所述控制对象的可替换值。在所述控制流图的出口处将活跃集数据传输到下一流水线级。
26.一种制品,所述制品包括具有储存在其上的指令的机器可读介质,所述指令可以被用来对系统编程,以执行方法,所述方法包括从顺序应用程序构建流网络模型;将所述流网络模型分割成多个初步流水线级;以及变换所述初步流水线级来在它们之间执行控制流和变量的传输,以形成并行应用程序的D流水线级。
27.如权利要求26所述的制品,其中,变换所述初步应用程序的操作包括(i)选出初步应用程序级;(ii)选择为与所述选择的初步应用程序级对应的分组处理级(PPS)循环生成的控制流图;(iii)如果指令未被包括在所述选择的初步流水线级中,则从所述控制流图中移除所述指令;(iv)根据传输自前一级的变量和控制对象,变换所述选择的控制流图;(v)从所述已变换控制流图重新构建所述PPS循环,以形成流水线级;以及针对每个初步流水线级,重复(i)-(v),以形成并行网络应用程序的D流水线级。
28.如权利要求26所述的制品,其中,变换所述控制流图的操作还包括在所述控制流图的入口处为传输自前一流水线级的控制对象选择值;针对从所述前一流水线级接收的每个控制对象,使用所述控制对象构建条件指令;以及用所述条件指令替换所述CFG中对应的条件节点。
29.如权利要求26所述的制品,其中,变换所述控制流图的操作还包括为传输自前一流水线级的变量选择值;针对传输到下一流水线级的每个变量,在所述控制流图中所述变量的定义之后,将所述变量的值设置为特有临时变量。
30.如权利要求28所述的制品,其中,变换所述控制流图的操作还包括针对要被传输到下一流水线级的每个控制对象,在所述控制流图中,在与所述控制对象相关联的条件节点的每个可替换后继节点中放置所述控制对象的可替换值。在所述控制流图的出口处将活跃集数据传输到下一流水线级。
31.一种装置,包括处理器;耦合到所述控制器的存储器,所述存储器包括编译器,所述编译器导致顺序应用程序到D流水线级的变换,以使能D级处理器流水线中所述D流水线级的并行执行。
32.如权利要求31所述的装置,其中,所述编译器导致构建用于所述顺序应用程序的流网络模型,导致从所述流网络模型中选择多个初步流水线级,并且导致修改所述初步流水线级来在它们之间执行控制流和变量的传输,以形成所述D流水线级。
33.如权利要求32所述的装置,其中,所述编译器导致所述流网络模型的D-1个连续割分,从而每个割分是形成所述初步D流水线级的平衡的最小代价割分。
34.一种系统,包括处理器;耦合到所述处理器的存储器;以及耦合到所述处理器的DDR SRAM存储器,所述存储器包括编译器,所述编译器导致顺序应用程序到D应用程序级的变换,以使能D级处理器流水线中所述D应用程序级的并行执行。
35.如权利要求34所述的系统,其中,所述编译器导致构建用于所述顺序应用程序的流网络模型,导致从所述流网络模型中选择多个初步流水线级,并且导致修改所述初步流水线级来在它们之间执行控制流和变量的传输,以形成所述D流水线级。
36.如权利要求35所述的系统,其中,所述编译器导致所述流网络模型的D-1个连续割分,从而每个割分是形成所述初步D流水线级的平衡的最小代价割分。
全文摘要
在一些实施方案中,描述了用于通过流水线变换自动地并行顺序网络应用的方法和装置。在一个实施方案中,所述方法包括将网络处理器配置为D级处理器流水线。一旦被配置,顺序网络应用程序被变换成D流水线级。一旦被变换,D流水线级在D级处理器流水线中被并行执行。在一个实施方案中,通过将顺序网络程序模型化为流网络模型并且从流网络模型中选择多个初步流水线级来执行顺序应用程序的变换。描述了其他实施方案并主张了对它们的权利。
文档编号G06F9/45GK1906579SQ200480040478
公开日2007年1月31日 申请日期2004年11月5日 优先权日2003年11月14日
发明者J·戴, 威廉·哈里森三世, B·黄, 科顿·锡德, L·李 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1