本发明涉及一种vlsi阵列重构方法,特别涉及一种高效快速的vlsi阵列重构方法。
背景技术:
网格拓扑结构因其结构简单、易于扩展、结构规整且易于实现广泛地应用在超大规模集成电路(verylargescaleintegrated,vlsi)系统和多核系统中。随着半导体技术的发展,成百上千的处理器单元(processingelements,pes)能集成到一个单一芯片上。然而随着芯片集成密度的迅速增加,在制造和过程中pes发生故障的可能性也随之增加。这些故障处理器单元(faultyprocessingelements,fpes)将会影响整个系统的稳定性和可靠性。因此,对于有fpes的阵列,需要快速、有效的容错技术,提高系统的稳定性和可靠性。
总结近年来的相关研究工作,几乎所有的重构算法均以访问所有可用的pes为出发点,依据它们之间的电路开关功能实现逻辑阵列的构建。由于实际应用中出现故障的pes个数极少,则可用的pes的数目与原阵列大小近乎相同,通过访问所有可用的pes重构阵列必然导致重构速度的低下。
技术实现要素:
本发明的目的在于克服现有技术的缺点与不足,提供一种由阵列中的故障点驱动的高效快速的vlsi阵列重构技术。
本发明的目的通过下述技术方案实现:
为方便说明,对于一个m×n的物理阵列,我们用c1,c2,…,cn表示物理阵列的列。对于任意i<j且i,j∈{1,2,…,n},用a[ci,cj]表示边界为ci和cj的区域(包含边界ci和cj),即区域中每个pe都位于物理列ci和cj之间。同理,用a[ci,cj)表示边界为ci和cj的区域(包含边界ci,但不包含边界cj)。假设ex,y表示某个物理行的从左至右的第二个fpe,则我们用sex',y'表示a[ci,cj]中所有ex,y中最左边的fpe,即y值最小。
定义1(最左区域la)对于物理阵列h中的任意两条物理列ci,cj为边界,构成的区域a[ci,cj](i<j,且i,j∈{1,2,…,n}):
1)当a[ci,cj]中的物理行rk(k=1,2,…,m)至多只有1个故障pe时,则a[ci,cj)称为一个最左区域,即la[ci,cj]=a[ci,cj]。
2)否则,找到区域a[ci,cj]中的sex',y',则a[ci,cy')为其最左区域,记为la[ci,cj]=a[ci,cy')
假设区域a[ci,cj)中,序列<ek,i,ek,i+1,…,ek,j-1>表示在物理列ci和cj之间的某一行上的所有pes。对阵列中某一行上的某个序列<ek,i,ek,i+1,…,ek,j-1>进行循环位移操作,我们将这种操作称之为移位操作,即ek,i←ek,i+1,ek,i+1←ek,i+2,…,ek,j-1←ek,i,移位后得到一个新的处理器单元序列<ek,i+1,…,ek,j-1,ek,i>。其中←表示一个移动操作,如ek,i←ek,i+1表示peek,i+1移动至peek,i位置上。
该技术方案从极少数目的故障处理器及其所处的位置出发,仅仅通过对阵列中的这些少量故障处理器进行移位操作,使得阵列中的故障处理器尽可能地被移动至同一逻辑列,最大限度的保留使用原有的阵列布局,进而实现逻辑阵列的高效快速重构。
该技术方案的具体操作为:先找到整个阵列的最左区域(假设la[c1,cn]=a[c1,ci),1<i<n),然后使用移位操作将最左区域里的每个fpe移动至最左区域中最后一条物理列ci-1上。若前最左区域的右边界不是cn,那么依次在最左区域的右边区域找到该区域中的最左区域,即求la[ci,cn],然后使用移位操作最左区域里的每个fpe移动至最左区域中最后一条物理列上。直至最后一个最左区域为止,即当前最左区域的右边界为cn.
近年来的几乎所有的重构算法均以访问所有可用的pes为出发点,依据它们之间的电路开关功能实现逻辑阵列的构建。由于实际应用中出现故障的pes个数极少,则可用的pes的数目与原阵列大小近乎相同,通过访问所有可用的pes重构阵列必然导致重构速度的低下。本技术方案的优点如下。
1、该技术采用与现有技术完全不同的反向思维的方式,从极少数目的故障点及其所处的位置出发构造快速重构算法,尽可能地使用已有的可用链接,与现有技术相比,能实现更快速的阵列重构。
2、该技术能实现实时处理。当阵列中某个处理器突然间出现故障,该技术能从该故障点出发,高效迅速地完成阵列重构。
3、实验结果表明,在小故障率阵列的情况下,该技术的阵列重构速度要明显比现有技术快,且其构造的逻辑阵列大小也接近于现有技术所构造的最大逻辑阵列。即该技术方案实现了逻辑阵列的高效快速重构。
附图说明
图1是本发明具体操作步骤示意图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
本发明是针对实际应用中故障率极小的普遍现象,提出一种出现故障时阵列的实时高效快速重构技术。具体操作如图1所示。如图1(a)所示,物理阵列的大小为4×8,其中fpes数量为4。为方便表示,对阵列中的所有pes进行编号,如e1,1在阵列中编号为1,后面将用pe1表示该pe。阵列中的物理列从左至右依次表示为c1,c2,…,c8,算法具体步骤如下。
1.首先,由定义1可知,la[c1,c8]=a[c1,c6),将la[c1,c8]中的fpes移动至区域中最后一条物理列c5上,即将在区域内的pe10和pe19利用移位操作移动至c5上。具体来说,则是对序列<e2,2,e2,3,e2,4,e2,5>和<e3,3,e3,4,e3,5>进行移位操作,最后得到序列<e2,3,e2,4,e2,5,e2,2>和<e3,4,e3,5,e3,3>。la[c1,c8]的右边界为物理列c6而不是c8,因此,算法在la[c6,c8]中对fpe进行移位操作。
2.同理,由定义1可知,la[c6,c8]=a[c6,c8],将la[c6,c8]中的fpes移动至区域中最后一条物理列c8上,即对序列<e2,6,e2,7,e2,8>和<e3,7,e3,8>进行移位操作,得到序列<e2,7,e2,8,e2,6>和<e3,8,e3,7>。由于la[c6,c8]的右边界就是c8,所以算法终止。最终的逻辑阵列如图1(b)所示,其中不含fpes的逻辑列组成最终的逻辑阵列l。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。