多算子单元编码方法和装置、相位控制电路和存储介质与流程

文档序号:30985602发布日期:2022-08-03 01:27阅读:73来源:国知局
多算子单元编码方法和装置、相位控制电路和存储介质与流程

1.本发明实施例涉及半导体元件技术领域,尤其涉及一种多算子单元编码方法和装置、相位控制电路和存储介质。


背景技术:

2.随着人工智能算力需求的急速增长,一颗人工智能芯片内部集成的算子群内的算子数量也随着大规模增长,而这使得集群算子的功耗性能的提升挑战越来越大。芯片在接收到指令后计算单元全负荷运算时的稳定性往往受到算子功耗噪声的干扰,在并行运算的过程中,会有大量的功耗消耗,在功耗消耗的过程中,大芯片的一个大的挑战是电源噪声会对芯片内部电路造成干扰或冲击。
3.对此,传统的方式是将芯片供电单元加上足够的电容保护装置,进行类似蓄电效果,以防电压压降过大问题,但由于芯片的面积有限,电容保护机制已无法快速响应,无法克服多算子产生的瞬间噪声冲击。进而,时钟周期的相位调节作为一种解决方式,将多个算子分组到不同的时钟起点上,进行0度,90度(时钟周期的1/4),180度,270度等大颗粒度的切换,这种切换调配时钟的相位,在一个时钟周期内分组启动算子单元,将算子单元分为多个小组错时启动,能够实现一定程度的功耗噪声的抑制。
4.然而,随着半导体工艺向7nm、5nm、3nm的推进,算子单元密集,算子规模持续扩大,上述大颗粒度手段无法满足调控精度需求,系统噪声的干扰和冲击问题已无法得到有效解决,这时候我们就需要一种细颗粒度的时钟调相方式,以满足算子单元的密度的增加的情况下,实现类似0度,5度,15度等细颗粒度的相位调控。而在实现细颗粒度相位调控的过程中,具体如何确定各算子单元的启动编号,以使得在各算子单元分别根据对应的启动编号启动时,能够实现系统的效果良好的噪声抑制,成为了新的亟待解决的难题。


技术实现要素:

5.本发明实施例提供一种多算子单元编码方法和装置、相位控制电路和存储介质,以基于算子单元的功耗状态和物理位置编码算子单元的启动编号,从而实现在各算子单元分别根据对应的启动编号进行启动时,系统噪声抑制的效果良好。
6.第一方面,本发明实施例提供了一种多算子单元编码方法,包括:
7.获取n+1个算子单元中每个所述算子单元的功耗数据,其中,n为正整数;
8.基于所述算子单元的所述功耗数据的大小,对n+1个所述算子单元依从大到小的次序排序;
9.获取n+1个所述算子单元中每个所述算子单元的位置信息;
10.根据各所述算子单元的排序序号和位置信息对各所述算子单元的启动编号进行编码,得到n+1个所述启动编号m0至mn,以使得当n+1个所述算子单元在一个时钟周期内分别根据对应的所述启动编号进行启动时,从所述启动编号为m0的所述算子单元依次启动至所述启动编号为mt的所述算子单元的过程中,所述算子单元的所述功耗数据呈增大趋势,
以及从所述启动编号为mt的所述算子单元依次启动至所述启动编号为mn的所述算子单元的过程中,所述算子单元的所述功耗数据呈减小趋势,t=int(m),m=n/2;
11.其中,所述排序序号为2r的算子单元的所述启动编号为mk,所述排序序号为2r+1的算子单元的所述启动编号为mg;
12.k=m-r且g=m+r,或者k=m+r且g=m-r;
13.0<r≤n/2;在n+1为奇数的情况下r为正整数,在n+1为偶数的情况下r为半整数。
14.可选地,在n+1为奇数的情况下,根据各所述算子单元的排序序号和位置信息对各所述算子单元的启动编号进行编码,得到n+1个所述启动编号m0至mn包括:
15.编码所述排序序号为1的算子单元的启动编号为mm;
16.将所述排序序号为2r和2r+1的算子单元的启动编号分别编码为mk和mg;
17.其中,当r=1时,确定k=m-1且g=m+1或者确定k=m+1且g=m-1;
18.当4≤2r≤n时,根据所述排序序号为2r-2、2r-1、2r和2r+1的算子单元的位置信息确定k=m-r且g=m+r或者确定k=m+r且g=m-r。
19.可选地,在n+1为偶数的情况下,根据各所述算子单元的排序序号和位置信息对各所述算子单元的启动编号进行编码,得到n+1个所述启动编号m0至mn包括:
20.将所述排序序号为2r和2r+1的算子单元的启动编号分别编码为mk和mg;
21.其中,当r=1/2时,确定k=m-(1/2)且g=m+(1/2)或者确定k=m+(1/2)且g=m-(1/2);当3≤2r≤n时,根据所述排序序号为2r-2、2r-1、2r及2r+1的算子单元的位置信息确定k=m-r且g=m+r或者确定k=m+r且g=m-r。
22.可选地,根据所述排序序号为2r-2、2r-1、2r和2r+1的算子单元的位置信息确定k=m-r且g=m+r或者确定k=m+r且g=m-r包括:
23.当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,i)或者d(2r+1,j)时,确定k=m-r且g=m+r;
24.当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,j)或者d(2r+1,i)时,确定k=m-r且g=m+r;
25.其中,i为所述启动编号为m[m-(r-1)]的算子单元的排序序号,j为所述启动编号为m[m+(r-1)]的算子单元的排序序号;
[0026]
d(u,v)等于所述排序序号为u的算子单元与所述排序序号为v的算子单元之间的曼哈顿距离,u=2r或2r+1;v=2(r-1)或2(r-1)+1。
[0027]
第二方面,本发明实施例还提供了一种多算子单元编码装置,包括:
[0028]
功耗获取单元,用于获取n+1个算子单元中每个所述算子单元的功耗数据,其中,n为正整数;
[0029]
功耗排序单元,用于基于所述算子单元的所述功耗数据的大小,对n+1个所述算子单元依从大到小的次序排序;
[0030]
位置获取单元,用于获取n+1个所述算子单元中每个所述算子单元的位置信息;
[0031]
编码单元,用于根据各所述算子单元的排序序号和位置信息对对应的各所述算子单元的启动编号进行编码,得到n+1个所述启动编号m0至mn,以使得当n+1个所述算子单元在一个时钟周期内分别根据对应的所述启动编号进行启动时,从所述启动编号为m0的所述算子单元依次启动至所述启动编号为mt的所述算子单元的过程中,所述算子单元的所述功
耗数据呈增大趋势,以及从所述启动编号为mt的所述算子单元依次启动至所述启动编号为mn的所述算子单元的过程中,所述算子单元的所述功耗数据呈减小趋势,t=int(m),m=n/2;其中,所述排序序号为2r对应的算子单元的所述启动编号为mk,所述排序序号为2r+1对应的算子单元的所述启动编号为mg;
[0032]
k=m-r且g=m+r,或者k=m+r且g=m-r;
[0033]
0<r≤n/2;在n+1为奇数的情况下r为正整数,在n+1为偶数的情况下r为半整数。
[0034]
可选地,所述编码单元包括第一编码子单元;
[0035]
所述第一编码子单元用于在n+1为奇数的情况下,编码所述排序序号为1的算子单元的启动编号为mm;将所述排序序号为2r和2r+1的算子单元的启动编号分别编码为mk和mg;
[0036]
其中,当r=1时,确定k=m-1且g=m+1或者确定k=m+1且g=m-1;
[0037]
当4≤2r≤n时,根据所述排序序号为2r-2、2r-1、2r和2r+1的算子单元的位置信息确定k=m-r且g=m+r或者确定k=m+r且g=m-r。
[0038]
可选地,所述编码单元还包括第二编码子单元;
[0039]
所述第二编码子单元用于在n+1为偶数的情况下,将所述排序序号为2r和2r+1的算子单元的启动编号分别编码为mk和mg;
[0040]
其中,当r=1/2时,确定k=m-(1/2)且g=m+(1/2)或者确定k=m+(1/2)且g=m-(1/2);当3≤2r≤n时,根据所述排序序号为2r-2、2r-1、2r及2r+1的算子单元的位置信息确定k=m-r且g=m+r或者确定k=m+r且g=m-r。
[0041]
可选地,所述第二编码子单元用于当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,i)或者d(2r+1,j)时,确定k=m-r且g=m+r;
[0042]
当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,j)或者d(2r+1,i)时,确定k=m-r且g=m+r;
[0043]
其中,i为所述启动编号为m[m-(r-1)]的算子单元的排序序号,j为所述启动编号为m[m+(r-1)]的算子单元的排序序号;
[0044]
d(u,v)等于所述排序序号为u对应的算子单元与所述排序序号为v对应的算子单元之间的曼哈顿距离,u=2r或2r+1;v=2(r-1)或2(r-1)+1。
[0045]
第三方面,本发明实施例换提供了一种时钟相位控制电路,用于控制时钟信号的相位,包括:
[0046]
时钟分发模块、相位调节模块以及如上述第二方面所述的多算子单元编码装置;
[0047]
所述时钟分发模块包括等距分发单元、抗干扰单元、时钟接收端和n+1个时钟发送端;
[0048]
所述时钟接收端通过所述等距分发单元分别连接各个所述时钟发送端;所述等距分发单元用于将所述时钟接收端接收的时钟信号,分发为分别从各个所述时钟发送端对应发送的多路分支时钟信号,并用于控制所述时钟接收端与各个所述时钟发送端之间的信号传输线的总长度相同;
[0049]
所述抗干扰单元的延伸方向与所述信号传输线的延伸方向相同,所述抗干扰单元设置于所述信号传输线的至少相对的两侧;所述抗干扰单元用于吸收分布于所述信号传输线的外表面的干扰信号;
[0050]
所述相位调节模块包括延迟单元、n+1个调相输入端和n+1个调相输出端;
[0051]
各所述调相输入端均与所述多算子单元编码装置连接,所述多算子单元编码装置用于将n+1个算子单元在一个时钟周期内的启动编号m0至mn分别发送至对应的所述调相输入端;
[0052]
所述调相输入端与所述时钟发送端一一对应连接;一个所述调相输入端与对应的一个所述调相输出端之间设置一个所述延迟单元;所述延迟单元用于根据对应的所述启动编号控制对应的所述调相输入端输入的所述分支时钟信号的相位发生相应的延迟,以使对应的所述调相输出端输出发生了相应的延迟的所述分支时钟信号。
[0053]
第四方面,本发明实施例还提供了一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上述第一方面所述的多算子单元编码方法。
[0054]
本发明实施例提供的多算子单元编码方法和装置、相位控制电路和存储介质,首先获取n+1个算子单元中每个算子单元的功耗数据,再基于算子单元的功耗数据的大小,对n+1个算子单元依从大到小的次序排序,以及获取n+1个算子单元中每个算子单元的位置信息,进而根据各算子单元的排序序号和位置信息对各算子单元的启动编号进行编码,得到第m0个至第mn个启动编号。这样,当n+1个算子单元在一个时钟周期内分别根据对应的启动编号进行启动时,从启动编号为m0的算子单元依次启动至启动编号为mt的算子单元的过程中,算子单元对应的功耗数据呈增大趋势,以及从启动编号为mt的算子单元依次启动至启动编号为mn的算子单元的过程中,算子单元对应的功耗数据呈减小趋势;同时,启动编号相邻的两个算子单元之间的物理位置也相距较远。本发明实施例据此使得当n+1个算子单元在实现细颗粒度错相位启动时,在按照所编码的启动编号进行依次启动的算子单元之间,功耗数据的变化是平缓、平稳的,从而噪声抖动较小,系统噪声被有效抑制,效果良好;同时由于启动编号相邻的两个算子单元之间的物理位置相距较远,从而进一步有效抑制了系统噪声,其中的系统可以是算子群或者芯片等。
附图说明
[0055]
图1是本发实施例提供的一种多算子单元编码方法的流程图;
[0056]
图2是本发明实施例提供的一种多个算子单元的功耗数据的条形图;
[0057]
图3是对图2所示的多个算子单元的功耗数据依从大到小的次序排序后所得到的多个算子单元的功耗数据的条形图;
[0058]
图4是对图3所示的多个功耗数据分别对应的算子单元进行编码后相应的功耗数据在一个时钟周期内的条形分布图;
[0059]
图5是本发明实施例提供的一种芯片中指定区域内算子单元的物理分布示意图;
[0060]
图6是本发明实施例提供的另一种多个功耗数据分别对应的算子单元进行编码后相应的功耗数据在一个时钟周期内的条形分布图;
[0061]
图7是本发明实施例提供的另一种芯片中指定区域内算子单元的物理分布示意图;
[0062]
图8是本发明实施例提供的一种多算子单元编码装置的结构示意图;
[0063]
图9是本发明实施例提供的一种时钟相位控制电路的结构示意图。
具体实施方式
[0064]
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0065]
本实施例中提到的算子群可含有多个算子单元,算子单元可含有多个算子,可将算子群内的多个算子单元进行细颗粒度分组启动(例如各个算子单元各自构成一组进行启动或者至少两个算子单元构成一组进行启动),而在分组启动的过程中,按照本发明实施例基于算子单元的功耗状态和物理位置对算子单元编码的启动编号进行启动,能够有效抑制算子群功耗噪声,效果良好,本发明实施例提供的多算子单元编码方法可由多算子单元编码装置执行。图1是本发实施例提供的一种多算子单元编码方法的流程图。参考图1,多算子单元编码方法包括:
[0066]
s10、获取n+1个算子单元中每个算子单元的功耗数据,其中,n为正整数。
[0067]
具体地,算子单元的功耗数据包括算子单元的功耗值,一个算子单元对应一个功耗数据,n+1个算子单元中各算子单元可以具有不同的功耗数据,可以认为算子单元在某单一业务运行的过程中其对应的功耗数据基本不会发生变化。可通过功耗监控装置对算子单元的功耗进行测试,进而从功耗监控装置直接获取n+1个算子单元中各算子单元的功耗数据。
[0068]
为了让读者更清楚直观地理解所获取到的n+1个算子单元的功耗数据,下面以树形图来示例性说明。图2是本发明实施例提供的一种多个算子单元的功耗数据的条形图,图2中示例性地n+1的取值大小为11;横轴是功耗数据的初始标记号码,从p0到p10代表从第零个算子单元的功耗数据到第十个算子单元的功耗数据;纵轴是功耗数据,以w表示;从图2可以看出,算子单元的功耗数据的大小各不相同。
[0069]
s11、基于算子单元的功耗数据的大小,对n+1个算子单元依从大到小的次序排序。
[0070]
具体地,可通过功耗排序装置对所获取到的n+1个算子单元的n+1个功耗数据依照从大到小的次序排序,功耗数据所得到排序序号作为对应的算子单元的排序序号,本发明实施例由此得到各算子单元的排序序号。
[0071]
示例性地,图3是对图2所示的多个算子单元的功耗数据依从大到小的次序排序后所得到的多个算子单元的功耗数据的条形图。结合图2和图3所示,图2中多个算子单元的功耗数据被功耗排序装置依从大到小的次序进行了排序,其中,从左至右且从大到小,功耗数据p1的算子单元的排序序号为1,功耗数据p6的算子单元的排序序号为2,功耗数据p2的算子单元的排序序号为3,功耗数据p7的算子单元的排序序号为4,功耗数据p3的算子单元的排序序号为5,功耗数据p9的算子单元的排序序号为6,功耗数据p4的算子单元的排序序号为7,功耗数据p10的算子单元的排序序号为8,功耗数据p8的算子单元的排序序号为9,功耗数据p0的算子单元的排序序号为10,功耗数据p5的算子单元的排序序号为11。
[0072]
s12、获取n+1个算子单元中每个算子单元的位置信息。
[0073]
具体地,算子单元的位置信息可包括算子单元的中心坐标(x,y)。算子单元的位置信息可预先存储,在需要计算时直接调用即可。
[0074]
s13、根据各算子单元的排序序号和位置信息对各算子单元的启动编号进行编码,得到n+1个启动编号m0至mn,以使得当n+1个算子单元在一个时钟周期内分别根据对应的启
动编号进行启动时,从启动编号为m0的算子单元依次启动至启动编号为mt的算子单元的过程中,算子单元的功耗数据呈增大趋势,以及从启动编号为mt的算子单元依次启动至启动编号为mn的算子单元的过程中,算子单元的功耗数据呈减小趋势,t=int(m),m=n/2;其中,排序序号为2r的算子单元的启动编号为mk,排序序号为2r+1的算子单元的启动编号为mg;k=m-r且g=m+r,或者k=m+r且g=m-r;0<r≤n/2;在n+1为奇数的情况下r为正整数,在n+1为偶数的情况下r为半整数。
[0075]
具体地,算子单元的启动编号的含义是:在一个时钟周期内,n+1个算子单元启动时会分别根据对应的启动编号依次启动;例如,第零个算子单元的启动编号是m0,第十个算子单元的启动编号是m1,第四个算子单元的启动编号是m2,第七个算子单元的启动编号是m3,则在一个时钟周期内,这四个算子单元在启动时,启动的顺序依次是第零个算子单元(启动编号为m0)、第十个算子单元(启动编号为m1)、第四个算子单元(启动编号为m2)、第七个算子单元(启动编号为m3);同理,可依次按照启动编号m0至mn启动对应的n+1个算子单元。
[0076]
功耗数据的突变容易引起功耗噪声,而物理位置相距较近同时启动顺序也相距较近的两个算子单元在启动时也容易引起功耗噪声。据此,本发明实施例基于各算子单元的功耗数据大小排序和各算子单元的位置信息对各算子单元的启动编号进行编码,得到对应n+1个算子单元的启动编号m0至mn,从而使得当n+1个算子单元在一个时钟周期内分别根据对应的启动编号进行启动时,从启动编号为m0的算子单元依次启动至启动编号为mt的算子单元的过程中,以及从启动编号为mt的算子单元依次启动至启动编号为mn的算子单元的过程中,算子单元的功耗数据的变化是先渐渐地增大后渐渐地减小,即功耗数据的变化是平缓、平稳的,避免了相邻启动的算子单元之间功耗数据出现突变,从而噪声抖动较小,系统噪声被有效抑制,效果良好;同时使得启动编号相邻的两个算子单元之间的物理位置相距较远,从而进一步有效抑制了系统噪声。
[0077]
其中,取t=int(m)且m=n/2,int是将m向下取整为最接近的整数的函数,从而启动编号mt不论是在n为奇数的情况下还是n为偶数的情况下,其始终为m0至mn中的正中间的一个启动编号或者正中间的两个启动编号中的其中一个,即mt处于一个时钟周期的中间位置(例如正中间位置),而mt所对应的算子单元为n+1个算子单元中功耗数据最大的算子单元,从而使得算子单元的功耗数据的变化是渐渐地增大又渐渐地减小,功耗数据的变化是平缓、平稳的。例如,若n=10,则m=5,t=5,mt=m5。再例如,若n=9,则m=4.5,t=4,mt=m4,当然此时mt也可以取m5,本发明实施例对此不作限制。
[0078]
排序序号为2r的算子单元的启动编号为mk,排序序号为2r+1的算子单元的启动编号为mg;k=m-r且g=m+r,或者k=m+r且g=m-r;0<r≤n/2;在n+1为奇数的情况下r为正整数,在n+1为偶数的情况下r为半整数。即,不论是n+1为奇数还是n+1为偶数均对应两种编码方式,一种编码方式是排序序号为2r的算子单元的启动编号为m(m-r)且排序序号为2r+1的算子单元的启动编号为m(m+r),另一种编码方式是排序序号为2r对应的算子单元的启动编号为m(m+r)且排序序号为2r+1的算子单元的启动编号为m(m-r),该两种编码方式其均能够实现一个时钟周期内n+1个算子单元的功耗数据平缓、平稳变化,在此基础上,具体选择该两种编码方式的哪一种编码方式进行编码可取决于排序序号为2r、2r+1、2r-1和2r-2的算子单元的位置信息,以实现启动编号相邻的两个算子单元之间的物理位置相距较远,从而
进一步有效抑制系统噪声。
[0079]
在上述各实施例的基础上,可选地,在n+1为奇数的情况下,步骤s13中根据各算子单元的排序序号和位置信息对各算子单元的启动编号进行编码得到n+1个启动编号m0至mn包括:
[0080]
编码排序序号为1的算子单元的启动编号为mm;
[0081]
编码排序序号为2r和2r+1的算子单元的启动编号分别为mk和mg;其中,当r=1时,确定k=m-1且g=m+1或者确定k=m+1且g=m-1;当4≤2r≤n时,根据排序序号为2r-2、2r-1、2r和2r+1的算子单元的位置信息确定k=m-r且g=m+r或者确定k=m+r且g=m-r。
[0082]
即,n+1个算子单元中功耗数据最大的算子单元占用启动编号m0至mn中正中间的启动编号mm。排序序号为2和3的算子单元占用启动编号m0至mn中的m(m-1)和m(m+1),在此基础上,排序序号为2的算子单元占用m(m-1)还是排序序号为3的算子单元占用m(m-1)是任意的。但当4≤2r≤n,排序序号为2r和2r+1的算子单元占用启动编号m0至mn中的m(m-r)和m(m+r)时,排序序号为2r的算子单元占用m(m-r)还是排序序号为2r+1的算子单元占用m(m-r)可取决于排序序号为2r、2r+1、2r-1和2r-2的算子单元的位置信息,以在实现了一个时钟周期内n+1个算子单元的功耗数据平缓、平稳变化的基础上实现启动编号相邻的两个算子单元之间的物理位置相距较远,从而进一步有效抑制系统噪声。
[0083]
在上述各实施例的基础上,可选地,在n+1为奇数的情况下,根据排序序号为2r-2、2r-1、2r和2r+1的算子单元的位置信息确定k=m-r及g=m+r或者确定k=m+r及g=m-r包括:当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,i)或者d(2r+1,j)时,确定k=m-r且g=m+r;当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,j)或者d(2r+1,i)时,确定k=m-r且g=m+r;其中,i为启动编号为m[m-(r-1)]的算子单元的排序序号,j为启动编号为m[m+(r-1)]的算子单元的排序序号;d(u,v)等于排序序号为u的算子单元与排序序号为v的算子单元之间的曼哈顿距离,u=2r,2r+1;v=2(r-1),2(r-1)+1。
[0084]
在本发明实施例中,若算子单元a的位置信息为(x1,y1)且算子单元b的位置信息为(x2,y2),则算子单元a与算子单元b之间的曼哈顿距离d(a,b)=|x1-x2|+|y1-y2|。本发明实施例中,两个算子单元的物理位置相距越远则相应地该两个算子单元之间的曼哈顿距离越大,两个算子单元的物理位置相距越近则相应地该两个算子单元之间的曼哈顿距离越小,物理位置相距越远可以是指在二维平面内的位置相距越远,物理位置相距较近是指在二维平面内的位置相距较近。
[0085]
示例性地,图4是对图3所示的多个功耗数据分别对应的算子单元进行编码后相应的功耗数据在一个时钟周期内的条形分布图,结合图3和图4所示:
[0086]
如图4所示例性示意的,排序序号为1的算子单元位于时钟周期a的正中间a/2处,表示排序序号为1的算子单元对应的启动编号为mm=m5,该算子单元将在a/2处启动;
[0087]
如图4所示例性示意的,排序序号为3的算子单元位于a/2的右边且与a/2相邻,表示排序序号为3的算子单元的启动编号为m(m+1)=m6,该算子单元将在启动编号为m5的算子单元启动之后启动;排序序号为2的算子单元位于a/2的左边且与a/2相邻,表示排序序号为2的算子单元的启动编号为m(m-1)=m4,该算子单元将在启动编号为m5的算子单元启动之前启动;
[0088]
如图4所示例性示意的,由于排序序号为4的算子单元与排序序号为2的算子单元
之间的曼哈顿距离、排序序号为4的算子单元与排序序号为3的算子单元之间的曼哈顿距离、排序序号为5的算子单元与排序序号为2的算子单元之间的曼哈顿距离、排序序号为5的算子单元与排序序号为3的算子单元之间的曼哈顿距离中,参考图5所示例性示意的,排序序号为4的算子单元与排序序号为2的算子单元之间的曼哈顿距离最大(本发明实施例中,两个算子单元200的物理位置相距越远则相应地该两个算子单元200之间的曼哈顿距离越大),符合启动编号相邻的两个算子单元之间的物理位置相距较远从而可实现系统降噪的需求,因此确定排序序号为4的算子单元的启动编号为m(m-2)=m3,相应地确定排序序号为5的算子单元的启动编号为m(m+2)=m7;
[0089]
基于相同的构思,对排序序号为6和排序序号为7的算子单元编码启动编号包括:r=3,m-r=2,m+r=8,i=4,j=5;当d64、d65、d74、d75中的最大值为d64或者d75时,确定k=2及g=8,从而排序序号为6的算子单元的启动编号为m2及排序序号为7的算子单元的启动编号为m8;当d64、d65、d74、d75中的最大值为d65或者d74时,确定k=8及g=2,从而排序序号为6的算子单元的启动编号为m8及排序序号为7的算子单元的启动编号为m2。结合图4与图5所示例性示意的,排序序号为7的算子单元和排序序号为4的算子单元的曼哈顿距离d74为d64、d65、d74、d75中的最大值,故排序序号为7对应的算子单元的启动编号为m2及排序序号为6对应的算子单元的启动编号为m8,从而在排序序号为7的算子单元和排序序号为4的算子单元两者的启动编号相邻时,两者之间的物理位置却相距较远,能够有效防止系统噪声。
[0090]
对排序序号为8和排序序号为9的算子单元编码启动编号包括:r=4,m-r=1,m+r=9,i=7,j=6;当d87、d86、d97、d96中的最大值为d87或者d96时,确定k=1及g=9,从而排序序号为8的算子单元的启动编号为m1及排序序号为9的算子单元的启动编号为m9;当d87、d86、d97、d96中的最大值为d86或者d97时,确定k=9及g=1,从而排序序号为8的算子单元的启动编号为m9及排序序号为9的算子单元的启动编号为m1。结合图4与图5所示例性示意的,排序序号为9的算子单元和排序序号为7的算子单元的曼哈顿距离d97为d87、d86、d97、d96中的最大值,故排序序号为8的算子单元的启动编号为m9及排序序号为9的算子单元的启动编号为m1,从而在排序序号为9的算子单元和排序序号为7的算子单元两者的启动编号相邻时,两者之间的物理位置却相距较远,能够有效防止系统噪声。
[0091]
对排序序号为10和排序序号为11的算子单元编码启动编号包括:r=5,m-r=0,m+r=10,i=9,j=8;当d(10,8)、d(10,9)、d(11,8)、d(11,9)中的最大值为d(10,9)或者d(11,8)时,确定k=0及g=10,从而排序序号为10的算子单元的启动编号为m0及排序序号为11的算子单元的启动编号为m10;当d(10,8)、d(10,9)、d(11,8)、d(11,9)中的最大值为d(10,8)或者d(11,9)时,确定k=10及g=0,从而排序序号为10的算子单元的启动编号为m10及排序序号为11的算子单元的启动编号为m0。结合图4与图5所示例性示意的,排序序号为11的算子单元和排序序号为9的算子单元的曼哈顿距离d(11,9)为d(10,8)、d(10,9)、d(11,8)、d(11,9)中的最大值,故排序序号为11的算子单元的启动编号为m0及排序序号为10的算子单元的启动编号为m10,从而在排序序号为11的算子单元和排序序号为9的算子单元两者的启动编号相邻时,两者之间的物理位置却相距较远,能够有效防止系统噪声。
[0092]
在上述各实施例的基础上,可选地,在n+1为偶数的情况下,步骤s13中根据各算子单元的排序序号和位置信息对各算子单元的启动编号进行编码得到n+1个启动编号m0至mn
包括:
[0093]
将排序序号为2r和2r+1的算子单元的启动编号分别编码为mk和mg;其中,当r=1/2时,确定k=m-(1/2)且g=m+(1/2)或者确定k=m+(1/2)且g=m-(1/2);当3≤2r≤n时,根据排序序号为2r-2、2r-1、2r及2r+1的所述算子单元的位置信息确定k=m-r且g=m+r或者确定k=m+r且g=m-r。
[0094]
即,n+1个算子单元中功耗数据最大的两个算子单元占用启动编号m0至mn中的最中间的两个启动编号,在此基础上,功耗数据最大的两个算子单元中的其中一个占用m[m-(1/2)]还是其中另外一个占用m[m-(1/2)]是任意的。但当3≤2r≤n,排序序号为2r和2r+1的算子单元占用启动编号m0至mn中的m(m-r)和m(m+r)时,排序序号为2r的算子单元占用m(m-r)还是排序序号为2r+1的算子单元占用m(m-r)可取决于排序序号为2r、2r+1、2r-1和2r-2的算子单元的位置信息,以在实现了一个时钟周期内n+1个算子单元的功耗数据平缓、平稳变化的基础上实现启动编号相邻的两个算子单元之间的物理位置相距较远,从而进一步有效抑制系统噪声。
[0095]
在上述各实施例的基础上,可选地,在n+1为偶数的情况下,根据排序序号为2r-2、2r-1、2r和2r+1的算子单元的位置信息确定k=m-r及g=m+r或者确定k=m+r及g=m-r包括:当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,i)或者d(2r+1,j)时,确定k=m-r且g=m+r;当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,j)或者d(2r+1,i)时,确定k=m+r且g=m-r;其中,i为启动编号为m[m-(r-1)]的算子单元的排序序号,j为启动编号为m[m+(r-1)]的算子单元的排序序号,d(u,v)等于排序序号为u对应的算子单元与排序序号为v对应的算子单元之间的曼哈顿距离,u=2r,2r+1;v=2(r-1),2(r-1)+1。
[0096]
示例性地,图6是本发明实施例提供的另一种多个功耗数据分别对应的算子单元进行编码后相应的功耗数据在一个时钟周期内的条形分布图,如图6所示:n+1=10时,m=9/2;
[0097]
对排序序号为1和排序序号为2的算子单元编码启动编号包括:r=1/2,m-r=4,m+r=5;如图5所示意的,排序序号为1的算子单元的启动编号为m4及排序序号为2的算子单元的启动编号为m5;
[0098]
对排序序号为3和排序序号为4的算子单元编码启动编号包括:r=3/2,m-r=3,m+r=6,i=1,j=2;当d31、d32、d41、d42中的最大值为d31或者d42时,确定k=3及g=6,从而排序序号为3的算子单元的启动编号为m3及排序序号为4的算子单元的启动编号为m6;当d31、d32、d41、d42中的最大值为d32或者d41时,确定k=6及g=3,从而排序序号为3的算子单元的启动编号为m6及排序序号为4的算子单元的启动编号为m3。结合图6与图7所示例性示意的,排序序号为4的算子单元和排序序号为2的算子单元的曼哈顿距离d42为d31、d32、d41、d42中的最大值,故排序序号为4的算子单元的启动编号为m6及排序序号为3的算子单元的启动编号为m3,从而在排序序号为4的算子单元和排序序号为2的算子单元两者的启动编号相邻时,两者之间的物理位置却相距较远,能够有效防止系统噪声(本发明实施例中,两个算子单元200的物理位置相距越远则相应地该两个算子单元200之间的曼哈顿距离越大);以此类推

[0099]
对排序序号为9和排序序号为10的算子单元编码启动编号包括:r=9/2,m-r=0,m
+r=9,i=8,j=7;当d98、d97、d(10,8)、d(10,7)中的最大值为d98或者d(10,7)时,确定k=0及g=9,从而排序序号为9的算子单元的启动编号为m0及排序序号为10的算子单元的启动编号为m9;当d98、d97、d(10,8)、d(10,7)中的最大值为d97或者d(10,8)时,确定k=9及g=0,从而排序序号为9的算子单元的启动编号为m9及排序序号为10的算子单元的启动编号为m0。结合图6与图7所示例性示意的,排序序号为10的算子单元和排序序号为7的算子单元的曼哈顿距离d(10,7)为d98、d97、d(10,8)、d(10,7)中的最大值,故排序序号为9的算子单元的启动编号为m0及排序序号为10的算子单元的启动编号为m9,从而在排序序号为10的算子单元和排序序号为7的算子单元两者的启动编号相邻时,两者之间的物理位置却相距较远,能够有效防止系统噪声。
[0100]
此外,本发明实施例中,对于d(2r,i)=d(2r+1,i)的情况和d(2r,j)=d(2r+1,j)的情况,优选地,为排序序号较小的算子单元获得较小的启动编号。
[0101]
本发明实施例还提供一种多算子单元编码装置,图8是本发明实施例提供的一种多算子单元编码装置的结构示意图。参考图8,多算子单元编码装置100包括:功耗获取单元110、功耗排序单元120、位置获取单元130以及编码单元140;功耗获取单元110用于获取n+1个算子单元中每个算子单元的功耗数据,其中,n为正整数;功耗排序单元120用于基于算子单元的功耗数据的大小,对n+1个算子单元依从大到小的次序排序;位置获取单元130用于获取n+1个算子单元中每个算子单元的位置信息;
[0102]
编码单元140用于根据各算子单元的排序序号和位置信息对各算子单元的启动编号进行编码,得到n+1个启动编号m0至mn,以使得当n+1个算子单元在一个时钟周期内分别根据对应的启动编号进行启动时,从启动编号为m0的算子单元依次启动至启动编号为mt的算子单元的过程中,算子单元的功耗数据呈增大趋势,以及从启动编号为mt的算子单元依次启动至启动编号为mn的算子单元的过程中,算子单元的功耗数据呈减小趋势,t=int(m),m=n/2;其中,排序序号为2r的算子单元的启动编号为mk,排序序号为2r+1的算子单元的启动编号为mg;k=m-r且g=m+r,或者k=m+r且g=m-r;0<r≤n/2;在n+1为奇数的情况下r为正整数,在n+1为偶数的情况下r为半整数。
[0103]
在本发明的一种实施方式中,可选地,编码单元包括第一编码子单元;第一编码子单元用于在n+1为奇数的情况下,编码排序序号为1的算子单元的启动编号为mm;编码排序序号为2r和2r+1的算子单元的启动编号分别为mk和mg;其中,当r=1时,确定k=m-1且g=m+1或者确定k=m+1且g=m-1;当4≤2r≤n时,根据排序序号为2r-2、2r-1、2r和2r+1的算子单元的位置信息确定k=m-r且g=m+r或者确定k=m+r且g=m-r。
[0104]
在本发明的一种实施方式中,可选地,第一编码子单元用于在n+1为奇数的情况下,当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,i)或者d(2r+1,j)时,确定k=m-r且g=m+r;当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,j)或者d(2r+1,i)时,确定k=m-r且g=m+r;其中,i为启动编号为m[m-(r-1)]的算子单元的排序序号,j为启动编号为m[m+(r-1)]的算子单元的排序序号;d(u,v)等于排序序号为u的算子单元与排序序号为v的算子单元之间的曼哈顿距离,u=2r,2r+1;v=2(r-1),2(r-1)+1。
[0105]
在本发明的一种实施方式中,可选地,编码单元还包括第二编码子单元;第二编码子单元用于在n+1为偶数的情况下,将排序序号为2r和2r+1的算子单元的启动编号分别编码为mk和mg;其中,当r=1/2时,确定k=m-(1/2)且g=m+(1/2)或者确定k=m+(1/2)且g=
m-(1/2);当3≤2r≤n时,根据排序序号为2r-2、2r-1、2r及2r+1的所述算子单元的位置信息确定k=m-r且g=m+r或者确定k=m+r且g=m-r。
[0106]
在本发明的一种实施方式中,可选地,第二编码子单元用于在n+1为偶数的情况下,当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,i)或者d(2r+1,j)时,确定k=m-r且g=m+r;当d(2r,i)、d(2r,j)、d(2r+1,i)和d(2r+1,j)中的最大值为d(2r,j)或者d(2r+1,i)时,确定k=m-r且g=m+r;其中,i为启动编号为m[m-(r-1)]的算子单元的排序序号,j为启动编号为m[m+(r-1)]的算子单元的排序序号;d(u,v)等于排序序号为u的算子单元与排序序号为v的算子单元之间的曼哈顿距离,u=2r,2r+1;v=2(r-1),2(r-1)+1。
[0107]
本发明实施例提供的多算子单元编码装置和多算子单元编码方法,两者属于相同的发明构思,能够实现相同的技术效果,重复内容此处不再赘述。
[0108]
本发明实施例还提供一种存储介质,可以是计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述任意实施例所提供的多算子单元编码方法。
[0109]
本发明实施例还提供一种时钟相位控制电路,图9是本发明实施例提供的一种时钟相位控制电路的结构示意图,参考图9,时钟相位控制电路包括:时钟分发模块10、相位调节模块20以及上述任意实施例提供的多算子单元编码装置100;
[0110]
其中,时钟分发模块10包括等距分发单元13、抗干扰单元(图中未示意出)、时钟接收端11和n+1个时钟发送端12;时钟接收端11通过等距分发单元13分别连接各个时钟发送端12;等距分发单元13用于将时钟接收端11接收的时钟信号,分发为分别从各个时钟发送端12对应发送的多路分支时钟信号,并用于控制时钟接收端11与各个时钟发送端12之间的信号传输线14的总长度相同;抗干扰单元的延伸方向与信号传输线14的延伸方向相同,抗干扰单元设置于信号传输线14的至少相对的两侧;抗干扰单元用于吸收分布于信号传输线14的外表面的干扰信号;
[0111]
相位调节模块20包括延迟单元23、n+1个调相输入端21和n+1个调相输出端22;各调相输入端21均与多算子单元编码装置100连接,多算子单元编码装置100用于将n+1个算子单元在一个时钟周期内的启动编号m0至mn分别发送至对应的调相输入端21;调相输入端21与时钟发送端12一一对应连接;一个调相输入端21与对应的一个调相输出端22之间设置一个延迟单元23;延迟单元23用于根据对应的启动编号控制对应的调相输入端21输入的分支时钟信号的相位发生相应的延迟,以使对应的调相输出端22输出发生了相应的延迟的分支时钟信号。
[0112]
即,时钟分发模块10将原提供的一路时钟信号分发为分别从各个时钟发送端12对应发送的多路高精度相位同步的分支时钟信号。相位调节模块20的n+1个调相输入端21分别接收对应的分支时钟信号,多算子单元编码装置100将启动编号m0至mn分别发送至对应的调相输入端21,调相输入端21对应的延迟单元23根据对应的启动编号控制对应的调相输入端21输入的分支时钟信号的相位发生相应的延迟,以使对应的调相输出端22输出发生了相应的延迟的分支时钟信号,算子单元从对应的调相输出端22接收发生了相应的延迟的分支时钟信号,本发明实施例由此实现在对多算子单元进行细颗粒度调相的同时,系统的功耗噪声得到有效抑制,效果良好。
[0113]
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、
重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1