CN111630502B - 用于神经网络处理器的统一存储器组织 - Google Patents
用于神经网络处理器的统一存储器组织 Download PDFInfo
- Publication number
- CN111630502B CN111630502B CN201880074349.6A CN201880074349A CN111630502B CN 111630502 B CN111630502 B CN 111630502B CN 201880074349 A CN201880074349 A CN 201880074349A CN 111630502 B CN111630502 B CN 111630502B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- unified
- memory
- target
- 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
- 238000013528 artificial neural network Methods 0.000 title description 23
- 230000008520 organization Effects 0.000 title description 8
- 238000012545 processing Methods 0.000 claims abstract description 105
- 238000004891 communication Methods 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 20
- 238000013135 deep learning Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003754 machining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000946 synaptic effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/0646—Configuration or reconfiguration
- G06F12/0692—Multiconfiguration, e.g. local and global 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- 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
Abstract
本公开涉及一种具有统一存储介质和一个或多个处理单元的统一存储器装置。该统一存储器装置可以包括具有第一多个存储单元的第一存储模块和具有第二多个存储单元的第二存储模块,所述第一多个存储单元和所述第二多个存储单元中的每一个被配置为存储数据并由唯一单元标识符标识。所述一个或多个处理单元与所述统一存储介质通信,并且所述处理单元被配置为从所述第一多个存储单元中的一个接收第一输入数据,从所述第二多个存储单元中的一个接收第二输入数据,并基于所述第一输入数据和所述第二输入数据生成输出数据。
Description
相关申请的交叉引用
本申请基于2017年12月22日提交的美国临时申请No.62/610,119和2018年5月18日提交的美国专利申请No.15/984,255并要求其优先权,上述申请的全部内容通过引用合并于此。
背景技术
随着基于神经网络的深度学习应用(例如图像识别、语言/语音识别和机器翻译)呈指数增长,基于商品中央处理单元/图形处理单元(CPU/GPU)的平台不再是合适计算基础来支持性能、功率效率和经济可扩展性方面不断增长的计算需求。开发神经网络处理器以加速基于神经网络的深度学习应用已在许多业务领域获得了重大关注,包括成熟的芯片制造商、初创公司以及大型互联网公司。单指令多数据(SIMD)架构能应用于芯片以加速深度学习应用的计算。
在具有SIMD架构的计算机中,并行的多个处理单元、算术逻辑单元(ALU)或小型CPU中的每一个使用它们自己的数据同时进行计算-通常为2或3个输入操作数和1个输出结果。这些数据存储在存储器中,并且并行独立地访问。因此,每个处理单元可以具有存储器的专用分区和对存储器的分区的专用访问端口。实际上,许多算法具有一些共享数据,这些数据可以存储在某个共享存储器中(以节省存储成本),并作为操作数之一广播到所有处理单元。
为了在SIMD架构中启用并行访问,硬件通常会引入物理上分离的私有存储器模块和共享存储器模块来保存相应类型的数据。然而,这样的存储器组织有两个问题。
首先,由于每个硬件存储器模块的大小是固定的,而不同的软件程序具有不同的数据大小,因此这些模块的利用效率低下,导致了物理存储器空间的浪费。其次,当先前认为的“私有”数据在程序的后续阶段变为“共享”数据时,必须执行专用存储器复制操作。这导致额外的功耗和处理单元性能的降低。
发明内容
本公开的实施例提供了一种统一存储器装置。所述统一存储器装置可以包括统一存储介质,所述统一存储介质包括:第一存储模块,所述第一存储模块具有被配置为存储数据的第一多个存储单元,所述第一多个存储单元由唯一单元标识符来标识;以及第二存储模块,所述第二存储模块具有被配置为存储数据的第二多个存储单元,所述第二多个存储单元由唯一单元标识符来标识。统一存储器架构还可包括与所述统一存储介质通信的处理单元。所述处理单元可以被配置为从所述第一多个存储单元中的一个接收第一输入数据,从所述第二多个存储单元中的一个接收第二输入数据,并基于所述第一输入数据和所述第二输入数据生成输出数据。
本公开的一些实施例提供了一种统一存储介质。所述统一存储介质可以包括:第一存储模块,所述第一存储模块具有被配置为存储数据的第一多个存储单元,所述第一多个存储单元由唯一单元标识符来标识;以及第二存储模块,所述第二存储模块具有被配置为存储数据的第二多个存储单元,所述第二多个存储单元由唯一单元标识符来标识。
本公开的一些实施例提供了一种用于在具有统一存储介质和一个或多个处理单元的统一存储器装置中组织数据的方法。所述方法可以包括:配置所述统一存储介质的第一存储模块,以与所述一个或多个处理单元通信,并且包括被配置为存储数据的第一多个存储单元,所述第一多个存储单元由唯一单元标识符来标识。所述方法还可以包括:配置所述统一存储介质的第二存储模块,以与所述一个或多个处理单元通信,并且包括被配置为存储数据的第二多个存储单元,所述第二多个存储单元由唯一单元标识符来标识。所述方法还包括:将所述一个或多个处理单元中的处理单元配置为:从所述第一多个存储单元中的一个接收第一输入数据,从所述第二多个存储单元中的一个接收第二输入数据,并基于所述第一输入数据和所述第二输入数据生成输出数据。
本公开的一些实施例提供了一种用于在具有第一存储模块和第二存储模块的统一存储介质中组织数据的方法。所述方法可以包括:配置所述统一存储介质的所述第一存储模块,以与一个或多个处理单元通信,并包括被配置为存储数据的第一多个存储单元,所述第一多个存储单元由唯一单元标识符来标识;以及配置所述统一存储介质的所述第二存储模块,以与一个或多个处理单元通信,并包括配置为存储数据的第二多个存储单元,所述第二多个存储单元由唯一单元标识符来标识。
所述第一多个存储单元和所述第二多个存储单元的唯一单元标识符可以包括位地址,所述位地址包括第一多个位和第二多个位。所述第一多个位可以指示所述第一存储模块和所述第二存储模块中的目标存储模块,并且所述第二多个位可以指示在所述目标存储模块内的所述第一多个存储单元和所述第二多个存储单元中的目标存储单元。所述第二多个位可以进一步指示与所述目标存储单元相关联的特性,所述目标存储单元的特性是私有或共享之一。在一些实施例中,所述第一存储模块和所述第二存储模块被配置为与相应的处理单元通信。所述处理单元被配置为从私有存储单元接收第一输入数据,并且从共享存储单元接收第二输入数据。所述统一存储介质和所述处理单元被配置为由软件代码或软件程序统一寻址。所述统一存储介质还被配置为从编译器接收指令,所述指令包括与所述数据相关联的特性,其中,与所述数据相关联的特性是私有或共享之一。所述私有存储单元被配置为存储私有数据,并且所述共享存储单元被配置为存储能在所述多个处理单元之间共享的共享数据。
附图说明
图1示出了与本公开的实施例一致的示例性神经网络处理单元(NPU)架构。
图2A示出了与本公开的实施例一致的神经网络处理器的层的示例性功能。
图2B示出了与本公开的实施例一致的示例性硬件神经网络处理器。
图3示出了与本公开的实施例一致的多层网络中的数据共享。
图4A示出了与本公开的实施例一致的包括存储器模块的统一组织的示例性硬件的示意图。
图4B示出了与本公开的实施例一致的统一存储介质的示例性存储单元。
图5示出了与本公开的实施例一致的示例性数据组织操作的处理流程图。
具体实施方式
现在将详细参考示例性实施例,其示例在附图中示出。以下描述参考附图,其中除非另外表示,否则不同附图中的相同数字表示相同或相似的元素。在示例性实施例的以下描述中阐述的实现并不代表与本发明一致的所有实现。相反,它们仅是与如所附权利要求中所述的本发明的相关方面一致的装置和方法的示例。
所公开的实施例提供了用于组织存储在统一存储器架构中的数据并访问其目标数据的系统和方法。所公开的实施例可以通过以统一的方式组织物理私有和共享存储器来解决常规SIMD架构的前述问题。所公开的实施例维护用于逻辑私有和共享存储器的物理存储器的单个模块,并且可以通过访问指令来切换“私有”或“共享”视图,同时将数据本身保持在其在物理存储器中的原始位置。
图1示出了示例性神经网络处理单元(NPU)架构100。NPU架构100可以包括片上通信系统110、片外存储器120、存储器控制器130、直接存储器访问(DMA)单元140、联合测试动作组(JTAG)/测试访问端(TAP)控制器150、外围组件快速互连(PCIe)接口160、芯片间链路170等。应当理解,片上通信系统110可以基于所传送的数据来执行算术操作。
片上通信系统110可包括全局管理器112和多个瓦片(tile)116。全局管理器112可包括一个或多个集群管理器114,其被配置为与一个或多个瓦片116协调。每个集群管理器114可以与瓦片116的阵列相关联,瓦片116提供神经网络的突触/神经元电路。例如,图1的瓦片的顶层可以提供表示神经网络的输入层的电路,而瓦片的第二层可以提供表示神经网络的隐藏层的电路。如图1所示,全局管理器112可以包括被配置为与瓦片116的两个阵列进行协调的两个集群管理器114。瓦片116可以包括一个或多个乘法器、加法器、乘法累加器(例如,SIMD架构的一组乘法累加器)和相应的存储器,并且可以配置为在全局管理器112的控制下对所传送的数据执行操作(例如,一个或多个算法计算)。
片外存储器120可以包括只读存储器(ROM)、可擦除可编程只读存储器(EPROM)等。与集成在一个或多个处理器内的片上存储器相比,片外存储器120可以被配置为以较慢的访问速度存储大量数据。
存储器控制器130可以读、写或刷新一个或多个存储器设备。存储器设备可以包括片上存储器和片外存储器120。例如,存储器设备可以被实现为任何类型的易失性或非易失性存储器设备或其组合,例如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、闪存、或者磁盘或光盘。
DMA单元140可以生成存储器地址并启动存储器读或写周期。DMA单元140可包含能被一个或多个处理器写和读的若干硬件寄存器。寄存器可以包括存储器地址寄存器、字节计数寄存器和一个或多个控制寄存器。这些寄存器可以指定源、目的地、传输方向(从输入/输出(I/O)设备读或向I/O设备写)、传输单元的大小、和/或一个突发中传输的字节数的某种组合。
JTAG/TAP控制器150可以指定专用调试端口,该专用调试端口实现用于低开销访问的串行通信接口(例如,JTAG接口),而无需直接外部访问系统地址和数据总线。JTAG/TAP控制器150还可以指定片上测试访问接口(例如,TAP接口),该片上测试访问接口实现协议以访问一组测试寄存器,该测试寄存器提供了各个部分的芯片逻辑级别和设备能力。
外围接口160可以支持任何两个端点之间的全双工通信,而对跨多个端点的并发访问没有固有的限制。
芯片间链接170可以彼此连接NPU架构100的所有内部组件,例如片上通信系统110、片外存储器120、存储器控制器130、DMA单元140、JTAG/TAP控制器150和PCIe接口160。
尽管NPU架构100结合了本公开的实施例,但是应当理解,所公开的实施例可以应用于具有SIMD架构用于加速诸如深度学习的一些应用的芯片。这样的芯片可以是例如GPU、具有矢量处理能力的CPU或用于深度学习的神经网络加速器。SIMD或矢量架构通常用于支持具有数据并行性的计算设备,例如图形处理和深度学习。SIMD架构可以包括多个处理元件,其中每个处理元件可以同时对多个数据点执行相同的操作。
例如,私有存储器可以是专用于为多个并行处理元件中的每个单个处理元件提供数据的存储器,而共享存储器可以指专用于为所有并行处理元件提供数据的存储器。
图2A示出了包括软件算法210和硬件220的神经网络的层200的示例性功能。硬件220可以包括私有存储器模块230、处理单元阵列240、共享存储器模块250、写缓冲器260、输入操作数270、输出操作数280等。在一些实施例中,硬件220可以位于瓦片(例如,图1的瓦片116)中。
在一些实施例中,处理单元阵列240的处理单元可以是算术逻辑单元(ALU)、浮点单元(FPU)、CPU、GPU等。ALU是计算电路(包括计算机的CPU)的基本构建块。单个CPU可以包含一个或多个ALU。通常,ALU是对整数二进制数执行算术和按位运算的组合数字电子电路。处理单元阵列240可以包括多个处理单元242、244、246和248,例如,如图2B所示的处理单元阵列。
私有存储器模块230可以被划分成单独的私有存储器块,使得多个处理单元242、244、246和248中的每个具有对应的私有存储器块232、234、236和238,如图2B所示。
输入操作数270可以是由处理单元阵列240操作的输入数据。在一些实施例中,图2A的输入操作数270可以包括一个或多个私有输入操作数272和一个或多个共享输入操作数274,如图2B所示。私有输入操作数272可以存储在私有存储器模块230中,共享输入操作数274可以存储在共享存储器模块250中。
在神经网络的应用中,软件算法210具有共享数据,该共享数据可以存储在共享存储器模块250中,并可以广播到处理单元阵列240的多个处理单元242、244、246和248中的每个,作为共享操作数274。例如,图2A所示的算法计算以下矢量运算:
A=sigmoid(b+X*W1)(等式1)
这是深度学习算法中经常调出的神经网络的层200中的代表运算。参考等式1,“b”可以包括常数值,“X”可以包括共享输入操作数274,“W1”可以包括私有输入操作数272。
参考图2A,矢量大小可以设置为任何自然数。这里,以4的矢量大小为例,并且使用4路SIMD硬件来计算矢量。处理单元242、244、246和248可以并行计算以下运算:
a1=sigmoid(b+x1*W11+x2*W121+x3*W131+x4*W141) (等式2)
a2=sigmoid(b+x1*W112+x2*W122+x3*W132+x4*W142) (等式3)
a3=sigmoid(b+x1*W113+x2*W123+x3*W133+x4*W143) (等式4)
a4=sigmoid(b+x1*W114+x2*W124+x3*W134+x4*W144) (等式5)
图2A中的阴影框和虚线表示如何计算“a1”。根据该计算,可以理解,“W1”阵列的每一列中的数据对于处理单元阵列240的相应处理单元而言是本地的,并且该数据可以相应地作为私有输入操作数272存储在私有存储器模块230的相应存储器块中。例如,W1阵列的第一、第二、第三和第四列中的每一列中的数据都可以作为私有输入操作数存储在私有存储器模块230的相应存储器块232、234、236和238中。
参考图2A,W1阵列可以包括存储的数据的矩阵,其中矩阵的每个元素表示为Wlij或Wl_ij(如后所示),其中“i”表示矩阵中的行号,“j”表示列号。例如,在等式2中,W141表示存储在位于W1阵列的第4行和第1列的元素中的数据。也可以使用其他公知的符号来对矩阵中的元素寻址。
同时,X阵列中的数据被所有处理单元242、244、246和248使用,并且相应地作为共享输入操作数274存储在共享存储器模块250中,并广播到从共享存储器模块250进行读取的所有组件。等式2-5表示在神经网络处理器的层200中执行的示例性操作,被设计为计算a1、a2、a3和a4。
在一些实施例中,机器学习或深度学习包括训练神经网络处理器以基于输入数据来生成最终结果,这是通过实现用于一层或多层神经处理的算法来实现的。例如,图2A的层200表示包括配置为使用偏置b、存储在X阵列中的数据和存储在W1阵列中的数据来执行运算的算法的第一层。第二层和第三层(未示出)可以包括使用偏差b、存储在X阵列中的数据以及存储在W2和W3阵列中的数据的算法。每层可以包括偏差b的不同值和存储在“W”阵列中的不同参数。
参考图2A,例如,阵列X可以包括不同类别的个人分数。阵列X的x1值可以是学生A的数学分数,x2可以是英语分数,x3可以是历史分数,x4可以是科学分数。最终结果可以是基于分数(输入数据)将准许还是拒绝个人入学。如图2A所示,并在等式2-5中描述,数据x1-x4是“共享的”并且在计算a1-a4时是共同的。
图3示出了多层网络中的数据共享。如本文所描述的,数据共享是指先前的私有数据如何能在程序的后续阶段中成为共享数据。在一些实施例中,神经网络架构300包括多层,例如,层310和320。在一些实施例中,层310的输出操作数280可以用作层320的输入操作数270。在一些实施例中,一层的输出操作数280可以被一层或多层用作输入操作数270。
例如,在层310中,a1由私有存储器模块230的处理单元242计算。a1中的数据成为层320的广播输入。通常,神经网络可以按层组织。每一层都可以对其输入执行一个或多个计算并生成输出。一层的输出可以传递到下一层用于进一步处理。例如,前一层的输出可以是下一层的输入。因此,必须将本地生成的“a”存储回共享存储器250,或存储到私有存储器230,之后再复制到共享存储器250。
作为存储在私有存储器230中并且之后复制到共享存储器250的替代解决方案,来自a1的输出操作数280可以直接存储回共享存储器250而不是存储器复制。但是,此替代解决方案仍可能会使程序变慢。由于单个处理单元(例如处理单元242)每个周期只能完成一个乘加运算,例如Xi*Wl_ij,因此“a”的每个计算会在多个周期内执行。为此,在每个周期中仅从私有存储器230读出W1_ij的一个操作数,因此从共享存储器250只需要一个“X”。因此,每个存储器模块的通用设计是每周期单读/单写。当在最后周期中多个处理单元同时生成所有“a”时,共享存储器250可能无法将它们全部写回。
在一些实施例中,引入写缓冲器260以允许共享存储器250有更多的时间来分别消耗这些输出操作数280。然而,当处理单元阵列240的输出速度快于写缓冲器260的宽度、例如A的大小大于X时,写缓冲器260可能传播背压,迫使处理单元阵列240变慢,导致整体程序执行速度变慢。
图4A示出了包括存储器模块的统一组织的示例性硬件系统400的示意图。硬件系统400包括统一存储介质405以及处理单元242、244、246和248。统一存储介质405包括一个或多个存储模块410,每个存储模块包括配置为存储输入操作数270、输出数据280的存储单元430。多个存储模块410可以合并到单个介质中以形成统一存储介质405。每个存储模块410可以包括私有存储模块412和共享存储模块414。
硬件系统400可以包括多个处理单元242、244、246和248。处理单元阵列240的多个处理单元中的每一个被配置为与一个或多个存储模块通信。例如,处理单元242可以从私有存储模块412接收私有输入操作数272。处理单元242也可以从一个或多个共享存储模块414接收共享输入操作数274。在一些实施例中,处理单元阵列240被配置为从私有存储模块412接收私有输入操作数272,从共享存储模块414接收共享输入操作数274,并基于私有输入操作数272和共享输入操作数274生成输出操作数280。
如图4B所示,每个存储单元430可以由唯一标识符440唯一地标识。唯一标识符440可以是包括高阶位442和低阶位444的位地址,或者是包括高阶字节和低阶字节的字节地址,或其组合。在计算中,高阶位442可以是最高有效位(MSB)。由于将更高有效数字更向左写入的位置计数法约定,MSB也可称为最左位。另一方面,低阶位444被称为最右位置中的位。例如,在具有位地址“2_E5”的唯一标识符440中,高阶位442是指最左边的位,即“2”,低阶位444是指右边的位,即“E5”。
在一些实施例中,存储单元430是私有存储单元432或共享存储单元434。私有存储单元432可以位于私有存储模块412内。共享存储单元434可以位于共享存储模块414内。唯一标识符440的高阶位442被配置为指示针对操作数(270、280)的目标存储模块,并且唯一标识符440的低阶位444被配置为指示针对操作数(270、280)的目标存储模块内的目标存储单元。例如,具有位地址“2_E5”的唯一标识符440是指存储模块“2”,以及存储模块“2”内的存储单元“E5”。换句话说,高阶位442还可以指示存储模块“私用”于的处理单元,而低阶位444指示存储模块内的位置。
应当理解,私有存储单元432和共享存储单元434是物理上无法区分的存储单元,并且没有这样被预先标记。存储单元的“私有”和“共享”属性是基于编译器生成的为寻址数据而编程的指令确定的。例如,数据可以存储在任何单元中。在读步骤中,如果编译器生成的指令将数据称为“私有”,则可以并行读出数据作为私有输入操作数272。另选地,如果编译器生成的指令将数据称为“共享”,则数据可以作为共享输入操作数274读出。
在一些实施例中,唯一标识符440包括其他字符,例如,可由软件寻址模式寻址的数字字符、字母数字字符、十六进制数字(例如,图4A所示)、八进制数字等。
返回参考图4A,处理单元阵列240或多个处理单元中的每一个可以生成输出数据280。输出数据280可以是私有输出数据282或共享输出数据284,由神经网络处理器的多层算法的下一层中的操作确定。如图4A所示,由于输出数据280在每个存储模块410中被并行写回统一存储介质,因此可以将其视为私有输出数据282。
在一些实施例中,神经网络处理器包括编译器(未示出)。编译器是将以一种编程语言编写的计算机代码转换为另一种编程语言以创建可执行程序的程序或计算机软件。在加工应用中,编译器可执行各种操作,例如,预处理、词法分析、解析、语义分析、输入程序到中间表示的转换、代码优化和代码生成、或其组合。
图5是与本公开的实施例一致的示例性数据组织操作500的处理流程图。例如,数据组织操作500可以由片上通信系统(例如,片上通信系统110)执行。
步骤502包括配置统一存储介质(例如,统一存储介质400)的存储模块(例如,存储模块410)以包括多个存储单元(例如,存储单元430)。在一些实施例中,步骤502包括配置私有存储模块(例如私有存储模块412)以包括私有存储单元(例如私有存储单元432)和/或配置共享存储模块414(例如共享存储模块414)以包括共享存储单元(例如,共享存储单元434)。配置存储模块以包括存储单元可以包括基于可用的总存储空间、软件程序或算法、硬件限制、时间限制等来分配存储空间。如果软件应用程序或算法是多层的,并且需要包括比私有数据更多的共享数据的多层计算,则存储模块可以被配置为包括更多共享存储单元或更多共享存储模块。
步骤504包括配置存储介质(例如,图4A的统一存储介质400)以与处理单元(例如,处理单元阵列240)或多个处理单元通信。在一些实施例中,处理单元是算术逻辑单元(ALU)、浮点单元(FPU)、中央处理单元(CPU)或图形处理单元(GPU)。单个CPU可以包含一个或多个ALU。通常,ALU是对整数二进制数执行算术和按位运算的组合数字电子电路。处理单元可以包括多个处理单元,例如,被配置为并行操作的处理单元的阵列。
与处理单元通信可以包括接收由处理单元生成的数据,或将存储的数据提供给处理单元。存储介质可以是要进行计算的数据源或数据存储的目标。在一些实施例中,硬件系统包括被配置为从多个存储模块接收数据的单个处理单元。硬件系统还可以包括针对每个存储模块的唯一处理单元,被配置为仅从相应的存储模块接收数据。
步骤506,处理单元(例如,处理单元阵列240)基于编译器生成的指令来生成输出数据(例如,输出数据280)。在一些实施例中,编译器可以是将以一种编程语言编写的计算机代码转换为另一种编程语言以创建可执行程序的程序或计算机软件。编译器可以生成指令集,该指令集被配置为从存储介质访问数据,对所访问的数据执行期望的操作,基于该操作生成输出数据,并将所生成的输出数据存储回存储介质中以用于后续处理。指令还可以包括为输入和输出数据分配特性。数据的特性可以是私有的、共享的、受限制的等。
在此处讨论的示例中,编译器为矢量运算“A=X*W1”生成以下代码,其中“X”可以视为操作数2,而“W1”可以视为操作数1。根据本公开的实施例,将参考图4A描述指令集。
i1:LOAD.SIMD OP1 0x0_00
i2:LOAD.SHARED OP2 0x0_F0
i3:MUL RESULT OP1 OP2
i4:STORE.SIMD RESULT 0x0_F1;
前述指令集中的指令通常包括对数据的操作、数据的特性以及存储介质内的目标位置。
在一些实施例中,对数据的操作包括加载(读)、存储(写)、算术运算(例如,加法、减法、乘法、除法)、复制、粘贴等。数据的特性通常可以指存储介质内数据的可访问性。数据的特性可以包括私有、共享、受限、允许、全局、本地或其组合。通常,数据称为操作数。数据可以是输入操作数,例如,操作数1(OP1)和操作数2(OP2),或者是基于正在执行的矢量运算的输出数据。
在指令集il-i4中,加载/存储指令的子字段表明如何加载/存储数据。子字段“.SHARED”表示应将数据作为共享数据读取或写入。在这种模式下,高阶位(例如,图4B的442)和低阶位(例如,图4B的444)都用于确定输入操作数或输出数据的目标位置。子字段“.SIMD”表示应将数据作为私有数据并行地读取或写入,其中,高阶位可以被硬件忽略,低阶位用于确定输入操作数或输出数据的目标位置。
在指令i1中,每个处理单元(例如,图4A的242、244、246和248)并行地读取输入操作数1(例如,私有输入操作数272)。不使用位地址“0_00”中的高阶位“0”,而低阶位“00”指示存储单元和存储单元的特性(例如,私有存储单元432)。例如,参考图2A,“W1”阵列的行1中的所有数据(W1_1i)被同时但分别读出到每个对应的处理单元。“LOAD.SIMD”字段表明应并行读取数据。
在指令i2中,输入操作数2(例如,共享输入操作数274)被一次读取并广播到所有处理单元,如图4A所示。位地址“0_F0”中的高阶位“0”指示存储数据的存储模块,低阶位“F0”指示存储单元和存储单元存储数据的特性(例如,共享存储单元434)。例如,参考图2A,“X”阵列的“XI”中的数据被一次读出并广播到每个相应的处理单元。LOAD.SHARED字段表明该数据应作为所有处理单元之间的共享数据读取。
在指令i3中,处理单元执行矢量运算所定义的输入操作数1和2的乘法,以生成输出数据“A”。算术运算可以包括加法、减法、乘法或除法、或它们的组合的基本算术函数。在一些实施例中,处理单元被配置为执行复杂的算术和代数函数、对数函数、求幂等。
在指令i4中,指令i3中生成的输出数据“A”被并行存储回存储介质中用于进一步处理。生成的输出数据“A”(例如,输出数据280)可以用作多层算法的下一层中的输入操作数。硬件不使用位地址“0_F1”中的高阶位“0”,而低阶位“FI”指示输出数据要存储的存储单元和存储单元的特性(例如,共享存储单元434)。例如,参考图2B,可以在将输出数据280存储在统一存储介质的共享或私有存储模块中之前,将其临时存储在临时存储器(例如,写缓冲器260)中。
在步骤508中,将生成的输出数据存储回统一存储介质中用于进一步处理。通常,神经网络可以在多层中组织。一层的输出可以传递到下一层用于进一步处理。例如,前一层的输出可以是下一层的输入。
在前述说明书中,已经参考了可以随实现而变化的许多具体细节描述了实施例。可以对所描述的实施例进行某些调整和修改。通过考虑本文公开的发明的说明书和实践,其他实施例对于本领域技术人员而言可以是显而易见的。说明书和示例旨在仅被认为是示例性的,本发明的真实范围和精神由所附权利要求指示。图中所示的步骤顺序也旨在仅用于说明目的,并且不旨在限于任何特定的步骤顺序。这样,本领域技术人员可以理解,在实现相同方法时,可以以不同次序执行这些步骤。
Claims (16)
1.一种统一存储器装置,所述统一存储器装置包括:
统一存储介质,所述统一存储介质包括:
第一存储模块,所述第一存储模块具有被配置为存储数据的第一多个存储单元,所述第一多个存储单元由唯一单元标识符来标识;
第二存储模块,所述第二存储模块具有被配置为存储数据的第二多个存储单元,所述第二多个存储单元由唯一单元标识符来标识;以及
与所述统一存储介质通信的处理单元,所述处理单元配置为:
从所述第一多个存储单元中的一个接收第一输入数据,
从所述第二多个存储单元中的一个接收第二输入数据,并且
基于所述第一输入数据和所述第二输入数据生成输出数据;
所述统一存储介质还被配置为从编译器接收指令,所述指令包括与所述数据相关联的特性,其中,与所述数据相关联的特性是私有或共享之一;
其中,所述第一多个存储单元和所述第二多个存储单元的唯一单元标识符包括位地址,所述位地址包括第一多个位和第二多个位,所述第二多个位还指示与目标存储单元相关联的特性,所述目标存储单元的所述特性是私有或共享之一,所述目标存储单元的所述特性是基于编译器生成的为寻址数据而编程的指令确定的,所述目标存储单元是所述第一存储模块和所述第二存储模块内的存储单元。
2.根据权利要求1所述的统一存储器装置,其中,所述第一多个位指示所述第一存储模块和所述第二存储模块中的目标存储模块,并且其中,所述第二多个位指示所述目标存储模块内的所述第一多个存储单元和所述第二多个存储单元中的目标存储单元。
3.根据权利要求1-2中任一项所述的统一存储器装置,其中,所述第一存储模块和所述第二存储模块被配置为与对应的处理单元通信。
4.根据权利要求3所述的统一存储器装置,其中,所述处理单元被配置为从私有存储单元接收所述第一输入数据,并且从共享存储单元接收所述第二输入数据。
5.根据权利要求1-4中任一项所述的统一存储器装置,其中,所述统一存储介质和所述处理单元被配置为由软件代码或软件程序统一寻址。
6.根据权利要求4所述的统一存储器装置,其中,所述私有存储单元被配置为存储私有数据,并且所述共享存储单元被配置为存储能在多个处理单元之间共享的共享数据。
7.一种统一存储介质,所述统一存储介质包括:
第一存储模块,所述第一存储模块具有被配置为存储数据的第一多个存储单元,所述第一多个存储单元由唯一单元标识符来标识;以及
第二存储模块,所述第二存储模块具有被配置为存储数据的第二多个存储单元,所述第二多个存储单元由唯一单元标识符来标识;
所述统一存储介质被配置为从编译器接收指令,所述指令包括与所述数据相关联的特性,其中,与所述数据相关联的特性是私有或共享之一;
所述第一多个存储单元和所述第二多个存储单元的唯一单元标识符包括位地址,所述位地址包括第一多个位和第二多个位,所述第二多个位还指示与目标存储单元相关联的特性,所述目标存储单元的所述特性是私有或共享之一,所述目标存储单元的所述特性是基于编译器生成的为寻址数据而编程的指令确定的,所述目标存储单元是所述第一存储模块和所述第二存储模块内的存储单元。
8.根据权利要求7所述的统一存储介质,其中,所述第一多个位指示所述第一存储模块和所述第二存储模块中的目标存储模块,并且其中,所述第二多个位指示所述目标存储模块内的所述第一多个存储单元和所述第二多个存储单元中的目标存储单元。
9.根据权利要求7所述的统一存储介质,其中,所述第一存储模块和所述第二存储模块被配置为与对应的处理单元通信。
10.根据权利要求7所述的统一存储介质,其中,私有存储单元被配置为存储私有数据,并且共享存储单元被配置为存储能在多个处理单元之间共享的共享数据。
11.一种用于在具有统一存储介质和一个或多个处理单元的统一存储器装置中组织数据的方法,所述方法包括:
配置所述统一存储介质的第一存储模块,以与所述一个或多个处理单元通信,并包括配置为存储数据的第一多个存储单元,所述第一多个存储单元由唯一单元标识符来标识;以及
配置所述统一存储介质的第二存储模块,以与所述一个或多个处理单元通信,并包括配置为存储数据的第二多个存储单元,所述第二多个存储单元由唯一单元标识符来标识;以及
将所述一个或多个处理单元中的处理单元配置为:
从所述第一多个存储单元中的一个接收第一输入数据,
从所述第二多个存储单元中的一个接收第二输入数据,并且
基于所述第一输入数据和所述第二输入数据生成输出数据;
以及,从编译器接收指令,所述指令包括与所述输出数据相关联的特性,其中,与所述输出数据相关联的特性是私有或共享之一;
所述第一多个存储单元和所述第二多个存储单元的唯一单元标识符包括位地址,所述位地址包括第一多个位和第二多个位,所述第二多个位还指示与目标存储单元相关联的特性,所述目标存储单元的所述特性是私有或共享之一,所述目标存储单元的所述特性是基于编译器生成的为寻址数据而编程的指令确定的,所述目标存储单元是所述第一存储模块和所述第二存储模块内的存储单元。
12.根据权利要求11所述的方法,其中,所述第一多个位指示所述第一存储模块和所述第二存储模块中的目标存储模块,并且其中,所述第二多个位指示所述目标存储模块内的所述第一多个存储单元和所述第二多个存储单元中的目标存储单元。
13.根据权利要求11所述的方法,其中,所述第一存储模块和所述第二存储模块被配置为与对应的处理单元通信。
14.一种用于在具有第一存储模块和第二存储模块的统一存储介质中组织数据的方法,所述方法包括:
配置所述统一存储介质的所述第一存储模块,以与一个或多个处理单元通信,并包括配置为存储数据的第一多个存储单元,所述第一多个存储单元由唯一单元标识符来标识;以及
配置所述统一存储介质的所述第二存储模块,以与一个或多个处理单元通信,并包括配置为存储数据的第二多个存储单元,所述第二多个存储单元由唯一单元标识符来标识;以及
从编译器接收指令以存储输出数据,所述指令包括与所述输出数据相关联的特性;
所述第一多个存储单元和所述第二多个存储单元的唯一单元标识符包括位地址,所述位地址包括第一多个位和第二多个位,所述第二多个位还指示与目标存储单元相关联的特性,所述目标存储单元的所述特性是私有或共享之一,所述目标存储单元的所述特性是基于编译器生成的为寻址数据而编程的指令确定的,所述目标存储单元是所述第一存储模块和所述第二存储模块内的存储单元。
15.根据权利要求14所述的方法,其中,所述一个或多个处理单元被配置为:
从所述第一多个存储单元中的一个接收第一输入数据;
从所述第二多个存储单元中的一个接收第二输入数据;并且
基于所述第一输入数据和所述第二输入数据生成输出数据。
16.根据权利要求14所述的方法,其中,所述第一多个位指示所述第一存储模块和所述第二存储模块中的目标存储模块,并且其中,所述第二多个位指示所述目标存储模块内的所述第一多个存储单元和所述第二多个存储单元中的目标存储单元。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762610119P | 2017-12-22 | 2017-12-22 | |
US62/610,119 | 2017-12-22 | ||
US15/984,255 | 2018-05-18 | ||
US15/984,255 US11436143B2 (en) | 2017-12-22 | 2018-05-18 | Unified memory organization for neural network processors |
PCT/US2018/067301 WO2019126758A1 (en) | 2017-12-22 | 2018-12-21 | A unified memory organization for neural network processors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111630502A CN111630502A (zh) | 2020-09-04 |
CN111630502B true CN111630502B (zh) | 2024-04-16 |
Family
ID=66949585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880074349.6A Active CN111630502B (zh) | 2017-12-22 | 2018-12-21 | 用于神经网络处理器的统一存储器组织 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11436143B2 (zh) |
EP (1) | EP3729279A4 (zh) |
JP (1) | JP7266602B2 (zh) |
CN (1) | CN111630502B (zh) |
WO (1) | WO2019126758A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11586910B1 (en) * | 2018-04-20 | 2023-02-21 | Perceive Corporation | Write cache for neural network inference circuit |
US10740434B1 (en) | 2018-04-20 | 2020-08-11 | Perceive Corporation | Reduced dot product computation circuit |
US11481612B1 (en) | 2018-04-20 | 2022-10-25 | Perceive Corporation | Storage of input values across multiple cores of neural network inference circuit |
US11361213B1 (en) | 2018-04-20 | 2022-06-14 | Perceive Corporation | Using lookup table to represent neural network activation function |
US11783167B1 (en) | 2018-04-20 | 2023-10-10 | Perceive Corporation | Data transfer for non-dot product computations on neural network inference circuit |
US11568227B1 (en) | 2018-04-20 | 2023-01-31 | Perceive Corporation | Neural network inference circuit read controller with multiple operational modes |
US11604973B1 (en) | 2018-12-05 | 2023-03-14 | Perceive Corporation | Replication of neural network layers |
FR3089649A1 (fr) * | 2018-12-06 | 2020-06-12 | Stmicroelectronics (Rousset) Sas | Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones |
FR3094104A1 (fr) | 2019-03-20 | 2020-09-25 | Stmicroelectronics (Rousset) Sas | Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones compte tenu de sa topologie |
US11615322B1 (en) | 2019-05-21 | 2023-03-28 | Perceive Corporation | Compiler for implementing memory shutdown for neural network implementation configuration |
CN113204478B (zh) * | 2021-04-06 | 2022-05-03 | 北京百度网讯科技有限公司 | 测试单元的运行方法、装置、设备和存储介质 |
KR102509472B1 (ko) * | 2022-06-07 | 2023-03-14 | 리벨리온 주식회사 | 뉴럴 프로세싱 장치 및 그의 공유 페이지 테이블 사용 방법 |
KR20230168574A (ko) | 2022-06-07 | 2023-12-14 | 리벨리온 주식회사 | 뉴럴 프로세싱 장치의 공유 페이지 테이블 사용 방법 및 피지컬 페이지 할당 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956703A (en) * | 1995-07-28 | 1999-09-21 | Delco Electronics Corporation | Configurable neural network integrated circuit |
CN101542441A (zh) * | 2006-11-22 | 2009-09-23 | 可递有限公司 | 多处理器计算系统中的存储器一致性保护 |
CN102103567A (zh) * | 2009-12-21 | 2011-06-22 | 英特尔公司 | 在异构处理器之间共享基于虚拟存储器的多版本数据 |
CN102103547A (zh) * | 2009-12-16 | 2011-06-22 | 英特尔公司 | 替换高速缓冲存储器中的高速缓存行 |
JP6250780B1 (ja) * | 2016-12-01 | 2017-12-20 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | キャッシュメモリ又はニューラルネットワークユニットメモリとして動作可能なメモリアレイを有するプロセッサ |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02292684A (ja) * | 1989-05-06 | 1990-12-04 | Takayama:Kk | 画像認識システム |
JP2001290699A (ja) | 2000-04-10 | 2001-10-19 | Matsushita Electric Ind Co Ltd | デュアルポートramアクセス装置 |
US7073044B2 (en) * | 2001-03-30 | 2006-07-04 | Intel Corporation | Method and apparatus for sharing TLB entries |
GB2419005B (en) | 2002-04-22 | 2006-06-07 | Micron Technology Inc | Providing a register file memory with local addressing in a SIMD parallel processor |
GB2417105B (en) | 2004-08-13 | 2008-04-09 | Clearspeed Technology Plc | Processor memory system |
US8271763B2 (en) | 2009-09-25 | 2012-09-18 | Nvidia Corporation | Unified addressing and instructions for accessing parallel memory spaces |
US8982140B2 (en) * | 2010-09-24 | 2015-03-17 | Nvidia Corporation | Hierarchical memory addressing |
US9274960B2 (en) * | 2012-03-20 | 2016-03-01 | Stefanos Kaxiras | System and method for simplifying cache coherence using multiple write policies |
US9009419B2 (en) * | 2012-07-31 | 2015-04-14 | Advanced Micro Devices, Inc. | Shared memory space in a unified memory model |
JP6218833B2 (ja) * | 2012-08-20 | 2017-10-25 | キャメロン,ドナルド,ケヴィン | 処理リソース割り当て |
US9563425B2 (en) * | 2012-11-28 | 2017-02-07 | Intel Corporation | Instruction and logic to provide pushing buffer copy and store functionality |
US9733995B2 (en) * | 2014-12-17 | 2017-08-15 | Intel Corporation | Scalable synchronization mechanism for distributed memory |
EP3035204B1 (en) | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
US10324861B2 (en) * | 2015-02-05 | 2019-06-18 | Eta Scale Ab | Systems and methods for coherence in clustered cache hierarchies |
US9940287B2 (en) * | 2015-03-27 | 2018-04-10 | Intel Corporation | Pooled memory address translation |
GB2543520B (en) * | 2015-10-20 | 2019-06-19 | Advanced Risc Mach Ltd | Memory access instructions |
US20170060736A1 (en) * | 2015-12-09 | 2017-03-02 | Mediatek Inc. | Dynamic Memory Sharing |
-
2018
- 2018-05-18 US US15/984,255 patent/US11436143B2/en active Active
- 2018-12-21 CN CN201880074349.6A patent/CN111630502B/zh active Active
- 2018-12-21 EP EP18890583.0A patent/EP3729279A4/en active Pending
- 2018-12-21 JP JP2020532976A patent/JP7266602B2/ja active Active
- 2018-12-21 WO PCT/US2018/067301 patent/WO2019126758A1/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956703A (en) * | 1995-07-28 | 1999-09-21 | Delco Electronics Corporation | Configurable neural network integrated circuit |
CN101542441A (zh) * | 2006-11-22 | 2009-09-23 | 可递有限公司 | 多处理器计算系统中的存储器一致性保护 |
CN102103547A (zh) * | 2009-12-16 | 2011-06-22 | 英特尔公司 | 替换高速缓冲存储器中的高速缓存行 |
CN102103567A (zh) * | 2009-12-21 | 2011-06-22 | 英特尔公司 | 在异构处理器之间共享基于虚拟存储器的多版本数据 |
JP6250780B1 (ja) * | 2016-12-01 | 2017-12-20 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | キャッシュメモリ又はニューラルネットワークユニットメモリとして動作可能なメモリアレイを有するプロセッサ |
Also Published As
Publication number | Publication date |
---|---|
CN111630502A (zh) | 2020-09-04 |
WO2019126758A1 (en) | 2019-06-27 |
JP2021507383A (ja) | 2021-02-22 |
US20190196970A1 (en) | 2019-06-27 |
JP7266602B2 (ja) | 2023-04-28 |
US11436143B2 (en) | 2022-09-06 |
EP3729279A4 (en) | 2021-03-03 |
EP3729279A1 (en) | 2020-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111630502B (zh) | 用于神经网络处理器的统一存储器组织 | |
US11693657B2 (en) | Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems | |
JP7264897B2 (ja) | メモリ装置及びそれを制御するための方法 | |
US11714780B2 (en) | Compiler flow logic for reconfigurable architectures | |
US20200293283A1 (en) | Programmable multiply-add array hardware | |
US11921814B2 (en) | Method and device for matrix multiplication optimization using vector registers | |
US11908061B2 (en) | Inter-warp sharing of general purpose register data in GPU | |
WO2021046568A1 (en) | Methods for performing processing-in-memory operations, and related memory devices and systems | |
CN111656319B (zh) | 利用特定数检测的多流水线架构 | |
WO2021250392A1 (en) | Mixed-element-size instruction | |
US20230100785A1 (en) | Priority encoder-based techniques for computing the minimum or the maximum of multiple values | |
CN115373744A (zh) | 基于risc-v的拓展vm指令集编码方法 | |
CN116431214A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240228 Address after: 5th Floor, No. 2, Lane 55, Chuanhe Road, No. 366 Shangke Road, Pudong New Area Free Trade Pilot Zone, Shanghai Applicant 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 Applicant before: ALIBABA GROUP HOLDING Ltd. Country or region before: Cayman Islands |
|
GR01 | Patent grant |