CN115668125A - 存储器处理单元架构映射技术 - Google Patents
存储器处理单元架构映射技术 Download PDFInfo
- Publication number
- CN115668125A CN115668125A CN202180037882.7A CN202180037882A CN115668125A CN 115668125 A CN115668125 A CN 115668125A CN 202180037882 A CN202180037882 A CN 202180037882A CN 115668125 A CN115668125 A CN 115668125A
- Authority
- CN
- China
- Prior art keywords
- memory
- core
- neural network
- cores
- regions
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- 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
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- 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/048—Activation functions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Neurology (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Image Processing (AREA)
- Multi Processors (AREA)
- Logic Circuits (AREA)
Abstract
一种存储器处理单元(MPU)配置方法可以包括将一个或更多个神经网络模型的操作映射到多个处理区域中的核心组。此外,一个或更多个神经网络模型的数据流可被映射到多个处理区域中的核心组。此外,配置信息可基于该一个或更多个神经网络模型的操作到该多个处理区域中的核心组的映射以及该一个或更多个神经网络模型的数据流到该多个处理区域中的核心组的映射来生成。该方法可以通过从神经网络模型生成初始图来实现。然后可以从最终图生成映射图。然后可以从映射图生成一个或更多个配置文件。
Description
相关申请的交叉引用
本申请要求2020年8月31日提交的美国临时专利申请No.63/072,904的权益,其全部内容合并在本文中。
背景技术
计算系统已经对现代社会的进步作出了重大贡献,并且被用于许多应用中以实现有利的结果。诸如人工智能、机器学习、大数据分析等的应用对大量数据执行计算。在常规计算系统中,将数据从存储器传送到一个或更多个处理单元,处理单元对数据执行计算,然后将结果传送回存储器。将大量数据从存储器传送到处理单元并传送回存储器需要时间和消耗功率。因此,存在对减少处理延迟、数据延迟和/或功率消耗的改进的计算系统的持续需求。
发明内容
通过参考以下描述和附图可以最好地理解本技术,所述描述和附图用于示出针对用于存储器处理架构的神经网络映射技术的本技术的实施例。
在一个实施例中,一种存储器处理单元(MPU)配置方法可以包括基于一个或更多个神经网络模型来配置多个处理区域中的一组或更多组核心的操作。所述多个处理区域可以在第一存储器的多个区域之间交错,所述多个处理区域中的每个处理区域可以包括多个计算核心,所述多个处理区域中的每个相应处理区域的所述多个计算核心中的每个计算核心可以被耦合在第一多个存储器区域中的相邻存储器区域之间,并且第二存储器可以被耦合到所述多个处理区域。该配置方法还可以包括配置数据流。数据流的配置可包括多个处理区域中的相应处理区域中的相邻计算核心之间的核心至核心数据流的配置。配置还可以包括从第一存储器的多个区域中的相应区域到多个处理区域中的相邻处理区域内的一个或更多个核心的存储器至核心数据流的配置。配置还可包括从所述多个处理区域中的处理区域内的一个或更多个核心到所述第一存储器的所述多个区域中的相邻区域的核心至存储器数据流的配置。配置还可包括从第二存储器区域到多个处理区域中的对应处理区域的一个或更多个核心的存储器至核心数据流的配置。
在另一个实施例中,一种存储器处理单元(MPU)配置方法可以包括:将一个或更多个神经网络模型的操作映射到多个处理区域中的核心组,其中所述多个处理区域在第一存储器的多个区域之间交错,其中所述多个处理区域中的每个处理区域包括多个计算核心,其中所述多个处理区域中的每个相应处理区域的所述多个计算核心中的每个计算核心被耦合在所述第一存储器的所述多个区域中的相邻区域之间,且其中第二存储器被耦合至所述多个处理区域。该配置方法还可包括将一个或更多个神经网络模型的数据流映射到多个处理区域中的核心组。该配置方法还可包括基于一个或更多个神经网络模型的操作到多个处理区域中的核心组的映射和一个或更多个神经网络模型的数据流到多个处理区域中的核心组的映射来生成配置信息。
提供本概述以便以简化形式介绍将在以下详细说明中进一步描述的一些概念的选择。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
在附图中通过举例而非限制的方式展示了本技术的多个实施例,并且其中,相同的附图标记指代类似的元件,并且其中:
图1示出了根据本技术的各方面的存储器处理单元(MPU)。
图2示出了根据本技术的各方面的存储器处理单元(MPU)配置方法。
图3示出了根据本技术的各方面的存储器处理方法。
图4示出了根据本技术的各方面的存储器处理单元中的数据流的配置。
图5示出了根据本技术的各方面的用于神经网络的示例性映射单元。
图6示出了根据本技术的各方面的用于映射单元的示例性计算核心。
图7示出了根据本技术的各方面的示例性存储器核心槽。
图8示出了根据本技术的各方面的存储器的示例性虚拟通道。
图9-12示出了根据本技术的各方面的全通道计算核心配置。
图13-16示出了根据本技术的各方面的部分和计算核心配置。
图17和18示出了根据本技术的各方面的部分和计算核心配置。
图19-22示出了根据本技术的各方面的第一存储器区域多态计算核心配置。
图23-26示出了根据本技术的各方面的第二存储器区域多态计算核心配置。
图27-30示出了根据本技术的各方面的复合计算核心配置。
图31示出了根据本技术的各方面的复合计算核心配置。
图32示出了根据本技术的各方面的存储器处理单元(MPU)的第一存储器区域共享特征。
图33A和33B示出了根据本发明的各方面的消费者和生产者的示例性缓冲区利用。
图34A-34D示出了根据本发明的各方面的用于3x3内核大小的示例性共享部分缓冲区。
图35A和35B示出了根据本发明的各方面的具有2x2跨距的3x3内核大小的示例性共享部分缓冲区。
图36示出了根据本技术的各方面的利用完整特征图缓冲区的示例分支数据流。
图37示出了根据本技术的各方面的利用部分特征图缓冲区的示例性分支数据流。
图38示出了根据本技术的各方面的利用部分特征图缓冲区的示例性分支数据流。
图39A和39B示出了根据本技术的各方面的共享缓冲区中的像素同步。
图40示出了根据本技术的各方面的根据神经网络模型配置存储器处理单元(MPU)的方法。
具体实施方式
现在将详细参考本技术的实施例,其示例在附图中示出。尽管将结合这些实施例描述本技术,然而,应当理解的是,其并不旨在将本技术局限于这些实施例。相反,本发明旨在覆盖可被包括在由所附权利要求限定的本发明的范围内的替代、修改和等同物。此外,在本技术的以下详细描述中,阐述了许多具体细节以便提供对本技术的透彻理解。然而,应当理解,本技术可以在没有这些具体细节的情况下实施。在其他实例中,未详细描述众所周知的方法、过程、组件和电路,以免不必要地模糊本技术的各方面。
以下本技术的一些实施例是按照例程、模块、逻辑块以及对一个或更多个电子设备内的数据的运算的其他符号表示来呈现的。描述和表示是本领域的技术人员为了将其工作的实质最有效地传达给本领域的其他技术人员所使用的手段。例程、模块、逻辑块和/或类似物在本文中并且通常被设想为导致期望结果的过程或指令的自洽序列。这些过程是包括对物理量的物理操纵的那些过程。通常,尽管不是必需的,但是这些物理操纵采取能够在电子设备中存储、传送、比较和以其他方式操纵的电或磁信号的形式。为了方便起见,并且参考共同使用,参照本技术的实施例,这些信号被称为数据、位、值、元素、符号、字符、术语、数字、字符串等。
然而,应当牢记,这些术语应被解释为参考物理操纵和数量并且仅仅是方便的标签并且鉴于本领域中常用的术语被进一步解释。除非如从以下讨论中显而易见的另外具体说明,否则应当理解的是,通过本技术的讨论,利用诸如“接收”等术语的讨论是指诸如操纵和变换数据的电子计算设备的电子设备的动作和过程。该数据被表示为电子设备的逻辑电路、寄存器、存储器等内的物理(例如,电子)量,并且被转换成类似地被表示为电子设备内的物理量的其他数据。
在本申请中,析取法的使用旨在包括合取物。定冠词或不定冠词的使用不旨在指示基数。具体地,提及“该(the)”物体或“一个(a)”物体旨在还表示可能的多个此类物体中的一个。术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”、“包括(including)”等的使用指定所述要素的存在,但不排除一个或更多个其他要素和/或其组的存在或添加。还应理解的是,虽然在本文中可使用术语第一、第二等来描述各种元件,但是这种元件不应受这些术语限制。这些术语在本文中用于区分一个元件与另一个元件。例如,在不背离本实施例的范围的情况下,第一元件可以被称为第二元件,并且类似地,第二元件可以被称为第一元件。还应理解的是,当元件被称为“耦合”至另一元件时,该元件可直接或间接地连接至另一元件,或者可存在中间元件。相反,当元件被称为“直接连接”至另一元件时,则不存在中间元件。还应理解的是,术语“和/或”包括一个或更多个相关元件的任何和所有组合。还应理解的是,本文中使用的措辞和术语用于描述的目的,并且不应被视为限制性的。
参考图1,示出了根据本技术的各方面的存储器处理单元(MPU)。存储器处理单元100可包括第一存储器(其包括多个区域102-110)、多个处理区域112-116和第二存储器118。多个处理区域112-116可在第一存储器102-110的多个区域之间交错。第二存储器118可被耦合至多个处理区域112-116。第二存储器118可以可选地被逻辑地或物理地组织成多个区域。第二存储器118的多个区域可以与多个处理区域112-116中的对应区域相关联。此外,第二存储器118的多个区域可以包括在一个或更多个宏中组织的多个块。第一存储器102-110可以是易失性存储器,诸如静态随机存取存储器(SRAM)等。第二存储器可以是非易失性存储器,诸如电阻性随机存取存储器(RRAM)、磁性随机存取存储器(MRAM)、闪存(FLASH)等。可替代的,第二存储器可以是易失性存储器。
处理区域112-116可以包括多个计算核心120-132。多个处理区域112-116中的相应处理区域的多个计算核心120-132可以被耦合在第一存储器102-110的多个区域中的相邻区域之间。例如,第一处理区域112的计算核心120-128可以被耦合在第一存储器102-110的第一区域102和第二区域104之间。每个相应的处理区域112-116中的计算核心120-132可以在一个或更多个集群134-138中是可配置的。例如,第一处理区域112中的第一组计算核心120、122可在第一集群134中是可配置的。类似地,第一处理区域中的第二组计算核心124-128可在第二集群136中是可配置的。多个处理区域112-116中的相应处理区域的多个计算核心120-132也可以是可配置地串联耦合的。例如,第一处理区域112中的一组计算核心120-124可以被通信地串联地耦合,其中第二计算核心122从第一计算核心120接收数据和/或指令,并且第三计算核心124从第二计算核心122接收数据和/或指令。
存储器处理单元100可以还包括层间通信(ILC)单元140。ILC单元140可以是全局的或跨多个处理区域112-116分布。在一个实现方式中,ILC单元140可包含多个ILC模块142-146,其中每一ILC模块可被耦合到相应的处理区域112-116。每个ILC模块还可耦合到第一存储器102-110的与对应相应处理区域112-116相邻的相应区域。层间通信单元140可以被配置为使产生给定数据的一个或更多个计算核心与消耗给定数据的一个或更多个其他计算核心之间的数据移动同步。
存储器处理单元100可还包括一个或更多个输入/输出级148、150。一个或更多个输入/输出级148、150可以被耦合到第一存储器102-110的一个或更多个相应区域。一个或更多个输入/输出级148、150可包括一个或更多个输入端口、一个或更多个输出端口和/或一个或更多个输入/输出端口。一个或更多个输入/输出级148、150可被配置成将数据流式传输进或流式传输出存储器处理单元100。例如,输入/输出(I/O)端口中的一个或更多个可以被配置为将数据流式传输到第一存储器102-110的多个区域中的第一区域中。类似地,一个或更多个输入/输出(I/O)端口可以被配置为将数据流式传输出第一存储器102-110的多个区域中的最后一个区域。
多个处理区域112-116可以是能配置用于从第一存储器102-110的多个区域中的相应区域到多个处理区域112-116的相邻处理区域内的一个或更多个核心120-132的存储器至核心数据流。多个处理区域112-116还可以是能配置用于从多个处理区域112-116中的一些处理区域内的一个或更多个核心120-132到第一存储器102-110的多个区域中的相邻区域的核心至存储器数据流。在一种实现方式中,可以针对从第一存储器102-110的多个区域中的给定区域通过多个处理区域中的相应处理区域到第一存储器102-110的多个区域中的相邻区域的给定方向来配置数据流。
多个处理区域112-116还可以能配置用于从第二存储器118到多个处理区域112-116中的对应处理区域的一个或更多个核心120-132的存储器至核心数据流。如果第二存储器118在逻辑上或物理上被组织在多个区域中,则第二存储器118的多个区域中的相应区域可以可配置地能与多个处理区域112-116的相应区域中的一个或更多个计算核心耦合。
多个处理区域112-116可以进一步能配置用于多个处理区域112-116中的相应处理区域中的选择相邻计算核心120-132之间的核心至核心数据流。例如,给定核心124可以被配置成共享从第一存储器102的相邻部分访问的数据,其中一个或更多个其他核心126-128可配置地与给定计算核心124串联耦合。在另一示例中,给定核心120可以被配置成将从第二存储器118访问的数据传递到可配置地与给定计算核心120串联耦合的一个或更多个其他核心122。在又一示例中,给定计算核心120可以将由给定计算核心120计算的结果(诸如部分和)传递到与给定计算核心120可配置地串联耦合的一个或更多个其他核心122。
多个处理区域112-116可以包括一个或更多个近存储器(M)核心。该一个或更多个近存储器(M)核心可以能配置成计算神经网络功能。例如,一个或更多个近存储器(M)核心可被配置成计算向量-向量积、向量-矩阵积、矩阵-矩阵积等和/或其部分积。
多个处理区域112-116还可以包括一个或更多个算术(A)核心。一个或更多个算术(A)核心可以能配置成计算算术运算。例如,算术(A)核心可被配置成计算合并操作、近存储器(M)核心不支持的算术计算等。
多个输入和输出区域142、144还可以包括一个或更多个输入/输出(I/O)核心。该一个或更多个输入/输出(I/O)核心可以被配置成访问存储器处理单元(MPU)100的输入和/或输出端口。如本文所使用的术语输入/输出(I/O)核心可指代被配置为访问输入端口的核心、被配置为访问输出端口的核心或被配置为访问输入和输出端口两者的核心。
计算核心120-132可以包括多个物理通道,这些物理通道可配置成与相应处理区域112-116内的其他核心同时地和/或与其他处理区域112-116中的其他核心同时地执行计算、访问等。多个处理区域112-116中的相应处理区域的计算核心120-132可以与第二存储器118的一个或更多个块相关联。多个处理区域112-116中的相应处理区域的计算核心120-132可以与第二多个存储器区域的相应切片相关联。核心120-132还可以包括多个可配置的虚拟通道。
如以下进一步描述的,存储器处理单元100可以有利地提供简单的数据流而无需集中式控制单元。存储器处理单元100还可以有利地实现浸入式存储器内计算。存储器处理单元100还可以有利地减少片外数据通信。存储器处理单元100还可以有利地增加数据重用。存储器处理单元100还可以利用离线编程来配置。
现在参见图2,示出了根据本技术的各方面的存储器处理单元(MPU)配置方法。该方法可包括在210处基于一个或更多个神经网络模型来配置多个处理区域中的一组或更多组核心的操作。各个计算核心可被配置成执行各个操作,包括但不限于密集或全连接卷积、二维卷积、深度方向卷积以及可分离卷积。在神经网络模型中,计算核心可被配置成执行操作以实现模型的节点。例如,计算核心可以被配置成执行操作,诸如但不限于最大池化、平均池化、零填充、校正线性(ReLU)激活、ReLU-x激活、泄漏ReLU-x激活、上采样、加法、乘法、旁路和合并。在其他实例中,当神经网络模型的一个或更多个层相对较大时,可以将这些层映射到多个处理区域中的一个或更多个相应处理区域中的计算核心的一个或更多个对应集群。可基于神经网络模型的对应的一个或更多个层来配置一个或更多个核心集群的操作。类似地,神经网络模型的一个或更多个层的部分可以被映射到多个处理区域中的一个或更多个相应处理区域中的计算核心的一个或更多个对应集群。在这种情况下,一个或更多个计算核心集群的操作可以基于神经网络模型的一个或更多个层的对应部分。在又一些实例中,当神经网络模型的一组或更多组融合层相对较小时,可以将这些层映射到多个处理区域中的一个或更多个相应处理区域中的计算核心的一个或更多个对应集群。
在220处,多个处理区域中的一组或更多组核心之间的数据流,这些数据流可以基于一个或更多个神经网络模型来配置。数据流配置可包括核心至核心数据流、存储器至核心数据流和核心至存储器数据流。在神经网络模型中,数据流可以实现模型的节点之间的边。
在核心至核心数据流中,多个处理区域112-116可以被配置成用于多个处理区域112-116的相应处理区域中的选定相邻计算核心120-132之间的数据流。例如,给定核心124可以被配置成传递从第一存储器102的相邻部分访问的数据,其中一个或更多个其他核心126-128能配置地与给定计算核心124串联耦合。在另一个示例中,给定核心120可以被配置成传递从第二存储器118访问的数据,其中一个或更多个其他核心122与给定计算核心120可配置地串联耦合。在又一示例中,给定计算核心120可以将由给定计算核心120计算的结果(诸如部分和)传递到与给定计算核心120能配置地串联耦合的一个或更多个其他核心122。
在存储器至核心数据流中,多个处理区域112-116可以被配置成用于从第一存储器102-110的多个区域中的相应区域到多个处理区域112-116中的相邻处理区域内的一个或更多个核心120-132的数据流。多个处理区域112-116还可以被配置用于从多个处理区域112-116中的一些处理区域内的一个或更多个核心120-132到第一存储器102-110的多个区域中的相邻区域的核心至存储器数据流。在一种实现方式中,可以针对从第一存储器102-110的多个区域中的给定区域通过多个处理区域中的相应处理区域到第一存储器102-110的多个区域中的相邻区域的给定方向来配置数据流。
在存储器至核心数据流中,多个处理区域112-116还可以被配置成用于从第二存储器118到多个处理区域112-116中的对应处理区域的一个或更多个核心120-132的数据流。例如,如果第二存储器118在逻辑上或物理上被组织在多个区域中,则第二存储器118的多个区域中的相应区域可以能配置地与多个处理区域112-116中的相应处理区域中的一个或更多个计算核心耦合。
现在参见图3,示出了根据本技术的各方面的一种存储器处理方法。将参考图1的存储器处理单元100来解释该方法。方法可以包括在310处配置多个处理区域112-116中的一个或更多个处理区域的计算核心与第一存储器的多个区域中的对应相邻区域之间的数据流。在320处,可以配置第二存储器118与多个处理区域112-116中的一个或更多个处理区域的计算核心120-132之间的数据流。在330处,可以配置多个处理区域112-116中的一个或更多个处理区域中的相应处理区域内的计算核心120-132之间的数据流。尽管310-340的过程被示为串行执行,但应当理解,这些过程可以并行执行或以并行和顺序操作的不同组合来执行。
在340处,可以以一个或更多个模式配置第一存储器102-110的多个存储器区域。在一个实施方式中,第一存储器102-110的一个或更多个区域的一个或更多个部分可以被配置为共享缓冲区模式、全缓冲区模式、分支缓冲区模式、逐像素缓冲区模式等,如下面参考图32-40B进一步描述的。
在350处,多个处理区域112-116中的一个或更多个处理区域的一组或更多组计算核心120-132可以被配置成执行神经网络模型的相应计算功能。在360处,神经网络模型的权重可被加载到第二存储器118中。在一个实现方式中,可将权重量化为定点格式并且加载到第二存储器中。可以使用平衡范围、二次幂范围等来量化权重。可以利用偏差等在每个神经网络层、每个通道上量化权重。权重可被转换成一维或二维向量格式以用于存储在第二存储器中。在370处,神经网络模型的激活数据可被加载到第一存储器102-110的多个区域中的一个或更多个区域中。在一个实现方式中,激活数据、特征图等(此后简称为激活数据)可被量化成定点、b浮点、浮点或脑浮点-16格式等。激活数据可以被转换成一维或二维向量格式以存储在第一存储器中。
在380处,产生给定数据的一个或更多个计算核心与消耗该给定数据的一个或更多个其他计算核心之间的数据移动可以基于神经网络模型同步。同步过程可在390处被重复以处理神经网络模型的激活数据。在395处,同步过程可包括在多个周期同步神经网络模型的激活数据的加载。
现在参见图4,示出了根据本技术的各方面的存储器处理单元中的数据流的配置。在处理区域的计算核心120-128与第一存储器区域102、104的相邻部分之间的数据流410、420可在任一方向上配置。例如,计算核心120-128和第一存储器区域102、104的相邻部分可以被配置用于从第一存储器区域102的第一部分经过计算核心120-128并到第一存储器区域104的第二部分的数据流。可替代地,数据流可以被配置为从第一存储器区域104的第二部分经过计算核心120-128到达第一存储器区域102的第一部分。在一种实现方式中,在处理区域的计算核心120-128与第一存储器区域102、104的相邻部分之间的数据流可以提供用于访问特征图数据等的直接路线。
还可以配置从第二存储器区域118到处理区域的计算核心的数据流430。在一种实现方式中,从第二存储器区域118到计算核心120-128的数据流可以提供用于访问内核数据、权重数据等的直接路线。还可以配置计算核心120-128之间的数据流440。在一种实现方式中,计算核心120-128之间的数据流可以提供与对应的处理区域中的其他计算核心120-128共享来自第二存储器区域的数据。在另一实现方式中,计算核心120-128之间的数据流可以提供来自第一存储器区域的相邻部分的数据的共享。在又一实现方式中,计算核心120-128之间的数据流可以提供将计算结果数据顺序地传递到对应的处理区域中的其他计算核心120-128。例如,计算核心120-128之间的数据流可以被配置成将部分和数据顺序地传递至计算核心120-128中的相邻计算核心。
根据本技术的各方面,神经网络层、神经网络层的一部分、或多个融合的神经网络层可以作为映射单元被映射到计算核心的单个集群。计算核心的集群是给定处理区域的被配置成一起工作以计算映射单元的一组核心。例如,神经网络的第一层510的节点和第二层520的节点可作为映射单元映射至计算核心,而第三层530的节点可作为映射单元映射至计算核心,如图5所示。此外,映射单元610可以由如图6中所示的计算核心集群620来计算。可选地,可以在计算集群中配置比计算映射单元所需的更多的计算核心,以提高计算性能。
如图7所示,计算核心120-128可以同时计算多个物理通道710-740。此外,计算核心的物理通道710-740可以与第二存储器区域118的相应份额相关联,其在本文中被称为核心槽(core slot)750-780。计算核心120-128还可以被配置成计算多个虚拟通道810,如图8所示。虚拟通道810还与第二存储器区域118的相应份额相关联。在一个实现方式中,计算核心120-128的虚拟通道810的数量可以大于物理通道710-740的数量。
再次,第二存储器118可以在逻辑上或物理上被组织成多个区域。在一种实现方式中,第二存储器区域118可以被组织成多个处理区域宏,其中每个处理区域112-116可以与第二存储器区域118的一个或更多个处理区域宏相关联。此外,可以将处理区域宏组织成核心槽,其中计算核心的每个物理通道与核心槽相关联。第二存储器区域的份额可以在编程阶段期间被灵活地分配,而不是静态的固定量。此外,相应处理区域112-116中的计算核心120-128可以配置在一个或更多个集群中。可以利用计算核心的集群化通过使用多个计算核心来增加计算。每个计算核心可以被配置成计算整个或部分计算操作。计算工作负荷可以基于计算核心的输出通道、第一存储器102-110中的数据或其组合而分布在给定集群的计算核心上。对于输出通道,可以针对整个或部分通道分布工作负荷。每个分布具有其自身的特性。例如,一种配置可用于减少对第二存储器118的访问,而另一配置可促进神经网络模型的层在第二存储器118的多个宏上的映射。可以针对给定的集群形状和类型配置一组计算核心。
现在参见图9,示出了根据本技术的各方面的整个通道计算核心配置。给定处理区域的计算核心可以配置为全通道模式,其中一个或更多个计算核心独立于相应处理区域中的其他计算核心执行计算。在全通道模式中,计算核心不将数据910顺序地从给定计算核心传递到相邻计算核心。现在参考图10,在全通道模式中,集群中的每个计算核心计算指定数量的通道。每个核心负责自己读取数据和写入输出结果。例如,全通道模式配置的计算核心从第一存储器区域的第X部分读取数据,可选地从第二存储器区域读取数据,进行相应的计算,并将结果存储在第一存储器区域的第(X+1)部分中。全通道模式中的计算核心不与其他计算核心共享数据并且作为独立的计算核心工作。现在参见图11,示出了示例性全通道计算核心配置。在所示示例中,映射单元具有22个输出通道1110并且被映射到三计算核心集群1120-1140。每个计算核心具有四个输出物理通道。输入特征图1150存储在第一存储器区域的相邻第一部分中,且输出特征图1160存储在第一存储器区域的相邻第二部分中。如图12中进一步示出的,每个计算核心1120-1140被配置成访问相应输出通道的权重。每个计算核心被配置成计算输入特征图和输出特征图的相应组的22个输出通道1210的权重的乘积。每个计算核心负责几乎三分之一的计算工作负荷。第二存储器区域可基于输出通道来组织,且导致22个输出通道1210映射成五个半的虚拟通道行。虽然计算核心集群被示为映射在第二存储器区域的单个宏上,但是计算核心集群也可以被映射在第二存储器区域的多个宏上。
现在参见图13,示出了根据本技术的各方面的部分和计算核心配置。在部分和传递模式下,一个或更多个计算核心可以被配置成执行计算并且将其相应结果作为部分和1310传递至同一处理区域内的相邻计算核心以便利用该部分和执行进一步的计算。在部分和配置中,单个通道的数据的大小不能适配在第二存储器区域的单个核心槽中。在这种情况下,数据可以分布在第二存储器区域的多个宏上。在部分和配置中,每个计算核心计算输出的一部分并且将其传递到集群中的相邻核心。所以,部分和模式相当于具有长的第二存储器区域宏的计算核心。部分和集群中的计算核心1410-1430全部可访问第一存储器区域1440的对应部分中的数据和第二存储器区域1450中的数据,并且链中的最后核心1430将会把结果回写到第一存储器区域1460的另一相邻部分,如图14所示。现在参见图15和16,示出了示例性部分和计算核心配置。在所示出的示例中,部分和集群映射包含四个输出通道1510,该映射为三计算核心集群1520-1540,且每一核心具有四个物理通道。如图15所示,每个计算核心被配置为访问第一存储器区域1550的第一部分中的特征图值。此外,每个计算核心被配置为访问第二存储器区域1610的物理通道中的权重,如图16所示。由于输出通道的数量与计算核心的物理通道的数量相同,因此所有核心都可以计算所有输出通道。第一计算核心1520可以从第一存储器1550中的输入特征图的对应部分以及第二存储器区域1610中的四个物理通道的权重的对应部分计算第一部分和。第一计算核心1520可以将第一部分和传递到第二计算核心1530。第二计算核心1530可以使用第一部分和、第一存储器1550中的输入特征图的对应部分以及第二存储器1610中的四个物理通道的权重的对应部分来计算第二部分和。第二计算核心1530可以将第二部分和传递到第三计算核心1540。第三计算核心可以将结果传递到第一存储器区域的相邻第二部分以存储为输出特征图数据1560。
在另一个示例中,部分和集群映射可以包括八个输出通道1710、四个计算核心1720-1750,并且每个核心具有四个物理通道,如图17和图18中所示。因此,输出通道多于集群中的计算核心的物理通道。因为在计算部分和的情况下,计算核心无法计算比它们具有的物理通道更多的输出通道,所以集群的四个计算核心可以配置为两个子集来计算八个输出通道。计算核心的每个子集将在其中传递部分和数据。每个计算核心计算四个对应的输出通道。
在其他情况下,计算核心可以计算比物理通道更多的输出通道。例如,如果计算核心具有八个物理通道并且已经分配了32个输出通道,则计算核心可以按顺序方式一次计算八个通道。然而,如果更多计算核心可用,则输出通道可跨额外的计算核心分布以加速过程。在这种情况下,可以例如跨两个计算核心计算相同的32个输出通道,其中每个计算核心被分配16个输出通道来计算。
现在参见图19,示出了根据本技术的各方面的多态第一存储器计算核心配置。给定处理区域的计算核心可以以多态配置来配置,其中一个或更多个核心与相邻计算核心共享来自第一存储器区域1910的给定部分的数据。多态第一存储器计算核心配置的集群等同于具有更多物理通道的更宽的核心。这样的配置可用于改善第一存储器区域中的数据的重用并减少对第一存储器区域的对应部分的访问的总数。还应注意,第一存储器区域中的数据的重用也是根据本技术的各方面的多个处理区域的计算核心配置的固有属性,因为计算核心可在物理通道之间共享数据。现在参见图20,多态第一存储器计算集群中的第一计算核心2010可访问第一存储器区域2040的对应部分中的数据,并且可与该集群中的其他计算核心2020、2030共享该数据。多态第一存储器配置中的所有计算核心2010-2030可以访问第二存储器区域2050中的数据,并且所有计算核心2010-2030可以将结果写到第一存储器区域2060的其他相邻部分,如图20所示。现在参见图21和22,示出了示例性多态第一存储器区域计算核心配置。在所示示例中,集群的第一计算核心2110可访问第一存储器区域2140的第一相邻部分中的输入特征图数据。第一计算核心2110可与集群的其他计算核心2120、2130共享输入特征图的数据,如图21所示。集群中的每个计算核心2110-2130还可以访问第二存储器区域2210中的数据,如图22所示。集群中的每个计算核心2110-2130然后可以执行相应的计算并且将结果作为输出特征图数据写入第一存储器区域2150的另一个相邻部分,如图21所示。可以通过映射算法来配置多态第一存储器计算集群,该映射算法通过创建整个通道集群、然后转换到第一存储器区域多态计算机集群而开始。在所示的三计算核心集群中,每个核心可负责多达三分之一的计算机工作负荷。第二存储器区域2210可被配置为具有四个输出通道,该四个输出通道可被映射到第二存储器区域2210中的五个半虚拟通道行中,如图22所示。
现在参见图23,示出了根据本技术的各方面的多态第二存储器计算核心配置。给定处理区域的计算核心可以以多态配置来配置,其中一个或更多个计算核心与相邻计算核心共享来自第二存储器区域2310的给定部分的数据。在多态第二存储器计算核心配置中,集群的每个计算核心可以计算所有输出通道,但是在输出特征图的不同像素上工作。因此,集群中的其他计算核心作为第一计算核心的工作者来操作。可以被分配的计算核心的数量是映射单元输出特征图像素的数量。集群的计算核心访问第二存储器区域中的不同数据序列,因为它们在不同的像素上工作。这样的配置可用于通过在集群中的核心之间共享数据来减少对第二存储器区域的访问的数量。多态第二存储器集群中的第一计算核心2410可访问第二存储器区域2440的对应部分中的数据,并且可与集群中的其他计算核心2420、2430共享该数据。多态第二存储器集群中的所有计算核心2410-2430可以访问第一存储器区域2450中的数据,并且所有计算核心2410-2430可以将结果写到第一存储器区域2460的其他相邻部分,如图24所示。现在参见图25和26,示出了示例性多态第二存储器计算核心配置。在所示出的示例中,集群的计算核心2510至2530可以全部访问第一存储器区域2540的第一相邻部分中的输入特征图数据,如图25所示。第一计算核心2510可以访问第二存储器区域2610中的数据,并且与集群2520、2530的其他计算核心共享数据,如图26所示。在一个实现方式中,集群可包括映射有总共22个输出通道的3个计算核心2510-2530。每个计算核心可以具有四个物理通道2620。该链的顶部计算核心2510被分配映射所需的第二存储器区域2610的整个部分,并且访问数据的整个22个输出通道。每个计算核心计算所有22个输出通道,但针对不同的像素。集群的另外两个计算核心2520、2530将访问第一计算核心2510而不是第二存储器区域2610以获得权重数据。在没有特殊同步的情况下能够以数据流方式进行邻接访问。集群内的每个计算核心2510-2530然后可以执行相应的计算并且将结果作为输出特征图数据写入第一存储器区域2550的另一个相邻部分,如图25所示。
现在参见图27,示出了根据本技术的各方面的复合计算核心配置。给定处理区域的集群中的每个计算核心可访问第一存储器区域的相邻部分。计算核心还可以被配置为与同一组内的相邻计算核心共享来自第二存储器区域2710、2720的给定部分的数据。然而,不同组中的计算核心不与其他组中的其他计算核心共享2730数据。每组中的计算核心计算指定数量的输出通道并将结果存储到第一存储器区域的其他相邻部分中。现在参见图28,示出了示例性复合计算核心配置。在所示示例中,映射单元具有22个输出通道并且被映射到四计算核心集群2810-2840,四计算核心集群2810-2840各自包括两组两个计算核心。例如,第一组可以包括第一和第二计算核心2810、2820,并且第二组可以包括第三和第四计算核心2830、2840。每组的计算核心可以每个核心具有四个物理通道。如图29所示,每组中的每个计算核心2910-2940可以访问第一存储器2950中的输入特征图数据。相应组中的第一计算核心2910、2930可以访问第二存储器2970中的相应组的输出通道中的权重数据,如图30所示。第一组中的第一计算核心2910可以被配置成与第一组中的其他计算核心2920共享来自第二存储器2970的数据。类似地,第二组中的第一计算核心2930可被配置成与第二组中的其他计算核心2940共享来自第二存储器2970的数据。每组中的每个计算核心2910-2940可以将结果作为输出特征图数据回存到第一存储器2960的另一相邻部分。因此,每组两个计算核心充当独立的像素计算组。然而,使用两组像素计算组来计算整个结果。在顶层,每个像素计算组可被视为独立的计算核心组,且可以在它们之间以全通道方式分布工作负荷。
在另一个示例中,复合配置可以用于将像素计算核心分布在第二存储器区域的多个宏上,如图31所示。在这样的配置中,每组的计算核心3110、3120可以访问第二存储器区域3130、3140的相应宏。当不能使用第二存储器区域多态计算核心配置时,可以利用复合集群。通常,如果两组计算核心都可以用于在两组的计算核心之间共享来自第二存储器区域的数据,则第二存储器区域多态计算核心配置将提供更好的数据重用。
现在参见图32,示出了根据本技术的各方面的存储器处理单元(MPU)的第一存储器区域共享特征。如所示出的,MPU计算的数据流可以被可视化为一系列生产者3210-3240和消费者3250-3270。例如,计算核心集群3210-3240可以消耗来自第一存储器区域的第一部分的输入特征图数据并且产生可以作为下一个计算核心集群3250-3270使用的输入的特征图数据。可以理解,通常在常规计算单元之间的数据共享倾向于成为常规数据流加速器的重大障碍。因此,常规处理单元可以利用片上网络和/或数据复制。相比之下,根据本技术的各方面的MPU实现了更简单的数据共享技术,其中生产者和消费者对共享存储器缓冲区3280进行写入和读取。缓冲区3280是第一存储器在多个处理区域之间的交错部分。因此,数据可在相同处理区域和/或相邻处理区域中的集群之间流动。在一个实现方式中,软件层可以被配置为组织集群以确保这种邻接。在图33的示例中,两个不同处理区域中的两个计算核心集群3210-3240和3250-3270共享第一处理区域的一部分中的缓冲区3280。应当理解,在生产者和消费者计算核心之间不存在直接通信。计算集群中的计算核心彼此不直接同步。然而,计算集群中的计算核心可被配置成彼此直接通信数据。
在一个实现方式中,可以通过在第一存储器的对应部分中分配足够大的缓冲区来在处理区域之间共享数据。例如,可分配缓冲区来承载在相邻处理区域之间共享的整个特征图。缓冲区的大小可以根据等式1来计算:
其中F是特征图大小的向量。
然而,将整个特征图大小分配为缓冲区不足以使数据流动。消费者需要避免读取尚未被生产者填充的缓冲区条目。假设特征图行级的粗粒度同步,消费者无法从仍在产生的特征图行中读取。为了简单起见,每个特征图行将被示出为图34至图37中的单个缓冲区条目。然而,可以理解,单行可能需要存储数百、数千或者甚至更多的条目。现在参考图33A和图33B,示出了消费者和生产者的示例性缓冲区利用。所示出的缓冲区3310的大小被确定成用于存储完整特征图。例如,生产者3320可执行二维卷积,而消费者3330可执行具有3x3内核大小的二维卷积。生产者核心3320可在产生下一行的像素之前生成给定特征图行的像素。在此情况下,生产者核心3320仅封锁单个行条目,如图33A中所示。当生产者核心3320生成给定特征图行的像素时,消费者核心3330可访问前三行的像素值。在生产者核心3320完成生成给定行的像素之后,生产者核心3320可移动以生成下一行的像素,如图33B中所示。此时,如果消费者核心3330准备好开始处理接下来的三行窗口,则消费者核心3330可将其消耗转移到接下来的三行窗口。此外,应注意,已消耗的行可保留在缓冲区3310中,直到随着处理继续而被生产者核心3320覆写。应理解,3x3内核的消费者3330同时消耗三个缓冲区条目,而生产者3320在移动到下一条目之前为一个条目生成数据。此外,缓冲区3310中的多个条目在任何给定时间都没有使用。因此,全特征图大小的缓冲区3310会浪费存储器处理单元(MPU)中的资源。
在另一实现方式中,较小的部分缓冲区可能足以使数据流支持计算。例如,循环队列可以用作部分缓冲区。部分缓冲区可被配置为携带足够的数据以供消费者操作,且具有额外的条目以允许生产者在消费者工作时生成数据。例如,在消费者正执行具有3x3内核大小的卷积的情况下,部分缓冲区可包含三个特征图行。部分缓冲区还可包括额外的条目,称为管线余量(pipeline margin)。在没有这样的余量的情况下,数据流性能将显著下降,因为生产者和消费者将不能够同时工作。生产者也不能重写尚未消耗的数据,且消费者需要等待生产者完成将新行写入部分缓冲区中才开始消耗它。现在参看图34A-36D,示出了3x3内核大小的示例性共享部分缓冲区3410。如图所示,生产者3420在移动到下一行之前为给定行生成像素数据,且消费者3430一次访问三行数据。通过利用部分缓冲区3410,可以将共享缓冲区3410的大小减小到小至四行。例如,在第一周期中,消费者3430可正访问前三行像素数据,且生产者3420可正生成用于存储在第四行中的数据。在第二周期中,消费者3430可正访问第二到四行的数据,而生产者3420正将数据存储在第一行中。在第三周期中,消费者3430可访问第三行、第四行和第一行中的数据,而生产者3420将数据存储在第二行中。在第四周期中,消费者3430可访问第四行、第一行及第二行,而生产者3420将数据存储在第三行中。此后,第一至第四周期可以迭代地重复任何次数。因此,四行的共享部分缓冲区可允许生产者和消费者顺利地工作。
现在参见图35A和35B,示出了具有2x2跨距的3x3内核大小的示例性共享部分缓冲区3510。跨距为2x2的消费者3530一次将其窗口移动两行。因此,需要二的管线余量以允许生产者生成用于消费者窗口移位的必要行。例如,生产者3520可将数据存储在第四行和第五行中,而消费者3530访问第一至第三行中的数据。在生产者3520将数据存储在第四和第五行中之后,消费者3530可移动到访问第三至第五行中的数据,而生产者3520将数据存储在第一行和第二行中。
为了便于解释,已经关于单个生产集群和单个消费集群描述了本技术的各方面。然而,存储器处理单元(MPU)中的数据流可以涉及数据流分支成多条路径,该多条路径可以例如作为不同的输出结束、再次合并等。虽然可将分支输出视为与多个单个数据流路径相同,但合并分支可能涉及附加考虑。例如,如果具有合并分支的神经网络未被分配正确的缓冲区大小,则数据流管线可能最终陷入死锁或产生正确的数据。对于具有多个消费者的数据,数据有效性应当由最慢的消费者设置。通常,较长的数据寿命导致需要较大的缓冲区大小。现在参考图36,示出了利用完整特征图缓冲区的示例分支数据流。如图所示,第一生产者3610可执行卷积(Conv2D)操作,其被两个分支消耗。第一分支例如可以包括内核大小为3X3的一系列两个卷积(Conv2D)操作3620、3630。第二分支可以包括例如跳过连接3640。然后,可以例如借助于加法(Add)操作3650将这两个分支合并在一起。第一分支中的每个卷积(Conv2D)操作3620、3630需要三个准备好的行来访问输入数据。此外,还需要额外的一行作为管线余量。add操作3650不具有任何内核,且因此仅需要单个准备好的行来进行操作。然而,基于卷积(Conv2D)消费者3620、3630,生产者数据不能过时。数据需要留在缓冲区中,直到Add合并节点3650准备好使用它。
现在参见图37,示出了利用部分特征图缓冲区的示例性分支数据流。如图所示,在分支开始处的生产者3710为两个分支的消费者(借助于旁路操作)产生两组数据以促进数据同步。较快分支被配置为以缓冲3720更多数据以与较慢分支对齐,其可称为分支延迟数据。应当理解,不是所有分支都需要延迟缓冲区。例如,如图38所示,平衡的分支不需要额外的数据存储。如图所示,两个分支中的每一个可以配置有典型大小的部分缓冲区,就好像每个分支是唯一的数据路径。
虽然如上所述,共享缓冲区可以在逐行的基础上同步,但是共享缓冲区也可以在其他粒度上同步。例如,第一存储器区域中的共享缓冲区也可以以像素为基础同步,如图39A和39B中所示。如所示出的,生产者可执行卷积(Conv2D)操作,其由两个分支消耗。第一分支可以由串联的三个卷积(Conv2D)操作3910-3930构成,其中的两个可以具有1x1的内核大小,而另一个具有3x3的内核大小。第二分支3940可以是跳过连接。这两个分支可以在加法(ADD)操作3950处合并在一起。1x1内核大小卷积(Conv2D)操作3910、3930可以利用两个像素缓冲区大小,而3x3卷积(Conv2D)操作可以利用至少三行。应注意,像素可基于输出通道的数目而消耗多个缓冲区条目。
粗粒度同步可以提供更少的开销和管线停顿。相反,细粒度缓冲区条目可以以同步步骤为代价来减小所需的缓冲区大小。在无内核操作及1X1内核的情况下,缓冲区减少可为明显的。然而,在较大内核的情况下,细粒度配置的增益趋向于更小。在跨越、融合池化、多行生产者等配置中,增益可几乎减小。一般而言,同步的粒度可以是一种设计选择,而不是架构的属性。
现在参见图40,示出了根据本技术的各方面的根据神经网络模型配置存储器处理单元(MPU)的方法。可以通过MPU神经编译器实现配置存储器处理单元的方法。该方法可包括在4010处将任何数量的框架的源神经网络模型转换成选定框架的神经网络模型表示。在一个实现方式中,应用编程接口(API)可被配置成将源神经网络模型转换成预定神经网络模型。API可以将为特定框架建立的源模型转换成图形表示,这允许透明地支持MPU配置过程的其余部分的多个API。利用API(诸如但不限于TensorFlow、Keras和PyTorch)的工具可以编译抽象的神经网络模型。图形表示环境可包括用于编译、模拟、评估的一组工具。这些工具可用于提供平台来实验和验证架构想法和测试神经网络模型的操作支持。
在4020处,可以从神经网络模型生成初始图。在一个实现方式中,API还可被配置成从神经网络模型生成初始网络图。在4030处,可从初始网络图生成最终网络图。在一个实现方式中,图形处理模块可被配置为从初始网络图生成最终网络图。图形处理模块可被配置成将神经网络模型的一组或更多组层融合在一起,将一个或更多个其他层分开等。可以采用融合和拆分来改进目标MPU的性能。API还可被配置成执行数据流程序计算。最终映射信息可以用MPU图数据结构来表示。
在4040处,可以从最终网络图生成映射图。在一个实现方式中,映射模块可被配置为从最终网络图生成映射图。映射模块可以被配置成基于目标MPU的目标映射信息将经图形处理的神经网络模型转换成目标映射图。
在4050处,可以从映射图生成一个或更多个配置文件。该一个或更多个配置文件可以包括可以配置目标MPU的计算核心和数据流属性的数据流程序(DFP)可执行文件。DFP可执行文件可以在真实芯片或芯片模型(例如C或SystemC模型)上运行。所配置的目标MPU可以将输入数据流式传输,对其进行处理,并且管道传回以实现给定的神经网络模型。一旦被配置,只有在目标MPU上部署不同的神经网络模型时才需要新的数据流程序。在一个实现方式中,汇编器可被配置为将目标映射图转换成数据流程序可执行文件。
配置环境可以采用设计文件(例如.toml)和神经网络文件(例如.h5)作为输入并输出数据流程序。配置环境可以存储为配置的层次结构并且包括软件域,该软件域用于解释神经网络模型,将它们映射至MPU架构,以及生成可以由MPU模型或芯片解释的输出。配置环境还可以包括硬件域以创建捕获数据移动、延时、带宽、吞吐量、效率等的硬件的架构模型。编译器可以包括图形处理、映射和汇编。配置环境的图形处理解释神经网络文件并将信息转换为内部网络图文件。在一个实现方式中,keras、tensorflow等API可将输入文件的每一层解析为图形节点。然后,可以处理初始网络图以合并、移除或插入节点以便在目标MPU上运行。
配置环境的映射部分处理设计文件并分配资源以生成硬件MPU图。配置环境的映射可将最终网络图预处理成未处理的映射图。映射部分还可以检查映射所需的资源,例如权重存储要求等。映射部分可以在映射图上迭代并且向节点分配资源。配置环境的映射部分还可以通过向昂贵的节点分配更多资源来优化资源映射,通过插入旁路节点、跨多个MPU拆分边界节点等来操纵映射图。配置环境的映射部分然后可以通过向核心分配特定负载来生成详细的MPU映射。
配置环境的汇编器将硬件MPU图转换成可以在MPU模型或真实芯片上运行的数据流程序。配置环境可以包括用于加载测试情况、执行编译、运行硬件模拟以及检查正确性的验证套件。环境还可以包括用于测试性能和模型精度的评估程序。评估程序可以加载模型(如ResNet-50、MobileNet或YOLO),进行模型编译并且在MPU SystemC模型上运行模型的编译。可将推断结果与原始浮点模型结果进行比较以评估准确性。环境还可以包括测试用例界面,该测试用例界面可以用于添加、移除、查看等等用于验证的测试用例。环境还可以包括用于生成用于运行硬件模拟器和编译器的设计文件的设计生成器。环境还可包括可用于解释来自硬件模拟器的性能输出数据的管线查看器。管线查看器可提供每个计算核心何时完成计算帧的可视化,并且还可以报告诸如每秒帧的参数。
出于说明和描述的目的,已经呈现了本技术的特定实施例的前述描述。它们不旨在是详尽的或将本技术限制于所公开的精确形式,并且显然根据上述教导,许多修改和变化是可能的。选择和描述实施例是为了最好地解释本技术的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用本技术和具有适合于预期的特定用途的各种修改的各种实施例。本发明的范围由所附权利要求及其等同物限定。
Claims (26)
1.一种存储器处理单元配置方法,包括:
基于一个或更多个神经网络模型配置多个处理区域中的一组或更多组核心的操作,其中所述多个处理区域在第一存储器的多个区域之间交错,其中所述多个处理区域中的每个处理区域包括多个计算核心,其中所述多个处理区域中的每个相应处理区域的所述多个计算核心中的每个计算核心被耦合在第一多个存储器区域中的相邻存储器区域之间,并且其中第二存储器被耦合到所述多个处理区域;以及
配置数据流,所述数据流包括:
核心至核心数据流,其在所述多个处理区域中的相应处理区域中的相邻计算核心之间;
存储器至核心数据流,其从所述第一存储器的所述多个区域中的相应区域到所述多个处理区域中的一个相邻处理区域内的一个或更多个核心;
核心至存储器数据流,其从所述多个处理区域中的一些处理区域内的一个或更多个核心到所述第一存储器的所述多个区域中的一个相邻区域;以及
存储器至核心数据流,其从第二存储器区域到所述多个处理区域中的对应处理区域的一个或更多个核心。
2.根据权利要求1所述的MPU配置方法,还包括:
将所述神经网络模型的一个或更多个层映射到所述多个处理区域中的一个或更多个相应处理区域中的一个或更多个对应核心集群;
基于所述神经网络模型的对应的一个或更多个层来配置所述一个或更多个核心集群的操作;以及
基于所述神经网络模型的对应的一个或更多个层来配置所述一个或更多个核心集群之间的所述数据流。
3.根据权利要求1所述的MPU配置方法,还包括:
将所述神经网络模型的一个或更多个层的部分映射到所述多个处理区域中的一个或更多个相应处理区域中的一个或更多个对应核心集群;
基于所述神经网络模型的所述一个或更多个层的对应部分来配置所述一个或更多个核心集群的操作;以及
基于所述神经网络模型的所述一个或更多个层的对应部分来配置所述一个或更多个核心集群之间的所述数据流。
4.根据权利要求1所述的MPU配置方法,以及:
将所述神经网络模型的一组或更多组融合层映射到所述多个处理区域中的一个或更多个相应处理区域中的一个或更多个对应核心集群;
基于所述神经网络模型的对应的一组或更多组融合层来配置所述一个或更多个核心集群的操作;以及
基于所述神经网络模型的对应的一组或更多组融合层来配置所述一个或更多个核心集群之间的所述数据流。
5.根据权利要求1所述的MPU配置方法,其中所述一组核心包括多个近存储器(M)核心,并且其中所述近存储器(M)核心的操作包括从由密集函数、二维卷积、深度方向卷积、可分离卷积组成的组中选择的一个或更多个操作。
6.根据权利要求5所述的MPU配置方法,其中所述近存储器(M)核心的操作还包括选自由最大池化、平均池化、ReLU激活、ReLu-x激活、上采样和零填充组成的组中的一个或更多个融合操作。
7.根据权利要求1所述的MPU配置方法,其中所述一组核心包括一个或更多个算术(A)核心,并且其中算术(A)核心的操作包括选自由加法、乘法以及旁路组成的组中的一个或更多个操作。
8.根据权利要求1所述的MPU配置方法,其中算术(A)核心的操作还包括选自由ReLU激活、ReLu-x激活和泄漏ReLu-x激活组成的组中的一个或更多个融合操作。
9.根据权利要求1所述的MPU配置方法,还包括:
基于所述一个或更多个神经网络模型,将所述第一存储器的多个存储器区域配置成包括全缓冲区模式、部分缓冲区模式、分支缓冲区模式和逐像素缓冲区模式的一个或更多个模式。
10.根据权利要求1所述的MPU配置方法,还包括:
用所述一个或更多个神经网络模型的权重来配置第二区域。
11.根据权利要求1所述的MPU配置方法,还包括:
将所述一个或更多个神经网络模型的权重量化为定点格式;以及
用定点格式权重配置第二区域。
12.根据权利要求11所述的MPU配置方法,其中利用平衡范围或2次幂范围对所述权重进行量化。
13.根据权利要求11所述的MPU配置方法,其中按神经网络层、按通道或利用偏差对所述权重进行量化。
14.根据权利要求11所述的MPU配置方法,其中将所述一个或更多个网络模型的所述权重转换成一维向量格式以存储在所述第二存储器中。
15.根据权利要求11所述的MPU配置方法,其中激活数据被量化为定点、浮点或脑浮点-16格式。
16.根据权利要求15所述的MPU配置方法,其中所述激活数据被转换成一维向量格式以存储在所述第一存储器中。
17.一种存储器处理单元(MPU)配置方法,包括:
将一个或更多个神经网络模型的操作映射到多个处理区域中的核心组,其中所述多个处理区域在第一存储器的多个区域之间交错,其中所述多个处理区域中的每个处理区域包括多个计算核心,其中所述多个处理区域中的每个相应处理区域的所述多个计算核心中的每个计算核心被耦合在所述第一存储器的所述多个区域中的相邻区域之间,并且其中第二存储器被耦合到所述多个处理区域;
将所述一个或更多个神经网络模型的数据流映射到所述多个处理区域中的所述核心组;以及
基于所述一个或更多个神经网络模型的操作到所述多个处理区域中的核心组的映射以及所述一个或更多个神经网络模型的数据流到所述多个处理区域中的核心组的映射来生成配置信息。
18.根据权利要求17所述的MPU配置方法,还包括:
使用所述配置信息对所述存储器处理单元进行编程。
19.根据权利要求18所述的MPU配置方法,还包括:
将权重加载到第二多个存储器区域中。
20.根据权利要求17所述的MPU配置方法,还包括:
基于所述一个或更多个神经网络模型的所述数据流,将所述多个处理区域的核心映射到所述第二存储器的块;以及
进一步基于所述多个处理区域的所述核心到所述第二存储器的块的映射生成所述配置信息。
21.根据权利要求20所述的MPU配置方法,还包括:
基于所述一个或更多个神经网络模型的所述数据流,将所述多个处理区域的所述核心的物理通道映射到所述第二存储器的所述块的槽;以及
进一步基于所述多个处理区域的所述核心的所述物理通道到所述第二存储器的所述块的所述槽的映射来生成所述配置信息。
22.一种存储器处理单元(MPU)配置方法,包括:
由应用编程接口从神经网络模型生成初始网络图;
由图形处理模块从所述初始网络图生成最终网络图;
由映射模块从所述最终网络图生成映射图;以及
由汇编器从所述映射图生成一个或更多个配置文件。
23.根据权利要求22所述的MPU配置方法,其中所述应用编程接口被进一步配置为将源神经网络模型转换成预定神经网络模型表示。
24.根据权利要求23所述的MPU配置方法,其中所述图形处理模块被配置为融合所述神经网络模型的一组或更多组层,拆分所述神经网络模型的一个或更多个其他层,以及执行数据流程序计算。
25.根据权利要求23所述的MPU配置方法,其中所述映射模块被进一步配置为基于目标MPU的目标映射信息将经图形处理的神经网络模型转换成目标映射图。
26.根据权利要求25所述的MPU配置方法,其中所述汇编器被配置为将所述目标映射图转换成数据流程序可执行文件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063072904P | 2020-08-31 | 2020-08-31 | |
US63/072,904 | 2020-08-31 | ||
PCT/US2021/048550 WO2022047423A1 (en) | 2020-08-31 | 2021-08-31 | Memory processing unit architecture mapping techniques |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115668125A true CN115668125A (zh) | 2023-01-31 |
Family
ID=80354150
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180027918.3A Pending CN115668121A (zh) | 2020-08-31 | 2021-08-31 | 存储器处理单元架构和配置 |
CN202180037893.5A Pending CN115917515A (zh) | 2020-08-31 | 2021-08-31 | 存储器处理单元核心架构 |
CN202180037882.7A Pending CN115668125A (zh) | 2020-08-31 | 2021-08-31 | 存储器处理单元架构映射技术 |
CN202180042480.6A Pending CN115803811A (zh) | 2020-08-31 | 2021-08-31 | 用于存储器处理单元架构的层间通信技术 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180027918.3A Pending CN115668121A (zh) | 2020-08-31 | 2021-08-31 | 存储器处理单元架构和配置 |
CN202180037893.5A Pending CN115917515A (zh) | 2020-08-31 | 2021-08-31 | 存储器处理单元核心架构 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180042480.6A Pending CN115803811A (zh) | 2020-08-31 | 2021-08-31 | 用于存储器处理单元架构的层间通信技术 |
Country Status (3)
Country | Link |
---|---|
US (4) | US20230061711A1 (zh) |
CN (4) | CN115668121A (zh) |
WO (4) | WO2022047423A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115526302B (zh) * | 2022-08-19 | 2023-07-25 | 北京应用物理与计算数学研究所 | 基于异构多核处理器的多层神经网络计算方法及装置 |
US12007937B1 (en) * | 2023-11-29 | 2024-06-11 | Recogni Inc. | Multi-mode architecture for unifying matrix multiplication, 1×1 convolution and 3×3 convolution |
US12045309B1 (en) | 2023-11-29 | 2024-07-23 | Recogni Inc. | Systems and methods for performing matrix multiplication with a plurality of processing elements |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6836838B1 (en) * | 1998-06-29 | 2004-12-28 | Cisco Technology, Inc. | Architecture for a processor complex of an arrayed pipelined processing engine |
JP4317296B2 (ja) * | 1999-09-17 | 2009-08-19 | 株式会社ターボデータラボラトリー | 並列コンピュータのアーキテクチャおよびこのアーキテクチャを利用した情報処理ユニット |
US7174415B2 (en) * | 2001-06-11 | 2007-02-06 | Zoran Corporation | Specialized memory device |
US7743382B2 (en) * | 2003-11-03 | 2010-06-22 | Ramal Acquisition Corp. | System for deadlock condition detection and correction by allowing a queue limit of a number of data tokens on the queue to increase |
US7136987B2 (en) * | 2004-03-30 | 2006-11-14 | Intel Corporation | Memory configuration apparatus, systems, and methods |
US7251185B2 (en) * | 2005-02-24 | 2007-07-31 | International Business Machines Corporation | Methods and apparatus for using memory |
US7941637B2 (en) * | 2008-04-15 | 2011-05-10 | Freescale Semiconductor, Inc. | Groups of serially coupled processor cores propagating memory write packet while maintaining coherency within each group towards a switch coupled to memory partitions |
KR101867336B1 (ko) * | 2011-07-11 | 2018-06-15 | 삼성전자주식회사 | 다중 프로세서를 지원하는 인터럽트 발생을 위한 장치 및 방법 |
US9424191B2 (en) * | 2012-06-29 | 2016-08-23 | Intel Corporation | Scalable coherence for multi-core processors |
US9753959B2 (en) * | 2013-10-16 | 2017-09-05 | University Of Tennessee Research Foundation | Method and apparatus for constructing a neuroscience-inspired artificial neural network with visualization of neural pathways |
US9978014B2 (en) * | 2013-12-18 | 2018-05-22 | Intel Corporation | Reconfigurable processing unit |
US10289604B2 (en) * | 2014-08-07 | 2019-05-14 | Wisconsin Alumni Research Foundation | Memory processing core architecture |
US10083722B2 (en) * | 2016-06-08 | 2018-09-25 | Samsung Electronics Co., Ltd. | Memory device for performing internal process and operating method thereof |
US10430706B2 (en) * | 2016-12-01 | 2019-10-01 | Via Alliance Semiconductor Co., Ltd. | Processor with memory array operable as either last level cache slice or neural network unit memory |
US10943652B2 (en) * | 2018-05-22 | 2021-03-09 | The Regents Of The University Of Michigan | Memory processing unit |
US11138497B2 (en) * | 2018-07-17 | 2021-10-05 | Macronix International Co., Ltd | In-memory computing devices for neural networks |
US10802883B2 (en) * | 2018-08-21 | 2020-10-13 | Intel Corporation | Method, system, and device for near-memory processing with cores of a plurality of sizes |
US10990524B2 (en) * | 2018-10-11 | 2021-04-27 | Powerchip Semiconductor Manufacturing Corporation | Memory with processing in memory architecture and operating method thereof |
EP3966698A4 (en) * | 2019-05-07 | 2023-01-18 | Memryx Inc. | ARCHITECTURE OF A MEMORY PROCESSING UNIT |
-
2021
- 2021-08-31 CN CN202180027918.3A patent/CN115668121A/zh active Pending
- 2021-08-31 WO PCT/US2021/048550 patent/WO2022047423A1/en active Application Filing
- 2021-08-31 CN CN202180037893.5A patent/CN115917515A/zh active Pending
- 2021-08-31 WO PCT/US2021/048466 patent/WO2022047390A1/en active Application Filing
- 2021-08-31 WO PCT/US2021/048548 patent/WO2022047422A1/en active Application Filing
- 2021-08-31 CN CN202180037882.7A patent/CN115668125A/zh active Pending
- 2021-08-31 CN CN202180042480.6A patent/CN115803811A/zh active Pending
- 2021-08-31 WO PCT/US2021/048498 patent/WO2022047403A1/en active Application Filing
-
2022
- 2022-09-12 US US17/943,143 patent/US20230061711A1/en active Pending
- 2022-09-12 US US17/943,100 patent/US20230075069A1/en active Pending
- 2022-09-12 US US17/943,119 patent/US20230076473A1/en active Pending
- 2022-09-12 US US17/943,116 patent/US20230073012A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230061711A1 (en) | 2023-03-02 |
CN115803811A (zh) | 2023-03-14 |
CN115668121A (zh) | 2023-01-31 |
US20230073012A1 (en) | 2023-03-09 |
US20230075069A1 (en) | 2023-03-09 |
WO2022047423A1 (en) | 2022-03-03 |
WO2022047403A1 (en) | 2022-03-03 |
US20230076473A1 (en) | 2023-03-09 |
WO2022047390A1 (en) | 2022-03-03 |
CN115917515A (zh) | 2023-04-04 |
WO2022047422A1 (en) | 2022-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11714780B2 (en) | Compiler flow logic for reconfigurable architectures | |
CN113139648B (zh) | 执行神经网络模型的pim架构的数据布局优化 | |
US11500959B2 (en) | Multiple output fusion for operations performed in a multi-dimensional array of processing units | |
US11709664B2 (en) | Anti-congestion flow control for reconfigurable processors | |
CN115668125A (zh) | 存储器处理单元架构映射技术 | |
US20070219771A1 (en) | Branching and Behavioral Partitioning for a VLIW Processor | |
US11782729B2 (en) | Runtime patching of configuration files | |
US11995529B2 (en) | Lossless tiling in convolution networks—tiling configuration for a sequence of sections of a graph | |
Amiri et al. | FPGA-based soft-core processors for image processing applications | |
US11645057B2 (en) | Systems and methods for memory layout determination and conflict resolution | |
US12079156B2 (en) | Lossless tiling in convolution networks—materialization of tensors | |
WO2022060929A1 (en) | Compile time logic for detecting streaming compatible and broadcast compatible data access patterns | |
CN113077042A (zh) | 卷积神经网络的数据重用与高效处理方法 | |
WO2023129546A1 (en) | Compiler-based input synchronization for processor with variant stage latencies | |
CN112906877A (zh) | 用于执行神经网络模型的存储器架构中的数据布局有意识处理 | |
US20230325346A1 (en) | Buffer Splitting | |
US20230401480A1 (en) | Hardware acceleration of machine learning designs | |
Nazar Shahsavani et al. | Efficient Compilation and Mapping of Fixed Function Combinational Logic onto Digital Signal Processors Targeting Neural Network Inference and Utilizing High-level Synthesis |
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 |