TWI884081B - 具有卷積計算單元之向量運算加速 - Google Patents
具有卷積計算單元之向量運算加速 Download PDFInfo
- Publication number
- TWI884081B TWI884081B TW113133784A TW113133784A TWI884081B TW I884081 B TWI884081 B TW I884081B TW 113133784 A TW113133784 A TW 113133784A TW 113133784 A TW113133784 A TW 113133784A TW I884081 B TWI884081 B TW I884081B
- Authority
- TW
- Taiwan
- Prior art keywords
- weight
- weights
- control signal
- convolution
- vector
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Feedback Control In General (AREA)
- Measuring Volume Flow (AREA)
Abstract
本申請案描述用於使用相同硬體資源集合在神經網路應用中執行各種計算之混合硬體加速器、系統及設備。一實例性加速器可包含權重選擇器、啟動輸入介面及經組織為複數個乘法器-累加(MAC)通道之複數個MAC電路。該複數個MAC通道之各者可經組態以:接收指示是否執行卷積或向量運算之一控制信號;根據該控制信號接收一或多個權重;根據該控制信號接收一或多個啟動;及根據該控制信號基於該一或多個權重及該一或多個輸入啟動來產生輸出資料,且將該輸出資料饋送至一輸出緩衝器中。該複數個MAC通道之各者包含複數個乘法器電路及複數個加法器-減法器電路。
Description
本發明大體上係關於一種用於改良神經網路計算效率之硬體設計,特定言之,一種用於處理諸如卷積及向量運算之神經網路計算之混合卷積-向量運算PE (處理實體)叢集。
神經網路(NN)計算涉及卷積計算及各種向量運算,諸如向量縮減運算(例如,縮減最大值/最小值/總和/平均數或縮減索引)或池化(pooling;一種採樣)運算(例如,最大值池化、平均值池化)。除了用於處置卷積計算之處理單元之外,現有硬體架構亦依靠SIMD (單指令多資料)向量處理器或專用硬體(例如,張量處理單元(TPU)或其他ASIC設計)來實施此等向量運算。向量處理器能夠一次處置一個向量,但對於並行處理多個向量而言效率低下。又,SIMD處理器可能需要特殊硬體以在執行縮減運算之前跨用於池化運算或初步運算(諸如轉置運算)之同一向量中之多個元素執行運算。此外,需要安裝獨立的硬體向量處理器來處置NN計算中之向量運算可增加NN處理單元之成本及設計複雜性。
本說明書之各項實施例可包含用於使用同一組硬體處置卷積計算及向量運算之硬體加速器、PE叢集及系統。
在一些態樣中,本文中描述之技術係關於一種用於神經網路計算之向量運算加速器。該加速器可包含:複數個權重選擇器,其等經組態以獲得權重;複數個啟動輸入介面,其等經組態以獲得啟動;及複數個乘法器-累加(MAC)電路,其等經組織為複數個MAC通道。在一些實施例中,該複數個MAC之各者可經組態以:接收指示是否執行卷積或向量運算之一控制信號;根據該控制信號接收來自該複數個權重選擇器之至少一者之一或多個權重;根據該控制信號接收來自該複數個啟動輸入介面之至少一者之一或多個啟動;及根據該控制信號基於該一或多個權重及該一或多個輸入啟動來產生輸出資料,且將該輸出資料饋送至一輸出緩衝器中,其中該複數個MAC通道之各者包含用於執行乘法運算之複數個第一電路及用於根據該控制信號執行加法或減法運算之複數個第二電路。
在一些態樣中國,該MAC通道內之該複數個第二電路經組態為一樹,且在該樹之一葉層級處之第二電路經組態以接收來自該複數個第一電路之資料。
在一些態樣中,該複數個第二電路之各者經組態以:接收一第一輸入及一第二輸入;基於該控制信號判定是否執行加法或減法;回應於該控制信號指示執行加法,產生該第一輸入及該第二輸入之一總和或一平均值;及回應於該控制信號指示執行減法,產生該第一輸入與該第二輸入之間的一最小值或最大值。
在一些態樣中,該第一輸入及該第二輸入各包含具有相同數目個維度之一向量,且為產生該第一輸入與該第二輸入之間的該最小值,該複數個第二電路之各者進一步經組態以:產生包含該等向量在各對應維度處之最小值之一輸出向量。
在一些態樣中,該加速器可進一步包含:一權重矩陣產生電路,其經組態以產生用於向量縮減運算之權重,其中該等向量縮減運算包含縮減平均值、縮減最小值、縮減最大值、縮減平均值、縮減相加或池化之一或多者。
在一些態樣中,該複數個權重選擇器之各者包含與該權重矩陣產生電路及一權重快取區耦合之一多工器。
在一些態樣中,該複數個權重選擇器之該各者經組態以:回應於該控制信號指示執行該卷積計算,自該權重快取區獲得一權重;及回應於該控制信號指示執行該向量運算,自該權重矩陣產生電路獲得一權重。
在一些態樣中,該加速器可進一步包含在對應於該MAC通道之該樹外部之一加法器-減法器電路,其中該加法器-減法器電路經組態以接收來自該MAC通道之一根層級處之該第二電路之資料,且將該資料寫入至該輸出緩衝器中。
在一些態樣中,該加法器-減法器電路進一步經組態以:在一第一計算迭代期間,將自該MAC通道之該根層級處之該第二電路接收之一第一資料集合寫入至該輸出緩衝器中;及在一第二計算迭代期間:接收來自該MAC通道之該根層級處之該第二電路之一臨時資料集合,自該輸出緩衝器擷取該第一資料集合,基於該臨時資料集合、該第一資料集合及指示是否執行一卷積計算或一向量運算之一控制信號來計算一第二資料集合,且將該第二資料集合寫入至該輸出緩衝器中。
在一些態樣中,該複數個MAC通道經組態以分別接收由該權重矩陣產生電路產生之複數個權重向量以用於並行執行複數個向量運算。
在一些態樣中,該複數個MAC通道之一第一子集經組態以接收來自一權重快取區之權重且該複數個MAC通道之一第二子集經組態以接收由該權重矩陣產生電路產生之權重,且該複數個MAC通道之該第一子集進一步經組態以執行卷積計算且該複數個MAC通道之該第二子集進一步經組態以執行向量運算,且該等卷積計算及該等向量運算並行執行。
在一些態樣中,本文中描述之技術係關於一種混合卷積-向量運算處理系統。該系統可包含:複數個權重選擇器,其等經組態以獲得權重;複數個啟動輸入介面,其等經組態以獲得啟動;及複數個乘法器-累加(MAC)電路,其等經組織為複數個MAC通道。該複數個MAC之各者經組態以:接收指示是否執行卷積或向量運算之一控制信號;根據該控制信號接收來自該複數個權重選擇器之至少一者之一或多個權重;根據該控制信號接收來自該複數個啟動輸入介面之至少一者之一或多個啟動;及根據該控制信號基於該一或多個權重及該一或多個輸入啟動來產生輸出資料,且將該輸出資料饋送至一輸出緩衝器中,其中:該複數個MAC通道之各者包含用於執行乘法運算之複數個第一電路及用於根據該控制信號執行加法或減法運算之複數個第二電路。
在參考附圖考量以下描述及隨附發明申請專利範圍時將變得更明白本文中所揭示之系統、方法及非暫時性電腦可讀媒體之此等及其他特徵,以及相關結構元件之操作方法及功能及零件與製造經濟性之組合,全部附圖形成本說明書之一部分,其中相同元件符號指定各種圖中之對應部分。然而,應明確地理解,圖式係僅為了圖解及描述之目的且並不意欲作為本發明之限制之一定義。
本文中所描述之實施例提供具有藉由重用硬體資源來並行執行各種神經網路計算之能力之硬體裝置、系統、PE (處理實體)陣列。此處,神經網路計算涉及卷積計算及向量運算,諸如向量縮減運算(例如,關於向量中之值縮減最大值/最小值/總和/平均數,或關於向量之索引縮減最大值/最小值)及池化運算(例如,最大值池化、平均值池化),其等幾乎構成神經網路訓練及應用中涉及之所有計算。在一些實施例中,本文中描述之硬體裝置包含PE陣列以及其他輔助邏輯電路,且能夠藉由重用相同硬體資源來處置不同類型之神經網路計算。為簡潔起見,在以下設計中,硬體裝置可被稱為一混合PE陣列。在一些實施例中,輔助邏輯電路可包含經組態以產生功能權重(相較於神經網路中之權重)之一權重矩陣產生電路。
雖然除了經組態用於執行卷積計算之處理器之外,現有NN硬體設計亦使用SIMD向量處理器或獨立/單獨硬體(例如,TPU)用於處置向量運算,但本文中所描述之混合PE陣列重用相同硬體資源(諸如乘法器-累加器(MAC))用於執行卷積計算,且同時提供可擴展的向量運算並行處理能力。特定言之,MAC資源可透過控制信號組態以執行求和或比較,其中可觸發求和功能性以用於實施卷積計算、向量和縮減(例如,將多個輸入向量之對應值相加且用該等總和產生一輸出向量)、向量平均數縮減(例如,將多個輸入向量之對應值相加且用該等總和除以輸入向量之數目來產生一輸出向量),或平均值池化(例如,計算特徵圖之各補片(patch)之平均值)等,且可觸發比較功能性以用於實施向量最大值縮減、向量最小值縮減或最大池化(例如,在特徵圖之各補片內找到最大值)等。
在以下描述中,將參考圖式描述本發明之特定非限制性實施例。本文中所揭示之任何實施例之特定特徵及態樣可與本文中所揭示之任何其他實施例之特定特徵及態樣一起使用及/或組合。亦應理解,此等實施例係供例示且僅闡釋本發明之範疇內之少量實施例。本發明所屬領域之熟習技術者明白之各種改變及修改被視為在如在隨附發明申請專利範圍中進一步定義之本發明之精神、範疇及考慮內。
圖1繪示根據各項實施例之用於在一混合PE陣列160中處理神經網路計算之一例示性系統圖。圖1中之圖式繪示可組態以使用相同硬體資源(例如,混合PE陣列160)來執行常見神經網路計算(諸如卷積計算及向量運算)之一硬體架構。本發明中所描述之實施例可實施為圖1或其他合適環境中之神經網路計算之一部分。
諸如卷積神經網路(CNN)之一典型神經網路可涉及各種計算(諸如卷積及向量運算)。例如,一神經網路(例如,一CNN)內之一卷積層通常可基於自一輸入源(例如,諸如一輸入影像)或一先前層(例如,諸如來自先前層之一張量輸出)獲得之一或多個輸入特徵圖(IFM) (包括啟動)及對應於給定層之一或多個權重張量(例如,來自諸如一權重快取區或一權重產生器之一權重源130)來進行卷積。權重張量可用於透過IFM進行卷積以提取各種特徵(例如,卷積計算)。卷積程序可在混合PE陣列160中並行實行。各PE可係指具有處理能力及儲存容量之一處理器(例如,緩衝器或快取區)。在一些實施例中,各PE可包含經組態為乘法器及累加器(MAC)之一或多個邏輯閘或電路。混合PE陣列160中之PE可與導線互連,且可配置成被稱為PE通道或MAC通道之複數個通道。混合PE陣列160可經製造為一神經網路加速器或一資料處理系統。
作為另一實例,CNN中之一池化層可藉由總結特徵圖之補片中之特徵之存在來提供對IFM進行減少取樣之一方法。諸如平均值池化及最大值池化之常見池化方法可分別總結一特徵之平均存在及一特徵之最多啟動存在。此等池化運算可涉及與卷積計算不同之向量運算。特定言之,卷積計算包含透過IFM對一窗口進行卷積且執行乘法及累加以提取特徵,而向量運算可包含比較或減法。其他類型之向量運算(諸如向量縮減運算)在神經網路中亦係常見的。待處理之向量可自一向量記憶體(一類型之輸入源150)獲得,該向量記憶體可為自其獲得用於卷積之啟動之一相同源。在一些實施例中,混合PE陣列160中之MAC可經組態以在「卷積模式」與「向量模式」之間切換以執行卷積計算及向量運算,以分別伺服卷積層及池化層。
混合PE陣列160之組態可基於由一指令解碼器110發出之控制信號或指令。指令解碼器110可對來自諸如CPU或GPU之上層級處理器之指令進行解碼。指令解碼器110可基於經解碼之指令向不同組件發送對應控制信號。例如,指令解碼器110可向輸入源150發送指示是否提取用於混合PE陣列160之啟動或向量之輸入啟動/向量負載控制信號。指令解碼器110可向權重源130發送指示權重是否應自一權重快取區提取或自一權重矩陣產生器獲得之權重負載控制信號(更多細節在圖2B中)。不同權重在神經網路計算中起著關鍵作用。例如,自權重快取區提取之權重可係指來自對應於一卷積層之過濾器之權重,該等過濾器經組態以自IFM提取特徵。自權重矩陣產生器產生之權重可經設計以執行特定類型之向量運算。即,取決於當前運算是否係一卷積或向量運算,權重之來源可為不同的。作為另一實例,若權重具有一特定型樣,則指令解碼器110可指示權重矩陣產生器產生權重,使得權重係在內部產生而非自權重快取區提取。此可最小化外部記憶體存取且因此改良神經網路計算之整體效能。
指令解碼器110亦可向混合PE陣列160發送計算控制信號以用於基於來自輸入源150之輸入及來自權重源130之權重來執行所要運算。控制信號可將混合PE陣列160中之MAC組態為執行求和(例如,用於卷積)或減法(例如,用於向量運算中之比較)。在混合PE陣列160根據控制信號完成計算之後,輸出資料可經饋送至用於儲存臨時啟動或向量之一輸出緩衝器170中。在一些實施例中,指令解碼器110亦可控制輸出緩衝器以用於將來自一先前迭代之資料饋送回混合PE陣列160以參與一當前迭代。
圖2A繪示根據各項實施例之一PE陣列之一例示性架構圖。圖2A中之PE陣列中之PE之配置係為了闡釋性目的,且可取決於使用案例而以其他方式實施。
如圖2A之左部分上所展示,PE陣列200可包含一PE矩陣。各PE可包含複數個乘法器(MUL閘)。各PE內之乘法器可並行工作,且PE陣列200內之PE可並行工作。為了便於參考,以下描述將PE陣列200中之PE之行220之數目表示為X,將PE陣列200中之PE之列210之數目表示為Y2,且將各PE內之乘法器之數目表示為Y1。PE之各列210可被稱為一PE叢集,且各PE叢集可耦合至Y1加法器樹230以用於彙總藉由PE叢集內之乘法器產生之部分和。即,PE叢集內之各PE中之第一乘法器耦合至第一加法器樹230以用於彙總,且PE叢集內之各PE中之第二乘法器耦合至第二加法器樹230以用於彙總,以此類推。來自跨所有PE叢集之加法器樹230 (總共Y1xY2個加法器樹)之彙總結果可經饋送至一加法器250中以用於彙總。加法器250可係指執行數目相加之一數位電路,其係晶片上網路(NoC)子系統之部分。
圖2B繪示根據各項實施例之用於處理卷積計算及向量運算兩者之一混合PE陣列之一例示性架構圖。例示性圖式包含彼此相互作用之複數個硬體組件,諸如一權重矩陣產生器270、經組態以接收來自權重矩陣產生器270或一權重快取區(圖2B中未展示)之權重之複數個權重選擇器272、分別對應於複數個權重選擇器272之複數個MAC (乘法器-累加器電路)通道273,及用於分別接收來自複數個MAC通道273之資料且將資料輸出至一輸出緩衝器(圖2B中未展示)之複數個MAC 274。此等組件係僅用於闡釋性目的,且取決於實施方案,架構可包含較多、較少或替代組件。例如,複數個MAC 274可實施為複數個MAC通道中之最後MAC,但具有與MAC通道中之其他MAC不同之組態。權重選擇器272可使用與權重矩陣產生器270及權重快取區耦合之多工器來實施。
藉由控制來自一指令解碼器(例如,圖1中之指令解碼器110)之信號直接或間接地控制圖2B中展示之所有組件。控制信號可包含權重負載控制及計算控制以用於將混合PE陣列組態為使用複數個MAC通道273來執行卷積計算或向量運算或兩者。例如,若上部應用層指示執行卷積計算,則可向複數個權重選擇器272發送對應負載控制且通知複數個權重選擇器272自權重快取區選擇權重。來自權重快取區之權重可來自一神經網路中之一卷積層之過濾器,且可用於透過IFM進行卷積以提取特徵。若上部應用層指示執行諸如向量縮減(例如,將多個向量合併為具有平均值之一個向量之向量平均數)之向量運算,則權重負載控制可被發送至權重矩陣產生器270以用於產生權重,且權重選擇器272可經組態以選擇所產生之權重且阻擋來自權重快取區之權重。此等所產生權重可在功能上不同於用於卷積計算之權重。例如,所產生權重可用於計算輸入向量之平均值(例如,對於X數目個向量,各向量可被指派1/X之權重)。在一些實施例中,若所涉及之權重經高度組織(遵循一特定型樣),則亦可觸發權重矩陣產生器270以用於卷積計算。可指示權重矩陣產生器270以產生遵循用於MAC通道之特定型樣之此等權重。如此,MAC通道可避免針對權重存取權重快取區,從而避免記憶體存取延時。權重選擇器272接著可將經接收權重轉送至MAC通道以進行對應計算。
類似地,可藉由計算控制信號來控制複數個MAC通道273。計算控制信號可指示MAC通道接收用於卷積計算之輸入啟動或用於其他向量運算之向量。在一些實施例中,一些MAC通道(亦被稱為MAC通道之一第一子集)可經組態用於卷積計算且其他MAC通道(亦被稱為MAC通道之一第二子集)可經組態用於並行進行向量運算。此意謂混合PE陣列可同時(例如,在相同迭代期間)執行卷積計算及向量運算兩者。運算控制信號可根據待執行之特定工作負載進一步組態各通道中之MAC。例如,對於一MAC通道上之卷積計算,作為卷積計算之部分,該MAC通道中之乘法器可執行乘法且MAC通道中之累加器可執行求和。對於諸如一神經網路池化層中之向量最大值縮減或最大值池化之向量縮減,MAC通道中之乘法器可執行乘法(用藉由權重矩陣產生器產生之權重)且MAC通道中之累加器可經組態以執行減法以便實現比較之功能性。比較可幫助判定輸入向量之各維度上之最大值(對於向量最大值縮減)或特徵圖之各補片內之最大值(對於最大值池化)。在一些實施例中,MAC通道中之累加器經設計為可組態以執行求和或減法。混合累加器之更多詳細電路設計可在圖4中找到。
在一些實施例中,最後層MAC 274可充當MAC通道與輸出緩衝器之間的一橋接件。例如,MAC 274可接收來自MAC通道之資料(例如,部分和、臨時啟動、臨時向量輸出)且將該資料保存至對應輸出緩衝器。在一些情況下,在MAC 274在一第一迭代中將資料儲存至輸出緩衝器中之後,其等亦可自輸出緩衝器讀回該資料連同自MAC通道273接收之新資料一起作為下一迭代之計算之一部分。
圖3繪示根據各項實施例之混合PE陣列中之一MAC (乘法器-累加器)通道300之一例示性內部結構圖。圖3中之圖式僅為了闡釋性目的,且取決於實施方案,可包含較多、較少或替代組件。如上文所描述,各MAC通道300可包含可實施為數位閘或電路(例如,算術邏輯單元(ALU))之複數個乘法器310及累加器。累加器經設計以根據來自上層之特定計算指令不僅執行求和而且執行減法。如此,同一件硬體(MAC通道300)可重用於不同類型之計算,而無需額外特殊處理器(例如,向量處理器、TPU)。在此應用中,累加器亦可由於其總和(求和)及比較(減法)之混合功能性而被稱為加法器-減法器電路320。
在一些實施例中,MAC通道300中之加法器-減法器電路320可經組織為一加法器樹330。加法器樹330之葉層級加法器-減法器電路可經組態以接收來自複數個乘法器310之資料。例如,各乘法器310可基於輸入向量/啟動及權重執行乘法(用於卷積或向量運算)。來自兩個或更多個乘法器310之乘法之結果可經饋送至加法器樹330之葉層級加法器-減法器電路中以用於根據控制信號進行求和或減法(比較)。例如,各加法器-減法器電路320可經組態以接收一第一輸入及一第二輸入;基於控制信號判定是否執行加法或減法;回應於控制信號指示執行加法,產生該第一輸入及該第二輸入之一總和或一平均值;及回應於控制信號指示執行減法,產生第一輸入與第二輸入之間的一最小值或最大值。若控制信號指示執行一向量最小值縮減,則第一輸入及第二輸入各可包含具有相同數目個為維度之一向量,且加法器-減法器電路可產生包括向量在各對應維度處之最小值之一輸出向量。
在一些實施例中,加法器樹330可包含葉層級處之多個加法器-減法器電路320、根層級處之一個加法器-減法器電路340及一或多個中間層級。加法器-減法器電路之數目自一個層級至下一層級減少一半。在一些實施例中,根加法器-減法器電路340可獲得加法器樹330之一計算結果(例如,值或索引之總和、最小值或最大值),且將該結果發送至在對應於MAC通道之加法器樹330外部之一加法器-減法器電路350。外部加法器-減法器電路350可類似於加法器樹330內之加法器-減法器電路系統,除了外部加法器-減法器電路350可寫入至一輸出緩衝器及自一輸出緩衝器讀取之外。在一些實施例中,外部加法器-減法器電路350及根加法器-減法器電路340可為相同電路且為加法器樹330之部分。
在一些實施例中,在一第一計算迭代期間,外部加法器-減法器電路350可經組態以將自根加法器-減法器電路接收之一第一資料集合寫入至輸出緩衝器中。在一第二計算迭代期間,外部加法器-減法器電路350可經組態以再次接收來自根加法器-減法器電路350之一臨時資料集合,自輸出緩衝器擷取該第一資料集合,基於該臨時資料集合、第一資料集合及指示是否執行一卷積計算或一向量運算之一控制信號來計算一第二資料集合,且將該第二資料集合寫入至輸出緩衝器中。
圖4繪示根據各項實施例之各MAC通道中之一累加器及減法器之一例示性邏輯電路設計400。設計400演示實施可經組態以執行加法或減法之混合電路之一種方式。取決於實施方案,混合電路可使用其他數位組件來實施。
如所展示,實例性電路包含用於基於控制信號自多個輸入選擇信號之複數個多工器410及440。控制信號可包含指示是否正在執行一加法或一減法之一第一信號420,及指示(若正在執行一減法)是否自輸入值獲得最小值或最大值之一第二信號430。此等信號可控制多工器410及440之選擇邏輯選擇適當輸入。
圖5A繪示根據各項實施例之使用混合PE陣列執行一向量縮減之一例示性使用案例。雖然混合PE陣列係用於神經網路之卷積層中之卷積計算,但其亦可用於需要不同邏輯處理之其他類型之計算(諸如向量縮減)。圖5A中之所繪示使用案例涉及跨產生一單個輸出向量530之一輸入張量520之一通道維度之一向量縮減。單個輸出向量530可包含表示為V0(:0)至V0(:, z-1)之一列向量,其中z係一通道維度索引。用於向量縮減之權重矩陣510可藉由一權重產生電路產生。如所展示,權重矩陣510可包含一第一列1及作為0之所有其他元素,而輸入張量520包含複數個向量。請注意,即使圖5A中之運算子係一乘法運算子,但其仍表示向量運算子而非一矩陣乘法。向量運算子可經定義為計算控制信號之部分,其可包含向量和縮減、向量最小值或縮減等。為簡潔起見,向量縮減運算子可經表示為一「reduce0」函數。關於「reduce0」函數,輸入張量520中之各行向量可用作「reduce0」函數之參數。例如,單個輸出向量之第一向量V0(:0)可表示為reduce0(A(0,0), A(1,0), …, A(y-1,0)),其中y係指輸入張量520之列或行維度之一者,且「reduce0」可為一總和、最小值、最大值、平均數等。此實例展示混合PE陣列用於一通道維度向量縮減之一簡單應用。
圖5B繪示根據各項實施例之使用混合PE陣列並行執行複數個向量縮減之另一例示性使用案例。圖5B中之實例演示混合PE陣列由於在權重矩陣540中之豐富動態性而係高度靈活的。取決於來自上層級應用之要求,權重矩陣產生電路可在權重矩陣540中產生多個權重列以實施並行向量縮減運算。兩個權重列可包含不同權重以實現兩個不同向量縮減。例如,包含權重矩陣540中之所有1之列0可對應於一向量和縮減,該向量和縮減可用於用輸入張量550產生V0(:0)=總和(A(0,0), A(1,0), …A(y-1,0)),其中y係指輸入張量520中之列或行維度之一者;且含所有1/y之列1可對應於一向量平均數縮減,該向量平均數縮減可用於產生V1(:0)=總和(A(0,0), A(1,0), …A(y-1,0))/y。輸出向量V0(:0)及V1(:0)可儲存於輸出向量張量560中。
在一些實施例中,權重矩陣540可包含藉由權重矩陣產生電路產生之用於向量運算之第一列權重,及自一權重快取區提取之用於卷積計算之第二列權重。如此,一個權重矩陣540可用於並行觸發向量運算及卷積計算兩者。特定言之,圖5B中之「乘法」運算子可包含一運算子陣列,該運算子陣列包含對應於第一列之向量縮減運算子及對應於第二列之乘法運算子(用於卷積)。此實例展示混合PE陣列可經組態以在一單個計算週期期間執行多個相同向量縮減、多個不同向量縮減或一混合向量縮減及卷積。
圖5C繪示根據各項實施例之使用混合PE陣列執行池化之又另一例示性使用案例。圖5C中之使用案例涉及池化運算。在用於藉由總結特徵圖之補片(例如,具有3*3之一大小之補片)中之特徵之存在來對特徵圖進行減少取樣的神經網路中,池化運算係常見的。當補片以向量表示時,池化運算可經實施為向量運算。為此,混合PE陣列可首先將補片轉換成向量,且根據一對應控制信號將向量組織為輸入張量580。通常,池化程序涉及透過啟動張量對一補片(例如,一3*3補片)進行卷積,但卷積步驟可小於該補片之大小。因此,輸入張量580中之向量可具有重疊元素。權重矩陣570可包含自權重產生電路產生之權重,其中一些權重列可經組態以執行一種類型之池化(例如,總和池化)且其他權重列可經組態以執行另一類型之池化(例如,最大值池化)。藉由權重矩陣570及輸入張量580,可在相同運算週期期間使用相同PE陣列執行多個池化計算。輸出向量可儲存於輸出向量張量590中。
圖6繪示根據各項實施例之混合PE陣列之一例示性系統設計。該混合PE陣列可實施為一硬體加速器600。圖6中之加速器600之組件係僅為了闡釋性目的。取決於實施方案,加速器600可包含較多、較少或替代組件。在一些實施例中,加速器600可包含圖1、圖2A及圖2B中之一些或所有組件,諸如MAC通道。加速器600中之各MAC通道可包含如圖3中所展示之複數個乘法器及一加法器樹。該加法器樹可包含如圖4中所展示之複數個多功能加法器-減法器。
從功能角度來看,在一些實施例中,加速器600可包含一權重選擇電路610、一啟動選擇電路620、複數個MAC通道630及一權重矩陣產生電路640。在一些實施例中,權重選擇電路610可實施為多工器,且與表示為兩個權重源之權重矩陣產生電路640及一權重快取區耦合。權重選擇電路610可經指示以根據一控制信號自此兩個權重源獲得權重。對於不同類型之計算,可自不同來源獲得權重。取決於目標計算(例如,卷積、池化、向量運算),啟動選擇電路620可經組態以根據另一控制信號獲得啟動或向量。
在一些實施例中,MAC通道630之各者可經組態以接收指示是否執行卷積或向量運算之一控制信號;根據該控制信號接收來自複數個權重選擇器之至少一者之一或多個權重;根據控制信號接收來自複數個啟動輸入介面之至少一者之一或多個啟動;及根據控制信號基於該一或多個權重及該一或多個輸入啟動產生輸出資料且將該輸出資料饋送至一輸出緩衝器中,其中:複數個MAC通道之各者包括用於執行乘法運算之複數個第一電路及用於根據控制信號執行加法或減法運算之複數個第二電路。
在一些實施例中,權重矩陣產生電路640可經組態以產生用於向量縮減運算之權重,其中該等向量縮減運算包括縮減平均值、縮減最小值、縮減最大值、縮減平均值、縮減相加或池化之一或多者。
圖7繪示其中可實施本文中所描述之實施例之任何者之一實例性計算裝置。該計算裝置可用於實施圖1至圖6中所展示之系統之一或多個組件及方法。計算裝置700可包括用於傳送資訊之一匯流排702或其他通信機構,及與匯流排702耦合以用於處理資訊之一或多個硬體處理器704。硬體處理器704可為(例如)一或多個通用微處理器。
計算裝置700亦可包含耦合至匯流排702以用於儲存待藉由處理器704執行之資訊及指令之一主記憶體707,諸如隨機存取記憶體(RAM)、快取區及/或其他動態儲存裝置。主記憶體707亦可用於在待藉由處理器704執行之指令之執行期間儲存臨時變量或其他中間資訊。此等指令在儲存於可供處理器704存取之儲存媒體中時,可使計算裝置700成為經客製化以執行指令中指定之運算之一專用機器。主記憶體707可包含非揮發性媒體及/或揮發性媒體。非揮發性媒體可包含(例如)光碟或磁碟。揮發性媒體可包含動態記憶體。媒體之常見形式可包含(例如)一軟碟、一可撓性磁碟、硬碟、固態硬碟、磁帶或任何其他磁性資料儲存媒體、一CD-ROM、任何其他光學資料儲存媒體、具有孔圖案之任何實體媒體、一RAM、一DRAM、一PROM及EPROM、一快閃EPROM、NVRAM、任何其他記憶體晶片或卡匣,或其等之網路化版本。
計算裝置700可使用可結合計算裝置引起或程式化計算裝置700成為一專用機器之客製化之硬接線邏輯、一或多個ASIC或FPGA、韌體及/或程式邏輯來實施本文中所描述之技術。根據一項實施例,回應於處理器704執行包含於主記憶體707中之一或多個指令之一或多個序列,藉由計算裝置700執行本文中之技術。此等指令可自另一儲存媒體(諸如儲存裝置708)讀取至主記憶體707中。包含於主記憶體707中之指令序列之執行可引起處理器704執行本文中描述之程序步驟。例如,可藉由儲存於主記憶體707中之電腦程式指令來實施本文中所揭示之程序/方法。當此等指令藉由處理器704執行時,其等可執行如對應圖中所展示且上文所描述之步驟。在替代實施例中,硬接線之電路可代替軟體指令或結合軟體指令來使用。
計算裝置700亦包含耦合至匯流排702之一通信介面710。通信介面710可提供耦合至連接至一或多個網路之一或多個網路鏈路之一雙向資料通信。作為另一實例,通信介面710可為用以提供至一相容LAN (或與一WAN通信之WAN組件)之一資料通信連接之一區域網路(LAN)。亦可實施無線鏈路。
特定操作之執行可在不僅駐留於一單個機器內而且跨數個機器部署之處理器當中分佈。在一些實例性實施例中,處理器或處理器實施之引擎可定位於一單個地理位置中(例如,一住所環境、一辦公室環境或一伺服器場內)。在其他實例性實施例中,處理器或處理器實施之引擎可跨許多地理位置分佈。
先前段落中所描述之程序、方法及演算法之各者可體現於藉由包括電腦硬體之一或多個電腦系統或電腦處理器執行之程式碼模組中,且藉由該等程式碼模組完全或部分自動化。程序及演算法可部分或全部實施於特定應用電路中。
當本文中所揭示之功能以軟體功能單元之形式實施且作為獨立產品出售或使用時,其等可儲存於一處理器可執行的非揮發性電腦可讀儲存媒體中。本文中所揭示之特定技術解決方案(全部或部分)或促成當前技術之態樣可以一軟體產品之形式體現。該軟體產品可儲存於一儲存媒體中,該儲存媒體包括引起一計算裝置(其可為一個人電腦、一伺服器、一網路裝置及類似者)執行本申請案之實施例之方法之全部或一些步驟之數個指令。儲存媒體可包括一快閃隨身碟、一可攜式硬碟機、ROM、RAM、一磁碟、一光碟、可操作以儲存程式碼之另一媒體,或其等之任何組合。
特定實施例進一步提供一系統,該系統包括一處理器及儲存指令之一非暫時性電腦可讀儲存媒體,該等指令可藉由該處理器執行以引起該系統執行對應於上文所揭示之實施例之任何方法中之步驟的操作。特定實施例進一步提供一非暫時性電腦可讀儲存媒體,其經組態具有可藉由一或多個處理器執行以引起該一或多個處理器執行對應於上文所揭示之實施例之任何方法中之步驟之操作的指令。
本文中所揭示之實施例可透過與一用戶端相互作用之一雲端平台、一伺服器或一伺服器群組(在下文中統稱為「服務系統」)來實施。用戶端可為一終端裝置,或由一使用者在一平台處註冊之一用戶端,其中終端裝置可為一行動終端機、一個人電腦(PC)及可安裝有一平台應用程式之任何裝置。
上文所描述之各種特徵及程序可彼此獨立使用或可以各種方式組合。所有可能組合及子組合旨在落在本發明之範疇內。另外,在一些實施方案中可省略特定方法或程序方塊。本文中所描述之方法及程序亦並不限於任何特定序列,且可以適當之其他序列執行與其有關之方塊或狀態。例如,所描述之方塊或狀態可按除明確揭示之順序以外之一順序執行,或多個方塊或狀態可組合於一單個方塊或狀態中。實例性方塊或狀態可串列、並行或以某一其他方式執行。方塊或狀態可添加至所揭示之實例性實施例或自所揭示之實例性實施例移除。本文中所描述之例示性系統及組件可不同於所描述般組態。例如,元件可被添加至所揭示之實例性實施例、自所揭示之實例性實施例移除或相較於所揭示之實例性實施例重新配置。
本文中所描述之例示性方法之各種操作可至少部分藉由一演算法執行。該演算法可包括於儲存於一記憶體(例如,上文所描述之一非暫時性電腦可讀儲存媒體)中之程式碼或指令中。此演算法可包括一機器學習演算法。在一些實施例中,一機器學習演算法可能未明確程式化電腦以執行一功能,但可自訓練樣本學習以製作執行該功能之一預測模型。
可至少部分藉由經暫時組態(例如,藉由軟體)或永久組態以執行相關操作之一或多個處理器來執行本文中所描述之例示性方法之各種操作。無論暫時組態或永久組態,此等處理器可構成操作以執行本文中所描述之一或多個操作或功能之處理器實施之引擎。
類似地,本文中所描述之方法可至少部分經處理器實施,其中一特定處理器或若干處理器為硬體之一實例。例如,一方法之至少一些操作可藉由一或多個處理器或處理器實施之引擎來執行。此外,該一或多個處理器亦可操作以支援一「雲端運算」環境中或作為一「軟體即服務」(SaaS)之相關操作之執行。例如,該等操作之至少一些可藉由一電腦群組(作為包含處理器之機器之實例)執行,其中此等操作可經由一網路(例如,網際網路)及經由一或多個適當介面(例如,一應用程式介面(API))存取。
特定操作之執行可在不僅駐留於一單個機器內而且跨數個機器部署之處理器當中分佈。在一些實例性實施例中,處理器或處理器實施之引擎可定位於一單個地理位置中(例如,一住所環境、一辦公室環境或一伺服器場內)。在其他實例性實施例中,處理器或處理器實施之引擎可跨許多地理位置分佈。
貫穿本說明書,複數個例項可實施被描述為一單個例項之組件、操作或結構。儘管一或多個方法之個別操作被繪示及描述為分離之操作,然該等個別操作之一或多者可同時執行,且沒有要求按所繪示之順序執行該等操作。在實例性組態中作為分離之組件呈現之結構及功能性可實施為一組合結構或組件。類似地,作為一單個組件呈現之結構及功能性可實施為分離之組件。此等及其他變動、修改、添加及改良落在本文中標的物之範疇內。
如本文中所使用,「或」係包含性而非排他性的,除非另有明確指示或上下文另有指示。因此,在本文中,「A、B或C」意謂「A、B、A及B、A及C、B及C,或A、B及C」,除非另有明確指示或上下文另有指示。此外,「及」係聯合的且亦係各自的,除非另有明確指示或上下文另有指示。因此,在本文中,「A及B」意謂「A及B,聯合地或各自地」,除非另有明確指示或上下文另有指示。此外,可對本文中描述為一單個例項之資源、操作或結構提供複數個例項。此外,各種資源、操作、引擎及資料儲存器之間的界限係稍微任意的,且特定操作係在特定闡釋性組態之一背景內容中進行繪示。預期其他功能性分配且其等可落在本發明之各項實施例之一範疇內。一般而言,在實例性組態中呈現為分離之資源之結構及功能性可實施為一組合結構或資源。類似地,呈現為一單個資源之結構及功能性可實施為分離之資源。此等及其他變動、修改、添加及改良落在如藉由隨附發明申請專利範圍表示之本發明之實施例之一範疇內。因此,說明書及圖式應被視為一闡釋性意義而非一限制性意義。
術語「包含」或「包括」係用於指示隨後聲明之特徵之存在,但不排除添加其他特徵。除非另有特別陳述或在如所使用之上下文內以其他方式理解,否則條件語言(諸如「能夠」、「可(could)」、「可能」或「可(may)」等)一般意欲表達某些實施例包含,而其他實施例並不包含特定特徵、元件及/或步驟。因此,此條件語言一般並不旨在意謂一或多個實施例在任何情況下需要特徵、元件及/或步驟或一或多項實施例一定包含用於決策之邏輯(具有或不具有使用者輸入或提示),無論此等特徵、元件及/或步驟是否包含於任何特定實施例中或待在任何特定實施例中執行。
儘管已參考特定實例性實施例描述標的物之一概述,但可在不脫離本發明之實施例之更寬廣範疇之情況下對此等實施例做出各種修改及改變。在本文中可藉由術語「發明」個別或共同指代標的物之此等實施例,此僅為了方便且並不意欲將本申請案之範疇自願地限於任何單個揭示內容或概念,前提是實際上揭示多於一個揭示內容或概念。
足夠詳細描述本文中所繪示之實施例以使熟習此項技術者能夠實踐所揭示之教示。可使用其他實施例及自本文中所繪示之實施例導出其他實施例,使得可在不脫離本發明之範疇之情況下做出結構及邏輯替代及改變。因此,[實施方式]不應被視為限制意義,且各項實施例之範疇係僅藉由隨附發明申請專利範圍以及此等發明申請專利範圍被賦予之等效物之完整範圍而定義。
110:指令解碼器
130:權重源
150:輸入源
160:混合處理實體(PE)陣列
170:輸出緩衝器
200:處理實體(PE)陣列
210:列
220:行
230:Y1加法器樹/第一加法器樹/第二加法器樹
250:加法器
270:權重矩陣產生器
272:權重選擇器
273:乘法器-累加器(MAC)通道
274:乘法器-累加器(MAC)
300:乘法器-累加器(MAC)通道
310:乘法器
320:加法器-減法器電路
330:加法器樹
340:根加法器-減法器電路
350:外部加法器-減法器電路
400:邏輯電路設計
410:多工器
420:第一信號
430:第二信號
440:多工器
510:權重矩陣
520:輸入張量
530:輸出向量
540:權重矩陣
550:輸入張量
560:輸出向量張量
570:權重矩陣
580:輸入張量
590:輸出向量張量
600:硬體加速器
610:權重選擇電路
620:啟動選擇電路
630:乘法器-累加器(MAC)通道
640:權重矩陣產生電路
700:計算裝置
702:匯流排
704:硬體處理器
707:主記憶體
708:儲存裝置
710:通信介面
圖1繪示根據各項實施例之用於在一混合PE陣列中處理神經網路計算之一例示性系統圖。
圖2A繪示根據各項實施例之一PE陣列之一例示性架構圖。
圖2B繪示根據各項實施例之用於處理卷積計算及向量運算兩者之一混合PE陣列之一例示性架構圖。
圖3繪示根據各項實施例之混合PE陣列中之一MAC (乘法器-累加器)通道之一例示性內部結構圖。
圖4繪示根據各項實施例之各MAC通道中之一累加器及減法器之一例示性邏輯電路設計。
圖5A繪示根據各項實施例之使用混合PE陣列執行一向量縮減之一例示性使用案例。
圖5B繪示根據各項實施例之使用混合PE陣列並行執行複數個向量縮減之另一例示性使用案例。
圖5C繪示根據各項實施例之使用混合PE陣列執行池化之另一例示性使用案例。
圖6繪示根據各項實施例之混合PE陣列之一例示性系統設計。
圖7繪示其中可實施本文中所描述之實施例之任何者之一實例性電腦系統。
110:指令解碼器
130:權重源
150:輸入源
160:混合處理實體(PE)陣列
170:輸出緩衝器
Claims (18)
- 一種神經網路加速器,其包括: 一指令解碼器,其經組態以將一神經網路計算指令自一處理器解碼至一權重負載控制信號、一啟動負載控制信號及一計算控制信號中; 複數個權重選擇器,其等經組態以根據該權重負載控制信號來獲得權重,其中該權重負載控制信號指示是否自一權重快取區或自一權重產生器獲得該等權重; 複數個啟動選擇器,其等經組態以根據該啟動負載控制信號而自一記憶體獲得啟動或向量,其中該啟動負載控制信號指示是否獲得該等啟動或該等向量;及 複數個電路通道,各電路通道經組態以: 接收由該複數個權重選擇器獲得之該等權重及由該複數個啟動選擇器獲得之該等啟動或該等向量, 根據該計算控制信號判定是否執行卷積計算或向量運算,及 基於該等權重及該等啟動或該等向量來執行該等卷積計算或該等向量運算以產生輸出資料;及 其中該指令解碼器進一步經組態以回應於該等權重具有一型樣而指示該複數個權重選擇器自該權重產生器獲得該等權重,而非自該權重快取區獲得該等權重,以減少記憶體存取。
- 如請求項1之神經網路加速器,其中該權重快取區包含對應於用於卷積計算之一神經網路中之一卷積層之過濾器之權重,且該權重產生器產生權重以執行向量運算。
- 如請求項1之神經網路加速器,其中該權重負載控制信號指示一當前運算是否為一卷積計算或一向量運算,且 回應於該當前運算為該卷積計算,該複數個權重選擇器自該權重快取區獲得該等權重;及 回應於該當前運算為該向量運算,該複數個權重選擇器自該權重產生器獲得該等權重。
- 如請求項1之神經網路加速器,其中: 該計算控制信號指示該複數個電路通道針對卷積計算執行求和或針對向量運算執行減法。
- 如請求項1之神經網路加速器,其中: 根據該計算控制信號,該複數個電路通道之一子集經組態以執行卷積計算,且同時剩餘電路通道經組態以執行向量運算。
- 如請求項1之神經網路加速器,其中各電路通道經組織為一樹, 在該樹之一葉層級處之該等電路經組態以基於該等權重之一或多者及該等啟動或該等向量之一或多者來執行乘法;及 在該樹之非葉層級處之該等電路係根據指示是否基於自該樹之一先前層級之電路接收之資料來執行加法或減法之該計算控制信號而組態。
- 如請求項1之神經網路加速器,其中該等向量運算包括縮減平均值、縮減最小值、縮減最大值、縮減平均值、縮減相加或池化之一或多者。
- 如請求項1之神經網路加速器,其中該複數個權重選擇器之各者包括與該權重產生器及該權重快取區耦合之一多工器。
- 一種混合卷積-向量運算處理系統,其包括: 一指令解碼器,其經組態以將一神經網路計算指令自一處理器解碼至一權重負載控制信號及一計算控制信號中; 複數個權重選擇器,其等經組態以根據該權重負載控制信號來獲得權重,其中該權重負載控制信號指示是否自一權重快取區或自一權重產生器獲得該等權重; 複數個啟動選擇器,其等經組態以自一記憶體獲得啟動或向量;及 複數個電路通道,各電路通道經組態以: 接收由該複數個權重選擇器獲得之該等權重及由該複數個啟動選擇器獲得之該等啟動或該等向量, 根據該計算控制信號判定是否執行卷積計算或向量運算,及 基於該等權重及該等啟動或該等向量來執行該等卷積計算或該等向量運算以產生輸出資料;及 其中該指令解碼器進一步經組態以回應於該等權重具有一型樣而指示該複數個權重選擇器自該權重產生器獲得該等權重,而非自該權重快取區獲得該等權重,以減少記憶體存取。
- 如請求項9之混合卷積-向量運算處理系統,其中該權重快取區包含對應於用於卷積計算之一神經網路中之一卷積層之過濾器之權重,且該權重產生器產生權重以執行向量運算。
- 如請求項9之混合卷積-向量運算處理系統,其中該權重負載控制信號指示一當前運算是否為一卷積計算或一向量運算,且 回應於該當前運算為該卷積計算,該複數個權重選擇器自該權重快取區獲得該等權重;及 回應於該當前運算為該向量運算,該複數個權重選擇器自該權重產生器獲得該等權重。
- 如請求項9之混合卷積-向量運算處理系統,其中該計算控制信號指示該複數個電路通道針對卷積計算執行求和或針對向量運算執行減法。
- 如請求項9之混合卷積-向量運算處理系統,其中,根據該計算控制信號,該複數個電路通道之一子集經組態以執行卷積計算,且同時剩餘電路通道經組態以執行向量運算。
- 如請求項9之混合卷積-向量運算處理系統,其中各電路通道經組織為一樹, 在該樹之一葉層級處之該等電路經組態以基於該等權重之一或多者及該等啟動或該等向量之一或多者來執行乘法;及 在該樹之非葉層級處之該等電路係根據指示是否基於自該樹之一先前層級之電路接收之資料來執行加法或減法之該計算控制信號而組態。
- 如請求項9之混合卷積-向量運算處理系統,其中該等向量運算包括縮減平均值、縮減最小值、縮減最大值、縮減平均值、縮減相加或池化之一或多者。
- 如請求項9之混合卷積-向量運算處理系統,其中該複數個權重選擇器之各者包括與該權重產生器及該權重快取區耦合之一多工器。
- 一種電腦實施方法,其包括: 自一處理器接收一神經網路計算指令; 藉由一指令解碼器將該神經網路計算指令解碼至一權重負載控制信號、一啟動負載控制信號及一計算控制信號中; 將該權重負載控制信號發送至複數個權重選擇器以獲得權重,其中該權重負載控制信號指示該複數個權重選擇器是否自一權重快取區或自一權重產生器獲得該等權重; 將該啟動負載控制信號發送至複數個啟動選擇器以自一記憶體獲得啟動或向量,其中該啟動負載控制信號指示是否獲得該等啟動或該等向量; 將該計算控制信號發送至複數個電路通道,其中該複數個電路通道經組態以根據該計算控制信號以: 接收由該複數個權重選擇器獲得之該等權重及由該複數個啟動選擇器獲得之該等啟動或該等向量, 根據該計算控制信號判定是否執行卷積計算或向量運算,及 基於該等權重及該等啟動或該等向量來執行該等卷積計算或該等向量運算以產生輸出資料;及 其中該指令解碼器進一步經組態以回應於該等權重具有一型樣而指示該複數個權重選擇器自該權重產生器獲得該等權重,而非自該權重快取區獲得該等權重,以減少記憶體存取。
- 如請求項17之方法,其中該權重負載控制信號指示一當前運算是否為一卷積計算或一向量運算,且 回應於該當前運算為該卷積計算,該獲得權重包括自該權重快取區獲得該等權重;及 回應於該當前運算為該向量運算,該獲得權重包括自該權重產生器獲得該等權重。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/944,772 | 2022-09-14 | ||
| US17/944,772 US11726746B1 (en) | 2022-09-14 | 2022-09-14 | Vector operation acceleration with convolution computation unit |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202501245A TW202501245A (zh) | 2025-01-01 |
| TWI884081B true TWI884081B (zh) | 2025-05-11 |
Family
ID=87560121
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW112134997A TWI858917B (zh) | 2022-09-14 | 2023-09-14 | 具有卷積計算單元之向量運算加速 |
| TW113133784A TWI884081B (zh) | 2022-09-14 | 2023-09-14 | 具有卷積計算單元之向量運算加速 |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW112134997A TWI858917B (zh) | 2022-09-14 | 2023-09-14 | 具有卷積計算單元之向量運算加速 |
Country Status (7)
| Country | Link |
|---|---|
| US (3) | US11726746B1 (zh) |
| EP (1) | EP4566000A4 (zh) |
| JP (1) | JP2025529448A (zh) |
| KR (1) | KR20250065390A (zh) |
| CN (1) | CN120226017A (zh) |
| TW (2) | TWI858917B (zh) |
| WO (1) | WO2024055872A1 (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11726746B1 (en) | 2022-09-14 | 2023-08-15 | Moffett International Co., Limited | Vector operation acceleration with convolution computation unit |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112204579A (zh) * | 2018-06-19 | 2021-01-08 | 国际商业机器公司 | 运行时可重新配置的神经网络处理器核 |
| CN112232499A (zh) * | 2020-10-13 | 2021-01-15 | 华中光电技术研究所(中国船舶重工集团公司第七一七研究所) | 卷积神经网络加速器 |
| CN112862091A (zh) * | 2021-01-26 | 2021-05-28 | 合肥工业大学 | 一种基于快速卷积的资源复用型神经网络硬件加速电路 |
| CN114330682A (zh) * | 2021-12-01 | 2022-04-12 | 南京风兴科技有限公司 | 应用于Fastformer神经网络的硬件架构及其计算方法 |
| US11347916B1 (en) * | 2019-06-28 | 2022-05-31 | Amazon Technologies, Inc. | Increasing positive clock skew for systolic array critical path |
Family Cites Families (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9355490B2 (en) * | 2013-11-14 | 2016-05-31 | Intel Corporation | Minimum-maximum filtering of graphical texture data |
| US11797473B2 (en) * | 2014-05-29 | 2023-10-24 | Altera Corporation | Accelerator architecture on a programmable platform |
| US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
| CN109416754B (zh) * | 2016-05-26 | 2020-06-23 | 多伦多大学管理委员会 | 用于深度神经网络的加速器 |
| US10037490B2 (en) * | 2016-12-13 | 2018-07-31 | Google Llc | Performing average pooling in hardware |
| US12333405B2 (en) * | 2017-01-12 | 2025-06-17 | Texas Instruments Incorporated | Methods and apparatus for matrix processing in a convolutional neural network |
| EP3654172A1 (en) * | 2017-04-19 | 2020-05-20 | Shanghai Cambricon Information Technology Co., Ltd | Fused vector multiplier and method using the same |
| CN107679621B (zh) * | 2017-04-19 | 2020-12-08 | 赛灵思公司 | 人工神经网络处理装置 |
| CN118821876A (zh) * | 2017-05-19 | 2024-10-22 | 莫维迪乌斯有限公司 | 用于提高卷积效率的方法、系统和装置 |
| CN111553473B (zh) * | 2017-07-05 | 2023-10-13 | 上海寒武纪信息科技有限公司 | 数据冗余方法及执行数据冗余方法的神经网络处理器 |
| US20200074293A1 (en) * | 2018-08-29 | 2020-03-05 | DinoplusAI Holdings Limited | Computing Device for Multiple Activation Functions in Neural Networks |
| JP7402623B2 (ja) * | 2019-06-17 | 2023-12-21 | キヤノン株式会社 | フィルタ処理装置及びその制御方法 |
| KR20260007360A (ko) | 2019-12-19 | 2026-01-13 | 구글 엘엘씨 | 신경망 계산 가속화를 위한 하드웨어 회로 |
| US11663000B2 (en) * | 2020-01-07 | 2023-05-30 | SK Hynix Inc. | Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator |
| US11537860B2 (en) * | 2020-03-23 | 2022-12-27 | Arm Limited | Neural net work processing |
| US11604975B2 (en) * | 2020-04-09 | 2023-03-14 | Apple Inc. | Ternary mode of planar engine for neural processor |
| US12361266B2 (en) * | 2020-05-14 | 2025-07-15 | Samsung Electronics Co., Ltd. | Hierarchical weight preprocessing for neural network accelerator |
| US20220036243A1 (en) * | 2020-07-29 | 2022-02-03 | Samsung Electronics Co., Ltd. | Apparatus with accelerated machine learning processing |
| KR102883343B1 (ko) * | 2020-07-31 | 2025-11-07 | 삼성전자주식회사 | 딥러닝 연산 수행 방법 및 장치 |
| KR20220078819A (ko) * | 2020-12-04 | 2022-06-13 | 삼성전자주식회사 | 딥러닝 연산 수행 방법 및 장치 |
| US12333274B2 (en) * | 2020-12-11 | 2025-06-17 | Amazon Technologies, Inc. | Data-type-aware clock-gating |
| GB2602524B (en) * | 2021-01-04 | 2024-02-14 | Imagination Tech Ltd | Neural network comprising matrix multiplication |
| GB2608986B (en) * | 2021-06-28 | 2024-01-24 | Imagination Tech Ltd | Implementation of Argmax or Argmin in hardware |
| US11494627B1 (en) * | 2021-07-08 | 2022-11-08 | Hong Kong Applied Science and Technology Research Institute Company Limited | Dynamic tile parallel neural network accelerator |
| CN113692592B (zh) | 2021-07-08 | 2022-06-28 | 香港应用科技研究院有限公司 | 动态瓦片并行神经网络加速器 |
| US12147836B2 (en) * | 2021-11-05 | 2024-11-19 | Intel Corporation | Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerators |
| US20230418559A1 (en) * | 2022-06-23 | 2023-12-28 | Stmicroelectronics S.R.L. | Acceleration of 1x1 convolutions in convolutional neural networks |
| US11726746B1 (en) | 2022-09-14 | 2023-08-15 | Moffett International Co., Limited | Vector operation acceleration with convolution computation unit |
-
2022
- 2022-09-14 US US17/944,772 patent/US11726746B1/en active Active
-
2023
- 2023-04-03 US US18/130,311 patent/US12020001B2/en active Active
- 2023-09-05 EP EP23864604.6A patent/EP4566000A4/en active Pending
- 2023-09-05 KR KR1020257011345A patent/KR20250065390A/ko active Pending
- 2023-09-05 JP JP2025515542A patent/JP2025529448A/ja active Pending
- 2023-09-05 WO PCT/CN2023/116979 patent/WO2024055872A1/en not_active Ceased
- 2023-09-05 CN CN202380066171.1A patent/CN120226017A/zh active Pending
- 2023-09-14 TW TW112134997A patent/TWI858917B/zh active
- 2023-09-14 TW TW113133784A patent/TWI884081B/zh active
-
2024
- 2024-04-17 US US18/638,441 patent/US12530170B2/en active Active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112204579A (zh) * | 2018-06-19 | 2021-01-08 | 国际商业机器公司 | 运行时可重新配置的神经网络处理器核 |
| US11347916B1 (en) * | 2019-06-28 | 2022-05-31 | Amazon Technologies, Inc. | Increasing positive clock skew for systolic array critical path |
| CN112232499A (zh) * | 2020-10-13 | 2021-01-15 | 华中光电技术研究所(中国船舶重工集团公司第七一七研究所) | 卷积神经网络加速器 |
| CN112862091A (zh) * | 2021-01-26 | 2021-05-28 | 合肥工业大学 | 一种基于快速卷积的资源复用型神经网络硬件加速电路 |
| CN114330682A (zh) * | 2021-12-01 | 2022-04-12 | 南京风兴科技有限公司 | 应用于Fastformer神经网络的硬件架构及其计算方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202501245A (zh) | 2025-01-01 |
| EP4566000A4 (en) | 2025-10-29 |
| US11726746B1 (en) | 2023-08-15 |
| US20240264802A1 (en) | 2024-08-08 |
| KR20250065390A (ko) | 2025-05-12 |
| JP2025529448A (ja) | 2025-09-04 |
| TWI858917B (zh) | 2024-10-11 |
| WO2024055872A1 (en) | 2024-03-21 |
| US20240086151A1 (en) | 2024-03-14 |
| EP4566000A1 (en) | 2025-06-11 |
| TW202420065A (zh) | 2024-05-16 |
| US12020001B2 (en) | 2024-06-25 |
| CN120226017A (zh) | 2025-06-27 |
| US12530170B2 (en) | 2026-01-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Lu et al. | SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs | |
| US9886377B2 (en) | Pipelined convolutional operations for processing clusters | |
| Han et al. | Ese: Efficient speech recognition engine with sparse lstm on fpga | |
| CN113469354B (zh) | 受存储器限制的神经网络训练 | |
| CN108805262A (zh) | 用于根据高级程序进行脉动阵列设计的系统及方法 | |
| CN114127740A (zh) | 人工智能模型的分布式训练中的数据并行性 | |
| WO2023155748A1 (en) | Adaptive tensor compute kernel for sparse neural network | |
| CN114127702A (zh) | 在存储器受限设备上执行大型人工智能模型 | |
| CN116562349A (zh) | 用于神经网络处理的针对可编程硬件节点的多功能单元 | |
| CN117112145B (zh) | 训练模型分配方法、装置、计算机设备和存储介质 | |
| US20230334329A1 (en) | Multi-agent reinforcement learning system and operating method thereof | |
| CN114265673A (zh) | 利用共享控制的计算阵列的空间分片 | |
| TWI884081B (zh) | 具有卷積計算單元之向量運算加速 | |
| CN117130693B (zh) | 张量卸载方法、装置、计算机设备及存储介质 | |
| US20240004830A1 (en) | Floorplan-optimized matrix extension architecture for processors | |
| CN113469365A (zh) | 基于神经网络模型的推理和编译方法及其相关产品 | |
| CN115244544A (zh) | 用于神经处理器电路的异步任务执行 | |
| GB2596864A (en) | Machine learning computer | |
| US12333415B2 (en) | Neural network accelerators | |
| US20230419166A1 (en) | Systems and methods for distributing layers of special mixture-of-experts machine learning models | |
| CN111860797A (zh) | 运算装置 | |
| GB2622869A (en) | Methods and systems for online selection of number formats for network parameters of a neural network | |
| CN114548352A (zh) | 一种矩阵数据的处理方法、装置、电子设备及存储介质 | |
| JP7582505B2 (ja) | 深層学習推論システムおよび推論サービング方法 | |
| US20260037599A1 (en) | Weight-stationary matrix multiply accelerator with tightly coupled l2 cache |