CN111133455A - 处理器及其控制方法 - Google Patents

处理器及其控制方法 Download PDF

Info

Publication number
CN111133455A
CN111133455A CN201880061613.2A CN201880061613A CN111133455A CN 111133455 A CN111133455 A CN 111133455A CN 201880061613 A CN201880061613 A CN 201880061613A CN 111133455 A CN111133455 A CN 111133455A
Authority
CN
China
Prior art keywords
processing
data
processing elements
instruction
elements
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
CN201880061613.2A
Other languages
English (en)
Inventor
金庆勋
朴永焕
徐东宽
K.P.纳加拉贾
金硕镇
赵韩秀
金铉中
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN111133455A publication Critical patent/CN111133455A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

本文提供了一种用于执行深度学习的处理器。该处理器包括处理元件单元,该处理元件单元包括以矩阵形式排列的多个处理元件,该矩阵形式包括多个处理元件的第一行和多个处理元件的第二行。处理元件由通过被连接到多个处理元件的第一行的第一数据输入单元来馈送过滤器数据。第二数据输入单元将目标数据馈送到处理元件。由寄存器组成的移位器将指令馈送到处理元件。处理器中的控制器控制处理元件、第一数据输入单元和第二数据输入单元以处理过滤器数据和目标数据,从而提供乘积和(卷积)功能。

Description

处理器及其控制方法
技术领域
示例实施例的各方面总体上涉及处理器及其控制方法,并且更具体地,涉及用于执行深度学习的处理器及其控制方法。
背景技术
机器学习是人工智能的一个领域,这意味着是通过将数据输入到计算机并使计算机学习输入数据来生成新知识的技术。特别是作为机器学习技术之一的人工神经网络领域取得了举世瞩目的进步,催生了深度学习。深度学习是一种基于人工神经网络的机器学习技术。即使人工神经网络在多层结构中被设计并深化,该网络也可以通过预处理用于无监督学习的学习数据来提高学习效率。特别地,由于与互联网相关联的大数据和处理大数据的计算能力的提升,近来深度学习已经得到了发展。
另外,为了提高处理大数据的计算能力,可以使用多个处理器来实现具有多个神经网络的深度神经网络(DNN)。此时,DNN实现中每个处理器的可伸缩性(scalability)可能是一个非常重要的因素。处理器的可伸缩性将参考图1A至1D被描述。
图1A是简要示出现有技术处理器的结构的视图。处理器包括多个处理元件,并且相邻处理元件之间的数据共享是可用的。
每个处理元件基本上包括乘法器和算术逻辑单元(ALU),并且ALU可以包括至少一个加法器。处理元件可以使用乘法器和ALU执行算术运算。
外部存储器可以被划分为多个存储体(memory bank),并且可以向多个处理元件中的每个提供数据。
图1B是描述使用现有技术处理器的结构的卷积处理的视图。
卷积处理是用于使用内核数据来变换图像数据的处理。内核数据也可以被称为过滤器数据。图像数据也可以被称为目标数据。对采样数据的卷积通常可以表示为乘积之和。对于过滤器权重或元件{a,b,c,d,e,f,g,h和i}和由占位符{“1”,“2”,“3”,“4”,“5“,”6“,”7“,”8“,”9“}表示的目标数据字,乘积之和可以表示为(并置隐含表示乘法运算符)a1+b2+c3+d4+e5+f6+g7+h8+i9。例如,使用内核数据对图像左上角的九个像素进行卷积处理如下:
a1+b2+c3+d4+e5+f6+g7+h8+i9
通过以上处理可以计算出一个像素的累积数据。当以逐个像素为基础地移动内核数据并且对整个图像数据执行上述处理时,累积完成(累积外部的像素通过单独的计算得出,并且其详细描述将被省略)。
处理器执行多个周期的处理以执行卷积处理。首先,可以将第一周期中的一部分图像数据输入到多个处理元件。例如,由于多个处理元件是16个,图像数据1至9以及与其相邻的七个像素数据可以被输入到多个处理元件。而且,可以将内核数据中的a输入到多个处理元件。处理指令可以被输入到多个处理元件。多个处理元件可以基于输入的处理指令来处理a和相应的像素数据。处理结果被移动到相邻的处理元件。在图1B中,示出了将内核数据中的a和处理指令输入到一些处理元件。但是,这是为了防止附图复杂化。实际上,在内核数据中,a和处理指令可以被输入到所有处理元件。
在第二周期中,按原样使用图像数据,并且可以将内核数据中的b和处理指令输入到多个处理元件中。多个处理元件可以基于输入的处理指令来处理b和每个像素数据,并且累积第一周期的处理结果。
重复类似于第二周期的处理直到第九周期即内核数据的数目,从而可以计算累积的一部分像素数据。
考虑到上述处理中每个周期期间的数据移动量,在第一周期,将16个像素数据从被存储在外部存储器中的图像数据中移动到多个处理元件;但从第二周期到第九周期,没有从外部存储器到处理器的图像数据移动。即,数据移动量可以表示为如图1C所示。在图1C中,纵坐标被标记为“数据路径活动”,并且x轴被标记为“时间”。在时间轴上,指示了第一时钟周期、第二时钟周期和第三时钟周期。在现有技术中,数据路径活动非常突发。即,需要形成从外部存储器到处理器的数据路径,以便至少允许数据同时输入到多个处理元件。
如果使用多个处理器来实现DNN,则其可以如图1D所示,并且处理器与外部存储器之间的数据路径可能成指数地增加。在此,每个2D阵列代表一个处理器。也就是说,当使用常规处理器时,似乎很难通过简单的并行连接来实现DNN。
因此,有必要开发一种考虑可伸缩性的处理。
发明内容
技术问题
示例实施例的一方面涉及图像内容提供方法和图像提供装置,以提供一种用于减少来自外部存储器的峰值数据的处理器及其控制方法。
技术方案
根据本公开的实施例,提供了一种执行深度学习的处理器。该处理器包括处理元件单元,该处理元件单元包括以矩阵形式排列的多个处理元件;第一数据输入单元,其被连接到包括在处理元件单元的第一行中的多个第一处理元件中的每个;第二数据输入单元,其被连接到处理元件单元的多个处理元件中的每个;以及移位器,其包括与所述处理元件单元的多行中的每行对应的多个寄存器单元,其中,所述多个寄存器单元中的每个被连接到所述处理元件单元的相应行中所包括的多个处理元件,其中,处理器可以基于通过移位器输入的处理指令,控制处理元件单元处理通过第一数据输入单元输入的数据和通过第二数据输入单元输入的数据。
处理器可以在第一周期之后的第二周期中,控制处理元件单元以将第一元件移位到处理元件单元的第二行中包括的多个第二处理元件中的每个中;控制第一数据输入单元以将过滤器中包括的多个元件中的第二元件输入到多个第一处理元件中的每个;并且基于通过移位器输入的第二处理指令,控制处理元件单元以处理第二元件和第一数据。
处理器可以在第一周期之后的第二周期中,控制处理元件单元以将第一元件移位到包括在处理元件单元的第二行中的多个第二处理元件中的每个;控制第二数据输入单元以将目标数据中的第二数据输入到多个第二处理元件中的每个;并且基于通过移位器输入的第一处理指令,控制处理元件单元以处理从第一行移位的第一元件和第二数据。
处理器可以在第一周期之后的第二周期中,控制处理元件单元以将第一元件移位到包括在处理元件单元的第二行中的多个第二处理元件中的每个;控制第二数据输入单元以将目标数据中的第二数据输入到多个第二处理元件中的每个;并且基于通过移位器输入的第一处理指令,控制处理元件单元以处理从第一行移位的第一元件和第二数据。
处理器可以在第一周期中,控制移位器将第一处理指令输入到多个第一处理元件中的每个,并且控制移位器将第一处理指令从对应于第一行的第一寄存器单元移位到对应于第二行的寄存器单元;并在第二周期中,控制移位器将移位后的第一处理指令输入到多个第二处理元件中的每个,将第二处理指令输入到多个第一处理元件中的每个;控制移位器将第一处理指令从第二寄存器单元移位到与处理元件单元的第三行对应的第三寄存器单元,并将第二处理指令从第一寄存器单元移位到第二寄存器单元。
处理器可以将通过处理第一元件和第一数据而获得的处理数据传送到相邻元件,并且控制处理元件单元以将所传送的处理数据与在处理元件中处理的数据进行累积。
第二数据输入单元可以通过与处理元件单元的一行中包括的多个处理元件相同数量的数据路径连接到外部存储器。
处理器还包括处理指令寄存器单元;以及连接在所述处理指令寄存器单元和所述移位器之间多路复用器,并且所述处理器可以控制所述多路复用器以提供被存储在所述处理指令寄存器单元中的多个处理指令集之一,其中,所述多个处理指令集中的每个可以包括要被输入到算术处理元件单元的多行中的每行的多个处理指令。
处理器可以将被输入到移位器的处理指令集存储在多个寄存器单元中;将包括在所存储的处理指令集中的每个指令沿预定方向移位到相邻的寄存器单元;向对应于第一行的第一寄存器单元输入附加的处理指令;并且控制移位器输入附加处理指令,并且附加处理指令中包括的指令和移位处理指令集中包括的指令中的每个可以被输入到对应于处理元件单元的行中的每一行。
处理器可以控制移位器以将附加的处理指令和包括在移位后的处理指令集中的指令提供给处理指令寄存器单元,并且将从被包括在处理指令寄存器单元中的多个处理指令集中被输入到移位器的处理指令集更新到附加处理指令以及移位后的处理指令集中包括的指令。
根据示例性实施例,处理器包括处理元件单元,该处理元件单元包括以矩阵形式布置的多个处理元件;第一数据输入单元,其被连接到包括在处理元件单元的第一行中的多个第一处理元件中的每个;第二数据输入单元,其被连接到处理元件单元的多个处理元件中的每个;以及移位器,其包括与所述处理元件单元的行中的每行对应的多个寄存器单元,其中,所述多个寄存器单元中的每个被连接到所述处理元件单元的相应行中所包括的多个处理元件;以及执行深度学习的处理器的控制方法,其包括通过移位器将处理指令输入到处理元件单元,通过第一数据输入单元将数据输入到处理元件单元,以及通过第二数据输入单元将数据输入到处理元件单元;以及由处理元件单元基于处理指令,对通过第一数据输入单元输入的数据和通过第二数据输入单元输入的数据进行处理。
所述处理可以包括:在第一周期中,将过滤器中包括的多个元件中的第一元件输入到多个第一处理元件中的每个;将目标数据中的第一数据输入到多个第一处理元件中的每个;以及由处理元件单元基于通过移位器输入的第一处理指令,对第一元件和第一数据进行处理。
所述处理可以进一步包括:在第一周期之后的第二周期中,将第一元件移位到处理元件单元的第二行中包括的多个第二处理元件中的每个中;将被包括在过滤器中的多个元件中的第二元件输入到多个第一处理元件中的每个;并且基于通过移位器输入的第二处理指令来处理第二元件和第一数据。
所述处理可以进一步包括:在第一周期之后的第二周期中,将第一元件移位到处理元件单元的第二行中包括的多个第二处理元件中的每个;将目标数据中的第二数据输入到多个第二处理元件中的每个;并且基于通过移位器输入的第一处理指令来处理从第一行移位的第一元件和第二数据。
所述处理可以进一步包括:在第一周期中,将第一处理指令输入到多个第一处理元件中的每个,并且将第一处理指令从与第一行对应的第一寄存器单元移位到与第二行对应的第二寄存器单元;并且在第二周期中,将移位后的第一处理指令输入到多个第二处理元件中的每个,将第二处理指令输入到多个第一处理元件中的每个,将第一处理指令从第二寄存器单元移位到对应于处理元件单元的第三行的第三寄存器单元,以及将第二处理指令从第一寄存器单元移位到第二寄存器单元。
所述处理可以进一步包括将通过处理第一元件和第一数据而获得的处理数据传送到相邻元件,并且累积被传送的处理数据和在处理元件中被处理的数据。
第二数据输入单元可以通过与处理元件单元的一行中包括的多个处理元件相同数量的数据路径连接到外部存储器。
所述处理器还包括处理指令寄存器单元、以及连接在处理指令寄存器单元和移位器之间的多路复用器;并且控制方法还包括提供被存储在处理指令寄存器单元中的多个处理指令集之一,其中,多个处理指令集中的每个包括:被输入到多行算术处理元件单元中的每行的多个处理指令。
所述方法还包括:将输入到移位器的处理指令集存储在多个寄存器单元中;在预定的方向上将所存储的处理指令集中包括的每个指令移位到相邻的寄存器单元;以及将附加处理指令输入到与第一行对应的第一寄存器单元,其中,将处理指令输入到处理元件单元可以包括将附加处理指令、附加处理指令中包括的每个指令、以及包括在移位后的处理指令集中的指令输入到与处理元件单元对应的行中的每行。
所述方法可以进一步包括:将附加的处理指令和包括在移位后的处理指令集中的指令提供给处理指令寄存器单元;以及将从包括在处理指令寄存器单元中的多个处理指令集中被输入到移位器的处理指令集,更新到附加处理指令和包括在移位处理指令集中的指令。
在本文提供的另一实施例中,公开了用于执行深度学习的处理器。该处理器包括控制器;包括多个处理元件的处理元件阵列,其中:i)所述多个处理元件包括多个第一处理元件,ii)所述多个处理元件以多行和多列的矩阵被排列,iii)处理元件阵列的第一行包括多个第一处理元件,iv)处理元件阵列的第二行包括多个第二处理元件,并且v)多个第一处理元件包括由第二处理元件跟随的第一处理元件;第一数据输入接口,其被连接到多个第一处理元件中的每个处理元件,其中,第一数据输入接口被配置为将过滤器数据输入到多个第一处理元件;第二数据输入接口,其被连接到处理元件阵列中的每个处理元件,其中,第二数据输入接口被配置为将目标数据输入到处理元件阵列;以及包括多个寄存器的移位器,其中:i)多个寄存器中的第一寄存器被连接到第一行,ii)多个寄存器中的第二寄存器被连接到第二行,以及iii)移位器被配置为将多个处理指令输入到处理元件阵列,其中,多个处理指令包括第一处理指令。
在附加实施例的一些实施例中,对于第一周期,控制器进一步被配置为:控制第一数据输入接口以将过滤器数据的第一元件输入到多个第一处理元件中的每个;控制第二数据输入接口以:将目标数据的第一目标字输入到多个第一处理元件的第一处理元件,以及将目标数据的第二目标字输入到多个第一处理元件的第二处理元件;以及控制处理元件阵列以:基于第一元件、第一目标字和第一处理指令形成第一结果,并且基于第一元件、第二目标字和第一处理指令形成第二结果。
在附加实施例的一些实施例中,对于第一周期之后的第二周期,控制器进一步被配置为:控制处理元件阵列以将过滤器数据的第一元件移位到多个第二处理元件中;控制第一数据输入接口以将过滤器数据的第二元件输入到多个第一处理元件中的每个;以及基于第二处理指令控制处理元件阵列以处理第二元件和目标数据。
另外,在附加实施例的一些实施例中,对于第一周期之后的第二周期,控制器进一步被配置为:控制处理元件阵列以将过滤器数据的第一元件移位到多个第二处理元件,其中,矩阵的第二行包括多个第二处理元件;控制第二数据输入接口以将目标数据的第三目标字输入到多个第二处理元件的第一处理元件;以及基于第一处理指令控制处理元件阵列来处理第一元件和第三目标字。
另外,在附加实施例的一些实施例中,控制器进一步被配置为在第一周期中控制移位器以:将第一处理指令输入到多个第一处理元件,并且将第一处理指令从第一寄存器移位到第二寄存器;以及在第二个周期中控制移位器以:讲第一处理指令从第二寄存器输入到多个第二处理元件中的每个,将第二处理指令从第一寄存器输入到多个第一处理元件中的每个,将第一处理指令从第二寄存器移位到与处理元件阵列的第三行相关联的第三寄存器,并将第二处理指令从第一寄存器移位到第二寄存器。
另外,在该附加实施例的一些实施例中,控制器进一步被配置为:控制多个第一处理元件中的第一处理元件以:将第一结果传送到多个第一处理元件中的第二处理元件,其中,多个第一处理元件中的第二处理元件与多个第一处理元件中的第一处理元件相邻;以及控制第二处理元件以将第一结果与先前在第二处理元件中处理过的其他数据进行累积。
另外,在附加实施例的一些实施例中,第二数据输入接口可通过数据路径连接到外部存储器,其中,数据路径的数量是列的数量。
另外,在附加实施例的一些实施例中,处理器包括处理指令寄存器文件;以及被连接在处理指令寄存器文件和移位器之间的多路复用器,其中,该控制器进一步被配置为控制多路复用器向移位器提供从处理指令寄存器文件获得的第一处理指令集,并且其中,第一处理指令集包括第一处理指令。
另外,在附加实施例的一些实施例中,处理器包括被配置为存储第一处理指令集的处理元件指令存储器,并且控制器进一步被配置为控制移位器以:将第一处理指令集向下移位以在第一寄存器中腾出空间,从处理元件指令存储器输入附加处理指令到与第一行相关联的处理指令寄存器文件中的位置,以及将附加处理指令和第一处理指令集的第二附加处理指令输入到处理元件阵列的行。
在附加实施例的一些实施例中,控制器进一步被配置为:控制处理指令寄存器文件,以从处理元件指令存储器向处理指令寄存器文件输入用于相对于第一处理指令集的池化操作的第二处理指令集;以及控制移位器输入第二处理指令集。
另外,本公开提供了一种执行深度学习的处理器的附加控制方法,其中,所述处理器包括控制器、具有多个行和多个列的矩阵形式的处理元件阵列、第一数据输入接口、第二数据输入接口、以及移位器;所述控制方法包括通过移位器将第一处理指令输入到处理元件阵列的第一行的多个第一处理元件,通过第一数据输入接口将过滤器数据输入到多个第一处理元件,以及通过第二数据输入接口向多个第一处理元件输入第一目标数据;以及由处理元件阵列基于第一处理指令处理过滤器数据和第一目标数据。
在附加控制方法的一些实施例中,在第一周期中的处理还包括将来自过滤器数据的第一元件输入到多个第一处理元件中的每个;将第一目标数据输入到多个第一处理元件中的每个;以及由处理元件阵列基于第一处理指令处理所述第一元件和第一目标数据。
在附加控制方法的一些实施例中,在第一周期之后的第二周期中,进一步包括:通过移位器将第二处理指令输入到处理元件阵列的第二行的多个第二处理元件;将第一元件移位到处理元件阵列的第二行中包括的多个第二处理元件中;将来自过滤器数据的第二元件输入到多个第一处理元件中的每个;以及基于第二处理指令处理第二元件和第一目标数据。
在附加控制方法的一些实施例中,在第一周期之后的第二周期中,处理进一步包括将第一元件移位到处理元件阵列的第二行的多个第二处理元件;将第二目标数据输入到多个第二处理元件中的每个;以及基于第一处理指令处理所述第一元件和第二目标数据。
另外,在附加控制方法的一些实施例中,处理进一步包括在第一周期中,将第一处理指令输入到多个第一处理元件中的每个,以及将第一处理指令从与第一行对应的第一寄存器移位到与第二行对应的第二寄存器;以及在第二周期中,将第一处理指令输入到多个第二处理元件中的每个,将第二处理指令输入到多个第一处理元件中的每个,将第一处理指令从第二寄存器移位到与处理元件阵列的第三行对应的第三寄存器,以及将第二处理指令从第一寄存器移位到第二寄存器。
在附加控制方法的一些实施例中,处理进一步包括:将通过处理第一个元件和第一目标数据而获得的处理数据传送到相邻的处理元件;以及将被传送的处理数据与先前在相邻处理元件中处理后的其他数据进行累积。
另外,在附加控制方法的一些实施例中,第二数据输入接口可通过数据路径连接到外部存储器,其中,数据路径的数量是处理元件阵列的列的数量。
在附加控制方法的一些实施例中,处理器还包括:i)处理指令寄存器文件,以及ii)被连接在处理指令寄存器文件和移位器之间的多路复用器;并且该控制方法进一步包括将存储在处理指令寄存器文件中的多个处理指令集之一提供给移位器,其中,多个处理指令集中的每个包括要被输入到处理元件阵列的行的多个处理指令。
另外,在附加控制方法的一些实施例中,进一步包括将第一处理指令集存储在移位器的多个寄存器中;向下移位第一处理指令集的指令,以便为附加处理指令腾出空间;将附加处理指令输入到与第一行对应的第一寄存器;以及将附加处理指令和第一处理指令集中的附加处理指令输入到处理元件阵列的多个行。
在附加控制方法的一些实施例中,进一步包括控制处理指令寄存器文件,以从处理元件指令存储器向处理指令寄存器文件输入用于相对于第一处理指令集的池化操作的第二处理指令集,以及控制移位器输入第二处理指令集。
有益效果
根据如上所述的本发明的各种实施例,可以通过设计处理器以减少来自外部存储器的峰值数据移动的量来改善处理器的可伸缩性。
附图说明
通过以下结合附图的详细描述,本公开的上述和/或其他方面将变得更加明显,其中,相同的附图标记指代相同的元件,以及其中:
图1A至图1D是描述相关技术的问题的视图。
图2A是示出根据示例性实施例的执行深度学习的处理器的框图。
图2B是示出根据示例性实施例的用于执行深度学习的处理器中的处理元件单元的详细配置的框图。
图3A至图3E是示出根据示例性实施例的用于执行卷积处理的方法的视图。
图4是示出根据示例性实施例的从外部存储器到处理器的数据传送量的视图。
图5是示出根据示例性实施例的用于执行深度学习的处理器的详细配置的框图。
图6A至图6D是描述根据示例性实施例的池化操作的视图。
图7是描述根据示例实施例的处理器的控制方法的流程图。
具体实施方式
本公开的示例性实施例可以被不同地修改。因此,在附图中示出了特定的示例性实施例,并且在详细描述中对其进行了详细描述。然而,应当理解,本公开不限于特定的示例性实施例,而是在不脱离本公开的范围和精神的情况下包括所有修改、等同和替换。另外,由于公知的功能或构造将以不必要的细节使本公开不清楚,因此不对其进行详细描述。
下面参照附图更详细地描述某些示例实施例。
图2A是示出根据示例性实施例的执行深度学习的处理器100的框图。
如图2A所示,处理器100包括处理元件单元110、第一数据输入单元120、第二数据输入单元130和移位器140。在一些实施例中,处理元件单元110由处理元件阵列实现,第一数据输入单元120由第一数据输入接口实现,以及第二数据输入单元130由第二数据输入接口实现。在一些实施例中,处理器100包括控制器170和处理元件指令存储器180。在一些实施例中,处理器100被配置为与外部存储器190通信。
在一些实施例中,控制器170是定制硬件电路。在一些实施例中,控制器170是被配置为执行存储在一个或多个程序代码存储器(未示出)中的程序代码的一个或多个微处理器。在一些实施例中,程序代码存储器在处理器100内部。
处理元件单元110可以包括以矩阵形式排列的多个处理元件。矩阵包括多行,并且一行中的处理元件的数量等于矩阵的列数。数据的单向移位或双向移位在相邻处理元件之间是可能的。
每个处理元件基本上包括乘法器和算术逻辑单元(ALU),并且ALU可以包括至少一个加法器。处理元件可以使用乘法器和ALU执行算术运算。然而,本公开不限于此,并且可以使用任何其他结构,只要其可以执行诸如算术运算和移位的功能即可。
每个处理元件可以包括用于存储数据的寄存器。例如,每个处理元件可以包括用于存储特定周期里的处理结果的寄存器。可替代地,每个处理元件可以包括寄存器,用于将特定周期里的处理结果移位到相邻的处理元件,并且存储来自相邻处理元件的移位操作的结果。
第一数据输入单元120可以被连接到包括在处理元件单元110的第一行中的多个第一处理元件中的每个。这里,处理元件单元110的第一行可以是处理元件单元的两个最外面的行之一。
第一数据输入单元120可以接收过滤器(内核)数据并将其输入到包括在处理元件单元110的第一行中的多个第一处理元件中的每个。例如,第一数据输入单元120可以接收a、b、c和d过滤器数据并在第一周期中将a输入到多个第一处理元件中的每个中。然后,第一数据输入单元120可以在第二周期中将b输入到多个第一处理元件中的每个中,并且当周期被改变时,将c和d顺序地输入到多个第一处理元件中。同时,过滤器数据是卷积处理中使用的输入数据之一,并且其用途与内核数据相同。因此,过滤器数据可以与内核数据互换使用。
例如,一个寄存器单元可以仅存储内核数据a、b、c和d之一。在一些实施例中,寄存器单元由寄存器实现。第一数据输入单元120可以被实现为用于存储整个内核数据的多个寄存器单元。在此,寄存器单元之一可以存储内核数据中包括的多个元件之一。例如,一个寄存器单元可以存储内核数据a、b、c和d之一。
第一数据输入单元120可以进一步包括多路复用器,该多路复用器用于仅将整个过滤器(内核)数据中每个周期所需的元件输入到多个第一处理元件中的每个中。例如,多路复用器可以从多个寄存器单元接收a、b、c和d的过滤器(内核)数据,并且仅将它们之一提供给处理元件单元110。
或者,第一数据输入单元120可以包括仅存储整个内核数据的每个周期所需的元件的寄存器单元。在这种情况下,第一数据输入单元120可以将被存储在寄存器单元中的数据输入到多个第一处理元件中的每个。
或者,第一数据输入单元120可以仅包括多路复用器,该多路复用器直接从外部存储器接收整个内核数据,并且仅将它们之一提供给多个第一处理元件中的每个。
到目前为止描述的第一数据输入单元120的内部结构仅是示例性的,并且可以被体现为另一种类型。
由于第一数据输入单元120仅连接到处理元件单元110的第一行中包括的多个第一处理元件中的每个,因此与传统的数据路径相比,数据路径可以被减少。例如,当处理器100包括5×5格式的多个计算元件时,根据图1B的相关技术,需要25个数据路径,使得过滤器(内核)数据的一个元件被输入到总共25个处理元件中。相反,对于本公开,由于第一数据输入单元120被连接到多个第一处理元件中的每个,因此仅需要五个数据路径。因此,可以简化硬件设计、可以改善集成度、并且可以改善处理器100的可扩展性。
第二数据输入单元130可以被连接到处理元件单元110的多个处理元件中的每个。然而,第二数据输入单元130可以接收目标数据,并且可以在每个周期以处理元件单元110的行为单位输入一部分目标数据。
因此,第二数据输入单元130可以通过与处理元件单元110的行中包括的多个处理元件的数量相同数量的数据路径被连接到外部存储器。本公开不限于此,并且在第二数据输入单元130和外部存储器之间形成的数据路径的数量可以等于或大于处理元件单元110的行中包括的多个处理元件的数量。
第二数据输入单元130可以包括寄存器单元,该寄存器单元在每个周期仅存储要被输入到处理元件单元110的一部分目标数据。例如,第二数据输入单元130可以存储要被输入到包括在处理元件单元110的行中的多个处理元件的目标数据。当周期被改变时(一个处理周期结束而另一个处理周期开始),第二数据输入单元130可以将存储的目标数据输入到处理元件单元110,并从外部存储器接收新的目标数据。此时,处理器100可以从外部存储器读取每个周期所需的数据,并控制外部存储器以被输入到第二数据输入单元130。
第二数据输入单元130可以进一步包括解复用器,用于将存储在寄存器单元中的目标数据的一部分输入到处理元件单元110的多行之一。
或者,第二数据输入单元130可以仅包括解复用器,该解复用器用于逐周期地从外部存储器输入一部分目标数据,并将输入数据输入到处理元件单元110的多行之一。
上述第二数据输入单元130的内部结构仅仅是一个实施例,并且可以以任何其他形式被实现。
第二数据输入单元130可以仅从外部存储器接收要被输入到处理元件单元110的目标数据的一部分。即,由于第二数据输入单元130不是一次将目标数据输入到处理元件单元110,而是在每个周期输入一部分数据,因此与相关的现有技术相比,连接到外部存储器的数据路径可以减少。例如,如果处理器100包括5×5形式的多个处理元件,则根据图1B的现有技术的第二数据输入单元130可能必须通过至少25条数据路径从外部存储器接收目标数据。关于前述,本公开的第二数据输入单元130通过至少五条数据路径逐周期地从外部存储器仅接收目标数据的一部分。因此,可以简化硬件设计、可以改善集成度、并且可以改善处理器100的可扩展性。
移位器140包括与处理元件单元110的多行的每一行对应的多个寄存器单元。多个寄存器单元中的每个可以被连接至在相应处理元件单元110的行中包括的多个处理元件。在此,一个寄存器单元可以存储一个处理指令。
处理器100可以基于通过移位器140输入的处理指令,控制处理元件单元110处理通过第一数据输入单元120输入的数据和通过第二数据输入单元130输入的数据。
例如,处理器100可以进一步包括用于在其中生成时钟的时钟生成单元(未示出)。时钟生成单元可以将生成的时钟发送到处理器100中的每个单元,并且处理器100中的每个单元可以基于输入时钟来处理数据。例如,第一数据输入单元120和第二数据输入单元130响应于时钟的上升沿而将被存储的数据输入到处理元件单元110,并且从外部存储器接收数据。处理元件单元110可以响应于时钟的上升沿来处理输入数据。移位器140可以响应于时钟的上升沿将处理指令输入到处理元件单元110,并且将处理指令移位到相邻的寄存器单元。或者,处理器100内的每个单元可以响应于时钟的下降沿以及上升沿和下降沿两者。通常,基于时钟操作执行通过处理器的数据流。时钟操作足以避免竞争状况。由于处理器100的内部同步操作是现有技术,因此将省略其详细描述。
或者,可以以异步方式来实现处理器100。例如,处理器100可以包括单独的控制器,并且该控制器可以在处理器100中的每个单元应该操作的时间点直接向每个单元发送控制指令。
图2B是示出根据示例性实施例的用于执行深度学习的处理器100中的处理元件单元110的详细配置的框图。尽管图2B中的处理元件单元110示出为包括25个处理元件,但是这仅是示例,并且可以由任何数量的处理元件构成。
处理元件单元110可以被分为五行。即,处理元件单元110包括第一行中包括的多个第一处理元件110-1、第二行中包括的多个第二处理元件110-2、第三行中包括的多个第三处理元件110-3、第四行中包括的多个第四处理元件110-4、以及第五行中包括的多个第五处理元件110-5。
数据在同一行中的相邻处理元件之间的双向移位是可能的。不在同一行中的相邻计算元件之间只能进行数据的单向移位。即,数据在不在同一行中的相邻处理元件之间只能沿从第一行到第五行的方向移位。这里,相邻的处理元件是指相对于特定处理元件排列在上、下、左和右侧的处理元件。“相邻”不指排列在对角线上的相邻处理元件。
第一数据输入单元120可以被连接到多个第一处理元件110-1中的每个。即,第一数据输入单元120被连接到包括在第一行中的五个处理元件中的每个,并且可以将包括在过滤器(内核)数据中的多个元件中的一个输入到所有五个处理元件。即,在一个周期内,第一数据输入单元120可以将相同的数据输入到多个第一处理元件110-1。
然而,这仅是示例性的,并且第一数据输入单元120可以在一个周期内向多个第一处理元件110-1中的每个输入不同的数据。即,以上示例用于描述卷积处理的情况,并且当处理器100执行另一处理时,以上示例可以不同地被执行。另外,即使在卷积处理的情况下,处理顺序也可以被改变,以使得第一数据输入单元120可以在一个周期内向多个第一处理元件110-1中的每个输入不同的数据。
第二数据输入单元130可以被连接到处理元件单元110的多个处理元件中的每个。在第一周期中,第二数据输入单元130可以将目标数据的一部分输入到多个第一处理元件110-1中的每个。此时,输入到多个第一处理元件110-1中的每个的数据可以彼此不同。在第二周期中,第二数据输入单元130可以将目标数据的另一部分输入到多个第二处理元件110-2中的每个。
移位器140中包括的多个寄存器单元可以分别地被连接到处理元件单元110的多行中的每行。例如,第一寄存器单元可以被耦接到多个第一处理元件110-1,第二寄存器单元可以被耦接到多个第二处理元件110-2,第三寄存器单元可以被耦接到多个第三处理元件110-3中,第四寄存器单元被连接到多个第四处理元件110-4,以及第五寄存器单元被连接到多个第五处理元件110-5。每个寄存器单元可以向连接的处理元件输入相同的处理指令。例如,第一寄存器单元可以将一个处理指令输入到多个第一处理元件110-1。
同时,根据图1B的相关技术,需要将处理指令输入到所有处理元件,并且其中存储有计算指令的寄存器单元必须被连接到所有计算元件。相反,这里的每个寄存器单元没有被连接到除相应行的多个处理元件之外的其他处理元件。因此,可以简化硬件设计、可以改善集成度、并且可以改善处理器100的可扩展性。
至此,已经描述了处理器100的硬件结构和据此的可伸缩性。以下,将描述使用处理器100执行卷积处理的方法。
图3A至图3E是示出根据示例性实施例的用于执行卷积处理的方法的视图。参照图3A描述过滤器数据(内核数据)和目标数据(图像数据),但这仅仅是示例性的。内核数据可以被称为过滤器系数、过滤器数据、元件或权重。要操作的数据可以被称为目标数据或要处理的目标数据。单片目标数据可以称为目标数据字。
图3B示出了根据示例性实施例的处理器100在第一周期中的操作。移位器140将指令馈送到处理元件。第一数据输入单元120将过滤器数据的元件馈送到处理元件。第二数据输入单元将目标数据字馈送到处理元件。
在第一周期中,处理器100可以控制第一数据输入单元120将过滤器数据中包括的多个元件中的第一元件(a)输入到包括在处理元件单元110的第一行的多个第一处理元件1101中的每个中;控制第二数据输入单元130以输入来自目标数据的第一数据(第一行中的目标数据的变量名分别为“1”、“2”、“3”、“4”、“5”)到多个第一处理元件110-1中的每个;并控制处理元件单元110基于通过移位器140被输入的第一处理指令(Mul)处理第一元件和第一数据。
在第一周期中,处理器100可以将第一处理指令输入到多个第一处理元件110-1中的每个中,并且控制移位器140将第一处理指令从与第一行对应的第一寄存器单元移位到与第二行对应的第二寄存器单元。
处理结果如图3C所示。在第一周期中,多个第一处理元件110-1中的每个可存储第一元件、第一数据和处理结果。第一个周期后的处理结果的示例为乘积a1、a2、a3、a4和a5。
处理器100可以在第一周期之后的第二周期中将第二处理指令(Shift+MAC)输入到多个第一处理元件110-1中的每个,并且控制移位器140将第二处理指令从第一寄存器单元移位到第二个寄存器单元。
根据移位指令,多个第一处理元件110-1中的每个可以将在第一周期中被处理的处理结果移位到相邻的处理元件。特别地,移位指令可以是将根据处理结果的处理数据移位到右侧的相邻处理元件的指令。即,处理器100可以控制处理元件单元110将第一元件和第一数据的处理数据传送到相邻的处理元件。
处理器100可以控制处理元件单元110在第二周期中将第一元件移位到包括在处理元件单元110的第二行中的多个第二处理元件110-2中的每个;控制第一数据输入单元120将过滤器数据中包括的多个元件中的第二元件b输入到多个第一处理元件110-1中的每个;并且基于通过移位器140输入的第二处理指令(Shift+MAC)来控制处理元件单元110处理第二元件和第一数据。这里,即使周期被改变,多个第一处理元件110-1也可以存储第一数据。如图3E所示,在移位之后乘积a1现在出现在第一行的第二列中。
即,根据MAC命令,多个第一处理元件110-1中的每个处理在第二周期从第一数据输入单元120输入的第二元件(b)和在第一周期从第二数据输入单元130输入的第一目标数据(1、2、3、4、5),并且累积从相邻处理元件传送来的处理数据与从多个第一处理元件110-1中的每个处理来的数据。如图3E所示,第一行的第一处理元件中的在第二周期之后的结果是乘积b1,而在第一行的第二处理元件中在第二周期之后的结果是乘积a1+b2的和。
处理器100可以在第二周期中将从第一周期中移位后的第一处理指令(mul)输入到多个第二处理元件110-2的每个,并控制移位器140将第一处理指令从第二寄存器单元移位到对应于处理元件单元110的第三行的第三寄存器单元。
处理器100可以在第二周期中控制第二数据输入单元130以将目标数据中的第二目标数据(6,7,8,9,10)输入到多个第二处理元件110-2中的每个,并且控制处理元件单元110基于通过移位器140输入的第一处理指令来处理第一元件(a)和从第一行移位的第二数据。在一些实施例中,第一处理指令从第一寄存器单元到达移位器的第二寄存器单元。为了避免竞争条件,在一些实施例中,在第二周期和第三周期之间提供寄存器时钟间隔,使得可以将第一处理指令输入到多个第二处理元件110-2,并且将第二处理指令(Shift+MAC)移位到移位器的第二寄存器单元。
处理结果如图3E所示。第二周期中的多个第一处理元件110-1中的每个可以存储第二元件b、第一目标数据(1,2,3,4,5)和处理结果,以及元件110-2中的每个可以存储第一元件(a)、第二目标数据(6,7,8,9,10)和处理结果(通常,处理结果是每个处理元件的乘积之和)。
在第二个周期中,由于过滤器数据已到达第二行,因此有比第一个周期多两倍的处理元件可以执行处理。然而,即使周期被改变,要被输入到处理元件单元110的数据的量也可以是相同的,因此,从外部存储器输入到处理器100的数据量可以保持恒定。即,处理器100不是一次接收目标数据,而是顺序地接收一部分目标数据,从而即使处理器100和外部存储器之间的数据路径被减少了,数据传输也没有问题。
在第二周期之后的第三周期中,处理器100可以控制处理元件单元110将第一元件(a)移位到包括在处理元件单元110的第三行中的多个第三处理元件110-3中的每个,以及将第二元件(b)移位到多个第二处理元件110-2中的每个,并且控制第一数据输入单元120将包括在过滤器数据中的多个元件中的第四元件(d)输入到多个第一处理元件110-1中的每个。
这里,由于过滤器数据是二维形式,因此处理器100控制第一数据输入单元120输入第四元件(d)。具体地,输入第三元件(c)可能比输入第四元件(d)需要多一个的移位,因此,处理器100可以在第三元件(c)之前输入第四元件(d)以进行有效处理。
在第三周期中,处理器100可以将在第二周期中移位后的第一处理指令(mul)输入到多个第三处理元件110-3中的每个,并且控制移位器140将第一处理指令从第三寄存器单元移位至与处理元件单元110的第四行对应的第四寄存器单元。此外,在第三周期中,处理器100可以将从第二周期中移位后的第二处理指令(Shift+MAC)输入到多个第二处理元件110-2中的每个,并且控制移位器140将第二处理指令从第二寄存器单元移位到第三寄存器单元。
在第三周期中,处理器100可以控制第二数据输入单元130将目标数据中的第三目标数据(11,12,13,14,15)输入到多个第三处理元件110-3中的每个;基于通过移位器140输入的第一处理指令,处理从第二行移位的第一元件(a)和第三数据;并且基于通过移位器140输入的第二处理指令,控制处理元件单元110处理从第一行移位的第一元件(b)和第二数据。
可以将在第二周期中被处理的多个第一处理元件110-1的处理结果移位到多个第二处理元件110-2。此时,可以将移位的处理结果和在第三周期中处理的多个第二处理元件110-2的处理结果彼此分开地存储在多个第二处理元件110-2中。此后,在第三周期之后的第四周期中,可以将在第三周期中被处理的多个第二处理元件110-2的处理结果移位到第三处理元件110-3。
处理器100可以控制处理元件单元110以与前一周期相似的方式在第四周期中移位第一元件(a)、第二元件(b)和第四元件(d),并且控制第一数据输入单元120以将过滤器数据中包括的多个元件当中的第三元件(c)输入到多个第一处理元件110-1中的每个。
另外,处理器100可以将移位器140内部的处理指令输入到对应行中的多个处理元件,并且控制移位器140以与前一周期相同的方式执行移位。
为了便于描述,下面将仅描述多个第二处理元件110-2。在第二周期中被处理的多个第一处理元件110-1的处理结果和在第三周期中被处理的多个第二处理元件110-2的处理结果被存储,并且处理器100可以控制处理元件110将在第三周期中被处理的多个第二处理元件110-2的处理结果移位到多个第三处理元件110-3。
处理器100可以处理从多个第一处理元件110-1移位后的第四元件(d)和第二目标数据(6,7,8,9,10),并且将处理结果与多个第一处理元件110-1的处理结果相累积。
例如,可以通过上述处理,以目标数据的左上端和从过滤器数据处理来的第一数据为例,生成中间卷积结果(乘积之和)a1+b2+d7作为处理结果。a1+b2+d7的处理结果可以由第二处理元件从多个第二处理元件110-2的左边开始生成。
第五周期类似于第二周期,但是根据移位指令的移位方向可以是左而不是右。例如,通过以目标数据的左上部分和从过滤器数据计算出的第一数据为例,可以生成a1+b2+d7+c6作为上述处理的结果。a1+b2+d7+c6的处理结果可以由第一处理元件从多个第二处理元件110-2的左边开始生成。
通过以上处理,处理器100的卷积处理被执行。
图4是示出根据示例性实施例的从外部存储器到处理器的数据传送的量的视图。
如图4所示,实线部分表示通过处理器100的数据传送量(“总线活动的突发性低”),并且虚线部分(“总线活动的突发性高”)表示如图1C所示的现有技术的处理器的数据传送量。
即,处理器100顺序地执行处理,并且相应地,从外部存储器到处理器100的数据传送量可以保持恒定。在这种情况下,使用本公开的处理器100的数据传送量可以小于使用相关技术的处理器的瞬时数据传送量。相应地,即使与外部存储器的数据路径小于现有技术的处理器,本公开的处理器100也可以在处理上没有障碍。
图5是示出根据示例性实施例的用于执行深度学习的处理器的详细配置的框图。如图5所示,处理器100包括处理元件单元110、第一数据输入单元120、第二数据输入单元130、移位器140、处理指令寄存器单元150、以及多路复用器160。处理指令寄存器单元150在在一些实施例中,被实现为寄存器文件。对于与图2A中所示的组件重叠的部分,将省略其在图5中的详细描述。
处理指令寄存器单元150可以存储多个处理指令集。在此,多个处理指令集中的每个可以包括要被输入到处理元件单元110的多行中的每行的多个处理指令。也就是说,多个处理指令集中的每个可以包括与处理元件单元110的行的数量一样多的处理指令。
处理器100可以向多路复用器160提供多个处理指令集,并且控制处理指令寄存器单元150以从移位器140接收并存储处理指令的集合。
多路复用器160可以被连接在处理指令寄存器单元150和移位器140之间。
处理器100可以控制多路复用器160以将存储在处理指令寄存器单元150中的多个处理指令集之一提供给移位器140。
图6A至图6D是描述根据示例性实施例的池化操作的视图。池化操作可以通过图5的处理器100结构来操作。在池化操作中,重要的是交替输入两个处理指令集并且移位处理指令集。在图6A至图6D中,省略了用于输入过滤器(内核)数据和目标数据的第一数据输入单元120和第二数据输入单元130。
首先,在开始池化操作之前的处理指令寄存器单元150中,可以有多个处理指令集被存储在其中。
例如,如图6A所示,可以在开始池化操作之前将第一处理指令集和第二处理指令集存储在处理指令寄存器单元150中。
处理器100可以控制多路复用器160以将存储在处理指令寄存器单元150中的多个处理指令集之一提供给移位器140。
例如,如图6B所示,处理器100可以控制多路复用器160以将被存储在处理指令寄存器单元150的第一处理指令集(1,2,3,4,5)和第二处理指令集(A,B,C,D,E)中的一个提供给移位器140。标识符应在上下文中被理解。较前面的,(1,2,3,4,5)表示目标数据的变量名。在下面的讨论中,(1,2,3,4,5)是指包括指令“1”、“2”、“3”、“4”和“5”的指令集。
处理器100可以将输入到移位器140的处理指令的集合存储在多个寄存器单元中,并且将所存储的处理指令集中包括的每个指令沿预定方向移位到相邻的寄存器单元中。处理器100可以将附加处理指令输入到与第一行对应的第一寄存器单元中,并且控制移位器140将附加处理指令中的每个和包括在移位处理指令集中的指令输入到处理元件单元110的每一对应行。
例如,处理器100可以在多个寄存器单元中存储输入到移位器140的处理指令的第二集合(A,B,C,D,E),将包括在所存储的处理指令集中的每个指令沿预定方向移位到相邻寄存器单元,将附加处理指令(K)输入到与第一行对应的第一寄存器单元,并且控制移位器140将附加处理指令(K)和移位的处理指令集中包括的每个指令输入到与处理元件单元110对应的每一行中。
这里,被存储在最后寄存器单元中的处理指令(E)不具有用于移位的寄存器单元,并且处理器100可以删除被存储在最后寄存器单元中的处理指令(E)。
本实施例不限于此,并且处理器100可以输入被存储在最后寄存器单元中的处理指令(E)而不是附加处理指令K。
此后,处理器100可以控制移位器140将包括在附加处理指令和移位后的指令集中的指令提供给处理指令寄存器单元150,并且控制处理指令寄存器单元150更新被输入到移位器140的处理指令集,从存储在处理指令寄存器单元150中的第一处理指令集和第二处理指令集中,到附加处理指令和包括在移位后的处理指令集中的指令。
同时,处理器100可以控制多路复用器160以将存储在处理指令寄存器单元150中的多个处理指令集中的另一指令集提供给移位器140。
就是说,如图6C所示,处理器100可以将处理指令寄存器单元150的第二处理指令集(A,B,C,D,E)更新为K,A,B,C,D。处理器100可以控制多路复用器160以将存储在处理指令寄存器单元150中的第一处理指令集(1,2,3,4,5)提供给移位器140。
当输入第二个处理指令(A,B,C,D,E)时,此后的操作相同。
处理器100可以在多个寄存器单元中存储被输入到移位器140的第一处理指令集(1,2,3,4,5),将存储的处理指令集中包括的每个指令沿着预定方向移位到相邻的寄存器单元,将附加处理指令(K)输入到与第一行对应的第一寄存器单元,以及控制移位器140将附加处理指令(K)和包括在移位处理指令集中的多个指令中的每个输入到对应于处理元件单元110的每一行。
类似地,由于在最后寄存器单元中存储的处理指令5中没有用于移位的寄存器单元,因此处理器100可以删除在最后寄存器单元中被存储的处理指令5。
或者,处理器100可以输入被存储在最后寄存器单元中的处理指令5,而不是附加处理指令K。
如图6D所示,处理器100可以将处理指令寄存器单元150的第一处理指令集(1,2,3,4,5)更新为K,1,2,3,4。处理器100可以控制多路复用器160以将存储在处理指令寄存器单元150中的第二处理指令集(K,A,B,C,D)提供给移位器140。
处理器100可以通过重复以上操作来执行池化操作。此时,处理元件单元110、第一数据输入单元120和第二数据输入单元130的操作可以与卷积的情况相同。
例如,第一数据输入单元120将过滤器数据输入到多个第一处理元件110-1,并且随着周期的改变,输入数据可以被移位到包括在下一行中的多个处理元件。第二数据输入单元130可以根据周期将一部分目标数据从多个第一处理元件110-1顺序地输入到多个第五处理元件110-5。处理元件单元110基于输入的处理指令处理输入数据,并且可以逐周期地移位过滤器数据。
图7是描述根据示例实施例的处理器的控制方法的流程图。
用于执行深度学习的处理器的控制方法包括:首先通过移位器将处理指令输入到处理元件单元;通过第一数据输入单元将数据输入到处理元件单元;以及通过第二数据输入单元将数据输入到处理元件单元(S710)。然后,处理元件单元基于处理指令来处理通过第一数据输入单元输入的数据和通过第二数据输入单元输入的数据(S720)。该处理器包括:处理元件单元,其包括以矩阵形式排列的多个处理元件;第一数据输入单元,其被连接到处理元件单元的第一行中包括的多个第一处理元件中的每个;第二数据输入单元,其被连接到处理元件单元的多个处理元件中的每个以及与该处理元件单元的多行中的每行对应的多个寄存器单元,并且多个寄存器单元中的每个可以包括移位器,该移位器被连接到对应处理元件单元的行中包括的多个处理元件。
这里,处理步骤(S720)可以包括:在第一周期中通过第一数据输入单元在多个第一处理元件中的每个中输入过滤器中包括的多个元件中的第一元件;通过第二数据输入单元将目标数据中的第一数据输入到多个第一处理元件中的每个;并且基于通过移位器输入的第一处理指令来处理第一元件和第一数据。
另外,处理步骤(S720)可以进一步包括:在第一周期之后的第二周期中,将第一元件移位到处理元件单元的第二行中包括的多个第二处理元件的每个中;通过第一数据输入单元将过滤器中包括的多个元件中的第二元件输入到多个第一处理元件中的每个;并且由处理元件单元基于通过移位器输入的第二处理指令来处理第二元件和第一数据。
或者,处理(S720)可以进一步包括:在第一周期之后的第二周期中,将第一元件移位到处理元件单元的第二行中包括的多个第二处理元件中的每个;以及基于通过移位器输入的第一处理指令处理从第一行移位后的第一元件和第二数据。
在此,处理(S720)可以进一步包括:在第一周期中,将第一处理指令输入到多个第一处理元件中的每个,并且将第一处理指令从与第一行对应的第一寄存器单元移位到与第二行对应的第二寄存器单元;以及在第二周期中,将移位后的第一处理指令输入到多个第二处理元件中的每个,将第二处理指令输入到多个第一处理元件中的每个,将第一处理指令从第二寄存器单元移位到与处理元件单元的第三行对应的第三寄存器单元,并将第二处理指令从第一寄存器单元移位到第二寄存器单元。
同时,处理(S720)可以进一步包括将处理第一元件和第一数据的数据传送到相邻元件;以及累积被传送的处理数据与在处理元件中被处理的数据。
第二数据输入单元可以通过与处理元件单元的行中包括的多个处理元件相同数量的数据路径被连接到外部存储器。
另外,处理器进一步包括处理指令寄存器单元和连接在处理指令寄存器单元和移位器之间的多路复用器;并且控制方法包括通过多路复用器将存储在处理指令寄存器单元中的多个处理指令集之一提供给移位器,并且多个处理指令集中的每个可以包括要输入到多行算术处理元件单元的每行的多个处理指令。
这里,将输入到移位器的处理指令集存储在多个寄存器单元中,将所存储的处理指令集中包括的每个指令沿预定方向移位到相邻的寄存器单元,并且进一步包括向与第一行对应的第一寄存器单元输入附加处理指令。在输入到处理元件单元中(S710),可以将附加处理指令中包括的每个指令和移位后的处理指令集中包括的指令输入到与处理元件单元对应的每一行。
将附加的处理指令和包括在移位后的处理指令集中的指令提供给处理指令寄存器单元,并且可以进一步包括将包括在处理指令寄存器单元中的多个处理指令集中输入到移位器的处理指令集更新为附加处理指令和包括在移位后的处理指令集中的指令。
根据如上所述的本公开的各种实施例,处理器被设计为减少从外部存储器传送的峰值数据的量,并且执行与设计的结构对应的处理,从而提高处理器的可伸缩性。
前述示例实施例和优点仅是示例,并且不应解释为限制性的。本教导可以容易地被应用于其他类型的设备。而且,示例实施例的描述旨在是说明性的,而不是限制权利要求的范围,并且许多替代、修改和变化对于本领域技术人员将是显而易见的。

Claims (15)

1.一种用于执行深度学习的处理器,该处理器包括:
控制器;
包括多个处理元件的处理元件阵列,其中:i)所述多个处理元件包括多个第一处理元件;ii)所述多个处理元件以多行和多列的矩阵排列;iii)处理元件阵列的第一行包括所述多个第一处理元件;iv)处理元件阵列的第二行包括多个第二处理元件;以及v)所述多个第一处理元件包括随后是第二处理元件的第一处理元件;
第一数据输入接口,被连接到所述多个第一处理元件中的每个处理元件,其中第一数据输入接口被配置为将过滤器数据输入到所述多个第一处理元件;
第二数据输入接口,被连接到处理元件阵列中的每个处理元件,其中第二数据输入接口被配置为将目标数据输入到处理元件阵列;以及
包括多个寄存器的移位器,其中:i)所述多个寄存器中的第一寄存器被连接到第一行;ii)所述多个寄存器中的第二寄存器被连接到第二行;以及iii)移位器被配置为将多个处理指令输入到处理元件阵列,其中,所述多个处理指令包括第一处理指令。
2.根据权利要求1所述的处理器,其中,对于第一周期,控制器进一步被配置为:
控制第一数据输入接口以将过滤器数据的第一元件输入到所述多个第一处理元件中的每个;
控制第二数据输入接口以:
将目标数据的第一目标字输入到所述多个第一处理元件中的第一处理元件,以及
将目标数据的第二目标字输入到所述多个第一处理元件中的第二处理元件;以及
控制处理元件阵列以:
基于所述第一元件、第一目标字和第一处理指令形成第一结果,以及
基于所述第一元件、第二目标字和第一处理指令形成第二结果。
3.根据权利要求2所述的处理器,其中,对于在第一周期之后的第二周期,控制器进一步被配置为:
控制处理元件阵列以将过滤器数据的第一元件移位到所述多个第二处理元件中;
控制第一数据输入接口以将过滤器数据的第二元件输入到多个第一处理元件中的每个;以及
基于第二处理指令,控制处理元件阵列以处理第二元件和目标数据。
4.根据权利要求2所述的处理器,其中,对于在第一周期之后的第二周期,控制器进一步被配置为:
控制处理元件阵列以将过滤器数据的第一元件移位到所述多个第二处理元件中,其中矩阵的第二行包括所述多个第二处理元件;
控制第二数据输入接口以将目标数据的第三目标字输入到所述多个第二处理元件的第一处理元件;以及
基于第一处理指令,控制处理元件阵列以处理第一元件和第三目标字。
5.根据权利要求4所述的处理器,其中,控制器进一步被配置为,对于第一周期控制移位器以:
将第一处理指令输入到所述多个第一处理元件,以及
将第一处理指令从第一寄存器移位到第二寄存器;以及
对于第二个周期控制移位器以:
将第一处理指令从第二寄存器输入到所述多个第二处理元件中的每个,
将第二处理指令从第一寄存器输入到所述多个第一处理元件中的每个,
将第一处理指令从第二寄存器移位到与处理元件阵列的第三行相关联的第三寄存器,以及
将第二处理指令从第一寄存器移位到第二寄存器。
6.根据权利要求2所述的处理器,其中,控制器进一步被配置为:
控制所述多个第一处理元件的第一处理元件以:
将第一结果传送到所述多个第一处理元件的第二处理元件,其中,所述多个第一处理元件的第二处理元件与所述多个第一处理元件的第一处理元件相邻;以及
控制第二处理元件以将第一结果与先前在第二处理元件中被处理的其他数据进行累积。
7.根据权利要求1所述的处理器,其中第二数据输入接口通过数据路径到外部存储器是可连接的,其中数据路径的数量是列的数量。
8.根据权利要求1所述的处理器,进一步包括:
处理指令寄存器文件;以及
被连接在处理指令寄存器文件和移位器之间的多路复用器,
其中,控制器进一步被配置为控制多路复用器,以将从处理指令寄存器文件中获得的第一处理指令集提供给移位器,并且其中,第一处理指令集包括第一处理指令。
9.如权利要求8所述的处理器,进一步包括:
处理元件指令存储器,被配置为存储第一处理指令集,
其中,控制器进一步被配置为控制移位器以:
向下移动第一个处理指令集以在第一个寄存器中腾出空间,
将附加的处理指令从处理元件指令存储器中输入到与第一行相关联的处理指令寄存器文件中的位置,以及
将附加处理指令和第一处理指令集中的第二附加处理指令输入到处理元件阵列的多个行。
10.根据权利要求9所述的处理器,其中,控制器进一步被配置为:
控制处理指令寄存器文件,以将用于针对第一处理指令集的池化操作的第二处理指令集从处理元件指令存储器输入到处理指令寄存器文件中,以及
控制移位器以输入第二处理指令集。
11.一种执行深度学习的处理器的控制方法,其中,处理器包括控制器、以具有多行和多列的矩阵形式的处理元件阵列、第一数据输入接口、第二数据输入接口、以及移位器,该方法包括:
通过移位器将第一处理指令输入到处理元件阵列的第一行的多个第一处理元件,通过第一数据输入接口将过滤器数据输入到所述多个第一处理元件,以及通过第二数据输入接口将第一目标数据输入到所述多个第一处理元件;以及
由处理元件阵列基于第一处理指令处理过滤器数据和第一目标数据。
12.根据权利要求11所述的控制方法,其中,在第一周期中,处理进一步包括:
将来自过滤器数据的第一元件输入到所述多个第一处理元件中的每个;
将第一目标数据输入到所述多个第一处理元件中的每个;以及
由处理元件阵列基于第一处理指令处理第一元件和第一目标数据。
13.根据权利要求12所述的控制方法,其中,在第一周期之后的第二周期中,处理进一步包括:
通过移位器将第二处理指令输入到处理元件阵列的第二行的多个第二处理元件;
将第一元件移位到处理元件阵列的第二行中包括的所述多个第二处理元件中;
将来自过滤器数据的第二元件输入到所述多个第一处理元件中的每个;以及
基于第二处理指处理第二元件和第一目标数据。
14.根据权利要求12所述的控制方法,其中,在第一周期之后的第二周期中,处理进一步包括:
将第一元件移位到处理元件阵列的第二行的所述多个第二处理元件;
将第二目标数据输入到所述多个第二处理元件中的每个;以及
基于第一处理指令处理第一元件和第二目标数据。
15.根据权利要求14所述的控制方法,其中,处理进一步包括:
在第一周期中,将第一处理指令输入到所述多个第一处理元件中的每个,并将第一处理指令从与第一行对应的第一寄存器移位到与第二行对应的第二寄存器,以及
在第二周期中,将第一处理指令输入到所述多个第二处理元件中的每个,将第二处理指令输入到所述多个第一处理元件中的每个,将第一处理指令从第二寄存器移位到与处理元件阵列的第三行对应的第三寄存器,并且将第二处理指令从第一寄存器移位到第二寄存器。
CN201880061613.2A 2017-10-31 2018-10-04 处理器及其控制方法 Pending CN111133455A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR1020170143240A KR102586173B1 (ko) 2017-10-31 2017-10-31 프로세서 및 그 제어 방법
KR10-2017-0143240 2017-10-31
PCT/KR2018/011747 WO2019088470A1 (en) 2017-10-31 2018-10-04 Processor and control methods thereof

Publications (1)

Publication Number Publication Date
CN111133455A true CN111133455A (zh) 2020-05-08

Family

ID=66243994

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880061613.2A Pending CN111133455A (zh) 2017-10-31 2018-10-04 处理器及其控制方法

Country Status (5)

Country Link
US (1) US11093439B2 (zh)
EP (1) EP3631698A4 (zh)
KR (1) KR102586173B1 (zh)
CN (1) CN111133455A (zh)
WO (1) WO2019088470A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7315317B2 (ja) * 2018-11-09 2023-07-26 株式会社Preferred Networks プロセッサおよびプロセッサのデータ転送方法
WO2020116672A1 (ko) * 2018-12-05 2020-06-11 전자부품연구원 딥러닝 하드웨어 가속장치
KR20210014902A (ko) * 2019-07-31 2021-02-10 삼성전자주식회사 프로세서 및 그 제어 방법
KR20210030653A (ko) * 2019-09-10 2021-03-18 주식회사 모빌린트 복수 개의 코어를 갖는 연산 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1532686A (zh) * 1999-07-26 2004-09-29 ض� 处理器以及由处理器为矩阵处理使用两组寄存器的方法
CN101014948A (zh) * 2004-09-09 2007-08-08 皇家飞利浦电子股份有限公司 单指令多数据处理器结构中的互连
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法
US20170103313A1 (en) * 2015-05-21 2017-04-13 Google Inc. Neural Network Processor

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5138695A (en) 1989-10-10 1992-08-11 Hnc, Inc. Systolic array image processing system
KR920013171A (ko) 1990-12-26 1992-07-28 경상현 신경회로망을 위한 프로세서 어레이 구조
DE69430744T2 (de) * 1994-07-28 2003-01-30 Ibm Verbesserte Neuronalhalbleiterchipsarchitekturen und Neuronalnetzwerke darin
US20080059762A1 (en) 2006-09-01 2008-03-06 Bogdan Mitu Multi-sequence control for a data parallel system
KR100956747B1 (ko) 2008-02-11 2010-05-12 한국과학기술원 신경망회로와 병렬처리 프로세서를 결합한 컴퓨터구조 및그를 이용한 처리방법
US8442927B2 (en) 2009-07-30 2013-05-14 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
KR20110037183A (ko) 2009-10-06 2011-04-13 한국과학기술원 뉴로-퍼지 시스템과 병렬처리 프로세서가 결합된 전력 제어 가능한 컴퓨터 시스템, 이를 이용하여 영상에서 물체를 인식하는 방법 및 장치
US9449257B2 (en) 2012-12-04 2016-09-20 Institute Of Semiconductors, Chinese Academy Of Sciences Dynamically reconstructable multistage parallel single instruction multiple data array processing system
US9811775B2 (en) 2012-12-24 2017-11-07 Google Inc. Parallelizing neural networks during training
KR20150016089A (ko) 2013-08-02 2015-02-11 안병익 신경망 컴퓨팅 장치 및 시스템과 그 방법
WO2015016640A1 (ko) 2013-08-02 2015-02-05 Ahn Byungik 신경망 컴퓨팅 장치 및 시스템과 그 방법
EP3035249B1 (en) 2014-12-19 2019-11-27 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
US10606651B2 (en) * 2015-04-17 2020-03-31 Microsoft Technology Licensing, Llc Free form expression accelerator with thread length-based thread assignment to clustered soft processor cores that share a functional circuit
US10438117B1 (en) 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
ES2929626T3 (es) * 2015-05-21 2022-11-30 Goldman Sachs & Co Llc Arquitectura de computación paralela de propósito general
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US10083395B2 (en) 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US10387770B2 (en) 2015-06-10 2019-08-20 Samsung Electronics Co., Ltd. Spiking neural network with reduced memory access and reduced in-network bandwidth consumption
US10275394B2 (en) 2015-10-08 2019-04-30 Via Alliance Semiconductor Co., Ltd. Processor with architectural neural network execution unit
KR102601848B1 (ko) 2015-11-25 2023-11-13 삼성전자주식회사 데이터 인식 모델 구축 장치 및 방법과 데이터 인식 장치
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US20180007302A1 (en) * 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
CN107678781B (zh) * 2016-08-01 2021-02-26 北京百度网讯科技有限公司 处理器以及用于在处理器上执行指令的方法
GB2554711B (en) * 2016-10-06 2020-11-25 Imagination Tech Ltd Buffer addressing for a convolutional neural network
US20180113840A1 (en) * 2016-10-25 2018-04-26 Wisconsin Alumni Research Foundation Matrix Processor with Localized Memory
US10585621B2 (en) * 2017-04-21 2020-03-10 Intel Corporation Statically-schedulable feed and drain structure for systolic array architecture
US11386644B2 (en) 2017-10-17 2022-07-12 Xilinx, Inc. Image preprocessing for generalized image processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1532686A (zh) * 1999-07-26 2004-09-29 ض� 处理器以及由处理器为矩阵处理使用两组寄存器的方法
CN101014948A (zh) * 2004-09-09 2007-08-08 皇家飞利浦电子股份有限公司 单指令多数据处理器结构中的互连
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法
US20170103313A1 (en) * 2015-05-21 2017-04-13 Google Inc. Neural Network Processor

Also Published As

Publication number Publication date
KR20190048347A (ko) 2019-05-09
WO2019088470A1 (en) 2019-05-09
KR102586173B1 (ko) 2023-10-10
EP3631698A4 (en) 2020-05-27
US20190129885A1 (en) 2019-05-02
US11093439B2 (en) 2021-08-17
EP3631698A1 (en) 2020-04-08

Similar Documents

Publication Publication Date Title
JP6977239B2 (ja) 行列乗算器
CN111133455A (zh) 处理器及其控制方法
CN106970896B (zh) 面向向量处理器的二维矩阵卷积的向量化实现方法
KR102258414B1 (ko) 처리 장치 및 처리 방법
US10768894B2 (en) Processor, information processing apparatus and operation method for processor
KR102232722B1 (ko) 프로그램 가능한 2차원 이미지 프로세서상의 컨볼루션 신경망
CN107862374B (zh) 基于流水线的神经网络处理系统和处理方法
US11360930B2 (en) Neural processing accelerator
AU2022202762A1 (en) Efficient data layouts for convolutional neural networks
CN107818367B (zh) 用于神经网络的处理系统和处理方法
CN106846235B (zh) 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统
CN116541647A (zh) 运算加速器、处理方法及相关设备
CN107632965B (zh) 可重构的s型运算装置及运算方法
CN117933314A (zh) 处理装置、处理方法、芯片及电子装置
KR102610842B1 (ko) 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법
CN108021528A (zh) Slam运算装置和方法
JP2018120549A (ja) プロセッサ、情報処理装置及びプロセッサの動作方法
CN110580519B (zh) 一种卷积运算装置及其方法
CN114065926A (zh) 用于深度学习的方法和设备
WO2023065983A1 (zh) 计算装置、神经网络处理设备、芯片及处理数据的方法
Meng et al. Ppoaccel: A high-throughput acceleration framework for proximal policy optimization
US11687831B1 (en) Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
CN112099850A (zh) 一种多核Hourglass网络加速方法
CN111901500A (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