TW202318227A - 矩陣向量處理系統及用於執行向量縮減之方法 - Google Patents
矩陣向量處理系統及用於執行向量縮減之方法 Download PDFInfo
- Publication number
- TW202318227A TW202318227A TW111150786A TW111150786A TW202318227A TW 202318227 A TW202318227 A TW 202318227A TW 111150786 A TW111150786 A TW 111150786A TW 111150786 A TW111150786 A TW 111150786A TW 202318227 A TW202318227 A TW 202318227A
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- input
- reduction operation
- cell
- vector reduction
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 871
- 230000009467 reduction Effects 0.000 title claims abstract description 543
- 238000000034 method Methods 0.000 title claims description 19
- 238000012545 processing Methods 0.000 title description 61
- 230000004044 response Effects 0.000 claims description 11
- 230000002123 temporal effect Effects 0.000 claims description 9
- 239000011159 matrix material Substances 0.000 description 51
- 238000004364 calculation method Methods 0.000 description 37
- 238000004590 computer program Methods 0.000 description 11
- 238000013528 artificial neural network Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 3
- 230000017105 transposition Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 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
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- 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
- 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/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, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline, 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, 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, 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
Abstract
本發明揭示一種經組態以縮減元素之一輸入向量之向量縮減電路,其包括複數個胞,其中除接收該輸入向量之一經指定第一元素之一經指定第一胞以外,該複數個胞之各者經組態以:接收該輸入向量之一特定元素;自該一或多個胞之另一者接收一暫時縮減元素;使用該特定元素及該暫時縮減元素執行一縮減運算;及提供使用該特定元素及該暫時縮減元素執行該縮減運算之一結果作為一新暫時縮減元素。該向量縮減電路亦包括一輸出電路,該輸出電路經組態以提供對應於使用該輸入向量之一末元素執行該縮減運算之一結果的一新暫時縮減元素以作為該輸入向量之一縮減輸出。
Description
本說明書係關於在硬體中執行向量縮減。
一般而言,一向量縮減係對一輸入向量之元素執行以產生一純量輸出或具有小於該輸入向量之一維度之一輸出向量的一運算。例如,一求和向量縮減運算可產生等於一輸入向量之元素之一總和的一純量輸出。在一些實例中,可對一輸入向量之多個片段執行各自向量縮減運算。一分段向量縮減運算產生其中各元素係該輸入向量之一片段之一縮減的一輸出向量。例如,一分段求和向量縮減運算可產生其中各元素係輸入向量之元素之一片段之一總和的一輸出向量。
一般而言,本說明書描述計算向量縮減之一專用硬體電路。
一般而言,本說明書中所描述之標的之一新穎態樣可體現於一種經組態以縮減元素之一輸入向量之向量縮減電路中,該向量縮減電路包括複數個胞,其中除接收該輸入向量之一經指定第一元素之一經指定第一胞以外,該複數個胞之各者經組態以:接收該輸入向量之一特定元素;自該複數個胞之另一者接收一暫時縮減元素;使用該特定元素及該暫時縮減元素執行一縮減運算;及提供使用該特定元素及該暫時縮減元素執行該縮減運算之一結果作為一新暫時縮減元素。該向量縮減電路包括一輸出電路,該輸出電路經組態以提供對應於使用該輸入向量之一末元素執行該縮減運算之一結果的一新暫時縮減元素以作為該輸入向量之一縮減輸出。
實施方案可視需要包含以下特徵之一或多者。在一些實施方案中,縮減運算係一最大值縮減運算,且使用特定元素及暫時縮減元素執行縮減運算包括比較該特定元素與該暫時縮減元素,且至少基於該比較判定該特定元素及該暫時縮減元素之一最大值且作為使用該特定元素及該暫時縮減元素執行縮減運算之結果;縮減運算係一最大值縮減運算,且使用特定元素及暫時縮減元素執行縮減運算包括比較該特定元素與該暫時縮減元素,且至少基於該比較判定該特定元素及該暫時縮減元素之一最大值且作為使用該特定元素及該暫時縮減元素執行縮減運算之結果。
實施方案亦可視需要包含以下特徵之一或多者。在一些實施方案中,縮減運算係一求和縮減運算,且使用特定元素及暫時縮減元素執行縮減運算包括判定該特定元素與該暫時縮減元素之一總和作為使用該特定元素及該暫時縮減元素執行縮減運算之結果;縮減運算係一乘積縮減運算,且使用特定元素及暫時縮減元素執行縮減運算包括判定該特定元素與該暫時縮減元素之一乘積作為使用該特定元素及該暫時縮減元素執行縮減運算之結果。
實施方案亦可視需要包含以下特徵之一或多者。在一些實施方案中,縮減運算係一最大索引運算,且使用特定元素及暫時縮減元素執行縮減運算包括:接收指示對應於該暫時縮減元素之一索引的資料;比較該特定元素與該暫時縮減元素;至少基於該比較判定該特定元素及該暫時縮減元素之一最大值;及至少基於該判定識別對應於該特定元素之一索引或對應於該暫時縮減元素之該索引之一者且作為使用該特定元素及該暫時縮減元素執行縮減運算之結果。
實施方案亦可視需要包含以下特徵之一或多者。在一些實施方案中,縮減運算係一最小索引運算,且使用特定元素及暫時縮減元素執行縮減運算包括:接收指示對應於該暫時縮減元素之一索引的資料;比較該特定元素與該暫時縮減元素;至少基於該比較判定該特定元素及該暫時縮減元素之一最小值;及至少基於該判定識別對應於該特定元素之一索引或對應於該暫時縮減元素之該索引之一者且作為使用該特定元素及該暫時縮減元素執行縮減運算之結果。
實施方案亦可視需要包含以下特徵之一或多者。在一些實施方案中,輸入向量之特定元素係在元素之一交錯輸入中予以接收;輸入向量係被識別為包含複數個元素片段;輸入向量之特定元素係該輸入向量之特定片段之一經指定末元素,且除接收該輸入向量之經指定第一元素之經指定第一胞以外,複數個胞之各者經組態以將使用輸入向量之特定片段之該經指定末元素及暫時縮減元素執行縮減運算之一結果提供至輸出電路且作為輸入向量之特定片段之一縮減;提供使用輸入向量之特定片段之該經指定末元素及暫時縮減元素執行縮減運算之一結果作為一新暫時縮減元素包括將一佔位符信號提供至複數個胞之另一者且作為該新暫時縮減元素;輸出電路經組態以提供複數個元素以作為輸入向量之一縮減輸出,其中該複數個元素之各者係對應於使用輸入向量之一片段之一經指定末元素執行縮減運算之一結果的一新暫時縮減元素;輸出電路經組態以提供包括該複數個元素之一輸出向量以作為輸入向量之一縮減輸出。
實施方案亦可視需要包含以下特徵之一或多者。在一些實施方案中,向量縮減電路包括經組態以接收元素之一控制向量之一控制暫存器,其中元素之該控制向量指定輸入向量之複數個元素片段;提供使用特定元素及暫時縮減元素執行縮減運算之一結果作為一新暫時縮減元素包括:接收該控制向量之對應於該特定元素之一特定元素;至少基於該控制向量之該特定元素判定該特定元素係經指定為輸入向量之一特定片段之一末元素;且至少基於該判定將使用經指定為輸入向量之該特定片段之一末元素之該特定元素及暫時縮減元素執行縮減運算的一結果提供至輸出電路作為輸入向量之該特定片段之一縮減。
實施方案亦可視需要包含以下特徵之一或多者。在一些實施方案中,提供使用特定元素及暫時縮減元素執行縮減運算之一結果作為一新暫時縮減元素包括:接收控制向量之對應於特定元素之一特定元素;至少基於該控制向量之該特定元素判定該特定元素係經指定為輸入向量之一特定片段之一末元素;且至少基於該判定將一佔位符信號提供至複數個胞之另一者;提供使用特定元素及暫時縮減元素執行縮減運算之一結果作為一新暫時縮減元素包括:接收控制向量之對應於該特定元素之一特定元素;至少基於控制向量之該特定元素判定該特定元素未被指定為輸入向量之一特定片段之一末元素;且至少基於該判定將使用未被指定為輸入向量之該特定片段之一末元素之該特定元素及暫時縮減元素執行縮減運算的一結果提供至複數個胞之另一者且作為一新暫時縮減元素。
實施方案亦可視需要包含以下特徵之一或多者。在一些實施方案中,輸出電路將輸入向量之縮減提供至經組態以計算向量或矩陣置換之一置換電路;複數個胞之各者經組態以接收指定使用特定元素及暫時縮減元素執行之縮減運算之一類型的一控制信號;該暫時縮減元素對應於對輸入向量之在該輸入向量之特定元素之前的元素執行該指定縮減運算之一結果。
可實施本申請案中所描述之標的之特定實施例以便實現以下優點之一或多者。可在硬體中藉由一專用硬體電路執行向量縮減。該專用硬體電路能夠在少於一通用處理器(例如,GPU或CPU)之週期中執行向量縮減。此外,藉由在硬體中使用該專用硬體電路計算向量縮減,可在無需將資料傳回至一主機電腦的情況下(即,無需執行晶片外或軟體中之計算之至少一部分的情況下)執行向量縮減。因此,避免由計算晶片外或軟體中之向量縮減(其中該計算可為與專用硬體電路中相比需要更大數目個通用處理器(例如,GPU或CPU)週期來執行之一昂貴計算)所引起之處理延遲。
與在一通用矩陣或向量處理硬體電路(例如,亦經組態以執行矩陣卷積或其他矩陣向量計算之一電路)中或在另一專用硬體電路(例如,經組態以執行向量縮減及矩陣移調計算兩者之電路)中執行向量縮減之一系統相比,使用專門經設計以計算向量縮減之一硬體電路亦容許更有效處理。在一專用硬體電路上實施向量縮減運算允許有效處置向量縮減而無針對其他矩陣向量計算能力或效率的顧慮,及保留用於執行其他矩陣或向量計算之其他矩陣或向量處理電路,藉此大體上增大在硬體中之矩陣向量計算之效率之一設計。
在隨附圖式及下文描述中闡述本說明書之標的之一或多項實施例之細節。將自描述、圖式及技術方案明白標的之其他特徵、態樣及優點。
一向量縮減運算係對元素之一輸入向量執行以產生作為一純量或小於該輸入向量(即,具有低於該輸入向量之一維度)之一元素向量之一輸出的一運算。例如,一求和向量縮減運算產生作為輸入向量之元素之一總和之一純量輸出。舉另一實例,一最大值或最小值向量縮減運算產生分別作為輸入向量之元素之最大值或輸入向量之元素之最小值的一純量輸出。類似地,一最大索引或最小索引向量縮減運算產生分別指示最大值之輸入向量或輸入向量之最小值中之一索引的一輸出。其他向量縮減運算係可行的,諸如產生對應於輸入向量之元素之一乘積之一純量輸出的一乘積向量縮減運算、產生對應於輸入向量之元素之一算術平均數之一純量輸出的一平均數向量縮減運算等等。
在一些實施方案中,可將一輸入向量分段,且可對該輸入向量之該等片段之一或多者執行各自向量縮減運算。對輸入向量之多個片段之各者執行一各自向量縮減運算產生一輸出向量。該輸出向量之各元素對應於對輸入向量之一對應片段執行向量縮減運算之一結果。例如,對分成三個片段之一輸入向量執行之一向量縮減運算的輸出將為三個元素之一輸出向量,其中該輸出向量之各元素係對該輸入向量之一不同片段應用向量縮減運算之一結果。
在用於其他真實世界應用之線性代數計算及資料分析中頻繁計算向量縮減。例如,可在訓練一類神經網路時計算向量縮減(例如)作為一機器學習程序之一部分。在此等例項中,向量縮減可用於在訓練一類神經網路時反向傳播梯度。亦可對一類神經網路之一層之輸出執行向量縮減。一向量縮減之一結果可提供為至該類神經網路之另一層之一輸入,或可提供為來自該類神經網路之一輸出。向量縮減之其他應用包含諸如在數位音訊或視訊解碼中之多媒體處理。諸如在類比及數位傳輸、雷達及聲納之領域中之信號處理亦頻繁利用向量縮減技術(例如)以識別一經接收或傳輸信號中之一最大值或最小值。
在一些實施方案中,可將輸入矩陣分解成若干向量,且可對輸入矩陣之向量個別應用向量縮減。例如,可將表示為一矩陣之一影像(例如,其中該矩陣之元素對應於該影像之像素)分解成若干向量。可對輸入矩陣之向量應用向量縮減運算(諸如一平均數向量縮減運算),(例如)以執行影像平滑化或減小該影像之像素大小。
本說明書描述對輸入向量執行向量縮減運算之專用硬體電路。該專用硬體電路可產生對應於輸入向量之向量縮減之純量或向量輸出。
圖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接收之一控制信號亦可控制電路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 x 1或更小向量之縮減,然在其他實施方案中向量縮減單元300可包含許多值載入器310。例如,經組態以對作為128通道資料傳輸之128 x 128元素矩陣或128 x 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 x 1輸入向量,則可忽略或摒棄藉由值載入器[3]接收之值,此係因為其等並不對應於輸入向量之元素。然而,若藉由值載入器[3]接收之該等值對應於一前置輸入向量(例如,其之第一元素在該3 x 1輸入向量之第一元素之前被接收之一4 x 1輸入向量),則可將在值載入器[3]處接收之該等值提供至輸入暫存器320。
在一些實施方案中,向量縮減單元300經組態以僅在藉由該縮減單元300處理向量輸入資料時執行向量縮減運算。例如,可在接收一輸入向量之一第一元素時觸發一向量縮減運算。此可(例如)藉由消耗較少電力來改良電路之效率,且可確保藉由輸入暫存器320在該輸入向量之該第一元素之前接收之並不對應於另一輸入向量之一元素的其他資料並不影響對該輸入向量執行向量縮減之一結果。例如,因為值載入器310接收交錯資料,所以若在值載入器[0]處接收輸入向量之一第一元素時觸發一向量縮減運算,則在先前週期期間接收之任何資料將不會影響縮減該輸入向量之一結果。輸入暫存器320接收及儲存對應於輸入向量之資料。例如,在值載入器310接收一輸入向量之元素且將該等元素傳輸至輸入暫存器320時,可將該等元素儲存於該輸入暫存器處。輸入暫存器320可包含與值載入器310相同或比值載入器310更多之元素,以自該等值載入器310接收資料。因為藉由值載入器310接收之資料經交錯,所以任何時間點之輸入暫存器320將不包含輸入向量之所有元素,而是將通常僅包含該輸入向量之一單個元素。此外,因為資料經交錯,所以在藉由向量縮減單元300接收連續輸入向量時,輸入暫存器320可同時包含多個輸入向量之元素。
向量縮減單元300之一計算單元330接收或存取儲存於輸入暫存器320處之元素。該計算單元330可包含各對應於輸入暫存器320或一特定值載入器310之一元素之多個胞。例如,若向量縮減單元300包含4個值載入器310,則計算單元330可包含用於執行向量縮減運算之4個胞。
計算單元330亦自一控制暫存器315接收一向量縮減控制信號305及資料。該向量縮減控制信號305可指定計算單元330將執行之向量縮減運算之一特定類型。例如,該向量縮減控制信號305可指定一求和向量縮減運算、最大值縮減運算、一最小向量縮減運算、一最大索引向量縮減運算、一最小索引向量縮減運算、一乘積向量縮減運算、一平均數向量縮減運算或另一向量縮減運算。向量縮減單元300可自專用硬體電路200之定序器206、自矩陣向量處理系統100之矩陣向量處理引擎150或自另一來源接收向量縮減控制信號305。
控制暫存器315可接收及儲存一控制向量。該控制向量指定計算單元330是否應對一經接收輸入向量執行分段向量縮減及應如何執行。如參考圖4更深入論述,控制向量包含可作為控制信號被提供至計算單元330之胞之元素。該等元素可指示計算單元330之各胞是否應將該胞中執行之一向量縮減運算之一結果提供至計算單元330之另一胞,或是否應輸出該胞中執行之該向量縮減運算之該結果作為輸入向量之一片段之一縮減。換言之,控制向量之各元素可作為一控制信號被提供至一對應胞以指示該胞是否正處理輸入向量之一片段之一端點。
當將一向量縮減運算之一結果自一胞提供至另一胞時,分段向量縮減在該胞處並不發生。因此,例如,若所有胞或除一末胞之外之所有胞各接收控制該胞以將在該胞中執行之向量縮減運算之一結果提供至計算單元330之另一胞之一控制信號,則對輸入向量之所有元素應用藉由向量縮減控制信號305指示之向量縮減運算。因此,計算單元330之輸出(例如,計算單元330之一末胞之輸出)將為縮減整個輸入向量以產生一單個結果之一未分段向量縮減運算之一結果。
當計算單元330之一特定胞並不將一向量縮減運算之一結果提供至另一胞時(即,當一分段向量縮減運算並未發生時),可將一佔位符信號(諸如一空值(即,零)或正或負無限大)自該特定胞提供至計算單元330之另一胞。結果係在藉由該特定胞接收之輸入向量之元素處發生之一分段縮減,此係因為藉由該特定胞執行之一向量縮減運算之一結果係經輸出為多至且包含藉由該特定胞接收之該輸入向量之該元素的輸入向量之該等元素的一分段向量縮減。因為一空值或正或負無限大係藉由特定胞提供至計算單元330之另一胞,所以此有效起始輸入向量之剩餘元素之一新向量縮減計算,藉此產生該輸入向量之該等剩餘元素之分段向量縮減的一第二部分。
計算單元330之胞執行縮減運算以產生輸入向量縮減之一結果。各胞可處理輸入向量之一特定元素。為此,如圖4處更詳細描述,一胞接收一暫時縮減元素,該暫時縮減元素係藉由計算單元330之一前置胞執行之一向量縮減運算之一結果,或一佔位符信號或初始化值(例如,空值或正或負無限大)。該胞亦接收輸入向量之一特定元素,且使用該暫時縮減元素及該輸入向量之該特定元素執行藉由向量縮減控制信號305指定之向量縮減運算。若未請求一分段縮減運算,則該胞接著對計算單元330之下一胞提供執行指定向量縮減運算之一結果。若請求一分段縮減運算,則該胞提供一佔位符(例如,空值或正或負無限大)至該下一胞。該胞亦將輸出執行該指定向量縮減運算之該結果,其對應於執行輸入向量之在該輸入向量之特定元素之前且包含該特定元素之元素之分段向量縮減的一結果。若未請求一分段向量縮減運算,則可提供使用輸入向量之一末元素執行指定向量縮減運算之一結果(其對應於對該輸入向量之所有元素執行向量縮減運算之一結果)以用於輸出。
藉由值輸出340接收藉由計算單元330執行之向量縮減程序之輸出,該等值輸出340能夠接收該等輸出且以一交錯方式寫入該等輸出。因為計算單元330之胞之任一者可經組態以提供一向量縮減之一結果,所以向量縮減單元300包含對應於計算單元330之胞之值輸出[0]至[3]。例如,若計算單元330之一第二胞自控制暫存器315接收指示該胞應在該胞處執行分段向量縮減之一信號,則計算單元330之該第二胞可提供一輸出至值輸出[1]。若未指示分段向量縮減,則可提供向量縮減之一結果以自計算單元330之對應於值輸出[3]之一末胞輸出。在一些例項中,可僅需要一單個值輸出340,(例如)使得來自計算單元330之胞之輸出全部輸出至相同值輸出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之胞之胞430。雖然在圖4中被展示為串聯連接(即,胞[0]連接至胞[1],該胞[1]連接至胞[2]等等),然在其他實施方案中,該等胞430可依其他順序連接,(例如)使得胞[1]自除胞[0]以外之一胞接收資料且將資料提供至除胞[2]以外之一胞。
胞430各自記憶體410接收一通道之交錯資料。在一些實例中,胞430可自類似於圖3之值載入器310之值輸出(其等在圖4中未展示)接收資料。例如,圖表450可展示如何跨對應於四個胞[0]至[3]之四個通道之各者以一交錯方式寫入資料。因此,在週期0處,胞[0]可接收輸入向量[0]之一第一元素,在週期1處,胞[0]可接收輸入向量[1]之一第一元素且胞[1]可接收輸入向量[0]之一第二元素等等。
各胞430亦接收指定用以執行之一向量縮減運算之一向量縮減控制信號405。如圖4中所展示,可對胞430之各者提供相同向量縮減控制信號405。然而,在其他實施方案中,可對胞430之各者或子組提供不同向量縮減控制信號。對不同胞430提供不同向量縮減控制信號可使架構400能夠同時執行不同類型之向量縮減運算。例如,可對胞430提供控制信號以引起該等胞430對一第一輸入向量執行一求和向量縮減且對一第二輸入向量執行一最大值向量縮減。該等輸入向量之交錯輸入可使胞430能夠同時執行此等不同向量縮減運算。類似地,若執行一分段向量縮減運算,則一輸入向量之一第一片段可經受一第一類型之向量縮減運算(例如,一求和向量縮減),且該輸入向量之一第二片段可經受一第二類型之向量縮減運算(例如,一最大值向量縮減運算)。在一些實施方案中,胞430經組態以執行一單一類型之向量縮減運算,或在各輸入向量之一相同元素位置處將一向量縮減運算分段。在此等實施方案中,向量縮減控制信號405或控制暫存器415可為架構400之選用組件。
各胞430亦接收儲存於控制暫存器415處之一控制向量之一元素,該元素作為用於控制架構400中之分段向量縮減之一控制信號而操作。控制暫存器415可接收控制信號之一向量或可接收個別控制信號以儲存於該控制暫存器415之特定元素處。各控制信號可指定藉由一胞430解譯以指示該胞430是否應在該胞430處執行一分段向量縮減運算或在該胞430處執行一未分段向量縮減運算的一值。
例如,藉由胞430自控制暫存器415接收之一零值可指示該胞430不應在該胞430處執行一分段向量縮減運算,即,該胞430不接收輸入向量之將被處理為該輸入向量之一片段之一端點的一元素。為執行一未分段向量縮減運算,胞430可接收在圖4中展示為<值>之一暫時縮減元素,其對應於一初始化值或佔位符信號(例如,一空值或正或負無限大),或來自一前置胞430之一先前向量縮減運算之一結果。胞430亦可接收在圖4中展示為<索引>之一索引,其指示對應於交錯輸入資料之一通道之(例如)用於執行最大索引或最小索引向量縮減運算的一特定胞430。在一些實施方案中,該索引可為一記憶體位置,例如,記憶體208中之其中先前或現在儲存輸入向量之一位置。胞430亦自記憶體410接收一輸入向量之一元素。胞430執行藉由向量縮減控制信號405指定之向量縮減運算,且將該向量縮減運算之一結果且視需要由該向量縮減運算引起之一索引提供至架構400之下一胞430。視需要,胞430亦可將此等結果提供至一值輸出440。下一胞430可自胞430接收向量縮減運算之結果,且可(例如)在下一週期中使用在該下一胞430處執行之一向量縮減運算中之結果。
替代性地,若藉由胞430接收一值1,則該胞430可執行一分段向量縮減運算,使得該胞430將輸入向量之一經接收元素處理為該輸入向量之一片段之一端點。為此,胞430輸出在該胞430處執行之一向量縮減運算之結果作為對以該經接收元素結束之該輸入向量之該片段執行向量縮減運算之一結果。為執行該分段向量縮減運算,胞430可接收對應於一初始化值或來自一前置胞430之一先前向量縮減運算之一結果的一暫時縮減元素。胞430亦可自前置胞430接收一索引。胞430亦自記憶體410接收一輸入向量之一元素。胞430執行藉由向量縮減控制信號405指定之向量縮減運算。然而,胞430並未將結果提供至架構400之下一胞430,而是僅將結果提供至一值輸出440作為分段向量縮減運算之一結果。胞430將一空值或正或負無限大(即,作為用於將在下一胞430處開始之下一向量縮減之一初始化值或佔位符信號)發送至該下一胞430。
例如,胞[1]可自胞[0]接收對應於胞[0]執行藉由向量縮減控制信號指定之向量縮減運算之一結果的一暫時縮減元素。藉由胞[0]執行之該向量縮減運算之該結果可為輸入向量[0]之一第一元素。例如,若向量縮減控制信號405指定一求和向量縮減運算,則自胞[0]輸出至胞[1]之結果將為輸入向量[0]之該第一元素。胞[1]亦可接收輸入向量[0]之一第二元素。胞[1]可接著執行藉由向量縮減控制信號405指定之向量縮減運算(例如,一求和向量縮減運算)以產生一結果。例如,在該指定向量縮減運算係一求和向量縮減運算之情況下,結果將為輸入向量[0]之第一元素與第二元素之一總和。
基於自控制暫存器415之[1]位置接收之控制信號,胞[1]可將此結果提供至胞[2]或至值輸出[1]或兩者。例如,若該控制信號係指定胞[1]之一未分段向量縮減運算之一零值,則胞[1]可將結果提供至胞[2],且亦可視需要將結果提供至值輸出[1],(例如)以輸出該向量縮減運算之一中間結果。若該控制信號係指定胞[1]之一分段向量縮減運算之一值1,則胞[1]將輸出結果至值輸出[1]以輸出該分段向量縮減運算之一結果,例如,輸入向量[0]之前兩個元素之一求和。然而,胞[1]不會將結果作為一暫時縮減元素輸出至胞[2]。而是,胞[1]將提供一空值、正無限大或負無限大至胞[2],且胞[2]將使用此經接收值作為一暫時縮減元素。接著,當胞[2]自記憶體410接收輸入向量[0]之一第三元素時,藉由胞[2]執行之向量縮減運算將為針對輸入向量[0]之一第二片段之一第二向量縮減運算執行之第一運算。該向量縮減運算之結果或若執行一分段向量縮減運算之結果係經輸出至值輸出440,其中該等結果可被提供至專用硬體電路200或矩陣向量處理系統100之其他組件。
在由向量縮減控制信號405指示之向量縮減運算指定一最小索引向量縮減運算抑或最大索引向量縮減運算的情況下,胞430可各提供指示對應於交錯輸入資料之一通道之一特定胞430之一索引。在一些例項中,當執行一向量縮減運算時此一索引可能總是自胞430輸出,但可能不是可用資料,除非向量縮減控制信號405指定一最大或最小索引向量縮減運算。當此等向量縮減運算之一者係由向量縮減控制信號405指定時,胞430之<值>輸出及<索引>輸出兩者皆可能為必須以準確判定一輸出。例如,若指定一最大索引向量縮減運算,則胞[0]可將藉由胞[0]接收之輸入向量[0]之一第一元素之值作為一暫時縮減元素輸出至胞[1],且指示輸入資料之第一通道之一索引[0]當前為具有最大值元素之索引。胞[1]可自胞[0]接收該值且比較來自胞[0]之該值與輸入向量[0]之一第二元素之一值。若輸入向量[0]之該第二元素之該值大於輸入向量[0]之第一元素之值,則胞[1]可將輸入向量[0]之該第二元素之該值作為一暫時縮減元素輸出至胞[2],且可將指示輸入資料之第二通道當前為具有最大值元素之索引之索引[1]輸出至胞[2]。此程序可在各胞430處重複,此取決於控制向量是否指定一分段或未分段向量縮減運算。在完成向量縮減運算之後,胞430將索引值輸出至值輸出440,而非輸出一暫時縮減元素(即,值)。
在一些例項中,系統使用之初始化元素可取決於由向量縮減控制信號405指定之向量縮減運算。例如,當指定一求和向量縮減運算時,可將一空值用作初始化值。當指定一乘積向量縮減運算時,可將一統一值1用作初始化值。當指定一最大值向量縮減運算或最大索引向量縮減運算時,可將負無限大用作初始化元素。當指定一最小值向量縮減運算或最小索引向量縮減運算時,可將正無限大用作初始化元素。在一些例項中,藉由自向量縮減單元400外部接收之(例如)作為類似於向量縮減控制信號405之一第二信號之一信號指示或提供用於一特定向量縮減運算之初始化值。在其他實施方案中,胞430可能夠基於藉由向量縮減控制信號405指定之向量縮減運算判定一初始化元素。例如,基於胞430接收指定一求和向量縮減運算之一信號,該等胞430可判定應將空值用作初始化元素。
圖5展示一向量縮減單元之一胞之一實例性架構500。例如,圖4之胞430之各者可具有類似於該架構500之一架構。
該實例性架構500包含接收一暫時縮減元素之一暫時縮減元素暫存器502。該暫時縮減元素可自另一胞(例如,自圖4之胞430之另一者)接收。在一些例項中,該暫時縮減元素暫存器502可經初始化(例如)至一空值、正無限大或負無限大值。例如,向量縮減單元400之胞[0]可使其暫時縮減元素暫存器502初始化至零,此係因為其並不接收藉由前置胞執行之向量縮減運算之結果。架構500亦包含接收一輸入向量之一元素之一輸入向量元素暫存器504。例如,向量縮減單元400之胞[0]之該輸入向量元素暫存器504可接收及儲存輸入向量[0]之一第一元素,向量縮減單元400之胞[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,該求和電路514經組態以對該等元素求和。若向量縮減控制信號505指示將執行一乘積向量縮減運算,則多工器508、510可將暫時縮減元素及輸入向量元素提供至乘法電路516,該乘法電路516經組態以計算該等元素之乘積。架構500中亦可包含其他計算電路,例如,索引識別電路、用於計算一算術平均數之電路或其他計算電路。
在一些實施方案中,一胞可經組態以執行一單一類型之向量縮減運算。在此一實施方案中,可包含一單個計算電路,例如,比較電路512、求和電路514或乘法電路516之僅一者。此外,在此一實施方案中向量縮減控制信號505將不必要指示架構500執行一特定類型之向量縮減運算,且因此向量縮減控制信號505及多工器508、510可為選用的。
將在計算電路512、514、516處執行之計算之一結果輸出至結果暫存器520。該結果暫存器520亦接收一控制信號515。該控制信號515可為對應於具有架構500之特定胞之圖4之控制暫存器415的一元素。例如,若架構500對應於向量縮減單元400之胞[1],則控制信號515可為對應於控制暫存器415之[1]位置中之一元素之一信號。
結果暫存器520基於控制信號515將結果輸出至一或多個組件。若控制信號515指示不會發生一分段向量縮減運算(例如,控制信號515係零),則結果暫存器520可將自計算電路512、514、516接收之結果提供至下一胞,例如,在下一胞之一暫時縮減元素暫存器處予以接收。視需要,若不會發生一分段向量縮減運算,則結果暫存器520亦可將結果輸出至一值輸出(例如,圖4之值輸出440之一者)。
若控制信號515指示將發生一分段向量縮減運算,則結果暫存器520可將自計算電路512、514、516接收之結果提供至值輸出(例如,圖4之一值輸出440)。結果暫存器亦可將一空值、正無限大或負無限大值提供至下一胞(例如,下一胞之一暫時縮減元素暫存器),以將在與架構500相關聯之胞處之輸入向量之向量縮減分段。
其他胞架構亦可行。在一些實施方案中,計算電路512、514、516之組件可串聯配置。例如,比較電路512可接收暫時縮減元素及輸入向量元素。比較電路512之一輸出可作為一輸入提供至求和電路514,求和電路514之一輸出可作為一輸入提供至乘法電路516,且乘法電路516之一輸出可經提供至結果暫存器520。在此一實施方案中,向量縮減控制信號505可操作以啟動或撤銷啟動計算電路512、514、516之各組件,使得在資料穿過計算電路512、514、516之該等組件時僅對該資料執行向量縮減運算之一者。此一架構將降低對多工器508、510之需求,但其將需要計算電路512、514、516之組件來依一類似方式解譯向量縮減控制信號505。其他架構亦在本說明書之範疇內。
圖6係對一輸入向量執行一向量縮減之一實例性程序600。在一些實例中,該輸入向量可為一輸入矩陣之一向量。一般而言,該程序600可藉由一或多個電腦之一系統來執行,該系統包含一專用硬體電路,例如,圖1之包含向量縮減單元120之專用硬體電路110。
為產生輸入向量之一縮減,該系統執行一系列操作(602至608)。例如,該專用硬體電路可包含複數個胞,其中除接收該輸入向量之一經指定第一元素之一經指定第一胞以外,該複數個胞之各者經組態以針對該輸入向量之一特定元素執行操作(602至608)以計算向量縮減。在一些實施方案中,接收輸入向量之該經指定第一元素之該經指定第一胞不可執行該等操作(602至608),此係因為該胞將不接收一前置胞之一輸出。因此,經指定第一胞可僅將輸入向量之第一經指定第一元素提供至系統之下一胞。其他胞各接收一前置胞之一輸出,以執行操作(602至608)序列以產生提供至下一胞之其等自身輸出。系統之末胞之對應於輸入向量之末元素之一輸出係執行指定向量縮減運算之一結果。
一胞接收輸入向量之一特定元素(602)。例如,電路之一特定胞可接收輸入向量之一特定元素。在一些實施方案中,一第一暫存器(例如,一輸入暫存器)可經組態以接收輸入向量之元素。將輸入向量之元素提供至輸入暫存器之資料串流可經交錯,使得對應於輸入向量之資料係以一延遲方式跨多個通道予以接收。例如,資料可經交錯使得藉由各週期在輸入暫存器處接收輸入向量之下一元素。藉由輸入暫存器接收之輸入向量之一特定元素係經提供至電路之特定胞。
胞自複數個胞之另一者接收一暫時縮減元素(604)。該暫時縮減元素可對應於對輸入向量之在該輸入向量之特定元素之前的元素執行一縮減運算之一結果。例如,電路之特定胞可接收一暫時縮減元素,該暫時縮減元素對應於對輸入向量之在該輸入向量之經接收特定元素之前的元素執行一縮減運算之一結果。該暫時縮減元素可自電路之一或多個胞之另一胞接收,例如,可為一前置胞之一輸出。胞可在與該胞接收輸入向量之特定元素相同之時脈週期期間,或在其中該胞接收輸入向量之特定元素之時脈週期之前或之後的一時脈週期期間接收暫時縮減元素。作為一實例,電路可對圖4之輸入向量[0]執行一向量縮減運算。為此,在一對應胞430處處理該輸入向量[0]之元素之各者,即,使得在胞[0]處處理輸入向量[0]之一第一元素,在胞[1]處處理輸入向量[0]之一第二元素等。在此一實例中,藉由胞[2]接收之暫時縮減元素將對應於對輸入向量之該第一元素及該第二元素(即,在輸入向量之藉由胞[2]接收之第三元素之前的該輸入向量之元素)執行一縮減運算之一結果。
胞使用特定元素及暫時縮減元素執行一縮減運算(606)。例如,在接收輸入向量之特定元素及對應於對該輸入向量之在該特定元素之前的元素執行指定向量縮減運算之結果之後,電路之特定胞可對所接收資料執行藉由一控制信號指定之一向量縮減運算。再次參考圖4之實例,在胞[2]接收輸入向量[0]之第三元素及胞[1]之作為暫時縮減元素之輸出之後,胞[2]可對該等元素執行一指定向量縮減運算。例如,若該指定向量縮減運算係一求和向量縮減運算,則胞[2]可對輸入向量[0]之第三元素及胞[1]之輸出求和。
在一些實施方案中,系統之特定胞可接收指定使用輸入向量之特定元素及暫時縮減元素執行之一向量縮減運算之一控制信號。在一些實施方案中,該控制信號針對複數個胞之各者可相同,即,使得一單個控制信號係藉由電路接收且被提供至該等胞之各者。在其他實施方案中,電路之各胞可接收一相異控制信號。此使電路之不同胞能夠同時(諸如在對一輸入向量執行一分段向量縮減運算時)執行不同向量縮減運算。在此一實施方案中,提供至胞之控制信號可藉由電路接收(例如)作為一暫存器處之一向量,其中該向量之各元素可作為一控制信號提供至一對應胞。向量縮減運算類型可為(例如)一求和向量縮減運算、一最大值向量縮減運算、一最小值向量縮減運算、一最大索引向量縮減運算、一最小索引向量縮減運算、一平均數向量縮減運算、一乘積向量縮減運算或任何其他向量縮減運算。
胞提供使用特定元素及暫時縮減元素執行指定縮減運算之一結果作為一新暫時縮減元素(608)。例如,電路之特定胞可將使用特定元素及暫時縮減元素執行指定縮減運算之結果作為一新暫時縮減元素提供至複數個胞之另一者。再次參考圖4之實例,在胞[2]對輸入向量[0]之第三元素及自胞[1]接收之暫時縮減元素執行指定向量縮減運算之後,胞[2]可將該指定向量縮減運算之結果輸出至電路之胞[3]。替代性地,若特定胞係對輸入向量之一末元素執行一向量縮減運算之一胞,則所得暫時縮減元素可提供為對應於對輸入向量執行向量縮減之一結果之一輸出。
系統提供對應於使用輸入向量之一末元素執行縮減運算之一結果之一新暫時縮減元素以作為輸入向量之一縮減輸出(610)。例如,向量縮減電路可包含用於提供使用輸入向量之一末元素執行向量縮減運算之一結果之輸出電路,例如,一或多個值輸出(諸如值輸出440)。因為電路之各胞使用輸入向量之一元素及一暫時縮減元素(其對應於對該輸入向量之在該輸入向量之特定元素之前的元素執行指定向量縮減運算之一結果)執行一向量縮減運算,所以使用該輸入向量之該末元素之指定向量縮減運算之一結果將為對該輸入向量之所有元素執行指定向量縮減運算之一結果。因此,此結果對應於輸入向量之縮減。例如,架構400之胞[3]可對輸入向量[0]之第四(即,末)元素及胞[2]之輸出(即,藉由前置胞輸出之暫時縮減元素)執行指定向量縮減運算。藉由胞[3]執行之該向量縮減運算之一結果將為針對整個輸入向量之向量縮減運算之一結果。因此,可將該結果提供(例如)至值輸出[3]以作為輸入向量之縮減輸出。在一些實施方案中,例如,在對一輸入向量之多個片段執行一向量縮減運算時,可將對該輸入向量之末元素執行向量縮減之結果提供至另一胞。在該等實施方案中,對輸入向量之末元素執行向量縮減之該結果可經提供以在與將該結果作為一新暫時縮減元素提供至下一胞相同之時脈週期期間輸出,或可經提供以在將該結果作為一新暫時縮減元素提供至下一胞時之前或之後的時脈週期輸出。
雖然經論述似乎電路之一或多個胞循序接收及提供資料(例如,以胞[0]及輸入向量[0]之第一元素開始且以胞[3]及輸入向量[0]之末元素結束),然在其他實施方案中,該等胞可依一不同順序對輸入向量進行運算。在該等實施方案中,胞可對輸入向量之不同元素進行運算,或胞可接收資料或將資料提供至在序列中並未緊接在胞之前或之後的其他胞。例如,可將胞[1]之一輸出作為一暫時縮減元素提供至胞[3],且可將胞[3]之一輸出作為一暫時縮減元素提供至圖4之架構400之胞[2]。在此等實施方案中,用以處理輸入向量之一元素之末胞之輸出將為該輸入向量之縮減結果。
圖7A至圖7B展示在一矩陣向量處理器中執行一向量縮減之一實例。在一些實施方案中,圖7A至圖7B之該實例可藉由圖1之以專用硬體電路110 (其包含向量縮減單元120)為特徵之矩陣向量處理系統100執行。在圖7A至圖7B中所展示之實例中,對兩個輸入向量執行一求和向量縮減運算。該第一輸入向量係向量[ 1 2 3 4 ]且該第二輸入向量係向量[ 5 6 7 8 ]。對該第一輸入向量執行之該求和向量縮減運算係一分段向量縮減運算,使得對該第一輸入向量進行之該向量縮減運算之結果係對應於該第一輸入向量之元素[ 1 2 ]與[ 3 4 ]之總和之一雙元素向量。對該第二輸入向量執行之該求和向量縮減運算並非一分段向量縮減運算,使得對該第二輸入向量進行之該向量縮減運算之結果係對應於該第二輸入向量之元素[ 5 6 7 8 ]之總和之一純量。
在圖7A至圖7B中所展示之訊框之各者處,可用於實施記憶體208之一記憶體710 (例如,一DRAM或SRAM)可作為一交錯記憶體被存取或讀取。因此,在各訊框處,執行一交錯記憶體讀取且在輸入暫存器720處接收輸入向量之元素。該輸入暫存器720可對應於(例如)圖3之輸入暫存器320。輸入暫存器720將輸入向量之該等經接收元素提供至縮減單元胞730 (例如,圖4之胞430)。圖7A至圖7B中之訊框之各者展示該等縮減單元胞730在執行一向量縮減運算之前在730a之前的縮減單元胞中,以及在執行一向量縮減運算之後在730b之後的縮減單元胞中。圖7A至圖7B之訊框亦展示一控制暫存器740,其中該控制暫存器740之內容對應於圖4之控制暫存器415之用於控制向量縮減單元執行分段或未分段向量縮減運算之內容。輸入向量之縮減之輸出係經提供至(例如)類似於圖4之值輸出440之輸出750。
簡要地說,在圖7A中所展示之訊框(a)處,第一輸入向量之具有一值1之一第一元素係自記憶體710讀取且在輸入暫存器720處予以接收。胞730已如730a處所展示初始化至空值,但在其他實施方案中,胞730可經初始化至正無限大、負無限大或至另一值。控制暫存器740已接收用於實施第一輸入向量之分段向量縮減運算之一元素向量。該元素向量係[ 0 1 0 1 ]且經提供至控制暫存器740使得該元素向量之各元素係用於一對應胞730之一控制信號。因為控制暫存器740之[0]位置係零(即,指定將執行一未分段向量縮減運算),則胞730接收第一輸入向量之第一元素,對其與當前處於胞730中之值求和,且將結果提供至下一胞730。因此,第一胞730執行運算(空值) + 1 = 1且將1發送至該下一胞730,如訊框(a)之730b中所展示。第一胞之內容可重新初始化至空值,如730b中所展示。
在訊框(b)處,在輸入暫存器720處接收第一輸入向量之具有一值2之一第二元素及第二輸入向量之具有一值5之一第一元素。第二胞730縮減單元對其當前儲存值與第一輸入向量之該經接收第二元素求和,即,執行運算(1) + 2 = 3。因為控制暫存器740之用於第二胞730之元素係1 (即,指定將執行一分段向量縮減運算),所以第二胞730將所得總和輸出至第二輸出750。此外,第二胞730將零輸出至第三胞730。在一些例項中,第二胞730可將一不同值(例如,一空值、正無限大或負無限大)輸出至第三胞730。在一些例項中,輸出750可為一單個輸出,(例如)使得所有胞730連接至相同輸出750。
此外,第一胞730接收第二輸入向量之第一元素,執行求和(空值) + 5 = 5,且將結果輸出至第二胞730以儲存。因此,在訊框(b)之730b處,第二胞730儲存一值5。第一胞730可如所展示重新初始化至空值或至另一值。
在訊框(c)處,在輸入暫存器720處接收第一輸入向量之一第三元素及第二輸入向量之一第二元素。自已執行第一輸入向量之分段向量縮減運算之後,亦更新控制暫存器740以包含用於第二輸入向量之未分段向量縮減運算之元素。因此,僅控制暫存器740之末元素係1,使得僅將針對第二輸入向量產生一單個縮減輸出。如訊框(c)之730a處所展示,第三胞730儲存一零值,接收第一輸入向量之具有一值3之第三元素,執行運算(0) + 3 = 3,且將結果儲存於末胞730中,如730b處所展示。第二胞730在730a處儲存一值5,接收第二輸入向量之具有一值6之第二元素,執行運算(5) + 6 = 11,且將結果儲存於第三胞730中,如730b處所展示。
在訊框(d)處,輸入暫存器720之末元素接收第一輸入向量之具有一值4之一末元素及第二輸入向量之具有一值7之一第三元素。末胞730接收第一輸入向量之該末元素,對其與儲存於該末胞730處之值求和,即,執行運算(3) + 4 = 7,且基於控制暫存器740儲存1,將結果輸出至末輸出750。第三胞730接收第二輸入向量之該第三元素,對其與儲存於該第三胞730處之值求和,即,執行運算(11) + 7 = 18,且將結果儲存於末胞730中,如訊框(d)之730b處所展示。
在訊框(e)處,在輸入暫存器720處接收第二輸入向量之具有一值8之末元素。對此值與當前儲存於末胞730處之值求和,即,執行運算(18) + 8 = 26。因為控制暫存器740之對應於縮減單元之末胞730之末元素係1,所以將結果輸出至末輸出750。因此,輸出輸入向量之兩者之求和向量縮減。在從胞730讀出元素且並未(例如)用前置胞730之輸出代替該等元素時,胞730之內容可重新初始化至空值或至另一值。
可在數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中所揭示之結構及其等之結構等效物)或其等之一或多者之組合中實施本說明書中所描述之標的及功能操作之實施例。本說明書中所描述之標的之實施例可實施為一或多個電腦程式,即,在一有形非暫時性程式載體上編碼以藉由資料處理設備執行或控制資料處理設備之操作之電腦程式指令之一或多個模組。替代性地或此外,程式指令可在一人工產生之傳播信號(例如,一機器產生之電、光學或電磁信號)上予以編碼,該傳播信號經產生以編碼資訊用於傳輸至合適接收器設備以藉由一資料處理設備執行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
術語「資料處理設備」涵蓋用於處理資料之所有種類之設備、裝置及機器,舉例而言,包含一可程式化處理器、一電腦或多個處理器或電腦。設備可包含專用邏輯電路,例如,一FPGA (場可程式化閘陣列)或一ASIC (特定應用積體電路)。除了硬體之外,設備亦可包含產生針對討論中之電腦程式之一執行環境之程式碼,例如,構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合之程式碼。
可以任何形式之程式設計語言(包含編譯或解譯語言或宣告或程序性語言)撰寫一電腦程式(其亦可被稱為或被描述為一程式、軟體、一軟體應用程式、一模組、一軟體模組、一指令碼或程式碼),且其可以任何形式部署,包含作為一獨立程式或作為一模組、組件、副常式或適用於一計算環境中之其他單元。一電腦程式可但不需要對應於一檔案系統中之一檔案。一程式可儲存於保持其他程式或資料(例如,儲存於一標示語言文件中之一或多個指令碼)之一檔案之一部分中,儲存於專用於討論中之程式之一單個檔案中或多個協調檔案(例如,儲存一或多個模組、子程式或程式碼之若干部分之檔案)中。一電腦程式可經部署以執行於一電腦上或定位於一位址處或跨多個位址分佈且藉由一通信網路互連之多個電腦上。
可藉由執行一或多個電腦程式以藉由對輸入資料操作及產生輸出來執行功能之一或多個可程式化電腦來執行本說明書中所描述之程序及邏輯流程。亦可藉由專用邏輯電路(例如,一FPGA (場可程式化閘陣列)或一ASIC (特定應用積體電路))來執行該等程序及邏輯流程,且設備亦可實施為該專用邏輯電路。
適用於執行一電腦程式之電腦可(例如)基於通用微處理器或專用微處理器或兩者或任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行(performing或executing)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般而言,一電腦將亦包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟)或可操作耦合以自該一或多個大容量儲存裝置接收資料及將資料傳送至該一或多個大容量儲存裝置或該兩種情況。然而,一電腦未必具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如,一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲控制台、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)隨身碟),等等。
適用於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,舉例而言,包含:半導體記憶體裝置,例如,EPROM、EEPROM、及快閃記憶體裝置;磁碟,例如,內部磁碟或隨身碟;磁光碟;及CD ROM及DVD-ROM碟。處理器及記憶體可藉由專用邏輯電路增補或併入專用邏輯電路中。
為發起與一使用者之互動,可在一電腦上實施本說明書中所描述之標的之實施例,該電腦具有用於向該使用者顯示資訊之一顯示裝置(例如,一CRT (陰極射線管)或LCD (液晶顯示器)監視器)及該使用者可藉由其發送輸入至該電腦之一鍵盤及一指向裝置(例如,一滑鼠或一軌跡球)。其他種類之裝置亦可用於發起與一使用者之互動;例如,提供給該使用者之回饋可為任何形式之感覺回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且來自該使用者之輸入可以任何形式被接收,包含聲音、語音或觸覺輸入。此外,一電腦可藉由將文件發送至一使用者使用之一裝置及自該裝置接收文件;例如,藉由回應於自一使用者之用戶端裝置上之一網頁瀏覽器接收之請求將網頁發送至該網頁瀏覽器,而與該使用者互動。
可在一計算系統中實施本說明書中所描述之標的之實施例,該計算系統包含一後端組件(例如,作為一資料伺服器),或包含一中間軟體組件(例如,一應用程式伺服器),或包含一前端組件(例如,具有一使用者可透過其與本說明書中所描述之標的之一實施方案互動之一圖形使用者介面或一網頁瀏覽器之一用戶端電腦),或包含一或多個此等後端、中間軟體或前端組件之任何組合。該系統之該等組件可藉由任何形式或媒體之數位資料通信 (例如,一通信網路)互連。通信網路之實例包含一區域網路(「LAN」)及一廣域網路(「WAN」),例如,網際網路。
計算系統可包含用戶端及伺服器。一用戶端及伺服器一般彼此遠離且通常透過一通信網路互動。用戶端與伺服器的關係藉由運行於各自電腦上及彼此具有一用戶端-伺服器關係之電腦程式而發生。
雖然本說明書含有許多特定實施方案細節,但此等細節不應被理解為限制任何發明或可主張之內容之範疇,而是被理解為描述可特定於特定發明之特定實施例之特徵。本說明書中在分離實施例之背景內容中所描述之特定特徵亦可組合實施於一單個實施例中。相反地,在一單個實施例之背景內容中描述之各種特徵亦可分別實施於多個實施例中或以任何合適子組合實施。此外,儘管特徵在上文可被描述為依特定組合起作用且甚至最初如此主張,然來自一所主張之組合之一或多個特徵在一些情況中可自該組合免除,且該所主張之組合可係關於一子組合或一子組合之變型。
類似地,雖然在圖式中依一特定順序描繪操作,但此不應被理解為需要依所展示之該特定順序或依循序順序來執行此等操作或需要執行所有經繪示之操作以達成所要結果。在特定境況中,多任務處理及平行處理可為有利的。此外,上文所描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中需要此分離,且應理解,所描述之程式組件及系統可大體上一起整合於一單個軟體產品中或封裝於多個軟體產品中。
已描述標的之特定實施例。其他實施例係在以下發明申請專利範圍之範疇內。例如,在發明申請專利範圍中敘述之動作可依不同順序執行且仍達成所要結果。作為一實例,附圖中所描繪之程序並不一定需要所展示之特定順序或循序順序來達成所要結果。在某些實施方案中,多任務處理及平行處理可為有利的。
100:矩陣向量處理系統
110:專用硬體電路
120:向量縮減單元
150:矩陣向量處理引擎
200:專用硬體電路/電路
202:主機介面
204:直接記憶體存取引擎
206:定序器
208:記憶體
212:向量縮減單元
300:向量縮減單元/縮減單元
305:向量縮減控制信號
310:值載入器
315:控制暫存器
320:輸入暫存器
330:計算單元
340:值輸出
400:架構/向量縮減單元
405:向量縮減控制信號
410:記憶體
415:控制暫存器
430:胞/前置胞/特定胞
440:值輸出
450:圖表
500:架構
502:暫時縮減元素暫存器
504:輸入向量元素暫存器
505:向量縮減控制信號/信號
508:多工器
510:多工器
512:計算電路/比較電路
514:計算電路/求和電路
515:控制信號
516:計算電路/乘法電路
520:結果暫存器
600:程序
602:操作
604:操作
606:操作
608:操作
610:操作
710:記憶體
720:輸入暫存器
730:縮減單元胞
730a:縮減單元胞
730b:縮減單元胞
740:控制暫存器
750:輸出/第二輸入/末輸出
圖1展示一實例性矩陣向量處理系統。
圖2展示包含一向量縮減單元之一實例性矩陣向量處理系統。
圖3展示一矩陣向量處理系統中之一向量縮減單元之一實例性架構。
圖4展示一矩陣向量處理系統中之一向量縮減單元之一實例性架構。
圖5展示一矩陣向量處理系統中之一向量縮減單元之一胞的一實例性架構。
圖6係用於在一矩陣向量處理系統中執行向量縮減之一實例性方法的一流程圖。
圖7A至圖7B描繪使用一矩陣向量處理系統中之一向量縮減單元之一實例性向量縮減。
各種圖式中之相同元件符號及名稱指示相同元件。
300:向量縮減單元/縮減單元
305:向量縮減控制信號
310:值載入器
315:控制暫存器
320:輸入暫存器
330:計算單元
340:值輸出
Claims (20)
- 一種系統,其包括: 一向量縮減單元,其經組態以針對一或多個輸入向量執行向量縮減運算;該向量縮減單元包括複數個胞(cells),該複數個胞中之至少一個胞經組態以: 自包含在一輸入向量中之複數個輸入元素接收一輸入元素; 接收藉由前置於(precede)該至少一個胞之一個胞所執行之一向量縮減運算之一輸出或一初始化值(initialization value)之一暫時縮減元素; 自包含在一控制向量中之複數個控制元素接收一控制元素,其中該控制元素表示用於控制在該至少一個胞中所執行之一向量縮減運算之一控制信號; 基於該控制元素以使用該輸入元素及該暫時縮減元素以執行該向量縮減運算來產生一輸出元素;及 將該輸出元素提供至該複數個胞中之另一個(another)胞,該輸出元素係針對其他(the other)胞之一新暫時縮減元素。
- 如請求項1之系統,其中該控制向量元素經組態以指示是否該輸入元素係該輸入向量中之一最末(last)輸入元素,其中該至少一個胞經組態以回應於該控制元素指示該輸入元素並非該輸入向量中之該最末輸入元素而提供該輸出元素至其他胞。
- 如請求項2之系統,其中該至少一個胞進一步經組態以回應於該控制元素指示該輸入元素係該輸入向量中之該最末輸入元素而提供該輸出元素至一輸出電路。
- 如請求項1之系統,其進一步包括: 一輸入向量暫存器(register),其經組態以儲存該輸入向量之該輸入元素; 一暫時縮減元素暫存器,其經組態以儲存該暫時縮減元素;及 一控制向量暫存器,其經組態以儲存該控制向量之該控制元素。
- 如請求項1之系統,其中該向量縮減運算包括一最大值(maximum)向量縮減運算;其中執行該最大值向量縮減運算包括: 作為該輸出元素,判定該輸入元素及該暫時縮減元素之一最大值。
- 如請求項1之系統,其中該向量縮減運算包括一最小值(minimum)向量縮減運算;其中執行該最小值向量縮減運算包括: 作為該輸出元素,判定該輸入元素及該暫時縮減元素之一最小值。
- 如請求項1之系統,其中該向量縮減運算包括一求和(summation)向量縮減運算;其中執行該求和向量縮減運算包括: 作為該輸出元素,判定該輸入元素及該暫時縮減元素之一總和(sum)。
- 如請求項1之系統,其中該向量縮減運算包括一乘積(product)向量縮減運算;其中執行該乘積向量縮減運算包括: 作為該輸出元素,判定該輸入元素及該暫時縮減元素之一乘積。
- 如請求項1之系統,其中該向量縮減運算包括一平均數(mean)向量縮減運算;其中執行該平均數向量縮減運算包括: 作為該輸出元素,判定該輸入元素及該暫時縮減元素之一平均數。
- 如請求項1之系統,其中該向量縮減運算包括一最大值索引(index)向量縮減運算;其中執行該最大值索引向量縮減運算包括: 判定對應於該輸入向量中之該輸入元素之一位置之一第一索引; 接收指示對應於該暫時縮減元素之一第二索引之資料; 判定該輸入元素及該暫時縮減元素之一最大值;及 基於該最大值且作為該輸出元素,產生該第一索引或與該最大值相關聯之該第二索引。
- 如請求項1之系統,其中該向量縮減運算包括一最小值索引向量縮減運算;其中執行該最小值索引向量縮減運算包括: 判定對應於該輸入向量中之該輸入元素之一位置之一第一索引; 接收指示對應於該暫時縮減元素之一第二索引之資料; 判定該輸入元素及該暫時縮減元素之一最小值;及 基於該最小值且作為該輸出元素,產生該第一索引或與該最小值相關聯之該第二索引。
- 如請求項1之系統,其中該初始化值包含下列各項中之至少一者:一空值、一正無限大或一負無限大。
- 一種用於在複數個胞中之至少一個胞中執行向量縮減運算之方法,其包括: 自包含在一輸入向量中之複數個輸入元素接收一輸入元素; 接收藉由前置於該至少一個胞之一個胞所執行之一向量縮減運算之一輸出或一初始化值之一暫時縮減元素; 自包含在一控制向量中之複數個控制元素接收一控制元素,其中該控制元素表示用於控制在該至少一個胞中所執行之一向量縮減運算之一控制信號; 基於該控制元素以使用該輸入元素及該暫時縮減元素以執行該向量縮減運算來產生一輸出元素;及 將該輸出元素提供至該複數個胞中之另一個胞,該輸出元素係針對其他胞之一新暫時縮減元素。
- 如請求項13之方法,其中該控制向量元素經組態以指示是否該輸入元素係該輸入向量中之一最末輸入元素,其中該至少一個胞經組態以回應於該控制元素指示該輸入元素並非該輸入向量中之該最末輸入元素而提供該輸出元素至其他胞。
- 如請求項14之方法,其中該至少一個胞進一步經組態以回應於該控制元素指示該輸入元素係該輸入向量中之該最末輸入元素而提供該輸出元素至一輸出電路。
- 如請求項13之方法,其進一步包括: 一輸入向量暫存器,其經組態以儲存該輸入向量之該輸入元素; 一暫時縮減元素暫存器,其經組態以儲存該暫時縮減元素;及 一控制向量暫存器,其經組態以儲存該控制向量之該控制元素。
- 如請求項13之方法,其中該向量縮減運算包括下列各項中之至少一者:一最大值向量縮減運算、一最小值向量縮減運算、一求和向量縮減運算、一乘積向量縮減運算或一平均數向量縮減運算; 其中執行該最大值向量縮減運算包括作為該輸出元素,判定該輸入元素及該暫時縮減元素之一最大值; 其中執行該最小值向量縮減運算包括作為該輸出元素,判定該輸入元素及該暫時縮減元素之一最小值; 其中執行該求和向量縮減運算包括作為該輸出元素,判定該輸入元素及該暫時縮減元素之一總和; 其中執行該乘積向量縮減運算包括作為該輸出元素,判定該輸入元素及該暫時縮減元素之一乘積;及 其中執行該平均數向量縮減運算包括作為該輸出元素,判定該輸入元素及該暫時縮減元素之一平均數。
- 如請求項13之方法,其中該向量縮減運算包括一最大值索引向量縮減運算;其中執行該最大值索引向量縮減運算包括: 判定對應於該輸入向量中之該輸入元素之一位置之一第一索引; 接收指示對應於該暫時縮減元素之一第二索引之資料; 判定該輸入元素及該暫時縮減元素之一最大值;及 基於該最大值且作為該輸出元素,產生該第一索引或與該最大值相關聯之該第二索引。
- 如請求項13之方法,其中該向量縮減運算包括一最小值索引向量縮減運算;其中執行該最小值索引向量縮減運算包括: 判定對應於該輸入向量中之該輸入元素之一位置之一第一索引; 接收指示對應於該暫時縮減元素之一第二索引之資料; 判定該輸入元素及該暫時縮減元素之一最小值;及 基於該最小值且作為該輸出元素,產生該第一索引或與該最小值相關聯之該第二索引。
- 如請求項13之方法,其中該初始化值包含下列各項中之至少一者:一空值、一正無限大或一負無限大。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/477,791 | 2017-04-03 | ||
US15/477,791 US10108581B1 (en) | 2017-04-03 | 2017-04-03 | Vector reduction processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202318227A true TW202318227A (zh) | 2023-05-01 |
TWI828502B TWI828502B (zh) | 2024-01-01 |
Family
ID=60991531
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107100277A TWI673648B (zh) | 2017-04-03 | 2018-01-04 | 向量縮減處理器 |
TW108130503A TWI738042B (zh) | 2017-04-03 | 2018-01-04 | 由向量縮減電路執行之方法 |
TW110130102A TWI791262B (zh) | 2017-04-03 | 2018-01-04 | 矩陣向量處理系統及用於執行向量縮減之方法 |
TW111150786A TWI828502B (zh) | 2017-04-03 | 2018-01-04 | 矩陣向量處理系統及用於執行向量縮減之方法 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107100277A TWI673648B (zh) | 2017-04-03 | 2018-01-04 | 向量縮減處理器 |
TW108130503A TWI738042B (zh) | 2017-04-03 | 2018-01-04 | 由向量縮減電路執行之方法 |
TW110130102A TWI791262B (zh) | 2017-04-03 | 2018-01-04 | 矩陣向量處理系統及用於執行向量縮減之方法 |
Country Status (9)
Country | Link |
---|---|
US (4) | US10108581B1 (zh) |
EP (2) | EP3552094B1 (zh) |
JP (2) | JP7055809B2 (zh) |
KR (3) | KR102256109B1 (zh) |
CN (2) | CN111142937B (zh) |
DK (1) | DK3552094T3 (zh) |
HK (1) | HK1259157A1 (zh) |
TW (4) | TWI673648B (zh) |
WO (1) | WO2018186918A1 (zh) |
Families Citing this family (17)
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 |
CN110069737B (zh) * | 2019-04-19 | 2020-08-14 | 北京三快在线科技有限公司 | 内容生成方法、装置、计算机设备及存储介质 |
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 | 腾讯科技(深圳)有限公司 | 基于人工智能的文本分类方法和装置 |
CN111105042B (zh) * | 2019-12-13 | 2023-07-25 | 广东浪潮大数据研究有限公司 | 一种并行消息处理方法、系统及相关装置 |
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 |
Family Cites Families (37)
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 | 松下電器産業株式会社 | プロセッサ |
KR101005718B1 (ko) | 2003-05-09 | 2011-01-10 | 샌드브리지 테크놀로지스, 인코포레이티드 | 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛 |
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 |
US20070074007A1 (en) | 2005-09-28 | 2007-03-29 | Arc International (Uk) Limited | Parameterizable clip instruction and method of performing a clip operation using the same |
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 |
US7953684B2 (en) * | 2007-01-31 | 2011-05-31 | International Business Machines Corporation | Method and system for optimal parallel computing performance |
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 |
US8209525B2 (en) * | 2008-08-15 | 2012-06-26 | Apple Inc. | Method and apparatus for executing program code |
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 |
US8447954B2 (en) * | 2009-09-04 | 2013-05-21 | International Business Machines Corporation | Parallel pipelined vector reduction in a data processing system |
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 |
WO2013147869A1 (en) | 2012-03-30 | 2013-10-03 | Intel Corporation | Apparatus and method for selecting elements of a vector coumputation |
US9342479B2 (en) * | 2012-08-23 | 2016-05-17 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
US9588766B2 (en) | 2012-09-28 | 2017-03-07 | Intel Corporation | Accelerated interlane vector reduction instructions |
US9921832B2 (en) * | 2012-12-28 | 2018-03-20 | Intel Corporation | Instruction to reduce elements in a vector register with strided access pattern |
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 KR KR1020197020740A patent/KR102256109B1/ko active IP Right Grant
- 2017-12-13 WO PCT/US2017/066058 patent/WO2018186918A1/en unknown
- 2017-12-13 JP JP2019538667A patent/JP7055809B2/ja active Active
- 2017-12-13 EP EP17829778.4A patent/EP3552094B1/en active Active
- 2017-12-13 KR KR1020217015113A patent/KR102347374B1/ko active IP Right Grant
- 2017-12-13 DK DK17829778.4T patent/DK3552094T3/da active
- 2017-12-13 EP EP22177238.7A patent/EP4086760B1/en active Active
- 2017-12-13 KR KR1020217043370A patent/KR102471597B1/ko active IP Right Grant
-
2018
- 2018-01-04 TW TW107100277A patent/TWI673648B/zh active
- 2018-01-04 TW TW108130503A patent/TWI738042B/zh active
- 2018-01-04 TW TW110130102A patent/TWI791262B/zh active
- 2018-01-04 TW TW111150786A patent/TWI828502B/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
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI791262B (zh) | 矩陣向量處理系統及用於執行向量縮減之方法 | |
US11620508B2 (en) | Vector computation unit in a neural network processor | |
US11227216B2 (en) | Batch processing in a neural network processor | |
US11586920B2 (en) | Neural network processor | |
JP7485820B2 (ja) | ベクトル縮小プロセッサ |