CN116432575A - 一种pisa架构芯片内部结构中程序基本块优化排布方法 - Google Patents
一种pisa架构芯片内部结构中程序基本块优化排布方法 Download PDFInfo
- Publication number
- CN116432575A CN116432575A CN202310079077.1A CN202310079077A CN116432575A CN 116432575 A CN116432575 A CN 116432575A CN 202310079077 A CN202310079077 A CN 202310079077A CN 116432575 A CN116432575 A CN 116432575A
- Authority
- CN
- China
- Prior art keywords
- pipeline
- resource
- constraint
- basic
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 115
- 241000404883 Pisa Species 0.000 title claims abstract 9
- 238000005457 optimization Methods 0.000 claims abstract description 111
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 49
- 230000003321 amplification Effects 0.000 claims abstract description 33
- 238000003199 nucleic acid amplification method Methods 0.000 claims abstract description 33
- 239000011159 matrix material Substances 0.000 claims description 35
- 238000013461 design Methods 0.000 claims description 11
- 230000001419 dependent effect Effects 0.000 claims description 9
- 238000009826 distribution Methods 0.000 claims description 6
- 230000003416 augmentation Effects 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000013178 mathematical model Methods 0.000 claims description 4
- 230000001502 supplementing effect Effects 0.000 claims description 4
- 241000170489 Upis Species 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 19
- 239000000243 solution Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 238000012800 visualization Methods 0.000 description 7
- 238000010276 construction Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000013468 resource allocation Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/337—Design optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/04—Constraint-based CAD
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
一种PISA架构芯片内部结构中程序基本块优化排布方法,包括以最小化占用流水线级数为优化目标,在数据依赖、控制依赖和资源限制的复杂约束条件下,基于动态扩增逐层优化调度算法进行建模;在满足程序依赖关系的条件下,构建重要资源优先的基本块调度优先级顺序;采用基于基本块优先级逐层优化策略,当资源受限时进行流水线级数动态扩增,将最小化流水线级数问题转换为最大化各级流水线资源利用率问题;在资源限制条件下,基于动态扩增逐层优化的调度算法解决多约束条件优化问题,求解不同层级下的各级流水线基本块的最优排布方案,获得所有基本块在各级流水线的排布结果。
Description
技术领域
本发明涉及PISA架构芯片的内部结构,具体涉及复杂的PISA架构芯片的内部结构中,程序基本块优化排布方法。
背景技术
网络交换芯片作为网络设备中最核心的存在,其支持网络设备实现海量数据进行交流交换。对比于传统交换芯片的固定性和低效率,可编程的交换芯片具有灵活性、定制性和高效率,PISA(Protocol Independent Switch Architecture)是当前主流的可编程交换芯片架构之一,是一种按用户需求、完全自主控制下以最高速度处理数据包的新范例。PISA架构如图1中(b)所示,其包括可编程报文解析器、多级可编程“匹配-动作”流水线、可编程报文重组器三个部分组成,报文数据可经过自定义的解析进行多级匹配和动作操作,实现数据平面的协议无关转发。
在PISA架构编程模型中,用户采用P4语言描述报文处理行为并编译P4程序,P4程序将划分成一系列基本块,各个基本块需要占用一定的芯片资源,再将基本块排布到多级报文处理流水线中。PISA架构资源排布即将P4程序流程图中的各个节点在满足约束条件下排布到流水线各级中,P4程序流程图如图1中(a)所示。约束条件一部分来自P4程序本身具有的控制依赖和数据依赖,一部分来自芯片的资源约束。芯片中的资源包括TCAM、HASH、ALU、QUALIFY四类,流水线中对这四类资源有严格的限制。在实际设计中,为减少连线复杂度,需对各级资源采取一系列复杂的资源约束条件,这些约束条件使得资源排布问题尤为重要。
由于芯片的各类资源均有限,因此,高资源利用率的资源排布算法对于编译器设计具有至关重要的作用。在复杂的PISA架构芯片的内部结构中,程序基本块优化排布方法是保证芯片运行速率的重要技术支撑,通过充分利用流水线的并行优势,最大限度地实现芯片资源的高利用率对提高芯片运行速度、推动信息技术行业发展具有重要研究意义。
发明内容
本发明提供了一种ISA架构芯片内部结构中程序基本块优化排布方法,针对上述背景下的多约束条件PISA架构芯片的资源排布问题,从目标函数的角度入手,分步考虑多约束条件,依次分析基本块之间的控制依赖、数据依赖以及资源占用状态并建立基于约束条件的目标优化模型,以求最大化芯片资源利用率并最小化流水线占用量。
一种PISA架构芯片内部结构中程序基本块优化排布方法,包括步骤如下:
步骤S1,以最小化占用流水线级数为优化目标,在数据依赖、控制依赖和资源限制的复杂约束条件下,基于动态扩增逐层优化调度算法进行建模;
首先根据给定的各基本块在程序流程图中相对位置和各基本块数据流信息,分别构建各基本块之间的控制依赖和数据依赖关系矩阵,同时考虑各基本块之间的资源冲突,建立以占用的流水线级数最少为优化目标的资源芯片排布模型;
步骤S2,在满足程序依赖关系的条件下,构建重要资源优先的基本块调度优先级顺序;各流水线级采用基于基本块优先级逐层优化策略,当资源受限时进行流水线级数动态扩增,将最小化流水线级数问题转换为最大化各级流水线资源利用率问题;
步骤S3,在资源限制条件下,基于动态扩增逐层优化的调度算法解决多约束条件优化问题以求解不同层级下的各级流水线基本块的最优排布方案,并获得所有基本块在各级流水线的排布结果。
针对实际的PISA架构芯片的建立资源排布问题,在数据依赖、控制依赖和资源限制三类约束条件下构建芯片资源排布模型,需要给定其资源排布存在如下约束条件:
(1)控制约束:程序控制流中基本块的先后运行顺序。
(2)数据约束:数据流读写数据的先后顺序。
(3)资源约束:
(a)流水级每级的TCAM资源最大为1;
(b)流水级每级的HASH资源最大为2;
(c)流水级每级的ALU资源最大为56;
(d)流水级每级的QUALIFY资源最大为64;
(e)约定流水线第0级与第16级,第1级与第17级,...,第15级与第31级为折叠级数,折叠的两级TCAM资源加起来最大为1,HASH资源加起来最大为3。注:如果需要的流水线级数超过32级,则从第32开始的级数不考虑折叠资源限制;
(f)有TCAM资源的偶数级数量不超过5;
(g)每个基本块只能排布到一级。
即需给出资源排布算法,列出满足数据依赖、控制依赖以及资源约束规则(1)-(3)时基本块的排布结果,以保证占用的流水线级数尽量短且芯片资源利用率最大。
最后,对给定数据求解基本块最优排布方案为:共需要0~39级流水线,其中第0级分配的基本块最多,共184个基本块。通过对结果进行分析,计算各级的平均资源利用率,并且根据指标对所提模型进行评估,验证了/结果的有效性。
所述动态扩增逐层优化调度算法,根据数据依赖关系和控制依赖关系作为基础,生成程序依赖图,并在此基础上构建基于优先级的逐层优化方案用以保证各基本块之间的依赖约束,进一步利用动态规划方法逐层求解在当前流水线层次资源约束下基本块的最优放置方案,进行流水线动态扩增;最终获得所有基本块在各流水线级上的排布图。
所述的PISA架构芯片内部结构中程序基本块优化排布方法,步骤S1中,基于芯片资源排布问题建模的过程包括:
优化目标:PISA架构芯片处理P4程序进行资源排布的过程中,以占用的流水线级数尽量短为优化目标进行建模;
目标函数:最小化流水线级数J(x;V);
其中,J(·)代表基本块集合V所占用的流水线级数;
决策变量:决策变量xi,j用于判断基本块j是否被分配到流水线第i级;
约束条件:确定模型的约束,给定的约束条件如下:
约束1:基本块的执行顺序间存在控制依赖,该约束条件为:
其中,对于控制依赖,基本块ci和基本块cj是具有控制依赖约束的两个基本块,且基本块ci排布的流水线级数需要小于等于基本块cj排布的流水线级数;e(ci,cj)表示节点ci和节点cj的控制依赖约束边;Ec表示控制依赖图中所有约束边的集合;与分别表示节点ci和cj所占用的流水线级数,xi,j为在第i级中是否存在第j个节点;
约束2:读写变量使得基本块之间存在数据依赖,该约束条件为:
其中,基本块di和基本块dj是具有数据依赖,①表示两个节点间存在写后读或写后写数据依赖关系,②读后写数据依赖关系。e(di,dj)表示节点di和节点dj的控制依赖约束边;Ed表示控制依赖图中所有约束边的集合;与分别表示节点di和dj所占用的流水线级数;
约束3:题目中给定流水线每级的TCAM、HASH、ALU、QUALIFY资源最大限度分别为1,2,56,64,因此有如下资源数量约束:
其中γTCAM(j),γHASH(j),γALU(j),γQUALIFY(j)分别表示流水线基本块j所占用的TACM,HASH,ALU,QUALIFY所占用资源数量,级数i∈[0,N],基本块j∈[0,M];
约束4:此外,题目要求流水线第0级与第16级,第1级与第17级,...,第15级与第31级为折叠级数;
其中,为折叠级数的两级TCAM资源γTCAM加起来最大为1,HASH资源γHASH加起来最大为3;且当需要的流水线级数超过32级,则从第32开始的级数不考虑折叠资源限制;
该折叠约束条件为:
约束5:有TCAM资源的偶数级数量不超过5,该约束条件可表示为:
综上,建立资源排布的数学模型:
所述动态扩增逐层优化调度算法,生成程序依赖图,并在数据依赖关系和控制依赖关系基础上构建基于优先级的逐层优化方案以保证各基本块之间的依赖约束,进一步利用动态规划方法逐层求解在当前流水线层次资源约束下基本块的最优放置方案,进行流水线动态扩增;最终获得所有基本块在各流水线级上的排布图的过程如下:
1)构建程序依赖图,其过程包括:
Step 1:构建P4程序的控制流图:
根据各基本块在流程中的邻接基本信息块构建P4流程图,确定基本块在源程序的执行顺序,确定每个基本块执行后跳转的目的基本块,采用有向无环图DAG抽象源程序的执行顺序;
Step 2:基于支配节点树构建控制依赖矩阵:
从某个基本块出发的路径,只有部分路径通过下游某个基本块时,两个基本块构成控制依赖;根据Step1所得到的程序流程图,通过求解CFG中的基本块的控制依赖关系得到控制依赖图CDG;
Step 3:基于深度优先搜索方法构建数据依赖矩阵:
根据各基本块读写的变量信息得到程序执行数据流存在读写数据依赖,数据依赖约束导致基本块间存在不同级数要求,构建数据依赖矩阵;
2)基于优先级逐层优化方法设计
在程序依赖图PDG的整体基础上,本文设计了基于PDG的基本块逐层优化方法,其具体流程如下:
(1)其首先根据DDG和CDG结合得到PDG,并且层次遍历其中的基本块节点。
(2)选取当前层所有节点用于填充优先级队列。
(3)计算当前层的节点最优化配置方案并从队列中删除对应节点。
(4)其次从删除节点的子结点中挑选出入度为0的节点用于补充优先级队列并回到步骤3,如果队列为空则退出并且输出最优化配置方案;
3)资源约束下流水级数动态扩增
在建立起以优先级遍历基本块的优化步骤之外,还需要考虑在数据约束以及其他题目给定约束条件下流水线层级的基本块最优配置方案。本文设计了一种基于动态规划的资源约束下流水级数动态扩增的资源配置方案。其求解流程具体算法如下:
Step 1:根据优先级逐层优化方法遍历所有基本块节点,设置当前流水线级数。
Step 2:判断基本块优先级队列是否为空,若是则停止并且输出各级最优化基本块放置方案;否则进行下一步。
Step 3:利用动态规划方法求解在资源约束条件下当前基本块优先级队列的基本块最优配置方案,如果最优配置方案为空,也就是当前任何节点都不能放置在当前层,则更新当前层的流水线层级,并且初始化其各项资源用量,并且返回Step 2。
4)动态规划方法求解层级最优分配方案
动态规划方法是一种多步骤优化算法。本题将优化目标设置为需要求解在多种约束下的最小流水级数问题,本文对该问题进行了分解,将求解最小流水级数问题转化成了若干个最大化层级资源利用率问题。
所述的PISA架构芯片内部结构中程序基本块优化排布方法,根据所构建的动态扩增逐层优化调度算法进行建模求解步骤:首先,根据各基本块在流程中的邻接基本信息块生成的控制流图,通过求解CFG中的基本块的控制依赖关系得到控制依赖图CDG;根据各基本块读写的变量信息,基于DFS方法构建数据依赖矩阵;为了获取各基本块之间的优先级顺序,提出构建程序依赖图以赋予各基本块的优先级;
基于优先级逐层优化方法构建基本块节点的调度顺序。
本发明的有益效果在于:
1、本发明针对PISA架构芯片资源排布问题,考虑各基本块间的数据依赖关系、控制依赖关系、各基本块资源占用量,以及芯片内部各级流水线资源限制规则等条件,建立基于多约束条件下的资源排布动态规划模型,求解最优基本块排布方案以最大化资源利用率以减小流水线级数。最后,对给定数据求解基本块最优排布方案为:共需要0~39级流水线,其中第0级分配的基本块最多,共184个基本块。通过对结果进行分析,计算各级的平均资源利用率,并且根据指标对所提模型进行评估,验证了/结果的有效性。
2、本发明以最小化流水线级数为优化目标,在建模时充分考虑了PISA架构芯片的数据依赖、控制依赖和资源依赖三类约束条件,将约束条件抽象成数学语言描述,构建动态扩增优化调度算法进行求解和优化,获取最优资源排布方案。将数据依赖和控制依赖条件转换成程序依赖约束条件,在不考虑资源的情况下为本题提供了较为优的初始解,极大减少了后续寻优的时间复杂度。
3、本发明模型的实用性较强,使得P4程序在PISA架构芯片上运行时具有更高的资源利用率,以及更少的连线复杂度。模型的效率较高,且具有较好的鲁棒性。计算各基本块的可调级数裕量、资源重要性和依赖约束建立调度优先级顺序,逐层优化迭代进行流水线级数动态扩增,使得获取全局最优解。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明PISA架构资源排布示意图;
图2是本发明ISA架构芯片内部结构中程序基本块优化排布方法方框图;
图3是动态扩增逐层优化模型整体流程图;
图4是以P4程序的控制流图为构建基础构建程序依赖图的过程;
图5所示为基于深度优先搜索的数据依赖构建方法流程图;
图6所示为基于优先级逐层优化方法的设计流程图;
图7所示为资源约束下流水级数动态扩增求解流程图;
图8所示为CFG图部分节点;
图9所示为CDG图构建过程示意图;
图10所示为FDT可视化图;
图11所示为CDG部分节点可视化图;
图12所示为数据依赖图DDG部分节点;
图13所示为程序依赖图示意图;
图14所示为优先级逐层优化方案例图;
图15所示为各流水级节点分配方案可视化;
图16所示为控制依赖矩阵可视化;
图17所示为数据依赖矩阵可视化。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
实施例1
如图2所示,本发明PISA架构芯片内部结构中程序基本块优化排布方法,包括步骤如下:
步骤S1,以最小化占用流水线级数为优化目标,在数据依赖、控制依赖和资源限制的复杂约束条件下,基于动态扩增逐层优化调度算法进行建模;
首先根据给定的各基本块在程序流程图中相对位置和各基本块数据流信息,分别构建各基本块之间的控制依赖和数据依赖关系矩阵,同时考虑各基本块之间的资源冲突,建立以占用的流水线级数最少为优化目标的资源芯片排布模型;
步骤S2,在满足程序依赖关系的条件下,构建重要资源优先的基本块调度优先级顺序;各流水线级采用基于基本块优先级逐层优化策略,当资源受限时进行流水线级数动态扩增,将最小化流水线级数问题转换为最大化各级流水线资源利用率问题;
步骤S3,在资源限制条件下,基于动态扩增逐层优化的调度算法解决多约束条件优化问题以求解不同层级下的各级流水线基本块的最优排布方案,并获得所有基本块在各级流水线的排布结果。
在复杂的PISA架构芯片的内部结构中,程序基本块优化排布方法是保证芯片运行速率的重要技术支撑,通过充分利用流水线的并行优势,最大限度地实现芯片资源的高利用率对提高芯片运行速度、推动信息技术行业发展具有重要研究意义。
本发明以最小化占用流水线级数为优化目标,在数据依赖、控制依赖和资源限制的复杂约束条件下,提出基于动态扩增逐层优化调度算法进行建模,求解各级流水线最优基本块排布方案。首先根据给定的各基本块在程序流程图中相对位置和各基本块数据流信息分别构建控制依赖图和数据依赖图,引入程序依赖图用以综合基本块之间的控制依赖和数据依赖关系,从而降低问题的求解难度以方便后续的模型求解。在满足程序依赖关系的条件下,构建重要资源优先的基本块调度优先级顺序。各流水线级采用基于基本块优先级逐层优化策略,当资源受限时进行流水线级数动态扩增,将最小化流水线级数问题转换为最大化各级流水线资源利用率问题,有效实现在资源限制条件下求解各级流水线基本块的最优放置方案,并获得所有基本块在各级流水线的排布结果。对给定数据求解基本块最优排布方案为:共需要0~39级流水线,其中第0级分配的基本块最多,共184个基本块。通过对结果进行分析,计算各级的平均资源利用率,并且根据指标对所提模型进行评估,验证了/结果的有效性。
实施例2
由于芯片的各类资源均有限,因此,高资源利用率的资源排布算法对于编译器设计具有至关重要的作用。
本实施例的PISA架构芯片内部结构中程序基本块优化排布方法,与实施例1不同的是:针对实际的PISA架构芯片的建立资源排布问题,在数据依赖、控制依赖和资源限制三类约束条件下构建芯片资源排布模型,给定了其资源排布存在如下约束条件:
(1)控制约束:程序控制流中基本块的先后运行顺序。
(2)数据约束:数据流读写数据的先后顺序。
(3)资源约束:
(a)流水级每级的TCAM资源最大为1;
(b)流水级每级的HASH资源最大为2;
(c)流水级每级的ALU资源最大为56;
(d)流水级每级的QUALIFY资源最大为64;
(e)约定流水线第0级与第16级,第1级与第17级,...,第15级与第31级为折叠级数,折叠的两级TCAM资源加起来最大为1,HASH资源加起来最大为3。注:如果需要的流水线级数超过32级,则从第32开始的级数不考虑折叠资源限制;
(f)有TCAM资源的偶数级数量不超过5;
(g)每个基本块只能排布到一级。
研究PISA架构芯片在资源约束条件下的资源排布问题,要求针对P4流程图,构建各基本块之间的控制依赖和数据依赖关系构建依赖关系矩阵,同时考虑各基本块之间的资源冲突,建立以占用的流水线级数最少为优化目标的资源芯片排布模型。本发明采用基于动态扩增逐层优化的调度算法解决多约束条件优化问题以求解不同层级下的最优基本块排布方案。最后,对结果进行分析,并且通过根据指标对所提模型进行评估以验证算法的有效性。
本发明解题思路框图如图2所示。针对多约束条件PISA架构芯片的资源排布问题,从目标函数的角度入手,分步考虑多约束条件。依次分析基本块之间的控制依赖、数据依赖以及资源占用状态并建立基于约束条件的目标优化模型,给出资源排布算法,列出满足数据依赖、控制依赖以及资源约束规则(1)-(3)时基本块的排布结果,以保证占用的流水线级数尽量短且芯片资源利用率最大,以求最大化芯片资源利用率并最小化流水线占用量。
实施例3
如图3所示,本实施例的PISA架构芯片内部结构中程序基本块优化排布方法,与实施例1、2不同的是,所述动态扩增逐层优化调度算法,根据数据依赖关系和控制依赖关系作为基础,生成程序依赖图,并在此基础上构建基于优先级的逐层优化方案用以保证各基本块之间的依赖约束,进一步利用动态规划方法逐层求解在当前流水线层次资源约束下基本块的最优放置方案,进行流水线动态扩增;最终获得所有基本块在各流水线级上的排布图。
针对上述背景下的多约束条件PISA架构芯片的资源排布问题,本发明从目标函数的角度入手,分步考虑多约束条件,根据资源排布算法,依次分析基本块之间的控制依赖、数据依赖以及资源占用状态并建立基于约束条件的目标优化模型,列出满足数据依赖、控制依赖以及前述资源约束规则时基本块的排布结果,以求最大化芯片资源利用率并最小化流水线占用量。以保证占用的流水线级数尽量短且芯片资源利用率最大。
其前提是需要依次考虑三大约束条件,给定各基本块在流图中的邻接基本块构建P4程序流程图,满足程序运行的控制依赖关系条件下的级数排布;满足各基本块在读取数据流时造成的数据依赖条件下的级数排布;满足各基本块的四种资源信息条件下的级数分布。条件:根据上述问题分析,按照(1)-(3)资源约束条件的要求进行PISA芯片资源排布;实现目标:基于上述前提和条件,最小化占用的流水线的级数,给出基本块排布结果。
实施例4
本实施例的PISA架构芯片内部结构中程序基本块优化排布方法,其前述各实施例不同的是:步骤S1中,基于芯片资源排布问题建模的过程包括:
优化目标:PISA架构芯片处理P4程序进行资源排布的过程中,以占用的流水线级数尽量短为优化目标进行建模;
目标函数:最小化流水线级数J(x;V)
其中,J(·)代表基本块集合V所占用的流水线级数;
决策变量:决策变量xi,j用于判断基本块j是否被分配到流水线第i级;
约束条件:确定模型的约束,给定的约束条件如下:
约束1:基本块的执行顺序间存在控制依赖,该约束条件为:
其中,对于控制依赖,基本块ci和基本块cj是具有控制依赖约束的两个基本块,且基本块ci排布的流水线级数需要小于等于基本块cj排布的流水线级数;e(ci,cj)表示节点ci和节点cj的控制依赖约束边;Ec表示控制依赖图中所有约束边的集合;与分别表示节点ci和cj所占用的流水线级数,xi,j为在第i级中是否存在第j个节点;
约束2:读写变量使得基本块之间存在数据依赖,该约束条件为:
其中,基本块di和基本块dj是具有数据依赖,①表示两个节点间存在写后读或写后写数据依赖关系,②读后写数据依赖关系。e(di,dj)表示节点di和节点dj的控制依赖约束边;Ed表示控制依赖图中所有约束边的集合;与分别表示节点di和dj所占用的流水线级数;
约束3:题目中给定流水线每级的TCAM、HASH、ALU、QUALIFY资源最大限度分别为1,2,56,64,因此有如下资源数量约束:
其中γTCAM(j),γHASH(j),γALU(j),γQUALIFY(j)分别表示流水线基本块j所占用的TACM,HASH,ALU,QUALIFY所占用资源数量,级数i∈[0,N],基本块j∈[0,M];
约束4:此外,题目要求流水线第0级与第16级,第1级与第17级,...,第15级与第31级为折叠级数;
其中,为折叠级数的两级TCAM资源γTCAM加起来最大为1,HASH资源γHASH加起来最大为3;且当需要的流水线级数超过32级,则从第32开始的级数不考虑折叠资源限制;
该折叠约束条件为:
约束5:有TCAM资源的偶数级数量不超过5,该约束条件可表示为:
综上,建立资源排布的数学模型:
实施例5
本实施例的PISA架构芯片内部结构中程序基本块优化排布方法,其实施例4不同的是:步骤S1中,所述动态扩增逐层优化调度算法,生成程序依赖图,并在数据依赖关系和控制依赖关系基础上构建基于优先级的逐层优化方案以保证各基本块之间的依赖约束,进一步利用动态规划方法逐层求解在当前流水线层次资源约束下基本块的最优放置方案,进行流水线动态扩增;最终获得所有基本块在各流水线级上的排布图的过程如下:
1)构建程序依赖图,其过程包括:
Step 1:构建P4程序的控制流图:
根据各基本块在流程中的邻接基本信息块构建P4流程图,确定基本块在源程序的执行顺序,确定每个基本块执行后跳转的目的基本块,从而采用有向无环图DAG抽象源程序的执行顺序;
Step 2:基于支配节点树构建控制依赖矩阵:
从某个基本块出发的路径,只有部分路径通过下游某个基本块时,两个基本块构成控制依赖;根据Step1所得到的程序流程图,通过求解CFG中的基本块的控制依赖关系得到控制依赖图CDG;
Step 3:基于深度优先搜索方法构建数据依赖矩阵:
根据各基本块读写的变量信息得到程序执行数据流存在读写数据依赖,数据依赖约束导致基本块间存在不同级数要求,构建数据依赖矩阵;
2)基于优先级逐层优化方法设计
在程序依赖图PDG的整体基础上,设计了基于PDG的基本块逐层优化方法,其流程如下:
(1)首先根据DDG和CDG结合得到PDG,并且层次遍历其中的基本块节点;
(2)选取当前层所有节点用于填充优先级队列;
(3)计算当前层的节点最优化配置方案并从队列中删除对应节点;
(4)其次从删除节点的子结点中挑选出入度为0的节点用于补充优先级队列并回到步骤3,如果队列为空则退出并且输出最优化配置方案;
3)资源约束下流水级数动态扩增
在建立起以优先级遍历基本块的优化步骤之外,还需要考虑在数据约束以及其他题目给定约束条件下流水线层级的基本块最优配置方案。本发明设计了一种基于动态规划的资源约束下流水级数动态扩增的资源配置方案,其求解流程如图3所示,具体算法的流程如下:
Step 1:根据优先级逐层优化方法遍历所有基本块节点,设置当前流水线级数s=0;
Step 2:判断基本块优先级队列是否为空,若是则停止并且输出各级最优化基本块放置方案;否则进行下一步;
Step 3:利用动态规划方法求解在资源约束条件下当前基本块优先级队列的基本块最优配置方案,如果最优配置方案为空,也就是当前任何节点都不能放置在当前层,则更新当前层的流水线层级i=iold+1,并且初始化其各项资源用量,并且返回Step 2。
4)动态规划方法求解层级最优分配方案
动态规划方法是一种多步骤优化算法。本题将优化目标设置为需要求解在多种约束下的最小流水级数问题,本文对该问题进行了分解,将求解最小流水级数问题转化成了若干个最大化层级资源利用率问题。
如图3、图7、图8-10所示,根据所构建的动态扩增逐层优化调度算法进行建模求解,步骤如下:首先,根据各基本块在流程中的邻接基本信息块生成的控制流图,通过求解CFG中的基本块的控制依赖关系得到控制依赖图CDG;根据各基本块读写的变量信息,基于DFS方法构建数据依赖矩阵;为了获取各基本块之间的优先级顺序,提出构建程序依赖图以赋予各基本块的优先级;基于优先级逐层优化方法构建基本块节点的调度顺序。
实施例6
本发明研究了PISA架构芯片在资源约束条件下的资源排布问题。根据P4流程图,构建各基本块之间的控制依赖和数据依赖关系构建依赖关系矩阵,同时考虑各基本块之间的资源冲突,建立以占用的流水线级数最少为优化目标的资源芯片排布模型。提出基于动态扩增逐层优化的调度算法解决多约束条件优化问题以求解不同层级下的最优基本块排布方案。最后,对结果进行分析,并且通过根据指标对所提模型进行评估以验证算法的有效性。
具体解题思路框图如图2所示。包括步骤如下:
步骤S1,以最小化占用流水线级数为优化目标,在数据依赖、控制依赖和资源限制的复杂约束条件下,基于动态扩增逐层优化调度算法进行建模;
首先根据给定的各基本块在程序流程图中相对位置和各基本块数据流信息,分别构建各基本块之间的控制依赖和数据依赖关系矩阵,同时考虑各基本块之间的资源冲突,建立以占用的流水线级数最少为优化目标的资源芯片排布模型;
步骤S2,在满足程序依赖关系的条件下,构建重要资源优先的基本块调度优先级顺序;各流水线级采用基于基本块优先级逐层优化策略,当资源受限时进行流水线级数动态扩增,将最小化流水线级数问题转换为最大化各级流水线资源利用率问题;
步骤S3,在资源限制条件下,基于动态扩增逐层优化的调度算法解决多约束条件优化问题以求解不同层级下的各级流水线基本块的最优排布方案,并获得所有基本块在各级流水线的排布结果。
具体的,芯片资源排布问题的模型建立过程,包括:
优化目标:PISA架构芯片处理P4程序进行资源排布的过程中,需要以占用的流水线级数尽量短为优化目标进行建模。
目标函数:最小化流水线级数J(x;V)。
其中,J(·)代表基本块集合V所占用的流水线级数。
决策变量:决策变量xi,j用于判断基本块j是否被分配到流水线第i级。
约束条件:确定模型的约束,此问题给定的约束条件如下:
约束1:基本块的执行顺序间存在控制依赖,该约束条件为:
其中,对于控制依赖,基本块ci和基本块cj是具有控制依赖约束的两个基本块,且基本块ci排布的流水线级数需要小于等于基本块cj排布的流水线级数;e(ci,cj)表示节点ci和节点cj的控制依赖约束边;Ec表示控制依赖图中所有约束边的集合;与分别表示节点ci和cj所占用的流水线级数,xi,j为在第i级中是否存在第j个节点。
约束2:读写变量使得基本块之间存在数据依赖,该约束条件为:
其中,基本块di和基本块dj是具有数据依赖,①表示两个节点间存在写后读或写后写数据依赖关系,②读后写数据依赖关系。e(di,dj)表示节点di和节点dj的控制依赖约束边;Ed表示控制依赖图中所有约束边的集合;与分别表示节点di和dj所占用的流水线级数。
约束3:题目中给定流水线每级的TCAM、HASH、ALU、QUALIFY资源最大限度分别为1,2,56,64,因此有如下资源数量约束:
其中γTCAM(j),γHASH(j),γALU(j),γQUALIFY(j)分别表示流水线基本块j所占用的TACM,HASH,ALU,QUALIFY所占用资源数量,级数i∈[0,N],基本块j∈[0,M]。
约束4:此外,题目要求流水线第0级与第16级,第1级与第17级,...,第15级与第31级为折叠级数。其中,为折叠级数的两级TCAM资源γTCAM加起来最大为1,HASH资源γHASH加起来最大为3。且当需要的流水线级数超过32级,则从第32开始的级数不考虑折叠资源限制。因此,该折叠约束条件为:
约束5:此外,有TCAM资源的偶数级数量不超过5,该约束条件可表示为:
综上所述,可以建立问题一的数学模型为:
本发明针对现有程序任务调度算法存在复用性差、优先级确认困难、效率低等问题,提出了一种基于动态扩增逐层优化的基本块调度算法,在满足三类约束条件前提下,提高芯片资源利用率、减少连线复杂度。该算法根据数据依赖关系和控制依赖关系作为基础,生成程序依赖图,并在此基础上构建基于优先级的逐层优化方案用以保证各基本块之间的依赖约束,进一步利用动态规划方法逐层求解在当前流水线层次资源约束下基本块的最优放置方案,进行流水线动态扩增。最终,可获得所有基本块在各流水线级上的排布图。动态扩增逐层优化模型的整体流程图如图3所示。
所述动态扩增逐层优化调度算法,具体过程包括如下步骤:
1)构建程序依赖图
为了获取各基本块之间的完整的依赖关系,提出构建程序依赖图(PDG)以赋予各基本块的优先级。程序依赖图是基本块之间数据依赖和控制依赖关系的图形化描述,其构建过程如图4所示,以P4程序的控制流图为构建基础,根据生成的数据依赖图Gd=(Vd,Ed)和控制依赖图Gc=(Vc,Ec)为支撑,联合生成程序依赖图。
将数据依赖图Gd的边增加到控制依赖图Gc,生成程序依赖图Gp=(Vp,Ep),然后对其进行剪枝校正以保证仍为有向无环图,且所有依赖关系仍存在。
具体构建流程如下:
Step 1:构建P4程序的控制流图。根据各基本块在流程中的邻接基本信息块构建P4流程图,通过流程图可以确定基本块在源程序的执行顺序,确定每个基本块执行后跳转的目的基本块,从而采用有向无环图DAG抽象源程序的执行顺序。
Step 2:基于支配节点树构建控制依赖矩阵。从某个基本块出发的路径,只有部分路径通过下游某个基本块时,两个基本块构成控制依赖。根据Step1所得到的程序流程图,可知基本块中存在控制依赖,因此,本文通过求解CFG中的基本块的控制依赖关系得到控制依赖图CDG,其具体计算过程如下:
输入:控制流图
(1)在CFG图G中新的入口节点vnew_in与新的出口节点vnew_out,分别添加边enew=<vnew,vin>与enew_out=<vout,vnew_out>,其中出口节点vout可能有多个。
(3)构建图G′的前向支配树FDT,并存储为邻接矩阵,记为GFDT。
(4)结合CFG图G与前向支配树GFDT计算控制依赖图。
输出:控制依赖图
以上计算过程中,为保证能够计算方便,本文引入了虚拟节点。具体来说,对于一张有向无环图,如果其中有多个入口节点,那么将会构建一个虚拟入口节点将其设置为图的所有入口节点的前驱节点,并且在新的入口节点和原来的入口节点之间添加一条有向边。同样的,如果存在多个出口节点,也会构建一个虚拟出口节点,并且在原出口节点和新的出口节点之间添加一条有向边。这样能够保证逆流程图G′中只存在一个入口节点。
Step 3:基于深度优先搜索方法构建数据依赖矩阵。数据依赖是基本块之间对变量的操作的数据流造成的一种约束,根据各基本块读写的变量信息可以得到程序执行数据流存在读写数据依赖,数据依赖约束导致基本块间存在不同级数要求。在PISA架构中,基本块AB间存在写后读数据依赖和写后写数据依赖时,基本块A排布的流水线级数需要小于基本块B的级数,而当两个基本块存在读后写数据依赖时,则基本块A排布的流水线级数小于或等于基本块B的级数,因此需要构建数据依赖矩阵。考虑本题涉及的基本块数量较多且控制流图的层次较深,采用基于深度优先搜索方法(DFS)构建数据依赖矩阵,DFS是图搜索算法之一,以递归处理所有节点,搜索直至边界。基于DFS方法构建的数据依赖矩阵,其具体操作流程图如图5所示。
构建的具体步骤如下:
输入数据;采用深度优先搜索方法(DFS)遍历控制流程图CFG的所有节点;
遍历当前节点读写操作的所有变量;
(a)查询操作该变量的上一节点的行为指令;
(b)记录当前节点与操作变量的上一节点之间的数据依赖,设置先写后读,先读后写,先写后写三种数据依赖分别为1,2,3等级;
(c)存储最近一个节点对当前变量的行为指令;
输出:数据依赖矩阵
2)基于优先级逐层优化方法设计
基本块在资源重要性和程序依赖的基础上,设计综合两者的优先级调度算法用于确定基本块节点的调度顺序。基于程序依赖图优先级的节点优先级Wj(PDG)设置为在图PDG中初始点到节点j的最大深度,最大深度越大表明在节点j放置之前,需要放置的节点越多,那节点j的重要性就越小。基于资源重要性的节点优先级Wj(R)设置为该节点对应资源的数量乘以该种资源权重从而得到其优先级,具体而言,因为流水线中同一层级的可调用资源有限,那么每种资源具有不同重要性,本文分别设置TCAM,HASH,ALU,QUALIFY重要性分别为WTCAM,WHASH,WALU与WQUALIFY。节点j的重要性为两种优先级之和:
在程序依赖图PDG的整体基础上,设计基于PDG的基本块逐层优化方法,具体流程如下:
(1)其首先根据DDG和CDG结合得到PDG,并且层次遍历其中的基本块节点。
(2)选取当前层所有节点用于填充优先级队列。
(3)计算当前层的节点最优化配置方案并从队列中删除对应节点。
(4)其次从删除节点的子结点中挑选出入度为0的节点用于补充优先级队列并回到步骤3,如果队列为空则退出并且输出最优化配置方案。
如图6所示,给出了详细的基于优先级逐层优化方法的设计流程图。
3)资源约束下流水级数动态扩增
在建立起以优先级遍历基本块的优化步骤之外,还需要考虑在数据约束以及其他题目给定约束条件下流水线层级的基本块最优配置方案。本文设计了一种基于动态规划的资源约束下流水级数动态扩增的资源配置方案。其求解流程如图7所示,具体算法的流程如下:
Step 1:根据优先级逐层优化方法遍历所有基本块节点,设置当前流水线级数s=0。
Step 2:判断基本块优先级队列是否为空,若是则停止并且输出各级最优化基本块放置方案;否则进行下一步。
Step 3:利用动态规划方法求解在资源约束条件下当前基本块优先级队列的基本块最优配置方案,如果最优配置方案为空,也就是当前任何节点都不能放置在当前层,则更新当前层的流水线层级i=iold+1,并且初始化其各项资源用量,并且返回Step 2。
Step 4:将最优放置方案中所涉及的所有基本块出队列,更新当前级流水线中各项资源的剩余值。
其中RTCAM(i),RHASH(i),RALU(i),RQUALIFY(i)分别表示第i层中TCAM,HASH,ALU以及QUALIFY资源所剩余的量,j表示放置的节点编号。
Step 5:根据优先级逐层优化方法对优先级队列进行填充,返回Step 2。
4)动态规划方法求解层级最优分配方案
动态规划方法是一种多步骤优化算法。本题将优化目标设置为需要求解在多种约束下的最小流水级数问题,本文对该问题进行了分解,将求解最小流水级数问题转化成了若干个最大化层级资源利用率问题。构建每级流水线节点放置目标函数为:
其中i指的是流水线的级数,N指的是总共有N个基本块。对于优先级队列中存在的若干个节点Q=q1,q2,...,qn,其中n为优先队列中的节点总数。其动态转移方程为:
RUj,r(i)=min(RUj-1,r(i),RUj,r-1(i))+RUj,r(i)(5.16)
其中RUi,r(j)表示在流水线第i级时优先级队列前j个节点在资源量剩余量为r时候的资源利用率;
5)求解过程
根据所构建的动态扩增逐层优化调度算法进行建模求解,具体求解部分步骤如下:
首先,根据各基本块在流程中的邻接基本信息块生成的控制流图(CFG)图G=(V,E)的部分节点,如下图8所示,其中V={v0,v1,...,vn}是基本块的集合,E代表有向边e的集合。
从某个基本块出发的路径,只有部分路径通过下游某个基本块时,两个基本块构成控制依赖。根据所得到的程序流程图,可知基本块中存在控制依赖,因此,本文通过求解CFG中的基本块的控制依赖关系得到控制依赖图CDG,图9展示了根据CFG生成FDT并计算得到CDG图的流程示意图,其中节点E指的是创建出的虚拟节点。FDT图可视化结果如图10所示。
基于以上方法得到了控制依赖图CDG图Gc=(Vc,Ec),该图的最长路径为28,其中第一列为基本块序号,行代表与该基本块具有控制依赖的所有基本块。CDG图中节点依赖关系如图11所示,为方便可视化,选取部分节点进行展示。
根据各基本块读写的变量信息,基于DFS方法构建数据依赖矩阵,为方便展示所生成的数据依赖矩阵,可视化生成了数据依赖图(DDG)Gd=(Vd,Ed),部分节点如图12所示。具体各基本块间的数据依赖矩阵中记录了具有数据依赖的基本块序号和其对应的数据依赖类型。
为了获取各基本块之间的优先级顺序,提出构建程序依赖图(PDG)以赋予各基本块的优先级。程序依赖图是基本块之间数据依赖和控制依赖关系的图形化描述,其构建过程是将数据依赖图Gd的边增加到控制依赖图Gc,生成程序依赖图Gp=(Vp,Ep),然后对其进行剪枝校正以保证仍为有向无环图,且所有依赖关系仍存在,如图13所示:
基于优先级逐层优化方法构建基本块节点的调度顺序,其示意图如图14所示。其中,以优先级降序的形式记录了各基本块的优先级程度。
此外,为详细解释动态规划方法的求解最优化流水线层级基本块节点配置方案。模拟例子用来详细说明动态规划求解过程,假设存在3个节点的资源需求情况如表5-1所示,该三个节点都在优先级队列中,此时考虑其在流水线层级i中的资源放置情况,假设流水线层级中最大的资源量为γ=10,各项资源γTCAM,γHASH,γALU与γQUALIFY的最大资源容量分别1,2,3,4,利用动态规划方法创建的资源利用率矩阵如表5-2所示。
其中,表5-2的第i行第j列的元素表示在考虑前i个节点中,最大使用资源为j的情况下最大的资源利用率。在矩阵遍历结束之后发现,在当前流水线层级最优的放置方案为放置节点1与2,其中节点0并没有放置因为其和节点2存在HASH资源冲突。于是将流水线级数加1并且将节点1放置在第二层,最终在该案例中流水线各级资源占用分布情况如表5-3所示。
表5-1假设各节点资源需求情况
表5-2资源利用率矩阵
表5-3流水线各级资源占用分布情况
结果分析
综上,根据动态扩增逐层优化调度算法构建资源排布模型,可求解给定数据依赖约束、控制依赖约束和资源约束条件下的最优资源排布结果,部分结果如表5-4所示,全部结果展示在支撑材料中。共有607个基本块和39级流水线级数,排布结果可视化如图15所示。
表5-4各级流水线基本块排布结果
此外,对控制依赖矩阵和数据依赖矩阵分别进行可视化。由于各基本块间,因此控制依赖矩阵仅存在0,1值。如图16所示,黑色代表0,白色代表1,白色部位代表存在控制依赖。而数据依赖具有写后读依赖、读后写依赖和写后写依赖三种数据依赖关系,如图17所示展示了各基本块间的数据依赖。
模型评估与性能分析,验证算法的有效性
在本题中所提模型中,以最小化流水线级数为优化目标,构建动态扩增逐层优化调度算法进行求解和优化。动态扩增逐层优化调度算法主要包括四个阶段:构建程序依赖图、计算可调级数、基于优先级逐层优化以及流水线级数动态扩增。本问题首先构建数据依赖和控制依赖关系,引入程序依赖图使得数据依赖和控制依赖约束条件转换成程序依赖约束条件,降低了问题的求解难度,以方便后续的模型求解。通过对程序依赖图进行校正,保证数据依赖和控制依赖的前提下仍为有向无环图,保证在不考虑资源的情况下为本题提供了较优的初始解,极大地减少了后续寻找最优解的时间。其次,计算各基本块可调级数裕量,综合程序依赖关系以构建可参考的调度优先级顺序,以获得初始调度基本块。基于优先级逐层优化,有效进行流水线级数动态扩增,展现了较好的寻优效果。
本问题为单目标多约束条件优化问题,为使得PISA架构芯片中各流水线基本块的排布结果更加科学、有效,本文以各级资源利用率和资源均匀率作为指标评价,具体可定义为:
RU(Resource Utilization rate):表示资源利用率(%),是已使用资源量与总资源量之间的比值。RUavg表示各级资源利用率的平均值,RU(i)表示为第i级流水线的资源利用率。
应用模型求解问题一获得最优基本块排布方案,计算各级资源利用率和结果如表5-5所示,由于存在资源限制和依赖约束,导致级数越大资源利用越低,但前几级资源利用率较高。综合而言,该模型实现了在尽量少的级数占用的情况下,最大化资源利用率。
表5-5各级流水线资源利用率情况
模型的优点(1)该模型以最小化流水线级数为优化目标,本文在建模时充分考虑了PISA架构芯片的数据依赖、控制依赖和资源依赖三类约束条件,将约束条件抽象成数学语言描述,构建动态扩增优化调度算法进行求解和优化,获取最优资源排布方案。(2)本文将数据依赖和控制依赖条件转换成程序依赖约束条件,在不考虑资源的情况下为本题提供了较为优的初始解,极大减少了后续寻优的时间复杂度。计算各基本块的可调级数裕量、资源重要性和依赖约束建立调度优先级顺序,逐层优化迭代进行流水线级数动态扩增,使得获取全局最优解。(3)模型的实用性较强,使得P4程序在PISA架构芯片上运行时具有更高的资源利用率,以及更少的连线复杂度。(4)模型的效率较高,且具有较好的鲁棒性。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
为了便于问题的研究,本文中对于题目中某些条件进行简化及合理的假设。忽略基本块之间的通讯时间;P4流程图中存在多个出口节点,构建虚拟节点将出口与其相连,虚拟节点不影响层级划分当前程序的运行不会受到外部其他程序的影响。
对于涉及符号,说明如下:
Claims (8)
1.一种PISA架构芯片内部结构中程序基本块优化排布方法,其特征在于:包括步骤如下:
步骤S1,以最小化占用流水线级数为优化目标,在数据依赖、控制依赖和资源限制的复杂约束条件下,基于动态扩增逐层优化调度算法进行建模;
首先根据给定的各基本块在程序流程图中相对位置和各基本块数据流信息,分别构建各基本块之间的控制依赖和数据依赖关系矩阵,同时考虑各基本块之间的资源冲突,建立以占用的流水线级数最少为优化目标的资源芯片排布模型;
步骤S2,在满足程序依赖关系的条件下,构建重要资源优先的基本块调度优先级顺序;
各流水线级采用基于基本块优先级逐层优化策略,当资源受限时进行流水线级数动态扩增,将最小化流水线级数问题转换为最大化各级流水线资源利用率问题;
步骤S3,在资源限制条件下,基于动态扩增逐层优化的调度算法解决多约束条件优化问题以求解不同层级下的各级流水线基本块的最优排布方案,并获得所有基本块在各级流水线的排布结果。
2.根据权利要求1所述的PISA架构芯片内部结构中程序基本块优化排布方法,其特征在于:步骤S3中,根据数据依赖、控制依赖和资源限制的复杂约束条件,按照如下资源约束条件进行PISA芯片资源排布:
(1)控制约束:程序控制流中基本块的先后运行顺序;
(2)数据约束:数据流读写数据的先后顺序;
(3)资源约束:根据资源排布算法,列出满足数据依赖、控制依赖以及前述资源约束规则时基本块的排布结果,以保证占用的流水线级数尽量短且芯片资源利用率最大。
3.根据权利要求1或2所述的PISA架构芯片内部结构中程序基本块优化排布方法,其特征在于:所述动态扩增逐层优化调度算法,根据数据依赖关系和控制依赖关系作为基础,生成程序依赖图,并在此基础上构建基于优先级的逐层优化方案用以保证各基本块之间的依赖约束,进一步利用动态规划方法逐层求解在当前流水线层次资源约束下基本块的最优放置方案,进行流水线动态扩增;最终获得所有基本块在各流水线级上的排布图。
4.根据权利要求1或2所述的PISA架构芯片内部结构中程序基本块优化排布方法,其特征在于:步骤S1中,基于芯片资源排布问题建模的过程包括:
优化目标:PISA架构芯片处理P4程序进行资源排布的过程中,以占用的流水线级数尽量短为优化目标进行建模;
目标函数:最小化流水线级数J(x;V);
其中,J(·)代表基本块集合V所占用的流水线级数;
决策变量:决策变量xi,j用于判断基本块j是否被分配到流水线第i级;
约束条件:确定模型的约束,给定的约束条件如下:
约束1:基本块的执行顺序间存在控制依赖,该约束条件为:
其中,对于控制依赖,基本块ci和基本块cj是具有控制依赖约束的两个基本块,且基本块ci排布的流水线级数需要小于等于基本块cj排布的流水线级数;e(ci,cj)表示节点ci和节点cj的控制依赖约束边;Ec表示控制依赖图中所有约束边的集合;与分别表示节点ci和cj所占用的流水线级数,xi,j为在第i级中是否存在第j个节点;
约束2:读写变量使得基本块之间存在数据依赖,该约束条件为:
其中,基本块di和基本块dj是具有数据依赖,①表示两个节点间存在写后读或写后写数据依赖关系,②读后写数据依赖关系;e(di,dj)表示节点di和节点dj的控制依赖约束边;Ed表示控制依赖图中所有约束边的集合;与分别表示节点di和dj所占用的流水线级数;
约束3:题目中给定流水线每级的TCAM、HASH、ALU、QUALIFY资源最大限度分别为1,2,56,64,因此有如下资源数量约束:
其中γTCAM(j),γHASH(j),γALU(j),γQUALIFY(j)分别表示流水线基本块j所占用的TACM,HASH,ALU,QUALIFY所占用资源数量,级数i∈[0,N],基本块j∈[0,M];
约束4:此外,题目要求流水线第0级与第16级,第1级与第17级,...,第15级与第31级为折叠级数;
其中,为折叠级数的两级TCAM资源γTCAM加起来最大为1,HASH资源γHASH加起来最大为3;且当需要的流水线级数超过32级,则从第32开始的级数不考虑折叠资源限制;
该折叠约束条件为:
约束5:有TCAM资源的偶数级数量不超过5,该约束条件可表示为:
综上,建立资源排布的数学模型:
5.根据权利要求4所述的ISA架构芯片内部结构中程序基本块优化排布方法,其特征在于:步骤S1中,所述动态扩增逐层优化调度算法,生成程序依赖图,并在数据依赖关系和控制依赖关系基础上构建基于优先级的逐层优化方案以保证各基本块之间的依赖约束,进一步利用动态规划方法逐层求解在当前流水线层次资源约束下基本块的最优放置方案,进行流水线动态扩增;最终获得所有基本块在各流水线级上的排布图的过程如下:
1)构建程序依赖图,其过程包括:
Step 1:构建P4程序的控制流图:
根据各基本块在流程中的邻接基本信息块构建P4流程图,确定基本块在源程序的执行顺序,确定每个基本块执行后跳转的目的基本块,从而采用有向无环图DAG抽象源程序的执行顺序;
Step 2:基于支配节点树构建控制依赖矩阵:
从某个基本块出发的路径,只有部分路径通过下游某个基本块时,两个基本块构成控制依赖;根据Step1所得到的程序流程图,通过求解CFG中的基本块的控制依赖关系得到控制依赖图CDG;
Step 3:基于深度优先搜索方法构建数据依赖矩阵:
根据各基本块读写的变量信息得到程序执行数据流存在读写数据依赖,数据依赖约束导致基本块间存在不同级数要求,构建数据依赖矩阵;
2)基于优先级逐层优化方法设计
在程序依赖图PDG的整体基础上,设计基于PDG的基本块逐层优化方法,其流程如下:
(1)其首先根据DDG和CDG结合得到PDG,并且层次遍历其中的基本块节点;
(2)选取当前层所有节点用于填充优先级队列;
(3)计算当前层的节点最优化配置方案并从队列中删除对应节点;
(4)其次从删除节点的子结点中挑选出入度为0的节点用于补充优先级队列并回到步骤3,如果队列为空则退出并且输出最优化配置方案;
3)资源约束下流水级数动态扩增
在建立起以优先级遍历基本块的优化步骤之外,还需要考虑在数据约束以及其他题目给定约束条件下流水线层级的基本块最优配置方案,设计基于动态规划的资源约束下流水级数动态扩增的资源配置方案,其求解流程具体算法如下:
Step 1:根据优先级逐层优化方法遍历所有基本块节点,设置当前流水线级数;
Step 2:判断基本块优先级队列是否为空,若是则停止并且输出各级最优化基本块放置方案;否则进行下一步;
Step 3:利用动态规划方法求解在资源约束条件下当前基本块优先级队列的基本块最优配置方案,如果最优配置方案为空,也就是当前任何节点都不能放置在当前层,则更新当前层的流水线层级,并且初始化其各项资源用量,并且返回Step 2;
4)动态规划方法求解层级最优分配方案
将优化目标设置为需要求解在多种约束下的最小流水级数问题,对该问题进行了分解,将求解最小流水级数问题转化成了若干个最大化层级资源利用率问题。
6.根据权利要求5所述的ISA架构芯片内部结构中程序基本块优化排布方法,其特征在于:Step 2:根据Step1所得到的程序流程图,通过求解CFG中的基本块的控制依赖关系得到控制依赖图CDG,其计算过程如下:
输入:控制流图;输出:控制依赖图:
(1)在CFG图G中新的入口节点vnew_in与新的出口节点vnew_out,分别添加边enew=<vnew,vin>与enew_out=<vout,vnew_out>,其中出口节点vout可能有多个;
(3)构建图G′的前向支配树FDT,并存储为邻接矩阵,记为GFDT;
(4)结合CFG图G与前向支配树GFDT计算控制依赖图。
7.根据权利要求5所述的ISA架构芯片内部结构中程序基本块优化排布方法,其特征在于:Step 3:基于深度优先搜索方法构建数据依赖矩阵:根据各基本块读写的变量信息得到程序执行数据流存在读写数据依赖,数据依赖约束导致基本块间存在不同级数要求,构建数据依赖矩阵的步骤如下:
输入数据,采用深度优先搜索方法遍历控制流程图CFG的所有节点;
遍历当前节点读写操作的所有变量;
(a)查询操作该变量的上一节点的行为指令;
(b)记录当前节点与操作变量的上一节点之间的数据依赖,设置先写后读,先读后写,先写后写三种数据依赖分别为1,2,3等级;
(c)存储最近一个节点对当前变量的行为指令;
输出:数据依赖矩阵。
8.根据权利要求5、6或7所述的PISA架构芯片内部结构中程序基本块优化排布方法,其特征在于:根据所构建的动态扩增逐层优化调度算法进行建模求解,步骤如下:
首先,根据各基本块在流程中的邻接基本信息块生成的控制流图,通过求解CFG中的基本块的控制依赖关系得到控制依赖图CDG;
根据各基本块读写的变量信息,基于DFS方法构建数据依赖矩阵;
为了获取各基本块之间的优先级顺序,提出构建程序依赖图以赋予各基本块的优先级;基于优先级逐层优化方法构建基本块节点的调度顺序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310079077.1A CN116432575A (zh) | 2023-02-08 | 2023-02-08 | 一种pisa架构芯片内部结构中程序基本块优化排布方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310079077.1A CN116432575A (zh) | 2023-02-08 | 2023-02-08 | 一种pisa架构芯片内部结构中程序基本块优化排布方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116432575A true CN116432575A (zh) | 2023-07-14 |
Family
ID=87078496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310079077.1A Withdrawn CN116432575A (zh) | 2023-02-08 | 2023-02-08 | 一种pisa架构芯片内部结构中程序基本块优化排布方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116432575A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117408220A (zh) * | 2023-12-15 | 2024-01-16 | 湖北工业大学 | 一种可编程交换架构芯片资源排布方法及装置 |
-
2023
- 2023-02-08 CN CN202310079077.1A patent/CN116432575A/zh not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117408220A (zh) * | 2023-12-15 | 2024-01-16 | 湖北工业大学 | 一种可编程交换架构芯片资源排布方法及装置 |
CN117408220B (zh) * | 2023-12-15 | 2024-02-23 | 湖北工业大学 | 一种可编程交换架构芯片资源排布方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5889999A (en) | Method and apparatus for sequencing computer instruction execution in a data processing system | |
US6381739B1 (en) | Method and apparatus for hierarchical restructuring of computer code | |
Erbas et al. | Multiobjective optimization and evolutionary algorithms for the application mapping problem in multiprocessor system-on-chip design | |
Peymandoust et al. | Automatic instruction set extension and utilization for embedded processors | |
Balasa et al. | Background memory area estimation for multidimensional signal processing systems | |
Clark et al. | Automated custom instruction generation for domain-specific processor acceleration | |
US6421809B1 (en) | Method for determining a storage bandwidth optimized memory organization of an essentially digital device | |
JP3664473B2 (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
US20140019949A1 (en) | Method and System for Automated Improvement of Parallelism in Program Compilation | |
Yin et al. | Memory-aware loop mapping on coarse-grained reconfigurable architectures | |
Jacquelin et al. | On optimal tree traversals for sparse matrix factorization | |
Turjan et al. | Translating affine nested-loop programs to process networks | |
CN116432575A (zh) | 一种pisa架构芯片内部结构中程序基本块优化排布方法 | |
CN103559069B (zh) | 一种基于代数系统的跨文件过程间优化方法 | |
Mesman et al. | Constraint analysis for DSP code generation | |
Fischer et al. | Efficient architecture/compiler co-exploration for ASIPs | |
Cordes et al. | Automatic extraction of task-level parallelism for heterogeneous MPSoCs | |
CN116306424A (zh) | 一种基于可调级数裕量改进的动态扩增逐层优化算法的pisa架构芯片资源排布方法 | |
Alon et al. | Automatic generation of FPTASes for stochastic monotone dynamic programs made easier | |
Letras et al. | Multi-objective optimization of mapping dataflow applications to mpsocs using a hybrid evaluation combining analytic models and measurements | |
CN103140853A (zh) | 在根据高级综合的蚁群优化电路设计中使用熵的方法和装置 | |
Thang et al. | Model-driven development with optimization of non-functional constraints in sensor network | |
CN104794010A (zh) | 一种系统内信息交互优化方法 | |
Hanono | Aviv: A Retargetable Code Generator for Embedded Processors | |
CN116545958A (zh) | 一种应用于pisa架构芯片的基本块排布方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20230714 |