1.本技术涉及集成电路领域,并且更为具体地,涉及一种芯片、神经网络处理器及芯片的制造方法。
背景技术:
2.在同步集成电路中,可以通过时钟信号对芯片中各个功能模块之间的数据传输进行同步控制。当采用传统的时钟树进行时钟信号的传输时,时钟信号从芯片中的控制模块进入后,经过控制模块的时钟树传输至其他功能模块的寄存器的时钟端口。上述做法使得时钟信号的时钟延时较大、且需传输至其他功能模块的时钟信号在控制模块中的时钟延时大小不一,进而导致数据传输难以满足时序要求。
技术实现要素:
3.有鉴于此,本技术提供一种芯片、神经网络处理器及芯片的制造方法,以降低时钟信号的时钟延时以及在控制模块中的时钟延时之间的差值。
4.第一方面,提供了一种芯片,包括:控制模块,包括输入端口、输出端口及时钟网络,所述输入端口用于接收第一时钟信号,所述时钟网络用于将所述第一时钟信号传输至所述输出端口;以及同步模块,包括寄存器,所述寄存器的时钟端口与所述输出端口连接,所述第一时钟信号通过所述输出端口传输至所述寄存器的时钟端口,以便所述同步模块根据所述第一时钟信号进行时钟同步;其中,所述时钟网络包括第一公共路径,所述第一公共路径的第一端与所述输入端口连接,所述第一公共路径的第二端直达所述输出端口。
5.第二方面,提供了一种神经网络处理器,包括如第一方面所述的芯片。
6.第三方面,提供了一种芯片的制造方法,包括:构建控制模块和同步模块,所述控制模块包括输入端口、输出端口,所述同步模块包括寄存器,所述寄存器的时钟端口与所述输出端口连接;构建时钟网络,所述时钟网络包括第一公共路径,所述第一公共路径的第一端与所述输入端口连接,所述第一公共路径的第二端直达所述输出端口,所述第一公共路径用于将所述输入端口接收到的第一时钟信号通过所述输出端口传输至所述同步模块的寄存器的时钟端口,以便所述同步模块根据所述第一时钟信号进行时钟同步。
7.本技术实施例中,当第一时钟信号进入芯片的控制模块后,通过第一公共路径直达控制模块的输出端口,缩短第一时钟信号传输到输出端口的时钟路径,进而减小第一时钟信号的时钟延时,且第一公共路径的存在可以降低需传输至同步模块的第一时钟信号在控制模块中的时钟延时之间的差值。
附图说明
8.图1为本技术一实施例提供的卷积运算的示例图。
9.图2为本技术另一实施例提供的卷积运算的示例图。
10.图3为本技术实施例提供的采用矩阵分块的方式计算矩阵之间的乘法运算的示例
图。
11.图4为本技术实施例提供的不同算力加乘矩阵的示例图。
12.图5为本技术实施例提供的芯片的物理架构的示例图。
13.图6为图5所示的芯片架构的时钟网络的结构示意图。
14.图7为本技术一实施例提供的芯片的示意性结构框图。
15.图8为本技术另一实施例提供的芯片的示意性结构框图。
16.图9为本技术实施例提供的时钟网络的结构示意图。
17.图10为本技术实施例提供的神经网络处理器的示意性结构框图。
18.图11为本技术实施例提供的芯片的制造方法的流程示意图。
具体实施方式
19.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。
20.目前,在数字集成电路中,同步集成电路(采用同步控制的方式)由于设计简单、操作控制容易实现而受到广泛应用。在同步集成电路中,可以通过时钟信号对芯片中的各功能模块之间的数据传输进行同步控制。
21.相关技术中,可以通过时钟网络(例如时钟树)向芯片中的各功能模块提供并传输时钟信号。以时钟树为例,时钟树是指时钟信号从时钟源发出后,通过多级的缓冲器单元(buffer cell)后传输到各功能模块中的寄存器,进而对各功能模块进行时钟同步控制。时钟树可以包括节点(例如根节点、叶子节点等)和线,其中叶子节点可以为功能模块中的寄存器、或者功能模块的输出端口,该输出端口可以用于将时钟信号传输至其他功能模块中的寄存器;时钟树的线可以用于连接时钟树的根节点到各分支节点或叶子节点。
22.在一些实施例中,寄存器可以包括时钟端口,时钟信号可以通过时钟树传输至寄存器的时钟端口,进而使得需要同时工作的寄存器的时钟端口达到同步,即寄存器中的时钟端口可以用于根据接收到的时钟信号进行时钟同步。
23.需要说明的是,时钟信号的驱动能力是有限的,如果时钟信号需要驱动的寄存器的数量较多,那么该时钟信号难以独立做到如此大的扇出。考虑到时钟信号的扇出能力有限,可以在时钟树中设置缓冲器,一方面可以增大时钟信号的驱动能力,管理时钟信号的扇出;另一方面,可以通过控制缓冲器的数量和位置来控制时钟信号的时钟延时(clock latency),该时钟延时可以是指从时钟源到各功能模块中的寄存器的时钟端口的延时,可以包括时钟源的延时和时钟网络的延时。在一些实施例中,时钟延时也可以称为时钟传输时间。
24.时钟信号的产生方式可以有多种,作为一个示例,可以通过晶振和时钟发生器来产生时钟信号。作为另一个示例,通过晶振和时钟发生器产生时钟信号后,还可以采用锁相环(phase locked loop,pll)产生倍频时钟信号(高频时钟信号),然后再经过分频电路产生各种频点的时钟信号提供给各功能模块。
25.在一些实施例中,时钟树可以通过寻求使时钟延时和时钟偏移(skew)最小化的处理来设计,该时钟偏移可以是指时钟信号从时钟源到各功能模块中的寄存器的时钟端口的到达时间之间的差值。
26.当采用传统的时钟树进行时钟信号的传输时,时钟信号从芯片中的控制模块进入后,需要经过控制模块的时钟树传输至其他功能模块的寄存器。换句话说,时钟信号若要传输到其他功能模块,需要穿透控制模块,将时钟信号传输至芯片中的其他功能模块,因此,在一些实施例中,上述的时钟树结构也可以称为feedthrough时钟结构。需要说明的是,控制模块可以是指分配或者传输时钟信号的模块,例如,控制模块可以仅用于将时钟信号从输入端口传输到控制模块的输出端口,进而通过该输出端口将时钟信号传输至其他功能模块中的寄存器的时钟端口。
27.目前,很多加乘法矩阵型的神经网络处理器(neural-network processing unit,npu)就采用了上述结构,为了便于理解,下面先对npu及其加乘法矩阵结构进行介绍。
28.npu可以理解为专门为物联网人工智能(artificial intelligence,ai)而设计的ai芯片,主要用于加速神经网络的运算,可以解决传统芯片在神经网络运算时效率低下的问题。随着ai技术的应用范围逐渐扩大,以及npu在智能终端设备中的正式应用,npu逐渐与cpu和gpu一样,成为智能终端设备的片上系统(system-on-chip,soc)的三大核心处理单元之一。
29.npu采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。npu的核心是卷积运算,而卷积运算的本质是矩阵的乘加运算,npu就是通过硬件加速矩阵的乘加运算来加速神经网络的运算,实现高效率的训练与推理。
30.卷积运算可以使用卷积核(kernel)从输入特征图(或称,输入图像)中提取某些“特征”。卷积核是一个矩阵,可以在输入特征图上滑动并与输入相乘后将结果输出。在一些实施例中,卷积核也可以称为过滤器。
31.图1为本技术实施例提供的一种卷积运算的示例图。如图1所示,卷积运算可以包括输入特征图、卷积核以及输出特征图,输入特征图例如可以表示为m*m的矩阵(图1的示例中,输入特征图为6*6的矩阵),卷积核例如可以为尺寸较小的矩阵(图1的示例中,卷积核的尺寸为3*3)。卷积运算的计算过程可以表示为:利用卷积核在输入特征图的矩阵上进行计算,将对应元素相乘后求和,得到输出特征图的矩阵的一个数值,例如图1中左上角第一个3*3的矩阵,进行卷积后,得到输出特征图的矩阵对应的数值为:7*0+6*(-1)+5*0+6*(-1)+4*5+3*(-1)+5*0+3*(-1)+2*0=2,依次类推,得到输出特征图的矩阵。
32.在一些实施例中,输入特征图可以为多通道特征图,对应的卷积核也可以为多通道卷积核,其中,卷积核的通道数与输入特征图的通道数一致。参见图2,在该示例中,卷积核的尺寸为3*3,并且存在多个这样的卷积核(多通道卷积核)。这是因为输入特征图中有多个通道。在该示例中,卷积核可以在两个方向上移动,因此最终输出的输出特征图为2d特征图,因此,可以将这种卷积称为2d卷积。2d卷积是最常见的卷积,在视觉计算中得到了广泛应用。
33.目前,npu中的硬件加速矩阵的结构决定了该矩阵能够加速的矩阵大小,例如有些硬件加速矩阵最多能够计算4*4的矩阵乘加。这种情况下,当矩阵的大小超过4*4时,可以利用矩阵分块,将两个较大矩阵的乘法运算转化为多个矩阵分块进行乘加运算,从而可以继续使用现有的硬件加速矩阵进行乘加硬件加速。下面结合图3,对通过矩阵分块的方式计算矩阵之间的乘法运算进行示例性说明。
34.如图3所示,矩阵a和矩阵b均为8*8的矩阵,通过矩阵分块的方式可以将矩阵a和矩
阵b分别分解为4个分块矩阵,其中矩阵矩阵每个分块矩阵a
′
11
、a
′
12
、a
′
21
、a
′
22
、b
′
11
、b
′
12
、b
′
21
以及b
′
22
均为4*4的矩阵。基于此,矩阵a和矩阵b的乘法运算可以转化为如下形式的分块矩阵运算:
[0035][0036]
在一些实施例中,可以通过增加加乘矩阵来实现卷积运算的算力的提升。图4为本技术实施例提供的不同算力加乘矩阵的示例图,如图4所示,从左到右随着加乘矩阵数量的增加,在相同的计算时间内,对应的算力明显得到提升。
[0037]
npu的加乘法结构可以用于实现卷积的乘加运算,加乘法结构可以包括多个功能模块,例如可以包括控制模块、处理器核、存储模块、以及乘累加模块等。乘累加模块可以用于进行乘累加运算,作为一个示例,乘累加模块可以为乘加计算核(multiplier-accumulator core,mac)阵列。在一些实施例中,npu的加乘法结构还可以包括连接乘累加模块和处理器核之间的中间沟道模块,可以通过中间沟道模块实现不同功能模块之间的走线。在一些实施例中,中间沟道模块中也可以设置有寄存器,以便时钟信号能够通过该寄存器传输至较远的功能模块中。
[0038]
图5为本技术实施例提供的一种芯片的物理架构图,该芯片例如可以是npu内部的芯片。如图5所示,该芯片可以包括控制模块、寄存器文件管理模块、mac阵列模块、处理器核、存储模块以及mac阵列模块与处理器核之间的中间沟道模块。不同功能模块之间可以进行数据的传输,具体的数据流可以参见图5,例如,处理器核可以从存储模块中读取数据,或者向存储模块中存储数据;或者,mac阵列模块可以接收处理器核发送的数据,根据该数据进行卷积运算,完成运算后可以将计算结果返回给处理器核等。
[0039]
这些加乘法结构之间往往需要时钟信号进行同步控制。时钟信号进入该芯片后,可以通过芯片中的时钟网络结构进行时钟信号的传输。该芯片中的时钟网络结构可以参见图6,可以看出,时钟信号可以通过控制模块的输入端口进入芯片后,为控制模块中的同步逻辑提供时钟信号,并通过控制模块的时钟树,以feedthrough的方式将时钟信号依次传导到其他功能模块,为其他模块中以及各个模块之间的同步逻辑提供时钟信号。作为一个示例,mac阵列模块中的部分寄存器与处理器核中的部分寄存器存在同步关系,它们各自的时钟信号就可以是通过控制模块的输出端口传递到它们所在的功能模块来提供的。作为另一个示例,mac阵列模块与中间沟道模块中的同步寄存器,以及处理器核与中间沟道模块中的同步寄存器,都存在时序上的同步关系,它们的时钟信号就可以是通过控制模块的输出端口传递到它们所在的功能模块来提供的。
[0040]
相关技术中,采用传统的时钟树进行时钟信号的传输时,时钟信号从芯片中的控制模块进入后,经过控制模块的时钟树传输至其他功能模块的寄存器。作为一种实现方式,可以在时钟信号通过控制模块的输入端口进入芯片后,在控制模块直接做时钟树综合(clock tree synthesis,cts)来为控制模块创建时钟树,在该实现方式中,将其他功能模块在控制模块中对应的输出端口作为控制模块的时钟树的同步叶子节点一同创建,其中,控制模块的输出端口可以对应将时钟信号传输至其他功能模块,例如传输至mac阵列模块,
中间沟道模块,处理器核等。上述做法使得时钟信号在穿过控制模块的时钟树后,才能够传输到芯片的其他功能模块。
[0041]
如前文所述的时钟网络结构的构建方法,时钟信号经过控制模块的时钟树之后再传输到芯片的其他功能模块,会带来两方面的弊端。
[0042]
一方面,使得时钟信号的时钟延时较大,换句话说,时钟信号从控制模块的输入端口进入芯片,到传输到芯片的其他功能模块中的寄存器的时钟端口,在传输过程中对应的这段时钟延时变大,多出了控制模块的时钟树的这段延时。此外,控制模块的时钟树上,从根节点到负责传输到芯片其他功能模块的输出端口之间的时钟树路径通常不是共同路径,这样一来,就造成在基于片上误差(on chip variation,ocv)的时序满足上的困难,这是因为控制模块的时钟树中从根节点到负责传输到芯片其他功能模块的输出端口之间的时钟树路径不是共同路径,导致用于确保时序安全和芯片良率的应用于不同时钟路径上的时间裕量(derating)无法在时序分析中针对控制模块的时钟树这一段得到补偿。
[0043]
另一方面,控制模块的时钟树从根节点到负责传输到其他功能模块的输出端口之间的时钟延时大小不一,从而使得时钟信号从经过控制模块到其他不同功能模块内的寄存器的时钟端口之间的时钟延时更加难以控制,相对差别更大,进而导致时序满足上的更大困难。
[0044]
为了解决上述问题,本技术实施例提供了一种芯片、神经网络处理器以及芯片的制造方法,以降低时钟信号的时钟延时以及在控制模块中的时钟延时之间的差值。下面将结合附图,对本技术的实施例进行详细描述。
[0045]
本技术实施例提供了一种芯片,该芯片例如可以是指npu的内部芯片,但本技术实施例并不限定于该芯片只能应用于npu。示例性地,本技术实施例还可以应用于其他具有feedthrough时钟结构的芯片,例如可以应用于gpu、cpu、fpga等芯片中。
[0046]
图7为本技术实施例提供的芯片的示意性结构框图。如图7所示,芯片700可以包括控制模块710和同步模块720。
[0047]
控制模块710可以用于分配或传输第一时钟信号,第一时钟信号例如可以是时钟源产生的。在一些实施例中,系统中的不同芯片单元可以使用同一个时钟源产生的第一时钟信号进行各芯片单元的时钟同步。以智能终端设备的片上系统为例,片上系统可能部署有npu、cpu、gpu等不同的处理器芯片,这些处理器芯片可以采用同一个时钟源产生的第一时钟信号进行时钟同步。在一些实施例中,控制模块710可以仅用于传输第一时钟信号。例如,控制模块710接收到第一时钟信号之后,可以根据时钟网络将第一时钟信号传输至对应的输出端口和/或控制模块中的寄存器的时钟端口。
[0048]
控制模块710可以包括输入端口、输出端口以及时钟网络。输入端口可以用于接收第一时钟信号。时钟网络可以用于将第一时钟信号从控制模块710的输入端口传输至控制模块710的输出端口。该时钟网络包括第一公共路径,第一公共路径的第一端可以与控制模块710的输入端口连接,第二端(另一端)直达控制模块710的输出端口。第一公共路径可以是指,第一时钟信号传输至不同的同步模块的时钟路径中,位于控制模块中的时钟路径的公共部分。输出端口接收到第一时钟信号之后,可以将第一时钟信号传输至与该输出端口连接的同步模块的寄存器的时钟端口。
[0049]
本技术实施例对控制模块710的输出端口的数量不做限定。在一些实施例中,控制
模块710可以包括多个输出端口,不同的输出端口可以将第一时钟信号传输至不同的同步模块中。
[0050]
同步模块720可以接收控制模块710传输过来的第一时钟信号,从而根据该第一时钟信号进行时钟同步。具体地,同步模块720中可以设置有寄存器,该寄存器可以用于暂存(或称,锁存)传输至同步模块720中的数据,然后等到下一个时钟周期的边沿(上升沿或者下降沿)再将保存的数据输出。
[0051]
在一些实施例中,寄存器可以包括时钟端口,该时钟端口可以与控制模块710的输出端口连接,第一时钟信号可以通过控制模块710的输出端口传输至同步模块720中的寄存器的时钟端口,以便同步模块720根据接收到的第一时钟信号进行时钟同步。
[0052]
本技术实施例中,当第一时钟信号进入芯片的控制模块后,第一时钟信号可以通过第一公共路径直达控制模块的输出端口,缩短第一时钟信号传输到输出端口的时钟路径,进而减小第一时钟信号的时钟延时,且第一公共路径的存在可以降低需要传输至同步模块的第一时钟信号在控制模块中的时钟延时之间的差值。
[0053]
换句话说,本技术的技术方案使得传输到同步模块的第一时钟信号不需要经过控制模块的时钟树,从而减少了第一时钟信号传输到同步模块的时钟延时、以及传输至同步模块的第一时钟信号之间的时钟延时的差值,这有助于满足不同功能模块之间(例如,控制模块和同步模块之间、不同的同步模块之间)同步逻辑的时序,进而提升运行频率,提升芯片的性能。此外,本技术实施例提供的时钟网络可以使得第一时钟信号的时钟延时更加可控,尤其是在控制模块内的时钟延时更加可控,这是因为第一公共路径的设置使得需要传输至同步模块的第一时钟信号之间的时钟延时的差值相对减小。
[0054]
在一些实施例中,同步模块的数量可以有多个,本技术对此并不限定。参见图8,图8为本技术另一实施例提供的芯片的示意性结构框图。在该示例中,芯片800包括控制模块810和同步模块820,同步模块820包括同步模块820-a,同步模块820-b以及同步模块820-c。第一时钟信号可以通过控制模块810的输出端口分别传输至同步模块820-a,同步模块820-b以及同步模块820-c。
[0055]
继续参见图8,图8示出了芯片800的时钟网络结构。如图8所示,时钟网络包括第一公共路径,该第一公共路径包括一个第一端和多个第二端。其中,第一端与控制模块810的输入端口连接,多个第二端分别直达控制模块的多个输出端口,该多个输出端口分别将第一时钟信号从控制模块810传输至同步模块820-a、同步模块820-b以及同步模块820-c。
[0056]
在一些实施例中,第一公共路径为使用时钟驱动单元传输链构建的路径,该时钟驱动单元用于对接收到的第一时钟信号进行放大后输出。采用时钟驱动单元传输链构建第一公共路径,当第一时钟信号的传输距离较远时,时钟驱动单元一方面可以增强第一时钟信号的驱动能力,从而保证第一时钟信号的扇出能力;另一方面可以通过控制时钟驱动单元的数量和位置来控制第一时钟信号的时钟延时,使得第一时钟信号到达各寄存器的时钟端口的时钟延时之间的差值尽量小。
[0057]
作为一种实现方式,当第一时钟信号进入控制模块之后,可以将同步模块在控制模块中对应的输出端口单独分离出来,然后在控制模块的输入端口到输出端口之间用时钟驱动单元传输链创建时钟路径,该时钟路径从控制模块的输入端口直达输出端口,其中,第一时钟信号可以以最短路径、最快速度或最短延时中的至少一种从输入端口直达输出端
口。之后,第一时钟信号可以通过输出端口传输至同步模块的寄存器的时钟端口。
[0058]
在一些实施例中,时钟驱动单元可以为偶数反相器(inverter)。使用偶数反相器传输链(inverter-pair chain)构建第一公共路径,可以进一步增加第一时钟信号的驱动能力,降低第一时钟信号在时钟网络中的时钟延时;此外,使用偶数反相器还可以保证第一时钟信号的脉冲宽度不会改变。作为一种实现方式,可以将传输链上的时钟驱动单元预先放置并固定在预设的位置,然后通过对时钟驱动单元之间的金属层进行布线来创建传输链。在一些实施例中,可以按照固定的距离或长度来设置时钟驱动单元的预设位置。在一些实施例中,时钟驱动单元可以采用标准单元。
[0059]
当然,本技术实施例并不限定于此,时钟驱动单元例如还可以采用缓冲器(buffer)或者单数反相器等部件。与采用缓冲器相比,偶数反相器的驱动能力更强,比采用缓冲器的时钟延时更短。也就是说,与采用缓冲器相比,采用相对较少数量的偶数反相器便可以实现增强驱动能力、降低时钟延时,从而使得时钟路径得以避免通过增加缓冲器单元面积或增加缓冲器的数量的方式来满足时序要求。如此一来,使用偶数反相器传输链构建第一公共路径既可以节省面积,也可以降低功耗。
[0060]
基于此,本技术实施例通过在芯片的控制模块内直接构建偶数反相器传输链结构,使得需要传输至同步模块的第一时钟信号无需经过控制模块的时钟树,从而实现以最快速度最小延时将第一时钟信号传输通过控制模块,进而传输至同步模块。
[0061]
在一些实施例中,当采用时钟驱动单元传输链构建第一公共路径时,传输链上的时钟驱动单元之间的金属层绕线可以按照非缺省绕线(non-default routing rule,ndr)设置规则进行布线,以此实现第一时钟信号在时钟驱动单元传输链上免串扰快速传输。
[0062]
本技术对采用ndr进行布线的具体实现方式不做限定。作为一个示例,时钟驱动单元之间的金属层绕线可以采用双倍线宽来保证时钟布线对串扰的影响更不敏感,进而实现免串扰快速传输。作为另一个示例,时钟驱动单元之间的金属层绕线可以采用双倍间距来保证时钟布线对串扰的影响更不敏感。
[0063]
在一些实施例中,时钟网络还可以包括第一时钟树,第一时钟树的根节点与第一公共路径的第二端连接。第一时钟树可以用于根据第一时钟信号对控制模块进行时钟同步。换句话说,控制模块中除了包括传输至同步模块的输出端口之外,其内部还包括寄存器,该寄存器的时钟端口可以用于根据接收到的第一时钟信号对控制模块内部进行时钟同步。第一时钟信号进入控制模块之后,可以将第一时钟信号通过第一公共路径并列传输至输出端口和第一时钟树的根节点,进而从第一时钟树的根节点传输至控制模块内部的寄存器(对应于第一时钟树的叶子节点)。如此一来,控制模块对应的第一时钟树在逻辑层次中不再居于同步模块在控制模块中对应的输出端口之上,而是与之并列于第一公共路径的分支。
[0064]
下面结合图9,给出本技术实施例的一个具体示例。
[0065]
如图9所示,芯片900可以包括控制模块和同步模块。其中同步模块可以包括乘累加模块(在该示例中,乘累加模块为mac阵列模块)、处理器核、连接该乘累加模块与处理器核的中间沟道模块、寄存器文件管理模块以及存储模块。
[0066]
当第一时钟信号进入芯片900的控制模块后,在创建控制模块的时钟树之前,可以将控制模块中对应传输至同步模块的输出端口单独分离出来,然后在控制模块的输入端口
到输出端口之间以最短路径最快速度最短延时用偶数反相器传输链创建时钟路径直达,该时钟路径用于传输第一时钟信号。具体地,可以将传输链上的偶数反相器单元预先放置并固定在各自位置上,同时为它们之间的金属层绕线定义ndr来实现免串扰快速传输。之后,可以基于偶数反相器传输链的某个分支节点构件控制模块对应的第一时钟树。对于控制模块对应的第一时钟树,第一时钟树的根节点不再处于芯片900的输入端口处,而是从芯片900的输入端口转移到构建的偶数反相器传输链的某个分支输出节点。如此一来,控制模块对应的第一时钟树在逻辑层次中不再居于芯片中的同步模块在控制模块中对应的输出端口之上,而是与之并列在偶数反相器传输链的分支之下。
[0067]
本技术实施例还提供了一种npu。图10为本技术实施例提供的npu的示意性结构框图。如图10所示,npu 1000包括前文所述的芯片700。
[0068]
在一些实施例中,当npu包括前文所述的芯片时,该芯片中的同步模块可以包括以下模块中的一种或多种:乘累加模块、处理器核以及连接乘累加模块和处理器核的中间沟道模块。
[0069]
上文结合图1至图10,详细描述了本技术的装置实施例,下面结合图11,详细描述本技术的方法实施例。应该理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面的装置实施例。
[0070]
图11为本技术实施例提供的芯片的制造方法的流程示意图。该制造方法可以应用于前文所述的芯片的设计制造阶段,该芯片例如可以是前文所述的任何一种芯片,例如芯片700、芯片800或者芯片900。该制造方法可以包括步骤s1110和步骤s1120。
[0071]
在步骤s1110,构建控制模块和同步模块。该控制模块可以包括输入端口和输出端口。输入端口可以用于接收第一时钟信号,输出端口可以用于将第一时钟信号传输至同步模块中。该同步模块可以包括寄存器,寄存器可以包括时钟端口,寄存器的时钟端口与控制模块的输出端口连接。
[0072]
在步骤s1120,构建时钟网络。该时钟网络包括第一公共路径,第一公共路径的第一端与控制模块的输入端口连接,第一公共路径的第二端直达控制模块的输出端口。该第一公共路径可以用于将输入端口接收到的第一时钟信号通过输出端口传输至同步模块的寄存器的时钟端口,以便同步模块根据第一时钟信号进行时钟同步。
[0073]
可选地,第一公共路径为使用时钟驱动单元传输链构建的路径,该时钟驱动单元可以用于对接收到的第一时钟信号进行放大后输出。
[0074]
可选地,时钟驱动单元为偶数反相器。
[0075]
可选地,时钟网络还包括第一时钟树,第一时钟树用于根据第一时钟信号对控制模块进行时钟同步,该第一时钟树的根节点与第一公共路径的第二端连接。
[0076]
可选地,时钟驱动单元之间的金属层绕线按照非缺省绕线设置规则进行布线。
[0077]
可选地,该芯片为npu,同步模块包括以下模块中的一种或多种:乘累加模块、处理器核以及连接乘累加模块和处理器核的中间沟道模块。
[0078]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计
算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0079]
本领域普通技术人员可以意识到,结合本技术实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0080]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0081]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0082]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0083]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种芯片,其特征在于,包括:控制模块,包括输入端口、输出端口及时钟网络,所述输入端口用于接收第一时钟信号,所述时钟网络用于将所述第一时钟信号传输至所述输出端口;以及同步模块,包括寄存器,所述寄存器的时钟端口与所述输出端口连接,所述第一时钟信号通过所述输出端口传输至所述寄存器的时钟端口,以便所述同步模块根据所述第一时钟信号进行时钟同步;其中,所述时钟网络包括第一公共路径,所述第一公共路径的第一端与所述输入端口连接,所述第一公共路径的第二端直达所述输出端口。2.根据权利要求1所述的芯片,其特征在于,所述第一公共路径为使用时钟驱动单元传输链构建的路径,所述时钟驱动单元用于对接收到的所述第一时钟信号进行放大后输出。3.根据权利要求2所述的芯片,其特征在于,所述时钟驱动单元为偶数反相器。4.根据权利要求1所述的芯片,其特征在于,所述时钟网络还包括第一时钟树,所述第一时钟树用于根据所述第一时钟信号对所述控制模块进行时钟同步,所述第一时钟树的根节点与所述第一公共路径的第二端连接。5.根据权利要求2所述的芯片,其特征在于,所述时钟驱动单元之间的金属层绕线按照非缺省绕线设置规则进行布线。6.一种神经网络处理器,其特征在于,包括权利要求1-5中任一项所述的芯片。7.根据权利要求6所述的神经网络处理器,其特征在于,所述芯片上的同步模块包括以下模块中的一种或多种:乘累加模块、处理器核以及连接所述乘累加模块和所述处理器核的中间沟道模块。8.一种芯片的制造方法,其特征在于,包括:构建控制模块和同步模块,所述控制模块包括输入端口、输出端口,所述同步模块包括寄存器,所述寄存器的时钟端口与所述输出端口连接;构建时钟网络,所述时钟网络包括第一公共路径,所述第一公共路径的第一端与所述输入端口连接,所述第一公共路径的第二端直达所述输出端口,所述第一公共路径用于将所述输入端口接收到的第一时钟信号通过所述输出端口传输至所述同步模块的寄存器的时钟端口,以便所述同步模块根据所述第一时钟信号进行时钟同步。9.根据权利要求8所述的方法,其特征在于,所述第一公共路径为使用时钟驱动单元传输链构建的路径,所述时钟驱动单元用于对接收到的所述第一时钟信号进行放大后输出。10.根据权利要求9所述的方法,其特征在于,所述时钟驱动单元为偶数反相器。11.根据权利要求8所述的方法,其特征在于,所述时钟网络还包括第一时钟树,所述第一时钟树用于根据所述第一时钟信号对所述控制模块进行时钟同步,所述第一时钟树的根节点与所述第一公共路径的第二端连接。12.根据权利要求9所述的方法,其特征在于,所述时钟驱动单元之间的金属层绕线按照非缺省绕线设置规则进行布线。13.根据权利要求8所述的方法,其特征在于,所述芯片为神经网络处理器,所述同步模块包括以下模块中的一种或多种:乘累加模块、处理器核以及连接所述乘累加模块和所述处理器核的中间沟道模块。
技术总结
提供一种芯片、神经网络处理器及芯片的制造方法。该芯片包括:控制模块,包括输入端口、输出端口及时钟网络,输入端口用于接收第一时钟信号,时钟网络用于将第一时钟信号传输至输出端口;同步模块,包括寄存器,寄存器的时钟端口与输出端口连接,第一时钟信号通过输出端口传输至寄存器的时钟端口,以便同步模块根据第一时钟信号进行时钟同步;其中,时钟网络包括第一公共路径,第一公共路径的第一端与输入端口连接,第一公共路径的第二端直达输出端口。当第一时钟信号进入控制模块后,通过第一公共路径直达控制模块的输出端口,从而减小第一时钟信号的时钟延时,降低第一时钟信号在控制模块中的时钟延时之间的差值。块中的时钟延时之间的差值。块中的时钟延时之间的差值。
技术研发人员:郭飞亚
受保护的技术使用者:OPPO广东移动通信有限公司
技术研发日:2022.02.07
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-23700.html