CN116762081A - 用于深度学习加速器的高速缓存技术 - Google Patents
用于深度学习加速器的高速缓存技术 Download PDFInfo
- Publication number
- CN116762081A CN116762081A CN202280009290.9A CN202280009290A CN116762081A CN 116762081 A CN116762081 A CN 116762081A CN 202280009290 A CN202280009290 A CN 202280009290A CN 116762081 A CN116762081 A CN 116762081A
- Authority
- CN
- China
- Prior art keywords
- item
- buffer
- memory
- random access
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000013135 deep learning Methods 0.000 title abstract description 123
- 230000015654 memory Effects 0.000 claims abstract description 213
- 239000000872 buffer Substances 0.000 claims abstract description 198
- 238000013528 artificial neural network Methods 0.000 claims abstract description 149
- 239000011159 matrix material Substances 0.000 claims abstract description 82
- 238000012545 processing Methods 0.000 claims abstract description 76
- 210000002569 neuron Anatomy 0.000 claims description 55
- 230000004044 response Effects 0.000 claims description 18
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000004378 air conditioning Methods 0.000 claims 6
- 239000013598 vector Substances 0.000 description 96
- 238000003860 storage Methods 0.000 description 13
- 238000013507 mapping Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000004913 activation Effects 0.000 description 5
- 210000004027 cell Anatomy 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000000946 synaptic effect Effects 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000009510 drug design Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
- 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
-
- 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/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
Abstract
本发明描述与深度学习加速器及存储器相关的系统、装置及方法。举例来说,所述加速器可具有处理单元以经由指令的执行来执行人工神经网络的至少矩阵计算。所述处理单元具有本地存储器,存储所述指令的操作数。所述加速器可经由系统缓冲器或无需通过所述系统缓冲器来存取随机存取存储器。提取指令可请求在所述随机存取存储器中的存储器地址处可用的项目加载到所述本地存储器中的本地地址处。所述提取指令可包含将所述项目高速缓存于所述系统缓冲器中的提示。在所述指令执行期间,所述提示可用于确定是通过所述系统缓冲器加载所述项目还是绕过所述系统缓冲器来加载所述项目。
Description
相关申请案
本申请案主张2021年1月11日申请且标题为“用于深度学习加速器的高速缓存技术(Caching Techniques for Deep Learning Accelerator)”的序列号为17/146,314的美国专利申请案的优先权,所述美国专利申请案的全部公开内容特此以引用方式并入本文中。
技术领域
本文中公开的至少一些实施例大体上涉及高速缓存数据且更特定来说(但不限于),高速缓存数据以供人工神经网络(ANN)的加速器处理,例如通过机器学习及/或深度学习配置的ANN。
背景技术
人工神经网络(ANN)使用神经元网络来处理网络的输入且从网络产生输出。
深度学习已应用于许多应用领域,例如计算机视觉、语音/音频辨识、自然语言处理、机器翻译、生物信息学、药物设计、医学图像处理、游戏等。
附图说明
在附图中通过实例而非限制来说明实施例,其中相同参考元件符号指示类似元件。
图1展示根据一个实施例配置的具有深度学习加速器及随机存取存储器的集成电路装置。
图2展示根据一个实施例的经配置以执行矩阵-矩阵运算的处理单元。
图3展示根据一个实施例的经配置以执行矩阵-向量运算的处理单元。
图4展示根据一个实施例的经配置以执行向量-向量运算的处理单元。
图5展示根据一个实施例的经配置以自主地将输入施加到经训练人工神经网络的深度学习加速器及随机存取存储器。
图6展示根据一个实施例的用于高速缓存用于深度学习加速器的数据的系统。
图7到11说明根据一个实施例的根据用于深度学习加速器的数据类型高速缓存数据的实例。
图12展示根据一个实施例的高速缓存用于深度学习加速器的数据的方法。
具体实施方式
本文中公开的至少一些实施例提供一种经配置以用减少能耗及计算时间执行人工神经网络(ANN)的计算的装置。装置包含深度学习加速器(DLA)、随机存取存储器及系统缓冲器。深度学习加速器具有本地存储器。深度学习加速器可比存取系统缓冲器更快地存取本地存储器,且深度学习加速器可比存取随机存取存储器更快地存取系统。用于将数据从随机存取存储器加载到本地存储器中的指令可包含关于将应用于深度学习加速器中的数据的类型及/或处理的提示。基于提示,鉴于系统缓冲器中的存储容量的可用性及/或可高速缓存于系统缓冲器中的数据的提示优先级,从随机存取存储器加载的数据可选择性地高速缓存于系统缓冲器中或无需通过系统高速缓存来加载。
深度学习加速器(DLA)包含一组可编程硬件计算逻辑,其经专门化及/或优化以执行并行向量及/或矩阵计算,包含(但不限于)向量及/或矩阵的乘法及累加。
此外,深度学习加速器(DLA)可包含用于对整数二进制数执行算术及逐位运算的一或多个算术-逻辑单元(ALU)。
深度学习加速器(DLA)可经由一组指令编程以执行人工神经网络(ANN)的计算。
举例来说,ANN中的每一神经元接收一组输入。神经元的一些输入可为ANN中某些神经元的输出;且神经元的一些输入可为提供到ANN的输入。ANN中神经元之间的输入/输出关系表示ANN中的神经元连通性。
举例来说,每一神经元可具有偏置、激活函数及分别用于其输入的一组突触权重。激活函数可呈阶跃函数、线性函数、对数-S形函数等的形式。ANN中的不同神经元可具有不同激活函数。
举例来说,每一神经元可产生其输入与其偏置的加权和且接着产生使用神经元的激活函数计算的依据加权和而变化的输出。
ANN的输入与输出之间的关系一般由ANN模型定义,ANN模型包含表示ANN中神经元的连通性的数据以及每一神经元的偏置、激活函数及突触权重。基于给定ANN模型,计算装置可经配置以从ANN的一组给定输入计算ANN的输出。
举例来说,ANN的输入可基于摄影机输入产生;且来自ANN的输出可为例如事件或对象的项目的识别。
一般来说,ANN可使用监督式方法训练,其中ANN中的参数经调整以最小化或减小与相应输入相关联或由相应输入导致的已知输出与经由将输入施加到ANN来产生的计算输出之间的误差。监督式学习/训练方法的实例包含强化学习及具有误差校正的学习。
替代地或组合地,ANN可使用无监督方法训练,其中由一组给定输入导致的准确输出在训练完成之前是未知的。ANN可经训练以将项目分类成多个类别或将数据点分类成集群。
多种训练算法可用于复杂机器学习/训练范例。
深度学习使用多个机器学习层来逐步从输入数据提取特征。举例来说,较低层可经配置以识别图像中的边缘;且较高层可经配置以基于使用较低层检测到的边缘来识别在图像中捕捉的项目,例如人脸、对象、事件等。深度学习可经由人工神经网络(ANN)实施,例如深度神经网络、深度信念网络、循环神经网络及/或卷积神经网络。
对向量及矩阵进行操作的深度学习加速器(DLA)的粒度对应于可在由深度学习加速器(DLA)执行一个指令期间操作的向量/矩阵的最大单位。在用于对向量/矩阵操作数进行预定义操作的指令的执行期间,向量/矩阵操作数的元素可由深度学习加速器(DLA)并行操作以减少与存储器/数据存取相关联的执行时间及/或能耗。对深度学习加速器(DLA)的粒度的向量/矩阵操作数进行的操作可用作对更大大小的向量/矩阵实施计算的构建块。
典型/实际人工神经网络(ANN)的实施涉及具有大于深度学习加速器(DLA)的操作粒度的大小的向量/矩阵操作数。为了使用深度学习加速器(DLA)实施此人工神经网络(ANN),涉及较大大小的向量/矩阵操作数的计算可分解为深度学习加速器(DLA)的粒度的向量/矩阵操作数的计算。深度学习加速器(DLA)可经由指令编程以实施涉及大向量/矩阵操作数的计算。举例来说,深度学习加速器(DLA)响应于指令而操纵深度学习加速器(DLA)的粒度的向量及矩阵的原子计算能力可经编程以在人工神经网络(ANN)中实施计算。
在一些实施方案中,深度学习加速器(DLA)缺少典型中央处理单元(CPU)的一些逻辑运算能力。然而,深度学习加速器(DLA)可经配置有足够逻辑单元来处理提供到人工神经网络(ANN)的输入数据且根据针对深度学习加速器(DLA)产生的一组指令来产生人工神经网络(ANN)的输出。因此,深度学习加速器(DLA)可在很少或没有来自中央处理单元(CPU)或另一处理器的帮助的情况下执行人工神经网络(ANN)的计算。任选地,常规通用处理器也可经配置为深度学习加速器(DLA)的部分以执行无法使用深度学习加速器(DLA)的向量/矩阵处理单元高效实施及/或无法由深度学习加速器(DLA)的向量/矩阵处理单元执行的操作。
典型人工神经网络(ANN)可以标准格式(例如开放式神经网络交换(ONNX))描述/指定。编译器可用于将人工神经网络(ANN)的描述转换成一组指令以使深度学习加速器(DLA)执行人工神经网络(ANN)的计算。编译器可优化指令组以提高深度学习加速器(DLA)实施人工神经网络(ANN)的性能。
深度学习加速器(DLA)可具有经配置以存储向量/矩阵操作数及向量/矩阵运算结果的本地存储器,例如寄存器、缓冲器及/或高速缓存。寄存器中的中间结果可作为操作数在深度学习加速器(DLA)中管线化/移位用于后续向量/矩阵运算以减少存取存储器/数据的时间及能耗且因此加速实施典型人工神经网络(ANN)时向量/矩阵运算的典型模式。深度学习加速器(DLA)中寄存器、缓冲器及/或高速缓存的容量通常不足以保存用于实施典型人工神经网络(ANN)的计算的整个数据组。因此,耦合到深度学习加速器(DLA)的随机存取存储器经配置以提供提高数据存储容量来实施典型人工神经网络(ANN)。举例来说,深度学习加速器(DLA)从随机存取存储器加载数据及指令且将结果存储回到随机存取存储器中。
深度学习加速器(DLA)与随机存取存储器之间的通信带宽经配置以优化或最大化深度学习加速器(DLA)的计算能力的利用。举例来说,可在深度学习加速器(DLA)与随机存取存储器之间提供高通信带宽,使得向量/矩阵操作数可在约等于深度学习加速器(DLA)对向量/矩阵操作数执行计算的时间的一时段内从随机存取存储器加载到深度学习加速器(DLA)中且将结果存储回到随机存取存储器中。深度学习加速器(DLA)的粒度可经配置以增大由深度学习加速器(DLA)执行的计算量与向量/矩阵操作数的大小之间的比率,使得深度学习加速器(DLA)与随机存取存储器之间的数据存取业务可减少,这可降低对深度学习加速器(DLA)与随机存取存储器之间的通信带宽的要求。因此,可减小或消除数据/存储器存取的瓶颈。
图1展示根据一个实施例配置的具有深度学习加速器103及随机存取存储器105的集成电路装置101。
图1中的深度学习加速器103包含处理单元111、控制单元113及本地存储器115。当向量及矩阵操作数在本地存储器115中时,控制单元113可使用处理单元111根据指令执行向量及矩阵运算。此外,控制单元113可通过存储器接口117及高速/高带宽连接119从随机存取存储器105加载指令及操作数。
集成电路装置101经配置以围封于具有用于存储器控制器接口107的引脚或触点的集成电路封装内。
存储器控制器接口107经配置以支持标准存储器存取协议,使得集成电路装置101以与没有深度学习加速器103的常规随机存取存储器装置相同的方式向典型存储器控制器呈现。举例来说,集成电路装置101外部的存储器控制器可使用标准存储器存取协议通过存储器控制器接口107存取集成电路装置101中的随机存取存储器105。
集成电路装置101在围封于集成电路装置101内的随机存取存储器105与深度学习加速器103之间配置有高带宽连接119。连接119的带宽高于随机存取存储器105与存储器控制器接口107之间的连接109的带宽。
在一个实施例中,存储器控制器接口107及存储器接口117两者经配置以经由同一组总线或电线存取随机存取存储器105。因此,用于存取随机存取存储器105的带宽在存储器接口117与存储器控制器接口107之间共享。替代地,存储器控制器接口107及存储器接口117经配置以经由单独总线或电线组存取随机存取存储器105。任选地,随机存取存储器105可包含可经由连接119并发地存取的多个区段。举例来说,当存储器接口117存取随机存取存储器105的一区段时,存储器控制器接口107可并发地存取随机存取存储器105的另一区段。举例来说,不同区段可经配置于不同集成电路裸片及/或存储器单元的不同平面/存储体上;且不同区段可经并行存取以增加存取随机存取存储器105时的吞吐量。举例来说,存储器控制器接口107经配置以一次存取预定大小的一个数据单位;且存储器接口117经配置以一次存取各自具有相同预定大小的多个数据单位。
在一个实施例中,随机存取存储器105及集成电路装置101经配置于配置于同一集成电路封装内的不同集成电路裸片上。此外,随机存取存储器105可经配置于允许并发地并行存取多个数据元素的一或多个集成电路裸片上。
在一些实施方案中,可经由连接119并行存取的向量或矩阵的数据元素的数目对应于对向量或矩阵进行操作的深度学习加速器(DLA)的粒度。举例来说,当处理单元111可并行地对数个向量/矩阵元素进行操作时,连接119经配置以经由连接119并行地加载或存储相同数目个或所述数目的倍数个元素。
任选地,连接119的数据存取速度可基于深度学习加速器103的处理速度进行配置。举例来说,在一定量的数据及指令加载到本地存储器115中之后,控制单元113可执行指令以使用处理单元111对数据进行操作以产生输出。在用于产生输出的处理时段内,连接119的存取带宽允许相同量的数据及指令加载到本地存储器115中用于下一操作且允许相同量的输出存储回到随机存取存储器105。举例来说,当控制单元113使用本地存储器115的一部分来处理数据且产生输出时,存储器接口117可将前一操作的输出从本地存储器115的另一部分卸载到随机存取存储器105中且将操作数数据及指令加载到本地存储器115的另一部分中。因此,深度学习加速器(DLA)的利用及性能不会因连接119的带宽而受限或降低。
随机存取存储器105可用于存储人工神经网络(ANN)的模型数据且缓冲人工神经网络(ANN)的输入数据。模型数据不会频繁改变。模型数据可包含由深度学习加速器(DLA)的编译器产生以实施人工神经网络(ANN)的输出。模型数据通常包含用于人工神经网络(ANN)的描述中的矩阵及针对深度学习加速器103产生以基于深度学习加速器103的粒度的向量/矩阵运算来执行人工神经网络(ANN)的向量/矩阵运算的指令。指令不仅对人工神经网络(ANN)的向量/矩阵运算进行操作,而且对人工神经网络(ANN)的输入数据进行操作。
在一个实施例中,当输入数据在随机存取存储器105中加载或更新时,深度学习加速器103的控制单元113可自动执行人工神经网络(ANN)的指令以产生人工神经网络(ANN)的输出。输出存储到随机存取存储器105中的预定义区中。深度学习加速器103可在没有来自中央处理单元(CPU)的帮助的情况下执行指令。因此,可减少或消除用于深度学习加速器103与集成电路装置101外部的处理器(例如中央处理单元(CPU))之间的协调的通信。
任选地,深度学习加速器103的逻辑电路可经由互补金属氧化物半导体(CMOS)实施。举例来说,随机存取存储器105的存储器单元的阵列下CMOS(CUA)技术可用于实施深度学习加速器103的逻辑电路,包含处理单元111及控制单元113。替代地,随机存取存储器105的存储器单元的阵列中CMOS技术可用于实施深度学习加速器103的逻辑电路。
在一些实施方案中,深度学习加速器103及随机存取存储器105可实施于单独集成电路裸片上且使用穿硅通路(TSV)连接以增大深度学习加速器103与随机存取存储器105之间的数据带宽。举例来说,深度学习加速器103可形成于现场可编程门阵列(FPGA)或专用集成电路(ASIC)的集成电路裸片上。
替代地,深度学习加速器103及随机存取存储器105可经配置于单独集成电路封装中且经由印刷电路板(PCB)上的多个点到点连接来连接以进行并行通信且因此增大数据传送带宽。
随机存取存储器105可为易失性存储器或非易失性存储器或易失性存储器与非易失性存储器的组合。非易失性存储器的实例包含快闪存储器、基于与非(NAND)逻辑门、或非(NOR)逻辑门形成的存储器单元、相变存储器(PCM)、磁性存储器(MRAM)、电阻式随机存取存储器、交叉点存储装置及存储器装置。交叉点存储器装置可使用无晶体管存储器元件,其中的每一者具有一起堆叠为一列的存储器单元及选择器。存储器元件列经由在垂直方向上运行的两个电线铺层连接,其中一个铺层的电线在位于存储器元件列上方的层中在一个方向上运行,且另一铺层的电线在另一方向上运行且位于存储器元件列下方。可在两个层中的每一者上的一个电线的交叉点处个别地选择每一存储器元件。交叉点存储器装置是快速及非易失性的且可用作用于处理及存储的统一内存池。非易失性存储器的另外实例包含只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)及电可擦除可编程只读存储器(EEPROM)存储器等。易失性存储器的实例包含动态随机存取存储器(DRAM)及静态随机存取存储器(SRAM)。
举例来说,非易失性存储器可经配置以实施随机存取存储器105的至少一部分。随机存取存储器105中的非易失性存储器可用于存储人工神经网络(ANN)的模型数据。因此,在集成电路装置101断电且重启之后,无需将人工神经网络(ANN)的模型数据重新加载到集成电路装置101中。此外,非易失性存储器可为可编程/可重写的。因此,集成电路装置101中的人工神经网络(ANN)的模型数据可经更新或替换以实施更新人工神经网络(ANN)或另一人工神经网络(ANN)。
深度学习加速器103的处理单元111可包含向量-向量单元、矩阵-向量单元及/或矩阵-矩阵单元。经配置以执行向量-向量运算、矩阵-向量运算及矩阵-矩阵运算的单元的实例将在下文结合图2到4论述。
图2展示根据一个实施例的经配置以执行矩阵-矩阵运算的处理单元。举例来说,图2的矩阵-矩阵单元121可用作图1的深度学习加速器103的处理单元111中的一者。
在图2中,矩阵-矩阵单元121包含多个内核缓冲器131到133及多个映射存储体151到153。映射存储体151到153中的每一者存储具有分别存储于映射存储体151到153中的多个向量的矩阵操作数的一个向量;且内核缓冲器131到133中的每一者存储具有分别存储于内核缓冲器131到133中的多个向量的另一矩阵操作数的一个向量。矩阵-矩阵单元121经配置以使用并行操作的多个矩阵-向量单元141到143对两个矩阵操作数的元素执行乘法及累加运算。
交叉开关123将映射存储体151到153连接到矩阵-向量单元141到143。存储于映射存储体151到153中的相同矩阵操作数经由交叉开关123提供到矩阵-向量单元141到143中的每一者;且矩阵-向量单元141到143并行地从映射存储体151到153接收数据元素。内核缓冲器131到133中的每一者连接到矩阵-向量单元141到143中的相应者且将向量操作数提供到相应矩阵-向量单元。矩阵-向量单元141到143并发地操作以计算存储于映射存储体151到153中的相同矩阵操作数乘以存储于内核缓冲器131到133中的对应向量的运算。举例来说,矩阵-向量单元141对存储于映射存储体151到153中的矩阵操作数与存储于内核缓冲器131中的向量操作数执行乘法运算,而矩阵-向量单元143并发地对存储于映射存储体151到153中的矩阵操作数与存储于内核缓冲器133中的向量操作数执行乘法运算。
图2中的矩阵-向量单元141到143中的每一者可以图3中说明的方式实施。
图3展示根据一个实施例的经配置以执行矩阵-向量运算的处理单元。举例来说,图3的矩阵-向量单元141可用作图2的矩阵-矩阵单元121中的矩阵-向量单元中的任一者。
在图3中,映射存储体151到153中的每一者以类似于图2的映射存储体151到153的方式存储具有分别存储于映射存储体151到153中的多个向量的矩阵操作数的一个向量。图3中的交叉开关123将向量分别从映射存储体151提供到向量-向量单元161到163。存储于内核缓冲器131中的同一向量提供到向量-向量单元161到163。
向量-向量单元161到163并发地操作以计算分别存储于映射存储体151到153中的对应向量操作数乘以存储于内核缓冲器131中的相同向量操作数的运算。举例来说,向量-向量单元161对存储于映射存储体151中的向量操作数与存储于内核缓冲器131中的向量操作数执行乘法运算,而向量-向量单元163并发地对存储于映射存储体153中的向量操作数与存储于内核缓冲器131中的向量操作数执行乘法运算。
当图3的矩阵-向量单元141实施于图2的矩阵-矩阵单元121中时,矩阵-向量单元141可使用矩阵-矩阵单元121的映射存储体151到153、交叉开关123及内核缓冲器131。
图3中的向量-向量单元161到163中的每一者可以图4中说明的方式实施。
图4展示根据一个实施例的经配置以执行向量-向量运算的处理单元。举例来说,图4的向量-向量单元161可用作图3的矩阵-向量单元141中的向量-向量单元中的任一者。
在图4中,向量-向量单元161具有多个乘法累加单元171到173。乘法累加单元171到173中的每一者可接收两个数字作为操作数,执行两个数字的乘法,且将乘法的结果加到保存于乘法累加(MAC)单元中的总和。
向量缓冲器181及183中的每一者存储数字列表。各自来自向量缓冲器181及183中的一者的一对数字可作为输入提供到乘法累加单元171到173中的每一者。乘法累加单元171到173可并行地从向量缓冲器181及183接收多对数字且并行地执行乘法累加(MAC)运算。来自乘法累加单元171到173的输出存储到移位寄存器175中;且累加器177计算移位寄存器175中结果的总和。
当图4的向量-向量单元161实施于图3的矩阵-向量单元141中时,向量-向量单元161可使用映射存储体(例如151或153)作为一个向量缓冲器181且使用矩阵-向量单元141的内核缓冲器131作为另一向量缓冲器183。
向量缓冲器181及183可具有相同长度以存储相同数目/计数的数据元素。长度可等于向量-向量单元161中乘法累加单元171到173的计数或为所述计数的倍数。当向量缓冲器181及183的长度是乘法累加单元171到173的计数的倍数时,等于乘法累加单元171到173的计数的输入对数可在每一迭代中作为输入从向量缓冲器181及183提供到乘法累加单元171到173;且向量缓冲器181及183通过多次迭代将其元素馈送到乘法累加单元171到173中。
在一个实施例中,深度学习加速器103与随机存取存储器105之间的连接119的通信带宽足以使矩阵-矩阵单元121使用随机存取存储器105的部分作为映射存储体151到153及内核缓冲器131到133。
在另一实施例中,映射存储体151到153及内核缓冲器131到133实施于深度学习加速器103的本地存储器115的一部分中。深度学习加速器103与随机存取存储器105之间的连接119的通信带宽足以将矩阵-矩阵单元121的下一运算循环的矩阵操作数加载到本地存储器115的另一部分中,同时矩阵-矩阵单元121在当前运算循环中使用实施于深度学习加速器103的本地存储器115的不同部分中的映射存储体151到153及内核缓冲器131到133执行计算。
图5展示根据一个实施例的经配置以自主地将输入施加到经训练人工神经网络的深度学习加速器及随机存取存储器。
可以标准格式(例如开放式神经网络交换(ONNX))描述已通过机器学习(例如深度学习)训练的人工神经网络(ANN)201。以标准格式描述经训练人工神经网络201识别人工神经元及其连通性的性质。
在图5中,深度学习加速器(DLA)编译器203通过产生用于深度学习加速器103的指令205及对应于人工神经元及其连通性的性质的矩阵207来转换经训练人工神经网络201。由DLA编译器203从经训练人工神经网络201产生的指令205及矩阵207可存储于用于深度学习加速器103的随机存取存储器105中。
举例来说,随机存取存储器105与深度学习加速器103可以如同图1的集成电路装置101的方式经由高带宽连接119连接。基于指令205及矩阵207的图5的自主计算可实施于图1的集成电路装置101中。替代地,随机存取存储器105及深度学习加速器103可经配置于具有平行运行以实施连接119的多个点到点串行总线的印刷电路板上。
在图5中,在DLA编译器203的结果存储于随机存取存储器105中之后,应用经训练人工神经网络201来处理经训练人工神经网络201的输入211以产生经训练人工神经网络201的对应输出213可由在随机存取存储器105中的存在输入211或提供于随机存取存储器105中的另一指示触发。
作为响应,深度学习加速器103执行指令205以组合输入211与矩阵207。指令205的执行可包含产生深度学习加速器103的一或多个矩阵-矩阵单元(例如121)的映射存储体151到153的映射矩阵。
在一些实施例中,人工神经网络201的输入211呈初始映射矩阵的形式。初始映射矩阵的部分可作为存储于矩阵-矩阵单元121的映射存储体151到153中的矩阵操作数从随机存取存储器105检索。替代地,DLA指令205还包含使深度学习加速器103从输入211产生初始映射矩阵的指令。
根据DLA指令205,深度学习加速器103将矩阵操作数加载到其矩阵-矩阵单元121的内核缓冲器131到133及映射存储体151到153中。矩阵-矩阵单元121对矩阵操作数执行矩阵计算。举例来说,DLA指令205根据深度学习加速器103的计算粒度(例如作为矩阵操作数加载于矩阵-矩阵单元121中的矩阵的大小/维数)来分解经训练人工神经网络201的矩阵计算且将输入特征映射施加到一层人工神经元的内核以产生输出作为下一层人工神经元的输入。
在根据指令205执行的经训练人工神经网络201的计算完成之后,深度学习加速器103将人工神经网络201的输出213存储于随机存取存储器105中的预定义位置或提供于随机存取存储器105中的用于触发计算的指示中指定的位置处。
当图5的技术实施于图1的集成电路装置101中时,连接到存储器控制器接口107的外部装置可将输入211写入到随机存取存储器105中且触发由深度学习加速器103将输入211施加到经训练人工神经网络201的自主计算。在一段时间之后,输出213在随机存取存储器105中可用;且外部装置可经由集成电路装置101的存储器控制器接口107读取输出213。
举例来说,随机存取存储器105中的预定义位置可经配置以存储用于触发由深度学习加速器103自主执行指令205的指示。指示可任选地包含输入211在随机存取存储器105内的位置。因此,在用于处理输入211的指令205的自主执行期间,外部装置可检索在指令205的前一运行期间产生的输出及/或存储另一组输入用于指令205的下一运行。
任选地,随机存取存储器105中的另一预定义位置可经配置以存储指令205的当前运行的进展状态的指示。此外,指示可包含指令205的当前运行的完成时间的预测(例如,基于指令205的前一运行来估计)。因此,外部装置可检查合适时间窗内的完成状态以检索输出213。
在一些实施例中,随机存取存储器105经配置有足够容量来存储多组输入(例如211)及输出(例如213)。每一组可经配置于随机存取存储器105中的预定插槽/区域中。
深度学习加速器103可自主地执行指令205以根据存储于随机存取存储器105中的矩阵207从输入211产生输出213,无需来自位于集成电路装置101外部的处理器或装置的帮助。
具有深度学习加速器103的计算系统可具有含不同存取模式的不同存储器存取源。为了提高性能,一些比其它者更服从高速缓存。
本文中公开的至少一些实施例提供技术来智能地绕过将数据高速缓存于用于加载到深度学习加速器103的本地存储器115中的特定数据的系统缓冲器中。举例来说,数据从随机存取存储器105加载到深度学习加速器103的本地存储器115中的数据可为指令205、表示人工神经网络201的一部分的矩阵207、人工神经网络201的部分的输入211及来自人工神经网络201的部分的输出213。不同类型的数据可具有不同存取模式。数据类型及/或高速缓存优先权可作为提示指定于指令中以将相应数据从随机存取存储器105加载到本地存储器115中。提示可用于优先处理数据高速缓存于系统缓冲器中以通过减少冲突/容量未命中且因此提高为深度学习加速器103配置的系统缓冲器的高速缓存命中率来提高性能。
深度学习加速器103的计算性能通常受可用存储器带宽限制。一或若干系统缓冲器可用于利用人工神经网络201(例如深度神经网络(DNN))的计算工作量中的空间及时间局部性。
举例来说,系统缓冲器可经配置于深度学习加速器103的集成电路裸片或另一集成电路裸片中以用作用于存取随机存取存储器105的高速缓存存储器。从随机存取存储器105加载的数据项可高速缓存于系统缓冲器中,使得当后续指令经配置以加载数据项用于处理深度学习加速器103时,高速缓存于系统缓冲器中的数据项可用于履行数据请求。因为存取系统缓冲器比存取随机存取存储器105更快,因此使用高速缓存于系统缓冲器中的数据项可提高深度学习加速器103的性能。
然而,系统缓冲器的容量小于随机存取存储器105的容量。因此,与高速缓存不太可能在后续指令205中再用的其它数据相比,将更有可能在后续指令205中再用的数据高速缓存于系统缓冲器中可提高深度学习加速器103的计算性能。
深度神经网络(DNN)可具有级联在一起的若干人工神经元层。在用于处理这些层的数据中,指令通常不被再用;且取决于用于实施深度神经网络(DNN)的计算的算法/计算方法,内核或映射/层数据可仅从随机存取存储器105提取一次且再用于深度学习加速器103的本地存储器中。如果此类数据或指令高速缓存于系统缓冲器中,那么其可导致随后可再用的其它数据逐出且有效地提高系统缓冲器的高速缓存未命中率。高速缓存未命中率提高可导致将数据加载到本地存储器115中用于处理的延时增加且因此降低跨计算系统/装置的性能。可通过允许某些数据绕过系统缓冲器而直接提取到处理单元111的本地存储器115来避免此类非必要逐出。本地存储器115可为处理单元111的寄存器堆及/或本地静态随机存取存储器(SRAM)。要从随机存取存储器105提取的项目的数据类型及/或项目将如何用于深度学习加速器103中的提示可由编译器203在经配置以请求将数据项加载到本地存储器115中的指令中提供。提示允许基于未来可再用性范围来选择性地高速缓存或不高速缓存数据项且因此避免浪费存储器带宽。技术可导致用于处理深度神经网络(DNN)的给定工作量的存储器带宽使用及功率显著减少。
举例来说,存储器提取指令(例如加载指令)可经配置以指定随机存取存储器105中的存储器地址、本地存储器115中的本地地址及将从存储器地址加载到本地地址的数据项的大小。提取指令执行致使数据项加载到本地存储器115中的本地地址处。举例来说,本地存储器115可为处理单元111的寄存器堆或本地静态随机存取存储器(SRAM)。
提取追踪器可经配置以存储已加载于深度学习加速器103中用于随后执行的存储器提取指令。基于存储器地址、本地地址及将经由提取指令提取的项目的大小,提取追踪器可确定经由一个提取指令提取的数据项是否将在后续提取指令中再次提取。
此外,存储器提取指令可包含表示经由指令提取的数据项的类型及处理模式的提示的一组提示位。举例来说,存储器提取指令的提示位可由编译器203设置以向提取追踪器指示在处理涉及被提取的数据项的人工神经网络201时数据流的类型或特性。举例来说,提示位可指示数据项是人工神经网络201的指令还是矩阵。如果被提取的数据项是人工神经网络201的矩阵,那么提示位可指示涉及矩阵的处理在数据流中是否为权重固定、输出固定、输入固定或行固定,如下文进一步论述。
当存储器提取指令将被执行时,提取追踪器确定数据项是否已高速缓存于系统缓冲器中。如果是,那么高速缓存于系统缓冲器中的数据项根据在存储器提取指令中指定的本地地址来提取到本地存储器115中。否则,深度学习加速器103使用存储器接口117存取随机存取存储器105以从在存储器提取指令中指定的存储器地址提取数据项。
如果提取追踪器确定数据项将经由存储于提取追踪器中的后续存储器提取指令再次被请求,那么数据项高速缓存于系统缓冲器中且路由到由当前被执行的提取指令中指定的本地地址识别的目的地。
如果提取追踪器确定数据项未经由当前存储于提取追踪器中的任何后续存储器提取指令再次被请求,那么提取追踪器检查请求类型及提示位以确定是否高速缓存数据项。
如果所提取的数据是一组指令,那么指令组可直接路由到由本地地址识别的目的地,无需高速缓存于系统缓冲器中。
如果所提取的数据是人工神经网络的矩阵207(例如内核/映射数据),那么取决于用于实施相关联人工神经元层的计算的算法或处理方法的类型及系统缓冲器中存储容量的可用性,所提取数据可高速缓存于系统缓冲器中。
举例来说,用于处理相关联人工神经元层的算法的类型可在产生用于深度学习加速器103的指令205时为编译器203所知。因此,编译器可使用提取指令中的提示位识别算法的类型。
举例来说,用于处理人工神经元层的算法可分类或特性化为权重固定、输出固定、输入固定或行固定。
在特性化为权重固定的计算中,人工神经元的权重数据可加载及高速缓存于处理单元111的本地存储器115中以用于由处理单元111执行的多个操作中。因此,无需将权重数据高速缓存于系统缓冲器中,且系统缓冲器的容量可更高效地用于可被更频繁地重取的其它类型的数据。人工神经元的输入211可能被再用。因此,期望将输入211高速缓存于系统缓冲器中以提高存取人工神经元的输入211的性能。
在特性化为输入固定的计算中,人工神经元的输入211可加载及高速缓存于处理单元111的本地存储器115中以用于由处理单元111执行的多个操作中。因此,无需将输入数据高速缓存于系统缓冲器中,且系统缓冲器的容量可更高效地用于可被更频繁地重取的其它类型的数据。人工神经元的权重数据可能被再用。因此,期望将权重数据高速缓存于系统缓冲器中。
在特性化为输出固定的计算中,处理单元111可执行多个操作以计算同一组人工神经元的输出213。然而,输入211及权重数据两者在处理单元111的本地存储器115中是不固定的。因此,期望将输入211及权重数据两者高速缓存于系统缓冲器中。然而,当系统缓冲器中的存储容量不足时,高速缓存权重数据优先于高速缓存输入数据,因为加载于处理单元111的本地存储器中的输入数据可部分被再用。
在特性化为行固定的计算中,预期加载于处理单元111的本地存储器115中的输入211及权重数据不可再用。因此,期望将输入211及权重数据两者高速缓存于系统缓冲器中;且当系统缓冲器中的存储容量不足时,任何类型的数据没有被给予优先权。
图6展示根据一个实施例的用于高速缓存用于深度学习加速器的数据的系统。图6的系统可经实施于图1的集成电路装置101及/或图5的计算系统中。
举例来说,提取追踪器301可经实施于图1的深度学习加速器103的存储器接口117中;且系统缓冲器305可经实施于图1的随机存取存储器105与深度学习加速器103的处理单元111的本地存储器115之间。
在指令块205加载到深度学习加速器103中用于执行之后,提取追踪器301可存储在指令块205中找到的提取指令311、…、313。
典型提取指令311经配置以识别随机存取存储器105中的存储器地址321、待提取的项目307的数据大小323及深度学习加速器103中本地存储器115中的本地地址325。响应于提取指令311,项目307将加载到在提取指令311中指定的本地存储器115中的本地地址325处。深度学习加速器103的处理单元111使用本地存储器115中的项目307执行操作。
当由指令311请求的项目307已高速缓存于系统缓冲器305中时,提取指令311可通过将项目307从系统缓冲器305加载319到本地存储器115中来执行,将项目307从系统缓冲器305加载319到本地存储器115中比从随机存取存储器105加载317项目307更快。
如果项目307尚未在系统缓冲器305中,那么项目307将在存储器地址321处从随机存取存储器105检索。项目307可选择性地高速缓存到系统缓冲器305中。
举例来说,当提取追踪器301确定将在指令311之后执行的另一提取指令313从存储器地址321请求相同项目307时,执行项目307的高速缓存315,使得指令313中对项目307的请求可使用系统缓冲器305而非随机存取存储器105来履行以提高完成指令313的速度。
然而,如果存储于提取追踪器301中的所有指令未请求项目307,那么项目307可在尚未存储到提取追踪器301中的另一指令中被请求。在此情形中,可基于项目307的数据类型及/或在提取指令311中提供的提示位327来选择性地执行项目307的高速缓存315。
项目307的数据类型可为一组预定数据类型302中的一者。
在一个实施方案中,项目307的数据类型从本地地址325推断。举例来说,如果项目307将加载到经配置以存储将由深度学习加速器103执行的指令的本地存储器115中,那么项目307可被确定为具有指令331的数据类型;否则,项目307可被确定为具有一组人工神经元的矩阵333的数据类型。与一组人工神经元相关联的矩阵可表示人工神经元的权重数据或人工神经元组的输入211。
替代地,项目307的数据类型可由编译器203使用在提取指令311中提供的提示位327的一部分指定。
提示位327可用于进一步识别使用项目307对人工神经网络201执行的计算模式。举例来说,提示位327可用于识别一组预定义提示303中的一者,包含权重固定341、输出固定343、输入固定345及行固定347。
基于项目307的数据类型及/或涉及项目307的计算模式,可选择性地执行将项目307高速缓存315于系统缓冲器305中以优化系统缓冲器305的存储容量的使用。
举例来说,权重固定341可由编译器203用于指示使用系统缓冲器305来优先高速缓存输入211而非高速缓存权重数据。
举例来说,输入固定345可由编译器203用于指示使用系统缓冲器305来优先高速缓存权重数据而非高速缓存输入211。
举例来说,输出固定343可由编译器203用于指示使用系统缓冲器305来优先高速缓存权重数据及输入211两者且权重数据优先。
举例来说,行固定347可由编译器203用于指示使用系统缓冲器305来优先高速缓存权重数据及输入211两者且未给出权重数据或输入211优先权。
图7到11说明根据一个实施例的根据用于深度学习加速器的数据类型来高速缓存数据的实例。
在图7到11中,在提取指令311执行时,系统缓冲器305尚未存储由指令311请求的项目307。此外,提取追踪器301未存储请求相同项目307的另一提取指令。因此,提取追踪器301检查项目307的数据类型及/或提示位327以识别加载由指令311请求的项目307的方式。
在图7中,数据项307被确定为具有指令331的类型。因为提取追踪器301未存储请求由数据项307表示的指令的另一提取指令,因此提取指令311通过将项目307从随机存取存储器105中的存储器地址321加载到本地存储器115、绕过系统缓冲器305及跳过高速缓存项目307来执行。
在图8到11中,在提取指令311中请求的数据项307被确定为矩阵333的类型。数据项307可含有相应人工神经元的输入211及/或将由相应人工神经元应用到输入211的权重309。提取追踪器301未存储请求由数据项307表示的指令的另一提取指令。
在图8中,因为指令311的提示位327指示优先高速缓存权重309而非输入211,因此通过绕过系统缓冲器305来执行将权重309从随机存取存储器105加载317到本地存储器115中;且执行输入211的高速缓存315。在输入211在系统缓冲器305中之后,可执行从系统缓冲器305加载319输入211。
在图9中,因为指令311的提示位327指示优先高速缓存权重309及输入211,因此尝试高速缓存315在提取指令311中请求的数据项307。如果系统缓冲器305具有足够存储空间,那么权重309及输入211两者可高速缓存于系统缓冲器305中以加载到本地存储器115中。
然而,在图9中,当系统缓冲器305没有足够存储空间时,可跳过输入211的高速缓存以避免需要逐出当前高速缓存于系统缓冲器305中的其它数据;且在此情形中,可执行直接从随机存取存储器105加载317输入211,绕过系统缓冲器305。
在图9中,如果系统缓冲器305没有足以高速缓存权重309的自由空间,那么当前高速缓存于系统缓冲器305中的现存数据的一部分可被逐出以释放系统缓冲器305的存储容量的一部分。权重309可经由将其副本高速缓存315于系统缓冲器305中来加载到本地存储器115。
在图10中,因为指令311的提示位327指示优先高速缓存权重309而非输入211,因此执行将输入211从随机存取存储器105加载317到本地存储器115中,绕过系统缓冲器305;且执行权重309的高速缓存315。在权重309在系统缓冲器305中之后,可执行从系统缓冲器305加载319权重309。
在图11中,因为指令311的提示位327指示优先高速缓存权重309及输入211,因此尝试高速缓存315在提取指令311中请求的数据项307。如果系统缓冲器305具有足够存储空间,那么权重309及输入211两者可高速缓存于系统缓冲器305中以加载到本地存储器115中。
然而,在图11中,当系统缓冲器305没有足够存储空间时,可跳过输入211及/或权重309的高速缓存以避免需要逐出当前高速缓存于系统缓冲器305中的其它数据;且在此情形中,可执行直接从随机存取存储器105加载317输入211及/或权重,绕过系统缓冲器305。
图12展示根据一个实施例的高速缓存用于深度学习加速器的数据的方法。举例来说,图12的方法可经实施于图1的集成电路装置101或类似于图5中说明的装置的另一装置中。举例来说,图12的方法可使用软件管理或指令管理缓冲器或使用硬件管理高速缓存实施。
在框401处,装置101的多个处理单元111执行指令205以执行人工神经网络201的至少矩阵计算。
举例来说,装置101可包含形成于现场可编程门阵列(FPGA)或专用集成电路(ASIC)上的深度学习加速器103。深度学习加速器103具有存储器接口117、处理单元111、控制单元113及本地存储器115。
举例来说,处理单元111可包含矩阵-矩阵单元121、矩阵-向量单元141及/或向量-向量单元161。指令205可由人工神经网络201的编译器203产生以在针对人工神经网络201的输入211产生输出213时实施人工神经网络201的计算。
在框403处,装置101中耦合到处理单元111的本地存储器115可在指令205执行时在处理单元111操作期间存储指令205的至少操作数。
举例来说,本地存储器115可包含处理单元111的一或多个寄存器堆及/或本地静态随机存取存储器(SRAM)。举例来说,本地存储器115可包含图2到4中说明的映射存储体151、…、153、内核缓冲器131、…、133及/或向量缓冲器181、…、183。
举例来说,提取指令(例如311、…、313)可经由存储器接口117执行以将人工神经网络201的指令205及数据的一部分(例如矩阵207及输入211)加载到本地存储器115中以供处理单元111执行。指令205可包含提取指令(例如311、…、313)。
在框405处,深度学习加速器103接收具有存储器地址321及本地地址325的第一指令311。第一指令311请求在装置101的随机存取存储器105中的存储器地址321处可用的项目307提取到本地存储器115中的本地地址325处。第一指令311进一步具有识别将项目307高速缓存于装置101的系统缓冲器305中的提示的字段(例如提示位327)。
举例来说,系统缓冲器305可经配置使得将数据从系统缓冲器305加载到本地存储器115比从随机存取存储器105加载数据更快。系统缓冲器305可用于高速缓存可用于随机存取存储器105中的数据的一部分。优化系统缓冲器305的存储容量的使用可提高装置101的计算性能。在第一指令311中提供的提示可改进系统缓冲器305的存储容量的使用。
在框407处,在第一指令311执行期间,存储器接口117至少部分基于在第一指令311中指定的提示及项目307的数据类型来确定是否通过系统缓冲器305加载项目307。
举例来说,项目307的数据类型可表示人工神经网络中人工神经元的权重或表示人工神经网络中人工神经元的输入。
在一些例子中,是否通过系统缓冲器305加载项目307是进一步基于系统缓冲器305中在不逐出当前高速缓存于系统缓冲器305中的数据时用于高速缓存项目307的自由空间的可用性。
举例来说,在确定是否通过系统缓冲器305加载项目307之前,存储器接口117可确定项目307是否已高速缓存于系统缓冲器305中;且如果是,那么项目307从系统缓冲器305加载到本地存储器115中,无需读取随机存取存储器105。否则,存储器接口117可进一步确定项目307是否将由已加载到深度学习加速器103中且将在第一指令311之后执行的第二指令313再次请求。如果是,那么期望高速缓存项目307;且项目307可通过系统缓冲器305加载到本地存储器115中,无需检查指令的提示位327。否则,存储器接口117可进一步确定项目307是否为将由处理单元执行的一组指令。如果是,那么指令组可从随机存取存储器105加载到本地存储器115中,无需通过系统缓冲器305且无需检查提示位。否则,检查提示位327以确定是否通过系统缓冲器305加载项目307。
举例来说,当提示位327具有第一值时,项目307从随机存取存储器105加载到本地存储器115:响应于确定项目307具有第一类型,无需通过系统缓冲器305;或响应于确定项目307具有第二类型,通过系统缓冲器305。
举例来说,第一值可为权重固定341的方法用于计算一组人工神经元对输入的响应的指示。因此,含有表示人工神经网络201中人工神经元的权重309的数据的第一类型的项目307以绕过系统缓冲器305的方式加载到本地存储器115中;相比之下,含有表示人工神经网络201中人工神经元的输入211的数据的第二类型的项目307通过系统缓冲器305加载且因此高速缓存于系统缓冲器305中以供随后再用。
在另一实例中,第一值可为输入固定345的方法用于计算不同人工神经元组对输入211的响应的指示。因此,含有表示人工神经网络201中人工神经元的权重309的数据的第二类型的项目307通过系统缓冲器305加载且因此高速缓存于系统缓冲器305中以供随后再用;相比之下,含有表示人工神经网络201中人工神经元的输入211的数据的第一类型的项目307以绕过系统缓冲器305的方式加载到本地存储器115中。
然而,在实例中,当提示位327具有第二值时,项目307可基于项目307的类型及系统缓冲器305中自由空间的可用性来不同地从随机存取存储器105加载到本地存储器115。举例来说,第二值可为输出固定343的方法用于处理人工神经网络201的指示。因此,含有表示人工神经网络201中人工神经元的权重309的数据的第二类型的项目307通过系统缓冲器305加载且因此高速缓存于系统缓冲器305中以供随后再用;相比之下,如果在不逐出当前高速缓存于系统缓冲器中的数据时系统缓冲器305没有足够容量来高速缓存项目307,那么含有表示人工神经网络201中的人工神经元的输入211的数据的第一类型的项目307以绕过系统缓冲器305的方式加载到本地存储器115中,但如果在不逐出当前高速缓存于系统缓冲器305中的数据时系统缓冲器305具有足够容量来高速缓存项目307,那么含有表示人工神经网络201中的人工神经元的输入211的数据的第一类型的项目307通过系统缓冲器305加载到本地存储器115中。
此外,在实例中,当提示位327具有第三值时,项目307可基于系统缓冲器305中用于第一及第二两种类型的项目的自由空间的可用性来不同地从随机存取存储器105加载到本地存储器115。举例来说,第三值可为行固定347的方法用于处理人工神经网络201的指示。因此,如果在不逐出当前高速缓存于系统缓冲器中的数据时系统缓冲器305没有容量来高速缓存项目307,那么第一类型或第二类型的项目307以绕过系统缓冲器305的方式加载到本地存储器115中,但如果在不逐出当前高速缓存于系统缓冲器305中的数据时系统缓冲器305具有足够容量来高速缓存项目307,那么第一类型或第二类型的项目307通过系统缓冲器305加载到本地存储器115中。
此外,在实例中,当提示位327具有可致使项目307不同地从随机存取存储器105加载到本地存储器115的第四值时。举例来说,第四值可为权重固定341的方法用于处理人工神经网络201的指示。因此,含有表示人工神经网络201中人工神经元的权重309的数据的第二类型的项目307以绕过系统缓冲器305的方式加载到本地存储器115中;相比之下,含有表示人工神经网络201中的人工神经元的输入211的数据的第一类型的项目307通过系统缓冲器305加载且因此高速缓存于系统缓冲器305中以供随后再用。
本公开包含执行上述方法的方法及设备,包含执行这些方法的数据处理系统及含有在数据处理系统上执行时致使系统执行这些方法的指令的计算机可读媒体。
典型数据处理系统可包含使微处理器与存储器互连的互连件(例如总线及系统核心逻辑)。微处理器通常耦合到高速缓存存储器。
互连件使微处理器与存储器互连在一起且还经由I/O控制器使微处理器及存储器互连到输入/输出(I/O)装置。I/O装置可包含显示装置及/或外围装置,例如鼠标、键盘、调制解调器、网络接口、打印机、扫描仪、摄像机及所属领域中已知的其它装置。在一个实施例中,当数据处理系统是服务器系统时,例如打印机、扫描仪、鼠标及/或键盘的一些I/O装置是任选的。
互连件可包含通过各种桥接器、控制器及/或适配器彼此连接的一或多个总线。在一个实施例中,I/O控制器包含用于控制USB外围设备的USB(通用串行总线)适配器及/或用于控制IEEE-1394外围设备的IEEE-1394总线适配器。
存储器可包含以下中的一或多者:ROM(只读存储器)、易失性RAM(随机存取存储器)及非易失性存储器,例如硬盘、快闪存储器等。
易失性RAM通常实施为需要持续电力来刷新或保存存储器中的数据的动态RAM(DRAM)。非易失性存储器通常为磁性硬盘、磁性光驱、光驱(例如DVD RAM)或其它类型的存储器系统,其即使在从系统移除电力之后仍保存数据。非易失性存储器也可为随机存取存储器。
非易失性存储器可为直接耦合到数据处理系统中的剩余组件的本地装置。还可使用远离系统的非易失性存储器,例如通过网络接口(例如调制解调器或以太网接口)耦合到数据处理系统的网络存储装置。
在本公开中,将一些功能及操作描述为由软件代码执行或致使以简化描述。然而,此类表达还用于指定功能源自由例如微处理器的处理器执行代码/指令。
替代地或组合地,本文中描述的功能及操作可在用或不用软件指令的情况下使用专用电路系统来实施,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)。实施例可在不用软件指令的情况下或结合软件指令使用硬接线电路系统来实施。因此,技术既不受限于硬件电路系统与软件的任何特定组合,也不受限于由数据处理系统执行的指令的任何特定来源。
虽然一个实施例可经实施于全功能计算机及计算机系统中,但各种实施例能够分布为呈各种形式的计算产品且能够无关于用于实际实现分布的特定类型的机器或计算机可读媒体而应用。
所公开的至少一些方面可至少部分体现于软件中。即,技术可响应于其处理器(例如微处理器)执行存储器(例如ROM、易失性RAM、非易失性存储器、高速缓存或远程存储装置)中所含的指令序列而实施于计算机系统或其它数据处理系统中。
经执行以实施实施例的例程可实施为操作系统或特定应用程序、组件、程序、对象、模块或指令序列(称为“计算机程序”)的部分。计算机程序通常包含计算机中的各种存储器及存储装置中在各种时间设置且在由计算机中的一或多个处理器读取及执行时致使计算机执行在执行涉及各个方面的元素时所需的操作的一或多个指令。
机器可读媒体可用于存储在由数据处理系统执行时致使系统执行各种方法的软件及数据。可执行软件及数据可存储于包含例如ROM、易失性RAM、非易失性存储器及/或高速缓存的各种位置中。此软件及/或数据的部分可存储于这些存储装置中的任一者中。此外,可从集中式服务器或对等网络获得数据及指令。可在不同时间且在不同通信会话或相同通信会话中从不同集中式服务器及/或对等网络获得数据及指令的不同部分。可在执行应用程序之前完全获得数据及指令。替代地,可仅在需要执行时及时动态获得数据及指令的部分。因此,不要求数据及指令在特定时刻完全在机器可读媒体上。
计算机可读媒体的实例包含(但不限于)非暂时性、可记录及不可记录型媒体,例如易失性及非易失性存储器装置、只读存储器(ROM)、随机存取存储器(RAM)、快闪存储器装置、软盘及其它可卸除磁盘、磁盘存储媒体、光学存储媒体(例如光盘只读存储器(CD ROM)、数字多功能磁盘(DVD)等)等。计算机可读媒体可存储指令。
指令还可体现于用于电、光、声或其它形式的传播信号(例如载波、红外信号、数字信号等)的数字及模拟通信链路中。然而,传播信号(例如载波、红外信号、数字信号等)不是有形机器可读媒体且无法经配置以存储指令。
一般来说,机器可读媒体包含提供(即,存储及/或传输)呈可由机器(例如计算机、网络装置、个人数字助理、制造工具、具有一组一或多个处理器的任何装置等)存取的形式的信息的任何机构。
在各种实施例中,硬接线电路系统可结合软件指令用于实施技术。因此,技术既不受限于硬件电路系统与软件的任何特定组合,也不受限于由数据处理系统执行的指令的任何特定来源。
以上描述及图式仅供说明且不应被解释为限制。描述众多特定细节来提供充分理解。然而,在某些例子中,未描述众所周知或常规细节以免使描述模糊不清。本公开中参考一个或一实施例不一定是参考同一实施例;且此类参考意味着至少一个。
在以上说明中,已参考本公开的特定示范性实施例描述本公开。应明白,可在不背离所附权利要求书中陈述的更广精神及范围的情况下对本公开做出各种修改。因此,说明书及图式应被视作意在说明而非限制。
Claims (20)
1.一种装置,其包括:
多个处理单元,其经配置以执行指令及经由所述指令的执行来执行人工神经网络的至少矩阵计算;
本地存储器,其耦合到所述处理单元且经配置以在所述指令执行时在所述处理单元操作期间存储所述指令的至少操作数;
存储器,其经配置为缓冲器;
随机存取存储器;及
逻辑电路,其耦合到所述缓冲器、所述本地存储器及所述随机存取存储器;
其中所述指令包含用于将项目从所述随机存取存储器提取到所述本地存储器的第一指令;所述第一指令包含与将所述项目高速缓存于所述缓冲器中相关的字段;且在所述第一指令执行期间,所述逻辑电路经配置以至少部分基于在所述第一指令中指定的所述字段来确定是否通过所述缓冲器加载所述项目。
2.根据权利要求1所述的装置,其中是否通过所述缓冲器加载所述项目是进一步基于所述项目的数据类型。
3.根据权利要求2所述的装置,其中是否通过所述缓冲器加载所述项目的第二确定是响应于以下第一确定:
所述项目尚未高速缓存于所述缓冲器中;
所述项目不是将由所述处理单元执行的一组指令;及
高速缓存于所述本地存储器中的第二指令未请求所述数据项。
4.根据权利要求3所述的装置,其中当所述字段具有第一值时,所述项目从所述随机存取存储器加载到所述本地存储器:
响应于确定所述项目具有第一类型,无需通过所述缓冲器;或
响应于确定所述项目具有第二类型,通过所述缓冲器。
5.根据权利要求4所述的装置,其中所述第一类型的所述项目含有表示所述人工神经网络中人工神经元的权重的数据;且所述第二类型的所述项目含有表示所述人工神经网络中所述人工神经元的输入的数据。
6.根据权利要求4所述的装置,其中所述第二类型的所述项目含有表示所述人工神经网络中人工神经元的权重的数据;且所述第一类型的所述项目含有表示所述人工神经网络中所述人工神经元的输入的数据。
7.根据权利要求4所述的装置,其中当所述字段具有第二值时,所述项目从所述随机存取存储器加载到所述本地存储器:
响应于确定所述项目具有所述第一类型且在不逐出当前高速缓存于所述缓冲器中的数据时所述缓冲器没有足够容量来高速缓存所述项目,无需通过所述缓冲器;
响应于确定所述项目具有所述第二类型,通过所述缓冲器;或
响应于确定所述项目具有所述第一类型且在不逐出当前高速缓存于所述缓冲器中的数据时所述缓冲器具有足够容量来高速缓存所述项目,通过所述缓冲器。
8.根据权利要求7所述的装置,其中所述第二类型的所述项目含有表示所述人工神经网络中人工神经元的权重的数据;且所述第一类型的所述项目含有表示所述人工神经网络中所述人工神经元的输入的数据。
9.根据权利要求8所述的装置,其中当所述字段具有第三值时,所述项目从所述随机存取存储器加载到所述本地存储器:
响应于确定在不逐出当前高速缓存于所述缓冲器中的数据时所述缓冲器没有足够容量来高速缓存所述项目,无需通过所述缓冲器;或
响应于确定在不逐出当前高速缓存于所述缓冲器中的数据时所述缓冲器具有足够容量来高速缓存所述项目,通过所述缓冲器。
10.根据权利要求9所述的装置,其中当所述字段具有第四值时,所述项目从所述随机存取存储器加载到所述本地存储器:
响应于确定所述项目具有所述第二类型,无需通过所述缓冲器,或
响应于确定所述项目具有所述第一类型,通过所述缓冲器。
11.一种方法,其包括:
由装置的多个处理单元执行指令以执行人工神经网络的至少矩阵计算;
在所述指令执行时在所述处理单元操作期间将所述指令的至少操作数存储于所述装置中耦合到所述处理单元的本地存储器中;
接收具有存储器地址及本地地址的第一指令以请求所述装置的随机存取存储器中的所述存储器地址处的项目提取到所述本地存储器中的所述本地地址处,所述第一指令具有识别将所述项目高速缓存于所述装置的系统缓冲器中的提示的字段;及
在所述第一指令执行期间,至少部分基于在所述第一指令中指定的所述提示及所述项目的数据类型来确定是否通过所述系统缓冲器加载所述项目。
12.根据权利要求11所述的方法,其中当所述提示具有第一值时,所述项目从所述随机存取存储器加载到所述本地存储器:
响应于确定所述项目具有第一类型,无需通过所述系统缓冲器,或
响应于确定所述项目具有第二类型,通过所述系统缓冲器。
13.根据权利要求12所述的方法,其中当所述提示具有第二值时,所述项目从所述随机存取存储器加载到所述本地存储器:
响应于确定所述项目具有所述第一类型且在不逐出当前高速缓存于所述系统缓冲器中的数据时所述系统缓冲器没有足够容量来高速缓存所述项目,无需通过所述系统缓冲器;
响应于确定所述项目具有所述第二类型,通过所述系统缓冲器;或
响应于确定所述项目具有所述第一类型且在不逐出当前高速缓存于所述系统缓冲器中的数据时所述系统缓冲器具有足够容量来高速缓存所述项目,通过所述系统缓冲器。
14.根据权利要求13所述的方法,其中所述第二类型的所述项目含有表示所述人工神经网络中人工神经元的权重的数据;且所述第一类型的所述项目含有表示所述人工神经网络中所述人工神经元的输入的数据。
15.根据权利要求14所述的方法,其中当所述提示具有第三值时,所述项目从所述随机存取存储器加载到所述本地存储器:
响应于确定在不逐出当前高速缓存于所述系统缓冲器中的数据时所述系统缓冲器没有足够容量来高速缓存所述项目,无需通过所述系统缓冲器;或
响应于确定在不逐出当前高速缓存于所述系统缓冲器中的数据时所述系统缓冲器具有足够容量来高速缓存所述项目,通过所述系统缓冲器。
16.根据权利要求15所述的方法,其中当所述提示具有第四值时,所述项目从所述随机存取存储器加载到所述本地存储器:
响应于确定所述项目具有所述第二类型,无需通过所述系统缓冲器,或
响应于确定所述项目具有所述第一类型,通过所述系统缓冲器。
17.一种设备,其包括:
现场可编程门阵列(FPGA)或专用集成电路(ASIC),其包含:
存储器接口;
至少一个处理单元,其经配置以对在所述FPGA或ASIC中执行的指令的两个矩阵操作数进行操作;及
本地存储器,其经配置以在所述指令执行期间存储所述指令的操作数;
系统缓冲器,其连接到所述存储器接口;及
随机存取存储器,其连接到所述存储器接口;
其中响应于第一指令指定存储器地址、本地地址及提示,所述存储器接口经配置以基于所述提示来确定是否通过所述系统缓冲器将在所述随机存取存储器中的所述存储器地址处可用的项目提取到所述本地存储器中的所述本地地址。
18.根据权利要求17所述的设备,其中是否通过所述系统缓冲器加载所述项目是进一步基于所述项目的数据类型。
19.根据权利要求18所述的设备,其中是否通过所述系统缓冲器加载所述项目是进一步基于所述系统缓冲器中在不逐出当前高速缓存于所述系统缓冲器中的数据时用于高速缓存所述项目的自由空间的可用性。
20.根据权利要求18所述的设备,其中所述数据类型是以下中的一者:
表示所述人工神经网络中人工神经元的权重;及
表示所述人工神经网络中所述人工神经元的输入。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/146,314 | 2021-01-11 | ||
US17/146,314 US20220223201A1 (en) | 2021-01-11 | 2021-01-11 | Caching Techniques for Deep Learning Accelerator |
PCT/US2022/011459 WO2022150491A1 (en) | 2021-01-11 | 2022-01-06 | Caching techniques for deep learning accelerator |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116762081A true CN116762081A (zh) | 2023-09-15 |
Family
ID=82322020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280009290.9A Pending CN116762081A (zh) | 2021-01-11 | 2022-01-06 | 用于深度学习加速器的高速缓存技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220223201A1 (zh) |
CN (1) | CN116762081A (zh) |
WO (1) | WO2022150491A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230051863A1 (en) * | 2021-08-10 | 2023-02-16 | Micron Technology, Inc. | Memory device for wafer-on-wafer formed memory and logic |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216837A (zh) * | 2013-05-31 | 2014-12-17 | 华为技术有限公司 | 一种内存系统、内存访问请求的处理方法和计算机系统 |
US9747546B2 (en) * | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10664751B2 (en) * | 2016-12-01 | 2020-05-26 | Via Alliance Semiconductor Co., Ltd. | Processor with memory array operable as either cache memory or neural network unit memory |
US10726330B2 (en) * | 2016-10-11 | 2020-07-28 | The Research Foundation For The State University Of New York | System, method, and accelerator to process convolutional neural network layers |
CN108229645B (zh) * | 2017-04-28 | 2021-08-06 | 北京市商汤科技开发有限公司 | 卷积加速和计算处理方法、装置、电子设备及存储介质 |
US11775799B2 (en) * | 2018-08-02 | 2023-10-03 | Advanced Micro Devices, Inc. | Runtime extension for neural network training with heterogeneous memory |
US10884938B2 (en) * | 2018-12-13 | 2021-01-05 | International Business Machines Corporation | Method and apparatus for prefetching data items to a cache |
US20210048991A1 (en) * | 2019-08-13 | 2021-02-18 | Nvidia Corporation | Performing matrix operations in neural networks |
US11567555B2 (en) * | 2019-08-30 | 2023-01-31 | Intel Corporation | Software assisted power management |
US11314515B2 (en) * | 2019-12-23 | 2022-04-26 | Intel Corporation | Instructions and logic for vector multiply add with zero skipping |
US11874897B2 (en) * | 2020-04-09 | 2024-01-16 | Micron Technology, Inc. | Integrated circuit device with deep learning accelerator and random access memory |
-
2021
- 2021-01-11 US US17/146,314 patent/US20220223201A1/en active Pending
-
2022
- 2022-01-06 CN CN202280009290.9A patent/CN116762081A/zh active Pending
- 2022-01-06 WO PCT/US2022/011459 patent/WO2022150491A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20220223201A1 (en) | 2022-07-14 |
WO2022150491A1 (en) | 2022-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10884957B2 (en) | Pipeline circuit architecture to provide in-memory computation functionality | |
US11874897B2 (en) | Integrated circuit device with deep learning accelerator and random access memory | |
US11887647B2 (en) | Deep learning accelerator and random access memory with separate memory access connections | |
US11461651B2 (en) | System on a chip with deep learning accelerator and random access memory | |
US20190057727A1 (en) | Memory device to provide in-memory computation functionality for a pipeline circuit architecture | |
CN115443468A (zh) | 具有摄像头接口的深度学习加速器及随机存取存储器 | |
CN116210006A (zh) | 用于深度学习加速器和随机存取存储器的智能低功率模式 | |
CN116134452A (zh) | 具有集成随机存取存储器的深度学习加速器中的优化传感器融合 | |
CN116635936A (zh) | 用于支持集成电路装置中的深度学习加速器的存储器配置 | |
CN116569182A (zh) | 具有用以优化经生成以用于在人工神经网络的深度学习加速器上执行的指令的人工神经网络的编译器 | |
CN116762081A (zh) | 用于深度学习加速器的高速缓存技术 | |
US20220147808A1 (en) | Compiler configurable to generate instructions executable by different deep learning accelerators from a description of an artificial neural network | |
CN116097273A (zh) | 由深度学习加速器与集成随机存取存储器进行的协作式传感器数据处理 | |
CN115702427A (zh) | 具有深度学习加速器和随机存取存储器的智能数码相机 | |
CN116097272A (zh) | 具有集成随机存取存储器的深度学习加速器中的容错人工神经网络计算 | |
CN115943387A (zh) | 具有深度学习加速器及随机存取存储器的集成传感器装置 | |
US20220147809A1 (en) | Deep learning accelerators with configurable hardware options optimizable via compiler | |
US20230315630A1 (en) | Dynamic inclusive and non-inclusive caching policy | |
US20220147813A1 (en) | Runtime optimization of computations of an artificial neural network compiled for execution on a deep learning accelerator | |
US20220147811A1 (en) | Implement the computation of an artificial neural network using multiple deep learning accelerators | |
CN117255997A (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 |