CN114492771A - 神经网络处理单元及系统 - Google Patents

神经网络处理单元及系统 Download PDF

Info

Publication number
CN114492771A
CN114492771A CN202111332073.7A CN202111332073A CN114492771A CN 114492771 A CN114492771 A CN 114492771A CN 202111332073 A CN202111332073 A CN 202111332073A CN 114492771 A CN114492771 A CN 114492771A
Authority
CN
China
Prior art keywords
point
neural network
processing unit
floating
fixed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111332073.7A
Other languages
English (en)
Inventor
林建宏
蔡一民
余佳霖
杨济维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
MediaTek Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MediaTek Inc filed Critical MediaTek Inc
Publication of CN114492771A publication Critical patent/CN114492771A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and floating-point numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)

Abstract

一种神经网络(NN)处理单元包括运算电路,用于以第一数值表示和第二数值表示中的其中一种方式执行神经网络的给定层的张量运算。神经网络处理单元还包括转换电路,其耦接运算电路的输入端与输出端中的至少一个,以在第一数值表示与第二数值表示之间进行转换。第一数值表示为定点数表示和浮点数表示中的其中一种,第二数值表示为定点数表示和浮点数表示中的另一种。

Description

神经网络处理单元及系统
技术领域
本发明实施例通常涉及一种神经网络处理单元和由该神经网络处理单元执行的深度神经网络运算(operation)。
背景技术
深度神经网络是具有输入层、输出层以及位于输入层和输出层之间的一个或多个隐藏层(hidden layer)的神经网络。每层对一个或多个张量(tensor)执行运算。张量是一个数学对象,它可以是零维(又名标量,scaler)、一维(又名向量,vector)、二维(又名矩阵,matrix)或多维。各层执行的运算是数值计算,包括但不限于:卷积、反卷积、全连接运算、归一化、激活、池化、缩放(resizing)、逐元素算术(element-wise arithmetic)、串联、切片等。一些层将过滤器权值应用到张量,例如,在卷积运算中。
张量在神经网络中逐层移动。通常,由层产生的张量存储在本地存储器中,并由下一层从本地存储器中获取(retrieve)作为输入。张量的存储和获取以及任何适用的过滤器权值可能会使用存储器总线上的大量数据带宽。
神经网络计算是计算密集型和带宽要求高的计算。现代计算器通常在数值计算中使用具有大位宽(例如,32位)的浮点数来实现高精度。然而,高精度是以高功耗和高资料带宽为代价的。在神经网络计算中平衡低功耗和低数据带宽,同时保持可接受的精度的这种需求是一个挑战。
发明内容
有鉴于此,本发明的目的之一在于提供一种神经网络处理单元及系统,以解决上述问题。
第一方面,本发明提供了一种神经网络处理单元,包括运算电路和转换电路,运算电路用于以第一数值表示和第二数值表示中的其中一种方式执行神经网络的给定层的张量运算;以及,转换电路耦接该运算电路的输入端和输出端中的至少一者,以在该第一数值表示和该第二数值表示之间进行转换;其中,该第一数值表示为定点数表示和浮点数表示中的其中一者,该第二数值表示为该定点数表示和该浮点数表示中的另一者。
在一些实施例中,根据该神经网络的该给定层的操作参数,该转换电路被配置为耦接到该运算电路的该输入端和该输出端中的一者或两者。
在一些实施例中,根据该神经网络的该给定层的操作参数,该转换电路被配置为:针对输入转换和输出转换中的一者或两者是被启用的或被旁路的。
在一些实施例中,该神经网络处理单元用于对该给定层的第一输入运算对象和第二输入运算对象执行层内混合精度计算,该第一输入运算对象和该第二输入运算对象具有不同的数值表示。
在一些实施例中,该神经网络处理单元用于执行层间混合精度计算,在该层间混合精度计算中,该神经网络的第一层中的计算是以该第一数值表示的方式进行的,而该神经网络的第二层中的计算是以该第二数值表示的方式进行的。
在一些实施例中,通过一次对一个层进行操作,该神经网络处理单元在该神经网络的多个层之间是被分时共享的。
在一些实施例中,该神经网络处理单元还包括:缓冲存储器,用于给该转换电路缓冲未被转换的输入,以在该神经网络的该给定层的操作期间确定用于在该第一数值表示和该第二数值表示之间进行转换的比例因子。
在一些实施例中,该神经网络处理单元还包括:缓冲器,耦接在该转换电路与该运算电路之间。
在一些实施例中,该运算电路包括定点电路和浮点电路,该定点电路以定点方式计算该神经网络的一层,以及,该浮点电路以浮点方式计算该神经网络的另一层。
在一些实施例中,该神经网络处理单元耦接到一个或多个处理器,该一个或多个处理器用于以该第一数值表示的方式执行该神经网络的一个或多个层的操作。
在一些实施例中,该神经网络处理单元包括:多个该运算电路,每个运算电路包括一个或多个定点电路和/或浮点电路,其中,不同的运算电路用于计算该神经网络的不同层;以及,一个或多个该转换电路,耦接该运算电路。
在一些实施例中,该运算电路进一步包括以下一项或多项:加法器、减法器、乘法器、函数评估器和乘法累加MAC电路。
第二方面,本发明还提供了一种神经网络处理单元,包括运算电路和转换电路,该神经网络处理单元用于:根据神经网络的给定层的操作参数,选择启用或旁路用于对输入运算对象进行输入转换的转换电路,其中,该输入转换在被启用时将该输入运算对象从第一数值表示转换为第二数值表示;对具有该第二数值表示方式的该输入运算对象执行张量运算,以产生具有该第二数值表示方式的输出运算对象;以及,根据该操作参数选择启用或旁路用于对输出运算对象进行输出转换的转换电路,其中,该输出转换在被启用时将该输出运算对象从该第二数值表示转换为该第一数值表示,其中,该第一数值表示为定点数表示和浮点数表示中的其中一者,该第二数值表示为该定点数表示和该浮点数表示中的另一者。
在一些实施例中,该神经网络处理单元被操作为:对于该神经网络的另一给定层,对具有该第一数值表示方式的另一输入运算对象执行额外的张量运算,以产生具有该第一数值表示方式的另一输出运算对象。
在一些实施例中,通过一次对一个层进行操作,该神经网络处理单元在该神经网络的多个层之间是被分时共享的。
第三方面,本发明还提供了一种神经网络处理系统,包括:一个或多个浮点电路,用于给神经网络的一个层或多个层执行浮点张量运算;一个或多个定点电路,用于给神经网络的其它层或其它多个层执行定点张量运算;以及,一个或多个转换电路,耦接到该浮点电路和该定点电路中的至少一者,用于在浮点数表示和定点数表示之间进行转换。
在一些实施例中,该一个或多个浮点电路和该一个或多个定点电路是根据预定顺序彼此串联耦接的。
在一些实施例中,该一个或多个浮点电路之一者的输出端和该一个或多个定点电路之一者的输出端并联耦接到多工器。
在一些实施例中,该一个或多个转换电路包括浮点至定点转换器,该浮点至定点转换器耦接该定点电路的输入端或耦接该浮点电路的输出端。
在一些实施例中,该一个或多个转换电路包括定点至浮点转换器,该定点至浮点转换器耦接该浮点电路的输入端或耦接该定点电路的输出端。
本领域技术人员在阅读附图所示优选实施例的下述详细描述之后,可以毫无疑义地理解本发明的这些目的及其它目的。详细的描述将参考附图在下面的实施例中给出。
附图说明
附图(其中,相同的数值表示相同的元件)示出了本发明实施例。包括的附图用以提供对本发明实施例的进一步理解,以及,附图被并入并构成本发明实施例的一部分。附图示出了本发明实施例的实施方式,并且与说明书一起用于解释本发明实施例的原理。可以理解的是,附图不一定按比例绘制,因为可以示出一些部件与实际实施中的尺寸不成比例以清楚地说明本发明实施例的概念。此外,当结合实施例描述特定特征、结构或特性时,可以认为在本领域技术人员的知识范围内能够实现与其它实施例相关的这种特征、结构或特性,无论是否有明确描述。
图1是根据一实施例示出的可操作为执行神经网络(neural network,NN)操作的系统的框图。
图2是根据一实施例示出的包括定点电路(fixed-point circuit)的NN处理单元的示例的框图。
图3是根据一实施例示出的包括浮点电路(floating-point)的NN处理单元的示例的框图。
图4A和图4B是根据一些实施例示出的具有不同转换器布置的NN处理单元的框图。
图5A和图5B是根据一些实施例示出的具有缓冲存储器的NN处理单元的框图。
图6是根据另一实施例示出的NN处理单元的框图。
图7是根据又一实施例示出的NN处理单元的框图。
图8A和图8B是根据一些实施例示出的NN处理单元被分时共享的一些方面的示意图。
图9是根据一实施例示出的用于混合精度计算的方法的流程图。
图10是根据一实施例示出的用于混合精度计算的方法的流程图。
图11是根据一实施例示出的用于可配置张量操作的方法的流程图。
在下面的详细描述中,为了说明的目的,阐述了许多具体细节,以便所属技术领域中具有通常知识者能够更透彻地理解本发明实施例。然而,显而易见的是,可以在没有这些具体细节的情况下实施一个或多个实施例,不同的实施例或不同实施例中披露的不同特征可根据需求相结合,而并不应当仅限于附图所列举的实施例。
具体实施方式
以下描述为本发明实施的较佳实施例,其仅用来例举阐释本发明的技术特征,而并非用来限制本发明的范畴。在通篇说明书及权利要求书当中使用了某些词汇来指称特定的元件,所属领域技术人员应当理解,制造商可能会使用不同的名称来称呼同样的元件。因此,本说明书及权利要求书并不以名称的差异作为区别元件的方式,而是以元件在功能上的差异作为区别的基准。本发明中使用的术语“元件”、“系统”和“装置”可以是与计算机相关的实体,其中,该计算机可以是硬件、软件、或硬件和软件的结合。在以下描述和权利要求书当中所提及的术语“包含”和“包括”为开放式用语,故应解释成“包含,但不限定于…”的意思。此外,术语“耦接”意指间接或直接的电气连接。因此,若文中描述一个装置耦接于另一装置,则代表该装置可直接电气连接于该另一装置,或者透过其它装置或连接手段间接地电气连接至该另一装置。
其中,除非另有指示,各附图的不同附图中对应的数字和符号通常涉及相应的部分。所绘制的附图清楚地说明了实施例的相关部分且并不一定是按比例绘制。
文中所用术语“基本”或“大致”是指在可接受的范围内,本领域技术人员能够解决所要解决的技术问题,基本达到所要达到的技术效果。举例而言,“大致等于”是指在不影响结果正确性时,技术人员能够接受的与“完全等于”有一定误差的方式。
本发明实施例提供一种神经网络(NN)处理单元,其包括用于多层神经网络的层内混合精度(hybrid-precision)和层间混合精度(mixed-precision)计算的专用电路。在此使用的术语“层内混合精度计算”和“层间混合精度计算”是指对不同的数值表示方式下的数值进行的神经网络计算,例如浮点数(floating-point number)和定点数(fixed-pointnumber)。在层内混合精度计算中,一个层可以接收多个输入运算对象(input operands),其包括浮点数和定点数。对该输入运算对象执行的计算要么是浮点运算要么是定点运算;因此,对该输入运算对象的一个或多个执行转换,以使得所有的输入运算对象具有相同的数值表示(number representation)。输入运算对象可以是输入激活(input activation)、过滤器权值(filter weight)、特征图(feature map)等。在层间混合精度计算中,神经网络中的一层或多层以浮点运算方式进行计算,另一层或另一多层以定点运算方式进行计算。每一层的数值表示的选择会对计算精度、功耗和数据带宽产生重大影响。
由NN处理单元执行的神经网络运算被称为张量运算。NN处理单元根据DNN(DeepNeuralNetwork,深度神经网络)模型执行张量运算。DNN模型包括多个操作层(operationlayer),也称为OP层或层。对于每一层,NN处理单元被操作参数(operating parameter)配置为在不同的数值表示之间执行转换以及在数值表示的方式下执行计算。NN处理单元提供专用的硬件处理路径,以执行张量运算并在不同的数值表示之间执行转换。对浮点数和定点数的硬件支持使得各种人工智能(artificial intelligence,AI)应用程序能够在边缘设备上运行。
定点算法广泛用于延迟要求超过准确性的应用中。可以通过位宽(bit-width)和小数点(radixpoint)的位置来定义定点数。与浮点算法相比,定点算法易于在硬件中实现并且计算效率更高,但精度较低。这里使用的术语“定点表示(fixed-pointrepresentation)”是指对于整数部分和小数部分具有固定位数的数值表示。定点表示(亦称为定点数表示)可选地包括符号位。
另一方面,浮点运算广泛用于科学计算或主要关注精度的应用中。这里使用的术语“浮点表示”是指具有尾数(mantissa,也称为“系数(coefficient)”)和指数(exponent)的数值表示。浮点表示(亦称为浮点数表示)可选地包括符号位。浮点表示的示例包括但不限于IEEE 754标准格式,例如,16位、32位、64位浮点数,或某些处理器支持的其它浮点格式。
图1是根据一实施例示出的可操作为执行张量运算的系统100的框图。系统100包括处理硬件(processing hardware)110,处理硬件110进一步包括一个或多个处理器130,例如,中央处理单元(central processing unit,CPU)、图形处理单元(graphicsprocessing unit,GPU)、数字处理单元(digital processing unit,DSP)、现场可编程门阵列(field-programmable gate array,FPGA)和其它通用用途处理器和/或专用处理器。处理器130耦接到神经网络(NN)处理单元150。NN处理单元150专门用于神经网络运算;例如,张量运算。张量运算的例子包括但不限于:卷积(convolution)、反卷积(deconvolution)、全连接运算(fully-connected operation)、归一化(normalization)、激活(activation)、池化(pooling)、缩放(resizing)、逐元素算术(element-wise arithmetic)、串联(concatenation)、切片(slicing)等。
NN处理单元150至少包括运算(operation,OP)电路152,其至少耦接到转换电路154。运算(OP)电路152执行数学计算,包括但不限于以下一项或多项:加、减、乘、乘法累加(multiply-and-add,MAC)、函数F(x)评估以及上述张量运算的任意项。运算(OP)电路152可以包括以下功能单元中的一个或多个:加法器、减法器、乘法器、函数评估器(functionevaluator)和乘法累加(MAC)电路。函数评估器的非限制性示例包括tanh(X)、sigmoid(X)、ReLu(X)、GeLU(X)等。运算(OP)电路152可以包括浮点电路或定点电路。或者,运算(OP)电路152可包括浮点电路和定点电路这两者。浮点电路包括一个或多个浮点功能单元(floating-point functional unit),用于以浮点形式实现上述张量运算。定点电路包括一个或多个定点功能单元(fixed-point functional unit),用于以定点形式实现上述张量运算。在NN处理单元150包括多个运算(OP)电路152的实施例中,不同的运算(OP)电路152可以包括用于不同的数值表示的硬件;例如,一些运算(OP)电路152可以包括浮点电路,而另一些运算(OP)电路152可以包括定点电路。
转换电路154包括用于在浮点数(floating-point number)和定点数(fixed-point number)之间转换的专用硬件。转换电路154可以是浮点至定点转换器(floating-point to fixed-point converter)、定点至浮点转换器(fixed-point to floating-point converter)、包括浮点至定点转换器和定点至浮点转换器的组合转换器(combinedconverter),或者,可配置为从浮点转换为定点或者从定点转换为浮点的转换器。转换电路154可以包括转换硬件,例如但不限于,加法器、乘法器、移位器(shifter)等中的一个或多个。转换硬件还可以包括检测器(detector)或计数器(counter),用于在浮点数的情况下处理前导的0或1。转换电路154可进一步包括多工器,该多工器具有转换路径(conversionpath)和旁路路径(bypass path),其中,转换路径连接到转换硬件(可以理解地,运算对象经由转换路径进行转换),旁路路径允许未转换的运算对象绕过(bypass,亦可称为旁路)转换(可以理解地,运算对象经由旁路路径不进行转换)。可以将选择信号提供至多工器,以针对每个层选择启用或绕过(bypass)输入转换和/或输出转换。在NN处理单元150包括多个转换电路154的实施例中,一些转换电路154可以用于从浮点转换到定点,而一些其它转换电路154可以用于从定点转换到浮点。此外,一些转换电路154可以耦接到相应的运算(OP)电路152的输出端,而一些其它转换电路154可以耦接到相应的运算(OP)电路152的输入端。
处理硬件110耦接到存储器(memory)120,存储器120可以包括诸如动态随机存取存储器(dynamic random access memory,DRAM)、静态随机存取存储器(static randomaccess memory,SRAM)、闪存和其它非暂时性机器可读存储介质的存储装置;例如,易失性或非易失性存储装置。为了简化说明,存储器120被表示为一个模块;然而,应当理解,存储器120可以表示存储器元件的层次结构,例如,高速缓存存储器、NN处理单元150的本地存储器、系统存储器、固态或磁存储装置等。处理硬件110执行被存储在存储器120中的指令,以执行操作系统功能和运行用户应用程序。例如,存储器120可存储NN编译程序(compiler)123,其能够被处理器130执行,以将源程序编译为可执行代码供处理硬件根据DNN模型125执行操作。DNN模型125可由包括多个层(其包括输入层、输出层和位于两者中间的一个或多个隐藏层)的计算图(computational graph)表示。DNN模型125被训练为具有与该多个层的一个或一个以上层相关联的权值。NN处理单元150利用已训练的权值根据DNN模型125执行张量运算。张量运算可以包括层内混合精度计算和/或层间混合精度计算。存储器120还针对DNN模型125的每个层存储操作参数(operating parameter)126,以针对该层指示是否启用或绕过(亦称为旁路)数值表示的转换。
在可选实施例中,操作参数126以有限状态机的形式被本地存储在NN处理单元150中,或以其它方式可供NN处理单元150访问(access)。NN处理单元150可根据有限状态机中的操作参数126进行操作以执行张量运算。
例如,在运行时间或功耗的约束下,NN处理单元150可被配置为以定点运算执行高计算要求任务(例如,矩阵乘法)的一些或全部。如果某一层接收一个浮点形式的输入运算对象和另一定点形式的输入运算对象,则转换电路154能够在运行时将浮点运算对象转换为定点运算对象,以便运算(OP)电路152执行定点乘法。
在一些实施例中,存储器120可以存储指令,当这些指令由处理硬件110执行时,能够使得处理硬件110根据DNN模型125和操作参数126执行层间混合精度计算和/或层内混合精度计算。
在继续其它实施例之前,描述浮点和定点之间的转换是有帮助的。浮点向量Float[i]和对应的定点向量Fixed[i]之间的关系(i=[1,N])可以用以下公式来描述:Float[i]=S×(Fixed[i]+O),其中,S是比例因子(scaling factor),O是偏移量(offset)。当O为零时,转换是对称的(symmetric);当O非零时,它是不对称的(asymmetric)。比例因子和偏移量可以是离线计算提供的。在一些实施例中,该比例因子可以是基于该浮点数和该定点数的相应范围动态地/实时地/实时(onthe fly)计算出来的;即,在NN操作的推理阶段的期间动态计算。在一些实施例中,该偏移量可以是基于浮点数和定点数在零附近的分布动态计算的。例如,当该浮点数和定点数的分布不是以零为中心时,使用非对称转换能够减少量化误差。
转换电路154对运算(OP)电路152的输入运算对象进行转换,使得由运算(OP)电路152操作的数值具有相同的数值表示,例如,其包括:在浮点数情况下针对尾数和指数具有相同的位宽以及在定点数情况下针对整数部分和小数部分具有相同的位宽。此外,当数值范围不以零为中心时,相同的数值表示包括相同的数值中心偏移量。此外,相同的数值表示包括相同的符号表示或无符号表示。
图2是根据一实施例示出的包括定点电路210的NN处理单元200的示例的框图。NN处理单元200可以是图1中NN处理单元150的一种示例。定点电路210作为运算(OP)电路152(图1)的示例,以及,定点电路210原生支持(natively support)定点表示方式。例如,定点电路210能够直接对定点数表示方式的数值进行运算。定点电路210的输入端耦接输入转换器(converter)220,以及,定点电路210的输出端耦接输出转换器230。即,当输入至DNN层的运算对象具有不同的数值表示方式时,NN处理单元200能够执行层内混合精度计算。例如,从不同输入通道接收到的输入运算对象使用不同的数值表示;如,浮点表示和定点表示。再举一个例子,某个层可能会以不同于该层的过滤器权值的数值表示接收输入激活。NN处理单元200还可以在没有输入转换的情况下执行定点张量运算,例如,当输入运算对象均为定点表示时。在图2示出的实施例中,NN处理单元200接收具有不同数值表示的浮点数和定点数。
当NN处理单元200针对给定层接收浮点形式(浮点数表示)的第一输入运算对象和定点形式(定点数表示)的第二输入运算对象时,输入转换器220将浮点形式的运算对象转换为定点形式。然后,定点电路210对转换后的第一输入运算对象和第二输入运算对象执行定点计算以产生定点形式的输出运算对象。取决于DNN输出或DNN的后续层所需的数值表示,输出转换器230可以被绕过或者可以将该输出运算对象从定点形式转换为浮点形式。
因此,对于DNN的每一层,输入转换器220和/或输出转换器230可以被选择性地启用或绕过(selectively enabled orbypassed)。虽然图2示出了NN处理单元200包括输入转换器220和输出转换器230这两者,但在替代实施例中,NN处理单元200可以包括输入转换器220和输出转换器230的其中一者。此外,图2示出了输入转换器220和输出转换器230作为两个独立的元件;但在一些实施例中,输入转换器220和输出转换器230可被组合成组合转换器(combined converter),其根据需要将浮点数转换为定点数和/或将定点数转换为浮点数。这种组合转换器可以是图1中的转换电路154的示例。
图3是根据一实施例示出的包括浮点电路310的NN处理单元300的示例的框图。NN处理单元300是图1中NN处理单元150的一种示例。浮点电路310作为图1中运算(OP)电路152的示例,其支持浮点表示。浮点电路310具有耦接输入转换器320的输入端和耦接输出转换器330的输出端。当DNN层的输入运算对象具有不同的数值表示时,NN处理单元300可进行层内混合精度计算。输入转换器320可将定点数转换为浮点数,输出转换器330可将浮点数转换为定点数。类似于图2中的转换器220和230,对于DNN的每一层,输入转换器320和/或输出转换器230可以被选择性地启用(enabled)或旁路(bypassed)。在替代实施例中,NN处理单元300可以包括输入转换器220和输出转换器230之一者。此外,在一些实施例中,输入转换器320和输出转换器330可被组合成组合转换器,该组合转换器根据需要将浮点数转换为定点数和/或将定点数转换为浮点数。这种组合转换器可以是图1中的转换电路154的一种示例。
除了结合图2和图3提到的层内混合精度计算之外,处理硬件110(图1)还支持层间混合精度计算,在该层间混合精度计算中,神经网络的其中一层以定点方式进行计算,而另一层以浮点方式进行计算。在一实施例中,处理硬件110可包括NN处理单元200和NN处理单元300这两者,其中,NN处理单元200对一些层执行定点运算,以及,NN处理单元300对一些其它层执行浮点运算。在另一实施例中,处理硬件110可使用处理器130并结合NN处理单元200或NN处理单元300来执行层内混合精度计算和/或层间混合精度计算。
图4A和图4B是根据一些实施例示出的图1中的NN处理单元150的一些示例的框图。在图4A中,NN处理单元400包括用于浮点张量运算(即,对浮点数进行张量运算)的浮点电路410和用于定点张量运算(即对定点数进行张量运算)的定点电路420。浮点电路410和定点电路420的输入端分别耦接到输入转换器415和425,并且它们的输出端通过多工器(multiplexer)440并行耦接到输出转换器430。输入转换器415将定点数转换为浮点数,以及,输入转换器425将浮点数转换为定点数。多工器440根据当前层使用哪个电路来选择从浮点电路410或定点电路420进行输出。例如,如果当前层的计算是使用浮点电路410,则多工器选择浮点电路410输出的浮点数进行输出,以及,如果当前层的计算是使用定点电路420,则多工器选择定点电路420输出的定点数进行输出。选择的输出被发送至输出转换器430,其中,输出转换器430能够将该输出转换为所需的数值表示;即,根据需要将浮点数转换为定点数和/或将定点数转换为浮点数。对于每一层,转换器415、425和430中的每一个可以被选择性地启用或旁路。类似于图2和图3,转换器415、425和430可以由组合转换器来实现,该组合转换器在两个方向上转换数值表示。在替代实施例中,NN处理单元400可以仅包括输入转换器415和425而不包括输出转换器430。在图4B所示的又一实施例中,NN处理单元450仅包括输出转换器430而不包括输入转换器415和425。
图5A和图5B是根据一些实施例示出的图1中的NN处理单元150的附加示例的框图。图5A示出了NN处理单元500,其包括用于浮点张量运算的浮点电路510和用于定点张量运算的定点电路520。浮点电路510和定点电路520的输出端并联连接到多工器540,多工器540可选择浮点电路510的浮点输出或定点电路520的定点输出。浮点电路510可以以浮点方式计算神经网络的某一层,而定点电路520可以以定点方式计算神经网络的另一层。NN处理单元500还包括转换器515、525和530,它们分别执行与转换器415、425和430(图4)相同的转换功能。此外,转换器515、525和530耦接到缓冲存储器(buffer memory)。例如,缓冲存储器可以包括缓冲器(buffer)516、526和536,以提供速率控制(rate control)或速率补偿(ratecompensation)。例如,转换器515、525和530每个周期处理一个数(one number),以及,电路510和520可以每512个周期一次(at atime)输出512个数。每个缓冲器(516、526或536)位于浮点/定点电路和相应的转换器之间。
在图5B的示例中,NN处理单元550包括位于相应的转换器565、575和585内部(internal)的缓冲器566、576和586,以提供速率控制或速率补偿。通过缓冲未被转换的输入(the non-converted input),缓冲器566和576可以在给定层的操作期间启用相应的输入转换器(565和575)来确定比例因子,该比例因子用于在不同的数值表示之间进行转换。即,输入转换器565和575能够实时(on the fly)计算定点表示和相应的/对应的浮点表示之间的比例因子。输入转换器565和575可以额外地实时/动态计算定点表示和对应的浮点表示之间的偏移量。关于向量的定点表示和相应的浮点表示之间的关系已经结合图1描述了比例因子和偏移量。比例因子(scaling factor,或被称为scaling_factor)用于在浮点数和定点数之间转换的时候使用,因为浮点数能表示的范围较大,要转换为定点数时,需要统计要转的这一群资料的最大值与最小值来决定这个比例因子,所以需要缓存(buffer)起来。以转换浮点数到8b定点为例,scaling factor=(127/max(abs(min_data),bas(max_data))),从而,将scaling_factor*each_data就可以将值限缩在-127~128。
参考图5A,转换器515、525和530可以由组合转换器来实现,其在两个方向上转换数值表示。例如,将输入的定点数转换为浮点数以进行运算,将用以输出的浮点数转换为定点数。在替代实施例中,NN处理单元500或550可以仅包括输入转换器及其对应的缓冲器,而不包括输出转换器及其对应的缓冲器。在又一实施例中,NN处理单元500或550可以仅包括输出转换器及其对应的缓冲器而不包括输入转换器及其对应的缓冲器。图5A和图5B仅为一种示例,具体地,本发明对此不做限制。
图6是根据一实施例示出的NN处理单元600的框图。NN处理单元600是图1中NN处理单元150的一种示例。NN处理单元600包括算术逻辑单元(arithmetic logic unit,ALU)引擎610,其包括处理元件(processing element)611的阵列(array)。ALU引擎610是图1中运算(OP)电路152的示例。针对DNN的任何给定层,每个处理元件611被指示为执行浮点或定点计算。ALU引擎610耦接到转换引擎(conversion engine)620,转换引擎620包括用于从浮点到定点转换以及从定点到浮点转换的电路。转换引擎620是图1中转换电路154的一个例子。
在一实施例中,处理元件611互连以优化加速的张量运算,例如,卷积运算、全连接运算、激活、池化、归一化、逐元素数学计算等。在一些实施例中,NN处理单元600包括本地存储器(例如,SRAM),以存储从一特定层移动到下一层的运算对象。处理元件611还可包括乘法器和加法器电路等,用于执行数学运算,例如乘法累加(MAC)运算和其它张量运算。
图7是根据又一实施例示出的NN处理单元700的框图。NN处理单元700是图1中NN处理单元150的一个例子。NN处理单元700包括浮点电路710、定点电路720和浮点电路730,例如,图7中示出其相互串联耦接。电路710、720和730中的每一个可以针对神经网络的不同层执行张量运算。转换器711位于浮点电路710与定点电路720之间,用于将浮点数转换为定点数。另一转换器721位于定点电路720与浮点电路730之间,用于将定点数转换为浮点数。NN处理单元700的替代实施例可以包括彼此串联耦接的一个或多个浮点电路和一个或多个定点电路。该替代实施例还可以包括一个或多个转换电路,以及,每个转换电路可以耦接到浮点电路和/或定点电路,以在浮点数表示和定点数表示之间进行转换。每个浮点/定点电路可以针对神经网络的相应层执行张量运算。
图8A是根据一实施例示出的分时共享(time-sharing)图1中的NN处理单元150的方面的示意图,例如,不同时间处理不同的层。还参考图1,处理硬件110可以包括一个NN处理单元150,该一个NN处理单元150是被DNN 725的多个层分时共享(time-share)的;例如,时隙0用于层0(layer 0,或称为第0层)的运算(图中标注为“OP Layer0”),时隙1用于层1(layer 1,或称为第1层)的运算(图中标注为“OP Layer1”),时隙2用于层2(layer 2,或称为第2层)的运算(图中标注为“OP Layer2”),等等,应当说明的是,层0,层1,层2等用语是用于称呼或区别不同层的描述,其不具有特定的限制含义。被分时共享的NN处理单元150可以是图1至图6所示的上述NN处理单元中的任何一个。在一实施例中,NN处理单元150可以针对不同的层和不同的时隙具有不同的配置;例如,针对层0(时隙0)进行混合精度计算和针对层1和层2(时隙1和时隙2)进行定点计算。图1至图6中所示的不同实施例可以支持跨层(across the layers)的数值表示的不同组合。在每一层内,转换电路154根据DNN 725的操作参数(operating parameter)被选择性地启用或绕过。
在另一实施例中,处理硬件110可以包括多个NN处理单元150,并且每个NN处理单元150可以是图1至图6中所示的上述NN处理单元中的任一个。每个NN处理单元150可以计算神经网络的不同层。多个NN处理单元150可以包括相同的硬件(例如,相同NN处理单元的N个副本)。或者,处理硬件110可包括图1至图6中所示的前述NN处理单元中的任意者的组合。在一实施例中,操作参数可以指示从DNN的每个层到NN处理单元中的相应者的映像。
图8B是根据一实施例示出的图2中的NN处理单元200的使用示例的示意图。还可以参考图3中的NN处理单元300提供类似的使用示例。参考图2,NN处理单元200包括定点电路210以及转换器220和230。在该示例中,包括5个OP层(例如,layer0,layer1,layer2,layer3,layer4)的DNN 825由NN处理单元200执行。处理器130(例如,CPU)在时隙0处以浮点方式计算层0并产生层0的浮点输出。
层1、层2和层3以定点方式计算。输入转换器220将层0的浮点输出转换为定点数,以及,定点电路210将这些转换后的定点数乘以层1的定点权值,以生成层1的定点输出(定点数输出,即输出的数具有定点数表示的格式)。针对层1,输出转换器230被旁路。
对于层2计算,输入转换器220被旁路,以及,定点电路210将层1的定点输出乘以层2的定点权值,以生成层2的定点输出。针对层2,输出转换器230被旁路。
对于层3计算,输入转换器220被旁路,以及,定点电路210将层2的定点输出乘以层3的定点权值,以生成层3的定点输出。输出转换器230将层3的定点输出转换为层3的浮点数并进行输出。层4以浮点方式计算。处理器130在时隙4处对层3的浮点数输出进行运算,以执行浮点运算并产生最终的浮点输出(浮点输出,即输出的数具有浮点数表示的格式)。
在上面的例子中,NN处理单元200绕过了对连续层(layer1至layer3)的层1的输出转换,连续层(layer1至layer3)的层3的输入转换以及中间层(layer2)的输入转换和输出转换。此外,连续层的定点运算由NN处理单元200中的专用硬件执行,而不使用NN处理单元200外部的处理器(例如,处理器130)。NN处理单元200针对层1执行层内混合精度张量运算,在该层内混合精度张量运算中,处理器130(layer0)接收浮点形式的输入激活。整个DNN825的执行操作包括层内混合精度和层间混合精度计算。层间混合精度计算针对不同的层采用不同数值表示的运算,其包括浮点运算(layer0和layer4)和定点运算(layer1至layer3)。定点电路210以及硬件转换器220和230的使用能够显著地加速定点计算且功耗低。对于需要高精度的计算,处理器130可以通过执行软件指令来执行浮点运算和数值表示的转换。NN处理单元200处理的各个层可以包括连续层和/或非连续层。
上面关于NN处理单元200的描述可以通过切换浮点和定点来类似地应用于图3中的NN处理单元300。参考图3,NN处理单元300包括浮点电路310以及转换器320和330。在这个使用示例中,NN处理单元300以浮点方式计算层1至层3,处理器130以定点方式计算层0和层4,但本发明并不限于该示例。连续层的浮点运算由NN处理单元300中的专用硬件执行,而不使用NN处理单元300外部的处理器(例如,处理器130)。在一些实施例中,定点数运算由定点电路(例如,定点电路只支持定点数运算)执行,浮点数运算由CPU执行(因为CPU原生已带浮点运算器),从而能够节省电路成本。
图9是根据一实施例示出的用于层内混合精度计算的方法900的流程图。方法900可以由图1的系统100(其包括图1至图7中的任意NN处理单元)来执行。
方法900开始于步骤910,在步骤910,NN处理单元接收浮点表示的第一运算对象和定点表示的第二运算对象,第一运算对象和第二运算对象是神经网络中给定层的输入运算对象。在步骤920,转换电路对第一运算对象和第二运算对象中的其中一者进行转换,使得第一运算对象和第二运算对象具有相同的数值表示。在步骤930,NN处理单元利用该相同的数值表示对第一运算对象和第二运算对象执行张量运算。
图10是根据一实施例示出的用于层间混合精度计算的方法1000的流程图。方法1000可以由图1的系统100(其包括图1至图7中的任意NN处理单元)执行。
方法1000开始于步骤1010,在步骤1010,NN处理单元以第一数值表示的方式执行神经网络的第一层的第一张量运算。在步骤1020,NN处理单元以第二数值表示的方式执行神经网络的第二层的第二张量运算。第一数值表示和第二数值表示包括定点数表示和浮点数表示。
图11是根据一实施例示出的用于配置张量运算的方法的流程图。方法1100可以由图1的系统100执行,该系统100包括上述NN处理单元中的任一个。
方法1100开始于步骤1110,在步骤1110,NN处理单元根据神经网络的给定层的操作参数选择启用或绕过用于对输入运算对象进行输入转换的转换电路,该输入转换在被启用时将第一数值表示转换为第二数值表示。在步骤1120,NN处理单元对第二数值表示的输入运算对象执行张量运算,以生成第二数值表示的输出运算对象。在步骤1130,NN处理单元根据该操作参数选择启用或绕过用于对输出运算对象进行输出转换的转换电路。该输出转换在被启用时将第二数值表示转换为第一数值表示。在一实施例中,NN处理单元可以提供选择信号到多工器,以选择启用或旁路该转换电路。
已经参考图1至图7的示例性实施例描述了图9至图11的流程图的操作。然而,应当理解,图9至图11的流程图的操作可以由除图1至图7的实施例之外的实施例执行,以及,图1至图7的实施例可以执行与那些参考流程图讨论的操作不同的操作。虽然图9至图11的流程图示出了由本发明的某些实施例执行的特定操作顺序,但应当理解,这种顺序是示例性的(例如,替代实施例可以以不同的顺序执行操作、组合某些操作、重叠某些操作等)。
在权利要求书中使用诸如“第一”,“第二”,“第三”等序数术语来修改申请专利要素,其本身并不表示一个申请专利要素相对于另一个申请专利要素的任何优先权、优先级或顺序,或执行方法动作的时间顺序,但仅用作标记,以使用序数词来区分具有相同名称的一个申请专利要素与具有相同名称的另一个元素要素。
虽然本发明已经通过示例的方式以及依据优选实施例进行了描述,但是,应当理解的是,本发明并不限于公开的实施例。相反,它旨在覆盖各种变型和类似的结构(如对于本领域技术人员将是显而易见的),例如,不同实施例中的不同特征的组合或替换。因此,所附权利要求的范围应被赋予最宽的解释,以涵盖所有的这些变型和类似的结构。

Claims (20)

1.一种神经网络处理单元,包括:
运算电路,用于以第一数值表示和第二数值表示中的其中一种方式执行神经网络的给定层的张量运算;以及,
转换电路,耦接该运算电路的输入端和输出端中的至少一者,以在该第一数值表示和该第二数值表示之间进行转换;
其中,该第一数值表示为定点数表示和浮点数表示中的其中一者,该第二数值表示为该定点数表示和该浮点数表示中的另一者。
2.如权利要求1所述的神经网络处理单元,其特征在于,根据该神经网络的该给定层的操作参数,该转换电路被配置为耦接到该运算电路的该输入端和该输出端中的一者或两者。
3.如权利要求1所述的神经网络处理单元,其特征在于,根据该神经网络的该给定层的操作参数,该转换电路被配置为:针对输入转换和输出转换中的一者或两者是被启用的或被旁路的。
4.如权利要求1所述的神经网络处理单元,其特征在于,该神经网络处理单元用于对该给定层的第一输入运算对象和第二输入运算对象执行层内混合精度计算,该第一输入运算对象和该第二输入运算对象具有不同的数值表示。
5.如权利要求1所述的神经网络处理单元,其特征在于,该神经网络处理单元用于执行层间混合精度计算,在该层间混合精度计算中,该神经网络的第一层中的计算是以该第一数值表示的方式进行的,而该神经网络的第二层中的计算是以该第二数值表示的方式进行的。
6.如权利要求1所述的神经网络处理单元,其特征在于,通过一次对一个层进行操作,该神经网络处理单元在该神经网络的多个层之间是被分时共享的。
7.如权利要求1所述的神经网络处理单元,其特征在于,该神经网络处理单元还包括:
缓冲存储器,用于给该转换电路缓冲未被转换的输入,以在该神经网络的该给定层的操作期间确定用于在该第一数值表示和该第二数值表示之间进行转换的比例因子。
8.如权利要求1所述的神经网络处理单元,其特征在于,该神经网络处理单元还包括:
缓冲器,耦接在该转换电路与该运算电路之间。
9.如权利要求1所述的神经网络处理单元,其特征在于,该运算电路包括定点电路和浮点电路,该定点电路以定点方式计算该神经网络的一层,以及,该浮点电路以浮点方式计算该神经网络的另一层。
10.如权利要求1所述的神经网络处理单元,其特征在于,该神经网络处理单元耦接到一个或多个处理器,该一个或多个处理器用于以该第一数值表示的方式执行该神经网络的一个或多个层的操作。
11.如权利要求1所述的神经网络处理单元,其特征在于,该神经网络处理单元包括:
多个该运算电路,每个运算电路包括一个或多个定点电路和/或浮点电路,其中,不同的运算电路用于计算该神经网络的不同层;以及,
一个或多个该转换电路,耦接该运算电路。
12.如权利要求1所述的神经网络处理单元,其特征在于,该运算电路进一步包括以下一项或多项:
加法器、减法器、乘法器、函数评估器和乘法累加MAC电路。
13.一种神经网络处理单元,包括运算电路和转换电路,该神经网络处理单元用于:
根据神经网络的给定层的操作参数,选择启用或旁路用于对输入运算对象进行输入转换的转换电路,其中,该输入转换在被启用时将该输入运算对象从第一数值表示转换为第二数值表示;
对具有该第二数值表示方式的该输入运算对象执行张量运算,以产生具有该第二数值表示方式的输出运算对象;以及,
根据该操作参数选择启用或旁路用于对输出运算对象进行输出转换的转换电路,其中,该输出转换在被启用时将该输出运算对象从该第二数值表示转换为该第一数值表示,
其中,该第一数值表示为定点数表示和浮点数表示中的其中一者,该第二数值表示为该定点数表示和该浮点数表示中的另一者。
14.如权利要求13所述的神经网络处理单元,其特征在于,该神经网络处理单元被操作为:
对于该神经网络的另一给定层,对具有该第一数值表示方式的另一输入运算对象执行额外的张量运算,以产生具有该第一数值表示方式的另一输出运算对象。
15.如权利要求13所述的神经网络处理单元,其特征在于,通过一次对一个层进行操作,该神经网络处理单元在该神经网络的多个层之间是被分时共享的。
16.一种神经网络处理系统,包括:
一个或多个浮点电路,用于给神经网络的一个层或多个层执行浮点张量运算;
一个或多个定点电路,用于给神经网络的其它层或其它多个层执行定点张量运算;以及,
一个或多个转换电路,耦接到该浮点电路和该定点电路中的至少一者,用于在浮点数表示和定点数表示之间进行转换。
17.如权利要求16所述的系统,其特征在于,该一个或多个浮点电路和该一个或多个定点电路是根据预定顺序彼此串联耦接的。
18.如权利要求16所述的系统,其特征在于,该一个或多个浮点电路之一者的输出端和该一个或多个定点电路之一者的输出端并联耦接到多工器。
19.如权利要求16所述的系统,其特征在于,该一个或多个转换电路包括浮点至定点转换器,该浮点至定点转换器耦接该定点电路的输入端或耦接该浮点电路的输出端。
20.如权利要求16所述的系统,其特征在于,该一个或多个转换电路包括定点至浮点转换器,该定点至浮点转换器耦接该浮点电路的输入端或耦接该定点电路的输出端。
CN202111332073.7A 2020-11-13 2021-11-11 神经网络处理单元及系统 Pending CN114492771A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063113215P 2020-11-13 2020-11-13
US63/113,215 2020-11-13
US17/505,422 US20220156567A1 (en) 2020-11-13 2021-10-19 Neural network processing unit for hybrid and mixed precision computing
US17/505,422 2021-10-19

Publications (1)

Publication Number Publication Date
CN114492771A true CN114492771A (zh) 2022-05-13

Family

ID=81492971

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111332073.7A Pending CN114492771A (zh) 2020-11-13 2021-11-11 神经网络处理单元及系统

Country Status (3)

Country Link
US (1) US20220156567A1 (zh)
CN (1) CN114492771A (zh)
TW (1) TWI800979B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230401420A1 (en) * 2022-06-12 2023-12-14 Mediatek Inc. Compiling asymmetrically-quantized neural network models for deep learning acceleration

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10650303B2 (en) * 2017-02-14 2020-05-12 Google Llc Implementing neural networks in fixed point arithmetic computing systems
US20190205736A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Compute optimization mechanism for deep neural networks
US11663464B2 (en) * 2018-09-20 2023-05-30 Kneron (Taiwan) Co., Ltd. Deep neural network with low-precision dynamic fixed-point in reconfigurable hardware design
CN111857649B (zh) * 2020-06-22 2022-04-12 复旦大学 一种用于隐私保护机器学习的定点数编码及运算系统

Also Published As

Publication number Publication date
TW202219839A (zh) 2022-05-16
TWI800979B (zh) 2023-05-01
US20220156567A1 (en) 2022-05-19

Similar Documents

Publication Publication Date Title
US8280939B2 (en) Methods and apparatus for automatic accuracy-sustaining scaling of block-floating-point operands
US5365465A (en) Floating point to logarithm converter
KR100291383B1 (ko) 디지털신호처리를위한명령을지원하는모듈계산장치및방법
US7949696B2 (en) Floating-point number arithmetic circuit for handling immediate values
CN109634558B (zh) 可编程的混合精度运算单元
JP4232838B2 (ja) 再構成可能なsimd型プロセッサ
US11074041B2 (en) Method and system for elastic precision enhancement using dynamic shifting in neural networks
CN112241291A (zh) 用于指数函数实施的浮点单元
US8019805B1 (en) Apparatus and method for multiple pass extended precision floating point multiplication
CN114492771A (zh) 神经网络处理单元及系统
US9703626B2 (en) Recycling error bits in floating point units
Bhairannawar et al. FPGA implementation of optimized Karhunen–Loeve transform for image processing applications
US20030149712A1 (en) Higher precision divide and square root approximations
KR20140138053A (ko) 특히 함수 모델을 순수 하드웨어에 기초하여 연산하기 위한 함수 모델 유닛 내에서 사용하기 위한 fma 유닛
CN116594589B (zh) 浮点数乘法计算的方法、装置和算术逻辑单元
US10289413B2 (en) Hybrid analog-digital floating point number representation and arithmetic
US8185723B2 (en) Method and apparatus to extract integer and fractional components from floating-point data
Hsiao et al. Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system
RU2276805C2 (ru) Способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой
US20230098421A1 (en) Method and apparatus of dynamically controlling approximation of floating-point arithmetic operations
US9619205B1 (en) System and method for performing floating point operations in a processor that includes fixed point operations
CN113419779B (zh) 可扩展多精度数据流水线系统和方法
Jeon et al. M3FPU: Multiformat Matrix Multiplication FPU Architectures for Neural Network Computations
US20220357925A1 (en) Arithmetic processing device and arithmetic method
US20230334117A1 (en) Method and system for calculating dot products

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