CN110007896B - 具有时钟选通的用于执行矩阵乘法的硬件单元 - Google Patents
具有时钟选通的用于执行矩阵乘法的硬件单元 Download PDFInfo
- Publication number
- CN110007896B CN110007896B CN201811299933.XA CN201811299933A CN110007896B CN 110007896 B CN110007896 B CN 110007896B CN 201811299933 A CN201811299933 A CN 201811299933A CN 110007896 B CN110007896 B CN 110007896B
- Authority
- CN
- China
- Prior art keywords
- data element
- multiplier
- adder
- data
- considered
- 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.)
- Active
Links
Images
Classifications
-
- 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
- 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
- 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/50—Adding; Subtracting
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本公开涉及具有时钟选通的用于执行矩阵乘法的硬件单元。本公开提供了用于经由多级管线执行矩阵乘法的硬件单元和方法,其中,与管线的一个或多个级相关联的存储元件基于已知具有零值或者能被视为具有零值的数据元素和/或其部分而被时钟选通。在一些情况下,可以基于每个数据元素,基于该数据元素是否具有零值或者可以被视为具有零值来对存储元件进行时钟选通。在其他情况下,可以基于部分元素,基于该数据元素的位宽来对存储元件进行时钟选通。例如,如果数据元素的位宽小于该数据元素的最大位宽,则与该数据元素相关的一部分位可被视为具有零值并且与该数据元素相关联的一部分存储元件可以不被时钟控制。
Description
技术领域
本公开涉及矩阵乘法,更具体地,涉及具有时钟选通(clock gating)的用于执行矩阵乘法的硬件单元。
背景技术
矩阵乘法是第一矩阵A和第二矩阵B相乘以产生第三矩阵C。如果A是a x b矩阵,B是b x c矩阵,如下所示:
那么矩阵乘法的结果是a x c的矩阵C,如下所示:
其中矩阵C的每个元素Cij通过将矩阵A的第i行中的元素与矩阵B的第j列中的元素相乘并且对结果求和来计算,如公式(1)中所示:
矩阵乘法是许多应用中的关键操作。例如,矩阵乘法可用于计算深度神经网络(DNN)中输入数据和权重的卷积。然而,矩阵乘法可能是耗时的,特别是对于大型矩阵而言更是如此。因此,需要一种被配置为以有效的方式执行矩阵乘法的硬件,所述有效的方式即为在操作时需要较少的硅面积或较少的处理能力的方式。此外,可以针对不同的应用执行不同的矩阵乘法(例如,在矩阵大小等方面)。因此,还需要能够灵活地支持各种矩阵乘法的被配置为执行矩阵乘法的硬件。
以下描述的实施例仅作为示例提供,并不对解决已知的执行矩阵乘法的硬件单元的任何或所有缺点的实现方式进行限制。
发明内容
提供本发明内容以介绍下面在具体实施方式中进一步描述的概念的选择。本发明内容不用于识别请求保护的主题的关键特征或本质特征,也不用于限制请求保护的主题的范围。
本文描述的是用于经由多个管线级执行矩阵乘法的硬件单元和方法,其中每个级之前是用于存储输入到该级的数据元素的多个存储元件,与管线的一个或多个级相关联的存储元件基于数据元素和/或其部分是否具有零值(或者可以被视为具有零值)而被时钟选通。在一些情况下,可以针对每个数据元素,基于该数据元素是否具有已知的零值(或者可以被视为具有零值)来对存储元件进行时钟选通。在其他情况下,初始数据元素可以用包括指数和尾数位宽的定点数格式来表示,并且尾数位宽可以在矩阵乘法之间变化或甚至在同一矩阵乘法的硬件通道之间变化。在这些情况下,可以基于输入到硬件中的初始数据元素的尾数位宽,在部分数据元素的基础上对存储元件进行时钟选通。例如,如果初始数据元素的尾数位宽小于最大尾数位宽,则与该数据元素相关的一部分位可被视为具有零值并且与该数据元素相关联的一部分存储元件可以不被时钟控制。在其他情况下,可以基于每个元素和部分元素二者来对存储元件进行时钟选通。
第一方面提供了一种执行矩阵乘法的硬件单元,该硬件单元包括:乘法器级,其包括多个乘法器,每个乘法器被配置为将第一数据元素和第二数据元素相乘以产生乘法数据元素;乘法器级之后的一个或多个加法器级,该一个或多个加法器级形成加法器树以产生乘法数据元素的总和,每个加法器级包括一个或多个加法器,其被配置为将前一级输出的至少两个数据元素相加以产生加法数据元素;其中至少一个乘法器和/或至少一个加法器之前是与输入到至少一个加法器或至少一个乘法器的数据元素的每个位相对应的存储元件;以及控制逻辑,其被配置为响应于确定数据元素的全部或部分可被视为具有零值,对与该数据元素相对应的全部或部分存储元件进行时钟选通。
第二方面提供了一种对用于执行矩阵乘法的硬件单元中的存储元件进行时钟选通的方法,该硬件单元包括:多个乘法器,每个乘法器被配置为将数据元素相乘以输出乘法数据元素;以及多个加法器,其形成加法器树以通过将来自乘法器或加法器的数据元素相加来产生乘法数据元素的总和,其中至少一个乘法器和/或至少一个加法器之前是用于每个输入数据元素的每个位的存储元件。该方法包括:接收指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素是否可被视为具有零值的信息,和/或指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素的一部分是否可被视为具有零值的信息;以及响应于接收到指示数据元素或数据元素的一部分可以被视为具有零值的信息,对于该数据元素相对应的全部或部分存储元件进行时钟选通。
第三方面提供了一种深度神经网络(DNN)的硬件实现,其包括第一方面的硬件单元,该DNN的硬件实现被配置为计算与DNN的一个或多个卷积层和/或一个或多个完全连接层相关联的卷积。
用于执行矩阵乘法的硬件单元可以在集成电路上的硬件中实现。可以提供一种在集成电路制造系统中制造硬件单元的方法。可以提供集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集配置系统以制造用于执行矩阵乘法的硬件单元。可以提供一种非暂态计算机可读存储介质,其上存储有用于执行矩阵乘法的硬件单元的计算机可读描述,当在集成电路制造系统中处理时,使得集成电路制造系统制造体现用于执行矩阵乘法的硬件单元的集成电路。
可以提供一种集成电路制造系统,包括:非暂态计算机可读存储介质,其上存储有用于执行矩阵乘法的硬件单元的计算机可读描述;布局处理系统,其被配置为处理计算机可读描述,以生成体现用于执行矩阵乘法的硬件单元的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造用于执行矩阵乘法的硬件单元。
可以提供用于执行本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂态计算机可读存储介质,当该计算机可读指令在计算机系统处被执行时,使得计算机系统执行本文所述的方法。
如技术人员易于理解的那样,可以适当地组合上述特征,并且这些特征可以与本文描述的示例的任何方面组合。
附图说明
将参考附图详细描述示例,其中:
图1是用于执行矩阵乘法的示例硬件单元的框图;
图2是算术单元之前的一组存储元件的框图;
图3是具有时钟选通控制逻辑的图2的存储元件和算术单元的框图;
图4是图3的时钟选通控制逻辑的第一示例实现的框图;
图5是示出图4的输出元素选通信号的计算的表;
图6是图3的时钟选通控制逻辑的第二示例实现的框图;
图7是示出最高有效位对齐的二进制补码格式的示意图;
图8是示出乘法器之前的针对各种位宽不被时钟控制的存储元件块的示例的表;
图9是示出加法器之前的针对各种位宽不被时钟控制的存储元件块的示例的表;
图10是图3的时钟选通控制逻辑的第三示例实现的框图;
图11是用于对图1的硬件单元的存储元件进行时钟选通的示例方法的流程图;
图12是图11的方法的第一示例实现的流程图;
图13是图11的方法的第二示例实现的流程图;
图14是本文所述的用于执行矩阵乘法的硬件单元被实现于其中的示例计算机系统的框图;以及
图15是用于生成体现本文所述的用于执行矩阵乘法的硬件单元的集成电路的示例集成电路制造系统的框图。
附图示出了各种示例。技术人员将理解,附图中示出的元件边界(例如,框、框组或其他形状)代表边界的一个示例。在一些示例中,可以将一个要素设计为多个要素,或者可以将多个要素设计为一个要素。整个附图中可适当地使用共同的附图标记来表示类似的特征。
具体实施方式
通过示例给出以下描述,以使本领域技术人员可以做出并使用本发明。本发明不限于本文描述的实施例,并且针对所公开的实施例的各种修改对于本领域技术人员来说将是易于理解的。仅通过示例方式来描述实施例。
执行矩阵乘法的硬件可以被实现为具有多个管线级(pipeline stage)的管线。例如,图1示出了用于执行矩阵乘法的示例硬件单元100,其中矩阵乘法经由多个管线级102、104、106、108执行。第一级102(可称为乘法器级)包括多个并行乘法器110,这些乘法器110各自将第一组数据元素中的第一数据元素(D1)与第二组数据元素中的第二数据元素(D2)相乘以产生乘法数据元素。第一组数据元素(D1)可以表示一个矩阵(例如矩阵A)的元素,第二组数据元素(D2)可以表示另一矩阵(例如矩阵B)的元素。第一数据元素和第二数据元素(D1,D2)可以被存储在诸如缓冲器之类的外部存储器中,并且经由在硬件单元100和外部存储器之间建立的通信信道提供给第一级102。在图1的示例中,乘法器级102包括八个乘法器110,然而,对于本领域技术人员来说易于理解的是,这仅是示例,并且乘法器级102可以具有数量大于或等于2的任何数量的乘法器。在一些情况下,乘法器级102可具有128个乘法器。
其余的级104、106、108形成加法器树以产生乘法数据元素的和。具体地,可以被称为加法器级的剩余级104、106、108中的每一个包括一个或多个加法器112,加法器112被配置为将由前一级生成的至少两个数据元素相加以产生加法数据元素。例如,第二级104的每个加法器112被配置为将来自第一级102的两个乘法数据元素相加以产生加法数据元素;第三级106的每个加法器112被配置为将来自第二级104的两个加法数据元素相加以产生加法数据元素;以及第四级108的每个加法器112被配置为将来自第三级106的两个加法数据元素相加以产生最终输出。在图1的示例中,存在三个加法器级104、106、108,然而,对于本领域技术人员来说易于理解的是,这仅是示例,其他示例可以具有更多或更少的加法器级。通常,如果乘法器级102包括N个乘法器110,则加法器树在(N/2)-1个级上包括N-1个加法器112。
图1的硬件单元100计算一组第一数据元素(D1)和一组第二数据元素(D2)相乘结果之和。这样,图1的硬件单元100可以在一个或多个硬件通道上执行矩阵乘法,其中硬件通道包括输入一组第一数据元素(D1)和一组第二数据元素(D2)并输出其相乘结果之和。例如,取决于乘法器110的数量和矩阵中的元素的数量,可以针对最终矩阵的每个元素具有一个硬件通道。然而在其他情况下,可能存在可以在单个硬件通道中完成的用于生成最终矩阵的元素的更多乘法,因此可能需要多个硬件通道来生成最终矩阵的元素。在这些情况下,可以将来自多个硬件通道的输出相加在一起以生成最终矩阵的元素。
针对以可预测的方式流过管线102、104、106和108的数据,每个算术单元(例如,乘法器110或加法器112)之前可以是用于输入到算术单元110或112中的每个数据元素的一组存储元件。例如,在图1的示例中,每个算术单元(例如,乘法器110或加法器112)接收要由该算术单元110或112处理的两个数据元素(第一数据元素(d1)和第二数据元素(d2))。乘法器110接收到的数据元素是在硬件通道中输入到硬件单元100的原始数据元素,并且加法器112接收到的数据元素是由管线的较早级生成的数据元素(例如,管线的较早级的乘法器110的输出数据元素或加法器112的输出数据元素)。
现在参考图2,其示出了算术单元(例如,乘法器110或加法器112),在该算术单元之前是用于输入到算术单元(例如,乘法器110或加法器112)的第一数据元素和第二数据元素(D1,D2)的每个位的存储元件202。记号Dx(i)在本文中用于指代第x个数据元素的第i位。例如,D1(5)表示第一个(1)数据元素的第5位。存储元件接收数据元素的位(在乘法器的情况下从外部源接收,或者在加法器的情况下从管线的较早级接收),存储接收到的位,并且将所存储的位输出到相应的算术单元(例如乘法器110或加法器112)。存储元件202可以被实现为触发器或任何其他形式的寄存器或存储器单元。
如本领域技术人员所知,存储元件202是“时钟控制的”,这意味着存储元件被配置为基于时钟信号(CLK)转变时的输入值来更新所存储的值。换句话说,除了在时钟信号(CLK)转变时之外,存储元件202忽略其输入。当存储元件202被时钟控制时,存储元件基于输入值改变或保持其存储的值。一些存储元件在时钟信号(CLK)的上升沿被触发,而其他存储元件在时钟信号(CLK)的下降沿被触发。如本领域技术人员所知,每个存储元件消耗静态功率和动态功率。静态功率是当存储元件处于稳定状态(即,存储元件没有切换或改变状态)时存储元件所消耗的功率。相反,动态功率是调用状态转换所消耗的功率(即,当存储元件切换或改变状态时所消耗的功率)。通常,静态功率较小,并且存储元件消耗的功率基于存储元件消耗的动态功率。因此,可以通过减少状态转换的数量来减少存储元件消耗的功率。
在许多矩阵乘法中,可以预先知道一个或多个数据元素(或其一部分)具有零值(或者可以被视为具有零值)。不是经由一组存储元件将这些数据元素(或其一部分)传递到相应的算术单元,而是可以不对这些数据元素(或其一部分)使用存储元件(即,不对存储元件进行时钟控制),并且可以将零值直接提供给算术单元。这可以通过被称为“时钟选通”的技术来实现。如本领域技术人员所知,“时钟选通”是一种技术,其中电路(例如锁存器)用于在某些条件下禁用控制电路的时钟。通过在已知位为零(或可被视为零)时不对存储元件进行“时钟控制”,减少了该存储元件的状态转换的数量,这减少了存储元件和整个硬件单元的功耗。
因此,本文描述了用于经由多个管线级执行矩阵乘法的硬件单元和方法,其中每个级之前是用于存储输入到该级的数据元素的多个存储元件,并且其中,与管线的一个或多个级相关联的存储元件基于输入到级的数据元素和/或其一部分是否具有零值(或者可以被视为具有零值)而被时钟选通。在一些情况下,可以针对每个数据元素,基于该数据元素是否具有零值(或者可以被视为具有零值)来对存储元件进行时钟选通。在其他情况下,初始数据元素可以用包括指数和尾数位宽的定点数格式来表示,并且尾数位宽可以在矩阵乘法之间变化或甚至在同一矩阵乘法的硬件通道之间变化。在这些情况下,可以基于输入到硬件单元中的初始数据元素的尾数位宽,在部分数据元素的基础上对存储元件进行时钟选通。例如,如果初始数据元素的尾数位宽小于最大尾数位宽,则与该数据元素相关的一部分位可被视为具有零值并且与该数据元素相关联的一部分存储元件可以不被时钟控制。在其他情况下,可以基于每个元素和部分元素二者来对存储元件进行时钟选通。这可以降低用于执行矩阵乘法的硬件单元的功耗,而不会显着增加硬件单元的复杂性。
现在参考图3,其示出了对第一数据元素(D1)和第二数据元素(D2)执行算术运算(例如乘法或加法)的示例算术单元(例如,乘法器110或加法器112),其中第一数据元素和第二数据元素(D1和D2)经由一组存储元件202被提供给算术单元。具体地,对于第一数据元素和第二数据元素(D1和D2)的每个位存在一个存储元件。然而,与图2的存储元件202和算术单元110/112不同,存储元件202的时钟由时钟选通控制逻辑302控制。具体地,时钟选通控制逻辑302包括硬件逻辑,该硬件逻辑被配置为:响应于确定数据元素的全部或一部分具有零值(或者可以被视为具有零值),对与该数据元素对应的全部或部分存储元件进行时钟选通(即不对与该数据元素对应的全部或部分存储元件进行时钟控制)。
在一些情况下,时钟选通控制逻辑302可以被配置为基于每个数据元素执行时钟选通。基于每个元素的时钟选通意味着对应于特定数据元素的所有存储元件要么一起被时钟控制,要么一起不被时钟控制。在这些情况下,时钟选通控制逻辑可以被配置为响应于确定数据元素可以被视为具有零值而对与该数据元素相关联的存储元件进行时钟选通。可以有许多方法来确定值可以被视为具有零值。例如,如果确定数据元素具有零值,和/或如果数据元素是乘法器的输入并且输入到乘法器的其他数据元素具有零值,则可以确定该数据元素可以被视为具有零值。这是因为乘以零值的任何内容都将产生结果零,因此数据元素可被视为具有零值。
在其他情况下,时钟选通控制逻辑302可以被配置为替代地或另外地,基于部分数据元素来执行时钟选通。基于部分数据元素的时钟选通意味着并非对应于特定数据元素的所有存储元件必须同时被时钟控制/不被时钟控制。具体地,基于部分数据元素的时钟选通意味着可以对与数据元素相关联的存储元件中的一个或多个进行时钟控制,并且可以不对与同一数据元素相关联的存储元件中的一个或多个进行时钟控制。例如,在初始数据元素的位宽可能小于硬件单元所支持的位宽(例如,硬件单元支持16位输入数据元素,但接收到的数据元素的位宽仅为12)的情况下,并不是所有存储元件都将接收有价值或有用的信息,因此一些存储元件可被视为具有零值。因此,时钟选通控制逻辑302可以被配置为基于初始数据元素的位宽对与数据元素相关联的一个或多个存储元件进行时钟选通。
下面参考图4、图6和图10来描述图3的时钟选通控制逻辑302的示例实现。尽管图3示出了用于控制对单个算术单元(例如乘法器110或加法器112)之前的存储元件的时钟控制的时钟选通控制逻辑,但时钟选通控制逻辑可以被复制用于同一层的每个算术单元和/或用于全部或一部分其他层的算术单元。
现在参考图4,其示出了时钟选通控制逻辑400的第一示例实现,其可以用作图3的时钟选通控制逻辑302。在该示例中,时钟选通控制逻辑400被配置为基于数据元素的稀疏性,基于每个数据元素对特定算术单元(例如,乘法器110或加法器112)之前的存储元件202进行时钟选通。虽然图4示出了用于控制单个算术单元(例如乘法器110或加法器112)之前的存储元件202的时钟选通控制逻辑,但是该时钟选通控制逻辑可以被复制用于同一层的每个算术单元和/或用于全部或一部分其他层的算术单元。
图4的时钟选通控制逻辑400包括:选通逻辑单元402、与(AND)门404、以及选通信号生成逻辑406。时钟选通控制逻辑400接收针对要由算术单元110或112处理的每个数据元素的元素选通信号,其指示该数据元素是否可被视为具有零值并且因此该数据元素是否应该被时钟选通(即不对其进行时钟控制)。例如,如图4所示,在存在两个数据元素(D1和D2)的情况下,时钟选通控制逻辑400接收针对第一数据元素D1的第一元素选通信号,该第一元素选通信号指示第一数据元素D1是否可被视为具有零值并且因此是否应该被选通;并且时钟选通控制逻辑400接收针对第二数据元素D2的第二元素选通信号,该第二元素选通信号指示第二数据元素D2是否可被视为具有零值并且因此是否应该被选通。在一些情况下,如果数据元素要被时钟选通(即,不被时钟控制),则相应的元素选通信号可以具有值“1”,并且如果数据元素不被时钟选通(即,被时钟控制),则相应的元素选通信号可以具有值“0”。
在时钟选通控制逻辑400被配置为控制乘法器110之前的存储元件的情况下,元素选通信号可以由硬件单元外部的逻辑(未示出)或由硬件单元内部的逻辑生成。外部逻辑或内部逻辑可以被配置为:如果两个数据元素中任一数据元素具有零值(或者如果任一数据元素可被视为具有零值),则设置两个数据元素的元素选通信号以指示相应的数据元素可以被视为具有零值并且应该被选通。这是因为如果乘法中的任何一个输入数据元素为零(或者可以被视为零),则乘法的输出将为零,因此不需要执行乘法。这意味着这两个数据元素都可以被选通(即,不被时钟控制)。外部逻辑或内部逻辑可以基于一个或多个标准来确定数据元素可被视为具有零值。例如,在硬件单元用于对深层神经网络的层执行卷积操作的情况下,内部逻辑或外部逻辑可以被配置为在如下情形下确定数据元素可以被视为具有零值:如果该数据元素是输入数据值并且该输入数据值位于该层外部的平面中;或者如果该数据元素是权重并且该权重位于当前窗口之外。对于本领域技术人员易于理解的是,这仅是示例,并且外部逻辑或内部逻辑可以被配置为基于一个或多个附加或替代的标准来确定数据元素可被视为具有零值。
相反,在时钟选通控制逻辑400被配置为控制加法器112之前的存储元件的情况下,可以由前一级的时钟选通控制逻辑400来生成指示相应的数据元素是否可被视为具有零值并因此应当被时钟选通(即,不被时钟控制)的元素选通信号。具体地,如下面更详细描述的,选通信号生成逻辑406可以被配置为生成输出元素选通信号,该输出元素选通信号指示由算术单元110或112生成的输出元素是否应当在后续管线级中被选通。
对于由相同时钟信号控制的每组存储元件202,存在选通逻辑单元402。例如,在图4中,与每个数据元素相关联的所有存储元件由单个时钟信号控制,因此仅存在两个选通逻辑单元402,一个用于与第一数据元素(D1)相关联的存储元件,一个用于与第二数据元素(D2)相关联的存储元件。对于本领域技术人员易于理解的是,这仅是示例,并且可以以不同的方式对与数据元素相关联的存储元件进行分组。例如,在其他情况下,每个数据元素的存储元件可以被分成四个存储元件的组。在这种情况下,将有四个选通逻辑单元,每个选通逻辑单元用于一组四个存储元件。
每个选通逻辑单元402被配置为接收输入时钟信号(CLK)和对应的元素选通信号(如果元素选通信号被设置为“1”以指示相应的数据元素将被时钟选通,则在通过非(NOT)门之后)并向每个相应存储元件的时钟输入提供输出时钟信号,其中,当元素选通信号指示相应的数据元素将被时钟控制时,该输出时钟信号使得该存储元件被时钟控制,并且当元素选通信号指示相应的数据元素将不被时钟控制时,该输出时钟信号使得该存储元件不被时钟控制。换句话说,选通逻辑单元402通过对输入时钟信号(CLK)和对应的元素选通信号执行与(AND)操作来有效地生成输出时钟信号。例如,如图4所示,控制第一数据元素的存储元件的选通逻辑单元402被配置为生成输出时钟信号,其中,当第一数据元素NOT'd D1的元素选通信号为“1”时,该输出时钟信号使得第一数据元素的存储元件被时钟控制,并且当第一数据元素NOT'd D1的元素选通信号为“0”时,该输出时钟信号使得第一数据元素的存储元件不被时钟控制;并且控制第二数据元素的存储元件的选通逻辑单元402被配置为生成输出时钟信号,其中,当第二数据元素NOT'd D2的元素选通信号为“1”时,该输出时钟信号使得第二数据元素的存储元件被时钟控制,并且当第二数据元素NOT'd D2的元素选通信号为“0”时,该输出时钟信号使得第二数据元素的存储元件不被时钟控制。
可以使用AND门(与门)、选通锁存器或任何其他逻辑等效电路来实现每个选通逻辑单元402。此外,即使选通逻辑单元402被示出为在存储元件202外部,但在其他情况下,选通逻辑单元402可以实现在存储元件202内。例如,在一些情况下,可以使用选通触发器来实现存储元件,该选通触发器被配置为接收输入时钟信号和相应的元素选通信号,并且仅当输入时钟信号和元素选通信号都为高电平(即,为“1”)时才对触发器进行时钟控制。
对于第一数据元素和第二数据元素(D1和D2)的每个存储元件存在AND门404。例如,如图4所示,每个数据元素(D1和D2)的长度可以高达8位,有16个AND门,第一数据元素和第二数据元素(D1和D2)的每个位具有一个AND门。
每个AND门404被配置为对存储元件的输出和对应的元素选通信号(如果元素选通信号被设置为“1”以指示相应的数据将被时钟选通,则在对应的元素选通信号通过NOT门之后)执行AND运算并且AND运算的输出被提供给算术单元110或112。这迫使时钟选通位为零。因此,在图4的示例中,如果确定数据元素具有零值(或者可以被视为具有零值),并不是从存储元件到算术单元来对该数据元素的位进行时钟控制,而是存储元件被时钟选通(即不被时钟控制)并且向算术单元提供零。
选通信号生成逻辑406被配置为将元素选通信息传播到管线的下一级。具体地,选通信号生成逻辑406被配置为:基于输入到算术单元的数据元素的元素选通信号,确定算术单元的输出数据元素是否可被视为具有零值并因此被时钟选通;以及生成输出元素选通信号,该输出元素选通信号指示输出元素是否可以被视为具有零值并因此被选通。然后将输出选通元件信号提供给管线中下一级的时钟选通控制逻辑。
在一些情况下,确定输出元素是否应该被选通可以基于由算术单元执行的算术运算的类型。例如,在算术单元是乘法器的情况下,如果任一输入数据元素具有零值(或可被视为具有零值),则输出数据元素将具有零值(因此可以是时钟选通的),因为零乘以任何内容都是零。因此,选通信号生成逻辑406可以被配置为:如果乘法器的任何一个输入数据元素可以被视为具有零值,则确定乘法器的输出元素可以被视为具有零值并且因此可以被时钟选通。如上所述,在一些情形下,当两个数据元素中的至少一个数据元素具有零值(或者可以被视为具有零值)时,由时钟选通控制逻辑400接收的初始元素选通信号被配置为指示两个数据元素都可以被视为具有零值,由此两个初始元素选通信号将是相同的——即要么它们都指示相应的数据元素可以被视为具有零值并且因此可以被时钟选通要么它们都指示相应的数据元素不能被视为具有零值并且因此不能被时钟选通。在这些情况下,输出元素选通信号可以被设置为这些初始元素选通信号中的任一个。因此,用于第一级的选通信号生成逻辑406可以被配置为简单地输出初始元素选通信号中的任一个作为输出元素选通信号。
相反地,在算术单元是加法器的情况下,如果所有输入数据元素具有零值或者可以被视为具有零值,则输出数据元素将仅具有零值(因此可以是时钟选通的),因为只有零的总和等于零。因此,如图5的表中所示,选通信号生成逻辑406可以被配置为:如果所有输入数据元素可以被视为具有零值,则指示加法器的输出元素可以被视为具有零值并且因此可以被时钟选通;如果输入数据元素中有任一输入数据元素可以被视为具有零值,则指示乘法器的输出元素可以被视为具有零值并且因此可以被时钟选通。
现在参考图6,其示出了时钟选通控制逻辑600的第二示例实现,其可以用作图3的时钟选通控制逻辑302。在该示例中,时钟选通控制逻辑600被配置为基于初始数据元素集的位宽,基于部分数据元素来对特定算术单元(例如,乘法器110或加法器112)之前的存储元件进行时钟选通。虽然图6示出了用于控制单个算术单元(例如乘法器110或加法器112)之前的存储元件的时钟选通控制逻辑,但时钟选通控制逻辑可以被复制用于同一层的每个算术单元和/或用于全部或部分其他层的算术单元。
在该示例中,硬件单元100被配置为接收和处理包括最大位数的数据元素,然而,输入的初始数据元素可以使用比最大位数少的位。例如,硬件单元100可以被配置为接收和处理16位的数据元素,然而初始数据元素集之一可以仅包括4位的数据元素,这意味着该初始数据元素集中的数据元素仅包括4位的相关信息。因此,该初始数据元素集中的12位的数据元素未被使用(因此可以将其视为具有零值)并且因此可以对其进行时钟选通。此外,不同的数据元素集可以使用不同数量的位,其反映集合中的值的范围。例如,第一组数据元素(D1)可以具有与第二组数据元素(D2)不同的位宽。因此,在这些示例中,除了接收第一组数据元素和第二组数据元素作为硬件单元100的输入之外,硬件单元100还接收指示用于第一组数据元素的位数和用于第一组数据元素的位数的信息,所述位数在本文中可被称为尾数位长度、位宽、或位深。然后,时钟选通控制逻辑600被配置为基于第一组数据元素和第二组数据元素的位宽来确定数据元素的哪些位可以被时钟选通。
图6的示例时钟选通控制逻辑600包括:位宽控制逻辑602、选通逻辑单元604、以及AND门606。位宽控制逻辑602被配置为:接收第一组数据元素和第二组数据元素的位宽;响应于确定至少一个位宽小于最大位宽,基于位宽和管线的级来确定第一数据元素和第二数据元素的哪些位将被时钟选通(即,不对其进行时钟控制);以及针对每个数据元素输出一组块选通信号,其指示哪些数据元素块将被时钟选通(即,不被时钟控制)以及哪些数据元素块不被时钟选通(即,被时钟控制)。
具体地,每个数据元素的存储元件202被分成多个组或块,其可以独立地被时钟选通或时钟控制。例如,在图2中,每个数据元素(D1和D2)的八个存储元件被分成组或块,其中,两个位/两个存储元件对应于一个组或块。然而,对于本领域技术人员来说易于理解的是,这仅是示例,并且可以以不同的方式将存储元件划分为块。例如,在其他情况下,每个数据元素的存储元件可以被分成每个对应于四位/四个存储元件的组或块。
位宽控制逻辑602被配置为基于第一组数据元素和第二组数据元素的位宽和管线的级来确定可以被时钟选通的数据元素块。通常,已知具有零值(或可被视为具有零值)的那些位可以是时钟选通的。
可以根据相应的数据元素集的位宽和数据元素的格式来确定输入到乘法器的数据元素中具有零值(或可被视为具有零值)的位。例如,输入到乘法器的第一数据元素中可被视为具有零值的位是根据第一组数据元素的位宽确定的;以及输入到乘法器的第二数据元素中可被视为具有零值的位是根据第二组数据元素的位宽确定的。通常,如果一组数据元素的位宽小于最大位宽,那么这些数据元素的至少一部分位可以被视为具有零值并且因此可以被时钟选通。具体地,输入到乘法器的数据元素中为零(或者可以被视为具有零值)的位的数量(NumZeroBits)是最大位宽(MaxNumBit)和相应数据元素集的位宽(BitLength)之间的差,如公式(2)所示,因为剩下的位可以被认为包含有价值的信息:
NumZeroBits=MaxNumBit-BitLength (2)
在存储元件被分成多个大小为X的组或块的情况下,被时钟选通的块的数量(NumZeroBlocks)可以表示为NumZeroBits除以块的大小,如公式(3)所示:
在某些情况下,在存储元件被分成大小为X的多个组或块的情况下,BitLength可以被表示为X的倍数。具体地,BitLength可以向上舍入到X的最接近的整数倍。
为零(或可被视为具有零值)的特定位/块将基于数据元素的格式。例如,如果最低有效位(LSB)对齐格式用于无符号二进制数,则包含有价值信息的位将处于最低有效位位置。例如,如果最大位数是16并且数据元素使用位宽8,则将有8个位包含有价值的信息,并且它们将位于8个最低有效位(即位7到0)中。在这些情况下,具有零值(或可被视为具有零值)的特定位/块可以是最高有效NumZeroBits或最高有效NumZeroBlocks。相反,如果使用最高有效位(MSB)对齐格式,则包含有价值信息的位将位于最高有效位位置。例如,如果最大位数是16并且数据元素使用位深8,那么将有8位包含有价值的信息,并且它们将位于8个最高有效位(即位15-8)中。在这些情况下,不被时钟控制的数据元素的位可以分别是前8位或后8位。
然而,如果LSB对齐格式用于采用二进制补码格式的带符号的二进制数,则对可以被视为具有零值并因此可以被时钟选通的位/块的标识可以在正数和负数之间变化。这是因为对于LSB对齐的二进制补码格式的负数,符号位在未使用的位上扩展,使得它们包括“1”而不是零。这意味着负数位不能被时钟选通,因为没有保证为零或可以被视为零的位。如果MSB对齐格式用于二进制补码格式的带符号的二进制数,则可以避免该问题并且可以增加时钟选通位的数量。这是因为,如图7所示,符号位不必扩展到这种格式的未使用的位,因为未使用的位在最低有效位位置。因此,如果数据元素是二进制补码格式的带符号数,则使用MSB对齐格式可能是有利的。在这种情况下,根据公式(2)的最低有效NumZeroBits位或根据公式(3)的最低有效NumZeroBits位可以容易地被识别为可以针对负数和正数二者均被时钟选通的位/块。
图8是示出基于公式(3)对于第一组数据元素和第二组数据元素的多种不同位宽组合中的每一种,可以对管线的第一级的第一数据元素和第二数据元素的存储元件202的哪些组或块进行时钟选通(例如,不进行时钟控制)的表,其中最大位宽为16,数据元素的存储元件被分成每个具有4个存储元件的组或块,并且数据元素是MSB对齐的。在该示例中,可能的位宽是{4,8,12和16},这导致每个数据元素的{0,4,8,12}位之一不被时钟选通。
可以根据原始数据元素的位宽来确定输入到加法器的数据元素中具有零值(或可以被视为具有零值)并因此可以被时钟选通的位,但是可以采用不同的方式确定。在管线的第一级(即乘法器级)中,第一数据元素乘以第二数据元素,由此产生多个乘法输出。如本领域技术人员所知,将x位的数与y位的数相乘产生x+y位的数。因此,如果x位的数具有可以被视为具有零值的a个位并且y位的数具有可以被视为具有零值的b个位,那么可以被视为具有零值的位的总数是a+b。时钟选通位的数量在随后的相加中不会增加或减少,因此无论加法器的级如何,对于每个加法器,可以被时钟选通的位数都是相同的。如果使用MSB对齐格式,则输入到加法器的数据元素中可以被视为具有零值并且因此可以被时钟选通的位将是数据元素的最低有效a+b位。在存储元件被分成大小为N的块或组并且使用MSB对齐格式的情况下,可以被视为具有零值并因此可以被时钟选通的块将是最低有效(a+b)/N位。
图9是示出对于初始第一数据集和第二数据集的多种不同位宽组合中的每一种而言,输入到加法器的第一数据元素和第二数据元素的哪些存储元件202的块可被视为具有零值并且因此可被时钟选通(例如,不被时钟控制)的表,其中最大位宽为16,数据元素的存储元件被分成每个具有4个存储元件的组或块,并且数据元素是MSB对齐的。因此,在该示例中,可能的位宽是{4,8,12和16},这导致每个数据元素的{0,4,8,12,16,20,24}位之一被时钟选通。
一旦位宽控制逻辑602确定数据元素的哪些位/存储元件或哪些位/存储元件块可以被视为具有零值并因此可以被时钟选通,则位宽控制逻辑602被配置为输出每个存储元件块的块选通信号,该块选通信号指示该块或组的存储元件是否可以被视为具有零值并因此被时钟选通。例如,在图6中,存储元件被分成具有两个存储元件的块,位宽控制逻辑602被配置为针对每个存储元件块生成控制信号,其中块编号为0到3。具体地,位宽控制逻辑602生成八个块选通控制信号——用于块3的数据元素1块选通控制信号(3)(D1BG(3)),用于块2的数据元素1块选通控制信号(2)(D1BG(2)),用于块1的数据元素1块选通控制信号(1)(D1BG(1)),用于块0的数据元素1块选通控制信号(0)(D1BG(0)),用于块3的数据元素2块选通控制信号(3)(D2BG(3)),用于块2的数据元素2块选通控制信号(2)(D2BG(2)),用于块1的数据元素2块选通控制信号(1)(D1BG(1)),以及用于块0的数据元素2块选通控制信号(0)(D1BG(0))。然后将控制信号提供给相应的选通逻辑单元604和AND门606。为简单起见,图6中仅示出了控制信号和AND门606之间的一些连接。
对于与数据元素相关联的每个存储元件块或组,存在选通逻辑单元604。例如,在图6中,与每个数据元素相关联的存储元件被分组为两个存储元件的块,因此对于每个数据元素存在四个选通逻辑单元604。对于本领域技术人员易于理解的是,这仅是示例,并且与数据元素相关联的存储元件可以以不同的方式分组。
每个选通逻辑单元604被配置为接收输入时钟信号(CLK)和相应的块选通控制信号,并将输出时钟信号提供给每个相应存储元件的时钟输入,这使得在块选通信号指示相应的块将被时钟控制时存储元件将被时钟控制并且在块选通信号指示相应的块将不被时钟控制时存储元件将不被时钟控制。换句话说,选通逻辑单元604通过对输入时钟信号(CLK)和相应的块选通信号执行AND运算来有效地生成输出时钟信号。例如,如图6所示,控制第一数据元素的两个最高有效位的存储元件的选通逻辑单元604被配置为生成输出时钟信号,该输出时钟信号使得第一数据元素的两个最高有效位的存储元件在D1块3选通信号(D1BG(3))为“1”时被时钟控制并且使得第一数据元素的两个最高有效位的存储元件在D1块3选通信号(D1BG(3))为“0”时不被时钟控制;并且控制第一数据元素的两个最低有效位的存储元件的选通逻辑单元604被配置为生成输出时钟信号,该输出时钟信号使得第一数据元素的两个最低有效位的存储元件在D1块0选通信号(D1BG(0))为“1”时被时钟控制并且使得第一数据元素的两个最低有效位的存储元件在D1块0选通信号(D1BG(0))为“0”时不被时钟控制。
可以使用AND门、选通锁存器或任何其他逻辑等效电路来实现每个选通逻辑单元604。此外,即使选通逻辑单元604被示出为在存储元件202的外部,但在其他情况下,选通逻辑单元604可以实现在存储元件202的内部。例如,在一些情况下,可以使用选通触发器来实现存储元件,所述选通触发器被配置为接收输入时钟信号和相应的块选通信号,并且仅当输入时钟信号和块选通信号都为高电平(即,为“1”)时对触发器进行时钟控制。
针对第一数据元素和第二数据元素(D1和D2)的每个存储元件都存在AND门606。例如,如图6所示,每个数据元素(D1和D2)的长度可以高达8位,AND门606集合包括16个AND门,一个AND门用于第一元素和第二元素(D1和D2)的每一位。
每个AND门606被配置为对存储元件的输出和相应的块选通信号执行AND运算,并将AND运算的输出提供给算术单元110或112。这迫使时钟选通位为零。因此,在图6的示例中,如果提前确定了数据元素的多个位未被使用并且因此可以被视为具有零值,那么不是从存储元件到算术单元对那些位进行时钟控制,而是将这些位的存储元件时钟选通并且向算术单元提供零。
现在参考图10,其示出了时钟选通控制逻辑1000的第三示例实现,其可以用作图3的时钟选通控制逻辑302。时钟选通控制逻辑1000是图4和图6的时钟选通控制逻辑400和600的组合,其被配置为基于每个数据元素时钟选通和部分数据元素时钟选通二者来执行操作。具体地,图10的时钟选通控制逻辑1000包括图6的位宽控制逻辑602,位宽控制逻辑602基于初始数据元素集的位宽,针对数据元素的每个存储元件块生成块选通信号,该块选通信号被提供给相应的选通逻辑单元604以使得相应块的存储元件在块选通信号指示要被时钟选通时被时钟选通,并且该块选通信号被提供给相应的AND门606以使得当相应的存储元件被时钟选通时强制将零馈送到算术逻辑。另外,时钟选通控制逻辑1000接收图4的D1和D2元素选通信号。D1元素选通信号被输入到对应于第一数据元素的选通逻辑单元604和对应于第一数据元素的AND门606(为简单起见,图10中仅示出了选通信号和AND门606之间的一些连接);D2元素选通信号被输入到分别对应于第二数据元素的选通逻辑单元604。以这种方式,如果整个数据元素要被时钟选通(基于数据元素的元素选通控制信号)或者一块数据元素被时钟选通(基于该块的块选通信号),则该块的存储元件被时钟选通(即,不被时钟控制);并且如果相应的存储元件被时钟选通(即不被时钟控制),则向算术单元110或112提供零。
用于执行本文描述的矩阵乘法的硬件单元100可以用在神经网络的硬件实现中。例如,用于执行矩阵乘法的硬件单元可以用在神经网络的硬件实现中,以计算与一个或多个卷积层和/或一个或多个完全连接层相关联的卷积。
现在参考图11至图13,其为示例性方法1100、1200、1300的流程图,这些方法可以由图3的时钟选通控制逻辑302实现以对用于执行矩阵乘法的硬件单元100的存储元件进行时钟选通,其中硬件单元100包括多个乘法器以及多个加法器,每个乘法器被配置为将数据元素相乘以产生输出乘法数据元素,多个加法器形成加法器树以通过将来自乘法器或加法器的数据元素相加来产生乘法数据元素之和,其中至少一个乘法器和/或至少一个加法器之前是用于每个输入数据元素的每个位的存储元件。
方法1100开始于框1102,其中时钟选通控制逻辑302接收指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素是否可被视为具有零值和/或指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素的一部分是否可被视为具有零值的信息。如下面参考图12和图13更详细的描述,指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素是否可以被视为具有零值的信息可以包括针对每个数据元素的指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素是否可以被视为具有零值的位。一旦指示输入到至少一个乘法器和/或至少一个加法器的数据元素和/或其一部分可被视为具有零值的信息已被接收到,则方法1100前进到框1104。
在框1104处,确定所接收的信息是否指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素或其一部分可被视为具有零值。如果该信息指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素或其一部分可被视为具有零值,则方法1100前进到框1106。然而,如果该信息未指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素或其一部分可被视为具有零值,则方法1100结束。
在框1106处,与输入到至少一个乘法器和/或至少一个加法器的、可被视为具有零值的至少一个数据元素或其一部分相对应的所有或一部分存储元件被时钟选通。在一些情况下,方法1100可以结束,并且在其他情况下,方法1100可以进行到框1108和/或框1110。
在框1108处,时钟选通控制逻辑302使得零位被提供给针对被时钟选通的每个存储元件的相应加法器或乘法器。
在框1110处,时钟选通控制逻辑302基于输入到至少一个乘法器和/或至少一个加法器的数据元素是否具有零值或者可以被视为具有零值,生成并输出指示至少一个乘法器和/或至少一个加法器的输出数据元素是否可被视为具有零值的信息。在一些情况下,时钟选通控制逻辑被配置为:当乘法器的任何输入数据元素可被视为具有零值时,输出指示乘法器的输出数据元素可被视为具有零值的信息。如上所述,这是因为如果乘法器的任何一个输入具有零值(或者可被视为具有零值),则乘法器的输出将为零(或者可被视为具有零值)。在一些情况下,时钟选通控制逻辑被配置为:仅在加法器的所有输入数据元素可被视为具有零值时,输出指示加法器的输出数据可被视为具有零值的信息。如上所述,这是因为只有当加法器的所有输入都具有零值(或者可以被视为具有零值)时,加法器的输出才具有零值(或者可以被视为具有零值)。
现在参考图12,其示出了图11的方法1100的第一示例实现,其中,存储元件在元素的基础上被时钟选通(即,数据元素的所有存储元件一起被时钟选通)。方法1200开始于框1202,其中时钟选通控制逻辑302接收指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素是否可被视为具有零值的信息。指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素是否可被视为具有零值的信息可包括针对每个数据元素的、指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素是否可以被视为具有零值的位。在某些情况下,指示输入到乘法器的每个数据元素是否可被视为具有零值的信息被配置为:如果输入到乘法器的任何数据元素具有零值,则指示输入到乘法器的每个数据元素可被视为具有零值。一旦已经接收到指示输入到至少一个乘法器和/或至少一个加法器的数据元素是否可被视为具有零值的信息,方法1200就前进到框1204。
在框1204处,确定所接收的信息是否指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素可被视为具有零值。如果该信息指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素可被视为具有零值,则方法1200前进到框1206。但是,如果该信息未指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素可以被视为具有零值,则方法1200结束。
在框1206处,响应于接收到指示至少一个数据元素可被视为具有零值的信息,对应于该至少一个数据元素的所有存储元件被时钟选通。然后方法1200结束。
现在参考图13,其示出了图11的方法1100的第二示例实现,其中,存储元件在部分元件的基础上被时钟选通(即,可以仅对数据元素的一部分存储元件进行时钟选通)。方法1300开始于框1302,其中时钟选通控制逻辑302接收指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素的一部分是否可被视为具有零值的信息。指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素的一部分是否可以被视为具有零值的信息可以包括初始数据元素集的位宽。例如,在图1中,硬件单元100接收两组数据元素——第一组数据元素,其通常对应于第一矩阵的元素;和第二组数据元素,其通常对应于第二矩阵的元素。第一组数据元素和第二组数据元素可以具有小于最大位宽的位宽,并且位宽可以在两组输入之间相同或不同。一旦已经接收到指示输入到至少一个乘法器和/或至少一个加法器的每个数据元素的一部分是否可以被视为具有零值的信息,则方法1300前进到框1304。
在框1304处,确定所接收的信息是否指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素的至少一部分可被视为具有零值。在一些情况下,当至少一组初始数据元素的位宽小于最大位宽时,确定该信息指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素的至少一部分可以被视为具有零值。如果确定该信息指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素的至少一部分可以被视为具有零值,则方法1300进行到框1306。然而,如果确定该信息未指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素的至少一部分可被视为具有零值,则方法1300结束。
在框1306处,响应于接收到指示输入到至少一个乘法器和/或至少一个加法器的至少一个数据元素的一部分可以被视为具有零值的信息,对应于该数据元素的存储元件的一部分被时钟选通。在一些情况下,当第一组数据元素的位宽小于最大位宽时,与乘法器的第一数据元素相对应的N个存储元件被时钟选通,其中N等于最大位宽减去第一组数据元素的位宽;当第二组数据元素的位宽小于最大位宽时,与乘法器的第二数据元素相对应的K个存储元件被时钟选通,其中K等于最大位宽减去第二组数据元素的位宽。在一些情况下,当至少一组初始数据元素的位宽小于最大位宽时,加法器的两个输入数据元素的一部分被时钟选通。这是因为加法器接收表示来自第一组数据元素的数据元素和来自第二组数据元素的数据元素的乘法的数据元素,因此如果任一组的位宽小于最大位宽,那么乘法输出的位宽将小于乘法的最大位宽。如上所述,当数据元素是最高有效位对齐时,被时钟选通的存储元件将是对应于最低有效位的存储元件。
图14示出了可以实现本文描述的用于执行矩阵乘法的硬件单元的计算机系统。该计算机系统包括CPU 1402、GPU 1404、存储器1406和其他设备1414,例如显示器1416、扬声器1418和摄像机1420。用于执行矩阵乘法的硬件单元1410(对应于包括图3、图4、图6或图10的控制逻辑302、400、600或1000的用于执行矩阵乘法的硬件单元100)可以在GPU 1404上实现。在其他示例中,硬件单元1410可以在CPU 1402上实现。计算机系统的组件可以经由通信总线1420彼此通信。
图3、图4、图6和图10的用于执行矩阵乘法的硬件单元和时钟选通控制单元被示出为包括多个功能框。这只是示意性的并且不希望限定这些实体的不同逻辑元件之间的严格划分。可以通过任意合适的方式提供每个功能块。将理解的是,本文描述的由功能块所形成的中间值不需要由功能块在任意点处物理生成,而可以仅表示方便描述由功能块在其输入和输出之间执行的处理的逻辑值。
本文描述的用于执行矩阵乘法的硬件单元可以体现在集成电路上的硬件中。本文描述的用于执行矩阵乘法的硬件单元可被配置为执行本文描述的任意方法。一般,以上描述的任意功能、方法、技术、或者组件可以实现在软件、固件、硬件(例如,固定逻辑电路)、或者它们的任意组合中。本文可以使用术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”、以及“逻辑”来一般地表示软件、固件、硬件、或者它们的任意组合。在软件实现的情况中,模块、功能、组件、元件、单元、块、或者逻辑表示在处理器上被执行时执行指定任务的程序代码。本文描述的算法和方法可以由执行代码的一个或多个处理器执行,该代码使得该一个或多个处理器执行该算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器、以及可以使用磁、光、或者其他技术来存储指令或者可以被机器存取的其他数据的其他存储器设备。
本文使用术语“计算机程序代码”和“计算机可读指令”来指代用于处理器的任意种类的可执行代码,包括利用机器语言、解释语言、或者脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(例如,硬件描述语言或者网络列表)、以及利用编程语言代码(例如,C、Java、或者OpenCL)表达的代码。可执行代码可以是例如,任何种类的软件、硬件、脚本、模块、或者程序库,该可执行代码在虚拟机或其他软件环境被适当地执行、处理、解释、汇编、执行时使得支持可执行代码的计算机系统的处理器执行该代码指定的任务。
处理器、计算机、或者计算机系统可以是具有处理能力从而使得其能够执行指令的任何种类的设备、机器、或者专用电路、或者它们的集合或部分。处理器可以是任意种类的通用或专用处理器,例如,CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
还希望覆盖定义本文描述的硬件配置的软件,例如,用于设计集成电路或者用于配置可编程芯片以实现期望功能的HDL(硬件描述语言)软件。即,可以提供其上编码有集成电路定义数据集形式的计算机可读程序代码的计算机可读存储介质,该计算机可读程序代码在集成电路制造系统中被处理(即运行)时将该系统配置为制造被配置用来执行本文描述的任意方法的用于执行矩阵乘法的硬件单元或者制造包括本文描述的任意装置的用于执行矩阵乘法的硬件单元。集成电路定义数据集可以是例如,集成电路描述。
因此,提供了一种在集成电路制造系统处制造本文描述的用于执行矩阵乘法的硬件单元的方法。而且,提供了一种集成电路定义数据集,该集成电路定义数据集在被集成电路制造系统处理时,使得执行制造本文描述的用于执行矩阵乘法的硬件单元的方法。
集成电路定义数据集可以采用计算机代码的形式,例如,作为网络列表、用于配置可编程芯片的代码,作为在任意等级定义适用于集成电路的制造的硬件的硬件描述语言(包括寄存器传送级(RTL)代码),作为高级电路表示(例如,Verilog或者VHDL),以及作为低级电路表示(例如,OASIS(RTM)和GDSII)。可以在被配置用于在软件环境的上下文中生成集成电路的制造定义的计算机系统处处理在逻辑上定义适用于集成电路的制造的硬件的较高级表示(例如,RTL),其中该制造定义包括电路元件的定义和用于组合这些元件的规则,以生成表示所定义的集成电路的制造定义。在计算机系统处执行软件以定义机器的一般情况中,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以使被配置用于生成集成电路的制造定义的计算机系统执行定义集成电路的代码从而生成该集成电路的制造定义。
现在参考图15,描述在集成电路制造系统处处理集成电路定义数据集,以配置该系统制造用于执行矩阵乘法的硬件单元的示例。
图15示出被配置为制造本文中的任意示例中描述的用于执行矩阵乘法的硬件单元的集成电路(IC)制造系统1502的示例。具体地,IC制造系统1502包括布局处理系统1504和集成电路生成系统1506。IC制造系统1502被配置为接收IC定义数据集(例如,定义在本文的任意示例中描述的用于执行矩阵乘法的硬件单元),处理IC定义数据集,并且根据IC定义数据集(例如,体现本文的任意示例中描述的用于执行矩阵乘法的硬件单元的IC定义数据集)生成IC。IC定义数据集的处理将IC制造系统1502配置为制造体现本文中的任意示例描述的用于执行矩阵乘法的硬件单元的集成电路。
布局处理系统1504被配置为接收并处理IC定义数据集,以确定电路布局。根据IC定义数据集确定电路布局的方法是本领域已知的,例如,可以包括综合RTL代码来确定将要生成的电路的门级表示(例如,在逻辑组件(例如,NAND、NOR、AND、OR、MUX、以及FLIP-FLOP组件)方面)。可以通过确定逻辑组件的位置信息,从电路的门级表示确定电路布局。这可以自动或者在用户参与下实现,以优化电路布局。当布局处理系统1504已经确定电路布局时,其可以向IC生成系统1506输出电路布局定义。电路布局定义可以是例如,电路布局描述。
IC生成系统1506根据电路布局定义生成IC,如本领域已知的。例如,IC生成系统1506可以执行半导体器件制作处理来生成IC,该半导体器件制作处理可以包括多步骤顺序的光刻处理以及化学处理步骤,在这些化学处理步骤期间电子电路逐渐形成在由半导体材料制成的晶片上。电路布局定义可以是掩模形式的,该掩模可以用在根据电路定义生成IC的光刻处理中。替代地,提供给IC生成系统1506的电路布局定义可以是计算机可读代码形式的,IC生成系统1506可以使用计算机可读代码来形成用于生成IC的适当掩模。
由IC制造系统1502执行的不同处理可以全部在一个位置处实现,例如,由一方实现。替代地,IC制造系统1502可以是分布式系统,因此一些处理可以在不同位置执行,并且可以由不同方执行。例如,以下阶段中的一些阶段可以在不同位置和/或由不同方执行:(i)综合表示IC定义数据集的RTL代码以形成将要生成的电路的门级表示,(ii)基于门级表示生成电路布局,(iii)根据电路布局形成掩模,以及(iv)使用掩模制作集成电路。
在其他示例中,集成电路制造系统处的集成电路定义数据集的处理可以将系统配置为制造用于执行矩阵乘法的硬件单元,而不对IC定义数据集进行处理来确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器(例如FPGA)的配置,并且该数据集的处理可以配置IC制造系统以生成具有该定义的配置的可重新配置的处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,集成电路制造定义数据集在集成电路制造系统中被处理时,可以使得集成电路制造系统生成本文描述的设备。例如,通过集成电路制造定义数据集以针对图15描述的方式对集成电路制造系统的配置可以使本文描述的设备被制造出来。
在一些示例中,集成电路定义数据集可以包括在该数据集处定义的硬件上运行的软件或者与在该数据集处定义的硬件组合。在图15所示的示例中,可以通过集成电路定义数据集进一步将IC生成系统配置为在制造集成电路时,根据集成电路定义数据集处定义的程序代码将固件加载到集成电路中或者向集成电路提供程序代码供集成电路使用。
本申请中阐述的概念在设备、装置、模块、和/或系统(以及在本文实现的方法)中的实施方式相比已知的实施方式可以生成性能改进。性能改进可以包括计算性能增加、延迟减小、吞吐量增加、和/或功耗减少中的一项或多项。在(例如,集成电路中)制造这些设备、装置、模块、和系统期间,可以在性能改进和物理实现之间进行平衡,从而改善制造方法。例如,可以在性能改进和布局区域之间进行平衡,从而匹配已知实施方式的性能但使用更少的硅。这可以通过例如,以连续方式重复使用功能块或者在设备、装置、模块、和/或系统的元件之间共享功能块来实现。相反,导致设备、装置、模块、以及系统的物理实现的改进(例如,硅面积减小)的本申请的概念可以换取改进的性能。这可以通过例如,在预定区域预算中制造模块的多个实例来实现。
申请人单独公开了本文描述的每个单独特征、以及两个以上这样的特征的任意组合,以使得能够根据本领域技术人员的公知常识基于说明书实施这些特征或组合,而不管这些特征或特征组合是否解决了本文公开的任何问题。鉴于以上描述,对于本领域技术人员易于理解的是,可以在本发明的范围内做出各种修改。
Claims (20)
1.一种用于执行矩阵乘法的硬件单元,所述硬件单元包括:
乘法器级,包括多个乘法器,每个乘法器被配置为将第一数据元素和第二数据元素相乘以产生乘法数据元素;
一个或多个加法器级,其位于所述乘法器级之后并且形成加法器树以产生所述乘法数据元素的总和,每个加法器级包括一个或多个加法器,所述一个或多个加法器被配置为将前一级输出的至少两个数据元素相加以产生附加数据元素;
其中,至少一个乘法器和/或至少一个加法器之前是与输入到所述至少一个加法器和/或所述至少一个乘法器的数据元素的每个位相对应的存储元件;以及
控制逻辑,其被配置为:响应于确定数据元素的全部或一部分能被视为具有零值而对与该数据元素相对应的所有或部分存储元件进行时钟选通;并且对于被时钟选通的每个存储元件,使得向相应的乘法器或加法器提供零位。
2.如权利要求1所述的硬件单元,其中,所述控制逻辑被配置为:基于所述第一数据元素的位宽和/或所述第二数据元素的位宽,在部分数据元素的基础上,对所述存储元件进行时钟选通。
3.如权利要求2所述的硬件单元,其中,与每个数据元素相对应的存储元件被分成多个块,这些块可以独立地被时钟选通,并且所述控制逻辑被配置为基于所述第一数据元素和/或所述第二数据元素的位宽,对与所述至少一个加法器或所述至少一个乘法器的数据元素相对应的一个或多个块中的存储元件进行时钟选通。
4.如权利要求2所述的硬件单元,其中,所述至少一个加法器和/或所述至少一个乘法器包括乘法器,并且所述控制逻辑被配置为:当所述乘法器的所述第一数据元素的位宽小于最大位宽时,对与所述第一数据元素相对应的一部分存储元件进行时钟选通。
5.如权利要求4所述的硬件单元,其中,所述至少一个加法器和/或所述至少一个乘法器包括乘法器,并且所述控制逻辑被配置为:当所述乘法器的所述第二数据元素的位宽小于最大位宽时,对与所述第二数据元素相对应的一部分存储元件进行时钟选通。
6.如权利要求2所述的硬件单元,其中,所述至少一个乘法器和/或所述至少一个加法器包括加法器,并且当所述第一数据元素的位宽和所述第二数据元素的位宽中的至少一个小于最大位宽时,与输入到所述加法器的每个数据元素相关联的一部分存储元件被时钟选通。
7.如权利要求1所述的硬件单元,其中,所述至少一个乘法器和/或所述至少一个加法器包括乘法器,并且所述控制逻辑被配置为:如果输入到所述乘法器的第一数据元素和第二数据元素中的至少一个具有零值,则将所述第一数据元素和所述第二数据元素都视为具有零值。
8.如权利要求1所述的硬件单元,其中,所述数据元素是最高有效位对齐的,并且与数据元素相对应的存储元件中被时钟选通的一部分存储元件是与该数据元素的最低有效位相对应的存储元件。
9.如权利要求1所述的硬件单元,其中,所述控制逻辑被配置为基于每个数据元素对所述存储元件进行时钟选通。
10.如权利要求9所述的硬件单元,其中,所述控制逻辑被配置为:接收指示输入到所述至少一个乘法器和/或所述至少一个加法器中的哪些数据元素能被视为具有零值的信息;以及响应于确定特定数据元素能被视为具有零值,对与该数据元素相对应的所有存储元件进行时钟选通。
11.如权利要求10所述的硬件单元,其中,所述至少一个乘法器和/或所述至少一个加法器包括乘法器,并且指示输入到所述乘法器中的哪些数据元素能被视为具有零值的信息被配置为:如果所述乘法器的所述第一数据元素和所述第二数据元素中的至少一个具有零值,则指示所述第一数据元素和所述第二数据元素都能被视为具有零值。
12.如权利要求10所述的硬件单元,其中,所述控制逻辑还被配置为:基于输入到所述至少一个乘法器和/或所述至少一个加法器的数据元素是否能被视为具有零值,生成指示所述至少一个加法器和/或所述至少一个乘法器的输出数据元素是否能被视为具有零值的信息。
13.一种对用于执行矩阵乘法的硬件单元中的存储元件进行时钟选通的方法,所述硬件单元包括:多个乘法器,每个乘法器被配置为将数据元素相乘以输出乘法数据元素;以及多个加法器,其形成加法器树,用于通过将来自乘法器或加法器的数据元素相加来产生乘法数据元素的总和,其中,在至少一个乘法器和/或至少一个加法器之前是针对每个输入数据元素的每个位的存储元件,所述方法包括:
接收指示输入到所述至少一个乘法器和/或所述至少一个加法器的每个数据元素是否能被视为具有零值和/或指示输入到所述至少一个乘法器和/或至少一个加法器的每个数据元素的一部分是否能被视为具有零值的信息;和
响应于接收到指示数据元素或数据元素的一部分能被视为具有零值的信息,对与该数据元素相对应的所有或部分存储元件进行时钟选通,并且对于被时钟选通的每个存储元件,使得向相应的加法器或乘法器提供零位。
14.如权利要求13所述的方法,还包括:响应于接收到指示数据元素能被视为具有零值的信息,对与该数据元素相对应的所有存储元件进行时钟选通。
15.如权利要求13所述的方法,还包括:基于输入到所述至少一个乘法器和/或所述至少一个加法器的数据元素是否能被视为具有零值,输出指示所述至少一个加法器和/或所述至少一个乘法器的输出数据元素是否能被视为具有零值的信息。
16.如权利要求15所述的方法,其中,所述至少一个乘法器和/或所述至少一个加法器包括加法器,并且当所述加法器的所有输入数据元素均具有零值或者能被视为具有零值时,指示所述加法器的输出数据元素是否能被视为具有零值的信息指示所述加法器的输出数据元素能被视为具有零值。
17.一种使用集成电路制造系统制造如权利要求1至12中任一项所述的硬件单元的方法,该方法包括:
使用布局处理系统来处理集成电路定义数据集形式的计算机可读代码,以生成体现所述硬件单元的集成电路的电路布局;以及
使用集成电路生成系统根据所述电路布局来制造体现所述硬件单元的集成电路。
18.一种用于实现深度神经网络DNN的硬件,其包括如权利要求1到12中任一项所述的硬件单元,所述硬件单元被配置为计算与所述DNN的一个或多个卷积层和/或一个或多个完全连接层相关联的卷积。
19.一种计算机可读存储介质,其上编码有计算机可读代码,所述代码被配置为在所述代码运行时使得如权利要求13至16中任一项所述的方法被执行。
20.一种计算机可读存储介质,其上存储有集成电路定义数据集形式的计算机可读代码,当所述计算机可读代码在集成电路制造系统中被处理时,使得所述集成电路制造系统制造体现如权利要求1至12中任一项所述的硬件单元的集成电路。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210425391.6A CN114816332A (zh) | 2017-11-03 | 2018-11-02 | 具有时钟选通的用于执行矩阵乘法的硬件单元 |
CN202210425185.5A CN114816331B (zh) | 2017-11-03 | 2018-11-02 | 具有时钟选通的用于执行矩阵乘法的硬件单元 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB201718296A GB2568085B (en) | 2017-11-03 | 2017-11-03 | Hardware unit for performing matrix multiplication with clock gating |
GB1718296.5 | 2017-11-03 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210425185.5A Division CN114816331B (zh) | 2017-11-03 | 2018-11-02 | 具有时钟选通的用于执行矩阵乘法的硬件单元 |
CN202210425391.6A Division CN114816332A (zh) | 2017-11-03 | 2018-11-02 | 具有时钟选通的用于执行矩阵乘法的硬件单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110007896A CN110007896A (zh) | 2019-07-12 |
CN110007896B true CN110007896B (zh) | 2022-05-13 |
Family
ID=60664732
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811299933.XA Active CN110007896B (zh) | 2017-11-03 | 2018-11-02 | 具有时钟选通的用于执行矩阵乘法的硬件单元 |
CN202210425391.6A Pending CN114816332A (zh) | 2017-11-03 | 2018-11-02 | 具有时钟选通的用于执行矩阵乘法的硬件单元 |
CN202210425185.5A Active CN114816331B (zh) | 2017-11-03 | 2018-11-02 | 具有时钟选通的用于执行矩阵乘法的硬件单元 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210425391.6A Pending CN114816332A (zh) | 2017-11-03 | 2018-11-02 | 具有时钟选通的用于执行矩阵乘法的硬件单元 |
CN202210425185.5A Active CN114816331B (zh) | 2017-11-03 | 2018-11-02 | 具有时钟选通的用于执行矩阵乘法的硬件单元 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11321096B2 (zh) |
EP (3) | EP3770749B1 (zh) |
CN (3) | CN110007896B (zh) |
GB (1) | GB2568085B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11567554B2 (en) * | 2017-12-11 | 2023-01-31 | Advanced Micro Devices, Inc. | Clock mesh-based power conservation in a coprocessor based on in-flight instruction characteristics |
US11709681B2 (en) | 2017-12-11 | 2023-07-25 | Advanced Micro Devices, Inc. | Differential pipeline delays in a coprocessor |
US11604972B2 (en) * | 2019-06-28 | 2023-03-14 | Microsoft Technology Licensing, Llc | Increased precision neural processing element |
KR20210071473A (ko) | 2019-12-06 | 2021-06-16 | 삼성전자주식회사 | 연산 장치, 그것의 동작 방법 및 뉴럴 네트워크 프로세서 |
US11520371B2 (en) * | 2020-02-10 | 2022-12-06 | Northwestern University | Compute-adaptive clock management for machine learning accelerators |
US20220188073A1 (en) * | 2020-12-11 | 2022-06-16 | Amazon Technologies, Inc. | Data-type-aware clock-gating |
JP2023009676A (ja) * | 2021-07-07 | 2023-01-20 | キヤノン株式会社 | 演算処理装置およびその制御方法 |
US11953966B1 (en) * | 2021-11-22 | 2024-04-09 | Meta Platforms Technologies, Llc | Data-driven column-wise clock gating of systolic arrays |
KR102722978B1 (ko) * | 2023-03-30 | 2024-10-28 | 리벨리온 주식회사 | 뉴럴 프로세서, 뉴럴 프로세싱 장치 및 이의 클럭 게이팅 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2525284A1 (en) * | 2011-05-17 | 2012-11-21 | AptCore Ltd | Signal processing apparatus |
CN102918495A (zh) * | 2010-01-07 | 2013-02-06 | 线性代数技术有限公司 | 用于执行算术运算的硬件 |
CN103793203A (zh) * | 2012-10-31 | 2014-05-14 | 英特尔公司 | 响应于输入数据值降低fma单元中的功率消耗 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6297033A (ja) * | 1985-10-24 | 1987-05-06 | Hitachi Ltd | 乗算装置 |
US6247036B1 (en) * | 1996-01-22 | 2001-06-12 | Infinite Technology Corp. | Processor with reconfigurable arithmetic data path |
US6745336B1 (en) * | 1999-05-20 | 2004-06-01 | Princeton University | System and method of operand value based processor optimization by detecting a condition of pre-determined number of bits and selectively disabling pre-determined bit-fields by clock gating |
US7134028B2 (en) * | 2003-05-01 | 2006-11-07 | International Business Machines Corporation | Processor with low overhead predictive supply voltage gating for leakage power reduction |
US8423597B1 (en) * | 2003-08-29 | 2013-04-16 | Nvidia Corporation | Method and system for adaptive matrix trimming in an inverse discrete cosine transform (IDCT) operation |
US7839446B2 (en) * | 2005-08-30 | 2010-11-23 | Olympus Corporation | Image capturing apparatus and image display apparatus including imparting distortion to a captured image |
GB2436377B (en) * | 2006-03-23 | 2011-02-23 | Cambridge Display Tech Ltd | Data processing hardware |
US8255726B2 (en) * | 2008-07-18 | 2012-08-28 | International Business Machines Corporation | Zero indication forwarding for floating point unit power reduction |
GB2474901B (en) * | 2009-10-30 | 2015-01-07 | Advanced Risc Mach Ltd | Apparatus and method for performing multiply-accumulate operations |
US9747255B2 (en) * | 2011-05-13 | 2017-08-29 | Texas Instruments Incorporated | Inverse transformation using pruning for video coding |
US9176709B2 (en) * | 2011-11-29 | 2015-11-03 | Apple Inc. | Shared integer, floating point, polynomial, and vector multiplier |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
US9442734B2 (en) * | 2014-02-11 | 2016-09-13 | Apple Inc. | Completion time determination for vector instructions |
US9817466B2 (en) * | 2014-04-17 | 2017-11-14 | Arm Limited | Power saving by reusing results of identical micro-operations |
US9639328B2 (en) * | 2014-08-06 | 2017-05-02 | Wisconsin Alumni Research Foundation | Multiplication circuit providing dynamic truncation |
CN105589677A (zh) * | 2014-11-17 | 2016-05-18 | 沈阳高精数控智能技术股份有限公司 | 一种基于fpga的脉动结构矩阵乘法器及其实现方法 |
US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
US20170322808A1 (en) * | 2016-05-05 | 2017-11-09 | Cirrus Logic International Semiconductor Ltd. | Low-power processor with support for multiple precision modes |
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 |
US10346944B2 (en) * | 2017-04-09 | 2019-07-09 | Intel Corporation | Machine learning sparse computation mechanism |
US10372416B2 (en) * | 2017-04-28 | 2019-08-06 | Intel Corporation | Multiply-accumulate “0” data gating |
WO2019010183A1 (en) * | 2017-07-05 | 2019-01-10 | Deep Vision, Inc. | PROCESSOR OF DEEP VISION |
US20190101952A1 (en) * | 2017-09-30 | 2019-04-04 | Intel Corporation | Processors and methods for configurable clock gating in a spatial array |
-
2017
- 2017-11-03 GB GB201718296A patent/GB2568085B/en active Active
-
2018
- 2018-11-02 CN CN201811299933.XA patent/CN110007896B/zh active Active
- 2018-11-02 EP EP20197062.1A patent/EP3770749B1/en active Active
- 2018-11-02 CN CN202210425391.6A patent/CN114816332A/zh active Pending
- 2018-11-02 CN CN202210425185.5A patent/CN114816331B/zh active Active
- 2018-11-02 EP EP21200598.7A patent/EP3955106B8/en active Active
- 2018-11-02 EP EP18204166.5A patent/EP3480691B1/en active Active
- 2018-11-05 US US16/180,181 patent/US11321096B2/en active Active
-
2022
- 2022-04-29 US US17/733,386 patent/US20220253319A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102918495A (zh) * | 2010-01-07 | 2013-02-06 | 线性代数技术有限公司 | 用于执行算术运算的硬件 |
EP2525284A1 (en) * | 2011-05-17 | 2012-11-21 | AptCore Ltd | Signal processing apparatus |
CN103793203A (zh) * | 2012-10-31 | 2014-05-14 | 英特尔公司 | 响应于输入数据值降低fma单元中的功率消耗 |
Also Published As
Publication number | Publication date |
---|---|
GB2568085A (en) | 2019-05-08 |
CN110007896A (zh) | 2019-07-12 |
GB2568085B (en) | 2020-01-01 |
EP3480691A1 (en) | 2019-05-08 |
EP3955106B8 (en) | 2025-03-19 |
US20190227807A1 (en) | 2019-07-25 |
CN114816331A (zh) | 2022-07-29 |
EP3770749B1 (en) | 2022-01-05 |
US11321096B2 (en) | 2022-05-03 |
EP3770749A1 (en) | 2021-01-27 |
EP3955106B1 (en) | 2024-02-14 |
CN114816331B (zh) | 2024-01-26 |
EP3480691B1 (en) | 2020-10-28 |
CN114816332A (zh) | 2022-07-29 |
US20220253319A1 (en) | 2022-08-11 |
EP3955106A1 (en) | 2022-02-16 |
GB201718296D0 (en) | 2017-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110007896B (zh) | 具有时钟选通的用于执行矩阵乘法的硬件单元 | |
US20240412056A1 (en) | Hardware implementation of a deep neural network with variable output data format | |
US11144819B2 (en) | Convolutional neural network hardware configuration | |
CN110033079B (zh) | 深度神经网络的硬件实现的端到端数据格式选择 | |
US20230221924A1 (en) | Apparatus and Method for Processing Floating-Point Numbers | |
EP4206993A1 (en) | Configurable pooling processing unit for neural network accelerator | |
CN113326065A (zh) | 超前归一化器 | |
US11836460B2 (en) | Error bounded multiplication by invariant rationals | |
US20230409287A1 (en) | Accumulator hardware | |
GB2584228A (en) | Hardware unit for performing matrix multiplication with clock gating | |
GB2591713A (en) | Hardware unit for performing matrix multiplication with clock gating | |
GB2576282A (en) | Hardware unit for performing matrix multiplication with clock gating | |
US20230031551A1 (en) | Constant multiplication by division | |
US20230030495A1 (en) | Hybrid fixed logic for performing multiplication | |
EP3264295B1 (en) | Low-area fixed-point polynomials |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |