TWI727361B - 用於實現智慧處理運算結構的方法 - Google Patents
用於實現智慧處理運算結構的方法 Download PDFInfo
- Publication number
- TWI727361B TWI727361B TW108123853A TW108123853A TWI727361B TW I727361 B TWI727361 B TW I727361B TW 108123853 A TW108123853 A TW 108123853A TW 108123853 A TW108123853 A TW 108123853A TW I727361 B TWI727361 B TW I727361B
- Authority
- TW
- Taiwan
- Prior art keywords
- token
- data
- program
- processing
- integrated circuit
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 284
- 238000000034 method Methods 0.000 title claims abstract description 83
- 239000000872 buffer Substances 0.000 claims abstract description 133
- 238000004364 calculation method Methods 0.000 claims description 34
- 238000011144 upstream manufacturing Methods 0.000 claims description 33
- 239000011159 matrix material Substances 0.000 claims description 27
- 230000008859 change Effects 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 8
- 230000007423 decrease Effects 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 19
- 238000012546 transfer Methods 0.000 description 13
- 238000013473 artificial intelligence Methods 0.000 description 12
- 238000013528 artificial neural network Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000003062 neural network model Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000012549 training Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 6
- 230000005055 memory storage Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 235000012431 wafers Nutrition 0.000 description 3
- 238000011143 downstream manufacturing Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7814—Specially adapted for real time processing, e.g. comprising hardware timers
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/34—Source routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17325—Synchronisation; Hardware support therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Data Mining & Analysis (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
Abstract
一種用於積體電路內的自動化資料傳遞和自動化資料處理的系統和方法,包括:一智慧處理積體電路,包括至少一智慧處理管線,其中,該至少一個智慧處理管線包括:儲存輸入資料的一主資料緩衝器;多個不同的智慧處理區塊,其中每個不同的智慧處理區塊包括一運算電路和一本地資料緩衝器;一基於令牌的管理模組,該基於令牌的管理模組實現:一第一基於令牌的控制資料結構;一第二基於令牌的控制資料結構,其中該第一基於令牌的控制資料結構和該第二基於令牌的控制資料協同操作以藉由該至少一智慧處理管線控制該輸入資料的一自動化資料流和/或該輸入資料的一自動化處理。
Description
本申請要求2018年07月05日向美國專利商標局提交的第62/694,355號美國臨時申請案的優先權,其藉由引用整體合併於文中。
本文描述的發明一般涉及積體電路架構領域,並且更具體地有關於新的和有用的智慧積體電路以及利用積體電路架構領域中的智慧積體電路進行運算的方法。
如今,人工智慧和機器學習的各種實現正在推動許多技術領域的創新。人工智慧(AI)系統和人工智慧模型(包括演算法)由許多系統架構和模型來定義,這些架構和模型支持機器學習(深度學習)、推理、推論能力和機器的大數據處理能力(例如,電腦和/或運算伺服器)。這些AI系統和模型經常被集中訓練以執行一個或多個特定任務,例如自然語言處理、圖像識別、計劃、決策等。例如,這些AI系統和模型的子集合包括人工神經網路模型。在許多情況下,訓練人工神經網路模型可能需要數千小時的訓練週期和幾兆位元組的訓練資料,以在使用前微調該模型的相關神經網路演算法。
然而,一旦訓練完成,可以快速部署神經路模型或演算法,並基於相對較小的資料集合來進行推論以完成特定任務(例如,從語音輸入資料識
別語音等),其中,所述相對較小的資料集合係小於在訓練週期中使用的較大訓練資料集合。由基於較小的資料集合的神經網路模型或演算法做出的推斷可以是有關於神經網路模型計算出的正確答案作為的預測或是有關於特定情況的指示。
儘管如此,雖然實現一個或多個神經網路演算法的神經網路模型可能不需要相同數量的運算資源,如在訓練階段中的需求,但在該領域部署神經網路模型仍然需要顯著的電路面積、能量以及運算能力以對資料進行分類並推斷或預測結果。例如,加權和計算通常用於模式匹配和機器學習應用,包括神經網路應用。在加權和計算中,一積體電路可以用於將一組輸入(xi)乘以一組權重(wi),並將每個乘法運算的結果相加以計算最終結果(z)。然而,機器學習應用的典型加權和計算包括數百或數千個權重,這使得加權和計算以傳統數位電路來計算的計算成本太高。具體地,從數位記憶體存取數百或數千個權重需要大量的運算時間(即,增加等待時間)和顯著的能量。
因此,計算神經網路模型等的加權和計算所需的傳統數位電路往往很大,以容納儲存神經網路模型所需的數百萬個權重所需的大量數位記憶體電路。由於電路的大尺寸,因此需要更多的能量來實現大量傳統電腦和電路的計算能力。
另外,這些用於實現人工智慧模型的傳統計算機和電路,即神經網路模型可以適用於遠端運算處理,例如分散式運算系統(例如,雲端),或者使用許多現場的運算伺服器等。然而,當這些遠端人工智慧處理系統用於遠端、邊緣計算裝置或現場設備的計算推論時,延遲問題是顯而易見的。也就是說,當這些傳統的遠端系統試圖實現用於產生要在遠端現場設備中使用的推論
的神經網路模型時,從遠端現場設備接收輸入資料將存在不可避免的延遲,因為輸入資料必須經常通過具有變動頻寬的網路傳輸,且由該遠端計算系統產生的推斷必須經由相同或類似的網路傳送回遠端現場設備。另外,這些傳統電路通常不能管理計算負載(例如,有限的儲存和/或有限的計算),並且可能經常依賴於諸如雲端的遠端計算系統來執行計算密集型計算並儲存計算資料(例如,原始輸入和輸出)。因此,對於連續的操作,需要對遠端計算系統(例如,雲)進行恆定和/或連續存取(例如,24×7存取),這可能由於成本,基礎設施限制而在許多應用中不適合(例如:有限頻寬,低等級通訊系統等)等。
在現場實現AI處理系統(例如,在遠端現場設備處)可以是解決一些延遲問題的建議解決方案。然而,嘗試在邊緣設備(例如,遠端現場設備)上實現這些傳統AI電腦和系統可能導致具有許多電路的龐大系統,且如上所述,會由於用於處理資料並產生推論的運算系統所需要的複雜架構而消耗大量能量。因此,需要對現有技術進行進一步的改良。
因此,需要一種可部署系統,其用於在現場本地實現人工智慧模型(例如,本地AI),並且優選地用於邊緣設備,其不會導致大型、佔位(邊緣)的設備,這可以減少延遲,並且具有必要的計算能力,可以即時或基本上即時地進行預測或推論,同時還具有高能效。
本申請的下述實施例提供了這樣的先進和改進的積體電路和實現技術,其能夠解決傳統系統和積體電路架構的缺陷,以實現AI和機器學習。
在一個實施例中,一種用於積體電路內的自動化資料傳遞和自動資料處理的系統,包括:一智慧處理積體電路,其包括至少一智慧處理管線,
其中,該至少一智慧處理管線包括:儲存輸入資料的一主資料緩衝器;多個不同的智慧處理區塊,其中每個不同的智慧處理區塊包括一運算電路和一本地資料緩衝器;一基於令牌的管理模組,該基於令牌的管理模組實現:一第一基於令牌的控制資料結構;一第二基於令牌的控制資料結構,其中該第一基於令牌的控制資料結構和該第二令牌控制資料協同操作以藉由該至少一智慧處理管線控制該輸入資料的一自動資料流和/或該輸入資料的一自動化處理。
在一個實施例中,該基於令牌的管理模組包括:用於提交令牌至該基於令牌的管理模組的一令牌介面,其中響應於該令牌介面的一提交,該基於令牌的管理模組基於一個或多個令牌參數以及該第一基於令牌的控制資料結構的一個或多個管理配置更新一內部狀態。
在一個實施例中,該基於令牌的管理模組包括:一通知介面,用於指示該積體電路的一個或多個處理組件與該第二基於令牌的控制資料結構相關聯的一個或多個令牌計數值滿足一程序觸發條件。
在一個實施例中,一第一令牌類型包括一資料流控制令牌,其被提交給該基於令牌的管理模組並且做為用於更新該基於令牌的管理模組的內部狀態的訊號。
在一個實施例中,一第二令牌類型包括一中斷令牌,其被提交給該些不同的智慧處理區塊中的一個,使得一個不同的智慧處理區塊的處理電路接受一中斷,該中斷用於停止或暫停該一個不同的智慧處理區塊的處理,並處理與該中斷令牌相關的有效負載或工作處理命令。
在一個實施例中,一種在積體電路內實現一令牌控制處理的方法包括在一積體電路的主資料緩衝器中,從一個或多個輸入資料源收集輸入資
料;實現一資料處理管線,其中該資料處理管線至少由一個或多個矩陣乘法加速器定義;一個或多個本地資料緩衝器;藉由該積體電路實現一個或多個資料流計分模組,其中實現一個或多個資料流計分模組包括:(i)實現追蹤該積體電路內的一個或多個令牌的令牌計數表;(ii)實現一程序控制表,該程序控制表基於該一個或多個令牌監視一個或多個程序執行條件;基於該令牌計數表的實現和該程序控制表的實現,沿著該資料處理管線自動化傳遞來自該主資料緩衝器的輸入資料的一個或多個部分。
在一個實施例中,該方法包括基於該程序控制表的狀態在該資料處理管線的該一個或多個矩陣乘法加速器中的一個或多個處自動化執行一個或多個程序或一個或多個應用程序。
在一個實施例中,該令牌計數表:係根據多個不同的令牌標識符編入索引;係包括該些不同的令牌標識符中的每一個的條目,其儲存具有該些不同的令牌標識符之一的一個不同的令牌的運行計數;且每個條目儲存軟體可程式化配置位元,其用於設置相應的計數器觸發條件。
在一個實施例中,該令牌計數表配置有至少一個指標,該指標在基於該令牌控制表內的一個不同的令牌的計數值滿足一計數器觸發條件時指向該程序控制表中的條目。
在一個實施例中,該程序控制表:係根據多個不同的程序的多個不同的程序標識符編入索引;該程序表的每個條目包括一計數器,該計數器儲存與一個或多個不同的令牌標識符相關聯的一個或多個不同的令牌的計數器值;並且該程序表的每個條目儲存一軟體可程式化配置位元,其基於一個或多個不同的令牌的計數器值來設置一程序執行條件。
在一個實施例中,該方法包括為該一個或多個本地資料緩衝器中的每一個和該一個或多個矩陣乘法加速器中的每一個產生狀態資料,其中該狀態資料指示該一個或多個本地資料緩衝器中的每一個和該一個或多個矩陣乘法加速器中的每一個的使用率的等級。
在一個實施例中,該方法包括由該積體電路基於該一個或多個本地資料緩衝器中的每一個以及該一個或多個矩陣乘法加速器中的每一個的狀態資料來產生一個或多個令牌。
在一個實施例中,該方法包括追蹤由該積體電路產生的一個或多個令牌;並根據該追蹤更新該令牌計數表的內部狀態。
在一個實施例中,該方法包括追蹤由該積體電路產生的一個或多個令牌;基於該追蹤更新該程序控制表的內部狀態。
在一個實施例中,當對該令牌計數表的令牌計數的更新導致一令牌計數器條件從不滿足轉變為滿足時,存取該程序控製表中的對應的條目且增加或減少該程序控制表的計數器值的計數。
在一個實施例中,當對該程序表條目計數器值的更新導致該程序觸發條件從不滿足轉變為滿足時,更新通知界面以反映轉變。
在一個實施例中,該方法包括識別至少一個本地資料緩衝器的狀態;基於該識別的狀態產生一個或多個令牌;並且基於該一個或多個令牌觸發對該積體電路的資料處理管線內的上游組件或下游組件的通知。
在一個實施例中,該方法包括響應於該通知,自動將該輸入資料的一個或多個部分加載到該至少一個本地資料緩衝器,或者自動加載該至少一
個本地資料緩衝器的輸入資料的一個或多個部分至該一個或多個矩陣乘法加速器之一。
在一個實施例中,該方法包括多個計算區塊,其中該些計算區塊中的每一個包括:該一個或多個矩陣乘法加速器中的一個矩陣乘法加速器,一計算處理電路;以及該一個或多個資料流計分模組的一個資料流計分模組;該一個或多個本地資料緩衝器的一個本地資料緩衝器,其中該些計算區塊一起定義一智慧處理陣列;一種網路單晶片系統,其包括:多個網路單晶片路由器,在該些計算區塊中的每一個之間建立一通訊網路,其中該等網路單晶片路由器與該些計算區塊中的至少一個以及該些網路單晶片路由器中的一個不同的網路單晶片路由器可操作地通訊連接,以及從該等計算區塊遠端配置的主緩衝器,其中該主緩衝器儲存原始輸入資料和/或從一上游資料流或上游設備接收的資料。
100:智慧處理積體電路
105:智慧處理陣列
110:智慧處理單元
111:矩陣乘法加速器
112:計算機處理電路
114:資料流計分模組
116:單指令流多資料流單元
118:本地緩衝器
120:網路單晶片系統
125:網路單晶片路由器
130:積體電路控制器電路
140:區塊扇區控制器電路
150:序列連接匯流排
S210、S220、S230、S240、S250、S310、S312、S314、S316、S318、S320、S330、S340:步驟
圖1-1A示出了根據本申請的一個或多個實施例的智慧積體電路100的示意圖;圖2示出了根據本申請的一個或多個實施例的使用一積體電路的資料處理方法;圖3示出了根據本申請的一個或多個實施例的利用一積體電路的自動化資料流和自動化處理的方法;圖4示出了根據本申請的一個或多個實施例的利用一積體電路實現的第一基於令牌的控制資料結構的示意圖;
圖5示出了根據本申請的一個或多個實施例的利用一積體電路實現的第二基於令牌的控制資料結構的示意圖;圖6示出了根據本申請的一個或多個實施例的利用一積體電路實現的與第二基於令牌的控制資料結構相互作用的第一基於令牌的控制資料結構的示意圖。
以下對本申請的優選實施例的描述並非旨在將本發明限制於這些優選實施例,而是使本技術領域之通常知識者能夠製造和使用這些發明。
1.智慧處理概述
本申請的實施例提供了一種靈活且可重新編程的系統,其可被編程以適應各種計算密集型應用程序或程序,其具有不同的複雜性和大小。雖然根據本申請的一個或多個實施例的積體電路架構的實體配置可以保持相同或基本相同,但是架構內的不同處理元件可以被程式化來處理多個應用程序或單個應用程序的一個或多個部分。
此外,在本申請的一個或多個實施例中實現的儲存設備的實現和特定佈置提供了超過現有技術的積體電路的若干技術優勢,包括減少處理資料密集的應用程序或程序所需的記憶體或儲存裝置的需求。例如,在一個實施例中,可以提供一主(大)緩衝器以接收輸入資料(例如,來自上游層或資料源的原始輸入資料或資料),並且多個不同的本地緩衝器中的每一個可以與一計算元件(例如,矩陣乘法加速器)111一起配置。在這樣的實施例中,每個本地緩衝器可以佈置在計算元件附近或緊鄰計算元件,以便快速存取,並因此有效地處理來自主緩衝器的輸入資料。
另外,這樣的佈置可以允許沿著一資料處理管線的資料的非同步處理,從而使得能夠能沿著管線的不同階段同時處理資料的多個區段(segment),因此可以顯著減少資料的複製的要求。
另外,本申請的一個或多個實施例可以用於實現一令牌驅動(token-driven)的資料處理系統,其中可以不需要一中央資料流控制。
具體地,在一個或多個實施例中,本申請的積體電路可以包括可以使用令牌觸發微處理器(有時稱為“奈米處理器”)程序和/或應用程序的架構。雖然在本文描述的許多實施例中,該令牌可以用於自動化觸發程序或應用程序的執行和/或實現,但是在不同的實現中,令牌可以用於觸發其他單元。在一些例子,其包括使用該令牌來觸發有限狀態機、觸發封包或工作佇列項目的釋放、觸發另一令牌的產生等。在若干實施例中描述的基於令牌的管理模組(在本文中有時稱為資料流計分模組),其用於利用該積體電路自動化觸發任何類型和/或任何數量的功能/操作,可以有無限的應用。
在本申請的優選實施例中,該積體電路架構可以包括一網路單晶片系統,其使得能夠在該積體電路的不同組件之間通訊和/或傳遞該些令牌。然而,應該注意的是,可以使用任何合適的令牌通訊規範和/或連接器,包括但不限於序列通訊匯流排等。基於令牌的積體電路架構的一些實施例中的內部識別的限制包括令牌和令牌表示的事件或請求之間的排序和/或等待時間的限制。例如,在本申請的一個實施例中,可以不釋出和/或產生令牌(不考慮一連接器),直到一相關聯的觸發事件已完成(例如,清空本地資料緩衝器、由一MMA或類似於輸入資料的計算和/或任何合適的事件)。在又一個實施例中,如果提前釋出令牌不會導致違反排序限制,則可以在相關聯的觸發事件之前產生和/或釋出
令牌。因此,在本申請的若干實施例中,應當注意的是,可以以任何合適的方式部署該些令牌,以實現藉由一積體電路中的資料的資料流的基於令牌的控制和/或資料的處理。
另外,這裡描述的基於令牌的管理模組通常可以用於藉由追蹤該些令牌和該些令牌觸發條件等來啟用一基於令牌的控制。該基於令牌的管理模組可以具有可配置的限制,使得觸發還可以取決於一本地單元或電路的狀態,不僅係基於識別或接收的該些令牌。也就是說,在本申請的若干實施例中,可以基於該些令牌的釋出或產生來管理資料流、資料處理、一個或多個操作/功能等,應當注意的是,簡單地判定和/或識別該積體電路的組件的狀態和/或識別該積體電路內的處理或操作的狀態可以做為一觸發事件,用於使其他操作、功能、處理或資料流自動化。例如,一個或多個工作佇列的該利用率(例如,深度)和/或容量的狀態可以作為一觸發事件。這些實施例的技術益處是一操作可以僅在需要的計算資源(例如,具有一個或多個工作佇列的空間)可用時才運行。因此,本申請的實施例可以提供如何配置觸發自動化操作、功能或處理等的事件和/或相關設定的靈活性,並因此允許產生使用更多資源或有效使用資源的複雜程序或應用程序,其藉由減少為了執行某些動作而需要產生的事件的數量來提高本文描述的一個或多個系統的操作效率。
2.智慧處理計算架構
如圖1-1A所示,智慧處理計算架構100(或者在本文中可選地稱為智慧處理積體電路100),用於處理計算密集型程序和/或應用程序(例如,機器學習應用程序、神經網路等),其包括一智慧處理陣列105,該智慧處理陣列105包括多個智慧(計算)處理(區塊)單元110,並包括多個網路單晶片路由
器125的網路單晶片系統(network on chip system)120、一積體電路控制器電路130、區塊扇區控制器電路(tile sector controller circuit)140和一序列連接匯流排150。優選地,該些智慧處理單元110中的每一個包括一矩陣乘法加速器111(這裡也可以稱為加速器電路)、計算機處理電路(例如,微處理器、奈米處理器等)112、資料流計分(基於令牌的管理)模組(flow scoreboard module)114、單指令流多資料流(Single Instruction Multiple Data,SIMD)單元116(例如,串流演算邏輯單元等)以及本地緩衝器(例如,靜態隨機存取記憶體(SRAM)等)118。另外,在一個優選實施例中,130、140和150中的每一個可包括一計算機處理電路112、一資料流計分模組114、一SALU 116和一本地緩衝器118。在一個或多個實施例中,該本地資料緩衝器118在本文中有時可稱為一系統記憶體(on-tile memory)或一系統緩衝器(on-tile buffer),其指示該本地資料緩衝器118可被佈置在一智慧處理區塊110內並直接與該智慧處理區塊110內的多種或一個或多個電路、組件和/或模組通訊。圖1A包括該智慧處理計算架構100的進一步詳細實施例,並且包括用於與該智慧處理陣列105連接的附加外圍連接器。例如,測試結構(test structures)、監視器(monitors)、類比探測器(analog probes)和/或任何合適的外圍設備可以沿該智慧計算架構100的智慧處理陣列105的外圍連接或佈置。
雖然在一個或多個優選實施例中,一智慧處理單元110可以包括一矩陣乘法加速器111、一計算機處理電路112、一資料流計分模組114、一SIMD單元116和一本地緩衝器118,但應注意的是,一智慧處理單元110可以包括電路和模組的任何合適的組合,因此,可以排除一個或多個上述電路和模組和/或可以包括前述電路和模組的任何組合,而不會脫離本申請中所說明的本發明的範
圍。例如,在一些實施例中,一智慧處理單元110可包括一資料流計分模組114和一本地緩衝器118(SRAM)或由其組成,而無需運算電路等(例如,計算機處理電路112)。在另一示例中,一智慧處理單元110可包括一資料流計分模組114、一本地緩衝器118(SRAM)和一外接介面(例如,USB、PCIe、HDMI、MIPI-CSI、I2C、乙太網、藍芽和/或任何合適的外接介面組件)或由其組成。
另外或替代地,雖然架構100內的處理可包括類比處理組件等,但應注意的是,架構100的實施例還可使用任何合適的電路實現數位處理,包括但不限於,嵌入式現場可程式化邏輯閘陣列(embedded Field Programmable Gate Arrays,eFPGA),脈動陣列(Systolic arrays),浮點運算器(floating point units)和/或類似物。
該智慧處理陣列105(智慧加速器)優選地包括該些不同的智慧處理單元110,其可以用於協同工作以執行計算密集型應用程序等。在一些實施例中,該智慧處理陣列105可以用於定義一個或多個智慧處理管線,其能夠將來自一上游設備或處理的原始輸入資料和/或資料處理為一最終輸出狀態。在這樣的實施例中,該智慧處理管線的每個階段(例如,藉由一個或多個不同的智慧處理單元110等)可以由一個不同的智慧處理單元110定義,該不同的智慧處理單元110其可以被專門編程為執行應用程序或者程序的一部分。該些智慧處理陣列105的每個不同的智慧處理單元110優選地用於獨立於該智慧處理陣列105內的其他或混和智慧處理單元110進行操作或計算。因此,因為一智慧處理管線的每個階段(stage)可以配置有其自己的處理區段(例如,智慧處理單元110),所以每個智慧處理管線可以用於沿著該管線內的每個階段獨立地處理輸入資料,
從而在處理輸入中實現相當大的效率。也就是說,可以基於各個智慧處理單元110的獨立處理和/或計算來實現資料或原始輸入資料的非同步處理。
另外或替代地,該智慧處理陣列105內定義的一個或多個智慧處理管線中的每一個可以靈活地配置為使得能夠執行單個陣列105內的不同的(非獨立)應用程序或程序,或者靈活地配置為能夠啟用沿著該陣列105內的各種智慧處理單元110來執行單個應用程序或單個程序的不同的部分。例如,可以沿著智慧處理陣列105的第一部分來編程一第一神經網路應用程序,該第一部分包括智慧處理單元110的第一集合,並且一第二神經網路應用程序可以沿著智慧處理陣列105的第二部分編程,該第二部份包括智慧處理單元110的第二個不同的集合。在第二示例中,單個計算密集型應用程序(例如,神經網路等)可以被劃分為多個子應用程序(或多個程序),並且每個部分被編程到一陣列105內的不同智慧處理單元110。另外或替代地,在該第二示例中,一應用程序的多個部分或多個子應用程序可被編程到相同的智慧處理單元110。在又一個示例中,多個智慧處理單元110可以被集合以執行單個應用程序或單個程序的一個或多個子部分。也就是說,單一的智慧處理單元110可以用於僅實現一應用程序或一程序的一部分,因此,整個應用程序或程序由多個智慧處理單元110負責,且每個智慧處理單元110僅處理整個應用程序或程序的一部分。應當注意的是,該積體電路陣列105和/或每個智慧處理單元100可以用於並行地(即,同時地),同時地(即,在一共同時間段內,幾乎相同的時間內處理等),或同步地(即,獨立於其他資料流和/或處理單元110進行處理)計算該些不同的應用程序和/或單個應用程序或單個程序的該些不同的分割。另外,應當注意的是,任何合適的和/
或類型的應用程序或程序可以沿著該智慧處理陣列105劃分,包括可以被劃分為具有可作為該些令牌的屬性的多個操作階段的應用程序和/或程序。
該些智慧處理(區塊)單元110優選地用於針對從一上游設備或一上游層(例如一緩衝器或另一智慧處理單元110)接收的一些輸入資料執行一應用程序或一程序。如上所述,該些智慧處理單元110中的每一個包括一矩陣乘法加速器(例如,一資料處理電路等)111、一計算機處理電路(例如,微處理器)112、資料流計分模組114、一SIMD單元116和本地資料緩衝器118,其使得該些智慧處理單元110中的每一個能夠完成和/或完成輸入資料的處理以輸出資料和/或執行一應用程序或程序。
該些智慧處理單元110中的每一個優選地用於從其本地緩衝器118讀取和/或存取輸入資料,針對該矩陣乘法加速器111處的輸入資料進行計算並輸出計算的結果(輸出資料),將輸入資料反饋回其本地緩衝器118(或可能返回到下游組件或處理區段的本地緩衝器)。
在本申請的另外和/或替代實施例中,該智慧陣列的該些智慧處理單元110中的一個或多個不同的子集合(即,兩個或更多個)可以群集和/或聚集成相較於該整個架構100更小的晶片(例如,小晶片(Chiplet),系統封裝(a system-in-a-package,SIP),3D封裝等)。在這樣的實施例中,小晶片可以在整個架構100內組成,以形成完整和/或獨立的晶片。這些實施例能夠實現增進定制架構的程度的功效。
在更進一步的實施例中,多個積體電路架構100可以在一多晶片架構中組合和/或封裝在一起。在這樣的實施例中,多個架構100可以組成為一系
統或電路板(面板)級別。該些晶片之間的連接可以使用任何合適的連接器技術或介面來進行,包括PCIe或專門創建的橋接介面。
該資料流計分模組114優選地由一個或多個計算處理電路和資料流計分子模組的組合來實現。另外,該資料流計分模組114可以包括多個介面,其用於實現流經該一個或多個智慧處理管線的資料流的資料流控制,以及對由該智慧處理陣列150的該一個或多個智慧處理管線負責的程序或應用程序的執行的控制。
在優選實施例中,該資料流計分模組114可以包括一配置介面、一令牌介面和一通知介面。該資料流計分模組114的配置介面可用於讀取和寫入該資料流計分模組114的一內部狀態,例如用於編程多個觸發條件。該資料流計分模組114的令牌介面可以使該智慧積體電路100能夠將多個令牌提交給該資料流計分板114。回應於經由該令牌介面提交的一令牌,該資料流計分板114可以用於更新其內部狀態,並且在必要時,根據多個令牌參數值(例如,令牌計數值等,如以下方法300所述)以及該資料流計分板114的配置來更新該通知介面。該資料流計分板的通知介面可以由該資料流計分模組114實現,以向該智慧積體電路110指示已經滿足用於執行一個或多個程序的一個或多個條件(或先決條件)。應當注意的是,該資料流計分模組114的通知介面可以用於觸發該智慧積體電路110內的任何數量的操作,例如,沒有一明確的程序執行的資料傳輸。
應當注意的是,該配置介面、該令牌介面和/或通知介面可以以任何合適的方式實現,包括由一個或多個處理電路(例如微處理器)執行的模組組合。
該網路單晶片系統120,其包括多個網路單晶片路由器125,其用於在該智慧積體電路100的不同組件之間建立通訊網路。在一個實施例中,每個晶片路由器125可以包括專用的輸入和輸出鏈路,用於沿著該架構100並且具體地,在該智慧處理陣列105內,沿北,南,東和西方向接收和發送通訊。在一些實施例中,該網路單晶片系統120使每個不同的智慧處理單元110能夠在它們之間傳遞資料,使得當一個智慧處理單元110完成處理輸入資料以產生一輸出時,這一個智慧處理單元110可以將該輸出通過網路單晶片系統的一個或多個網路路由器傳遞到另一個智慧處理單元和/或允許另一個智慧處理單元110獲取該輸出資料。作為一個示例,該些數位令牌和/或資料封包可以被沿著網路單晶片系統120的該些網路路由器乘載。
該積體電路控制器130優選地包括晶片級控制邏輯,其包括引導邏輯(boot logic)、保全功能(security features)、時脈邏輯(elocking logic)等。
該區塊扇區控制器電路140優選地包括該智慧處理計算架構100的一高壓部分或電路,其致能該矩陣乘法加速器111內的可重編程非揮發性記憶體。
該序列連接匯流排150優選地包括通用序列匯流排(USB)埠和一快捷外設互聯標準(PCI express)介面和/或任何適於高速傳輸的介面。在優選實施例中,原始輸入資料(例如,原始圖像資料等)和/或處理過的輸入資料(例如,來自上游設備、上游層等)可以在序列連接匯流排150處被接收並且藉由一首要的或主要的緩衝組件進入該系統。另外或替代地,在該序列連接匯流排150處接收的輸入資料可以經由該網路單晶片系統120傳遞到該智慧處理積體電路100的主要緩衝器中或者直接傳遞到一智慧處理單元100的本地緩衝器118
中。另外或替代地,該主要緩衝器,在本文中有時稱為主緩衝器,也可稱為區塊外(off-tile)(單元外)記憶體或緩衝器。特別地,由於與該架構100一起操作的主緩衝器可以遠離智慧處理區塊110配置和離開智慧處理區塊110,因此可以將其視為區塊外組件。
附加地或替代地,任何合適的外接連接可用於實現一智慧處理陣列105和/或整個該智慧積體電路100的資料輸入或輸出。例如,任何合適的外圍設備包括但不限於一成像設備(例如,相機)、一主機系統(例如,系統單晶片)或工作站、另一智慧積體電路和/或類似物。
因此,應當注意的是,包括多個令牌的任何類型或種類的資料可以沿著該序列連接匯流排150或其他合適的外接連接/介面傳遞。例如,來自該智慧積體電路100的資料(例如,計算結果或其他輸出等)可以經由該序列連接匯流排150或外接連接發送到另一個設備或系統。因此,當以某種方式可操作地連接或接合時,如本文的一個或多個實施例中所述的資料流控制可以從該智慧積體電路100擴展到其他設備。也就是說,在一些實施例中,可以在多個智慧積體電路100之間或者在設備和主機之間啟用基於令牌的資料流控制。
3.智慧處理方法
如圖2所示,一方法200由一智慧處理積體電路(例如,電路100)自動化和智能地處理資料,其包括接收輸入資料S210,將輸入資料加載到一智慧處理區塊S220,對輸入資料執行計算S230,基於狀態資料產生多個令牌S240,並提供一最終輸出S250。
S210包括接收輸入資料,用於從一個或多個輸入源收集輸入資料。在S210中收集的輸入資料可以包括任何類型或種類的資料,包括圖像資料、
音頻資料、任何合適的感測器資料(例如,溫度感測器資料,壓力感測器資料,近接感測器資料,紅外線感測器資料,動作感測器資料等。)等。在一優選實施例中,S210可以用於從操作一個或多個圖像擷取設備或圖像擷取感測器(例如,靜止圖像或攝影機)的設備收集圖像資料。因此,在這樣的優選實施例中,S210可以用於從一個或多個圖像擷取設備或圖像擷取感測器收集或接收連續的圖像資料流。
另外或替代地,S210可以用於使用任何合適的輸入端口並且優選地,以一高速通訊匯流排來收集該輸入資料。例如,S210可以用於使用一通用序列匯流排(USB)端口來收集該輸入資料。或者,S210可以用於使用一高速序列計算機擴充匯流排來收集輸入圖像資料,例如快捷外設互聯標準(PCIe)等。
另外或替代地,S210可用於從一個或多個上游輸入源收集該輸入資料。該一個或多個上游輸入源可以包括實現方法200的系統(例如,該智慧處理積體電路100)的另一個積體電路層、一外部輸入感測器(例如,相機等)、一開關、一外接設備或電路(例如,外接記憶體等)和/或類似物。
另外或替代地,S210可用於將該輸入資料儲存在一個或多個記憶體儲存設備處。優選地,S210用於將該輸入資料儲存在一系統的主緩衝器或主要緩衝器中,以實現該方法200。該主要緩衝器可以包括一個或多個實體記憶體儲存設備,方法200從該些實體記憶體儲存設備傳遞或加載資料到一個或多個處理元件。
S220,包括將輸入資料加載到一智慧處理管線,用於加載輸入資料至一智慧處理電路等的資料處理管線的一個或多個組件。在優選實施例中,
S220可以用於將輸入資料的負載從一主要輸入資料緩衝器分配到一智慧處理積體電路等的一個或多個輸入資料處理區段(智慧處理區塊)。在這樣的優選實施例中,S220可以用於將輸入資料從該主要輸入資料緩衝器自動加載到一個或多個輸入資料處理區段的一個或多個本地緩衝器。
在優選實施例中,S220可以用於實現一令牌驅動或令牌控制的資料加載,以自動將輸入資料從該主要輸入資料緩衝器加載到該處理區段的一個或多個本地緩衝器。也就是說,在這樣的優選實施例中,在S220中執行的資料加載係基於一令牌的標識、一令牌的接收和/或其他類似情況或事件,所述其他類似情況或事件為觸發從該主要資料緩衝器到一處理區段的本地資料緩衝器的一些數量或部分的資料的傳輸。
在方法200內實現的一個或多個令牌可以包括任何合適的和/或類型的數位令牌,包括但不限於資料流計分/資料流控制令牌、多個中斷令牌、多個計時器+多個令牌,和/或類似物。在優選實施例中,一資料流計分令牌可以被提交給一資料流計分模組並且用作用於更新資料流計分模組的內部狀態的訊號,包括增加與一個或多個令牌計數表和該程序控制表相關聯的一個或多個計數器。
在優選實施例中,可以將一中斷令牌提交給一智慧處理區塊或單元的微處理器或奈米處理器。在這樣的實施例中,該中斷令牌優選地用於使一智慧處理單元的處理電路接受一中斷,該中斷用於停止或暫停一智慧處理單元的處理並且處理與該中斷令牌相關聯的有效負載或工作處理命令。因此,可以根據與一資料流計分令牌不同的令牌產生過程來產生一中斷令牌。例如,可以基於一智慧處理管線等的一個或多個本地組件的狀態來產生一資料流計分令
牌,而可以根據與該智慧處理管線之外的系統,組件和/或類似物相關的環境產生一中斷令牌。
另外或替代地,一種中斷令牌和相關聯的功能指標可以優選地包括在該中斷令牌的有效負載中。在一個示例實施例中,一中斷令牌可以被實現為一尾端指標令牌(tail token),其可以附加到一資料封包或類似物中,其中該封包的資料負載是一程序或應用程序,並且該尾端指標令牌包括使該智慧處理單元或一智慧處理管線的處理區段自動執行該程序或應用程序的中斷令牌。
因此,另一令牌類型可以包括一尾端指標令牌,其可以附加到一資料封包、工作封包和/或合適的封包(如上面部分描述的)並且在優選實施例中,作為同步機制操作。在一些實施例中,一尾端指標令牌可以是讀取尾端指標令牌或寫入尾端指標令牌,其可以分別與一讀取資料流或一寫入資料流相關聯。因此,一旦智慧處理單元執行讀取或寫入,該讀取尾端指標令牌或該寫入尾端指標令牌可作為同步機制而被處理。也就是說,該讀取尾端指標令牌或該寫入尾端指標令牌的處理作為到下游設備或處理的訊號或者到該智慧積體電路的某個組件的訊號,即相應的讀或寫功能成功完成,從而觸發一個或多個下游功能或操作等的自動執行。
應當注意的是,雖然在一些實施例中,一尾端指標令牌可以附加到一資料封包或工作項目,但是在其他實施例中,一令牌可以獨立於一資料封包和/或工作項目而傳輸。
另一種令牌類型或一資料流控制令牌的變化可為一計時器+令牌。也就是說,在一些實施例中,可以修改計時器以包括發布任何類型的令牌。
也就是說,在計時器的期滿或到期事件中,可以由實現方法200和/或方法300的系統自動產生和/或釋出一中斷令牌或一資料流控制令牌等中的一個或多個。
優選地,在S220中用於觸發該資料加載的一個或多個令牌由下游處理區段等產生。在優選實施例中,該智慧處理積體電路的處理區段可以用於識別該處理區段內或與該處理區段相關聯的一個或多個本地緩衝器(或任何記憶體儲存)的狀態,並且基於該一個或多個本地緩衝器的識別狀態,產生由上游傳遞到該主要資料緩衝器或與該主要資料緩衝器相關聯的一處理電路(或控制器)的令牌。產生的令牌通常可以用於指示或識別與該處理區段相關聯的一個或多個本地緩衝器的狀態。因此,與處理區段相關聯的一個或多個本地緩衝器可以具有一個或多個狀態,包括例如加載狀態或卸載狀態或忙碌狀態或非忙碌狀態等。在傳遞到主要資料緩衝器的令牌指示一處理區段的一個或多個本地資料緩衝器處於卸載狀態等的情況下,S220可以用於從該主要資料緩衝器自動傳遞或加載一些輸入資料至與該處理區段相關聯的該一個或多個本地資料緩衝器。或者,如果該令牌指示該一個或多個本地資料緩衝器為忙碌或處於加載狀態,則S220可以用於不將資料傳遞或加載到該一個或多個本地資料緩衝器。
應當注意的是,雖然在優選實施例中,一下游設備可以用於產生並傳遞該些令牌,其中該些令牌觸發從該資料緩衝器到該智慧處理積體電路的該智慧處理管線的一個或多個處理區段的資料加載操作,任何上游,下游或橫向設備(例如,未沿資訊流佈置的令牌產生設備等)可以用於產生一令牌,該令牌使得輸入資料從該主要資料緩衝器加載或從任何上游本地資料緩衝器或處理電路到該智能處理管線的一個或多個下游處理區段。應當注意的是,雖然該智慧處理積體電路通常可以用於將資料從一上游組件加載到一下游組件並且用
於將一令牌從下游設備傳遞到一上游設備,但是逆向加載和逆向令牌傳遞可以由該智慧處理積體電路實現。
另外或替代地,該智慧處理積體電路可以用於沿著一資料處理管線的資料流跳過或忽略一個或多個組件,使得可以沿著該資料處理管線以非順序方式處理輸入資料,或者使得上游傳遞的令牌可以超越該智慧處理積體電路的直接上游組件,到達該資料處理管線中更上游的組件。
另外或替代地,S220可以用於將區段中的輸入資料從該主要資料緩衝器加載到一個或多個處理區段。也就是說,在一些實施例中,S220可以用於將儲存在該主要資料緩衝器中的輸入資料加載分割成多個區段並加載到一處理區段的一個或多個本地資料緩衝器。來自該主要資料緩衝器的輸入資料的分割的區段,在本文中可稱為一輸入資料片段或輸入資料的片段,因為在一些實施例中,僅加載該主要資料緩衝器處的整個輸入資料的一部分或片段,或同時加載輸入資料的語料庫(corpus)的多個片段。
被分割並加載到一本地資料緩衝器的該輸入資料片段的大小可以基於該本地資料緩衝器的儲存容量來決定。也就是說,實現該方法200的系統可以用於將相對大尺寸的輸入數資料分解成更容易被一資料處理管線內的一個或多個電路組件(例如,本地資料緩衝器、一矩陣乘法加速器等)處理(consumed)和/或接收的較小部分或資料封包。在一些實施例中,與一處理區段相關聯的一本地資料緩衝器可以具有比一主要資料緩衝器更小的儲存容量。例如,在一輸入圖像資料等的資料流的情況下,該主要資料緩衝器可以具有足夠的儲存容量來儲存整個輸入圖像資料的資料流,而一本地緩衝器可以僅具有足夠的儲存容量來儲存輸入圖像資料的資料流的一部分。在這樣的實施例中,S220可以用於
識別一處理區段的本地資料緩衝器的儲存容量,並且將來自該緩衝器的輸入資料片段分割為與該本地資料緩衝器的儲存容量相等或更小的大小。
另外或替代地,從該主要資料緩衝器加載到一處理區段的一個或多個本地資料緩衝器的輸入資料片段的大小可以基於一預定值或用於定義輸入資料的該片段的最大尺寸或最小尺寸的一動態計算值來決定。
另外或替代地,在一些實施例中,操作該主要資料緩衝器的處理電路可以被具體地編程為基於預定數量的令牌的接收或識別或基於識別一個或多個預定事件來將資料從該主要資料緩衝器操作或傳遞到一目的地。在這樣的實施例中,一個或多個令牌可以包括標識令牌來源的源資料,並且另外地或者可選地,包括標識用於從該主要資料緩衝器發送該令牌的目的地和目的地的狀態資料的目的地資料。該狀態資料可以關於或包括目的地處的計算資源的可用性或不可用性和/或容量。
S230包括處理該輸入資料,用於在一個或多個處理區段(例如,智慧處理區塊)處理該輸入資料。在優選實施例中,S230可以用於從專門耦合到一智慧處理區塊的計算元件或與一智慧處理區塊的計算元件相關聯的本地緩衝器存取該輸入資料或該輸入資料片段。優選地,該智慧處理區塊包括一矩陣乘法加速器或任何合適的運算電路等,用於處理來自該智慧處理區塊的本地緩衝器的輸入資料存取。在這樣的實施例中,該處理區段可以用於針對一個或多個權重或係數矩陣(神經網路演算法等)計算該輸入資料,並將計算結果輸出到該智慧處理區塊的本地緩衝器中。
在一些實施例中,實現該方法200的積體電路的智慧處理管線包括多個智慧處理區段或區塊。優選地,可以將不同的程序映射到該些智慧處理
區塊中的每一個。例如,諸如神經網路應用之類的計算密集型程序等可以被分成不同的程序(例如,程序A+程序B+程序C=神經網路應用程序),該計算密集型程序的每個不同的部分程序可沿該智慧處理管線映射到不同的智慧處理區塊,例如美國臨時申請案No.62/607,203中所描述的,該臨時申請案藉由引用將其整體併入本文。優選地,每個不同的程序可以按順序分配給該智慧處理管線內的該些智慧處理區塊。也就是說,當配置該智慧處理管線時,通常首先對輸入資料進行操作的不同部分程序可以被分配給該第一智慧處理區塊,其中該些智慧處理區塊以線性,連續順序等方式排列。因此,在一些實施例中,可以以線性方式(或以任何合適的方式)佈置實現不同程序的多個不同的智慧處理區塊,以將來自該主要資料緩衝器的輸入資料處理為一最終輸出,從而定義智慧處理管線(例如,主要資料緩衝器+多個智慧處理區塊等)。
另外或替代地,可以將多個程序或多個應用程序映射到單個智慧處理區塊,使得多個不同的計算密集型程序或應用程序可以在相同的智慧處理區塊上運行。
因此,一旦從該本地資料緩衝器存取該輸入資料並將其傳遞到該智慧處理區塊的計算元件,S230就可以用於根據映射到該計算元件的程序處理輸入資料。與該輸入資料的處理和/或將該輸入資料傳遞到該智慧處理區塊的計算元件的同時,可以產生用於每個本地緩衝器和計算元件的狀態資料。如上所述,該狀態資料優選地有關於忙碌狀態,佔用狀態,容量狀態,使用狀態(例如,0%,50%,100%利用率)中的一個或多個,和/或一智慧處理區塊的一個或多個計算資源的活動狀態。因此,該狀態資料可以包括該本地緩衝器的狀態資料,該計算元件(例如,矩陣乘法加速器)的狀態資料,該積體電路的任何
組件,和/或該智慧處理區塊的任何操作元件(和/或該智慧處理管線中的任何計算資源)。
S240,包括基於狀態資料產生多個令牌,用於識別一智慧處理區塊的該一個或多個計算資源的狀態資料,並基於其產生一個或多個令牌。如上所述,該一個或多個產生的令牌可以用於促進該智慧處理管線內的多個自動資料移動/儲存和/或輸入資料處理動作。在一些實施例中,該些令牌可以由實現200的積體電路的專用令牌產生器電路來產生。另外或替代地,部分或所有令牌可以由一智慧處理管線中的任何計算元件產生。
因此,基於一智慧處理管線的一個或多個計算資源被檢測或識別的狀態,S240可以用於產生可以被傳遞到上游設備或下游設備以觸發上游設備或下游設備的操作的多個令牌。也就是說,在S240中產生的一個或多個令牌可以用於通知該智慧處理管線中有關於中間計算資源的狀態的任何上游設備或下游設備。例如,一旦一智慧處理區塊的計算元件從其本地緩衝器存取該輸入資料,就可以產生關於該本地資料緩衝器的狀態(例如,本地緩衝器尚有容量或是空的)的第一令牌和關於該計算元件的狀態(例如,該計算元件/MMA已被佔用或使用)的第二令牌。在這樣的示例中,產生的第一令牌可以指示該本地緩衝器現在是空的並且準備好從不同的智慧處理區塊的一個或多個另一個本地緩衝器(例如,輸出緩衝器)和/或從該主要資料緩衝器接收附加的輸入資料。因此,該第一令牌可以被傳遞到一上游計算資源,例如一輸出緩衝器或該主要資料緩衝器。進一步地,關於該示例,該第二令牌可以指示該智慧處理區塊的計算元件現在正在主動處理(例如,忙碌狀態、利用狀態等)輸入資料,因此,該令
牌可以包括指示該計算元件為不可用或為忙碌的該狀態資料,因此計算元件不能從其本地資料緩衝器等接受額外的工作。
在又一示例中,一旦一智慧處理區塊的計算元件完成輸入資料的處理並將處理後的資料輸出到下游本地緩衝器或其他記憶體儲存設備,就可以產生標識計算元件目前為可用的當前狀態的一第一令牌,且該令牌可以被傳遞到該智慧處理區塊的本地緩衝器,其可以觸發該本地緩衝器以自動地將儲存在其上的任何輸入資料傳遞到該計算元件以進行處理。一旦清空了該智慧處理區塊的本地輸入資料緩衝器,就可以產生一第二令牌(與該第一令牌同步或同時),其用於指示該本地緩衝器被清空並且該令牌被傳遞到一上游設備(例如,另一個本地緩衝器或主要資料緩衝器),用於指示該本地緩衝器的狀態並觸發將輸入資料傳遞到該本地緩衝器的自動傳遞。另外,可以為了用於接收該計算元件的輸出的下游智慧處理區塊的下游本地緩衝器(或類似物)產生一第三令牌。該第三令牌可以被傳遞到與該下游本地緩衝器相關聯的下游計算元件,其指示該下游本地緩衝器具有準備好傳遞到該下游計算元件以進行處理的輸入資料。
因此,無論何時調整或改變一智慧處理區塊的計算資源的狀態,S240可以用於自動產生標識計算資源的當前狀態的一令牌,並且相應地,將該令牌傳遞給另一個相關的計算資源,可以操作以某種方式對接收該令牌作出反應。
應當理解的是,該令牌可以被傳遞到該智慧處理管線內和/或與該智慧處理管線相關聯的任何合適的令牌管理或計算資源和/或由其產生,該智慧處理管線包括一中央令牌庫和/或令牌處理電路等。
另外或替代地,S240可以用於僅發布一智慧處理區塊和/或智慧處理管線的一個或多個計算資源的狀態資料,並且基於所發布的狀態資料,一個或多個計算資源可以自動地起作用以將輸入資料和/或輸出資料傳遞到一個或多個下游設備以進行儲存和/或處理。
在一些實施例中,在S250中產生並處理一最終輸出之前,S220至S240可以另外地或替代地以循環(例如,非同步、並行)方式執行多次。
S250,包括提供一最終輸出,其用於藉由該智慧處理管線提供該輸入資料經處理的最終輸出。在一些實施例中,一個或多個最終令牌由該智慧處理管線的一個或多個計算資源產生,指示在該智慧處理管線的每個階段已經處理了所有輸入資料,並且在該應用程序中沒有輸入資料仍然需要處理,S250可以用於將一令牌或其他通知傳遞到一輸出電路以產生一最終輸出和/或讀取電路以讀取一最終輸出。在一些實施例中,該最終輸出可以基於通過該智慧處理管線處理的輸入資料片段的集合所形成。
4.自動化資料流和智慧處理機制(FSB)
如圖3所示,用於配置和實現一自動化資料流控制流程的方法300包括配置一第一令牌控制事件資料結構和一第二令牌控制程序控制資料結構S310,監視令牌要求S320,識別是否滿足多個處理條件S330,並提供一事件通知S340。
方法300通常用於通過基於事件的發生和/或基於通過計算與該智慧處理積體電路相關聯的資源的一個或多個操作和/或動作所需的令牌來指定一智慧處理積體電路等內的一個或多個處理的先決條件來自動化輸入資料及其相應的儲存的資料流和/或自動化其處理。在一些實施例中,該方法實現該智慧
處理積體電路內的上游,中間和下游設備之間的雙向調節,其使得該上游、中間和/或下游設備的一個或多個組件通過自動執行一個或多個輸入資料傳遞、儲存輸入資料、處理該輸入資料、傳遞從該輸入資料導出的輸出、和/或基於多個令牌的產生和/或接收而彼此相互作用。也就是說,沿著一智慧處理管線的電路組件可操作以與佈置在該電路組件的上游或下游的其他電路組件通訊和/或相互作用。
另外或替代地,方法300使得能夠追蹤或管理在該智慧處理積體電路內的不同計算資源之間發送和/或接收的令牌,以確定何時滿足一計算資源的自動動作的任何先決條件。
因此,該方法300可以用於在一些實施例中實現基於多級令牌的管理結構,其中至少一第一和第二基於令牌的控制結構可以用於自動化實現該方法300的系統和/或晶片架構內的資料流控制。在這樣的實施例中,一第一等級表(first level table)(即,一第一基於令牌的控制資料結構)可以用於追踪和/或監視一個或多個不同的令牌類型,並產生一不同類型的令牌,其為第二等級表(即,第二基於令牌的控制資料結構)處理和/或用於控制由該第二等級表管理的一個或多個程序和/或應用程序的執行。因此,在這樣的實施例中,該第一等級表接收多個令牌並產生多個令牌,第二等級表接收該些令牌並產生執行程序和/或應用程序的命令。
4.1 配置基於令牌的控制資料結構
S310,包括配置一第一基於令牌的資料結構和一第二基於令牌的資料結構,用於建立基於令牌的資料結構,其協同操作以控制系統(例如,積體電路、智慧處理管線等)中的自動化資料流和/或自動化資料處理。該第一和
第二基於令牌的資料結構可以是任何合適的資料結構和/或值儲存結構(例如,一列表、一表格、一允許管理和/或追踪數位令牌的陣列)。優選地,該第一和第二基於令牌的資料結構優選地是用於儲存令牌資料的參考表,所述令牌資料包括令牌值、令牌標識、令牌參數、程序參數和令牌計數值以及可以由該些令牌觸發且滿足的一個或多個條件。第二基於令牌的資料結構可以另外操作以基於其一個或多個令牌計數器和基於令牌的參數或觸發器的計數值來執行一個或多個程序或應用程序。
雖然可以一般地描述可以在方法300或本文描述的其他合適的流程(例如,方法200)內配置和/或實現一第一基於令牌的資料結構和一第二基於令牌的資料結構以相互依賴地操作,應當注意,該第二基於令牌的資料結構可以用於獨立於第一基於令牌的資料結構操作和/或不依賴於該第一基於令牌的資料結構。例如,在一些實施例中,該第二基於令牌的資料結構可以操作以直接從一個或多個令牌源(或令牌產生器)接收令牌,而不是由該第一基於令牌的資料結構產生的令牌。
在優選實施例中,該第一基於令牌的資料結構優選地包括一令牌計數表,其儲存所接收的令牌(例如,資料流計分板或資料流控制令牌)的運行計數。在S310中配置該第一基於令牌的資料結構優選地包括為配置一令牌索引和/或一令牌索引功能(S312),其使得該第一基於令牌的資料結構能夠藉由一令牌識別值或其他類似物對所管理或追蹤的令牌進行索引。該令牌識別值可以包括用於識別和/或區分不同令牌的任何合適的值。例如,令牌識別值可以是字符、符號、數字、空格等的任何組合,包括數字串、字母串、字符和數字的組合等。
另外或替代地,S310可以用於將該第一基於令牌的資料結構配置為包括一令牌計數器功能(S314)(具有一令牌計數器模組等),其使得該第一基於令牌的資料結構能夠計數其所接收的或在實現方法200和/或方法300的系統中實現的不同類型的令牌。也就是說,在一些實施例中,該令牌計數器可以用於計數相同類型的令牌的值(例如,相同的令牌識別值、相同的令牌配置或參數等)。也就是說,該令牌計數器可以用於保持所接收的每種類型或種類的令牌的運行計數。另外或替代地,該令牌計數器可用於計數條件特定令牌的值(例如,正值、負值和/或零)。也就是說,對於與該第一基於令牌的資料結構相關聯的一個或多個特定條件,當所需的令牌計數滿足該特定條件,該令牌計數器可以用於根據令牌計數可能影響或以其他方式滿足的特定條件來保持令牌的運行計數。
另外或替代地,S310可以用於在該第一基於令牌的資料結構內配置一指標和/或一指標功能(S316),其用於指向一第二基於令牌的資料結構中的條目。在優選實施例中,可以配置該第一基於令牌的資料結構內的指標,使得該指標指向一第二基於令牌的資料結構中的一條目,其中一令牌計數器條件是先決條件。也就是說,當滿足或觸發該令牌計數器條件時,該指標用於自動引用該第二基於令牌的資料結構內的程序條目,並且用於使得該第二基於令牌的資料結構的一個或多個值的更新,導致執行與基於令牌的資料結構相關聯的一個或多個程序,和/或獲得與所引用的條目相關聯的資料。
類似地,S310可以用於配置該第二基於令牌的控制資料結構來根據多個令牌標識符等來索引和計數多個令牌。然而,S310優選地配置該第二基於令牌的控制資料結構藉由它們各自的標識符(例如,程序標識符)來索引程
序或任何合適的應用程序或程式碼。該第二基於令牌的控制資料結構優選地是一程序控製表,其可以用於基於多個令牌(多個令牌計數)或任何合適的基於事件的觸發方案來識別可以被控制(例如,啟動/關閉等)的一個或多個程序。因此,在一些實施例中,該第二基於令牌的資料結構可以包括根據其多個程序標識符以及對應的令牌計數值索引的列表或多個程序,以及可以藉由其對應的令牌計數值來滿足或不滿足的對應條件
S310可以附加地或替代地用於為該些第一和第二基於令牌的控制資料結構中的每一個設置條件和對應的令牌計數器參數和/或值(S318)。優選地,S310用於使用軟體可程式化配置位元在該第一和/或第二基於令牌的控制資料結構內設置計數器值。例如,如果該基於令牌的控制資料結構包括一表格,則S310可以用於在表格的條目欄位(entry field)內設置軟體編程的配置位值,該條目欄位指定滿足一計數器觸發條件的計數器值(例如,正,否定或零)。
同樣地,S310可以用於在該第一和第二基於令牌的控制資料結構中的每一個內設置計數器觸發條件。該條件可以設置為任何合適的值。例如,該條件可以設置為任何特定的正值、負值或零。優選地,S310可以使該條件為正值、負值或零,因此如果該計數器值是任何正值、任何負值或零時,則滿足該設定條件。因此,相較於將一特定數值粗略地設置為一觸發條件,S310可以用於粗略地將該條件定義為正值、負值或零;意思是如果檢測到正值或負值而不管其值如何,即可以滿足一觸發條件。例如,如果在該第一資料結構中設置了正值(>0)的觸發條件,則當對應於該條件的令牌計數器值超過零並且為正值時,觸發該條件,並且響應於該條件滿足而進行一些動作。粗略地配置正值、負值或零作為該條件的技術益處是,在混合訊號計算系統中,可以基於電流值
或電流輸出操作和/或執行計算,這些系統可以更容易地產生該些條件,其中可產生一些正電流值、一些負電流值或零電流值作為一令牌或用於構建一令牌(例如,隨時間的電流值的總和以實現正值、負值或零值)。
S310可以用於另外配置具有指標資料和指標功能的該第一基於令牌的控制資料結構(S316),從而使得該第一基於令牌的控制資料結構能夠可控制地與該第二基於令牌的控制資料結構相互作用。在優選實施例中,S310可以用於為由該基於令牌的控制資料結構索引的每個令牌標識符條目設置一指標。該指標可以是任何合適的程式語言物件等,其儲存在記憶體中的第二基於令牌的控制資料結構中的另一值的記憶體位址。
因此,在一些實施例中,當對該第一基於令牌的控制資料結構中的令牌計數值的更新導致滿足相應的令牌計數器條件(即,從不滿足轉變為滿足)時,該第一基於令牌的控制資料結構的指標使得該第二基於令牌的控制資料結構中的對應條目(例如,令牌計數值)被存取,並且該條目的計數增加(或減少)或類似動作。因此,為該第一基於令牌的控制資料結構的每個令牌標識符條目配置的一個或多個指標優選地引用該第二基於令牌的控制資料結構中的位置,從而向該第二基於令牌的控制資料結構指示在該第一基於令牌的控制資料結構中影響一條目值(令牌計數)的條件已被滿足。
S310可以附加地或替代地用於配置一通知介面,該通知介面使得該第一和/或優選地該第二基於令牌的控制資料結構能夠通知和/或提示實現方法300的系統,即通知和/或提示該系統對多個計數器值和/或條件的更新發生於該第一和/或第二基於令牌的資料結構中的任何一個中。因此,該通知介面用於向該系統指示已滿足一個或多個程序的先決條件,以使得能夠執行或終止一個
或多個程序的操作。例如,如果該第二基於令牌的控制資料結構包括控制多個程序等的程序控制表,則當對該程序控制表條目計數器值的更新導致一程序觸發條件從不滿足轉變為滿足時,可以更新該通知介面以反映轉變,並且進一步用於通知對實現該程序控制表的系統的更新。
應當注意的是,儘管該資料流計分模組或該基於令牌的管理模組可以優選地利用至少兩個不同的基於令牌的控制資料結構(即,令牌控制的事件資料結構和令牌控制的程序控制資料結構)來實現,如上所述,在一些實施例中,方法300和/或系統100等可以用於實現單個基於令牌的控制資料結構或表格,其中可以配置有任何或所有上述資料結構條目、索引、觸發條件和/或計數器。也就是說,在一個或多個實施例中,可以實現單級或統一的基於令牌的管理模組或令牌控制的管理資料結構,用於實現該方法300和或該方法200的系統的自動化資料流控制資料和/或處理。在這樣的實施例中,基於該單級令牌的管理模組可以用於實現一預定和/或固定數量的令牌計數器和相關的程序控制觸發條件。因此,在一個實施例中,基於該單級令牌的管理模組可以用於追蹤多個不同的令牌(例如,與不同的令牌標識符相關聯的令牌),用於控制多個不同的程序和/或應用程序的執行。在一個示例中,對於每個不同的令牌標識符,基於該單級令牌的管理模組可以包括用於追蹤不同令牌的令牌計數器的列或行,一行或列係基於該令牌計數器的該計數器值而用於一相關聯的程序觸發條件,且當或如果該計數器值滿足該程序觸發條件,一行或列清楚地識別執行的該程序或該應用程序。
4.2 在系統中實現基於令牌的控制資料結構
S320,包括監視該第一和/或第二基於令牌的控制資料結構中的每一個的令牌和條件,用於追蹤與一個或多個基於令牌的控制資料結構相關聯的多個計算應用或程序的依賴性。在一些實施例中,多個計算應用程序中的每一個可具有變化的條件(或先決條件),用於使每個相應的計算應用程序自動化某些操作、執行或實行。應注意的是,S320可用於追蹤單個或多個計算應用程序的依賴性。另外,S320在系統內追蹤的依賴性可以包括操作、執行、資料移動、資料儲存和/或系統中的任何其他事件或事件中的任何類型的依賴性,其可以是一有條件的動作的先決條件或觸發。
在優選實施例中,在S320中追蹤的依賴性可以與可以響應於檢測到系統內的一個或多個依賴性或事件而自動產生的一個或多個令牌相關聯。因此,監視和/或追蹤依賴性可等於監視由實現方法200和/或方法300的系統產生的一個或多個令牌。
另外或替代地,依賴性的追蹤可以包括計數和/或調整在實現方法200和/或300的系統內觀察到的任何令牌的計數值。即,S320可以用於基於該令牌和/或依賴性追蹤資料更新一第一和/或第二基於令牌的控制資料結構中的計數值。在一些實施例中,基於令牌的控制資料結構的不同計數器的計數值可以向上或向下遞增,這取決於它是一上游或一下游依賴性還是被追蹤的事件。例如,對於一上游依賴性,可以遞減一令牌計數器直到滿足一觸發條件,並且對於下游依賴性,可以遞增另一個令牌計數器直到滿足相關聯的觸發條件。應注意的是,反例可以在一個或多個實施例中實現。
如圖4中的示例所示,一令牌計數表(例如,第一基於令牌的控制資料結構)包括程序A和程序B的多個程序,每個程序具有用於一個或多個操
作或執行的變化條件。在這樣的示例中,執行程序A的先決條件或條件可以是實現該第一令牌計數表的系統應該接收帶有令牌標識符(token ID)“0”的四(4)個令牌;具有令牌ID為“17”的四(4)個令牌;以及具有令牌ID “18”的兩(2)個令牌。因此,在該示例中,該第一令牌計數表可以用於至少維護令牌計數資料和對應的條件資料,其觸發在該第一令牌計數表內識別的各個程序的一個或多個執行和/或操作。
為實現此目的,對應於令牌ID “0”和“17”的令牌計數表條目被編程為具有負四(-4)的初始計數值,並且當計數值大於或等於“0”,觸發條件配置值指定觸發條件。令牌計數表可以另外包括對應於令牌ID “18”的條目,其被編程為具有負二(-2)的初始計數值,以及當計數值大於或等於“0”的相同觸發條件。可以將所有三個條目的令牌計數表內的程序ID(program ID)欄位設置為程序A的程序ID。
另外,對於程序B的執行和/或操作,可能需要接收具有令牌ID “19”的兩個令牌和具有令牌ID “126”的四個令牌。令牌ID 19的令牌計數表條目可以被編程為具有負二(-2)的初始值,大於或等於零的觸發條件,以及於程序表中(參考下面)指向條目B(即,程序B)的程序ID指標。除了初始計數值-4之外,令牌ID 126的令牌計數表條目可以與令牌ID 19相同地編程。程序B的程序表條目可以用初始計數值-2編程,因為它可以被調節為等待來自該令牌計數表的兩個令牌計數觸發,並且觸發條件大於或等於零。
繼續該示例,S320可以用於監視由一系統(例如,積體電路,智慧處理管道等)的一個或多個組件(例如,上游和/或下游組件)產生的令牌,
並且當檢測到一令牌時(通過令牌檢測電路等),S320可以更新(令牌計數或條件計數)或者在該第一令牌計數表內創建對應於程序A的條目。
S330,包括識別是否滿足一個或多個執行條件,用於監視該第一令牌計數表和第二程序表中的每一個處的令牌計數值和條件計數值(例如,第二基於令牌的控制資料結構)並確定是否滿足一個或多個程序的執行條件。當在一智慧處理單元或類似積體電路內實現時,S330可用於實現比較電路等,以藉由比較每個程序的令牌計數值資料來確定是否滿足在程序表內識別的給定程序的一個或多個執行條件來觸發程序的條件資料。
如圖5中的示例所示,對應於該第二基於令牌的控制資料結構或表格(在以上示例中在S320中討論)的程序表(例如,第二基於令牌的控制資料結構)可以配置包括程序A的程序標識符的索引值和包括程序B的程序標識符的另一索引值。可以用對應於程序A的條件計數值負3(-3)進一步配置和/或初始化程序表,以及計數值大於或等於零的相應程序觸發(執行)條件。
因此,當三個令牌計數表條目“0”、“17”和“18”中的每一個滿足它們各自的觸發條件時,它們各自的觸發條件中的每一個的滿足用以使得於該程序表的程序A的計數值增加。也就是說,在一些實施例中,滿足在該令牌計數表處一個別條目的該觸發條件與位於該程序表的程序A相關聯,使得單個增加(例如,從-3到-2)或單個減少(例如,從3到2);然而,應該注意的是,該程序表可以配置有變化的增量和/或減量方案(例如,增加2、5、3,或任何可編程增量)。一旦符合或滿足該令牌計數表中的所有三個令牌計數條件,示例程序表中的程序A的計數值也將滿足其條件。
包括提供一事件通知的S340用於在檢測到滿足與該從屬系統組件相關聯的程序或應用程序的執行和/或運算的觸發條件時,使用通知介面來產生對從屬系統組件的一個或多個通知。另外或替代地,S340可以用於更新與一基於令牌的控制資料結構(例如,該第二基於令牌的控制資料結構)內的各個程序標識符相關聯的觸發條件相關狀態。
參考該示例程序表(如上所述),當該示例程序表中的程序A的計數值滿足其條件時,S340可以用於更新一通知介面以反映程序A的觸發條件相關狀態已經滿足其先決條件,如圖6中的示例所示。即,S340可以用於將觸發條件相關狀態的條目從不滿足變為滿足等。可以通過S340進行指示滿足執行程序A的條件的任何合適的更新。相應地,實現方法200和/或方法300的系統可以用於在該系統內的一個或多個智慧處理區塊或其他運算電路上自動執行程序A或類似步驟。
5.實施智慧處理的計算機程序產品和/或智慧處理的基於令牌的控制
優選實施例及其變化的系統和方法可以至少部分地體現和/或實現為被配置為接收儲存計算機可讀指令的計算機可讀媒體的機器。該些指令優選地由與該系統集成的計算機可執行組件以及該處理器和/或該控制器的一個或多個部分執行。計算機可讀媒體可以儲存在任何合適的計算機可讀媒體上,例如RAM、ROM、快閃記憶體、EEPROM、光學設備(CD或DVD)、硬碟、軟碟或任何合適的設備。該計算機可執行組件優選地是通用或專用處理器,但是任何合適的專用硬體或硬體/韌體組合設備可以替代地或另外地執行指令。
儘管為了簡明而省略,但優選實施例包括本文描述的各種方法的每種組合和置換。
如本技術領域之通常知識者將從前面的詳細描述、附圖和申請專利範圍所理解的,在不脫離所附申請專利範圍限定的本發明的範圍的情況下,可以對本發明的優選實施例進行修改和改變。
100:智慧處理積體電路
105:智慧處理陣列
110:智慧處理單元
111:矩陣乘法加速器
112:計算機處理電路
114:資料流計分模組
116:單指令流多資料流單元
118:本地緩衝器
120:網路單晶片系統
125:網路單晶片路由器
130:積體電路控制器電路
140:區塊扇區控制器電路
150:序列連接匯流排
Claims (14)
- 一種在積體電路中實現一令牌控制處理方法,該方法包括:於一積體電路的主要資料緩衝器,從一個或多個輸入資料源收集輸入資料;實現一資料處理管線,其中該資料處理管線至少由以下定義:一個或多個矩陣乘法加速器;一個或多個本地資料緩衝器;該積體電路實現一個或多個資料流計分模組,其中實現該一個或多個資料流計分模組包括:(i)實現一令牌計數表,其用於追蹤該積體電路中的一個或多個令牌;(ii)實現一程序控制表,其用於基於該一個或多個令牌監視一個或多個程序執行條件;基於該令牌計數表以及該程序控制表的實現,沿該資料處理管線從該主要資料緩衝器自動傳遞該輸入資料的一個或多個部分。
- 如請求項1所述的方法,其更包括:基於該程序控制表的狀態,於該資料處理管線的一個或多個的該一個或多個矩陣乘法加速器自動地執行一個或多個程序或一個或多個應用程序。
- 如請求項1所述的方法,其中該令牌計數表:根據多個不同的令牌標識符編入索引;包括該些不同的令牌標識符中的每一個的條目,其儲存具有該些不同的令牌標識符之一的一個不同的令牌的運行計數;以及該等條目儲存軟體可程式化配置位元,其設置相應的計數器觸發條件。
- 如請求項3所述的方法,其中 該令牌計數表配置有至少一個指標,當基於該令牌控制表內的不同的令牌的計數值滿足一計數器觸發條件時,該指標指向該程序控制表中的條目。
- 如請求項1所述的方法,其中該程序控制表:係根據多個不同的程序的多個不同的程序標識符編入索引;該程序表的每個條目包括一個計數器,該計數器儲存與一個或多個不同的令牌標識符相關聯的一個或多個不同的令牌的計數器值;以及該程序表的每個條目儲存一軟體可程式化配置位元,其基於該一個或多個不同的令牌的計數器值設置一個程序執行條件。
- 如請求項1所述的方法,其更包括:為該一個或多個本地資料緩衝器和該一個或多個矩陣乘法加速器中的每一個產生狀態資料,其中該狀態資料指示該一個或多個本地資料緩衝器以及該一個或多個矩陣乘法加速器中的每一個的利用率的等級。
- 如請求項6所述的方法,其更包括:基於該一個或多個本地資料緩衝器中的每一個以及該一個或多個矩陣乘法加速器中的每一個的狀態資料,由該積體電路產生一個或多個令牌。
- 如請求項7所述的方法,其更包括:追蹤由該積體電路產生的一個或多個令牌;以及基於該追蹤更新該令牌計數表的一內部狀態。
- 如請求項7所述的方法,其更包括:追蹤由該積體電路產生的一個或多個令牌;基於該追踪更新該程序控制表的一內部狀態。
- 如請求項1所述的方法,其中 當對該令牌計數表的令牌計數的更新導致一令牌計數器條件從不滿足轉變為滿足時,存取該程序控制表中的相應條目並且增加或減少該程序控制表的計數器值的計數。
- 如請求項10所述的方法,其中當對該程序表條目計數器值的更新導致該程序觸發條件從不滿足轉變為滿足時,更新一通知介面以反映該轉變。
- 如請求項1所述的方法,其更包括:識別該至少一個本地資料緩衝器的一狀態;基於所識別的狀態產生一個或多個令牌;以及基於一個或多個令牌觸發對該積體電路的資料處理管線內的上游組件或下游組件的通知。
- 如請求項12所述的方法,其更包括:響應該通知;自動將該輸入資料的一個或多個部分加載到該至少一個本地資料緩衝器,或將來自該至少一個本地資料緩衝器的輸入資料的一個或多個部分自動加載到該一個或多個矩陣乘法加速器中的一個。
- 如請求項1所述的方法,其中該積體電路包括:多個計算區塊,其中該些計算區塊中的每一個包括:該一個或多個矩陣乘法加速器的一個矩陣乘法加速器,一計算處理處理電路;以及該一個或多個資料流計分模組的一個資料流計分模組;該一個或多個本地資料緩衝器的一個本地資料緩衝器,其中該些計算區塊一起定義一智慧處理陣列; 一網路單晶片系統包括:多個網路單晶片路由器,在該些計算區塊中的每一個之間建立一通訊網路,其中每個網路單晶片路由器與該些計算區塊中的至少一個以及該些網路單晶片路由器中的一個不同的網路單晶片路由器操作地通訊連接;以及從該些計算區塊中的每一個遠端配置一主緩衝器,其中該主緩衝器儲存原始輸入資料和/或從上游資料流或上游設備接收的資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862694355P | 2018-07-05 | 2018-07-05 | |
US62/694,355 | 2018-07-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202020855A TW202020855A (zh) | 2020-06-01 |
TWI727361B true TWI727361B (zh) | 2021-05-11 |
Family
ID=69057578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108123853A TWI727361B (zh) | 2018-07-05 | 2019-07-05 | 用於實現智慧處理運算結構的方法 |
Country Status (5)
Country | Link |
---|---|
US (5) | US10606797B2 (zh) |
EP (1) | EP3818439A4 (zh) |
CN (1) | CN112771498B (zh) |
TW (1) | TWI727361B (zh) |
WO (1) | WO2020009989A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10606797B2 (en) | 2018-07-05 | 2020-03-31 | Mythic, Inc. | Systems and methods for implementing an intelligence processing computing architecture |
EP3792767B1 (en) * | 2019-09-13 | 2023-07-12 | Accemic Technologies GmbH | Event processing |
US11049586B2 (en) * | 2019-11-26 | 2021-06-29 | Mythic, Inc. | Systems and methods for implementing redundancy for tile-based intelligence processing computing architecture |
US11586958B2 (en) * | 2020-04-06 | 2023-02-21 | Micron Technology, Inc. | Apparatuses, systems, and methods for machine learning using on-memory pattern matching |
CN113867799A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI590617B (zh) * | 2014-09-16 | 2017-07-01 | 科勞簡尼克斯股份有限公司 | 以彈性地定義之通信網路控制器為基礎之網路控制、操作及管理 |
TWI595492B (zh) * | 2016-03-02 | 2017-08-11 | 群聯電子股份有限公司 | 資料傳輸方法、記憶體控制電路單元與記憶體儲存裝置 |
US20180081734A1 (en) * | 2016-09-19 | 2018-03-22 | Texas Instruments Incorporated | Data Synchronization for Image and Vision Processing Blocks Using Pattern Adapters |
TWI627592B (zh) * | 2015-05-21 | 2018-06-21 | 谷歌有限責任公司 | 類神經網路處理器 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1991004536A1 (en) * | 1989-09-20 | 1991-04-04 | Dolphin Server Technology A/S | Instruction cache architecture for parallel issuing of multiple instructions |
WO1991017507A1 (en) | 1990-05-07 | 1991-11-14 | Mitsubishi Denki Kabushiki Kaisha | Parallel data processing system |
US6079009A (en) * | 1992-06-30 | 2000-06-20 | Discovision Associates | Coding standard token in a system compromising a plurality of pipeline stages |
US5835792A (en) * | 1993-06-24 | 1998-11-10 | Discovision Associates | Token-based adaptive video processing arrangement |
US6609193B1 (en) * | 1999-12-30 | 2003-08-19 | Intel Corporation | Method and apparatus for multi-thread pipelined instruction decoder |
US6977930B1 (en) * | 2000-02-14 | 2005-12-20 | Cisco Technology, Inc. | Pipelined packet switching and queuing architecture |
US6889310B2 (en) | 2000-08-12 | 2005-05-03 | Mobilygen Corporation | Multithreaded data/context flow processing architecture |
US7058010B2 (en) | 2001-03-29 | 2006-06-06 | Lucent Technologies Inc. | Controlled switchover of unicast and multicast data flows in a packet based switching system |
DE602004006955T2 (de) * | 2003-11-25 | 2008-02-28 | Interuniversitair Micro-Elektronica Centrum | Heterogenes Mehrrechnersystem in Form eines Network on Chip, sowie Verfahren und Betriebssystem zur Kontrolle desselben |
US7707387B2 (en) * | 2005-06-01 | 2010-04-27 | Microsoft Corporation | Conditional execution via content addressable memory and parallel computing execution model |
US7545381B2 (en) | 2005-11-10 | 2009-06-09 | Via Technologies, Inc. | Interruptible GPU and method for context saving and restoring |
WO2007147170A2 (en) * | 2006-06-16 | 2007-12-21 | Bittorrent, Inc. | Classification and verification of static file transfer protocols |
US8139601B2 (en) | 2007-07-06 | 2012-03-20 | Xmos Limited | Token protocol |
US7913007B2 (en) * | 2007-09-27 | 2011-03-22 | The University Of North Carolina | Systems, methods, and computer readable media for preemption in asynchronous systems using anti-tokens |
US9501448B2 (en) * | 2008-05-27 | 2016-11-22 | Stillwater Supercomputing, Inc. | Execution engine for executing single assignment programs with affine dependencies |
US8935483B2 (en) * | 2009-04-27 | 2015-01-13 | Lsi Corporation | Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
US9229788B2 (en) * | 2010-03-26 | 2016-01-05 | Microsoft Technology Licensing, Llc | Performing a wait operation to wait for one or more tasks to complete |
US9432298B1 (en) | 2011-12-09 | 2016-08-30 | P4tents1, LLC | System, method, and computer program product for improving memory systems |
EP2525534B1 (en) | 2011-05-18 | 2018-04-18 | Xelerated NewCo AB | Network traffic scheduler and associated method, computer program and computer program product |
US8824569B2 (en) * | 2011-12-07 | 2014-09-02 | International Business Machines Corporation | High bandwidth decompression of variable length encoded data streams |
US9014551B1 (en) * | 2013-03-13 | 2015-04-21 | The United States Of America As Represented By The Secretary Of The Air Force | Method and apparatus for simulating a photon-counting detector array as used in a communication link |
US8766827B1 (en) * | 2013-03-15 | 2014-07-01 | Intel Corporation | Parallel apparatus for high-speed, highly compressed LZ77 tokenization and Huffman encoding for deflate compression |
CN104424129B (zh) * | 2013-08-19 | 2019-07-26 | 上海芯豪微电子有限公司 | 基于指令读缓冲的缓存系统和方法 |
WO2015035336A1 (en) * | 2013-09-06 | 2015-03-12 | Futurewei Technologies, Inc. | Method and apparatus for asynchronous processor pipeline and bypass passing |
EP2858323A1 (en) * | 2013-10-01 | 2015-04-08 | Enyx SA | A method and a device for decoding data streams in reconfigurable platforms |
US9886670B2 (en) * | 2014-06-30 | 2018-02-06 | Amazon Technologies, Inc. | Feature processing recipes for machine learning |
US9647950B2 (en) * | 2015-05-11 | 2017-05-09 | Ebay Inc. | System and method of site traffic control |
US9537504B1 (en) * | 2015-09-25 | 2017-01-03 | Intel Corporation | Heterogeneous compression architecture for optimized compression ratio |
US10135461B2 (en) * | 2015-09-25 | 2018-11-20 | Intel Corporation | Systems, methods, and apparatuses for decompression using hardware and software |
US9819683B2 (en) * | 2016-03-15 | 2017-11-14 | Bank Of America Corporation | Automated control of technology resources |
CN107450888B (zh) * | 2016-05-30 | 2023-11-17 | 世意法(北京)半导体研发有限责任公司 | 嵌入式数字信号处理器中的零开销循环 |
US10334334B2 (en) * | 2016-07-22 | 2019-06-25 | Intel Corporation | Storage sled and techniques for a data center |
US10810488B2 (en) | 2016-12-20 | 2020-10-20 | Intel Corporation | Neuromorphic core and chip traffic control |
US10587534B2 (en) * | 2017-04-04 | 2020-03-10 | Gray Research LLC | Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks |
US10572404B2 (en) | 2017-06-30 | 2020-02-25 | Intel Corporation | Cyclic buffer pointer fixing |
US11061997B2 (en) * | 2017-08-03 | 2021-07-13 | Regents Of The University Of Minnesota | Dynamic functional obfuscation |
US9998142B1 (en) * | 2017-09-28 | 2018-06-12 | Intel Corporation | Techniques for invariant-reference compression |
US10606797B2 (en) * | 2018-07-05 | 2020-03-31 | Mythic, Inc. | Systems and methods for implementing an intelligence processing computing architecture |
-
2019
- 2019-07-01 US US16/458,888 patent/US10606797B2/en active Active
- 2019-07-01 EP EP19829810.1A patent/EP3818439A4/en not_active Withdrawn
- 2019-07-01 CN CN201980045334.1A patent/CN112771498B/zh active Active
- 2019-07-01 US US16/458,917 patent/US10521395B1/en active Active
- 2019-07-01 WO PCT/US2019/040122 patent/WO2020009989A1/en active Application Filing
- 2019-07-05 TW TW108123853A patent/TWI727361B/zh active
-
2020
- 2020-02-13 US US16/790,240 patent/US11360932B2/en active Active
-
2022
- 2022-05-16 US US17/745,742 patent/US12013807B2/en active Active
-
2024
- 2024-05-10 US US18/661,457 patent/US20240303217A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI590617B (zh) * | 2014-09-16 | 2017-07-01 | 科勞簡尼克斯股份有限公司 | 以彈性地定義之通信網路控制器為基礎之網路控制、操作及管理 |
TWI627592B (zh) * | 2015-05-21 | 2018-06-21 | 谷歌有限責任公司 | 類神經網路處理器 |
TWI595492B (zh) * | 2016-03-02 | 2017-08-11 | 群聯電子股份有限公司 | 資料傳輸方法、記憶體控制電路單元與記憶體儲存裝置 |
US20180081734A1 (en) * | 2016-09-19 | 2018-03-22 | Texas Instruments Incorporated | Data Synchronization for Image and Vision Processing Blocks Using Pattern Adapters |
Also Published As
Publication number | Publication date |
---|---|
US20220276983A1 (en) | 2022-09-01 |
CN112771498B (zh) | 2024-08-23 |
EP3818439A4 (en) | 2022-04-27 |
CN112771498A (zh) | 2021-05-07 |
TW202020855A (zh) | 2020-06-01 |
EP3818439A1 (en) | 2021-05-12 |
US20200192858A1 (en) | 2020-06-18 |
US12013807B2 (en) | 2024-06-18 |
US11360932B2 (en) | 2022-06-14 |
WO2020009989A1 (en) | 2020-01-09 |
US20200012617A1 (en) | 2020-01-09 |
US10606797B2 (en) | 2020-03-31 |
US10521395B1 (en) | 2019-12-31 |
US20200012616A1 (en) | 2020-01-09 |
US20240303217A1 (en) | 2024-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI727361B (zh) | 用於實現智慧處理運算結構的方法 | |
KR102662211B1 (ko) | 칩에 상주하는 파라미터를 갖는 신경망 가속기 | |
KR102190879B1 (ko) | 프로세서 타일들 간의 동기화 | |
US12014214B2 (en) | Tile subsystem and method for automated data flow and data processing within an integrated circuit architecture | |
KR20190044568A (ko) | 복수-타일 복수-칩 프로세싱 구성에서의 동기화 | |
KR20190044571A (ko) | 칩 밖으로 데이터 송신하기 | |
KR20190044570A (ko) | 복수-타일 프로세싱 구성에서의 동기화 | |
US11068641B1 (en) | Systems and methods for intelligently buffer tracking for optimized dataflow within an integrated circuit architecture | |
US20190057060A1 (en) | Reconfigurable fabric data routing | |
US20190197018A1 (en) | Dynamic reconfiguration using data transfer control | |
JP2005209207A (ja) | アレイプロセッサにおいてデータを管理するための方法、およびアレイプロセッサ | |
US20180212894A1 (en) | Fork transfer of data between multiple agents within a reconfigurable fabric | |
US10505704B1 (en) | Data uploading to asynchronous circuitry using circular buffer control | |
EP4028899B1 (en) | Message based processing system and method of operating the same | |
US11625519B2 (en) | Systems and methods for intelligent graph-based buffer sizing for a mixed-signal integrated circuit | |
WO2019169238A1 (en) | Dynamic reconfiguration using data transfer control | |
CN115698995A (zh) | 硬件自动加载器 | |
WO2019040339A1 (en) | RECONFIGURABLE MATRIX DATA ROUTING |