CN114026554A - 处理器及其控制方法 - Google Patents
处理器及其控制方法 Download PDFInfo
- Publication number
- CN114026554A CN114026554A CN202080047025.0A CN202080047025A CN114026554A CN 114026554 A CN114026554 A CN 114026554A CN 202080047025 A CN202080047025 A CN 202080047025A CN 114026554 A CN114026554 A CN 114026554A
- Authority
- CN
- China
- Prior art keywords
- processing
- processing element
- elements
- adjacent
- processing 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 814
- 239000011159 matrix material Substances 0.000 claims abstract description 10
- 238000011176 pooling Methods 0.000 claims description 114
- 238000010586 diagram Methods 0.000 description 18
- 238000013473 artificial intelligence Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 8
- 230000000295 complement effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 210000001747 pupil Anatomy 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 235000021109 kimchi Nutrition 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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
- G06N3/088—Non-supervised learning, e.g. competitive learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Processing (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
提供了一种处理器。所述处理器包括被配置为以矩阵形式布置的多个处理元件和控制器,其中,所述控制器被配置为在多个周期期间控制所述多个处理元件处理目标数据,控制第一处理元件使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,并且将包括在所述多个元素中的第二行中的每个第二元素输入到所述多个处理元件中的布置在第二行中的第二处理元件,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,并且对从第一处理元件中的同一列中的相邻第一处理元件提供的数据和预先存储的运算数据进行运算。
Description
技术领域
本公开涉及一种处理器及其控制方法。更具体地,本公开涉及执行池化的处理器及其控制方法。
背景技术
通常,家用电器(诸如冰箱或洗衣机)包括用于执行特定功能的马达。另一方面,近年来,通常可在一个家庭内提供多个具有马达的家用电器。例如,可在一个家庭内提供普通冰箱和泡菜冰箱。
深度学习是一种基于人工神经网络的机器学习技术,并且即使人工神经网络被设计成多层结构以变深,也可通过使用无监督学习对用于学习的数据进行预处理或者通过一次跨若干层传送数据来提高学习效率。更具体地,由于互联网的大数据和处理大数据的计算能力的提高,深度学习最近得到了极大的发展。
其中,卷积神经网络(CNN)具有适合于学习二维数据的结构,并且可包括卷积运算、池化运算等。
这里,池化用于检测局部区域中的有意义的信号。例如,当使用用于检测图像中的瞳孔的滤波器执行卷积时,将瞳孔位置处记录的高数值作为结果值,但是因为这些数值是大量结果值中的一些,所以这些数值可能无法有效地传送到下一层。
在这种情况下,可如图1A所示使用最大池化将局部区域中的最大信号传送到下一层。另外,传送到下一层的强信号可在滤波器学习时通过反向传播算法再次前向传送,以使用于检测瞳孔的滤波器更有效地执行学习。因此,池化执行提高推理和学习效率的重要功能。
可选地,如图1B所示,池化可用于减少特征图数据。在不执行池化的情况下,执行卷积,使得可在深度方向(Z轴方向)上增加大小,但是在执行池化的情况下,减小了X轴和Y轴方向上的大小,使得可减少运算量和所需存储器的数量。
然而,在相关技术中,一维计算器结构(1D阵列)已经用于池化运算。
在这种情况下,如图1C所示,用于卷积的二维计算器结构(2D阵列)和用于池化的1D阵列需要由单独的硬件实现,这导致成本(诸如硬件面积和功耗)增加。
另外,如图1D所示,还发生硬件资源的负载平衡问题。
另外,在使用1D阵列结构进行池化的情况下,通过使用称为单指令多数据(SIMD)的方法利用一个指令同时控制多个处理元件(PE)来执行运算。在这种情况下,一个处理元件处理包括在特征图数据的一个深度中的数据,并且相应的处理元件对包括在一个深度中的数据的每个局部区域执行池化。
例如,在局部区域的大小为3×3并且以步幅1执行池化的情况下,如图1E所示,第一处理元件顺序地接收4、2、4、7、3、2、4、3和8以执行池化,并且顺序地接收2、4、3、3、2、6、3、8和4以执行池化。在这种情况下,对于每个区域,通过改变局部区域,图1E的8被从存储器读取九次,然后进行九次加法运算。例如,存在诸如不必要的存储器访问和运算增加的问题。
可选地,如图1F所示,可使用SIMD方式进行卷积和池化。然而,在卷积的情况下,不可能重用数据。
如上所述,在使用1d阵列结构进行池化的情况下,会出现各种问题。
上述信息仅作为背景技术信息呈现,以帮助理解本公开。关于上述内容中的任何一个是否可作为关于本公开的现有技术适用,没有做出任何确定,也没有做出断言。
发明内容
技术问题
本公开的各方面是为了至少解决上述问题和/或缺点,并且至少提供下面描述的优点。因此,本公开的一个方面在于提供一种用于使用具有2D阵列结构的多个处理元件来执行池化的处理器及其控制方法。
另外的方面将部分地在下面的描述中阐述,并且部分地将从描述中显而易见,或者可通过实践所呈现的实施例来学习。
技术方案
根据本公开的一个方面,提供了一种处理器。所述处理器包括多个处理元件,被配置为以矩阵形式布置;和控制器,被配置为在多个周期期间控制所述多个处理元件处理目标数据,其中,所述控制器将包括在所述目标数据中的多个元素中的第一行中包括的每个第一元素输入到所述多个处理元件中的布置在第一行中的第一处理元件,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,并且将包括在所述多个元素中的第二行中的每个第二元素输入到所述多个处理元件中的布置在第二行中的第二处理元件,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,并且控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以获取目标数据的池化结果。
所述控制器还被配置为在第一周期中将每个第一元素输入到第一处理元件,在紧接在第一周期之后的第二周期中,控制第一处理元件使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,并且将每个第二元素输入到第二处理元件,在紧接在第二周期之后的第三周期中,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,并且在紧接在第三周期之后的第四周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以获取池化结果。
所述控制器还被配置为在第一周期中将每个第一元素输入到第一处理元件,在紧接在第一周期之后的多个周期期间,控制第一处理元件,使得每个第一处理元件对从所述相邻第一处理元件提供的数据和输入的第一元素进行运算,在作为所述多个周期之一的第二周期中将第二元素输入到每个第二处理元件,在紧接在第二周期之后的多个周期期间,控制第二处理元件,使得每个第二处理元件对从所述相邻第二处理元件提供的数据和输入的第二元素进行运算,在与所述紧接在第二周期之后的多个周期具有预定间隔的第三周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以获取池化结果,并且紧接在第一周期之后的周期数等于紧接在第二周期之后的周期数。
所述控制器还被配置为在所述紧接在第一周期之后的多个周期中的初始周期中,控制第一处理元件,使得与每个第一处理元件相邻的第一处理元件提供第一元素,并且在所述紧接在第一周期之后的多个周期中的初始周期中,控制第二处理元件,使得与每个第一处理元件相邻第二处理元件提供所述第二元素。
控制器还被配置为在所述紧接在第一周期之后的多个周期中的初始周期之后的周期期间,控制第一处理元件,使得与每个第一处理元件相邻的第一处理元件提供前一周期中的运算数据,并且在紧接在第二周期之后的多个周期中的初始周期之后的周期期间,控制第二处理元件,使得与每个第二处理元件相邻的第二处理元件提供前一周期中的运算数据。
所述控制器还被配置为将包括在目标数据中的所述多个元素中的第三行中包括的每个第三元素输入到所述多个处理元件中的布置在第三行中的第三处理元件,控制第三处理元件,使得每个第三处理元件对从相邻第三处理元件提供的数据和输入的第三元素进行运算,控制第三处理元件,使得每个第三处理元件控制第三处理元件对从第二处理元件中的同一列中的相邻第二处理元件提供的运算数据和预先存储的运算数据进行运算,以获取池化结果,并且从相邻第二处理元件提供的运算数据是从与相邻第二处理元件同一列中的相邻第一处理元件提供的运算数据和相邻第二处理元件的预先存储的运算数据的运算结果。
所述控制器还被配置为控制第一处理元件,使得每个第一处理元件执行从所述相邻第一处理元件提供的数据和输入的第二元素的加法运算,控制第二处理元件,使得每个第二处理元件执行从相邻第二处理元件提供的数据和输入的第二元素的加法运算,以及控制第二处理元件,使得每个第二处理元件执行从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据的相加运算,以获取平均池化结果。
所述控制器还被配置为控制第一处理元件,使得每个第一处理元件执行从所述相邻第一处理元件提供的第一元素和输入的第一元素的比较运算,控制第二处理元件,使得每个第二处理元件执行从相邻第二处理元件提供的第二元素和输入的第二元素的比较运算,以及控制第二处理元件,使得每个第二处理元件执行从第一处理元件中的同一列中的相邻第一处理元件提供的第一元素和预先存储的第二元素的比较运算,以获取最大池化结果。
所述多个处理元件中的每个处理元件包括第一寄存器和第二寄存器,并且所述控制器还被配置为控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件的第一寄存器或第二寄存器提供的数据和存储在每个第一处理元件的第一寄存器中的第一元素进行运算,并将运算后的数据和第一元素存储在每个第一处理元件的第二寄存器中,以及控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件的第一寄存器或第二寄存器提供的数据和存储在每个第二处理元件的第一寄存器中的第二元素进行运算,并将运算后的数据和第二元素存储在每个第二处理元件的第二寄存器中。
控制器还被配置为控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件的第一寄存器提供的运算数据和存储在每个第二处理元件的第一寄存器中的运算数据进行运算,并将运算后的运算数据存储在每个第二处理元件的第二寄存器中。
根据本公开的另一方面,提供了一种处理器的控制方法。该方法包括以矩阵形式布置的多个处理元件,并且在多个周期期间使用多个处理元件对目标数据执行池化,包括:将包括在目标数据中的多个元素中的第一行中包括的每个第一元素输入到所述多个处理元件中的布置在第一行中的第一处理元件,控制第一处理元件使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,以及将包括在所述多个元素中的第二行中的每个第二元素输入到所述多个处理元件中的布置在第二行中的第二处理元件,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,并且控制第二处理元件,使得每个第二处理元件对从第一处理元件中的相同列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以执行池化。
在向第一处理元件输入时,在第一周期中将每个第一元素输入到第一处理元件,在向第二处理元件输入时,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,并且在紧接在第一周期之后的第二周期中,将每个第二元素输入到第二处理元件,在控制第二处理元件时,在紧接第二周期之后的第三周期中,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入第二元素进行运算,并且在执行池化时,在紧接第三周期之后的第四周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以获取池化结果。
在向第一处理元件输入时,在第一周期中将每个第一元素输入到第一处理元件,在向第二处理元件输入时,在紧接在第一周期之后的多个周期期间,控制第一处理元件,使得每个第一处理元件对从所述相邻第一处理元件提供的数据和输入的第一元素进行运算,并且在作为所述多个周期之一的第二周期中,将第二元素输入到每个第二处理元件,在控制第二处理元件时,在紧接在第二周期之后的多个周期期间,控制第二处理元件,使得每个第二处理元件对从所述相邻第二处理元件提供的数据和输入的第二元素进行运算,并且在执行池化时,在与所述紧接在第二周期之后的多个周期具有预定间隔的第三周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以执行池化,并且紧接在第一周期之后的周期数等于紧接在第二周期之后的周期数。
在控制第一处理元件时,在所述紧接在第一周期之后的多个周期中的初始周期中,控制第一处理元件,使得与每个第一处理元件相邻的第一处理元件提供第一元素,并且在控制第二处理元件时,在所述紧接在第一周期之后的多个周期中的初始周期中,控制第二处理元件,使得与每个第一处理元件相邻的第二处理元件提供第二元素。
在控制第一处理元件时,控制第一处理元件,使得与每个第一处理元件相邻的第一处理元件在所述紧接在第一周期之后的多个周期中的初始周期之后的周期期间提供前一周期中的运算数据,并且在控制第二处理元件时,在所述紧接在第二周期之后的多个周期中的初始周期之后的周期期间,控制第二处理元件,使得与每个第二处理元件相邻的第二处理元件提供前一周期中的运算数据。
该方法还包括:将包括在目标数据中的所述多个元素中的第三行中包括的每个第三元素输入到所述多个处理元件中的布置在第三行中的第三处理元件,并且控制第三处理元件,使得每个第三处理元件对从相邻第三处理元件提供的数据和输入的第三元素进行运算,其中,在执行池化时,控制第三处理元件,使得每个第三处理元件对从第二处理元件中的同一列中的相邻第二处理元件提供的运算数据和预先存储的运算数据进行运算以执行池化,其中,从相邻第二处理元件提供的运算数据是从与相邻第二处理元件在同一列中的相邻第一处理元件提供的运算数据和相邻第二处理元件的预先存储的运算数据的运算结果。
在控制第一处理元件时,控制第一处理元件,使得每个第一处理元件执行从相邻第一处理元件提供的数据和输入的第一元素的加法运算,在控制第二处理元件时,控制第二处理元件,使得每个第二处理元件执行从所述相邻第二处理元件提供的数据和输入的第二元素的加法运算,以及在执行池化时,控制第二处理元件,使得每个第二处理元件执行从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据的相加运算,以执行平均池化。
在控制第一处理元件时,控制第一处理元件,使得每个第一处理元件执行从相邻第一处理元件提供的第一元素和输入的第一元素的比较运算,在控制第二处理元件时,控制第二处理元件,使得每个第二处理元件执行从所述相邻第二处理元件提供的第二元素和输入的第二元素的比较运算,以及在执行池化时,控制第二处理元件,使得每个第二处理元件执行从第一处理元件中的同一列中的相邻第一处理元件提供的第一元素和预先存储的第二元素的比较运算,以执行最大池化。
所述多个处理元件中的每个处理元件包括第一寄存器和第二寄存器,并且在控制第一处理元件时,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件的第一寄存器或第二寄存器提供的数据和存储在每个第一处理元件的第一寄存器中的第一元素进行运算,并将运算后的数据和第一元素存储在每个第一处理元件的第二寄存器中,并且在控制第二处理元件时,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件的第一寄存器或第二寄存器提供的数据和存储在每个第二处理元件的第一寄存器中的第二元素进行运算,并将运算后的数据和第二元素存储在每个第二处理元件的第二寄存器中。
在执行池化时,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件的第一寄存器提供的运算数据和存储在每个第二处理元件的第一寄存器中的运算数据进行运算,并将运算后的运算数据存储在每个第二处理元件的第二寄存器中。
有益效果
根据如上所述的本公开的各种实施例,处理器通过使用具有2D阵列结构的多个处理元件来执行池化和卷积,以解决硬件二元化问题、负载平衡问题和冗余运算问题并降低峰值带宽。
根据以下结合附图公开了本公开的各种实施例的详细描述,本公开的其他方面、优点和显著特征对于本领域技术人员将变得显而易见。
附图说明
通过以下结合附图的描述,本公开的特定实施例的上述和其他方面、特征和优点将更加明显,其中:
图1A、图1B、图1C、图1D、图1E和图1F是示出根据本公开的各种实施例的池化的示图;
图2A是示出根据本公开的实施例的处理器的配置的框图;
图2B是示出根据本公开的实施例的处理器的配置的示图;
图2C和图2D是示出根据本公开的各种实施例的多个处理元件中的每个处理元件的配置和连接状态的示图;
图3、图4、图5、图6、图7和图8是示出根据本公开的各种实施例的多个处理元件的运算的示图;
图9A、图9B、图9C、图9D、图9E、图10A、图10B、图10C、图10D、图11A、图11B和图11C是示出根据本公开的各种实施例的针对每个周期操作控制器的方法的示图;
图12是示出根据本公开的实施例的提高多个处理元件的利用率的方法的示图;
图13是示出根据本公开的实施例的指令的旋转的示图;
图14是示出根据本公开的实施例的效果的示图;
图15是示出根据本公开的实施例的使用处理器的电子装置的示图;以及
图16是示出根据本公开的实施例的处理器的控制方法的流程图。
在整个附图中,应当注意,相同的附图标记用于描述相同或相似的元件、特征和结构。
具体实施方式
提供参照附图的以下描述以帮助全面理解由权利要求及其等同物限定的本公开的各种实施例。以下描述包括各种具体细节以帮助理解,但是这些细节仅被认为是示例性的。因此,本领域普通技术人员将认识到,在不脱离本公开的范围和精神的情况下,可对本文描述的各种实施例进行各种改变和修改。此外,为了清楚和简明,可省略对众所周知的功能和结构的描述。
在以下描述和权利要求书中使用的术语和词语不限于书面含义,而是仅由发明人使用以使得能够清楚且一致地理解本公开。因此,对于本领域技术人员显而易见的是,提供本公开的各种实施例的以下描述仅用于说明目的,而不是为了限制由所附权利要求及其等同物限定的本公开的目的。
应当理解,除非上下文另有明确规定,否则单数形式包括复数指示物。因此,例如,对“组件表面”的引用包括对一个或更多个这样的表面的引用。
在简要描述说明书中使用的术语之后,将在下面描述本公开。
图1A、图1B、图1C、图1D、图1E和图1F示出了根据本公开的各种实施例的池化。
图2A是示出根据本公开的实施例的处理器的配置的框图。
参照图2a,处理器100包括多个处理元件110和控制器120。
处理器100可以是执行池化的装置。例如,处理器100可识别以三维形式存储在存储器中的目标数据,并且基于x轴和y轴方向对具有三维形式的目标数据执行池化。另外,处理器100可以以在x轴和y轴方向上输出具有预定大小的局部区域内的最大值的方式执行最大池化。可选地,处理器100可以以在x轴和y轴方向上输出具有预定大小的局部区域内的平均值的方式执行平均池化。这里,预定大小是指用作池化的单位的区域的大小,并且也被称为内核大小。目标数据是要池化的数据,并且可以是用于应用人工智能模型的初始数据(例如,图像)或在操作人工智能模型的过程中获得的特征图。
此外,参照图1E,处理器100可基于指示局部区域的重叠程度的步幅来对多个局部区域中的每个局部区域执行池化。为了便于描述,参照图1E的附图,图1E示出了当步幅为1时九个局部区域的池化。当步幅为2时,处理器100仅对图1E中的九个局部区域中的位于顶点处的四个局部区域执行池化。例如,步幅可被认为是当前局部区域和下一个局部区域之间的差异。
另外,处理器100还可执行卷积。
多个处理元件110可以以矩阵形式布置,并且可在相邻处理元件之间执行数据的单向移位或双向移位。
多个处理元件110中的每个处理元件110可包括用于执行池化的加法器、多路复用器、寄存器等。然而,本公开不限于此,并且多个处理元件110中的每个处理元件110还可包括乘法器和用于执行卷积的其他算术逻辑单元(ALU)。
这里,加法器是接收多个数据并输出所接收的数据的和的电路,多路复用器是接收多个数据并输出所接收的多个数据中的一个数据的电路。寄存器是临时存储非常少量的数据或正在处理的中间结果的高速数据存储介质,并且乘法器是接收多个数据并输出接收到的数据的乘积的电路。
多个处理元件110中的每个处理元件110可用于在控制器120的控制下执行池化。另外,多个处理元件110中的每个处理元件110还可用于在控制器120的控制下执行卷积。
控制器120整体上控制处理器100的操作。
控制器120可通过在多个周期期间控制多个处理元件110来处理目标数据。
控制器120可从设置在处理器100外部的存储器读取目标数据的一部分,并将读取的数据输入到多个处理元件110。例如,控制器120可将包括在目标数据中的多个元素中的第一行中包括的第一元素分别输入到多个处理元件110中的布置在第一行中的第一处理元件。这里,包括在第一行中的第一元素表示包括在目标数据的多个行中的一行中的数据,并且布置在第一行中的第一处理元件表示包括在多个处理元件110中的多个行中的一行中的处理元件。另外,包括在第一行中的第一元素的数量可等于多个处理元件110的列的数量。例如,当多个处理元件110是5×5的矩阵形式时,即使包括在第一行中的元素的数量超过5,控制器120也可仅读取五个第一元素,并将读取的每个第一元素输入到第一处理元件。另外,第一元素可以是在目标数据的第一行中连续的数据。例如,控制器120可对作为包括在目标数据中的多个元素的一部分的第一元素进行分组,并且以相同的方式对分组的第一元素进行处理。通过该操作,并行运算是可能的,并且下面将描述并行运算的描述。
另外,控制器120可控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算。例如,控制器120可控制第一处理元件,使得每个第一处理元件将从存储器输入的第一元素发送到与右侧相邻的第一处理元件。另外,控制器120可控制第一处理元件,使得每个第一处理元件对从与左侧相邻的第一处理元件输入的第一元素和从存储器输入的第一元素进行运算。控制器120可在多个周期期间执行该处理,并且在这种情况下,由每个第一处理元件发送的数据可不是第一元素,并且下面将参照附图进行描述。
控制器120可将多个元素中的包括在第二行中的第二元素分别输入到多个处理元件110中的布置在第二行中的第二处理元件。该操作与将第一元素输入到第一处理元件的操作相同,因此将省略该操作后的描述。
将第二元素输入到第二处理元件的周期可以是每个第一处理元件执行操作的周期中的至少一个。
控制器120可控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算。该运算与每个第一元素执行运算的运算相同,因此将省略其描述。
控制器120控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以获取目标数据的池化结果。
此外,控制器120在第一周期中将每个第一元素输入到第一处理元件,在紧接在第一周期之后的第二周期中,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,将第二元素输入到第二处理元件,在紧接在第二周期之后的第三周期中,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,并且在紧接第三周期之后的第四周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以获取池化结果。
可选地,控制器120在第一周期中将每个第一元素输入到第一处理元件,在紧接在第一周期之后的多个周期期间,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,并且在作为多个周期之一的第二周期中将每个第二元素输入到第二处理元件,在紧接在第二周期之后的多个周期期间,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,在与紧接在第二周期之后的多个周期具有预定间隔的第三周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的处理数据进行运算,以获取池化结果。这里,紧接在第一周期之后的周期的数量可等于紧接在第二周期之后的周期的数量。
另外,在紧接在第一周期之后的多个周期中的初始周期中,控制器120可控制第一处理元件使得与每个第一处理元件相邻的第一处理元件提供第一元素,并且在紧接在第二周期之后的多个周期中的初始周期中,控制第二处理元件使得与每个第二处理元件相邻的第二处理元件提供第二元素。
另外,在紧接在第一周期之后的多个周期中的初始周期之后的周期期间,控制器120可控制第一处理元件使得与每个第一处理元件相邻的第一处理元件提供前一周期中的运算数据,并且在紧接在第二周期之后的多个周期中的初始周期之后的周期期间,控制器可控制第二处理元件,使得与每个第二处理元件相邻的第二处理元件提供前一周期中的运算数据。
此外,控制器120将包括在目标数据中包括的多个元素中的第三行中的第三元素输入到多个处理元件110中的布置在第三行中的第三处理元件,控制第三处理元件,使得每个第三处理元件对从相邻第三处理元件提供的数据和输入的第三元素进行运算,并且控制第三处理元件,使得每个第三处理元件对从第二处理元件中的同一列中的相邻第二处理元件提供的运算数据进行运算,以获取池化结果。这里,从相邻第二处理元件提供的运算数据可以是从与相邻第二处理元件在同一列中的相邻第一处理元件提供的运算数据和相邻第二处理元件的预先存储的运算数据的运算结果。
此外,控制器120控制第一处理元件执行每个第一处理元件、从相邻第一处理元件提供的数据与输入的第一元素的相加运算,控制第二处理元件执行每个第二处理元件、从相邻第二处理元件提供的数据和输入的第二元素的相加运算,并且控制第二处理元件执行每个第二处理元件、从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和所述预先存储的运算数据的相加运算,以获取平均池化结果。
可选地,控制器120控制第一处理元件,使得每个第一处理元件执行从相邻第一处理元件提供的第一元素和输入的第一元素的比较运算,控制第二处理元件,使得每个第二处理元件执行从相邻第二处理元件提供的第二元素和输入的第二元素的比较运算,并且控制第二处理元件,使得每个第二处理元件执行从第一处理元件中的同一列中的相邻第一处理元件提供的第一元素和预先存储的第二元素的比较运算,以获取最大池化结果。
此外,多个处理元件110中的每个处理元件110包括第一寄存器和第二寄存器,并且控制器120可控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件的第一寄存器或第二寄存器提供的数据和存储在每个第一处理元件的第一寄存器中的第一元素进行运算,并将运算后的数据和第一元素存储在每个第一处理元件的第二寄存器中,并且控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件的第一寄存器或第二寄存器提供的数据和存储在每个第二处理元件的第一寄存器中的第二元素进行运算,并将运算后的数据和第二元素存储在每个第一处理元件的第二寄存器中。
这里,控制器120可控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件的第一寄存器提供的运算数据和存储在每个第二处理元件的第一寄存器中的运算数据进行运算,并将运算后的运算数据存储在每个第二处理元件的第二寄存器中。
如上所述,控制器120可控制多个处理元件110以获取池化结果,并且将参照以下附图描述更具体的方法,并且首先,将描述处理器100的结构。
图2B是示出根据本公开的实施例的处理器100的配置的示图。
多个处理元件110中的每个处理元件110可将数据发送到右侧和下侧。
参照图2B,多个处理元件110中的每个处理元件110可从设置在处理器100外部的存储器接收数据。可选地,多个处理元件110中的每个处理元件110还可从设置在处理器100内部的片上存储器(例如,高速缓存存储器和寄存器)接收数据。
然而,本公开不限于此,并且图2B的图是用于表示用于执行池化的最小运算的图,并且多个处理元件110还可包括用于执行卷积的数据路径。例如,多个处理元件110中的每个处理元件110可将数据发送到左侧和上侧。
控制器120可通过在多个处理元件110的行单元中输入指令来控制多个处理元件110。例如,控制器120可通过用相同指令处理包括在同一行中的处理元件的单指令多数据(SIMD)方法来控制多个处理元件110。例如,控制器120可通过输入第一指令来控制第一处理元件,并且通过输入第二指令来控制第二处理元件。例如,控制器120可控制包括在同一行中的处理元件执行相同的运算。
另外,控制器120可对包括在目标数据中的多个元素中的同一行中包括的第一元素进行分组,并且将每个分组的第一元素输入到第一处理元件。然后,控制器120可用第一指令控制第一处理元件以对分组的元素执行相同的运算。例如,控制器120可以按照SIMD方法来控制第一处理元件以并行地对分组的元素执行相同的运算。通过该运算,控制器120可针对多个局部区域中的每个局部区域同时获取多个池化结果。
这里,控制器120可基于第一处理元件的数量来确定待分组的元素的数量。例如,如果第一处理元件的数量是五个,则控制器120可将包括在目标数据中的多个元素中的同一行中包括的五个元素分组。然而,第一处理元件的数量不限于此,并且控制器120可将待分组的元素的数量确定为小于第一处理元件的数量。
另一方面,在根据本公开的池化的情况下,可旋转指令。例如,当控制器120通过在第一周期中输入第一指令来控制第一处理元件时,控制器120可通过在第二周期中使用第一指令来控制第二处理元件。下面将对其描述进行说明。
图2C和图2D是示出根据本公开的各种实施例的多个处理元件中的每个处理元件的配置的示图。
参照图2D,多个处理元件110可全部以相同的形式实现,并且可连接。
参照图2D和图2D,处理元件可包括第一寄存器(数据寄存器)210、第二寄存器(累加寄存器)220、多个多路复用器230-1至230-3和加法+最大单元240。这里,第一寄存器210和第二寄存器220中的每一个是临时存储数据的高速数据存储介质,并且多个多路复用器230-1至230-3中的每一个可以是接收多个数据并输出多个数据中的一个数据的电路。加法+最大单元240是包括加法器(ADD)241、1的补码器242和多个多路复用器243-1和243-2的电路,并且加法+最大单元240中的元件的运算可根据池化的类型而改变,这将在下面描述。
第一寄存器210可通过多路复用器230-1接收从存储器输入的数据和从第二寄存器220输入的数据中的一个。
多路复用器230-2可将从第一寄存器210输入的数据和从第二寄存器220输入的数据中的一个提供给加法+最大单元240,或者将数据提供给右侧的处理元件或下侧的处理元件。
多路复用器230-3可将从左侧的处理元件提供的数据和从上侧的处理元件提供的数据中的一个提供给加法+最大单元240。
加法+最大单元240可对从多路复用器230-2提供的数据和从多路复用器230-3提供的数据进行运算,并将运算后的数据输出到第二寄存器220。可根据处理器100是执行最大池化还是执行平均池化来确定包括在加法+最大单元240中的1的补码器242以及多个多路复用器243-1和243-2的运算。
首先,当执行最大池化时,需要识别目标数据的两个元素中的较大元素。在这种情况下,执行两个元素之间的减法运算以比较两个元素,并且可根据运算结果是正数还是负数来识别所述较大元素。这里,减法运算可由1的补码运算和加法运算代替。
因此,当执行最大池化时,多路复用器243-1可将从1的补码器242提供的数据提供给加法器241,并且加法器241可执行从多路复用器230-3输入的数据和从多路复用器243-1输入的数据的相加运算,并将相加后的数据提供给多路复用器243-2。这里,1的补码器242可以是执行1的补码运算的电路。
多路复用器243-2可根据从加法器241输入的数据是正数还是负数来输出从多路复用器230-3输入的数据和从多路复用器243-1输入的数据中的一个。
通过这些运算,可比较两个元素之间的大小,并且控制器120可通过控制多个处理元件110在整个局部区域上执行该运算来获取最大池化结果。
另一方面,当执行平均池化时,需要对目标数据的两个元素求和。因此,多路复用器243-1可将从多路复用器230-2输入的数据提供给加法器241,并且加法器241可执行从多路复用器230-3输入的数据和从多路复用器243-1输入的数据的相加运算,并将相加后的数据提供给多路复用器243-2。
多路复用器243-2可输出从加法器241输入的数据。
通过该运算,可对两个元素求和,并且控制器120可控制多个处理元件110在整个局部区域上执行该运算,并且执行除以包括在整个局部区域中的元素的数量的除法运算以获取平均池化结果。
如上所述,处理元件可根据池化的类型不同地运算。另外,如下文将描述,处理元件可针对每个周期不同地运算。
控制器120可控制多个多路复用器230-1至230-3、243-1以及243-2,以在每个周期控制处理元件的运算。
此外,图2C示出了能够执行最大池化和平均池化两者的加法+最大单元240,但不限于此。例如,当仅执行平均池化时,处理元件可仅包括加法器而不是加法+最大单元240。
另外,在图2A至图2D中,已经描述了用于获取池化结果的控制器120的运算,但是控制器120可控制多个处理元件110获取卷积结果。
图3至图8是示出根据本公开的各种实施例的多个处理元件的运算的示图。
参照图3至图8,假设用作池化单元的区域的大小是3×3,并且步幅是1。另外,为了便于描述,将描述控制器120根据平均池化执行加法运算。
首先,如图3所示,假设目标数据是5×6矩阵形式,并且多个处理元件110以5×6矩阵形式布置。然而,这仅是示例,并且目标数据可以是各种形式,并且多个处理元件110的数量和布置也可以是不同的。
图3中由1指示的部分表示不执行元素之间的加法运算的状态,并且指示不执行池化的加法运算的初始目标数据。图3中由9指示的部分表示对九个元素执行加法运算的状态,并且表示池化结果。例如,可对3×3第一局部区域310-1执行池化以获得第一运算数据310-2,并且可对3×3第二局部区域320-1执行池化以获得第二运算数据320-2。例如,图3中的数字表示所使用的元素的数量。
图4示出了针对每个周期(时间)的多个处理元件110的运算。首先,图4的第一行表示存储在包括在多个处理元件110的第一行中的第一处理元件的第一寄存器和第二寄存器中的数据。例如,在时间1,控制器120可将包括在目标数据中的多个元素中的第一行中包括的每个第一元素输入到多个处理元件110中的布置在第一行中的第一处理元件的第一寄存器。在图4的时间1,第一元素处于输入状态并且不进行加法运算,因此由1指示。
在时间2,控制器120可控制第一处理元件,使得每个第一处理元件是与右侧相邻的第一处理元件,并且提供存储在第一寄存器中的第一元素。另外,在时间2,控制器120可控制第一处理元件,使得从左侧输入每个第一处理元件的第一元素和在时间1输入的第一元素进行加法运算,并且表示运算结果的运算数据存储在第二寄存器中。在图4的时间2,每个第一处理元件的第一寄存器仍然存储在时间1输入的第一元素并由1表示,并且每个第一处理元件的第二寄存器存储两个第一元素之间的运算数据并因此由2表示。
图5中示出了左侧的四个第一处理元件的具体运算410。在时间2,第一处理元件可将存储在第一寄存器中的第一元素提供给右侧的第一处理元件的加法+最大单元。另外,每个第一处理元件可将存储在第一寄存器中的第一元素输入到加法+最大单元。每个第一处理元件的加法+最大单元可对多个第一元素执行加法运算,并将第一元素存储在第二寄存器中。
再次参照图4的时间3,控制器120可控制第一处理元件,使得每个第一处理元件是与右侧相邻的第一处理元件,并提供存储在第二寄存器中的运算数据。另外,在时间3,控制器120可控制第一处理元件执行从左侧输入每个第一处理元件的运算数据和在时间1输入的第一元素的加法运算,将表示运算结果的运算数据存储在第二寄存器中,并删除第一寄存器。在时间3,可用新的运算数据更新存储在第二寄存器中的运算数据。在图4的时间3,每个第一处理元件的第二寄存器存储三个第一元素之间的运算数据,因此由3表示。
另外,在时间3,控制器120可将包括在目标数据中的多个元素中的第二行中包括的每个第二元素输入到多个处理元件110中的布置在第二行中的第二处理元件的第一寄存器。
在时间4,控制器120控制第一处理元件将存储在每个第一处理元件的第二寄存器中的运算数据移动到第一寄存器,并且直到时间6才另外控制第一处理元件。
控制器120可以按照与从时间2到时间4的第一处理元件的控制方法相同的方式从时间4到时间6控制第二处理元件。
在时间5,控制器120可将包括在目标数据中的多个元素中的包括在第三行中的每个第三元素输入到多个处理元件110中的布置在第三行中的第三处理元件的第一寄存器。
控制器120可以按照与从时间2到时间3的第一处理元件的控制方法相同的方式从时间6到时间7控制第三处理元件。
在时间7,控制器120可控制第一处理元件,使得每个第一处理元件是与下侧相邻的第二处理元件,并且提供存储在第一寄存器中的运算数据。另外,在时间7,控制器120可控制第二处理元件执行每一个第二处理元件从第一处理元件被输入到的运算数据和存储在每个第二处理元件的第一寄存器中的运算数据的加法运算,并将表示运算结果的运算数据存储在第二寄存器中。在图4的时间7,每个第二处理元件的第一寄存器仍然存储在时间6输入的运算数据,因此由3表示,并且每个第二处理元件的第二寄存器存储六个第一元素之间的运算数据,因此由6表示。
图6示出了两个第一处理元件和两个第二处理元件的具体运算420。在时间7,每个第一处理元件可将存储在第一寄存器中的运算数据提供给下侧的第二处理元件的加法+最大单元。另外,每个第二处理元件可将存储在第一寄存器中的运算数据输入到加法+最大单元。每个第二处理元件的加法+最大单元可执行从第一处理元件提供的运算数据和从每个第二处理元件的第一寄存器提供的运算数据的加法运算,并将相加后的运算数据存储在第二寄存器中。
另外,在时间7,控制器120可将包括在目标数据中的多个元素中的第四行中包括的每个第四元素输入到多个处理元件110中的布置在第四行中的第四处理元件的第一元素。
在时间8,控制器120可控制第二处理元件,使得每个第二处理元件是与下侧相邻的第三处理元件,并提供存储在第二寄存器中的运算数据。另外,在时间8,控制器120可执行从第二处理元件输入的每个第三处理元件的运算数据和存储在每个第三处理元件的第二寄存器中的运算数据的加法运算,并控制第二处理元件将表示运算结果的运算数据存储在第二寄存器中。另外,控制器120可控制第三处理元件在时间8将存储在每个第三处理元件的第二寄存器中的运算数据移动到第一寄存器。在图4的时间8,每个第三处理元件的第一寄存器存储在时间8输入的运算数据,因此由3表示,并且每个第三处理元件的第二寄存器存储九个第一元素之间的运算数据,因此由9表示。
图7示出了两个第二处理元件和两个第三处理元件的具体运算430。在时间8,每个第二处理元件可将存储在第二寄存器中的运算数据提供给下侧的第三处理元件的加法+最大单元。另外,每个第三处理元件可将存储在第二寄存器中的运算数据输入到加法+最大单元。每个第三处理元件的加法+最大单元可执行从第二处理元件提供的运算数据和从每个第三处理元件的第二寄存器提供的运算数据的加法运算,并将相加后的运算数据存储在第二寄存器中。
控制器120可读取存储在第三处理元件的第二寄存器中的运算数据作为池化结果。根据图4的时间8,存在四个池化结果,这意味着执行并行运算作为四个局部区域的池化结果。例如,随着多个处理元件110的列数增加,可提高并行处理能力。
控制器120可通过从时间7到时间8的第二处理元件的控制方法从时间9到时间10控制第三处理元件,并且通过从时间7到时间8的第三控制方法从时间9到时间10控制第四处理元件。
例如,控制器120可通过重复应用如上所述的控制方法来获取池化结果。更具体地,由于处理元件存储行方向上的元素之间的运算结果,并将存储的运算结果提供给下侧的处理元件,因此可解决相关技术的冗余运算问题。
另外,与相关技术不同,因为多个处理元件110仅接收包括在目标数据中的多个元素一次,所以可解决数据的冗余输入问题。
此外,在图8中简要示出了控制器120的每个周期的运算结果。为了便于描述,因为多个处理元件110包括多列处理元件,所以按照省略并行处理的形式示出运算结果。图8的水平轴表示时间,并且垂直轴表示多个处理元件110的行。在图8中,F表示目标数据的一部分被输入到多个处理元件110的时间点,并且数字表示所使用的元件的数量。
例如,在时间8第一次获取池化结果,然后在两个周期的间隔获得附加的池化结果。这是因为处理元件存储行方向上的元素之间的运算结果。
另外,在两个周期的间隔输入目标数据的一部分,以保持存储器带宽均匀并降低峰值带宽。
图9A至图11C是示出根据本公开的各种实施例的针对每个周期操作控制器的方法的示图。
参照图3至图8,假设用作池化单元的区域的大小是3×3,并且步幅是1,但是如图9A至图9E所示,用作池化单元的区域的大小可以是4×4,如图10A至图10D所示,用作池化单元的区域的大小可以是3×3,或者如图11A至图11C所示,用作池化单元的区域的大小可以是2×2。
另外,如果用作池化单元的区域的大小的一侧与步幅相同,则因为不需要周期性地使用行方向上的元素之间的运算结果,所以诸如图9A、10D和11C的运算是可能的。
参照图9A至图11C,图9A至图11C的运算方法可存储在设置于处理器100外部的存储器中。当输入池化命令时,控制器120可通过从存储器读取与池化条件(例如,用作池化单元的区域的大小和步幅)相应的运算方法来执行池化。
然而,本公开不限于此,并且处理器100还包括存储如图9A至图11C所示的运算方法的内部存储器(例如,高速缓冲存储器和寄存器),并且当池化命令被输入时,控制器120可通过从内部存储器读取与池化条件相应的运算方法来执行池化。
图12是示出根据本公开的实施例的提高多个处理元件的利用率的方法的示图。
参照图12,图12的上侧示出了当用作池化单元的区域的大小是3×3并且步幅是2时控制器120的运算方法。在这种情况下,在时间5,包括在第一行中的处理元件将运算数据提供给第二行,然后不执行附加运算。
因此,如图12的下侧所示,在时间5,控制器120可通过将包括在目标数据中的附加元素输入到包括在第一行中的处理元件来执行池化。因为处理元件包括第一寄存器和第二寄存器,所以即使在时间5输入附加元素也不会发生问题。
图13是示出根据本公开的实施例的指令的旋转的示图。
参照图13,在时间3,控制器120可从包括在第一行中的第一处理元件向包括在第十三行中的第十三处理元件输入指令。此时,因为输入指令以行为单位而不同,所以可输入总共13个指令。
另外,在时间14,控制器120可将在时间13从包括在第二行中的第二处理元件输入的指令输入到包括在第十四行中的第十四处理元件。
例如,控制器120可旋转多个指令以控制多个处理元件110。例如,可将一个指令输入到包括在第一行中的第一处理元件,然后顺序地输入到包括在较低行中的处理元件,并且可输入到包括在最后一行中的处理元件,然后再次输入到第一处理元件。因此,如图2B所示,可以以多个处理元件110的行为单位输入多个指令的形式实现控制器120。
图14是示出根据本公开的实施例的效果的示图。
如上所述,处理器100可执行池化。另外,因为多个处理元件110中的每个处理元件110还包括用于执行卷积的配置,所以处理器100可执行卷积。
参照图14,多个处理元件110维持执行池化或卷积的状态,并且因此,可解决负载平衡问题。
图15是示出根据本公开的实施例的使用处理器的电子装置的视图。
参照图15,电子装置1000可包括处理器100和存储器200。
电子装置1000是学习人工智能算法或根据人工智能模型执行运算的装置,并且可以是诸如计算机、膝上型计算机、服务器、平板电脑或智能电话的装置。然而,本公开不限于此,并且电子装置1000可以是任何装置,只要该装置可学习人工智能算法或根据人工智能模型执行运算即可。
在电子装置1000学习人工智能算法或根据人工智能模型执行运算的过程中,处理器100可执行卷积或池化。更具体地,处理器100可使用二维计算器结构(2D阵列)的多个处理元件110来执行卷积或池化。例如,处理器100可在第一时间段内使用多个处理元件110执行卷积,并且在第一时间段之后的第二时间段内使用所述多个处理元件110执行池化。
当电子装置1000学习人工智能算法时,处理器100可根据存储在存储器200中的人工智能算法执行卷积或池化,并更新正在学习的人工智能模型。
当电子装置1000根据人工智能模型执行运算时,处理器100可读取存储在存储器200中的人工智能模型,并将输入数据应用于人工智能模型以获取输出数据。处理器100可在将输入数据应用于人工智能模型的过程中执行卷积或池化。
图16是示出根据本公开的实施例的处理器的控制方法的流程图。
参照图16,在包括以矩阵形式布置的多个处理元件并在多个周期期间使用多个处理元件对目标数据执行池化的处理器的控制方法中,首先,在操作S1610,将包括在目标数据中的多个元素中的第一行中包括的每个第一元素输入到多个处理元件中的布置在第一行中的第一处理元件。然后,在操作S1620,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,并且将包括在多个元素中的第二行中的每个第二元素输入到多个处理元件中的布置在第二行中的第二处理元件。然后,在操作S1630,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行操作。然后,在操作S1640,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算以执行池化。
这里,在向第一处理元件输入的操作S1610,在第一周期中,将每个第一元素输入到第一处理元件,在向第二处理元件输入的操作S1620,在紧接在第一周期之后的第二周期中,控制第一处理元件,使得每个第一处理对从相邻第一处理元件提供的数据和输入的第一元素进行运算,在控制第二处理元件的操作S1630,在紧接在第二周期之后的第三周期中,控制第二处理元件,使得每个第二处理元件输入对从相邻第二处理元件提供的数据和输入的第二元素进行运算,并且在执行池化的操作S1640,在紧接在第三周期之后的第四周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的处理数据进行运算以执行池化。
可选地,在向第一处理元件输入的操作S1610,在第一周期中,将每个第一元素输入到第一处理元件,在向第二处理元件输入的操作S1620,在紧接在第一周期之后的多个周期期间,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,在控制第二处理元件的操作S1630,在紧接在第二周期之后的多个周期期间,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,并且在执行池化的操作S1640,在与紧接在第二周期之后的多个周期具有预定间隔的第三周期中,控制第二处理元件,使得每个第二处理元件对从多个第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的处理数据进行运算,以执行池化。这里,紧接在第一周期之后的周期的数量可等于紧接在第二周期之后的周期的数量。
另外,在控制第一处理元件的步骤中,在紧接在第一周期之后的多个周期中的初始周期中,可控制第一处理元件,使得与每个第一处理元件相邻的第一处理元件提供第一元素,并且在控制第二处理元件的操作S1630,在紧接在第二周期之后的多个周期中的初始周期中,可控制第二处理元件,使得与每个第二处理元件相邻的第二处理元件提供第二元素。
这里,在控制第一处理元件的步骤中,在紧接在第一周期之后的多个周期中的初始周期之后的周期期间,可控制第一处理元件,使得与每个第一处理元件相邻的第一处理元件提供前一周期中的运算数据,并且在控制第二处理元件的操作S1630,在紧接在第二周期之后的多个周期中的初始周期之后的周期期间,可控制第二处理元件,使得与每个第二处理元件相邻的第二处理元件提供前一周期中的运算数据。
此外,控制方法还包括以下步骤:将包括在目标数据中的多个元素中的第三行中包括的第三元素输入到多个处理元件110中的布置在第三行中的第三处理元件,并控制第三处理元件,使得每个第三处理元件对从相邻第三处理元件提供的数据和输入的第三元素进行运算,并且在执行池化的操作S1640,控制第三处理元件,使得每个第三处理元件对从第二处理元件中的同一列中的相邻第二处理元件提供的运算数据进行运算,以执行池化。这里,从相邻第二处理元件提供的运算数据可以是从与相邻第二处理元件在同一列中的相邻第一处理元件提供的运算数据和相邻第二处理元件的预先存储的运算数据的运算结果。
然后,在控制第一处理元件的步骤中,控制第一处理元件,使得每个第一处理元件执行从相邻第一处理元件提供的数据和输入的第一元素的加法运算,在控制第二处理元件的操作S1620,控制第二处理元件,使得每个第二处理元件执行从相邻第二处理元件提供的数据和输入的第二元素的加法运算,并且在控制池化的操作S1640,控制第二处理元件,使得每个第二处理元件执行从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据的相加运算,以执行平均池化。
可选地,在控制第一处理元件的步骤中,控制第一处理元件,使得每个第一处理元件执行从相邻第一处理元件提供的第一元素和输入的第一元素的比较运算,在控制第二处理元件的操作S1630,控制第二处理元件,使得每个第二处理元件执行从相邻第二处理元件提供的第二元素和输入的第二元素的比较运算,并且在执行池化的操作S1640,控制第二处理元件,使得每个第二处理元件执行从第一处理元件中的同一列中的相邻第一处理元件提供的第一元素和预先存储的第二元素的比较运算,以执行最大池化。
此外,多个处理元件110中的每个处理元件110包括第一寄存器和第二寄存器,并且在控制第一处理元件的步骤中,可控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件的第一寄存器或第二寄存器提供的数据和存储在每个第一处理元件的第一寄存器中的第一元素进行运算,并将运算后的数据和第一元素存储在每个第一处理元件的第二寄存器中,并且在控制第二处理元件的操作S1630,可控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件的第一寄存器或第二寄存器提供的数据和存储在每个第二处理元件的第一寄存器中的第二元素进行运算,并将运算后的数据和第二元素存储在每个第一处理元件的第二寄存器中。
这里,在执行池化的操作S1640,可控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件的第一寄存器提供的运算数据和存储在每个第二处理元件的第一寄存器中的运算数据进行运算,并将运算后的运算数据存储在每个第二处理元件的第二寄存器中。
根据如上所述的本公开的各种实施例,处理器可通过使用具有2D阵列结构的多个处理元件来执行池化和卷积,以解决硬件二元化问题、负载平衡问题和冗余运算问题并降低峰值带宽。
此外,根据本公开的实施例,上述各种实施例可通过包括存储在机器可读存储介质(例如,计算机可读存储介质)中的指令的软件来实现。机器可以是从存储介质调用存储的指令的设备,并且可根据调用的指令进行操作,并且可包括根据所公开的实施例的电子设备(例如,电子设备A)。在处理器执行命令的情况下,处理器可直接执行与命令相应的功能,或者其他组件可在处理器的控制下执行与命令相应的功能。命令可包括由编译器或解释器创建或执行的代码。机器可读存储介质可以以非暂时性存储介质的形式提供。这里,术语“非暂时性”表示存储介质是有形的而不包括信号,并且不区分数据是半永久还是临时存储在存储介质中。
另外,根据本公开的实施例,可在计算机程序产品中包括和提供根据上述各种实施例的方法。计算机程序产品可作为产品在卖方和买方之间交易。计算机程序产品可以以存储介质(例如,光盘只读存储器(CD-ROM))的形式分发,该存储介质可由机器读取或通过应用商店(例如,Play StoreTM)在线读取。在在线分发的情况下,计算机程序产品的至少部分可至少临时存储在存储介质(诸如制造商的服务器、应用商店的服务器或中继服务器的存储器)中,或者被临时创建。
另外,根据本公开的实施例,上述各种实施例可使用软件、硬件或软件和硬件的组合在计算机或计算机可读记录介质中实现。在一些情况下,本公开中描述的实施例可由处理器本身实现。根据软件实现,诸如本公开中描述的过程和功能的实施例可由单独的软件模块实现。每个软件模块可执行本公开中描述的一个或更多个功能和操作。
此外,用于执行根据上述本公开的各种实施例的机器的处理操作的计算机指令可存储在非暂时性计算机可读介质中。存储在非暂时性计算机可读介质中的计算机指令在由特定机器的处理器执行时允许特定机器根据上述各种实施例在机器中执行处理操作。非暂时性计算机可读介质不是暂时存储数据的介质(诸如寄存器、高速缓存、存储器等),而是指半永久地存储数据并且可由设备读取的介质。非暂时性计算机可读介质的具体示例可包括光盘(CD)、数字通用盘(DVD)、硬盘、蓝光盘、通用串行总线(USB)、存储卡、只读存储器(ROM)等。
另外,根据上述各种实施例的每个组件(例如,模块或程序)可包括单个实体或多个实体,并且可省略上述一些相应的子组件,或者可在各种实施例中还包括其他子组件。可选地或另外地,组件(例如,模块或程序)中的一些可集成到一个实体中,并且可以以相同或相似的方式执行在集成之前由各个相应组件执行的功能。由根据不同实施例的模块、程序或其他组件执行的操作可以以顺序方式、并行方式、迭代方式或启发式方式执行,操作中的至少一些可以以不同的顺序执行或被省略,或者可添加其他操作。
虽然已经参照本公开的各种实施例示出和描述了本公开,但是本领域技术人员将理解,在不脱离由所附权利要求及其等同物限定的本公开的范围和精神的情况下,可在本公开的各种实施例中进行形式和细节上的各种改变。
Claims (15)
1.一种处理器,包括:
多个处理元件,被配置为以矩阵形式布置;以及
控制器,被配置为在多个周期期间控制所述多个处理元件处理目标数据,
其中,所述控制器还被配置为:
将包括在目标数据中的多个元素中的第一行中包括的每个第一元素输入到所述多个处理元件中的布置在第一行中的第一处理元件,
控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,并且将包括在所述多个元素中的第二行中的每个第二元素输入到所述多个处理元件中的布置在第二行中的第二处理元件,
控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,以及
控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以获取目标数据的池化结果。
2.根据权利要求1所述的处理器,其中,所述控制器还被配置为:
在第一周期中将每个第一元素输入到第一处理元件,
在紧接在第一周期之后的第二周期中,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,并且将每个第二元素输入到第二处理元件,
在紧接在第二周期之后的第三周期中,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,以及
在紧接第三周期之后的第四周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以获取池化结果。
3.根据权利要求1所述的处理器,其中,所述控制器还被配置为:
在第一周期中,将每个第一元素输入到第一处理元件,
在紧接在第一周期之后的多个周期期间,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,
在作为所述多个周期之一的第二周期中,将第二元素输入到每个第二处理元件,
在紧接在第二周期之后的多个周期期间,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,以及
与所述紧接在第二周期之后的多个周期具有预定间隔的第三周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以获取池化结果,并且紧接在第一周期之后的周期数等于紧接在第二周期之后的周期数。
4.根据权利要求3所述的处理器,其中,所述控制器还被配置为:
在所述紧接在第一周期之后的多个周期中的初始周期中,控制第一处理元件,使得与每个第一处理元件相邻的第一处理元件提供第一元素,以及
在所述紧接在第一周期之后的多个周期中的初始周期中,控制第二处理元件,使得与每个第一处理元件相邻的第二处理元件提供第二元素。
5.根据权利要求4所述的处理器,其中,所述控制器还被配置为:
在所述紧接在第一周期之后的多个周期中的初始周期之后的周期期间,控制第一处理元件,使得与每个第一处理元件相邻的第一处理元件提供前一周期中的运算数据,以及
在所述紧接在第二周期之后的多个周期中的初始周期之后的周期期间,控制第二处理元件,使得与每个第二处理元件相邻的第二处理元件提供前一周期中的运算数据。
6.根据权利要求1所述的处理器,其中,所述控制器还被配置为:
将包括在目标数据中的所述多个元素中的第三行中包括的每个第三元素输入到所述多个处理元件中的布置在第三行中的第三处理元件,
控制第三处理元件,使得每个第三处理元件对从相邻第三处理元件提供的数据和输入的第三元素进行运算,以及
控制第三处理元件,使得每个第三处理元件控制第三处理元件对从第二处理元件中的同一列中的相邻第二处理元件提供的运算数据和预先存储的运算数据进行运算,以获取池化结果,其中,从相邻第二处理元件提供的运算数据是从与相邻第二处理元件在同一列中的相邻第一处理元件提供的运算数据和相邻第二处理元件的预先存储的运算数据的运算结果。
7.根据权利要求1所述的处理器,其中,所述控制器还被配置为:
控制第一处理元件,使得每个第一处理元件执行从相邻第一处理元件提供的数据和输入的第二元素的加法运算,
控制第二处理元件,使得每个第二处理元件执行从相邻第二处理元件提供的数据和输入的第二元素的加法运算,以及
控制第二处理元件,使得每个第二处理元件执行从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据的相加运算,以获取平均池化结果。
8.根据权利要求1所述的处理器,其中,所述控制器还被配置为:
控制第一处理元件,使得每个第一处理元件执行从相邻第一处理元件提供的第一元素和输入的第一元素的比较运算,
控制第二处理元件,使得每个第二处理元件执行从相邻第二处理元件提供的第二元素和输入的第二元素的比较运算,以及
控制第二处理元件,使得每个第二处理元件执行从第一处理元件中的同一列中的相邻第一处理元件提供的第一元素和预先存储的第二元素的比较运算,以获取最大池化结果。
9.根据权利要求1所述的处理器,
其中,所述多个处理元件中的每个处理元件包括:
第一寄存器;以及
第二寄存器,并且
其中,所述控制器还被配置为:
控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件的第一寄存器或第二寄存器提供的数据和存储在每个第一处理元件的第一寄存器中的第一元素进行运算,并将运算后的数据和第一元素存储在每个第一处理元件的第二寄存器中,以及
控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件的第一寄存器或第二寄存器提供的数据和存储在每个第二处理元件的第一寄存器中的第二元素进行运算,并且将运算后的数据和第二元素存储在每个第二处理元件的第二寄存器中。
10.根据权利要求9所述的处理器,其中,所述控制器还被配置为:控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件的第一寄存器提供的运算数据和存储在每个第二处理元件的第一寄存器中的运算数据进行运算,并将运算后的运算数据存储在每个第二处理元件的第二寄存器中。
11.一种控制处理器的方法,其中,所述处理器包括以矩阵形式布置的多个处理元件,并且在多个周期期间使用所述多个处理元件对目标数据执行池化,所述方法包括:
将包括在目标数据中的多个元素中的第一行中包括的每个第一元素输入到所述多个处理元件中的布置在第一行中的第一处理元件;
控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,并且将包括在所述多个元素中的第二行中的每个第二元素输入到所述多个处理元件中的布置在第二行中的第二处理元件;
控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算;以及
控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以执行池化。
12.根据权利要求11所述的方法,
其中,在向第一处理元件输入时,在第一周期中将每个第一元素输入到第一处理元件,
其中,在向第二处理元件输入时,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,并且在紧接在第一周期之后的第二周期中,将每个第二元素输入到第二处理元件,
其中,在控制第二处理元件时,在紧接在第二周期之后的第三周期中,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,并且
其中,在执行池化时,在紧接在第三周期之后的第四周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以获取池化结果。
13.根据权利要求11所述的方法,
其中,在向第一处理元件输入时,在第一周期中将每个第一元素输入到第一处理元件,
其中,在向第二处理元件输入时,在紧接在第一周期之后的多个周期期间,控制第一处理元件,使得每个第一处理元件对从相邻第一处理元件提供的数据和输入的第一元素进行运算,
其中,在作为所述多个周期之一的第二周期中,将第二元素输入到每个第二处理元件,
其中,在控制第二处理元件时,在紧接在第二周期之后的多个周期期间,控制第二处理元件,使得每个第二处理元件对从相邻第二处理元件提供的数据和输入的第二元素进行运算,并且
其中,在执行池化时,在与所述紧接在第二周期之后的多个周期具有预定间隔的第三周期中,控制第二处理元件,使得每个第二处理元件对从第一处理元件中的同一列中的相邻第一处理元件提供的运算数据和预先存储的运算数据进行运算,以执行池化,其中,紧接在第一周期之后的周期数等于紧接在第二周期之后的周期数。
14.根据权利要求13所述的方法,
其中,在控制第一处理元件时,在所述紧接在第一周期之后的多个周期中的初始周期中控制第一处理元件,使得与每个第一处理元件相邻的第一处理元件提供第一元素,并且
其中,在控制第二处理元件时,在所述紧接在第一周期之后的多个周期中的初始周期中,控制第二处理元件,使得与每个第一处理元件相邻的第二处理元件提供第二元素。
15.根据权利要求14所述的方法,
其中,在控制第一处理元件时,在所述紧接在第一周期之后的多个周期中的初始周期之后的周期期间,控制第一处理元件,使得与每个第一处理元件相邻的第一处理元件提供前一周期中的运算数据,并且
其中,在控制第二处理元件时,在所述紧接在第二周期之后的多个周期中的初始周期之后的周期期间,控制第二处理元件,使得与每个第二处理元件相邻的第二处理元件提供前一周期中的运算数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0092946 | 2019-07-31 | ||
KR1020190092946A KR20210014902A (ko) | 2019-07-31 | 2019-07-31 | 프로세서 및 그 제어 방법 |
PCT/KR2020/008981 WO2021020762A1 (en) | 2019-07-31 | 2020-07-09 | Processor and control method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114026554A true CN114026554A (zh) | 2022-02-08 |
CN114026554B CN114026554B (zh) | 2024-05-24 |
Family
ID=74230745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080047025.0A Active CN114026554B (zh) | 2019-07-31 | 2020-07-09 | 处理器及其控制方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11409694B2 (zh) |
EP (1) | EP3948686A4 (zh) |
KR (1) | KR20210014902A (zh) |
CN (1) | CN114026554B (zh) |
WO (1) | WO2021020762A1 (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
US20180357532A1 (en) * | 2017-06-09 | 2018-12-13 | International Business Machines Corporation | Convolutional neural network on analog neural network chip |
US20190079801A1 (en) * | 2017-09-14 | 2019-03-14 | Electronics And Telecommunications Research Institute | Neural network accelerator including bidirectional processing element array |
WO2019088470A1 (en) * | 2017-10-31 | 2019-05-09 | Samsung Electronics Co., Ltd. | Processor and control methods thereof |
CN110033085A (zh) * | 2019-04-15 | 2019-07-19 | 北京异构智能科技有限公司 | 张量处理器 |
US20200097442A1 (en) * | 2018-09-20 | 2020-03-26 | Ceva D.S.P. Ltd. | Efficient utilization of systolic arrays in computational processing |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6314628B2 (ja) | 2014-04-28 | 2018-04-25 | 株式会社デンソー | 演算処理装置 |
US9805303B2 (en) | 2015-05-21 | 2017-10-31 | Google Inc. | Rotating data for neural network computations |
US10192162B2 (en) | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
US10438117B1 (en) | 2015-05-21 | 2019-10-08 | Google Llc | Computing convolutions using a neural network processor |
EP3451238A4 (en) | 2016-04-29 | 2020-01-01 | Cambricon Technologies Corporation Limited | DEVICE AND METHOD FOR CARRYING OUT A POOLING OPERATION |
US10037490B2 (en) | 2016-12-13 | 2018-07-31 | Google Llc | Performing average pooling in hardware |
US10198401B2 (en) * | 2016-12-30 | 2019-02-05 | Intel Corporation | Max pooling in a matrix processing architecture |
TWI607389B (zh) | 2017-02-10 | 2017-12-01 | 耐能股份有限公司 | 卷積神經網路的池化運算裝置及方法 |
US11556343B2 (en) | 2017-09-22 | 2023-01-17 | International Business Machines Corporation | Computational method for temporal pooling and correlation |
US20190114548A1 (en) | 2017-10-17 | 2019-04-18 | Xilinx, Inc. | Static block scheduling in massively parallel software defined hardware systems |
US11521046B2 (en) | 2017-11-08 | 2022-12-06 | Samsung Electronics Co., Ltd. | Time-delayed convolutions for neural network device and method |
KR102578826B1 (ko) * | 2017-11-08 | 2023-09-15 | 삼성전자주식회사 | 뉴럴 네트워크 장치 및 그 동작 방법 |
KR102589397B1 (ko) | 2017-11-29 | 2023-10-18 | 한국전자통신연구원 | 시스톨릭 어레이를 이용한 cnn 처리 장치 및 방법 |
US20190205738A1 (en) * | 2018-01-04 | 2019-07-04 | Tesla, Inc. | Systems and methods for hardware-based pooling |
US10678508B2 (en) * | 2018-03-23 | 2020-06-09 | Amazon Technologies, Inc. | Accelerated quantized multiply-and-add operations |
-
2019
- 2019-07-31 KR KR1020190092946A patent/KR20210014902A/ko active Search and Examination
-
2020
- 2020-07-09 CN CN202080047025.0A patent/CN114026554B/zh active Active
- 2020-07-09 WO PCT/KR2020/008981 patent/WO2021020762A1/en unknown
- 2020-07-09 EP EP20846482.6A patent/EP3948686A4/en active Pending
- 2020-07-23 US US16/936,965 patent/US11409694B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180357532A1 (en) * | 2017-06-09 | 2018-12-13 | International Business Machines Corporation | Convolutional neural network on analog neural network chip |
US20190079801A1 (en) * | 2017-09-14 | 2019-03-14 | Electronics And Telecommunications Research Institute | Neural network accelerator including bidirectional processing element array |
WO2019088470A1 (en) * | 2017-10-31 | 2019-05-09 | Samsung Electronics Co., Ltd. | Processor and control methods thereof |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
US20200097442A1 (en) * | 2018-09-20 | 2020-03-26 | Ceva D.S.P. Ltd. | Efficient utilization of systolic arrays in computational processing |
CN110033085A (zh) * | 2019-04-15 | 2019-07-19 | 北京异构智能科技有限公司 | 张量处理器 |
Also Published As
Publication number | Publication date |
---|---|
US11409694B2 (en) | 2022-08-09 |
WO2021020762A1 (en) | 2021-02-04 |
US20210034568A1 (en) | 2021-02-04 |
KR20210014902A (ko) | 2021-02-10 |
EP3948686A4 (en) | 2022-05-18 |
EP3948686A1 (en) | 2022-02-09 |
CN114026554B (zh) | 2024-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341547B (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
CN107329734B (zh) | 一种用于执行卷积神经网络正向运算的装置和方法 | |
CN111860811B (zh) | 一种用于执行人工神经网络全连接层正向运算的装置和方法 | |
US9886377B2 (en) | Pipelined convolutional operations for processing clusters | |
CN107797962B (zh) | 基于神经网络的计算阵列 | |
CN112292667B (zh) | 选择处理器的方法和装置 | |
EP3528181B1 (en) | Processing method of neural network and apparatus using the processing method | |
JP2018116469A (ja) | 演算システムおよびニューラルネットワークの演算方法 | |
KR102442055B1 (ko) | 전자 장치 및 그 제어 방법 | |
CN114065926A (zh) | 用于深度学习的方法和设备 | |
JP2019008421A (ja) | 処理方法、プログラム、情報処理装置、および画像処理装置 | |
US20190114542A1 (en) | Electronic apparatus and control method thereof | |
CN111095304A (zh) | 电子设备及其控制方法 | |
US11966344B2 (en) | Accelerator and electronic device including the same | |
CN114026554B (zh) | 处理器及其控制方法 | |
EP4009240A1 (en) | Method and apparatus for performing deep learning operations | |
US20210263870A1 (en) | Accelerator, operation method of the accelerator, and an apparatus including the accelerator | |
US20220044101A1 (en) | Collaborative sensor data processing by deep learning accelerators with integrated random access memory | |
CN113469333B (zh) | 执行神经网络模型的人工智能处理器、方法及相关产品 | |
US11544213B2 (en) | Neural processor | |
CN111222632B (zh) | 计算装置、计算方法及相关产品 | |
CN116090519A (zh) | 卷积算子的编译方法及相关产品 | |
CN117252241A (zh) | 执行卷积运算的计算装置、方法及相关产品 | |
CN116368496A (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 | ||
GR01 | Patent grant |