TWI783263B - 用於神經網路順序輸入之資料處理方法及非暫時性電腦程式產品 - Google Patents
用於神經網路順序輸入之資料處理方法及非暫時性電腦程式產品 Download PDFInfo
- Publication number
- TWI783263B TWI783263B TW109129830A TW109129830A TWI783263B TW I783263 B TWI783263 B TW I783263B TW 109129830 A TW109129830 A TW 109129830A TW 109129830 A TW109129830 A TW 109129830A TW I783263 B TWI783263 B TW I783263B
- Authority
- TW
- Taiwan
- Prior art keywords
- processing time
- memory storage
- time step
- input data
- hardware accelerator
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Advance Control (AREA)
- Image Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Feedback Control In General (AREA)
Abstract
一種硬體加速器可將用於處理至一機器學習模型之順序輸入的多個處理時間步驟之各處理時間步驟的輸入資料儲存於該加速器上之一或多個記憶體中之多個記憶體儲存區域中。針對各處理時間步驟,執行以下項。該加速器可存取儲存於該加速器內的一暫存器中之一計數器之一當前值以識別該處理時間步驟。該加速器可基於該計數器之該當前值而判定儲存該處理時間步驟之該輸入資料的一或多個記憶體儲存區域。該加速器可促進將該處理時間步驟之該輸入資料從該一或多個記憶體儲存區域存取至耦合至該一或多個記憶體儲存區域的至少一個處理器。該加速器可使儲存於該暫存器中之該計數器之該當前值增量。
Description
本文中描述之標的物大體上係關於硬體加速器,且更特定言之係關於一種硬體加速器,其經組態以快速找到儲存於該硬體加速器之記憶體內之資料。
一硬體加速器係特定製成以比在一通用中央處理單元(CPU)上運行之軟體更高效地執行一些操作之電腦硬體。此硬體加速器通常與執行一些操作之一主機裝置(例如,CPU)相關聯,而硬體加速器執行其他操作。當硬體加速器需要執行操作時,其頻繁地與主機裝置通信以例如接收指令及輸入資料或儲存輸入資料之特定記憶體儲存區域之識別。此等頻繁通信可不利地導致運算延時。
在一個態樣中,一種硬體加速器可將用於處理至一機器學習模型(例如,遞迴神經網路)之順序輸入之複數個處理時間步驟之各處理時間步驟的輸入資料儲存於該硬體加速器上的一或多個記憶體中之複數個記憶體儲存區域中。針對該複數個處理時間步驟之各處理時間步驟,可執行以下項。該硬體加速器可存取儲存於該硬體加速器內的一暫存器中之一
計數器之一當前值。該計數器之該當前值可識別該處理時間步驟。該硬體加速器可基於該處理時間步驟計數器之該當前值而判定儲存該處理時間步驟之該輸入資料的一或多個記憶體儲存區域。該硬體加速器可促進將該處理時間步驟之該輸入資料從該一或多個記憶體儲存區域存取至耦合至該一或多個記憶體儲存區域的至少一個處理器。該硬體加速器可使儲存於該暫存器中之該計數器之該當前值增量。
在一些變動中,可個別地或以任何可行組合進一步實施以下項之一或多者。儲存該處理時間步驟之該輸入資料的該一或多個記憶體儲存區域之該判定可包含:藉由該硬體加速器擷取與該機器學習模型(例如,遞迴神經網路)相關聯之一步幅之一值;藉由該硬體加速器且基於該計數器之該當前值及該步幅之該值而運算該處理時間步驟之該輸入資料之至少兩個邊緣之值;及藉由該硬體加速器且基於該至少兩個邊緣之該等值而判定儲存該處理時間步驟之該輸入資料的該一或多個記憶體儲存區域。該硬體加速器可產生各記憶體儲存區域及該一或多個記憶體儲存區域之端部的一映射。該硬體加速器可將該映射儲存於該硬體加速器內之一暫存器中。該一或多個記憶體儲存區域之該等端部涵蓋該至少兩個邊緣。該等邊緣之該等值之該運算可涉及藉由該硬體加速器使該計數器之該當前值與該步幅之該值相乘。
該硬體加速器可從一中央處理單元接收該複數個處理時間步驟之各處理時間步驟的一單一指令。該硬體加速器可回應於接收該單一指令而至少執行判定該一或多個儲存區域及促進將該處理時間步驟之該輸入資料存取至該至少一個處理器。該硬體加速器可將該單一指令儲存於該硬體加速器內之另一記憶體中。該硬體加速器及該中央處理單元可嵌入一
行動電話中。
該硬體加速器可在該儲存之前從一中央處理單元接收該複數個處理時間步驟之各處理時間步驟之該輸入資料。儲存該複數個處理時間步驟之各處理時間步驟之該輸入資料可包含藉由該硬體加速器之一控制器將該複數個處理時間步驟之各處理時間步驟之該輸入資料傳輸至該複數個記憶體儲存區域。該控制器可透過至少一個匯流排將該複數個處理時間步驟之各處理時間步驟之該輸入資料傳輸至該複數個記憶體儲存區域。
該至少一個處理器及該一或多個記憶體儲存區域存在於複數個運算單元之一單一運算單元內。針對該複數個處理時間步驟之各處理時間步驟,該輸入資料可為單獨及/或不同的。該硬體加速器可將由該機器學習模型(例如,遞迴神經網路)針對該複數個處理時間步驟之各處理時間步驟產生之輸出儲存於該硬體加速器內之另一記憶體中。該硬體加速器可在該複數個處理時間步驟之後共同傳輸該複數個處理時間步驟之各處理時間步驟之該輸出。
在另一態樣中,描述一種非暫時性電腦程式產品,其可儲存當由至少一個可程式化處理器執行時導致該至少一個可程式化處理器執行本文中提及之操作之指令。在又另一態樣中,一種系統可包含至少一個可程式化處理器及一機器可讀媒體,該機器可讀媒體儲存當由該至少一個處理器執行時導致該至少一個可程式化處理器執行本文中描述之操作之指令。在一些態樣中,一種製品可包含儲存於非暫時性電腦可讀媒體上之電腦可執行指令,該等電腦可執行指令當由一電腦執行時導致該電腦執行本文中描述之操作。
本文中描述之標的物提供許多優點。例如,本文中描述之
架構容許加速器最小化與主機裝置(例如,CPU)之通信。通信之此最小化可有利地最小化運算延時。此外,加速器描述跨多個運算單元分佈之運算(諸如張量運算)。組態各運算單元以執行特定張量運算可有益地容許使用例如減少數目個指令進行張量之一加速遍歷及張量運算之運算。此加速有利地增強運算效率。此外,至機器學習模型(例如,神經網路)之輸入包含一序列多個輸入,其中各輸入對應於一不同處理時間步驟,且加速器憑藉指示加速器對全部處理步驟之整個輸入資料(其包含上文提及之全部輸入)執行特定操作的一單一指令從主機裝置同時接收全部處理時間步驟之全部輸入。具有針對來自主機裝置之全部處理步驟的一單一指令優於針對各處理步驟之單獨指令(對應於整個輸入資料之潛在不同切片)。例如,藉由減少加速器在遍歷一張量以執行一或多個運算時需要執行之指令數目而增加加速器之運算頻寬。
在下文隨附圖式及描述中闡述本文中描述之標的物之一或多個變動之細節。將從描述、圖式及發明申請專利範圍明白本文中描述之標的物之其他特徵及優點。
102:加速器
104:主機裝置
106:控制器
108:運算單元
110:運算單元
112:運算單元
114:運算單元
116:運算單元
118:運算單元
120:運算單元
122:運算單元
124:處理器
126:處理器
128:處理器
130:處理器
132:處理器
134:處理器
136:處理器
138:處理器
140:記憶體
142:記憶體
144:記憶體
146:記憶體
148:記憶體
150:記憶體
152:記憶體
154:記憶體
156:指令記憶體
158:資料記憶體
160:記憶體
162:記憶體
200:運算單元/運算微磚
201:資料路徑
202:記憶體
203:環狀輸出
204:第一記憶體儲存區域
205:資料路徑
206:第二記憶體儲存區域
208:DMAOp控制件
210:環狀輸入
212:TensorOp控制件
214:MAC陣列
215:MAC運算子
216:輸入啟動匯流排
218:輸出啟動匯流排
220:和暫存器
222:非線性單元(NLU)
224:輸出啟動管線
226:TensorOp張量遍歷單元(TTU)
228:DMAOp TTU
230:參考映射
232:TensorOp TTU暫存器
234:DMAOp TTU暫存器
236:移位暫存器
238:NLU控制件
302:表
304:操作碼
306:操作類型
308:描述
402:映射
404:記憶體
502:操作
504:操作
506:操作
508:操作
圖1繪示經組態以執行一神經網路之特定操作之一加速器及一主機裝置(例如,中央處理單元(CPU))。
圖2繪示包含一第一記憶體儲存區域及一第二記憶體儲存區域之一記憶體,其可為加速器上之記憶體之一者。
圖2A繪示加速器之一運算單元。
圖3繪示展示可由加速器從主機裝置接收之指令指定(即,由其編碼)之一些類型之操作之一表。
圖4繪示特定記憶體儲存區域連同加速器上之一對應記憶體及輸入資料之端部的一映射。
圖5繪示由加速器執行以存取一計數器以判定儲存RNN之一當前處理步驟的輸入資料的一或多個記憶體儲存區域之一方法。
各種圖式中之相似參考符號指示相似元件。
圖1繪示經組態以執行一神經網路之特定操作之一加速器102及一主機裝置(例如,中央處理單元(CPU))104。神經網路可為一遞迴神經網路(RNN)。儘管貫穿此文件將神經網路描述為RNN,然在一些實施方案中,神經網路可為可透過多個時間步驟處理一序列輸入之任何神經網路,例如一基於變壓器自注意之神經網路、一迴旋神經網路等。RNN可為一長短期記憶體(LSTM)網路、一閘控整流單元(GRU)或在透過多個時間步驟處理一序列輸入時維持及更新一內部狀態之任何其他遞迴神經網路。加速器102亦可被稱為一硬體加速器。加速器102及主機裝置104可嵌入一運算裝置內,諸如一行動電話或一平板電腦。加速器102可具有一控制器106及多個運算單元,諸如108、110、112、114、116、118、120及122。雖然展示八個運算單元108至122,但在替代實施方案中,加速器102可具有任何其他數目個運算單元,諸如介於兩個與十六個之間的任何數目。各運算單元108至122可具有至少一個可程式化處理器124至138及至少一個記憶體140至154。加速器102可進一步具有其他記憶體,諸如一指令記憶體156、一資料記憶體158、經組態以儲存一計數器之一記憶體160及經組態以儲存一輸出之一記憶體162。記憶體140至154之各者可具有若干記憶體儲存區域。各記憶體儲存區域可經組態以尤其(例如,RNN
之權重)儲存輸入資料,如下文藉由圖2說明。下文藉由圖2A更詳細說明一運算單元(例如,運算單元108至122之一者)之一個實例。
為執行RNN之特定操作,控制器106從主機裝置104接收RNN的輸入資料及指定待由加速器102執行之操作之一指令。輸入資料可包含RNN之權重及對其執行RNN以產生推斷之資料。至RNN之輸入可包含一序列多個輸入,且各輸入可對應於一不同處理時間步驟。在一些不利實施方案中,控制器106可從主機裝置104逐一接收RNN之各處理時間步驟之整個輸入資料之切片(即,對應於該處理時間步驟之輸入)。然而,此處,控制器106從主機裝置104同時接收RNN之整個輸入資料(即,全部處理步驟之全部輸入),此最小化加速器102與主機裝置104之間的通信,藉此有利地最小化延時且最大化運算效率。
該指令係指示加速器102對全部處理時間步驟的輸入資料執行特定RNN操作的一單一指令。具有針對來自主機裝置104之全部處理時間步驟之整個輸入資料的一單一指令優於對應於個別處理時間步驟之多個指令,藉此最小化加速器102與主機裝置104之間的通信,此繼而有利地減少/最小化運算延時且因此最大化運算效率。上文提及之特定RNN操作可包含張量運算、資料記憶體存取操作、隔離(fencing)操作及/或其他操作。下文藉由圖3描述各種操作之一個實例。
控制器106可以一連續方式將整個處理時間步驟之所接收輸入資料傳輸至記憶體140至154以透過至少一個匯流排儲存該資料。控制器106可接著產生記憶體140至154之各者及儲存輸入資料之各記憶體內之記憶體儲存區域(例如,第一記憶體儲存區域或第二記憶體儲存區域,如圖2中展示)及該等記憶體儲存區域之端值的一映射,如下文藉由圖4中
描述。控制器106可將此映射儲存於資料記憶體158中。
控制器106可將指示由RNN處理的多個處理時間步驟之一當前處理時間步驟之一計數器儲存於記憶體160中。控制器106可在RNN之每一處理時間步驟之後使計數器增量。
針對RNN之各處理時間步驟,控制器106可執行以下項。控制器106可從記憶體160存取計數器之一當前值以識別處理時間步驟。控制器106可基於計數器之當前值而判定儲存處理時間步驟之輸入資料的一或多個記憶體140至154內的一或多個記憶體儲存區域,如下文進一步詳細說明。控制器106可促進將處理時間步驟之輸入資料從該一或多個記憶體儲存區域存取至耦合至該一或多個記憶體儲存區域的至少一個處理器。控制器106可接著使儲存於記憶體130中之計數器之當前值增量,亦如上文提及。
將計數器及映射(上文提及)儲存於加速器102上係有利的,此係因為其無需加速器與主機裝置通信以在一處理時間步驟內獲得多個指令,藉此最小化運算延時。
控制器106可依照以下項判定儲存處理時間步驟之輸入資料的記憶體140至154內的一或多個記憶體儲存區域。控制器106可從由一編譯器(其亦可嵌入加速器102及/或主機裝置104所駐留之運算裝置內)產生且由該編譯器提供至加速器102之一編譯結果擷取與遞迴神經網路相關聯之一步幅之一值。編譯結果可為可由加速器102解譯之一低階電腦語言之一機器碼。控制器106可基於計數器之當前值及步幅之值而判定處理時間步驟之輸入資料的至少兩個邊緣之值。更特定言之,控制器106可藉由使計數器之當前值與步幅之值相乘而運算各邊緣。控制器106可使用儲存
於資料記憶體158中之映射且基於至少兩個邊緣之值而判定儲存處理時間步驟之輸入資料的一或多個記憶體儲存區域。例如,若一處理時間步驟之輸入資料之左邊緣之值係103且輸入資料之右邊緣之值係147,則控制器可使用圖4之映射來判定此處理時間步驟之輸入資料儲存於記憶體144(其在第三運算單元112中)之第一記憶體儲存區域204中。
控制器106可將由遞迴神經網路針對複數個處理時間步驟之各處理時間步驟產生之輸出儲存於記憶體162中。控制器106可接著共同傳輸全部處理時間步驟之輸出而非個別地傳輸由RNN針對各處理時間步驟產生之輸出。全部處理時間步驟之輸出(而非對應於各處理時間步驟之多個輸出)之此傳輸最小化加速器102與主機裝置104之間的通信,藉此有利地最小化運算延時且因此最大化運算效率。在一替代實施方案中,控制器106可在多個處理時間步驟完成之後傳輸一處理時間步驟之輸出(例如,控制器106可將三個處理時間步驟之輸出一起傳輸至主機裝置104)。
圖2繪示包含一第一記憶體儲存區域204及一第二記憶體儲存區域206之一記憶體202,其可為記憶體140至154之任一者。第一記憶體儲存區域204可經組態以儲存RNN之輸入資料。第二記憶體儲存區域206可經組態以儲存RNN之權重。記憶體儲存區域亦可被稱為暫存器或記憶體庫。
第一記憶體儲存區域204可包含一或多個窄記憶體,且第二記憶體儲存區域206可包含一或多個寬記憶體。寬及窄名稱係一對應記憶體之屬性且通常指代以位元及/或位元組為單位之記憶體之一寬度(且在一替代實施方案中,指代一近似寬度)。
圖2A繪示執行一或多個RNN運算之一運算單元200之一實
例。運算單元200可對應於運算單元108至122之任一者。各運算單元200係經組態以相對於運算單元108至122內之其他對應運算單元獨立地執行指令之一自含型運算單元。各運算單元200可執行兩種類型之指令,一張量運算(亦被稱為TensorOp)指令及一直接記憶體存取操作(亦被稱為DMAOp)指令。各指令類型包含與RNN之深度迴圈巢狀相關聯之運算操作且因此各指令類型通常在多個時間紀元內執行以確保完成全部迴圈反覆。
不同指令類型由運算微磚200內之獨立控制單元執行,其等透過在運算微磚200內管理之同步旗標控制件對資料進行同步。同步旗標控制件管理運算微磚200內之不同指令類型之執行之間的並行性。以嚴格發出順序執行與各指令類型相關聯之各運算操作(即,先進先出)。關於兩個指令類型(TensorOP及DMAOp),此等不同指令類型之間不存在排序保證且由運算單元200作為一單獨控制執行緒處理各類型。
關於資料流構造,運算單元200通常包含各為進入及離開運算單元200之資料流提供一通信路徑之資料路徑201及資料路徑205。運算單元108至154可經由鋪設成一環狀組態之三個相異資料匯流排結構(CSR匯流排、指令匯流排及環狀匯流排)連接。資料路徑205對應於指令匯流排,而資料路徑201通常對應於CSR匯流排及環匯流排之一者。資料路徑201包含為離開運算單元200之資料提供一輸出路徑之一環狀輸出203及為進入運算單元200之資料提供一輸入路徑之一環狀輸入210。
運算單元200進一步包含含有一TensorOp張量遍歷單元(TTU)226之一TensorOp控制件212及包含一DMAOp TTU 228之一DMAOp控制件208。TensorOp控制件212通常管理至TensorOp TTU暫存
器232之寫入及自TensorOp TTU暫存器232之讀取且管理由TensorOp TTU 226執行之遍歷操作。同樣地,DMAOp控制件208通常管理至DMAOp TTU暫存器234之寫入及自DMAOp TTU暫存器234之讀取且管理由DMAOp TTU 228執行之遍歷操作。TTU暫存器232包含用於儲存一或多個指令之指令緩衝器,該一或多個指令包括在由TensorOp控制件212執行指令之後由TensorOp TTU 226執行之操作。同樣地,TTU暫存器234包含用於儲存一或多個指令之指令緩衝器,該一或多個指令包括在由DMAOp控制件208執行指令之後由DMAOp TTU 228執行之操作。如下文進一步描述,運算單元200使用TTU遍歷通常駐留於第一記憶體儲存區域204(窄記憶體)及第二記憶體儲存區域206(寬記憶體)中之一或多個張量之陣列元素。
在一些實施方案中,由運算微磚200執行之某些指令經由資料路徑205(即,指令匯流排之一部分)到達微磚。運算單元200檢查標頭位元映射以判定指令類型(TensorOp或DMAOp)及指令子類型(讀取操作或寫入操作)。隨後取決於指令類型將由運算單元200接收之(若干)指令寫入至一特定指令緩衝器。一般言之,在由運算單元200之一組件執行指令之前接收及儲存指令(即,寫入至緩衝器)。指令緩衝器(即,TensorOp TTU暫存器232及DMAOp TTU暫存器234)可各包含排定一或多個相關指令之消耗(執行)之優先級之一先進先出(FIFO)控制方案。
一張量係一多維幾何物件且例示性多維幾何物件包含矩陣及資料陣列。可由運算單元200執行一演算法(包含RNN之至少一些運算操作)以藉由反覆一或多個巢狀迴圈以遍歷一N維張量而執行張量運算。在一個例示性運算程序中,迴圈巢狀之各迴圈可負責遍歷N維張量之一特定
維度。如本文中描述,TensorOp控制件212通常管理一或多個張量運算以驅動遍歷及存取一特定張量構造之維度元素之序列以完成由深度巢狀迴圈定義之運算。
運算單元200進一步包含第一記憶體儲存區域204(窄記憶體)及第二記憶體儲存區域206(寬記憶體),亦如藉由圖2論述。窄及寬名稱通常指代第一記憶體儲存區域204及第二記憶體儲存區域206之記憶體單元之寬度上之一大小(位元/位元組)。在一些實施方案中,第一記憶體儲存區域204包含各具有小於16個位元之一大小或寬度之記憶體單元且第二記憶體儲存區域206包含各具有小於32個位元之一大小或寬度之記憶體單元。一般言之,運算單元200經由資料路徑205接收輸入啟動且DMAOp控制件208執行一操作以將輸入啟動寫入至第一記憶體儲存區域204中。同樣地,運算單元200經由資料路徑201接收參數(權重)且DMAOp控制件208執行一操作以將參數寫入至第二記憶體儲存區域206中。在一些實施方案中,第一記憶體儲存區域204可包含通常用於共用記憶體系統中之一記憶體仲裁器以針對各記憶體循環決定將容許哪一控制裝置(例如,TensorOp控制件212或DMAOp控制件208)存取第一記憶體儲存區域204之該共用記憶體單元。
運算單元200進一步包含一輸入啟動匯流排216及一MAC陣列214,該MAC陣列214包含各含有一MAC運算子215及一和暫存器220之多個胞元。一般言之,MAC陣列214使用跨多個胞元之MAC運算子215及和暫存器220執行張量運算,包含與點積運算相關之算術運算。輸入啟動匯流排216提供一資料路徑,其中由第一記憶體儲存區域204逐一提供輸入啟動以由MAC陣列214之各MAC運算子215進行各自存取。因此,基
於一輸入啟動之逐一廣播,一特定胞元之一單一MAC運算子215將各接收一輸入啟動。由MAC陣列214之MAC運算子執行之算術運算通常包含使由第一記憶體儲存區域204提供之一輸入啟動與從第二記憶體儲存區域206存取之一參數相乘以產生一單一輸出啟動值。
在算術運算期間,部分和可累積及儲存於一對應(例如)和暫存器220中或寫入至第二記憶體儲存區域206且由MAC陣列214之一特定胞元重新存取以完成後續乘法運算。張量運算可被描述為具有一第一部分及第二部分。在乘法運算產生一輸出啟動(例如藉由完成一輸入啟動與一參數之一乘法以產生輸出啟動)時完成第一部分。第二部分包含將一非線性函數應用於一輸出啟動且在應用函數之後將輸出啟動寫入至第一記憶體儲存區域204時完成第二部分。
運算單元200進一步包含一輸出啟動匯流排218、包括一輸出啟動管線224之一非線性單元(NLU)222、一NLU控制件238及指示運算微磚200中之一組件之一核心屬性之一參考映射230。為清晰起見展示參考映射230,但其不包含於運算微磚200中。核心屬性包含一特定組件是否係一單元、一儲存裝置、一運算子、一控制裝置或一資料路徑。一般言之,在完成張量運算之第一部分之後,經由輸出啟動匯流排218將輸出啟動從MAC陣列214提供至NLU 222。在到達NLU 222之後,將經由輸出啟動管線224接收之指定一啟動函數之資料應用於輸出啟動且接著將輸出啟動寫入至第一記憶體儲存區域204。在一些實施方案中,輸出啟動匯流排218包含至少一個管線移位暫存器236且完成張量運算之第二部分包含使用輸出啟動匯流排218之一移位暫存器236以使輸出啟動朝向第一記憶體儲存區域204移位。
關於例如兩個多維資料陣列之點積運算,針對一單一運算單元200,MAC陣列214提供穩健單指令多資料(SIMD)功能性。SIMD通常意謂全部平行單元(多個MAC運算子215)共用相同指令(基於深度迴圈巢狀),但各MAC運算子215對不同資料元素執行指令。在一個基本實例中,將陣列[1,2,3,4]及[5,6,7,8]逐元素相加以在一個循環中獲得陣列[6,8,10,12]通常將需要四個算術單元以對各元素執行操作。藉由使用SIMD,四個單元可共用相同指令(例如,「相加」)且並行執行運算。因此,加速器102及運算單元200在張量運算中提供優於先前方法之增強加速及平行性。
在一個實例中,可由控制器106將一單一指令提供至多個運算單元200(例如,運算單元108至122)以由多個MAC陣列214消耗。一般言之,神經網路層可包含多個輸出神經元且可分割輸出神經元,使得可將與輸出神經元之一子集相關聯之張量運算指派至微磚集合112、114之一特定微磚。微磚集合112、114之各微磚可接著對一給定層之不同神經元群組執行相關張量運算。運算單元200可因此提供至少兩種形式之平行性:(1)一種形式包含在多個運算單元108至122中分割輸出啟動(對應於輸出神經元之子集);及(2)另一形式包含基於運算單元108至122中之分割而同時運算(使用一單一指令)輸出神經元之多個子集。耦合至加速器102之一編譯器(其亦可嵌入加速器102及/或主機裝置104所駐留之運算裝置內)可判定且向加速器102指示神經網路輸入之各者之特定目標微磚。例如,編譯器產生一運行時間碼以判定具有各特定處理時間步驟之輸入之相關部分之一或多個運算單元(即,運算單元108至122之一或多者)。
圖3繪示展示可由加速器102從主機裝置104接收之指令指
定(即,由其編碼)之一些類型之操作之一表302。表302可儲存於可由加速器102及主機裝置104存取之一記憶體中。針對對應於由RNN循序接收之輸入之全部處理時間步驟,加速器102可從主機裝置104接收一單一指令而非從主機裝置104接收多個指令,如上文提及。由加速器102接收之指令可包含用於各種操作之操作碼(operation code)(亦被稱為操作碼(opcode))304。加速器102可使用表302來推斷由操作碼304指定之操作。表302指示特定於各操作碼304之操作之一操作類型306及一描述308。
指令可具有一標準化結構,其可包含一或多個操作碼304以指定待由特定運算單元執行之一或多個操作以獲得一特定運算序列。各操作之操作碼可不同於其他操作碼。
操作類型306可包含張量運算、直接記憶體存取操作及/或隔離操作(如展示)及/或未展示之其他可能操作。控制器106可將指令之相關部分傳送至需要執行指令之該等部分之電子組件,諸如運算單元。例如,指定用於執行一操作之一特定運算單元之該操作需要由該指定特定運算單元執行。
若資料在具有不相等寬度之兩個記憶體資源(例如,一寬記憶體及一窄記憶體)之間移動,則資料之傳送大小必須係較寬資源之一倍數。例如,若一直接記憶體存取操作將資料移動至一寬記憶體/從一寬記憶體移動資料,則傳送資料之大小必須係該寬記憶體之寬度之一倍數。同樣地,針對將資料移動至窄記憶體/從窄記憶體移動資料之一直接記憶體存取操作,資料之傳送大小必須係該窄記憶體之寬度之一倍數。加速器102可從張量運算識別必須執行之操作,且可從DMA操作識別如何複製資料,包含來源及目的地記憶體位址、資料之傳送大小及在資料複製與運算
技術之間同步之方法。一旦資料之預期部分處於記憶體中,運算便可開始。
圖4繪示記憶體儲存區域(例如,第一記憶體儲存區域204或一第二記憶體儲存區域206)及一對應記憶體(即,記憶體140至154之一者)404及該等記憶體儲存區域之端部406的一映射402。在所展示實例中,假定記憶體140至154之各者具有相同儲存容量,且因此儲存相同量之資料。在替代實施方案中,至少一些記憶體140至154可具有不同儲存容量,其等繼而將導致圖4之右側行中之值改變。為最大化儲存效率,有利地連續儲存輸入資料(而非例如將對應於各處理時間步驟之輸入資料儲存於一單獨記憶體中)。
當RNN處理資料時,控制器106可基於計數器之當前值及步幅之值而運算各處理時間步驟之輸入資料之邊緣,如上文提及。例如,控制器106可藉由使計數器之當前值與步幅之值相乘而運算各邊緣。控制器106可接著使用邊緣之值以使用映射402判定儲存處理時間步驟之輸入資料之第一記憶體儲存區域204。例如,若一處理時間步驟之輸入資料之左邊緣之值係103且該輸入資料之右邊緣之值係147,則控制器可使用圖4之映射來判定此處理時間步驟之輸入資料經儲存於記憶體144內之第一記憶體儲存區域204中。
一旦控制器識別哪一特定記憶體部分具有所需輸入資料,控制器便可從該特定記憶體儲存區域提取輸入資料。控制器從由編譯器產生及提供之指令識別在該特定記憶體儲存區域內獲得輸入資料之特定記憶體位址。編譯器在編譯時間期間產生此等指令以識別來源位置,其包含微磚及具有適當輸入資料之該微磚之記憶體位址。一旦識別來源記憶體,所
產生指令便可將資訊寫入至加速器上之暫存器。由於暫存器係指令之部分,所以加速器102執行由編譯器產生之指令以獲得來源記憶體位址及資料資訊(諸如資料之傳送大小)。
圖5繪示由加速器102執行以存取一計數器以判定儲存RNN之一當前處理時間步驟之輸入資料的一或多個記憶體儲存區域之一方法。控制器106可將由RNN處理之複數個處理時間步驟之各處理時間步驟之輸入資料儲存於記憶體140至154內的一或多個記憶體儲存區域中。
控制器106可接著針對各處理時間步驟執行以下項。在502,控制器106可存取儲存於記憶體160中之一計數器之一當前值。計數器之當前值可識別處理時間步驟。控制器106可在504且基於計數器之當前值而判定儲存處理時間步驟之輸入資料之一或多個特定記憶體儲存區域。在506,控制器106可促進將處理時間步驟之輸入資料從一或多個特定記憶體儲存區域存取至耦合至一或多個記憶體儲存區域之處理器124至138之至少一者。例如,控制器106可將一指令發送至來源微磚(即,具有資料之微磚),該指令可導致來源微磚將資料發送至目標微磚(即,需要針對該時間步驟執行初始運算之微磚)。在508,控制器可使儲存於記憶體160中之計數器之當前值增量。
本說明書中描述之標的物及功能操作之實施方案可在數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中揭示之結構及其等之結構等效物)或其等之一或多者之組合中實施。本說明書中描述之標的物之實施方案可被實施為一或多個電腦程式,即,編碼於一有形非暫時性程式載體上以由資料處理設備執行或控制資料處理設備之操作的電腦程式指令之一或多個模組。替代地或另外,可將程式指令編碼於
一人工產生之傳播信號(例如,一機器產生之電信號、光學信號或電磁信號)上,該傳播信號經產生以編碼用於傳輸至適合接收器設備之資訊以由一資料處理設備執行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
可以任何形式之程式設計語言撰寫一電腦程式(其亦可被稱為或描述為一程式、軟體、一軟體應用程式、一模組、一軟體模組、一指令檔或程式碼),包含編譯或解譯語言或宣告或程序語言,且其可以任何形式部署,包含作為一獨立程式或作為一模組、組件、副常式或適用於一運算環境中之其他單元。一電腦程式可(但無需)對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料(例如,儲存於一標記語言文件中之一或多個指令檔)之一檔案之一部分中、儲存於專用於所述程式之一單一檔案中,或儲存於多個經協調檔案(例如,儲存一或多個模組、子程式或程式碼之部分之檔案)中。一電腦程式可經部署以在一個電腦上或在定位於一個位點處或跨多個位點分佈且由一通信網路互連之多個電腦上執行。
本說明書中描述之程序及邏輯流程可由一或多個可程式化電腦執行,該一或多個可程式化電腦執行一或多個電腦程式以藉由對輸入資料進行操作且產生輸出而執行功能。程序及邏輯流程亦可藉由專用邏輯電路(例如,一FPGA(場可程式化閘陣列)、一ASIC(特定應用積體電路)、一GPGPU(通用圖形處理單元)或某其他類型之處理器)執行,且設備亦可實施為專用邏輯電路。
藉由實例,適於執行一電腦程式之電腦包含、可基於通用或專用微處理器或兩者或任何其他種類之中央處理單元。一般言之,一中
央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行(performing/executing)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般言之,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或可操作地耦合以自該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置或兩者。然而,一電腦無需具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放機、一遊戲控制台、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)快閃隨身碟)等等。
適於儲存電腦程式指令及資料之電腦可讀媒體包含全部形式之非揮發性記憶體、媒體及記憶體裝置,包含例如:半導體記憶體裝置,例如EPROM、EEPROM及快閃記憶體裝置;磁碟,例如內部硬碟或可抽換式磁碟;磁光碟;及CD ROM及DVD-ROM磁碟。處理器及記憶體可由專用邏輯電路補充或併入專用邏輯電路中。
可在一運算系統中實施本說明書中描述之標的物之實施方案,該運算系統包含一後端組件(例如,作為一資料伺服器),或包含一中介軟體組件(例如,一應用程式伺服器),或包含一前端組件(例如,具有一圖形使用者介面或一網頁瀏覽器之一用戶端電腦,一使用者可透過其與本說明書中描述之標的物之一實施方案互動)或一或多個此等後端組件、中介軟體組件或前端組件之任何組合。系統之組件可由數位資料通信之任何形式或媒體(例如,一通信網路)互連。通信網路之實例包含一區域網路(「LAN」)及一廣域網路(「WAN」),例如網際網路。
運算系統可包含用戶端及伺服器。一用戶端及伺服器通常彼此遠離且通常透過一通信網路互動。用戶端與伺服器之關係藉由運行於各自電腦上且彼此具有一用戶端-伺服器關係之電腦程式引起。
雖然本說明書含有許多特定實施方案細節,但此等細節不應被解釋為限制任何發明或可主張內容之範疇,而應當解釋為可特定於特定發明之特定實施方案之特徵之描述。在本說明書中在單獨實施方案之內容脈絡中描述之某些特徵亦可在一單一實施方案中組合實施。相反地,在一單一實施方案之內容脈絡中描述之各種特徵亦可在多個實施方案中單獨實施或以任何適合子組合實施。再者,儘管上文可將特徵描述為以某些組合起作用且即使最初如此主張,然在一些情況中,來自一所主張組合之一或多個特徵可從組合中切除,且所主張組合可係關於一子組合或一子組合之變動。
類似地,雖然在圖式中按一特定順序描繪操作,但此不應被理解為要求按所展示之特定順序或循序順序執行此等操作或執行全部所繪示操作以達成所要結果。在某些境況中,多任務處理及平行處理可為有利的。再者,在上文中描述之實施方案中之各種系統模組及組件之分離不應被理解為在所有實施方案中皆需要此分離,且應理解所描述之程式組件及系統可大體上一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的物之特定實施方案。其他實施方案係在下列發明申請專利範圍之範疇內。例如,在發明申請專利範圍中敘述之動作可按一不同順序執行且仍達成所要結果。作為一個實例,在附圖中描繪之程序不必要求所展示之特定順序或循序順序來達成所要結果。在某些實施方案中,多任務處理及平行處理可為有利的。
502:操作
504:操作
506:操作
508:操作
Claims (20)
- 一種用於神經網路順序輸入之資料處理方法,其包括:藉由一硬體加速器將用於處理至一機器學習模型之順序輸入的複數個處理時間步驟之各處理時間步驟的輸入資料儲存於該硬體加速器上的一或多個記憶體中之複數個記憶體儲存區域中;針對該複數個處理時間步驟之各處理時間步驟:藉由該硬體加速器存取儲存於該硬體加速器內的一暫存器中之一計數器之一當前值,該計數器之該當前值識別該處理時間步驟;藉由該硬體加速器且基於該處理時間步驟計數器之該當前值而判定儲存該處理時間步驟之該輸入資料的一或多個記憶體儲存區域;藉由該硬體加速器促進將該處理時間步驟之該輸入資料從該一或多個記憶體儲存區域存取至耦合至該一或多個記憶體儲存區域的至少一個處理器;及藉由該硬體加速器使儲存於該暫存中之該計數器之該當前值增量。
- 如請求項1之資料處理方法,其中該判定儲存該處理時間步驟之該輸入資料的該一或多個記憶體儲存區域包括:藉由該硬體加速器擷取與該機器學習模型相關聯之一步幅之一值;藉由該硬體加速器且基於該計數器之該當前值及該步幅之該值而運算該處理時間步驟之該輸入資料之至少兩個邊緣之值;及藉由該硬體加速器且基於該至少兩個邊緣之該等值而判定儲存該處 理時間步驟之該輸入資料的該一或多個記憶體儲存區域。
- 如請求項2之資料處理方法,其進一步包括:藉由該硬體加速器產生各記憶體儲存區域及該一或多個記憶體儲存區域之端部的一映射;及藉由該硬體加速器將該映射儲存於該硬體加速器內之一暫存器中,其中該一或多個記憶體儲存區域之該等端部涵蓋該至少兩個邊緣。
- 如請求項3之資料處理方法,其中該運算該等邊緣之該等值涉及:藉由該硬體加速器使該計數器之該當前值與該步幅之該值相乘。
- 如請求項1之資料處理方法,其進一步包括:藉由該硬體加速器且從一中央處理單元接收該複數個處理時間步驟之各處理時間步驟的一單一指令,其中該硬體加速器回應於該接收該單一指令而至少執行該判定該一或多個儲存區域及該促進將該處理時間步驟之該輸入資料存取至該至少一個處理器。
- 如請求項5之資料處理方法,其進一步包括:藉由該硬體加速器將該單一指令儲存於該硬體加速器內之另一記憶體中。
- 如請求項6之資料處理方法,其中該硬體加速器及該中央處理單元嵌 入一行動電話中。
- 如請求項1之資料處理方法,其進一步包括:藉由該硬體加速器且在該儲存之前從一中央處理單元接收該複數個處理時間步驟之各處理時間步驟之該輸入資料。
- 如請求項1之資料處理方法,其中該儲存該複數個處理時間步驟之各處理時間步驟之該輸入資料包括:藉由該硬體加速器之一控制器將該複數個處理時間步驟之各處理時間步驟之該輸入資料傳輸至該複數個記憶體儲存區域。
- 如請求項9之資料處理方法,其中該控制器透過至少一個匯流排將該複數個處理時間步驟之各處理時間步驟之該輸入資料傳輸至該複數個記憶體儲存區域。
- 如請求項1之資料處理方法,其中該至少一個處理器及該一或多個記憶體儲存區域存在於複數個運算單元之一單一運算單元內。
- 如請求項1之資料處理方法,其中針對該複數個處理時間步驟之各處理時間步驟,該輸入資料係單獨且不同的。
- 如請求項1之資料處理方法,其進一步包括:藉由該硬體加速器將由該機器學習模型針對該複數個處理時間步驟 之各處理時間步驟產生之輸出儲存於該硬體加速器內之另一記憶體中;及藉由該硬體加速器在該複數個處理時間步驟之後共同傳輸該複數個處理時間步驟之各處理時間步驟之該輸出。
- 一種用於神經網路順序輸入之非暫時性電腦程式產品,其儲存當由至少一個可程式化處理器執行時導致該至少一個可程式化處理器執行包括以下項之操作之指令:將用於處理至一機器學習模型之順序輸入的複數個處理時間步驟之各處理時間步驟的輸入資料儲存於一或多個記憶體中之複數個記憶體儲存區域中;針對該複數個處理時間步驟之各處理時間步驟:存取儲存於一暫存器中之一計數器之一當前值,該計數器之該當前值識別該處理時間步驟;基於該處理時間步驟計數器之該當前值而判定儲存該處理時間步驟之該輸入資料的一或多個記憶體儲存區域;促進將該處理時間步驟之該輸入資料從該一或多個記憶體儲存區域存取至耦合至該一或多個記憶體儲存區域的至少一個處理器;及使儲存於該暫存器中之該計數器之該當前值增量。
- 如請求項14之非暫時性電腦程式產品,其中該判定儲存該處理時間步驟之該輸入資料的該一或多個記憶體儲存區域包括:擷取與該機器學習模型相關聯之一步幅之一值;基於該計數器之該當前值及該步幅之該值而運算該處理時間步驟之 該輸入資料之至少兩個邊緣之值;及基於該至少兩個邊緣之該等值而判定儲存該處理時間步驟之該輸入資料的該一或多個記憶體儲存區域。
- 如請求項15之非暫時性電腦程式產品,其中該等操作進一步包括:產生各記憶體儲存區域及該一或多個記憶體儲存區域之端部的一映射;及將該映射儲存於一暫存器中,其中該一或多個記憶體儲存區域之該等端部涵蓋該至少兩個邊緣。
- 如請求項16之非暫時性電腦程式產品,其中該運算該等邊緣之該等值涉及:使該計數器之該當前值與該步幅之該值相乘。
- 如請求項14之非暫時性電腦程式產品,其中該等操作進一步包括:從一中央處理單元接收該複數個處理時間步驟之各處理時間步驟的一單一指令,其中該非暫時性電腦程式回應於該接收該單一指令而至少執行該判定該一或多個儲存區域及該促進將該處理時間步驟之該輸入資料存取至該至少一個處理器;及將該單一指令儲存於另一記憶體中。
- 如請求項14之非暫時性電腦程式,其中該等操作進一步包括:在該儲存之前從一中央處理單元接收該複數個處理時間步驟之各處 理時間步驟之該輸入資料,其中該儲存該複數個處理時間步驟之各處理時間步驟之該輸入資料包括將該複數個處理時間步驟之各處理時間步驟之該輸入資料傳輸至該複數個記憶體儲存區域。
- 如請求項14之非暫時性電腦程式,其中該等操作進一步包括:將由該機器學習模型針對該複數個處理時間步驟之各處理時間步驟產生之輸出儲存於另一記憶體中;及在該複數個處理時間步驟之後共同傳輸該複數個處理時間步驟之各處理時間步驟之該輸出。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/US19/067389 | 2019-12-19 | ||
PCT/US2019/067389 WO2021126203A1 (en) | 2019-12-19 | 2019-12-19 | Processing sequential inputs using neural network accelerators |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202125341A TW202125341A (zh) | 2021-07-01 |
TWI783263B true TWI783263B (zh) | 2022-11-11 |
Family
ID=69740516
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109129830A TWI783263B (zh) | 2019-12-19 | 2020-09-01 | 用於神經網路順序輸入之資料處理方法及非暫時性電腦程式產品 |
TW111137884A TW202324209A (zh) | 2019-12-19 | 2020-09-01 | 用於神經網路順序輸入之資料處理方法及非暫時性電腦程式產品 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111137884A TW202324209A (zh) | 2019-12-19 | 2020-09-01 | 用於神經網路順序輸入之資料處理方法及非暫時性電腦程式產品 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230119126A1 (zh) |
EP (1) | EP3857384B1 (zh) |
CN (1) | CN114430838A (zh) |
TW (2) | TWI783263B (zh) |
WO (1) | WO2021126203A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11922306B2 (en) * | 2020-12-28 | 2024-03-05 | Meta Platforms, Inc. | Tensor controller architecture |
US20230185740A1 (en) * | 2021-12-10 | 2023-06-15 | Samsung Electronics Co., Ltd. | Low-latency input data staging to execute kernels |
US11989142B2 (en) | 2021-12-10 | 2024-05-21 | Samsung Electronics Co., Ltd. | Efficient and concurrent model execution |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180267898A1 (en) * | 2015-10-08 | 2018-09-20 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Processor with selective data storage operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache |
US20180285254A1 (en) * | 2017-04-04 | 2018-10-04 | Hailo Technologies Ltd. | System And Method Of Memory Access Of Multi-Dimensional Data |
US20180341495A1 (en) * | 2017-05-26 | 2018-11-29 | Purdue Research Foundation | Hardware Accelerator for Convolutional Neural Networks and Method of Operation Thereof |
TW201923586A (zh) * | 2017-07-30 | 2019-06-16 | 埃拉德 希提 | 以記憶體爲基礎的分散式處理器架構 |
TW201947466A (zh) * | 2017-06-19 | 2019-12-16 | 美商谷歌有限責任公司 | 用於存取n維張量之方法、系統及設備 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11144478A (ja) * | 1997-11-10 | 1999-05-28 | Hitachi Device Eng Co Ltd | 不揮発性半導体メモリの情報記憶方法および電子機器 |
JP4875148B2 (ja) * | 2008-03-07 | 2012-02-15 | 株式会社東芝 | 情報処理装置および記憶メディアドライブ |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10949736B2 (en) * | 2016-11-03 | 2021-03-16 | Intel Corporation | Flexible neural network accelerator and methods therefor |
US11373088B2 (en) * | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
US11704543B2 (en) * | 2018-06-12 | 2023-07-18 | Samsung Electronics Co., Ltd. | Neural network hardware acceleration with stochastic adaptive resource allocation |
US11494608B2 (en) * | 2019-08-14 | 2022-11-08 | Intel Corporation | Methods and apparatus to tile walk a tensor for convolution operations |
-
2019
- 2019-12-19 US US16/971,589 patent/US20230119126A1/en active Pending
- 2019-12-19 WO PCT/US2019/067389 patent/WO2021126203A1/en unknown
- 2019-12-19 EP EP19858655.4A patent/EP3857384B1/en active Active
- 2019-12-19 CN CN201980100331.3A patent/CN114430838A/zh active Pending
-
2020
- 2020-09-01 TW TW109129830A patent/TWI783263B/zh active
- 2020-09-01 TW TW111137884A patent/TW202324209A/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180267898A1 (en) * | 2015-10-08 | 2018-09-20 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Processor with selective data storage operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache |
US20180285254A1 (en) * | 2017-04-04 | 2018-10-04 | Hailo Technologies Ltd. | System And Method Of Memory Access Of Multi-Dimensional Data |
US20180341495A1 (en) * | 2017-05-26 | 2018-11-29 | Purdue Research Foundation | Hardware Accelerator for Convolutional Neural Networks and Method of Operation Thereof |
TW201947466A (zh) * | 2017-06-19 | 2019-12-16 | 美商谷歌有限責任公司 | 用於存取n維張量之方法、系統及設備 |
TW201923586A (zh) * | 2017-07-30 | 2019-06-16 | 埃拉德 希提 | 以記憶體爲基礎的分散式處理器架構 |
Non-Patent Citations (1)
Title |
---|
Kota Ando, Kodai Ueyoshi, Kentaro Orimo, etc. BRein Memory: A 13-Layer 4.2 K Neuron/0.8 M Synapse Binary/Ternary Reconfigurable in-Memory Deep Neural Network Accelerator in 65 nm CMOS. 2017 Symposium on VLSI Circuits, page C24- C25, 2017/06/05. IEEE(https://ieeexplore.ieee.org/document/8008533) * |
Also Published As
Publication number | Publication date |
---|---|
EP3857384A1 (en) | 2021-08-04 |
WO2021126203A1 (en) | 2021-06-24 |
TW202125341A (zh) | 2021-07-01 |
EP3857384B1 (en) | 2022-05-11 |
CN114430838A (zh) | 2022-05-03 |
US20230119126A1 (en) | 2023-04-20 |
TW202324209A (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI783263B (zh) | 用於神經網路順序輸入之資料處理方法及非暫時性電腦程式產品 | |
JP7158543B2 (ja) | ニューラルネットワーク命令セットアーキテクチャ | |
US20240119255A1 (en) | Methods and apparatus to tile walk a tensor for convolution operations | |
KR102317668B1 (ko) | 신경망 연산 타일 | |
TWI728421B (zh) | 用於修改機器學習模型之方法及非暫時性電腦儲存媒體以及機器學習計算系統 | |
CN110866610A (zh) | 一种深度学习模型分布式运算的方法及装置 | |
WO2019118363A1 (en) | On-chip computational network | |
US20240232630A1 (en) | Neural network training in a distributed system | |
US11880715B2 (en) | Method and system for opportunistic load balancing in neural networks using metadata | |
US20230418677A1 (en) | Preemption in a machine learning hardware accelerator | |
WO2021071930A1 (en) | Redistributing tensor elements between machine learning computing units | |
US20210326683A1 (en) | Hardware circuit for accelerating neural network computations | |
US20190318229A1 (en) | Method and system for hardware mapping inference pipelines | |
US20220083390A1 (en) | Computing device and method | |
CN117157620A (zh) | 多加速器计算调度 | |
JP7525597B2 (ja) | ニューラルネットワーク計算を加速するためのハードウェア回路 |