CN115803811A - 用于存储器处理单元架构的层间通信技术 - Google Patents
用于存储器处理单元架构的层间通信技术 Download PDFInfo
- Publication number
- CN115803811A CN115803811A CN202180042480.6A CN202180042480A CN115803811A CN 115803811 A CN115803811 A CN 115803811A CN 202180042480 A CN202180042480 A CN 202180042480A CN 115803811 A CN115803811 A CN 115803811A
- Authority
- CN
- China
- Prior art keywords
- memory
- regions
- ilc
- cores
- compute
- 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)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- Neurology (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Processing (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Multi Processors (AREA)
- Logic Circuits (AREA)
Abstract
存储器处理单元(MPU)可以包括第一存储器、第二存储器、多个处理区域以及控制逻辑。第一存储器可以包括多个区域。多个处理区域可在第一存储器的所述多个区域之间交错。处理区域可以包括多个计算核心。第二存储器可被耦合至多个处理区域。控制逻辑可配置处理区域中的一个或更多个处理区域的计算核心与第一存储器的对应相邻区域之间的数据流。控制逻辑还可配置第二存储器与处理区域中的一个或更多个处理区域的计算核心之间的数据流。控制逻辑还可配置处理区域中的一个或更多个相应处理区域内的计算核心之间的数据流。
Description
相关申请的交叉引用
本申请要求2020年8月31日提交的美国临时专利申请No.63/072,904的权益,其全部内容合并在本文中。
背景技术
计算系统已经对现代社会的进步作出了重大贡献,并且被用于许多应用中以实现有利的结果。诸如人工智能、机器学习、大数据分析等的应用对大量数据执行计算。在常规计算系统中,将数据从存储器传送到一个或更多个处理单元,处理单元对数据执行计算,然后将结果传送回存储器。将大量数据从存储器传送到处理单元并传送回存储器需要时间和消耗功率。因此,存在对减少处理延迟、数据延迟和/或功率消耗的改进的计算系统的持续需求。
发明内容
通过参考以下描述和附图可以最好地理解本技术,所述描述和附图用于示出针对用于存储器处理架构的层间通信技术的本技术的实施例。
在一个实施例中,存储器处理单元(MPU)可以包括第一存储器、多个处理区域以及一个或更多个层间通信(ILC)模块。第一存储器可以包括多个区域。所述多个处理区域可在第一存储器的所述多个区域之间交错。所述处理区域可以包括多个计算核心,其中所述多个处理区域中的每个相应处理区域的所述多个计算核心中的每个计算核心被耦合在第一多个存储器区域中的相邻存储器区域之间。所述一个或更多个ILC模块可通信地耦合至所述多个处理区域中的每一个处理区域中的所述多个计算核心,其中所述一个或更多个ILC模块能配置成控制计算核心之间的通过所述第一存储器的所述多个区域中的对应相邻区域的通信。
在另一个实施例中,存储器处理单元(MPU)层间通信方法可以包括从相应的计算核心接收同步命令。同步命令与计算核心对第一存储器的多个区域中的相应区域的缓冲区的访问请求(例如,读/写)有关,其中缓冲区是生产者计算核心和消费者计算核心之间的共享存储器区域。可以跟踪对第一存储器的多个区域中的相应区域的相应缓冲区的访问。可以基于与第一存储器的多个区域中的相应区域的缓冲区相关联的相应读取和写入访问跟踪来控制相应计算核心对第一存储器的多个区域中的相应区域的缓冲区的访问。
提供本概述以便以简化形式介绍将在以下详细说明中进一步描述的一些概念的选择。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
在附图中通过举例而非限制的方式展示了本技术的多个实施例,并且其中,相同的附图标记指代类似的元件,并且其中:
图1示出了根据本技术的各方面的存储器处理单元(MPU)。
图2示出了根据本技术的各方面的存储器处理方法。
图3示出了根据本技术的各方面的存储器处理单元。
图4示出了根据本技术的各方面的层间通信方法。
图5示出了根据本技术的各方面的相应的共享缓冲区和对应的相应ILC条目索引。
图6示出了根据本技术的各方面的对相应ILC条目索引中的共享相应缓冲区的访问的跟踪。
图7示出了根据本技术的各方面的存储器处理单元中的数据流的配置。
图8A-8C示出了根据本技术的各方面的多个输出特征图像素的示例性计算。
图9示出了根据本技术的各方面的用于神经网络的示例性映射单元。
图10示出了根据本技术的各方面的用于映射单元的示例性计算核心。
图11示出了根据本技术的各方面的示例性存储器核心槽。
图12示出了根据本技术的各方面的存储器的示例性虚拟通道。
图13-16示出了根据本技术的各方面的全通道计算核心配置。
图17-20示出了根据本技术的各方面的部分和计算机核心配置。
图21和22示出了根据本技术的各方面的部分和计算机核心配置。
图23-26示出了根据本技术的各方面的第一存储器区域多态计算机核心配置。
图27-30示出了根据本技术的各方面的第二存储器区域多态计算核心配置。
图31-34示出了根据本技术的各方面的复合计算机核心配置。
图35示出了根据本技术的各方面的复合计算机核心配置。
图36示出了根据本技术的各方面的存储器处理单元(MPU)的第一存储器区域共享特征。
图37A和37B示出了根据本发明的各方面的消费者和生产者的示例性缓冲区利用。
图38A-38D示出了根据本发明的各方面的用于3x3内核大小的示例性共享部分缓冲区。
图39A和39B示出了根据本发明的各方面的具有2x2跨距的3x3内核大小的示例性共享部分缓冲区。
图40示出了根据本技术的各方面的利用完整特征图缓冲区的示例分支数据流。
图41示出了根据本技术的各方面的利用部分特征图缓冲区的示例性分支数据流。
图42示出了根据本技术的各方面的利用部分特征图缓冲区的示例性分支数据流。
图43A和43B示出了根据本技术的各方面的共享缓冲区中的像素同步。
具体实施方式
现在将详细参考本技术的实施例,其示例在附图中示出。尽管将结合这些实施例描述本技术,然而,应当理解的是,其并不旨在将本技术局限于这些实施例。相反,本发明旨在覆盖可被包括在由所附权利要求限定的本发明的范围内的替代、修改和等同物。此外,在本技术的以下详细描述中,阐述了许多具体细节以便提供对本技术的透彻理解。然而,应当理解,本技术可以在没有这些具体细节的情况下实施。在其他实例中,未详细描述众所周知的方法、过程、组件和电路,以免不必要地模糊本技术的各方面。
以下本技术的一些实施例是按照例程、模块、逻辑块以及对一个或更多个电子设备内的数据的运算的其他符号表示来呈现的。描述和表示是本领域的技术人员为了将其工作的实质最有效地传达给本领域的其他技术人员所使用的手段。例程、模块、逻辑块和/或类似物在本文中并且通常被设想为导致期望结果的过程或指令的自洽序列。这些过程是包括对物理量的物理操纵的那些过程。通常,尽管不是必需的,但是这些物理操纵采取能够在电子设备中存储、传送、比较和以其他方式操纵的电或磁信号的形式。为了方便起见,并且参考共同使用,参照本技术的实施例,这些信号被称为数据、位、值、元素、符号、字符、术语、数字、字符串等。
然而,应当牢记,这些术语应被解释为参考物理操纵和数量并且仅仅是方便的标签并且鉴于本领域中常用的术语被进一步解释。除非如从以下讨论中显而易见的另外具体说明,否则应当理解的是,通过本技术的讨论,利用诸如“接收”等术语的讨论是指诸如操纵和变换数据的电子计算设备的电子设备的动作和过程。该数据被表示为电子设备的逻辑电路、寄存器、存储器等内的物理(例如,电子)量,并且被转换成类似地被表示为电子设备内的物理量的其他数据。
在本申请中,析取法的使用旨在包括合取物。定冠词或不定冠词的使用不旨在指示基数。具体地,提及“该(the)”物体或“一个(a)”物体旨在还表示可能的多个此类物体中的一个。术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”、“包括(including)”等的使用指定所述要素的存在,但不排除一个或更多个其他要素和/或其组的存在或添加。还应理解的是,虽然在本文中可使用术语第一、第二等来描述各种元件,但是这种元件不应受这些术语限制。这些术语在本文中用于区分一个元件与另一个元件。例如,在不背离本实施例的范围的情况下,第一元件可以被称为第二元件,并且类似地,第二元件可以被称为第一元件。还应理解的是,当元件被称为“耦合”至另一元件时,该元件可直接或间接地连接至另一元件,或者可存在中间元件。相反,当元件被称为“直接连接”至另一元件时,则不存在中间元件。还应理解的是,术语“和/或”包括一个或更多个相关元件的任何和所有组合。还应理解的是,本文中使用的措辞和术语用于描述的目的,并且不应被视为限制性的。
参考图1,示出了根据本技术的各方面的存储器处理单元(MPU)。存储器处理单元100可包括第一存储器(其包括多个区域102-110)、多个处理区域112-116和第二存储器118。第二存储器118可被耦合至多个处理区域112-116。第二存储器118可以可选地被逻辑地或物理地组织成多个区域。第二存储器118的多个区域可以与多个处理区域112-116中的对应区域相关联。此外,第二存储器118的多个区域可以包括在一个或更多个宏中组织的多个块。第一存储器102-110可以是易失性存储器,诸如静态随机存取存储器(SRAM)等。第二存储器可以是非易失性存储器或易失性存储器,诸如电阻性随机存取存储器(RRAM)、磁性随机存取存储器(MRAM)、闪存(FLASH)、SRAM等。
多个处理区域112-116可以交错在第一存储器102-110的多个区域之间。处理区域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-148,其中每一ILC模块可被耦合至相应的处理区域112-116。每个ILC模块还可耦合至第一存储器102-110的与对应相应处理区域112-116相邻的相应区域。层间通信单元140可以被配置为使产生给定数据的一个或更多个计算核心与消耗给定数据的一个或更多个其他计算核心之间的数据移动同步。
存储器处理单元100可还包括一个或更多个输入/输出级142、144。一个或更多个输入/输出级142、144可以被耦合至第一存储器102-110的一个或更多个相应区域。一个或更多个输入/输出级142、144可包括一个或更多个输入端口、一个或更多个输出端口和/或一个或更多个输入/输出端口。一个或更多个输入/输出级142、144可被配置成将数据流式传输进或流式传输出存储器处理单元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访问的数据,其中一个或更多个其他核心122可配置地与给定计算核心120串联耦合。在又一示例中,给定计算核心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,示出了根据本技术的各方面的一种存储器处理方法。将参考图1的存储器处理单元100来解释该方法。方法可以包括在210处配置多个处理区域112-116中的一个或更多个处理区域的计算核心与第一存储器的多个区域中的对应相邻区域之间的数据流。在220处,可以配置第二存储器118与多个处理区域112-116中的一个或更多个处理区域的计算核心120-132之间的数据流。在230处,可以配置多个处理区域112-116中的一个或更多个处理区域中的相应处理区域内的计算核心120-132之间的数据流。尽管210-240的过程被示为串行执行,但应当理解,这些过程可以并行执行或以并行和顺序操作的不同组合来执行。
在240处,多个处理区域112-116中的一个或更多个处理区域的一组或更多组计算核心120-132可以被配置成执行神经网络模型的相应计算功能。在250处,神经网络模型的权重可被加载到第二存储器118中。在260处,神经网络模型的激活数据可被加载到第一存储器102-110的多个区域中的一个或更多个区域中。
在270处,产生给定数据的一个或更多个计算核心与消耗该给定数据的一个或更多个其他计算核心之间的数据移动可以基于神经网络模型同步。同步过程可在280处被重复以处理神经网络模型的激活数据。在290处,同步过程可包括在多个周期同步神经网络模型的激活数据的加载。
再次参见图1,层间通信单元140可以被配置成使产生给定数据的一个或更多个计算核心与消耗该给定数据的一个或更多个其他计算核心之间的数据移动同步。存储器处理单元100内的数据通信可包括两个模块之间的直接和间接连接。直接同步可以通过与生产者/消费者握手的直接有线连接来实现。直接同步可以通过计算核心之间的多态连接来实现。
层间通信单元140还可以使两个模块之间的间接连接同步。间接同步可以通过使用两个模块之间的缓冲区来实现。层间通信单元140的间接同步可以被实现为计算核心与易失性存储器(例如,SRAM)之间的通信。在这种实现方式中,生产者计算核心可写入对应的第一存储器区域104中的共享缓冲区,并且消费者计算核心可从共享缓冲区读取。数据可被同步以避免在缓冲区中可能发生的数据危险。示例性数据危险可包括生产者核心在消费者核心可从缓冲区读取数据之前将数据覆盖到该缓冲区,或消费者核心在生产者核心可将数据写入到缓冲区之前从该缓冲区读取数据。在一种实现方式中,间接同步可以通过计算核心向缓冲区发送适当的信号以提供可见的同步来实现。在可见的间接同步中,计算核心之间的缓冲区可充当用于写入和读取数据的简单存储器。生产者核心可被配置为确保消费者核心准备好数据,且消费者核心可被配置为确保存储器中有足够的数据以使得其可执行计算操作。
在另一个实现方式中,可以由ILC单元来实现间接同步以便提供不可见的同步。在不可见的间接同步中,ILC单元负责保持生产者计算核心和消费者计算核心处于同步。
现在参见图3,示出了根据本技术的各方面的存储器处理单元(MPU)。存储器处理单元100可以包括:第一存储器,其包括多个区域305-310;多个计算核心315-355,其被组织在多个处理区域中;第二存储器(未示出);以及层间通信(ILC)单元360-365。可以如以上参考图1和图2所描述地布置存储器处理单元MPU。在一种实现方式中,层间通信(ILC)单元360-365可以包括多个层间通信(ILC)模块,其中每个层间通信(ILC)模块360、365控制在产生给定数据的一个或更多个计算核心与消耗该给定数据的一个或更多个其他计算核心之间的、通过第一存储器305、310的对应区域的数据移动。
在一个实现方式中,可以利用计算核心与第一存储器之间的直接同步来配置多个处理区域中的一个或更多个处理区域的计算核心315-325与第一存储器305的多个区域中的对应相邻区域之间的数据流。类似地,可以利用计算核心315-355与第二存储器之间的直接同步来配置第二存储器(未示出)与多个处理区域中的一个或更多个处理区域的计算核心315-355之间的数据流。多个处理区域中的一个或更多个处理区域中的相应处理区域内的计算核心315-325之间的数据流也可以利用相应处理区域内的相邻计算核心之间的直接同步来配置。
层间通信(ILC)单元360-365可以利用间接不可见的同步来使产生给定数据的一个或更多个计算核心315-325与消耗该给定数据的一个或更多个其他计算核心330-340之间的数据移动同步。将参考图4至图6进一步描述层间通信(ILC)单元360-365的数据移动同步。现在参考图4,示出了根据本技术的各方面的层间通信方法。在410处,层间通信(ILC)单元360-365可以被配置为从多个处理区域的相应计算核心315-355接收与第一存储器305的多个区域中的相应区域的相应缓冲区370相关的同步命令。例如,层间通信(ILC)单元360-365可以从多个计算核心315-355中的第一计算核心320接收与向第一存储器305的第一部分中的共享缓冲区370写入数据有关的同步命令。在一个实现方式中,生产者计算核心可以在其完成将整个特征存储器行写入缓冲区时发送增量同步命令。层间通信(ILC)单元360-365还可以从多个计算核心315-355中的第二计算核心330接收与从第一存储器305的第一部分中的共享缓冲区370读取数据有关的访问命令。在一个实现方式中,消费者计算核心可以在其完成从缓冲区读取整个特征存储器行时发送减量同步命令。
在420处,层间通信(ILC)单元360-365可以跟踪对第一存储器的多个区域中的相应区域的相应缓冲区的读取访问和写入访问。在一个实现方式中,在粗粒度级(诸如整个特征图行级)上进行跟踪。在一种实现方式中,层间通信(ILC)单元360-365可以用指向ILC条目的对应的相应索引来跟踪对相应缓冲区的访问。层间通信(ILC)单元360-365不需要存储缓冲区区域边界或关于缓冲区的其他信息。相反,计算核心315-355可以负责访问对应于相应共享缓冲区的正确的ILC条目索引。在一个实现方式中,可以将在同步命令中接收的给定计算核心320的标识符映射到与第一存储器305的给定部分的给定区域(例如,缓冲区)相关联的计数。
现在参见图5,示出了根据本技术的各方面的相应共享缓冲区510-530和对应的相应ILC条目索引540-560。每个ILC条目索引可包含一个或更多个生产者计算核心已产生(例如,写入)到对应的相应共享缓冲区以及一个或更多个消费者计算核心尚未从对应的相应共享缓冲区消耗(例如,读取)的同步单元的数目的计数。在一种实现方式中,ILC条目索引可以包括当前单元计数(ic)、最大计数(ix)、最小计数(iy)和初始计数(io)。
在430处,层间通信(ILC)单元360-365可以基于与缓冲区相关联的相应读取和写入访问跟踪来控制相应计算核心315-355对第一存储器350、310的多个区域中的相应区域的缓冲区的访问。在一种实现方式中,层间通信(ILC)单元360-365可以基于对应的ILC条目索引来允许或阻止从一个或更多个相应的生产者计算核心320和一个或更多个相应的消费者计算核心340对对应的相应共享缓冲区370的请求。例如,层间通信(ILC)单元360-365可允许对相应共享缓冲区370的写入访问,只要对应ILC条目索引中的当前单元计数(ic)小于最大计数(ix)即可。如果允许给定写入访问,那么层间通信(ILC)单元360-365针对给定写入访问将当前单元计数(ic)增加单元量(i+),如图6所示。如果对应ILC条目索引中的当前单元计数(ic)大于或等于最大计数(ix),那么层间通信(ILC)单元360-365阻止对相应共享缓冲区370的给定写入访问,并且不增加当前单元计数(ic)。类似地,层间通信(ILC)单元360-365可允许对相应共享缓冲区370的读取访问,只要对应ILC条目索引中的当前单元计数(ic)大于最小计数(in)即可。如果允许给定读取访问,则层间通信(ILC)单元360-365针对给定读取访问将当前单元计数(ic)减少单元量(i-)。如果对应ILC条目索引中的当前单元计数(ic)小于或等于最小计数(in),则层间通信(ILC)单元360-365阻止对相应共享缓冲区370的给定读取访问,并且不减少当前单元计数(ic)。初始计数(io)与最小计数(in)之间的差表示在一个或更多个消费者计算核心可开始消耗来自对应共享缓冲区的数据之前必须由一个或更多个生产者计算核心产生(写入到对应共享缓冲区)的数据量。如果存在向同一共享缓冲区写入的多个生产者计算核心,那么层间通信(ILC)单元360-365可在增加当前单元计数(ic)之前需要用于计算核心的多个增量同步命令。此外,层间通信(ILC)单元360-365可能需要从对应的计算机核心知道何时接收到新数据集(例如,新特征图)以重置计数器值。类似地,当计算核心到达数据集(如特征图)的末尾时,如由达到“o”值的当前单元计数(ic)所指示的,层间通信(ILC)单元360-365可以认为下一个写入命令是新数据集(如特征图帧)的开始。
现在参见图7,示出了根据本技术的各方面的存储器处理单元中的数据流的配置。在处理区域的计算核心120-128与第一存储器区域102、104的相邻部分之间的数据流710、720可在任一方向上配置。例如,计算核心120-128和第一存储器区域102、104的相邻部分可以被配置用于从第一存储器区域102的第一部分经过计算核心120-128并到第一存储器区域104的第二部分的数据流。可替代地,数据流可以被配置为从第一存储器区域104的第二部分经过计算核心120-128到达第一存储器区域102的第一部分。在一种实现方式中,在处理区域的计算核心120-128与第一存储器区域102、104的相邻部分之间的数据流可以提供用于访问特征图数据等的直接路线。
还可以配置从第二存储器区域118到处理区域的计算核心的数据流730。在一种实现方式中,从第二存储器区域118到计算核心120-128的数据流可以提供用于访问内核数据、权重数据等的直接路线。还可以配置计算核心120-128之间的数据流740。在一种实现方式中,计算核心120-128之间的数据流可以提供与对应的处理区域中的其他计算核心120-128共享来自第二存储器区域的数据。在另一实现方式中,计算核心120-128之间的数据流可以提供来自第一存储器区域的相邻部分的数据的共享。在又一实现方式中,计算核心120-128之间的数据流可以提供将计算结果数据顺序地传递到对应的处理区域中的其他计算核心120-128。例如,计算核心120-128之间的数据流可以被配置成将部分和数据顺序地传递至计算核心120-128中的相邻计算核心。
现在参见图8A-8C,示出了根据本技术的各方面的多个输出特征图像素的示例性计算。一个或更多个计算核心可以被配置成根据输入特征图像素值和内核数据(权重)值来计算对应的输出特征图像素。如图所示,计算核心可以被配置为三个像素工作者,以计算每个输出通道的输出特征图像素值。例如,给定的像素工作者可以针对输出特征图的每个输出通道计算输出特征图像素值810-850。像素工作者然后可以进入下一组三个像素值以计算输出特征图的对应输出通道,如图8B所示。在多态实现中,多个计算核心可作为像素工作者一起工作。给定层的像素工作者的最大数目限于给定层的输出特征图宽度。内核、权重数据等可被重用,而无需从第二存储器区域重新加载它们。
根据本技术的各方面,神经网络层、神经网络层的一部分、或多个融合的神经网络层可以作为映射单元被映射到计算核心的单个集群。计算核心的集群是给定处理区域的被配置成一起工作以计算映射单元的一组核心。例如,神经网络的第一层910的节点和第二层920的节点可作为映射单元映射至计算核心,而第三层930的节点可作为映射单元映射至计算核心,如图9所示。此外,映射单元1010可以由如图10中所示的计算核心集群1020来计算。可选地,可以在计算集群中配置比计算映射单元所需的更多的计算核心,以提高计算性能。
如图11所示,计算核心120-128可以同时计算多个物理通道1110-1140。此外,计算核心的物理通道1110-1140可以与第二存储器区域118的相应份额相关联,其在本文中被称为核心槽(core slot)1150-1180。计算核心120-128还可以被配置成计算多个虚拟通道1210,如图12所示。虚拟通道1210还与第二存储器区域118的相应份额相关联。在一个实现方式中,计算核心120-128的虚拟通道1210的数量可以大于物理通道1110-1140的数量。
再次,第二存储器118可以在逻辑上或物理上被组织成多个区域。在一种实现方式中,第二存储器区域118可以被组织成多个处理区域宏,其中每个处理区域112-116可以与第二存储器区域118的一个或更多个处理区域宏相关联。此外,可以将处理区域宏组织成核心槽,其中计算核心的每个物理通道与核心槽相关联。第二存储器区域的份额可以在编程阶段期间被灵活地分配,而不是静态的固定量。此外,相应处理区域112-116中的计算核心120-128可以配置在一个或更多个集群中。可以利用计算核心的集群化通过使用多个计算核心来增加计算。每个计算核心可以被配置成计算整个或部分计算操作。计算工作负荷可以基于计算核心的输出通道、第一存储器102-110中的数据或其组合而分布在给定集群的计算核心上。对于输出通道,可以针对整个或部分通道分布工作负荷。每个分布具有其自身的特性。例如,一种配置可用于减少对第二存储器118的访问,而另一配置可促进神经网络模型的层在第二存储器118的多个宏上的映射。可以针对给定的集群形状和类型配置一组计算核心。
现在参见图13,示出了根据本技术的各方面的整个通道计算核心配置。给定处理区域的计算核心可以配置为全通道模式,其中一个或更多个计算核心独立于相应处理区域中的其他计算核心执行计算。在全通道模式中,计算核心不将数据1310顺序地从给定计算核心传递到相邻计算核心。现在参考图14,在全通道模式中,集群中的每个计算核心计算指定数量的通道。每个核心负责自己读取数据和写入输出结果。例如,全通道模式配置的计算核心从第一存储器区域的第X部分读取数据,可选地从第二存储器区域读取数据,进行相应的计算,并将结果存储在第一存储器区域的第(X+1)部分中。全通道模式中的计算核心不与其他计算核心共享数据并且作为独立的计算核心工作。现在参见图15,示出了示例性全通道计算核心配置。在所示示例中,映射单元具有22个输出通道1510并且被映射到三计算核心集群1520-1540。每个计算核心具有四个输出物理通道。输入特征图1550存储在第一存储器区域的相邻第一部分中,且输出特征图1560存储在第一存储器区域的相邻第二部分中。如图16中进一步示出的,每个计算核心1520-1540被配置成访问相应输出通道的权重。每个计算核心被配置成计算输入特征图和输出特征图的相应组的22个输出通道1610的权重的乘积。每个计算核心负责几乎三分之一的计算工作负荷。第二存储器区域可基于输出通道来组织,且导致22个输出通道1610映射成五个半的虚拟通道行。虽然计算核心集群被示为映射在第二存储器区域的单个宏上,但是计算核心集群也可以被映射在第二存储器区域的多个宏上。
现在参见图17,示出了根据本技术的各方面的部分和计算机核心配置。在部分和传递模式下,一个或更多个计算核心可以被配置成执行计算并且将其相应结果作为部分和1710传递至同一处理区域内的相邻计算核心以便利用该部分和执行进一步的计算。在部分和配置中,单个通道的数据的大小不能适配在第二存储器区域的单个核心槽中。在这种情况下,数据可以分布在第二存储器区域的多个宏上。在部分和配置中,每个计算核心计算输出的一部分并且将其传递到集群中的相邻核心。所以,部分和模式相当于具有长的第二存储器区域宏的计算核心。部分和集群中的计算核心1810-1830全部可访问第一存储器区域1840的对应部分中的数据和第二存储器区域1850中的数据,并且链中的最后核心1830将会把结果回写到第一存储器区域1860的另一相邻部分,如图18所示。现在参见图19和图20,示出了示例性部分和计算核心配置。在所示出的示例中,部分和集群映射包含四个输出通道1910,该映射为三计算核心集群1920-1940,且每一核心具有四个物理通道。如图19所示,每个计算核心被配置为访问第一存储器区域1950的第一部分中的特征图值。此外,每个计算核心被配置为访问第二存储器区域2010的物理通道中的权重,如图20所示。由于输出通道的数量与计算核心的物理通道的数量相同,因此所有核心都可以计算所有输出通道。第一计算核心1920可以从第一存储器1950中的输入特征图的对应部分以及第二存储器区域2010中的四个物理通道的权重的对应部分计算第一部分和。第一计算核心1920可以将第一部分和传递到第二计算核心1930。第二计算核心1930可以使用第一部分和、第一存储器1950中的输入特征图的对应部分以及第二存储器2010中的四个物理通道的权重的对应部分来计算第二部分和。第二计算核心1930可以将第二部分和传递到第三计算核心1940。第三计算核心可以将结果传递到第一存储器区域的相邻第二部分以存储为输出特征图数据1960。
在另一个示例中,部分和集群映射可以包括八个输出通道2110、四个计算核心2120-2150,并且每个核心具有四个物理通道,如图21和图22中所示。因此,输出通道多于集群中的计算核心的物理通道。因为在计算部分和的情况下,计算核心无法计算比它们具有的物理通道更多的输出通道,所以集群的四个计算核心可以配置为两个子集来计算八个输出通道。计算核心的每个子集将在其中传递部分和数据。每个计算核心计算四个对应的输出通道。
在其他情况下,计算核心可以计算比物理通道更多的输出通道。例如,如果计算核心具有八个物理通道并且已经分配了32个输出通道,则计算核心可以按顺序方式一次计算八个通道。然而,如果更多计算核心可用,则输出通道可跨额外的计算核心分布以加速过程。在这种情况下,可以例如跨两个计算核心计算相同的32个输出通道,其中每个计算核心被分配16个输出通道来计算。
现在参见图23,示出了根据本技术的各方面的多态第一存储器计算核心配置。给定处理区域的计算核心可以以多态配置来配置,其中一个或更多个核心与相邻计算核心共享来自第一存储器区域2310的给定部分的数据。多态第一存储器计算核心配置的集群等同于具有更多物理通道的更宽的核心。这样的配置可用于改善第一存储器区域中的数据的重用并减少对第一存储器区域的对应部分的访问的总数。还应注意,第一存储器区域中的数据的重用也是根据本技术的各方面的多个处理区域的计算核心配置的固有属性,因为计算核心可在物理通道之间共享数据。多态第一存储器计算集群中的第一计算核心2410可访问第一存储器区域2440的对应部分中的数据,并且可与该集群中的其他计算核心2420、2430共享该数据。多态第一存储器配置中的所有计算核心2410-2430可以访问第二存储器区域2450中的数据,并且所有计算核心2410-2430可以将结果写到第一存储器区域2460的其他相邻部分,如图24所示。现在参见图25和图26,示出了示例性多态第一存储器区域计算核心配置。在所示示例中,集群的第一计算核心2510可访问第一存储器区域2540的第一相邻部分中的输入特征图数据。第一计算机核心2510可与集群的其他计算机核心2520、2530共享输入特征图的数据,如图25所示。集群中的每个计算核心2510-2530还可以访问第二存储器区域2610中的数据,如图26所示。集群中的每个计算核心2510-2530然后可以执行相应的计算并且将结果作为输出特征图数据写入第一存储器区域2550的另一个相邻部分,如图25所示。可以通过映射算法来配置多态第一存储器计算集群,该映射算法通过创建整个通道集群、然后转换到第一存储器区域多态计算机集群而开始。在所示的三计算核心集群中,每个核心可负责多达三分之一的计算机工作负荷。第二存储器区域2610可被配置为具有四个输出通道,该四个输出通道可被映射到第二存储器区域2610中的五个半虚拟通道行中,如图26所示。
现在参见图27,示出了根据本技术的各方面的多态第二存储器计算核心配置。给定处理区域的计算核心可以以多态配置来配置,其中一个或更多个计算核心与相邻计算核心共享来自第二存储器区域2710的给定部分的数据。在多态第二存储器计算核心配置中,集群的每个计算核心可以计算所有输出通道,但是在输出特征图的不同像素上工作。因此,集群中的其他计算核心作为第一计算核心的工作者来操作。可以被分配的计算核心的数量是映射单元输出特征图像素的数量。集群的计算核心访问第二存储器区域中的不同数据序列,因为它们在不同的像素上工作。这样的配置可用于通过在集群中的核心之间共享数据来减少对第二存储器区域的访问的数量。多态第二存储器集群中的第一计算核心2810可访问第二存储器区域2840的对应部分中的数据,并且可与集群中的其他计算核心2820、2830共享该数据。多态第二存储器集群中的所有计算核心2810-2830可以访问第一存储器区域2850中的数据,并且所有计算核心2810-2830可以将结果写到第一存储器区域2860的其他相邻部分,如图28所示。现在参见图29和图30,示出了示例性多态第二存储器计算核心配置。在所示出的示例中,集群的计算核心2910至2930可以全部访问第一存储器区域2940的第一相邻部分中的输入特征图数据,如图29所示。第一计算核心2910可以访问第二存储器区域3010中的数据,并且与集群2920、2930的其他计算核心共享数据,如图30所示。在一个实现方式中,集群可包括映射有总共22个物理通道的3个计算核心2910-2930。每个计算核心可以具有四个物理通道。该链的顶部计算核心2910被分配映射所需的第二存储器区域3010的整个部分,并且访问数据的整个22个输出通道。每个计算核心计算所有22个输出通道,但针对不同的像素。集群的另外两个计算核心2920、2930将访问第一计算核心2910而不是第二存储器区域3010以获得权重数据。在没有特殊同步的情况下能够以数据流方式进行邻接访问。集群内的每个计算机核心2910-2930然后可以执行相应的计算并且将结果作为输出特征图数据写入第一存储器区域2950的另一个相邻部分,如图29所示。
现在参见图31,示出了根据本技术的各方面的复合计算机核心配置。给定处理区域的集群中的每个计算核心可访问第一存储器区域的相邻部分。计算核心还可以被配置为与同一组内的相邻计算核心共享来自第二存储器区域3110、3120的给定部分的数据。然而,不同组中的计算核心不与其他组中的其他计算核心共享3170数据。每组中的计算核心计算指定数量的输出通道并将结果存储到第一存储器区域的其他相邻部分中。现在参见图32,示出了示例性复合计算核心配置。在所示示例中,映射单元具有22个输出通道并且被映射到四计算核心集群3210-3240,四计算核心集群3210-3240各自包括两组两个计算核心。例如,第一组可以包括第一和第二计算核心3210、3220,并且第二组可以包括第三和第四计算核心3230、3240。每组的计算核心可以每个核心具有四个物理通道。如图31所示,每组中的每个计算核心3210-3240可以访问第一存储器3250中的输入特征图数据。相应组中的第一计算核心3210、3230可以访问第二存储器3270中的相应组的输出通道中的权重数据,如图34所示。第一组中的第一计算核心3210可以被配置成与第一组中的其他计算核心3220共享来自第二存储器3270的数据。类似地,第二组中的第一计算核心3230可被配置成与第二组中的其他计算核心3240共享来自第二存储器3270的数据。每组中的每个计算核心3210-3240可以将结果作为输出特征图数据回存到第一存储器3260的另一相邻部分。因此,每组两个计算核心充当独立的像素计算组。然而,使用两组像素计算组来计算整个结果。在顶层,每个像素计算组可被视为独立的计算核心组,且可以在它们之间以全通道方式分布工作负荷。
在另一个示例中,复合配置可以用于将像素计算核心分布在第二存储器区域的多个宏上,如图35所示。在这样的配置中,每组的计算核心3510、3520可以访问第二存储器区域3530、3540的相应宏。当不能使用第二存储器区域多态计算核心配置时,可以利用复合集群。通常,如果两组计算核心都可以用于在两组的计算核心之间共享来自第二存储器区域的数据,则第二存储器区域多态计算核心配置将提供更好的数据重用。
现在参见图36,示出了根据本技术的各方面的存储器处理单元(MPU)的第一存储器区域共享特征。如所示出的,MPU计算的数据流可以被可视化为一系列生产者3610-3640和消费者3650-3670。例如,计算核心集群3610-3640可以消耗来自第一存储器区域的第一部分的输入特征图数据并且产生可以作为下一个计算核心集群3650-3670使用的输入的特征图数据。可以理解,通常在常规计算单元之间的数据共享倾向于成为常规数据流加速器的重大障碍。因此,常规处理单元可以利用片上网络和/或数据复制。相比之下,根据本技术的各方面的MPU实现了更简单的数据共享技术,其中生产者和消费者对共享存储器缓冲区3680进行写入和读取。缓冲区3680是第一存储器在多个处理区域之间的交错部分。因此,数据可在相同处理区域和/或相邻处理区域中的集群之间流动。在一个实现方式中,软件层可以被配置为组织集群以确保这种邻接。在图36的示例中,两个不同处理区域中的两个计算核心集群3610-3640和3650-3670共享第一处理区域的一部分中的缓冲区3680。应当理解,在生产者和消费者计算核心之间不存在直接通信。计算集群中的计算核心彼此不直接同步。然而,计算集群中的计算核心可被配置成彼此直接通信数据。
在一个实现方式中,可以通过在第一存储器的对应部分中分配足够大的缓冲区来在处理区域之间共享数据。例如,可分配缓冲区来承载在相邻处理区域之间共享的整个特征图。缓冲区的大小可以根据等式1来计算:
其中F是特征图大小的向量。
然而,将整个特征图大小分配为缓冲区不足以使数据流动。消费者需要避免读取尚未被生产者填充的缓冲区条目。假设特征图行级的粗粒度同步,消费者无法从仍在产生的特征图行中读取。为了简单起见,每个特征图行将被示出为图37至图42中的单个缓冲区条目。然而,可以理解,单行可能需要存储数百、数千或者甚至更多的条目。现在参考图37A和图37B,示出了消费者和生产者的示例性缓冲区利用。所示出的缓冲区3710的大小被确定成用于存储完整特征图。例如,生产者3720可执行二维卷积,而消费者3730可执行具有3x3内核大小的二维卷积。生产者核心3720可在产生下一行的像素之前生成给定特征图行的像素。在此情况下,生产者核心3720仅封锁单个行条目,如图37A中所示。当生产者核心3720生成给定特征图行的像素时,消费者核心3730可访问前三行的像素值。在生产者核心3720完成生成给定行的像素之后,生产者核心3720可移动以生成下一行的像素,如图37B中所示。此时,如果消费者核心3730准备好开始处理接下来的三行窗口,则消费者核心3730可将其消耗转移到接下来的三行窗口。此外,应注意,已消耗的行可保留在缓冲区3710中,直到随着处理继续而被生产者核心3720覆写。应理解,3x3内核的消费者3730同时消耗三个缓冲区条目,而生产者3720在移动到下一条目之前为一个条目生成数据。此外,缓冲区3710中的多个条目在任何给定时间都没有使用。因此,全特征图大小的缓冲区3710会浪费存储器处理单元(MPU)中的资源。
在另一实现方式中,较小的部分缓冲区可能足以使数据流支持计算。例如,循环队列可以用作部分缓冲区。部分缓冲区可被配置为携带足够的数据以供消费者操作,且具有额外的条目以允许生产者在消费者工作时生成数据。例如,在消费者正执行具有3x3内核大小的卷积的情况下,部分缓冲区可包含三个特征图行。部分缓冲区还可包括额外的条目,称为管线余量(pipeline margin)。在没有这样的余量的情况下,数据流性能将显著下降,因为生产者和消费者将不能够同时工作。生产者也不能重写尚未消耗的数据,且消费者需要等待生产者完成将新行写入部分缓冲区中才开始消耗它。现在参看图38A-38D,示出了3x3内核大小的示例性共享部分缓冲区3810。如图所示,生产者3820在移动到下一行之前为给定行生成像素数据,且消费者3830一次访问三行数据。通过利用部分缓冲区3810,可以将共享缓冲区3810的大小减小到小至四行。例如,在第一周期中,消费者3830可正访问前三行像素数据,且生产者3820可正生成用于存储在第四行中的数据。在第二周期中,消费者3830可正访问第二到四行的数据,而生产者3820正将数据存储在第一行中。在第三周期中,消费者3830可访问第三行、第四行和第一行中的数据,而生产者3820将数据存储在第二行中。在第四周期中,消费者3830可访问第四行、第一行及第二行,而生产者3820将数据存储在第三行中。此后,第一至第四周期可以迭代地重复任何次数。因此,四行的共享部分缓冲区可允许生产者和消费者顺利地工作。
现在参见图39A和39B,示出了具有2x2跨距的3x3内核大小的示例性共享部分缓冲区。跨距为2的消费者3930一次将其窗口移动两行。因此,需要二的管线余量以允许生产者生成用于消费者窗口移位的必要行。例如,生产者3920可将数据存储在第四行和第五行中,而消费者3930访问第一至第三行中的数据。在生产者3920将数据存储在第四和第五行中之后,消费者3930可移动到访问第三至第五行中的数据,而生产者3920将数据存储在第一行和第二行中。
为了便于解释,已经关于单个生产集群和单个消费集群描述了本技术的各方面。然而,存储器处理单元(MPU)中的数据流可以涉及数据流分支成多条路径,该多条路径可以例如作为不同的输出结束、再次合并等。虽然可将分支输出视为与多个单个数据流路径相同,但合并分支可能涉及附加考虑。例如,如果具有合并分支的神经网络未被分配正确的缓冲区大小,则数据流管线可能最终陷入死锁或产生不正确的数据。对于具有多个消费者的数据,数据有效性应当由最慢的消费者设置。通常,较长的数据寿命导致需要较大的缓冲区大小。现在参考图40,示出了利用完整特征图缓冲区的示例分支数据流。如图所示,第一生产者4010可执行卷积(Conv2D)操作,其被两个分支消耗。第一分支例如可以包括内核大小为3X3的一系列两个卷积(Conv2D)操作4020、4030。第二分支可以包括例如跳过连接4040。然后,可以例如借助于加法(Add)操作4050将这两个分支合并在一起。第一分支中的每个卷积(Conv2D)操作4020、4030需要三个准备好的行来访问输入数据。此外,还需要额外的一行作为管线余量。add操作4050不具有任何内核,且因此仅需要单个准备好的行来进行操作。然而,基于卷积(Conv2D)消费者4020、4030,生产者数据不能过时。数据需要留在缓冲区中,直到Add合并节点4050准备好使用它。
现在参见图41,示出了利用部分特征图缓冲区的示例性分支数据流。如图所示,在分支开始处的生产者4110为两个分支的消费者(借助于旁路操作)产生两组数据以促进数据同步。较快分支被配置为缓冲4120以存储更多数据以与较慢分支对齐,其可称为分支延迟数据。应当理解,不是所有分支都需要延迟缓冲区。例如,如图42所示,平衡的分支不需要额外的数据存储。如图所示,两个分支中的每一个可以配置有典型大小的部分缓冲区,就好像每个分支是唯一的数据路径。
虽然如上所述,共享缓冲区可以在逐行的基础上同步,但是共享缓冲区也可以在其他粒度上同步。例如,第一存储器区域中的共享缓冲区也可以以像素为基础同步,如图43A和图43B中所示。如所示出的,生产者可执行卷积(Conv2D)操作,其由两个分支消耗。第一分支可以由串联的三个卷积(Conv2D)操作4310-4330构成,其中的两个可以具有1x1的内核大小,而另一个具有3x3的内核大小。第二分支4340可以是跳过连接。这两个分支可以在加法(ADD)操作4350处合并在一起。1x1内核大小卷积(Conv2D)操作4310、4330可以利用两个像素缓冲区大小,而3x3卷积(Conv2D)操作可以利用至少三行。应注意,像素可基于输出通道的数目而消耗多个缓冲区条目。
粗粒度同步可以提供更少的开销和管线停顿。相反,细粒度缓冲区条目可以以同步步骤为代价来减小所需的缓冲区大小。在无内核操作及1X1内核的情况下,缓冲区减少可为明显的。然而,在较大内核的情况下,细粒度配置的增益趋向于更小。在跨越、融合池化、多行生产者等配置中,增益可几乎减小。一般而言,同步的粒度可以是一种设计选择,而不是架构的属性。
出于说明和描述的目的,已经呈现了本技术的特定实施例的前述描述。它们不旨在是详尽的或将本技术限制于所公开的精确形式,并且显然根据上述教导,许多修改和变化是可能的。选择和描述实施例是为了最好地解释本技术的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用本技术和具有适合于预期的特定用途的各种修改的各种实施例。本发明的范围由所附权利要求及其等同物限定。
Claims (17)
1.一种存储器处理单元(MPU),包括:
第一存储器,其包括多个区域;
多个处理区域,所述多个处理区域在所述第一存储器的所述多个区域之间交错,其中所述处理区域包括多个计算核心,其中所述多个处理区域中的每个相应处理区域的所述多个计算核心中的每一个计算核心被耦合在第一多个存储器区域中的相邻存储器区域之间;以及
一个或更多个层间通信(ILC)模块,其通信地耦合至所述多个处理区域中的每一个处理区域中的所述多个计算核心,其中所述一个或更多个ILC模块能配置成控制计算核心之间的通过所述第一存储器的所述多个区域中的对应相邻区域的通信。
2.根据权利要求1所述的MPU,其中所述一个或更多个ILC模块包括一个ILC模块,所述一个ILC模块通信地耦合至所述多个处理区域中的所述多个计算核心并且与所述第一存储器的所述多个区域相关联并且能配置成控制计算核心之间的通过所述第一存储器的所述多个区域中的对应相邻区域的通信。
3.根据权利要求1所述的MPU,其中所述一个或更多个ILC模块包括多个ILC模块,其中所述多个ILC模块中的相应ILC模块与所述第一存储器的所述多个区域中的相应区域相关联,其中每个相应ILC模块通信地耦合所述处理区域中的与所述第一存储器的相应相关联的区域相邻的所述多个计算核心,并且能配置成控制所述处理区域中的与所述第一存储器的所述相应相关联的区域相邻的所述多个计算核心之间的通过所述第一存储器的所述相应相关联的区域的通信。
4.根据权利要求1所述的MPU,其中由所述一个或更多个ILC模块对计算核心之间的通过所述第一存储器的所述多个区域中的对应相邻区域的通信的控制包括间接不可见同步模式。
5.根据权利要求1所述的MPU,其中由所述一个或更多个ILC模块对计算核心之间的通过所述第一存储器的所述多个区域中的对应相邻区域的通信的控制包括:
所述一个或更多个ILC模块中的给定ILC模块被配置成从给定计算核心接收访问所述第一存储器的给定区域的请求;
所述一个或更多个ILC模块中的所述给定ILC模块被配置成响应于所接收的请求,基于与所述第一存储器的所述给定区域相关联的计数来阻止或允许所述给定计算核心对所述第一存储器的所述给定区域的访问。
6.根据权利要求5所述的MPU,其中由所述一个或更多个ILC模块对计算核心之间的通过所述第一存储器的所述多个区域中的对应相邻区域的通信的控制还包括:
将所接收的请求中的所述给定计算核心的标识符映射到与所述第一存储器的所述给定区域相关联的所述计数。
7.根据权利要求5所述的MPU,其中来自所述给定计算核心的访问所述第一存储器的所述给定区域的所述请求包括提取请求。
8.根据权利要求5所述的MPU,其中来自所述给定计算核心的访问所述第一存储器的所述给定区域的所述请求包括回写请求。
9.根据权利要求1所述的MPU,其中由所述一个或更多个ILC模块对计算核心之间的通过所述第一存储器的所述多个区域中的对应相邻区域的通信的控制还包括:
所述一个或更多个ILC模块被配置成从所述给定计算核心接收写入所述第一存储器的所述给定区域的请求;
所述一个或更多个ILC模块被配置成当计数小于第一预定水平时,允许所述给定计算核心对所述第一存储器的所述给定区域的写入并增加所述计数;以及
所述一个或更多个ILC模块被配置成当所述计数等于所述第一预定水平时,阻止所述给定计算核心对所述第一存储器的所述给定区域的写入并且不增加所述计数。
10.根据权利要求9所述的MPU,其中由所述一个或更多个ILC模块对计算核心之间的通过所述第一存储器的所述多个区域中的对应相邻区域的通信的控制还包括:
所述一个或更多个ILC模块被配置成从所述给定计算核心接收从所述第一存储器的所述给定区域进行提取的请求;
所述一个或更多个ILC模块被配置成当所述计数大于第二预定水平时,允许所述给定计算核心从所述第一存储器的所述给定区域提取并减少所述计数;以及
所述一个或更多个ILC模块被配置成当所述计数等于所述第二预定水平时,阻止所述给定计算核心从所述第一存储器的所述给定区域进行提取并且不减少所述计数。
11.根据权利要求9所述的MPU,其中由所述一个或更多个ILC模块对计算核心之间的通过所述第一存储器的所述多个区域中的对应相邻区域的通信的控制还包括:
响应于新数据帧的开始,重置所述计数。
12.一种存储器处理单元(MPU)层间通信方法,包括:
从相应的计算核心接收与第一存储器的多个区域中的相应区域的缓冲区相关的同步命令;
跟踪对与所述同步命令相关联的所述第一存储器的所述多个区域中的相应区域的所述相应缓冲区的读取访问和写入访问;以及
基于与所述第一存储器的所述多个区域中的所述相应区域的所述缓冲区相关联的相应的读取访问和写入访问跟踪,控制由所述相应的计算核心对所述第一存储器的所述多个区域中的所述相应区域的所述缓冲区的访问。
13.根据权利要求12所述的MPU层间通信方法,其中控制对所述缓冲区中的相应缓冲区的写入访问包括:
当层间通信(ILC)条目索引中的当前计数小于预定最大计数时,允许对所述缓冲区中的所述相应缓冲区的写入访问;以及
当所述ILC条目索引中的当前计数大于或等于所述预定最大计数时,阻止对所述缓冲区中的所述相应缓冲区的写入访问。
14.根据权利要求13所述的MPU层间通信方法,其中跟踪对所述缓冲区中的相应缓冲区的所述写入访问包括:
当所述ILC条目索引中的所述当前计数小于预定最大计数并且允许所述写入访问时,增加所述ILC条目索引中的所述当前计数。
15.根据权利要求13所述的MPU层间通信方法,其中控制对所述缓冲区中的相应缓冲区的读取访问包括:
当所述ILC条目索引中的所述当前计数大于预定最小计数时,允许对所述缓冲区中的所述相应缓冲区的读取访问;以及
当所述ILC条目索引中的所述当前计数小于或等于所述预定最小计数时,阻止对所述缓冲区中的所述相应缓冲区的所述读取访问。
16.根据权利要求15所述的MPU层间通信方法,其中跟踪对所述缓冲区中的所述相应缓冲区的所述读取访问包括:
当所述ILC条目索引中的所述当前计数大于预定最小计数并且允许所述读取访问时,减少所述ILC条目索引中的所述当前计数。
17.根据权利要求12所述的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/048548 WO2022047422A1 (en) | 2020-08-31 | 2021-08-31 | Inter-layer communication techniques for memory processing unit architectures |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115803811A true CN115803811A (zh) | 2023-03-14 |
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 | 存储器处理单元核心架构 |
CN202180042480.6A Pending CN115803811A (zh) | 2020-08-31 | 2021-08-31 | 用于存储器处理单元架构的层间通信技术 |
CN202180037882.7A Pending CN115668125A (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 |
---|---|---|---|
CN202180037882.7A Pending CN115668125A (zh) | 2020-08-31 | 2021-08-31 | 存储器处理单元架构映射技术 |
Country Status (3)
Country | Link |
---|---|
US (4) | US20230076473A1 (zh) |
CN (4) | CN115668121A (zh) |
WO (4) | WO2022047422A1 (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 | 株式会社ターボデータラボラトリー | 並列コンピュータのアーキテクチャおよびこのアーキテクチャを利用した情報処理ユニット |
IL150149A (en) * | 2001-06-11 | 2008-08-07 | Zoran Microelectronics Ltd | Special memory device |
US20080052687A1 (en) * | 2003-11-03 | 2008-02-28 | Agustin Gonzales-Tuchmann | Development environment for data transformation applications |
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 |
CN114072778A (zh) * | 2019-05-07 | 2022-02-18 | 麦姆瑞克斯公司 | 存储器处理单元架构 |
-
2021
- 2021-08-31 WO PCT/US2021/048548 patent/WO2022047422A1/en active Application Filing
- 2021-08-31 WO PCT/US2021/048550 patent/WO2022047423A1/en active Application Filing
- 2021-08-31 CN CN202180027918.3A patent/CN115668121A/zh active Pending
- 2021-08-31 CN CN202180037893.5A patent/CN115917515A/zh active Pending
- 2021-08-31 CN CN202180042480.6A patent/CN115803811A/zh active Pending
- 2021-08-31 CN CN202180037882.7A patent/CN115668125A/zh active Pending
- 2021-08-31 WO PCT/US2021/048466 patent/WO2022047390A1/en active Application Filing
- 2021-08-31 WO PCT/US2021/048498 patent/WO2022047403A1/en active Application Filing
-
2022
- 2022-09-12 US US17/943,119 patent/US20230076473A1/en active Pending
- 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,116 patent/US20230073012A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230061711A1 (en) | 2023-03-02 |
US20230073012A1 (en) | 2023-03-09 |
CN115668125A (zh) | 2023-01-31 |
WO2022047390A1 (en) | 2022-03-03 |
US20230076473A1 (en) | 2023-03-09 |
WO2022047403A1 (en) | 2022-03-03 |
CN115917515A (zh) | 2023-04-04 |
WO2022047423A1 (en) | 2022-03-03 |
CN115668121A (zh) | 2023-01-31 |
US20230075069A1 (en) | 2023-03-09 |
WO2022047422A1 (en) | 2022-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115803811A (zh) | 用于存储器处理单元架构的层间通信技术 | |
CN111164617B (zh) | 具有交叉连接优化的脉动神经网络引擎 | |
US10915249B2 (en) | Apparatuses and methods for in-memory operations | |
US20220004497A1 (en) | Apparatuses and methods for cache operations | |
CN109147842B (zh) | 同时进行数据路径中计算操作的设备及方法 | |
CN110476212B (zh) | 用于存储器中数据交换网络的设备及方法 | |
KR102306034B1 (ko) | 데이터 경로 내 컴퓨팅 연산을 위한 장치 및 방법 | |
CN108885887A (zh) | 用于数据移动的设备及方法 | |
CN104571949A (zh) | 基于忆阻器实现计算与存储融合的处理器及其操作方法 | |
US10114795B2 (en) | Processor in non-volatile storage memory | |
CN109003640A (zh) | 存储器中子阵列之间的数据传送 | |
CN111433758A (zh) | 可编程运算与控制芯片、设计方法及其装置 | |
CN103890857B (zh) | 采用环形寄存器的可移位的存储器 | |
JP7008983B2 (ja) | テンソルデータにアクセスするための方法および装置 | |
US20210082520A1 (en) | Processor in non-volatile storage memory | |
US10659396B2 (en) | Joining data within a reconfigurable fabric | |
US20230273729A1 (en) | Core group memory processing with group b-float encoding | |
CN109582613A (zh) | 用于存储器访问和调度的系统、方法和装置 | |
CN114072778A (zh) | 存储器处理单元架构 | |
CN112906877A (zh) | 用于执行神经网络模型的存储器架构中的数据布局有意识处理 | |
CN102200961A (zh) | 一种动态可重构处理器内子单元的扩展方法 | |
US20240272797A1 (en) | Core group memory processing with multi-precision weight packing | |
CN118412029A (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 |