CN112528219A - 存储器装置及其运算方法、计算设备 - Google Patents
存储器装置及其运算方法、计算设备 Download PDFInfo
- Publication number
- CN112528219A CN112528219A CN202010650294.8A CN202010650294A CN112528219A CN 112528219 A CN112528219 A CN 112528219A CN 202010650294 A CN202010650294 A CN 202010650294A CN 112528219 A CN112528219 A CN 112528219A
- Authority
- CN
- China
- Prior art keywords
- data
- transformed
- filter
- convolution operation
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000009466 transformation Effects 0.000 claims abstract description 91
- 230000015654 memory Effects 0.000 claims abstract description 90
- 230000006870 function Effects 0.000 claims abstract description 63
- 230000004044 response Effects 0.000 claims abstract description 32
- 238000004422 calculation algorithm Methods 0.000 claims description 121
- 239000011159 matrix material Substances 0.000 claims description 113
- 238000006243 chemical reaction Methods 0.000 claims description 82
- 238000013501 data transformation Methods 0.000 claims description 73
- 230000001131 transforming effect Effects 0.000 claims description 24
- 238000012886 linear function Methods 0.000 claims description 7
- 230000001537 neural effect Effects 0.000 claims description 5
- 238000013138 pruning Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 30
- 238000007781 pre-processing Methods 0.000 description 25
- 238000012805 post-processing Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 14
- 238000007792 addition Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 201000006618 congenital myasthenic syndrome 6 Diseases 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002171 field ion microscopy Methods 0.000 description 1
- 238000012059 flow imaging microscopy Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H17/02—Frequency selective networks
- H03H17/0211—Frequency selective networks using specific transformation algorithms, e.g. WALSH functions, Fermat transforms, Mersenne transforms, polynomial transforms, Hilbert transforms
- H03H17/0213—Frequency domain filters using Fourier transforms
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
Abstract
公开存储器装置及其运算方法、计算设备。所述存储器装置包括:存储器,被配置为存储用于卷积运算的输入数据和滤波器数据;以及功能处理器,被配置为:响应于输入数据和滤波器数据之中的至少一部分数据的读取命令,在与读取命令对应的时钟周期期间基于卷积运算的参数变换所述至少一部分数据,并将相应的变换结果输出为变换后的数据。
Description
本申请要求于2019年9月19日在韩国知识产权局提交的第10-2019-0115443号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及存储器装置和方法。
背景技术
通常,用于执行卷积运算或矩阵运算的系统可将存储在存储器中的数据移动到高速运算处理器(例如,中央处理器(CPU)、图形处理器(GPU)、数字信号处理器(DSP)或神经处理器(NPU)),并且可将得到的数据存储在存储器中。
发明内容
提供本发明内容以简化的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求保护的主题的关键特征或必要特征,也不意在用于帮助确定要求保护的主题的范围。
在一个总体方面,一种存储器装置包括:存储器,被配置为存储用于卷积运算的输入数据和滤波器数据;以及功能处理器,被配置为:响应于输入数据和滤波器数据之中的至少一部分数据的读取命令,在与读取命令对应的时钟周期期间基于卷积运算的参数变换所述至少一部分数据,并将相应的变换结果输出为变换后的数据。
功能处理器可包括输入数据变换电路,输入数据变换电路被配置为:变换输入数据的至少一部分并将相应的变换结果输出为变换后的输入数据,以及可基于卷积运算的参数和应用于变换输入数据的所述至少一部分以减少卷积运算的计算量的算法的类型来构造输入数据变换电路。
可基于卷积运算的参数和所述算法的类型二者来确定输入变换矩阵,以及输入数据变换电路可被构造为对应于输入变换矩阵。
功能处理器可包括滤波器数据变换电路,滤波器数据变换电路被配置为:变换滤波器数据的至少一部分并将相应的变换结果输出为变换后的滤波器数据,以及可基于卷积运算的参数和应用于变换滤波器数据的所述至少一部分以减少卷积运算的计算量的算法的类型来构造滤波器数据变换电路。
可基于卷积运算的参数和所述算法的类型二者来确定滤波器变换矩阵,以及滤波器数据变换电路可被构造为对应于滤波器变换矩阵。
存储在存储器中的滤波器数据可包括基于卷积运算的参数变换后的滤波器数据,以及当滤波器数据是基于卷积运算的参数变换后的滤波器数据时,功能处理器可被配置为输出变换后的滤波器数据,而不进一步对变换后的滤波器数据进行变换。
功能处理器可包括乘法器累加器(MAC),MAC被配置为执行变换后的输入数据与变换后的滤波器数据之间的运算。
功能处理器可被配置为:响应于通过变换后的输入数据与变换后的滤波器数据之间的运算输出的中间输出数据的至少一部分的写入命令,在与写入命令对应的时钟周期期间基于卷积运算的参数变换中间输出数据的所述至少一部分,并将相应的变换结果输出为变换后的中间输出数据。
中间输出数据可包括变换后的输入数据与变换后的滤波器数据之间的逐元素乘法的输出数据。
功能处理器可包括输出数据变换电路,输出数据变换电路被配置为变换中间输出数据的所述至少一部分,并将相应的变换结果输出为变换后的中间输出数据,以及可基于卷积运算的参数和变换中间输出数据以减少卷积运算的计算量的算法的类型来构造输出数据变换电路。
可基于卷积运算的参数和所述算法的类型来确定输出变换矩阵,以及输出数据变换电路可被构造为对应于输出变换矩阵。
可基于输出数据的大小、滤波器数据的大小、输入数据的大小、步长间隔和填充大小中的任何一个或者任何两个或更多个的任何组合,来确定卷积运算的参数。
功能处理器可包括加法器和移位器中的任何一个或二者。
变换输入数据以减少卷积运算的计算量的算法可以是Winograd算法。
变换输入数据以减少卷积运算的计算量的算法可以是Strassen算法。
功能处理器可包括修剪电路,修剪电路被配置为响应于变换后的输入数据的大小小于或等于阈值而输出预定值。
功能处理器可被配置为计算用于确定是否激活变换后的滤波器数据的非线性函数的值。
功能处理器可包括被配置为使用变换后的输入数据和变换后的滤波器数据执行运算的运算处理器。
运算处理器可包括乘法器,乘法器被配置为使用变换后的输入数据与变换后的滤波器数据执行逐元素乘法。
功能处理器可包括以下项中的两个或更多个:输入数据变换电路,被配置为对输入数据的至少一部分进行变换和输出;滤波器数据变换电路,被配置为对滤波器数据的至少一部分进行变换和输出;乘法器,被配置为使用变换后的输入数据与变换后的滤波器数据执行乘法;以及输出数据变换电路,被配置为对通过执行乘法而输出的中间输出数据的至少一部分进行变换和输出。
在另一总体方面,一种计算设备包括:存储器,被配置为存储用于卷积运算的输入数据和滤波器数据;功能处理器,被配置为:响应于输入数据和滤波器数据之中的至少一部分数据的读取命令,在与读取命令对应的时钟周期期间基于卷积运算的参数变换所述至少一部分数据,并将相应的变换结果输出为变换后的数据;以及直接存储器存取(DMA)处理器,被配置为:基于存储器与功能处理器之间的连接关系,将所述至少一部分数据对齐并存储在存储器中。
功能处理器可包括输入数据变换电路,输入数据变换电路被配置为:变换输入数据的所述至少一部分并将相应的变换结果输出为变换后的输入数据,以及可基于卷积运算的参数和应用于变换输入数据的所述至少一部分以减少卷积运算的计算量的算法的类型来构造输入数据变换电路。
可基于卷积运算的参数和所述算法的类型的组合来确定输入变换矩阵,以及输入数据变换电路可被构造为对应于输入变换矩阵。
功能处理器包括滤波器数据变换电路,滤波器数据变换电路被配置为:变换滤波器数据的所述至少一部分并将相应的变换结果输出为变换后的滤波器数据,以及可基于卷积运算的参数和应用于变换滤波器数据的所述至少一部分以减少卷积运算的计算量的算法的类型来构造滤波器数据变换电路。
所述计算设备还可包括:运算处理器,被配置为使用变换后的输入数据和变换后的滤波器数据执行运算。
运算处理器可包括中央处理器(CPU)、图形处理器(GPU)、数字信号处理器(DSP)、神经处理器(NPU)和现场可编程门阵列(FPGA)中的任何一个或者任何两个或更多个的任何组合。
功能处理器可被配置为:响应于通过使用变换后的输入数据与变换后的滤波器数据的运算输出的中间输出数据的至少一部分的写入命令,在与写入命令对应的时钟周期期间基于卷积运算的参数变换中间输出数据的所述至少一部分,并将相应的变换结果输出为变换后的中间输出数据。
功能处理器可包括输出数据变换电路,输出数据变换电路被配置为变换中间输出数据的所述至少一部分,并将相应的变换结果输出为变换后的中间输出数据,以及可基于卷积运算的参数和变换中间输出数据以减少卷积运算的计算量的算法的类型来构造输出数据变换电路。
在另一总体方面,一种处理器实现的存储器装置的运算方法包括:响应于读取命令,从存储器接收输入数据和滤波器数据之中的至少一部分数据;以及在与读取命令对应的时钟周期期间基于卷积运算的参数变换所述至少一部分数据,并将相应的变换结果输出为变换后的数据。
输出的步骤可包括:基于卷积运算的参数和变换输入数据的至少一部分以减少卷积运算的计算量的算法的类型的组合来确定输入变换矩阵;以及基于输入变换矩阵变换输入数据的所述至少一部分,并将相应的变换结果输出为变换后的输入数据。
输出的步骤可包括:基于卷积运算的参数和变换滤波器数据的至少一部分以减少卷积运算的计算量的算法的类型的组合来确定滤波器变换矩阵;以及基于滤波器变换矩阵变换滤波器数据的所述至少一部分,并将相应的变换结果输出为变换后的滤波器数据。
所述方法还可包括:响应于通过变换后的输入数据与变换后的滤波器数据之间的运算输出的中间输出数据的至少一部分的写入命令,在与写入命令对应的时钟周期期间基于卷积运算的参数变换中间输出数据的所述至少一部分,并将变换后的中间输出数据的所述至少一部分存储在存储器中。
存储在存储器中的步骤可包括:基于卷积运算的参数和变换中间输出数据的所述至少一部分以减少卷积运算的计算量的算法的类型二者来确定输出变换矩阵;以及基于输出变换矩阵变换中间输出数据的所述至少一部分,并将变换后的中间输出数据的所述至少一部分存储在存储器中。
在另一总体方面,一种非暂时性计算机可读存储介质存储指令,当所述指令由一个或多个处理器执行时,使得所述一个或多个处理器执行上述方法。
在另一总体方面,一种计算设备包括:一个或多个处理器,被配置为:响应于存储在包括存储器中功能(FIM)的存储器中的输入数据和滤波器数据之中的至少一部分数据的读取命令,在与读取命令对应的时钟周期期间基于卷积运算的参数变换所述至少一部分数据,并将相应的变换结果输出为变换后的数据。
存储器可被配置为存储输入数据和滤波器数据。
所述计算设备还可包括:直接存储器存取(DMA)处理器,被配置为:基于存储器与所述一个或多个处理器之间的连接关系,将所述至少一部分数据对齐并存储在存储器中。
所述一个或多个处理器可包括乘法器累加器(MAC),MAC被配置为执行变换后的输入数据与变换后的滤波器数据之间的运算。
从下面的具体实施方式、附图以及权利要求,其他特征和方面将是清楚的。
附图说明
图1示出用于执行卷积运算或矩阵运算的示例系统。
图2示出根据一维(1D)卷积运算的示例Winograd算法。
图3示出根据二维(2D)卷积运算的示例Winograd算法。
图4是示出存储器装置的示例运算的流程图。
图5示出包括用于根据Winograd算法执行1D卷积运算的预处理的输入数据变换电路的示例存储器装置。
图6示出包括用于根据Winograd算法执行1D卷积运算的预处理的滤波器数据变换电路的示例存储器装置。
图7示出用于根据Winograd算法执行1D卷积运算的示例系统。
图8示出包括用于根据Winograd算法执行1D卷积运算的后处理的输出数据变换电路的示例存储器装置。
图9示出对齐和存储数据的示例方法。
图10示出根据Winograd算法变换用于2D卷积运算的预处理的滤波器数据的示例方法。
图11示出用于根据Winograd算法执行2D卷积运算的预处理的示例滤波器数据变换电路。
图12示出用于根据Winograd算法的2D卷积运算的预处理的输入数据的示例变换。
图13示出用于根据Winograd算法执行2D卷积运算的预处理的示例输入数据变换电路。
图14示出用于根据Winograd算法执行2D卷积运算的示例系统。
图15示出减少由于除法导致的信息丢失的示例方法。
图16示出根据Strassen算法的存储器装置的示例运算方法。
图17示出包括乘法器累加器(MAC)单元的存储器装置的示例运算方法。
贯穿附图和具体实施方式,相同的参考标号表示相同的元件。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对尺寸、比例和描绘可被夸大。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不限于在此阐述的那些顺序,而是除了必须以特定的顺序发生的操作之外,可如在理解本申请的公开之后将是清楚的那样被改变。此外,为了更加清楚和简明,本领域已知的特征的描述可被省略。
在此描述的特征可以以不同的形式来实现,而不应被解释为限于在此描述的示例。相反,已提供在此描述的示例,以仅示出实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式,所述许多可行方式在理解本申请的公开之后将是清楚的。
如在此使用的,术语“和/或”包括相关联的所列项中的任何一个以及任何两个或更多个的任何组合。
尽管在此可使用诸如“第一”、“第二”和“第三”的术语来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不应被这些术语所限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分进行区分。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
贯穿说明书,当元件(诸如,层、区域或基底)被描述为“在”另一元件上、“连接到”或“结合到”另一元件时,该元件可直接“在”另一元件上、直接“连接到”或“结合到”另一元件,或者可存在介于其间的一个或多个其他元件。相反,当元件被描述为“直接在”另一元件上、“直接连接到”或“直接结合到”另一元件时,可不存在介于其间的其他元件。
在此使用的术语仅用于描述各种示例,并不将用于限制公开。除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。术语“包含”、“包括”和“具有”说明存在叙述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与由本公开所属领域的普通技术人员在理解本公开之后通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文和本公开中的含义一致的含义,并且不应被理想化或过于形式化地解释。
此外,在示例的描述中,当认为公知的相关结构或功能的详细描述将引起对本公开的模糊解释时,将省略这样的详细描述。
示例可被配置为各种类型的产品(例如,个人计算机(PC)、膝上型计算机、平板计算机、智能电话、电视(TV)、智能电子装置、智能车辆、信息亭和可穿戴装置),或者配置在各种类型的产品(例如,个人计算机(PC)、膝上型计算机、平板计算机、智能电话、电视(TV)、智能电子装置、智能车辆、信息亭和可穿戴装置)中,以各种类型的产品(例如,个人计算机(PC)、膝上型计算机、平板计算机、智能电话、电视(TV)、智能电子装置、智能车辆、信息亭和可穿戴装置)来配置。在下文中,参照附图来描述示例。附图中的参考标号始终相同的元件。
如在理解本申请的公开之后将是清楚的那样,在此描述的示例的特征可以以各种方式组合。此外,尽管在此描述的示例具有各种配置,但是如在理解本申请的公开之后将是清楚的那样,其他配置是可行的。还注意,关于示例或实施例的术语“可”的使用(例如,关于示例或实施例可包括或实现什么)表示:存在包括或实现这样的特征的至少一个示例或实施例,而所有示例和实施例不限于此。
在替代系统中,存储数据的典型存储器与处理运算的运算处理器彼此分开。为了处理存储在存储器中的数据,数据被移动到运算处理器,并且随后在运算处理器被处理。为了处理复杂的运算,CPU使用许多指令并且需要相对大量的处理时间。如果使用特定加速器(例如,图形处理器(GPU)、神经处理器(NPU)和数字信号处理器(DSP))作为运算处理器,并且在这样的示例中存在在相应的典型装置不可处理的运算,则可将数据移动到CPU并在CPU处理。因此,处理速度会显著降低。此外,在需要预处理和后处理(例如,加法和减法)的典型系统中,运算处理器可能在有限数量的时钟周期或仅仅一个时钟周期中不能处理相应的预处理或后处理。
图1示出用于执行卷积运算或矩阵运算的示例系统。
参照图1的示例,根据一个或多个实施例,用于执行卷积运算或矩阵运算的系统(也称为“根据示例的系统”或简称为“系统”)可包括存储器装置110和高速运算处理器140。根据非限制性示例的系统可以是例如被配置为执行卷积运算或矩阵运算的计算设备。
卷积可包括将单个函数与从另一函数反转的值相乘以及在区间上对相乘结果进行积分。在示例机器学习示例中,这里,卷积运算可表示选择与给定目的对应的滤波器并通过使用所选择的滤波器扫描输入数据的所有区域来提取与输入数据对应的特定特征的运算。例如,系统可通过执行滤波器数据相对于输入数据的卷积运算来获取输出数据,并且每条数据可以以矩阵形式来定义。当数据以这样的矩阵形式来定义时,卷积运算可作为矩阵运算来执行。
矩阵运算可包括在多个矩阵之间执行的任何可能的算术运算。这样的矩阵运算的非限制性示例包括矩阵加法和减法、标量矩阵乘法、矩阵乘法和逐元素的矩阵乘法。此外,矩阵运算可包括可以以矩阵形式表示的运算,例如,线性方程。
卷积运算可被表征为矩阵加法和减法以及矩阵乘法的组合。在这样的示例中,用于矩阵乘法的时间和功率的量可明显大于用于矩阵加法和减法的时间和功率的量。从系统的角度来看,减少矩阵乘法运算的数量可以是提高卷积运算处理速度并减少在执行这样的卷积运算时发生的功耗的方式。
此外,用于执行卷积运算的典型系统将存储在存储器中的原始数据移动到高速运算处理器(诸如,中央处理器(CPU)、图形处理器(GPU)、数字信号处理器(DSP)、神经处理器(NPU)、现场可编程门阵列(FPGA)),这样的高速运算处理器处理数据,随后将处理的数据存储在存储器中。在典型系统中,存储数据的存储器和处理运算的运算处理器可彼此分开。为了处理存储在存储器中的数据,可将数据移动到运算处理器并在运算处理器进行处理。因此,使用相对大量的时间来处理数据。
根据一个或多个实施例,根据示例的系统可使用对数据进行变换并执行卷积运算以减少用于卷积运算的计算量的算法。例如,这样的系统可例如通过使用Winograd算法减少卷积运算所需的乘法数量来降低卷积运算的乘法复杂度。可选地,这样的系统可使用Strassen算法来降低卷积运算的乘法复杂度。在使用这样的算法(诸如,Winograd算法或Strassen算法)的示例中,可使用预处理或后处理(诸如,数据转换)。相反,系统可使用运算处理器执行相应的预处理或后处理。
根据一个或多个实施例,根据示例的系统可使用嵌入有功能模块130的存储器装置110,并且存储器装置110可使用功能模块130执行算法的预处理或后处理。作为非限制性示例,功能模块130可对应于功能处理器。以这种方式,可提高卷积运算或矩阵运算的处理速度,并且同时可提高高速运算处理器140的功率效率。更详细地,在高速运算处理器140处理数据之前,例如以电路的形式包括在存储器装置110中的功能模块130可执行算法的预处理或后处理。作为上面讨论的非限制性示例,可将Winograd算法或Strassen算法可用于处理。因此,通过如上进一步详细讨论那样使用功能模块130,由于一些或全部卷积运算和/或矩阵运算可通过存储器装置110来执行,或者一些或全部卷积运算和/或矩阵运算可与前述示例高速运算处理器中的一个或多个分离,因此可在相同的时间量期间处理更大的数据量。
存储器装置110可包括能够执行数据存储和数据处理的存储器中功能(FIM)。这样的FIM可包括硬件实现。功能模块130可在与读取命令或写入命令对应的时钟周期中执行算法的预处理或后处理。因为功能模块130能够在与读取命令或写入命令对应的时钟周期中执行算法的预处理或后处理,所以根据示例的系统可减少用于前述的典型系统方法的预处理或后处理的时间量。
在一个示例中,与读取命令或写入命令对应的时钟周期可对应于用于存储器装置110的操作的单个时钟周期。在这个示例中,除乘法器之外的电路可包括在功能模块130中,以在单个周期中完成功能模块130的处理,这在下面进一步详细描述。
在另一示例中,与读取命令或写入命令对应的时钟周期可对应于用于存储器装置110的操作的多个时钟周期。在这个示例中,功能模块130可包括乘法器。可将流水线方案应用于存储器装置110以增强延迟的成功管理,这在下面进一步详细描述。
存储器装置110可包括存储器单元120和功能模块130。这里,存储器单元120也可被称为存储器模块。存储器单元120可存储输入数据、滤波器数据和输出数据。输入数据可表示对其执行卷积运算的数据,并且可以是例如以二维(2D)函数的形式表示的图像的像素数据。滤波器数据可表示与用于检测输入数据的特征的滤波器有关的数据。例如,滤波器数据可以是用于检测图像的特征的公共参数。因此,作为表示滤波器的相关术语的非限制性示例,滤波器可替代地被称为内核、掩码、窗口等。通常,滤波器可以以方阵(诸如,具有(4,4)的大小或(3,3)的大小的矩阵)来定义,但是这些仅是非限制性示例,并且其他大小的方阵可在其他示例中使用,且可存在多个滤波器。系统可通过以指定间隔使用滤波器对输入数据执行卷积运算来生成特征图。在这样的示例中,用于使滤波器在输入数据上移动或滑动(也称为使滤波器巡回)的指定间隔也可称为步长。
作为非限制性示例,功能模块130可包括变换电路,变换电路被配置为处理由Strassen算法、Winograd算法或其修改算法使用的变换方程。变换电路可包括输入数据变换电路131、滤波器数据变换电路133和输出数据变换电路135。响应于输入数据的至少一部分的读取命令,输入数据变换电路131可在与读取命令对应的时钟周期中变换输入数据的至少一部分并进行输出,以用于算法的预处理。由输入数据变换电路131变换的数据也可称为变换后的输入数据。
响应于滤波器数据的至少一部分的读取命令的执行,滤波器数据变换电路133可在与读取命令对应的时钟周期中变换滤波器数据的至少一部分并进行输出,以用于算法的预处理。由滤波器数据变换电路133变换的数据也可称为变换后的滤波器数据。
高速运算处理器140可接收变换后的输入数据和变换后的滤波器数据,并且可根据算法来执行剩余的运算。结果,高速运算处理器140可生成中间输出数据。高速运算处理器140可如上进一步详细讨论那样包括CPU、GPU、DSP、NPU和FPGA中的至少一个,但是这些仅仅是非限制性示例。高速运算处理器140也可嵌入在具有输入数据变换电路和滤波器数据变换电路中的至少一个的存储器中。例如,高速运算处理器140可嵌入在存储器装置110中或者存储器装置110的功能模块130中。
响应于中间输出数据中的至少一个的写入命令,输出数据变换电路135可通过在与写入命令对应的时钟周期中变换中间输出数据的至少一部分来生成输出数据,以用于算法的后处理,并且可将生成的输出数据存储在存储器单元120中。输出数据可以是对输入数据和滤波器数据执行的卷积运算的最终结果数据。
在下文中,参照图2和图3的示例进一步详细描述Winograd算法,参照图4的示例描述存储器装置的运算方法,参照图5至图8的示例描述在一维(1D)卷积运算中根据Winograd算法的存储器装置的运算方法,参照图9的示例描述包括被配置为对齐和存储数据的直接存储器存取(DMA)模块的计算设备,参照图10至图14的示例描述在二维(2D)卷积运算中根据Winograd算法的存储器装置的运算方法,参照图15的示例描述减少由于除法导致的信息损失的方法,参照图16的示例描述根据Strassen算法的存储器装置的操作方法。
图2示出根据1D卷积运算的Winograd算法的示例。
多种方法可用于执行卷积运算。如果将傅立叶逆变换(IFT)函数应用于将对其执行卷积运算的两个傅立叶变换函数相乘的结果,则可获取与原始函数卷积的结果相同的结果,如以下等式1所示:
等式1
参照等式1,如果在频域中执行运算而不在时域中执行卷积,则乘法的数量可减少,这可导致实现全部运算的处理速度的提高以及全部运算的功率效率的提高。
参照图2的示例,典型的1D卷积运算方法可对4条输入数据k0、k1、k2和k3以及3条滤波器数据w0、w1和w2执行卷积运算,并且可输出2条输出数据r0和r1,如以下等式2所示:
等式2
r0=(k0·w0)+(k1·w1)+(k2·w2)
r1=(k1·w0)+(k2·w1)+(k3·w2)
参照等式2,替代的1D卷积运算方法可使用6次乘法。
根据如等式3所示的Winograd算法,可使用m0至m3的组合来修改和表示输出数据,其中,下面呈现了等式3:
等式3
F(m,n)是指示使用基于卷积运算的有限冲激响应(FIR)滤波器的具有m条输出数据和n条滤波器数据的处理的符号。这里,m0至m3可通过以下等式4表示:
等式4
根据Winograd算法的1D卷积运算可以使用4次乘法。也就是说,与用于替代方法的6次乘法相比,进一步减少了乘法的数量。
通常,根据Winograd算法执行1D卷积运算的方法可包括四个阶段:将输入数据k0、k1、k2和k3变换为k0-k2、k1+k2、k1-k3和k2-k1的第一阶段;将滤波器数据w0、w1和w2变换为(w0,w0+w1+w2)/2和(w2,w0-w1+w2)/2的第二阶段;通过对变换后的输入数据和变换后的滤波器数据执行逐元素乘法来计算m0至m3的第三阶段;以及使用m0至m3输出输出数据r0和r1的第四阶段。这四个阶段可被布置为如以下等式5所示:
等式5
S=AT[[(GwT)⊙(CTkT)]
在等式5中,S=(r0,r1),w=(w0,w1,w2),并且k=(k0,k1,k2,k3)。
将输入数据k0、k1、k2和k3变换为k0-k2、k1+k2、k1-k3和k2-k1的第一阶段可对应于执行等式5的(CTkT)。在这样的示例中,C表示用于变换输入数据的输入变换矩阵,并且可通过以下等式6表示:
等式6
将滤波器数据w0、w1和w2变换为(w0,w0+w1+w2)/2和(w2,w0-w1+w2)/2的第二阶段可对应于执行等式5的(GwT)。在这样的示例中,G表示用于变换滤波器数据的滤波器变换矩阵,并且可通过以下等式7表示:
等式7
通过对变换后的输入数据和变换后的滤波器数据执行逐元素乘法来计算m0至m3的第三阶段可对应于通过执行根据等式5的(GwT)⊙(CTkT)的计算来输出中间输出数据,并且可对应于根据等式1在频域中执行乘法。执行逐元素乘法可表示执行将存在于两个矩阵中的相同位置处的元素相乘的运算。
使用m0至m3来输出输出数据r0和r1的第四阶段可对应于执行等式5的AT与(GwT)⊙(CTkT)之间的乘法,并且可对应于将等式1中的频域结果变换到时域。在这样的示例中,A表示用于变换中间输出数据的n个输出变换矩阵,并且可通过以下等式8表示:
等式8
将输入数据k0、k1、k2和k3变换为k0-k2、k1+k2、k1-k3和k2-k1的第一阶段以及将滤波器数据w0、w1和w2变换为(w0,w0+w1+w2)/2和(w2,w0-w1+w2)/2的第二阶段可对应于上述预处理处理,使用m0至m3来输出输出数据r0和r1的第四阶段可对应于上述后处理处理。根据这样的示例的系统可在存储器装置110中执行第一阶段和第二阶段,可在高速运算处理器140中执行第三阶段,并且可再次在存储器装置110中执行第四阶段。
图3示出根据二维(2D)卷积运算的Winograd算法的示例。
参照图3的示例的指示符310和320,典型的2D卷积运算可通过将构成滤波器的3×3矩阵应用于输入数据的4×4矩阵来执行。在这个例子中,可使用36次乘法。
可通过将根据Winograd算法的1D卷积运算迭代两次来执行根据Winograd算法的2D卷积运算,这可通过以下等式9表示:
等式9
S=AT[((GwGT)⊙M)⊙(CTkC)]A
例如,参照指示符330,在将3×3滤波器应用于4×4输入数据的情况下,根据Winograd算法的2D卷积运算可通过等式10表示,并且可仅使用16次乘法,其中,以下提供等式10:
等式10
S=AT[(GwGT)⊙(CTkC)]A
在这样的示例中,输入变换矩阵、滤波器变换矩阵和输出变换矩阵可以分别通过以下提供的等式11、等式12和等式13表示:
等式11
等式12
等式13
在使用具有r×s大小的滤波器处理具有m×n大小的输入数据的情况下,典型的2D卷积运算可以使用m×n×r×s次乘法,并且根据Winograd算法的2D卷积运算可使用(m+r-1)×(n+s-1)次乘法。
在根据Winograd算法执行卷积运算的示例中,矩阵加法的数量可增加,并且矩阵乘法的数量可相应地减少。通过引起这种折衷,可提高整体运算处理速度并降低功耗,这是因为矩阵加法的增加的影响可被矩阵乘法的相应减少盖过。
图4是示出存储器装置的运算方法的示例的流程图。
参照图4的示例,操作410和操作420可由图1的示例的存储器装置110执行。作为非限制性示例,图4的示例的运算方法可应用于包括存储器(例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、参数随机存取存储器(PRAM)、磁性随机存取存储器(MRAM)和闪存)的任何系统,而与存储器的类型无关。
在操作410中,功能模块130可响应于读取命令从存储器单元120接收输入数据和滤波器数据之中的至少一部分数据。
在操作420中,功能模块130可在与读取命令对应的时钟周期中基于卷积运算的参数,来对至少一部分数据进行变换和输出。功能模块130可基于输入变换矩阵来对输入数据的至少一部分进行变换和输出。例如,功能模块130可包括被设计为与输入变换矩阵对应的输入数据变换电路131,并且输入数据变换电路131可对输入数据的至少一部分进行变换,并可输出变换后的输入数据。
可基于卷积运算的参数和对输入数据的至少一部分进行变换的算法的类型的组合,来确定输入变换矩阵。作为非限制性示例,可基于输出数据的大小、滤波器数据的大小、输入数据的大小、步长间隔和填充大小中的任何一个或者任何两个或更多个的任何组合来确定卷积运算的参数。该算法可表示对数据进行变换以降低卷积运算的乘法复杂度的算法。作为非限制性示例,可应用前述的Winograd算法、Strassen算法或其修改算法。例如,响应于使用Winograd算法对F(2,3)执行卷积运算,可通过等式6表示输入变换矩阵。此外,响应于对F(2×2,3×3)执行卷积运算,可通过等式11表示输入变换矩阵。
功能模块130可基于滤波器变换矩阵对滤波器数据的至少一部分进行变换和输出。例如,功能模块130可包括被设计为与滤波器变换矩阵对应的滤波器数据变换电路133。滤波器数据变换电路133可对滤波器数据的至少一部分进行变换,并且可输出变换后的滤波器数据。可基于卷积运算的参数和对滤波器数据的至少一部分进行变换的算法的类型的组合,来确定滤波器变换矩阵。例如,响应于使用Winograd算法对F(2,3)执行卷积运算,可通过等式7表示滤波器变换矩阵。此外,响应于对F(2×2,3×3)执行卷积运算,可通过等式12表示滤波器变换矩阵。
使用复用器,存储器装置110可采用或可不采用滤波器数据变换电路133。例如,由于滤波器数据不经常变化,所以基于滤波器变换矩阵预先计算的变换后的滤波器数据可存储在存储器单元120中,并且存储器装置110可使用复用器直接加载和使用存储的滤波器数据。
响应于通过变换后的输入数据与变换后的滤波器数据之间的运算输出的中间输出数据的至少一部分的写入命令,功能模块130可在与写入命令对应的时钟周期中基于卷积运算的参数来对中间输出数据的至少一部分进行变换,并且可将变换后的中间输出数据存储在存储器单元120中。
例如,功能模块130可包括被设计为与输出变换矩阵对应的输出数据变换电路135。输出数据变换电路135可对中间输出数据的至少一部分进行变换,并且可输出输出数据。可基于卷积运算的参数和对中间输出数据的至少一部分进行变换的算法的类型的组合,来确定输出变换矩阵。例如,响应于使用Winograd算法对F(2,3)执行卷积运算,可通过等式8表示输出变换矩阵。此外,响应于对F(2×2,3×3)执行卷积运算,可通过等式13表示输出变换矩阵。
功能模块130可在与读取命令或写入命令对应的时钟周期中执行算法的预处理或后处理。算法的预处理可包括生成变换后的输入数据和/或变换后的滤波器数据,并且算法的后处理可包括将中间输出数据变换为输出数据。因为功能模块130能够在与读取命令或写入命令对应的时钟周期中执行算法的预处理或后处理,所以与典型系统相比,根据示例的系统可减少每个周期用于算法的预处理和后处理的时间量。
如果单个总线由输入数据和输出数据共享,则存储器装置110可基于识别输入命令或输出命令的信号来确定是使用输入数据变换电路131还是使用输出数据变换电路135。例如,如果总线基于该信号被用作输入端口,则存储器装置110可使用输入数据变换电路131。相反,如果总线基于该信号被用作输出端口,则存储器装置110可替代地使用输出数据变换电路135。
以上参照图1至图4进一步详细地描述了能够提高卷积运算的运算速度的存储器装置110的运算方法。在下文中,参照图5至图8的示例进一步详细描述用于提高1D卷积运算的运算速度的功能模块的整体配置,并且参照图10至图15的示例进一步详细描述用于提高2D卷积运算的运算速度的功能模块的整体配置。
图5示出包括用于根据Winograd算法执行1D卷积运算的预处理的输入数据变换电路的存储器装置的示例。
参照图5的示例,存储器装置可包括存储器单元510和功能模块。以上参照图1至图4的示例进行的描述可适用于图5的示例,并且为了简洁,省略重复的描述。
根据示例的系统可使用Winograd算法对F(2,3)执行卷积运算。存储器单元510可基于作为包含4条数据的单元的4数据单元来存储输入数据。
功能模块可包括输入数据变换电路520。输入数据变换电路520可将输入数据k0、k1、k2和k3变换为k0-k2、k1+k2、k1-k3和k2-k1。输入数据变换电路520可被设计为对应于等式6的输入变换矩阵。例如,输入数据变换电路520可被配置为与输入变换矩阵对应的多个加法器的组合。在使用2的补码或1的补码表示法表示负数的情况下,可将加法器用作加法器-减法器元件。
因为可仅使用具有相对简单的配置和较快速度的多个加法器的组合来配置输入数据变换电路520,所以输入数据变换电路520可具有足够的速度在与读取命令对应的时钟周期中对输入数据进行变换和输出。
然而,图5的示例的输入数据变换电路520仅作为非限制性示例被提供。对应于输入变换矩阵的各种电路可用作输入数据变换电路520。
图6示出包括用于根据Winograd算法执行1D卷积运算的预处理的滤波器数据变换电路的存储器装置的示例。
参照图6的示例,在非限制性示例中,存储器装置可包括存储器单元610和功能模块。
根据示例的系统可使用Winograd算法对F(2,3)执行卷积运算。存储器单元610基于作为3条数据的单元的3数据单元来存储滤波器数据。
功能模块可包括滤波器数据变换电路620。滤波器数据变换电路620可将滤波器数据w0、w1和w2变换为(w0,w0+w1+w2)/2和(w2,w0-w1+w2)/2。滤波器数据变换电路620可被设计为对应于等式7的滤波器变换矩阵。例如,滤波器数据变换电路620可被配置为与滤波器变换矩阵对应的移位器和加法器的组合。可使用移位器执行常数除法(constantdivision)。在示例中,滤波器数据可被称为权重,并且滤波器数据变换电路620可被称为权重变换电路。
因为可仅使用移位器和加法器的组合来配置滤波器数据变换电路620,从而具有相对简单的配置和较快速度,所以滤波器数据变换电路620可具有足够的速度在与读取命令对应的时钟周期期间对滤波器数据进行变换和输出。
这里,图6的示例的滤波器变换电路620仅作为非限制性示例被提供。根据各种非限制性示例,与滤波器变换矩阵对应的各种电路可在滤波器变换电路620的角色下进行操作。
图7示出用于根据Winograd算法执行1D卷积运算的系统的示例。
参照图7的示例,系统可包括高速运算处理器710,并且高速运算处理器710可通过对如上面进一步详细讨论的通过输入数据变换电路520变换的输入数据和通过滤波器数据变换电路620变换的滤波器数据执行逐元素乘法,来计算中间输出数据m0至m3。这里,m0至m3可通过如上等式4表示。
在一个非限制性示例中,高速运算处理器710可被嵌入在存储器装置中。例如,高速运算处理器710可以是乘法器。乘法器可被嵌入在存储器装置中,并且还可对变换后的输入数据和变换后的滤波器数据执行逐元素乘法。虽然作为非限制性示例,图7示出存储器单元510和存储器单元610可彼此分离,但是作为另一非限制性示例,还可使用单个存储器单元同时读取输入数据和滤波器数据。例如,当配置存储器接口时,通常可基于数据总线的大小单位(例如,数据总线的线数)来读取数据。在这样的示例中,由于各个输入数据或各个滤波器数据的位数可小于数据总线的线数,因此当一次读取数据时,可同时读取多条数据。
可选地,数据总线的通道的数量可增加。例如,与使用一个8GB DRAM作为1个通道相比,在使用两个4GB DRAM作为2个通道的非限制性示例中,数据总线的大小可相应地增加一倍。在这个非限制性示例中,可使用DMA模块将输入数据和滤波器数据适当地存储在两个通道中。参照图9的示例进一步描述对齐和存储数据的方法。
图8示出包括用于根据Winograd算法执行1D卷积运算的后处理的输出数据变换电路的存储器装置的示例。
参照图8的示例,存储器装置可包括存储器单元810和功能模块。
根据示例的系统可使用Winograd算法对F(2,3)执行卷积运算。存储器单元810可基于作为2条数据的单元的2数据单元来存储输出数据。
功能模块可包括输出数据变换电路820。输出数据变换电路820可将中间输出数据m0、m1、m2和m3变换为r0和r1。可在变换之后将输出数据r0和r1存储在存储器单元810中。
输出数据变换电路820可被设计为对应于等式8的输出变换矩阵。例如,作为非限制性示例,输出数据变换电路820可被配置为与输出变换矩阵对应的多个加法器的组合。
因为在非限制性示例中,输出数据变换电路820可被配置为仅使用可导致相对简单的配置和较快速度的多个加法器的组合,所以输出数据变换电路820可具有足够的速度在与写入命令对应的时钟周期期间对中间输出数据进行变换和输出。
然而,图8的示例的输出变换电路820仅作为非限制性示例被提供。对应于输出变换矩阵的各种电路可用作输出变换电路820。
尽管未示出,但是根据各种非限制性示例的存储器装置可包括输入数据变换电路、权重变换电路、乘法器和输出数据变换电路中的任何一个或者任何两个或更多个的任何组合。例如,存储器装置可包括输入数据变换电路、权重变换电路、乘法器和输出数据变换电路之一,或者可包括输入数据变换电路、权重变换电路、乘法器和输出数据变换电路中的两个或更多个。根据一个示例,存储器装置还可包括所有的输入数据变换电路、权重变换电路、乘法器和输出数据变换电路。
响应于高频率的运算的请求,可通过流水线方案来提高存储器装置的运算速度。例如,存储器装置可使用这样的流水线方案来处理存储器读取、输入数据变换、权重变换、乘法、输出数据变换和存储器写入。如果具有低频率的运算可用,则可在单个时钟周期期间处理存储器装置的运算,而无需使用流水线。
存储器装置还可包括端口,所述端口被配置为停止读取/写入信号以阻止来自存储器装置外部的请求。例如,存储器装置可通过经由相应的端口输出忙碌信号来阻止来自外部的请求。
存储器装置还可包括计数器,所述计数器被配置为在存储器装置的特定时间段期间阻止读取/写入。例如,可在由计数器设置的时间段期间输出忙碌信号。因此,还可存在由计数器设置的对应时间段,在所述对应时间段期间不输出忙碌信号。
作为非限制性示例,存储器装置可从其中存储有输入和权重的区域读取对应的值,并且可同时或以时间间隔执行输入/输出数据变换操作、乘法运算和/或输出存储操作。例如,可通过使用双端口SRAM执行具有不同地址的读取和写入处理来实现上述各种操作。
图9示出对齐和存储数据的方法的示例。
参照图9的示例,根据示例的系统还可包括DMA模块或装置。作为非限制性示例,DMA装置可表示能够使外围装置(例如,硬盘、图形卡、网卡和声卡)通过对存储器的直接存取来读取或写入存储器的硬件和/或硬件和软件的组合,并且可以是由计算机的内部总线支持的功能。
在一个示例中,DMA装置可用于对齐输入数据和滤波器数据以执行Winograd算法并相应地输出数据。在使用数据执行Winograd算法处理之前,每条数据需要由DMA装置以相应的顺序进行对齐。
在另一示例中,数据移动功能可在FPGA中被动态地配置和使用,并且也可使用专用集成电路(ASIC)来生成和使用。数据移动功能可由CPU执行。
DMA装置或FPGA可在内部包括缓冲器。通过使用这样的缓冲器,DMA装置或FPGA可读取多条数据,然后可以以期望的顺序将数据记录在期望的存储器位置。
图10示出根据Winograd算法变换用于2D卷积运算的预处理的滤波器数据的方法的示例。
根据非限制性示例的存储器装置可基于滤波器变换矩阵实时地对滤波器数据的至少一部分进行变换和输出,或者根据另一非限制性示例,可将预先计算的变换后的滤波器数据存储在存储器单元中。
如果滤波器数据是可重复使用的,则可响应于存储初始滤波器数据值来变换和存储滤波器数据。在这个示例中,因为不需要二次使用的额外计算,所以可节省用于计算的功率量,并且可减少用于读取命令的时间量。
根据示例的系统可使用Winograd算法对F(2×2,3×3)执行卷积运算。存储器装置可通过功能模块变换滤波器数据w0至w8,并且可将变换后的滤波器数据存储在存储器单元中。
更详细地,滤波器数据和滤波器变换矩阵可分别通过以下等式14和等式15表示:
等式14
等式15
变换后的滤波器数据可通过执行等式10的(GwGT)来获取,并且可通过以下表1来表示:
表1
参照图10的示例,存储器装置可通过使用功能模块来变换滤波器数据w0至w8,并且可将表1的变换后的滤波器数据预先存储在存储器单元中。可选地,存储器装置可基于使用滤波器变换矩阵实时地对滤波器数据的至少一部分进行变换和输出。
图11示出用于根据Winograd算法执行2D卷积运算的预处理的滤波器数据变换电路的示例。
参照图11的示例,滤波器数据变换电路可对使用Winograd算法对F(2×2,3×3)执行的卷积运算的滤波器数据变换执行预处理。滤波器数据变换电路可被设计为对应于图10的示例的滤波器变换矩阵。例如,滤波器数据变换电路可被配置为对应于与滤波器变换矩阵相关联的运算的移位器和加法器的组合。因此,可使用移位器执行常数除法。
因为滤波器数据变换电路可被配置为仅使用可导致滤波器数据变换电路具有相对简单的配置和较快速度的移位器和加法器的组合,所以滤波器数据变换电路可具有足够的速度在与读取命令对应的时钟周期期间对滤波器数据进行变换和输出。
这里,图11的示例的滤波器数据变换电路仅作为非限制性示例被提供。在其他非限制性示例中,与滤波器变换矩阵对应的各种电路可用作滤波器数据变换电路。
图12示出用于根据Winograd算法的2D卷积运算的预处理的变换输入数据的示例。
根据示例的系统可使用Winograd算法对F(2×2,3×3)执行卷积运算。存储器装置可通过使用功能模块对输入数据k0至k15进行变换和输出。
更详细地,输入数据和输入变换矩阵可分别通过以下等式16和等式17表示。
等式16
等式17
变换后的输入数据可通过执行等式10的(CTkC)来获取,并且可通过以下表2来表示:
表2
参照图12的示例,存储器装置可通过使用功能模块对输入数据k0至k15进行变换和输出。
图13示出用于根据Winograd算法执行2D卷积运算的预处理的输入数据变换电路的示例。
参照图13的示例,输入数据变换电路可对将要使用Winograd算法对F(2×2,3×3)执行的卷积运算的输入数据变换执行预处理。输入数据变换电路可被设计为对应于图12的示例的输入变换矩阵。例如,作为非限制性示例,输入数据变换电路可被配置为与输入变换矩阵对应的多个加法器的组合。
因为输入数据变换电路可被配置为仅使用多个加法器的组合,从而提供可具有相对简单的配置和较快速度的输入数据变换电路,所以输入数据变换电路可具有足够的速度在与读取命令对应的时钟周期期间对输入数据进行变换和输出。
然而,图13的示例的输入数据变换电路仅作为非限制性示例被提供。在其他非限制性示例中,对应于输入变换矩阵的各种电路可用作输入数据变换电路。
图14示出用于根据Winograd算法执行2D卷积运算的系统的示例。
在一个示例中,高速运算处理器可通过对通过图13的示例的输入数据变换电路变换的输入数据和通过图11的示例的滤波器数据变换电路变换的滤波器数据执行逐元素乘法,来计算中间输出数据m0至m15。
参照图14的示例,功能模块可包括输出数据变换电路。输出数据变换电路可将中间输出数据m0至m15变换为输出数据r0至r4。一旦输出数据r0至r4被生成,输出数据r0至r4就可被存储在存储器单元中。详细地,输出数据可通过以下表3来表示:
表3
输出数据变换电路可被设计为对应于输出变换矩阵。例如,可使用对应于与输出变换矩阵相关联的运算的多个加法器的组合来配置输出数据变换电路,尽管这是非限制性示例,但是在其他示例中其他配置可用于输出数据变换电路。
因为输出数据变换电路可被配置为仅使用具有相对简单的配置和较快速度的多个加法器的组合,所以输出数据变换电路可具有足够的操作速度,以能够在与写入命令对应的时钟周期期间对中间输出数据进行变换和输出。
这里,图14的示例的输出数据变换电路仅作为非限制性示例被提供。在其他非限制性示例中,与输出变换矩阵对应的各种电路可用作输出数据变换电路。
图15示出减少由于除法导致的信息丢失的方法的示例。
在一个示例中,因为滤波器变换矩阵可以是有理数而不是整数的形式,所以滤波器数据变换电路可能需要能够使用移位器执行常数除法。
在滤波器数据变换电路使用移位器执行常数除法的处理期间,可发生信息丢失。在一个示例中,可通过调整滤波器变换矩阵与输出变换矩阵之间的关系来减少由于除法而发生的信息丢失。
如果在没有信息丢失的情况下执行运算,然后执行除法,则与使用由于除法而丢失信息的数据执行卷积运算相比,可进一步减少由于除法导致的信息丢失。更详细地,使得滤波器变换矩阵的所有元素可变为整数,可使用乘以常数k的滤波器变换矩阵来计算中间输出数据,并且可使用除以这样的常数k的滤波器变换矩阵来变换中间输出数据。
参照图15的示例,可通过将滤波器变换矩阵乘以2来生成其中所有元素都是整数的滤波器变换矩阵,并且可使用滤波器变换矩阵来计算中间输出数据。可使用除以了2的滤波器变换矩阵来变换中间输出数据。通过这种方法,可减少由于除法而发生的信息丢失。
图16示出根据Strassen算法的存储器装置的运算方法的示例。
在一个示例中,Strassen算法表示能够降低矩阵乘法的复杂度的算法。如果将均具有n×n大小的两个矩阵相乘,则根据可选方法可使用大约O(n3)的时间。根据Strassen算法,可使用大约O(n2.807)的时间。
参照图16的示例,如果应用Strassen算法,则8次乘法可减少为7次乘法。在计算中间输出数据m1至m7所需的中间运算结果中,与A数据(例如,输入数据)相关联的运算可在其中存储有A数据的存储器中被处理。然后,可对与A数据和B数据(例如,滤波器数据)的中间运算结果相关联的运算执行逐元素乘法。在将A数据和B数据存储在单个存储器中之后,图16的示例中所示的所有运算或上述运算中的一部分可在存储器中被处理。在各种非限制性示例中,作为输出数据的运算结果C1,1至C2,2可使用存储器内部或外部的另外的存储空间。
图17示出包括乘法器累加器(MAC)单元或仅MAC的存储器装置的运算方法的示例。
参照图17的示例,根据示例的存储器装置可包括MAC,并且还可包括通过选择性地使用包括在MAC中的乘法器和加法器来配置的输入数据变换电路、滤波器数据变换电路和输出数据变换电路中的任何一个或者任何两个或更多个的任何组合。
可选地,输入数据变换电路、滤波器数据变换电路和输出数据变换电路中的任何一个或者任何两个或更多个的任何组合可通过将附加的乘法器和加法器添加到包括在MAC中的乘法器和加法器来配置。
如果使用如上的MAC来配置变换电路,则除了逐矩阵乘法、矩阵-矢量乘法和逐矢量乘法以外,还可配置甚至能够处理Winograd算法的存储器装置。
尽管未示出,但是如果变换后的输入数据的大小小于或等于阈值,则功能模块可包括被配置为输出预定义的值的修剪电路。
例如,如果当通过这样的修剪电路从存储器单元读取算法的输入值时,变换后的值小于或等于参考值,则功能模块可将0值输出到存储器的输出端口。因此,存储器装置可通过将修剪电路嵌入到功能模块中来提高处理速度。存储器装置可包括被配置为将这样的修剪参考值存储在存储器中的寄存器。
功能模块还可包括被配置为确定是否激活变换后的滤波器数据的非线性函数电路。通过将这样的非线性电路嵌入到功能模块中,存储器装置可在没有额外的存储器存取的情况下提高处理速度。例如,作为用于深度学习的非线性函数的非限制性示例,非线性函数可包括线性整流(ReLU)函数、修正的ReLU函数、sigmoid函数、tanh函数。
此外,通过提供在功能模块中使用的查找表,可以以低功率处理非线性函数。替代地,可通过从查找表读取与查找表中不存在的值最接近的两个值并估计非线性函数的值(诸如,通过局部线性局部近似),来对查找表中不存在的值进行插值。
图1至图17中的执行本申请中描述的操作的存储器装置110、存储器单元120、功能模块130、输入数据变换电路131、滤波器数据变换电路133、输出数据变换电路135、高速运算处理器140、存储器单元510、输入数据变换电路520、存储器单元610、滤波器数据变换电路620、高速运算处理器710、存储器单元810、输出数据变换电路820和MAC通过被配置为执行本申请中描述的由硬件组件执行的操作的硬件组件来实现。可用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器和被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,执行在本申请中描述的操作的硬件组件中的一个或多个通过计算硬件(例如,通过一个或多个处理器或计算机)来实现。可通过一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现处理器或计算机。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简单起见,单数术语“处理器”或“计算机”可用在本申请中描述的示例的描述中,但是在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件或多种类型的处理元件或二者。例如,单个硬件组件或者两个或更多个硬件组件可通过单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可通过一个或多个处理器、或者处理器和控制器来实现,一个或多个其他硬件组件可通过一个或多个其他处理器,或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理以及多指令多数据(MIMD)多处理。
图1至图17中示出的执行在本申请中描述的操作的方法通过计算硬件(例如,通过一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述地执行指令或软件,以执行在本申请中描述的由所述方法执行的操作。例如,单个操作或者两个或更多个操作可通过单个处理器或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可通过一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)来实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任意组合,以单独地或共同地指示或配置一个或多个处理器或计算机如机器或专用计算机那样进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。可基于附图中示出的框图和流程图以及说明书中的相应描述,使用任何编程语言编写指令或软件,其中,附图中示出的框图和流程图以及说明书中的相应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)来实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中或一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取存储器(RAM)、闪存、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘、以及任何其他装置,其中,所述任何其他装置被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并将指令或软件以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器或计算机,使得一个或多个处理器和计算机能够执行指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得指令和软件以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式被存储、访问和执行。
虽然本公开包括特定的示例,但是在理解本申请的公开之后将清楚,在不脱离权利要求和它们的等同物的精神和范围的情况下,可在这些示例中进行形式和细节上的各种改变。在此描述的示例应仅被认为是描述性的,而不是为了限制的目的。每个示例中的特征或方面的描述将被认为适用于其他示例中的相似特征或方面。如果描述的技术以不同的顺序被执行,和/或如果描述的系统、架构、装置或电路中的组件以不同方式被组合和/或被其他组件或它们的等同物替换或补充,则可实现适当的结果。因此,公开的范围不是由具体实施方式限定,而是由权利要求和它们的等同物限定,并且在权利要求和它们的等同物的范围内的所有变化将被解释为包括在公开内。
Claims (38)
1.一种存储器装置,包括:
存储器,被配置为存储用于卷积运算的输入数据和滤波器数据;以及
功能处理器,被配置为:响应于输入数据和滤波器数据之中的至少一部分数据的读取命令,在与读取命令对应的时钟周期期间基于卷积运算的参数变换所述至少一部分数据,并将相应的变换结果输出为变换后的数据。
2.如权利要求1所述的存储器装置,其中,功能处理器包括输入数据变换电路,输入数据变换电路被配置为:变换输入数据的至少一部分并将相应的变换结果输出为变换后的输入数据,以及
基于卷积运算的参数和应用于变换输入数据的所述至少一部分以减少卷积运算的计算量的算法的类型,来构造输入数据变换电路。
3.如权利要求2所述的存储器装置,其中,基于卷积运算的参数和所述算法的类型二者来确定输入变换矩阵,以及
输入数据变换电路被构造为对应于输入变换矩阵。
4.如权利要求1所述的存储器装置,其中,功能处理器包括滤波器数据变换电路,滤波器数据变换电路被配置为:变换滤波器数据的至少一部分并将相应的变换结果输出为变换后的滤波器数据,以及
基于卷积运算的参数和应用于变换滤波器数据的所述至少一部分以减少卷积运算的计算量的算法的类型来构造滤波器数据变换电路。
5.如权利要求4所述的存储器装置,其中,基于卷积运算的参数和所述算法的类型二者来确定滤波器变换矩阵,以及
滤波器数据变换电路被构造为对应于滤波器变换矩阵。
6.如权利要求1所述的存储器装置,其中,存储在存储器中的滤波器数据包括基于卷积运算的参数变换后的滤波器数据,以及
当滤波器数据是基于卷积运算的参数变换后的滤波器数据时,功能处理器被配置为输出变换后的滤波器数据,而不进一步对变换后的滤波器数据进行变换。
7.如权利要求1所述的存储器装置,其中,功能处理器包括乘法器累加器,乘法器累加器被配置为执行变换后的输入数据与变换后的滤波器数据之间的运算。
8.如权利要求1所述的存储器装置,其中,功能处理器被配置为:响应于通过变换后的输入数据与变换后的滤波器数据之间的运算输出的中间输出数据的至少一部分的写入命令,在与写入命令对应的时钟周期期间基于卷积运算的参数变换中间输出数据的所述至少一部分,并将相应的变换结果输出为变换后的中间输出数据。
9.如权利要求8所述的存储器装置,其中,中间输出数据包括变换后的输入数据与变换后的滤波器数据之间的逐元素乘法的输出数据。
10.如权利要求8所述的存储器装置,其中,功能处理器包括输出数据变换电路,输出数据变换电路被配置为变换中间输出数据的所述至少一部分,并将相应的变换结果输出为变换后的中间输出数据,以及
基于卷积运算的参数和变换中间输出数据以减少卷积运算的计算量的算法的类型来构造输出数据变换电路。
11.如权利要求10所述的存储器装置,其中,基于卷积运算的参数和所述算法的类型来确定输出变换矩阵,以及
输出数据变换电路被构造为对应于输出变换矩阵。
12.如权利要求1所述的存储器装置,其中,基于输出数据的大小、滤波器数据的大小、输入数据的大小、步长间隔和填充大小中的任何一个或者任何两个或更多个的任何组合,来确定卷积运算的参数。
13.如权利要求1所述的存储器装置,其中,功能处理器包括加法器和移位器中的任何一个或二者。
14.如权利要求1所述的存储器装置,其中,变换输入数据以减少卷积运算的计算量的算法是Winograd算法。
15.如权利要求1所述的存储器装置,其中,变换输入数据以减少卷积运算的计算量的算法是Strassen算法。
16.如权利要求1所述的存储器装置,其中,功能处理器包括修剪电路,修剪电路被配置为响应于变换后的输入数据的大小小于或等于阈值而输出预定值。
17.如权利要求1所述的存储器装置,其中,功能处理器被配置为计算用于确定是否激活变换后的滤波器数据的非线性函数的值。
18.如权利要求1所述的存储器装置,其中,功能处理器包括被配置为使用变换后的输入数据和变换后的滤波器数据执行运算的运算处理器。
19.如权利要求18所述的存储器装置,其中,运算处理器包括乘法器,乘法器被配置为使用变换后的输入数据与变换后的滤波器数据执行逐元素乘法。
20.如权利要求1所述的存储器装置,其中,功能处理器包括以下项中的两个或更多个:
输入数据变换电路,被配置为对输入数据的至少一部分进行变换和输出;
滤波器数据变换电路,被配置为对滤波器数据的至少一部分进行变换和输出;
乘法器,被配置为使用变换后的输入数据与变换后的滤波器数据执行乘法;以及
输出数据变换电路,被配置为对通过执行乘法而输出的中间输出数据的至少一部分进行变换和输出。
21.一种计算设备,包括:
存储器,被配置为存储用于卷积运算的输入数据和滤波器数据;
功能处理器,被配置为:响应于输入数据和滤波器数据之中的至少一部分数据的读取命令,在与读取命令对应的时钟周期期间基于卷积运算的参数变换所述至少一部分数据,并将相应的变换结果输出为变换后的数据;以及
直接存储器存取处理器,被配置为:基于存储器与功能处理器之间的连接关系,将所述至少一部分数据对齐并存储在存储器中。
22.如权利要求21所述的计算设备,其中,功能处理器包括输入数据变换电路,输入数据变换电路被配置为:变换输入数据的至少一部分并将相应的变换结果输出为变换后的输入数据,以及
基于卷积运算的参数和应用于变换输入数据的所述至少一部分以减少卷积运算的计算量的算法的类型来构造输入数据变换电路。
23.如权利要求22所述的计算设备,其中,基于卷积运算的参数和所述算法的类型的组合来确定输入变换矩阵,以及
输入数据变换电路被构造为对应于输入变换矩阵。
24.如权利要求21所述的计算设备,其中,功能处理器包括滤波器数据变换电路,滤波器数据变换电路被配置为:变换滤波器数据的至少一部分并将相应的变换结果输出为变换后的滤波器数据,以及
基于卷积运算的参数和应用于变换滤波器数据的所述至少一部分以减少卷积运算的计算量的算法的类型来构造滤波器数据变换电路。
25.如权利要求21所述的计算设备,还包括:运算处理器,被配置为使用变换后的输入数据和变换后的滤波器数据执行运算。
26.如权利要求25所述的计算设备,其中,运算处理器包括中央处理器、图形处理器、数字信号处理器、神经处理器和现场可编程门阵列中的任何一个或者任何两个或更多个的任何组合。
27.如权利要求21所述的计算设备,其中,功能处理器被配置为:响应于通过使用变换后的输入数据与变换后的滤波器数据的运算输出的中间输出数据的至少一部分的写入命令,在与写入命令对应的时钟周期期间基于卷积运算的参数变换中间输出数据的所述至少一部分,并将相应的变换结果输出为变换后的中间输出数据。
28.如权利要求27所述的计算设备,其中,功能处理器包括输出数据变换电路,输出数据变换电路被配置为变换中间输出数据的所述至少一部分,并将相应的变换结果输出为变换后的中间输出数据,以及
基于卷积运算的参数和变换中间输出数据以减少卷积运算的计算量的算法的类型来构造输出数据变换电路。
29.一种处理器实现的存储器装置的运算方法,所述运算方法包括:
响应于读取命令,从存储器接收输入数据和滤波器数据之中的至少一部分数据;以及
在与读取命令对应的时钟周期期间基于卷积运算的参数变换所述至少一部分数据,并将相应的变换结果输出为变换后的数据。
30.如权利要求29所述的运算方法,其中,输出的步骤包括:
基于卷积运算的参数和变换输入数据的至少一部分以减少卷积运算的计算量的算法的类型的组合来确定输入变换矩阵;以及
基于输入变换矩阵变换输入数据的所述至少一部分,并将相应的变换结果输出为变换后的输入数据。
31.如权利要求29所述的运算方法,其中,输出的步骤包括:
基于卷积运算的参数和变换滤波器数据的至少一部分以减少卷积运算的计算量的算法的类型的组合来确定滤波器变换矩阵;以及
基于滤波器变换矩阵变换滤波器数据的所述至少一部分,并将相应的变换结果输出为变换后的滤波器数据。
32.如权利要求29所述的运算方法,还包括:
响应于通过变换后的输入数据与变换后的滤波器数据之间的运算输出的中间输出数据的至少一部分的写入命令,在与写入命令对应的时钟周期期间基于卷积运算的参数变换中间输出数据的所述至少一部分,并将变换后的中间输出数据的所述至少一部分存储在存储器中。
33.如权利要求32所述的运算方法,其中,存储在存储器中的步骤包括:
基于卷积运算的参数和变换中间输出数据的所述至少一部分以减少卷积运算的计算量的算法的类型二者来确定输出变换矩阵;以及
基于输出变换矩阵变换中间输出数据的所述至少一部分,并将变换后的中间输出数据的所述至少一部分存储在存储器中。
34.一种存储指令的非暂时性计算机可读存储介质,当所述指令由一个或多个处理器执行时,使得所述一个或多个处理器执行权利要求29所述的运算方法。
35.一种计算设备,包括:
一个或多个处理器,被配置为:响应于存储在包括存储器中功能的存储器中的输入数据和滤波器数据之中的至少一部分数据的读取命令,在与读取命令对应的时钟周期期间基于卷积运算的参数变换所述至少一部分数据,并将相应的变换结果输出为变换后的数据。
36.如权利要求35所述的计算设备,其中,存储器被配置为存储输入数据和滤波器数据。
37.如权利要求36所述的计算设备,还包括:直接存储器存取处理器,被配置为:基于存储器与所述一个或多个处理器之间的连接关系,将所述至少一部分数据对齐并存储在存储器中。
38.如权利要求35所述的计算设备,其中,所述一个或多个处理器包括乘法器累加器,乘法器累加器被配置为执行变换后的输入数据与变换后的滤波器数据之间的运算。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0115443 | 2019-09-19 | ||
KR1020190115443A KR20210033757A (ko) | 2019-09-19 | 2019-09-19 | 메모리 장치 및 그 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112528219A true CN112528219A (zh) | 2021-03-19 |
Family
ID=72050656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010650294.8A Pending CN112528219A (zh) | 2019-09-19 | 2020-07-08 | 存储器装置及其运算方法、计算设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11899741B2 (zh) |
EP (1) | EP3796190A1 (zh) |
KR (1) | KR20210033757A (zh) |
CN (1) | CN112528219A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113570034A (zh) * | 2021-06-18 | 2021-10-29 | 北京百度网讯科技有限公司 | 处理装置、神经网络的处理方法及其装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220269437A1 (en) * | 2021-02-19 | 2022-08-25 | Western Digital Technologies, Inc. | Data Storage Device and Method for Predetermined Transformations for Faster Retrieval |
CN113708771B (zh) * | 2021-07-20 | 2024-01-02 | 南京邮电大学 | 一种基于斯特拉森算法的半张量积压缩感知方法 |
CN114399036B (zh) * | 2022-01-12 | 2023-08-22 | 电子科技大学 | 一种基于一维Winograd算法的高效卷积计算单元 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117187A (zh) * | 2018-08-27 | 2019-01-01 | 郑州云海信息技术有限公司 | 卷积神经网络加速方法及相关设备 |
US20190149134A1 (en) * | 2019-01-14 | 2019-05-16 | Intel Corporation | Filter optimization to improve computational efficiency of convolution operations |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170344876A1 (en) | 2016-05-31 | 2017-11-30 | Samsung Electronics Co., Ltd. | Efficient sparse parallel winograd-based convolution scheme |
US10990648B2 (en) | 2017-08-07 | 2021-04-27 | Intel Corporation | System and method for an optimized winograd convolution accelerator |
KR102452953B1 (ko) | 2017-10-30 | 2022-10-11 | 삼성전자주식회사 | 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 |
CN109767000B (zh) | 2019-01-16 | 2022-01-25 | 厦门美图之家科技有限公司 | 基于Winograd算法的神经网络卷积方法及装置 |
US20200349217A1 (en) * | 2019-05-03 | 2020-11-05 | Micron Technology, Inc. | Methods and apparatus for performing matrix transformations within a memory array |
-
2019
- 2019-09-19 KR KR1020190115443A patent/KR20210033757A/ko active Search and Examination
-
2020
- 2020-04-23 US US16/856,380 patent/US11899741B2/en active Active
- 2020-07-08 CN CN202010650294.8A patent/CN112528219A/zh active Pending
- 2020-08-11 EP EP20190373.9A patent/EP3796190A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117187A (zh) * | 2018-08-27 | 2019-01-01 | 郑州云海信息技术有限公司 | 卷积神经网络加速方法及相关设备 |
US20190149134A1 (en) * | 2019-01-14 | 2019-05-16 | Intel Corporation | Filter optimization to improve computational efficiency of convolution operations |
Non-Patent Citations (2)
Title |
---|
JILAN LIN, SHUANGCHEN LI, XING HU, LEI DENG, YUAN XIE: "CNNWire: Boosting Convolutional Neural Network with Winograd on ReRAM based Accelerators", GLSVLSI ’19: PROCEEDINGS OF THE 2019 ON GREAT LAKES SYMPOSIUM ON VLSI, 9 May 2019 (2019-05-09), pages 2 - 3 * |
VI V I EN N E SZ E,YU-HS IN CHEN,TIEN-JU YANG,JOEL S. EMER: "Efficient Processing of Deep Neural Networks: A Tutorial and Survey", IEEE, 20 November 2017 (2017-11-20), pages 21 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113570034A (zh) * | 2021-06-18 | 2021-10-29 | 北京百度网讯科技有限公司 | 处理装置、神经网络的处理方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20210033757A (ko) | 2021-03-29 |
US20210089610A1 (en) | 2021-03-25 |
EP3796190A1 (en) | 2021-03-24 |
US11899741B2 (en) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7016942B2 (ja) | 演算アクセラレータ | |
CN112528219A (zh) | 存储器装置及其运算方法、计算设备 | |
US11494622B2 (en) | Method and apparatus for implementing a deep neural network performing an activation function | |
US10942986B2 (en) | Hardware implementation of convolutional layer of deep neural network | |
US10338925B2 (en) | Tensor register files | |
US10372456B2 (en) | Tensor processor instruction set architecture | |
GB2582352A (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
JP2021507335A (ja) | 行列入力を行列プロセッサ用のベクトル化入力に変換するためのシステムおよび方法 | |
WO2019215907A1 (ja) | 演算処理装置 | |
KR20200081044A (ko) | 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치 | |
US20240004809A1 (en) | Accelerator, method of operating an accelerator, and electronic device including an accelerator | |
CN114970807A (zh) | Softmax和指数在硬件中的实施 | |
CN111125617A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112784951B (zh) | Winograd卷积运算方法及相关产品 | |
US20230117042A1 (en) | Implementation of discrete fourier-related transforms in hardware | |
Islam et al. | A new hardware-efficient VLSI-architecture of GoogLeNet CNN-model based hardware accelerator for edge computing applications | |
CN111143766A (zh) | 人工智能处理器处理二维复数矩阵的方法和设备 | |
GB2582868A (en) | Hardware implementation of convolution layer of deep neural network | |
CN110908714A (zh) | 算术逻辑单元、数据处理系统、方法和模块 | |
CN112784206A (zh) | winograd卷积运算方法、装置、设备及存储介质 | |
GB2601073A (en) | Activation functions for Deep Neural Networks | |
CN112766473B (zh) | 运算装置及相关产品 | |
GB2596239A (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
CN116894254A (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 |