一种最大化二维处理器阵列的重构方法与流程

文档序号:21778555发布日期:2020-08-07 19:49阅读:230来源:国知局

本发明涉及重构阵列技术领域,具体涉及一种最大化二维处理器阵列的重构方法。



背景技术:

随着超大规模集成电路(vlsi)和晶片规模集成电路(wsi)集成技术与集成工艺的不断发展与成熟,电子系统的集成密度不断增加,结构与功能的日益复杂,使得电子系统在制造时出现瑕疵的概率和运行时发生故障的概率显著提高。因此,保障高工艺技术集成电子系统的可靠性是目前急需解决的问题,特别是在航空航天、雷达、工业控制等任务关键系统中,对高可靠性电子系统的依赖性更强。以网状(mesh)连接的处理器阵列由于其结构规整、简单等特性,使得它可以快速、高效地处理信号、图像等复杂的数据。但随着vlsi和wsi阵列密度的不断增加,单一芯片上集成处理单元的数量呈指数倍增长,加大了阵列生产过程中出现瑕疵的可能,并且随着应用的日趋复杂,需求的不断增加,使得处理器单元在使用过程中出现错误的概率也随之增大,而这些故障的处理器单元将会影响整个系统的可靠性。例如装载在空间飞行器中的芯片,由于工作环境的特殊性,使得芯片很容易发生故障,并且难以进行维护。因此,有必要使用有效的容错技术对含有故障处理器单元的vlsi处理器阵列进行重构,从而充分发挥系统的功效,提高系统的可靠性。



技术实现要素:

本发明所要解决的是现有处理器阵列的故障处理器单元将会影响整个系统的可靠性的问题,提供一种最大化二维处理器阵列的重构方法。

为解决上述问题,本发明是通过以下技术方案实现的:

一种最大化二维处理器阵列的重构方法,包括步骤如下:

步骤1、构造起始逻辑列

步骤1.1、检测当前物理阵列最左侧第一列的物理列c1上的无故障处理器单元的个数m:

如果m≥k,则在物理列c1上随机选择k个无故障处理器单元形成起始逻辑列c1'的k个无故障处理器单元;

如果m<k,则调用fgcr算法构造出一条虚拟逻辑列,并从该虚拟逻辑列中随机选择k个无故障处理器单元形成起始逻辑列c1'的k个无故障处理器单元;

步骤1.2、将起始逻辑列c1'中k个无故障处理器单元按照设定的优先级规则进行排列,由此得到起始逻辑列

步骤1.3、在当前物理阵列上,将参与构造起始逻辑列c1'的k个无故障处理器单元修改为已标记状态;

步骤2、基于上一次构造的逻辑列构造当前构造的逻辑列

步骤2.1、按照设定的优先级规则,从上一次构造的逻辑列cq-1'的无故障处理器单元的邻接单元集合中选出优先级最高的无故障处理器单元,形成当前构造的逻辑列cq'的无故障处理器单元

步骤2.2、按照设定的优先级规则,从上一次构造的逻辑列cq-1'的无故障处理器单元的邻接单元集合中选出优先级最高,且为无故障处理器单元的共同后继的无故障处理器单元,形成当前构造的逻辑列cq'的无故障处理器单元

步骤2.3、在当前物理阵列上,将参与构造当前构造的逻辑列cq'的k个无故障处理器单元修改为已标记状态;

步骤3、判断当前物理阵列上未标记的无故障处理器单元的个数是否大于等于设定的逻辑列中无故障处理器单元的个数k:

如果是,则返回步骤2;

否则,转至步骤4;

步骤4、将所有构造的逻辑列形成最终的最终的逻辑阵列输出;

上述k为设定的逻辑列中无故障处理器单元的个数;l为无故障处理器单元的序号,l=2,3,…,k;q为当前逻辑列的索引号,q=2,3,…。

上述方法中,利用fgcr算法构造虚拟逻辑列的具体过程如下:

步骤1.1.1、将物理阵列的第一行最左侧的无故障处理器单元作为当前选择处理器单元;

步骤1.1.2、在当前选择处理器单元的下一相邻行中找出一个物理列索引最小且没有被标记的无故障处理单元e′,并将该无故障处理单元e′作为当前选择处理器单元,并将其修改为已标记状态;

步骤1.1.3、如果当前选择处理器单元位于物理阵列的最后一个物理行上,或者当前选择处理器单元的下一相邻行中的所有处理器单元都是已被标记的或没有无故障处理器单元时,则转至步骤1.1.4;否则,转至步骤1.1.2;

步骤1.1.4、将所有选择处理器单元按照设定的优先级规则进行排列,由此构造出虚拟逻辑列。

上述方法中,设定的优先级规则为:对于任意两个处理器单元ei和ej,先比较处理器单元ei的物理列索引col(ei)和处理器单元ej的物理列索引col(ej),若col(ei)<col(ej),则处理器单元ei的优先于处理器单元ej;在此基础上,若col(ei)=col(ej),则再进一步比较处理器单元ei的物理行索引row(ei)和处理器单元ej的物理行索引row(ej),若row(ei)<row(ej),处理器单元ei的优先于处理器单元ej。

作为改进,在每一条逻辑列构造完成之后,遍历该逻辑列上每2个无故障处理器单元,若这2个无故障处理器单元在物理阵列上相连,且路由距离大于1,则在当前物理阵列上,将这2个无故障处理器单元的之间路由路径上的无故障处理器单元修改为标记状态。

作为改进,步骤2.1中,若逻辑列cq-1'的无故障处理器单元的邻接单元集合为空时,则在无故障处理器单元的所有列后继中找出一个优先级最高的无故障处理器单元,形成当前构造逻辑列cq'的无故障处理器单元其中q为当前逻辑列的索引号,q=2,3,…。

作为改进,步骤2.2中,若上一次构造的逻辑列cq-1'的无故障处理器单元的邻接单元集合为空时,则在上一次构造的逻辑列cq-1'的无故障处理器单元的所有列后继中找出一个优先级最高,且为无故障处理器单元的共同后继的无故障处理器单元,形成当前构造的逻辑列cq'的无故障处理器单元其中l为无故障处理器单元的序号,l=2,3,…,k;q为当前逻辑列的索引号,q=2,3,…。

上述方法中,对于处理器单元ei,j的邻接单元集eadjy+(ei,j)={u},其中u为无故障处理器单元;且无故障处理器单元u与处理器单元ei,j的行后继ei+1,j的物理列索引之差的绝对值大于等于1,即|col(u)-col(ei+1,j)|≥1;且处理器单元ei,j的物理行后继ei+1,j与无故障处理器单元u的物理行索引之差大于等于0,即row(ei+1,j)-row(u)≥0。

与现有技术相比,本发明具有如下特点:

1、本发明不限制路由的补偿距离,一定程度上可以减少由互连重叠引起的不可用处理器单元的数量,从而增大阵列中无故障处理器单元的利用率,增大重构后阵列的规模;

2、本发明没有使用先前技术中的行排除方法,而是利用当前处理器单元的位置关系进行构造逻辑列,从而提高了处理器阵列的重构效率。

具体实施方式

为了便于本发明的理解,下面先对本发明所涉及的相关内容进行分析和说明:

s1、定义位置关系

物理阵列指的是对于一块经过加工制造出来的大小为m×n的vlsi处理器阵列芯片,其中可能包含一些在制造工艺中出现的故障处理器单元。包含故障处理器单元的物理阵列通过重构算法重构后,所生成的无故障子阵列称之为逻辑阵列或目标阵列。物理阵列中的行或列称为物理行或物理列,同样的,逻辑阵列中的行或列称为逻辑行或逻辑列。

由于逻辑阵列是和原始的物理阵列是同构的,所以得到的逻辑阵列上的处理器单元也要满足相应的位置关系,其不允许同一物理行或列中的处理器单元作为逻辑列或行进行连接。对于某一个处理器单元ei,j,若它用来构造逻辑阵列,这个处理器单元必定属于且唯一属于一个逻辑行或逻辑列。一般情况下,每一个处理器单元ei,j都有对应的前驱和后继单元(除边界单元以外)。假设ei,j为逻辑阵列中的一个无故障处理器单元,那么处理器单元ei-1,j和ei+1,j分别称为ei,j的行前驱和行后继,表示为row.pre(ei,j)和row.suc(ei,j)。同理的,处理器单元ei,j-1和ei,j+1分别称为ei,j的列前驱和列后继,表示为col.pre(ei,j)和col.suc(ei,j)。相反的,ei,j称作处理器单元ei,j-1和ei-1,j的共同后继,表示为cosuc(ei,j-1,ei-1,j),同时也称作处理器单元ei,j+1和ei+1,j的共同前驱,表示为cosuc(ei,j+1,ei+1,j)。

s2、处理器单元邻接单元集

利用灵活的选路约束可以在一定程度上增加可选处理器单元的个数,从而充分地利用处理器阵列中的无故障处理器单元构造更多的逻辑列。假设ei,j为无故障处理器单元,那么定义处理器单元ei,j在x轴正方向的邻接单元集(即此单元右侧邻接单元集合)为eadjx+(ei,j)={u},其中u为无故障处理器单元,|col(u)-col(ei+1,j)|≥1,且row(ei+1,j)-row(u)≥0。col(·)表示处理器单元·的物理列索引,row(·)表示处理器单元·的物理行索引。

s3、定义邻接处理器单元的优先级

对于s2中所定义的邻接单元集,在重构过程中,所有的处理器单元都是在其对应的邻接单元集中选取的,所以重构后的逻辑阵列与原始的物理阵列在逻辑结构上是同构的,且满足s1中所定义的位置关系。邻接单元集中的所有处理器单元都可以用于构造下一条逻辑列,不同的选择方案会影响其最终得到逻辑阵列的大小,因此定义以下规则用来在邻接单元集中选择优先的处理器单元。优先级规则可以根据需要进行确定,在本发明中,给定的优先级规则为:若处理器单元e在x轴正方向的邻接单元集eadjy+(e)={u},对于集合{u}中任意两个处理器单元ei和ej,若col(ei)<col(ej),则称ei优先ej;对于col(ei)=col(ej),若row(ei)<row(ej),则称ei优先ej。

s4、初始化起始逻辑列

若要构造一条逻辑列,其中无故障处理器单元的个数为k,算法首先检测原始物理阵列最左侧第一条物理列c1上的无故障处理器单元的个数m:

如果m满足m>k,则在第一物理列c1上随机选择k个无故障处理器单元形成起始逻辑列c1';

如果m满足m=k,则第一物理列c1即形成起始逻辑列c1';

如果m满足m<k,则调用fgcr算法构造出一条无故障单元个数为m的虚拟逻辑列,并从该虚拟逻辑列中随机选择k个无故障处理器单元形成起始逻辑列c1'。

fgcr算法是一种利用贪心策略求最大的逻辑阵列的算法。算法具体描述如下,

1)算法首先从第一行最左侧的无故障处理器单元ei,j开始,将尝试将当前处理单元ei,j与其下一相邻行最左侧且没有被标记的无故障处理单元(记为e′i,j)连接起来,如果算法成功的将ei,j和e′i,j连接(即两个单元之间不相互堵塞,就能够路由),那么将e′i,j修改为已标记状态,并把处理单元e′i,j作为当前的处理单元重复过程1)。

直至发生了以下两种情况时算法终止:

a)当前的处理器单元位于物理阵列的最后一个物理行rm上。

b)当前处理器单元的下一相邻行中的所有处理器单元都是已经被标记的或没有无故障处理器单元。

如果fgcr算法终止于第一种情况,则可从上到下的重构出一条逻辑列。如果终止于第二种情况,则fgcr算法无法构造出一条合适的逻辑列,算法彻底终止。

2)当构造完一条逻辑列后,由于灵活的路由方式,在重构过程中,路由距离d并没有被不限制,所以当一条逻辑列构造完成后,会有一部分无故障处理器单元会由于链路的堵塞而变成不可用的,算法会将这些处理器单元标记,并继续重复过程1),直到下一条逻辑列构造成功。

算法采用这样从左到右的方式,一条接一条地重构出当前状态下最左边的逻辑列,直到物理阵列中无法再重构出新的逻辑列,fgcr算法最终重构出了最大目标阵列。

s5、定义不可用处理器单元

由于在补偿过程中不限制路由距离(路由补偿距离)d,并且处理器中的开关使用的单口开关,所以每次最多只能容纳一条信息通过,当逻辑列两个相连的处理器单元的路由距离d大于1时(即这2个处理器单元不直接相连时),会使他们之间的路由路径上的一些无故障处理器单元变成不可用,因为两个处理器单元占用了一些开关和链接,从而导致其他无故障处理器没有可用的开关和链路使用。因此,在一条逻辑列构造完成之后,要在物理阵列上检测并标记这些无故障处理器单元,在构造下一条逻辑列的时候,这些被标记的处理器单元不再参与构造。

s6、构造后续逻辑列

起始逻辑列[v1,v2,…vk]构造完成后,依照s3中所定义的优先级,选取邻接单元集合eadjx+(v1)中最优(即优先级最高)的无故障处理器单元作为下一条逻辑列的初始单元,表示为u1。

然后选取eadjx+(v2)中最优(即优先级最高)的无故障处理器单元作为下一个单元,表示为u2,其中u2为处理器单元v2和u1的共同后继,记为u2∈cosuc(v2,u1),依次在每个邻接单元集中选取构造,直到一条无故障处理器单元个数为k的逻辑列构造完成,即第二条逻辑列构造完成。

s7、回溯

算法按照自左向右、自上至下的顺序,依次构造相应的逻辑列,在起始逻辑列初始化后,后续的逻辑列会在其对应的邻接单元集选点来构造对应的逻辑列。如果在上述构造过程中当前位置没有合适的处理器单元选择,那么就会执行回溯操作。根据逻辑列的构造方法,一般会发生以下的回溯情况:若当前位置的邻接单元集为空,即算法记录其位置信息并回溯至处理器单元ei,j的列前驱单元,即col.pre(ei,j),然后从eadjy+(col.pre(ei,j))中选择另一个优先级较高的处理器单元来代替之前的处理器单元ui,然后继续构造,其中若处理器单元满足row(col.pre(ei,j))=row(ui),col(col.pre(ei,j))<col(ei,j),row(ei,j)=row(col.pre(ei,j))+1,则相邻的两个处理器单元不满足连线规则,则继续进行回溯。重复此操作直到一条满足要求的逻辑列构造成功。若算法回溯到第一行并且eadjy+(ei,j)中依旧没有可用的处理器单元,算法结束。

s8、构造逻辑阵列

通过步骤s4、s5、s6和s7,算法按照从左至右的顺序依次构造逻辑列,若逻辑列的个数为n',则对应大小为k×n'的逻辑阵列构造成功。对于一个m×n的原始物理阵列,为了得到一个尽可能大的逻辑阵列,算法依次迭代构造逻辑阵列,然后选取最大的逻辑阵列m'×n'作为最终的逻辑阵列。

本发明通过灵活的路由方式扩展了可用处理器单元的邻接单元集合,从而在一定程度上提升了处理器中无故障处理器单元的利用率,增大了可重构处理器阵列的规模,从而使得目标阵列的大小显著增加;此外,本发明还可以在多项式时间内生成一个更大的逻辑阵列,从而能够在不损失收获的情况下缩短重构时间。

基于上述分析,本发明所实现的一种最大化二维处理器阵列的重构方法,其特征是,包括步骤如下:

初始化,设定逻辑列中无故障处理器单元的个数k和设定的优先级规则。

在本实施例中,所设定的优先级规则为:对于任意两个处理器单元ei和ej,先比较处理器单元ei的列索引col(ei)和处理器单元ej的列索引col(ej),若col(ei)<col(ej),则处理器单元ei的优先于处理器单元ej;在此基础上,若col(ei)=col(ej),则再进一步比较处理器单元ei的行索引row(ei)和处理器单元ej的行索引row(ej),若row(ei)<row(ej),处理器单元ei的优先于处理器单元ej。

步骤1、构造起始逻辑列其具体步骤如下:

步骤1.1、检测当前物理阵列最左侧第一列的物理列c1上的无故障处理器单元的个数m:

如果m≥k,则在物理列c1上随机选择k个无故障处理器单元形成起始逻辑列c1'的k个无故障处理器单元;

如果m<k,则调用fgcr算法构造出一条虚拟逻辑列,并从该虚拟逻辑列中随机选择k个无故障处理器单元形成起始逻辑列c1'的k个无故障处理器单元;

上述利用fgcr算法构造虚拟逻辑列的具体过程如下:

步骤1.1.1、将物理阵列的第一行最左侧的无故障处理器单元作为当前选择处理器单元;

步骤1.1.2、在当前选择处理器单元的下一相邻行中找出一个物理列索引最小且没有被标记的无故障处理单元e′,并将该无故障处理单元e′作为当前选择处理器单元,并将其修改为已标记状态;

步骤1.1.3、如果当前选择处理器单元位于物理阵列的最后一个物理行上,或者当前选择处理器单元的下一相邻行中的所有处理器单元都是已被标记的或没有无故障处理器单元时,则转至步骤1.1.4;否则,转至步骤1.1.2;

步骤1.1.4、将所有选择处理器单元按照设定的优先级规则进行排列,由此构造出虚拟逻辑列;

步骤1.2、将起始逻辑列c1'中k个无故障处理器单元按照设定的优先级规则进行排列,由此得到起始逻辑列

步骤1.3、在当前物理阵列上,将参与构造起始逻辑列c1'的k个无故障处理器单元修改为已标记状态;同时,遍历该逻辑列上每2个无故障处理器单元,若这2个无故障处理器单元在物理阵列上相连,且路由距离大于1,则在当前物理阵列上,将这2个无故障处理器单元的之间路由路径上的无故障处理器单元修改为标记状态;

步骤2、基于上一次构造的逻辑列构造当前构造的逻辑列其中l为无故障处理器单元的序号,l=2,3,…,k;q为当前逻辑列的索引号,q=2,3,…。其具体步骤如下:

步骤2.1、按照设定的优先级规则,从上一次构造的逻辑列cq-1'的无故障处理器单元的邻接单元集合中选出优先级最高的无故障处理器单元,形成当前构造的逻辑列cq'的无故障处理器单元

若逻辑列cq-1'的无故障处理器单元的邻接单元集合为空时,则在无故障处理器单元的所有列后继中找出一个优先级最高的无故障处理器单元,形成当前构造逻辑列cq'的无故障处理器单元

步骤2.2、按照设定的优先级规则,从上一次构造的逻辑列cq-1'的无故障处理器单元的邻接单元集合中选出优先级最高,且为无故障处理器单元的共同后继的无故障处理器单元,形成当前构造的逻辑列cq'的无故障处理器单元若上一次构造的逻辑列cq-1'的无故障处理器单元的邻接单元集合为空时,则在上一次构造的逻辑列cq-1'的无故障处理器单元的所有列后继中找出一个优先级最高,且为无故障处理器单元的共同后继的无故障处理器单元,形成当前构造的逻辑列cq'的无故障处理器单元

步骤2.3、在当前物理阵列上,将参与构造当前构造的逻辑列cq'的k个无故障处理器单元修改为已标记状态;同时,遍历该逻辑列上每2个无故障处理器单元,若这2个无故障处理器单元在物理阵列上相连,且路由距离大于1,则在当前物理阵列上,将这2个无故障处理器单元的之间路由路径上的无故障处理器单元修改为标记状态;

步骤3、判断当前物理阵列上未标记的无故障处理器单元的个数是否大于等于设定的逻辑列中无故障处理器单元的个数k:如果是,则返回步骤2;否则,转至步骤4;

步骤4、将所有构造的逻辑列形成最终的最终的逻辑阵列输出。

需要说明的是,尽管以上本发明所述的实施例是说明性的,但这并非是对本发明的限制,因此本发明并不局限于上述具体实施方式中。在不脱离本发明原理的情况下,凡是本领域技术人员在本发明的启示下获得的其它实施方式,均视为在本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1