CN115469828A - 可重配置神经处理单元的sram共享 - Google Patents

可重配置神经处理单元的sram共享 Download PDF

Info

Publication number
CN115469828A
CN115469828A CN202210644165.7A CN202210644165A CN115469828A CN 115469828 A CN115469828 A CN 115469828A CN 202210644165 A CN202210644165 A CN 202210644165A CN 115469828 A CN115469828 A CN 115469828A
Authority
CN
China
Prior art keywords
npu
value
ifm
npus
row
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.)
Pending
Application number
CN202210644165.7A
Other languages
English (en)
Inventor
申宗勋
A.沙菲阿德斯塔尼
J.H.哈松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN115469828A publication Critical patent/CN115469828A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

根据本文公开的主题,公开了一种系统和方法,用于使用可重配置神经处理单元(NPU)阵列来处理神经网络模型的当前层的输入特征图(IFM)数据,并将神经网络模型的下一层的输出特征图(OFM)数据存储在不涉及NPU的存储器之间的数据传送的位置处。可重配置NPU可以用于提高神经处理系统的NPU的NPU利用率。

Description

可重配置神经处理单元的SRAM共享
相关申请的交叉引用
本申请要求于2021年6月10日提交的第63/209,388号美国临时申请和于2021年8月11日提交的第17/400,094号美国非临时专利申请的优先权利益,其公开内容通过引用整体并入本文。
技术领域
本文公开的主题涉及神经处理单元(NPU)。更具体地,本文公开的主题涉及用于处理神经网络模型的当前层的输入特征图数据并将神经网络模型的下一层的输出特征图数据存储在不涉及NPU的存储器之间的数据传送的位置处的系统和方法。
背景技术
通过单一配置实现神经处理单元(neural processing unit,NPU)阵列的最佳利用是很难的。例如,NPU的8×8区块配置可能更适合使用逐深度(depthwise)的现代网络(即,MobleNetV2),而32×32或64×64区块配置可能更适合更大的网络,诸如inception V3和ResNet-50。如果来自重配置的利用益处大于与重配置相关联的开销,则实施可重配置的区块架构可能是值得的。
可重配置性的主要瓶颈之一可能是与分段SRAM(静态随机存取存储器)相关的成本。数据路径可以由多个内核(core)共享,并且可以通过使用小SRAM的分段总线来获得节省SRAM容量。实施可重配置性的一种方式可以是将大的计算问题分成更小的计算问题,并在小的NPU内核中运行该更小的问题。然而,这种方法可能不允许SRAM的有效使用,其中该SRAM可以在不同内核中的乘法和加法(multiplier-and-add)单元中重复使用。
发明内容
示例实施例提供了一种神经处理单元的内核,该内核可以包括:布置成N行和N列的NPU的N×N阵列,其中N是大于等于2的整数。每个NPU可以包括存储器和耦接到存储器的卷积乘法累加(multiply-accumulate)电路。存储器能够接收、存储和输出输入特征图(input feature map,IFM)值、核值和输出特征图(output feature map,OFM)值。NPU的N×N阵列可以被配置为通过以下步骤处理IFM数据:存储IFM值阵列的IFM值,使得IFM值阵列的IFM值的每个相应行被顺序存储在沿NPU的N×N阵列的对角线定位的NPU的相应存储器中;将存储在位于当前对角线中的每个NPU的存储器中的IFM值广播到与该NPU位于同一行的其他NPU的存储器;对于NPU的N×N阵列的每一行,将广播到该行中的NPU的存储器的IFM值乘以存储在该行中的每个相应NPU的存储器中的核值,以形成该NPU的乘积值PV;对于NPU的N×N阵列的每一列,将列中的所有乘积值PV相加以形成该列的OFM值;将每个相应输出OFM值存储在位于当前对角线中的NPU的存储器中;以及重复广播、乘法、相加和存储,直到NPU的N×N阵列的所有对角线都被处理。在一个实施例中,每个OFM值可以存储在对应于该OFM值的下一层的IFM值的NPU位置中。在另一实施例中,N可以是2、4、8、16、32和64中的一个。在又一实施例中,每个NPU的存储器可以是SRAM。在一个实施例中,N行可以包括行ri-rN,N列可以包括列cj-cN,并且N个对角线可以包括对角线dk-dN,其中i是1和N之间的整数值,包含1和N,j是1和N之间的整数值,包含1和N,并且k是1和N之间的整数值,包含1和N,并且每个对角线可以包括N个NPU,并且第k个对角线dk可以在从行ri中的第j个NPU朝向行ri+1和列cj+1中的NPU的方向上延伸,并且绕到行rN-i中的NPU。在又一实施例中,存储IFM值阵列的IFM值还可以包括通过将矩阵A的第i行中的每个IFM值xi1-xiN顺序存储在位于NPU的N×N阵列的第i个对角线中的NPU的存储器中来接收N×N矩阵A的IFM值x,广播还可以包括将存储在对角线dk中的NPU的存储器中的每个相应IFM值x广播到NPU的N×N阵列的行rk中的每个其他NPU的存储器,乘法还可以包括对于NPU的N×N阵列的每一行ri-rN,将广播到该行中的NPU的存储器的IFM值x乘以存储在该行中的每个相应NPU的存储器中的核值,以形成乘积值PVij,其中j表示对应于乘积值的列,相加还可以包括对于NPU的N×N阵列的每一列c1-cN,将NPU的第j列中的所有乘积值PVij相加以形成NPU的N×N阵列的每个相应列的OFMj值,并且存储还可以包括将每个相应OFMj存储在位于对角线dk中的NPU的存储器中。在一个实施例中,N可以是4,并且可以使用NPU中的8位数据路径来处理四个像素的IFM数据,而在另一实施例中,可以使用NPU中的4位数据路径来处理两个像素的IFM数据。
一个示例实施例提供了一种NPU的内核,该内核可以包括:布置成N行ri-rN、N列cj-cN和N个对角线dk-dN的N×N个NPU的组,其中N是大于等于2的整数,i是1和N之间的整数值,包含1和N,j是1和N之间的整数值,包含1和N,并且k是1和N之间的整数值,包含1和N,每个对角线可以包括N个NPU,其中第k个对角线dk可以在从行ri中的第j个NPU朝向行ri+1和列cj+1中的NPU的方向上延伸,并且绕到行rN-i中的NPU。每个NPU可以包括存储器和可以耦接到存储器的卷积乘法累加电路。存储器能够接收、存储和输出IFM值、核值和OFM值。该NPU的组可以被配置为通过以下步骤处理IFM数据:通过将矩阵A的第i行中的每个IFM值xi1-xiN顺序存储在位于该N×N个NPU的组的第i个对角线中的NPU的存储器中来接收N×N矩阵A的IFM值xab;将存储在对角线dk中的NPU的存储器中的每个相应IFM值x广播到该N×N个NPU的组的行rk中的每个其他NPU的存储器;对于该N×N个NPU的组的每一行ri-rN,将广播到该行中的NPU的存储器的IFM值x乘以存储在该行中的每个相应NPU的存储器中的核值,以形成乘积值PVij,其中j表示对应于乘积值的列;对于该N×N个NPU的组的每一列c1-cN,将NPU的第j列中的所有乘积值PVij相加以形成该N×N个NPU的组的每个相应列的OFMj值;将每个相应OFMj存储在位于对角线dk中的NPU的存储器中;以及重复广播、乘法、相加和存储,直到所有对角线d1-dk都被处理。在一个实施例中,每个OFM值可以存储在对应于该OFM值的下一层的IFM值的NPU位置中。在另一实施例中,N可以是2、4、8、16、32和64中的一个。在又一实施例中,每个NPU的存储器可以包括SRAM。在一个实施例中,N可以是4,并且可以使用NPU中的8位数据路径来处理四个像素的IFM数据,而在另一实施例中,可以使用NPU中的4位数据路径来处理两个像素的IFM数据。
一个示例实施例提供了一种处理神经网络的层的IFM值的方法,其中该方法可以包括:存储IFM值阵列的IFM值,使得IFM值阵列的IFM值的每个相应行被顺序存储在沿NPU的N×N阵列的对角线定位的NPU的相应存储器中,NPU的N×N阵列可以布置成N行和N列,其中N是大于等于2的整数,每个NPU可以包括存储器和可以耦接到存储器的卷积乘法累加电路,并且存储器能够接收、存储和输出输入特征图IFM值、核值和OFM值;将存储在位于当前对角线中的每个NPU的存储器中的IFM值广播到与该NPU位于同一行的其他NPU的存储器;对于NPU的N×N阵列的每一行,将广播到该行中的NPU的存储器的IFM值乘以存储在该行中的每个相应NPU的存储器中的核值,以形成该NPU的乘积值PV;对于NPU的N×N阵列的每一列,将列中的所有乘积值PV相加以形成该列的OFM值;将每个相应OFM值存储在位于当前对角线中的NPU的存储器中;以及重复广播、乘法、相加和存储,直到NPU的N×N阵列的所有对角线都被处理。在一个实施例中,每个OFM值可以存储在对应于该OFM值的下一层的IFM值的NPU位置中。在一个实施例中,N可以是2、4、8、16、32和64中的一个。在另一实施例中,每个NPU的存储器可以包括SRAM。在又一实施例中,N行可以包括行ri-rN,N列可以包括列cj-cN,并且N个对角线可以包括对角线dk-dN,其中i是1和N之间的整数值,包含1和N,j是1和N之间的整数值,包含1和N,并且k是1和N之间的整数值,包含1和N,每个对角线可以包括N个NPU,并且第k个对角线dk可以在从行ri中的第j个NPU朝向行ri+1和列cj+1中的NPU的方向上延伸,并且绕到行rN-i中的NPU。在又一实施例中,存储IFM值阵列的IFM值还可以包括通过将矩阵A的第i行中的每个IFM值xi1-xiN顺序存储在位于NPU的N×N阵列的第i个对角线中的NPU的存储器中来接收N×N矩阵A的IFM值xab,广播还可以包括将存储在对角线dk中的NPU的存储器中的每个相应IFM值x广播到NPU的N×N阵列的行rk中的每个其他NPU的存储器,乘法还可以包括对于NPU的N×N阵列的每一行ri-rN,将广播到该行中的NPU的存储器的IFM值x乘以存储在该行中的每个相应NPU的存储器中的核值,以形成乘积值PVij,其中j表示对应于乘积值的列,相加还可以包括对于NPU的N×N阵列的每一列c1-cN,将NPU的第j列中的所有乘积值PVij相加以形成NPU的N×N阵列的每个相应列的OFMj值,并且存储还可以包括将每个相应OFMj存储在位于对角线dk中的NPU的存储器中。
附图说明
在以下部分中,将参考附图中示出的示例性实施例来描述本文公开的主题的方面,在附图中:
图1描绘了根据本文公开的主题的NPU的示例实施例;
图2A描绘了可以使用NPU执行的操作的示例序列;
图2B描绘了图1的NPU的架构可以被配置为使得卷积乘法累加单元和逐元素向量(elementwise-vector)处理单元的流水线可以并行执行;
图3描绘了根据本文公开的主题的图1的NPU如何被分组以形成内核的两个示例实施例;
图4A-图4H描绘了根据本文公开的主题的由可重配置NPU的示例4×4阵列提供的处理轮次序列;
图5A-图5D描绘了根据本文公开的主题的由可重配置NPU的示例2×2阵列提供的处理轮次序列;
图6是根据本文公开的主题的用于处理神经网络模型的当前层的输入特征图数据并将神经网络模型的下一层的输出特征图数据存储在不涉及NPU的存储器之间的数据传送的位置处的示例实施例的流程图;和
图7描绘了根据本文公开的主题的包括可以处理神经网络模型的当前层的输入特征图数据并将神经网络模型的下一层的输出特征图数据存储在不涉及NPU的存储器之间的数据传送的位置处的NPU阵列的电子设备。
具体实施方式
在以下详细描述中,阐述了许多具体细节,以便提供对本公开的透彻理解。然而,本领域技术人员将理解,所公开的方面可以在没有这些具体细节的情况下实践。在其他情况下,没有详细描述公知的方法、过程、组件和电路,以免模糊本文公开的主题。
在整个说明书中,对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性可以被包括在本文公开的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”或“根据一个实施例”(或具有类似含义的其他短语)在本说明书各处的出现不一定都指同一实施例。此外,在一个或多个实施例中,特定的特征、结构或特性可以以任何合适的方式组合。在这点上,如本文所使用的,词语“示例性”意味着“用作示例、实例或说明”。本文描述为“示例性”的任何实施例都不应被解释为比其他实施例必然更优选或更有利。此外,在一个或多个实施例中,特定的特征、结构或特性可以以任何合适的方式组合。此外,根据本文讨论的上下文,单数术语可以包括对应的复数形式,而复数术语可以包括对应的单数形式。类似地,带连字符的术语(例如,“二维的(two-dimensional)”、“预定的(pre-determined)”、“像素特定的(pixel-specific)”等)有时可以与对应的不带连字符的版本(例如,“二维的(two dimensional)”、“预定的(predetermined)”、“像素特定的(pixel specific)”等)互换使用,并且大写条目(例如,“计数器时钟(Counter Clock)”、“行选择(Row Select)”、“像素输出(PIXOUT)”等)可以与对应的非大写版本(例如,“计数器时钟(counter clock)”、“行选择(row select)”、“像素输出(pixout)”等)互换使用。这种偶尔的可互换使用不应被视为彼此不一致。
此外,根据本文讨论的上下文,单数术语可以包括对应的复数形式,而复数术语可以包括对应的单数形式。还要注意的是,本文示出和讨论的各种附图(包括组件图)仅用于说明的目的,并未按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被夸大。此外,如果认为合适,在附图中重复使用附图标记来表示对应和/或类似的元件。
本文使用的术语仅用于描述一些示例实施例的目的,并不旨在限制所要求保护的主题。如本文所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文清楚地另有指示。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。
应当理解,当元件或层被称为在另一元件或层上、“连接到”或“耦接到”另一元件或层时,它可以直接在另一元件或层上、连接到或耦接到另一元件或层,或者可以存在中间元件或层。相反,当元件被称为“直接在另一元件或层上”、“直接连接到”或“直接耦接到”另一元件或层时,不存在中间元件或层。相同的数字始终指代相同的元件。如本文所使用的,术语“和/或”包括一个或多个相关列出项目的任何和所有组合。
如本文所使用的,术语“第一”、“第二”等用作它们后面的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等),除非明确地如此定义。此外,可以跨两个或更多个附图使用相同的附图标记来指代具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,这种用法仅仅是为了简化说明和便于讨论;这并不意味着这些组件或单元的构造或架构细节跨所有实施例都是相同的,或者这些共同引用的部分/模块是实施本文公开的一些示例实施例的唯一方式。
除非另有定义,否则本文使用的所有术语(包括技术和科学术语)具有与本主题所属领域的普通技术人员通常理解的含义相同的含义。还应当理解,术语,诸如在常用词典中定义的那些术语,应当被解释为具有与它们在相关领域的上下文中的含义一致的含义,并且除非在本文中明确定义,否则不应当以理想化或过于正式的意义来解释。
如本文所使用的,术语“模块”指的是被配置为提供本文结合模块描述的功能的软件、固件和/或硬件的任何组合。例如,软件可以体现为软件包、代码和/或指令集或指令,并且在本文描述的任何实施方式中使用的术语“硬件”可以包括例如单独的或任意组合的封装件、硬连线电路系统、可编程电路系统、状态机电路系统和/或存储由可编程电路系统执行的指令的固件。这些模块可以共同地或单独地体现为形成更大系统(例如但不限于集成电路(IC)、片上系统(SoC)、封装件等)的一部分的电路系统。
本文公开的主题涉及包括它们自己的SRAM,在垂直/水平/对角线方向上将不同NPU的SRAM连接到其他NPU,并且使用该连接来支持具有不同输入通道和输出通道并且具有SRAM数据路径的空间重用的不同NPU配置的NPU。
图1描绘了根据本文公开的主题的NPU 100的示例实施例。如本文所使用的,术语“NPU”可以与术语“区块(tile)”互换。NPU 100可以包括SRAM 101、卷积(CNV)乘法累加(MAC)单元102、返回路径单元(return-path unit,RPU)103、逐元素向量(elementwise-vector,EWV)处理单元104和EWV SRAM 105,以功能布置示出。NPU 100的各种功能单元可以体现为电路和/或模块。
SRAM 101可以接收输入特征图(IFM)数据,该数据在NPU 100的操作期间被输出到CNV 102。在一个实施例中,CNV 102可以提供具有16×16×(2×1)的卷积MAC功能(即,16个输入通道,16个输出通道,2(cell_width)×(cell_height)单元的空间展开)。如本文所使用的,(cell_width)×(cell_height)单元意味着输出特征图(OFM)在空间维度上被分成(cell_width)×(cell_height)。例如,在(2x1)单元配置中,Ho(height)×Wo(width)图像被分割成两个Ho/2×Wo图像并同时处理。CNV 102还可以包括可以接收核(权重)值的权重缓冲器(WBUF)106。CNV 102使用IFM数据和核值执行MAC操作(即,卷积或点积操作),并将MAC结果输出到RPU 103。
RPU 103可以将输出特征图(OFM)的部分结果数据和最终结果数据传送到SRAM101。RPU 103还可以将OFM数据传送到EWV 104,用于进一步处理。EWV单元104可以为逐深度(depthwise,DW)、激活、池化和其他向量操作提供逐元素向量处理。EWV 104还可以从EWVSRAM 105接收IFM数据和权重(核(kernel))数据,并且可以向RPU 103输出进一步处理的MAC结果数据。
图2A描绘了可以使用NPU 100执行的操作201的示例序列。当在MobileNet V2网络中配置时,示例操作201可以包括卷积(Conv)操作、批量归一化(batch normalization,BN)和校正线性单元(rectified linear unit,ReLU)操作。图2B描绘了NPU 100的架构可以被配置为使得CNV单元102和EWV单元104的流水线可以并行执行。在一个实施例中,EWV单元104的逐元素操作可以例如加掩潜在卷积操作的循环。
NPU可以被分组以形成内核。图3描绘了根据本文公开的主题的NPU 100如何被分组以形成内核的两个示例实施例。第一示例内核300’可以是被配置为4K MAC内核的4×4区块阵列结构,其中每个区块被配置为4K 2×2单元区块,使得使用区块中的8位数据路径来计算四个像素(H0=2,W0=2)。第二示例内核300”可以是4×4区块阵列结构,其被配置为8KMAC(4b 2×1单元区块),使得使用区块中的4位数据路径来计算两个像素(H0=2,W0=1)。
每个内核配置可以具有不同的行、列、单元宽度和单元高度(rows/cols/cell_W/cell_H)。如果在将Ci/Co/Wo/Ho除以rows/cols/cell_W/cell_H(其中Ci是输入通道,Co是输出通道,Wo是单元宽度,并且Ho是单元高度)之后还有余数,则内核可能未充分利用,这可以通过重配置来纠正。对内核的单元进行重配置的另一原因可能是因为神经网络中的较先层可能具有相对少量的通道和相对大量的像素,而较后层可能具有相对大量的通道和相对少量的像素。对内核的单元进行重配置的又一原因可能是因为高分辨率图像网络可能受益于比多通道处理更强大的多像素处理。
例如,8K MAC使用16×16×(2×1)区块作为内核中的构建块。区块中的SRAM用于IFM数据、部分结果数据和OFM数据。如果有2(=2×1)个具有16B宽度的SRAM存储体,则每个区块有32GB。对于16个区块,总SRAM带宽为512GB。
在操作中,不同OFM分块(patch)的不同IFM数据被发送到每个区块。因此,IFMSRAM应被充分利用,因为所有区块都工作于具有相同Ci和Co的不同OFM。核(kernel)可以被广播到所有WBUF,并且来自每个区块的部分结果可以被存储在每个区块的SRAM中。由于光晕(halo)问题,相邻区块之间可能需要SRAM通信。
在神经网络模型中的一层处生成的OFM数据是神经网络模型的下一层的IFM数据。为了提高数据吞吐量和区块利用率,层的OFM应当存储在对应于下一层的IFM位置的区块的SRAM中。这完全消除或最小化了SRAM之间的数据传送,并提高了区块利用率。
考虑层的IFM数据的示例4×4矩阵A、该层的核值的一个或多个示例4×4矩阵B以及区块的示例4×4内核。矩阵A的元素aij最初可以存储在内核中对角线布置的内核区块的SRAM中。参考图4A和内核400,矩阵A的第一行元素a11-a14最初分别存储在区块T11、T22、T33和T44的SRAM中,其中第一下标数字指代矩阵或区块阵列的行,并且第二下标数字指代矩阵或区块阵列的列。矩阵A的第二行元素a21-a24最初分别存储在区块T12、T23、T34和T41的SRAM中。矩阵A的第三行元素a31-a34最初分别存储在区块T13、T24、T31和T42的SRAM中。矩阵A的第四行元素a41-a44最初分别存储在区块T41、T21、T32和T34的SRAM中。
图4A描绘了存储在区块T11、T22、T33和T44的SRAM(由IFM指示)中的矩阵A的第一行的元素a11-a14,如黑色圆圈所示。(第一)矩阵B的元素b11-b44分别存储在对应的区块T11-T44的SRAM中。
在第一轮计算期间,区块T11、T22、T33和T44的SRAM中的IFM数据被广播或分发到同一对应行中的每个其他区块。也就是说,存储在区块T11中的IFM数据被广播到区块T12、T13和T14,如在区块T11和T14之间延伸的水平线所示。类似地,行2-4中的区块的SRAM中的IFM数据被广播到同一行的其他块,如图4A所示。
广播的IFM数据和区块列中的区块的核值被相乘和累加(multiplied andaccumulated,MAC)并由对应的列加法器树401减少,其中仅指示了一个列加法器树。部分结果以对角线方式存储在POFM(部分OFM)中,如图4B中的黑色圆圈所示。可以使用例如1到4开关布置(为清楚起见未示出)或1到4复用器(为清楚起见未示出)将列加法器树的输出引导到适当的区块。
在第二轮计算期间,如图4C所示,存储在沿区块T12、T23、T34和T41的区块对角线的SRAM中的IFM数据(黑色圆圈)被广播(水平线)到同一对应行中的每个其他区块。广播的IFM数据和区块列中的区块的核值被相乘和累加(MAC)并由对应的列加法器树减少。部分结果以对角线方式存储,如图4D中的黑色圆圈所示。
在第三轮计算期间,如图4E所示,存储在沿区块T13、T24、T31和T42的区块对角线的SRAM中的IFM数据(黑色圆圈)被广播(水平线)到同一对应行中的每个其他区块。广播的IFM数据和区块列中的区块的核值被相乘和累加(MAC)并由对应的列加法器树减少。部分结果以对角线方式存储,如图4F中的黑色圆圈所示。
在第四轮计算期间,如图4G所示,存储在沿区块T14、T21、T32和T43的区块对角线的SRAM中的IFM数据(黑色圆圈)被广播(水平线)到同一对应行中的每个其他区块。广播的IFM数据和区块列中的区块的核值被相乘和累加(MAC)并由对应的列加法器树减少。部分结果以对角线方式存储,如图4H中的黑色圆圈所示。
在四轮计算之后存储在区块的SRAM中的结果是当前层的OFM,并且是下一层的IFM。本文公开的对角线布置提供了以对角线方式存储的当前层的OFM可以用作下一层的IFM数据,而无需SRAM之间的数据传送。
作为另一示例,考虑层的IFM数据的示例2×2矩阵A、该层的核值的一个或多个示例2×2矩阵B以及区块的示例4×4内核。矩阵A的元素aij最初可以存储在内核中对角线布置的内核的2×2区块组的区块的IFM SRAM中。参考图5A和内核500,矩阵A的第一行元素a11-a12最初分别存储在区块T11和T22的IFM SRAM中,并且第二行元素a21-a22分别存储在区块T13和T24的IFM SRAM中。矩阵A的元素aij可以类似地存储在内核的其他2×2区块组的IFM SRAM中。
图5A描绘了存储在区块T11和T22的SRAM(由IFM指示)中的矩阵A的第一行的元素a11-a12,如由黑色圆圈所描绘的。(第一)矩阵B的元素b11b22分别存储在对应的区块T11T22的SRAM中。
在第一轮计算期间,区块T11和T22的SRAM中的IFM数据被广播或分发到同一对应行中的每个其他区块。也就是说,对于每个2×2区块组,存储在区块T11中的IFM数据被广播到区块T12,如在区块T11和T12之间延伸的水平线所示。类似地,每个区块组的第2行中的区块T21的SRAM中的IFM数据被广播到第2行的另一区块,如图5A所示。
广播的IFM数据和区块列中的区块的核值被相乘和累加(MAC)并由对应的列加法器树501减少,其中仅指示了一个列加法器树。部分结果以对角线方式存储在POFM(部分OFM)中,如图5B中的黑色圆圈所示。可以使用例如1到2开关布置(为清楚起见未示出)或1到2复用器(为清楚起见未示出)将列加法器树的输出引导到适当的区块。
在第二轮计算期间,如图5C所示,存储在沿区块T12和T21的区块对角线的SRAM中的IFM数据(黑色圆圈)被广播(水平线)到同一行中的另一区块。广播的IFM数据和区块列中的区块的核值被相乘和累加(MAC)并由对应的列加法器树减少。部分结果以对角线方式存储,如图5D中的黑色圆圈所示。
在四轮计算之后存储在区块的SRAM中的结果是当前层的OFM。本文公开的对角线布置提供了对角线区块中的当前层的OFM可以用作下一层的IFM数据,而无需SRAM之间的数据传送。
表1示出了用于不同区块配置的四个不同神经网络(没有RGB层)的示例计算系统的利用率(%)。在表1中,Util(8)表示8×8×(8×8)的区块配置的利用率。Util(16)表示16×16×(8×4)的区块配置的利用率。Util(32)表示32×32×(4×2)的区块配置的利用率,并且Util(64)表示64×64×(2×1)的内核配置的利用率。针对EfficientNet示出的结果实际上是针对EfficientNet-B0的结果。
表1
NoRGB InceptionV3 ResNet-50 MobileNetV2 EfficientNet
Util(8) 66.1 77.8 81.6 77.2
Util(16) 74.8 81.5 79.7 76.7
Util(32) 85.2 89.5 77.4 75.0
Util(64) 70.0 97.2 45.2 54.5
Mix1(8,16,32,64) 92.3 97.2 91.2 94.9
Mix2(8,16,32) 88.2 89.5 88.0 88.6
Mix3(16,32,64) 92.0 97.0 87.0 88.0
Mix4(16,32) 88.2 89.5 84.5 82.6
Mix5(32,64) 89.2 97.2 79.8 79.5
表1的上面四行示出了示例计算系统的四个神经网络中的每一个的最佳/最差利用率。每个不同网络的最佳利用率是针对不同的网络配置。8×8配置可能更适合使用逐深度(depthwise)(MobileNetV2)的现代网络,而32×32或64×64配置可能更适合更大的网络,诸如inception V3和ResNet-50。结果表明,单一配置不太可能为特定网络提供最佳利用率。
表1中的下面五行的Mix1-Mix5配置示出了基于在神经网络的推理操作期间可能发生内核重配置的假设的增强利用率。已经考虑了许多配置,因为每个可重配置选项具有不同的对应的互连/控制开销。例如,Mix1(8,16,32,64)意味着在网络中的每一层都可以选择所有四种重配置(8×8,16×16,32×32,64×64)。Mix5(32,64)意味着在网络中的每一层都可以选择两种配置(32x32,64x64)。最多可重配置的配置Mix1似乎总是为所有网络提供最佳利用率,尽管Mix1可能比其他Mix配置具有更大的开销。
可重配置性可以提高不同神经网络的性能(利用率)。也就是说,本文公开的NPU布置的可重配置性允许NPU的8×8阵列、NPU的16×16阵列、NPU的32×32阵列和/或NPU的64×64阵列。用于存储IFM和OFM数据的对角线技术可以扩展到以NPU的8×8阵列、NPU的16×16阵列、NPU的32×32阵列和/或NPU的64×64阵列进行操作。例如,使用本文公开的主题的可重配置性,可以实施Mix1(8,16,32,64)可重配置性,提供SRAM功率/面积成本的大量节省。
图6是根据本文公开的主题的用于处理神经网络模型的当前层的输入特征图数据并将神经网络模型的下一层的输出特征图数据存储在不涉及NPU的存储器之间的数据传送的位置处的示例实施例600的流程图。考虑NPU的N×N内核,其可以包括NPU的N行r1-rN、NPU的N列c1-cN和NPU的N个对角线d1-dN。每个对角线d1-dN可以包括N个NPU,并且第k个对角线dk在从行rk中的第k个NPU朝向位于行rk+1和列ck+1中的NPU的方向上延伸,并且绕到行rN-i中的NPU以包括N个NPU。
在层的处理开始之前,IFM值和核值被输入到N×N个NPU的内核,如下所示。对于IFM值xi1-xiB的A×B矩阵X,其中A≤N且B≤N,矩阵X的第i行中的每个IFM值xi1-xiB被顺序存储在NPU的N×N内核的第i个对角线中的对应NPU的SRAM中。对于要应用于矩阵X的IFM值的核值yba的B×A矩阵Y,矩阵Y的第i行中的每个核值yi1-yiA顺序存储在NPU的N×N内核的第i行中的对应NPU的SRAM中。
神经网络的新层的处理开始于601。在602处,对角线处理索引k被初始化为1。在603处,将存储在对角线dk中的NPU的SRAM中的每个相应IFM值x广播到行rk中的每个其他NPU的SRAM。
在604处,行处理索引i被初始化为1。在605处,将广播到行i的每个NPU的IFM值分别乘以存储在NPU的SRAM中的核值,以形成对应于NPU的乘积值PV。在606处,确定是否i=N。如果不是,则流程继续到607,其中i递增,并且流程返回到605以形成下一行中的每个NPU的乘积值。
如果在606处确定i=N,则流程继续到608,其中列处理索引j被初始化。在609处,将列中的乘积值PV相加以形成列值CVj,该列值CVj被存储在对角线k中的列j中的NPU的SRAM中。流程继续到610,其中确定是否j=N。如果不是,则流程继续到611,其中j递增,并且流程返回到609以形成下一列的列值CV,该列值CV然后被存储在对角线k中的该列中的NPU的SRAM中作为OFM值。
如果在610处确定j=N,则流程继续到612,其中确定是否对角线处理索引k=N。如果是,则流程继续到613,其中对角线处理索引递增,并且流程返回到603以处理下一对角线d。如果在612处确定k=N,则通过NPU的N×N内核对该层的处理完成(614)。已经以对角线方式存储的OFM值准备好作为下一层的IFM值进行处理,而无需SRAM之间的数据传送。
图7描绘了根据本文公开的主题的包括可以处理神经网络模型的当前层的输入特征图数据并将神经网络模型的下一层的输出特征图数据存储在不涉及NPU的存储器之间的数据传送的位置处的NPU阵列的电子设备700。电子设备700可以包括控制器(或CPU)710、输入/输出设备720(例如但不限于小键盘、键盘、显示器、触摸屏显示器、相机和/或图像传感器)、存储器730、接口740、GPU 750、图像处理单元760和神经处理单元770,它们通过总线780彼此耦接。控制器710可以包括例如至少一个微处理器、至少一个数字信号处理器、至少一个微控制器等。存储器730可以被配置为存储将由控制器710使用的命令代码或用户数据。电子设备700和电子设备700的各种系统组件可以由一个或多个模块形成。
在一个实施例中,根据本文公开的主题,神经处理单元770可以包括NPU阵列,该NPU阵列可以处理神经网络模型的当前层的输入特征图数据,并将神经网络模型的下一层的输出特征图数据存储在不涉及NPU的存储器之间的数据传送的位置处。接口940可以被配置为包括被配置为使用RF信号向无线通信网络发送数据或者从无线通信网络接收数据的无线接口。无线接口940可以包括例如天线。电子系统900还可以用于通信系统的通信接口协议,例如但不限于码分多址(CDMA)、全球移动通信系统(GSM)、北美数字通信(NADC)、扩展时分多址(E-TDMA)、宽带CDMA(WCDMA)、CDMA2000、Wi-Fi、市政Wi-Fi(Muni Wi-Fi)、蓝牙、数字增强型无绳电信(DECT)、无线通用串行总线(无线USB)、具有无缝切换的快速低时延接入正交频分复用(FlashOFDM)、IEEE 802.20、通用分组无线电业务(GPRS)、iBurst、无线宽带(WiBro)、WiMAX、WiMAX-Advanced、通用移动电信服务-时分双工(UMTS-TDD)、高速分组接入(HSPA)、演进数据优化(EVDO)、长期演进-高级(LTE-Advanced)、多通道多点分发服务(MMDS)、第五代无线(5G)、第六代无线(6G)等等。
本说明书中描述的主题和操作的实施例可以在数字电子电路系统中实施,或者以计算机软件、固件或硬件实施,包括本说明书中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以被实施为一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在计算机存储介质上,用于由数据处理装置执行或控制数据处理装置的操作。可替换地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息,用于传输到合适的接收器装置,以由数据处理装置执行。计算机存储介质可以是或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备或其组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备)中。此外,本说明书中描述的操作可以被实施为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。
虽然本说明书可以包含许多具体的实施方式细节,但是这些实施方式细节不应被解释为对任何要求保护的主题的范围的限制,而是应当被解释为对特定实施例所特有的特征的描述。本说明书中在分开的实施例的上下文中描述的特定特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分开地或以任何合适的子组合来实施。此外,尽管特征可能在上面被描述为在特定组合中起作用,并且甚至最初被如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从该组合中被删除,并且所要求保护的组合可以针对子组合或子组合的变体。
类似地,虽然在附图中以特定的顺序描述了操作,但是这不应被理解为要求这些操作以所示的特定顺序或连续顺序执行,或者要求所有示出的操作都被执行,以获得期望的结果。在特定情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者封装到多个软件产品中。
因此,本文已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。在一些情况下,权利要求中阐述的动作可以以不同的顺序来执行,并且仍然实现期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来实现期望的结果。在特定实施方式中,多任务和并行处理可能是有利的。
如本领域技术人员将认识到的,本文描述的创新概念可以在广泛的应用范围内修改和变化。因此,所要求保护的主题的范围不应限于以上讨论的任何具体示例性教导,而是由所附权利要求来定义。

Claims (20)

1.一种神经处理单元NPU的内核,包括:
布置成N行和N列的NPU的N×N阵列,其中N是大于等于2的整数,每个NPU包括存储器和耦接到所述存储器的卷积乘法累加MAC电路,所述存储器能够接收、存储和输出输入特征图IFM值、核值和输出特征图OFM值,
所述NPU的N×N阵列被配置为通过以下步骤处理IFM数据:
存储IFM值阵列的IFM值,使得所述IFM值阵列的IFM值的每个相应行被顺序存储在沿所述NPU的N×N阵列的对角线定位的NPU的相应存储器中;
将存储在位于当前对角线中的每个NPU的存储器中的IFM值广播到与该NPU位于同一行的其他NPU的存储器;
对于所述NPU的N×N阵列的每一行,将广播到该行中的NPU的存储器的IFM值乘以存储在该行中的每个相应NPU的存储器中的核值,以形成该NPU的乘积值PV;
对于所述NPU的N×N阵列的每一列,将列中的所有乘积值PV相加以形成该列的OFM值;
将每个相应OFM值存储在位于当前对角线中的NPU的存储器中;以及
重复广播、乘法、相加和存储,直到所述NPU的N×N阵列的所有对角线都被处理。
2.根据权利要求1所述的NPU的内核,其中,每个OFM值存储在对应于该OFM值的下一层的IFM值的NPU位置中。
3.根据权利要求1所述的NPU的内核,其中,N包括2、4、8、16、32和64中的一个。
4.根据权利要求1所述的NPU的内核,其中,每个NPU的存储器包括静态随机存取存储器SRAM。
5.根据权利要求1所述的NPU的内核,其中,所述N行包括行ri-rN,所述N列包括列cj-cN,并且所述N个对角线包括对角线dk-dN,其中i是1和N之间的整数值,包含1和N,j是1和N之间的整数值,包含1和N,并且k是1和N之间的整数值,包含1和N,
其中,每个对角线包括N个NPU,并且第k个对角线dk在从行ri中的第j个NPU朝向行ri+1和列cj+1中的NPU的方向上延伸,并且绕到行rN-i中的NPU。
6.根据权利要求5所述的NPU的内核,其中,存储IFM值阵列的IFM值还包括通过将矩阵A的第i行中的每个IFM值xi1-xiN顺序存储在位于所述NPU的N×N阵列的第i个对角线中的NPU的存储器中来接收N×N矩阵A的IFM值x,
其中,广播还包括将存储在对角线dk中的NPU的存储器中的每个相应IFM值x广播到所述NPU的N×N阵列的行rk中的每个其他NPU的存储器,
其中,乘法还包括对于所述NPU的N×N阵列的每一行ri-rN,将广播到该行中的NPU的存储器的IFM值x乘以存储在该行中的每个相应NPU的存储器中的核值,以形成乘积值PVij,其中j表示对应于所述乘积值的列,
其中,相加还包括对于所述NPU的N×N阵列的每一列c1-cN,将NPU的第j列中的所有乘积值PVij相加以形成所述NPU的N×N阵列的每个相应列的OFMj值,并且
其中,存储还包括将每个相应OFMj存储在位于对角线dk中的NPU的存储器中。
7.根据权利要求1所述的NPU的内核,其中,N包括4,并且
其中,使用NPU中的8位数据路径来处理四个像素的IFM数据。
8.根据权利要求1所述的NPU的内核,其中,N包括4,并且
其中,使用NPU中的4位数据路径来处理两个像素的IFM数据。
9.一种神经处理单元NPU的内核,包括:
布置成N行ri-rN、N列cj-cN和N个对角线dk-dN的N×N个NPU的组,其中N是大于等于2的整数,i是1和N之间的整数值,包含1和N,j是1和N之间的整数值,包含1和N,并且k是1和N之间的整数值,包含1和N,每个对角线包括N个NPU,第k个对角线dk在从行ri中的第j个NPU朝向行ri+1和列cj+1中的NPU的方向上延伸,并且绕到行rN-i中的NPU,每个NPU包括存储器和耦接到所述存储器的卷积乘法累加MAC电路,所述存储器能够接收、存储和输出输入特征图IFM值、核值和输出特征图OFM值,
所述NPU的组被配置为通过以下步骤处理IFM数据:
通过将矩阵A的第i行中的每个IFM值xi1-xiN顺序存储在位于所述N×N个NPU的组的第i个对角线中的NPU的存储器中来接收N×N矩阵A的IFM值xab
将存储在对角线dk中的NPU的存储器中的每个相应IFM值x广播到所述N×N个NPU的组的行rk中的每个其他NPU的存储器;
对于所述N×N个NPU的组的每一行ri-rN,将广播到该行中的NPU的存储器的IFM值x乘以存储在该行中的每个相应NPU的存储器中的核值,以形成乘积值PVij,其中j表示对应于所述乘积值的列;
对于所述N×N个NPU的组的每一列c1-cN,将NPU的第j列中的所有乘积值PVij相加以形成所述N×N个NPU的组的每个相应列的OFMj值;
将每个相应OFMj存储在位于对角线dk中的NPU的存储器中;以及
重复广播、乘法、相加和存储,直到所有对角线d1-dk都被处理。
10.根据权利要求9所述的NPU的内核,其中,每个OFM值存储在对应于该OFM值的下一层的IFM值的NPU位置中。
11.根据权利要求9所述的NPU的内核,其中,N包括2、4、8、16、32和64中的一个。
12.根据权利要求9所述的NPU的内核,其中,每个NPU的存储器包括静态随机存取存储器SRAM。
13.根据权利要求9所述的NPU的内核,其中,N包括4,并且
其中,使用NPU中的8位数据路径来处理四个像素的IFM数据。
14.根据权利要求9所述的NPU的内核,其中,N包括4,并且
其中,使用NPU中的4位数据路径来处理两个像素的IFM数据。
15.一种处理神经网络的层的输入特征图IFM值的方法,所述方法包括:
存储IFM值阵列的IFM值,使得所述IFM值阵列的IFM值的每个相应行被顺序存储在沿NPU的N×N阵列的对角线定位的NPU的相应存储器中,所述NPU的N×N阵列被布置成N行和N列,其中N是大于等于2的整数,每个NPU包括存储器和耦接到所述存储器的卷积乘法累加MAC电路,所述存储器能够接收、存储和输出输入特征图IFM值、核值和输出特征图OFM值;
将存储在位于当前对角线中的每个NPU的存储器中的IFM值广播到与该NPU位于同一行的其他NPU的存储器;
对于所述NPU的N×N阵列的每一行,将广播到该行中的NPU的存储器的IFM值乘以存储在该行中的每个相应NPU的存储器中的核值,以形成该NPU的乘积值PV;
对于所述NPU的N×N阵列的每一列,将列中的所有乘积值PV相加以形成该列的OFM值;
将每个相应OFM值存储在位于当前对角线中的NPU的存储器中;以及
重复广播、乘法、相加和存储,直到所述NPU的N×N阵列的所有对角线都被处理。
16.根据权利要求15所述的方法,其中,每个OFM值存储在对应于该OFM值的下一层的IFM值的NPU位置中。
17.根据权利要求15所述的方法,其中,N包括2、4、8、16、32和64中的一个。
18.根据权利要求15所述的方法,其中,每个NPU的存储器包括静态随机存取存储器SRAM。
19.根据权利要求15所述的方法,其中,所述N行包括行ri-rN,所述N列包括列cj-cN,并且所述N个对角线包括对角线dk-dN,其中i是1和N之间的整数值,包含1和N,j是1和N之间的整数值,包含1和N,并且k是1和N之间的整数值,包含1和N,
其中,每个对角线包括N个NPU,并且第k个对角线dk在从行ri中的第j个NPU朝向行ri+1和列cj+1中的NPU的方向上延伸,并且绕到行rN-i中的NPU。
20.根据权利要求19所述的方法,其中,存储IFM值阵列的IFM值还包括通过将矩阵A的第i行中的每个IFM值xi1-xiN顺序存储在位于NPU的N×N阵列的第i个对角线中的NPU的存储器中来接收N×N矩阵A的IFM值xab
其中,广播还包括将存储在对角线dk中的NPU的存储器中的每个相应IFM值x广播到所述NPU的N×N阵列的行rk中的每个其他NPU的存储器,
其中,乘法还包括对于所述NPU的N×N阵列的每一行ri-rN,将广播到该行中的NPU的存储器的IFM值x乘以存储在该行中的每个相应NPU的存储器中的核值,以形成乘积值PVij,其中j表示对应于所述乘积值的列,
其中,相加还包括对于所述NPU的N×N阵列的每一列c1-cN,将NPU的第j列中的所有乘积值PVij相加以形成所述NPU的N×N阵列的每个相应列的OFMj值,并且
其中,存储还包括将每个相应OFMj存储在位于对角线dk中的NPU的存储器中。
CN202210644165.7A 2021-06-10 2022-06-08 可重配置神经处理单元的sram共享 Pending CN115469828A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163209388P 2021-06-10 2021-06-10
US63/209,388 2021-06-10
US17/400,094 2021-08-11
US17/400,094 US20220405557A1 (en) 2021-06-10 2021-08-11 Sram-sharing for reconfigurable neural processing units

Publications (1)

Publication Number Publication Date
CN115469828A true CN115469828A (zh) 2022-12-13

Family

ID=81325726

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210644165.7A Pending CN115469828A (zh) 2021-06-10 2022-06-08 可重配置神经处理单元的sram共享

Country Status (4)

Country Link
US (1) US20220405557A1 (zh)
EP (1) EP4102410B1 (zh)
KR (1) KR20220166730A (zh)
CN (1) CN115469828A (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US11604958B2 (en) * 2019-03-13 2023-03-14 Samsung Electronics Co., Ltd. Method and apparatus for processing computation of zero value in processing of layers in neural network

Also Published As

Publication number Publication date
KR20220166730A (ko) 2022-12-19
US20220405557A1 (en) 2022-12-22
EP4102410A1 (en) 2022-12-14
EP4102410B1 (en) 2023-10-18

Similar Documents

Publication Publication Date Title
US20170344876A1 (en) Efficient sparse parallel winograd-based convolution scheme
US20220292049A1 (en) Neural processing accelerator
Patel et al. A low-complexity high-speed QR decomposition implementation for MIMO receivers
CN114116557A (zh) 基于硬件加速器与数字信号处理器的信道估计装置及方法
US11934482B2 (en) Computational memory
CN115469828A (zh) 可重配置神经处理单元的sram共享
EP4109346A1 (en) Depthwise-convolution implementation on a neural processing core
EP4105838A1 (en) Mixed-precision neural network accelerator tile with lattice fusion
CN111901071B (zh) 一种低复杂度实现矩阵qr分解的方法及装置
CN102137050B (zh) 一种对无线通信系统中阵列天线的数据信号进行处理的方法和设备
US20240160483A1 (en) Dnns acceleration with block-wise n:m structured weight sparsity
US20230153586A1 (en) Accelerate neural networks with compression at different levels
US20240095519A1 (en) Extreme sparse deep learning edge inference accelerator
US20210294873A1 (en) LOW OVERHEAD IMPLEMENTATION OF WINOGRAD FOR CNN WITH 3x3, 1x3 AND 3x1 FILTERS ON WEIGHT STATION DOT-PRODUCT BASED CNN ACCELERATORS
US20240095505A1 (en) Hybrid-sparse npu with fine-grained structured sparsity
EP4343631A1 (en) Weight-sparse npu with fine-grained structured sparsity
CN118052256A (zh) 利用分块n:m结构化权重稀疏性的dnn加速
CN117744724A (zh) 神经处理单元
EP4160487A1 (en) Neural network accelerator with a configurable pipeline
CN117744723A (zh) 神经处理单元
US20230153569A1 (en) Creating an accurate latency lookup table for npu
US20240162916A1 (en) Runtime reconfigurable compression format conversion
KR20240072068A (ko) 블록 단위 n:m 구조의 가중치 희소성을 통한 심층 신경망 가속
CN116390120A (zh) 可重构全向超表面最优码本尺寸的获取方法、装置及设备
CN117435552A (zh) 一种位宽可编程的整型存内计算结构

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination