CN113396387A - 具有处理流水线的乘法器-累加器电路系统以及操作该电路系统的方法 - Google Patents
具有处理流水线的乘法器-累加器电路系统以及操作该电路系统的方法 Download PDFInfo
- Publication number
- CN113396387A CN113396387A CN202080010361.8A CN202080010361A CN113396387A CN 113396387 A CN113396387 A CN 113396387A CN 202080010361 A CN202080010361 A CN 202080010361A CN 113396387 A CN113396387 A CN 113396387A
- Authority
- CN
- China
- Prior art keywords
- image data
- multiply
- accumulator
- circuitry
- memory
- 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 84
- 238000012545 processing Methods 0.000 title description 60
- 230000015654 memory Effects 0.000 claims abstract description 169
- 230000008569 process Effects 0.000 claims abstract description 33
- 238000006243 chemical reaction Methods 0.000 claims description 133
- 238000003491 array Methods 0.000 claims description 21
- 238000010586 diagram Methods 0.000 description 36
- 238000009825 accumulation Methods 0.000 description 30
- 230000035508 accumulation Effects 0.000 description 29
- 239000011159 matrix material Substances 0.000 description 28
- 238000013519 translation Methods 0.000 description 22
- 238000003780 insertion Methods 0.000 description 15
- 238000000605 extraction Methods 0.000 description 14
- 230000037431 insertion Effects 0.000 description 14
- 238000013527 convolutional neural network Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000009466 transformation Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000005070 sampling Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 239000004020 conductor Substances 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009738 saturating Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 1
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Image Processing (AREA)
Abstract
一种集成电路,包括存储图像数据和滤波器权重的存储器,以及多个乘法‑累加器执行流水线,每个乘法‑累加器执行流水线耦接到存储器以接收(i)图像数据以及(ii)滤波器权重,其中每个乘法‑累加器执行流水线使用关联滤波器权重经由多个乘法和累加操作来处理图像数据。在一个实施例中,每个乘法‑累加器执行流水线的乘法‑累加器电路系统在操作中接收不同的图像数据集合,每个集合包括多个图像数据,且使用与接收的图像数据关联的滤波器权重、经由与其他乘法‑累加器执行流水线的乘法‑累加器电路系统并行地执行多个乘法和累加操作来处理与其关联的图像数据集合,从而生成输出数据。每个图像数据集合包括与从其生成的输出数据关联的图像的所有。
Description
相关申请
本非临时申请要求2019年3月25日提交的、名为“具有处理流水线的乘法器-累加器电路系统和操作该电路系统的方法”的美国临时申请No.62/823,161的优先权和权益。特此将该’161临时申请的全部内容通过引用并入本文。
导言
本文描述和示出了许多发明。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。重要的是,本发明的每个方面和/或其实施例可单独使用或者与本发明的其他方面和/或其实施例中的一个或多个结合使用。
在一个方面中,本发明涉及具有乘法器-累加器电路系统的集成电路(以及操作该电路的方法),该乘法器-累加器电路系统包括一个或多个执行或处理流水线,该一个或多个执行或处理流水线包括用于实现Winograd型处理来提升乘法器-累加器电路系统和处理的数据吞吐量的电路系统。在一个实施例中,电路系统和技术将输入数据从M×M矩阵变换成N×N矩阵(其中N和M是正整数,并且N大于M(例如M=3且N=4)),其中输入数据可存储在存储器中(例如包括二维阵列的图像像素的层)。在一个实施例中,电路系统和技术还将输入权重或权重值从M×M矩阵变换成N×N矩阵或块,其中输入权重或权重值也可以以M×M块存储在存储器中(例如包括二维阵列的输入权重或值的层)。此处,每个M×M矩阵或块的滤波器权重或系数与M×M矩阵的输入数据关联。在上述转换后,乘法器-累加器电路系统使用关联的N×N滤波器权重或系数来处理N×N输入数据。
在一个实施例中,乘法器-累加器电路系统使用关联的N×N输入权重来处理N×N输入数据,以生成或累加Q×Q矩阵的输出数据。在进一步处理(例如加法和/或减法操作)之后,乘法器-累加器电路系统生成输出值。也就是说,通过乘法器-累加器电路系统(在一个实施例中包括N×N执行流水线)对N×N元素值进行的聚合提供或生成Q×Q输出数据/像素。在该实施例中,在(经由Z-Y转换逻辑电路系统的)进一步变换/转换之后,N×N执行流水线外部的电路系统生成最终的Q×Q输出。在此,在N×N乘积元素/值与来自其他输入层的其他N×N乘积元素/值累加时,各个元素/值被累加在一起到最终的Q×Q输出像素中,直到已执行了Z-Y转换操作以后。在该实施例中在关联的N×N执行流水线外部的Z-Y转换逻辑电路系统接收数据、变换该数据以生成并输出(一个或多个)输出值(P×P矩阵,例如1×1值),该(一个或多个)输出值与M×M输入数据的乘法器-累加器电路系统的乘法和累加处理结果关联。
如以下更详细讨论的,在另一实施例中,Z-Y转换逻辑电路系统及其实现的操作被结合到关联的执行流水线中。在该实施例中,乘法器-累加器电路系统可在执行流水线内累加N×N个执行流水线的各个元素/值,以使得通过单个执行流水线而不是多个执行流水线(例如N×N个执行流水线(例如16个执行流水线))实现数据处理。
特别是,本发明可包括多个分离的乘法器-累加器电路和多个寄存器(包括多个影像寄存器),其便利于乘法和累加操作的流水线化(参考例如分别递交于2018年8月31日和2019年8月20日、名为“乘法器-累加器电路,乘法-累加的逻辑块架构,以及包括逻辑块阵列的IC”的美国专利申请No.16/545,345和美国临时专利申请No.62/725,306)。本发明可以结合’306和’345申请的发明和/或实施例来实施,’306和’345申请的全部内容通过引用并入本文。特别是,’306和’345申请中所述和/或所示的乘法器-累加器电路系统促进了乘法和累加操作的级连和对这种操作的重新配置,从而使得多个乘法器-累加器电路能够更快速执行操作。
如上所述,在一个实施例中,本发明的电路系统和技术从存储器读取M×M块的输入权重,且然后将这样的M×M块的输入权重变换或转换成与N×N块的输入数据关联的N×N块。在该实施例中,在乘法器-累加器电路系统/流水线的操作期间(即在乘法器-累加器电路系统/流水线的运行中或操作期间),通过乘法器-累加器电路系统从存储器读取输入数据和输入权重,并对其进行变换或转换。
在另一实施例中,将输入权重预先变换并作为N×N块存储在存储器中。在该替代实施例中,所变换或转换的滤波器权重以N×N块形式存储在存储器中,且然后通过乘法器-累加器电路系统以N×N块形式从存储器读取。在乘法器-累加器电路系统/流水线的操作和执行期间,乘法器-累加器电路系统对关联输入数据(在运行中通过本发明的电路系统和技术从M×M块的输入数据转换为N×N块的输入数据)采用预变换/预转换的权重。这样的输入权重变换/转换可通过芯片外计算系统执行且然后存储在存储器中。然而,在操作期间,乘法器-累加器电路系统/流水线(即在运行中)还是使用通过本发明的电路系统和技术变换的N×N块的输入权重和关联的N×N块的输入数据来累加N×N乘积数据/元素。
特别是,集成电路可以是例如处理器、控制器、状态机、门阵列、片上系统(SOC)、可编程门阵列(PGA)和/或FPGA。
附图说明
本发明可结合附图中所示的实施例来实现。这些附图示出了本发明的不同方面,且在适当时,示出不同图中的相同电路、架构、结构、部件、材料和/或元件的附图标记、命名或名称被相似地标记。应理解,构思了特别示出的那些之外的结构、部件、材料和/或元件的各种组合,且这些各种组合也在本发明的范围内。
此外,本文描述和示出了许多发明。本发明既不限于任何单个方面或其实施例,也不限于这样的方面和/或实施例的任何组合和/或置换。另外,本发明的各方面和/或其实施例可单独采用或结合本发明一个或多个其他方面和/或其实施例来采用。为简便,本文没有单独讨论和/或示出特定置换和组合。特别是,本文作为“示例”所述的实施例或实现方式不应被理解为例如相对于其他实施例或实现方式是优选的或有利的;而是:其旨在于反映或指示(一个或多个)实施例是“示例”实施例。
特别是,本文所述和/或附图中所示的配置、块/数据宽度、数据路径宽度、带宽、数据长度、值、过程、伪代码、操作和/或算法以及与其关联的文本是示例性的。确实,本发明不限于任何特定或示例的电路、逻辑、块、功能和/或物理图、根据例如示例性电路系统、逻辑、块、功能和/或物理图所示和/或所述的块/数据宽度、数据路径宽度、带宽、值、过程、伪代码、操作和/或算法。
图1A是乘法器-累加器执行流水线的第一操作模式的逻辑概要的示意性框图,其中每个乘法器-累加器执行流水线包括以框图形式示出的乘法器-累加器电路系统;特别是,乘法器-累加器电路系统包括一个或多个乘法器-累加器电路(尽管此处没有具体示出各个乘法器-累加器电路)。
图1B是根据本发明特定方面的乘法器-累加器执行流水线的示例性实施例的物理概要的示意性框图;特别是,每个乘法器-累加器执行流水线包括关联/单独的乘法器-累加器电路系统;此外,在该实施例的一个示例性实现方式中,决定了在yij的64×(1×1)输出像素的在dij的64×(3×3)输入像素全部由单个执行流水线来处理;在此,3×3集合/阵列的输入像素/数据是与输出数据关联的图像数据;确实,多个执行流水线中的每个执行流水线处理单独的集合的全部dij输入像素/数据(在该示例性实施例中,64×(3×3)),其决定yij输出像素/数据(在该示例性实施例中,64×(1×1)),该yij输出像素/数据与由多个执行流水线中的关联乘法器-累加器执行流水线处理的所述集合的所有dij输入像素/数据关联;
图2A是根据本发明特定方面实现Winograd数据处理技术的多个乘法器-累加器执行流水线中的乘法器-累加器电路系统的示例性实施例的逻辑概要的示意性框图;如上所述,乘法器-累加器电路系统包括一个或多个乘法器-累加器电路(尽管在此没有具体示出各个乘法器-累加器电路);
图2B是根据本发明特定方面的多个乘法器-累加器执行流水线的示例性实施例的物理概要的示意性框图,每个流水线包括乘法器-累加器电路系统(以框图形式示出),其中多个乘法器-累加器执行流水线被配置为实现Winograd数据处理技术;特别是,在该示例中,决定在yij处的关联的64×(2×2)输出像素的dij处的64×(4×4)输入像素/数据由多个(在此为16个)乘法器-累加器执行流水线处理(与图1所述和所示的操作模式比较,在图1所述和所示的操作模式中一个乘法器-累加器执行流水线处理决定了yij处的64×(1×1)输出像素的dij处的64×(3×3)输入像素);
图2C是根据本发明特定方面的图2B所示的示例性实施例的物理概要的示例性时序图;
图2D-2F示出了根据本发明特定方面的实现Winograd数据处理技术的特定操作的转换表,包括经由f-h转换电路系统转换滤波器权重或系数以便利于Winograd处理(F-H处理,图2D),经由d-e转换电路系统将数据(例如图像数据)转换成Winograd格式(D-E处理,图2E),以及经由z-y转换电路系统将处理的图像数据转换成非Winograd格式,比如浮点格式(Z-Y处理;图2F),这可便利于对数据(例如图像数据)的额外的处理;
图3A是根据本发明特定方面的、(如图2A和2B的逻辑和物理概要分别所示的)实现Winograd处理技术的乘法器-累加器执行流水线的示例性dij-eij转换和提取电路系统/操作实施例的物理细节的示意性框图;
图3B是根据本发明特定方面的图3A所示的示例性dij-eij转换和提取实施例的示例性伪代码;
图3C是根据本发明特定方面的图3A的乘法器-累加器执行流水线的示例性dij-eij转换电路系统的示例性单元的示意性图;
图3D是根据本发明特定方面的图3A的乘法器-累加器执行流水线的示例性dij-eij提取电路系统的示例性单元的示意性图;
图3E示出根据本发明特定方面的转换/提取流水线(水平轴)和各个单元的定时(竖直轴)的粗略图;
图4A是根据本发明特定方面的、(如图2A和2B的逻辑和物理概要分别所示的)实现Winograd处理技术的多个乘法器-累加器执行流水线的示例性fkl-hkl转换和提取电路系统/操作实施例的物理细节的示意性框图;
图4B是根据本发明特定方面的图4A的乘法器-累加器执行流水线的示例性fij-hij转换和提取实施例的示例性伪代码;
图4C是根据本发明特定方面的图4A的执行流水线的示例性fkl-hkl转换电路系统的两个示例性单元的示意性图;特别是,在该示例性实施例中的fkl-hkl转换逻辑电路系统包括16个左单元和16个右单元,其中fkl-hkl转换逻辑电路系统包括(i)fkl和hkl权重值的数据寄存器;(ii)用于排序的控制逻辑,以及(iii)用于(根据图2D所示的转换表的)转换的加法器逻辑;
图4D是根据本发明特定方面的图4C的示例性fkl-hkl转换电路系统的多路复用器(Mux)电路系统和加法器电路系统的示例性实施例的示意性框图;
图4E示出根据本发明特定方面的转换/提取流水线(水平轴)和各个单元的定时(竖直轴)的粗略图;在该示例性实施例中,水平轴在“X”位置{0,1,……31}中示出32个fkl-hkl转换单元;
图5A是根据本发明特定方面的、(如图2A和2B的逻辑和物理概要分别所示的)实现Winograd处理技术的多个乘法器-累加器执行流水线的示例性zij-yij插入和转换电路系统/操作实施例的逻辑概要的示意性框图;
图5B是根据本发明特定方面的图5A的执行流水线的示例性zij-yij插入和转换实施例的示例性伪代码;
图5C是根据本发明特定方面的Zij插入电路系统和zij-yij转换电路系统的示例性实施例的示意性图,其包括图5A的示例性zij-yij插入和转换电路系统的zij插入逻辑电路系统的一个单元(图的左部分)和zij-yij转换逻辑电路系统的一个单元(图的右部分);
图5D示出根据本发明特定方面的转换/提取流水线(水平轴)和各个单元的定时(竖直轴)的粗略图;其中水平轴在“X”位置{0,1,……15}中示出16个zij插入单元,在“X”位置{16,17,……31}中示出16个zij-yij转换单元,且较低轴示出寄存器ZREG_X和ZREG_Y中的处于流水线中其固定位置的4×4Z块的zij元素/值;
图5E是根据本发明特定方面的实现Winograd数据处理技术的乘法器-累加器执行流水线的以框图形式的乘法器-累加器电路系统的另一示例性实施例的逻辑概要的示意性框图,其中第一64个输入平面(也称为层)的累加在左侧,累加值存储在L2存储器的Y区域中,且第二集合的64个输入值累加在图中右侧;特别是,在该示例性实施例中,4×4Z块值在被写入L2存储器的Y区域之前被应用于zij-yij转换逻辑电路系统(或通过zij-yij转换逻辑电路系统被转换),其中在值被应用于转换逻辑且通过转换逻辑转换时,从L2读取来自第一64个输入平面的Y累加值,且将其加载到zij-yij转换逻辑的累加输入端口;
图6A是根据本发明特定方面的实现Winograd数据处理技术的执行流水线的乘法器-累加器电路系统的另一示例性实施例的物理概要的示意性框图,其中该架构在乘法器-累加器执行流水线中结合D-E转换电路系统和Z-Y转换电路系统,且执行其操作;另外,通过乘法器-累加器电路系统以N×N块形式从存储器读取预处理和预变换的输入权重;
图6B是根据本发明特定方面的实现Winograd数据处理技术的执行流水线的乘法器-累加器电路系统的示例性实施例的乘法器-累加器执行流水线(多个流水线中的一个流水线)的四个片的示意性图;在此,流水线级的四个片的细节,其中四个片中的每个片处理4×4输入数据块D(从图中右侧接收)的输入流中的一个;
图6C是根据本发明特定方面的实现Winograd数据处理技术的执行流水线的乘法器-累加器电路系统的示例性实施例的(如图6B所示的)具有四个片的四级流水线的示意性图;
图7A-7C示出了根据本发明特定方面的实现Winograd数据处理技术的特定操作的转换表,包括经由f-h转换电路系统转换滤波器权重或系数以便利于Winograd处理(F-H处理,图7A),经由d-e转换电路系统将数据(例如图像数据)转换成Winograd格式(D-E处理,图7B),以及经由z-y转换电路系统将处理的图像数据转换成非Winograd格式,例如浮点格式(Z-Y处理;图7C),这可便利于对数据(例如图像数据)的额外的处理;
图8和图9示出根据本发明特定方面的示例性下采样操作模式,其使用根据本发明的方面的实现Winograd数据处理技术的执行流水线的乘法器-累加器电路系统的任何示例性实施例;以及
图10A和10B以示意性框图形式示出根据本发明特定方面的模式选择电路系统,其例如结合推论操作来控制(即启用和/或禁用)或确定特定电路系统(比如转换电路系统)的可操作性、数据路径和/或处理输入数据(比如图像数据)的技术(比如第一操作模式和/或第二操作模式——分别参考图1A/1B和图2A/2B);在这方面,模式选择电路系统控制或确定转换电路系统、执行流水线中的一个、多个或全部的乘法器-累加器电路系统的操作,以及在特定实施例中控制存储器的功能性/可操作性(例如以2D阵列格式读取和/或写入数据—参考例如图10A)。
特别是,图中所述和/或所示的伪代码、操作、配置、块/数据宽度、数据路径宽度、带宽、数据长度、值、过程和/或算法是示例性的。确实,本发明不限于根据例如示例性逻辑或物理概要配置和/或示例性转换逻辑电路系统所示和/或所实现的任何特定伪代码、操作、块/数据宽度、数据路径宽度、带宽、值、过程和/或算法。
再一次,本文描述和示出了许多发明。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。本发明的每个方面和/或其实施例可单独使用或与本发明的其他方面和/或其实施例中的一个或多个结合使用。为简便,本文不单独讨论或示出这些组合和置换中的许多个。
具体实施例
在第一方面,本发明涉及乘法器-累加器电路系统和操作这种电路系统的技术,其包括用于实现Winograd型数据处理从而提升乘法器-累加器电路系统和处理的数据吞吐量的电路系统(以及执行用于实现Winograd型数据处理从而提升乘法器-累加器电路系统和处理的数据吞吐量的方法)。在一个实施例中,电路系统和技术将输入数据(比如图像数据)从M×M矩阵变换成N×N矩阵(其中N和M是正整数,N大于M(比如M=3且N=4)),其中输入数据可存储在存储器中(例如包括二维阵列的图像像素的层)。在一个实施例中,电路系统和技术还将输入的滤波器权重、值或系数从M×M矩阵变换成N×N矩阵或块,其中输入滤波器权重、值或系数也可以以M×M块存储在存储器中(例如包括二维阵列的输入滤波器权重或值的层)。此处,每个M×M矩阵或块的滤波器权重或系数与M×M矩阵的输入数据关联。在上述转换后,乘法器-累加器电路系统使用关联的N×N滤波器权重或系数来处理N×N输入数据。
在一个实施例中,乘法器-累加器电路系统使用关联的N×N权重或系数来处理N×N输入数据,以生成或累加Q×Q矩阵的输出数据。在进一步处理(例如加法和/或减法操作)之后,乘法器-累加器电路系统生成输出值。也就是说,通过乘法器-累加器电路系统(在一个实施例中包括N×N执行流水线)对N×N元素值进行的聚合提供或生成Q×Q矩阵的输出数据/像素。在该实施例中,在进一步的(经由Z-Y转换逻辑电路系统的)变换/转换以将输出数据从Winograd格式转换为非Winograd格式(例如浮点格式)之后,N×N执行流水线外部的电路系统生成最终的Q×Q输出,这便利于或允许值被累加到例如与M×M输入数据的乘法器-累加器电路系统的处理关联的输出值。在此,在N×N乘积元素/值与来自其他输入层的其他N×N乘积元素/值累加时,在执行了Z-Y转换操作后,各个元素/值被一起累加到最终的Q×Q输出像素中。在该实施例中在执行流水线外部的Z-Y转换逻辑电路系统接收数据、变换该数据以生成并输出(一个或多个)输出值(P×P矩阵,例如1×1值),该(一个或多个)输出值与M×M输入数据的乘法器-累加器电路系统的乘法和累加处理结果关联。
在另一实施例中,Z-Y转换逻辑电路系统及其实现的操作被结合到执行流水线中。在该实施例中,乘法器-累加器电路系统可在执行流水线内累加N×N执行流水线的各个元素/值,以使得可通过乘法器-累加器执行流水线的单个执行流水线而不是多个执行流水线(例如N×N执行流水线(例如16个执行流水线))实现处理。
如上所述,在一个实施例中,本发明可包括多个分离的乘法器-累加器电路和多个寄存器(包括多个影像寄存器),其便利于乘法和累加操作的流水线化(参考例如上述’306和’345申请)。本发明可以结合’306和’345申请的发明和/或实施例来实施,其便利于乘法和累加操作的级连以及重新配置该操作,从而使得多个乘法器-累加器电路系统能够更快速执行该操作。
在一个实施例中,本发明的电路系统和技术从存储器读取M×M块的滤波器权重或系数,且然后将这样的M×M块的滤波器权重/系数变换或转换成N×N块,其中每个N×N块滤波器权重/系数与至少一个N×N块的输入数据关联。在该实施例中,在乘法器-累加器电路系统/流水线操作期间(即在执行流水线的电路系统操作期间(原地)或在运行中),通过乘法器-累加器电路系统从存储器读取输入数据和权重,并将其变换或转换为Winograd格式。以这种方式,滤波器权重或系数首先被转换为Winograd格式且然后被提供给乘法器-累加器电路系统以进行处理。
在另一实施例中,将滤波器权重或系数预先变换或转换成Winograd格式,且作为N×N块存储在存储器中。以这种方式,滤波器权重或系数立即适于使用Winograd技术的处理。因此,在该替代实施例中,所变换的输入权重以N×N块形式存储在存储器中,且然后被乘法器-累加器电路系统以N×N块形式从存储器读取。乘法器-累加器电路系统在乘法器-累加器电路系统/流水线的操作和执行期间对关联输入数据(在操作期间或运行中通过本发明的电路系统和技术从M×M块的输入数据变换为N×N块的输入数据)采用预变换的权重。
特别是,该滤波器权重或系数的变换可通过芯片外计算系统执行且然后存储在存储器中。在操作期间,乘法器-累加器电路系统/流水线(即在运行中)使用通过本发明的电路系统和技术变换的N×N块的权重和关联的N×N块的输入数据来累加N×N乘积数据/元素。
分别参考图1A和图1B所示的逻辑和物理概要,在一个实施例中,输入数据(例如图像数据/像素)被存储在存储器中(例如以平面或层组织),输入数据包括二维阵列的输入或图像数据/像素(例如M×M,其中M=3)。每个二维阵列的输入或图像数据/像素(例如3×3阵列或集合的数据)与输出数据值相关/关联或对输出数据值有所贡献。在一个实施例中,图像数据/像素以“深度”平面或层(例如,K深度平面,其中,在一个实施例中,K=64;其中每个平面包括多个像素(例如,在一个实施例中,每个平面有9个像素))组织和/或存储在存储器中,并且输出数据在处理后存储在存储器中,且在一个实施例中,以输出“深度”平面或层(例如,L输出深度平面/层,其中,在一个实施例中,L=64)来组织。存储器还可存储与输入数据关联的输入权重或系数。在一个实施例中,输入权重或系数以M×M块或阵列存储在存储器中,其中K×L块或阵列覆盖输入和输出层的组合(例如所有组合)。
参考图1B,在乘法器-累加器电路系统的第一操作模式中,采用执行流水线的单个乘法器-累加器执行流水线,通过聚合来自K层的输入数据的输入数据值和关联输入权重值的K×M×M乘法的和,在单个输出层中累加1×1像素输出值。简言之,在该操作模式中,通过乘法器-累加器执行流水线的乘法器-累加器电路系统执行3×3(M×M)乘法和累加,产生Vijkl值(参见图1-“∑M”标记)。例如,与该单个输出数据值相关/关联或贡献于该单个输出数据值的所有图像数据被应用于乘法器-累加器执行流水线或被乘法器-累加器执行流水线采用,该乘法器-累加器执行流水线在进行处理后生成Vijkl值。此后,在一个实施例中,执行流水线进一步执行每个输入平面(参索引K)的Vijkl值的累加,产生Yijl值(参“∑K”标记)。通过这样的处理进行的这些累加操作的结果是单个像素值Yijl(1×1),其(例如与连同其他输出深度值(例如“L”索引值)被写入其他输出平面中的其他单个像素并行或同时地)被写入输出平面中。如上所述,由一个乘法器-累加器执行流水线进行的该处理可针对平面的每个像素而继续。此外,多个执行流水线中的每个执行流水线(参见例如图1B,其示出了多个中的一个执行流水线)处理单独的集合的所有dij输入像素/数据(在该示例性实施例中,64×(3×3)),该单独的集合的所有dij输入像素/数据决定关联的yij输出像素/数据(在该示例性实施例中,64×(1×1))。
特别是,有多个平面构成一个层(其可包括非视觉的图像数据和信息(例如层中物体的识别)),以及多个层构成一个帧。
参考图2A、2B和2C,在另一实施例中,在乘法器-累加器电路系统的第二操作模式中,采用N×N执行流水线来生成输出层(其包括多个平面,且在一个实施例中,包括额外的信息比如与识别有关的信息),其中二维阵列的输入或图像数据/像素从M×M阵列(例如M=3)被变换成N×N阵列(例如N=4)。在此,D-E转换电路系统实现用于转换M×M阵列的输入数据(例如图像数据/像素)以生成N×N阵列的输入或图像数据/像素的逻辑操作(参见图3A-3D)。
类似地,将二维阵列的输入/滤波器权重从M×M阵列(例如M=3)变换或转换成N×N阵列(例如N=4)。在一个实施例中,采用(例如在流水线架构中的)F-H转换电路系统来转换M×M阵列的滤波器权重或系数,以生成与输入值的关联位置适当相关/关联的N×N阵列的滤波器权重或系数(参见图4A-4D)。在一个实施例中,F-H转换逻辑电路系统布置在初始接收和存储M×M阵列的滤波器权重或系数的存储器和乘法器-累加器执行流水线之间。在操作中,从存储器读取滤波器权重或系数并将其提供给F-H转换电路系统,F-H转换电路系统将权重或系数从M×M阵列(例如M=3)转换成N×N阵列(例如N=4)。然后,滤波器权重或系数被提供给乘法器-累加器执行流水线,其中经由执行流水线的乘法器-累加器电路系统处理图像数据/像素。
在另一实施例中,存储器存储N×N阵列的输入权重或权重值,其被预计算(例如在芯片外或通过乘法器-累加器执行流水线外部的电路系统)且作为N×N阵列的滤波器权重或系数存储在存储器中。在该实施例中,F-H转换逻辑电路系统没有布置在存储器和乘法器-累加器执行流水线之间,和/或F-H转换操作在将滤波器权重或系数存储在存储器中之前执行。如在之前的实施例中,先转换滤波器权重,然后在乘法器-累加器执行流水线中采用该数据。特别是,然而,将预计算的N×N阵列的输入权重或权重值存储在存储器中(而不是在乘法器-累加器电路系统/流水线操作期间(即在运行中)计算这样的值)会增加这种输入权重或权重值所需的存储器存储,这进而会增加在该替代性实施例中采用的存储器的容量需求(例如,在该示例实施例中,增加会在N×N/M×M量级,或约16/9)。
继续参考图2A和图2B,在乘法器-累加器电路系统的第二操作模式中,多个执行流水线的乘法器-累加器电路系统执行来自输入平面(索引K)的值Uijklm(来自Eijk*Hklm乘法)到Zijlm值的累加,如由∑K标记所示,其中N×N(例如4×4)乘法替换或代替图1A和1B所示的乘法器-累加器电路系统的M×M(例如3×3)。每个二维阵列/集合的数据包括与输出数据值相关/关联或贡献于输出数据值的输入或图像数据/像素(例如所有输入或图像数据/像素)。也就是说,在第二操作模式中,多个流水线中的每个执行流水线的乘法器-累加器电路系统执行多个(例如16个)乘法,且在一个实施例中,在zij-yij转换块中实施或执行累加操作,从而将Yijl(2×2)处四个输出像素(与写入其他输出平面(其他L索引值)的其他Yijl2×2像素并行地)写入输出平面。
值得注意是,图2A和图2B分别是根据本发明特定方面的乘法器-累加器电路系统的乘法器-累加器执行流水线的第二操作模式的逻辑和物理概要。图2C是根据本发明特定方面的图2B所示的物理概要的示例时序概要。另外,图3A、4A和5A是根据本发明特定方面的图2B所示的物理概要的物理细节。此外,图3C、3D、4C、4D和5C示出了此处所示本发明特定方面的示例性实施例的转换逻辑电路系统的门/RTL细节。图3E、4E和5D示出了根据本发明特定方面的转换逻辑电路系统的特定排序细节。
特别是,图3A示出了图2A和图2B所示根据本发明特定方面的D-E转换逻辑的额外的细节。在此,在该示例性实施例中存储4×4D块的存储器(比如L2 SRAM存储器)可被分割或划分成16个物理块,因此可并行访问16个集合的数据以由乘法器-累加器电路系统的16个乘法器-累加器执行流水线使用。每个集合的输入数据(例如图像数据)包括四个4×4D块,其可从存储器的每个物理块以64个字被读取/访问(例如,在一个实施例中,L2 SRAM存储器的每次访问(例如可能需要1ns))。在此,可通过实施转换操作的16dij-eij转换电路系统将4×4D块转换成4×4E块。4×4E块被分离到16个流中,该16个流通过4×4E块的各个eij值/元素而被整理。在一个实施例中,该操作由eij提取逻辑电路系统来执行(每个流一个eij提取电路系统(在该示例性实施例中为16))。16个eij流中的每个可被引导至乘法器-累加器电路系统的16个乘法器-累加器执行流水线之一的e移入块(e-shift-in block)。
值得注意是,图3C和图3D分别示出了根据本发明特定方面的dij-eij转换逻辑电路系统的一个单元和eij提取逻辑电路系统的一个单元的额外的细节。在一个示例实施例中,dij-eij转换逻辑电路系统包括(i)16个左单元,(ii)用于dij和eij数据字的数据寄存器,(iii)用于为处理的操作排序的控制逻辑,以及(iv)用于转换(根据图2E的转换表)的加法器逻辑。在该示例性实施例中,eij提取逻辑电路系统还包括(i)16个右单元,(ii)用于dij和eij数据字的数据寄存器,(iii)用于为操作排序的控制逻辑,以及(iv)用于转换(根据图2E的转换表)的加法器逻辑。另外,dij-eij转换电路系统还包括竖直“EX_IN”和“EX_OUT”端口,其将所提取的eij值/元素携带到乘法器-累加器电路系统的关联或适当的乘法器-累加器执行流水线。注意,一些dij-eij转换处理可在eij提取单元中实施或执行。
图3E示出根据本发明特定方面的转换/提取流水线(水平轴)和各个单元的定时(竖直轴)的粗略图。在该示例性实施例中,水平轴在“X”位置{0,1,……15}中示出16个dij-eij转换单元,在“X”位置{16,17,……31}中示出16个eij提取单元。较低轴示出寄存器DREG_X和DREG_Y中处于流水线中其固定位置的4×4D数据块的dij元素/值。4×4E数据块从左向右传递,且各个元素/值被累加到eij元素中。该累加通过“1”字符的图形来控制,每个“1”指定了累加的时间和位置。在该示例性实施例中,一共需要64个累加来将4×4D块转换成4×4E块。例如,在T=9时,e23元素在X=10单元位置处使用DREG_X寄存器减去d11。
参考图2A、2B和4A,在一个实施例中,F-H转换逻辑布置在或结合到执行流水线电路系统中,以将滤波器权重或系数转换成Winograd格式。具体地,图4A示出了根据本发明特定方面的来自图2A和图2B的F-H转换逻辑的另外细节。存储器(例如L2 SRAM存储器)存储具有滤波器权重或系数(例如有限脉冲响应(FIR)型)的3×3F块。在该示例实施例中,存储器可被分割或划分成16个物理块,因此可通过/针对乘法器-累加器电路系统的16个乘法器-累加器执行流水线并行读取或访问16个集合的数据。在此,每个集合的数据包括四个3×3F块,其需要从每个物理L2块进行36次访问,在该示例中每次访问需要1ns。通过转换电路系统(在所示实施例中,16个fkl-hkl转换逻辑电路)将3×3F块转换成4×4H块(以Winograd格式)。这些块可被写入由16个乘法器-累加器执行流水线共享的存储器(例如L1 SRAM存储器)。此后,4×4H块的16个hkl元素/值中的每个被存储在乘法器-累加器电路系统的16个乘法器-累加器执行流水线之一的存储器(例如L0存储器,比如SRAM)中,且对于用于处理输入数据(例如图像/像素数据)的执行流水线中的每个的乘法器-累加器电路系统可用。
在该示例性实施例中,在从L1存储器中读取hkl元素/值且在存储器(如,16个L0存储器,在一个实施例中是SRAM)中写入hkl元素/值时,通过寻址序列来执行该整理。然而,作为替代,该整理可通过与图3A所示的eij提取逻辑电路系统相似的hkl提取逻辑电路系统来进行。特别是,在存储器之间(例如从L2存储器到L1存储器,以及从L1存储器到L0存储器)的转移的定时不像在存储器(例如L2存储器)和乘法器-累加器电路系统的执行流水线之间的输入和输出数据的转移那么关键。可从存储器一次读取权重值或数据且将其转移到乘法器-累加器电路系统的流水线,并且然后针对数千块的2×2输入像素中的每个,对权重值或数据重复使用。
图4C示出根据本发明特定方面的fkl-hkl转换电路系统的两个单元的示例性实施例的细节。特别是,在此没有像图3A和图3D中实现的逻辑电路系统那样实现提取逻辑电路系统。在一个示例性实施例中,fkl-hkl转换逻辑电路系统包括16个左单元和16个右单元。另外,fkl-hkl转换逻辑电路系统包括(i)用于fkl和hkl权重值的数据寄存器,(ii)用于排序的控制逻辑,以及(iii)用于(根据图2D所示的转换表)转换的加法器逻辑。
注意,图4C中的实施例具有10位精度的hkl累加路径,并利用饱和加法器来处理溢出(参见图4D)。替代性实施例(结合图7A所述)使用12位精度的hkl累加路径,这样就不需要包括饱和加法器来处理溢出;也就是说,12位精度累加路径可具有足够的数值范围来避免溢出。
图4E示出了根据本发明特定方面的转换/提取流水线(水平轴)和各个单元的定时(竖直轴)的粗略图。在该示例性实施例中,水平轴在“X”位置{0,1,……31}示出转换电路系统的32个fkl-hkl转换单元。较低轴示出寄存器DREG_X和DREG_Y中处于流水线中其固定位置的3×3F块的fkl元素/值。4×4H块从左传递到右,且各个元素/值累加到hij元素/值。该累加通过“1/2/4”字符的图形来控制,其中每个“1/2/4”指定累加的时间和位置。“1/2/4”字符的值分别指定*1.0、*0.5或*0.25比例因数。在该实施例中,一共采用64个累加来将3×3F块转换成4×4H块。例如,在时间T=0,h23元素在X=1单元位置处使用DREG_X寄存器减去0.5*f12。
参考图2A、2B和2C,在第二操作模式中,采用乘法器-累加器电路系统的N×N乘法器-累加器执行流水线来累加在单个输出层中的Q×Q像素输出数据/值,其中每个执行流水线聚合K个输入层的输入数据值和关联输入权重值的K次乘法的和。在一些实施例中,针对Q×Q输出数据/像素的N×N元素数据/值的聚合在N×N乘法器-累加器执行流水线外部实施/执行。在此,N×N乘积数据/元素与来自其他输入层的其他N×N乘积数据/元素累加—然而,在该实施例,在对累加的N×N乘积数据/元素执行Z-Y转换逻辑操作之后,各个元素/值被一起累加到最终的Q×Q输出数据/像素中(参见图5A-5D)。
简言之,图5A示出了根据本发明特定方面的图2A和图2B中所示的Z-Y转换电路系统的另外细节。在该示例性实施例中,16个zij流中的每个都引导自乘法器-累加器电路系统的16个乘法器-累加器执行流水线之一的z移出(z-shift-out)块。4×4Z块可从16个流组编,该16个流通过4×4Z块的各个zij元素/值被整理,这可通过插入逻辑电路系统(在此为16个zij插入逻辑电路系统)来实现。4×4Z块通过zij-yij转换逻辑电路系统被转换为2×2Y块。存储器(例如L2SRAM存储器)可将2×2Y块(例如以分割或划分形式)存储到16个物理块中,因此可针对16个乘法器-累加器执行流水线并行写入或存储16个集合的数据。在此,每个集合的数据可包括四个2×2Y块,其将包括从存储器(例如L2 SRAM存储器)的每个物理块的16次访问,在该示例性实施例中每次访问包括例如1ns。
注意,在一个实施例中,仅使用可用的L2 SRAM存储器的1/4来写入Y块数据;D块数据和执行流水线均采用64ns流水线周期时间来处理每个2×2像素步长的16×64 4×4D输入块。在该示例性实施例中,L2 SRAM存储器的较低Y访问带宽可便利于将Y存储器的物理块数目从16减少到4。
然而,作为替代,在超过64个输入平面被累加的情况下可使用额外带宽。例如,如果有128个输入平面(以及每乘法器-累加器电路系统的乘法器-累加器执行流水线64个MAC元素/值),则第一64个输入平面可被累加到存储器的特定区域(比如L2 SRAM存储器的“Y”区域)。然后,随着第二64个输入平面在乘法器-累加器电路系统的乘法器-累加器执行流水线中被累加,从Y2读取第一平面的Y值且将其传递到zij-yij转换逻辑电路系统上的累加端口。这两个集合的值可被加到一起且重新写入或存储到L2 SRAM存储器的Y区域。这在图5A中标为“V”的虚线所勾勒的路径中示出。(也参见图5E,其在每个示意性框图的图左侧示出了第一64个输入平面(在此也称为层)的累加)。累加值被存储在L2存储器的Y区域中。第二集合的64个输入平面被累加在图的右侧中。在被写入L2存储器的Y区域中之前,4×4Z块值通过zij-yij转换逻辑电路系统。在其通过转换逻辑时,从L2读取来自第一64个输入平面的Y累加值,且将其加载到zij-yij转换逻辑的累加输入端口。
值得注意的是,参考图5A,在输入层深度DD大于流水线深度时,可使用读取-修改-写入(RMW)选项。对于该选项,读取之前写入的Yij组(标记为“64a”的四个字)并将其传递到zij-yij转换器的累加器输入,以将其加到“64b”操作的四个字。这可与写入yij组分时共享,因为在每个16之外仅需要八个L2存储器周期(四个yij写入和四个yij读取)。
图5C示出根据本发明特定方面的zij插入逻辑电路系统的一个单元(图左部分)和zij-yij转换逻辑电路系统的一个单元(图右部分)的细节。zij插入逻辑电路系统包括(i)16个左单元,(ii)zij和yij数据字的数据寄存器,(iii)用于排序的控制逻辑,以及用于(根据图2F所示的转换表)转换的加法器逻辑。其还包括竖直“INSRT_IN”和“INSRT_OUT”端口,其运载来自乘法器-累加器电路系统的适当执行流水线的插入的zij元素/值。zij插入逻辑电路系统还可包括累加端口(图中较低左侧)—例如,在相比于执行流水线或流水线级有更多输入平面的情况下。zij-yij转换逻辑电路系统包括(i)16个左单元,(ii)用于dij和eij数据字的数据寄存器,(iii)用于排序的控制逻辑,以及(iv)用于(根据图2F所示的转换表)转换的加法器逻辑。注意,一些zij-yij转换处理可在zij插入单元中实施或执行;值得注意的是,在特定实施例中(包括在插入单元中实施一些zij-yij转换处理的实施例),zij-yij插入单元可包括一些与zij-yij转换单元相同的电路系统。
图5D示出了根据本发明特定方面的转换/提取流水线(水平轴)和各个单元的定时(竖直轴)的粗略图。在此,水平轴在“X”位置{0,1,……15}中示出16个zij插入单元,并且在“X”位置{16,17,……31}中示出16个zij-yij转换单元。较低轴示出寄存器ZREG_X和ZREG_Y中处于流水线中固定位置的4×4Z块的zij元素/值。2×2Y块从左向右传递,且各个元素/值累加到yij元素。该累加可通过“1”字符的图形来控制,每个“1”指定累加的时间和位置。一共需要36个累加来将4×4Z块转换成2×2Y块。例如,在时间T=0,y01元素在X=1单元位置使用DREG_X寄存器减去z23。
值得注意的是,参考图1A、1B、2A和2B,输出数据/像素组在示例性实施例中分别作为1×1输出元素组(图1A和图1B)和2×2输出元素组(图2A和图2B)示出,而不是更一般地作为P×P和Q×Q阵列示出。
简言之,参考图2C,根据本发明方面的图2B中的示例性物理概要的电路系统的示例性时序示出了乘法器-累加器电路系统的16个并行乘法器-累加器执行流水线和至存储器的连接路径的操作。在此,每对波形示出了16个流水线中的第一个和最后一个,其具有与乘法器-累加器电路系统的示例性乘法器-累加器执行流水线中的中间14个流水线相似的行为。在该示例性实施例中,每个操作组处理与64个层中的每个层的4×4D块相对应的16×64个输入数据字,其中每个流水线使用64个时钟周期(例如在该示例性实施例中每个周期可以是1ns)。顶部波形示出了D块通过D-E转换逻辑电路系统从存储器(例如L2 SRAM存储器)移动(经由读取和写入操作)到D-E转换操作。该运送步骤具有16ns的流水线延迟;在一部分数据可用时(在此当数据的1/4可用时),可以开始转换处理。
值得注意的是,一些阶段具有16ns流水线延迟和64ns流水线周期速率;换言之,在该示例性实施例中,每个阶段可在每64ns间隔中接受新的16×64字操作,然而可使其处理的48ns与下一阶段覆盖。D-E转换操作(由D-E转换电路系统实施)产生4×4E块。提取逻辑电路系统将来自每个4×4块的16个eij元素/值分离,将每个传递到16个执行流水线之一。64ns的4×4E块需要64ns来移入—这个阶段(以下随后的两个阶段)具有流水线延迟且流水线周期时间相同。
继续参考图2C,当E块的输入数据已被移入或应用到乘法器-累加器执行流水线的乘法器-累加器电路系统时,乘法器-累加器流水线结合起来执行16×64×64MAC操作(标记为“MAC操作”)。在此,16个乘法器-累加器流水线中的每个中的乘法器-累加器电路系统的64个乘法器和64个加法器各自在64ns间隔上每纳秒执行一个操作。这是在输入平面和输出平面的“K”和“L”索引上的累加。64ns的4×4Z块需要64ns来移出,该阶段能够与Z-Y插入阶段交叠达48ns。同样地,Z-Y转换阶段能够与L2写入阶段交叠达48ns。每个2×2像素块消耗64ns的流水线周期时间—在定时波形中,以深灰色示出接下来的2×2块。因此,在该示例中处理所有128k像素将需要1ms(~一百万ns)。在该示例性实施例中,整个16×64字操作具有18×16ns或288ns的流水线延迟。在该示例性实例中,288ns的流水线延迟比1ms的总操作延迟小约3472倍,因此对于系统的总吞吐量具有相对小的影响。
参考图2D,简单说,在图2D中示出有构成3×3FIR(有限脉冲响应)滤波矩阵“F”的九个fij元素/值。这些元素/值被转换成具有16个元素/值hij的4×4“H”矩阵。图2D的左上图示出了该转换的细节。每个hij元素都是通过对一到九个fij元素求和来创建的。白色背景上的黑色文本表示“加”,黑色背景上的白色文本表示“减”。一些元素/值按1/2或1/4被缩放。
参考图2E,在一个实施例中,每个2×2输入像素/数据块“D”被处理成2×2输出块。2×2输入数据块被一圈12个相邻的像素围绕,该一圈12个相邻的像素将用于滤波器操作,然而自身将在不同的迭代循环步骤中被处理。因此,一共有16个元素/值dij构成4×4输入数据块“D”。这些值/元素被转换成具有16个元素eij的4×4“E”矩阵。每个eij元素通过对四个dij元素求和而产生。白色背景上的黑色文本表示“加”,黑色背景上的白色文本表示“减”。
参考图2F,在该实施例中,4×4“H”矩阵和4×4输入数据块“D”逐个元素(逐个值)被乘在一起到具有16个zij元素的4×4输出块“Z”中。这些元素被转换成具有4个元素/值yij的2×2“Y”矩阵。图中左下图示出了该转换的细节。每个yij元素通过对九个zij元素求和来产生。白色背景上的黑色文本表示“加”,黑色背景上的白色文本表示“减”。这些yij元素/值,连同从具有属于其他输入平面的像素的输入块产生的yij元素/值,被累加到2×2输出像素块中。
注意,当在执行流水线和存储器之间的转换器块中发生zij-yij转换时(如在第一实施例中那样),在乘法器-累加器执行流水线中生成的4×4输出块“Z”不被立即累加到2×2输出像素中(如在执行流水线的第一操作模式的3×3滤波器中—参见图1A和图1B及关联文本)。这意味着每个执行流水线仅对4×4元素中的一个操作,而乘法器-累加器电路系统的16个关联的执行流水线并行或一起操作来处理整个4×4块。
值得注意的是,用来存储数据的存储器可以是例如动态和/或静态随机存取存储单元的块或阵列,比如DRAM、SRAM、闪存和/或MRAM;特别是,所有存储器类型及其组合旨在于落入本发明的范围内。在一个实施例中,第三和/或第四存储器将输入数据、输入权重值和输出数据值存储在SRAM(例如第三存储器,比如L2 SRAM存储器)和/或DRAM(例如第四存储器,L3 DRAM存储器)中。另外,第三和/或第四存储器可以存储N×N阵列的输入或图像数据/像素的变换后输入数据(在输入数据通过D-E转换逻辑操作进行变换之后)。在一个实施例中,“D”输入数据和“Y”输出数据可都被存储在第三(L2 SRAM)存储器中—每个数据参与不同的乘法器-累加(MAC)操作(例如64个不同的MAC操作),因此更受限的L2存储器带宽对于乘法器-累加器执行流水线的高得多的带宽来说是足够的。相反,执行流水线所需的权重数据带宽高得多,且需要将该数据存储在第一和/或第二存储器SRAM中(例如L0 SRAM存储器和L1 SRAM存储器),在一个实施例中,该第一和/或第二存储器SRAM可保留用于:(i)用于乘法器-累加器电路系统的N×N乘法器-累加器执行流水线的第一操作模式的“F”权重值,或(ii)用于乘法器-累加器电路系统的N×N乘法器-累加器执行流水线的第二操作模式的“H”权重值。
如上所述,在一个实施例中,D-E转换操作和/或Z-Y转换操作可分离(且不是在运行中)执行—尽管这样的实现方式会需要另外的读取/写入操作(例如针对L2操作的更多2x倍的读取/写入操作),这也会增加存储器(例如第三存储器(L2 SRAM存储器))的容量需求。
在运行中(即在乘法器-累加器执行流水线操作期间)变换滤波器权重或系数的情况下,第一和第二存储器还可存储变换后的权重值或数据。在一个实施例中,第三和/或第四存储器还可以是例如动态和/或静态随机存取存储单元的块或阵列,比如DRAM、SRAM、闪存和/或MRAM;确实,所有存储器类型及其组合都旨在于落入本发明的范围内。在优选实施例中,第一和/或第二存储器是SRAM(例如L0SRAM存储器和L1 SRAM存储器)。
值得注意的是,在此处(文本和附图)所阐述的示例性实施例中,乘法器-累加器执行流水线(其包括乘法器-累加器电路系统)有时标为“NMAX”或“NMAX流水线”或“MAC流水线”。
参考图6A、6B和6C,在另一实施例中,该架构将D-E转换逻辑/电路系统和Z-Y转换逻辑/电路系统结合到乘法器-累加器执行流水线中,或在乘法器-累加器执行流水线中执行其操作。也就是说,在该架构的一个实施例中,存储在存储器中(例如在包括二维M×M阵列的图像数据/像素的层中)的输入数据通过乘法器-累加器执行流水线从存储器读取并在流水线内经受变换或被转换(例如成N×N矩阵)。然而,在该实施例中,可在将滤波器权重施加或提供给乘法器-累加器执行流水线之前实施F-H转换逻辑或由其执行的操作。也就是说,在一个实施例中,在乘法器-累加器执行流水线中施加或采用滤波器权重之前,F-H转换逻辑将M×M输入权重块从M×M矩阵变换或转换成N×N矩阵。此后,每个乘法器-累加器流水线的电路系统使用关联的N×N滤波器权重来处理N×N输入数据。
如上所述,在该实施例中,Z-Y转换逻辑被结合到乘法器-累加器执行流水线中。也就是说,Z-Y转换电路系统的操作/处理在执行流水线中执行。乘法器-累加器电路系统可在执行流水线内累加N×N执行流水线的各个元素/值,因此处理可经由单个执行流水线而不是N×N执行流水线(例如16个执行流水线)来实施。这样,在乘法器-累加器执行流水线中各个元素/值被累加在一起到最终的Q×Q输出数据/像素中。也就是说,在该实施例中,N×N的各个元素/值的累加在执行流水线中实施,因此单个执行流水线(相对于图2A和图2B所示的N×N(例如16个)执行流水线)在Z-Y转换操作后累加N×N乘积数据/元素。
参考图6A和图6B,在该实施例中,在执行流水线操作之前转换或变换滤波器权重,且将其作为N×N块存储在存储器中。在该实施例中,通过乘法器-累加器电路系统以N×N块形式从存储器读取预处理和预变换的滤波器权重。每个乘法器-累加器执行流水线的乘法器-累加器电路系统在乘法器-累加器电路系统/流水线的操作和执行期间采用具有关联输入数据(在运行中由D-E转换逻辑电路系统的电路系统和技术从M×M块输入数据变换为N×N块输入数据)的变换后权重或系数。该权重转换或变换可通过与本发明的电路系统不同的电路系统(例如通过芯片外处理器或计算系统)单独执行。
在输入权重值在运行中(即在执行流水线操作期间)变换的情况下,该权重值可再次存储在第一和/或第二存储器中,第一和/或第二存储器在优选实施例中是SRAM(例如L0SRAM存储器和L1 SRAM存储器)。
值得注意的是,图6A是在乘法器-累加器电路系统/流水线的操作和执行期间采用具有关联输入数据(在运行中(即在乘法器-累加器电路系统的操作期间)由D-E转换逻辑电路系统的电路系统和技术从M×M块输入数据变换为N×N块输入数据)的变换后或转换后滤波器权重的乘法器-累加器电路系统的乘法器-累加器执行流水线的物理概要。在此,吞吐量可以与图2B所示的16个流水线相同,其通过采用以不同布置实施、组织和/或配置的几乎相同数目的乘法器和累加器来达成。
此外,图6B示出了一个流水线级的四个片的细节,其中四个片中的每个片处理(在图中从右侧接收的)4×4输入数据块D的四个输入流中的一个。在此,来自顶部的“H”输入接收用于4×4乘法的4×4H滤波矩阵的适当值。此外,该处理包括以“add3”块进行的D-E转换(经由转换电路系统),以“mul”块进行的4×4逐元素乘法和以“add4”块进行的Z-Y转换。输出数据块Y被传递到左侧用于进一步累加。特别是,图6B所示的乘法器-累加器电路系统的乘法器-累加器执行流水线示出了在单个流水线周期(为了清楚的目的)内执行的“add3/mul/add4”块。在一个实施例中,这些操作被分离或划分成两个或三个周期(结合或实施有另外的流水线寄存器)且通过适当的电路系统来实施。该替代做法可提高执行速率,代价是使排序稍微更复杂。
图6C示出了聚合到单个块中的、图6B的四个片。该块能够在每个流水线周期中接受4×4D块和4×4H块并产生2×2Y块(包括经由适当电路系统进行的D-E和Z-Y转换)。如果图6C中的64个块被聚合到单个执行路径中,这会提供与图2A的16个流水线(包括D-E和Z-Y转换逻辑电路系统)相同或类似的性能。注意,图1A和图1B中16个流水线中的每个流水线包含具有16个乘法/累加元件/电路的乘法器-累加器电路系统,因此在这两个实施例中的乘法元件/电路的总数目是相似的(例如,两个结构都包含1024个乘法器元件/电路)。
值得注意的是,在图和文本中所述和/或所示的伪代码、操作、配置、块/数据宽度、数据路径宽度、带宽、数据长度、值、处理和/或算法仅是示例性的。实际上,本发明不限于根据例如(一个或多个)执行流水线和/或示例性转换电路系统的示例性逻辑或物理概要配置所示和/或实施的特定伪代码、操作、块/数据宽度、数据路径宽度、带宽、值、处理和/或算法。
参考图7A,应注意,在存储器容量是个问题的情况下,执行转换是有利的,因为滤波器(权重)元素/值从L2存储器移到L1/L0存储器。元素/值的数目从九增加到16,这增加了L1/L0存储器的容量需求。这可能是适当的实现方式,因为L2存储器比L1/L0存储器占据更大的芯片面积。该运行中解决方案也被应用于输入和输出数据的D-E转换和Z-Y转换(分别参图7B和图7C)—如果数据在L2以E和Z形式保持在L2存储器中,其将需要4倍的L2容量。
另一问题可能产生于从3×3“F”矩阵生成的4×4“H”矩阵的准确度。fij元素/值的格式通常是8位有符号整数。fij元素/值到hij元素/值的转换意味着多达九个8位fij整数(按1/4缩放)必须被一起加到hij元素。hij数格式必须增加两个额外位来减小溢出机会(如果确实发生溢出,这可被提前检测到,且卷积神经网络(CNN)阶段可通过第一操作模式来处理)。此外,可能需要容纳两个小数位(在权重1/2和1/4的情况下)来处理在fij-hij转换期间的1/4缩放操作。
这将位格式增加到三个可能值。hij元素/值中的四个需要12位有符号整数格式,hij元素/值中的八个需要10b有符号整数格式,且hij元素/值中的四个需要8位有符号整数格式。这是每hij元素平均10b。L1/L0存储器可针对10位平均情况设计,其具有特殊的共享逻辑,使得h11、h21、h12、h22元素/值所需的额外两位存储在h00、h03、h30、h33元素的存储器单元中(参见图7A)。这减小了L0/L1存储器所使用或所需的存储区域。
在数据累加路径中也可能需要增量精度,然而这些对于输入和输出数据值一般已使用16位和32位有符号整数精度来实现。因此,现有的格式一般可处理额外的两位或四位的精度范围。如果输入或输出溢出是关心的问题,且格式不能扩展两位或四位,那么可用添加的饱和逻辑来增强转换和累加硬件。当发生溢出时,会损失一些准确度,然而CNN结果将是几乎相同的。
下采样可以是CNN处理期间可能需要的重要操作。这减少了输入平面的像素数目,因为其被转移到输出平面。一般,输出平面的数目会增加,因此每个级的像素数目维持几乎恒定。
本发明可采用下采样处理/技术。简言之,参考图8,在左侧示出了用于第一操作模式的下采样。一般,以3×3滤波器操作对1/4的像素进行滤波,从而产生输出像素。使用其余(未滤波)的输入像素来执行3×3滤波器操作,然而其余(未滤波)的输入像素本身不被滤波和写入输出平面。注意,为了清楚的目的,未写入的输出位置在图中示为白色。实际上,实际像素被写入相邻存储器位置,使得输出平面占据存储器的邻接的区域。
右侧的针对第二操作模式(即实现Winograd处理技术)的下采样可能不能高效处理下采样情况,因为其对2×2输入像素块操作。然而,其可如图右侧所示处理1/4的2×2输入块(黑色像素)。换言之,以4×4滤波器操作对1/4的像素进行滤波(黑色像素)从而产生输出像素(黑色像素)。输入像素用来执行4×4滤波器操作,然而其自身不被滤波和写入输出平面。注意,未写入的输出位置在图中被示为白色—这样做有助于使图8清晰。再一次,实际像素(黑色像素)被写入相邻存储器位置,使得输出平面占据存储器的邻接的区域。
该替代的下采样方法将像素数目减少了1/4,且可结合Winograd技术在第二操作模式中实施。针对输入像素的采样的不同阶段划分将需要不同的训练来使权重被调整,所以对于CNN阶段有相似的滤波功能。然而该额外训练工作的成本会被下采样的CNN阶段的改进性能补偿。
注意,相同的方法可应用于执行上采样的CNN阶段,上采样增加每图像平面的像素数目。针对此的排序将看起来类似于下采样操作,然而是相反的。额外的输出像素将通过相邻像素的插值而生成。
参考图9,关于下采样操作,用于执行流水线的寻址和排序逻辑管理读取输入的4×4D块和写入输出的2×2Y块的L2存储器。在此,在左侧示出步幅(stride)=1(没有下采样),在右侧示出步幅=2(下采样)。
对于步幅=1,一步幅的输入像素的(△Dh×Dw)被读取且转换成一串4×4D块。块被转换成4×4E块,4×4E块被传递到NMAX执行流水线。结果产生的4×4Z块被转换成2×2Y块,且被写入一步幅的输出像素(△Yh×Yw)。
对于修改后的步幅=2,一步幅的输入像素(△Dh×Dw)被读取且转换成一串4×4D块,然而仅一半的2×2像素块被转移;控制逻辑抑制交替的2×2块。
块被转换成4×4E块,4×4E块被传递到NMAX执行流水线。再一次,仅一半的2×2像素块被转移;控制逻辑抑制交替的2×2块。结果产生的4×4Z块被转换成2×2Y块。再一次,仅一半的2×2像素块被转移;控制逻辑抑制交替的2×2块。2×2输出块被写入一步幅的输出像素(△Yh×Yw)—一般,Yw宽度缩放1/2,使得输出块在邻接的区域中(没有间隙)。
在此描述和示出了许多发明。已描述和示出本发明的特定实施例、特征、属性和优点,应理解从说明书和图示中本发明的许多其他以及不同和/或相似的实施例、特征、属性和优点是清楚的。这样,本文所述和所示的本发明的实施例、特征、属性和优点不是穷举,且应理解本发明的这样的其他、相似以及不同的实施例、特征、属性和优点也在本发明的范围内。
例如,尽管所示实施例及与其关联的文本描述和示出了多个存储器(例如L3存储器、L2存储器、L1存储器、L0存储器),一个或多个这些存储器可被省略(例如L3存储器和/或L0存储器),以及/或者一个或多个这些存储器可与一个或多个其他存储器相结合/合并(例如L3存储器可结合进L2存储器中,L2存储器可与L1存储器相结合,和/或L1存储器可与L0存储器相结合)。这样,本发明不限于在此阐述的示例性实施例,包括关于不同的存储器。
另外,参考图10A和图10B,一个或多个集成电路包括启用和实施多个操作模式中的一个的电路系统,多个操作模式包括例如第一操作模式(参见例如图1A或图1B)和第二操作模式(参见例如图2A和图2B)。例如,通过模式控制电路系统输出模式或模态控制信号“MODE”,来启用用来实施第一操作模式(例如参图1A和图1B)的电路系统和技术,在第一操作模式中,采用执行流水线中的单个执行流水线和/或每个执行流水线来通过将来自K层的输入数据的输入数据值和关联的输入权重值的K×M×M乘法的和聚合而在单个输出层中累加1×1像素输出值。在实现第一操作模式的一个示例性实施例中,决定yij处64×(1×1)输出像素的dij处的64×(3×3)输入像素都通过单个执行流水线来处理。
如上所述,在第一操作模式中,通过乘法器-累加器执行流水线的乘法器-累加器电路系统执行M×M(例如3×3)乘法和累加,这产生yij值(参见图1B)。在一个实施例中,在生成yij值时,与该单个输出数据值相关/关联或贡献于该单个输出数据值的集合的数据的所有图像数据被应用于乘法器-累加器执行流水线之一或被乘法器-累加器执行流水线之一采用。如上所述,处理可针对平面的每个像素继续。此外,多个执行流水线中的每个执行流水线(参见例如图1B,其示出了多个中的一个执行流水线)处理决定关联yij输出像素/数据(在该实施例中,64×(1×1))的单独的集合的所有dij输入像素/数据(在该示例性实施例中,64×(3×3))。
模式控制信号可输出模式或模态控制信号“MODE”来启用用来实施第二操作模式(参见例如图2A和图2B)的电路系统和技术,包括以上详细描述的转换电路系统。例如,多个执行流水线中的乘法器-累加器电路系统执行来自输入平面(索引K)的值Uijklm(来自Eijk*Hklm乘法)到Zijlm值的累加,如∑K标记所示—其中N×N(例如4×4)乘法取代或代替图1A和图1B所示的乘法器-累加器电路系统的M×M(例如3×3)。也就是说,在第二操作模式的一个示例中,通过16个执行流水线来处理决定yij处的关联64×(2×2)输出像素的dij处64×(4×4)输入像素/数据。执行流水线的乘法器-累加器电路系统执行多个乘法(例如16个),且在一个实施例中累加操作在zij-yij转换块中实施或执行,借此Yijl(2×2)处的四个输出像素(与被写入其他输出平面(其他L索引值)的其他Yijl 2×2像素并行的)被写入输出平面。在此,多个执行流水线中的乘法器-累加器电路系统在该操作模式中被启用时可将一个或多个转换电路系统结合进数据路径中(在必要时)来使用Winograd技术执行数据处理操作(例如如本文所述)。
在一个实施例中,模式选择电路系统可以是一次性可编程的;在另一实施例中,模式选择电路系统是多于一次可编程的(即多次)。模式选择电路系统可例如原地(即在集成电路操作期间)、在制造时和/或在通电时或通电期间、启动时或启动期间、初始化时或初始化期间、重新初始化时或重新初始化期间、配置时或配置期间、重新配置时或重新配置期间等被编程。例如,模式选择电路系统可从内部或外部电路系统(即一个或多个集成电路(例如主机/处理器)的外部)接收模式选择信号,该内部或外部电路系统包括一个或多个数据存储元件(例如一个或多个存储单元、寄存器、触发器、锁存器、存储器块/阵列)、一个或多个输入引脚/导体、查找表LUT(任何类型)、处理器或控制器和/或分离的控制逻辑。模式选择电路系统响应于此,可采用(一个或多个)这样的信号来启用或禁用所选择的处理电路系统(可视情况而定)且从而实施(例如原地和/或在通电时或在通电期间、启动时或启动期间、初始化时或初始化期间、重新初始化时或重新初始化期间、配置时或配置期间、重新配置时或重新配置期间等)处理模式之一(例如Winograd技术)。
实际上,本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。此外,本发明的每个方面和/或其实施例可单独使用或与本发明的其他方面和/或其实施例中的一个或多个结合使用。
值得注意的是,就其行为、寄存器传输、逻辑组件、晶体管、布局几何形状和/或其他特性而言,本文公开的各种电路、电路系统和技术可以使用计算机辅助设计工具来描述,并表达(或表示)为体现在各种计算机可读介质中的数据和/或指令。在其中可实现这样的电路、电路系统、布局和路由表达的文件和其他对象的格式包括但不限于:支持行为语言比如C、Verilog和HLDL的格式,支持寄存器级描述语言比如RTL的格式,以及支持几何描述语言比如GDSII、GDSIII、GDSIV、CIF、MEBES的格式,以及现在已知或以后发展出来的任何其他格式和/或语言。其中可体现这样的格式化的数据和/或指令的计算机可读介质包括但不限于各种形式的非易失性存储介质(例如光学、磁或半导体存储介质)和可用来通过无线、光学或有线信令介质或其任何组合来传送这样的格式化数据和/或指令的载波。通过载波传送这样的格式化的数据和/或指令的例子包括但不限于经由一个或多个数据传输协议(比如HTTP、FTP、SMTP等)在因特网和/或其他计算机网络上传送(上载、下载、电子邮件等)。
实际上,在经由一个或多个计算机可读介质在计算机系统内接收时,可结合一个或多个其他计算机程序(包括但不限于网表生成程序、布局和路由程序等)的执行,由计算机系统内的处理实体(例如一个或多个处理器)来处理上述电路的这种基于数据和/或指令的表达,以生成这种电路的物理表现的表示或图像。该表示或图像然后可用在装置制造中,比如通过使得在装置制造过程中能够生成用于形成电路的各种组件的一个或多个掩膜。
此外,本文公开的各种电路、电路系统和技术可使用计算机辅助设计和/或测试工具经由仿真来表示。电路、电路系统、布局和路由和/或由此实现的技术的仿真可通过计算机系统来实施,在计算机系统中,经由计算机系统模仿、复制和/或预测这样的电路、电路系统、布局和由其实现的技术的特征和操作。本发明还涉及对发明的电路、电路系统和/或由其实现的技术的这种仿真,且因此旨在落入本发明的范围内。与这样的仿真和/或测试工具相对应的计算机可读介质也旨在于落入本发明的范围内。
值得注意的是,本文提及“一个实施例”或“实施例”(等)指的是结合实施例描述的特定特征、结构或特性可以被包括、被采用和/或被结合在本发明的一个、一些或所有实施例中。在说明书中使用或出现短语“在一个实施例中”或“在另一实施例中”(等)不是指同一实施例,也不是指必须与一个或多个其他实施例相互排斥的分离或替代性实施例,也不限于单个排他性实施例。这也适用于术语“实现方式”。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。此外,本发明的每个方面和/或其实施例可单独使用或结合本发明的一个或多个其他方面和/或其实施例来使用。为了简便,本文没有单独讨论和/或示出特定置换和组合。
此外,本文描述为“示例性”的实施例或实现方式不应被理解为例如相对于其他实施例或实现方式是理想化的、优选的或有利的,而是旨在于传达或表示该(一个或多个)实施例是(一个或多个)示例性实施例。
尽管在特定具体方面描述了本发明,然而对于本领域技术人员来说,许多其他修改和变化将是清楚的。因此应当理解,在不脱离本发明的范围和精神的情况下,可以以不同于具体描述的方式实施本发明。因此,本发明的实施例在所有方面都应被视为是说明性/示例性而非限制性的。
术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”、“包括(including)”、“具有(have)”和“具有(having)”或其任何其他变体旨在于涵盖非排他性的包含,使得包括一列的部件或元素的过程、方法、电路、物品,或设备不仅包括这些部件或元素,还可包括未明确列出或这些过程、方法、物品或设备固有的其他部件或元素。此外,本文使用的术语“连接(connect)”、“连接(connected)”、“连接(connecting)”或“连接(connection)”应广义地解释为包括直接或间接(例如,通过一个或多个导体和/或中间设备/元件(有源或无源)和/或通过电感或电容耦接)),除非另有意图(例如,使用术语“直接连接(directly connect)”或“直接连接(directly connected)”)。
本文中的术语“一”和“一个”不表示数量的限制,而是表示存在至少一个所引用的项目。此外,术语“第一”、“第二”等在本文中不表示任何顺序、数量或重要性,而是用于将一个元件/电路/特征与另一个区分开来。
此外,术语“集成电路”尤其是指任何集成电路,包括例如通用集成电路、处理器、控制器、状态机、门阵列、SoC、PGA和/或FPGA。术语“集成电路”还指例如包括嵌入式FPGA的处理器、控制器、状态机和SoC。
此外,术语“电路系统”尤其是指电路(无论是集成的还是其他的)、一组这样的电路、一个或多个处理器、一个或多个状态机、一个或多个实施软件的处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列,或一个或多个电路(无论是集成的还是其他方式)、一个或多个状态机、一个或多个处理器、一个或多个实施软件的处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列的组合。术语“数据”尤其是指模拟或数字形式的(一个或多个)电流或电压信号(复数或单数),其可以是单个位(等)或多个位(等)。
在权利要求中,术语“MAC电路”是指乘法器-累加器流水线的乘法器-累加器电路系统的乘法-累加器电路。例如,在美国专利申请No.16/545,345的图1A-1C的示例性实施例以及与其关联的文本中描述和图示了乘法-累加器电路。然而,值得注意的是,术语“MAC电路”不限于根据例如美国专利申请No.16/545,345的图1A-1C的示例性实施例示出和/或描述的特定电路、逻辑、块、功能和/或物理图、块/数据宽度、数据路径宽度、带宽和过程,如上所述,该美国专利申请通过引用包括在此。
Claims (20)
1.一种集成电路,包括:
存储器,用于存储图像数据和滤波器权重;
多个乘法-累加器执行流水线,每个乘法-累加器执行流水线包括乘法-累加器电路系统且耦接到所述存储器以接收(i)图像数据和(ii)滤波器权重,其中每个乘法-累加器执行流水线经由多个乘法和累加操作使用关联的滤波器权重来处理所述图像数据;
其中,在操作中,所述多个乘法-累加器执行流水线中的每个乘法-累加器执行流水线的乘法-累加器电路系统接收不同的图像数据集合,其中每个集合包括多个图像数据,并且使用与接收的图像数据集合关联的滤波器权重、经由与其他乘法-累加器执行流水线的乘法-累加器电路系统并行地执行多个乘法和累加操作来处理与之关联的图像数据集合,从而生成输出数据;以及
其中,每个图像数据集合包括与从其生成的输出数据相关的图像的所有。
2.根据权利要求1所述的集成电路,其中:
所述存储器将每个图像数据集合的多个图像数据存储为二维阵列的图像数据。
3.根据权利要求1所述的集成电路,其中:
每个图像数据集合的图像数据是与所述输出数据相关的所有图像数据,所述输出数据与该图像数据集合关联。
4.根据权利要求1所述的集成电路,其中:
所述存储器将所述滤波器权重存储为二维阵列的滤波器权重。
5.根据权利要求1所述的集成电路,其中:
所述存储器包括存储所述图像数据的第一存储器和存储所述滤波器权重的第二存储器,并且其中所述第一存储器将包括多个图像数据的每个集合存储为二维阵列的图像数据。
6.根据权利要求5所述的集成电路,其中:
所述存储器包括存储每个图像数据集合的第一存储器和存储所述滤波器权重的第二存储器,并且其中所述第二存储器将与每个图像数据集合关联的滤波器权重存储为二维阵列的滤波器权重。
7.一种集成电路,包括:
存储器,用于存储图像数据和滤波器权重;
多个乘法-累加器执行流水线,每个乘法-累加器执行流水线耦接到所述存储器以接收(i)图像数据和(ii)滤波器权重,其中每个乘法-累加器执行流水线包括经由多个乘法和累加操作使用关联的滤波器权重来处理所述图像数据的乘法-累加器电路系统;
第一转换电路系统,耦接到所述存储器和所述多个乘法-累加器执行流水线中每个的输入,以接收所述图像数据、将所述图像数据转换为Winograd格式以及将Winograd图像数据集合输出到所述多个乘法-累加器执行流水线中的每个;
其中,在操作中,每个乘法-累加器执行流水线的乘法-累加器电路系统被配置为:(i)从所述第一转换电路系统接收Winograd图像数据集合,以及(ii)使用与Winograd图像数据集合关联的滤波器权重、经由执行多个乘法和累加操作来处理Winograd图像数据集合,以及(iii)生成与Winograd图像数据集合相对应的输出数据;以及
第二转换电路系统,耦接到所述乘法-累加器执行流水线的每个的输出,以:(i)从每个乘法-累加器执行流水线的乘法-累加器电路系统接收所述输出数据,以及(ii)将所述输出数据转换为非Winograd格式。
8.根据权利要求7所述的集成电路,其中:
所述存储器将所述图像数据存储为多个二维M×M阵列的图像数据。
9.根据权利要求8所述的集成电路,其中:
所述第一转换电路系统将所述图像数据从多个二维M×M阵列的图像数据转换为多个N×N阵列的图像数据,其中N和M是整数并且N大于M。
10.根据权利要求7所述的集成电路,还包括:
第三转换电路系统,耦接到所述存储器和多个乘法-累加器执行流水线,以:(i)从存储器接收滤波器权重,(ii)将所述滤波器权重转换为Winograd格式,以及(iii)将Winograd格式的滤波器权重输出到多个乘法-累加器执行流水线。
11.根据权利要求10所述的集成电路,其中:
所述第三转换电路系统将所述滤波器权重从多个M×M阵列的数据转换为多个N×N阵列的数据,其中N和M是整数且N大于M。
12.根据权利要求7所述的集成电路,其中:
所述第二转换电路系统将每个乘法-累加器执行流水线的乘法-累加器电路系统的输出数据从N×N阵列的数据转换为P×P阵列的数据,其中N和P是整数且N大于P。
13.根据权利要求7所述的集成电路,其中:
所述存储器包括存储所述图像数据的第一存储器和存储所述滤波器权重的第二存储器,并且其中所述第一存储器将所述图像数据存储为二维阵列的图像数据。
14.根据权利要求7所述的集成电路,其中:
所述存储器(i)将所述图像数据存储为M×M阵列的数据,并且(ii)将所述滤波器权重存储为N×N阵列的数据;以及
所述第一转换电路系统将所述图像数据从M×M阵列的图像数据转换为N×N阵列的图像数据,其中N和M是整数且N大于M。
15.根据权利要求14所述的集成电路,其中:
所述存储器包括存储所述图像数据的第一存储器和存储所述滤波器权重的第二存储器。
16.一种集成电路,包括:
多个乘法-累加器执行流水线,每个乘法-累加器执行流水线包括执行多个乘法和累加操作的乘法-累加器执行电路系统;
模式选择电路系统,电耦接到所述多个乘法-累加器执行流水线,以将所述多个乘法-累加器执行流水线配置为在第一模式下操作或在第二模式下操作,其中:
在第一模式中,所述多个乘法-累加器执行流水线中的一个乘法-累加器执行流水线的乘法-累加器电路系统被配置为:(i)接收第一图像数据集合的图像数据,(ii)使用与所述第一图像数据集合关联的滤波器权重,经由执行多个乘法和累加操作来处理所述第一图像数据集合,以及(iii)生成与被处理的图像数据相对应的输出数据;其中所述第一图像数据集合包括与所述输出数据相关的所有图像数据;以及
在第二模式中,所述模式选择电路系统启用第一转换电路系统、所述多个乘法-累加器执行流水线中的第一多个乘法-累加器执行流水线以及第二转换电路系统,其中:
所述第一转换电路系统(i)接收图像数据,(ii)将所述图像数据转换为Winograd格式,以及(iii)将Winograd图像数据集合输出到所述第一多个乘法-累加器执行流水线中的每个乘法-累加器执行流水线,
所述多个乘法-累加器执行流水线中的每个乘法-累加器执行流水线的乘法-累加器电路系统被配置为(i)从所述第一转换电路系统接收Winograd图像数据集合,(ii)使用与所接收的Winograd图像数据集合关联的滤波器权重、经由执行多个乘法和累加操作来处理所接收的Winograd图像数据集合,以及(iii)生成输出数据;其中所述Winograd图像数据集合的所有图像数据与所述输出数据相关,以及
所述第二转换电路系统耦接到所述第一多个乘法-累加器执行流水线中的每个乘法-累加器执行流水线的输出,从而:(i)从所述第一多个乘法-累加器执行流水线的每个乘法-累加器执行流水线接收所述输出数据,以及(ii)将来自所述第一多个乘法-累加器执行流水线的每个乘法-累加器执行流水线的所述输出数据转换为非Winograd格式。
17.根据权利要求16所述的集成电路,其中:
存储器,用于存储图像数据和滤波器权重,其中所述存储器将所述图像数据存储为多个M×M阵列的图像数据。
18.根据权利要求17所述的集成电路,其中:
所述第一转换电路系统将图像数据从所述多个M×M阵列的图像数据转换为多个N×N阵列的图像数据,其中N和M是整数且N大于M。
19.根据权利要求16所述的集成电路,还包括:
存储器,以及
第三转换电路系统,其中所述模式选择电路系统在所述第二模式下将所述第三转换电路系统电耦接在所述存储器和所述第一多个乘法-累加器执行流水线之间,以及其中所述第三转换电路系统从存储器接收滤波器权重、将所述滤波器权重转换为Winograd格式并将所述滤波器权重输出到所述第一多个乘法-累加器执行流水线。
20.根据权利要求19所述的集成电路,其中:
所述第三转换电路系统将所述滤波器权重从多个M×M阵列的数据转换为多个N×N阵列的数据,其中N和M是整数且N大于M。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962823161P | 2019-03-25 | 2019-03-25 | |
US62/823,161 | 2019-03-25 | ||
US16/796,111 US11194585B2 (en) | 2019-03-25 | 2020-02-20 | Multiplier-accumulator circuitry having processing pipelines and methods of operating same |
US16/796,111 | 2020-02-20 | ||
PCT/US2020/020545 WO2020197699A1 (en) | 2019-03-25 | 2020-02-29 | Multiplier-accumulator circuitry having processing pipelines and methods of operating same |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113396387A true CN113396387A (zh) | 2021-09-14 |
Family
ID=72607250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080010361.8A Pending CN113396387A (zh) | 2019-03-25 | 2020-02-29 | 具有处理流水线的乘法器-累加器电路系统以及操作该电路系统的方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11194585B2 (zh) |
EP (1) | EP3948518A4 (zh) |
CN (1) | CN113396387A (zh) |
WO (1) | WO2020197699A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194585B2 (en) | 2019-03-25 | 2021-12-07 | Flex Logix Technologies, Inc. | Multiplier-accumulator circuitry having processing pipelines and methods of operating same |
US11455368B2 (en) * | 2019-10-02 | 2022-09-27 | Flex Logix Technologies, Inc. | MAC processing pipeline having conversion circuitry, and methods of operating same |
US20220171604A1 (en) * | 2020-12-02 | 2022-06-02 | Flex Logix Technologies, Inc. | Multiplier Circuit Array, MAC and MAC Pipeline including Same, and Methods of Configuring Same |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4958312A (en) | 1987-11-09 | 1990-09-18 | Lsi Logic Corporation | Digital multiplier circuit and a digital multiplier-accumulator circuit which preloads and accumulates subresults |
EP0892344B1 (en) | 1989-05-04 | 2002-08-21 | Texas Instruments Incorporated | Data processing device with context switching capability |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US7085795B2 (en) * | 2001-10-29 | 2006-08-01 | Intel Corporation | Apparatus and method for efficient filtering and convolution of content data |
JP3524250B2 (ja) | 1995-11-27 | 2004-05-10 | キヤノン株式会社 | デジタル画像処理プロセッサ |
DE69927075T2 (de) | 1998-02-04 | 2006-06-14 | Texas Instruments Inc | Rekonfigurierbarer Koprozessor mit mehreren Multiplizier-Akkumulier-Einheiten |
US6115729A (en) | 1998-08-20 | 2000-09-05 | Arm Limited | Floating point multiply-accumulate unit |
US7401205B1 (en) | 1999-08-13 | 2008-07-15 | Mips Technologies, Inc. | High performance RISC instruction set digital signal processor having circular buffer and looping controls |
US6611856B1 (en) | 1999-12-23 | 2003-08-26 | Intel Corporation | Processing multiply-accumulate operations in a single cycle |
US7346644B1 (en) | 2000-09-18 | 2008-03-18 | Altera Corporation | Devices and methods with programmable logic and digital signal processing regions |
US20020065860A1 (en) * | 2000-10-04 | 2002-05-30 | Grisenthwaite Richard Roy | Data processing apparatus and method for saturating data values |
US7107305B2 (en) | 2001-10-05 | 2006-09-12 | Intel Corporation | Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions |
US7624138B2 (en) * | 2001-10-29 | 2009-11-24 | Intel Corporation | Method and apparatus for efficient integer transform |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
US7698358B1 (en) | 2003-12-24 | 2010-04-13 | Altera Corporation | Programmable logic device with specialized functional block |
US7355603B2 (en) | 2004-08-04 | 2008-04-08 | Nvidia Corporation | Filtering unit for floating-point texture data |
US7299342B2 (en) | 2005-05-24 | 2007-11-20 | Coresonic Ab | Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement |
US7930336B2 (en) | 2006-12-05 | 2011-04-19 | Altera Corporation | Large multiplier for programmable logic device |
US8645450B1 (en) | 2007-03-02 | 2014-02-04 | Altera Corporation | Multiplier-accumulator circuitry and methods |
US8051124B2 (en) | 2007-07-19 | 2011-11-01 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
JP2009075676A (ja) * | 2007-09-18 | 2009-04-09 | Nec Electronics Corp | マイクロプロセッサ |
JP4881270B2 (ja) | 2007-09-26 | 2012-02-22 | ルネサスエレクトロニクス株式会社 | フィルタ演算器及び動き補償装置 |
US9419620B2 (en) | 2008-07-22 | 2016-08-16 | Nytell Software LLC | Field programmable object array and video compression processor for video data compression |
US8549055B2 (en) | 2009-03-03 | 2013-10-01 | Altera Corporation | Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry |
US8706791B2 (en) | 2009-07-30 | 2014-04-22 | Ceva D.S.P. Ltd. | Low power fir filter in multi-MAC architecture |
US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
CN103543984B (zh) | 2012-07-11 | 2016-08-10 | 世意法(北京)半导体研发有限责任公司 | 用于特殊相关应用的修改型平衡吞吐量数据路径架构 |
US9507565B1 (en) | 2014-02-14 | 2016-11-29 | Altera Corporation | Programmable device implementing fixed and floating point functionality in a mixed architecture |
US9747110B2 (en) | 2015-05-20 | 2017-08-29 | Altera Corporation | Pipelined cascaded digital signal processing structures and methods |
US11244225B2 (en) | 2015-07-10 | 2022-02-08 | Samsung Electronics Co., Ltd. | Neural network processor configurable using macro instructions |
US10037192B2 (en) | 2015-10-21 | 2018-07-31 | Altera Corporation | Methods and apparatus for performing product series operations in multiplier accumulator blocks |
US20170116693A1 (en) | 2015-10-27 | 2017-04-27 | Verimatrix, Inc. | Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger |
US10042606B2 (en) | 2016-05-03 | 2018-08-07 | Altera Corporation | Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks |
US20170344876A1 (en) | 2016-05-31 | 2017-11-30 | Samsung Electronics Co., Ltd. | Efficient sparse parallel winograd-based convolution scheme |
US10042607B2 (en) | 2016-08-22 | 2018-08-07 | Altera Corporation | Variable precision floating-point multiplier |
US10055195B2 (en) | 2016-09-20 | 2018-08-21 | Altera Corporation | Variable precision floating-point adder and subtractor |
US10073676B2 (en) | 2016-09-21 | 2018-09-11 | Altera Corporation | Reduced floating-point precision arithmetic circuitry |
US20180121168A1 (en) | 2016-10-27 | 2018-05-03 | Altera Corporation | Denormalization in multi-precision floating-point arithmetic circuitry |
US10395165B2 (en) | 2016-12-01 | 2019-08-27 | Via Alliance Semiconductor Co., Ltd | Neural network unit with neural memory and array of neural processing units that collectively perform multi-word distance rotates of row of data received from neural memory |
US20190392297A1 (en) | 2016-12-30 | 2019-12-26 | Intel Corporation | Deep learning hardware |
US10140574B2 (en) | 2016-12-31 | 2018-11-27 | Via Alliance Semiconductor Co., Ltd | Neural network unit with segmentable array width rotator and re-shapeable weight memory to match segment width to provide common weights to multiple rotator segments |
US10175944B2 (en) | 2017-04-12 | 2019-01-08 | Intel Corporation | Mixed-precision floating-point arithmetic circuitry in specialized processing blocks |
US10410098B2 (en) * | 2017-04-24 | 2019-09-10 | Intel Corporation | Compute optimizations for neural networks |
US10942706B2 (en) | 2017-05-05 | 2021-03-09 | Intel Corporation | Implementation of floating-point trigonometric functions in an integrated circuit device |
US11010131B2 (en) | 2017-09-14 | 2021-05-18 | Intel Corporation | Floating-point adder circuitry with subnormal support |
US10977001B2 (en) | 2018-02-05 | 2021-04-13 | Mediatek Inc. | Asymmetric quantization of multiple-and-accumulate operations in deep learning processing |
WO2020046642A1 (en) | 2018-08-31 | 2020-03-05 | Flex Logix Technologies, Inc. | Multiplier-accumulator circuit, logic tile architecture for multiply-accumulate and ic including logic tile array |
WO2020059073A1 (ja) * | 2018-09-20 | 2020-03-26 | 株式会社Pfu | 情報処理装置、方法及びプログラム |
US10853067B2 (en) | 2018-09-27 | 2020-12-01 | Intel Corporation | Computer processor for higher precision computations using a mixed-precision decomposition of operations |
US11194585B2 (en) | 2019-03-25 | 2021-12-07 | Flex Logix Technologies, Inc. | Multiplier-accumulator circuitry having processing pipelines and methods of operating same |
US11301213B2 (en) | 2019-06-24 | 2022-04-12 | Intel Corporation | Reduced latency multiplier circuitry for very large numbers |
US11249726B2 (en) | 2019-09-10 | 2022-02-15 | Intel Corporation | Integrated circuits with modular multiplication circuitry |
US11656872B2 (en) | 2019-12-13 | 2023-05-23 | Intel Corporation | Systems and methods for loading weights into a tensor processing block |
-
2020
- 2020-02-20 US US16/796,111 patent/US11194585B2/en active Active
- 2020-02-29 EP EP20777656.8A patent/EP3948518A4/en active Pending
- 2020-02-29 WO PCT/US2020/020545 patent/WO2020197699A1/en unknown
- 2020-02-29 CN CN202080010361.8A patent/CN113396387A/zh active Pending
-
2021
- 2021-11-18 US US17/529,421 patent/US11650824B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3948518A1 (en) | 2022-02-09 |
EP3948518A4 (en) | 2022-06-01 |
WO2020197699A1 (en) | 2020-10-01 |
US11194585B2 (en) | 2021-12-07 |
US11650824B2 (en) | 2023-05-16 |
US20220083342A1 (en) | 2022-03-17 |
US20200310818A1 (en) | 2020-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7009609B2 (ja) | 加速数学エンジン | |
JP7101776B2 (ja) | 行列入力を行列プロセッサ用のベクトル化入力に変換するためのシステムおよび方法 | |
US11650824B2 (en) | Multiplier-accumulator circuitry having processing pipelines and methods of operating same | |
US11803377B2 (en) | Efficient direct convolution using SIMD instructions | |
US10769749B2 (en) | Processor, information processing apparatus, and operation method of processor | |
US11709911B2 (en) | Energy-efficient memory systems and methods | |
US8447798B2 (en) | Look up table (LUT) structure supporting exclusive or (XOR) circuitry configured to allow for generation of a result using quaternary adders | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
Greisen et al. | Evaluation and FPGA implementation of sparse linear solvers for video processing applications | |
US11455368B2 (en) | MAC processing pipeline having conversion circuitry, and methods of operating same | |
US20210132905A1 (en) | MAC Processing Pipeline using Filter Weights having Enhanced Dynamic Range, and Methods of Operating Same | |
US20210294608A1 (en) | Processing in memory methods for convolutional operations | |
CN113672612A (zh) | 索引源数组中的元素 | |
Bevara et al. | VLSI implementation of high throughput parallel pipeline median finder for IoT applications | |
US12008066B2 (en) | Mac processing pipeline having conversion circuitry, and methods of operating same | |
US11960856B1 (en) | Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format | |
US11694733B2 (en) | Acceleration of in-memory-compute arrays | |
Haj-Ali et al. | Memristor-based in-memory logic and its application in image processing | |
Swamy et al. | A fast, pipelined implementation of a two-dimensional inverse discrete cosine transform | |
Chiranjeevi et al. | Pre-processing Block Hardware Architecture in Image Processing Using Reconfigurable Platform | |
Xin et al. | A Versatility-Performance Balanced Hardware Architecture for Scene Text Detection | |
Raj et al. | FPGA Implementation of Column-Wise Deconvolution Accelerator Based on Structural Optimization for Medical Image Segmentation | |
Ferreira et al. | Doubly-Block Circulant Kernel Matrix Exploitation in Convolutional Accelerators | |
Zhong et al. | Implementation of large kernel 2-D convolution in limited FPGA resource | |
Wong et al. | A new scalable systolic array processor architecture for simultaneous discrete convolution of k different (nxn) filter coefficient planes with a single image plane |
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 |