[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

TW202127840A - 初始化晶片上操作 - Google Patents

初始化晶片上操作 Download PDF

Info

Publication number
TW202127840A
TW202127840A TW109128679A TW109128679A TW202127840A TW 202127840 A TW202127840 A TW 202127840A TW 109128679 A TW109128679 A TW 109128679A TW 109128679 A TW109128679 A TW 109128679A TW 202127840 A TW202127840 A TW 202127840A
Authority
TW
Taiwan
Prior art keywords
micro
brick
hardware
bricks
data
Prior art date
Application number
TW109128679A
Other languages
English (en)
Other versions
TWI758833B (zh
Inventor
邁克爾 亞倫 甘特
賴納 波普
帕維爾 克拉扎瑟夫斯基
克里芙德 比弗爾
Original Assignee
美商谷歌有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商谷歌有限責任公司 filed Critical 美商谷歌有限責任公司
Publication of TW202127840A publication Critical patent/TW202127840A/zh
Application granted granted Critical
Publication of TWI758833B publication Critical patent/TWI758833B/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/06Structured ASICs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Geometry (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Logic Circuits (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

本發明揭示一種組態包含多個硬體微磚之一積體電路之方法,其包含:藉由將該多個硬體微磚中除一最後硬體微磚之外之各硬體微磚組態為處於一資料轉送狀態中而建立通過該多個硬體微磚之一資料轉送路徑,其中將除該最後硬體微磚之外之各硬體微磚組態為處於一轉送狀態中包含安裝指定該硬體微磚處於該資料轉送狀態中之一對應預定義時間長度之一各別轉送狀態計數器;沿著該資料轉送路徑對該複數個硬體微磚之各硬體微磚供應包括該硬體微磚之程式資料之一各別程式資料封包;及針對該多個硬體微磚之各硬體微磚安裝該各別程式資料。

Description

初始化晶片上操作
本發明係關於積體電路操作及初始化不同積體電路硬體區塊之操作。
藉由處理器及微控制器晶片傳輸之資料通常包含指定將資料發送至何處之經編碼資訊,諸如一標頭。因此,接收此資料之各其他處理器或微控制器必須包含用於解碼標頭且作出經接收資料是否應保存、經安裝以初始化處理器或微控制器或經轉送至又一電路之判定之解碼邏輯。
一般言之,本發明係關於一半導體晶片之初始化組態,其中對晶片執行之操作經顯式排程(操作可被稱為「確定性」)。更具體言之,本發明係關於一種被劃分為個別硬體區塊之半導體晶片,其中根據顯式排程在硬體區塊之間傳送資料。硬體區塊代替性地經預先組態以根據預定動作處置資料,而非建構硬體區塊以包含基於經接收資料之內容判定是否安裝經接收資料、將經接收資料保存至記憶體或將經接收資料轉送至另一硬體區塊之解碼邏輯或類似特徵。以此方式,硬體區塊可經特性化為關於經接收資料之最終目的地「不可知」。
一般言之,在一些態樣中,本發明之標的物體現於組態包含多個硬體微磚之一積體電路之方法中,其中該等方法包含:藉由將該多個硬體微磚中除一最後硬體微磚之外之各硬體微磚組態為處於一資料轉送狀態中而建立通過該多個硬體微磚之一資料轉送路徑,其中將除該最後硬體微磚之外之各硬體微磚組態為處於一轉送狀態中包含安裝指定該硬體微磚處於該資料轉送狀態中之一對應預定義時間長度之一各別轉送狀態計數器;沿著該資料轉送路徑對該複數個硬體微磚之各硬體微磚供應包括該硬體微磚之程式資料之一各別程式資料封包;及針對該多個硬體微磚之各硬體微磚安裝該各別程式資料。
該等方法之實施方案可包含以下特徵之一或多者。例如,在一些實施方案中,在接收透過該資料轉送路徑傳遞之一第一資料封包之後安裝該多個硬體微磚中除該最後硬體微磚之外之各硬體微磚之該轉送狀態計數器。該第一資料封包可包含一程式資料封包,該程式資料封包包含該多個硬體微磚之該最後硬體微磚之程式資料。
在一些實施方案中,安裝各硬體微磚之該各別轉送狀態計數器包含在該硬體微磚之一觸發表中定義該轉送狀態計數器。當各硬體微磚之該轉送狀態計數器達到該對應預定義時間長度時,該觸發表可觸發該硬體微磚之程式資料之安裝且引起該硬體微磚離開該資料轉送狀態。針對包含一各別轉送狀態計數器之各硬體微磚,該轉送狀態計數器之該對應預定義時間長度依據該資料轉送路徑中之後續硬體微磚之一數目而變化。
在一些實施方案中,該多個硬體微磚之各硬體微磚將該硬體微磚之該各別程式資料儲存於本端記憶體中。
在一些實施方案中,包含一各別轉送狀態計數器之各硬體微磚將至少一個程式資料封包轉送至該資料轉送路徑中之至少一個其他硬體微磚。
在一些實施方案中,各硬體微磚包含電路元件之一脈動陣列。
在一些實施方案中,該多個微磚配置成一個一維或二維陣列。
在一些實施方案中,該等方法進一步包含將指定直至該硬體微磚開始由安裝於該硬體微磚上之該程式資料定義之操作之一對應預定義時間長度之一各別起動(kickoff)計數器安裝於至少一些該多個硬體微磚上。在接收該第一資料封包之後可安裝該多個硬體微磚中除該最後硬體微磚之外之各硬體微磚之該各別起動計數器。各起動計數器之該預定義時間長度可不同。各起動計數器之該預定義時間長度可依據該資料轉送路徑中之硬體微磚之數目而變化。各起動狀態計數器之該預定義時間長度可經定義使得該複數個硬體微磚同時執行其等各別程式資料。安裝各硬體微磚之該各別起動計數器可包含在該硬體微磚之一觸發表中定義該起動計數器。
一般言之,在一些其他態樣中,本發明之標的物可體現於組態包含多個硬體微磚之一積體電路之方法中,其中該等方法包含:建立通過除該多個微磚之一最後硬體微磚之外之該多個微磚之各硬體微磚之一資料轉送路徑,其中建立該資料轉送路徑包含藉由以下各者依序組態該資料轉送路徑之各硬體微磚:(a)安裝該微磚之程式資料;(b)將該微磚組態為處於一轉送狀態中;及(c)安裝指定該硬體微磚處於該資料轉送狀態中之一對應預定義時間長度之一程式起動計數器。
此等方法之實施方案可包含以下特徵之一或多者。例如,在一些實施方案中,針對該資料轉送路徑之一特定微磚,該預定義時間長度依據尚未安裝程式資料之該複數個微磚內之微磚之數目而變化。
在一些實施方案中,一旦各程式起動計數器達到該對應預定義時間長度,其上安裝該程式起動計數器之該微磚便開始執行根據安裝於該微磚上之該程式資料之操作。
各種實施方案包含一或多個以下優點。例如,在一些實施方案中,本文中描述之程序容許定位於硬體區塊之一陣列內部之多個硬體區塊之組態在不需要內部硬體區塊直接接線至其等資料源之情況下進行組態。在一些實施方案中,本文中描述之程序容許硬體區塊之組態而不需要編碼一資料封包內之目的地資料。在一些實施方案中,本文中描述之程序容許硬體區塊經組態而不需要將解碼邏輯安裝於硬體區塊中。
在隨附圖式及下文之描述中闡述一或多項實施例之細節。自描述、圖式及發明申請專利範圍將明白其他特徵及優點。
一般言之,本發明係關於一半導體晶片之初始化組態,其中對晶片執行之操作經顯式排程(操作可被稱為「確定性」)。在一實例中,可將半導體晶片劃分為個別硬體區塊,其中根據顯式排程在硬體區塊之間傳送資料。更具體言之,個別硬體區塊可根據經個別化操作排程操作以執行整體上藉由半導體晶片執行之一協調程式。換言之,個別硬體區塊根據一時脈(例如,一計數器)在經排程時間執行其等各別操作而非(例如)回應於控制信號或根據程序指令之一未排程循序清單執行操作。各硬體區塊表示一組相關複製邏輯,諸如一晶片上經組態以獨立於藉由其他硬體區塊執行之任務執行一組特定任務之電路(例如,邏輯電路)之一子集。此等操作包含(但不限於)資料轉送操作、初始化操作、矩陣操作、向量操作、純量操作、邏輯操作、記憶體存取操作、外部通信操作或其等之一組合。
本發明之硬體區塊代替性地經預先組態以按一特定方式處置資料,而非建構一硬體區塊以包含判定經接收資料是否應經安裝(例如,用於初始化硬體區塊中之程式操作)、保存於記憶體中或經轉送至另一硬體區塊之解碼邏輯或類似特徵。例如,一硬體區塊可經預先組態以安裝經接收資料(例如,初始化硬體區塊中之程式操作)、將經接收資料保存至記憶體或將經接收資料轉送至另一硬體區塊。以此方式,硬體區塊可經特性化為經預組態以獨立於經接收資料而以一特定方式處置資料。硬體區塊可經預先組態以在操作之一排程之執行期間之預定義時間/期間以一特定方式處置資料,即,硬體區塊可經組態以改變其等在預定義時間處置資料之方式。
各硬體區塊執行特定於硬體區塊之操作之一個別排程。各硬體區塊之個別排程共同表示整體上藉由晶片執行之一完整程式(例如,一神經網路操作)。然而,在執行此等操作之前,將指定待執行之特定操作之程式資料遞送至各硬體區塊且安裝於各硬體區塊上。為了將程式資料提供至各硬體區塊而不包含解碼邏輯,一個選項係將程式資料源直接接線至各區塊。針對大量硬體區塊,佈線之量可需要大量面積且作為一解決方案變得站不住腳。
替代地,如在本發明中描述,僅一些硬體區塊(例如,區塊之一二維陣列中之最外硬體區塊)經直接連結至程式資料源。為了到達定位於陣列內部之一硬體區塊,硬體區塊之群組可置於一資料轉送狀態中使得各群組建立至內部區塊之一資料轉送路徑。在特定於各硬體區塊之一預定時間量之後,處於一轉送狀態中之各硬體區塊可自動地重新組態成一新非資料轉送狀態。例如,一或多個硬體區塊可自動地重新組態成儲存在硬體區塊中接收之資料之一資料儲存狀態。替代地或另外,一或多個硬體區塊可自動地重新組態成初始化一程式以藉由硬體區塊(其中程式由經接收資料定義)運行之一資料初始化狀態。在一些情況中,硬體區塊可在預定計數器時間執行由程式資料指定之經排程操作。
在一些實施方案中,包含硬體區塊之半導體晶片係經設計以執行機器學習操作之一特定應用積體電路(ASIC)。一ASIC包含(例如)針對一特定用途客製化之一積體電路(IC)。例如,一ASIC可經設計以執行機器學習模型之操作,包含(例如)辨識影像中之物件作為深度神經網路、機器轉譯、語音辨識或其他機器學習演算法之部分。當用作一神經網路之一加速器時,例如,一ASIC可接收至神經網路之輸入且運算輸入之一神經網路推斷。至一神經網路層之資料輸入(例如,至神經網路之輸入或神經網路之另一層之輸出)可稱為啟動輸入。可根據與神經網路層相關聯之各別組權重輸入運算推斷。例如,一些或全部層可接收一組啟動輸入且根據該層之該組權重輸入處理啟動輸入以產生輸出。再者,經執行以運算神經網路推斷之運算操作之重複性質有利於顯式排程晶片操作。
圖1係繪示根據本發明之一積體電路晶片10之一簡化實例之一示意圖。晶片10可係一通用積體電路或一專用積體電路。例如,晶片10可係一ASIC、一場可程式化閘陣列(FPGA)、一圖形處理單元(GPU)或任何其他適合積體電路。晶片10包含配置成一陣列之多個硬體區塊14 (標記為「A」、「B」及「C」),在本文中亦稱為「微磚」。硬體微磚14可使用一資料匯流排16彼此耦合。雖然在圖1中僅展示三個硬體微磚14,但晶片10可包含其他數目個硬體微磚,諸如(例如) 10、20、30、40、50、100或200等。此外,雖然將硬體微磚14描繪為配置成一線性陣列,但硬體微磚14亦可以其他組態(諸如具有多個列及多個行之一二維陣列)配置。晶片10亦包含一通信介面12。通信介面12使用一資料匯流排17耦合至至少一第一硬體微磚14 (例如,微磚A)。通信介面12可包含(例如)一或多組串列器/解串列器(SerDes)介面及一通用輸入/輸出(GPIO)介面。SerDes介面經組態以接收ASIC 10之資料(例如,如本文中描述之硬體微磚之組態資料或程式資料)且將資料自ASIC 10輸出至一外部電路。為了圖解及論述之目的,以一簡化方式展示晶片10。然而,在一些實施方案中,晶片10將包含額外組件,諸如記憶體及適用於晶片10之目的之其他電路。
硬體微磚14表示複製邏輯組,諸如晶片10上經設計以獨立於藉由其他硬體微磚14執行之任務執行一組特定任務之電路(例如,邏輯電路)之一子集。各硬體微磚14可表示相同或不同類型之電路,例如,硬體微磚A、B及C可表示經設計以執行機器學習功能(下文更詳細論述)之一專用晶片之微磚。例如,硬體微磚A、B及C可表示經組態以執行矩陣操作之一神經網路之運算節點。
硬體微磚14之操作可在預定時間根據晶片10上之一共同時脈信號執行。各硬體微磚14根據其自身之經個別化操作排程操作。操作排程各表示整體上待由晶片10執行之一程式之一部分(例如,一「子程式」),且各操作排程表示待藉由一對應個別硬體微磚14執行之程式之該部分。操作排程包含待藉由硬體微磚14在預定計數器值處執行之一組程式操作。換言之,操作排程可被視為觸發待藉由一特定硬體微磚14在經預排程「晶片時間」執行之特定操作(例如,見圖4)之一計時器清單。例如,各排程可包含執行計數器值(例如,執行時間)與待在計數器值處執行之一相關聯操作之一清單。在一些實例中,各操作由經排程計數器值及識別待藉由一特定硬體微磚14在經排程計數器值處執行之操作之資料(諸如一操作程式碼)表示。可協調由硬體微磚14執行之操作與由其他硬體微磚執行之操作。操作排程可使用下文更詳細描述之一「觸發表」實施於各微磚上。
如圖1中展示,各硬體微磚14可包含控制電路18、本端記憶體20及一或多個運算單元22。在一些實施方案中,由一操作排程指定之程式可儲存於硬體微磚14之本端記憶體20中。操作單元22表示經組態以執行特定運算(例如,加法、減法、乘法、邏輯運算等)之電路。控制電路18可經組態以讀取並執行儲存於記憶體20中之程式之操作。例如,控制電路18可包含在記憶體20、輸入緩衝器或匯流排16與適當運算單元22之間路由資料以執行經排程操作之控制元件,諸如多工器及正反器。如本文中提及,一程式之操作排程可用作觸發控制電路18在特定計數器值處開始執行特定功能之一系列計時器。因此,操作排程可觸發控制電路18之控制元件以將硬體微磚14內之資料路由至適當運算單元22以便在經排程時間執行一經排程操作。
如本文中解釋,定義硬體微磚之操作排程之程式資料必須首先經提供至各硬體微磚14且在各硬體微磚14上初始化。為了到達未直接耦合至通信介面12之微磚,硬體微磚14 (例如,微磚A及B)之群組可經個別地置於一資料轉送中以建立一資料轉送路徑。可接著沿著轉送路徑自通信介面12發送個別微磚14之程式資料。一旦各硬體微磚14接收其對應程式資料,微磚14便可在預定時間量之後自動地重新組態成一新非資料轉送狀態。在此新狀態中,微磚14可經初始化以執行由程式資料定義之操作或替代地,執行某一其他功能。
圖2係描繪用於載入且初始化硬體微磚以便執行預定義程式之一例示性程序(30)之一流程圖。程序(30)係關於圖1中展示之例示性晶片10描述但適用於包含硬體微磚陣列之其他晶片。為了本發明之目的,一組態資料封包包含引起一微磚改變狀態(例如,自其中微磚可操作以讀取一經接收資料封包中之資料之一狀態改變至其中微磚可操作以轉送一經接收資料封包之一狀態,或自其中微磚可操作以轉送一經接收資料封包之一狀態改變至其中微磚可操作以讀取一經接收資料封包中之資料之一狀態)之組態資料。為了本發明之目的,一程式資料封包包含定義硬體微磚之操作排程之程式資料。
在一第一步驟(32)中,沿著硬體微磚14之陣列中之硬體微磚14 (例如,微磚A、B及C)之一群組建立一資料轉送路徑。藉由建立資料轉送路徑,來自通信介面12之資料可藉由一通信匯流排16到達未直接耦合至介面12之內部微磚14。建立資料轉送路徑包含將除陣列中之一最後硬體微磚(例如,硬體微磚C)之外之各硬體微磚14組態(33)為處於一轉送狀態中達對應預定義時間量。當處於一轉送狀態中時,一微磚14可操作以在資料轉送路徑中經由一或多個資料鏈路將一經接收資料封包轉送至一或多個其他微磚14。
將除一陣列中之一最後硬體微磚之外之各硬體微磚14組態為處於一轉送狀態中之程序(33)包含將除最後微磚14之外之各硬體微磚14組態為處於一轉送狀態中之對應組態資料依序發送至微磚14。可以多個不同方式達成發送組態資料。例如,在一些實施方案中,發送組態資料包含將具有多個標頭之一單一資料封包發送至陣列中之第一微磚。資料封包之各標頭可含有組態微磚以改變狀態之微磚不可知資料。在接收資料封包之後,陣列中之第一微磚將讀取資料封包之一第一標頭且基於第一標頭之組態資料改變狀態。例如,組態資料可將微磚之狀態改變為一轉送狀態。資料封包可接著由第一微磚傳遞至陣列中之下一(第二)微磚,其中第二微磚讀取資料封包之一第二標頭且基於第二標頭之組態資料改變狀態。例如,組態資料可將第二微磚之狀態改變為一轉送狀態。此可針對陣列中之各微磚或僅針對一N微磚陣列之前N-1個微磚繼續。
在一些實施方案中,將單獨資料封包傳輸至微磚,各資料封包具有其自身之組態資料。例如,具有組態資料之一第一資料封包可發送至第一微磚,在此之後,第一微磚可安裝組態資料(例如,以將第一微磚狀態改變為一轉送狀態)。接著,具有組態資料之一第二資料封包可發送至第一微磚,該第一微磚將第二資料封包轉送至陣列中之一第二微磚。在接收第二資料封包之後,第二微磚可安裝組態資料(例如,以將第二微磚狀態改變為一轉送狀態)。此可針對陣列中之各微磚或僅針對一N微磚陣列之前N-1個微磚繼續。
在圖3之時間流程圖中亦繪示沿著微磚A、B及C建立轉送資料路徑之一例示性程序。例如,在一實例中,一資料源(諸如通信介面12)將藉由在一時間t1 將包含組態資料之一第一資料封包發送至圖1中展示之第一硬體微磚A而開始。在接收含有組態資料之第一資料封包之後,第一硬體微磚A不儲存第一資料封包。代替性地,回應於接收第一資料封包,第一硬體微磚A經組態以在一資料轉送狀態中操作。在資料轉送狀態中,硬體微磚A將轉送其接收之資料而非將經接收資料儲存於本端記憶體中。例如,組態資料可引起微磚A經組態以將資料轉送至陣列中之一下一鄰近微磚,諸如微磚B。因此,組態資料包含當安裝於第一微磚A中時引起第一微磚被置於轉送狀態中之資料。第一硬體微磚A能夠讀取第一資料封包,此係因為其被設定於一「收聽組態封包」狀態中。亦即,第一硬體微磚A在此點已經組態以讀取到達第一硬體微磚之資料封包。在一些實施方案中,各微磚14之此一組態狀態可在其中重設晶片10之一重設操作之後設定。因此,經發送之第一封包(組態「資料轉送狀態」之第一封包)含有僅組態一微磚以轉送資料且停止「收聽」之微磚不可知資料。
更一般言之,硬體微磚之陣列中之各硬體微磚可在所謂的「收聽組態封包」狀態(本文中亦稱為一「收聽」狀態)中初始化。如上文解釋,此收聽組態狀態可在其中重設晶片10之一重設操作之後實施。在收聽組態狀態中接收一資料封包之後,處於收聽狀態中之各微磚將讀取並「消耗」一標頭,該標頭含有組態微磚以改變狀態(例如,切換至一轉送狀態且停止「收聽」組態資料)之微磚不可知資料。因此,經組態以處於一收聽狀態中之微磚可不需要解碼邏輯。此外,應注意,在一些實施方案中,提供至陣列之含有微磚組態資料之標頭之數目與沿著用於一特定狀態改變操作之路徑之硬體區塊之數目相同,此係因為各區塊將消耗一個標頭。例如,以相同方式改變微磚之數目N (例如,以產生由N個微磚構成之一轉送路徑)可需要發送一N個循序資料封包串,該等資料封包之各者包含引起一微磚改變至一不同狀態之組態資料(例如,引起一微磚自一收聽狀態改變至一轉送狀態之組態資料)。
因此,在發送第一資料封包之後,資料源(例如,通信介面12)在一時間t2 將包含組態資料之一第二資料封包發送至第一硬體微磚A。由於硬體微磚A處在一轉送狀態中,故微磚A將第二資料封包轉送至陣列中之另一微磚。例如,微磚A可將第二資料封包轉送至硬體微磚B。在接收含有組態資料之第二資料封包之後,處於一收聽狀態中之第二硬體微磚B不儲存第二資料封包。代替性地,回應於接收並讀取第二資料封包,第二硬體微磚B經組態以在一資料轉送狀態中操作。在資料轉送狀態中,硬體微磚B將轉送其接收之資料而非將經接收資料儲存於本端記憶體中。例如,第二資料封包內之組態資料可引起微磚B經組態以將資料轉送至陣列中之一下一鄰近微磚(諸如微磚C)。
鑑於前文,微磚A及B兩者處在一轉送狀態中,從而沿著硬體微磚A、B及C建立一資料轉送路徑。由於硬體微磚C係陣列內之最後微磚,故不需要將硬體微磚C組態為處於一轉送狀態中。實情係,微磚C可保持經組態處於準備好接收並安裝用於執行如本文中描述之經排程操作之程式資料之一「收聽」狀態中。
由於可期望亦在剩餘硬體微磚中接收並安裝程式資料,經組態處於資料轉送狀態中之硬體微磚經排程以在預定義時間點依序離開資料轉送狀態。例如,微磚A及B可經組態以在最後硬體微磚(例如,硬體微磚C)已接收並安裝其程式資料之後依序離開其等各別資料轉送狀態。以此方式,處於一轉送狀態中之各硬體微磚移位回至其中其可接收並安裝旨在用於該硬體微磚之程式資料之一狀態。
組態一硬體微磚以離開轉送狀態可包含(例如)在置於一轉送狀態中之各微磚上安裝一各別轉送狀態計數器。例如,當一微磚接收一組態資料封包時,可發生將轉送狀態計數器安裝在微磚中作為一微磚之狀態自一收聽狀態至一轉送狀態之改變之部分。一轉送狀態計數器包含遞減(或遞增)計數直至已經過一預定義時間週期之一計數器。當轉送狀態計數器遞減(或遞增)計數時,其上安裝計數器之硬體微磚將保持在轉送狀態中。當轉送狀態計數器達到預定義時間週期時,計數器可引發一觸發器觸發,此引起硬體微磚離開轉送狀態。例如,在一些實施方案中,一觸發器可觸發,此引起硬體微磚14經重新組態使得針對在微磚14處接收之任何新資料封包,資料封包經保存至微磚14上之一本端記憶體(例如,記憶體20)。替代地或另外,觸發器可引起硬體微磚14重新組態使得其安裝來自記憶體之資料或安裝來自微磚14接收之任何新資料封包之資料。替代地或另外,觸發器可引起硬體微磚14重新組態使得微磚返回至收聽狀態。安裝於微磚14上之計數器可與晶片10上之一全域時脈或在微磚14上運行之一局部時脈同步。預定義時間週期可包含多個時脈循環。例如,預定義時間週期可包含2、5、10、20、50或100等個時脈循環。預定義時間週期可處於[2, 100]個時脈循環之範圍中,例如,在[10, 50]個時脈循環之範圍中,諸如20個時脈循環。計數器之預定義時間週期可在接收一組態資料封包之後由微磚讀取之組態資料中定義。
經組態處於轉送狀態中之硬體微磚14 (例如,微磚A及B)不應一次全部離開其等各別轉送狀態。代替性地,由於陣列中之硬體微磚14共用一轉送資料路徑,故其等將各在一不同時間接收其等程式資料封包。因此,各微磚在一不同時間離開其轉送狀態,且各轉送狀態計數器之預定義時間長度不同。針對各轉送狀態計數器指定之預定義時間長度依據一當前硬體微磚將資料封包轉送至其之資料轉送路徑內之硬體微磚之數目而變化。例如,在藉由圖1之微磚A、B及C建立之資料轉送路徑中,存在第一微磚A將資料轉送至其之兩個硬體微磚(B及C)。因此,與微磚A上之轉送狀態計數器相關聯之預定義時間週期係將程式資料傳輸至微磚B及C且將程式資料安裝於微磚B及C上之時間而變化。參考圖3,此可發生在(例如)等效於第一硬體微磚A經組態於轉送狀態中之時間(在t1 )與第一硬體微磚A接收旨在安裝於微磚A上之一資料程式封包之時間(在t5 )之間之差之一時間,即,在t5 t1 之一時間。類似地,在藉由圖1之微磚A、B及C建立之資料轉送路徑中,存在第二微磚B將資料轉送至其之一個硬體微磚(C)。因此,與微磚B上之轉送狀態計數器相關聯之預定義時間週期係將程式資料傳輸至微磚C且將程式資料安裝於微磚C上之時間而變化。參考圖3,此可發生在(例如)等效於第二硬體微磚B經組態於轉送狀態中之時間(在t2 )與第二硬體微磚B接收旨在安裝於微磚B上之一資料程式封包之時間(在t4 )之間之差之一時間,即,在t4 t2 之一時間。與各轉送狀態計數器相關聯之特定時間可預先計算且包含於具備第一及第二資料封包之組態資料中。硬體微磚C未被設定於一轉送狀態中且因此未經組態以包含一轉送狀態計數器。
在建立轉送資料路徑之後,資料源(例如,通信介面12)沿著資料轉送路徑對硬體微磚14供應(34)其等各別程式資料封包。程式資料封包包含定義硬體微磚之操作排程之程式資料。程式資料封包可經循序供應,使得資料轉送路徑中之最後硬體微磚(例如,距資料源最遠之硬體微磚)首先接收其程式資料,而資料轉送路徑中之第一硬體微磚(例如,最接近資料源之硬體微磚)最後接收其程式資料。隨著接收程式資料封包,可將其等安裝(36)於硬體微磚上。
例如,在藉由圖1中之硬體微磚A、B及C建立之資料轉送路徑中,通信介面12在一時間t3 將一第一程式資料封包發送至硬體微磚A,該硬體微磚A接著將第一程式資料封包轉送至硬體微磚B,該硬體微磚B接著將第一程式資料封包轉送至硬體微磚C。在接收第一程式資料封包之後,硬體微磚C可將第一程式資料封包保存至本端記憶體(例如,記憶體20)及/或安裝封包中含有之程式資料。
隨後,通信介面12在一時間t4 將一第二程式資料封包發送至硬體微磚B。然而,在硬體微磚B可保存及/或安裝第二程式資料封包內含有之程式資料之前,安裝於硬體微磚B上之轉送狀態計數器觸發一觸發器,此引起硬體微磚B自一轉送狀態改變至經組態以保存及/或安裝硬體微磚B接收之資料封包之一新狀態。如本文中解釋,此觸發可發生在t4 t2 之一時間。以此方式,第二程式資料封包留存在硬體微磚B處而非轉送至硬體微磚C。
隨後,通信介面12在一時間t5 將一第三程式資料封包發送至硬體微磚A。然而,在硬體微磚A可保存及/或安裝第二程式資料封包內含有之程式資料之前,安裝於硬體微磚A上之轉送狀態計數器觸發一觸發器,此引起硬體微磚A自一轉送狀態改變至經組態以保存及/或安裝硬體微磚A接收之資料封包之一新狀態。如本文中解釋,此觸發可發生在t5 t1 之一時間。以此方式,第三程式資料封包留存在硬體微磚A處而非轉送至硬體微磚B。
在一些實施方案中,可期望陣列中之全部硬體微磚同時執行其等經安裝/經初始化程式。在此等情況中,首先接收並初始化/安裝其等程式資料之硬體微磚等待,直至陣列中之其他硬體微磚亦已接收並初始化/安裝其等各別程式資料。全部硬體微磚開始執行其等經安裝程式資料之時間被稱為「起動(kickoff)」時間。為了確保各硬體微磚同時起動,資料程式封包之安裝(36)可包含(例如)組態各硬體微磚以包含一對應程式起動計數器(在本文中亦稱為一起動狀態計數器)(37)。
一起動狀態計數器包含遞減(或遞增)計數直至已經過一預定義時間週期之一計數器。針對各硬體微磚指定之預定義時間週期指定直至在該微磚內之程式資料中定義之操作開始之時間。當起動狀態計數器遞減(或遞增)計數時,其上安裝計數器之硬體微磚將保持在一保持狀態中,在該保持狀態期間不執行操作。當起動狀態計數器達到預定義時間週期時,計數器可引發一觸發器觸發,此引起硬體微磚開始執行由微磚內之程式資料定義之操作。將各起動狀態計數器之預定義時間週期計算為導致陣列內之全部硬體微磚同時執行其等經安裝/經初始化程式之一值。如本文中解釋,各起動狀態計數器之預定義時間週期可不同。
例如,在一些實施方案中,一觸發器可觸發,此引起硬體微磚14開始執行先前已在微磚14處接收且儲存於微磚之本端記憶體(例如,記憶體20)中之程式資料中定義之操作。預定義時間週期可包含多個時脈循環。例如,預定義時間週期可包含2、5、10、20、50或100等個時脈循環。如本文中解釋,安裝於一微磚14上之起動狀態計數器與相對於一全域時脈之其他起動狀態計數器同步。
由於陣列中之硬體微磚14共用一轉送資料路徑,故其等將各在一不同時間接收並安裝其等程式資料封包。亦即,各微磚14等待不同時間量直至其可開始執行操作,且各起動狀態計數器之預定義時間長度不同。針對各起動狀態計數器指定之預定義時間長度可(例如)依據仍尚待接收並安裝其等程式資料之硬體微磚之數目而變化。此確保陣列內之全部微磚同時執行其等經安裝/初始化程式。例如,在藉由圖1之微磚A、B及C建立之資料轉送路徑中,一旦硬體微磚C接收其程式資料,微磚C便等待,直至其安裝其自身之程式資料且直至兩個其他硬體微磚(A及B)接收並安裝其等各別程式資料。因此,與微磚C上之起動狀態計數器相關聯之預定義時間週期可係(例如)將程式資料傳輸至微磚A及B且將程式資料安裝於微磚A及B上所需之時間以及將程式資料安裝於微磚C上之時間而變化。參考圖3,此可發生在(例如)等效於全部硬體微磚起動之時間(在t6 )與最後硬體微磚C接收旨在安裝於微磚C上之一資料程式封包之時間(在t3 )之間之差之一時間,即,在t6 t3 之一時間。
類似地,一旦硬體微磚B接收其程式資料,微磚B便等待直至其安裝其自身之程式資料且直至一個其他硬體微磚(微磚A)接收並安裝其各別程式資料。因此,與微磚B上之起動狀態計數器相關聯之預定義時間週期可係(例如)將程式資料傳輸至微磚A且將程式資料安裝於微磚A上之時間以及將程式資料安裝於微磚B上之時間而變化。參考圖3,此可發生在(例如)等效於全部硬體微磚起動之時間(在t6 )與硬體微磚B接收旨在安裝於微磚B上之一資料程式封包之時間(在t4 )之間之差之一時間,即,在t6 t4 之一時間。
類似地,一旦硬體微磚A接收其程式資料,微磚A便在其可起動執行程式資料之前等待直至其安裝其自身之程式資料。因此,與微磚A上之起動狀態計數器相關聯之預定義時間週期可係(例如)將程式資料安裝於微磚A上所需之時間而變化。參考圖3,此可發生在(例如)等效於全部硬體微磚啟動之時間(在t6 )與硬體微磚A接收旨在安裝於微磚A上之一資料程式封包之時間(在t5 )之間之差之一時間,即,在t6 t5 之一時間。
與各起動狀態計數器相關聯之特定時間可預先計算且包含於具備各程式資料封包之程式資料中。如本文中解釋,可計算且定義與各起動狀態計數器相關聯之不同特定時間,使得全部微磚同時執行其等經安裝/初始化程式。在一些實施方案中,陣列內之各微磚可經組態以包含一對應起動狀態計數器。例如,微磚A、B及C之各者可經組態以包含具有等待執行其經儲存程式資料之一不同預定義時間週期之一對應起動狀態計數器。
在一些實施方案中,陣列內之至少一些微磚可經組態以包含一對應起動狀態計數器。例如,若在陣列中存在N個微磚,則N-1個微磚可經組態以包含一對應起動狀態計數器。此可包含組態除一陣列之一第一微磚之外之陣列中之全部微磚以包含一對應起動狀態計數器。使用本申請案之實例,微磚B及C之各者可經組態以包含具有等待執行其經儲存程式資料之一不同預定義時間週期之一對應起動狀態計數器。但微磚A可不經組態以具有一對應起動狀態計數器。在此情況中,微磚B及C可等待直至其等起動狀態計數器經觸發以執行其等經接收程式資料,但微磚A在接收程式資料之後可立即執行程式資料,使得微磚A、B及C之各者同時執行其等各別程式資料。
如本文中解釋,本文中描述之晶片不同於其中指令在每一循環發出且含有晶片之功能單元之各種組態之源及目的地暫存器之傳統處理器。代替性地,晶片上之各硬體微磚由稱為組態狀態之一組邏輯狀態控制。組態狀態描述硬體微磚是否經組態以轉送資料,將資料儲存於記憶體中,安裝資料或執行一程式以及其他功能。取決於其中組態一硬體微磚之特定狀態,狀態將指定硬體微磚中之各種多工器之控制信號,以及硬體微磚內之記憶體及暫存器之讀取及寫入操作。透過一觸發表將一硬體微磚之組態狀態更新(例如,切換至一轉送狀態或其他狀態)。
圖4係繪示一觸發表40之一實例之一示意圖。觸發表40係一組可定址組態狀態更新,各可定址組態狀態更新在滿足一特定條件時獲得應用。例如,在如本文中描述般在一硬體微磚內安裝一轉送狀態計數器之後,可將一條件及相關聯組態新增至觸發表40。當轉送狀態計數器遞減計數至0 (或遞增計數至預定義時間週期)時,滿足已新增至表40之條件,因此一觸發器觸發且將與該條件相關聯之組態應用至硬體微磚。起動狀態計數器可以一類似方式實施。
觸發器表40包含多個項目50。各項目50可包含(例如)一觸發ID 52、一位址54、一組態空間更新56及啟用旗標58及一或多個額外旗標60。觸發ID 52描述觸發類型且用作至任何相關聯狀態之一指標。位址54及組態空間更新56之組合描述如何更新硬體微磚之組態狀態。啟用旗標58指定觸發器當前是否在作用中且可在任何時間觸發。額外旗標60可指定與觸發相關之其他態樣,諸如是否在最後時脈循環內觸發觸發器。觸發表40可包含多個數目個項目,包含(例如) 8、16、32或64個項目。觸發表40可藉由將觸發表40之不同組態狀態本端地儲存於記憶體中且使用硬體微磚內之一或多個多工器選擇狀態而實現。
已描述修改微磚之組態狀態之特定實施方案。然而,其他實施方案亦可行。例如,在一些實施方案中,可將程式資料安裝於一微磚上,同時將微磚組態為處於一轉送狀態中且安裝一起動狀態計數器以開始微磚內之程式,而非產生一轉送路徑,接著將程式資料依序載入至微磚,如本文中描述。使用圖1中展示之微磚結構,例如,將描述用於載入程式資料之一替代或額外例示性程序。例如,在一些實施方案中,通信介面12將含有組態資料(例如,作為資料封包之一標頭)及程式資料(例如,作為資料封包之有效負載)之一第一資料封包發送至一第一微磚(例如,微磚A)。組態資料在藉由微磚A讀取時,引起微磚A將來自資料封包之程式資料儲存於本端記憶體中及/或組態邏輯電路以執行一組預定義操作。另外,組態封包可組態微磚A以置於一轉送狀態中同時初始化一起動狀態計數器。如本文中解釋,一起動狀態計數器可係計數一預定時間直至引起一微磚改變其組態狀態使得安裝於微磚上之一程式開始運行(即,「起動」)之一計數器。微磚A中之起動狀態計數器計數之時間長度取決於在微磚A之後之微磚所需之資料量而非出現在微磚A之前之微磚所需之資料量。例如,若在微磚A之後存在兩個微磚,則基於將組態及程式資料轉送至下兩個微磚所耗費之時間判定微磚A中之起動狀態計數器之值。
另外,應注意,組態一微磚以安裝程式資料同時將微磚置於一轉送狀態中可包含針對設定為0個時脈循環之轉送狀態設定一單獨計時器。
一旦第一微磚處於轉送狀態中,通信介面12便向外發送一第二資料封包。此第二資料封包可透過處於一轉送狀態中之第一微磚傳遞且到達一陣列中之一第二微磚(例如,微磚B)。第二資料封包類似於第一資料封包。例如,第二資料封包含有組態資料(例如,作為第二資料封包之一標頭)及程式資料(例如,作為第二資料封包之有效負載)。組態資料在藉由第二微磚讀取時,引起第二微磚將來自第二資料封包之程式資料儲存於本端記憶體中及/或組態邏輯電路以執行一組預定義操作。另外,組態封包可組態第二微磚以置於一轉送狀態中同時初始化一起動狀態計數器。第二微磚中之起動狀態計數器之值由待轉送之資料量判定且藉由一陣列中之第二微磚之後之剩餘微磚組態。
在此實施方案中,在一路徑中之各微磚以與該路徑中之第一微磚及第二微磚相同(除一最後微磚(例如,微磚C)之外)之方式組態。針對最後微磚,通信介面12發送一最後資料封包。最後資料封包包含組態資料及程式資料。與先前資料封包相比,最後微磚不經組態以處於一轉送狀態中。代替性地,最後微磚經組態以安裝程式資料且一旦安裝完成便開始使用程式資料執行操作。同時,路徑中之各先前微磚(例如,微磚A及B)之起動狀態計數器到達其等限制且引起其等各別微磚開始使用本端地保存至其等微磚之程式資料執行操作。以此方式,相對於藉由首先設定一轉送路徑且接著在已建立轉送路徑之後向下發送各微磚之程式資料,據稱,微磚可藉由通信介面直接程式化,其中在程式資料安裝於一微磚上且初始化一起動狀態計數器時設定轉送路徑。
圖5係繪示可經組態以根據經排程操作進行操作且可如本文中描述般初始化之專用邏輯電路之一實例之一示意圖。例如,專用邏輯電路可包含一ASIC 100。ASIC 100包含可經組態以根據個別操作排程執行ASIC 100之整體操作之各種不同類型之硬體區塊。可根據個別操作排程操作之例示性硬體區塊包含微磚102及向量處理單元104 (類似於圖1中之硬體微磚14)及通信介面108 (類似於圖1中之通信介面12)。
更特定言之,ASIC 100包含多個微磚102,其中微磚102之一或多者包含經組態以執行操作(諸如,例如乘法及加法運算)之專用電路。特定言之,各微磚102可包含胞元之一運算陣列(例如,類似於圖1之運算單元22),其中各胞元經組態以執行數學運算(參見例如在圖6中展示且在本文中描述之例示性微磚200)。在一些實施方案中,微磚102經配置成一柵格圖案,其中微磚102沿一第一維度101 (例如,列)且沿一第二維度103 (例如,行)配置。例如,在圖5中展示之實例中,微磚102被劃分為四個不同區段(110a、110b、110c、110d),各區段含有配置成縱向18個微磚乘以橫向16個微磚之一柵格之288個微磚。在一些實施方案中,圖5中展示之ASIC 100可被理解為包含細分/配置成單獨微磚之胞元之一單一脈動陣列,其中各微磚包含胞元之一子集/子陣列、本端記憶體及匯流排線(參見例如圖6)。
ASIC 100亦包含一向量處理單元104。向量處理單元104包含經組態以從微磚102接收輸出且基於從微磚102接收之輸出而運算向量運算輸出值之電路。例如,在一些實施方案中,向量處理單元104包含經組態以對從微磚102接收之輸出執行累加運算之電路(例如,乘法電路、加法器電路、移位器及/或記憶體)。替代地或另外,向量處理單元104包含經組態以將一非線性函數應用於微磚102之輸出之電路。替代地或另外,向量處理單元104產生正規化值、匯集值或兩者。向量處理單元之向量運算輸出可儲存於一或多個微磚中。例如,向量運算輸出可儲存於與一微磚102唯一相關聯之記憶體中。替代地或另外,可將向量處理單元104之向量運算輸出傳送至ASIC 100外部之一電路,例如作為一運算之一輸出。此外,微磚102及向量處理單元104之個別操作排程之操作協調將微磚輸出傳送至向量處理單元104。
在一些實施方案中,向量處理單元104經分段,使得各片段包含經組態以從微磚102之一對應集合接收輸出且基於所接收輸出而運算向量運算輸出之電路。例如,在圖5中展示之實例中,向量處理單元104包含沿第一維度101橫跨之兩個列,該等列之各者包含配置成32個行之32個片段106。各片段106包含經組態以基於來自微磚102之一對應行之輸出(例如,一累加和)而執行一向量運算(如本文中說明)之電路(例如,乘法電路、加法器電路、移位器及/或記憶體)。向量處理單元104可定位於微磚102之柵格中間,如圖5中展示。向量處理單元104之其他位置配置亦係可行的。。
ASIC 100亦包含一通信介面108 (例如,介面1010A、1010B)。通信介面108包含一或多組串列器/解串列器(SerDes)介面及一通用輸入/輸出(GPIO)介面。SerDes介面經組態以接收指令(例如,ASIC 100之個別硬體區塊之操作排程)及/或ASIC 100之輸入資料且將資料從ASIC 100輸出至一外部電路。例如,SerDes介面可經組態以透過包含於通信介面108內之該組SerDes介面以32 Gbps、56 Gbps之一速率或任何適合資料速率傳輸及接收資料(例如,操作排程及/或輸入/輸出資料)。例如,ASIC 100可在其開啟時運行一開機程式。GPIO介面可用於將操作排程載入至ASIC上以執行一特定類型之機器學習模型。
ASIC 100進一步包含經組態以在通信介面108、向量處理單元104及多個微磚102之間輸送資料之多個可控匯流排線(參見例如圖6)。可控匯流排線包含例如沿格柵之第一維度101 (例如,列)及格柵之第二維度103 (例如,行)兩者延伸之導線。沿第一維度101延伸之可控匯流排線之一第一子集可經組態以在一第一方向上傳送資料(例如,至圖5之右側)。沿第一維度101延伸之可控匯流排線之一第二子集可經組態以在一第二方向上傳送資料(例如,至圖5之左側)。沿第二維度103延伸之可控匯流排線之一第一子集可經組態以在一第三方向上傳送資料(例如,至圖5之頂部)。沿第二維度103延伸之可控匯流排線之一第二子集可經組態以在一第四方向上傳送資料(例如,至圖5之底部)。如上文論述,不同硬體區塊之個別操作排程可協調對諸如可控匯流排線之共用資源之存取以防止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配置於通信介面之一個側上之一單一區段中之一組態相比,從一通信介面至最遠微磚之距離可削減一半。
替代地,該等微磚可配置於不同數目個區段中,諸如四個區段。例如,在圖5中展示之實例中,ASIC 100之多個微磚102配置於多個區段110 (110a、110b、110c、110d)中。各區段110包含配置成一格柵圖案之類似數目個微磚102 (例如,各區段110可包含配置成16個列及16個行之256個方塊)。通信介面108亦被劃分為多個區段:一第一通信介面1010A及一第二通信介面1010B,其等配置於微磚102之區段110之任一側上。第一通信介面1010A可透過可控匯流排線耦合至ASIC晶片100之左側上之兩個微磚區段110a、110c。第二通信介面1010B可透過可控匯流排線耦合至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內之其他微磚之讀取及寫入操作可減少需要檢查排程衝突之個別排程之數目。換言之,若協調控制微磚之操作排程以避免「雙重預訂」在相同計數器時間使用一特定可控匯流排線,則可合理地保證在可控匯流排線上不會發生通信錯誤。然而,如本文中描述之專用於提供控制之單獨微磚並非必要的且在一些情況中不提供單獨控制微磚。實情係,各微磚可將用於起始該微磚之讀取及寫入操作之指令儲存於其本端記憶體中。
此外,雖然圖5中展示之各區段110包含配置成18列乘以16行之微磚,但一區段中之微磚102之數目及其等配置可不同。例如,在一些情況中,區段110可包含相等數目個列及行。
此外,儘管在圖5中展示為劃分為四個區段,然微磚102可被劃分為其他不同分組。例如,在一些實施方案中,微磚102被分組為兩個不同區段,諸如向量處理單元104上方(例如,更靠近圖5中展示之頁面頂部)之一第一區段及向量處理單元104下方(例如,更靠近圖5中展示之頁面底部)之一第二區段。在此一配置中,各區段可含有例如配置成縱向18個微磚(沿方向103)乘以橫向32個微磚(沿方向101)之一格柵之596個微磚。區段可含有其他總數目個微磚且可配置成不同大小之陣列。在一些情況中,區段之間的劃分由ASIC 100之硬體特徵來劃界。例如,如圖5中展示,區段110a、110b可藉由向量處理單元104與區段110c、110d分離。
在圖6中展示繪示用於ASIC晶片100中之一微磚200之一實例之一示意圖。各微磚200包含本端記憶體202及耦合至記憶體202之一運算陣列204。本端記憶體202包含定位成接近於運算陣列204之實體記憶體。運算陣列204包含多個胞元206。運算陣列204之各胞元206包含經組態以基於資料輸入(諸如啟動輸入及權重輸入)而對胞元206執行一運算(例如,一乘法及累加運算)之電路。各胞元可在時脈信號之一循環上執行運算(例如,乘法及累加運算)。運算陣列204可具有比行更多的列、比列更多的行或相同數目個行及列。例如,在圖6中展示之實例中,運算陣列204包含配置成8個列及8個行之64個胞元。其他運算陣列大小亦係可行的,諸如具有16個胞元、32個胞元、128個胞元或256個胞元等之運算陣列。各微磚可包含相同數目個胞元及/或相同大小運算陣列。接著,ASIC晶片可並行執行之操作之總數目取決於在晶片內具有相同大小運算陣列之微磚之總數目。例如,針對圖5中展示之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係較大脈衝微磚陣列之一子集,如圖5中繪示。
微磚200中含有之記憶體202可包含(例如)隨機存取記憶體(RAM),諸如SRAM。可代替性地使用其他記憶體。各記憶體202可經組態以儲存與ASIC晶片之n 個微磚102相關聯之總記憶體之1/n 。記憶體202可經提供為一單一晶片或提供於多個晶片中。例如,圖6中展示之記憶體202經提供為四個單埠SRAM,該四個單埠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之一第一方向(在圖6中稱為「東方」);匯流排線210b,其等經組態以將資料傳送朝向沿微磚格柵之第一維度101之一第二方向(在圖6中稱為「西方」),其中第二方向與第一方向相反;匯流排線210c,其等經組態以將資料傳送朝向沿微磚格柵之第二維度103之一第三方向(在圖6中稱為「北方」);及匯流排線210d,其等經組態以將資料傳送朝向沿微磚格柵之第二維度103之一第四方向(在圖6中稱為「南方」),其中第四方向與第三方向相反。通用匯流排線210可經組態以攜載控制資料、啟動輸入資料、來自及/或至通信介面之資料、來自及/或至向量處理單元之資料及待由微磚200儲存及/或使用之資料(例如,權重輸入)。微磚200可包含一或多個控制元件221 (例如,正反器及多工器)以用於控制可控匯流排線且因此將資料路由至微磚200及/或從微磚200及/或從記憶體202路由資料。
可控匯流排線亦可包含可控匯流排線之一第二群組,在本文中被稱為運算陣列部分和匯流排線220。運算陣列部分和匯流排線220可經組態以攜載從由運算陣列204執行之運算輸出之資料。例如,匯流排線220可經組態以攜載從運算陣列204中之列獲得之部分和資料,如圖6中展示。在此情況中,匯流排線220之數目將匹配陣列204中之列之數目。例如,針對8x8運算陣列,將存在8個部分和匯流排線220,其等之各者耦合至運算陣列204中之一對應列之輸出。運算陣列輸出匯流排線220可經進一步組態以耦合至ASIC晶片內之另一微磚,例如作為ASIC晶片內之另一微磚之一運算陣列之輸入。例如,微磚200之陣列部分和匯流排線220可經組態以接收定位成與微磚200相距至少一個微磚之一第二微磚之一運算陣列之輸入(例如,部分和220a)。接著將運算陣列204之輸出加至部分和線220以產生新部分和220b,其可從微磚200輸出。部分和220b接著可經傳遞至另一微磚或替代地傳遞至向量處理單元。例如,各匯流排線220可耦合至向量處理單元之一對應片段(諸如圖5中之片段106)。
如關於圖5說明,可控匯流排線可包含諸如經組態以容許沿匯流排線輸送資料之輸送器元件(例如,正反器)之電路。在一些實施方案中,各可控匯流排線包含針對各微磚之一對應輸送器元件。如關於圖5進一步說明,可控匯流排線可包含諸如經組態以容許在ASIC晶片之不同微磚、向量處理單元及通信介面之間傳送資料之多工器之電路。多工器可定位於存在一資料源或資料收集點之任何處。例如,在一些實施方案中,如圖6中展示,控制電路221 (諸如多工器)可定位於可控匯流排線之交叉點處(例如,通用匯流排線210a及210d之交叉點處、通用匯流排線210a及210c之交叉點處、通用匯流排210b及210d之交叉點處及/或通用匯流排線210b及210c之交叉點處)。匯流排線交叉點處之多工器可經組態以在交叉點處之匯流排線之間傳送資料。控制電路221可藉由將資料路由至微磚102內之適當組件(例如,將至/來自SRAM 202之啟動資料或層權重路由至運算陣列204中之適當胞元206)或路由至/來自可控匯流排線之輸出資料及輸入資料而執行操作排程之操作。
圖7A至圖13B係繪示其中將ASIC 100用作用於運算神經網路推斷之一硬體加速器之一例示性程序之示意圖。圖7A、圖8A、圖9A、圖10A、圖11、圖12A及圖13A係繪示在程序中之不同時間通過ASIC 100之資料流之一概述之示意圖。圖7B、圖8B、圖9B、圖10B、圖12B及圖13B係分別繪示在與圖7A、圖8A、圖9A、圖10A、圖12A及圖13A相關聯之時間之ASIC 100之一單一微磚(例如,一控制微磚或其他微磚102)內之資料流之示意圖。圖7A至圖13B中之橢圓指示未在圖中展示之重複特徵之存在。一羅盤300設置於圖7A至圖13B之各者中以提供資料流之定向。標籤「N」、「W」、「S」及「E」不對應於實際地理方向,而代替地用於指示資料可流動通過格柵之不同相對方向。在由標籤「N」、「W」、「S」及「E」指示之方向上輸送資料之可控匯流排線在本文中被稱為向北流動之匯流排線、向西流動之匯流排線、向南流動之匯流排線及向東流動之匯流排線。
圖7A至圖13A中之微磚102及向量處理單元104之配置類似於圖5中展示之配置。例如,微磚102之一半可配置於向量處理單元104之一第一側上且微磚102之另一半可配置於向量處理單元104之一第二相對側上。通信介面108在圖7A至圖13A中展示為完全配置於微磚格柵之右側上,但可定位於微磚格柵之任一側上,如圖5之示意圖中描繪。
在一第一步驟中,如圖7A中展示,將一模型(例如,一神經網路模型)之一第一層之輸入值(例如,啟動輸入及/或權重輸入)自通信介面108載入至ASIC 100內之一或多個微磚102 (例如,全部微磚102)上。即,自通信介面108接收資料(諸如,如本文中關於圖1至圖3描述之組態資料封包或程式操作封包)。輸入值自通信介面108遵循沿著可控制匯流排線(例如,諸如本文中描述之通用可控匯流排線)至一或多個控制微磚之一資料路徑。可透過在不同匯流排線交叉之位置處使用多工器(例如,參見圖6中之路由元件221)而在不同匯流排線之間傳送資料。例如,如圖7A中展示,輸入資料沿一資料路徑流動,該資料路徑需要在向西流動之通用可控匯流排線上且接著在向南流動之通用可控匯流排線上行進。可透過在向西流動之匯流排線及向南流動之匯流排線交叉之位置處使用多工器而將輸入資料從向西流動之匯流排線傳送至向南流動之匯流排線。在一些實施方案中,在由ASIC 100執行一先前第一推斷時,可將一第二推斷之權重輸入載入至一或多個控制微磚。換言之,協調控制微磚之操作排程與運算推斷之其他微磚102之操作排程,使得在其他微磚102運算一第一推斷之相同計數器時間,控制微磚102準備新啟動資料及/或下一推斷之權重以發送至其他微磚102進行下一推斷之運算。
圖7B係繪示來自ASIC 100之一微磚102之一實例之一詳細視圖之一示意圖。如圖7B中展示,微磚102可包含輸入值儲存於其上之記憶體302。記憶體302可包含如本文中關於圖6描述之任何適合記憶體。如上文論述,記憶體302可用於儲存組態狀態資料(例如,來自組態資料封包)或程式資料,諸如微磚之個別操作排程。自鄰近於微磚102行進或行進通過微磚102之一或多個向南流動之通用可控匯流排線310d獲得輸入值。可透過使用一多工器將來自向南流動之可控匯流排線310d之資料傳送至記憶體302。在此步驟期間不使用其他通用可控匯流排線(310a、310b、310c)。
微磚102亦包含直接耦合至記憶體302之胞元306之一運算陣列。如本文中說明,胞元306之運算陣列可為組成ASIC之微磚之胞元之一較大脈動陣列之一子集。胞元306配置成一陣列,其中圖7B中展示之一單一胞元306在一位置(i ,j )=(0,0)處,其中參數i 表示陣列內之一胞元列位置且j 表示陣列中之一胞元行位置。在圖7B中展示之實例中,運算陣列具有8個列及8個行,但其他大小亦係可行的。運算陣列之各胞元306可包含經組態以基於在微磚處接收之資料而執行運算之電路。例如,各胞元306可包含乘法器電路、加法器電路及一或多個暫存器。各胞元306之輸出可作為一部分和傳遞至運算陣列內之一鄰近胞元或ASIC 100中之另一微磚之一運算陣列內之一胞元。在隨後步驟中使用胞元306之運算陣列。
微磚102亦包含用於提供來自先前微磚之資料之可控匯流排線320。例如,可控匯流排線320可攜載從ASIC 100中之一先前微磚之一運算陣列獲得之部分和輸出資料且將部分和輸出資料作為一輸入提供至微磚102內之運算陣列之胞元。在此步驟中未使用可控匯流排線320。
微磚102亦包含用於將啟動輸入值作為一輸入提供至運算陣列之胞元306之可控匯流排線330。例如,可將啟動輸入值提供至胞元306內之乘法器電路。可從通信介面108或從ASIC 100中之另一微磚內之胞元獲得啟動輸入值。可透過使用一多工器將來自可控匯流排線330之資料傳送至胞元306。在圖7A至圖7B中描繪之例示性步驟中不使用可控匯流排線330。
如本文中說明,在一些實施方案中,一或多個微磚102專用於儲存程式資料(諸如操作排程)及/或來自向量處理單元104之輸出資訊。在一些實施方案中,一或多個控制微磚內之運算陣列可不用於執行運算。替代地,除對輸入資料(諸如經接收權重輸入及啟動值)執行運算之外,一或多個控制微磚亦可經組態以儲存程式資料(諸如操作排程)。在一些實施方案中,將權重輸入載入至其中將使用權重輸入之各微磚102之記憶體中,而不首先將權重輸入儲存於一或多個控制微磚之一子集中。
在一第二步驟中,如圖8A中展示,在經排程計數器值處,將權重輸入301載入至微磚102內之運算陣列之個別胞元306中。將權重輸入301載入至個別胞元306中可包含將資料從一或多個控制微磚之記憶體傳送至權重輸入301所屬之對應微磚102。權重輸入301可沿通用可控匯流排線輸送至微磚102且透過耦合至匯流排線及記憶體之多工器傳送至記憶體。圖8B係一微磚102之一實例之一詳細視圖。權重輸入301可在模型執行之持續時間內儲存於記憶體302中,其可包含多個推斷之運算。作為從一或多個控制微磚載入權重輸入301之一替代方案,權重輸入301可已從通信介面108直接預載入至微磚102之記憶體中。為準備用於執行之一模型,針對各微磚102,可將權重輸入301從微磚102之記憶體302載入至該微磚102內之運算陣列之各胞元306中。例如,可將權重輸入301載入至胞元306內之一暫存器400 (亦被稱為一「後暫存器」)中。後暫存器之使用容許胞元306在將下一權重輸入載入至後暫存器中時對一當前權重輸入執行一運算。儘管在圖8B中僅針對一個胞元306展示載入權重暫存器,然在此步驟期間亦可載入運算陣列內之其他胞元之權重暫存器。
在一第三步驟中,如圖9A中展示,在經排程計數器值處,將啟動值500引入至微磚102中且可儲存於該處之記憶體302內。可在多個時脈循環內傳送啟動值500。接著,藉由各微磚102之運算陣列使用來自微磚102中之記憶體302之所接收啟動值500及權重輸入301執行運算。例如,運算可包含使一啟動值乘以一權重輸入且接著對該結果與一不同權重輸入及啟動值之乘積求和。在一些實施方案中,在可控匯流排線330上將啟動值500輸送至微磚102且在微磚102之間輸送啟動值500。可控匯流排線330之各者可沿一相同方向延伸。例如,如圖9B中展示,可控匯流排線330沿正交於可控匯流排線320延伸所沿之一格柵維度之一格柵維度橫向延伸。此外,如由圖9A中之箭頭501及圖9B中之可控匯流排線330上之箭頭501指示,啟動輸入資料500在相同(例如,向東流動)方向上在匯流排線330上行進。替代地,在一些實施方案中,一些啟動輸入值500在一第一方向(例如,向東流動方向)上在一些可控匯流排線330上行進且一些其他啟動輸入值500在一第二相反方向(例如,向西流動方向)上在一些其他可控匯流排線330上行進。
在一些實施方案中,延伸通過各微磚102之可控匯流排線330之數目由運算陣列之大小判定。例如,延伸通過各微磚102之可控匯流排線330之數目可至少等於運算陣列內之胞元之列數目。在圖9B中展示之實例中,鑑於在微磚102之運算陣列內存在8列胞元306,存在通過微磚102之8個可控匯流排線330。在一些實施方案中,各單獨可控制匯流排線330將啟動輸入值500傳送至運算陣列之一對應列內之胞元306。例如,針對一微磚102內之胞元306之8x8運算陣列,一第一可控匯流排線330將啟動輸入值500傳送至陣列之一第一列內之胞元306,一第二可控匯流排線330將啟動輸入值500傳送至陣列之一第二列內之胞元306等,直至最後可控匯流排330將啟動輸入值500傳送至陣列之最後列內之胞元306。額外可控匯流排線(例如,部分和匯流排線)可通過各微磚以從另一微磚提供部分和,接收及組合該微磚內之運算結果與所提供之部分和且將新部分和輸出至一新微磚或向量處理單元。
在一些實施方案中,可控匯流排線330將啟動輸入值500傳送至經組態以在胞元306內執行一運算之電路。例如,如圖9B中展示,可控匯流排線330經組態以將啟動輸入值500傳送至胞元306內之乘法器電路502。可透過在可控匯流排線330上使用多工器而將啟動輸入值500傳送至乘法器電路502。
在一些實施方案中,一旦啟動輸入值500及權重輸入值301被判定為處於適當位置中(例如,在執行載入操作所需之預定數目個計數器循環之後),微磚102內之運算陣列之胞元306便可使用來自微磚102中之記憶體302之所接收啟動輸入值500及權重輸入值301執行一運算。例如,如圖9B中展示,先前儲存於暫存器400中之權重輸入值301被傳送至暫存器504 (亦被稱為一「前暫存器」)。接著,使用乘法器電路502將權重輸入值301與所接收啟動輸入值500相乘。
如本文中說明,在可控匯流排線330上輸送啟動輸入值500。在一些實施方案中,可控匯流排線330係通用可控匯流排線。在一些實施方案中,可控匯流排線330可專用於提供啟動輸入。例如,如圖9B中展示,可藉由線330將啟動輸入值提供至一微磚102 (例如,至微磚102內之一運算陣列之胞元306),而其他通用可控匯流排線310b可用於將其他資料及/或指令提供至微磚102。
在一第四步驟中,如圖10B中展示,在經排程計數器值處,將各胞元306內之權重輸入值301與啟動輸入值500之間的一運算之一結果傳遞至胞元306內之電路602以產生一輸出值600。在圖10B之實例中,電路602包含一加總電路。各胞元306內之加總電路602經組態以對乘法器電路502之乘積與從ASIC 100中之另一微磚102或從運算陣列內之另一胞元306獲得之另一值求和。從另一微磚102或從另一胞元306獲得之值可包含例如一累加值。因此,加總電路602之輸出值600係一新累加值。接著,加總電路602可將新累加值600發送至定位於微磚102內之運算陣列之一底部(例如,在一向南流動方向上)鄰近胞元中之另一胞元。新累加值600可被用作底部鄰近胞元中之一加總之一運算元。針對運算陣列內之胞元之最後列,可將新累加值600傳送至ASIC 100內之另一微磚102,如圖10A中展示。在另一實例中,可將新累加值600傳送至與其中產生新累加值600之微磚102相距至少一個微磚之另一微磚102。替代地,亦如圖10A中展示,將來自運算陣列內之胞元之最後列之新累加值600傳送至向量處理單元104。
傳送至一微磚102中或從一微磚102傳送出之累加值600可沿可控匯流排線320輸送。可控匯流排線320之各者沿一相同方向延伸。例如,如圖10B中展示,可控匯流排線320沿正交於可控匯流排線330延伸所沿之一格柵維度之一格柵維度垂直延伸。此外,如由圖10A中之箭頭604及圖10B中之箭頭604指示,累加值600取決於向量處理單元104相對於產生累加值600之微磚102之位置而在一向北流動或向南流動方向上在可控匯流排線320上行進。例如,針對定位於圖10A中之向量處理單元104上方之微磚102,累加值600在朝向向量處理單元104之一向南流動方向上在可控匯流排線320上行進,而針對定位於向量處理單元104下方之微磚102,累加值600在朝向向量處理單元104之一向北流動方向上行進。
在如圖11中展示之一第五步驟中,在經排程計數器值處,藉由向量處理單元104處理由向量處理單元104接收之資料(例如,累加值)以提供經處理值900。在向量處理單元104處處理資料可包含:將一偏差應用於在向量處理單元104處接收之資料;執行額外累加運算;及/或將一非線性函數(例如,如神經網路系統中已知之整流函數或S型函數)應用於所接收資料。亦可藉由向量處理單元104應用其他操作。向量處理單元104可包含配置於多個片段106中之電路,其中各片段106經組態以處理從微磚102之一對應行接收之資料且產生一對應經處理值900。
在一第六步驟中,如圖12A中展示,在經排程計數器值處,將來自向量處理單元104之經處理值900傳送至ASIC 100之一或多個微磚(例如,ASIC 100之微磚之一子集)且儲存於該一或多個微磚中。例如,可將經處理值900發送至定位成直接鄰近於向量處理單元104之控制微磚103。替代地或另外,可將經處理值900發送至ASIC 100內之其他微磚102之一或多者。可透過一通用可控匯流排線(諸如可控匯流排線310c)將經處理值900傳送至一或多個微磚。在到達一微磚(例如,一控制微磚或其他微磚102)之後,經處理值900可儲存於微磚之記憶體202中。例如,可使用與可控匯流排線310c相關聯之一多工器將經處理值900傳送至記憶體902。儲存經處理值900之步驟可在獲得各模型層之推斷之後發生。在一些實施方案中,可將經處理值900作為輸入值提供至模型之下一層。
在一第七步驟中,如圖13A及圖13B中展示,在經排程計數器值處,可從ASIC 100匯出經處理值900。例如,經處理值900可從一或多個控制微磚之記憶體202傳送至通信介面108。可在可控匯流排線(例如,可控匯流排線310c及/或310d)上將經處理值900輸送至通信介面108。可透過與匯流排線相關聯之多工器將經處理值900傳送至可控匯流排線。
例如,若已獲得一模型之一最終層之推斷或若已在多個ASIC之間分割模型且已獲得與ASIC 100相關聯之最終層之推斷,則可自ASIC 100匯出經處理值900。經處理值900可由通信介面108之SerDes介面接收並匯出至另一目的地,包含(但不限於)例如另一ASIC 100或一場可程式化閘陣列晶片。
關於圖7A至圖13B描述之例示性程序可需要在執行胞元運算之前貫穿各微磚之運算陣列完全傳播啟動值及權重輸入,或胞元可在完全傳播全部值之前執行運算。在任一情況中,可協調個別微磚之操作排程,使得對運算適當地計時。例如,若一特定機器學習程式需要在執行胞元運算之前使啟動值及權重輸入完全傳播通過各微磚之運算陣列,則操作指令可針對確保完全傳播啟動值及權重之一時間排程運算之執行。此外,儘管ASIC 100已被描述為將權重輸入發送至一運算陣列之行且將啟動輸入發送至運算陣列之列,然在一些實施方案中,將權重輸入發送至陣列之列且將啟動輸入發送至陣列之行。
此外,儘管運算陣列已在本文中被描述為在各胞元內使用個別加總電路,然運算陣列內之胞元群組(例如,一行內之全部胞元)可直接耦合至一單一加總電路,其對來自群組中之胞元之所接收輸出求和,因此減少儲存輸出所需之加總電路之數目。
本說明書中描述之標的物及功能操作之實施例可在數位電子電路、電腦硬體(包含本說明書中揭示之結構及其等結構等效物)或其等之一或多者之組合中實施。本說明書中描述之標的物之實施例可被實施為一或多個電腦程式,即,編碼於一有形非暫時性程式載體上以由資料處理設備執行或控制資料處理設備之操作的電腦程式指令之一或多個模組。替代地或另外,可將程式指令編碼於一人工產生之傳播信號(例如,一機器產生之電信號、光學信號或電磁信號)上,該傳播信號經產生以編碼用於傳輸至適合接收器設備之資訊以由一資料處理設備執行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
術語「資料處理設備」涵蓋用於處理資料之各種設備、裝置及機器,包含例如一可程式化處理器、一電腦或多個處理器或電腦。設備可包含專用邏輯電路,例如一FPGA(場可程式化閘陣列)或一ASIC。除硬體之外,設備亦可包含產生所述電腦程式之一執行環境之程式碼,例如構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合之程式碼。
本說明書中描述之程序及邏輯流程可由一或多個可程式化電腦執行,該一或多個可程式化電腦執行一或多個電腦程式以藉由對輸入資料進行操作且產生輸出而執行功能。程序及邏輯流程亦可由專用邏輯電路(例如,一FPGA、一ASIC或一GPGPU (通用圖形處理單元))執行,且設備亦可被實施為專用邏輯電路。
雖然本說明書含有許多特定實施方案細節,但此等細節不應被解釋為限制任何發明或可主張內容之範疇,而應當解釋為可特定於特定發明之特定實施例之特徵之描述。本說明書中在單獨實施例之內容脈絡中描述之某些特徵亦可在一單一實施例中組合實施。相反地,在一單一實施例之內容脈絡中描述之各種特徵亦可單獨地或以任何適合子組合在多項實施例中實施。而且,儘管上文可將特徵描述為以特定組合起作用且甚至最初如此主張,然在一些情況中,來自所主張組合之一或多個特徵可從組合中免除,且所主張組合可係關於一子組合或一子組合之變動。
類似地,雖然在圖式中按一特定順序描繪操作,但此不應被理解為要求按所展示之特定順序或循序順序執行此等操作,或執行所有繪示之操作以達成所要結果。在某些境況中,多任務處理及平行處理可為有利的。再者,在上文中描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中皆需要此分離,且應理解所描述之程式組件及系統可大體上一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的物之特定實施例。其他實施例在以下發明申請專利範圍之範疇內。例如,儘管匯流排線被描述為「可控」,然並非全部匯流排線需要具有相同控制位準。例如,可存在不同可控性程度,其中僅在一些匯流排線在其等可獲得資料或其等可發送資料之微磚之數目方面受限時而控制一些匯流排線。在另一實例中,一些匯流排線可專用於沿一單一方向(諸如北方、東方、西方或南方,如本文中描述)提供資料。在一些情況中,在發明申請專利範圍中敘述之動作可以一不同順序執行且仍達成所要結果。作為一個實例,在附圖中描繪之程序不必要求所展示之特定順序或依序順序來達成所要結果。在某些實施方案中,多任務處理及平行處理可為有利的。
10:積體電路晶片 12:通信介面 14:硬體區塊/硬體微磚/第一硬體微磚 16:匯流排 17:資料匯流排 18:控制電路 20:本端記憶體 22:運算單元 30:程序 32:步驟 33:步驟 34:步驟 36:步驟 37:步驟 40:觸發表 50:項目 52:觸發ID 54:位址 56:組態空間更新 58:啟用旗標 60:額外旗標 100:特定應用積體電路(ASIC) 101:第一維度 102:微磚 103:第二維度/控制微磚 104:向量處理單元 106:片段 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:箭頭 900:經處理值
圖1係繪示經組態以根據經排程操作進行操作之一例示性積體電路裝置之一示意圖。
圖2係繪示用於使用組態資料初始化硬體微磚之一例示性程序之一流程圖。
圖3係繪示用於初始化一硬體微磚群組之一程序之一實例之一流程圖。
圖4係繪示一觸發表之一實例之一示意圖。
圖5係繪示可經組態以根據經排程操作進行操作之專用邏輯電路之一實例之一示意圖。
圖6係繪示用於圖5之ASIC晶片中之一微磚之一實例之一示意圖。
圖7A、圖8A、圖9A、圖10A、圖11、圖12A及圖13A係繪示在藉由一ASIC實施之一例示性程序中之不同時間通過ASIC之一資料流之一概述之示意圖。
圖7B、圖8B、圖9B、圖10B、圖12B及圖13B係分別繪示在與圖7A、圖8A、圖9A、圖10A、圖11、圖12A及圖13A相關聯之時間在一ASIC之一單一微磚內之資料流之細節之示意圖。
30:程序
32:步驟
33:步驟
34:步驟
36:步驟
37:步驟

Claims (21)

  1. 一種組態包括複數個硬體微磚之一積體電路之方法,該方法包括: 藉由將該複數個硬體微磚中除一最後硬體微磚之外之各硬體微磚組態為處於一資料轉送狀態中而建立通過該複數個硬體微磚之一資料轉送路徑, 其中將除該最後硬體微磚之外之各硬體微磚組態為處於一轉送狀態中包括安裝指定該硬體微磚處於該資料轉送狀態中之一對應預定義時間長度之一各別轉送狀態計數器; 沿著該資料轉送路徑對該複數個硬體微磚之各硬體微磚供應包括該硬體微磚之程式資料之一各別程式資料封包;及 針對該複數個硬體微磚之各硬體微磚安裝該各別程式資料。
  2. 如請求項1之方法,其中在接收透過該資料轉送路徑傳遞之一第一資料封包之後安裝該複數個硬體微磚中除該最後硬體微磚之外之各硬體微磚之該轉送狀態計數器。
  3. 如請求項2之方法,其中該第一資料封包包括一程式資料封包,該程式資料封包包括該複數個硬體微磚之該最後硬體微磚之程式資料。
  4. 如任何前述請求項之方法,其中安裝各硬體微磚之該各別轉送狀態計數器包括在該硬體微磚之一觸發表中定義該轉送狀態計數器。
  5. 如請求項4之方法,其中當各硬體微磚之該轉送狀態計數器達到該對應預定義時間長度時,該觸發表觸發該硬體微磚之程式資料之安裝且引起該硬體微磚離開該資料轉送狀態。
  6. 如任何前述請求項之方法,其中針對包括一各別轉送狀態計數器之各硬體微磚,該轉送狀態計數器之該對應預定義時間長度依據該資料轉送路徑中之後續硬體微磚之一數目而變化。
  7. 如任何前述請求項之方法,其中該複數個硬體微磚之各硬體微磚將該硬體微磚之該各別程式資料儲存於本端記憶體中。
  8. 如任何前述請求項之方法,其中包括一各別轉送狀態計數器之各硬體微磚將至少一個程式資料封包轉送至該資料轉送路徑中之至少一個其他硬體微磚。
  9. 如任何前述請求項之方法,其中各硬體微磚包括電路元件之一脈動陣列。
  10. 如任何前述請求項之方法,其中該複數個微磚配置成一個一維或二維陣列。
  11. 如任何前述請求項之方法,其進一步包括將指定直至該硬體微磚開始由安裝於該硬體微磚上之該程式資料定義之操作之一對應預定義時間長度之一各別起動狀態計數器安裝於該複數個硬體微磚之至少一些硬體微磚上。
  12. 如請求項11之方法,其中在接收該第一資料封包之後安裝該複數個硬體微磚中除該最後硬體微磚之外之各硬體微磚之該各別起動狀態計數器。
  13. 如請求項12之方法,其中各起動狀態計數器之該預定義時間長度不同。
  14. 如請求項13之方法,其中各起動狀態計數器之該預定義時間長度依據該資料轉送路徑中之硬體微磚之一數目而變化。
  15. 如請求項11至14中任一項之方法,其中各起動狀態計數器之該預定義時間長度經定義使得該複數個硬體微磚同時執行其等各別程式資料。
  16. 如請求項11至15中任一項之方法,其中安裝各硬體微磚之該各別起動狀態計數器包括在該硬體微磚之一觸發表中定義該起動狀態計數器。
  17. 一種組態包括複數個硬體微磚之一積體電路之方法,該方法包括: 建立通過除該複數個微磚之一最後硬體微磚之外之該複數個微磚之各硬體微磚之一資料轉送路徑,其中建立該資料轉送路徑包括 藉由以下各者依序組態該資料轉送路徑之各硬體微磚:(a)安裝該微磚之程式資料;(b)將該微磚組態為處於一轉送狀態中;及(c)安裝指定該硬體微磚處於該資料轉送狀態中之一對應預定義時間長度之一起動狀態計數器。
  18. 如請求項17之方法,其中針對該資料轉送路徑之一特定微磚,該預定義時間長度依據尚未安裝程式資料之該複數個微磚內之微磚之一數目而變化。
  19. 如請求項17或18中任一項之方法,其中一旦各起動狀態計數器達到該對應預定義時間長度,其上安裝該起動狀態計數器之該微磚便開始執行根據安裝於該微磚上之該程式資料之操作。
  20. 一種包括一積體電路之系統,其包括: 複數個硬體微磚;及 一資料匯流排,其耦合該複數個硬體微磚, 其中該系統經組態以執行一根據前述請求者中任一項之方法。
  21. 一種電腦程式產品,其包括電腦可讀程式碼,該電腦可讀程式碼在藉由包括由一資料匯流排耦合之複數個硬體微磚之一運算系統執行時引起該運算系統執行一如請求項1至19中任一項之方法。
TW109128679A 2019-08-22 2020-08-21 初始化晶片上操作 TWI758833B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962890149P 2019-08-22 2019-08-22
US62/890,149 2019-08-22

Publications (2)

Publication Number Publication Date
TW202127840A true TW202127840A (zh) 2021-07-16
TWI758833B TWI758833B (zh) 2022-03-21

Family

ID=72422232

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109128679A TWI758833B (zh) 2019-08-22 2020-08-21 初始化晶片上操作

Country Status (7)

Country Link
US (1) US12124783B2 (zh)
EP (1) EP4000229A1 (zh)
JP (2) JP7282980B2 (zh)
KR (1) KR20220051367A (zh)
CN (2) CN118605971A (zh)
TW (1) TWI758833B (zh)
WO (1) WO2021035015A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220413721A1 (en) * 2021-06-28 2022-12-29 Google Llc Control of machine-learning systems
CN118401936A (zh) * 2021-12-16 2024-07-26 谷歌有限责任公司 用于集成电路的一维计算单元

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0991262A (ja) * 1995-09-20 1997-04-04 Fuji Xerox Co Ltd マルチプロセッサシステム
US7394288B1 (en) * 2004-12-13 2008-07-01 Massachusetts Institute Of Technology Transferring data in a parallel processing environment
JP2009271724A (ja) 2008-05-07 2009-11-19 Toshiba Corp ハードウェアエンジン制御装置
KR101017977B1 (ko) 2009-08-11 2011-03-02 주식회사 케피코 복수개의 제어기의 리프로그래밍 방법
WO2012154596A1 (en) * 2011-05-06 2012-11-15 Xcelemor, Inc. Computing system with data and control planes and method of operation thereof
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9952831B1 (en) 2017-02-16 2018-04-24 Google Llc Transposing in a matrix-vector processor
US10909447B2 (en) 2017-03-09 2021-02-02 Google Llc Transposing neural network matrices in hardware
US10261786B2 (en) 2017-03-09 2019-04-16 Google Llc Vector processing unit
CN109194499A (zh) 2018-08-01 2019-01-11 湖北微源卓越科技有限公司 网络数据流可靠性保护方法

Also Published As

Publication number Publication date
US20220277125A1 (en) 2022-09-01
CN116057914B (zh) 2024-06-28
EP4000229A1 (en) 2022-05-25
JP2022545115A (ja) 2022-10-25
TWI758833B (zh) 2022-03-21
KR20220051367A (ko) 2022-04-26
JP2023107786A (ja) 2023-08-03
CN118605971A (zh) 2024-09-06
WO2021035015A1 (en) 2021-02-25
JP7282980B2 (ja) 2023-05-29
CN116057914A (zh) 2023-05-02
US12124783B2 (en) 2024-10-22

Similar Documents

Publication Publication Date Title
CA3060356C (en) Task activating for accelerated deep learning
US12057834B2 (en) Application specific integrated circuit accelerators
US8478964B2 (en) Stall propagation in a processing system with interspersed processors and communicaton elements
CN111164616A (zh) 能够后向传播的脉动神经网络引擎
EP3607505A1 (en) Task synchronization for accelerated deep learning
US11321607B2 (en) Machine learning network implemented by statically scheduled instructions, with compiler
US10564929B2 (en) Communication between dataflow processing units and memories
CN110100255B (zh) 区域有效、可重新配置、节能、速度有效的神经网络基板
JP2023107786A (ja) オンチップ動作の初期化
US20200167309A1 (en) Reconfigurable fabric configuration using spatial and temporal routing
US20190074836A1 (en) Logical elements with switchable connections in a reconfigurable fabric
CN113407479A (zh) 一种内嵌fpga的众核架构及其数据处理方法
CN115244909A (zh) 机器学习加速器中的队列分配
TWI764236B (zh) 晶片上操作的顯式排程
US20220058468A1 (en) Field Programmable Neural Array
TWI767303B (zh) 在神經網路中傳播延遲減少之電腦實施方法
WO2020051918A1 (zh) 神经元电路、芯片、系统及其方法、存储介质
US20230084132A1 (en) A Network Computer with External Memory
US20230058749A1 (en) Adaptive matrix multipliers
US20240028386A1 (en) Deep neural network (dnn) compute loading and traffic-aware power management for multi-core artificial intelligence (ai) processing system