TWI764236B - 晶片上操作的顯式排程 - Google Patents
晶片上操作的顯式排程Info
- Publication number
- TWI764236B TWI764236B TW109127774A TW109127774A TWI764236B TW I764236 B TWI764236 B TW I764236B TW 109127774 A TW109127774 A TW 109127774A TW 109127774 A TW109127774 A TW 109127774A TW I764236 B TWI764236 B TW I764236B
- Authority
- TW
- Taiwan
- Prior art keywords
- hardware block
- operations
- schedule
- data
- integrated circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
Abstract
本發明揭示用於獲得一積體電路裝置之一第一硬體區塊之一第一排程之方法、系統及設備,其等包含編碼於一電腦儲存媒體上之電腦程式,其中該第一排程識別待由該第一硬體區塊執行之一第一組操作。獲得該積體電路裝置之一第二硬體區塊之一第二排程,其中該第二排程識別待由該第二硬體區塊執行之一第二組操作且其中協調該第二排程之操作與該第一排程之操作,使得該第一排程觸發該第一硬體區塊以在一計數器之一第一預排程值處將資料發送至該第二區塊,且該第二排程觸發該第二硬體區塊以在該計數器之該第一預排程值之後的一第二預排程值處在一輸入處接受該資料。藉由該第一硬體區塊根據該第一排程執行該第一組操作,且藉由該第二硬體區塊根據該第二排程執行該第二組操作。
Description
本發明係關於積體電路操作及不同積體電路硬體區塊之個別操作之顯式排程。
處理器及微控制器晶片通常由軟體程式控制。該等程式包含在重複迴圈中循序執行之一操作清單。回應於一輸入值之改變或一外部或內部中斷信號之觸發而起始一些軟體副常式。軟體程式及副常式通常由中央控制電路執行,其路由資料且控制晶片上之其他功能單元以執行程式化操作之部分。
一般言之,在一些態樣中,本發明之標的物可體現在包含獲得一積體電路裝置之一第一硬體區塊之一第一排程之動作之方法中,其中該第一排程識別待由該第一硬體區塊執行之一第一組操作。該等動作包含獲得該積體電路裝置之一第二硬體區塊之一第二排程,其中該第二排程識別待由該第二硬體區塊執行之一第二組操作且其中協調該第二排程之操作與該第一排程之操作,使得該第一排程觸發該第一硬體區塊以在一計數器之一第一預排程值處將資料發送至該第二區塊,且該第二排程觸發該第二硬體區塊以在該計數器之該第一預排程值之後的一第二預排程值處在一輸入處接受該資料。該等動作包含藉由該第一硬體區塊根據該第一排程執行該第一組操作,且藉由該第二硬體區塊根據該第二排程執行該第二組操作。此態樣之其他實施方案包含對應系統、設備及經組態以執行該等方法之動作之編碼於電腦儲存裝置上之電腦程式。此等及其他實施方案可各視情況包含下列特徵之一或多者。
在一些實施方案中,該第一排程及該第二排程各包含由該積體電路裝置執行之一程式之一部分。
在一些實施方案中,該第一組操作及該第二組操作各包含一機器學習程式之一各自部分。
在一些實施方案中,該第一組操作中之各操作在預定數目個時脈循環中執行。
在一些實施方案中,協調該第一排程及該第二排程之操作以容許獨立於流量控制信號而在該第一硬體區塊與該第二硬體區塊之間交換資料。
在一些實施方案中,該等動作包含藉由該第一硬體區塊在執行包含於該第一排程之一部分中之操作之前解壓縮該部分。
在一些實施方案中,針對該第一組操作中之各操作,該第一排程包含一經排程計數器值及指示待由該第一硬體區塊在該經排程計數器值處執行之一特定操作之資料。
在一些實施方案中,藉由該第一硬體區塊根據該第一排程執行該第一組操作包含下列動作:從一計數器接收等於該第一組操作中之一第一操作之一第一經排程計數器值之一第一計數器值;回應於接收該第一計數器值,引起該第一硬體區塊之一第一組一或多個運算單元執行該第一操作;從該計數器接收等於該第一組操作中之一第二操作之一第二經排程計數器值之一第二計數器值;及回應於接收該第二計數器值,引起該第一硬體區塊之一第二組一或多個運算單元執行該第二操作。
在一些實施方案中,該第一硬體區塊及該第二硬體區塊係包含經組態以執行神經網路操作之專用電路之硬體微磚。
另一一般態樣可體現在一積體電路裝置中,其包含:一計數器;一第一硬體區塊,其可通信地耦合至該計數器;及一第二硬體區塊,其可通信地耦合至該計數器及該第一硬體區塊。該第一硬體區塊經組態以根據包含一第一組操作之一第一排程而操作,該第一組操作之各者經排程以由該第一硬體區塊在該計數器之一第一各自值處執行。該第二硬體區塊經組態以根據包含一第二組操作之一第二排程而操作,該第二組操作之各者經排程以由該第二硬體區塊在該計數器之一第二各自值處執行。協調該第二排程之操作與該第一排程之操作,使得該第一排程觸發該第一硬體區塊以在該計數器之一第一預排程值處將資料發送至該第二硬體區塊,且該第二排程觸發該第二硬體區塊以在該計數器之該第一預排程值之後的一第二預排程值處在一輸入處接受該資料。此及其他實施方案可各視情況包含下列特徵之一或多者。
在一些實施方案中,該第一組操作及該第二組操作各包含一機器學習程式之一各自部分。
在一些實施方案中,該第一組操作中之各操作在預定數目個時脈循環中執行。
在一些實施方案中,協調該第一排程及該第二排程之操作以容許獨立於流量控制信號而在該第一硬體區塊與該第二硬體區塊之間交換資料。
在一些實施方案中,該積體電路裝置包含複數個其他硬體區塊,其中協調該第一排程之操作與其他硬體區塊之各自操作排程以容許獨立於資料流量控制信號而在該第一硬體區塊與該等其他硬體區塊之一或多者之間交換資料。
在一些實施方案中,該第一硬體區塊包含:本端記憶體,其經組態以儲存該第一排程;及控制電路,其耦合至該本端記憶體且經組態以執行該第一排程之該第一組操作。在一些實施方案中,該控制電路經組態以在執行包含於該第一排程之一部分中之操作之前解壓縮該部分。
在一些實施方案中,該積體電路裝置係一特定應用積體電路。
在一些實施方案中,該第一硬體區塊及該第二硬體區塊係包含經組態以執行神經網路操作之專用電路之硬體微磚。在一些實施方案中,該第一硬體區塊包含胞元之一運算陣列及耦合至胞元之該運算陣列之本端記憶體。
在一些實施方案中,該第一排程及該第二排程各包含由該積體電路裝置執行之一程式之一部分。
一第三一般態樣可體現在一積體電路裝置中,其包含一第一硬體區塊、一第二硬體區塊及一編譯器。該第一硬體區塊經組態以根據包含一第一組操作之一第一排程而操作,該第一組操作之各者經排程以由該第一硬體區塊在一各自預排程時間執行。該第一硬體區塊包含包括複數個胞元之一運算陣列,該複數個胞元之各胞元經組態以執行一乘法累加運算。該第二硬體區塊可通信地耦合至該第一硬體區塊。該第二硬體區塊經組態以根據包含一第二組操作之一第二排程而操作,該第二組操作之各者經排程以由該第二硬體區塊在一各自預排程時間執行。該編譯器經組態以產生該第一排程及該第二排程,其中協調該第一排程之該第一組操作與該第二排程之該第二組操作以允許在該第一硬體區塊與該第二硬體區塊之間傳送資料,且其中該第一排程及該第二排程之各者分別表示整體上待由該積體電路裝置執行之一神經網路程式之一部分。
在一些實施方案中,該第一組操作及該第二組操作包括一機器學習程式之一各自部分。
在一些實施方案中,該第一組操作中之各操作在預定數目個時脈循環中執行。
一些實施方案包含至少一個其他硬體區塊,其中協調該第一排程之操作與該至少一個其他硬體區塊之各自操作排程以允許在該第一硬體區塊與該至少一個其他硬體區塊之間傳送資料。在一些實施方案中,該至少一個其他硬體區塊包含經組態以執行純量運算之電路。在一些實施方案中,該至少一個其他硬體區塊包含經組態以執行向量運算之電路。
在一些實施方案中,該第一硬體區塊之運算陣列包含經組態以執行矩陣運算之電路且該第二硬體區塊包含經組態以執行記憶體存取操作之電路。在一些實施方案中,該第二硬體區塊儲存該第一操作排程。在一些實施方案中,該第一硬體區塊經組態以將該運算陣列之一輸出傳送至該第二硬體區塊。
在一些實施方案中,該第一硬體區塊及該第二硬體區塊係包含經組態以執行神經網路操作之專用電路之硬體微磚。
一第四一般態樣可體現在包含藉由一積體電路裝置之一編譯器產生包含一第一組操作之一第一排程之動作之方法中,該第一組操作之各者經排程以由一第一硬體區塊在一各自預排程時間執行。該等動作包含藉由該編譯器產生包含一第二組操作之一第二排程,該第二組操作之各者經排程以由一第二硬體區塊在一各自預排程時間執行。該等動作包含藉由該第一硬體區塊根據該第一排程執行該第一組操作,其中該第一硬體區塊包含包括複數個胞元之一運算陣列,該複數個胞元之各胞元經組態以執行一乘法累加運算。該等動作包含藉由該積體電路裝置之該第二硬體區塊根據該第二排程執行該第二組操作,其中該第一排程及該第二排程之各者分別表示整體上待由該積體電路裝置執行之一神經網路程式之一部分。
在一些實施方案中,該第一組操作及該第二組操作包含一機器學習程式之一各自部分。
在一些實施方案中,該第一組操作中之各操作在預定數目個時脈循環中執行。
在一些實施方案中,該積體電路包含至少一個其他硬體區塊,其中協調該第一排程之操作與該至少一個其他硬體區塊之各自操作排程以允許在該第一硬體區塊與該至少一個其他硬體區塊之間傳送資料。在一些實施方案中,該至少一個其他硬體區塊包含經組態以執行純量運算之電路。在一些實施方案中,該至少一個其他硬體區塊包含經組態以執行向量運算之電路。
在一些實施方案中,該第一硬體區塊之該運算陣列包含經組態以執行矩陣運算之電路且該第二硬體區塊包含經組態以執行記憶體存取操作之電路。
在一些實施方案中,該等動作包含藉由該第二硬體區塊儲存該第一操作排程。
在一些實施方案中,該等動作包含藉由該第一硬體區塊將該第一硬體區塊之該運算陣列之一輸出傳送至該第二硬體區塊。
在一些實施方案中,該第一硬體區塊及該第二硬體區塊係包含經組態以執行神經網路操作之專用電路之硬體微磚。
各種實施方案包含下列優點之一或多者。例如,在一些實施方案中,顯式排程晶片操作可改良寫入晶片控制邏輯之效率及精確性。例如,顯式排程晶片操作使晶片操作對於運算密集型操作(諸如機器學習操作)更具確定性。當該等操作更具確定性時,可以一更準確方式執行硬體控制測試及除錯。
作為另一實例,使用確定性排程可降低硬體之複雜性。例如,由於透過排程預先知道每一操作之時序,所以可在軟體中準確且全域地一次協調操作。全域知識在硬體中不可行,因此在軟體中實現排程品質;減少在硬體中進行排程操作之需要使硬體更簡單。
確定性排程亦可改良除錯程序。例如,使用確定性排程意謂吾人可在知道實際硬體將以相同方式執行的情況下在一模擬器上對硬體之程式化除錯。
在隨附圖式及下列描述中陳述本發明之一或多項實施例之細節。從描述、圖式及發明申請專利範圍將明白其他特徵及優點。
一般言之,本發明係關於藉由一半導體裝置根據時間排程操作執行操作。更特定言之,本發明係關於具有個別硬體區塊之一半導體晶片,該等個別硬體區塊根據個別化操作排程而操作以執行整體上由半導體晶片執行之一經協調程式。換言之,個別硬體區塊根據一共同時脈(例如,一計數器)在經排程時間執行其等各自操作而非例如回應於控制信號或根據程序指令之一未排程循序清單來執行操作。例如,晶片包含若干硬體區塊。各硬體區塊表示一組相關複製邏輯,諸如一晶片上之電路(例如,邏輯電路)之一子集,其經設計以獨立於由其他硬體區塊執行之任務而執行一組特定任務。硬體區塊可經組態以執行操作,包含(但不限於)矩陣運算、向量運算、純量運算、邏輯運算、記憶體存取操作、外部通信操作或其等之一組合。
各硬體區塊執行特定於該硬體區塊之一個別操作排程。各硬體區塊之個別排程共同表示整體上由晶片執行之一完整程式(例如,一神經網路操作)。各排程包含經排程以由一個別硬體區塊在特定計數器時間執行之一系列操作。例如,硬體區塊可各基於晶片上之一共同時脈之一當前計數值在其等各自排程中執行操作。
此外,該等排程經配置以協調各種硬體區塊之間的資料傳送而無需流量控制邏輯。例如,協調一第一硬體區塊之一第一排程之操作與一第二硬體區塊之一第二排程之操作,使得第一硬體區塊之第一排程中之將資料發送至第二硬體區塊之一操作經計時以與第二排程中之需要第二硬體區塊從一輸入緩衝器讀取資料且對資料進行操作之操作對應。換言之,協調個別排程之操作,使得可獨立於傳統流量控制邏輯而執行硬體區塊之間的資料傳送。即,經協調排程本身用於排除通信錯誤,諸如內部匯流排上之衝突及/或資料緩衝器溢流。在一些實施方案中,硬體區塊操作之確定性協調及硬體區塊操作之預排程容許吾人準確地知道何時將在一晶片上發生某些操作。確定性排程程序可優於不確定性晶片操作,此係因為例如其可改良可執行除錯操作之容易性及效率。
在一些實施方案中,半導體晶片係經設計以執行機器學習操作之一特定應用積體電路(ASIC)。ASIC包含例如針對一特定用途客製化之一積體電路(IC)。例如,ASIC可經設計以執行機器學習模型之操作,包含例如辨識影像中之物件作為深度神經網路之部分、機器轉譯、語音辨識或其他機器學習演算法。例如,當用作一神經網路之一加速器時,ASIC可接收至神經網路之輸入且運算輸入之一神經網路推論。至一神經網路層之資料輸入(例如,至神經網路之輸入或神經網路之另一層之輸出)可被稱為激發輸入。可根據與神經網路之層相關聯之各自組權重輸入來運算該等推論。例如,一些或全部層可接收一組激發輸入且根據層之該組權重輸入來處理激發輸入以產生輸出。再者,經執行以運算神經網路推論之運算操作之重複性質有利於顯式排程晶片操作。
圖1係繪示經組態以根據經排程操作而操作之一積體電路晶片10之一簡化實例之一示意圖。晶片10可為一通用積體電路或一專用積體電路。例如,晶片10可為一ASIC、一場可程式化閘陣列(FPGA)、一圖形處理單元(GPU)或任何其他適合積體電路。晶片10包含多個硬體區塊12、一計數器14及一共用資料匯流排16。為繪示及論述目的以簡化方式展示晶片10,然而,在實施方案中,晶片10將包含額外組件,諸如通信介面、記憶體及適用於晶片10之其他電路。
硬體區塊12表示相關組複製邏輯,諸如晶片10上之電路(例如,邏輯電路)之一子集,其經設計以獨立於由其他硬體區塊12執行之任務而執行一組特定任務。此外,各硬體區塊12可表示不同類型之電路,例如硬體區塊A可表示經組態以在晶片10與晶片10外部之其他半導體組件之間傳送資料之一通信介面。硬體區塊B及硬體區塊C可表示經設計以執行機器學習功能之一專用晶片之「微磚」(下文更詳細論述)。例如,硬體區塊B及硬體區塊C可表示經組態以執行矩陣運算之一神經網路之運算節點。
計數器14根據晶片10上之一共同時脈信號而累加。計數器14可為例如24位元、32位元或其他大小之同步計數器。計數器14將晶片計數值(例如,「晶片時間」)輸出至硬體區塊12以同步各個別硬體區塊12之顯式排程操作。在一些實施方案中,各硬體區塊12具有一個別計數器14而非晶片10之一單一計數器14。可由晶片10上之一共同時脈同步個別計數器。再者,例如,可由晶片上之一共同重設信號同步個別計數器之計數值。
各硬體區塊12根據其自身之個別化操作排程18而操作。操作排程18各表示整體上待由晶片10執行之一程式之一部分,且各操作排程18個別地表示待由一個別硬體區塊12執行之程式之該部分。操作排程18包含待由硬體區塊在預定計數器值處執行之一組操作。換言之,操作排程18可被視為觸發待由一特定硬體區塊12在預排程「晶片時間」執行之特定操作之一計時器清單。例如,各排程18可包含執行計數器值(例如,執行時間)與待在計數器值處執行之一相關聯操作之一清單。在一些實例中,一操作排程18中之各操作由經排程計數器值及識別待由一特定硬體區塊12在經排程計數器值處執行之操作之資料(諸如一操作碼)表示。
協調各排程18之操作與全部其他排程之操作以避免諸如共用資源(例如,資料匯流排16)之雙重預訂之錯誤。亦協調各排程18之操作以允許獨立於流量控制控制邏輯(例如,諸如中斷信號)而在硬體區塊12之間傳送資料。例如,兩個硬體區塊12之間的資料傳送經排程,使得一接收硬體區塊12經排程以在一計數器值處從一資料匯流排或輸入緩衝器讀取資料,該計數器值1)基於發送硬體區塊12之經排程傳輸計數值而確保在讀取時間存在正確資料且2)藉由排程接收硬體區塊12以在緩衝器溢流之前讀取資料而防止輸入緩衝器溢流(例如,在額外資料經排程以發送至接收硬體區塊12之前排程該讀取)。
個別化操作排程18可尤其適用於運算密集、高度重複或兩者之應用,諸如神經網路及圖形處理運算。例如,將顯式定義排程用於一晶片10上之個別硬體區塊12可有利於確定性操作,其中經排程操作各在預定義數目個時脈循環中執行。
一晶片10之硬體區塊12之操作排程18可由一程式編譯器產生。例如,一編譯器可處理晶片之一整體程式且識別依各時間增量將在晶片上發生之硬體功能,以便執行程式。編譯器可將功能剖析為晶片10上之各硬體區塊12之操作排程18。操作排程18接著被載入至晶片10上且可儲存於一共同晶片10記憶體中或操作排程18可分佈至與各自硬體區塊12相關聯之本端記憶體。
更詳細言之,各硬體區塊12可包含控制電路20、本端記憶體22及一或多個運算單元24。在實施方案中,操作排程18可儲存於硬體區塊12之本端記憶體22中。操作單元24表示經組態以執行特定運算(例如,加法、減法、乘法、邏輯運算等)之電路。控制電路20可經組態以讀取及執行操作排程18之操作。例如,控制電路20可包含控制元件,諸如多工器及正反器,其等在記憶體22、輸入緩衝器或匯流排16與適當運算單元24之間路由資料以執行經排程操作。如上文提及,操作排程18可用作觸發控制電路20以在特定計數器值處開始執行特定功能之一系列計時器。因此,操作排程18可觸發控制電路20之控制元件以將硬體區塊12內之資料路由至適當運算單元24,以便在經排程時間執行一經排程操作。例如,參考「排程C」,在計數器時間030,操作排程18可觸發控制電路20以將資料從記憶體22路由至一適當運算單元24以執行操作3 (「Op.3」),例如一加總操作。在計數器時間043,操作排程18將觸發控制電路以將加總操作之輸出資料路由至匯流排16以將輸出資料傳輸至另一硬體區塊12。
在一些實施方案中,操作排程18經壓縮以節省記憶體資源。在此實施方案中,硬體區塊12或晶片上之其他電路可在執行操作排程18之一部分之前解壓縮該操作排程之該部分。例如,操作排程18可經壓縮以利用排程中之週期性。例如,一特定排程可包含在六循環週期之不同階段排程之一組操作。接著,排程可被實施為週期性計數器及延遲(例如,對於相位)之一組合。
圖2A係繪示圖1之積體電路晶片10之硬體區塊12之操作排程之間的例示性經協調操作之一時序圖。特定言之,時序圖繪示如何協調硬體區塊A、B及C之操作排程使得在傳輸及接收硬體區塊之間同步資料傳送操作。例如,參考計數器時間001至015,硬體區塊B經排程以在從硬體區塊A傳輸資料時起之預定數目個時脈循環內自硬體區塊A接收資料。特定言之,在計數器時間001,硬體區塊A根據硬體區塊A之操作排程開始將資料30 (在圖2B中)傳輸至硬體區塊B。在計數器時間001與006之間,硬體區塊A準備且開始傳輸資料30。在時間006,資料開始到達硬體區塊B,此係硬體區塊B開始存取資料之預排程計數器時間(在硬體區塊B之操作排程上)。從時間006至時間015,將資料從硬體區塊A傳播至硬體區塊B及硬體區塊C。此外,可協調硬體區塊A及硬體區塊B之操作排程,使得由硬體區塊B在計數器時間001至015期間接收之資料係硬體區塊B在硬體區塊B經預排程以在計數器時間016至062期間執行之後續操作(例如,Op.1至Op.3)之一或多者期間將使用之資料。
在一些實施方案中,硬體區塊A及B之間的資料傳輸路徑可包含在硬體區塊A傳輸資料之一時間與硬體區塊B接收資料之一時間之間的某可忽略量之延時變動(例如,資料傳輸時間之變動)。為解決此延遲,硬體區塊A開始傳輸與硬體區塊B開始存取資料之間的時間之一部分可包含一預定延遲週期以確保在硬體區塊B開始存取資料時或之前資料已到達硬體區塊B。硬體區塊B (及任何或全部硬體區塊)可包含一輸入緩衝器以在接收資料時收集資料,使得若資料提前一或多個計數器循環到達硬體區塊B (例如,歸因於延時變動),則資料不會丟失而係在硬體區塊B開始其預排程接收操作以從緩衝器存取資料時立即可用。
以一類似方式在硬體區塊B與硬體區塊C之間及硬體區塊C與硬體區塊A之間執行預排程資料傳輸操作。例如,參考計數器時間063至082,硬體區塊C經排程以在從硬體區塊B傳輸資料時起之預定數目個時脈循環內從硬體區塊B接收資料。同樣地,參考計數器時間131至148,硬體區塊A經排程以在從硬體區塊C傳輸資料時起之預定數目個時脈循環內自硬體區塊C接收資料。
圖2B描繪繪示在操作排程18之執行期間在圖1之積體電路晶片10內之一例示性資料流之一系列圖。此系列操作可表示一神經網路之激發資料30之一簡化流程。由一通信介面(例如,硬體區塊A)接收激發資料30。通信介面(硬體區塊A)在計數器時間001至015將激發資料30傳送至一神經網路之一輸入層(例如,硬體區塊B)。在計數器時間015與062之間,輸入層(硬體區塊B)對資料執行三個經排程操作。接著,在計數器時間063開始,輸入層(硬體區塊B)將其輸出資料32傳輸至一輸出層(例如,硬體區塊C)。輸出層(硬體區塊C)在計數器時間83與130之間對來自輸入層(硬體區塊B)之輸出資料32執行三個經排程操作。最終,在計數器時間131開始,輸出層(硬體區塊C)將其輸出34傳輸回至通信介面(硬體區塊A),例如待傳輸至另一晶片或其他外部資源。此外,圖2B中之該系列圖繪示可如何使用三個硬體區塊12之經協調操作排程18來管理對一共用資源(諸如資料匯流排16)之存取。使用資料匯流排16之各資料傳送針對一已知可用時間預排程。此外,由於資料區塊之操作經預排程且係確定性的,所以應最小化涉及共用資源之錯誤。
儘管已參考控制一單一晶片之操作來描述操作排程之使用,然一類似程序可應用於個別晶片之一系統。即,可以一類似方式產生個別操作排程以控制一組同步晶片之同時操作。例如,針對具有同步計數器之晶片之一系統,各晶片可根據一顯式操作排程來執行操作。
圖3係繪示可經組態以根據經排程操作而操作之專用邏輯電路(特定言之,一ASIC 100)之一實例之一示意圖。ASIC 100包含可經組態以根據個別操作排程來執行ASIC 100之整體操作之各種不同類型之硬體區塊。可根據個別操作而操作之例示性硬體區塊包含微磚102、向量處理單元104及通信介面108。
更特定言之,ASIC 100包含多個微磚102,其中微磚102之一或多者包含經組態以執行操作(諸如,例如乘法及加法運算)之專用電路。特定言之,各微磚102可包含胞元之一運算陣列(例如,類似於圖1之運算單元24),其中各胞元經組態以執行數學運算(參見例如在圖4中展示且在本文中描述之例示性微磚200)。在一些實施方案中,微磚102經配置成一柵格圖案,其中微磚102沿一第一維度101 (例如,列)且沿一第二維度103 (例如,行)配置。例如,在圖3中展示之實例中,微磚102被劃分為四個不同區段(110a、110b、110c、110d),各區段含有配置成縱向18個微磚乘以橫向16個微磚之一柵格之288個微磚。在一些實施方案中,圖3中展示之ASIC 100可被理解為包含細分/配置成單獨微磚之胞元之一單一脈動陣列,其中各微磚包含胞元之一子集/子陣列、本端記憶體及匯流排線(參見例如圖4)。
ASIC 100亦可包含一向量處理單元104。向量處理單元104包含經組態以從微磚102接收輸出且基於從微磚102接收之輸出而運算向量運算輸出值之電路。例如,在一些實施方案中,向量處理單元104包含經組態以對從微磚102接收之輸出執行累加運算之電路(例如,乘法電路、加法器電路、移位器及/或記憶體)。替代地或另外,向量處理單元104包含經組態以將一非線性函數應用於微磚102之輸出之電路。替代地或另外,向量處理單元104產生正規化值、匯集值或兩者。向量處理單元之向量運算輸出可儲存於一或多個微磚中。例如,向量運算輸出可儲存於與一微磚102唯一相關聯之記憶體中。替代地或另外,可將向量處理單元104之向量運算輸出傳送至ASIC 100外部之一電路,例如作為一運算之一輸出。此外,微磚102及向量處理單元104之個別操作排程之操作協調將微磚輸出傳送至向量處理單元104。
在一些實施方案中,向量處理單元104經分段,使得各片段包含經組態以從微磚102之一對應集合接收輸出且基於所接收輸出而運算向量運算輸出之電路。例如,在圖3中展示之實例中,向量處理單元104包含沿第一維度101橫跨之兩個列,該等列之各者包含配置成32個行之32個片段106。各片段106包含經組態以基於來自微磚102之一對應行之輸出(例如,一累加和)而執行一向量運算(如本文中說明)之電路(例如,乘法電路、加法器電路、移位器及/或記憶體)。向量處理單元104可定位於微磚102之柵格中間,如圖3中展示。向量處理單元104之其他位置配置亦係可行的。
ASIC 100亦包含一通信介面108 (例如,介面108a、108b)。通信介面108包含一或多組串化器/解串器(SerDes)介面及一通用輸入/輸出(GPIO)介面。SerDes介面經組態以接收指令(例如,ASIC 100之個別硬體區塊之操作排程)及/或ASIC 100之輸入資料且將資料從ASIC 100輸出至一外部電路。例如,SerDes介面可經組態以透過包含於通信介面108內之該組SerDes介面以32 Gbps、56 Gbps之一速率或任何適合資料速率傳輸及接收資料(例如,操作排程及/或輸入/輸出資料)。例如,ASIC 100可在其開啟時運行一開機程式。GPIO介面可用於將操作排程載入至ASIC上以執行一特定類型之機器學習模型。
ASIC 100可與不根據如ASIC之特定操作排程操作之外部電路或系統通信。例如,外部系統之操作可不與ASIC 100之操作完全同步。替代地或另外,與外部電路及系統之資料通信可經受不規則延遲。因此,輸入資料可以不規則時間間隔到達通信介面108。實施方案可藉由併入下列特徵之任何一或多者而解決此等潛在不規則通信:將一先進先出(FIFO)緩衝器包含於ASIC 100中;基於一定界資料到達延遲而實施通信介面108之排程操作;實施基於條件之替代操作;實施輸入資料填補;或其等之任何組合。
通信介面108可包含用於從外部電路/系統接收輸入資料之一FIFO緩衝器。例如,FIFO緩衝器可足夠大以臨時儲存ASIC 100之特定數目個操作循環(例如,100個循環、500個循環、1,000個循環或10,000個循環)之足夠輸入資料。例如,若ASIC 100之各操作循環依靠1 kB之輸入資料,則500個循環之一FIFO緩衝器將標稱地係500 kB。
另外,通信介面108之操作排程可係基於ASIC 100從其或將從其接收輸入資料之一預期外部系統或一特定外部系統之一定界到達延遲。例如,可估計一外部系統之預期通信延時且接著基於額外資訊(諸如外部系統之操作變動)進行定界。通信介面108可經排程以按外部系統之最新預期到達延遲從FIFO緩衝器存取輸入資料。例如,通信介面108可根據一操作排程而操作,該操作排程指示通信介面108以與外部系統之最新預期到達延遲對應之一時間間隔從FIFO緩衝器存取資料。假定外部系統以規則或相對規則時間間隔發送輸入資料,則以外部系統之最新預期到達延遲檢查FIFO緩衝器將合理地保證輸入資料可在ASIC 100之各循環期間(例如,至少在正常操作期間)進行處理。
在一些實施方案中,通信介面108可經排程以按外部系統之最新預期到達延遲針對輸入資料檢查FIFO緩衝器且在不存在資料之情況下執行替代經排程操作。例如,若FIFO緩衝器中不存在輸入資料,則通信介面108可觸發ASIC 100之一暫停模式。通信介面108可發信號通知其他硬體區塊(例如,微磚102)以執行一替代延遲排程。延遲排程可包含針對一特定延遲週期之一系列無操作指令。各硬體區塊之延遲週期可為不同的(例如,包含不同數目個無操作指令),以便在暫停模式結束且正常操作恢復時適當地協調硬體區塊之間的操作。在一些實施方案中,若FIFO緩衝器中之輸入資料下降至低於一臨限值,則可觸發暫停模式。例如,臨限值可為FIFO緩衝器容量之一百分比,例如5%、10%、20%等。
在一些實施方案中,若緩衝器為空或下降至低於一臨限值,則可填補FIFO緩衝器中之資料。例如,當可用於FIFO緩衝器中之輸入資料不足時,可將預設資料值添加至任何所接收輸入資料以容許ASIC 100針對一循環或數個循環繼續操作。例如,若ASIC 100在一初始化週期內(例如,在開始正常操作之前),則預設資料可包含空值。在初始化週期期間,空值資料將不利地影響由ASIC 100計算之輸出值之一風險可較低。
替代地,可例如基於先前ASIC輸出或基於先前輸入之一內插(若在正常操作期間需要填補)來運算預設值。例如,通信介面108可經組態以在緩衝器變空之前儲存來自FIFO緩衝器之輸入資料作為填補資料或從FIFO緩衝器中之輸入資料內插填補資料。作為另一實例,通信介面108可經組態以發信號通知其他硬體區塊之一子集以執行一替代操作排程以在FIFO緩衝器中之輸入資料下降至低於一臨限值時之情況下提供預設填補值。例如,通信介面108可發信號通知含有ASIC輸出資料之硬體區塊以將輸出資料發送至通信介面108以用作填補資料。
ASIC 100進一步包含經組態以在通信介面108、向量處理單元104及多個微磚102之間輸送資料之多個可控匯流排線(參見例如圖4)。可控匯流排線包含例如沿格柵之第一維度101 (例如,列)及格柵之第二維度103 (例如,行)兩者延伸之導線。沿第一維度101延伸之可控匯流排線之一第一子集可經組態以在一第一方向上傳送資料(例如,至圖3之右側)。沿第一維度101延伸之可控匯流排線之一第二子集可經組態以在一第二方向上傳送資料(例如,至圖3之左側)。沿第二維度103延伸之可控匯流排線之一第一子集可經組態以在一第三方向上傳送資料(例如,至圖3之頂部)。沿第二維度103延伸之可控匯流排線之一第二子集可經組態以在一第四方向上傳送資料(例如,至圖3之底部)。如上文論述,不同硬體區塊之個別操作排程可協調對諸如可控匯流排線之共用資源之存取以防止ASIC 100內之通信錯誤。
各可控匯流排線包含多個輸送器元件,諸如正反器,其等用於根據一時脈信號沿該等線輸送資料。透過一可控匯流排線傳送資料可包含在各時脈循環將資料從可控匯流排線之一第一輸送器元件移位至可控匯流排線之一第二鄰近輸送器元件。在一些實施方案中,在一時脈循環之上升或下降邊緣之後透過可控匯流排線輸送資料。例如,在一第一時脈循環存在於一可控匯流排線之一第一輸送器元件(例如,一正反器)上之資料可在一第二時脈循環傳送至可控匯流排線之一第二輸送器元件(例如,一正反器)。在一些實施方案中,輸送器元件可以一固定距離彼此週期性地隔開。例如,在一些情況中,各可控匯流排線包含多個輸送器元件,其中各輸送器元件定位於一對應微磚102內或接近於對應微磚102。
各可控匯流排線亦包含多個多工器及/或解多工器。一可控匯流排線之一多工器/解多工器經組態以在匯流排線與ASIC 100之一組件之間傳送資料。例如,一可控匯流排線之一多工器/解多工器可經組態以將資料傳送至一微磚102及/或從一微磚102傳送資料、將資料傳送至向量處理單元104及/或從向量處理單元104傳送資料或將資料傳送至通信介面108及/或從通信介面108傳送資料。在微磚102、向量處理單元104及通信介面之間傳送資料可由操作排程進行協調。操作排程可在各計數器處協調哪一ASIC 100硬體區塊正在將資料傳輸至可控匯流排線或正在從可控匯流排線接收資料。在任何給定計數器時間排程之操作可判定例如從一源(例如,一微磚102或一向量處理單元104內之記憶體)傳送至一可控匯流排線之資料或替代地從可控匯流排線傳送至一資料收集點(sink) (例如,一微磚102或一向量處理單元104內之記憶體)之資料。
可控匯流排線經組態以在一本端級上進行控制,使得各微磚、向量處理單元及/或通信介面包含其自身組控制元件以用於操縱通過該微磚、向量處理單元及/或通信介面之可控匯流排線。例如,各微磚、1D向量處理單元及通信介面可包含一組對應輸送器元件、多工器及/或解多工器以用於控制至及從該微磚、1D向量處理單元及通信介面之資料傳送。因此,各微磚、1D向量處理單元及通信介面之操作排程可觸發各自硬體區塊以將適當控制信號提供至其輸送器元件,以便根據經排程操作來路由資料。
為最小化與ASIC晶片100之操作相關聯之延時,微磚102及向量處理單元104可經定位以減小資料在各種組件之間行進之距離。在一特定實施方案中,微磚102及通信介面108兩者可被分為多個區段,其中微磚區段及通信介面區段兩者經配置使得資料在一微磚與一通信介面之間行進之最大距離減小。例如,在一些實施方案中,微磚102之一第一群組可配置於通信介面108之一第一側上之一第一區段中,且微磚102之一第二群組可配置於通信介面之一第二側上之一第二區段中。因此,與其中全部微磚102配置於通信介面之一個側上之一單一區段中之一組態相比,從一通信介面至最遠微磚之距離可削減一半。
替代地,該等微磚可配置於不同數目個區段中,諸如四個區段。例如,在圖3中展示之實例中,ASIC 100之多個微磚102配置於多個區段110 (110a、110b、110c、110d)中。各區段110包含配置成一格柵圖案之類似數目個微磚102 (例如,各區段110可包含配置成16個列及16個行之256個方塊)。通信介面108亦被劃分為多個區段:一第一通信介面108a及一第二通信介面108b,其等配置於微磚102之區段110之任一側上。第一通信介面108a可透過可控匯流排線耦合至ASIC晶片100之左側上之兩個微磚區段110a、110c。第二通信介面108b可透過可控匯流排線耦合至ASIC晶片100之右側上之兩個微磚區段110b、110d。因此,與其中僅一單一通信介面可用之一配置相比,資料行進至一通信介面108及/或從一通信介面108行進之最大距離(及因此與資料傳播相關聯之延時)可減半。微磚102及通信介面108之其他耦合配置亦可減小資料延時。微磚102及通信介面108之耦合配置可藉由將控制信號提供至可控匯流排線之輸送器元件及多工器而程式化。
在一些實施方案中,一或多個微磚102經組態以起始關於可控匯流排線及/或ASIC 100內之其他微磚(本文中被稱為「控制微磚」)之讀取及寫入操作。ASIC 100內之餘餘微磚可經組態以基於輸入資料執行運算(例如,運算層推論)。在一些實施方案中,控制微磚包含相同於ASIC 100內之其他微磚之組件及組態。可添加控制微磚作為ASIC 100之一或多個額外方塊、一或多個額外列或一或多個額外行。例如,針對微磚102之一對稱格柵(其中各微磚102經組態以對輸入資料執行一運算),可包含控制微磚之一或多個額外列以處置對輸入資料執行運算之微磚102之讀取及寫入操作。例如,各區段110包含微磚之18個列,其中微磚之最後兩個列可包含控制微磚。在一些實施方案中,提供單獨控制微磚增加用於執行運算之其他微磚中可用之記憶體量。提供單獨控制微磚亦可幫助協調操作排程之間的資料傳輸操作。例如,使用控制微磚來控制關於可控匯流排線及/或ASIC 100內之其他微磚之讀取及寫入操作可減少需要檢查排程衝突之個別排程之數目。換言之,若協調控制微磚之操作排程以避免「雙重預訂」在相同計數器時間使用一特定可控匯流排線,則可合理地保證在可控匯流排線上不會發生通信錯誤。然而,如本文中描述之專用於提供控制之單獨微磚並非必要的且在一些情況中不提供單獨控制微磚。實情係,各微磚可將用於起始該微磚之讀取及寫入操作之指令儲存於其本端記憶體中。
此外,雖然圖3中展示之各區段110包含配置成18個列乘以16個行之微磚,但一區段中之微磚102之數目及其等之配置可為不同的。例如,在一些情況中,區段110可包含相同數目個列及行。
此外,儘管在圖3中展示為劃分為四個區段,然微磚102可被劃分為其他不同分組。例如,在一些實施方案中,微磚102被分組為兩個不同區段,諸如向量處理單元104上方(例如,更靠近圖3中展示之頁面頂部)之一第一區段及向量處理單元104下方(例如,更靠近圖3中展示之頁面底部)之一第二區段。在此一配置中,各區段可含有例如配置成縱向18個微磚(沿方向103)乘以橫向32個微磚(沿方向101)之一格柵之596個微磚。區段可含有其他總數目個微磚且可配置成不同大小之陣列。在一些情況中,區段之間的劃分由ASIC 100之硬體特徵來劃界。例如,如圖3中展示,區段110a、110b可藉由向量處理單元104與區段110c、110d分離。
如本文中說明,在一些實施方案中,微磚102之一或多者可專用於儲存操作排程18。即,專用於儲存操作排程之微磚102不參與對輸入資料(諸如權重輸入及激發輸入)執行計算。例如,專用於儲存操作排程之微磚102可儲存多個微磚102 (例如,相鄰微磚102)之個別操作排程。專用於儲存操作排程之微磚102可在由ASIC 100執行一程式之期間以各種時間間隔解壓縮且提供各微磚之操作排程之相關部分。例如,專用於儲存操作排程之一微磚102可在程式開始時使其等操作排程之各自第一部分覆蓋一第一操作時框(例如,計數器時間000000_hex至000FFF_hex)且在計數器到達後續時框之前反覆地使其等操作排程之隨後部分覆蓋一隨後操作時框。替代地,如本文中揭示,不使用專用控制微磚。實情係,在此等情況中,各微磚之本端記憶體儲存該特定微磚之操作排程。
在圖4中展示繪示用於ASIC晶片100中之一微磚200之一實例之一示意圖。各微磚200包含本端記憶體202及耦合至記憶體202之一運算陣列204。本端記憶體202包含定位成接近於運算陣列204之實體記憶體。運算陣列204包含多個胞元206。運算陣列204之各胞元206包含經組態以基於資料輸入(諸如激發輸入及權重輸入)而對胞元206執行一運算(例如,一乘法及累加運算)之電路。各胞元可在時脈信號之一循環上執行運算(例如,乘法及累加運算)。運算陣列204可具有比行更多的列、比列更多的行或相同數目個行及列。例如,在圖4中展示之實例中,運算陣列204包含配置成8個列及8個行之64個胞元。其他運算陣列大小亦係可行的,諸如具有16個胞元、32個胞元、128個胞元或256個胞元等之運算陣列。各微磚可包含相同數目個胞元及/或相同大小運算陣列。接著,ASIC晶片可並行執行之操作之總數目取決於在晶片內具有相同大小運算陣列之微磚之總數目。例如,針對圖3中展示之ASIC晶片100,其含有約1150個微磚,此意謂每個循環可並行執行約92,000個運算。可使用之時脈速度之實例包含(但不限於) 225 MHz、500 MHz、950 MHz、1 GHz、1.25 GHz、1.5 GHz、1.95 Ghz或2 GHz。各個別微磚之運算陣列204係較大脈衝微磚陣列之一子集,如圖3中繪示。
包含於微磚200中之記憶體202可包含例如隨機存取記憶體(RAM),諸如SRAM。可代替地使用其他記憶體。各記憶體202可經組態以儲存與ASIC晶片之n
個微磚102相關聯之總記憶體之1/n
。記憶體202可經提供為一單一晶片或提供於多個晶片中。例如,圖4中展示之記憶體202經提供為四個單埠SRAM,其等之各者耦合至運算陣列204。替代地,記憶體202可經提供為兩個單埠SRAM或八個單埠SRAM及其他組態。在錯誤校正編碼之後,記憶體之聯合容量可為(但不限於)例如16 kB、32 kB、64kB或128 kB。在一些實施方案中,藉由在運算陣列本端提供實體記憶體202,ASIC 100之佈線密度可極大減小。相對於如本文中描述之本端提供,在其中記憶體集中於ASIC 100內之一替代組態中,記憶體頻寬之各位元可需要一導線。覆蓋ASIC 100之各微磚所需之導線之總數目將遠超ASIC 100內之可用空間。相比之下,憑藉為各微磚提供專用記憶體,跨越ASIC 100之區域所需之總數目可實質上減少。
微磚200亦包含可控匯流排線。可控匯流排線可被分類為多個不同群組。例如,可控匯流排線可包含經組態以在各基本方向上在微磚之間傳送資料之通用可控匯流排線210之一第一群組。即,可控匯流排線210之第一群組可包含:匯流排線210a,其等經組態以將資料傳送朝向沿微磚格柵之第一維度101之一第一方向(在圖4中稱為「東方」);匯流排線210b,其等經組態以將資料傳送朝向沿微磚格柵之第一維度101之一第二方向(在圖4中稱為「西方」),其中第二方向與第一方向相反;匯流排線210c,其等經組態以將資料傳送朝向沿微磚格柵之第二維度103之一第三方向(在圖4中稱為「北方」);及匯流排線210d,其等經組態以將資料傳送朝向沿微磚格柵之第二維度103之一第四方向(在圖4中稱為「南方」),其中第四方向與第三方向相反。通用匯流排線210可經組態以攜載控制資料、激發輸入資料、來自及/或至通信介面之資料、來自及/或至向量處理單元之資料及待由微磚200儲存及/或使用之資料(例如,權重輸入)。微磚200可包含一或多個控制元件221 (例如,正反器及多工器)以用於控制可控匯流排線且因此將資料路由至微磚200及/或從微磚200及/或從記憶體202路由資料。
可控匯流排線亦可包含可控匯流排線之一第二群組,在本文中被稱為運算陣列部分和匯流排線220。運算陣列部分和匯流排線220可經組態以攜載從由運算陣列204執行之運算輸出之資料。例如,匯流排線220可經組態以攜載從運算陣列204中之列獲得之部分和資料,如圖4中展示。在此情況中,匯流排線220之數目將匹配陣列204中之列之數目。例如,針對8x8運算陣列,將存在8個部分和匯流排線220,其等之各者耦合至運算陣列204中之一對應列之輸出。運算陣列輸出匯流排線220可經進一步組態以耦合至ASIC晶片內之另一微磚,例如作為ASIC晶片內之另一微磚之一運算陣列之輸入。例如,微磚200之陣列部分和匯流排線220可經組態以接收定位成與微磚200相距至少一個微磚之一第二微磚之一運算陣列之輸入(例如,部分和220a)。接著將運算陣列204之輸出加至部分和線220以產生新部分和220b,其可從微磚200輸出。部分和220b接著可經傳遞至另一微磚或替代地傳遞至向量處理單元。例如,各匯流排線220可耦合至向量處理單元之一對應片段(諸如圖3中之片段106)。
如關於圖3說明,可控匯流排線可包含諸如經組態以容許沿匯流排線輸送資料之輸送器元件(例如,正反器)之電路。在一些實施方案中,各可控匯流排線包含針對各微磚之一對應輸送器元件。如關於圖3進一步說明,可控匯流排線可包含諸如經組態以容許在ASIC晶片之不同微磚、向量處理單元及通信介面之間傳送資料之多工器之電路。多工器可定位於存在一資料源或資料收集點之任何處。例如,在一些實施方案中,如圖4中展示,控制電路221 (諸如多工器)可定位於可控匯流排線之交叉點處(例如,通用匯流排線210a及210d之交叉點處、通用匯流排線210a及210c之交叉點處、通用匯流排210b及210d之交叉點處及/或通用匯流排線210b及210c之交叉點處)。匯流排線交叉點處之多工器可經組態以在交叉點處之匯流排線之間傳送資料。此外,如參考圖1說明,控制電路221可經組態以執行微磚之個別操作排程。例如,控制電路221可藉由將資料路由至微磚102內之適當組件(例如,將至/來自SRAM 202之激發資料或層權重路由至運算陣列204中之適當胞元206)或路由至/來自可控匯流排線之輸出資料及輸入資料而執行操作排程之操作。
圖5A至圖11B係繪示其中將ASIC 100用作用於運算神經網路推論之一硬體加速器之一例示性程序之示意圖。圖5A、圖6A、圖7A、圖8A、圖9、圖10A及圖11A係繪示在程序中之不同時間通過ASIC 100之資料流之一概述之示意圖。圖5B、圖6B、圖7B、圖8B、圖10B及圖11B係分別繪示在與圖5A、圖6A、圖7A、圖8A、圖10A及圖11A相關聯之時間之ASIC 100之一單一微磚(例如,一控制微磚或其他微磚102)內之資料流之示意圖。圖5A至圖11B中之橢圓指示未在圖中展示之重複特徵之存在。一羅盤300設置於圖5A至圖11B之各者中以提供資料流之定向。標籤「N」、「W」、「S」及「E」不對應於實際地理方向,而代替地用於指示資料可流動通過格柵之不同相對方向。在由標籤「N」、「W」、「S」及「E」指示之方向上輸送資料之可控匯流排線在本文中被稱為向北流動之匯流排線、向西流動之匯流排線、向南流動之匯流排線及向東流動之匯流排線。
圖5A至圖11A中之微磚102及向量處理單元104之配置類似於圖3中展示之配置。例如,微磚102之一半可配置於向量處理單元104之一第一側上且微磚102之另一半可配置於向量處理單元104之一第二相對側上。通信介面108在圖5A至圖11A中展示為完全配置於微磚格柵之右側上,但可定位於微磚格柵之任一側上,如圖3之示意圖中描繪。
在一第一步驟中,如圖5A中展示,將一模型(例如,一神經網路模型)之一第一層之輸入值(例如,激發輸入及/或權重輸入)從通信介面108載入至ASIC 100內之一或多個微磚102 (例如,全部微磚102)上。即,根據各自操作排程18,通信介面108讀取外部輸入資料(例如,激發輸入及/或層權重)且將資料傳輸至可控匯流排線。輸入值自通信介面108遵循沿可控匯流排線(例如,諸如本文中描述之通用可控匯流排線)至一或多個控制微磚之一資料路徑。可透過在不同匯流排線交叉之位置處使用多工器(例如,參見圖4中之路由元件221)而在不同匯流排線之間傳送資料。例如,如圖5A中展示,輸入資料沿一資料路徑流動,該資料路徑需要在向西流動之通用可控匯流排線上且接著在向南流動之通用可控匯流排線上行進。可透過在向西流動之匯流排線及向南流動之匯流排線交叉之位置處使用多工器而將輸入資料從向西流動之匯流排線傳送至向南流動之匯流排線。在一些實施方案中,在由ASIC 100執行一先前第一推論時,可將一第二推論之權重輸入載入至一或多個控制微磚。換言之,協調控制微磚之操作排程與運算推論之其他微磚102之操作排程,使得在其他微磚102運算一第一推論之相同計數器時間,控制微磚102準備新激發資料及/或下一推論之權重以發送至其他微磚102進行下一推論之運算。
圖5B係繪示來自ASIC 100之一微磚102之一實例之一詳細視圖之一示意圖。如圖5B中展示,微磚102可包含輸入值儲存於其上之記憶體302。記憶體302可包含如本文中關於圖4描述之任何適合記憶體。如上文論述,記憶體302可用於儲存微磚之個別操作排程18 (或其在採用專用微磚102來儲存操作排程之實施方案中之部分)。從鄰近於微磚102行進或行進通過微磚102之一或多個向南流動之通用可控匯流排線310d獲得輸入值。可透過使用一多工器將來自向南流動之可控匯流排線310d之資料傳送至記憶體302。在此步驟期間不使用其他通用可控匯流排線(310a、310b、310c)。
微磚102亦包含直接耦合至記憶體302之胞元306之一運算陣列。如本文中說明,胞元306之運算陣列可為組成ASIC之微磚之胞元之一較大脈動陣列之一子集。胞元306配置成一陣列,其中圖5B中展示之一單一胞元306在一位置(i
,j
)=(0,0)處,其中參數i
表示陣列內之一胞元列位置且j
表示陣列中之一胞元行位置。在圖5B中展示之實例中,運算陣列具有8個列及8個行,但其他大小亦係可行的。運算陣列之各胞元306可包含經組態以基於在微磚處接收之資料而執行運算之電路。例如,各胞元306可包含乘法器電路、加法器電路及一或多個暫存器。各胞元306之輸出可作為一部分和傳遞至運算陣列內之一鄰近胞元或ASIC 100中之另一微磚之一運算陣列內之一胞元。在隨後步驟中使用胞元306之運算陣列。
微磚102亦包含用於提供來自先前微磚之資料之可控匯流排線320。例如,可控匯流排線320可攜載從ASIC 100中之一先前微磚之一運算陣列獲得之部分和輸出資料且將部分和輸出資料作為一輸入提供至微磚102內之運算陣列之胞元。在此步驟中不使用可控匯流排線320。
微磚102亦包含用於將激發輸入值作為一輸入提供至運算陣列之胞元306之可控匯流排線330。例如,可將激發輸入值提供至胞元306內之乘法器電路。可從通信介面108或從ASIC 100中之另一微磚內之胞元獲得激發輸入值。可透過使用一多工器將來自可控匯流排線330之資料傳送至胞元306。在圖5A至圖5B中描繪之例示性步驟中不使用可控匯流排線330。
如本文中說明,在一些實施方案中,一或多個微磚102專用於儲存操作排程18及/或來自向量處理單元104之輸出資訊。在一些實施方案中,一或多個控制微磚內之運算陣列可不用於執行運算。替代地,一或多個控制微磚可經組態以儲存操作排程18以及對輸入資料(諸如所接收權重輸入及激發值)執行運算。在一些實施方案中,將權重輸入載入至其中將使用權重輸入之各微磚102之記憶體中,而無需首先將權重輸入儲存於一或多個控制微磚之一子集中。
在一第二步驟中,如圖6A中展示,在經排程計數器值處,將權重輸入301載入至微磚102內之運算陣列之個別胞元306中。將權重輸入301載入至個別胞元306中可包含將資料從一或多個控制微磚之記憶體傳送至權重輸入301所屬之對應微磚102。權重輸入301可沿通用可控匯流排線輸送至微磚102且透過耦合至匯流排線及記憶體之多工器傳送至記憶體。圖6B係一微磚102之一實例之一詳細視圖。權重輸入301可在模型執行之持續時間內儲存於記憶體302中,其可包含多個推論之運算。作為從一或多個控制微磚載入權重輸入301之一替代方案,權重輸入301可已從通信介面108直接預載入至微磚102之記憶體中。為準備用於執行之一模型,針對各微磚102,可將權重輸入301從微磚102之記憶體302載入至該微磚102內之運算陣列之各胞元306中。例如,可將權重輸入301載入至胞元306內之一暫存器400 (亦被稱為一「後暫存器」)中。後暫存器之使用容許胞元306在將下一權重輸入載入至後暫存器中時對一當前權重輸入執行一運算。儘管在圖6B中僅針對一個胞元306展示載入權重暫存器,然在此步驟期間亦可載入運算陣列內之其他胞元之權重暫存器。
在一第三步驟中,如圖7A中展示,在經排程計數器值處,將激發值500引入至微磚102中且可儲存於該處之記憶體302內。可在多個時脈循環內傳送激發值500。接著,藉由各微磚102之運算陣列使用來自微磚102中之記憶體302之所接收激發值500及權重輸入301執行運算。例如,運算可包含使一激發值乘以一權重輸入且接著對該結果與一不同權重輸入及激發值之乘積求和。在一些實施方案中,在可控匯流排線330上將激發值500輸送至微磚102且在微磚102之間輸送激發值500。可控匯流排線330之各者可沿一相同方向延伸。例如,如圖7B中展示,可控匯流排線330沿正交於可控匯流排線320延伸所沿之一格柵維度之一格柵維度橫向延伸。此外,如由圖7A中之箭頭501及圖7B中之可控匯流排線330上之箭頭501指示,激發輸入資料500在相同(例如,向東流動)方向上在匯流排線330上行進。替代地,在一些實施方案中,一些激發輸入值500在一第一方向(例如,向東流動方向)上在一些可控匯流排線330上行進且一些其他激發輸入值500在一第二相反方向(例如,向西流動方向)上在一些其他可控匯流排線330上行進。
在一些實施方案中,延伸穿過各微磚102之可控匯流排線330之數目由運算陣列之大小判定。例如,延伸穿過各微磚102之可控匯流排線330之數目可至少等於運算陣列內之胞元之列數目。在圖7B中展示之實例中,鑑於微磚102之運算陣列內存在胞元306之8個列,存在通過微磚102之8個可控匯流排線330。在一些實施方案中,各單獨可控匯流排線330將激發輸入值500傳送至運算陣列之一對應列內之胞元306。例如,針對一微磚102內之胞元306之8x8運算陣列,一第一可控匯流排線330將激發輸入值500傳送至陣列之一第一列內之胞元306,一第二可控匯流排線330將激發輸入值500傳送至陣列之一第二列內之胞元306等,直至最後可控匯流排330將激發輸入值500傳送至陣列之最後列內之胞元306。額外可控匯流排線(例如,部分和匯流排線)可通過各微磚以從另一微磚提供部分和,接收及組合該微磚內之運算結果與所提供之部分和且將新部分和輸出至一新微磚或向量處理單元。
在一些實施方案中,可控匯流排線330將激發輸入值500傳送至經組態以在胞元306內執行一運算之電路。例如,如圖7B中展示,可控匯流排線330經組態以將激發輸入值500傳送至胞元306內之乘法器電路502。可透過在可控匯流排線330上使用多工器而將激發輸入值500傳送至乘法器電路502。
在一些實施方案中,一旦激發輸入值500及權重輸入值301被判定為處於適當位置中(例如,在執行載入操作所需之預定數目個計數器循環之後),微磚102內之運算陣列之胞元306便可使用來自微磚102中之記憶體302之所接收激發輸入值500及權重輸入值301執行一運算。例如,如圖7B中展示,先前儲存於暫存器400中之權重輸入值301被傳送至暫存器504 (亦被稱為一「前暫存器」)。接著,使用乘法器電路502將權重輸入值301與所接收激發輸入值500相乘。
如本文中說明,在可控匯流排線330上輸送激發輸入值500。在一些實施方案中,可控匯流排線330係通用可控匯流排線。在一些實施方案中,可控匯流排線330可專用於提供激發輸入。例如,如圖7B中展示,可藉由線330將激發輸入值提供至一微磚102 (例如,至微磚102內之一運算陣列之胞元306),而其他通用可控匯流排線310b可用於將其他資料及/或指令提供至微磚102。
在一第四步驟中,如圖8B中展示,在經排程計數器值處,將各胞元306內之權重輸入值301與激發輸入值500之間的一運算之一結果傳遞至胞元306內之電路602以產生一輸出值600。在圖8B之實例中,電路602包含一加總電路。各胞元306內之加總電路602經組態以對乘法器電路502之乘積與從ASIC 100中之另一微磚102或從運算陣列內之另一胞元306獲得之另一值求和。從另一微磚102或從另一胞元306獲得之值可包含例如一累加值。因此,加總電路602之輸出值600係一新累加值。接著,加總電路602可將新累加值600發送至定位於微磚102內之運算陣列之一底部(例如,在一向南流動方向上)鄰近胞元中之另一胞元。新累加值600可被用作底部鄰近胞元中之一加總之一運算元。針對運算陣列內之胞元之最後列,可將新累加值600傳送至ASIC 100內之另一微磚102,如圖8A中展示。在另一實例中,可將新累加值600傳送至與其中產生新累加值600之微磚102相距至少一個微磚之另一微磚102。替代地,亦如圖8A中展示,將來自運算陣列內之胞元之最後列之新累加值600傳送至向量處理單元104。
傳送至一微磚102中或從一微磚102傳送出之累加值600可沿可控匯流排線320輸送。可控匯流排線320之各者沿一相同方向延伸。例如,如圖8B中展示,可控匯流排線320沿正交於可控匯流排線330延伸所沿之一格柵維度之一格柵維度垂直延伸。此外,如由圖8A中之箭頭604及圖8B中之箭頭604指示,累加值600取決於向量處理單元104相對於產生累加值600之微磚102之位置而在一向北流動或向南流動方向上在可控匯流排線320上行進。例如,針對定位於圖8A中之向量處理單元104上方之微磚102,累加值600在朝向向量處理單元104之一向南流動方向上在可控匯流排線320上行進,而針對定位於向量處理單元104下方之微磚102,累加值600在朝向向量處理單元104之一向北流動方向上行進。
在一第五步驟中,如圖9中展示,在經排程計數器值處,藉由向量處理單元104處理由向量處理單元104接收之資料(例如,累加值)以提供經處理值900。在向量處理單元104處處理資料可包含:將一偏差應用於在向量處理單元104處接收之資料;執行額外累加運算;及/或將一非線性函數(例如,如神經網路系統中已知之整流函數或S型函數)應用於所接收資料。亦可藉由向量處理單元104應用其他操作。向量處理單元104可包含配置於多個片段106中之電路,其中各片段106經組態以處理從微磚102之一對應行接收之資料且產生一對應經處理值900。
在一第六步驟中,如圖10A中展示,在經排程計數器值處,將來自向量處理單元104之經處理值900傳送至ASIC 100之一或多個微磚(例如,ASIC 100之微磚之一子集)且儲存於該一或多個微磚中。例如,可將經處理值900發送至定位成直接鄰近於向量處理單元104之控制微磚103。替代地或另外,可將經處理值900發送至ASIC 100內之其他微磚102之一或多者。可透過一通用可控匯流排線(諸如可控匯流排線310c)將經處理值900傳送至一或多個微磚。在到達一微磚(例如,一控制微磚或其他微磚102)之後,經處理值900可儲存於微磚之記憶體202中。例如,可使用與可控匯流排線310c相關聯之一多工器將經處理值900傳送至記憶體902。儲存經處理值900之步驟可在獲得各模型層之推論之後發生。在一些實施方案中,可將經處理值900作為輸入值提供至模型之下一層。
在一第七步驟中,如圖11A及圖11B中展示,在經排程計數器值處,可從ASIC 100匯出經處理值900。例如,經處理值900可從一或多個控制微磚之記憶體202傳送至通信介面108。可在可控匯流排線(例如,可控匯流排線310c及/或310d)上將經處理值900輸送至通信介面108。可透過與匯流排線相關聯之多工器將經處理值900傳送至可控匯流排線。
例如,若已獲得一模型之一最後層之推論或若已在多個ASIC之間分割模型且已獲得與ASIC 100相關聯之最後層之推論,則可從ASIC 100匯出經處理值900。可藉由通信介面108之SerDes介面接收經處理值900且將其等匯出至另一目的地,包含(但不限於)例如另一ASIC 100或一場可程式化閘陣列晶片。
關於圖5A至圖11B描述之例示性程序可需要在執行胞元運算之前貫穿各微磚之運算陣列完全傳播激發值及權重輸入,或胞元可在完全傳播全部值之前執行運算。在任一情況中,可協調個別微磚之操作排程,使得對運算適當地計時。例如,若一特定機器學習程式需要在執行胞元運算之前使激發值及權重輸入完全傳播通過各微磚之運算陣列,則操作指令可針對確保完全傳播激發值及權重之一時間排程運算之執行。此外,儘管ASIC 100已被描述為將權重輸入發送至一運算陣列之行且將激發輸入發送至運算陣列之列,然在一些實施方案中,將權重輸入發送至陣列之列且將激發輸入發送至陣列之行。
此外,儘管運算陣列已在本文中被描述為在各胞元內使用個別加總電路,然運算陣列內之胞元群組(例如,一行內之全部胞元)可直接耦合至一單一加總電路,其對來自群組中之胞元之所接收輸出求和,因此減少儲存輸出所需之加總電路之數目。
本說明書中描述之標的物及功能操作之實施例可在數位電子電路、電腦硬體(包含本說明書中揭示之結構及其等結構等效物)或其等之一或多者之組合中實施。本說明書中描述之標的物之實施例可被實施為一或多個電腦程式,即,編碼於一有形非暫時性程式載體上以由資料處理設備執行或控制資料處理設備之操作的電腦程式指令之一或多個模組。替代地或另外,可將程式指令編碼於一人工產生之傳播信號(例如,一機器產生之電信號、光學信號或電磁信號)上,該傳播信號經產生以編碼用於傳輸至適合接收器設備之資訊以由一資料處理設備執行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
術語「資料處理設備」涵蓋用於處理資料之各種設備、裝置及機器,包含例如一可程式化處理器、一電腦或多個處理器或電腦。設備可包含專用邏輯電路,例如一FPGA(場可程式化閘陣列)或一ASIC。除硬體之外,設備亦可包含產生所述電腦程式之一執行環境之程式碼,例如構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合之程式碼。
本說明書中描述之程序及邏輯流程可由一或多個可程式化電腦執行,該一或多個可程式化電腦執行一或多個電腦程式以藉由對輸入資料進行操作且產生輸出而執行功能。程序及邏輯流程亦可由專用邏輯電路(例如,一FPGA、一ASIC或一GPGPU (通用圖形處理單元))執行,且設備亦可被實施為專用邏輯電路。
雖然本說明書含有許多特定實施方案細節,但此等細節不應被解釋為限制任何發明或可主張內容之範疇,而應當解釋為可特定於特定發明之特定實施例之特徵之描述。本說明書中在單獨實施例之內容脈絡中描述之某些特徵亦可在一單一實施例中組合實施。相反地,在一單一實施例之內容脈絡中描述之各種特徵亦可單獨地或以任何適合子組合在多項實施例中實施。而且,儘管上文可將特徵描述為以特定組合起作用且甚至最初如此主張,然在一些情況中,來自所主張組合之一或多個特徵可從組合中免除,且所主張組合可係關於一子組合或一子組合之變動。
類似地,雖然在圖式中按一特定順序描繪操作,但此不應被理解為要求按所展示之特定順序或循序順序執行此等操作,或執行所有繪示之操作以達成所要結果。在某些境況中,多任務處理及平行處理可為有利的。再者,在上文中描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中皆需要此分離,且應理解所描述之程式組件及系統可大體上一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的物之特定實施例。其他實施例在以下發明申請專利範圍之範疇內。例如,儘管匯流排線被描述為「可控」,然並非全部匯流排線需要具有相同控制位準。例如,可存在不同可控性程度,其中僅在一些匯流排線在其等可獲得資料或其等可發送資料之微磚之數目方面受限時而控制一些匯流排線。在另一實例中,一些匯流排線可專用於沿一單一方向(諸如北方、東方、西方或南方,如本文中描述)提供資料。在一些情況中,在發明申請專利範圍中敘述之動作可以一不同順序執行且仍達成所要結果。作為一個實例,在附圖中描繪之程序不必要求所展示之特定順序或依序順序來達成所要結果。在某些實施方案中,多任務處理及平行處理可為有利的。
10:積體電路晶片
12:硬體區塊
14:計數器
16:共用資料匯流排
18:操作排程
20:控制電路
22:本端記憶體
24:運算單元
30:資料
32:輸出資料
34:輸出
100:特定應用積體電路(ASIC)
101:第一維度
102:微磚
103:第二維度
104:向量處理單元
106:片段
108:通信介面
110a:區段
110b:區段
110c:區段
110d:區段
200:微磚
202:記憶體
204:運算陣列
206:胞元
210a:匯流排線
210b:匯流排線
210c:匯流排線
210d:匯流排線
220:運算陣列部分和匯流排線
220a:部分和
220b:部分和
221:控制元件/控制電路/路由元件
300:羅盤
301:權重輸入
302:記憶體
306:胞元
310a:通用可控匯流排線
310b:通用可控匯流排線
310c:通用可控匯流排線
310d:通用可控匯流排線
320:可控匯流排線
330:可控匯流排線
400:暫存器
500:激發值/激發輸入值/激發輸入資料
501:箭頭
502:乘法器電路
504:暫存器
600:輸出值/累加值
602:電路/加總電路
604:箭頭
圖1係繪示經組態以根據經排程操作而操作之一例示性積體電路裝置之一示意圖。
圖2A係繪示圖1之積體電路裝置之硬體區塊之操作排程之間的例示性經協調操作之一時序圖,且圖2B描繪繪示在操作排程之執行期間在圖1之積體電路裝置內之一例示性資料流量之一系列圖。
圖3係繪示可經組態以根據經排程操作而操作之專用邏輯電路之一實例之一示意圖。
圖4係繪示用於圖3之ASIC晶片中之一微磚之一實例之一示意圖。
圖5A、圖6A、圖7A、圖8A、圖9、圖10A及圖11A係繪示在由ASIC實施之一例示性程序中在不同時間通過一ASIC之一資料流之一概述之示意圖。
圖5B、圖6B、圖7B、圖8B、圖10B及圖11B係分別繪示在與圖5A、圖6A、圖7A、圖8A、圖10A及圖11A相關聯之時間在一ASIC之一單一微磚內之資料流之細節之示意圖。
10:積體電路晶片
12:硬體區塊
14:計數器
16:共用資料匯流排
18:操作排程
20:控制電路
22:本端記憶體
24:運算單元
Claims (42)
- 一種積體電路裝置,其包括: 一計數器; 一第一硬體區塊,其可通信地耦合至該計數器且經組態以根據包括一第一組操作之一第一排程而操作,該第一組操作之各者經排程以由該第一硬體區塊在該計數器之一第一各自值處執行;及 一第二硬體區塊,其可通信地耦合至該計數器及該第一硬體區塊,該第二硬體區塊經組態以根據包括一第二組操作之一第二排程而操作,該第二組操作之各者經排程以由該第二硬體區塊在該計數器之一第二各自值處執行,及 其中協調該第二排程之操作與該第一排程之操作,使得該第一排程觸發該第一硬體區塊以在該計數器之一第一預排程值處將資料發送至該第二硬體區塊,且該第二排程觸發該第二硬體區塊以在該計數器之該第一預排程值之後的一第二預排程值處在一輸入處接受該資料。
- 如請求項1之裝置,其中該第一組操作及該第二組操作各包括一機器學習程式之一各自部分。
- 如請求項1之裝置,其中該第一組操作中之各操作在預定數目個時脈循環中執行。
- 如請求項1之裝置,其中協調該第一排程及該第二排程之操作以容許獨立於流量控制信號而在該第一硬體區塊與該第二硬體區塊之間交換資料。
- 如請求項1之裝置,其進一步包括複數個其他硬體區塊,其中協調該第一排程之操作與該等其他硬體區塊之各自操作排程以容許獨立於資料流量控制信號而在該第一硬體區塊與該等其他硬體區塊之一或多者之間交換資料。
- 如請求項1之裝置,其中該第一硬體區塊包括: 本端記憶體,其經組態以儲存該第一排程;及 控制電路,其耦合至該本端記憶體且經組態以執行該第一排程之該第一組操作。
- 如請求項6之裝置,其中該控制電路經組態以在執行包含於該第一排程之一部分中之操作之前解壓縮該部分。
- 如請求項1之裝置,其中該積體電路裝置係一特定應用積體電路。
- 如請求項1之裝置,其中該第一硬體區塊及該第二硬體區塊係包含經組態以執行神經網路操作之專用電路之硬體微磚。
- 如請求項9之裝置,其中該第一硬體區塊包括: 胞元之一運算陣列;及 本端記憶體,其耦合至胞元之該運算陣列。
- 如請求項1之裝置,其中該第一排程及該第二排程各包括由該積體電路裝置執行之一程式之一部分。
- 一種積體電路操作方法,其包括: 針對一積體電路裝置之一第一硬體區塊,獲得識別待由該第一硬體區塊執行之一第一組操作之一第一排程; 針對該積體電路裝置之一第二硬體區塊,獲得識別待由該第二硬體區塊執行之一第二組操作之一第二排程,其中協調該第二排程之操作與該第一排程之操作,使得該第一排程觸發該第一硬體區塊以在一計數器之一第一預排程值處將資料發送至該第二區塊,且該第二排程觸發該第二硬體區塊以在該計數器之該第一預排程值之後的一第二預排程值處在一輸入處接受該資料; 藉由該第一硬體區塊根據該第一排程執行該第一組操作;及 藉由該第二硬體區塊根據該第二排程執行該第二組操作。
- 如請求項12之方法,其中該第一排程及該第二排程各包括由該積體電路裝置執行之一程式之一部分。
- 如請求項12之方法,其中該第一組操作及該第二組操作各包括一機器學習程式之一各自部分。
- 如請求項12之方法,其中該第一組操作中之各操作在預定數目個時脈循環中執行。
- 如請求項12之方法,其中協調該第一排程及該第二排程之操作以容許獨立於流量控制信號而在該第一硬體區塊與該第二硬體區塊之間交換資料。
- 如請求項12之方法,其進一步包括藉由該第一硬體區塊在執行包含於該第一排程之一部分中之操作之前解壓縮該部分。
- 如請求項12之方法,其中針對該第一組操作中之各操作,該第一排程包括一經排程計數器值及指示待由該第一硬體區塊在該經排程計數器值處執行之一特定操作之資料。
- 如請求項12之方法,其中藉由該第一硬體區塊根據該第一排程執行該第一組操作包括: 從一計數器接收等於該第一組操作中之一第一操作之一第一經排程計數器值之一第一計數器值; 回應於接收該第一計數器值,引起該第一硬體區塊之一第一組一或多個運算單元執行該第一操作; 從該計數器接收等於該第一組操作中之一第二操作之一第二經排程計數器值之一第二計數器值;及 回應於接收該第二計數器值,引起該第一硬體區塊之一第二組一或多個運算單元執行該第二操作。
- 如請求項12之方法,其中該第一硬體區塊及該第二硬體區塊係包含經組態以執行神經網路操作之專用電路之硬體微磚。
- 一種積體電路裝置,其包括: 一第一硬體區塊,其經組態以根據包括一第一組操作之一第一排程而操作,該第一組操作之各者經排程以由該第一硬體區塊在一各自預排程時間執行,其中該第一硬體區塊包括包含複數個胞元之一運算陣列,該複數個胞元之各胞元經組態以執行一乘法累加運算; 一第二硬體區塊,其可通信地耦合至該第一硬體區塊,該第二硬體區塊經組態以根據包括一第二組操作之一第二排程而操作,該第二組操作之各者經排程以由該第二硬體區塊在一各自預排程時間執行;及 一編譯器,其經組態以產生該第一排程及該第二排程, 其中協調該第一排程之該第一組操作與該第二排程之該第二組操作以允許在該第一硬體區塊與該第二硬體區塊之間傳送資料,且 其中該第一排程及該第二排程之各者分別表示整體上待由該積體電路裝置執行之一神經網路程式之一部分。
- 如請求項21之積體電路裝置,其中該第一組操作及該第二組操作包括一機器學習程式之一各自部分。
- 如請求項21之積體電路裝置,其中該第一組操作中之各操作在預定數目個時脈循環中執行。
- 如請求項21之積體電路裝置,其進一步包括至少一個其他硬體區塊,其中協調該第一排程之操作與該至少一個其他硬體區塊之各自操作排程以允許在該第一硬體區塊與該至少一個其他硬體區塊之間傳送資料。
- 如請求項24之積體電路裝置,其中該至少一個其他硬體區塊包括經組態以執行純量運算之電路。
- 如請求項24之積體電路裝置,其中該至少一個其他硬體區塊包括經組態以執行向量運算之電路。
- 如請求項21之積體電路裝置,其中該第一硬體區塊之該運算陣列包括經組態以執行矩陣運算之電路且該第二硬體區塊包括經組態以執行記憶體存取操作之電路。
- 如請求項27之積體電路裝置,其中該第二硬體區塊儲存該第一操作排程。
- 如請求項27之積體電路裝置,其中該第一硬體區塊經組態以將該運算陣列之一輸出傳送至該第二硬體區塊。
- 如請求項21之積體電路裝置,其中該第一硬體區塊及該第二硬體區塊係包含經組態以執行神經網路操作之專用電路之硬體微磚。
- 一種積體電路操作方法,其包括: 藉由一積體電路裝置之一編譯器產生包括一第一組操作之一第一排程,該第一組操作之各者經排程以由一第一硬體區塊在一各自預排程時間執行; 藉由該編譯器產生包括一第二組操作之一第二排程,該第二組操作之各者經排程以由一第二硬體區塊在一各自預排程時間執行; 藉由該第一硬體區塊根據該第一排程執行該第一組操作,其中該第一硬體區塊包括包含複數個胞元之一運算陣列,該複數個胞元之各胞元經組態以執行一乘法累加運算; 藉由該積體電路裝置之該第二硬體區塊根據該第二排程執行該第二組操作, 其中該第一排程及該第二排程之各者分別表示整體上待由該積體電路裝置執行之一神經網路程式之一部分。
- 如請求項31之方法,其中該第一組操作及該第二組操作包括一機器學習程式之一各自部分。
- 如請求項31之方法,其中該第一組操作中之各操作在預定數目個時脈循環中執行。
- 如請求項31之方法,其中該積體電路包括至少一個其他硬體區塊,其中協調該第一排程之操作與該至少一個其他硬體區塊之各自操作排程以允許在該第一硬體區塊與該至少一個其他硬體區塊之間傳送資料。
- 如請求項34之方法,其中該至少一個其他硬體區塊包括經組態以執行純量運算之電路。
- 如請求項34之方法,其中該至少一個其他硬體區塊包括經組態以執行向量運算之電路。
- 如請求項31之方法,其中該第一硬體區塊之該運算陣列包括經組態以執行矩陣運算之電路且該第二硬體區塊包括經組態以執行記憶體存取操作之電路。
- 如請求項37之方法,其包括藉由該第二硬體區塊儲存該第一操作排程。
- 如請求項37之方法,其包括藉由該第一硬體區塊將該第一硬體區塊之該運算陣列之一輸出傳送至該第二硬體區塊。
- 如請求項31之方法,其中該第一硬體區塊及該第二硬體區塊係包含經組態以執行神經網路操作之專用電路之硬體微磚。
- 一種電腦程式產品,其包括當由包括一第一硬體區塊及一第二硬體區塊之一積體電路執行時引起該積體電路執行如請求項31中任一項之方法之電腦可讀程式碼。
- 如請求項21之積體電路裝置,其進一步包括包含一先進先出(FIFO)緩衝器之一通信介面,該通信介面經組態以從一或多個外部裝置接收輸入資料且根據包括指令之一第三排程而操作以按一時間間隔從該FIFO緩衝器存取輸入資料,該時間間隔係基於來自該一或多個外部裝置之通信之一定界延遲。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201962887724P | 2019-08-16 | 2019-08-16 | |
| US62/887,724 | 2019-08-16 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202113596A TW202113596A (zh) | 2021-04-01 |
| TWI764236B true TWI764236B (zh) | 2022-05-11 |
Family
ID=72266864
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW109127774A TWI764236B (zh) | 2019-08-16 | 2020-08-14 | 晶片上操作的顯式排程 |
Country Status (7)
| Country | Link |
|---|---|
| US (2) | US12455762B2 (zh) |
| EP (1) | EP3980888A1 (zh) |
| JP (1) | JP7342247B2 (zh) |
| KR (1) | KR102760024B1 (zh) |
| CN (1) | CN114258538B (zh) |
| TW (1) | TWI764236B (zh) |
| WO (1) | WO2021034675A1 (zh) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112463056B (zh) * | 2020-11-28 | 2023-06-09 | 苏州浪潮智能科技有限公司 | 一种多节点分布式训练方法、装置、设备及可读介质 |
| US20240272943A1 (en) * | 2021-09-29 | 2024-08-15 | Nvidia Corporation | System task management for computing systems |
| US12541369B2 (en) | 2022-07-13 | 2026-02-03 | Simplex Micro, Inc. | Executing phantom loops in a microprocessor |
| KR20250089228A (ko) * | 2023-12-11 | 2025-06-18 | 이화여자대학교 산학협력단 | 템플릿에 기반하는 신경 구조 탐색장치 및 그 방법 |
| US20250298612A1 (en) * | 2024-03-19 | 2025-09-25 | Simplex Micro, Inc. | Apparatus and method for hiding vector load latency in a time-based vector coprocessor |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150186313A1 (en) * | 2013-12-27 | 2015-07-02 | Inder M. Sodhi | Managing Shared Resources Between Multiple Processing Devices |
| TW201826122A (zh) * | 2016-12-31 | 2018-07-16 | 美商英特爾股份有限公司 | 用於異質計算之系統,方法,及設備 |
| TW201901534A (zh) * | 2017-05-19 | 2019-01-01 | 美商谷歌有限責任公司 | 排程神經網路處理 |
| US20190121388A1 (en) * | 2017-10-20 | 2019-04-25 | Graphcore Limited | Compiler method |
| US20190121784A1 (en) * | 2017-10-20 | 2019-04-25 | Graphcore Limited | Synchronization in a multi-tile, multi-chip processing arrangement |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9465620B2 (en) | 2012-12-20 | 2016-10-11 | Intel Corporation | Scalable compute fabric |
| JP2018101917A (ja) | 2016-12-20 | 2018-06-28 | キヤノン株式会社 | 通信装置、制御方法、および、プログラム |
| US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
| US10909447B2 (en) | 2017-03-09 | 2021-02-02 | Google Llc | Transposing neural network matrices in hardware |
| US10365987B2 (en) | 2017-03-29 | 2019-07-30 | Google Llc | Synchronous hardware event collection |
| CN107357563B (zh) * | 2017-05-25 | 2018-11-09 | 腾讯科技(深圳)有限公司 | 对象移动方法和装置以及存储介质、电子装置 |
| US12061990B2 (en) | 2017-10-17 | 2024-08-13 | Xilinx, Inc. | Static block scheduling in massively parallel software defined hardware systems |
| US11513839B2 (en) * | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Memory request size management in a multi-threaded, self-scheduling processor |
-
2020
- 2020-08-14 EP EP20764238.0A patent/EP3980888A1/en active Pending
- 2020-08-14 KR KR1020227007685A patent/KR102760024B1/ko active Active
- 2020-08-14 US US17/635,772 patent/US12455762B2/en active Active
- 2020-08-14 WO PCT/US2020/046392 patent/WO2021034675A1/en not_active Ceased
- 2020-08-14 JP JP2022509681A patent/JP7342247B2/ja active Active
- 2020-08-14 TW TW109127774A patent/TWI764236B/zh active
- 2020-08-14 CN CN202080057906.0A patent/CN114258538B/zh active Active
-
2024
- 2024-11-15 US US18/949,299 patent/US20250077276A1/en active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150186313A1 (en) * | 2013-12-27 | 2015-07-02 | Inder M. Sodhi | Managing Shared Resources Between Multiple Processing Devices |
| TW201826122A (zh) * | 2016-12-31 | 2018-07-16 | 美商英特爾股份有限公司 | 用於異質計算之系統,方法,及設備 |
| TW201901534A (zh) * | 2017-05-19 | 2019-01-01 | 美商谷歌有限責任公司 | 排程神經網路處理 |
| US20190121388A1 (en) * | 2017-10-20 | 2019-04-25 | Graphcore Limited | Compiler method |
| US20190121784A1 (en) * | 2017-10-20 | 2019-04-25 | Graphcore Limited | Synchronization in a multi-tile, multi-chip processing arrangement |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20220041926A (ko) | 2022-04-01 |
| WO2021034675A1 (en) | 2021-02-25 |
| JP7342247B2 (ja) | 2023-09-11 |
| EP3980888A1 (en) | 2022-04-13 |
| KR102760024B1 (ko) | 2025-01-24 |
| US20220326988A1 (en) | 2022-10-13 |
| US20250077276A1 (en) | 2025-03-06 |
| JP2022544796A (ja) | 2022-10-21 |
| CN114258538B (zh) | 2024-04-12 |
| US12455762B2 (en) | 2025-10-28 |
| TW202113596A (zh) | 2021-04-01 |
| CN114258538A (zh) | 2022-03-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI764236B (zh) | 晶片上操作的顯式排程 | |
| US12057834B2 (en) | Application specific integrated circuit accelerators | |
| US11176449B1 (en) | Neural network accelerator hardware-specific division of inference into groups of layers | |
| US20250068815A1 (en) | Initializing on-chip operations | |
| US10564929B2 (en) | Communication between dataflow processing units and memories | |
| KR102812909B1 (ko) | 멀티-칩 시스템의 동기화 | |
| HK40071878A (zh) | 片上操作的显式调度 | |
| HK40071878B (zh) | 片上操作的显式调度 | |
| US12147379B2 (en) | Scalable acceleration of reentrant compute operations | |
| US20230185577A1 (en) | Communication in a Computer Having Multiple Processors | |
| HK40116427A (zh) | 初始化片上操作的方法和系统 | |
| HK40093011B (zh) | 初始化片上操作的方法和系统 | |
| HK40093011A (zh) | 初始化片上操作的方法和系统 |