CN111630487B - 用于神经网络处理的共享存储器的集中式-分布式混合组织 - Google Patents
用于神经网络处理的共享存储器的集中式-分布式混合组织 Download PDFInfo
- Publication number
- CN111630487B CN111630487B CN201880074327.XA CN201880074327A CN111630487B CN 111630487 B CN111630487 B CN 111630487B CN 201880074327 A CN201880074327 A CN 201880074327A CN 111630487 B CN111630487 B CN 111630487B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- local memory
- processing
- shared data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 213
- 230000015654 memory Effects 0.000 title claims abstract description 212
- 238000013528 artificial neural network Methods 0.000 title description 12
- 230000008520 organization Effects 0.000 title description 3
- 238000000034 method Methods 0.000 claims description 36
- 238000009826 distribution Methods 0.000 claims description 24
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000008707 rearrangement Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000003638 chemical reducing agent Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000003754 machining Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000000946 synaptic effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
- Memory System (AREA)
- Advance Control (AREA)
Abstract
本公开提供了一种处理器,所述处理器提供具有M数量处理元件的存储器架构,每个处理元件具有至少N数量处理单元、以及本地存储器。所述处理器包括:所述M数量处理元件中的第一处理元件,包括被配置为执行计算操作的第一组N数量处理单元、以及被配置为存储被所述N数量处理单元利用的数据的第一本地存储器。所述处理器还包括数据集线器,所述数据集线器被配置为从所述M数量处理元件接收数据,并向所述M数量处理元件中的每个处理元件提供共享数据。
Description
相关申请的交叉引用
本申请基于2017年12月22日提交的美国临时申请No.62/610,098和2018年11月27日提交的美国专利申请No.16/201,904并要求其优先权,上述申请的全部内容通过引用合并于此。
背景技术
深度神经网络算法涉及大量矩阵计算,这通常会导致涉及非常宽的单指令多数据(SIMD)处理单元和大型片上存储的硬件架构。由于深度学习的性质,不同的SIMD通道需要不时交换数据。存在许多提供跨通道数据处理和计算的存储器架构,但是这些架构由于若干原因而存在缺陷,原因例如为存储器访问延迟、存储体(bank)冲突问题、性能问题等不可接受的增加。
发明内容
本公开提供了一种处理器,所述处理器提供存储器架构,所述存储器架构提供具有M数量处理元件的存储器架构,每个处理元件具有至少N数量处理单元、以及本地存储器。所述处理器包括:所述M数量处理元件中的第一处理元件,所述第一处理元件包括:被配置为执行计算操作的第一组N数量处理单元,以及被配置为存储被所述N数量处理单元利用的数据的第一本地存储器。所述处理器还包括数据集线器,所述数据集线器被配置为从所述M数量处理元件接收数据,并且将共享数据提供到所述M数量处理元件中的每个处理元件。
本公开提供了一种由集中式数据集线器执行的方法,所述集中式数据集线器能够与M数量处理元件通信,每个处理元件具有至少N数量处理单元、以及本地存储器。所述方法包括:从所述M数量处理元件中的处理元件获取数据;确定获取的数据的分发模式;以及使用所述分发模式将获取的数据分发到所述M数量处理元件中的至少一个或多个。
本公开提供了一种由耦合到集中式数据集线器的多个处理元件中的处理元件执行的方法。所述方法包括:从所述集中式数据集线器获取共享数据;获取所述处理元件本地的私有数据;将所述私有数据存储在所述处理元件的本地存储器中;将所述共享数据和存储的私有数据作为操作数提供到所述处理元件的一个或多个处理单元;以及根据由相应的一个或多个处理单元执行的一个或多个操作生成一个或多个结果。
附图说明
在以下详细描述和附图中示出了本公开的实施例和各个方面。图中所示的各种特征未按比例绘制。
图1是示出存储将在SIMD通道之间交换的数据的示例性集中式共享存储器的示意图。
图2是示出存储将在SIMD通道之间交换的数据的示例性分布式共享存储器的示意图。
图3是示出使用点对点交叉开关(cross-bar)的分布式共享存储器的示例性实现的示意图。
图4A是示出经由移位连接方法共享数据的分布式共享存储器架构的示例性实现的示意图。
图4B是示出经由二维网格连接方法共享数据的分布式存储器架构的示例性实现的示意图。
图5是示出与本公开的实施例一致的示例性神经网络处理单元(NPU)芯片的示意图。
图6是示出与本公开的实施例一致的2层数据共享架构的示例性实现的示意图。
图7是示出与本公开的实施例一致的具有数据集线器(hub)的图6的示例性2层数据共享架构所利用的示例性连接方法的示意图。。
图8示出与本公开的实施例一致的由图7的示例性数据集线器提供的示例性重排(swizzle)功能。
图9示出与本公开的实施例一致的用于从集中式数据集线器分发数据的示例性方法的流程图。
图10示出与本公开的实施例一致的用于将数据分发到处理元件的一个或多个处理单元的示例性方法的流程图。
具体实施方式
以下描述参考附图,其中除非另外表示,否则不同附图中的相同数字表示相同或相似的元件。在示例性实施例的以下描述中阐述的实现并不代表与本发明一致的所有实现。相反,它们仅是与如所附权利要求中所述的本发明的相关方面一致的装置和方法的示例。
参考图1,其是示出存储将在SIMD通道之间交换的数据的示例性集中式共享存储器的示意图。集中式共享存储器架构包括多个处理单元(例如,图1所示的处理单元0、处理单元1、处理单元N)和存储器块。
这些处理单元可以被配置为提供相同或不同的功能,并连接到相同的存储器块(例如,图1中的存储器)。每个处理单元通过SIMD通道连接到存储器的存储块。存储器块包括电连接的多个存储块。SIMD通道之间的数据交换通过存储器的存储块之间的数据交换实现。可以由连接到存储器的任何处理单元请求数据,并且可以将数据发送到请求的处理单元。
但是集中式共享存储器架构是不可扩展的。由于每个SIMD通道电连接到处理单元和存储器中的某个存储块,因此当SIMD通道数量增加时,存储器大小以更快的速度增加,因为存储器以访问存储块的主路径由不同的数据访问请求共享的方式集中化。当不同的进程沿主路径访问不同的存储块时,可能会发生存储体冲突。访问存储块的路径只能允许一个进程在一个时间访问一个存储块,而另一进程在另一时间访问另一存储块。换句话说,对存储块的访问被划分优先顺序并被线性化。两个访问不能同时发生。相应地,随着SIMD通道数量增加,存储体冲突问题变得更加严重。存储体冲突问题迅速导致存储器访问延迟增加到典型的神经网络计算应用无法接受的水平。
现在参考图2,其是示出存储将在SIMD通道之间交换的数据的示例性分布式共享存储器(DSM)的示意图。在DSM架构中,存在多个处理单元和多个存储器块。每个处理单元与存储器块相关联并且电连接。共享存储器块由地址全局寻址,但分布到多个计算节点中。每个计算机节点被配置为包括存储器管理器以访问远程数据。
通过以分布式方式布置计算机节点,DSM的扩展性优于集中式存储器,因为该架构避免了由同时访问需求引起的存储体冲突问题。然而,与非分布式共享存储器架构相比,DSM架构对数据的访问较慢。当处理通道增加到更大数量时更是如此,从而导致跨计算节点交换数据的问题。数据访问缓慢主要是由于在DSM架构中跨计算节点交换数据引起的。通常,对远程数据的访问可能需要涉及多个计算节点,这尤其会延迟访问。
当前,DSM架构以几种不同的方式交换数据。例如,如图3所示,存在点对点交叉开关,用于连接所有分布式存储器,允许每个处理单元访问每个分布式节点上的存储器。这是通过将节点的每个存储器管理器耦合到每个存储器块来实现的,从而使得与存储器管理器关联的处理单元能够通过其自己的专用访问路径访问每个存储器块。然而,交叉开关的成本增长非常快-与计算节点的数量成指数增长。也就是说,8-8交叉开关的成本可以是4-4交叉开关的成本的4倍以上。
图4A示出了用于SIMD通道之间的数据交换和共享的另一DSM架构。每个节点仅连接到其左右邻居。要到达远程节点,数据将需要多跳以到达期望目的地。因此,该架构存在性能问题,因为数据传输性能无法与交叉开关方法相比。
更复杂的连接可以涉及2D网格(如图4B所示)或3D拓扑。在2D网格中,计算节点被组织为2D阵列,并且每个节点与其左、右、上、下邻居通信。对于3D拓扑(例如3D Torus或Hyper Cube),每个计算节点可以与6个邻居通信。这些架构通常需要在每个节点中引入路由器,以确定传入的数据分组应转发到的位置,因为存在多个可能的行进方向。路由方案非常复杂,如果不仔细设计方案,则会导致死锁。因此,此类组织通常用于具有稀少的远程数据访问的粗粒度数据共享。
本公开的实施例使用分层混合架构来利用集中式架构和DSM架构两者的优点并克服两者的缺点。所公开的实施例还使用智能数据集线器来以低成本高效且快速地在分布式共享存储器之间交换数据。
图5示出了根据本公开的实施例的示例性神经网络处理单元(NPU)架构500。如图5所示,NPU架构500可以包括片上通信系统502、主机存储器504、存储器控制器506、直接存储器访问(DMA)单元508、联合测试动作组(JTAG)/测试访问端(TAP)控制器510、外设接口512、总线514、全局存储器516等。应当理解,片上通信系统502可以基于所传送的数据来执行算法操作。此外,NPU架构500可以包括具有片上存储器块(例如,8GB第二代高带宽存储器(HBM2)的4个块)用作主存储器的全局存储器516。
芯片通信系统502可以包括全局管理器5022和多个核5024。全局管理器5022可以包括至少一个任务管理器以与一个或多个核5024协调。每个任务管理器可以与核5024的阵列相关联,核5024提供神经网络的突触/神经元电路。例如,图5的处理元件的顶层可提供表示神经网络的输入层的电路,而瓦片(tile)的第二层可提供表示神经网络的隐藏层的电路。如图5所示,全局管理器5022可以包括两个任务管理器以与核5024的两个阵列协调。
核5024可以包括一个或多个处理元件,每个处理元件包括单指令多数据(SIMD)架构,SIMD架构包括被配置为在全局管理器5022的控制下对所传送的数据执行一个或多个操作(例如,乘法、加法、乘法累加等)的一个或多个处理单元。为了对所传送的数据分组执行操作,核5024可以包括用于处理数据分组中的信息的一个或多个处理元件。每个处理元件可以包括任何数量的处理单元。在一些实施例中,核5024可以被认为是瓦片等。
主机存储器504可以是片外存储器,例如主机CPU的存储器。例如,主机存储器504可以是DDR存储器(例如,DDR SDRAM)等。与集成在一个或多个处理器内的片上存储器相比,主机存储器504可以被配置为以较低的访问速度存储大量数据,充当高级高速缓存。
存储器控制器506可以管理从全局存储器516内的特定存储器块(例如,HBM2)读数据以及向其写数据。例如,存储器控制器506可以管理来自芯片通信系统502外部(例如,来自DMA单元508或与另一个NPU相对应的DMA单元)或来自芯片通信系统502内部(例如,通过由全局管理器5022的任务管理器控制的2D网格来自核5024中的本地存储器)的读/写数据。此外,尽管在图5中示出了一个存储器控制器,但应当理解,在NPU架构500中可以提供一个以上的存储器控制器。例如,对于全局存储器516内的每个存储器块(例如,HBM2)可以存在一个存储器控制器。
存储器控制器506可以生成存储器地址并启动存储器读或写周期。存储器控制器506可包含能被一个或多个处理器写和读的若干硬件寄存器。寄存器可以包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器、以及其他类型的寄存器。这些寄存器可以指定源、目的地、传输方向(从输入/输出(I/O)设备读或向I/O设备写)、传输单元的大小、一个突发中传输的字节数、和/或存储控制器的其他典型功能的某种组合。
DMA单元508可以辅助在主机存储器504与全局存储器516之间传输数据。另外,DMA单元508可以辅助在多个NPU(例如,NPU500)之间传输数据。DMA单元508可以允许片外设备访问片上存储器和片外存储器两者而不会引起CPU中断。因此,DMA单元508还可生成存储器地址并启动存储器读或写周期。DMA单元508还可包含能被一个或多个处理器写和读的若干硬件寄存器,包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器、以及其他类型的寄存器。这些寄存器可以指定源、目的地、传输方向(从输入/输出(I/O)设备读或向I/O设备写)、传输单元的大小、和/或一个突发中传输的字节数的某种组合。应当理解,NPU架构500可以包括第二DMA单元,该第二DMA单元可以用于在其他NPU架构之间传输数据,以允许多个NPU架构直接通信而不涉及主机CPU。
JTAG/TAP控制器510可以指定专用调试端口,该专用调试端口实现用于对NPU的低开销访问的串行通信接口(例如,JTAG接口),而无需直接外部访问系统地址和数据总线。JTAG/TAP控制器510还可以具有片上测试访问接口(例如,TAP接口),该片上测试访问接口实现协议以访问一组测试寄存器,该测试寄存器提供各个部分的芯片逻辑级别和设备能力。
外设接口512(例如PCIe接口)(如果存在)充当(并且通常是)芯片间总线,提供NPU与其他设备之间的通信。
总线514包括芯片内总线和芯片间总线两者。芯片内总线将所有内部组件相互连接,这是系统架构所要求的。尽管并非所有组件都与每个其他组件连接,但所有组件确实与它们需要与之通信的其他组件具有某种连接。芯片间总线将NPU与其他设备(例如片外存储器或外设)相连。通常,如果存在外设接口512(例如,芯片间总线),则总线514仅与芯片内总线有关,尽管在某些实现中,总线514仍可以与专用总线间通信有关。
虽然图5的NPU架构500结合了本公开的实施例,但是应当理解,所公开的实施例可以应用于具有SIMD架构用于加速诸如深度学习的一些应用的芯片。这样的芯片可以是例如GPU、具有矢量处理能力的CPU、或用于深度学习的神经网络加速器。SIMD或矢量架构通常用于支持具有数据并行性的计算设备,例如图形处理和深度学习。SIMD架构可以包括多个处理元件,其中每个处理元件可以同时对多个数据点执行相同的操作。
在一些实施例中,神经网络处理器包括编译器(未示出)。编译器是将以一种编程语言编写的计算机代码转换为NPU指令以创建可执行程序的程序或计算机软件。在加工应用中,编译器可执行各种操作,例如,预处理、词法分析、解析、语义分析、输入程序到中间表示的转换、代码优化、以及代码生成、或其组合。
图6示出了与本公开的实施例一致的两层数据共享架构600的示例性实现。两层数据共享架构600包括具有2M条数据线(例如,M条输入数据线和M条输出数据线)的数据集线器640和M个处理元件610。每个处理元件610包括N个处理单元630和本地存储器620,本地存储器620是由该处理元件的N个处理单元630共享的集中式共享存储器。
在一些实施例中,每个处理元件610提供共享存储器架构,其中每个处理单元630电耦合到相邻的处理单元,并最终电连接到数据集线器640。在这种配置中,数据交换可以(1)通过在本地存储器620的存储块之间交换数据发生在同一处理元件内的SIMD通道之间,以及(2)经由数据集线器640发生在处理元件610之间。关于后者,每个本地存储器620电耦合到数据集线器640并且可以通过其对应的M条输入数据线之一将数据发送到数据集线器640。每个处理单元630也电耦合到数据集线器640,并且可以通过M条输出数据线中的相应一条从数据集线器640接收输出数据。
图7示出了与本公开的实施例一致的图6的示例性两层数据共享架构所利用的示例性处理元件和数据集线器。为了说明的目的,在图6-7所示的实施例中,M和N的值等于32并且数据宽度等于16位,但是应当理解,可以使用与所公开的实施例一致的任何合理的M值和数据宽度。然而,在实现中,M可大于或等于N。虽然M和N的较大值对于较大的设计是优选的,但是M和N的最大值可能在集成电路期间受到布局布线的限制,这进而取决于芯片制造技术。
例如,如图7所示,在较低的处理元件层,公开的示例性实施例将N个处理单元(例如,诸如图7所示的乘法器累加器归约器(MAR,multiplier accumulator reducer))组织到一个处理元件中,该处理元件使用集中式共享存储器(称为本地存储器(LM)620)用于这32个处理单元进行数据共享。并且,在图6所示的顶部数据集线器层(具有多个处理元件的数据集线器的级别),处理元件610经由数据集线器640一起连接到系统中,其中每个处理元件的本地存储器形成分布式共享存储器架构。这些本地存储器是全局寻址的,并经由数据集线器640电连接,这提供了快速共享的能力。
每个本地存储器620可以包括提供处理单元630对本地存储器620的并行访问的全端口(例如,图7中的本地存储器620的左边两个端口,其与涉及具有16位的32个连接的F.write和F.read端口相关联-针对处理元件的每个处理单元有一个连接)。全端口可用于对私有数据(例如神经网络中全连接层的权重)的SIMD访问。应当理解,存储在本地存储器620中并且直接与同一本地存储器所关联的处理单元630共享的本地数据被视为私有数据。每个本地存储器620还可以包括提供处理单元630对存储器的窄访问的窄端口(例如,图7中的本地存储器620的右边两个端口,其与涉及具有16位的1个连接的N.write和N.read端口相关联)。窄端口可用于广播共享数据或广播的共享数据。应当理解,存储在另一个本地存储器中并且与所有LM的所有处理单元630共享的远程数据被视为共享数据。
全端口和窄端口被配置为与本地存储器620中的不同存储块相关联。本地存储器620中的这些多个存储块(例如,存储块LM0至LMn,每个存储块可以是SRAM)经由多路复用器(例如,多路复用器705、710、740和745)物理地连接到所有全端口和窄端口,并且可以提供去往和来自这些端口的并发访问。例如,对于读端口,针对每个端口存在一个多路复用器(例如,针对F.read端口的多路复用器705和针对N.read端口的多路复用器710)并且都连接到每个存储块。相应地,多路复用器705和710都可以是n对1端口,其中n是本地存储器中的存储块的数量。应当理解,在存储块与多路复用器710之间可以存在一个或多个其他多路复用器。例如,在存在32个16位输出的情况下,32对1多路复用器可以选择32个输入之一来提供给N.read端口。
关于写端口,每个存储块具有一个或多个相应的2对1多路复用器,该多路复用器选择从F.write端口和N.write端口接收的输入。例如,在将数据写入存储器块的情况下,可能有32个2对1多路复用器(针对32个16位输入中的每个有一个多路复用器),该多路复用器选择从F.write或N.write端口接收的一个16位输入。可以基于核5024接收的指令来建立存储块LM0-LMn与端口之间的这些连接的配置。
例如,在一个或多个核中运行的一系列SIMD指令可能涉及32个处理元件610中的每一个的所有32个处理单元630以执行计算Aout[1024]=W[1024]*Ain[1]。在此示例中,存储块LM0-LM3用于存储数据,其中LM0存储私有数据,而LM1存储经由后级(back-staged)控制序列接收的共享数据。32个处理元件中的每一个都可以并行执行计算:
1)经由多路复用器705和F.read端口从存储块LM0通过32个连接作为16位读出权重值W[0:32](是每个处理单元630的私有数据);
2)经由多路复用器710和N.read端口从存储块LM1读出输入值Ain(在所有32个处理元件630之间共享);
3)在32个处理单元630执行W[i]*Ain计算之后,将32个结果经由F.write端口和对应于LM2的2-1多路复用器并行存储回本地存储器620中(例如,在存储块LM2中);
4)此外,与后级数据安装(例如,经由数据集线器)相关联的共享数据可以经由相应的2-1多路复用器存储到LM3。
可以使用单读/写端口(SRAM的每个存储块可以循环用作一个读存储块或一个写存储块)而不是单读/单写端口SRAM(可提供一个读和一个写)来实现每个存储块LM0-LM3的设计,这导致~30%的硅面积减少。在此示例中,存储块LM0-LM3具有相同的功能并且可以基于软件进行配置。也就是说,任何类型的数据(无论是私有数据还是共享数据)都可以存储在任何存储块中,只要它满足在任何给定时刻经由一个端口只有一个数据流通过一个专用存储块-尽管所有存储块物理连接到所有端口-以避免数据冲突。此外,应当理解,其他存储块可以存在并且取决于时钟周期可以是空闲的(idle)。
此外,在一些实施例中,当将存储在存储块中的私有数据(例如,存储在LM0中的私有数据)(经由复用器710)推入窄端口N.read时,该私有数据可与其他本地存储器共享。此后,窄端口N.read处的数据被发送到数据集线器640,并更改为共享数据,以供其他处理元件的其他处理单元进一步使用。在一些实施例中,基于存储块的配置,可以将经由数据集线器640循环的数据存储为私有数据以供以后使用。结合起来,私有数据和共享数据两者都存储在本地存储器的统一组织中。并且私有数据和共享数据通过相应的端口(全端口或窄端口)发送到相应的目的地(处理单元或数据集线器)。
此外,所公开的实施例提供了数据集线器的高效设计。假设大多数共享数据是在广播模式下访问的,则可以理解,所公开的实施例不必引入全交叉开关(例如1024至1024x16位),全交叉开关会消耗大量硬件资源用于数据共享。相反,所公开的实施例提供了一种低成本但足够高效的方式,如下所述。
如图7所示,数据集线器640的32个输入中的每个输入与每个处理元件610的窄读端口(N.read)连接。总共,存在来自32个处理元件的窄读端口的32个输入。数据集线器640的32个输出连接到每个处理元件610的多路复用器720。这给予了数据集线器640收集32个数据输入(每个处理元件一个输入)并将输入转发到32个处理元件中的任一个的能力。应当理解,被转发的32个处理元件可以不同于输入数据来自的32个处理元件。即,不同于图6的一组处理元件的第二组处理元件可以将输入数据提供到数据集线器640。
数据集线器640可以被配置为提供重排功能,这将在下面进一步描述。以这种方式,每个处理元件可以将来自另一个处理元件的共享数据馈送到处理单元(例如,MAR)中。应当理解,对于SIMD应用,所有处理元件可以并行地执行相同的操作。
此外,数据集线器640的32个16位数据输出连接到处理元件的本地存储器的全写端口(F.write)(也可以接收本地处理单元的输出)。这种配置使数据集线器能够收集32个数据输入(每个处理元件一个输入),并将它们推入图7的一个选定处理元件,使得其可以随后对整组处理元件执行归约操作。
类似地,数据集线器640可以从处理元件的全读端口(F.read)读取32个16位数据输入,并将它们并行转发到32个处理元件。从处理元件的全读端口发送出32个16位数据,并将其发送到数据集线器640的输入数据线。可以经由多路复用器720将32个16位数据同时转发到32个处理元件中的某些选定的处理元件或全部处理元件。相应地,使数据集线器640能够循环(或分散)来自32个处理元件的先前收集和处理的数据,以进行更多后续并行计算操作。
此外,数据集线器640可以提供重排功能。重排功能提供了在输入数据线与输出数据线之间重新安排(reshuffle)数据的能力。通过重排功能,可以将数据集线器640接收的来自一个处理元件的数据提供到与数据集线器640相关联的多个处理元件中的另一个处理元件。代替全连接交叉开关配置,数据集线器640可以选择性地支持在处理元件之间高效地并行交换共享数据的一些主要模式。这些模式包括广播、蝶形(XOR)、向右/向左移位、以及向右/向左旋转,如图8所示,简化为示出四对四连接。这种重排功能提供了以低的硬件资源成本在整个存储器架构中高效快速地交换数据的能力。
在一些实施例中,如图8的第一列所示,数据集线器640可以利用重排功能的广播模式来将数据从处理元件0、1、2或3广播到所有4个处理元件。在一些实施例中,重排功能可以提供移位模式,如图8的第二列所示,其中数据可以以不同的偏移(例如1、2等)向左或向右移位。在一些实施例中,重排功能可以提供旋转模式,如图8的第三列所示,其中数据可以以不同的偏移(例如1、2等)向左或向右旋转。在一些实施例中,重排功能可以提供XOR模式,如图8的第四列所示,其中数据也可以以不同的偏移(例如1、2、3等)在XOR运算中进行运算。数据集线器640的重排模式可以在相同的原理下被不同地设计,以基于设计的重排模式从相应的处理元件接收数据并将数据发送到相应的处理元件。相应地,应当理解,可以存在其他重排模式,用于在处理元件之间分发数据。
图9示出了与本公开的实施例一致的用于从集中式数据集线器分发数据的示例性方法900的流程图。方法900可以由集中式数据集线器(例如,数据集线器640)执行。集中式数据集线器可以基于来自主机CPU的命令从任务管理器接收指令。集中式数据集线器可以与多个处理元件(例如,图6的M个处理元件610)通信,其中,每个处理元件可以具有多个处理单元(例如,图6的N个处理单元610)。
在步骤910中,集中式数据集线器从具有多个处理单元(例如,处理单元630)和本地存储器(例如,本地存储器620)的多个处理元件中的处理元件(例如,图7的处理元件610)获取数据。在一些实施例中,集中式数据集线器可以从处理元件的本地存储器获取数据。例如,可以经由处理元件的多路复用器(例如,图7的与本地存储器620的窄读端口相关联的多路复用器710)来获取数据。
在步骤920中,集中式数据集线器确定所获取的数据的分发模式。可以由集中式数据集线器直接进行确定,或者基于集中式数据集线器接收的信息间接进行确定。例如,如图7所示,数据集线器640可以接收分发指示(例如,左用于左移、右用于右移、广播和XOR)。该分发指示可以来自任务管理器(例如,全局管理器5022的任务管理器),指示数据集线器640如何分发所获取的信息。
分发模式可以是用于分发数据的任何类型的模式。例如,如以上图8所示,分发模式可以包括广播、向左或向右移位、向左或向右旋转、或XOR。此外,分发模式可以提供任何偏移数据。
在步骤930中,集中式数据集线器使用确定的分发模式将所获取的数据分发到多个处理元件中的至少一些。使用分发模式,集中式数据集线器将获取的数据分发到处理单元或处理元件的本地存储器。例如,如图7所示,数据集线器640可以经由连接到多路复用器740和745的全写或窄写端口向本地存储器620提供数据,或者经由多路复用器720向一个或多个处理单元630提供数据。在分发数据之后,该方法可以结束。
图10示出了与本公开的实施例一致的用于将数据分发到处理元件的一个或多个处理单元的示例性方法1000的流程图。方法1000可以由处理元件(例如,图6和7的处理元件610)执行。
在步骤1010中,处理元件从集中式数据集线器(例如,数据集线器640)获取共享数据。在一些实施例中,所获取的共享数据可以是在图9的步骤930中分发的数据。如以上所指示的,共享数据可以被提供到处理元件的一个或多个处理单元,或者可以被提供到处理元件的本地存储器(例如,本地存储器620)。
在一些实施例中,在步骤1020中,处理元件将共享数据存储到本地存储器中的第一组一个或多个块中。此步骤是可选的,因为共享数据可以直接提供到处理元件的一个或多个处理单元,从而绕过处理元件的本地存储器。
在共享数据没有直接提供到一个或多个处理单元的情况下,处理元件可以将共享数据存储到本地存储器。共享数据可以被存储到可从存储私有数据的存储块(例如,图7的LM0)虚拟地或物理地划分的第一组一个或多个块(例如,图7的LMn)中。尽管可以将私有数据和共享数据彼此分开地存储到不同的块中,但是应当理解,私有数据和共享数据可以存储在一起。
在步骤1030中,处理元件获取私有数据。如以上所指示的,私有数据对应于由处理元件的一个或多个处理单元本地生成的数据。在步骤1040中,处理元件将私有数据存储在本地存储器中的第二组一个或多个块(例如,图7的LM0)中。如上所述,尽管可以将私有数据和共享数据彼此分开地存储到不同的块中,但是应当理解,私有数据和共享数据可以存储在一起。并且虽然在步骤1010和1020之后示出了步骤1030和1040,但是应当理解,步骤1030和1040也可以在步骤1010和1020之前执行或与之并行执行。
在步骤1050中,处理元件将存储的私有数据和共享数据作为操作数提供到处理元件的一个或多个处理单元(例如,图7的处理单元630)。如上所述,共享数据可以来自处理元件的本地存储器或集中式数据集线器。在接收到私有数据和共享数据作为操作数之后,处理单元可以使用操作数执行操作,此时在步骤1060中,处理元件从一个或多个处理单元生成一个或多个结果。如前所述,这些操作可以基于乘法、加法、乘法-累加、乘法-累加-归约等中的一个或多个。所生成的结果可以作为私有数据存储在处理元件的本地存储器中。例如,如图7所示,来自处理单元的结果经由全写端口提供到本地存储器620(注释为处理单元的结果提供到LM.F和多路复用器730从处理单元(PU)接收数据)。结果可以进一步存储到本地存储器的存储块中。例如,结果可以存储在存储块LM0或另一存储块(例如,诸如LM1)中。生成结果后,该方法可以结束。
由于2层架构设计,所公开的实施例提供了集中式和分布式共享存储器架构的技术优势。在较低层,所公开的存储器架构的实施例提供了直接且快速的方式在与同一本地存储器相关联的32个处理单元之间共享数据。在顶层,一方面,所公开的存储器架构的实施例使用分布式共享存储器的构思来解决集中式存储器架构的可扩展性问题。顶层使得能够在不同本地存储器的处理单元之间交换数据。数据集线器提供了在32个分布式共享本地存储器之间快速交换数据的成本高效方式。这些特征克服了传统的包括全交叉开关方法的分布式共享存储器架构的问题,以及以上描述的性能和复杂性问题。这种分层嵌套拓扑克服了分布式共享存储器架构的数据访问慢的缺点,并在硬件和资源合理消耗之间取得了平衡。
在方法步骤或过程的一般上下文中描述了本文描述的各种示例实施例,该方法步骤或过程可以在一个方面中由体现在计算机可读介质中的计算机程序产品来实现,包括计算机可执行指令,例如程序代码,由联网环境中的计算机执行。例如,应当理解,指令可以引起向集中式数据集线器发送分发指示,该集中式数据集线器可以根据与该分发指示关联的分发模式来分发共享数据。计算机可读介质可以包括可移除和不可移除存储设备,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、压缩盘(CD)、数字通用光盘(DVD)等。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。计算机可执行指令、相关联的数据结构和程序模块表示用于执行本文公开的方法的步骤的程序代码的示例。这样的可执行指令或相关联的数据结构的特定序列表示用于实现在这样的步骤或过程中描述的功能的相应动作的示例。
在前述说明书中,已经参考了可以随实现而变化的许多具体细节描述了实施例。可以对所描述的实施例进行某些调整和修改。通过考虑本文公开的发明的说明书和实践,其他实施例对于本领域技术人员而言可以是显而易见的。说明书和示例旨在仅被认为是示例性的,本发明的真实范围和精神由所附权利要求指示。图中所示的步骤顺序也旨在仅用于说明目的,并且不旨在限于任何特定的步骤顺序。这样,本领域技术人员可以理解,在实现相同方法时,可以以不同次序执行这些步骤。
在附图和说明书中,已经公开了示例性实施例。然而,可以对这些实施例进行许多变化和修改。相应地,尽管采用了特定术语,但是它们仅在一般性和描述性意义上使用,而不是出于限制的目的,实施例的范围由所附权利要求限定。
Claims (21)
1.一种处理器,所述处理器包括:
存储器架构,所述存储器架构具有M数量处理元件,每个处理元件具有至少N数量处理单元、以及本地存储器,其中,M、N包括大于1的整数,并且所述存储器架构包括:
所述M数量处理元件中的第一处理元件,所述第一处理元件包括:
被配置为执行计算操作的第一组N数量处理单元,以及
被配置为存储能够被所述N数量处理单元利用的数据的第一本地存储器;以及
数据集线器,所述数据集线器能够从所述M数量处理元件接收数据,并且能够将共享数据从所述M数量处理元件中的一个提供到所述M数量处理元件中的其他处理元件;
其中,所述第一本地存储器具有全写端口、全读端口、窄写端口和窄读端口,所述第一本地存储器的第一组一个或多个存储块被配置为经由所述全写端口获取私有数据并经由所述全读端口发送私有数据,并且所述第一本地存储器的第二组一个或多个存储块被配置为经由所述窄写端口获取共享数据并经由所述窄读端口发送共享数据。
2.根据权利要求1所述的处理器,其中,所述第一处理元件包括:
第一多路复用器,所述第一多路复用器被配置为从所述数据集线器接收共享数据并将所述共享数据提供到所述第一本地存储器。
3.根据权利要求1和2中任一项所述的处理器,其中,所述数据集线器被配置为将所述共享数据提供到第二多路复用器,所述第二多路复用器被配置为将所述共享数据提供到所述第一组N数量处理单元中的一个或多个。
4.根据权利要求1至2中任一项所述的处理器,其中,所述第一本地存储器包括第一组一个或多个存储块,被配置为存储将由所述第一组N数量处理单元中的至少一个利用的私有数据;以及第二组一个或多个存储块,被配置为存储从所述数据集线器接收的共享数据。
5.根据权利要求1所述的处理器,其中,所述数据集线器被配置为经由所述窄读端口从所述第一本地存储器接收共享数据。
6.根据权利要求1所述的处理器,其中,所述数据集线器被配置为经由所述全写端口将共享数据发送到所述第一组一个或多个存储块。
7.根据权利要求1所述的处理器,其中,所述数据集线器被配置为经由所述窄写端口将共享数据发送到所述第二组一个或多个存储块。
8.根据权利要求1至2、5至7中任一项所述的处理器,其中,所述N数量与所述M数量相同。
9.根据权利要求1至2、5至7中任一项所述的处理器,其中,所述数据集线器被配置为使用分发模式来分发共享数据。
10.根据权利要求9所述的处理器,其中,所述分发模式包括广播模式、XOR模式、移位模式或旋转模式。
11.根据权利要求1所述的处理器,其中,所述数据集线器被配置为将共享数据发送到N数量处理单元中的第一个。
12.一种由集中式数据集线器执行的方法,所述集中式数据集线器能够与M数量处理元件通信,每个处理元件具有至少N数量处理单元、以及第一本地存储器,所述第一本地存储器具有全写端口、全读端口、窄写端口和窄读端口,所述第一本地存储器的第一组一个或多个存储块被配置为经由所述全写端口获取私有数据并经由所述全读端口发送私有数据,并且所述第一本地存储器的第二组一个或多个存储块被配置为经由所述窄写端口获取共享数据并经由所述窄读端口发送共享数据;
所述方法包括:
从M数量处理元件中的处理元件获取数据;
确定针对获取的数据的分发模式;以及
使用所述分发模式将获取的数据分发到所述M数量处理元件中的至少一个或多个的。
13.根据权利要求12所述的方法,其中,所述分发模式包括广播模式、XOR模式、移位模式或旋转模式。
14.根据权利要求13所述的方法,其中,所述分发模式包括指示如何使用所述分发模式来分发获取的数据的偏移。
15. 根据权利要求12至14中任一项所述的方法,其中,确定所述分发模式包括:
接收分发指示;以及
基于所述分发指示确定所述分发模式。
16.一种由耦合到集中式数据集线器的多个处理元件中的处理元件执行的方法,所述处理元件包括被配置为执行计算操作的第一组N数量处理单元,以及,被配置为存储能够被所述N数量处理单元利用的数据的第一本地存储器,所述第一本地存储器具有全写端口、全读端口、窄写端口和窄读端口,所述第一本地存储器的第一组一个或多个存储块被配置为经由所述全写端口获取私有数据并经由所述全读端口发送私有数据,并且所述第一本地存储器的第二组一个或多个存储块被配置为经由所述窄写端口获取共享数据并经由所述窄读端口发送共享数据;
所述方法包括:
从所述集中式数据集线器获取共享数据;
获取所述处理元件本地的私有数据;
将所述私有数据存储在所述处理元件的本地存储器中;
将所述共享数据和存储的私有数据作为操作数提供到所述处理元件的一个或多个处理单元;以及
根据由相应的一个或多个处理单元执行的一个或多个操作生成一个或多个结果。
17. 根据权利要求16所述的方法,还包括:将获取的共享数据存储在所述本地存储器中。
18.根据权利要求17所述的方法,其中,将获取的共享数据存储在所述本地存储器中包括:将所述共享数据存储在所述本地存储器中的第一组一个或多个块中,并且
其中,将所述私有数据存储在所述本地存储器中包括:将所述私有数据存储在所述本地存储器中的第二组一个或多个块中。
19.根据权利要求16所述的方法,其中,获取的共享数据被直接提供到所述处理元件的所述一个或多个处理单元,而不被存储在所述本地存储器中。
20.根据权利要求16至19中任一项所述的方法,其中,获取的私有数据对应于由所述处理元件的所述一个或多个处理单元生成的数据。
21.根据权利要求16至19中任一项所述的方法,还包括:将生成的一个或多个结果存储在所述本地存储器中。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762610098P | 2017-12-22 | 2017-12-22 | |
US62/610,098 | 2017-12-22 | ||
US16/201,904 US10922258B2 (en) | 2017-12-22 | 2018-11-27 | Centralized-distributed mixed organization of shared memory for neural network processing |
US16/201,904 | 2018-11-27 | ||
PCT/US2018/067241 WO2019126722A1 (en) | 2017-12-22 | 2018-12-21 | A centralized-distributed mixed organization of shared memory for neural network processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111630487A CN111630487A (zh) | 2020-09-04 |
CN111630487B true CN111630487B (zh) | 2023-06-20 |
Family
ID=66951168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880074327.XA Active CN111630487B (zh) | 2017-12-22 | 2018-12-21 | 用于神经网络处理的共享存储器的集中式-分布式混合组织 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10922258B2 (zh) |
EP (1) | EP3729261B1 (zh) |
JP (1) | JP2021507386A (zh) |
CN (1) | CN111630487B (zh) |
WO (1) | WO2019126722A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11461622B2 (en) * | 2019-06-28 | 2022-10-04 | Amazon Technologies, Inc. | Dynamic code loading for multiple executions on a sequential processor |
US11055003B2 (en) * | 2019-08-20 | 2021-07-06 | Micron Technology, Inc. | Supplemental AI processing in memory |
US11947959B2 (en) * | 2019-09-10 | 2024-04-02 | Micron Technology, Inc. | Re-using processing elements of an artificial intelligence processor |
CN113094183B (zh) * | 2021-06-09 | 2021-09-17 | 苏州浪潮智能科技有限公司 | Ai训练平台的训练任务创建方法、装置、系统及介质 |
CN113780541A (zh) * | 2021-09-01 | 2021-12-10 | Oppo广东移动通信有限公司 | 神经网络加速器、数据处理装置及神经网络加速方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999000819A2 (en) * | 1997-06-30 | 1999-01-07 | Sun Microsystems, Inc. | Packet routing switch for controlling access at different data rates to a shared memory |
WO1999000736A1 (en) * | 1997-06-30 | 1999-01-07 | Sun Microsystems, Inc. | Method and apparatus for arbitrating access to a shared memory by network ports operating at different data rates |
CN1531275A (zh) * | 2003-03-13 | 2004-09-22 | 马维尔国际贸易有限公司 | 使用多端口存储器的体系结构、装置、系统及其使用方法 |
CN101006437A (zh) * | 2004-08-13 | 2007-07-25 | ClearSpeed科技公司 | 处理器存储系统 |
US7680988B1 (en) * | 2006-10-30 | 2010-03-16 | Nvidia Corporation | Single interconnect providing read and write access to a memory shared by concurrent threads |
CN102047241A (zh) * | 2008-05-30 | 2011-05-04 | 先进微装置公司 | 本地与全局数据共享 |
CN203706196U (zh) * | 2014-02-10 | 2014-07-09 | 东南大学 | 一种粗粒度可重构层次化的阵列寄存器文件结构 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0509055A4 (en) * | 1990-01-05 | 1994-07-27 | Maspar Computer Corp | Parallel processor memory system |
US6718457B2 (en) * | 1998-12-03 | 2004-04-06 | Sun Microsystems, Inc. | Multiple-thread processor for threaded software applications |
US7136958B2 (en) | 2003-08-28 | 2006-11-14 | Micron Technology, Inc. | Multiple processor system and method including multiple memory hub modules |
US8316220B2 (en) * | 2005-09-27 | 2012-11-20 | Sony Computer Entertainment Inc. | Operating processors over a network |
US8195883B2 (en) * | 2010-01-27 | 2012-06-05 | Oracle America, Inc. | Resource sharing to reduce implementation costs in a multicore processor |
WO2012012440A1 (en) | 2010-07-19 | 2012-01-26 | Advanced Micro Devices, Inc. | Data processing using on-chip memory in multiple processing units |
US20120254591A1 (en) * | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
EP3373105B1 (en) | 2012-03-30 | 2020-03-18 | Intel Corporation | Apparatus and method for accelerating operations in a processor which uses shared virtual memory |
US20150113092A1 (en) | 2013-10-23 | 2015-04-23 | Futurewei Technologies, Inc. | Method and apparatus for distributed enterprise data pattern recognition |
US10910089B2 (en) | 2015-03-20 | 2021-02-02 | Universal Patient Key, Inc. | Methods and systems providing centralized encryption key management for sharing data across diverse entities |
US10353860B2 (en) | 2015-10-08 | 2019-07-16 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with neural processing units dynamically configurable to process multiple data sizes |
-
2018
- 2018-11-27 US US16/201,904 patent/US10922258B2/en active Active
- 2018-12-21 EP EP18892067.2A patent/EP3729261B1/en active Active
- 2018-12-21 WO PCT/US2018/067241 patent/WO2019126722A1/en unknown
- 2018-12-21 JP JP2020533025A patent/JP2021507386A/ja active Pending
- 2018-12-21 CN CN201880074327.XA patent/CN111630487B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999000819A2 (en) * | 1997-06-30 | 1999-01-07 | Sun Microsystems, Inc. | Packet routing switch for controlling access at different data rates to a shared memory |
WO1999000736A1 (en) * | 1997-06-30 | 1999-01-07 | Sun Microsystems, Inc. | Method and apparatus for arbitrating access to a shared memory by network ports operating at different data rates |
CN1531275A (zh) * | 2003-03-13 | 2004-09-22 | 马维尔国际贸易有限公司 | 使用多端口存储器的体系结构、装置、系统及其使用方法 |
CN101006437A (zh) * | 2004-08-13 | 2007-07-25 | ClearSpeed科技公司 | 处理器存储系统 |
US7680988B1 (en) * | 2006-10-30 | 2010-03-16 | Nvidia Corporation | Single interconnect providing read and write access to a memory shared by concurrent threads |
CN102047241A (zh) * | 2008-05-30 | 2011-05-04 | 先进微装置公司 | 本地与全局数据共享 |
CN203706196U (zh) * | 2014-02-10 | 2014-07-09 | 东南大学 | 一种粗粒度可重构层次化的阵列寄存器文件结构 |
Non-Patent Citations (4)
Title |
---|
Yi Wang等.NameFilter: Achieving fast name lookup with low memory cost via applying two-stage Bloom filters.《2013 Proceedings IEEE INFOCOM》.2013,全文. * |
宋广华,杨长生,叶澄清,朱传琪.一种高性能的共享存储多机系统(SMMP)体系结构――高性能共享存储与高速I/O.计算机工程与应用.1998,(第02期),全文. * |
曹生明 ; .一种构建双端口共享存储器的方法.电子工程师.2008,(11),全文. * |
柳沁 ; .NiosⅡ处理器的两类外设接口设计.单片机与嵌入式系统应用.2007,(11),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111630487A (zh) | 2020-09-04 |
US10922258B2 (en) | 2021-02-16 |
EP3729261A1 (en) | 2020-10-28 |
EP3729261B1 (en) | 2022-09-14 |
JP2021507386A (ja) | 2021-02-22 |
EP3729261A4 (en) | 2021-01-06 |
WO2019126722A1 (en) | 2019-06-27 |
US20190197001A1 (en) | 2019-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111630487B (zh) | 用于神经网络处理的共享存储器的集中式-分布式混合组织 | |
US11677662B2 (en) | FPGA-efficient directional two-dimensional router | |
CA3125707C (en) | Virtualization of a reconfigurable data processor | |
US11237880B1 (en) | Dataflow all-reduce for reconfigurable processor systems | |
US20240241641A1 (en) | Packet routing between memory devices and related apparatuses, methods, and memory systems | |
TWI640003B (zh) | 用於邏輯/記憶體器件之裝置及方法 | |
US11847395B2 (en) | Executing a neural network graph using a non-homogenous set of reconfigurable processors | |
CN111630505B (zh) | 深度学习加速器系统及其方法 | |
EP3298740A1 (en) | Directional two-dimensional router and interconnection network for field programmable gate arrays, and other circuits, and applications of the router and network | |
US9965187B2 (en) | Near-memory data reorganization engine | |
CN111656339B (zh) | 存储器装置及其控制方法 | |
JP4564065B2 (ja) | マルチスレッド、マルチプロセシングのシステムオンチップ・ネットワーク・プロセッサ・ユニットのために拡張性があり、高機能で、大規模な相互接続スキーム | |
US20230244748A1 (en) | Matrix Multiplication on Coarse-grained Computing Grids | |
WO2022088171A1 (en) | Neural processing unit synchronization systems and methods | |
Bear | A Novel Processing-In-Memory Architecture for Dense and Sparse Matrix Multiplications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240229 Address after: 5th Floor, No. 2, Lane 55, Chuanhe Road, No. 366 Shangke Road, Pudong New Area Free Trade Pilot Zone, Shanghai Patentee after: Pingtouge (Shanghai) semiconductor technology Co.,Ltd. Country or region after: China Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Patentee before: ALIBABA GROUP HOLDING Ltd. Country or region before: Cayman Islands |