CN108694055A - 向量归约处理器 - Google Patents
向量归约处理器 Download PDFInfo
- Publication number
- CN108694055A CN108694055A CN201810118791.6A CN201810118791A CN108694055A CN 108694055 A CN108694055 A CN 108694055A CN 201810118791 A CN201810118791 A CN 201810118791A CN 108694055 A CN108694055 A CN 108694055A
- Authority
- CN
- China
- Prior art keywords
- reduction
- vector
- specific
- interim
- cell
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000009467 reduction Effects 0.000 title claims abstract description 686
- 239000013598 vector Substances 0.000 claims abstract description 527
- 230000005611 electricity Effects 0.000 claims description 4
- 238000013519 translation Methods 0.000 claims description 2
- 239000011159 matrix material Substances 0.000 description 48
- 238000012545 processing Methods 0.000 description 48
- 238000004590 computer program Methods 0.000 description 11
- 238000000034 method Methods 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000011218 segmentation Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 235000013399 edible fruits Nutrition 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000003706 image smoothing Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- 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
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
- Peptides Or Proteins (AREA)
- Image Processing (AREA)
Abstract
本申请涉及一种向量归约处理器。一种被配置为对元素的输入向量进行归约的向量归约电路包括多个cell,其中,除接收所述输入向量的指定的第一元素的指定的第一cell以外的所述多个cell中的每一个cell被配置为:接收所述输入向量的特定元素,从所述一个或多个cell中的另一个cell接收临时归约元素,使用所述特定元素和所述临时归约元素来执行归约操作,并且提供使用所述特定元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素。所述向量归约电路也包括输出电路,所述输出电路被配置为提供与使用所述输入向量的最后元素来执行所述归约操作的结果相对应的新的临时归约元素以用于作为所述输入向量的归约而输出。
Description
技术领域
本说明书涉及一种在硬件中执行向量归约(vector reduction)。
背景技术
通常,向量归约是对输入向量的元素执行来产生标量输出或具有比输入向量更小的维数的输出向量的操作。例如,求和向量归约操作可以产生等于输入向量的元素之和的标量输出。在一些示例中,可以对输入向量的多个段执行相应的向量归约操作。分段向量归约操作产生其中每个元素为输入向量的段的归约的输出向量。例如,分段求和向量归约操作可以产生其中每个元素为输入向量的元素的段的和的输出向量。
发明内容
一般而言,本说明书描述计算向量归约的专用硬件电路。
一般而言,本说明书中所描述的主题的一个创新性方面能够以被配置为对元素的输入向量进行归约的向量归约电路加以具体实现,所述向量归约电路包括多个cell,其中,除接收所述输入向量的指定的第一元素的指定的第一cell以外的所述多个cell中的每一个cell被配置为:接收所述输入向量的特定元素,从所述多个cell中的另一个cell接收临时归约元素,使用所述特定元素和所述临时归约元素来执行归约操作,以及提供使用所述特定元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素。所述向量归约电路包括输出电路,所述输出电路被配置为提供与使用所述输入向量的最后元素来执行所述归约操作的结果相对应的新的临时归约元素以用于作为所述输入向量的归约而输出。
实施方式能够可选地包括以下特征中的一个或多个。在一些实施方式中,所述归约操作是最大值归约操作,并且使用所述特定元素和所述临时归约元素来执行所述归约操作包括:对所述特定元素和所述临时归约元素进行比较,以及至少基于所述比较并作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果,而确定所述特定元素和所述临时归约元素的最大值;所述归约操作是最小值归约操作,并且使用所述特定元素和所述临时归约元素来执行所述归约操作包括:对所述特定元素和所述临时归约元素进行比较,以及至少基于所述比较并作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果,而确定所述特定元素和所述临时归约元素的最小值。
实施方式还能够可选地包括以下特征中的一个或多个。在一些实施方式中,所述归约操作是求和归约操作,并且使用所述特定元素和所述临时归约元素来执行所述归约操作包括:确定所述特定元素和所述临时归约元素的和,作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果;所述归约操作是乘积归约操作,并且使用所述特定元素和所述临时归约元素来执行所述归约操作包括:确定所述特定元素和所述临时归约元素的乘积,作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果。
实施方式还能够可选地包括以下特征中的一个或多个。在一些实施方式中,所述归约操作是最大索引操作,并且使用所述特定元素和所述临时归约元素来执行所述归约操作包括:接收指示与所述临时归约元素相对应的索引的数据;对所述特定元素和所述临时归约元素进行比较;至少基于所述比较确定所述特定元素和所述临时归约元素的最大值;以及至少基于所述确定并作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果,而识别与所述特定元素相对应的索引或与所述临时归约元素相对应的索引中的一个。
实施方式还能够可选地包括以下特征中的一个或多个。在一些实施方式中,所述归约操作是最小索引操作,并且使用所述特定元素和所述临时归约元素来执行所述归约操作包括:接收指示与所述临时归约元素相对应的索引的数据;对所述特定元素和所述临时归约元素进行比较;至少基于所述比较确定所述特定元素和所述临时归约元素的最小值;以及至少基于所述确定并作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果,而识别与所述特定元素相对应的索引或与所述临时归约元素相对应的索引中的一个。
实施方式还能够可选地包括以下特征中的一个或多个。在一些实施方式中,所述输入向量的所述特定元素是在元素的交错输入中接收的;所述输入向量被识别为包括元素的多个段;所述输入向量的所述特定元素是所述输入向量的所述特定段的指定的最后元素,并且除接收所述输入向量的所述指定的第一元素的所述指定的第一cell以外的所述多个cell中的每一个cell被配置为:向所述输出电路并作为所述输入向量的所述特定分段的归约而提供使用所述输入向量的所述特定段的所述指定的最后元素和所述临时归约元素来执行所述归约操作的结果;提供使用所述输入向量的所述特定段的所述指定的最后元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素包括向所述多个cell中的另一个cell并作为所述新的临时归约元素提供占位符信号;所述输出电路被配置为提供多个元素用于作为所述输入向量的归约而输出,其中,所述多个元素中的每一个元素是与使用所述输入向量的段的指定的最后元素来执行所述归约操作的结果相对应的新的临时归约元素;所述输出电路被配置为提供包括所述多个元素的输出向量用于作为所述输入向量的归约而输出。
实施方式还能够可选地包括以下特征中的一个或多个。在一些实施方式中,所述向量归约电路包括控制寄存器,所述控制寄存器被配置为接收元素的控制向量,其中,所述元素的所述控制向量指定所述输入向量的元素的所述多个段;提供使用所述特定元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素包括:接收与所述特定元素相对应的所述控制向量的特定元素;至少基于所述控制向量的所述特定元素来确定所述特定元素被指定为所述输入向量的特定段的最后元素;以及向所述输出电路并至少基于所述确定提供使用被指定为所述输入向量的所述特定段的最后元素的所述特定元素和所述临时归约元素来执行所述归约操作的结果,作为所述输入向量的所述特定段的归约。
实施方式还能够可选地包括以下特征中的一个或多个。在一些实施方式中,提供使用所述特定元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素包括:接收与所述特定元素相对应的所述控制向量的特定元素;至少基于所述控制向量的所述特定元素来确定所述特定元素被指定为所述输入向量的特定段的最后元素;以及向所述多个cell中的另一个cell并至少基于所述确定提供占位符信号;提供使用所述特定元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素包括:接收与所述特定元素相对应的所述控制向量的特定元素;至少基于所述控制向量的所述特定元素来确定所述特定元素未被指定为所述输入向量的特定段的最后元素;以及至少基于所述确定,向所述多个cell中的另一个cell并作为新的临时性归约元素提供使用未被指定为所述输入向量的所述特定段的最后元素的所述特定元素和所述临时归约元素来执行所述归约操作的结果。
实施方式还能够可选地包括以下特征中的一个或多个。在一些实施方式中,所述输出电路将所述输入向量的所述归约提供给被配置为计算向量或矩阵变换的变换电路;所述多个cell中的每一个被配置为:接收指定以使用所述特定元素和所述临时归约元素来执行的所述归约操作的类型的控制信号;所述临时归约元素与对所述输入向量的、在所述输入向量的所述特定元素之前的元素执行所指定的归约操作的结果相对应。
能够实现本申请中所描述的主题的特定实施例以便实现以下优点中的一个或多个。向量归约能够通过专用硬件电路在硬件中执行。专用硬件电路能够在比通用处理器(例如,GPU或CPU)更少的周期中执行向量归约。附加地,通过使用专用硬件电路来在硬件中计算向量归约,能够在不需要将数据传递回到主机计算机的情况下(即,在不需要在片外或在软件中执行计算的至少部分的情况下)执行向量归约。结果,处理延迟由在片外或在软件中计算向量归约产生,在计算可能是昂贵的情况下,避免了与在专用硬件中相比需要更大量的通用处理器(例如,GPU或CPU)周期来执行的计算。
与在通用矩阵或向量处理硬件电路(例如,也被配置为执行矩阵卷积或其它矩阵的硬件电路)中或者在其它专用硬件电路(例如,被配置为执行向量归约和矩阵变换计算两者的硬件电路)中执行向量归约的系统进行比较,使用被专门地设计来计算向量归约的硬件电路还允许更有效的处理。在专用硬件电路上实现向量归约操作许可有效地处理向量归约的设计而不需要涉及其它矩阵向量计算能力或效率,并且保留用于执行其它矩阵或向量计算的其它矩阵或向量处理电路,从而通常提高硬件中的矩阵向量计算的效率。
在附图和以下描述中阐述了本说明书的主题的一个或多个实施例的细节。主题的其它特征、方面和优点将根据本说明书、附图和权利要求书变得显而易见。
附图说明
图1示出示例矩阵向量处理系统。
图2示出包括向量归约单元的示例矩阵向量处理系统。
图3示出矩阵向量处理系统中的向量归约单元的示例架构。
图4示出矩阵向量处理系统中的向量归约单元的示例架构。
图5示出矩阵向量处理系统中的向量归约单元的cell的示例架构。
图6是用于在矩阵向量处理系统中执行向量归约的示例方法的流程图。
图7A-图7B描绘在矩阵向量处理系统中使用向量归约单元的示例向量归约。
在各个附图中相同的附图标记和标示指示相同的元素。
具体实施方式
向量归约操作是对元素的输入向量执行以生成输出的操作,所述输出是标量或元素的比输入向量更小(即,具有更少维数)的向量。例如,求和向量归约操作产生为输入向量的这些元素的和的标量输出。作为另一示例,最大值向量归约操作或最小值向量归约操作分别产生为输入向量的这些元素的最大值或输入向量的这些元素的最小值的标量输出。类似地,最大索引向量归约操作或最小索引向量归约操作分别产生指示输入向量的最大值或最小值的输入向量索引的输出。其它向量归约操作是可能的,诸如产生与输入向量的这些元素的乘积相对应的标量输出的乘积向量归约操作、产生与输入向量的这些元素的算术均值相对应的标量输出的均值向量归约操作等。
在一些实施方式中,可以对输入向量进行分段,并且可以对输入向量的这些段中的一个或多个执行相应的向量归约操作。对输入向量的多个段中的每一个执行相应的向量归约操作产生输出向量。输出向量的每个元素与对输入向量的对应段执行向量归约操作的结果相对应。例如,对被划分成三段的输入向量执行的向量归约操作的输出将是三个元素的输出向量,其中输出向量的每个元素是将向量归约操作应用于输入向量的不同段的结果。
在线性代数计算中并在针对其它实际应用的数据分析中常常计算向量归约。例如,可以在对神经网络进行训练时计算向量归约,例如,作为机器学习过程的一部分。在这些情况下,向量归约可以用于在对神经网络进行训练时反向传播梯度。还可以对神经网络的层的输出执行向量归约。向量归约的结果可以作为神经网络的另一层的输入被提供,或者可以作为来自神经网络的输出被提供。向量归约的其它应用包括诸如数字音频或视频解码中的多媒体处理。诸如在模拟和数字传输、雷达、和声纳的领域中的信号处理也常常利用向量归约技术,例如,以识别接收或发送的信号中的最大值或最小值。
在一些实施方式中,可以将输入矩阵分解成向量,并且可以将向量归约单独地应用于输入矩阵的向量。例如,能够将表示为矩阵的图像(例如,其中矩阵的元素与图像的像素相对应)分解成向量。能够对输入矩阵的向量应用向量归约操作,诸如均值向量归约操作,例如,以执行图像平滑或者减小图像的像素大小。
本说明书描述对输入向量执行向量归约操作的专用硬件电路。该专用硬件电路能够产生与输入向量的向量归约相对应的标量或向量输出。
图1示出示例矩阵向量处理系统100。矩阵向量处理系统100是作为其中能够实现在下面所描述的系统、组件、和技术的一个或多个位置中的一个或多个计算机而实现的系统的示例。
矩阵向量处理系统100是使用专用硬件电路110来执行向量或矩阵计算的系统。专用硬件电路110是用于执行向量或矩阵计算的集成电路,所述集成电路包括被配置为在硬件中计算向量归约的向量归约单元120。参考图2对示例专用硬件电路110进行更详细的描述。
矩阵向量处理系统100接收用于在专用硬件电路110上执行向量或矩阵计算的请求,控制专用硬件电路110以执行向量或矩阵计算,并且输出由专用硬件电路110生成的向量或矩阵计算的结果。例如,矩阵向量处理系统100可以接收用于对输入向量执行向量归约的请求,并且作为响应,可以控制专用硬件电路110计算向量归约并输出在输入矩阵上计算向量归约的结果。专用硬件电路110可以能够执行除了向量归约之外的附加计算。例如,专用硬件电路110还可以包括用于计算向量或矩阵卷积、向量或者矩阵算术、向量或矩阵变换、或者其它向量或矩阵计算的电路或者其它硬件组件,例如,以处理神经网络的层。因此,专用硬件电路110可以计算向量归约作为使用专用硬件电路110的其它组件来执行更大计算的部分。
为了在专用硬件电路110上实现矩阵或向量计算,矩阵向量处理系统100包括矩阵向量处理引擎150。矩阵向量处理引擎150可以作为一个或多个计算机程序被实现在一个或多个物理位置中的一个或多个计算机上。
矩阵向量处理引擎150能够生成指令,提供控制信号,或者引导数据来控制专用硬件电路110响应于请求而执行向量或矩阵计算。例如,矩阵向量处理系统100可以接收对一个或多个输入向量或矩阵应用函数的请求,并且矩阵向量处理引擎150能够确定用于在专用硬件电路110上执行将函数应用于输入向量或矩阵所必要的计算的特定指令或控制信号。矩阵向量处理引擎150还可以引导专用硬件电路110能够用于执行所必要的计算的、例如与输入向量或矩阵相对应的数据。
一旦矩阵向量处理引擎150确定以实现向量或矩阵请求所必要的计算,矩阵向量处理引擎150就控制专用硬件电路110以执行所必要的计算。例如,矩阵向量处理引擎150可以将用于执行向量或矩阵计算的数据(诸如输入向量或矩阵)引导到专用硬件电路110。矩阵向量处理引擎150还可以向专用硬件电路110发送用于控制专用硬件电路110以对由其从矩阵向量处理引擎150接收的数据执行所必要的计算的指令或控制信号。
例如,矩阵向量处理系统100能够接收执行向量或矩阵计算的请求。所请求的计算可以是相对简单的,例如,用于执行简单线性代数计算或更复杂的函数(例如,用于反向传播梯度以对神经网络进行训练的函数)的请求。所请求的计算可以需要一个或多个操作,诸如一个或多个向量归约。该请求还可以识别或者包括对其执行计算的一个或多个向量或矩阵,即,向其应用函数的一个或多个输入向量或矩阵。矩阵向量处理引擎150能够接收该请求并且能够生成以对输入向量或矩阵执行计算的控制信号或指令。矩阵向量处理引擎150此外可以将输入向量或矩阵引导到专用硬件电路110。
例如,为了计算向量归约,例如,作为较大计算的部分,矩阵向量处理引擎150可以给专用硬件电路110提供有接收到的输入向量,或通过将输入矩阵分解成其向量分量而获得的多个向量。矩阵向量处理引擎150还可以给专用硬件电路110提供有用于启动向量归约的控制信号或用于在向量归约单元120上执行向量归约的参数。向量归约单元120可以接收一个或多个输入向量以及提供给专用硬件电路110的控制信号。向量归约单元120能够响应于接收到控制信号而执行向量归约,并且能够输出执行向量归约的结果。由向量归约单元120生成的结果可以被使用在由专用硬件电路110执行来执行所请求的计算的其它操作中。专用硬件电路110可以提供矩阵向量处理系统100能够响应于请求而返回的所请求的计算的结果。
图2示出能够执行向量归约的示例专用硬件电路200。在一些实施方式中,电路200可以包括用于执行其它向量或矩阵计算的附加组件(未示出)。用于执行其它向量或矩阵的附加组件还可以利用图2中所示的组件中的一个或多个。
电路200包括主机接口202。主机接口202能够接收用于执行向量或矩阵计算(包括向量归约)的控制信号、指令或变元。变元能够包括例如用于对其执行向量归约的一个或多个向量。由主机接口202接收到的指令或控制信号能够包括指示要将所接收到的变元存储在哪里使得电路200可以执行向量归约的指令,由主机接口202接收到的指令或控制信号可以包括与所请求的向量归约有关的参数,或者可以包括其它信息,例如用于存储向量归约的输出的存储器位置。由主机接口202接收到的控制信号还可以控制电路200以启动向量归约计算。
在一些实施方式中,主机接口202能够向定序器206提供指令,所述定序器206将指令转换成控制电路200以执行向量归约的低电平控制信号。例如,由定序器206生成的控制信号可以调节电路200中的数据流,例如,输入向量应当被存储在哪里或者应当如何以其它方式通过电路200来引导数据。定序器206可以接收以在电路200上启动向量归约计算的指令,并且可以生成用于控制向量归约单元212以启动向量归约计算的控制信号。
定序器206能够将控制信号发送到存储器208并且发送到向量归约单元212。在一些实施方式中,定序器206还将控制信号发送到直接存储器存取引擎204。在一些实施方式中,定序器206是生成控制信号的处理器。定序器206能够协调控制信号以在适当的时间处将控制信号发送到电路200的适当的组件。在一些情况下,定序器206可以从主机接口202接收从电路200(例如,从图1的向量矩阵处理引擎150)向外传递的控制信号,使得不需要定序器206生成控制信号。在这些情况下,定序器206可以在适当的时间处将所接收到的控制信号发送到电路200的组件。此外,在将电路200提供控制信号的情况下,定序器206可以是电路200的可选组件,即,使得在电路200外部的组件(例如,矩阵向量处理引擎150)可以在适当的时间处提供控制信号来控制电路200以执行操作,包括用于执行向量归约的那些操作。
主机接口202能够向直接存储器存取引擎204发送变元,例如,输入向量。直接存储器存取引擎204能够将该变元存储在存储器208处。
存储器208可以是动态存储器,例如,动态随机存取存储器(DRAM),或者可以是静态存储器,例如,静态随机存取存储器(SRAM)。在一些实施方式中,存储器208可以被用作为存储器缓冲器。存储器208可以位于电路200上或者位于电路200外。其能够存储输入给电路200的变元(例如,向量)或用于执行向量归约的参数。存储器208还可以存储向量归约单元212的输出,即,对输入向量执行向量归约的结果。在一些实施方式中,直接存储器存取引擎204可以从存储器208读取。例如,直接存储器存取引擎204可以从存储器208读取以从电路200返回对输入向量执行向量归约的结果。
向量归约单元212能够访问存储器208处的变元。例如,在直接存储器存取引擎204将输入向量存储在存储器208中之后,可以将输入向量提供给向量归约单元212或使向量归约单元212可访问输入向量,使得向量归约单元212可以执行对输入向量执行用于向量归约的操作。
向量归约单元212是用于计算向量归约的电路。在一些实施方式中,向量归约单元212被设计为基于接收到变元(例如,输入向量)和指定向量归约的类型的信息(例如,向量归约是否将是求和向量归约、最大值或最小值向量归约等)来计算向量归约。指定向量归约的类型的信息可以包括其它信息,例如,用于执行分段向量归约的信息。在一些实施方式中,向量归约单元212可以被配置为执行预先确定的向量归约操作,使得仅变元(即,输入向量)是向量归约单元212执行向量归约所必要的。例如,向量归约单元212可以被配置为仅执行求和向量归约操作,或者以输入向量的预定元素对向量归约进行分段。在接收到此信息之后,向量归约单元212可以在不需要接收到附加控制信号或输入的情况下执行向量归约,使得一旦向量归约单元212已接收到所必要的输入(即,输入向量和向量归约参数)就在向量归约单元212中以其它方式使向量归约自动化。在这样的实施方式中,一旦已经启动了向量归约操作,向量归约单元212就可以基于所接收到的信息并在不需要来自芯片外的附加指令的情况下执行整个向量归约。在一些实施方式中,可以响应于向量归约单元212接收到所必要的信息而触发向量归约操作,即,使得不需要启动信号或其它触发。在其它实施方式中,启动信号或其它信号可以触发向量归约单元212来执行向量归约操作。
通常,为了计算向量归约,向量归约单元212接收指示要执行的向量归约操作的类型(例如,求和向量归约、最大或最小值向量归约、或者最大或最小索引向量归约)的控制信号。例如,向量归约单元212可以从定序器206接收控制信号。输入向量是作为例如从存储器208接收的交错数据的流。向量归约单元212对输入向量的元素执行通过控制信号所指示的向量归约操作。例如,向量归约单元212可以在接收到输入向量的每个元素时执行向量归约操作。可替选地,向量归约引擎212可以接收输入向量的所有元素或输入向量的元素的部分,并且可以在输入向量或输入向量的部分的元素已被接收到之后对其执行向量归约操作。在一些示例中,例如在求和向量归约的情况下,向量归约操作的结果不依赖于应用了向量归约操作的输入向量的元素的次序。在这些情况下,向量归约单元212可以确定要按照与元素被布置在输入向量中的次序不同的次序或者按照与其中元素由向量归约单元212接收的次序不同的次序对输入向量的元素执行向量归约操作。在已经对输入向量的元素中的全部应用向量归约操作之后,向量归约单元212可以例如向存储器208或者向专用硬件电路200的另一组件输出向量归约的结果。
因为向量归约单元212的输入可以是交错输入,所以在一些情况下向量归约单元212可以能够同时(例如,以流水线方式)对多个输入向量执行向量归约。也就是说,当第一输入向量可以正在向量归约单元212中经历向量归约操作时,向量归约单元212可以开始对第二输入向量执行向量归约操作。附加地,在一些示例中,可以将矩阵作为变元提供给电路200。输入矩阵可以例如通过获得一起形成输入矩阵的行或列向量而被分解成其的向量。向量归约单元212可以对形成输入矩阵的向量执行向量归约操作以生成向量归约结果的向量。结果的向量可以作为向量归约单元212的输出被例如提供给电路200的另一组件。
图3示出向量归约单元300的示例架构。向量归约单元300可以被包括在矩阵向量处理系统的专用硬件电路中,例如,作为专用硬件电路200的向量归约单元212。
向量归约单元300的值加载器310接收与一个或多个输入向量相对应的数据。每个值加载器310与例如从专用硬件电路200的存储器208接收到的数据的通路相对应。实际上,数据的每个通路以及因此每个值加载器310与输入向量或矩阵的不同列或行相对应。因此,尽管在图3中被示出为仅包括值加载器[0]至[3],从而使得能够实现4×1或更小向量的归约,但是在其它实施方式中向量归约单元300可以包括许多值加载器310。例如,被配置为对作为128通路数据发送的128×128元素矩阵或128×1向量进行操作的专用硬件电路可以包括128个相对应的值加载器310。
与输入向量相对应的数据可以由值加载器310以交错方式接收。如本说明书中所使用的是,交错数据是用偏移在多个通路中发送的数据,使得每个通路中的数据流是另一通路中的数据流后面的周期的某个倍数。例如,与值加载器[0]相对应的第一通路中的数据流可以领先与值加载器[1]相对应的第二通路中的数据流一个周期。这与扁平化数据相反,在所述扁平化数据中,例如由这些值加载器310中的每个接收到的每个通路中的数据流被对齐。例如,将在相同时钟周期时在值加载器310处接收到跨多个通路发送的元素的向量。
通常,向量归约单元300以及包括向量归约单元300的专用硬件电路的其它组件可以能够通过并行地执行某些操作来更高效地对交错数据执行计算。例如,如关于图4和图7A-7B更详细地示出的是,对交错数据进行操作允许向量归约单元300或用于执行矩阵变换或矩阵卷积的其它组件并行地执行某些操作或者优化连续的输入向量或矩阵的处理。例如,对与多个输入向量相对应的交错数据进行操作使得向量归约单元300能够在相同周期期间对多个输入向量执行向量归约操作。如图4中更详细地示出的是,向量归约单元300能够接收交错数据,使得不同输入向量的元素可以在相同周期期间被提供给向量归约单元300。向量归约单元300然后能够执行用于在单个周期期间计算不同输入向量的归约的操作。
值加载器310接收与输入向量相对应的数据,并且将该数据提供给输入寄存器320。在由特定值加载器310接收到的数据不与输入向量的元素相对应或者不与另一输入向量的元素相对应的情况下,特定值加载器310可以忽视或者丢弃该数据。在那些情况下,输入寄存器320可以不接收来自特定值加载器310的数据,可以接收空、正、或负无穷大值,或者可以接收表示从特定值加载器310接收到的元素不包括输入向量的元素的其它数据。例如,如果由值加载器310接收到3×1输入向量,则可以忽视或者丢弃由值加载器[3]接收到的值,因为它们不与输入向量的元素相对应。然而,如果由值加载器[3]接收到的值与先前输入向量相对应,例如其第一元素在3×1输入向量的第一元素之前被接收到的4×1输入向量,则可以将在值加载器[3]处接收到的值提供给输入寄存器320。
在一些实施方式中,向量归约单元300被配置为仅在由归约单元300正在处理向量输入数据的同时执行向量归约操作。例如,可以在接收到输入向量的第一元素时触发向量归约操作。这可以例如通过消耗较少的功率来改进电路的效率,并且可以确保在输入向量的不与另一输入向量的元素相对应的第一元素之前由输入寄存器320接收到的其它数据不影响对输入向量执行向量归约的结果。例如,因为值加载器310接收交错数据,所以如果当在值加载器[0]处接收到输入向量的第一元素时触发了向量归约操作,则在先前的周期期间接收到的任何数据将不会影响归约输入向量的结果。输入寄存器320接收并存储与输入向量相对应的数据。例如,当值加载器310接收到输入向量的元素并且将这些元素发送到输入寄存器320时,可以将这些元素存储在输入寄存器处。输入寄存器320可以包括与值加载器310相同或更多的元素,以便从值加载器310接收数据。因为由值加载器310接收到的数据是交错的,所以任何点处的输入寄存器320将不包括输入向量的所有元素,而是相反地将通常仅包括输入向量的单个元素。此外,因为数据是交错的,所以当由向量归约单元300接收到连续的输入向量时,输入寄存器320可以同时包括多个输入向量的元素。
向量归约单元300的计算单元330接收或者访问在输入寄存器320处存储的元素。计算单元330可以包括多个cell,所述多个cell各自与输入寄存器320的元素或特定值加载器310相对应。例如,如果向量归约单元300包括4个值加载器310,则计算单元330可以包括用于执行向量归约操作的4个cell。
计算单元330还接收向量归约控制信号305和来自控制寄存器315的数据。向量归约控制信号305可以指定计算单元330将执行的特定类型的向量归约操作。例如,向量归约控制信号305可以指定求和向量归约操作、最大值归约操作、最小向量归约操作、最大索引向量归约操作、最小索引向量归约操作、乘积向量归约操作、均值向量归约操作、或另一向量归约操作。向量归约单元300可以从专用硬件电路200的定序器206、从矩阵向量处理系统100的矩阵向量处理引擎150、或者从另一源接收向量归约控制信号305。
控制寄存器315可以接收并存储控制向量。控制向量指定计算单元330是否并如何应当对接收到的输入向量执行分段向量归约。如关于图4更深地讨论的是,控制向量包括可以作为控制信号被提供给计算单元330的cell的元素。这些元素可以指示计算单元330的每个cell是否应当将在该cell中执行的向量归约操作的结果提供给计算单元330的另一cell,或者应当输出作为输入向量的段的归约在该cell中执行的向量归约操作的结果。换言之,可以将控制向量的每个元素作为控制信号提供给相对应的cell,从而指示该cell是否正在处理输入向量的段的端点。
当从一个cell向另一cell提供向量归约操作的结果时,在该cell处不会发生分段向量归约。因此,例如,如果所有的cell或者除了最后cell之外全部都接收到控制cell以将在该cell中执行的向量归约操作的结果提供给计算单元330的另一cell的控制信号,则通过向量归约控制信号305所指示的向量归约操作信号被应用于输入向量的所有的元素。因此,计算单元330的(例如,计算单元330的最后cell的)输出将是对整个输入向量进行归约以生成单个结果的未分段向量归约操作的结果。
当计算单元330的特定cell未向另一cell提供向量归约操作的结果时,即,当发生分段向量归约操作时,可以从特定cell向计算单元330的另一cell提供占位符信号,诸如空(即,零)或正无穷大或负无穷大。因为由特定cell执行的向量归约操作的结果cell被输出为针对直到并包括由特定cell接收到的输入向量的元素的输入向量的那些元素的分段向量归约,所以结果是在由特定cell接收到的输入向量的元素处发生分段归约。因为空或正无穷大或负无穷大由特定cell提供给计算单元330的另一cell,所以这有效地对于输入向量的剩余元素开始新的向量归约计算,从而对于输入向量的剩余元素产生分段向量归约的第二部分。
计算单元330的cell执行归约操作以生成输入向量归约的结果。每个cell可以处理输入向量的特定元素。为了这样做,如在图4处更详细地描述的是,cell接收临时归约元素,所述临时归约元素是由计算单元330的先前cell执行的向量归约操作的结果,或占位符信号或初始化值,例如空或正无穷大或负无穷大。该cell还接收输入向量的特定元素,并且使用临时归约元素和输入向量的特定元素来执行通过向量归约控制信号305所指定的向量归约操作。如果未请求分段归约操作,则cell然后给计算单元330的下一个cell提供执行指定的向量归约操作的结果。如果请求了分段归约操作,则cell向下一个cell提供占位符,例如空或正无穷大或负无穷大。该cell还将输出执行所指定的向量归约操作的结果,所述结果与对于输入向量的在输入向量的特定元素之前并包括输入向量的特定元素的元素执行分段向量归约的结果相对应。如果未请求分段向量归约操作,则可以提供使用输入向量的最后元素来执行所指定的向量归约操作的结果以供输出,该结果与对输入向量的所有元素执行向量归约操作的结果相对应。
由计算单元330执行的向量归约过程的输出由值输出340接收,所述值输出340能够接收输出并以交错方式写入输出。因为计算单元330的cell中的任一个可以被配置为提供向量归约的结果,所以向量归约单元300包括与计算单元330的cell相对应的值输出[0]至[3]。例如,如果计算单元330的第二cell从控制寄存器315接收到指示该cell应当在该cell处执行分段向量归约的信号,则计算单元330的第二cell可以将输出提供给值输出[1]。如果未指示分段向量归约,则可以为来自与值输出[3]相对应的计算单元330的最后cell的输出提供向量归约的结果。在一些情况下,可能需要仅单个值输出340,例如,使得来自计算单元330的cell的输出全部输出到相同的值输出340。在请求了分段向量归约操作的情况下,值输出向量归约单元300可以输出结果的向量,其中向量的每个元素是输入向量的段的归约。值输出340可以将输出向量的元素提供给寄存器,例如输出寄存器,使得可以一起以向量格式为输出提供分段输入向量归约的结果,例如,作为以交错方式从向量归约单元300输出的输出向量。
值输出340能够接收来自计算单元330的向量归约结果并且能够将这些结果输出到专用硬件电路的存储器(例如,存储器208),输出到专用硬件电路的另一组件(例如,矩阵或向量变换单元),或者输出到芯片外的位置,诸如到矩阵向量处理引擎150或在矩阵向量处理系统100外部的另一目的地。
图4描绘用于向量归约单元的计算单元的示例架构400。架构400包括存储器410(例如,与图2的存储器208类似)、向量归约控制信号405(例如,与图3的向量归约控制信号305类似)、控制寄存器415(例如,与图3的控制寄存器315类似)以及值输出440(例如,与图3的值输出340类似)。该架构还包括与图3的计算单元330的cell相对应的cell 430。尽管在图4中被示出为串联连接,即,cell[0]被连接到cell[1],所述cell[1]被连接到cell[2],并依此类推,然而在其它实施方式中,可以以其它次序连接cell 430,例如,使得cell[1]接收来自除cell[0]以外的cell的数据,并且将数据提供给除cell[2]以外的cell。
这些cell 430各自从存储器410接收交错数据的通路。在一些示例中,cell 430可以从在图4中未示出的与图3的值加载器310类似的值输入接收数据。例如,图表450可以示出数据如何以交错方式跨与四个cell[0]至[3]相对应的四个通路中的每一个被写入。因此,在周期0处,cell[0]可以接收输入向量[0]的第一元素,在周期1处,cell[0]可以接收输入向量[1]的第一元素并且cell[1]可以接收输入向量[0]的第二元素,并依此类推。
每个cell 430还接收指定要执行的向量归约操作的向量归约控制信号405。如图4中所示,可以将相同的向量归约控制信号405提供给cell 430中的每一个。然而,在其它实施方式中,可以将不同的向量归约控制信号提供给cell 430中的每一个或子集。将不同的向量归约控制信号提供给不同的cell 430能够使架构400能够同时执行不同类型的向量归约操作。例如,可以将控制信号提供给cell 430以使cell 430对第一输入向量执行求和向量归约并对第二输入向量执行最大值向量归约。输入向量的交错输入可以使cell 430能够同时执行这些不同的向量归约操作。类似地,如果分段向量归约操作被执行,则输入向量的第一段可以经受第一类型的向量归约操作(例如,求和向量归约),而输入向量的第二段可以经受第二类型的向量归约操作,例如最大值向量归约操作。在一些实施方式中,cell 430被配置为执行单一类型的向量归约操作,或者针对每个输入向量在相同元素位置处对向量归约操作进行分段。在这些实施方式中,向量归约控制信号405或控制寄存器415可以是架构400的可选组件。
每个cell 430还接收在控制寄存器415处存储的控制向量的元素,所述控制寄存器415作为用于在架构400中控制分段向量归约的控制信号而操作。控制寄存器415可以接收控制信号的向量或者可以接收单独的控制信号以存储在控制寄存器415的特定元素处。每个控制信号可以指定由cell 430解释的以指示cell 430是否应当在cell 430处执行分段向量归约操作或者在cell 430处执行未分段向量归约操作的值。
例如,由cell 430从控制寄存器415接收到的零的值可以指示cell430不应当在cell 430处执行分段向量归约操作,即,cell 430不在接收输入向量的将被视为输入向量的段的端点的元素。为了执行未分段向量归约操作,cell 430可以接收在图4中作为<值>所示出的临时归约元素,其与初始化值或占位符信号(例如,空或正无穷大或负无穷大)相对应,或来自先前cell 430的先前向量归约操作的结果。cell 430还可以接收在图4中作为<索引>所示出的指示与交错输入数据的通路相对应的特定cell 430的索引,例如,以用于在执行最大索引或最小索引向量归约操作时使用。在一些实施方式中,索引可以是存储器位置,例如,在存储器208中存储有输入向量的位置。cell 430还从存储器410接收输入向量的元素。cell 430执行通过向量归约控制信号405所指定的向量归约操作,并且将向量归约操作的结果以及可选地由向量归约操作产生的索引提供给架构400的下一个cell 430。可选地,cell 430还可以将这些结果提供给值输出440。下一个cell 430能够接收来自cell430的向量归约操作的结果,并且能够在下一个cell 430处执行的向量归约操作中(例如在下一个周期中)使用这些结果。
可替选地,如果由cell 430接收到值1,则cell 430可以执行分段向量归约操作,使得cell 430将接收到的输入向量的元素视为输入向量的段的端点。为了这样做,cell430输出在cell 430处执行的向量归约操作的结果作为对以所接收到的元素结束的输入向量的段执行向量归约操作的结果。为了执行分段向量归约操作,cell 430可以接收与初始化值或来自先前cell 430的先前向量归约操作的结果相对应的临时归约元素。cell 430还可以从先前cell 430接收索引。cell 430还从存储器410接收输入向量的元素。cell 430执行通过向量归约控制信号405所指定的向量归约操作。然而,cell 430不将结果提供给架构400的下一个cell 430,而是相反,将该结果仅提供给值输出440作为分段向量归约操作的结果。对于下一个cell 430而言,cell 430发送空或正无穷大或负无穷大,即,作为用于要在下一个cell 430处开始的下一个向量归约的初始值或占位符信号。
例如,cell[1]可以从cell[0]接收与cell[0]执行由向量归约控制信号所指定的向量归约操作的结果相对应的临时归约元素。由cell[0]执行的向量归约操作的结果可以是输入向量[0]的第一元素。例如,如果向量归约控制信号405指定求和向量归约操作,则从cell[0]向cell[1]输出的结果将是输入向量[0]的第一元素。cell[1]还可以接收输入向量[0]的第二元素。cell[1]然后可以执行通过向量归约控制信号405所指定的向量归约操作,例如,求和向量归约操作,以产生结果。例如,在所指定的向量归约操作是求和向量归约操作的情况下,该结果将是输入向量[0]的第一元素和第二元素的和。
基于从控制寄存器415的[1]位置接收到的控制信号,cell[1]可以将此结果提供给cell[2]或者通过给值输出[1]或两者。例如,如果控制信号是为cell[1]指定未分段向量归约操作的零值,则cell[1]可以将结果提供给cell[2],并且还可以可选地将结果提供给值输出[1],例如,以输出向量归约操作的中间结果。如果控制信号是为cell[1]指定分段向量归约操作的值1,则cell[1]将该结果输出到值输出[1],以输出分段向量归约操作的结果,例如,输入向量[0]的前两个元素的总和。然而,cell[1]将不会将结果作为临时归约元素输出到cell[2]。相反,cell[1]将向cell[2]提供空、正无穷大或负无穷大,并且cell[2]将使用这个接收到的值作为临时归约元素。因此,当cell[2]从存储器410接收到输入向量[0]的第三元素时,由cell[2]执行的向量归约操作将是针对输入向量[0]的第二段的第二向量归约操作所执行的第一操作。向量归约操作的结果或在分段向量归约操作被执行条件下的结果被输出到值输出440,其中它们可以被提供给专用硬件电路200的或矩阵向量处理系统100的其它组件。
在通过向量归约控制信号405所指示的向量归约操作指示最小索引向量归约操作或最大索引向量归约操作的情况下,cell 430可以各自提供指示与交错输入数据的通路相对应的特定cell 430的索引。在一些情况下,这样的索引在向量归约操作被执行时可以总是从cell 430输出,但是可能不是可用数据,除非向量归约控制信号405指定了最大或最小索引向量归约操作。当通过向量归约控制信号405指定了这些向量归约操作中的一个时,cell 430的<值>和<索引>输出两者可能是准确地确定输出所必要的。例如,如果指定了最大索引向量归约操作,则cell[0]可以向cell[1]输出由cell[0]作为临时归约元素而接收的输入向量[0]的第一元素的值,以及指示输入数据的第一通路当前是具有最大值元素的索引的索引[0]。cell[1]可以接收来自cell[0]的值并将来自cell[0]的值与输入向量[0]的第二元素的值进行比较。如果输入向量[0]的第二元素的值大于输入向量[0]的第一元素的值,则cell[1]可以向cell[2]输出作为临时归约元素的输入向量[0]的第二元素的值,并且可以向cell[2]输出指示输入数据的第二通路当前是具有最大值元素的索引的索引[1]。根据控制向量是指定分段向量归约操作还是非分段向量归约操作,可以在每个cell 430处重复此过程。在完成向量归约操作之后,cell 430将索引值输出到值输出440,而不是输出临时归约元素,即值。
在一些情况下,由系统使用的初始化元素可以取决于通过向量归约控制信号405所指定的向量归约操作。例如,当指定了求和向量归约操作时,空值可以被使用作初始化值。当指定了乘积向量归约操作时,单位值1可以被用作初始化值。当指定了最大值向量归约操作或最大索引向量归约操作时,负无穷大可以被用作初始化元素。当指定了最小值向量归约操作或最小索引向量归约操作时,正无穷大可以被用作初始化元素。在一些情况下,以使用用于特定向量归约操作的初始化值通过例如作为与向量归约控制信号405类似的第二信号在外部从向量归约单元400接收的信号来指示或者提供。在其它实施方式中,cell430可以能够基于通过向量归约控制信号405所指定的向量归约操作来确定初始化元素。例如,基于cell 430接收到指定求和向量归约操作的信号,cell 430可以确定空应当被使用作初始化元素。
图5示出向量归约单元的cell的示例架构500。例如,图4的cell430中的每一个可以具有与架构500类似的架构。
示例架构500包括接收临时归约元素的临时归约元素寄存器502。可以从另一cell(例如,从图4的另一cell 430)接收临时归约元素。在一些情况下,临时归约元素寄存器502可以被初始化为例如空、正无穷大、或负无穷大值。例如,因为它不接收由先前的cell执行的向量归约操作的结果,所以向量归约单元400的cell[0]可以使其临时归约cell寄存器502被初始化为零。架构500还包括接收输入向量的元素的输入向量元素寄存器504。例如,向量归约单元400的cell[0]的输入向量cell寄存器504可以接收并存储输入向量[0]的第一元素,向量归约单元400的cell[1]的输入向量元素寄存器504可以接收并存储输入向量[0]的第二元素等。
临时归约元素可以被提供给多路复用器508并且输入向量元素被提供给多路复用器510。每个多路复用器508、510可以通过向量归约控制信号505来控制,使得向量归约控制信号505作为用于控制多路复用器508、510以将元素提供给特定计算电路512、514、516的选择信号而操作。
例如,向量归约控制信号505可以指示最大值向量归约操作或最小值向量归约操作将被执行,并且响应于信号505,多路复用器508、510可以将临时归约元素和输入向量元素提供给比较电路512,所述比较电路512被配置为对这些元素进行比较以确定这些元素的最小值或最大值。类似地,如果向量归约控制信号505指示求和向量归约操作要被执行,则多路复用器508、510可以接收信号505并且作为响应将临时归约元素和输入向量元素提供给被配置为求和这些元素的求和电路514。如果向量归约控制信号50指示乘积向量归约操作要被执行,则复用器508、510能够将临时降低元素和输入向量元素提供给被配置为计算这些元素的乘积的乘法电路516。其它计算电路还可以被包括在架构500中,例如,索引识别电路、用于计算算术均值的电路或其它计算电路。
在一些实施方式中,cell可以被配置为执行单一类型的向量归约操作。在这样的实施方式中,可以包括单个计算电路,例如,比较电路512、求和电路514、或乘法电路516中的仅一个。附加地,在这样的实施方式中向量归约控制信号505将不是指示架构500以执行特定类型的向量归约操作所必要的,并且所以向量归约控制信号505和多路复用器508、510可以是可选的。
在计算电路512、514、516处执行的计算的结果被输出到结果寄存器520。结果寄存器520还接收控制信号515。控制信号515可以是图4的控制寄存器415的与具有架构500的特定cell相对应的元素。例如,如果架构500与向量归约单元400的cell[1]相对应,则控制信号515可以是与控制寄存器415的[1]位置中的元素相对应的信号。
结果寄存器520基于控制信号515将结果输出到一个或多个组件。如果控制信号515指示分段向量归约操作将不发生,例如,控制信号515为零,则结果寄存器520可以将从计算电路512、514、516接收到的结果提供给下一个cell,例如,以在下一个cell的临时归约元素寄存器处被接收。可选地,如果分段向量归约操作将不发生,则结果寄存器520还可以将结果输出到值输出,例如,图4的值输出440中的一个。
如果控制信号515指示分段向量归约操作将发生,则结果寄存器520可以将从计算电路512、514、516接收到的结果提供给值输出,例如,图4的值输出440。结果寄存器还可以向下一个cell(例如,向下一个cell的临时归约元素寄存器)提供空、正无穷大、或负无穷大值,以在与架构500相关联的cell处对输入向量的向量归约进行分段。
其它cell架构还是可能的。在一些实施方式中,计算电路512、514、516的组件可以串联地布置。例如,比较电路512可以接收临时归约元素和输入向量元素。比较电路512的输出可以作为求和电路514的输入被提供,求和电路514的输出可以作为乘法电路516的输入被提供,以及乘法电路516的输出可以被提供给结果寄存器520。在这样的实施方式中,向量归约控制信号505可以操作来激活或者停用计算电路512、514、516的每个组件,使得当数据通过计算电路512、514、516的组件时对数据仅执行向量归约操作中的一个。虽然这样的架构将需要计算电路512、514、516的组件来以类似的方式解释向量归约控制信号505,但是这样的架构将减少对多路复用器508、510的需要。其它架构也在本说明书的范围内。
图6是用于对输入向量执行向量归约的示例过程600。在一些示例中,输入向量可以是输入矩阵的向量。通常,过程600可以由包括专用硬件电路(例如,图1的包括向量归约单元120的专用硬件电路110)的一个或多个计算机的系统来执行。
为了生成输入向量的归约,系统执行一系列操作(602-608)。例如,专用硬件电路可以包括多个cell,其中,除接收输入向量的指定的第一元素的指定的第一cell以外的所述多个cell中的每一个针对输入向量的特定元素被配置为执行操作(602-608)以计算向量归约。在一些实施方式中,因为指定的第一cell将不接收先前cell的输出,所以接收输入向量的指定的第一元素的指定的第一cell可以不执行操作(602-608)。因此,指定的第一cell可以简单地将输入向量的首先指定的第一元素提供给系统的下一个cell。其它cell各自接收先前cell的输出,执行操作(602-608)的序列,以生成它们自己的输出,所述输出被提供给下一个cell。与输入向量的最后元素相对应的系统的最后cell的输出是执行所指定的向量归约操作的结果。
cell接收输入向量的特定元素(602)。例如,电路的特定cell可以接收输入向量的特定元素。在一些实施方式中,第一寄存器(例如,输入寄存器)可以被配置为接收输入向量的元素。将输入向量的元素提供给输入寄存器的数据流可以是交错的,使得与输入向量相对应的数据以延迟方式跨多个通路被接收。例如,数据可以是交错的,使得用每个周期在输入寄存器处接收输入向量的下一个元素。由输入寄存器接收到的输入向量的特定元素被提供给电路的特定cell。
cell从所述多个cell中的另一个接收临时归约元素(604)。临时归约元素可以与对在输入向量的特定元素之前的输入向量的元素执行归约操作的结果相对应。例如,电路的特定cell可以接收与对在输入向量的所接收到的特定元素之前的输入向量的元素执行归约操作的结果相对应的临时归约元素。临时归约元素可以被从电路的一个或多个cell中的另一cell接收,例如,可以是先前cell的输出。该cell可以在cell接收输入向量的特定元素的相同时钟周期期间或者在在cell接收输入向量的特定元素的时钟周期之前或之后的时钟周期期间接收临时归约元素。作为示例,电路可以对图4的输入向量[0]执行向量归约操作。为了这样做,输入向量[0]的元素中的每一个在相对应的cell 430处被处理,即,使得输入向量[0]的第一元素在cell[0]处被处理,输入向量[0]的第二元素在cell[1]处被处理等。在这样的示例中,由cell[2]接收到的临时归约元素将与对输入向量的第一元素和第二元素(即,在由cell[2]接收到的输入向量的第三元素之前的输入向量的元素)执行归约操作的结果相对应。
该cell使用特定元素和临时归约元素来执行归约操作(606)。例如,在接收到输入向量的特定元素以及与在对该特定元素之前的输入向量的元素执行所指定的向量归约操作的结果相对应的临时归约元素之后,电路的特定cell可以对所接收到的数据执行由控制信号所指定的向量归约操作。再次参考图4的示例,在cell[2]接收到输入向量[0]的第三元素和cell[1]的输出作为临时归约元素之后,cell[2]可以对这些元素执行指定的向量归约操作。例如,如果所指定的向量归约操作是求和向量归约操作,则cell[2]可以合计输入向量[0]的第三元素和cell[1]的输出。
在一些实施方式中,系统的特定cell可以接收指定以使用输入向量的特定元素和临时归约元素来执行的向量归约操作的控制信号。在一些实施方式中,控制信号对于所述多个cell中的每一个可以是相同的,即,使得单个控制信号被电路接收并提供给这些cell中的每一个。在其它实施方式中,电路的每个cell可以接收不同的控制信号。这使得电路的不同cell能够同时(诸如当正在对输入向量执行分段向量归约操作时)执行不同的向量归约操作。在这样的实施方式中,提供给cell的控制信号可以由电路接收,例如作为寄存器处的向量,其中这些向量的每个元素可以作为控制信号被提供给相对应cell。向量归约操作的类型可以是例如求和向量归约操作、最大值向量归约操作、最小值向量归约操作、最大索引向量归约操作、最小索引向量归约操作、均值向量归约操作、乘积向量归约操作、或任何其它向量归约操作。
cell提供使用特定元素和临时归约元素来执行所指定的归约操作的结果作为新的临时归约元素(608)。例如,电路的特定cell可以将使用特定元素和临时归约元素来执行所指定的归约操作的结果作为新的临时归约元素提供给所述多个cell中的另一个。再次参考图4的示例,在cell[2]对输入向量[0]的第三元素和从cell[1]接收到的临时归约元素执行所指定的向量归约操作之后,cell[2]可以将所指定的向量归约操作的结果输出到电路的cell[3]。可替选地,如果特定cell是对输入向量的最后元素执行向量归约操作的cell,则可以将所得的临时归约元素作为与对输入向量执行向量归约的结果相对应的输出来提供。
系统提供与使用输入向量的最后元素来执行归约操作的结果相对应的新的临时归约元素用于作为输入向量的归约而输出(610)。例如,向量归约电路可以包括输出电路,例如诸如值输出440的一个或多个值输出,用于提供使用输入向量的最后元素来执行向量归约操作的结果。因为电路的每个cell使用输入向量的元素以及与对在输入向量的特定元素之前的输入向量的元素执行所指定的向量归约操作的结果相对应的临时归约元素来执行向量归约操作,所以使用输入向量的最后元素的所指定的向量归约操作的结果将是对输入向量的所有元素执行所指定的向量归约操作的结果。因此,此结果与输入向量的归约相对应。例如,架构400的cell[3]可以对输入向量[0]的第四(即,最后)元素和cell[2]的输出(即,由先前cell输出的临时归约元素)执行所指定的向量归约操作。由cell[3]执行的向量归约操作的结果将是针对整个输入向量的向量归约操作的结果。因此,例如,该结果可以被提供给值输出[3],用于作为输入向量的归约而输出。在一些实施方式中,例如,当对输入向量的多个段执行向量归约操作时,可以将对输入向量的最后元素执行向量归约的结果提供给另一cell。在那些实施方式中,对输入向量段的最后元素执行向量归约的结果可以被提供用于在结果被作为新的临时归约元素提供给下一个cell的相同时钟周期期间输出,或者可以像当结果被作为新的临时归约元素提供给下一个cell时一样被提供用于在先前或后一个时钟周期输出。
虽然如所讨论的电路的一个或多个cell顺序地接收并提供数据(例如,以cell[0]和输入向量[0]的第一元素开始并且以cell[3]和输入向量[0]的最后元素结束),但是在其它实施方式中cell可以以不同次序对输入向量进行操作。在那些实施方式中,cell可以对输入向量的不同元素进行操作,或者cell可以接收或者提供数据给在序列中紧接在该cell之前或之后的其它cell。例如,cell[1]的输出可以作为临时归约元素被提供给cell[3],并且cell[3]的输出可以作为临时归约cell被提供给图4的架构400的cell[2]。在这些实施方式中,用于处理输入向量的元素的最后cell的输出将是针对输入向量的归约结果。
图7A-7B示出在矩阵向量处理器中执行向量归约的示例。在一些实施方式中,图7A-7B的示例可以由图1的矩阵向量处理系统100来执行,所述图1的矩阵向量处理系统100以包括向量归约单元120的专用硬件电路110为特征。在图7A-7B中所示的示例中,对两个输入向量执行求和向量归约操作。第一输入向量是向量[1 2 3 4]并且第二输入向量是向量[5 6 7 8]。对第一输入向量执行的求和向量归约操作是分段向量归约操作,使得对第一输入向量的向量归约操作的结果是与第一输入向量的元素[1 2]和[3 4]的和相对应的两元素向量。对第二输入向量执行的求和向量归约操作不是分段向量归约操作,使得对第二输入向量执行向量归约操作的结果是与第二输入向量的元素[5 6 78]的和相对应的标量。
在图7A-7B中所示的这些帧中的每个处,可以用于实现存储器208的存储器710(例如,DRAM或SRAM)可以作为交错存储器被访问或读取。因此,在每个帧处,交错存储器读取被执行并且输入向量的元素在输入寄存器720处被接收。输入寄存器720可以例如与图3的输入寄存器320相对应。输入寄存器720将所接收到的输入向量的元素提供给归约单元cell730,例如,图4的cell 430。图7A-7B中的帧中的每个在向量归约操作被执行之前在730a之前的归约单元cell中示出归约单元cell 730,以及在向量归约操作被执行之后,在730b之后的单元cell中示出。图7A-7B的帧还示出控制寄存器740,其中控制寄存器740的内容与图4的控制寄存器415的用于控制向量归约单元以执行分段或未分段向量归约操作的内容相对应。输入向量的归约的输出被提供给输出750,例如,与图4的值输出440类似。
简要地,在图7A中所示的帧(a)处,从存储器710读取并在输入寄存器720处接收具有值1的第一输入向量的第一元素。虽然在其它实施方式中cell 730可以被初始化为正无穷大值、负无穷大值或另一值,但是cell 730已经如730a处所示被初始化为空。控制寄存器740已接收到用于实现第一输入向量的分段向量归约操作的元素的向量。元素的向量是[01 0 1]并且被提供给控制寄存器740,使得元素的向量的每个元素是相对应的cell 730的控制信号。因为控制寄存器740的[0]位置是0,即,指定未分段向量归约操作要被执行,所以cell 730接收第一输入向量的第一元素,将其与当前在cell 730中的值相加,并且将结果提供给下一cell 730。因此,如帧(a)的730b中所示,第一cell 730执行操作(空)+1=1,并且向下一个cell 730发送1。如730b中所示,第一cell的内容可以被重新初始化为空。
在帧(b)处,在输入寄存器720处接收具有值2的第一输入向量的第二元素和具有值5的第二输入向量的第一元素。第二cell 730归约单元合计其当前所存储的值和第一输入向量的所接收到的第二元素,即,执行操作(1)+2=3。因为用于第二cell 730的控制寄存器740的元素是1,即,指定分段向量归约操作要被执行,所以第二cell 730将所得的和输出到第二输出750。附加地,第二cell 730向第三cell 730输出零。在一些情况下,第二cell730可以输出不同的值,例如,空、正无穷大、或负无穷大。在一些情况下,输出750可以是单个输出,例如,使得所有的cell 730被连接到相同的输出750。
附加地,第一cell 730接收第二输入向量的第一元素,执行求和(空)+5=5,并且将结果输出到第二cell 730以供存储。因此,在帧(b)的730b处,第二cell 730存储值5。如图所示,第一cell 730可以被重新初始化为空或另一值。
在帧(c)处,在输入寄存器720处接收第一输入向量的第三元素和第二输入向量的第二元素。因为已经执行了第一输入向量的分段向量归约操作,所以控制寄存器740还被更新以包括用于第二输入向量的未分段向量归约操作的元素。因此,仅控制寄存器740的最后元素是1,使得对于第二个输入向量将仅产生单个归约输出。如帧(c)的730a处所示,第三cell 730存储值零,接收具有值3的第一输入向量的第三元素,执行操作(0)+3=3,并且将结果存储在最后cell 730中,如730b处所示。第二cell 730在730a处存储值5,接收具有值6的第二输入向量的第二元素,执行操作(5)+6=11,并且将结果存储在第三cell 730中,如730b处所示。
在帧(d)处,输入寄存器720的最后元素接收具有值4的第一输入向量的最后元素,以及具有值7的第二输入向量的第三元素。最后cell 730接收第一输入向量的最后元素,将其与在最后cell 730处存储的值相加,即,执行操作(3)+4=7,并且基于控制寄存器740存储1,将结果输出到最后输出750。第三cell 730接收第二输入向量的第三元素,将其与在第三cell 730处存储的值相加,即,执行操作(11)+7=18,并且将结果存储在最后cell 730中,如帧(d)的730b处所示。
在帧(e)处,在输入寄存器720处接收具有值8的第二输入向量的最后元素。此值被与当前在最后cell 730处存储的值相加,即,操作(18)+8=26被执行。因为与归约单元的最后cell 730相对应的控制寄存器740的最后元素是1,所以结果被输出到最后输出750。因此,输入向量中的两个的求和向量归约被输出。当元素被从cell 730中读出并且未例如用先前的cell 730的输出替换时,cell 730的内容可以被重新初始化为空或另一值。
本说明书中所描述的主题和功能操作的实施例能够以数字电子电路、以有形地具体实现的计算机软件或固件、以计算机硬件(包括本说明书中所公开的结构及其结构等同物)或者以它们中的一个或多个的组合加以实现。本说明书中所描述的主题的实施例能够作为一个或多个计算机程序,(即,在有形非暂时性程序载体上编码的、以供由数据处理设备执行或者控制数据处理设备的操作的计算机程序指令的一个或多个模块)被实现。可替换地或此外,能够在人工生成的传播信号上编码程序指令,所述传播信号例如为机器生成的电、光学或电磁信号,该信号被生成以对信息进行编码,用于传输到适合的接收器设备以供由数据处理设备执行。计算机存储介质能够是机器可读存储装置、机器可读存储基板、随机或串行存取存储器装置、或它们中的一个或多个的组合。
术语“数据处理设备”涵盖用于对数据进行处理的所有种类的设备、装置、和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。该设备能够包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。该设备除了包括硬件之外还能够包括为所述计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。
计算机程序(其还可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本、或代码)能够以任何形式的编程语言来编写,所述编程语言包括编译或解释语言或声明性或过程语言,并且其能够被以任何形式部署,包括作为独立程序或者作为合于在计算环境中使用的模块、组件、子例行程序、或适其它单元。计算机程序可能但未必与文件系统中的文件相对应。能够在保存其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的部分中、在专用于所述程序的单个文件中、或者在多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中存储程序。能够将计算机程序部署为在一个计算机上或者在位于一个站点或跨越多个站点分布并通过通信网络互连的多个计算机上执行。
本说明书中所描述的过程和逻辑流程能够通过一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能而被执行。过程和逻辑流程还能够由专用逻辑电路来执行,并且设备还能够作为专用逻辑电路被实现,所述专用逻辑电路例如为FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
作为示例,适合于执行计算机程序的计算机能够基于通用微处理器或专用微处理器或两者,或任何其它种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行或者实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器装置。通常,计算机还将包括或者在操作上耦合以从用于存储数据的一个或多个大量存储装置(例如,磁盘、磁光盘、或光盘)接收数据或者将数据转移到所述一个或多个大量存储装置,或者兼而有之。然而,计算机未必有此类装置。此外,能够将计算机嵌入在另一装置中,所述另一装置例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储装置(例如,通用串行总线(USB)闪速驱动器)等。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,作为示例包括半导体存储器装置,例如EPROM、EEPROM、和闪速存储器装置;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路来补充,或者并入在专用逻辑电路中。
为了发送与用户的交互,能够在计算机上实现本说明书中所描述的主题的实施例,所述计算机具有用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)以及用户能够用来向该计算机发送输入的键盘和指点装置(例如,鼠标或轨迹球)。其它种类的装置还能够用于发送与用户的交互;例如,提供给用户的反馈能够是任何形式的感觉反馈,例如视觉反馈、听觉反馈、或触觉反馈;并且可以任何形式接收来自用户的输入,包括声、语音或触觉输入。此外,计算机能够通过向由用户使用的装置发送文档并且从由用户使用的装置接收文档来与用户交互;例如,通过响应于从web浏览器接收到的请求而向用户的客户端装置上的web浏览器发送web页面。
能够在计算系统中实现本说明书中所描述的主题的实施例,所述计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户能够用来与本说明书中所描述的主题的实施方式交互的图形用户界面或Web浏览器的客户端计算机),或者由一个或多个此类后端、中间件或前端组件的任何组合。系统的组件能够通过任何形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如,互联网。
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络来交互。客户端和服务器的关系借助于在相应的计算机上运行的并且彼此具有客户端-服务器关系的计算机程序而产生。
虽然本说明书包含许多特定实施方式细节,但是这些不应当被解释为对任何发明的或可以要求保护的范围构成限制,而是相反被解释为可以特定于特定发明的特定实施例的特征的描述。还能够在单个实施例中相结合地实现在本说明书中在单独的实施例的上下文中描述的某些特征。相反,还能够在多个实施例中单独地或者按照任何适合的子组合实现在单个实施例的上下文中描述的各种特征。此外,尽管特征可以在上面被描述为按照某些组合起作用并因此甚至最初要求保护,然而来自要求保护的组合的一个或多个特征能够在一些情况下被从该组合中删去,并且所要求保护的组合能够针对子组合或子组合的变化。
类似地,虽然在附图中以特定次序描绘了操作,但是这不应当被理解为要求按照所示特定次序或按照顺序次序执行此类操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述的实施例中的各种系统模块和组件的分离不应当被理解为在所有实施例中要求这种分离,并且应当理解的是,所描述的程序组件和系统通常能够被一起集成在单个软件产品中或者封装到多个软件产品中。
已经对主题的特定实施例进行了描述。其它实施例在以下权利要求的范围内。例如,权利要求书中所记载的动作能够被按照不同次序执行并仍然实现所希望的结果。作为一个示例,附图中所描绘的过程不一定要求所示特定次序或顺序次序以实现所希望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。
Claims (22)
1.一种向量归约电路,所述向量归约电路被配置为对元素的输入向量进行归约,所述向量归约电路包括:
多个cell,其中,除接收所述输入向量的指定的第一元素的指定的第一cell以外的所述多个cell中的每一个cell被配置为:
接收所述输入向量的特定元素,
从所述多个cell中的另一个cell接收临时归约元素,
使用所述特定元素和所述临时归约元素来执行归约操作,以及
提供使用所述特定元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素;以及
输出电路,所述输出电路被配置为提供与使用所述输入向量的最后元素来执行所述归约操作的结果相对应的新的临时归约元素以用于作为所述输入向量的归约而输出。
2.根据权利要求1所述的向量归约电路,其中,所述归约操作是最大值归约操作,并且其中,使用所述特定元素和所述临时归约元素来执行所述归约操作包括:
对所述特定元素和所述临时归约元素进行比较;以及
至少基于所述比较并作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果,而确定所述特定元素和所述临时归约元素的最大值。
3.根据权利要求1所述的向量归约电路,其中,所述归约操作是最小值归约操作,以及其中,使用所述特定元素和所述临时归约元素来执行所述归约操作包括:
对所述特定元素和所述临时归约元素进行比较;以及
至少基于所述比较并作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果,而确定所述特定元素和所述临时归约元素的最小值。
4.根据权利要求1所述的向量归约电路,其中,所述归约操作是求和归约操作,以及其中,使用所述特定元素和所述临时归约元素来执行所述归约操作包括:
确定所述特定元素和所述临时归约元素的和,作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果。
5.根据权利要求1所述的向量归约电路,其中,所述归约操作是乘积归约操作,以及其中,使用所述特定元素和所述临时归约元素来执行所述归约操作包括:
确定所述特定元素和所述临时归约元素的乘积,作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果。
6.根据权利要求1所述的向量归约电路,其中,所述归约操作是最大索引操作,以及其中,使用所述特定元素和所述临时归约元素来执行所述归约操作包括:
接收指示与所述临时归约元素相对应的索引的数据;
对所述特定元素和所述临时归约元素进行比较;
至少基于所述比较确定所述特定元素和所述临时归约元素的最大值;以及
至少基于所述确定并作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果,而识别与所述特定元素相对应的索引或与所述临时归约元素相对应的索引中的一个。
7.根据权利要求1所述的向量归约电路,其中,所述归约操作是最小索引操作,以及其中,使用所述特定元素和所述临时归约元素来执行所述归约操作包括:
接收指示与所述临时归约元素相对应的索引的数据;
对所述特定元素和所述临时归约元素进行比较;
至少基于所述比较确定所述特定元素和所述临时归约元素的最小值;以及
至少基于所述确定并作为使用所述特定元素和所述临时归约元素来执行所述归约操作的结果,而识别与所述特定元素相对应的索引或与所述临时归约元素相对应的索引中的一个。
8.根据权利要求1所述的向量归约电路,其中,所述输入向量的所述特定元素是在元素的交错输入中接收的。
9.根据权利要求1所述的向量归约电路,其中,所述输入向量被识别为包括元素的多个段。
10.根据权利要求9所述的向量归约电路,其中,所述输入向量的所述特定元素是所述输入向量的特定段的指定的最后元素,以及其中,提供使用所述特定元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素包括:
提供使用所述输入向量的所述特定段的所述指定的最后元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素。
11.根据权利要求10所述的向量归约电路,其中,提供使用所述输入向量的所述特定段的所述指定的最后元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素包括:
向所述多个cell中的另一个cell并作为所述新的临时归约元素提供占位符信号。
12.根据权利要求9所述的向量归约电路,其中,所述输出电路被配置为提供多个元素用于作为所述输入向量的归约而输出,其中,所述多个元素中的每一个元素是与使用所述输入向量的段的指定的最后元素来执行所述归约操作的结果相对应的新的临时归约元素。
13.根据权利要求12所述的向量归约电路,其中,所述输出电路被配置为提供包括所述多个元素的输出向量用于作为所述输入向量的归约而输出。
14.根据权利要求9所述的向量归约电路,进一步包括:
控制寄存器,所述控制寄存器被配置为接收元素的控制向量,其中,元素的所述控制向量指定所述输入向量的元素的所述多个段。
15.根据权利要求14所述的向量归约电路,其中,提供使用所述特定元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素包括:
接收与所述特定元素相对应的所述控制向量的对应特定元素;
至少基于所述控制向量的所述对应特定元素来确定所述特定元素被指定为所述输入向量的特定段的最后元素;以及
向所述输出电路并至少基于所述确定提供使用被指定为所述输入向量的所述特定段的最后元素的所述特定元素和所述临时归约元素来执行所述归约操作的结果,作为所述输入向量的所述特定段的归约。
16.根据权利要求14所述的向量归约电路,其中,提供使用所述特定元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素包括:
接收与所述特定元素相对应的所述控制向量的对应特定元素;
至少基于所述控制向量的所述对应特定元素来确定所述特定元素被指定为所述输入向量的特定段的最后元素;以及
向所述多个cell中的另一个cell并至少基于所述确定提供占位符信号。
17.根据权利要求14所述的向量归约电路,其中,提供使用所述特定元素和所述临时归约元素来执行所述归约操作的结果作为新的临时归约元素包括:
接收与所述特定元素相对应的所述控制向量的对应特定元素;
至少基于所述控制向量的所述对应特定元素来确定所述特定元素未被指定为所述输入向量的特定段的最后元素;以及
至少基于所述确定,向所述多个cell中的另一个cell并作为新的临时性归约元素提供使用未被指定为所述输入向量的所述特定段的最后元素的所述特定元素和所述临时归约元素来执行所述归约操作的结果。
18.根据权利要求1所述的向量归约电路,其中,所述输出电路将所述输入向量的所述归约提供给被配置为计算向量或矩阵变换的变换电路。
19.根据权利要求1所述的向量归约电路,其中,所述多个cell中的每一个cell被配置为:
接收指定以使用所述特定元素和所述临时归约元素来执行的所述归约操作的类型的控制信号。
20.根据权利要求1所述的向量归约电路,其中,所述临时归约元素与对所述输入向量的、在所述输入向量的所述特定元素之前的元素执行所述归约操作的结果相对应。
21.根据权利要求1所述的向量归约电路,其中,所述多个cell中的每一个cell包括:
输入向量元素寄存器,所述输入向量元素寄存器被配置为接收所述输入向量的特定元素;
临时归约元素寄存器,所述临时归约元素寄存器被配置为从所述多个cell中的另一个接收临时归约元素;
计算电路,所述计算电路被配置为使用所述输入向量的特定元素和临时归约元素来执行归约操作;以及
结果寄存器,所述结果寄存器被配置为提供使用所述输入向量的特定元素和临时归约元素来执行归约操作的结果作为新的临时归约元素。
22.根据权利要求21所述的向量归约电路,其中,所述计算电路包括比较电路、求和电路、和乘法电路中的至少一个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911179581.9A CN111142937B (zh) | 2017-04-03 | 2018-02-06 | 向量归约处理器 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/477,791 US10108581B1 (en) | 2017-04-03 | 2017-04-03 | Vector reduction processor |
US15/477,791 | 2017-04-03 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911179581.9A Division CN111142937B (zh) | 2017-04-03 | 2018-02-06 | 向量归约处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108694055A true CN108694055A (zh) | 2018-10-23 |
CN108694055B CN108694055B (zh) | 2019-12-24 |
Family
ID=60991531
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911179581.9A Active CN111142937B (zh) | 2017-04-03 | 2018-02-06 | 向量归约处理器 |
CN201810118791.6A Active CN108694055B (zh) | 2017-04-03 | 2018-02-06 | 向量归约处理器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911179581.9A Active CN111142937B (zh) | 2017-04-03 | 2018-02-06 | 向量归约处理器 |
Country Status (9)
Country | Link |
---|---|
US (5) | US10108581B1 (zh) |
EP (2) | EP4086760B1 (zh) |
JP (3) | JP7055809B2 (zh) |
KR (3) | KR102347374B1 (zh) |
CN (2) | CN111142937B (zh) |
DK (1) | DK3552094T3 (zh) |
HK (1) | HK1259157A1 (zh) |
TW (4) | TWI828502B (zh) |
WO (1) | WO2018186918A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069737A (zh) * | 2019-04-19 | 2019-07-30 | 北京三快在线科技有限公司 | 内容生成方法、装置、计算机设备及存储介质 |
CN111105042A (zh) * | 2019-12-13 | 2020-05-05 | 广东浪潮大数据研究有限公司 | 一种并行消息处理方法、系统及相关装置 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936942B2 (en) * | 2017-11-21 | 2021-03-02 | Google Llc | Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
US11294670B2 (en) | 2019-03-27 | 2022-04-05 | Intel Corporation | Method and apparatus for performing reduction operations on a plurality of associated data element values |
US11216281B2 (en) * | 2019-05-14 | 2022-01-04 | International Business Machines Corporation | Facilitating data processing using SIMD reduction operations across SIMD lanes |
US10997116B2 (en) * | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
CN110580288B (zh) * | 2019-08-23 | 2022-09-09 | 腾讯科技(深圳)有限公司 | 基于人工智能的文本分类方法和装置 |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
US20240004647A1 (en) * | 2022-07-01 | 2024-01-04 | Andes Technology Corporation | Vector processor with vector and element reduction method |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236511A (zh) * | 2007-01-31 | 2008-08-06 | 国际商业机器公司 | 用于优化全局归约处理的方法和系统 |
US8447954B2 (en) * | 2009-09-04 | 2013-05-21 | International Business Machines Corporation | Parallel pipelined vector reduction in a data processing system |
CN104583938A (zh) * | 2012-08-23 | 2015-04-29 | 高通股份有限公司 | 向量处理器中的数据提取系统和方法 |
CN104603766A (zh) * | 2012-09-28 | 2015-05-06 | 英特尔公司 | 经加速的通道间的向量归约指令 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4839845A (en) | 1986-03-31 | 1989-06-13 | Unisys Corporation | Method and apparatus for performing a vector reduction |
US5423051A (en) | 1992-09-24 | 1995-06-06 | International Business Machines Corporation | Execution unit with an integrated vector operation capability |
JP3334330B2 (ja) | 1994-05-17 | 2002-10-15 | 日産自動車株式会社 | 燃料噴射弁 |
JPH0877142A (ja) | 1994-08-31 | 1996-03-22 | Fujitsu Ltd | ベクトルプロセッサ |
KR100267089B1 (ko) * | 1996-08-19 | 2000-11-01 | 윤종용 | 스칼라/벡터연산이조합된단일명령복수데이터처리 |
TW361051B (en) * | 1997-01-09 | 1999-06-11 | Matsushita Electric Ind Co Ltd | Motion vector detection apparatus |
JP3857614B2 (ja) | 2002-06-03 | 2006-12-13 | 松下電器産業株式会社 | プロセッサ |
CN1820246A (zh) * | 2003-05-09 | 2006-08-16 | 杉桥技术公司 | 执行饱和或不执行饱和地累加多操作数的处理器还原单元 |
US7797363B2 (en) | 2004-04-07 | 2010-09-14 | Sandbridge Technologies, Inc. | Processor having parallel vector multiply and reduce operations with sequential semantics |
US20060101244A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose functional unit with combined integer and floating-point multiply-add pipeline |
US8212823B2 (en) | 2005-09-28 | 2012-07-03 | Synopsys, Inc. | Systems and methods for accelerating sub-pixel interpolation in video processing applications |
US8065503B2 (en) * | 2006-12-15 | 2011-11-22 | International Business Machines Corporation | Iteratively processing data segments by concurrently transmitting to, processing by, and receiving from partnered process |
EP1936492A1 (en) | 2006-12-22 | 2008-06-25 | Telefonaktiebolaget LM Ericsson (publ) | SIMD processor with reduction unit |
US20090150648A1 (en) * | 2007-12-06 | 2009-06-11 | Eric Oliver Mejdrich | Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions |
US8131979B2 (en) * | 2008-08-15 | 2012-03-06 | Apple Inc. | Check-hazard instructions for processing vectors |
US8417921B2 (en) * | 2008-08-15 | 2013-04-09 | Apple Inc. | Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector |
JP5500652B2 (ja) * | 2009-02-02 | 2014-05-21 | 日本電気株式会社 | 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法 |
FR2949637B1 (fr) | 2009-08-28 | 2011-09-23 | Commissariat Energie Atomique | Dispositif de calcul reconfigurable sur voisinage flexible de pixels |
US8458243B1 (en) | 2010-03-03 | 2013-06-04 | Altera Corporation | Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering |
US9141386B2 (en) | 2010-09-24 | 2015-09-22 | Intel Corporation | Vector logical reduction operation implemented using swizzling on a semiconductor chip |
US20120290819A1 (en) * | 2011-05-09 | 2012-11-15 | Altera Corporation | Dsp block with embedded floating point structures |
CN104204989B (zh) | 2012-03-30 | 2017-10-13 | 英特尔公司 | 用于选择向量计算的元素的装置和方法 |
KR101772299B1 (ko) * | 2012-12-28 | 2017-08-28 | 인텔 코포레이션 | 스트라이딩된 액세스 패턴을 가진 벡터 레지스터에서 성분들을 축소하기 위한 명령어 |
US20150052330A1 (en) | 2013-08-14 | 2015-02-19 | Qualcomm Incorporated | Vector arithmetic reduction |
GB2519108A (en) * | 2013-10-09 | 2015-04-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for controlling performance of speculative vector operations |
US20150143076A1 (en) | 2013-11-15 | 2015-05-21 | Qualcomm Incorporated | VECTOR PROCESSING ENGINES (VPEs) EMPLOYING DESPREADING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITS AND VECTOR DATA MEMORY TO PROVIDE IN-FLIGHT DESPREADING OF SPREAD-SPECTRUM SEQUENCES, AND RELATED VECTOR PROCESSING INSTRUCTIONS, SYSTEMS, AND METHODS |
US9355061B2 (en) * | 2014-01-28 | 2016-05-31 | Arm Limited | Data processing apparatus and method for performing scan operations |
CN103995688B (zh) * | 2014-05-30 | 2016-10-12 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种基于标签的无序矢量归约电路 |
US9851970B2 (en) * | 2014-12-23 | 2017-12-26 | Intel Corporation | Method and apparatus for performing reduction operations on a set of vector elements |
US10192162B2 (en) * | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
US9537530B1 (en) * | 2015-06-26 | 2017-01-03 | Intel Corporation | Transceiver device and method of processing signals |
US10146535B2 (en) * | 2016-10-20 | 2018-12-04 | Intel Corporatoin | Systems, apparatuses, and methods for chained fused multiply add |
US9959247B1 (en) * | 2017-02-17 | 2018-05-01 | Google Llc | Permuting in a matrix-vector processor |
-
2017
- 2017-04-03 US US15/477,791 patent/US10108581B1/en active Active
- 2017-12-13 WO PCT/US2017/066058 patent/WO2018186918A1/en unknown
- 2017-12-13 KR KR1020217015113A patent/KR102347374B1/ko active IP Right Grant
- 2017-12-13 EP EP22177238.7A patent/EP4086760B1/en active Active
- 2017-12-13 KR KR1020197020740A patent/KR102256109B1/ko active IP Right Grant
- 2017-12-13 EP EP17829778.4A patent/EP3552094B1/en active Active
- 2017-12-13 JP JP2019538667A patent/JP7055809B2/ja active Active
- 2017-12-13 KR KR1020217043370A patent/KR102471597B1/ko active IP Right Grant
- 2017-12-13 DK DK17829778.4T patent/DK3552094T3/da active
-
2018
- 2018-01-04 TW TW111150786A patent/TWI828502B/zh active
- 2018-01-04 TW TW108130503A patent/TWI738042B/zh active
- 2018-01-04 TW TW110130102A patent/TWI791262B/zh active
- 2018-01-04 TW TW107100277A patent/TWI673648B/zh active
- 2018-02-06 CN CN201911179581.9A patent/CN111142937B/zh active Active
- 2018-02-06 CN CN201810118791.6A patent/CN108694055B/zh active Active
- 2018-09-12 US US16/129,663 patent/US10706007B2/en active Active
-
2019
- 2019-01-23 HK HK19101204.9A patent/HK1259157A1/zh unknown
-
2020
- 2020-07-01 US US16/918,448 patent/US11061854B2/en active Active
-
2021
- 2021-06-22 US US17/354,947 patent/US11940946B2/en active Active
-
2022
- 2022-04-06 JP JP2022063377A patent/JP7256914B2/ja active Active
-
2023
- 2023-03-31 JP JP2023058509A patent/JP7485820B2/ja active Active
-
2024
- 2024-01-31 US US18/429,142 patent/US20240168914A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236511A (zh) * | 2007-01-31 | 2008-08-06 | 国际商业机器公司 | 用于优化全局归约处理的方法和系统 |
US8447954B2 (en) * | 2009-09-04 | 2013-05-21 | International Business Machines Corporation | Parallel pipelined vector reduction in a data processing system |
CN104583938A (zh) * | 2012-08-23 | 2015-04-29 | 高通股份有限公司 | 向量处理器中的数据提取系统和方法 |
CN104603766A (zh) * | 2012-09-28 | 2015-05-06 | 英特尔公司 | 经加速的通道间的向量归约指令 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069737A (zh) * | 2019-04-19 | 2019-07-30 | 北京三快在线科技有限公司 | 内容生成方法、装置、计算机设备及存储介质 |
CN111105042A (zh) * | 2019-12-13 | 2020-05-05 | 广东浪潮大数据研究有限公司 | 一种并行消息处理方法、系统及相关装置 |
CN111105042B (zh) * | 2019-12-13 | 2023-07-25 | 广东浪潮大数据研究有限公司 | 一种并行消息处理方法、系统及相关装置 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694055A (zh) | 向量归约处理器 | |
US11620508B2 (en) | Vector computation unit in a neural network processor | |
US11620513B2 (en) | Computing convolutions using a neural network processor | |
US10679127B2 (en) | Performing average pooling in hardware | |
CN107454966B (zh) | 用于神经网络处理器的预取权重 | |
CN108446252A (zh) | 矩阵向量处理器中的转置 | |
TW201706917A (zh) | 用於類神經網路計算的旋轉資料 | |
TW202223760A (zh) | 用於執行類神經網路計算之電路、方法及非暫時性機器可讀儲存裝置 | |
CN108572940A (zh) | 使用矩阵计算单元的深度级联 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1259157 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |