CN113692592B - 动态瓦片并行神经网络加速器 - Google Patents
动态瓦片并行神经网络加速器 Download PDFInfo
- Publication number
- CN113692592B CN113692592B CN202180002070.9A CN202180002070A CN113692592B CN 113692592 B CN113692592 B CN 113692592B CN 202180002070 A CN202180002070 A CN 202180002070A CN 113692592 B CN113692592 B CN 113692592B
- Authority
- CN
- China
- Prior art keywords
- array
- column
- edge
- cells
- unit
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
动态瓦片神经网络加速器允许重新配置计算瓦片的数量和大小。每个计算单元子阵列的最左列是边缘单元,这些边缘单元有一个增加的矢量复用器,将单元输出反馈到加法器‑比较器,以允许整流线性单元(ReLU)和池化操作,将从其他单元移入的输出结合起来。边缘单元驱动外部输出寄存器并接收外部权重。权重和输出在单元之间以相反的方向水平移位,而控制和输入数据在单元之间以相同的方向垂直移位。在子阵列之间插入一列行数据选择器以绕过子阵列周围的权重和输出数据,而在子阵列之间插入一行列数据选择器以绕过控制和输入数据。较大的瓦片是通过将数据直接通过这些选择器而不绕过来配置的。
Description
技术领域
本发明涉及神经网络加速器,特别涉及神经网络加速器中的动态瓦片(tile)。
背景技术
许多复杂的问题可以使用人工智能(AI)而不是传统程序来解决。对于更复杂的应用,往往需要深度学习。
专门针对AI的硬件加速器已经问世。深度神经网络(DNN)加速器使用许多并行计算引擎来加速深度学习AI应用。然而,这些引擎中的每一个都可能相当大,这增加了数据传输延迟。每个计算引擎的固定大小会导致某些工作负载的低效率,尤其是在使用许多卷积层时。并行的、固定的硬件可能与计算问题不匹配,导致未使用的引擎和低效利用。并行计算引擎的乘法累加器(MAC)效率可能会受到影响。
已经提出了许多改进深度神经网络的技术。使用开关映射或多级任务调度的控制流方案有固定的配置,可能无法提高MAC利用率。广播数据或提供激活共享的数据流方案同样有固定的配置,可能不会提高MAC利用率。多功能和单指令多数据(SIMD)系统可以有复杂的单元设计,从而增加硅面积。甚至已经提出了3D而不是2D阵列,但这些仍然有固定的配置。
期望有一种并行处理引擎的神经网络加速器,该引擎可重新配置为各种大小的瓦片(tile)。期望在神经网络加速器中提供动态瓦片大小,以最大化MAC利用率。还期望添加直接路径以减少数据传输延迟。进一步期望通过多功能计算单元来最小化数据传输延迟。
附图说明
图1是一个具有动态平铺的神经网络加速器的框图。
图2更详细地显示了多功能计算单元。
图3更详细地显示了多功能计算边缘单元。
图4显示了为4×4瓦片尺寸配置的动态瓦片神经网络加速器。
图5显示了为8×8瓦片尺寸配置的动态瓦片神经网络加速器。
图6显示了为8×4瓦片尺寸配置的动态瓦片神经网络加速器。
图7显示了为4×8瓦片尺寸配置的动态瓦片神经网络加速器。
图8A-8B突出显示了用于卷积和整流线性单元(ReLU)操作的单元的动态调度。
图9A-9B突出显示了图8A-8B的卷积和ReLU操作的时序。
图10显示了使用池化的卷积和ReLU的时序。
图11显示了训练一个神经网络,如图1的神经网络加速器。
具体实施方式
本发明涉及对神经网络加速器的改进。下面的描述是为了使本领域普通技术人员能够在特定应用及其要求的背景下制造和使用本发明。对优选实施例的各种修改对于本领域的技术人员来说将是显而易见的,并且本文所定义的一般原则可应用于其它实施例。因此,本发明并不打算局限于所示和所述的特定实施例,而是要给予符合本文所公开的原则和新颖特征的最广泛的范围。
图1是一个具有动态平铺(tiling)的神经网络加速器的框图。一个处理引擎阵列由计算单元10和边缘单元12组成。计算单元10可以执行二维乘法,而边缘单元12可以执行二维乘法和矢量处理。边缘单元12具有计算单元10的所有功能,还可以执行矢量运算。
在这个例子中,单元阵列被分成4个子阵列,每个子阵列是一个4×4的单元阵列。单元的左边或第一列由边缘单元12组成,而单元的其余3列由计算单元10组成。因此边缘单元12构成了4×4子阵列的左边缘。
来自输入寄存器28的输入数据和来自控制寄存器24的控制信息位于阵列的顶部,并将数据和控制信息向下馈送到计算单元10和边缘单元12的阵列中。
来自权重寄存器22的权重位于阵列的左边,并将权重向右馈送到计算单元10和边缘单元12的阵列中。
发明人没有把输出寄存器26放置在阵列的右边,而是将输出寄存器26放置在阵列的左边,与权重寄存器22位于同一侧。将输出寄存器26放置在阵列的左边,允许激活单元重复使用,因为当输出寄存器26在左边时,输出可以一个一个地发送,因此不需要额外的激活单元硬件资源。
四个子阵列通过行数据选择器14水平连接,通过列数据选择器16垂直连接。行数据选择器14向右传递权重,向左输出数据。列数据选择器16向下传递控制信息和输入数据。
配置控制器20控制行数据选择器14和列数据选择器16。配置控制器20可以控制列数据选择器16从第四行计算单元10选择控制信息和输入数据,或直接从控制寄存器24和输入寄存器28选择控制信息和输入数据,允许控制和输入数据绕过上部4×4子阵列,从而减少到下部4×4子阵列的延迟。
控制和数据的选择方式相同,因此,列数据选择器16的输入取自控制寄存器24、输入寄存器28,或两个输入取自计算单元10。
配置控制器20还控制行数据选择器14,以从第四列计算单元10选择权重,或直接从权重寄存器22选择权重。配置控制器20还可以将右部子阵列的边缘单元12产生的输出发送到左部子阵列的第四列计算单元10,或者绕过左部子阵列,直接将输出发送到输出寄存器26。每个列数据选择器16可以有两个2:1复用器。每个行数据选择器14可以是两个复用器,一个是正向复用器,一个是反向的解复用器(de-mux)。
这种绕过4×4子阵列的做法减少了延迟。行数据选择器14和列数据选择器16可以调整瓦片(tile)大小,以减少延迟并提高计算单元10和边缘单元12的处理引擎利用率。通过控制行数据选择器14和列数据选择器16,配置控制器20可以控制来自输入分区和层的流数据,并根据正在进行的操作,配置阵列连接。这种绕过可以将输入数据广播到每个瓦片中。
图2更详细地显示了多功能计算单元。计算单元10从输入寄存器28、上游的计算单元10、或从列数据选择器16接收输入数据,这取决于计算单元10在阵列内的位置。该输入数据存储在单元输入寄存器104中,并可以传递到下游的计算单元10或列数据选择器16。
类似地,计算单元10从控制寄存器24、上游的计算单元10、或从列数据选择器16接收控制信息,这取决于计算单元10在阵列中的位置。该控制信息存储在单元控制寄存器120中,并可以传递到下游的计算单元10或列数据选择器16。存储在单元控制寄存器120中的控制信息比特由计算单元10内部使用,以控制加法器-比较器112、累加器寄存器114和输出寄存器118的操作。
计算单元10也从上游的(左边的)计算单元10或边缘单元12接收权重。该权重存储在单元权重寄存器102中,并可传递到下游的(右边的)计算单元10或行数据选择器14。
可以通过乘法器110将来自单元权重寄存器102的权重与来自单元输入寄存器104的输入相乘,以产生由该实例的计算单元10实施的神经网络节点的部分和。然后,由乘法器110产生的部分和可以使用加法器-比较器112加到存储在累加器寄存器114中的累积值上,并且新的累积值存储到累加器寄存器114中。
加法器-比较器112也可以将乘法器110产生的部分和、来自累加器寄存器114的累积值、或来自单元输入寄存器104的输入与一个预设目标例如零或与来自单元输入寄存器104或累加器寄存器114的一个值进行比较,并将结果存储到累加器寄存器114中。来自单元控制寄存器120的控制比特可以选择加法器-比较器112的加法器或比较器功能,并选择来自输出寄存器118、乘法器110或单元输入寄存器104的输入。
存储在累加器寄存器114中的累积值可以被复制到输出寄存器118中,然后移位到当前计算单元10左边的下一个计算单元10或边缘单元12。或者,来自右边的计算单元10的输出或来自行数据选择器14的输出可以存储到输出寄存器118中,然后向左移位。来自单元控制寄存器120的控制比特可以控制输出寄存器118的时钟和数据选择。
图3更详细地显示了多功能计算边缘单元。边缘单元12是计算单元10的超集(super-set),在单元权重寄存器102和乘法器110之间增加了矢量复用器130。当来自单元控制寄存器120的比特使矢量复用器130从单元权重寄存器102中选择其输入以传递到乘法器110时,矢量复用器130允许边缘单元12作为计算单元10运行。
当来自单元控制寄存器120的控制比特使矢量复用器130选择存储在输出寄存器118中的输出值以反馈给乘法器110时,可以进行矢量运算。单元的输出可以与来自单元输入寄存器104的单元的输入相乘,进行矢量运算。输出寄存器118可以包含一个从右边移入的输出值,而不是由单元产生的累积值,从而允许各种有用的运算。示例运算包括Prelu(参数整流(修正)线性单元函数,Parametric Rectified Linear Unit),它找到f(yi)=yi如果yi>0,f(yi)=(ai*yi)如果yi<=0,其中yi可以是单元的输出,而ai可以是单元输入寄存器104的输入。
边缘单元12形成每个4×4子阵列的左列,允许来自右边的上游单元的输出移入边缘单元12,并通过反馈路径从输出寄存器118累积到矢量复用器130。当单元输入寄存器104中的输入为1时,乘法器110通过反馈输出由加法器-比较器112累积并存储到累加器寄存器114中。在所有来自右边的单元的输出都被累积后,来自累加器寄存器114的最终累积值可以被复制到输出寄存器118,并从边缘单元12左移到输出寄存器26。
如果没有通过矢量复用器130的反馈,来自先前单元的输出就不容易被池化(pooled)。边缘单元12提供了一个方便的机制,以在输出到输出寄存器26之前在4×4子阵列的边缘池化(pool)单元结果。这种池化机制只需要使用边缘单元12,这样其他中心计算单元10就不需要矢量复用器130的附加硬件。这样,就不需要在输出寄存器26之前有一列单独的池化引擎,因为边缘单元12可以执行单元池化功能,以及计算单元10的其他功能。
边缘单元12从权重寄存器22或从行数据选择器14接收权重,这取决于计算单元10在阵列内的位置。该控制信息存储在单元控制寄存器120中,并可传递到下游的计算单元10。
在执行最大池化操作时,可以启用比较功能。对于单元12,在执行最大池化或Relu计算时,比较功能被启用。最大池化找到最大值。Relu计算f(x)=max(0,x),其中输出为0或x。单元10和单元12都可以进行最大池化和平均池化计算;然而,单元12可以在一个卷积层完成后立即处理池化计算,将CNN输出作为池化输入。
执行最大池化的单元12(1)没有权重,因此没有从权重寄存器102中获取权重,(2)从输出寄存器118获得前一个CNN输出,绕过乘法器110并存储在加法器-比较器112中,(3)输出寄存器118的第二个CNN输出来到加法器-比较器112,与第一个输入比较,然后得到较大的那个,并存储在累加器寄存器114中。(4)第三个CNN输出来自输出寄存器118,累加器寄存器114将前一个较大的发送到加法器-比较器112,然后进行比较,得到较大的。以此类推……
对于Relu操作:(1)没有权重,因此没有来自单元权重寄存器102的权重,(2)矢量复用器130从输出寄存器118获得输出,(3)绕过乘法器110,因此加法器-比较器112的输入是矢量复用器130的输出,(4)刷新单元输入寄存器104输入=x,(5)累加器寄存器114从加法器-比较器112获得max(0,x)输出。
对于执行最大池化操作的单元10:(1)没有权重,因此没有来自单元权重寄存器102的权重,(2)来自单元输入寄存器104的第一个输入被存储在加法器-比较器112中,(3)来自单元输入寄存器104的第二个输入来到加法器-比较器112,并与第一个输入进行比较,然后将较大的那个存储在累加器寄存器114中。(4)第三个输入来自单元输入寄存器104,累加器寄存器114将前一个较大的发送到加法器-比较器112,比较它们,得到较大的那个。以此类推。
由于输出寄存器在阵列的左侧,单元12可以充当Relu/Prelu引擎,所以每个输出都必须通过单元12才能获得Relu/Prelu结果。因此,边缘单元12位于每个4×4子阵列的左边,而不是右边。
图4显示了一个为4×4瓦片尺寸配置的动态瓦片神经网络加速器。每个4×4子阵列是一个瓦片,因此在此配置中有4个瓦片可用。配置控制器20使列数据选择器16从控制寄存器24和输入寄存器28选择输入,绕过上部瓦片的计算单元10、12周围的控制和输入数据。上部和下部4×4瓦片被并行配置为每个直接从输入寄存器28接收数据和直接从控制寄存器24接收控制比特。上部和下部瓦片通过列数据选择器16彼此分开。
配置控制器20也使行数据选择器14选择旁路路径。来自权重寄存器22的权重同时施加到左和右4×4瓦片中的边缘单元12,因为行数据选择器14从权重寄存器22选择权重,而不是从左4×4瓦片中的最后一列计算单元10中选择权重。由右4×4瓦片中的边缘单元12产生的输出数据通过行数据选择器14直接传递到输出寄存器26,绕过左4×4瓦片中的计算单元10。
4×4计算单元10、12的四个瓦片中的每一个都可以单独加载输入数据、权重和控制,并可以独立于其他瓦片产生输出。四个独立的进程流可以同时在四个瓦片上运行。
图5显示了一个为8×8瓦片尺寸配置的动态瓦片神经网络加速器。四个4×4子阵列组合形成一个瓦片,因此在此配置中只有1个4瓦片可用。
配置控制器20使列数据选择器16从紧靠列数据选择器16上方(上游)的一行边缘单元12和计算单元10选择控制和输入。控制寄存器24和输入寄存器28只向最上面一行的边缘单元12、计算单元10提供控制和数据。该控制和输入数据可以向下移位以到达下游单元。需要八个移位周期才能到达8行中的所有计算单元10。
配置控制器20也使行数据选择器14选择相邻的单元路径。来自第四列的计算单元10的权重由行数据选择器14选择并应用到8×8瓦片的第五列的边缘单元12。第五列的边缘单元12产生的输出由行数据选择器14选择并应用到第四行的计算单元10,在行数据选择器14的左边。
来自权重寄存器22的权重只应用到左4×4子阵列中的边缘单元12。输出寄存器26只收集由最左列的边缘单元12产生或左移的输出数据。来自控制寄存器24的控制比特和来自输入寄存器28的输入数据只应用到最上面一行的边缘单元12、计算单元10,并且必须向下移位到其他行的单元。在八个移位周期之后,控制和输入数据到达最底行的计算单元10、边缘单元12。
所有四个4×4子阵列通过行数据选择器14和列数据选择器16选择相邻路径而不是旁路路径而连接在一起。整个阵列作为一个单一的8×8瓦片。该瓦片的处理资源是图4中每个4×4瓦片的四倍,可以进行更复杂的计算,效率可能更高。但是,只有一个独立的进程流可以同时在单个8×8瓦片上运行。
图6显示了一个为8×4瓦片尺寸配置的动态瓦片神经网络加速器。顶部的两个4×4子阵列水平组合成一个瓦片,底部的两个4×4子阵列水平组合成第二个瓦片,因此该配置中有2个瓦片可用。
配置控制器20使列数据选择器16从控制寄存器24和输入寄存器28选择输入,绕过上部8×4瓦片的计算单元10、12周围的控制和输入数据。上部和下部8×4瓦片被并行配置为每个直接从输入寄存器28接收数据和直接从控制寄存器24接收控制比特。上部和下部瓦片通过列数据选择器16彼此分开。
配置控制器20也使行数据选择器14选择相邻的单元路径。来自第四列的计算单元10的权重由行数据选择器14选择并应用到8×4瓦片的第五列中的边缘单元12。第五列中的边缘单元12产生的输出被行数据选择器14选择并应用到第四行的计算单元10,在行数据选择器14的左边。
来自权重寄存器22的权重只应用到左4×4子阵列中的边缘单元12。输出寄存器26只收集由最左列的边缘单元12产生或左移的输出数据。
8×4计算单元10、12的两个瓦片的每一个都可以单独加载输入数据、权重和控制,并可以独立于另一块瓦片产生输出。两个独立的进程流可以同时在两个瓦片上运行。每个瓦片的处理能力是图中4×4瓦片的两倍。
图7显示了一个为4×8瓦片尺寸配置的动态瓦片神经网络加速器。左边的两个4×4子阵列垂直组合成一个瓦片,右边的两个4×4子阵列垂直组合成第二个瓦片,因此在此配置中有2个瓦片可用。
配置控制器20使列数据选择器16从紧靠列数据选择器16上方(上游)的一行边缘单元12和计算单元10选择控制和输入。控制寄存器24和输入寄存器28只向最上面一行的边缘单元12、计算单元10提供控制和数据。该控制和输入数据可以向下移位以到达下游单元。需要八个移位周期才能到达8行中的所有计算单元10。
配置控制器20也使行数据选择器14选择旁路路径。来自权重寄存器22的权重同时应用到左4×8瓦片中的边缘单元12,因为行数据选择器14从权重寄存器22选择权重,而不是从左4×8瓦片的最后一列计算单元10选择权重。由右4×8瓦片中的边缘单元12产生的输出数据通过行数据选择器14直接传递到输出寄存器26,绕过左4×8瓦片中的计算单元10。
来自控制寄存器24的控制比特和来自输入寄存器28的输入数据只应用到最上面一行的边缘单元12和计算单元10,因此控制和输入数据必须向下移位到其他行的单元。在八个移位周期之后,控制和输入数据到达最底行的计算单元10和边缘单元12。
4×8计算单元10、12的两个瓦片的每一个都可以单独加载输入数据、权重和控制,并可以独立于另一块瓦片产生输出。两个独立的进程流可以同时在两个瓦片上运行。每个瓦片的处理能力是图4中4×4瓦片的两倍。
图8A-8B突出显示了用于卷积和整流线性单元(ReLU)运算操作的单元的动态调度。可以在动态瓦片神经网络加速器上集成和执行多种运算操作,例如卷积和ReLU。运算可以流水线化,并在计算单元的阵列中并行执行,减少整体处理时间。图8A-8B描述了使用动态瓦片神经网络加速器执行集成卷积和ReLU操作运算的一个示例。图中显示了一行相邻的四个单元,左边是边缘单元12,后面是三个计算单元10。
在图8A中,进行了卷积运算。控制比特、输入数据和权重值每个周期都可以改变。
输入IN和控制CTL被应用到每一列,一系列权重WGT从权重寄存器22连续移入边缘单元12,并在接下来的3个循环周期内右移到计算单元10,直到时间T0+N。在此期间,边缘单元12和计算单元10一样,作为一个2D乘法单元运行。每个单元10、12将其输入IN与从左移入的权重相乘,以形成一个部分和。每个单元随着时间推移累积加权输入。
在图8B中,对卷积的移位结果执行ReLU运算。对于从时间T0+N到T0+2N的每个周期,来自计算单元10的累积结果从右边的计算单元10的输出寄存器118左移到左边的下一个计算单元10的输出寄存器118。
最后,累积的结果被左移到边缘单元12,它执行ReLU运算。来自计算单元10的累积结果(被左移到边缘单元12的输出寄存器118)通过矢量复用器130反馈到边缘单元12中的乘法器110和加法器-比较器112以进一步运行。例如,通过比较矢量复用器130反馈到加法器-比较器112的每个累积结果,并且仅累积超过应用到边缘单元12的输入IN的最大值的结果,可以由边缘单元12执行最大池化。
在图8A中,边缘单元12-1作为一个2D乘法器运行,其功能与计算单元10相同。矢量复用器130将权重从单元输入寄存器104传递到乘法器110(SRC=IN_REG)。
在图8B中,边缘单元12-1作为一个ReLU引擎运行,具有超出计算单元10的额外功能。矢量复用器130将存储在输出寄存器118中的左移累积结果反馈给乘法器110和加法器-比较器112(SRC=OUT_REG)。然后,边缘单元12-1可以将ReLU池化结果从其输出寄存器118移出到输出寄存器26。
图9A-9B更详细地突出显示了图8A-8B的卷积和ReLU运算的时序。最左边的边缘单元12-1和计算单元10-2、10-3和10-4在同一行,如图8A所示。
在图9A,在时间T0,存储在边缘单元12-1的单元控制寄存器120中的控制比特使边缘单元12-1执行清零操作,清零输出寄存器118、累加器寄存器114、乘法器110和加法器-比较器112。来自输入寄存器28的输入A01被存储到单元输入寄存器104中,而来自权重寄存器22的权重W01被存储到单元权重寄存器102中。
在时间T0+1,存储在计算单元10-2的单元控制寄存器120中的控制比特使计算单元10-2执行清零操作,清零输出寄存器118、累加器寄存器114、乘法器110和加法器-比较器112。来自输入寄存器28的输入A11被存储到单元输入寄存器104中,而从边缘单元12-1右移的权重W01被存储到单元10-2的单元权重寄存器102中。
同样在时间T0+1,禁用比较器的控制比特(CMP_EN=1’B0)存储在边缘单元12-1的单元控制寄存器120中,并使边缘单元12-1执行乘法和累加运算。在先前循环中存储到单元权重寄存器102的值W01和存储在单元输入寄存器104的值A01,被乘法器110相乘,并累积和存储到累加器寄存器114中,作为A01×W01。来自输入寄存器28的输入A02被存储到单元输入寄存器104中,而来自权重寄存器22的权重W02被存储到单元权重寄存器102中。
在时间T0+2,存储在下一个计算单元10-3的单元控制寄存器120中的控制比特使计算单元10-3执行清零操作,清零其输出寄存器118、累加器寄存器114、乘法器110、和加法器-比较器112。来自输入寄存器28的输入A21被存储到单元输入寄存器104中,而从单元10-2右移的权重W01被存储到单元权重寄存器102中。
同样在时间T0+2,存储在计算单元10-2的单元控制寄存器120中的控制比特(CMP_EN=1’B0)使单元10-2执行乘法和累加运算。在先前循环中存储到单元权重寄存器102的值W01和存储在单元输入寄存器104的值A11,被乘法器110相乘,并累加和存储到累加器寄存器114中,作为A11×W01。来自输入寄存器28的输入A12被存储到单元输入寄存器104中,而来自权重寄存器22的权重W02被存储到单元权重寄存器102中。
进一步地,在时间T0+2,先前应用到并存储在边缘单元12-1中的控制比特使边缘单元12-1再次执行乘法和累加运算。在先前循环中存储到单元权重寄存器102的值W02和存储在单元输入寄存器104的值A02,被乘法器110相乘,并累加和存储到累加器寄存器114中,作为A02×W02+A01×W01。来自输入寄存器28的输入A03被存储到单元输入寄存器104中,而来自权重寄存器22的权重W03被存储到单元权重寄存器102中。
在时间T0+3,存储在下一个计算单元10-4的单元控制寄存器120中的控制比特使计算单元10-4执行清零操作,清零其输出寄存器118、累加器寄存器114、乘法器110、和加法器-比较器112。来自输入寄存器28的输入A31被存储到单元输入寄存器104中,而从单元10-3右移的权重W01被存储到单元权重寄存器102中。
同样在时间T0+3,存储在计算单元10-3的单元控制寄存器120中的控制比特(CMP_EN=1’B0)使单元10-3执行乘法和累加运算。先前循环周期中存储到单元权重寄存器102的值W01和存储在单元输入寄存器104的值A21,被乘法器110相乘,并累加和存储到累加器寄存器114中,作为A21×W01。
由于时间T0+3是最后一个循环周期(一行四个单元N=4),相同的输入和权重值应用到单元12-1、10-2、10-3、10-4,因为这些值从未被使用。
此外,在时间T0+3,先前应用到边缘单元12-1并存储在其中的控制比特使边缘单元12-1再次执行乘法和累加运算。在先前循环中存储到单元权重寄存器102的值W03和存储在单元输入寄存器104的值A03,被乘法器110相乘,并累加和存储到累加器寄存器114中,作为A03×W03+A02×W02+A01×W01。
当瓦片的行中的单元的数量N大于4时,该过程可以继续直到在时间T0+N-1时达到N。在时间T0+N之前,来自累加器寄存器114的累积值被复制到输出寄存器118,分别作为单元12-1、10-2、10-3和10-4的输出O01、O02、O03和O04。
在图9B,在时间T0+N,启用比较器的控制比特(CMP_EN=1’B1)被存储在边缘单元12-1中的单元控制寄存器120中,并使边缘单元12-1执行ReLU操作。矢量复用器130选择来自输出寄存器118的反馈O01,并通过乘法器110将O01施加到加法器-比较器112,其将O01与零进行比较。当O01大于零时,对存储在输出寄存器118中的O01不做任何改变。然而,当O01小于零时,单元12-1清零输出寄存器118。因此,ReLU操作修正了存储在输出寄存器118中的值,消除任何负值。
在时间T0+N+1,存储在边缘单元12-1的单元控制寄存器120中的控制比特使边缘单元12-1将存储在单元12-1的输出寄存器118中的整流(修正)的O01左移到输出寄存器26。存储在计算单元10-2、10-3、10-4的单元控制寄存器120中的控制比特使单元10-2、10-3、10-4左移它们存储在它们的输出寄存器118中的值O02、O03、O04。因此所有输出值都被左移,使单元12-1、10-2、10-3、10-4的输出寄存器118在时间T0+N+1的左移循环结束时存储O02、O03、O04、XX。
在时间T0+N+2,存储在边缘单元12-1的单元控制寄存器120中的控制比特(CMP_EN=1’B1)使边缘单元12-1执行另一个ReLU操作。矢量复用器130选择来自输出寄存器118的反馈O02,并通过乘法器110将O02施加到加法器-比较器112,其将O02与零进行比较。当O02大于零时,对存储在输出寄存器118中的O02不做任何改变。然而,当O02小于零时,单元12-1清零输出寄存器118。ReLU操作修正了存储在输出寄存器118中的值,消除任何负值。
在时间T0+N+3,存储在边缘单元12-1的单元控制寄存器120中的控制比特使边缘单元12-1将存储在单元12-1的输出寄存器118中的整流(修正)的O02左移到输出寄存器26。存储在计算单元10-2、10-3、10-4的单元控制寄存器120中的控制比特使单元10-2、10-3、10-4左移存储在它们的输出寄存器118中的值O03、O04、XX。因此所有输出值都被左移,使单元12-1、10-2、10-3、10-4的输出寄存器118在时间T0+N+3的左移循环结束时存储O03、O04、XX、XX。
在时间T0+N+4期间,单元12-1对输出值O03执行另一个ReLU操作,在时间T0+N+5期间,其从阵列左移到输出寄存器26,那时O04被左移到单元12-1的输出寄存器118。然后在时间T0+N+6,单元12-1产生ReLU(O04),其存储在输出寄存器118中,并在时间T0+N+7移出到输出寄存器26。每一个循环周期,单元12-1在左移之后都执行ReLU操作,直到所有N个累积值O01、O02、O03、O04、...O0N都被处理。
图10显示了使用池化的卷积和ReLU的时序。在这个变化中,池化被添加到ReLU操作中。
该过程如前面对图8A-8B和9A所述的那样进行,来自卷积的累积值被存储在单元12-1、10-2、10-3、10-4的输出寄存器118中。当池化与ReLU操作集成时,图10取代了图9B。
在图10中,在时间T0+N,禁用比较器的控制比特(CMP_EN=1’B0)被存储在边缘单元12-1的单元控制寄存器120中,并使边缘单元12-1执行具有最大池化的ReLU操作。
所有先前的ReLU操作的先前最大值被存储在累加器寄存器114中。最初,在第一次ReLU操作之前,将累加器寄存器114清零。因此,对于第一次ReLU操作,将O01与零进行比较。累加器寄存器114的所有后续值将大于或等于零,因此对所有后续的ReLU操作循环都完成了整流(修正)。
前面对图9B描述的循环操作和左移适用于图11,除了单元12-1在时间T0+N对O01、在时间T0+N+2对O02进行的ReLU操作被修改。
例如,在时间T0+N+2,最近左移到输出寄存器118的输出O02,通过矢量复用器130和乘法器110反馈到加法器-比较器112,该比较器将O02与先前存储在累加器寄存器114中的最大值进行比较。当O02大于存储在累加器寄存器114中的先前最大值时,则O02覆盖存储在累加器寄存器114中的先前最大值,并且不会对存储在输出寄存器118中的O02进行改变。但是,当O02小于存储在累加器寄存器114中的先前最大值时,单元12-1就从累加器寄存器114中复制先前最大值以覆盖输出寄存器118。因此,具有最大池化的ReLU操作校正了存储在输出寄存器118中的值,消除任何负值。
平均池化也可以与ReLU集成。对于平均池化,所有输入都被累加,然后使用一个移位器来计算平均值。单元10、12(图2、3)没有移位器,但如果需要,可以添加一个移位器以支持平均池化。
图11显示了训练一个神经网络,如图1的神经网络加速器。测量数据如电压测量被用作训练数据34,V_MEAS。与V_MEAS值对应的测量结果数据被记录为目标数据38,OC_MEAS。每个OC_MEAS值都对应于一个一起测量的V_MEAS值。许多输入数据和输出结果的示例可以被替代。
神经网络36接收训练数据34和当前权重集合Aij、Bij、Wij,并对训练数据34进行操作以产生一个结果。这个生成的结果是OC的模型值,OC_CALC。来自神经网络36的生成结果OC_CALC通过损失函数42与目标数据38,OC_MEAS,进行比较,损失函数42产生一个损失值,其是生成结果离目标有多远的一个函数。损失函数42产生的损失值用于调整应用到神经网络36的权重。损失函数42可以将多次权重迭代应用到训练数据34上,直到找到一个最小损失值,最后一组权重用于建模校准曲线。
神经网络36可以有多个输出节点60,以便从V_MEAS的并行输入并行地生成多个OC_CALC值,而不是生成OC_CALC的单一值。损失函数42可以并行比较多个OC_CALC值与多个OC_MEAS值,以生成损失函数值。
替代实施例
发明人还补充了若干其他实施例。例如,虽然在简化示例中显示了4×4子阵列,但实际的神经网络可能要大得多。可能有4个以上的子阵列,可以组合在一起形成更大的瓦片。除矩形外,瓦片还可以有其他形状。在一些示例中,瓦片内的一行的单元数量N被描述为4,但N可以大得多,如1K。
可以有不止一列的数据选择器14,例如3列的行数据选择器14在水平方向上分隔出4个子阵列。同样,也可以有不止一行的列数据选择器16。一个动态瓦片神经网络加速器可以有16个子阵列,每个N×N,由3列行数据选择器14和3行列数据选择器16分隔。N可以是更大的值,例如64,这样就有16个子阵列,每个有64×64个单元,动态瓦片的尺寸大小范围可以从64×64到1K×1K。许多其他安排都是可能的。
已经描述了一个包括与ReLU集成的卷积的复杂操作,但可以替换或合并其他操作类型。对操作的许多修改都是可能的,例如全局ReLU、PreLU等。卷积广泛用于神经网络,尤其是在图像处理中,其中滤波器在图像数据上被多次应用以产生激活,形成一个特征图。可以选择这些特征进行进一步或更专门的处理。ReLU操作也被广泛使用,有助于消除可能混淆数据分析的负值或负斜率效应。
当许多较小的瓦片用于卷积以生成具有大量输出通道的特征图时,动态瓦片尺寸的灵活性可以提高效率。可以提高硬件效率,减少处理时间。
这些集成操作的总处理时间可以通过拥有一个并行引擎来执行这些多个操作而减少。可以减少芯片面积、成本和功耗。不需要添加专用硬件,例如用于求和层。简单地增加矢量复用器130和输出寄存器118的反馈路径,就可以使用基本的计算单元进行ReLU和池化操作,单元硬件的增加相对较少。只有边缘的单元需要矢量复用器130的额外硬件,中心的单元不需要添加矢量复用器130。
图2和图3所示的计算单元10和边缘单元12的功能,可以以各种方式实施或修改。乘法器110不必与加法器-比较器112分开,而是可以一起集成到单个算术逻辑单元(ALU)或其他处理引擎(PE)中。额外的控制、比较和测试电路可能存在,在图2、3未示出。控制比特可以是一个操作码,可以由单元解码成各种控制信号。计算单元10、边缘单元12内的数据流和操作的排序可以以各种方式和时序来实施。
数据和控制可以流水线化。例如,控制比特可以在乘法器110和加法器-比较器112等单元部件执行这些控制比特所指示的操作之前,从控制寄存器24发送到单元控制寄存器120。可以添加额外的流水线缓冲器和锁存器。
单元权重寄存器102、单元输入寄存器104、单元控制寄存器120、累加器寄存器114和输出寄存器118可以是寄存器文件或存储器的一部分,而不是离散的寄存器。或者,这些寄存器可以通过随机逻辑或计算机生成的逻辑门或宏布局单元来实现。
一些实施例可能没有使用所有组件。可以添加额外的组件。损失函数42可以使用各种误差/损失和成本生成器,如防止权重在许多训练优化周期中增长过大的权重衰减项,鼓励节点将其权重归零的稀疏惩罚,以便只使用总节点的一小部分。许多替换、组合和变化都是可能的。损失或成本项的其他变化和种类可以添加到损失函数42。不同成本函数的相对比例因子的值可以被调整,以平衡各种函数的影响。神经网络的训练终点可以针对各种条件组合设置,例如所需的最终精度、精度-硬件成本乘积、目标硬件成本等。
神经网络36、损失函数42和其他组件可以用各种技术实现,使用软件、硬件、固件、例程、模块、功能等的各种组合。最终结果可以从神经网络36中得到最终权重,并可能以程序模块实现,或者在专用集成电路(ASIC)或其他硬件中实现,以提高处理速度和降低功耗。
左、右、上、下等术语是相对的,可以以各种方式进行翻转、旋转、变换或转置。可以使用阵列的镜像,其中将左移替换为右移。虽然控制寄存器24和输入寄存器28被显示在阵列的顶部,但它们可以在阵列的底部,或者控制寄存器24可以在阵列的顶部而输入寄存器28在阵列的底部。权重寄存器22和输出寄存器26可以位于阵列的右边而不是左边。这些寄存器也可以位于阵列之间。可以有一个以上的阵列。
本发明的背景部分可以包含关于本发明问题或环境的背景资料,而不是描述他人的现有技术。因此,在背景技术部分中包含的材料并不是申请人对现有技术的承认。
本文描述的任何方法或过程都是机器实施的或计算机实施的,旨在由机器、计算机或其他设备来执行,而不打算在没有机器辅助的情况下仅由人类执行。产生的有形结果可以包括报告或其他机器生成的显示在诸如计算机显示器、投影设备、音频生成设备和相关媒体设备的显示设备上,可以包括也是机器生成的硬拷贝打印输出。其他机器的计算机控制是另一个有形的结果。
所述的任何优点和好处不一定适用于本发明的所有实施例。当“装置”一词出现在权利要求元素中时,申请人意在该权利要求元素落入35 USC第112节第6款的规定。通常,在“装置”一词之前有一个或多个词的标签。在“装置”一词前面的一个或多个词是一个标签,目的是为了便于权利要求元素的引用,而不是为了表达结构上的限制。这种装置加功能的权利要求不仅要涵盖本文所述的用于执行该功能的结构及其结构等同物,而且要涵盖等效结构。例如,虽然钉子和螺钉具有不同的构造,但它们是等效结构,因为它们都执行紧固功能。未使用“装置”一词的权利要求不落入35 USC第112节第6款的规定。信号通常是电子信号,但也可以是光信号,例如可以通过光纤线路传输。
对本发明实施例的上述描述是为了说明和描述的目的而提出的。它并不打算是详尽的,也不打算将本发明限制在所公开的精确形式中。根据上述教学,许多修改和变化是可能的。其目的是本发明的范围不受本详细说明的限制,而是受附于权利要求书的限制。
Claims (20)
1.一种动态瓦片神经网络加速器,包括:
一个计算单元的阵列,每个计算单元都有乘法器和加法器-比较器,它们根据控制比特对输入、权重和输出进行操作,以产生覆盖所述输出的结果;
其中输入、权重、输出和控制比特在所述阵列内相邻的计算单元之间移位;
配置控制器,当被配置为第一模式时,将所述计算单元的阵列重新配置为具有第一瓦片尺寸的多个瓦片,当被配置为第二模式时,将所述计算单元的阵列重新配置为至少一个具有第二瓦片尺寸的瓦片;
其中,所述第二瓦片尺寸大于所述第一瓦片尺寸;
一列行数据选择器,其插入在所述计算单元的阵列的相邻两列计算单元之间,其中,当所述配置控制器处于所述第一模式时,在该列行数据选择器中的一个行数据选择器绕过所述计算单元的阵列内的一个计算单元子阵列周围的权重和输出,其中,当所述配置控制器处于所述第二模式时,所述行数据选择器直接在所述计算单元的阵列的所述相邻两列的相邻计算单元之间直接传递权重和输出;
一行列数据选择器,其插入在所述计算单元的阵列的相邻两行计算单元之间,其中,当所述配置控制器处于所述第一模式时,在该行列数据选择器中的一个列数据选择器绕过所述计算单元的阵列内的一个计算单元子阵列周围的控制比特和输入,其中,当所述配置控制器处于所述第二模式时,所述列数据选择器直接在所述计算单元的阵列的所述相邻两行的相邻计算单元之间传递控制比特和输入;
一初始列的权重寄存器和输出寄存器,其中所述权重寄存器将权重移位到所述计算单元的阵列的第一列的边缘单元,其中所述输出寄存器接收从所述第一列的边缘单元移出的所述输出;
其中,所述权重寄存器的权重从所述初始列移入所述第一列的边缘单元,然后从所述第一列的边缘单元移到与所述第一列相邻的第二列的计算单元,然后移到其他列的计算单元;
其中,由所述计算单元产生的输出朝着所述初始列移位,移位到相邻的计算单元,并通过所述第二列计算单元移入所述第一列的边缘单元;
由此,对于所述第一瓦片尺寸的阵列配置,所述配置控制器将所述行数据选择器和所述列数据选择器配置为绕过,对于所述第二瓦片尺寸的阵列,配置为不绕过。
2.根据权利要求1所述的动态瓦片神经网络加速器,还包括:
每个所述边缘单元中的矢量复用器,所述矢量复用器将从所述第二列移入边缘单元的输出,反馈到所述边缘单元中的加法器-比较器的反馈输入,所述边缘单元用于比较所述反馈输入,以在移位到所述初始列的输出寄存器之前有条件地修改所述输出;
其中所述边缘单元是修改过的计算单元,具有所述计算单元中不存在的矢量复用器,其中边缘单元使用所述矢量复用器将从相邻计算单元移入的所述输出反馈到所述加法器-比较器,而所述计算单元不能将从相邻计算单元移入的所述输出反馈到所述加法器-比较器。
3.根据权利要求2所述的动态瓦片神经网络加速器,还包括:
其中,当所述配置控制器处于所述第一模式时,所述行数据选择器直接从所述初始列的权重寄存器中选择权重,以绕过所述列的行数据选择器和所述初始列之间的计算单元。
4.根据权利要求3所述的动态瓦片神经网络加速器,还包括:
一备用列的边缘单元,其与所述列行数据选择器相邻,且不在所初始列和所述列行数据选择器之间;
其中,当所述配置控制器处于所述第二模式时,所述备用列的边缘单元作为计算单元运行;
其中,当所述配置控制器处于所述第一模式时,所述备用列的边缘单元使用所述矢量复用器来反馈由其他计算单元移入的并最初由其他计算单元产生的输出。
5.根据权利要求4所述的动态瓦片神经网络加速器,其中,当所述配置控制器处于所述第一模式时,所述行数据选择器将输出直接发送到所述初始列的输出寄存器,以绕过所述列行数据选择器和所述初始列之间的计算单元。
6.根据权利要求5所述的动态瓦片神经网络加速器,其中每个计算单元和每个边缘单元包括一个单元,该单元包括:
单元权重寄存器,用于存储移入所述单元的权重;
单元输入寄存器,用于存储移入所述单元的输入;
累加器寄存器,用于存储一个累积值;
输出寄存器,其能够接收从相邻计算单元移入的输出,并能够接收存储在所述累加器寄存器中的所述累积值;
乘法器,用于将来自所述单元权重寄存器的所述权重与来自所述单元输入寄存器的所述输入相乘,以产生一个结果;
加法器-比较器,其能够将所述乘法器的所述结果与存储在所述累加器寄存器中的所述累积值相加,以产生一个更新的累积值,来更新所述累加器寄存器,并且能够执行比较操作以更新所述累积值。
7.根据权利要求6所述的动态瓦片神经网络加速器,其中每个边缘单元还包括:
矢量复用器,其将存储在所述输出寄存器中的所述输出反馈到所述加法器-比较器,
其中,每个边缘单元能够对从相邻计算单元移入到所述输出寄存器的输出执行比较操作,其中所述计算单元不能对从相邻计算单元移入到所述输出寄存器的输出执行比较操作。
8.根据权利要求7所述的动态瓦片神经网络加速器,其中所述矢量复用器通过所述乘法器反馈到所述加法器-比较器。
9.根据权利要求5所述的动态瓦片神经网络加速器,其中所述权重在一行中的相邻计算单元之间,向远离所述初始列的第一方向上水平移位;
其中,所述输出在所述行中的相邻计算单元之间,以朝向所述初始列的第二方向水平移位;
其中所述二方向与所述第一方向相反,
从而权重和输出以相反的方向移位。
10.根据权利要求9所述的动态瓦片神经网络加速器,还包括:
一个初始行的控制寄存器,用于存储移入第一行计算单元的控制比特;
一个初始行的输入寄存器,用于存储移入第一行计算单元的输入;
其中所述控制比特和输入在相邻计算单元之间沿垂直方向进行移位。
11.根据权利要求10所述的动态瓦片神经网络加速器,其中所述第二瓦片尺寸至少比所述第一瓦片尺寸大四倍。
12.一种神经网络加速器,包括:
一个计算单元的阵列,其被划分为子阵列,每个子阵列具有第一列的边缘单元和其他列的计算单元;
其中所述边缘单元是具有额外硬件的计算单元,以执行池化操作;
多个权重寄存器,用于存储通过所述边缘单元移入所述阵列的权重;
多个输出寄存器,用于存储从所述边缘单元移出的输出;
多个控制寄存器,用于将控制比特移入所述阵列;
多个输入寄存器,用于储存输入数据以移入所述阵列;
一列位于子阵列之间的行数据选择器,用于垂直分离子阵列;
配置控制器,其控制所述行数据选择器从所述多个权重寄存器中选择权重,以应用到远程子阵列,并选择由所述远程子阵列中的边缘单元产生的输出,以应用到所述多个输出寄存器,以配置一个较小的瓦片尺寸,该较小的瓦片尺寸是所述远程子阵列的尺寸;
其中,所述配置控制器控制所述行数据选择器从第一子阵列中的计算单元中选择权重,以应用到所述远程子阵列,并选择由所述远程子阵列中的边缘单元产生的输出,以应用到所述第一子阵列中的计算单元,以配置一个较大的瓦片尺寸,该较大的瓦片尺寸至少是所述第一子阵列和所述远程子阵列的尺寸之和。
13.根据权利要求12所述的神经网络加速器,其中,所述较大的瓦片尺寸的计算单元数量至少是所述较小的瓦片尺寸的两倍。
14.根据权利要求12所述的神经网络加速器,还包括:
一行位于子阵列之间的列数据选择器,用于水平分隔子阵列;
配置控制器,其控制所述列数据选择器从所述多个输入寄存器中选择输入以应用到第二远程子阵列,并从所述多个控制寄存器中选择控制比特以应用到所述第二远程子阵列中的计算单元,以配置所述较小瓦片尺寸,即所述第二个远程子阵列的尺寸;
其中,所述配置控制器控制所述列数据选择器从所述第一子阵列的计算单元中选择输入以应用到所述第二远程子阵列,并从所述第一子阵列的计算单元中选择控制比特以应用到所述第二远程子阵列,以配置所述较大的瓦片尺寸,该较大的瓦片尺寸至少是所述第一子阵列和所述第二远程子阵列的尺寸之和。
15.根据权利要求14所述的神经网络加速器,其中所述池化操作包括:
整流线性单元(ReLU)操作,其中从一个相邻单元移入的输出与零进行比较,当所述输出小于零时,清零所述输出;
其中,只有所述边缘单元能够进行池化操作,而不是边缘单元的计算单元不能进行池化操作。
16.根据权利要求14所述的神经网络加速器,其中池化操作包括:
最大池化操作,其中从一个相邻单元移入的输出与一个先前的最大值进行比较,当所述输出大于所述先前的最大值时,用所述输出替换所述先前的最大值;
其中只有所述边缘单元能够进行池化操作,而不是边缘单元的计算单元不能进行池化操作。
17.根据权利要求16所述的神经网络加速器,其中,不是边缘单元的计算单元能够执行卷积操作,但不能执行整流线性单元(ReLU)操作或最大池化操作。
18.一种动态瓦片尺寸的神经网络加速器,包括:
一个计算单元的阵列,所述计算单元被排列成行和列,并划分为子阵列;
一列行数据选择器,其将所述阵列垂直划分为子阵列;
一行列数据选择器,其将所述阵列水平划分为子阵列;
配置控制器,当配置为小瓦片尺寸时,其激活所述行数据选择器和所述列数据选择器,绕过一个子阵列,而当配置为大瓦片尺寸时,不绕过并连接相邻子阵列中的相邻单元;
所述计算单元的阵列中的第一列边缘单元,每个所述边缘单元是一个带有矢量复用器的计算单元,所述矢量复用器用于将从相邻计算单元移入的输出连接到加法器-比较器的输入,以执行池化操作,池化从多个计算单元移入的输出;
多个权重寄存器,其连接到所述第一列边缘单元,以将权重移入所述阵列;
多个输出寄存器,其连接至所述第一列边缘单元,以接收由执行池化操作的所述第一列边缘单元产生的输出;
其他子阵列中的其他第一列边缘单元,所述其他第一列边缘单元连接到所述列的行数据选择器,当配置为绕过子阵列时,直接连接到所述多个权重寄存器和所述多个输出寄存器。
19.根据权利要求18所述的动态瓦片尺寸的神经网络加速器,还包括:
多个控制寄存器,用于将控制比特移入到第一行计算单元,所述控制比特控制所述计算单元的操作;
多个输入寄存器,用于存储被移入到所述第一行计算单元中的输入数据,当执行卷积运算时,所述输入数据与从所述多个权重寄存器移出的权重相乘,并在所述计算单元中累积;
其中控制比特和输入数据在所述阵列的列中向下移动;
其中权重在所述阵列中右移;
其中输出在所述阵列中左移;
其中权重和输出在相反的方向上移位。
20.根据权利要求18所述的动态瓦片尺寸的神经网络加速器,还包括:
加法器-比较器,其在每个计算单元和每个边缘单元中,用于加值和比较值;
乘法器,其在每个计算单元和每个边缘单元中,用于将权重与输入数据相乘;
矢量复用器,其在每个边缘单元中,而不在不是边缘单元的计算单元中,用于将从另一个计算单元移入的输出连接到所述乘法器的输入。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/370,171 US11494627B1 (en) | 2021-07-08 | 2021-07-08 | Dynamic tile parallel neural network accelerator |
US17/370,171 | 2021-07-08 | ||
PCT/CN2021/105851 WO2023279414A1 (en) | 2021-07-08 | 2021-07-12 | Dynamic tile parallel neural network accelerator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113692592A CN113692592A (zh) | 2021-11-23 |
CN113692592B true CN113692592B (zh) | 2022-06-28 |
Family
ID=78588348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180002070.9A Active CN113692592B (zh) | 2021-07-08 | 2021-07-12 | 动态瓦片并行神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113692592B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11726746B1 (en) * | 2022-09-14 | 2023-08-15 | Moffett International Co., Limited | Vector operation acceleration with convolution computation unit |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109102065A (zh) * | 2018-06-28 | 2018-12-28 | 广东工业大学 | 一种基于PSoC的卷积神经网络加速器 |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
CN111742331A (zh) * | 2018-02-16 | 2020-10-02 | 多伦多大学管理委员会 | 神经网络加速器 |
CN112602054A (zh) * | 2018-08-31 | 2021-04-02 | 弗莱克斯-罗技克斯技术公司 | 乘法器累加器电路、用于乘法累加的逻辑瓦片架构和包括逻辑瓦片阵列的ic |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11372752B2 (en) * | 2019-12-17 | 2022-06-28 | Google Llc | Topological scheduling |
-
2021
- 2021-07-12 CN CN202180002070.9A patent/CN113692592B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111742331A (zh) * | 2018-02-16 | 2020-10-02 | 多伦多大学管理委员会 | 神经网络加速器 |
CN109102065A (zh) * | 2018-06-28 | 2018-12-28 | 广东工业大学 | 一种基于PSoC的卷积神经网络加速器 |
CN112602054A (zh) * | 2018-08-31 | 2021-04-02 | 弗莱克斯-罗技克斯技术公司 | 乘法器累加器电路、用于乘法累加的逻辑瓦片架构和包括逻辑瓦片阵列的ic |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113692592A (zh) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7166389B2 (ja) | ニューラルネットワークにおけるビット直列計算についてのシステム及び集積回路 | |
CN110383237B (zh) | 可重新配置的矩阵乘法器系统和方法 | |
US11537687B2 (en) | Spatial locality transform of matrices | |
WO2023279414A1 (en) | Dynamic tile parallel neural network accelerator | |
US11392535B2 (en) | Loading operands and outputting results from a multi-dimensional array using only a single side | |
WO2018080896A1 (en) | Tensor operations and acceleration | |
KR102441747B1 (ko) | 시스톨릭 어레이 구조를 가지는 뉴럴 네트워크 가속기 | |
CN113692592B (zh) | 动态瓦片并行神经网络加速器 | |
US10853034B2 (en) | Common factor mass multiplication circuitry | |
US11769040B2 (en) | Scalable multi-die deep learning system | |
US20220350775A1 (en) | Multiple accumulate busses in a systolic array | |
US8667043B2 (en) | Method and apparatus for multiplying binary operands | |
Hall et al. | From TensorFlow graphs to LUTs and wires: Automated sparse and physically aware CNN hardware generation | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
US20190303748A1 (en) | Common factor mass multiplication circuitry | |
JP3388608B2 (ja) | 乗算装置の選択された部分へ電力を与えるための装置および電源から乗算装置の選択された部分への電力伝達を制御するための装置 | |
US7010561B2 (en) | Systolic ring-planarized cylindrical array modular multipler | |
US6892215B2 (en) | Fast parallel cascaded array modular multiplier | |
EP3824554B1 (en) | Dual-mode operation of application specific integrated circuits | |
Ioannou et al. | Neural Network Overlay Using FPGA DSP Blocks | |
US11868741B2 (en) | Processing element, neural processing device including same, and multiplication operation method using same | |
US6907440B2 (en) | Systolic cylindrical array modular multiplier | |
Okuyama et al. | Design of a coarse-grained processing element for matrix multiplication on FPGA | |
CN113986193A (zh) | 一种可变步长的二维卷积计算结构及zncc算法加速器 | |
CN114443146A (zh) | 基于存算一体存储器的矢量处理器及其运行方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40078025 Country of ref document: HK |