CN115668121A - 存储器处理单元架构和配置 - Google Patents

存储器处理单元架构和配置 Download PDF

Info

Publication number
CN115668121A
CN115668121A CN202180027918.3A CN202180027918A CN115668121A CN 115668121 A CN115668121 A CN 115668121A CN 202180027918 A CN202180027918 A CN 202180027918A CN 115668121 A CN115668121 A CN 115668121A
Authority
CN
China
Prior art keywords
memory
cores
regions
data
processing
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
CN202180027918.3A
Other languages
English (en)
Inventor
M·施丹
J·博蒂默尔
T·韦斯利
C·刘
张振亚
卢伟
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.)
Mamrix
Original Assignee
Mamrix
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 Mamrix filed Critical Mamrix
Publication of CN115668121A publication Critical patent/CN115668121A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Neurology (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (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)可以包括第一存储器、第二存储器以及多个处理区域。所述多个处理区域可在第一存储器的多个区域之间交错(interleaved)。所述第二存储器可被耦合到所述多个处理区域。处理区域可包含可配置于一个或更多个集群中的多个计算核心。所述多个处理区域中的相应处理区域的所述多个计算核心可以被耦合在所述第一存储器的所述多个区域中的相邻区域之间。所述多个处理区域中的相应处理区域的所述多个计算核心可以可配置地串联耦合。
在另一个实施例中,一种存储器处理方法可以包括:配置在多个处理区域中的一个或更多个处理区域的计算核心与第一存储器的多个区域中的对应相邻区域之间的数据流。还可以配置在第二存储器与所述多个处理区域中的一个或更多个处理区域的计算核心之间的数据流。还可以配置在多个处理区域中的一个或更多个处理区域中的相应处理区域内的计算核心之间的数据流。还可以配置多个处理区域中的一个或更多个处理区域的一组或更多组的计算核心以执行神经网络模型的相应计算功能。此后,神经网络模型的权重可被加载到第二存储器中。神经网络模型的激活数据也可以进入第一存储器的多个区域中的一个或更多个区域中。在产生给定数据的一个或更多个计算核心与消耗给定数据的一个或更多个其他计算核心之间的数据移动可基于神经网络模型来同步。
提供本概述以便以简化形式介绍将在以下详细说明中进一步描述的一些概念的选择。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
在附图中通过举例而非限制的方式展示了本技术的多个实施例,并且其中,相同的附图标记指代类似的元件,并且其中:
图1示出了根据本技术的各方面的存储器处理单元(MPU)。
图2示出了根据本技术的各方面的存储器处理方法。
图3示出了根据本技术的各方面的存储器处理单元中的数据流的配置。
图4A-4C示出了根据本技术的各方面的多个输出特征图像素的示例性计算。
图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示出了根据本技术的各方面的共享缓冲区中的像素同步。
具体实施方式
现在将详细参考本技术的实施例,其示例在附图中示出。尽管将结合这些实施例描述本技术,然而,应当理解的是,其并不旨在将本技术局限于这些实施例。相反,本发明旨在覆盖可被包括在由所附权利要求限定的本发明的范围内的替代、修改和等同物。此外,在本技术的以下详细描述中,阐述了许多具体细节以便提供对本技术的透彻理解。然而,应当理解,本技术可以在没有这些具体细节的情况下实施。在其他实例中,未详细描述众所周知的方法、过程、组件和电路,以免不必要地模糊本技术的各方面。
以下本技术的一些实施例是按照例程、模块、逻辑块以及对一个或更多个电子设备内的数据的运算的其他符号表示来呈现的。描述和表示是本领域的技术人员为了将其工作的实质最有效地传达给本领域的其他技术人员所使用的手段。例程、模块、逻辑块和/或类似物在本文中并且通常被设想为导致期望结果的过程或指令的自洽序列。这些过程是包括对物理量的物理操纵的那些过程。通常,尽管不是必需的,但是这些物理操纵采取能够在电子设备中存储、传送、比较和以其他方式操纵的电或磁信号的形式。为了方便起见,并且参考共同使用,参照本技术的实施例,这些信号被称为数据、位、值、元素、符号、字符、术语、数字、字符串等。
然而,应当牢记,这些术语应被解释为参考物理操纵和数量并且仅仅是方便的标签并且鉴于本领域中常用的术语被进一步解释。除非如从以下讨论中显而易见的另外具体说明,否则应当理解的是,通过本技术的讨论,利用诸如“接收”等术语的讨论是指诸如操纵和变换数据的电子计算设备的电子设备的动作和过程。该数据被表示为电子设备的逻辑电路、寄存器、存储器等内的物理(例如,电子)量,并且被转换成类似地被表示为电子设备内的物理量的其他数据。
在本申请中,析取法的使用旨在包括合取物。定冠词或不定冠词的使用不旨在指示基数。具体地,提及“该(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)等。可替代的,第二存储器可以是易失性存储器。
多个处理区域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处,同步过程可包括在多个周期同步神经网络模型的激活数据的加载。
现在参见图3,示出了根据本技术的各方面的存储器处理单元中的数据流的配置。在处理区域的计算核心120-128与第一存储器区域102、104的相邻部分之间的数据流310、320可在任一方向上配置。例如,计算核心120-128和第一存储器区域102、104的相邻部分可以被配置用于从第一存储器区域102的第一部分经过计算核心120-128并到第一存储器区域104的第二部分的数据流。可替代地,数据流可以被配置为从第一存储器区域104的第二部分经过计算核心120-128到达第一存储器区域102的第一部分。在一种实现方式中,在处理区域的计算核心120-128与第一存储器区域102、104的相邻部分之间的数据流可以提供用于访问特征图数据等的直接路线。
还可以配置从第二存储器区域118到处理区域的计算核心的数据流330。在一种实现方式中,从第二存储器区域118到计算核心120-128的数据流可以提供用于访问内核数据、权重数据等的直接路线。还可以配置计算核心120-128之间的数据流340。在一种实现方式中,计算核心120-128之间的数据流可以提供与对应的处理区域中的其他计算核心120-128共享来自第二存储器区域的数据。在另一实现方式中,计算核心120-128之间的数据流可以提供来自第一存储器区域的相邻部分的数据的共享。在又一实现方式中,计算核心120-128之间的数据流可以提供将计算结果数据顺序地传递到对应的处理区域中的其他计算核心120-128。例如,计算核心120-128之间的数据流可以被配置成将部分和数据顺序地传递至计算核心120-128中的相邻计算核心。
现在参见图4A-4C,示出了根据本技术的各方面的多个输出特征图像素的示例性计算。一个或更多个计算核心可以被配置成根据输入特征图像素值和内核数据(权重)值来计算对应的输出特征图像素。如图所示,计算核心可以被配置为三个像素工作者,以计算每个输出通道的输出特征图像素值。例如,给定的像素工作者可以针对输出特征图的每个输出通道计算输出特征图像素值410-450。像素工作者然后可以进入下一组三个像素值以计算输出特征图的对应输出通道,如图4B所示。在多态实现中,多个计算核心可作为像素工作者一起工作。给定层的像素工作者的最大数目限于给定层的输出特征图宽度。内核、权重数据等可被重用,而无需从第二存储器区域重新加载它们。
根据本技术的各方面,神经网络层、神经网络层的一部分、或多个融合的神经网络层可以作为映射单元被映射到计算核心的单个集群。计算核心的集群是给定处理区域的被配置成一起工作以计算映射单元的一组核心。例如,神经网络的第一层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的给定部分的数据。多态第一存储器计算核心配置的集群等同于具有更多物理通道的更宽的核心。这样的配置可用于改善第一存储器区域中的数据的重用并减少对第一存储器区域的对应部分的访问的总数。还应注意,第一存储器区域中的数据的重用也是根据本技术的各方面的多个处理区域的计算核心配置的固有属性,因为计算核心可在物理通道之间共享数据。多态第一存储器计算集群中的第一计算核心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所示,每组中的每个计算核心2810-2840可以访问第一存储器2850中的输入特征图数据。相应组中的第一计算核心2810、2830可以访问第二存储器2870中的相应组的输出通道中的权重数据,如图30所示。第一组中的第一计算核心2810可以被配置成与第一组中的其他计算核心2820共享来自第二存储器2870的数据。类似地,第二组中的第一计算核心2830可被配置成与第二组中的其他计算核心2840共享来自第二存储器2870的数据。每组中的每个计算核心2810-2840可以将结果作为输出特征图数据回存到第一存储器2860的另一相邻部分。因此,每组两个计算核心充当独立的像素计算组。然而,使用两组像素计算组来计算整个结果。在顶层,每个像素计算组可被视为独立的计算核心组,且可以在它们之间以全通道方式分布工作负荷。
在另一个示例中,复合配置可以用于将像素计算核心分布在第二存储器区域的多个宏上,如图31所示。在这样的配置中,每组的计算核心3110、3120可以访问第二存储器区域3130、3140的相应宏。当不能使用第二存储器区域多态计算核心配置时,可以利用复合集群。通常,如果两组计算核心都可以用于在两组的计算核心之间共享来自第二存储器区域的数据,则第二存储器区域多态计算核心配置将提供更好的数据重用。
现在参见图32,示出了根据本技术的各方面的存储器处理单元(MPU)的第一存储器区域共享特征。如所示出的,MPU计算的数据流可以被可视化为一系列生产者310-3240和消费者3250-3270。例如,计算核心集群3210-3240可以消耗来自第一存储器区域的第一部分的输入特征图数据并且产生可以作为下一个计算核心集群3250-3270使用的输入的特征图数据。可以理解,通常在常规计算单元之间的数据共享倾向于成为常规数据流加速器的重大障碍。因此,常规处理单元可以利用片上网络和/或数据复制。相比之下,根据本技术的各方面的MPU实现了更简单的数据共享技术,其中生产者和消费者对共享存储器缓冲区3280进行写入和读取。缓冲区3280是第一存储器在多个处理区域之间的交错部分。因此,数据可在相同处理区域和/或相邻处理区域中的集群之间流动。在一个实现方式中,软件层可以被配置为组织集群以确保这种邻接。在图32的示例中,两个不同处理区域中的两个计算核心集群3210-3240和3250-3270共享第一处理区域的一部分中的缓冲区3280。应当理解,在生产者和消费者计算核心之间不存在直接通信。计算集群中的计算核心彼此不直接同步。然而,计算集群中的计算核心可被配置成彼此直接通信数据。
在一个实现方式中,可以通过在第一存储器的对应部分中分配足够大的缓冲区来在处理区域之间共享数据。例如,可分配缓冲区来承载在相邻处理区域之间共享的整个特征图。缓冲区的大小可以根据等式1来计算:
Figure BDA0003885015270000151
其中F是特征图大小的向量。
然而,将整个特征图大小分配为缓冲区不足以使数据流动。消费者需要避免读取尚未被生产者填充的缓冲区条目。假设特征图行级的粗粒度同步,消费者无法从仍在产生的特征图行中读取。为了简单起见,每个特征图行将被示出为图33至图46中的单个缓冲区条目。然而,可以理解,单行可能需要存储数百、数千或者甚至更多的条目。现在参考图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-34D,示出了3x3内核大小的示例性共享部分缓冲区3410。如图所示,生产者3420在移动到下一行之前为给定行生成像素数据,且消费者3430一次访问三行数据。通过利用部分缓冲区3410,可以将共享缓冲区3410的大小减小到小至四行。例如,在第一周期中,消费者3430可正访问前三行像素数据,且生产者3420可正生成用于存储在第四行中的数据。在第二周期中,消费者3430可正访问第二到四行的数据,而生产者3420正将数据存储在第一行中。在第三周期中,消费者3430可访问第三行、第四行和第一行中的数据,而生产者3420将数据存储在第二行中。在第四周期中,消费者3430可访问第四行、第一行及第二行,而生产者3420将数据存储在第三行中。此后,第一至第四周期可以迭代地重复任何次数。因此,四行的共享部分缓冲区可允许生产者和消费者顺利地工作。
现在参见图35A和35B,示出了具有2x2跨距的3x3内核大小的示例性共享部分缓冲区。跨距为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内核的情况下,缓冲区减少可为明显的。然而,在较大内核的情况下,细粒度配置的增益趋向于更小。在跨越、融合池化、多行生产者等配置中,增益可几乎减小。一般而言,同步的粒度可以是一种设计选择,而不是架构的属性。
出于说明和描述的目的,已经呈现了本技术的特定实施例的前述描述。它们不旨在是详尽的或将本技术限制于所公开的精确形式,并且显然根据上述教导,许多修改和变化是可能的。选择和描述实施例是为了最好地解释本技术的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用本技术和具有适合于预期的特定用途的各种修改的各种实施例。本发明的范围由所附权利要求及其等同物限定。

Claims (21)

1.一种存储器处理单元(MPU),包括:
第一存储器,其包括多个区域;
多个处理区域,所述多个处理区域在所述第一存储器的所述多个区域之间交错,其中所述处理区域包括能配置在一个或更多个集群中的多个计算核心,其中所述多个处理区域中的相应处理区域的所述多个计算核心被耦合在所述第一存储器的所述多个区域中的相邻区域之间,并且其中所述多个处理区域中的相应处理区域的所述多个计算核心可配置地能串联耦合;以及
第二存储器,其被耦合至所述多个处理区域。
2.根据权利要求1所述的MPU,其中:
所述第一存储器包括激活存储器;以及
所述第二存储器包括权重存储器。
3.根据权利要求1所述的MPU,其中:
所述第一存储器包括静态易失性存储器;以及
所述第二存储器包括非易失性存储器。
4.根据权利要求1所述的MPU,其中所述多个处理区域中的相应处理区域的所述多个核心包括多个近存储器(M)核心。
5.根据权利要求4所述的MPU,其中所述多个处理区域中的一个或更多个处理区域的所述多个核心还包括一个或更多个算术(A)核心。
6.根据权利要求4所述的MPU,其中所述多个处理区域中的一个或更多个处理区域的所述多个核心还包括被配置为访问所述MPU的输入端口和输出端口的一个或更多个输入/输出(I/O)核心。
7.根据权利要求1所述的MPU,其中数据可配置地能在所述多个处理区域中的相应处理区域与所述第一存储器的所述多个区域中的相应相邻区域之间移动。
8.根据权利要求1所述的MPU,其中数据可配置地能从所述第二存储器移动并且移动至所述多个处理区域。
9.根据权利要求1所述的MPU,其中数据可配置地能在所述多个处理区域中的相应处理区域的所述多个核心中的相邻核心之间移动。
10.根据权利要求1所述的MPU,其中所述多个处理区域中的相应处理区域的所述多个核心能配置用于多种模式,所述多种模式包括:
部分和传递模式;
第一存储器区域共享模式;以及
第二存储器共享模式。
11.根据权利要求1所述的MPU,还包括:层间通信(ILC)单元,其被配置为使产生给定数据的一个或更多个计算核心与消耗所述给定数据的一个或更多个其他计算核心之间的数据移动同步。
12.根据权利要求1所述的MPU,还包括:
所述多个处理区域中的相应处理区域中的相邻计算核心之间的能配置的核心至核心数据流;
从所述第一存储器的所述多个区域中的相应区域到所述多个处理区域中的相邻处理区域内的一个或更多个核心的能配置的存储器至核心数据流;
从所述多个处理区域中的一些处理区域内的一个或更多个核心到所述第一存储器的所述多个区域中的相邻区域的能配置的核心至存储器数据流;以及
从所述第二存储器区域到所述多个处理区域中的对应处理区域的一个或更多个核心的能配置的存储器至核心数据流。
13.根据权利要求12所述的MPU,其中给定的配置的核心至核心数据流包括部分和传递。
14.根据权利要求12所述的MPU,其中给定的配置的核心至核心数据流包括特征图数据共享。
15.根据权利要求12所述的MPU,其中给定的配置的核心至核心数据流包括权重数据共享。
16.根据权利要求1所述的存储器处理单元,其中所述第二存储器的多个区域中的相应区域与所述多个处理区域中的相应处理区域相关联。
17.根据权利要求16所述的存储器处理单元,其中所述第二存储器的所述多个区域中的相应区域可配置地能耦合至所述多个处理区域中的相应处理区域中的所述计算核心中的一个或更多个计算核心。
18.根据权利要求16所述的存储器处理单元,其中所述第二存储器的所述多个区域包括以一个或更多个宏组织的多个块。
19.根据权利要求16所述的存储器处理单元,其中计算核心的物理通道与存储器宏的相应槽相关联。
20.一种存储器处理单元(MPU),包括:
第一存储器,其包括多个区域;
多个处理区域,所述多个处理区域在所述第一存储器的所述多个区域之间交错,其中所述处理区域包括多个计算核心;
第二存储器,其被耦合至所述多个处理区域;以及
控制逻辑,用于:
配置在所述处理区域中的一个或更多个处理区域的计算核心与所述第一存储器的对应相邻区域之间的数据流;
配置在所述第二存储器与所述处理区域中的一个或更多个处理区域的所述计算核心之间的数据流;以及
配置在所述处理区域中的一个或更多个相应处理区域内的计算核心之间的数据流。
21.一种存储器处理方法,包括:
配置在多个处理区域中的一个或更多个处理区域的计算核心与第一存储器的多个区域中的对应相邻区域之间的数据流;
配置在第二存储器与所述多个处理区域中的所述一个或更多个处理区域的所述计算核心之间的数据流;
配置在所述多个处理区域中的一个或更多个处理区域的相应处理区域内的计算核心之间的数据流;
配置所述多个处理区域中的一个或更多个处理区域的一组或更多组的计算核心以执行神经网络模型的相应的计算功能;
将所述神经网络模型的权重加载到所述第二存储器中;
将所述神经网络模型的激活数据加载到所述第一存储器的所述多个区域中的一个或更多个区域中;
基于所述神经网络模型,同步在产生给定数据的一个或更多个计算核心和消耗所述给定数据的一个或更多个其他计算核心之间的数据移动。
CN202180027918.3A 2020-08-31 2021-08-31 存储器处理单元架构和配置 Pending CN115668121A (zh)

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/048498 WO2022047403A1 (en) 2020-08-31 2021-08-31 Memory processing unit architectures and configurations

Publications (1)

Publication Number Publication Date
CN115668121A true CN115668121A (zh) 2023-01-31

Family

ID=80354150

Family Applications (4)

Application Number Title Priority Date Filing Date
CN202180037882.7A Pending CN115668125A (zh) 2020-08-31 2021-08-31 存储器处理单元架构映射技术
CN202180037893.5A Pending CN115917515A (zh) 2020-08-31 2021-08-31 存储器处理单元核心架构
CN202180027918.3A Pending CN115668121A (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
CN202180037882.7A Pending CN115668125A (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) CN115668125A (zh)
WO (4) WO2022047403A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115526302B (zh) * 2022-08-19 2023-07-25 北京应用物理与计算数学研究所 基于异构多核处理器的多层神经网络计算方法及装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
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 株式会社ターボデータラボラトリー 並列コンピュータのアーキテクチャおよびこのアーキテクチャを利用した情報処理ユニット
ATE521040T1 (de) * 2001-06-11 2011-09-15 Zoran Microelectronics Ltd Ein spezialspeichergerät
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
EP3966698A4 (en) * 2019-05-07 2023-01-18 Memryx Inc. ARCHITECTURE OF A MEMORY PROCESSING UNIT

Also Published As

Publication number Publication date
US20230073012A1 (en) 2023-03-09
CN115917515A (zh) 2023-04-04
WO2022047403A1 (en) 2022-03-03
WO2022047423A1 (en) 2022-03-03
WO2022047390A1 (en) 2022-03-03
US20230061711A1 (en) 2023-03-02
US20230075069A1 (en) 2023-03-09
WO2022047422A1 (en) 2022-03-03
US20230076473A1 (en) 2023-03-09
CN115668125A (zh) 2023-01-31
CN115803811A (zh) 2023-03-14

Similar Documents

Publication Publication Date Title
JP2019537793A (ja) ニューラルネットワーク計算タイル
KR102306034B1 (ko) 데이터 경로 내 컴퓨팅 연산을 위한 장치 및 방법
CN104571949B (zh) 基于忆阻器实现计算与存储融合的处理器及其操作方法
US11080227B2 (en) Compiler flow logic for reconfigurable architectures
US11474965B2 (en) Apparatuses and methods for in-memory data switching networks
KR20190110154A (ko) 데이터 경로에서의 컴퓨팅 장치 및 방법
US10114795B2 (en) Processor in non-volatile storage memory
US10564929B2 (en) Communication between dataflow processing units and memories
CN111656339B (zh) 存储器装置及其控制方法
CN103810111A (zh) 有源存储器件中的地址生成的方法及其处理元件
CN114341826A (zh) 基于非易失性存储器的处理器和数据流技术
US20220179823A1 (en) Reconfigurable reduced instruction set computer processor architecture with fractured cores
US11705207B2 (en) Processor in non-volatile storage memory
CN115668121A (zh) 存储器处理单元架构和配置
CN114072778A (zh) 存储器处理单元架构
CN102207892B (zh) 一种动态可重构处理器内子单元间进行同步的方法
US20230273729A1 (en) Core group memory processing with group b-float encoding
CN102200961A (zh) 一种动态可重构处理器内子单元的扩展方法
CN105531932A (zh) 可重配置指令单元阵列的串行配置
WO2023140778A1 (en) Convolution engine and methods of operating and forming thereof

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