CN116545958A - 一种应用于pisa架构芯片的基本块排布方法 - Google Patents
一种应用于pisa架构芯片的基本块排布方法 Download PDFInfo
- Publication number
- CN116545958A CN116545958A CN202310341981.5A CN202310341981A CN116545958A CN 116545958 A CN116545958 A CN 116545958A CN 202310341981 A CN202310341981 A CN 202310341981A CN 116545958 A CN116545958 A CN 116545958A
- Authority
- CN
- China
- Prior art keywords
- matrix
- basic block
- basic
- pool
- num
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 241000404883 Pisa Species 0.000 title claims abstract 8
- 238000004364 calculation method Methods 0.000 claims abstract description 45
- 238000011156 evaluation Methods 0.000 claims abstract description 4
- 239000011159 matrix material Substances 0.000 claims description 296
- 230000001419 dependent effect Effects 0.000 claims description 29
- 239000000203 mixture Substances 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/101—Packet switching elements characterised by the switching fabric construction using crossbar or matrix
-
- 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
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及芯片编译领域,公开了一种应用于PISA架构芯片的基本块排布方法,包括如下步骤:步骤1、读写变量描述;步骤2、邻接信息描述;步骤3、基本块顺序求解;步骤4、基本块度的求解;步骤5、控制依赖求解;步骤6、数据依赖求解;步骤7、基本块排布。本发明还公开了一种结果评价方法,在完成所有基本块的排布后,可以通过计算结果优度对计算结果进行大致评价。本发明可以在满足控制依赖、数据依赖、资源约束的条件下,利用相对较少的流水线级数完成基本块排布,从而提升芯片的资源利用率,更好地发挥芯片的能力。
Description
技术领域
本发明涉及芯片编译领域,具体涉及一种应用于PISA架构芯片的基本块排布方法。
背景技术
芯片是电子信息技术的硬件基础,在如今的国际产业竞争大环境下,掌握芯片设计核心技术具有重要意义。
本发明着眼于网络通信领域的交换芯片。传统的交换芯片功能固定,当网络协议发生改变时,芯片也需要重新设计,这大大降低了研发效率。为解决这一问题,可编程的交换芯片应运而生。PISA(Protocol Independent Switch Architecture)是目前主流的可编程交换芯片架构之一,通常,对PISA架构芯片进行编程的流程是,首先由用户使用特定的编程语言描述报文处理行为得到源程序,然后由编译器编译该源程序,进而生成芯片可以执行的机器码。其中,报文是指网络通信中传输的数据包,数据包中封装有用户传输的数据。编译源程序时,编译器会首先将源程序进行基本块划分,然后将各基本块排布到芯片的各级流水线中。其中,流水线由芯片内的一系列处理单元串联组成,报文将在流水线中依次通过每个处理单元,最终完成处理,各级流水线就是流水线中的各处理单元;基本块是指源程序的一个程序片段,基本块划分就是将一个源程序划分为多个基本块。排布基本块时,要使所有基本块所占用的流水线级数尽可能少,这是因为,减少占用的流水线级数,可以提升芯片的资源利用率,更好地发挥芯片的能力,让芯片完成更多业务。因此,如何排布基本块,使其占用的流水线级数尽可能少,是PISA架构芯片编程中的关键问题。
限制流水线级数减少的关键之处在于基本块排布会受到多方面的约束限制。排布基本块时,每个基本块都会占用一定的资源,而每级流水线所拥有的资源是有限的,流水线各级之间也有一定的资源约束条件,因此,排布基本块会受到资源约束。此外,排布基本块还需要满足来自源程序的约束。根据源程序,可以确定任意一个基本块的两方面内容,包括该基本块所读写的变量,以及该基本块运行完成后可以直接跳转至哪些邻接基本块。源程序中,每个基本块都会读或写一些变量,当两个基本块读或写同一变量时,两个基本块就可能有运行次序的要求,这就是数据依赖。一个基本块执行完成后,对于不同的情况,可能会跳转至不同的基本块运行。换言之,有的基本块是否执行,取决于它上游的某些基本块,这就是控制依赖。具体而言,数据依赖包括写后读依赖、读后写依赖、写后写依赖:假定基本块A在基本块B前执行,若A写了某变量且B读了该变量,则B写后读依赖于A,若A读了某变量且B写了该变量,则B读后写依赖于A,若A、B均写了某变量,则B写后写依赖于A。数据依赖对基本块排布的约束是:当B写后读依赖于A或B写后写依赖于A时,A所位于的流水线级数需小于B的级数;当B读后写依赖于A时,A所位于的流水线级数需小于或等于B的级数。控制依赖的具体定义为:如果基本块A有多个邻接基本块,即从基本块A出发有多条路径,而只存在部分路径能够通过下游的基本块B,那么B控制依赖于A。控制依赖对基本块排布的约束是:当B控制依赖于A时,A所位于的流水线级数需小于或等于B的级数。将数据依赖、控制依赖统称为依赖关系,它们对基本块排布的约束统称为依赖约束。若基本块B不写后读依赖于A、不读后写依赖于A、不写后写依赖于A、不控制依赖于A,则B不依赖于A,否则B依赖于A。
综上,对于PISA架构芯片,在已经完成了对源程序的基本块划分,且已知各个基本块所占用的资源数量、各个基本块所读写的变量和各个基本块的邻接基本块的基础上,如何在满足控制依赖、数据依赖、资源约束的条件下,优化基本块排布方法,使其占用的流水线级数尽可能少,对提升芯片资源利用率具有重要价值。
直接根据基本块的执行流程图进行排布是一种排布方法,这一排布方法原理简单,实施方便,但是该方法的排布结果有较大的优化空间。本发明公开了一种应用于PISA架构芯片的基本块排布方法,可以进一步减少基本块所占用的流水线级数,提升芯片的资源利用率。
发明内容
本发明公开了一种应用于PISA架构芯片的基本块排布方法,可以在满足控制依赖、数据依赖、资源约束的条件下,利用相对较少的流水线级数完成基本块排布,从而提升芯片的资源利用率,更好地发挥芯片的能力。
所述应用于PISA架构芯片的基本块排布方法,包括如下步骤:
步骤1、读写变量描述:
记基本块总数为Nump,记变量总数为Numv,根据各个基本块所读写的变量,计算Nump行Numv列的Write矩阵和Read矩阵,其中Write矩阵用来描述各基本块与各变量之间是否存在写操作的关系,Read矩阵用来描述各基本块与各变量之间是否存在读操作的关系,计算方法为对矩阵中每个元素按照如下方法分别赋值:
对于元素Writeij,若基本块i对变量j进行写操作,则令Writeij为1,否则令Writeij为0,
对于元素Readij,若基本块i对变量j进行读操作,则令Readij为1,否则令Readij为0;
步骤2、邻接信息描述:
根据各个基本块的邻接基本块,计算Nump行Nump列的Connect矩阵,其中Connect矩阵用来描述各基本块的邻接基本块信息,计算方法为对矩阵中每个元素按照如下方法赋值:
对于元素Connectij,若基本块j是基本块i的邻接基本块,则令Connectij为1,否则令Connectij为0;
步骤3、基本块顺序求解:
根据Connect矩阵,调用顺序求解子程序,求解Nump行Nump列的Order矩阵,其中Order矩阵的含义是:
当Orderij为1时表示基本块i在基本块j前执行,当Orderij为0时表示基本块i不在基本块j前执行;
步骤4、基本块度的求解:
根据Connect矩阵,计算Nump维Degree向量,其中Degree向量用来描述各基本块的邻接基本块总数,计算方法为对向量中每个元素按照如下方法赋值:
对于元素Degreei,令Degreei等于基本块i的邻接基本块总数;
步骤5、控制依赖求解:
建立一个Nump行Nump列的Control矩阵,令其初值为零矩阵,遍历每一个满足Degreei大于1的i,令基本块i为当前父基本块,根据Connect矩阵、Order矩阵、Degree向量、当前父基本块,调用控制依赖求解子程序,更新Control矩阵,这样完成i的遍历后,就完成了Control矩阵的求解,其中Control矩阵的含义是:
当Controlij为1时表示基本块j控制依赖于基本块i,当Controlij为0时表示基本块j不控制依赖于基本块i;
步骤6、数据依赖求解:
根据Order矩阵、Write矩阵和Read矩阵,调用数据依赖求解子程序,计算Nump行Nump列的DataWR矩阵、DataRW矩阵和DataWW矩阵,其中DataWR矩阵、DataRW矩阵和DataWW矩阵的含义分别是:
当DataWRij=1时表示基本块j写后读依赖于基本块i,当DataWRij=0时表示基本块j不写后读依赖于基本块i,
当DataRWij=1时表示基本块j读后写依赖于基本块i,当DataRWij=0时表示基本块j不读后写依赖于基本块i,
当DataWWij=1时表示基本块j写后写依赖于基本块i,当DataWWij=0时表示基本块j不写后写依赖于基本块i;
步骤7、基本块排布:
根据Order矩阵、Control矩阵、DataWR矩阵、DataRW矩阵、DataWW矩阵,令Arrangement矩阵取初值为Nump行1列的零矩阵,调用基本块排布子程序,计算Arrangement矩阵,其中Arrangement矩阵的含义是:
当Arrangementij=1时表示基本块i排布到第j级流水线,当Arrangementij=0时表示基本块i不排布到第j级流水线;
Arrangement矩阵完成计算后,就意味着完成了所有基本块的排布,Arrangement矩阵的列数就是所有基本块所占用的流水线级数,记为Numl,对于任意一个基本块i,它所在的流水线级数为满足Arrangementij=1的j。
所述顺序求解子程序,是一个根据Connect矩阵求解Order矩阵的方法,包括如下步骤:
步骤3.1、为Order矩阵赋初值:令Order矩阵等于Connect矩阵;
步骤3.2、记录当前Order矩阵数值:定义Nump行Nump列的OldOrder矩阵,其中OldOrder矩阵用来记录Order矩阵更新前的数值,令OldOrder矩阵等于Order矩阵;
步骤3.3、更新Order矩阵:遍历Order矩阵的行号i,在Order矩阵第i列中找到所有取值为1的元素,记这些元素的行号组成的集合为Front,其中Front的含义是目前确定的在基本块i前执行的基本块集合,在Order矩阵第i行中找到所有取值为1的元素,记这些元素的列号组成的集合为Rear,其中Rear的含义是目前确定的在基本块i后执行的基本块集合,这样完成行号i的遍历后,遍历j∈Front,k∈Rear所有(j,k)组合,令Orderjk=1,这样完成(j,k)的遍历后,就完成了Order矩阵的更新;
步骤3.4、判断Order矩阵是否计算完成:判断Order矩阵与OldOrder矩阵是否相等,若不相等,则返回步骤3.2;若相等,则Order矩阵计算完成。
所述控制依赖求解子程序,是一个根据Connect矩阵、Order矩阵、Degree向量对当前父基本块更新Control矩阵的方法,包括如下步骤:
步骤5.1、数据初始化:
定义Nump维Power向量,该向量最终会用来判断哪些基本块控制依赖于当前父基本块,令Power向量的初值为零向量;
记当前父基本块为基本块c;
定义一个基本块集——待分权集,待分权集的含义是,其中的基本块对应的Power值不为0但尚未将其Power值平均分配给其邻接基本块,令待分权集的初值取为基本块c的邻接基本块集合;
定义变量d,该变量用来记录选择哪一个基本块来分配其Power值;
遍历待分权集的基本块i,令这样完成基本块i的遍历后,就完成了数据初始化;
步骤5.2、选择待分配的基本块:
遍历待分权集的基本块i,计算直至/>为零时停止遍历,然后令d取i;
步骤5.3、分配Power值:
遍历满足Connectdi=1的所有i,令若基本块i不在待分权集中,则将基本块i加入待分权集,这样完成i的遍历后,将基本块d从待分权集中移除;
步骤5.4、判断Power向量是否完成计算:
若待分权集不为空集且Power向量中最大的元素不为1,则返回步骤5.2,否则说明Power向量已完成计算;
步骤5.5、更新Control矩阵:
遍历满足Poweri>0且Poweri<1的所有i,令Controlci为1,这样完成i的遍历后,就完成了Control矩阵的更新。
所述数据依赖求解子程序,是一个根据Order矩阵、Write矩阵和Read矩阵计算DataWR矩阵、DataRW矩阵、DataWW矩阵的方法,该方法对矩阵中每个元素按照如下方法赋值:
对于DataWRij,若Orderij=1且则令DataWRij为1,否则令DataWRij为0,
对于DataRWij,若Orderij=1且则令DataRWij为1,否则令DataRWij为0,
对于DataWWij,若Orderij=1且则令DataWWij为1,否则令DataWWij为0。
所述基本块排布子程序,是一个根据Order矩阵、Control矩阵、DataWR矩阵、DataRW矩阵、DataWW矩阵计算Arrangement矩阵的方法,包括如下步骤:
步骤7.1、基本块排布初始化:
定义变量n,n的含义是当前正在将基本块向第n级流水线排布,令n取初值1;
定义一个基本块集——待分配池,待分配池的含义是当前所有尚未完成排布的基本块的集合,令待分配池的初值为所有基本块的集合;
定义一个基本块集——依赖满足池,依赖满足池的含义是待分配池中排布到第n级流水线时满足依赖约束的基本块集,令依赖满足池的初值为空集;
定义一个基本块集——约束满足池,约束满足池的含义是依赖满足池中排布到第n级流水线时满足资源约束的基本块集,令约束满足池的初值为空集;
定义Nump行Nump列的Dependence矩阵,其中Dependence矩阵的含义是:当Dependenceij为0时表示当前将基本块j排布到第n级流水线是满足与基本块i的依赖约束的,当Dependenceij不为0时表示当前将基本块j排布到第n级流水线是不满足与基本块i的依赖约束的;令Dependence矩阵的初值为零矩阵;
计算Nump维Rely向量,其中Rely向量的含义是:Relyi为在基本块i执行后才能执行的基本块总数;计算方法为对向量中每个元素按照如下方法赋值:
步骤7.2、更新Dependence矩阵:
令Dependence=Control+DataWR+DataRW+DataWW;
步骤7.3、更新依赖满足池:
令依赖满足池为空集,遍历所有满足的i,若基本块i是待分配池的元素,则将基本块i加入依赖满足池,这样完成i的遍历后就完成了依赖满足池的更新;
步骤7.4、更新约束满足池:
令约束满足池为空集,遍历依赖满足池的基本块,判断将该基本块排布到第n级流水线是否满足资源约束,若是,则将该基本块加入约束满足池,这样完成依赖满足池的基本块遍历后就完成了约束满足池的更新;
步骤7.5、排布基本块:
若约束满足池为空集,则在Arrangement矩阵的最右侧新增一列零元素,遍历满足Arrangementin=1的所有i,令DataWR矩阵、DataWW矩阵的第i行元素全部为0,这样完成i的遍历后,令n取n+1;
若约束满足池不为空集,则找到约束满足池中基本块对应的Rely值最大的所有基本块,若只有一个则直接记为基本块i,若有多个则任选其一记为基本块i,令Arrangementin=1,令Control矩阵、DataRW矩阵的第i行元素全部为0,将基本块i从待分配池中移除;
步骤7.6、判断是否完成Arrangement矩阵的计算:
若待分配池不为空集,则返回步骤7.2,否则意味着完成了Arrangement矩阵的计算。
在完成所有基本块的排布后,可以通过计算结果优度对计算结果进行大致评价,所述结果优度为一个取值范围为(0,1]的评价指标,数值越大表示基本块排布结果越好,计算方法为:
步骤A、计算Road矩阵
计算Nump行Nump列的Road矩阵,Road矩阵用来确定满足数据依赖、控制依赖而不考虑资源约束的情况下所有基本块占用流水线级数的理论最小值,计算方法为对矩阵中每个元素按照如下方法赋值:
对于Roadij,若步骤6计算出的DataWRij为1或步骤6计算出的DataWWij为1,则令Roadij取-1,
否则,若i=j或步骤5最终计算出的Controlij为1或步骤6计算出的DataRWij为1,则令Roadij取0,
否则,令Roadij取∞;
步骤B、计算Distance矩阵:
根据Road矩阵,利用图论中的Floyd算法,求解Nump行Nump列的Distance矩阵,Distance矩阵的含义是,对于一个以Road矩阵为加权邻接矩阵的图,图中任意节点i至任意节点j的最短距离为Distanceij;
步骤C、计算结果优度:
所述理论最小值为记为Valuemin,所述结果优度为/>
Floyd算法为图论的最短路径算法之一,可以根据图的加权邻接矩阵求解该图中任意节点至任意节点的最短路径及最短距离,Floyd算法为已有公开内容,不是本发明的创造内容,在此不再赘述。
附图说明
图1为所述应用于PISA架构芯片的基本块排布方法的主程序流程图。
图2为所述基本块排布子程序中基本块排布方法示意图。
图3为算例中源程序基本块的执行流程图。
图4为按照本发明对算例进行基本块排布的结果。
图5为直接按照执行流程图对算例进行基本块排布的结果。
具体实施方式
接下来结合附图对本发明进行进一步的阐述。
本发明公开了一种应用于PISA架构芯片的基本块排布方法,可以在满足控制依赖、数据依赖、资源约束的条件下,利用相对较少的流水线级数完成基本块排布,从而提升芯片的资源利用率,更好地发挥芯片的能力。
所述应用于PISA架构芯片的基本块排布方法,包括如下步骤:
步骤1、读写变量描述:
记基本块总数为Nump,记变量总数为Numv,根据各个基本块所读写的变量,计算Nump行Numv列的Write矩阵和Read矩阵,其中Write矩阵用来描述各基本块与各变量之间是否存在写操作的关系,Read矩阵用来描述各基本块与各变量之间是否存在读操作的关系,计算方法为对矩阵中每个元素按照如下方法分别赋值:
对于元素Writeij,若基本块i对变量j进行写操作,则令Writeij为1,否则令Writeij为0,
对于元素Readij,若基本块i对变量j进行读操作,则令Readij为1,否则令Readij为0;
步骤2、邻接信息描述:
根据各个基本块的邻接基本块,计算Nump行Nump列的Connect矩阵,其中Connect矩阵用来描述各基本块的邻接基本块信息,计算方法为对矩阵中每个元素按照如下方法赋值:
对于元素Connectij,若基本块j是基本块i的邻接基本块,则令Connectij为1,否则令Connectij为0;
步骤3、基本块顺序求解:
根据Connect矩阵,调用顺序求解子程序,求解Nump行Nump列的Order矩阵,其中Order矩阵的含义是:
当Orderij为1时表示基本块i在基本块j前执行,当Orderij为0时表示基本块i不在基本块j前执行;
步骤4、基本块度的求解:
根据Connect矩阵,计算Nump维Degree向量,其中Degree向量用来描述各基本块的邻接基本块总数,计算方法为对向量中每个元素按照如下方法赋值:
对于元素Degreei,令Degreei等于基本块i的邻接基本块总数;
步骤5、控制依赖求解:
建立一个Nump行Nump列的Control矩阵,令其初值为零矩阵,遍历每一个满足Degreei大于1的i,令基本块i为当前父基本块,根据Connect矩阵、Order矩阵、Degree向量、当前父基本块,调用控制依赖求解子程序,更新Control矩阵,这样完成i的遍历后,就完成了Control矩阵的求解,其中Control矩阵的含义是:
当Controlij为1时表示基本块j控制依赖于基本块i,当Controlij为0时表示基本块j不控制依赖于基本块i;
步骤6、数据依赖求解:
根据Order矩阵、Write矩阵和Read矩阵,调用数据依赖求解子程序,计算Nump行Nump列的DataWR矩阵、DataRW矩阵和DataWW矩阵,其中DataWR矩阵、DataRW矩阵和DataWW矩阵的含义分别是:
当DataWRij=1时表示基本块j写后读依赖于基本块i,当DataWRij=0时表示基本块j不写后读依赖于基本块i,
当DataRWij=1时表示基本块j读后写依赖于基本块i,当DataRWij=0时表示基本块j不读后写依赖于基本块i,
当DataWWij=1时表示基本块j写后写依赖于基本块i,当DataWWij=0时表示基本块j不写后写依赖于基本块i;
步骤7、基本块排布:
根据Order矩阵、Control矩阵、DataWR矩阵、DataRW矩阵、DataWW矩阵,令Arrangement矩阵取初值为Nump行1列的零矩阵,调用基本块排布子程序,计算Arrangement矩阵,其中Arrangement矩阵的含义是:
当Arrangementij=1时表示基本块i排布到第j级流水线,当Arrangementij=0时表示基本块i不排布到第j级流水线;
Arrangement矩阵完成计算后,就意味着完成了所有基本块的排布,Arrangement矩阵的列数就是所有基本块所占用的流水线级数,记为Numl,对于任意一个基本块i,它所在的流水线级数为满足Arrangementij=1的j。
如图1所示为所述应用于PISA架构芯片的基本块排布方法的主程序流程图。
所述顺序求解子程序,是一个根据Connect矩阵求解Order矩阵的方法,包括如下步骤:
步骤3.1、为Order矩阵赋初值:令Order矩阵等于Connect矩阵;
步骤3.2、记录当前Order矩阵数值:定义Nump行Nump列的OldOrder矩阵,其中OldOrder矩阵用来记录Order矩阵更新前的数值,令OldOrder矩阵等于Order矩阵;
步骤3.3、更新Order矩阵:遍历Order矩阵的行号i,在Order矩阵第i列中找到所有取值为1的元素,记这些元素的行号组成的集合为Front,其中Front的含义是目前确定的在基本块i前执行的基本块集合,在Order矩阵第i行中找到所有取值为1的元素,记这些元素的列号组成的集合为Rear,其中Rear的含义是目前确定的在基本块i后执行的基本块集合,这样完成行号i的遍历后,遍历j∈Front,k∈Rear所有(j,k)组合,令Orderjk=1,这样完成(j,k)的遍历后,就完成了Order矩阵的更新;
步骤3.4、判断Order矩阵是否计算完成:判断Order矩阵与OldOrder矩阵是否相等,若不相等,则返回步骤3.2;若相等,则Order矩阵计算完成。
所述控制依赖求解子程序,是一个根据Connect矩阵、Order矩阵、Degree向量对当前父基本块更新Control矩阵的方法,包括如下步骤:
步骤5.1、数据初始化:
定义Nump维Power向量,该向量最终会用来判断哪些基本块控制依赖于当前父基本块,令Power向量的初值为零向量;
记当前父基本块为基本块c;
定义一个基本块集——待分权集,待分权集的含义是,其中的基本块对应的Power值不为0但尚未将其Power值平均分配给其邻接基本块,令待分权集的初值取为基本块c的邻接基本块集合;
定义变量d,该变量用来记录选择哪一个基本块来分配其Power值;
遍历待分权集的基本块i,令这样完成基本块i的遍历后,就完成了数据初始化;
步骤5.2、选择待分配的基本块:
遍历待分权集的基本块i,计算直至/>为零时停止遍历,然后令d取i;
步骤5.3、分配Power值:
遍历满足Connectdi=1的所有i,令若基本块i不在待分权集中,则将基本块i加入待分权集,这样完成i的遍历后,将基本块d从待分权集中移除;
步骤5.4、判断Power向量是否完成计算:
若待分权集不为空集且Power向量中最大的元素不为1,则返回步骤5.2,否则说明Power向量已完成计算;
步骤5.5、更新Control矩阵:
遍历满足Poweri>0且Poweri<1的所有i,令Controlci为1,这样完成i的遍历后,就完成了Control矩阵的更新。
所述数据依赖求解子程序,是一个根据Order矩阵、Write矩阵和Read矩阵计算DataWR矩阵、DataRW矩阵、DataWW矩阵的方法,该方法对矩阵中每个元素按照如下方法赋值:
对于DataWRij,若Orderij=1且则令DataWRij为1,否则令DataWRij为0,
对于DataRWij,若Orderij=1且则令DataRWij为1,否则令DataRWij为0,
对于DataWWij,若Orderij=1且则令DataWWij为1,否则令DataWWij为0。
所述基本块排布子程序,是一个根据Order矩阵、Control矩阵、DataWR矩阵、DataRW矩阵、DataWW矩阵计算Arrangement矩阵的方法,包括如下步骤:
步骤7.1、基本块排布初始化:
定义变量n,n的含义是当前正在将基本块向第n级流水线排布,令n取初值1;
定义一个基本块集——待分配池,待分配池的含义是当前所有尚未完成排布的基本块的集合,令待分配池的初值为所有基本块的集合;
定义一个基本块集——依赖满足池,依赖满足池的含义是待分配池中排布到第n级流水线时满足依赖约束的基本块集,令依赖满足池的初值为空集;
定义一个基本块集——约束满足池,约束满足池的含义是依赖满足池中排布到第n级流水线时满足资源约束的基本块集,令约束满足池的初值为空集;
定义Nump行Nump列的Dependence矩阵,其中Dependence矩阵的含义是:当Dependenceij为0时表示当前将基本块j排布到第n级流水线是满足与基本块i的依赖约束的,当Dependenceij不为0时表示当前将基本块j排布到第n级流水线是不满足与基本块i的依赖约束的;令Dependence矩阵的初值为零矩阵;
计算Nump维Rely向量,其中Rely向量的含义是:Relyi为在基本块i执行后才能执行的基本块总数;计算方法为对向量中每个元素按照如下方法赋值:
步骤7.2、更新Dependence矩阵:
令Dependence=Control+DataWR+DataRW+DataWW;
步骤7.3、更新依赖满足池:
令依赖满足池为空集,遍历所有满足的i,若基本块i是待分配池的元素,则将基本块i加入依赖满足池,这样完成i的遍历后就完成了依赖满足池的更新;
步骤7.4、更新约束满足池:
令约束满足池为空集,遍历依赖满足池的基本块,判断将该基本块排布到第n级流水线是否满足资源约束,若是,则将该基本块加入约束满足池,这样完成依赖满足池的基本块遍历后就完成了约束满足池的更新;
步骤7.5、排布基本块:
若约束满足池为空集,则在Arrangement矩阵的最右侧新增一列零元素,遍历满足Arrangementin=1的所有i,令DataWR矩阵、DataWW矩阵的第i行元素全部为0,这样完成i的遍历后,令n取n+1;
若约束满足池不为空集,则找到约束满足池中基本块对应的Rely值最大的所有基本块,若只有一个则直接记为基本块i,若有多个则任选其一记为基本块i,令Arrangementin=1,令Control矩阵、DataRW矩阵的第i行元素全部为0,将基本块i从待分配池中移除;
步骤7.6、判断是否完成Arrangement矩阵的计算:
若待分配池不为空集,则返回步骤7.2,否则意味着完成了Arrangement矩阵的计算。
如图2所示为所述基本块排布子程序中基本块排布方法示意图。
在完成所有基本块的排布后,可以通过计算结果优度对计算结果进行大致评价,所述结果优度为一个取值范围为(0,1]的评价指标,数值越大表示基本块排布结果越好,计算方法为:
步骤A、计算Road矩阵
计算Nump行Nump列的Road矩阵,Road矩阵用来确定满足数据依赖、控制依赖而不考虑资源约束的情况下所有基本块占用流水线级数的理论最小值,计算方法为对矩阵中每个元素按照如下方法赋值:
对于Roadij,若步骤6计算出的DataWRij为1或步骤6计算出的DataWWij为1,则令Roadij取-1,
否则,若i=j或步骤5最终计算出的Controlij为1或步骤6计算出的DataRWij为1,则令Roadij取0,
否则,令Roadij取∞;
步骤B、计算Distance矩阵:
根据Road矩阵,利用图论中的Floyd算法,求解Nump行Nump列的Distance矩阵,Distance矩阵的含义是,对于一个以Road矩阵为加权邻接矩阵的图,图中任意节点i至任意节点j的最短距离为Distanceij;
步骤C、计算结果优度:
所述理论最小值为记为Valuemin,所述结果优度为/>
Floyd算法为图论的最短路径算法之一,可以根据图的加权邻接矩阵求解该图中任意节点至任意节点的最短路径及最短距离,Floyd算法为已有公开内容,不是本发明的创造内容,在此不再赘述。
接下来通过一个简单的算例对本发明的方法进行展示。
已知某芯片每级流水线可提供TCAM资源的最大数量为1,目前已将源程序划分为1至4共四个基本块,其中,基本块2、基本块4各占用1个TCAM资源,基本块1、基本块3不占用TCAM资源。源程序读写的变量为1至3共三个变量,基本块1会对变量1进行写操作,基本块2会对变量2进行写操作、对变量1进行读操作,基本块3会对变量3进行写操作、对变量1进行读操作,基本块4不读写任何变量。此外,如图3所示为源程序基本块的执行流程图,由此可见,基本块1的邻接基本块为基本块2、基本块3,基本块2的邻接基本块为基本块4,基本块3的邻接基本块为基本块4,基本块4没有邻接基本块。
以上内容为使用本发明提供了充足的已知条件,接下来展示计算中的关键过程。
执行步骤1得:
执行步骤2得:
执行步骤3得:
执行步骤4得:Degree=[2 1 1 0]。
执行步骤5得:/>
执行步骤6得:
执行步骤7.1得:待分配池有基本块1、2、3、4,n=1,Rely=[3 1 1 0],
执行步骤7.2得:执行步骤7.3得:依赖满足池有基本块1、4。
执行步骤7.4得:约束满足池有基本块1、4。
执行步骤7.5得:约束满足池中基本块对应的Rely值最大的基本块为基本块1,待分配池有基本块2、3、4。
执行步骤7.6,返回步骤7.2,执行步骤7.2得:执行步骤7.3得:依赖满足池有基本块4。
执行步骤7.4得:约束满足池有基本块4。
执行步骤7.5得:约束满足池中基本块对应的Rely值最大的基本块为基本块4,待分配池有基本块2、3。/>
执行步骤7.6,返回步骤7.2,执行步骤7.2得:执行步骤7.3得:依赖满足池为空集。
执行步骤7.4得:约束满足池为空集。
执行步骤7.5得:执行步骤7.6,返回步骤7.2,执行步骤7.2得:/>
执行步骤7.3得:依赖满足池有基本块2、3。
执行步骤7.4得:约束满足池有基本块2、3。
执行步骤7.5得:约束满足池中基本块对应的Rely值最大的基本块为基本块2、3,任选其一即可,不妨取基本块2,待分配池有基本块3。
执行步骤7.6,返回步骤7.2,执行步骤7.2、7.3,得:依赖满足池有基本块3。
执行步骤7.4得:约束满足池有基本块3。
执行步骤7.5得:约束满足池中基本块对应的Rely值最大的基本块为基本块3,依赖满足池为空集。
执行步骤7.6得:Arrangement矩阵的计算已经完成,Numl=2,即所有基本块所占用的流水线级数为2,其中,基本块1、4占用流水线第1级,基本块2、3占用流水线第2级,即得到如图4所示的排布结果。
如果直接按照执行流程图进行基本块排布,将得到如图5所示的结果,即基本块1占用流水线第1级,基本块2、3占用流水线第2级,基本块4占用流水线第3级,也是满足各约束条件的。但是,如果使用本发明进行基本块排布,则可以减少1级流水线占用。
此外,可以通过计算结果优度对计算结果进行大致评价,执行步骤A得执行步骤B得/>执行步骤C得结果优度为/>由结果优度的定义可知,本次计算结果对于算例而言达到了理论最优水平,占用更少流水线级数是不可能的。
上述算例只是为了便于解释发明内容所举的一个非常简单的例子,实际上,本发明可以应用到非常复杂的场景中。经过实际测试,本发明在普通微型计算机上,处理数百个基本块、变量的复杂问题时,仅需数秒即可完成求解,且能够保持较好的结果优度。
Claims (6)
1.一种应用于PISA架构芯片的基本块排布方法,其特征在于:包括如下步骤:
步骤1、读写变量描述:
记基本块总数为Nump,记变量总数为Numv,根据各个基本块所读写的变量,计算Nump行Numv列的Write矩阵和Read矩阵,其中Write矩阵用来描述各基本块与各变量之间是否存在写操作的关系,Read矩阵用来描述各基本块与各变量之间是否存在读操作的关系,计算方法为对矩阵中每个元素按照如下方法分别赋值:
对于元素Writeij,若基本块i对变量j进行写操作,则令Writeij为1,否则令Writeij为0,
对于元素Readij,若基本块i对变量j进行读操作,则令Readij为1,否则令Readij为0;
步骤2、邻接信息描述:
根据各个基本块的邻接基本块,计算Nump行Nump列的Connect矩阵,其中Connect矩阵用来描述各基本块的邻接基本块信息,计算方法为对矩阵中每个元素按照如下方法赋值:
对于元素Connectij,若基本块j是基本块i的邻接基本块,则令Connectij为1,否则令Connectij为0;
步骤3、基本块顺序求解:
根据Connect矩阵,调用顺序求解子程序,求解Nump行Nump列的Order矩阵,其中Order矩阵的含义是:
当Orderij为1时表示基本块i在基本块j前执行,当Orderij为0时表示基本块i不在基本块j前执行;
步骤4、基本块度的求解:
根据Connect矩阵,计算Nump维Degree向量,其中Degree向量用来描述各基本块的邻接基本块总数,计算方法为对向量中每个元素按照如下方法赋值:
对于元素Degreei,令Degreei等于基本块i的邻接基本块总数;
步骤5、控制依赖求解:
建立一个Nump行Nump列的Control矩阵,令其初值为零矩阵,遍历每一个满足Degreei大于1的i,令基本块i为当前父基本块,根据Connect矩阵、Order矩阵、Degree向量、当前父基本块,调用控制依赖求解子程序,更新Control矩阵,这样完成i的遍历后,就完成了Control矩阵的求解,其中Control矩阵的含义是:
当Controlij为1时表示基本块j控制依赖于基本块i,当Controlij为0时表示基本块j不控制依赖于基本块i;
步骤6、数据依赖求解:
根据Order矩阵、Write矩阵和Read矩阵,调用数据依赖求解子程序,计算Nump行Nump列的DataWR矩阵、DataRW矩阵和DataWW矩阵,其中DataWR矩阵、DataRW矩阵和DataWW矩阵的含义分别是:
当DataWRij=1时表示基本块j写后读依赖于基本块i,当DataWRij=0时表示基本块j不写后读依赖于基本块i,
当DataRWij=1时表示基本块j读后写依赖于基本块i,当DataRWij=0时表示基本块j不读后写依赖于基本块i,
当DataWWij=1时表示基本块j写后写依赖于基本块i,当DataWWij=0时表示基本块j不写后写依赖于基本块i;
步骤7、基本块排布:
根据Order矩阵、Control矩阵、DataWR矩阵、DataRW矩阵、DataWW矩阵,令Arrangement矩阵取初值为Nump行1列的零矩阵,调用基本块排布子程序,计算Arrangement矩阵,其中Arrangement矩阵的含义是:
当Arrangementij=1时表示基本块i排布到第j级流水线,当Arrangementij=0时表示基本块i不排布到第j级流水线;
Arrangement矩阵完成计算后,就意味着完成了所有基本块的排布,Arrangement矩阵的列数就是所有基本块所占用的流水线级数,记为Numl,对于任意一个基本块i,它所在的流水线级数为满足Arrangementij=1的j。
2.根据权利要求1所述的一种应用于PISA架构芯片的基本块排布方法,其特征在于:所述顺序求解子程序,是一个根据Connect矩阵求解Order矩阵的方法,包括如下步骤:
步骤3.1、为Order矩阵赋初值:令Order矩阵等于Connect矩阵;
步骤3.2、记录当前Order矩阵数值:定义Nump行Nump列的OldOrder矩阵,其中OldOrder矩阵用来记录Order矩阵更新前的数值,令OldOrder矩阵等于Order矩阵;
步骤3.3、更新Order矩阵:遍历Order矩阵的行号i,在Order矩阵第i列中找到所有取值为1的元素,记这些元素的行号组成的集合为Front,其中Front的含义是目前确定的在基本块i前执行的基本块集合,在Order矩阵第i行中找到所有取值为1的元素,记这些元素的列号组成的集合为Rear,其中Rear的含义是目前确定的在基本块i后执行的基本块集合,这样完成行号i的遍历后,遍历j∈Front,k∈Rear所有(j,k)组合,令Orderjk=1,这样完成(j,k)的遍历后,就完成了Order矩阵的更新;
步骤3.4、判断Order矩阵是否计算完成:判断Order矩阵与OldOrder矩阵是否相等,若不相等,则返回步骤3.2;若相等,则Order矩阵计算完成。
3.根据权利要求1所述的一种应用于PISA架构芯片的基本块排布方法,其特征在于:所述控制依赖求解子程序,是一个根据Connect矩阵、Order矩阵、Degree向量对当前父基本块更新Control矩阵的方法,包括如下步骤:
步骤5.1、数据初始化:
定义Nump维Power向量,该向量最终会用来判断哪些基本块控制依赖于当前父基本块,令Power向量的初值为零向量;
记当前父基本块为基本块c;
定义一个基本块集——待分权集,待分权集的含义是,其中的基本块对应的Power值不为0但尚未将其Power值平均分配给其邻接基本块,令待分权集的初值取为基本块c的邻接基本块集合;
定义变量d,该变量用来记录选择哪一个基本块来分配其Power值;
遍历待分权集的基本块i,令这样完成基本块i的遍历后,就完成了数据初始化;
步骤5.2、选择待分配的基本块:
遍历待分权集的基本块i,计算直至/>为零时停止遍历,然后令d取i;
步骤5.3、分配Power值:
遍历满足Connectdi=1的所有i,令若基本块i不在待分权集中,则将基本块i加入待分权集,这样完成i的遍历后,将基本块d从待分权集中移除;
步骤5.4、判断Power向量是否完成计算:
若待分权集不为空集且Power向量中最大的元素不为1,则返回步骤5.2,否则说明Power向量已完成计算;
步骤5.5、更新Control矩阵:
遍历满足Poweri>0且Poweri<1的所有i,令Controlci为1,这样完成i的遍历后,就完成了Control矩阵的更新。
4.根据权利要求1所述的一种应用于PISA架构芯片的基本块排布方法,其特征在于:所述数据依赖求解子程序,是一个根据Order矩阵、Write矩阵和Read矩阵计算DataWR矩阵、DataRW矩阵、DataWW矩阵的方法,该方法对矩阵中每个元素按照如下方法赋值:
对于DataWRij,若Orderij=1且则令DataWRij为1,否则令DataWRij为0,
对于DataRWij,若Orderij=1且则令DataRWij为1,否则令DataRWij为0,
对于DataWWij,若Orderij=1且则令DataWWij为1,否则令DataWWij为0。
5.根据权利要求1所述的一种应用于PISA架构芯片的基本块排布方法,其特征在于:所述基本块排布子程序,是一个根据Order矩阵、Control矩阵、DataWR矩阵、DataRW矩阵、DataWW矩阵计算Arrangement矩阵的方法,包括如下步骤:
步骤7.1、基本块排布初始化:
定义变量n,n的含义是当前正在将基本块向第n级流水线排布,令n取初值1;
定义一个基本块集——待分配池,待分配池的含义是当前所有尚未完成排布的基本块的集合,令待分配池的初值为所有基本块的集合;
定义一个基本块集——依赖满足池,依赖满足池的含义是待分配池中排布到第n级流水线时满足依赖约束的基本块集,令依赖满足池的初值为空集;
定义一个基本块集——约束满足池,约束满足池的含义是依赖满足池中排布到第n级流水线时满足资源约束的基本块集,令约束满足池的初值为空集;
定义Nump行Nump列的Dependence矩阵,其中Dependence矩阵的含义是:当Dependenceij为0时表示当前将基本块j排布到第n级流水线是满足与基本块i的依赖约束的,当Dependenceij不为0时表示当前将基本块j排布到第n级流水线是不满足与基本块i的依赖约束的;令Dependence矩阵的初值为零矩阵;
计算Nump维Rely向量,其中Rely向量的含义是:Relyi为在基本块i执行后才能执行的基本块总数;计算方法为对向量中每个元素按照如下方法赋值:
步骤7.2、更新Dependence矩阵:
令Dependence=Control+DataWR+DataRW+DataWW;
步骤7.3、更新依赖满足池:
令依赖满足池为空集,遍历所有满足的i,若基本块i是待分配池的元素,则将基本块i加入依赖满足池,这样完成i的遍历后就完成了依赖满足池的更新;
步骤7.4、更新约束满足池:
令约束满足池为空集,遍历依赖满足池的基本块,判断将该基本块排布到第n级流水线是否满足资源约束,若是,则将该基本块加入约束满足池,这样完成依赖满足池的基本块遍历后就完成了约束满足池的更新;
步骤7.5、排布基本块:
若约束满足池为空集,则在Arrangement矩阵的最右侧新增一列零元素,遍历满足Arrangementin=1的所有i,令DataWR矩阵、DataWW矩阵的第i行元素全部为0,这样完成i的遍历后,令n取n+1;
若约束满足池不为空集,则找到约束满足池中基本块对应的Rely值最大的所有基本块,若只有一个则直接记为基本块i,若有多个则任选其一记为基本块i,令Arrangementin=1,令Control矩阵、DataRW矩阵的第i行元素全部为0,将基本块i从待分配池中移除;
步骤7.6、判断是否完成Arrangement矩阵的计算:
若待分配池不为空集,则返回步骤7.2,否则意味着完成了Arrangement矩阵的计算。
6.根据权利要求1所述的一种应用于PISA架构芯片的基本块排布方法,其特征在于:在完成所有基本块的排布后,可以通过计算结果优度对计算结果进行大致评价,所述结果优度为一个取值范围为(0,1]的评价指标,数值越大表示基本块排布结果越好,计算方法为:
步骤A、计算Road矩阵
计算Nump行Nump列的Road矩阵,Road矩阵用来确定满足数据依赖、控制依赖而不考虑资源约束的情况下所有基本块占用流水线级数的理论最小值,计算方法为对矩阵中每个元素按照如下方法赋值:
对于Roadij,若步骤6计算出的DataWRij为1或步骤6计算出的DataWWij为1,则令Roadij取-1,
否则,若i=j或步骤5最终计算出的Controlij为1或步骤6计算出的DataRWij为1,则令Roadij取0,
否则,令Roadij取∞;
步骤B、计算Distance矩阵:
根据Road矩阵,利用图论中的Floyd算法,求解Nump行Nump列的Distance矩阵,Distance矩阵的含义是,对于一个以Road矩阵为加权邻接矩阵的图,图中任意节点i至任意节点j的最短距离为Distanceij;
步骤C、计算结果优度:
所述理论最小值为记为Valuemin,所述结果优度为/>
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310341981.5A CN116545958A (zh) | 2023-03-31 | 2023-03-31 | 一种应用于pisa架构芯片的基本块排布方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310341981.5A CN116545958A (zh) | 2023-03-31 | 2023-03-31 | 一种应用于pisa架构芯片的基本块排布方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116545958A true CN116545958A (zh) | 2023-08-04 |
Family
ID=87451336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310341981.5A Pending CN116545958A (zh) | 2023-03-31 | 2023-03-31 | 一种应用于pisa架构芯片的基本块排布方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116545958A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117408220A (zh) * | 2023-12-15 | 2024-01-16 | 湖北工业大学 | 一种可编程交换架构芯片资源排布方法及装置 |
-
2023
- 2023-03-31 CN CN202310341981.5A patent/CN116545958A/zh active Pending
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 |
---|---|---|
CN111242321B (zh) | 一种数据处理方法及相关产品 | |
EP0974898A2 (en) | A method for determining a storage-bandwidth optimized memory organization of an essentially digital device | |
JP4042604B2 (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
Ahmad et al. | Integrated scheduling, allocation and module selection for design-space exploration in high-level synthesis | |
CN114915630B (zh) | 基于物联网设备的任务分配方法、网络训练方法及装置 | |
CN113037800B (zh) | 作业调度方法以及作业调度装置 | |
CN116545958A (zh) | 一种应用于pisa架构芯片的基本块排布方法 | |
CN110187965A (zh) | 神经网络的运行优化及数据处理方法、设备及存储介质 | |
US6347366B1 (en) | System and method for automatically optimizing software performance | |
Ansótegui et al. | Boosting evolutionary algorithm configuration | |
CN112148471A (zh) | 分布式计算系统中资源调度的方法和装置 | |
US6889275B2 (en) | Resource interconnection patterns in a customized memory organization context | |
US7131085B2 (en) | Distributed BDD reordering | |
US20060294073A1 (en) | Constrained exploration for search algorithms | |
CN115461718A (zh) | 神经网络中的内存分配 | |
CN116541268A (zh) | 上下文感知依赖引导的内核模糊测试用例变异方法与系统 | |
Deniziak et al. | Hardware/software co-synthesis of distributed embedded systems using genetic programming | |
CN116432575A (zh) | 一种pisa架构芯片内部结构中程序基本块优化排布方法 | |
CN111027669A (zh) | 在现场可编程门阵列上实现深度神经网络的方法及装置 | |
CN116306424A (zh) | 一种基于可调级数裕量改进的动态扩增逐层优化算法的pisa架构芯片资源排布方法 | |
Mandal et al. | A genetic algorithm for the synthesis of structured data paths | |
CN116974729B (zh) | 大数据作业的任务调度方法、装置及电子设备和存储介质 | |
CN111324354A (zh) | 一种融合寄存器对需求的寄存器选择方法 | |
US20220414438A1 (en) | Neural network acceleration via graph partition | |
US20120226890A1 (en) | Accelerator and data processing method |
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 |