TW201928665A - 多微磚、多晶片處理配置中之同步化 - Google Patents
多微磚、多晶片處理配置中之同步化 Download PDFInfo
- Publication number
- TW201928665A TW201928665A TW107136871A TW107136871A TW201928665A TW 201928665 A TW201928665 A TW 201928665A TW 107136871 A TW107136871 A TW 107136871A TW 107136871 A TW107136871 A TW 107136871A TW 201928665 A TW201928665 A TW 201928665A
- Authority
- TW
- Taiwan
- Prior art keywords
- microbricks
- synchronization
- external
- time
- participating
- Prior art date
Links
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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4247—Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
- G06F13/4256—Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using a clocked protocol
-
- 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/505—Clust
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本發明揭示一種操作包括劃分成複數個域之多個處理器微磚之一系統之方法,其中在各域內該等微磚經由一時間確定性互連件之一各自例項彼此連接且在域之間該等微磚經由一非時間確定性互連件彼此連接。該方法包括:執行一運算階段,接著在各域內執行一各自內部屏障同步化,接著在各域內執行一內部交換階段,接著執行一外部屏障同步化以在不同域之間同步化,接著在該等域之間執行一外部交換階段。
Description
本發明係關於同步化包括一多微磚處理配置之一處理器中之多個不同微磚之工作負載,各微磚包括其自身處理單元及記憶體。特定言之,本發明係關於整體同步平行(BSP)通信方案,藉此一群組微磚之各者必須在該群組中之該等微磚之任一者可進行至一交換階段之前完成一運算階段。
一多執行緒處理器係能夠同時執行多個程式執行緒之一處理器。該處理器可包括為多個不同執行緒所共有之某一硬體(例如,一共同指令記憶體、資料記憶體及/或執行單元);但支援多執行緒,該處理器亦包括特定於各執行緒之某一專用硬體。
該專用硬體至少包括用於可同時執行之許多執行緒之各者之一各自內文暫存器檔案。一「內文」在談論多執行緒處理器時係指同時執行之執行緒之一各自者之程式狀態(例如,程式計數器值、狀態及當前運算元值)。該內文暫存器檔案係指用於表示該各自執行緒之此程式狀態之暫存器之各自集合。一暫存器檔案中之暫存器與通用記憶體相異之處在於,暫存器位址係固定為指令字中之位元,而記憶體位址可藉由執行指令而運算。一給定內文之暫存器通常包括用於各自執行緒之一各自程式計數器,及用於在藉由該執行緒執行之運算期間暫時保存作用於該各自執行緒且藉由該各自執行緒輸出之資料之一各自運算元暫存器組。各內文亦可具有用於儲存各自執行緒之一狀態(例如,該各自執行緒是否暫停或運行)之一各自狀態暫存器。因此,當前運行執行緒之各者具有其自身單獨程式計數器,及視需要運算元暫存器及(若干)狀態暫存器。
多執行緒之一個可能形式係平行性。即,除了多個內文以外,亦提供多個執行管線:即,用於將並行執行之指令之各串流之一單獨執行管線。然而,此需要在硬體方面進行大量複製。
因此代替性地,多執行緒處理器之另一形式採用並行性而非平行性,藉此執行緒共用一共同執行管線(或一管線之至少一共同部分)且不同執行緒透過此相同、共用執行管線交錯。由於增加隱藏管線延時之機會,所以相較於無並行性或平行性,仍可改良多執行緒處理器之效能。又,此方法並不需要與具有多個執行管線之一完全平行處理器一樣多的專用於各執行緒之額外硬體,且因此不會引發如此多的額外矽。
平行性之一個形式可藉助於一處理器達成,該處理器包括相同晶片(即,相同晶粒)上之多個微磚之一配置,各微磚包括其自身單獨各自處理單元及記憶體(包含程式記憶體及資料記憶體)。因此,程式碼之單獨部分可在該等微磚之不同者上並行運行。該等微磚經由一晶片上互連件連接在一起,該晶片上互連件使程式碼能夠在不同微磚上運行以在微磚之間通信。在一些情況中,各微磚上之處理單元可自身運行微磚上之多個並行執行緒,各微磚具有如上文所描述之其自身各自組之內文及對應管線以便支援相同微磚上之多個執行緒透過相同管線交錯。
一般而言,在不同微磚上運行之一程式之部分之間可存在相依性。因此需要一種防止一個微磚上之一段程式碼在其所取決於之可藉由另一微磚上之另一段程式碼獲得之資料前面運行之技術。存在用於達成此之許多可能方案,但本文中所關注之方案被稱為「整體同步平行」(Bulk Synchronous Parallel;BSP)。根據BSP,各微磚在一交替循環中執行一運算階段及一交換階段。在運算階段期間,各微磚在微磚上本端執行一或多個運算任務,但不會將其運算之任何結果與微磚之任何其他者通信。在交換階段中,容許各微磚將來自先前運算階段之運算之一或多個結果交換至群組中之微磚之一或多個其他者及/或自群組中之微磚之一或多個其他者交換,但尚未進行至下一運算階段。此外,根據BSP原理,將一屏障同步化放置於自運算階段過渡至交換階段之接點,或自交換階段過渡至運算階段之接點,或兩者處。即,以下任一者:(a)需要所有微磚在容許群組中之任一者進行至下一交換階段之前完成其等各自運算階段;或(b)需要群組中之所有微磚在容許群組中之任何微磚進行至下一運算階段之前完成其等各自交換階段;或(c)兩者。在一些案例中,可容許執行運算之一微磚與其他系統資源(諸如一網路卡或儲存磁碟)通信,只要不涉及與群組中之其他微磚之通信。
在亦可具有在彼此通信中執行之運算任務之發送器及接收器之一互連系統中,該等發送器及接收器基本上存在三種方式可實施此。第一方式係「會合(rendez vous)」方法。根據此方法,發送器在其準備好發送資料時傳訊至接收器,且接收器在其準備好接收資料時傳訊至發送器。若發送器具有準備好發送之資料但接收器正執行某一其他運算任務,則發送器必須等待接收器完成其運算任務且傳訊其準備就緒以自發送器接收資料,否則發送器必須中斷接收器。類似地,若接收器需要來自發送器之資料而發送器仍執行某一其他運算任務,則接收器必須等待發送器完成其運算任務且傳訊其準備就緒以將資料發送至接收器,否則接收器必須中斷發送器。該會合方法具有以下優點:其不需要佇列以佇列經傳輸資料,因為只有發送器及接收器兩者已同意其等準備好通信,資料之通信才會進行。然而,缺點係延時:發送器及接收器將花費大量時間等待彼此,否則不得不執行大量中斷,此亦將引發延時損失。延時最終表現為降低之處理能力。
第二可能性係「郵箱」方法。根據此方法,發送器在發送其資料之前不會等待接收器。代替性地,經傳輸資料在一佇列中緩衝,接收器在其準備好時自該佇列讀取資料。只要該佇列足夠長,此就解決會合方法之延時問題。然而,若佇列填滿,則程序停止運作且實際上通信回至會合方法。為減小此之可能性,相較於有可能傳輸之資料量需要將佇列製成長。但佇列引發一顯著矽覆蓋區,尤其在發送器及接收器之許多潛在組合之一陣列中。又,實際上無法將佇列製成無限長。
整體同步平行(BSP)提供一第三方式:各微磚在一運算階段中執行一特定定義量之運算處理,接著所有微磚在進展至一交換階段之前一起同步化(屏障同步化)。此不會引發與會合方法一樣多之延時,且不會引發與郵箱方法一樣多之佇列。
在機器智慧中找到多執行緒及/或多微磚處理之一例示性使用。如熟習機器智慧技術者將熟知,一機器智慧演算法係基於對可藉由多個互連節點之一圖表表示之一「知識模型」執行迭代更新。各節點表示其輸入之一函數。一些節點接收該圖表之輸入且一些自一或多個其他節點接收輸入,而一些節點之輸出形成其他節點之輸入,且一些節點之輸出提供圖表之輸出(且在一些情況中,一給定節點可甚至具有所有以下此等:圖表之輸入、來自圖表之輸出及至其他節點之連接)。此外,各節點處之函數係藉由一或多個各自參數(例如,權重)參數化。在一學習階段期間,目的係基於一組經驗輸入資料找到用於各種參數之值使得圖表作為一整體將針對一系列可能輸入產生一所要輸出。此項技術中已知用於完成此之各種演算法,諸如基於隨機梯度下降法之一反向傳播演算法。在基於輸入資料之多次迭代中,逐步調諧參數以減少其等錯誤,且因此圖表收斂於一解。在一後續階段中,可接著使用經學習模型以在給定一組指定輸入之情況下對輸出進行預測或在給定一組指定輸出之情況下進行關於輸入(原因)之推斷。
各節點之實施方案將涉及資料之處理,且圖表之互連對應於將在節點之間交換之資料。通常,各節點之至少一些處理可獨立於圖表中之節點之一些或所有其他者執行,且因此大圖表為並行性及/或平行性提供巨大機會。
本發明從選取一整體同步平行(BSP)方法作為在微磚之間通信之基礎之一位置開始。
根據本發明,期望跨包括經配置成不同時間確定性域之多個處理微磚之一系統實施BSP,其中相同域中之微磚之間之通信係時間確定性的,但不同域中之微磚之間之通信係非時間確定性的。在此等案例中,本發明者已發現,可期望將BSP程序分離成時間確定性階段及非時間確定性階段,以便防止時間確定性域內之至少一些時間確定性交換之時間確定性受此等域之間的非時間確定性交換污染。
根據本文中所揭示之一個態樣,提供一種操作包括劃分成複數個域之多個處理器微磚之一系統之方法,其中在各域內該等微磚經由一時間確定性互連件之一各自例項彼此連接且在域之間該等微磚經由一非時間確定性互連件彼此連接;該方法包括:
在跨該等域之一些或所有該等微磚之一參與群組之每一各自者上,執行一運算階段,其中該各自微磚執行各自一或多個微磚上運算,但既不將運算結果傳達至該群組中之該等微磚之任何其他者亦不自該群組中之該等微磚之任何其他者傳達運算結果;
在該一或多個域之每一各自者內,執行一各自內部屏障同步化以要求該各自域中之所有參與微磚在容許該各自域中之任何參與微磚進行至一內部交換階段之前已完成運算階段,藉此在該一或多個域之各個別者內在內部建立所有參與微磚之間的一共同時間參考;
在該各自內部屏障同步化之後,在該一或多個域之各者內執行該內部交換階段,其中該各自域內之各參與微磚經由該時間確定性互連件將其各自運算之一或多個結果傳達至相同域內之該等參與微磚之一或多個其他者及/或自相同域內之該等參與微磚之一或多個其他者傳達其各自運算之一或多個結果,但既不將運算結果傳達至該等域之任何其他者亦不自該等域之任何其他者傳達運算結果;
執行一外部屏障同步化以要求該等域之所有該等參與微磚在容許該等參與微磚之任一者進行至一外部交換階段之前已完成該內部交換階段,藉此跨該等域建立所有參與微磚之間的一共同時間參考;及
在該外部屏障同步化之後,執行該外部交換階段,其中該等參與微磚之一或多者經由該非時間確定性互連件將該等運算結果之一或多者傳達給該等域之另一者。
在跨該等域之一些或所有該等微磚之一參與群組之每一各自者上,執行一運算階段,其中該各自微磚執行各自一或多個微磚上運算,但既不將運算結果傳達至該群組中之該等微磚之任何其他者亦不自該群組中之該等微磚之任何其他者傳達運算結果;
在該一或多個域之每一各自者內,執行一各自內部屏障同步化以要求該各自域中之所有參與微磚在容許該各自域中之任何參與微磚進行至一內部交換階段之前已完成運算階段,藉此在該一或多個域之各個別者內在內部建立所有參與微磚之間的一共同時間參考;
在該各自內部屏障同步化之後,在該一或多個域之各者內執行該內部交換階段,其中該各自域內之各參與微磚經由該時間確定性互連件將其各自運算之一或多個結果傳達至相同域內之該等參與微磚之一或多個其他者及/或自相同域內之該等參與微磚之一或多個其他者傳達其各自運算之一或多個結果,但既不將運算結果傳達至該等域之任何其他者亦不自該等域之任何其他者傳達運算結果;
執行一外部屏障同步化以要求該等域之所有該等參與微磚在容許該等參與微磚之任一者進行至一外部交換階段之前已完成該內部交換階段,藉此跨該等域建立所有參與微磚之間的一共同時間參考;及
在該外部屏障同步化之後,執行該外部交換階段,其中該等參與微磚之一或多者經由該非時間確定性互連件將該等運算結果之一或多者傳達給該等域之另一者。
即,首先執行一或多個內部BSP階段,藉此相同時間確定性域中之微磚彼此同步化及交換資料,但並不需要與不同確定性域中之任何實體同步化,且並不在此等域之間交換資料。接著執行一單獨外部BSP階段,藉此跨更廣非時間確定性領域之所有微磚在一「全域同步化」中同步化且接著在域之間交換資料。
需要時間確定性之一個原因係因為其容許在相同域中之微磚之間通信而不會引發各自互連件中之任何佇列之矽覆蓋區。
因此在實施例中,經由非時間確定性互連件之通信在佇列中,但經由時間確定性互連件之微磚之間之通信未在佇列中。
在實施例中,經由時間確定性互連件,各對傳輸微磚及接收微磚之間的通信可藉由以下者執行:
自該接收微磚傳輸一訊息,及
控制該接收微磚以在藉由該傳輸微磚傳輸之後之一預定時間間隔監聽該傳輸微磚之一位址,
其中該預定時間間隔等於該傳輸微磚與該接收微磚之間的一總預定延遲,該時間間隔係由具有關於該延遲之預定資訊之一編譯器設定。
自該接收微磚傳輸一訊息,及
控制該接收微磚以在藉由該傳輸微磚傳輸之後之一預定時間間隔監聽該傳輸微磚之一位址,
其中該預定時間間隔等於該傳輸微磚與該接收微磚之間的一總預定延遲,該時間間隔係由具有關於該延遲之預定資訊之一編譯器設定。
在時間確定性領域與非時間確定性領域之間進行劃分之另一原因在於,時間確定性通常意謂實體處之一無損耗介質,但另一方面跨一無限微磚範圍擴展此可為不切實際的。因此又將期望容許特定域內之時間確定性同時避免更廣非時間確定性通信污染一時間確定性交換階段。
因此,在實施例中,時間確定性互連件係無損耗的,而非時間確定性互連件在一實體層、輸送層或網路化層處係有損耗的。
在時間確定性領域與非時間確定性領域之間劃分之另一原因在於,在實施例中,一時間確定性互連件經提供用於在晶片上在內部交換資料,但使晶片之間之通信變為時間確定性較不實際。
因此,在實施例中,該等域之各者可為一不同各自晶片,其中時間確定性互連件係一內部晶片上互連件且非時間確定性互連件係該等晶片之間的一外部互連件。
相較於相同晶片上之微磚之間的內部通信,在晶片之間交換資料時將引發一更大損失。相對於一內部通信,外部通信經歷較長延時及較大不確定性,因為其並非本端。晶片之間的連接歸因於藉由封裝強加之限制而趨於具有一較低佈線密度,且因此較少可用資料頻寬。又,導線進一步延伸且因此更具電容性,且更易受雜訊影響(此可導致損耗且因此需要在實體層處重新傳輸)。此外,除一較大實體距離之外,晶片之間的資料傳送通常亦遍歷更大量之邏輯(諸如SerDes (串列化器-解串列化器)及流控制機制),其等之全部相較於內部通信增加額外延遲。
藉由分離內部、晶片上BSP階段與外部、晶片外BSP階段,此防止相同晶片上之微磚之間之一些交換受一全域交換之延時「污染」,該全域交換在延時方面為一更昂貴操作。若代替性地每個BSP階段涉及一全域同步化及交換,則此將導致一顯著更慢程式。
不同晶片可為相同積體電路(IC)封裝上之不同晶粒,或不同IC封裝上之不同晶粒,或此等之一混合物。
亦應注意,更一般而言,不排除在除了晶片上/晶片外邊界以外之別處進行時間確定性領域與非時間確定性領域之間之劃分。例如,一時間確定性互連件可經提供以在多個晶片之子群組之間交換資料,或替代性地相對於彼此非同步之不同時間確定性域可形成於相同晶片上。
因此,在實施例中,該等域之各者可包括多個晶片,時間確定性互連件係一外部無損耗晶片間互連件且非時間確定性互連件係一外部有損耗互連件。
在實施例中,方法可包括執行一系列重複反覆,各重複反覆包括運算階段之一各自例項,接著為內部屏障同步化之一各自例項,接著為內部交換階段之一各自例項,接著為外部屏障同步化之一各自例項,接著為外部交換階段之一各自例項;其中不容許各連續反覆進行直至已執行緊接在前之反覆之外部屏障同步化。
在實施例中,方法可包括執行如下之一序列:運算階段之例項,其後各接著內部交換階段之一對應例項且接著內部屏障同步化之一對應例項,且外部屏障同步化可在該序列中之最後運算階段之後。
在實施例中,該等反覆之一或多個反覆之各者可包括如下之一各自序列:運算階段之多個例項,其後各接著內部交換階段之一對應例項且接著內部屏障同步化之一對應例項,且各自外部屏障同步化可在該各自序列中之運算階段之最後例項之後。
在實施例中,內部屏障同步化及外部屏障同步化之各者可藉由執行包括一操作碼及一運算元之一同步化指令而執行,其中該運算元將該同步化指令之一模式指定為內部或外部,且其中該操作碼在經執行時引起時間確定性互連件中之硬體邏輯在該運算元指定內部模式時協調內部屏障同步化之效能,且引起非時間確定性互連件中之硬體邏輯在該運算元指定外部模式時協調外部屏障同步化之效能。
在實施例中,方法可包括選擇複數個預定義區帶之一者作為參與微磚,各區帶包括該多個域之一不同組或子集。
在實施例中,區帶可為階層式的,其中至少兩個較低層級區帶經巢套於至少一較高層級區帶內。
在實施例中,同步化指令之運算元可指定外部屏障同步化應用於外部模式之複數個不同可能變體之哪一者,各變體對應於該等區帶之一不同者。
在實施例中,外部模式之變體可指定外部屏障同步化應用於區帶之至少哪一階層層級。
在實施例中,外部同步化及交換可包括:
首先執行限於該等階層式區帶之一第一、較低層級區帶內之一第一層級外部同步化且接著交換;及
在第一層級同步化及交換之後,跨該等區帶之一第二、較高層級區帶執行一第二層級外部同步化及交換。
首先執行限於該等階層式區帶之一第一、較低層級區帶內之一第一層級外部同步化且接著交換;及
在第一層級同步化及交換之後,跨該等區帶之一第二、較高層級區帶執行一第二層級外部同步化及交換。
在實施例中,該等階層式區帶之一者可僅由一相同IC封裝上之所有微磚組成;及/或該等階層式區帶之一者可僅由一相同卡上之所有微磚組成;及/或該等階層式區帶之一者可僅由一相同機箱上之所有微磚組成。
在實施例中,方法可包括在該等微磚之一者或一些者上執行一放棄指令,該放棄指令之操作碼引起其上執行該放棄指令之該微磚或該等微磚選擇退出該群組。
在實施例中,在外部交換階段中,參與微磚之一或多者亦可經由外部互連件將該等運算結果之一或多者傳達給一主機處理器,該主機處理器經實施於一單獨主機處理器晶片上。
在實施例中,在運算階段中,一些或所有該等參與微磚可各以一交錯方式運行一批工作者執行緒,且內部屏障同步化可要求每批中之工作者執行緒已退出。
在實施例中,方法可包括使用系統執行一機器智慧演算法,其中一圖表中之各節點具有一或多個各自輸入頂點及一或多個各自輸出頂點,其中該等節點中之至少一些節點之輸入頂點係該等節點中之至少一些其他節點之輸出頂點,各節點包括使其輸出頂點與其輸入頂點有關之一各自函數,其中每一各自函數藉由一或多個各自參數參數化,且該等各自參數之各者具有一相關聯錯誤,使得該圖表在一些或所有該等參數中之錯誤減少時收斂於一解;其中微磚之各者可用於模型化該圖表中之該等節點之各自一或多者。
在實施例中,該等晶片可採用協助主機處理器之AI加速器晶片之形式。
在本發明之替代態樣中,BSP之不同層級之間的主要劃分可在晶片上領域與晶片外領域之間進行,而非必須根據時間確定性領域及非時間確定性領域劃分BSP程序。不排除將內部通信及外部通信兩者製成時間確定性,或將內部通信及外部通信兩者製成非時間確定性,或時間確定性領域之間的劃分並非根據微磚是否在相同晶片或不同晶片上而特定繪製。在此等情況中,內部晶片上BSP與外部晶片外BSP之分離在先前論述之延時方面仍將係有利的。
因此根據本文中所揭示之另一態樣,提供一種操作包括經由一外部互連件連接在一起之多個處理器晶片之一系統之方法,其中該等晶片之至少一者包括藉由一內部互連件連接在一起之一處理器微磚陣列;該方法包括:
在跨越該等晶片之一或多者之一些或所有該等微磚之一參與群組之每一各自者上,執行一運算階段,其中該各自微磚執行各自一或多個微磚上運算,但既不將運算結果傳達至該群組中之該等微磚之任何其他者亦不自該群組中之該等微磚之任何其他者傳達運算結果;
在該一或多個晶片之每一各自者上,執行一各自內部屏障同步化以要求該各自晶片上之所有該等參與微磚在容許該各自晶片上之該等參與微磚之任一者進行至一內部交換階段之前已完成該運算階段;
在該各自內部屏障同步化之後,在該一或多個晶片之各者上執行該內部交換階段,其中該各自晶片上之各參與微磚經由內部互連件將其各自運算之一或多個結果傳達至相同晶片上之該等參與微磚之一或多個其他者及/或自相同晶片上之該等參與微磚之一或多個其他者傳達其各自運算之一或多個結果,但既不將運算結果傳達至該等晶片之任何其他者亦不自該等晶片之任何其他者傳達運算結果;
執行一外部屏障同步化以要求該一或多個晶片上之所有該等參與微磚在容許該群組中之該等微磚之任一者進行至一外部交換階段之前已完成內部交換階段;及
在該外部屏障同步化之後,在一組參與晶片之間執行一外部交換階段,其中該群組中之該等微磚之一或多者之各者經由外部互連件將該等運算結果之一或多者傳達給該等參與晶片之另一者。
在跨越該等晶片之一或多者之一些或所有該等微磚之一參與群組之每一各自者上,執行一運算階段,其中該各自微磚執行各自一或多個微磚上運算,但既不將運算結果傳達至該群組中之該等微磚之任何其他者亦不自該群組中之該等微磚之任何其他者傳達運算結果;
在該一或多個晶片之每一各自者上,執行一各自內部屏障同步化以要求該各自晶片上之所有該等參與微磚在容許該各自晶片上之該等參與微磚之任一者進行至一內部交換階段之前已完成該運算階段;
在該各自內部屏障同步化之後,在該一或多個晶片之各者上執行該內部交換階段,其中該各自晶片上之各參與微磚經由內部互連件將其各自運算之一或多個結果傳達至相同晶片上之該等參與微磚之一或多個其他者及/或自相同晶片上之該等參與微磚之一或多個其他者傳達其各自運算之一或多個結果,但既不將運算結果傳達至該等晶片之任何其他者亦不自該等晶片之任何其他者傳達運算結果;
執行一外部屏障同步化以要求該一或多個晶片上之所有該等參與微磚在容許該群組中之該等微磚之任一者進行至一外部交換階段之前已完成內部交換階段;及
在該外部屏障同步化之後,在一組參與晶片之間執行一外部交換階段,其中該群組中之該等微磚之一或多者之各者經由外部互連件將該等運算結果之一或多者傳達給該等參與晶片之另一者。
根據本文中所揭示之另一態樣,提供一種電腦程式產品,其體現於電腦可讀儲存器上且包括經組態以便在執行於該等微磚上時執行根據本文中所揭示之方法之任一者之操作之程式碼。
根據本文中所揭示之另一態樣,提供一種包括劃分成複數個域之多個處理器微磚之系統,其中在各域內該等微磚經由一時間確定性互連件之一各自例項彼此連接且在域之間該等微磚經由一非時間確定性互連件彼此連接;該系統經程式化以執行以下操作:
在跨該等域之一些或所有該等微磚之一參與群組之每一各自者上,執行一運算階段,其中該各自微磚執行各自一或多個微磚上運算,但既不將運算結果傳達至該群組中之該等微磚之任何其他者亦不自該群組中之該等微磚之任何其他者傳達運算結果;
在該一或多個域之每一各自者內,執行一各自內部屏障同步化以要求該各自域中之所有該等參與微磚在容許該各自域中之該等參與微磚之任一者進行至一內部交換階段之前已完成該運算階段,藉此在該一或多個域之各個別者內在內部建立所有參與微磚之間的一共同時間參考;
在該各自內部屏障同步化之後,在該一或多個域之各者內執行內部交換階段,其中該各自域內之各參與微磚經由時間確定性互連件將其各自運算之一或多個結果傳達至相同域內之該等參與微磚之一或多個其他者及/或自相同域內之該等參與微磚之一或多個其他者傳達其各自運算之一或多個結果,但既不將運算結果傳達至該等域之任何其他者亦不自該等域之任何其他者傳達運算結果;
執行一外部屏障同步化以要求該等域之所有該等參與微磚在容許該等參與微磚之任一者進行至一外部交換階段之前已完成該內部交換階段,藉此跨該等域建立所有參與微磚之間的一共同時間參考;及
在該外部屏障同步化之後,執行該外部交換階段,其中該等參與微磚之一或多者經由非時間確定性互連件將該等運算結果之一或多者傳達給該等域之另一者。
在跨該等域之一些或所有該等微磚之一參與群組之每一各自者上,執行一運算階段,其中該各自微磚執行各自一或多個微磚上運算,但既不將運算結果傳達至該群組中之該等微磚之任何其他者亦不自該群組中之該等微磚之任何其他者傳達運算結果;
在該一或多個域之每一各自者內,執行一各自內部屏障同步化以要求該各自域中之所有該等參與微磚在容許該各自域中之該等參與微磚之任一者進行至一內部交換階段之前已完成該運算階段,藉此在該一或多個域之各個別者內在內部建立所有參與微磚之間的一共同時間參考;
在該各自內部屏障同步化之後,在該一或多個域之各者內執行內部交換階段,其中該各自域內之各參與微磚經由時間確定性互連件將其各自運算之一或多個結果傳達至相同域內之該等參與微磚之一或多個其他者及/或自相同域內之該等參與微磚之一或多個其他者傳達其各自運算之一或多個結果,但既不將運算結果傳達至該等域之任何其他者亦不自該等域之任何其他者傳達運算結果;
執行一外部屏障同步化以要求該等域之所有該等參與微磚在容許該等參與微磚之任一者進行至一外部交換階段之前已完成該內部交換階段,藉此跨該等域建立所有參與微磚之間的一共同時間參考;及
在該外部屏障同步化之後,執行該外部交換階段,其中該等參與微磚之一或多者經由非時間確定性互連件將該等運算結果之一或多者傳達給該等域之另一者。
下文描述具有經開發以解決機器智慧應用中所涉及之運算中所出現之問題之一架構之一處理器之組件。本文中所描述之處理器可用作一工作加速器,即,其自運行於一主機電腦上之一應用程式接收一工作負載,該工作負載通常呈待處理之非常大資料集之形式(諸如藉由一機器智慧演算法用於學習一知識模型之大經驗資料集,或使用一先前學習之知識模型自其執行一預測或推斷之資料)。本文中所提出之架構之一目的係高效地處理此等非常大量之資料。該處理器架構已經開發以用於處理機器智慧中所涉及之工作負載。但是,將明白,所揭示架構亦可適用於共用類似特性之其他工作負載。
圖1繪示根據本發明之實施例之一處理器模組4之一實例。例如,處理器模組4可為一相同晶片上之類處理器微磚之一陣列之一個微磚,或可實施為其自身晶片上之一獨立處理器。處理器模組4包括呈一桶形執行緒處理單元之形式之一多執行緒處理單元10,及一本端記憶體11 (即,在一多微磚陣列之情況中在相同微磚上,或在一單處理器晶片之情況中在相同晶片上)。一桶形執行緒處理單元係其中管線之執行時間被劃分成交錯時槽之一重複序列(各交錯時槽可由一給定執行緒所擁有)之多執行緒處理單元之一類型。稍後將對此進行更詳細論述。記憶體11包括一指令記憶體12及一資料記憶體22 (其等可實施於不同可定址記憶體單元或相同可定址記憶體單元之不同區域中)。指令記憶體12儲存待藉由處理單元10執行之機器碼,而資料記憶體22儲存待藉由該經執行程式碼操作之資料及(例如,作為此等操作之結果)藉由該經執行程式碼輸出之資料兩者。
記憶體12儲存一程式之各種不同執行緒,各執行緒包括用於執行一或若干特定任務之指令之一各自序列。應注意,如本文中引用之一指令意謂一機器碼指令,即,由一單個操作碼及零個或多個運算元組成之處理器之指令集之基本指令之一者之一例項。
本文中所描述之程式包括複數個工作者執行緒,及可結構化為一或多個監督器執行緒之一監督器子程式。稍後將對此等進行更詳細論述。在實施例中,一些或所有該等工作者執行緒之各者採用一各自「標碼串(codelet)」之形式。標碼串係一特定類型之執行緒,有時亦被稱為「原子」執行緒。其具有其從執行緒開始(從經啟動之時間)執行所需之所有輸入資訊,即,其在經啟動之後不會自程式之任何其他部分或自記憶體獲取任何輸入。此外,程式之其他部分不會使用執行緒之任何輸出(結果)直至該執行緒已終止(完成)。除非其遇到一錯誤,否則將保證完成。應注意,一些文獻亦將一標碼串定義為無狀態的,即,若運行兩次,則其不可自其第一次運行繼承任何資訊,但在此處不採用該額外定義。亦應注意,並非所有工作者執行緒需要為標碼串(原子),且在實施例中,一些或所有工作者可代替性地能夠彼此通信。
在處理單元10內,來自指令記憶體12之執行緒之多個不同者可透過一單個執行管線13交錯(但通常僅儲存於指令記憶體中之總執行緒之一子集可在整體程式中之任何給定點處交錯)。多執行緒處理單元10包括:複數個內文暫存器檔案26,其等各經配置以表示將同時執行之執行緒之一不同各自者之狀態(內文);一共用執行管線13,其為該等同時執行之執行緒所共有;及一排程器24,其用於排程該等並行執行緒以依一交錯方式(較佳依一循環方式)透過該共用管線執行。處理單元10連接至為複數個執行緒所共有之一共用指令記憶體12及亦為複數個執行緒所共有之一共用資料記憶體22。
執行管線13包括一提取級14、一解碼級16及一執行級18,執行級18包括可執行如藉由指令集架構定義之算術及邏輯運算、位址運算、載入及儲存操作及其他操作之一執行單元。內文暫存器檔案26之各者包括用於表示一各自執行緒之程式狀態之一組各自暫存器。
在圖2中示意性地繪示組成內文暫存器檔案26之各者之暫存器之一實例。內文暫存器檔案26之各者包括各自一或多個控制暫存器28,一或多個控制暫存器28包括用於各自執行緒之至少一程式計數器(PC) (用於追蹤當前執行執行緒之指令位址),且在實施例中亦包括記錄各自執行緒之一當前狀態(諸如該執行緒當前是否正運行或(例如)因為其遇到一錯誤而暫停)之一組一或多個狀態暫存器(SR)。內文暫存器檔案26之各者亦包括用於暫時保存藉由各自執行緒執行之指令之運算元(即,藉由在執行時各自執行緒之指令之操作碼所操作或由該等操作碼所定義之操作所引起之值)之一組各自運算元暫存器(OP) 32。將瞭解,內文暫存器檔案26之各者可視需要包括各自一或多個其他類型之暫存器(未展示)。亦應注意,雖然術語「暫存器檔案」有時用於指代一共同位址空間中之一暫存器群組,然在本發明中未必如此且硬體內文26之各者(暫存器組26之各者表示各內文)可更一般地包括一或多個此等暫存器檔案。
如稍後將更詳細論述,所揭示之配置具有用於可同時執行之數目M個(在所繪示之實例中M=3,但此並不具限制性)執行緒之各者之一個工作者內文暫存器檔案CX0、… 、CX(M-1),及一個額外監督器內文暫存器檔案CXS。該等工作者內文暫存器檔案經保留以用於儲存工作者執行緒之內文,且該監督器內文暫存器檔案經保留以用於儲存一監督器執行緒之內文。應注意,在實施例中,監督器內文係專用的,因為其具有與工作者之各者不同之數目個暫存器。工作者內文之各者較佳具有彼此相同數目個狀態暫存器及運算元暫存器。在實施例中,監督器內文可具有少於工作者之各者之運算元暫存器。工作者內文可具有而監督器不具有之運算元暫存器之實例包含:浮點暫存器、累積暫存器及/或專用權重暫存器(用於保存一神經網路之權重)。在實施例中,監督器亦可具有不同數目個狀態暫存器。此外,在實施例中,處理器模組4之指令集架構可經組態使得工作者執行緒及(若干)監督器執行緒執行一些不同類型之指令但亦共用一些指令類型。
提取級14經連接以便在排程器24之控制下自指令記憶體12提取待執行之指令。排程器24經組態以控制提取級14在時槽之一重複序列中自一組同時執行之執行緒之各者依序提取一指令,從而將管線13之資源劃分至複數個時間上交錯之時槽中,如稍後將更詳細論述。例如,排程方案可循環或加權循環的。以此一方式操作之一處理器之另一術語係一桶形執行緒處理器。
在一些實施例中,排程器24可存取各執行緒之狀態暫存器SR之一者以指示該執行緒是否暫停,使得排程器24實際上控制提取級14以僅提取當前在作用中之該等執行緒之指令。在實施例中,較佳的是,各時槽(及對應內文暫存器檔案)始終由一執行緒或另一執行緒所擁有,即,各時槽始終由某一執行緒佔用,且各時槽始終包含於排程器24之序列中;但佔用任何給定時槽之執行緒可能恰好在該時間暫停,在此情況中在序列到達該時槽時,忽略針對各自執行緒之指令提取。替代性地,例如,不排除在替代較不佳實施方案中,一些時槽可暫時空置且自經排程序列排除。在引用執行單元可操作以交錯之時槽之數目或此類似者之情況下,此係指執行單元能夠同時執行之時槽之最大數目,即,執行單元之硬體支援之並行時槽之數目。
提取級14存取內文之各者之程式計數器(PC)。對於每一各自執行緒,提取級14自程式記憶體12中之下一位址提取該執行緒之下一指令,如藉由程式計數器指示。程式計數器遞增各執行循環,除非藉由一分支指令分支。提取級14接著將經提取指令傳遞至解碼級16以待解碼,且解碼級16接著將經解碼指令之一指示連同該指令中所指定之任何運算元暫存器32之經解碼位址一起傳遞至執行單元18,以執行該指令。執行單元18存取運算元暫存器32及控制暫存器28,其可在執行指令時基於經解碼之暫存器位址使用運算元暫存器32及控制暫存器28,諸如在一算術指令之情況中(例如,藉由使兩個運算元暫存器中之值相加、相乘、相減或相除且將結果輸出至各自執行緒之另一運算元暫存器)。或若指令定義一記憶體存取(載入或儲存),則執行單元18之載入/儲存邏輯根據該指令將來自資料記憶體之一值載入至各自執行緒之一運算元暫存器中,或將來自各自執行緒之一運算元暫存器之一值儲存至資料記憶體22中。或若指令定義一分支或一狀態改變,則執行單元相應地改變程式計數器PC或狀態暫存器SR之一者中之值。應注意,在藉由執行單元18執行一個執行緒之指令時,可藉由解碼級16解碼來自交錯序列中之下一時槽中之執行緒之一指令;及/或在藉由解碼級16解碼一個指令時,可藉由提取級14提取來自此後之下一時槽中之執行緒之指令(但一般而言,本發明之範疇並不限於每時槽一個指令,例如,在替代案例中,可每時槽自一給定執行緒發出一批兩個或兩個以上指令)。因此,根據已知桶形執行緒處理技術,交錯有利地隱藏管線13中之延時。
在圖3中繪示藉由排程器24實施之交錯方案之一實例。此處並行執行緒係根據一循環方案交錯,藉此在該方案之各遍次內,該遍次被劃分成各用於執行一各自執行緒之一時槽序列S0、S1、S2、…。通常各時槽係一個處理器循環長且不同時槽之大小係均勻的,但在所有可能實施例中不一定如此,例如,一加權循環方案亦可行,藉此一些執行緒在每執行遍次獲得比其他執行緒更多之循環。一般而言,桶形執行緒可採用一均勻循環或一加權循環排程,其中在加權循環排程情況中,加權可為固定或適應性的。
無論每執行遍次之序列如何,此型樣接著重複,各遍次包括時槽之各者之一各自例項。因此應注意,如本文中所引用之一時槽意謂序列中之重複分配位置,而非序列之一給定重複中之時槽之一特定例項。換言之,排程器24將管線13之執行循環分派至複數個時間上交錯(分時多工化)之執行通道中,其中各執行通道包括時槽之一重複序列中之一各自時槽之一復現。在所繪示之實施例中,存在四個時槽,但此僅用於闡釋性目的且其他數目亦可行。例如,在一項較佳實施例中,實際上存在六個時槽。
無論循環方案被劃分成之時槽之數目如何,根據本發明,處理單元10包括比所存在之時槽多一個之內文暫存器檔案26,即,其支援比其能夠桶形執行緒之交錯時槽之數目多一個之內文。
此係藉由實例繪示於圖2中:若如圖3中所展示存在四個時槽S0、…、S3,則存在此處標記為CX0、CX1、CX2、CX3及CXS之五個內文暫存器檔案。即,儘管在桶形執行緒方案中僅存在四個執行時槽S0、…、S3且因此僅可同時執行四個執行緒,然本文中揭示添加一第五內文暫存器檔案CXS,其包括一第五程式計數器(PC)、一第五組運算元暫存器32且在實施例中亦包括一第五組一或多個狀態暫存器(SR)。雖然應注意,如所提及在實施例中監督器內文可不同於其他內文CX0、…、CX3,且監督器執行緒可支援用於操作執行管線13之一不同指令集。
前四個內文CX0、…、CX3之各者係用於表示當前指派給四個執行時槽S0、…、S3之一者以用於執行程式設計員所需之任何特定應用運算任務之複數個「工作者執行緒」(應再次注意,此僅可為如儲存於指令記憶體12中之程式之工作者執行緒之總數目之子集)之一各自者之狀態。然而,第五內文CXS經保留以用於一特殊功能,以表示「監督器執行緒」(SV)之狀態,SV之作用係協調工作者執行緒之執行(至少在整個程式中之哪一點處指派將在時槽S0、S1、S2、…之哪一者中執行工作者執行緒W之哪一者之意義上)。視需要,監督器執行緒可具有其他「督導程式(overseer)」或協調責任。例如,監督器執行緒可負責執行屏障同步化以確保一特定執行順序。例如,在其中一或多個第二執行緒取決於待藉由運行於相同處理器模組4上之一或多個第一執行緒輸出之資料之情況下,監督器可執行一屏障同步化以確保直至第一執行緒已完成才開始第二執行緒。及/或,監督器可執行一屏障同步化以確保直至一特定外部資料源(諸如另一微磚或處理器晶片)已完成使該資料可用所需之處理才開始處理器模組4上之一或多個執行緒。監督器執行緒亦可用於執行與多個工作者執行緒有關之其他功能性。例如,監督器執行緒可負責將外部資料傳達至處理器模組4 (以接收待藉由該等執行緒之一或多者所作用之外部資料,及/或傳輸藉由工作者執行緒之一或多者輸出之資料)。一般而言,監督器執行緒可用於提供程式設計員所需之任何種類之督導或協調功能。例如,作為另一實例,監督器可督導微磚本端記憶體12與(陣列6外部之)更廣泛系統(諸如一儲存磁碟或網路卡)中之一或多個資源之間的傳送。
當然應注意,四個時槽僅為一實例,且通常在其他實施例中可存在其他數目,使得若每遍次存在最大M個時槽0、…、M-1,則處理器模組4包括M+1個內文CX、…、CX(M-1) & CXS (即,一個內文用於可在任何給定時間交錯之各工作者執行緒)及用於監督器之一額外內文。例如,在一個例示性實施方案中存在六個時槽及七個內文。
參考圖4,在經交錯時槽之方案中,監督器執行緒SV本身不具有其自身時槽。工作者亦不具有其自身時槽,因為可靈活定義時槽至工作者執行緒之分配。實情係,各時槽具有用於儲存工作者內文之其自身專用內文暫存器檔案(CX0、…、CXM-1),該工作者內文在時槽分配給工作者時藉由工作者使用,但在時槽分配給監督器時不使用。當一給定時槽分配給監督器時,該時槽代替性地使用監督器之內文暫存器檔案CXS。應注意,監督器始終存取其自身內文且工作者無法佔用監督器內文暫存器檔案CXS。
監督器執行緒SV具有在時槽S0、…、S3 (或更一般而言S0、…、SM-1)之任一者及所有者中運行之能力。排程器24經組態以便在程式作為一整體開始時,藉由將監督器執行緒分配給所有時槽而開始,即,因此監督器SV開始在S0、…、S3之所有者中運行。然而,監督器執行緒具有用於在某一後續時間點(立即或在執行一或多個監督器任務之後)將運行該監督器執行緒之時槽之各者暫時轉交給工作者執行緒(例如,最初在圖4中所展示之實例中之工作者W0、…、W3)之一各自者之一機制。此係藉由監督器執行緒執行一轉交指令(在本文中藉由實例被稱為「RUN」)而達成。在實施例中,此指令採用兩個運算元:指令記憶體12中之一工作者執行緒之一位址及資料記憶體22中之用於該工作者執行緒之一些資料之一位址:
RUN task_addr、data_addr
RUN task_addr、data_addr
工作者執行緒係可彼此同時運行之程式碼之部分,各部分表示待執行之一或多個各自運算任務。資料位址可指定待藉由工作者執行緒作用之一些資料。替代性地,轉交指令可僅採用指定工作者執行緒之位址之一單個運算元,且資料位址可包含於工作者執行緒之程式碼中;或在另一實例中,該單個運算元可指向指定工作者執行緒及資料之位址之一資料結構。如所提及,在實施例中,至少一些工作者可採用標碼串之形式,即,可同時執行之程式碼之原子單元。替代性地或此外,一些工作者不需要為標碼串且可代替性地能夠彼此通信。
轉交指令(「RUN」)作用於排程器24以便將其中執行此指令自身之當前時槽轉交給藉由運算元指定之工作者執行緒。應注意,在轉交指令中暗示正轉交其中執行此指令之時槽(在機器碼指令之內文中隱式意謂不需要一運算元來指定此,應自操作碼本身隱式地理解)。因此被分送之時槽係其中監督器執行轉交指令之時槽。或換言之,監督器在其分送之相同空間中執行。監督器說「在此位置處運行此段程式碼」,且接著自該時起由相關工作者執行緒(暫時)擁有復現時槽。
監督器執行緒SV在時槽之一或多個其他者之各者中執行一類似操作,以將一些或所有其時槽分送給工作者執行緒W0、…、W3 (選自指令記憶體12中之一較大集合W0、…、wj)之不同各自者。一旦其針對最後時槽如此做,便中止監督器(接著稍後將在一工作者W交還時槽之一者時在其停止之處繼續)。
監督器執行緒SV因此能夠將各執行一或多個任務之不同工作者執行緒分配給經交錯執行時槽S0、…、S3之不同者。當監督器執行緒判定是時候要運行一工作者執行緒時,其使用轉交指令(「RUN」)以將此工作者分配給其中執行該RUN指令之時槽。
在一些實施例中,指令集亦包括運行指令之一變體RUNALL (「運行全部」)。此指令係用於一起啟動全部執行相同程式碼之一組一個以上工作者。在實施例中,此在處理單元之時槽S0、…、S3 (或更一般而言S0、…、S(M-1))之每一者中啟動一工作者。
此外,在一些實施例中,RUN及/或RUNALL指令在執行時亦將來自監督器狀態暫存器CXS (SR)之一或多者之一些狀態自動複製至藉由RUN或RUNALL啟動之(若干)工作者執行緒之對應一或多個狀態暫存器。例如,該經複製狀態可包括一或多個模式,諸如一浮點捨入模式(例如,四捨五入為最近或四捨五入為零)及/或一溢出模式(例如,飽和或使用表示無窮大之一單獨值)。經複製狀態或模式接著控制討論中之工作者以根據該經複製狀態或模式操作。在實施例中,工作者可稍後將此覆寫於其自身狀態暫存器中(但不能改變監督器之狀態)。在進一步替代或額外實施例中,工作者可選擇自監督器之一或多個狀態暫存器讀取一些狀態(且又可稍後改變其等自身狀態)。例如,又,此可採用來自監督器狀態暫存器之一模式,諸如一浮點模式或一捨入模式。然而,在實施例中,監督器無法讀取工作者之內文暫存器CX0、…之任一者。
一旦經啟動,當前分配之工作者執行緒W0、…、W3之各者進行以執行藉由各自轉交指令中所指定之程式碼中所定義之一或多個運算任務。在此結束時,各自工作者執行緒接著將其中運行該工作者執行緒之時槽交還給監督器執行緒。此係藉由執行一退出指令(「EXIT」)而達成。
EXIT指令採用至少一運算元且較佳僅採用一單個運算元exit_state (例如,二元值),以用於程式設計員所需之任何目的以指示在結束之後各自標碼串之一狀態(例如,指示是否滿足一特定條件):
EXIT exit_state
EXIT exit_state
EXIT指令作用於排程器24使得其中執行該指令之時槽返回至監督器執行緒。監督器執行緒可接著執行一或多個後續監督器任務(例如,屏障同步化及/或與外部資源(諸如其他微磚)交換資料),及/或繼續執行另一轉交指令以將一新的工作者執行緒(W4等)分配給討論中之時槽。因此又應注意,指令記憶體12中之執行緒之總數目可大於桶形執行緒處理單元10在任一時間可交錯之數目。監督器執行緒SV之作用係排程來自指令記憶體12之工作者執行緒W0、…、Wj之哪些工作者在整個程式中之哪一階段將被指派給排程器24之循環排程中之交錯時槽S0、…、SM之哪些時槽。
此外,EXIT指令被賦予一進一步特殊功能,即,引起EXIT指令之運算元中所指定之退出狀態與透過相同處理器模組4 (例如,相同微磚)之相同管線13運行之複數個其他工作者執行緒之退出狀態自動彙總(藉由專用硬體邏輯)。因此,在指令中包含用於終止一工作者執行緒之一額外隱式功能。
在圖5中展示用於達成此之一例示性電路。在此實例中,個別執行緒之退出狀態及經彙總退出狀態各採用一單位元(即,0或1)之形式。處理器模組4包括用於儲存該處理器模組4之經彙總退出狀態之一暫存器38。此暫存器在本文中可被稱為「局部共識」暫存器$LC (相對於稍後將更詳細論述之在處理器模組4作為類似處理器微磚之一陣列之一者被包含時之全域共識)。在實施例中,此局部共識暫存器$LC 38係監督器之內文暫存器檔案CXS中之監督器之狀態暫存器之一者。用於執行彙總之邏輯包括一AND閘37,AND閘37經配置以執行(A) EXIT指令之運算元中所指定之退出狀態及(B)局部共識暫存器($LC) 38中之當前值之一邏輯AND,且將結果(Q)作為局部彙總之一新值輸出回至局部共識暫存器$LC 38中。
在程式中之一合適同步化點處,儲存於局部共識暫存器($LC) 38中之值最初經重設至一值1。即,在此點之後退出之任何執行緒將促成局部彙總之退出狀態$LC直至下一重設。若兩個輸入(A、B)係1,則AND閘37之輸出(Q)係1,但若輸入(A、B)之任一者係0,則輸出Q為0。每當執行一EXIT指令時,其退出狀態即與之前已過去(自上次重設之後)之退出狀態彙總。因此藉由圖5中所展示之配置,邏輯保持自上次重設局部共識暫存器($LC) 38起藉由一EXIT指令終止之任何工作者執行緒之退出狀態之一運行彙總。在此實例中,該運行彙總係指到目前為止之所有執行緒是否已退出真:來自工作者執行緒之任一者之任何退出狀態0將意謂暫存器38中之彙總變為鎖存至0直至下一重設。在實施例中,監督器SV可在任何時候藉由自局部共識暫存器($LC) 38獲取當前值而讀取運行彙總(不需要等待一微磚上同步化來如此做)。
局部共識暫存器($LC) 38中之彙總之重設可藉由監督器SV使用一或多個通用指令對局部共識暫存器($LC) 38之暫存器位址執行一PUT (在此實例中將一值1放置於暫存器38)而執行。替代性地,不排除重設可藉由一自動化機制執行(例如,藉由執行本文中稍後所描述之SYNC指令而觸發)。
彙總電路37 (在此情況中AND閘)係使用用於形成一布林AND之功能性之電子組件之任何合適組合實施於執行級18之執行單元中之專用硬體電路中。專用電路或硬體意謂具有一硬接線功能之電路,而非使用通用程式碼程式化於軟體中之電路。局部退出狀態之更新係藉由執行特殊EXIT指令而觸發,此特殊EXIT指令係處理器模組4之指令集中之基本機器碼指令之一者,具有彙總退出狀態之固有功能性。又,局部彙總係儲存於一控制暫存器38中,意謂其值可藉由運行於管線上之程式碼存取但不可藉由載入儲存單元(LSU)用於儲存任何通用資料之一專用儲存件(在實施例中,一單個儲存位元)。代替性地,保存於一控制暫存器中之資料之功能在此情況中固定於儲存局部彙總之退出狀態之功能。較佳地,局部共識暫存器($LC) 38形成處理器模組4上(例如,微磚上)之控制暫存器之一者(監督器可藉由執行一GET指令而存取該控制暫存器之值且可藉由執行一PUT指令而設定該值)。
應注意,圖5中所展示之電路僅為一實例。一等效電路將用一OR閘取代AND閘37且反轉軟體中之退出狀態0及1之解譯,即,0→真,1→假(其中暫存器38在各同步化點重設為0而非1)。等效地,若用一OR閘取代AND閘但不反轉退出狀態之解譯,亦不反轉重設值,則$LC中之經彙總狀態將記錄任何(而非所有)工作者狀態是否以狀態1退出。在其他實施例中,退出狀態不需要為單位元。例如,各個別工作者之退出狀態可為一單位元,但經彙總退出狀態$LC可包括表示如下之一三元狀態之兩個位元:所有工作者以狀態1退出,所有工作者以狀態0退出,或工作者之退出狀態係混合的。作為用於實施此之邏輯之一實例,編碼該三元值之該兩個位元之一者可為個別退出狀態之一布林AND (或OR),且三元值之另一位元可為個別退出狀態之一布林OR。指示工作者之退出狀態係混合之第三經編碼情況可接著形成為此兩個位元之XOR。
退出狀態可用於表示程式設計員想要之任何內容,但一個特別設想之實例係使用一退出狀態1以指示各自工作者執行緒已在一「成功」或「真」狀態中退出,而一退出狀態0指示各自工作者執行緒在一「不成功」或「假」狀態中退出(或若彙總電路37執行一OR而非一AND且暫存器$LC 38最初重設至0,則反之亦然)。例如,考量其中各工作者執行緒執行具有一相關聯條件(諸如指示一機器智慧演算法之圖表中之一各自節點之一或多個參數中之(若干)錯誤是否落在根據一預定度量之一可接受位準內之一條件)之一運算之一應用。在此情況中,一邏輯位準(例如,1)之一個別退出狀態可用於指示滿足條件(例如,節點之一或多個參數中之錯誤或若干錯誤係在根據某一度量之一可接受位準內);而相反邏輯位準(例如,0)之一個別退出狀態可用於指示未滿足條件(例如,錯誤或若干錯誤不在根據討論中之度量之一可接受位準內)。例如,條件可為放置於一單個參數或各參數上之一錯誤臨限值,或可為與藉由工作者執行緒執行之各自運算相關聯之複數個參數之一更複雜函數。
作為另一更複雜實例,工作者之個別退出狀態及經彙總退出狀態可各包括可用於(例如)表示工作者執行緒之結果中之一置信度之兩個或兩個以上位元。例如,各個別工作者執行緒之退出狀態可表示在該各自工作者執行緒之一結果中之置信度之一概率量測,且彙總邏輯37可用用於執行硬體中之個別置信度位準之一概率彙總之更複雜電路取代。
無論程式設計員賦予退出狀態之含義為何,監督器執行緒SV可接著自局部共識暫存器($LC) 38獲取經彙總值以判定自上次重設起(例如,在最後同步化點)退出之所有工作者執行緒之經彙總退出狀態,例如,以判定是否所有工作者在一成功或真狀態中退出。取決於此經彙總值,監督器執行緒可接著根據程式設計員之設計作出一決策。程式設計員可選擇任意使用他或她想要之局部彙總之退出狀態。例如,監督器執行緒可咨詢局部彙總之退出狀態以便判定由工作者執行緒之一特定子集組成之程式之一特定部分是否已如預期或視需要完成。若否(例如,工作者執行緒之至少一者在一不成功或假狀態中退出),則可向一主機處理器報告,或可執行包括相同工作者執行緒之程式之部分之另一反覆;但若是(例如,所有工作者執行緒在一成功或真狀態中退出),則可代替性地分支至包括一或多個新工作者之程式之另一部分。
較佳地,監督器執行緒不應存取局部共識暫存器($LC) 38中之值直至討論中之所有工作者執行緒已退出,使得儲存於局部共識暫存器($LC) 38中之值表示全部所要執行緒之正確、最新彙總狀態。等待此可藉由憑藉監督器執行緒執行之一屏障同步化強制執行以等待所有當前運行之局部工作者執行緒(即,相同處理器模組4上之透過相同管線13運行之局部工作者執行緒)退出。即,監督器執行緒重設局部共識暫存器($LC) 38,啟動複數個工作者執行緒,且接著在容許監督器繼續自局部共識暫存器($LC) 38獲取經彙總退出狀態之前起始一本端屏障同步化(在處理模組4本端、在一微磚本端)以便等待所有未處理工作者執行緒退出。
參考圖6,在實施例中,在處理器之指令集中提供一SYNC (同步化)指令。該SYNC指令具有引起監督器執行緒SV等待直至所有當前執行工作者W已藉助於一EXIT指令退出之效應。在實施例中,SYNC指令採用一模式作為一運算元(在實施例中其唯一運算元),該模式指定SYNC是否僅在本端僅相對於在本端運行於與作為其上執行SYNC之部分之監督器相同之處理器模組4 (例如,相同微磚)上之該等工作者執行緒(即,僅透過相同桶形執行緒處理單元10之相同管線13之執行緒)起作用;或是否代替性地其應跨多個微磚或甚至跨多個晶片應用。
SYNC模式 // mode ∈ {tile, chip, zone_1, zone_2}
SYNC模式 // mode ∈ {tile, chip, zone_1, zone_2}
此將稍後更詳細論述但出於圖6之目的將假定一本端SYNC (「SYNC微磚」,即,一單個微磚內之一同步化)。
工作者不需要經識別為SYNC指令之運算元,因為暗示接著引起監督器SV自動等待直至一工作者不佔用桶形執行緒處理單元10之時槽S0、S1…。如圖6中所展示,一旦一當前批次之工作者WLn之各者已全部藉由監督器啟動,監督器便可執行一SYNC指令。若監督器SV在桶形執行緒處理單元10之所有時槽S0、…、S3 (在所繪示之實例中全部四個時槽,但此僅為一個例示性實施方案)中啟動工作者W,則一旦該當前批次之工作者執行緒WLn之第一者退出,SYNC即將藉由監督器執行,因此將對至少一時槽之控制交還給該監督器SV。否則若工作者未佔據所有時槽,則SYNC將僅緊接在已啟動當前批次WLn之最後執行緒之後執行。無論如何,在監督器可繼續進行之前,SYNC引起監督器SV等待當前批次之工作者WLn-1之所有其他者執行一EXIT。僅在此之後監督器執行一GET指令以獲取局部共識暫存器($LC) 38之內容。一旦已執行SYNC,便可在硬體中施加藉由監督器執行緒之此等待。即,回應於SYNC指令之操作碼,執行級18之執行單元(EXU)中之邏輯引起提取級14及排程器24暫停發出監督器執行緒之指令直至所有未處理工作者執行緒已執行一EXIT指令。在獲取局部共識暫存器($LC) 38 (視需要在其間具有某一其他監督器程式碼)之值之後之某一點,監督器執行一PUT指令以重設局部共識暫存器($LC) 38 (在所繪示之實例中重設至1)。
又如圖6中所繪示,SYNC指令亦可用於在工作者執行緒之不同相依層WL1、WL2、WL3、…之間放置同步化屏障,其中各連續層中之一或多個執行緒取決於藉由其前一層中之一或多個工作者執行緒輸出之資料。藉由監督器執行緒執行之本端SYNC確保直至前一層WLn中之所有工作者執行緒已退出(藉由執行一EXIT指令)才執行下一層WLn+1中之工作者執行緒。
如所提及,在實施例中,處理器模組4可實施為形成一個多微磚處理器之一互連微磚陣列之一者,其中微磚之各者可如上文關於圖1至圖6所描述般組態。
此在展示一單晶片處理器2 (即,一單晶粒)之圖7中進一步繪示,單晶片處理器2包括多個處理器微磚4之一陣列6及在微磚4之間連接之一晶片上互連件34。晶片2可單獨實施於其自身單晶片積體電路封裝上,或實施為封裝於相同IC封裝中之多個晶粒之一者。該晶片上互連件在本文中亦可被稱為「交換組構(fabric)」34,因為其使微磚4能夠彼此交換資料。各微磚4包括各如上文關於圖1至圖6所描述般配置之桶形執行緒處理單元10及記憶體11之一各自例項。例如,藉由圖解,晶片2可包括大約數百個微磚4或甚至超過一千個。為完整性,亦應注意,如本文中所引用之一「陣列」並不一定意味微磚4之任何特定數目個尺寸或實體佈局。
在實施例中,各晶片2亦包括使晶片2能夠連接至不同晶片(例如,相同晶片2之一或多個其他例項)上之一或多個其他、外部處理器之一或多個外部鏈路8。此等外部鏈路8可包括以下之任一或多者:用於將晶片2連接至一主機處理器之一或多個晶片至主機鏈路,及/或用於使相同IC封裝或卡上或不同卡上之晶片2之一或多個其他例項連接在一起之一或多個晶片至晶片鏈路。在一個例示性配置中,晶片2自經由晶片至主機鏈路之一者連接至該晶片之一主機處理器(未展示)接收呈待藉由晶片2處理之輸入資料之形式之工作者。晶片2之多個例項可藉由晶片至晶片鏈路一起連接至卡中。因此,取決於主機應用所需之工作負載,一主機可存取架構為一單晶片處理器2或可能配置於多個互連卡上之多個單晶片處理器2之一電腦。
互連件34經組態以使陣列6中之不同處理器微磚4能夠在晶片2上彼此通信。然而,除相同微磚4上之執行緒之間可能存在相依性之外,在運行於陣列6中之不同微磚4上之程式之部分之間亦可存在相依性。因此需要一種防止一個微磚4上之一段程式碼在其所取決於之可藉由另一微磚4上之另一段程式碼獲得之資料前面運行之技術。
此可藉由實施一整體同步平行(BSP)交換方案而達成,如圖8及圖9中示意性地繪示。
根據BSP之一版本,各微磚4在一交替循環中執行藉由微磚之間的一屏障同步化30彼此分離之一運算階段52及一交換階段50。在所繪示之情況中,一屏障同步化係放置於各運算階段52與隨後交換階段50之間。在運算階段52期間,各微磚4在微磚上本端執行一或多個運算任務,但不會將此等運算之任何結果與微磚4之任何其他者通信。在交換階段50中,容許各微磚4將來自先前運算階段之運算之一或多個結果交換至群組中之微磚之一或多個其他者及/或自群組中之微磚之一或多個其他者交換,但並不執行任何新運算直至其已自其他微磚4接收任何資料,其(若干)任務對該資料具有相依性。各微磚4亦不會將任何資料(惟先前運算階段中運算之資料除外)發送至任何其他微磚。不排除可在交換階段中執行其他操作(諸如內部控制相關操作)。在實施例中,交換階段50並不包含任何非時間確定性運算,但在交換階段50期間可視需要容許少數時間確定性運算。亦應注意,可在運算階段52期間容許執行運算之一微磚4與在經同步化之微磚4之陣列外部之其他外部系統資源(例如,一網路卡、磁碟機或場可程式化閘陣列(FPGA))通信,只要此並不涉及與群組內之經同步化之其他微磚4之通信。在微磚群組外部之通信可視需要利用BSP機制,但替代性地可不利用BSP機制且可代替性地使用其自身之一些其他同步化機制。
根據BSP原理,將一屏障同步化30放置於自運算階段52過渡至交換階段50之接點,或自交換階段50過渡至運算階段52之接點,或兩者處。即,以下任一者:(a)需要所有微磚4在容許群組中之任一者進行至下一交換階段50之前完成其等各自運算階段52;或(b)需要群組中之所有微磚4在容許群組中之任何微磚進行至下一運算階段52之前完成其等各自交換階段50;或(c)強制執行此等條件之兩者。在全部三個變體中,個別處理器在階段之間交替,且整個總成同步化。交換階段及運算階段之序列可接著在多次重複期間重複。在BSP術語學中,交換階段及運算階段之各重複有時被稱為一「超步驟(superstep)」(但應注意,在文獻中術語學並不總是一致地使用:有時各個別交換階段及運算階段個別地被稱為一超步驟,而在別處,如本文中所採用之術語學中,交換階段及運算階段一起被稱為一超步驟)。
亦應注意,不排除相同晶片2或不同晶片上之微磚4之多個不同獨立群組可各形成彼此非同步操作之一單獨各自BSP群組,其中僅在各給定群組內施加運算、同步化及交換之BSP循環,但各群組獨立於其他群組而施加。即,一多微磚陣列6可能包含各相對於其他此等群組獨立地且非同步地操作之多個內部同步化群組(稍後更詳細論述)。在一些實施例中,存在同步化及交換之一階層式分組,如稍後將更詳細論述。
圖9繪示如在陣列6中之一些或所有微磚之一群組4i、4ii、4iii中實施之BSP原理,在此情況中該BSP原理施加:(a)自運算階段52至交換階段50之一屏障同步化(參見上文)。應注意,在此配置中,容許一些微磚4開始運算52而一些其他微磚4仍在交換。
根據本文中所揭示之實施例,可藉由將額外、特殊、專用功能性併入至一機器碼指令中以用於執行屏障同步化(即,SYNC指令)而促進此類型之BSP。
在實施例中,SYNC函數在藉由作為一運算元之一微磚間模式(例如,晶片上模式:SYNC晶片)限定時採用此功能性。
此係示意性地繪示於圖10中。假使各微磚4包括一多執行緒處理單元10,則各微磚之運算階段52可實際上包括藉由相同微磚4上之多個工作者執行緒W執行之任務(且一給定微磚4上之一給定運算階段52可包括工作者執行緒之一或多個層WL,在多個層之情況中該一或多個層WL可使用具有作為一運算元之本端微磚上模式之SYNC指令藉由內部屏障同步化而分離,如先前所描述)。一旦一給定微磚4上之監督器執行緒SV在當前BSP超步驟中啟動最後工作者執行緒,該微磚4上之監督器便可執行具有設定為運算元之微磚間模式(SYNC晶片)之一SYNC指令。若監督器將在其各自處理單元10之所有時槽中啟動(運行)工作者執行緒,則一旦將不再需要在當前BSP超步驟中RUN更多工作者之第一時槽交還給監督器,便執行「SYNC晶片」。例如,此可在第一執行緒在最後層WL中退出之後或僅在第一工作者執行緒退出之後(若僅存在一單個層)發生。另外若非所有時槽用於在當前BSP超步驟中運行工作者,則一旦已啟動需要在當前BSP超步驟中運行之最後工作者,便可執行「SYNC晶片」。此可在已運行最後層中之所有工作者時或僅在已運行所有工作者執行緒(若僅存在一個層)時發生。
執行級18之執行單元(EXU)經組態以便回應於SYNC指令之操作碼,在藉由晶片上(微磚間)運算元限定時,引起其中執行「SYNC晶片」之監督器執行緒暫停直至陣列6中之所有微磚4已完成運行工作者。此可用於對下一BSP超步驟實施一屏障。即,在晶片2上之所有微磚4通過已該屏障之後,跨微磚程式作為一整體可進展至下一交換階段50。
圖11給出繪示根據本文中所揭示之實施例之藉由一「SYNC晶片」觸發之邏輯之一示意圖。
一旦監督器已在當前運算循環52中啟動(運行)其預期之所有執行緒,其便可執行具有晶片上、微磚間運算元(SYNC晶片)之一SYNC指令。此觸發將在微磚4上之專用同步化邏輯39中及在實施於硬體互連件34中之一同步化控制器36中觸發之以下功能性。微磚上同步化邏輯39及互連件34中之同步化控制器36兩者之此功能性經實施於專用硬體電路中,使得一旦執行SYNC晶片,該功能性之其餘部分便在未執行進一步指令以如此做之情況下繼續進行。
首先,微磚上同步化邏輯39引起針對討論中之微磚4上之監督器之指令發出以自動暫停(引起提取級14及排程器24中止發出監督器之指令)。一旦本端微磚4上之所有未處理工作者執行緒執行一退出(EXIT),同步化邏輯39便可將一同步化請求「sync_req」自動發送至互連件34中之同步化控制器36。本端微磚4接著繼續在監督器指令發出暫停之情況下等待。一類似程序亦實施在陣列6中之其他微磚4之各者(各包括其自身之同步化邏輯39之例項)上。因此在某一時間點,一旦當前運算階段52中之所有最後工作者已在陣列6中之所有微磚4上退出,同步化控制器36便將自陣列6中之所有微磚4接收一各自同步化請求(sync_req)。僅在那時,回應於自相同晶片2上之陣列6中之每個微磚4接收sync_req,同步化控制器36將一同步化確認信號「sync_ack」發送回至微磚4之各者上之同步化邏輯39。直至此時,微磚4之各者使其監督器指令發出暫停以等待該同步化確認信號(sync_ack)。在接收sync_ack信號之後,微磚4中之同步化邏輯39自動取消暫停針對該微磚4上之各自監督器執行緒之監督器指令發出。監督器接著在一後續交換階段50中經由互連件34自由地與其他微磚4繼續交換資料。
較佳地,sync_req信號及sync_ack信號係分別經由將各微磚4連接至互連件34中之同步化控制器36之一或多個專用同步化導線傳輸至同步化控制器及自同步化控制器接收。
此外,根據本文中所揭示之實施例,在SYNC指令中包含一額外功能性。即,至少在一微磚間模式(例如,SYNC晶片)中執行時,SYNC指令亦引起經同步化微磚4之各者之局部退出狀態$LC自動彙總於互連件34中之進一步專用硬體40中。在所展示之實施例中,此邏輯採用(例如)由一串雙輸入AND閘40i、40ii、…形成之一多輸入AND閘(用於陣列6中之各微磚4之一個輸入)之形式,如藉由圖11中之實例所展示。此微磚間彙總邏輯40自陣列中之各微磚4接收局部退出狀態暫存器(局部共識暫存器) $LC 38中之值,在實施例中,各值為一單位元,且將其等彙總成一單個值(例如,所有局部彙總之退出狀態之一AND)。因此,邏輯跨陣列6中之所有微磚4上之所有執行緒形成一全域彙總之退出狀態。
微磚4之各者包括經配置以接收及儲存來自互連件34中之全域彙總邏輯40之全域退出狀態之一全域共識暫存器($GC) 42之一各自例項。在實施例中,此係監督器之內文暫存器檔案CXS中之狀態暫存器之另一者。回應於自陣列6中之所有微磚4接收之同步化請求(sync_req),同步化控制器36引起彙總邏輯40之輸出(例如,AND之輸出)儲存於各微磚4上之全域共識暫存器($GC) 42中(將瞭解,圖11中所展示之「切換」係功能性之一示意性表示且實際上可藉由任何合適數位邏輯實施更新)。一旦繼續監督器指令發出,此暫存器($GC) 42便可藉由各自微磚4上之監督器執行緒SV存取。在實施例中,全域共識暫存器$GC係實施為控制暫存器檔案中之一控制暫存器使得監督器執行緒可藉由一GET指令獲取全域共識暫存器($GC) 42中之值。應注意,在更新全域共識暫存器($GC) 42之任一者中之值之前,同步化邏輯36等待直至自所有微磚4接收sync_req,否則可使尚未完成其運算階段52之部分且因此仍運行之一微磚上之一監督器執行緒存取一錯誤值。
全域彙總之退出狀態$GC使程式能夠判定運行於多個不同微磚4上之程式之部分之一總結果而無需個別地檢查各個別微磚上之各個別工作者執行緒之狀態。其可出於程式設計員所要之任何目的而使用。例如,在其中全域彙總係一布林AND之圖11中所展示之實例中,此意謂任何輸入為0導致一彙總0,但若所有輸入係1,則彙總係1。即,若使用1來表示一真或成功結果,此意謂若微磚4之任一者之局部退出狀態之任一者為假或不成功,則全域彙總狀態亦將為假或表示一不成功結果。例如,此可用於判定運行於所有微磚上之程式碼之部分是否已全部滿足一預定條件。因此,程式可查詢一單個暫存器(在實施例中,一單位元)以詢問「是否出錯?是或否?」或「圖表中之所有節點是否達到一可接受錯誤位準?是或否?」,而非必須檢查各個別微磚上之個別工作者執行緒之個別狀態(且又,在實施例中,監督器實際上無法查詢工作者之狀態,惟透過退出狀態暫存器38、42除外)。換言之,EXIT及SYNC指令各將多個個別退出狀態縮減為一單個組合狀態。
在一個例示性使用情況中,微磚之一或多者上之監督器可向一主機處理器報告全域彙總是否指示一假或不成功結果。作為另一實例,程式可取決於全域退出狀態執行一分支決策。例如,程式檢查全域彙總退出狀態$GC且基於此判定是否繼續迴圈或是否在別處分支。若全域退出狀態$GC仍為假或不成功,則程式繼續反覆程式之相同、第一部分,但一旦全域退出狀態$GC為真或成功,程式便可分支至程式之一第二、不同部分。該分支決策可在各監督器執行緒中個別地執行,或藉由擔任主控監督器之角色且指示其他微磚上之其他從屬監督器之監督器之一者實施(主控監督器角色經組態在軟體中)。
應注意,圖11中所展示之彙總邏輯40僅為一實例。在另一等效實例中,AND可用OR取代,且0與1之解譯可反轉(0→真、1→假)。等效地,若用OR閘取代AND閘但不反轉退出狀態之解譯,亦不反轉重設值,則$GC中之經彙總狀態將記錄任何(而非所有)微磚是否以局部彙總之狀態1退出。在另一實例中,全域退出狀態$GC可包括表示如下三元狀態之兩個位元:所有微磚之局部彙總之退出狀態$LC係狀態1,所有微磚之局部彙總之退出狀態$LC係狀態0,或微磚之局部彙總之退出狀態$LC係混合的。作為另一更複雜實例,微磚4之局部退出狀態及全域彙總之退出狀態可各包括可用於(例如)表示微磚4之結果中之一置信度之兩個或兩個以上位元。例如,各個別微磚之局部彙總之退出狀態$LC可表示在各自微磚4之一結果中之置信度之一統計、概率量測,且全域彙總邏輯40可用用於執行硬體中之個別置信度位準之一統計彙總之更複雜電路取代。
如先前所提及,在實施例中,晶片2之多個例項可連接在一起以形成跨越多個晶片2之微磚4之一更大陣列。此係繪示於圖12中。一些或所有晶片2可實施於相同IC封裝上或一些或所有晶片2可實施於不同IC封裝上。晶片2藉由一外部互連件72 (經由圖7中所展示之外部鏈路8)連接在一起。此可連接於相同IC封裝、相同卡上之不同IC封裝及/或不同卡上之不同IC封裝上之晶片2之間。除提供用於在不同晶片上之微磚4之間交換資料之一導管之外,外部互連件72亦提供用於執行不同晶片2上之微磚4之間之屏障同步化及彙總不同晶片2上之微磚4之局部退出狀態之硬體支援。
在實施例中,SYNC指令可採用其模式運算元之至少一進一步可能值以指定一外部(即,晶片間)同步化:SYNC zone_n,其中zone_n表示一外部同步化區帶。外部互連件72包括類似於關於圖11所描述之硬體邏輯但在一外部晶片間級之硬體邏輯。當SYNC指令係用其運算元中所指定之兩個或兩個以上晶片2之一外部同步化區帶執行時,此引起外部互連件72中之邏輯以類似於關於內部互連件34所描述之方式之一方式但跨該所指定同步化區帶中之多個不同晶片2上之微磚4操作。
即,回應於其之運算元指定一外部同步化之SYNC指令之操作碼,執行級18引起將藉由該運算元指定之同步化位準傳訊至外部互連件72中之專用硬體同步化邏輯76。回應於此,外部互連件中之同步化邏輯76進行僅在(例如)跨用於一全域同步化之系統中之所有晶片2之所有微磚外部之所有微磚4中執行之同步化請求(sync_req)及確認(sync_ack)之程序。即,只有已自來自晶片2之所有微磚4接收一同步化請求(sync_req),外部互連件72中之同步化邏輯76才會將同步化確認信號(sync_ack)傳回至跨該等晶片之微磚4。所有該等晶片2上之所有微磚4將自動暫停直至傳回來自外部同步化邏輯76之同步化確認(sycn_ack)。
因此,回應於一外部SYNC,暫停監督器指令發出直至外部同步化區帶中之所有晶片2上之所有微磚4已完成其等運算階段52且提交一同步化請求。此外,外部互連件72中之邏輯彙總跨討論中之區帶中之多個晶片2之所有此等微磚4之局部退出狀態。一旦外部同步化區帶中之所有微磚4已作出同步化請求,外部互連件72便可將一同步化確認傳訊回至微磚4且將跨晶片全域彙總退出狀態儲存至討論中之所有微磚4之全域共識暫存器($GC) 42中。回應於該同步化確認,區帶中之所有晶片2上之微磚4繼續針對監督器之指令發出。
應注意,在實施例中,互連件72之功能性可實施於晶片2中,即,邏輯可分佈於晶片2中使得僅需要晶片之間的有線連接(圖11及圖12係示意性的)。
所提及之同步化區帶內之所有微磚4經由其等各自SYNC指令之模式運算元程式化以指示相同同步化區帶。在實施例中,外部互連件72週邊設備中之同步化邏輯76經組態使得,若歸因於一程式化錯誤或其他錯誤(諸如一記憶體同位錯誤)而使情況並非如此,則一些或所有微磚4不會接收一確認,且因此系統將在下一外部屏障處停止,從而容許一管理外部CPU (例如,主機)干預除錯或系統恢復。然而較佳地,編譯器經組態以確保相同區帶中之微磚在相關時間全部指示相同、正確同步化區帶。同步化邏輯亦可經組態以在藉由不同SYNC指令指示之模式不一致之情況下,採取其他替代或額外措施,例如,向外部CPU提出一例外狀況,及/或藉由某一其他機制使執行停止。
如圖14中所繪示,在實施例中,SYNC指令之模式可用於指定多個不同可能外部同步化區帶之一者(例如,zone_1或zone_2)。在實施例中,此等對應於不同階層層級。即,各較高階層層級92 (例如,區帶2)包含至少一較低階層層級之兩個或兩個以上區帶91A、91B。在實施例中,僅存在兩個階層層級,但不排除較高數目個巢狀層級。若SYNC指令之運算元係設定至外部同步化區帶(SYNC zone_1)之較低階層層級,則相對於僅在與其上執行SYNC之微磚相同之較低層級外部同步化區帶中之晶片2上之微磚4執行上述同步化及彙總操作。另一方面,若SYNC指令之運算元係設定至外部同步化區帶(SYNC zone_2)之較高階層層級,則相對於在與其上執行SYNC之微磚相同之較高層級外部同步化區帶中之所有晶片2上之所有微磚4自動執行上述同步化及彙總操作。
回應於具有一外部同步化區帶作為一運算元之SYNC指令之操作碼,執行級18引起將藉由該運算元指定之同步化位準傳訊至外部互連件72中之專用硬體同步化邏輯76。回應於此,外部互連件中之同步化邏輯76進行僅在該經傳訊群組之微磚4中執行之同步化請求(sync_req)及確認(sync_ack)之程序。即,只有已自經傳訊同步化區帶中之所有微磚4接收一同步化請求(sync_req) (但若其並非一全域同步化,則不會等待該區帶外之任何其他微磚),外部互連件72中之同步化邏輯76才會將同步化確認信號(sync_ack)傳回至該區帶中之該等微磚。
應注意,在其他實施例中,可藉由SYNC指令之模式指定之同步化區帶並不限於在本質上為階層式的。一般而言,一SYNC指令可具有對應於任何種類之分組之模式。例如,該等模式可實現自僅非階層式群組中或階層式分組及一或多個非階層式群組之一混合中選擇(其中至少一群組未完全巢套在另一群組內)。此有利地實現程式設計員或編譯器以最小標碼串密度在相對於彼此非同步之內部同步化群組之不同佈局之間選擇之靈活性。
在圖18中繪示用於在選定同步化群組91、92中實施同步化之一例示性機制。如所繪示,外部互連件72中之外部同步化邏輯76包括與每一各自晶片2相關聯之一各自同步化區塊95。各同步化區塊95包括各自閘控邏輯及一各自同步化彙總器。該閘控邏輯包括硬體電路,該硬體電路出於同步化及退出狀態彙總之目的而以一菊鏈拓撲將晶片2連接在一起,且根據下文傳播同步化及退出狀態資訊。該同步化彙總器包括經組態以根據下文彙總同步化請求(sync_req)及退出狀態之硬體電路。
與各晶片2相關聯之各自同步化區塊95經連接至其各自晶片2,使得其可偵測藉由該晶片2提出之同步化請求(Sync_req)及該晶片2之退出狀態,且使得其可將同步化確認(Sync_ack)及全域退出狀態傳回至各自晶片2。與各晶片2相關聯之各自同步化區塊95亦經由包括四個同步化導線96之一集束 (其等之細節稍後將更詳細論述)之一外部同步化介面連接至晶片2之至少另一者之同步化區塊95。此可為晶片至晶片鏈路8之一者之部分。在不同卡上之晶片之間的一鏈路之情況下,介面8可(例如)包括一PCI介面且四個同步化導線96可藉由重新使用該PCI介面之四個導線而實施。晶片之一些同步化區塊95經連接至兩個相鄰晶片2之同步化區塊95,各連接經由四個同步化導線96之一各自例項。以此方式,晶片2可經由其等同步化區塊95連接於一或多個菊鏈中。此使同步化請求、同步化確認、退出狀態之運行彙總及全域退出狀態能夠沿著該鏈上下傳播。
在操作中,對於各同步化群組91、92,將與該群組中之晶片2之一者相關聯之同步化區塊95設定為用於同步化及退出狀態彙總目的之主控裝置,該群組中之其餘部分係用於此目的之從屬裝置。從屬同步化區塊95之各者係按其需要傳播用於各同步化群組91、92之同步化請求、同步化確認及退出狀態之方向(例如,左或右)組態(即,該方向朝向主控裝置)。在實施例中,此等設定可藉由軟體(例如)在一初始組態階段(在此之後組態在系統之整個後續操作期間保持固定)中組態。例如,此可藉由主機處理器組態。替代性地,不排除組態可經硬接線。無論哪種方式,不同同步化群組91、92可具有不同主控裝置且一般而言可使一給定晶片2 (或確切地說其同步化區塊95)成為一個群組而非其係一成員之另一群組之主控裝置,或成為多個群組之主控裝置。
例如,藉由圖解考量圖18之例示性案例。舉例說明,晶片2IV之同步化區塊95係設定為一給定同步化群組91A之主控裝置。現考量經由其等同步化區塊95及導線96最終連接至晶片2IV之晶片2之鏈中之第一晶片2I。當第一晶片2I上之當前運算階段之所有工作者執行緒已執行一EXIT指令且所有(參與)微磚4上之監督器全部已執行指定同步化群組91A之一SYNC指令時,第一晶片2I接著將其同步化準備就緒傳訊回至其各自相關聯同步化區塊95。晶片2I亦將其晶片級經彙總退出狀態(各自晶片2I上之所有參與微磚上之所有退出工作者之彙總)輸出至其各自同步化區塊95。作為回應,第一晶片2I之同步化區塊95將一同步化請求(Sync_req)傳播至鏈中之下一晶片2II之同步化區塊95。其亦將第一晶片2I之退出狀態傳播至此下一晶片2II之同步化區塊95。此第二晶片2II之同步化區塊95等待直至其自身(參與)微磚4之監督器全部已執行指定同步化群組91A之一SYNC指令,從而引起第二晶片2II傳訊同步準備就緒。僅在那時,第二晶片之同步化區塊95將一同步化請求傳播至鏈中之下一(第三)晶片2III之同步化區塊95,且亦傳播第一晶片2I之退出狀態與第二2II之退出狀態之一運行彙總。若第二晶片2II在第一晶片2I之前已變為同步化準備就緒,則第二晶片2II之同步化區塊95應等待第一晶片2I在將一同步化請求傳播至第三晶片2III之同步化區塊95之前傳訊該同步化請求。第三晶片2III之同步化區塊95以一類似方式表現,此次彙總來自第二晶片2II之運行彙總退出狀態以獲得下一運行彙總以向前傳遞等。此繼續針對主控同步化區塊(在此實例中晶片2IV之主控同步化區塊)。
主控裝置之同步化區塊95接著基於其接收之運行彙總及其自身晶片2IV之退出狀態判定所有退出狀態之一全域彙總。其沿著鏈將此全域彙總連同同步化確認(Sync_ack)傳播回出至所有晶片2。
若主控裝置部分沿著一鏈(相對於如上文實例中之一端處),則同步化及退出狀態資訊沿著相反方向在主控裝置之任一側、兩側朝向主控裝置傳播。在此情況中,一旦已接收來自兩側之同步化請求,主控裝置僅發出同步化確認及全域退出狀態。例如,考量其中晶片2III係群組92之主控裝置之情況。此外,在實施例中,一些晶片2之同步化區塊95可連接至三個或三個以上其他晶片2之同步化區塊95,從而產生朝向主控裝置之多個鏈分支。各鏈接著如上文所描述般表現,且一旦已接收來自所有鏈之同步化請求,主控裝置便僅發出同步化確認及全域退出狀態。及/或,晶片2之一或多者可連接至一外部資源(諸如主機處理器、一網路卡、一儲存裝置或一FPGA)。
在實施例中,如下般實施同步化及退出狀態資訊之傳訊。各對晶片2之間的四個同步化導線96之集束包括兩對導線(一第一對96_0及一第二對96_1)。各對包括一同步化請求導線之一例項及一同步化確認導線之一例項。為傳訊值0之一運行彙總退出狀態,發送晶片2之同步化區塊95在傳訊同步化請求(sync_req)時使用第一導線對96_0之同步化請求導線,或為傳訊值1之一運行彙總,同步化區塊95在傳訊同步化請求時使用第二導線對96_1之同步化請求導線。為傳訊值0之一全域彙總退出狀態,發送晶片2之同步化區塊95在傳訊同步化確認(sync_ack)時使用第一導線對96_0之同步化確認導線,或為傳訊值1之一全域彙總,同步化區塊95在傳訊同步化確認時使用第二導線對96_1之同步化請求導線。
應注意,上文僅為用於傳播同步化及退出狀態資訊之機制。實際資料(內容)係藉由(例如)如稍後參考圖19所論述之另一通道傳輸。此外,將瞭解,此僅為一例示性實施方案,且熟習技術者將能夠建置用於實施所揭示之同步化及彙總功能性之其他電路(一旦給定本文中所揭示之該功能性之規範)。例如,同步化邏輯(圖18中之95)可代替性地使用經由作為專用佈線之替代之互連件34、72攜載之封包。例如,sync_req及/或sync_ack可各以一或多個封包之形式傳輸。
如先前所提及,並非所有微磚4一定需要參與同步化。在實施例中,如所論述,參與微磚之群組可藉由同步化指令之模式運算元設定。然而,此僅容許選擇微磚之預定義群組。本文中應認知,亦可期望能夠在逐微磚基礎上選擇同步化參與。因此在實施例中,提供用於選擇哪些個別微磚4參與屏障同步化之一替代或額外機制。
特定言之,此係藉由在處理器指令集中提供待藉由一個或一些微磚4執行之代替SYNC指令之一額外類型之指令而達成。此指令可被稱為「放棄」指令,或「SANS」指令(開始自動非參與式同步化)。在實施例中,SANS經保留以供監督器執行緒使用。在實施例中,其採用一單個立即運算元:
SANS n_barriers
SANS n_barriers
SANS指令之行為係引起其上執行該SANS指令之微磚放棄當前屏障同步化,但不會阻擋等待經指定同步化群組中之所有微磚同步化之其他微磚。實際上,其稱「別管我」。當執行SANS指令時,SANS指令之操作碼觸發執行級18之執行單元中之邏輯以將同步化請求信號(Sync_req)之一例項發送至內部及/或外部同步化控制器36、76 (取決於模式)。在實施例中,藉由SANS產生之同步化請求適用於包含執行SANS之微磚4之任何同步化群組91、92。即,對於此(或若干)局部晶片中之微磚4接下來使用之任何同步化群組(其等必須對同步化群組達成一致),來自執行SANS之微磚4之sync_req將始終有效。
因此從同步化控制器邏輯36、76及同步化群組中之其他微磚4之角度來看,執行SANS指令之微磚4與執行一SYNC指令之一微磚4看似完全一樣,且並不阻撓同步化屏障及自同步化邏輯36、76發送同步化確認信號(Sync_ack)。即,執行SANS而非SYNC之微磚4不阻撓討論中之微磚係其成員之任何同步化群組中所涉及之其他微磚4之任一者或使其停止運作。藉由一SANS執行之任何交握針對所有同步化群組91、92有效。
然而,不同於SYNC指令,SANS指令並不引起監督器指令發出經暫停以等待來自同步化邏輯36、76之同步化確認信號(Sync_ack)。代替性地,各自微磚可僅繼續不受在執行SYNC指令之其他微磚4之間進行之當前屏障同步化所抑制。因此藉由模仿一同步化但不等待,SANS指令容許其微磚4加緊處理一或多個任務,同時仍容許其他微磚4同步化。
運算元n_barriers指定「經發佈」同步化之數目,即,微磚不會參與之未來同步化點(屏障)之數目。替代性地,不排除在其他實施例中SANS指令並不採用此運算元,且代替性地SANS指令之各執行僅引起一次性放棄。
藉助於SANS指令,特定微磚4可負責執行超出BSP操作排程之直接範疇之外之任務。例如,可期望分配一晶片2內之少量微磚4以起始(及處理)至及/或自主機記憶體之資料傳送,而大部分微磚4被(若干)主要運算任務佔據。在此等案例中,未直接參與主要運算之該等微磚4可使用自動非參與式同步化特徵(SANS)聲明其等自身在一段時間內與同步化機制有效地斷開連接。當使用此特徵時,不需要一微磚4主動地(即,經由執行SYNC指令)傳訊其對於同步化(對於同步化區帶之任一者)之準備就緒且在實施例中對經彙總退出狀態作出零貢獻。
SANS指令開始或延長一週期,在該週期期間其上執行SANS指令之微磚4將放棄主動參與微磚間同步化(或與其他外部資源之同步化,若該等外部資源參與同步化)。在此週期期間,此微磚4將自動傳訊其對於所有區帶內之同步化之準備就緒,且在實施例中亦對全域彙總共識$GC作出零貢獻。此時間週期可表示為一無符號立即運算元(n_barriers)以指示此微磚4將自動傳訊之額外未來同步化點之數目。在執行SANS之後,將藉由其運算元指定之值n_barriers放置於各自微磚4上之一遞減計數暫存器$ANS_DCOUNT中。此係用於追蹤應作出之額外未來sync_reqs之數目之一段架構狀態。若自動非參與式同步化機制當前不在作用中,則將立即執行準備就緒(同步化請求sync_req)之第一確證。一旦已完成先前同步化(即,在同步化確認sync_ack之確證之後),後續確證將在後台中發生。若自動非參與式同步化機制當前處在作用中,則將以一自動方式更新遞減計數計數器暫存器$ANS_DCOUNT,使得無未計入之同步化確認信號。自動非參與式同步化機制係實施於專用硬體邏輯中(較佳地其在各微磚4中之一例項),但在其他實施例中不排除其可代替性地針對一微磚群組或所有微磚集中實施。
關於退出狀態行為,取決於實施方案,實際上存在許多可能性。在實施例中,為獲得全域彙總之退出狀態,同步化邏輯36、76僅彙總來自指定同步化群組中執行一SYNC指令之該等微磚4而非執行一SANS指令之微磚4 (放棄微磚或若干放棄微磚)之局部退出狀態。替代性地,全域彙總之退出狀態係藉由彙總來自同步化群組中執行一SYNC之所有微磚4及執行一SANS之微磚4 (參與微磚4及放棄微磚4兩者)之局部退出狀態而獲得。在後一情況中,藉由(若干)放棄微磚4針對全域彙總輸出之局部退出狀態可為在執行SANS時該微磚之工作者之實際局部彙總之退出狀態,正如SYNC指令般(參見局部共識暫存器$LC 38之描述)。替代性地,藉由放棄微磚4輸出之局部「退出狀態」可為一預設值,例如,在其中退出狀態係二元之實施例中可為真值(例如,邏輯1)。在其中任何假局部退出狀態引起全域退出狀態為假之實施例中,此防止放棄微磚4干擾全域退出狀態。
關於返回全域退出狀態,針對此存在兩種可能性,而無關於放棄微磚是否提交用於產生全域彙總之一局部退出狀態,且無關於該值是否為一實際值或一預設值。即,在一個實施方案中,藉由互連件34、72中之同步化邏輯36、76產生之全域彙總退出狀態僅儲存於執行一SYNC指令之參與微磚4 (而非代替性地執行一SANS指令之放棄微磚4)之全域共識暫存器$GC 42中。在實施例中,代替性地,一預設值係儲存於執行一SANS之(若干)微磚4 (放棄微磚)之全域共識暫存器$GC 42中。例如,在二元全域退出狀態之情況中,此預設值可為真(例如,邏輯1)。然而,在一替代實施方案中,藉由同步化邏輯36、76產生之實際全域彙總係儲存於執行SYNC指令之參與微磚4及代替性地執行一SANS指令之放棄微磚4兩者之全域共識暫存器$GC 42中。因此群組中之所有微磚可仍存取全域彙總之退出狀態。
圖13繪示涉及內部(晶片上)同步化及外部(晶片間)同步化兩者之一例示性BSP程式流程。如所展示,該流程包括(相同晶片2上之微磚4之間的資料之)內部交換50與(不同晶片2上之微磚4之間的資料之)外部交換50’。
如圖13中所繪示,根據本發明揭示使內部BSP超步驟(包括相同晶片2上之微磚4之間之資料之內部交換50)與外部同步化及交換(包括不同晶片2上之微磚4之間之資料之外部交換50’)保持分離。
使內部BSP與外部BSP保持分離之一原因在於,在實施例中,可將經由內部(晶片上)互連件34交換資料製成時間確定性,如稍後將參考圖16及圖17更詳細論述;而經由外部互連件72交換資料可為非時間確定性(例如,歸因於將需要重新傳輸訊息之一有損耗實體通道)。一般而言,可將一外部互連件製成時間確定性,但如此做可能係困難的,或與非確定性互連件相比,可能提供的優勢太少,且因此不可在實踐中實施。
在此等實施例中,可期望保持內部通信時間確定性使得其等可在無需內部互連件34中之佇列之情況下進行,因為佇列將引發互連件34中之一非所要矽覆蓋區。然而,在實施例中,外部通信可並非時間確定性。若每個BSP超步驟係一全域交換,則時間確定性將受非時間確定性外部交換「污染」。此係因為一旦一給定微磚或執行緒已執行一外部交換,時間確定性就會丟失且無法恢復直至下一屏障同步化。
如稍後將更詳細論述,無佇列之通信可藉由編譯器知道各微磚4傳輸其資料之時間且亦知道傳輸微磚與接收微磚之間的晶片上微磚間延遲而達成。鑑於此預定知識,編譯器可接著程式化接收微磚以在藉由傳輸微磚傳輸相關資料之後之一特定、已知時間(即,傳輸時間外加微磚間延遲)監聽傳輸微磚之位址。編譯器已知傳輸之時序,因為編譯器自身選擇在各執行緒中之哪一點包含(若干)發送指令。此外,針對晶片上通信之微磚間延遲係用於一對給定傳輸及接收微磚4之一固定可知值。編譯器可自用於發送微磚及接收微磚之不同可能組合之微磚間延遲之一查詢表知道此。編譯器可接著包含對應接收指令以在傳輸指令之後之對應數目個循環監聽發送器之位址。
將BSP分離成內部階段及外部階段之另一原因在於,跨多個晶片之一全域同步化及交換與僅針對一晶片上同步化及交換相比將更「昂貴」,其中總成本為上述內部同步化外加全域彙總此所需之額外延遲之成本。此外,雖然在實施例中,同步化傳訊自身並不需要流控制且因此相對較快,但外部同步化同步化至一外部交換中。一外部交換相對於一內部交換經歷更長延時及更大不確定性。
首先,通常晶片間比晶片上具有更少可用資料頻寬。此係因為晶片間佈線密度受封裝連接(球或墊)密度限制,其遠低於晶片上可用之佈線密度。因此即使傳輸延遲類似,在晶片之間傳達固定量之資料仍將比在晶片上花費更長時間。又,外部交換係較少本端的:導線進一步延伸且因此更具電容性,且更易受雜訊影響。此繼而可導致實體層處之損耗及因此對提供重新傳輸之流控制機制之需要,從而導致降低之處理能力(及時間確定性之損失,參見下文)。此外,除一較大實體距離之外,在晶片之間的傳訊及資料傳輸通常不得不遍歷更大量之邏輯(諸如SerDes (串列化器-解串列化器)及流控制機制),所有邏輯相較於內部通信增加額外延遲。例如,本發明者已識別,使用習知技術,可預期一外部屏障同步化程序花費比一內部同步化長大約9倍之時間,且可占程式運行時間之5%至10%。使用本文中所揭示之硬體同步化機制,此可減小至慢約三分之二,但仍比一內部同步化要慢。此外,在外部交換資料將(例如)歸因於因素,諸如歸因於雜訊之實體層處之損耗及重新傳輸,及/或晶片之間的串列化及解串列化。
在其他變體中,晶片之間的互連可在實體及/或鏈路層處無損耗,但實際上歸因於不同來源與目的地之間的網路層流之爭用引起佇列溢出及封包丟棄,在較高網路層處係有損耗的。此係乙太網路之工作原理且設想一替代非時間確定性互連件可採用乙太網路。亦應注意,可存在以下情況:任何交換程序(無論無損耗或有損耗)可實際上遭受不可恢復錯誤(例如,歸因於α輻射),其等導致總交換失敗且無法藉由任何硬體機構(例如,鏈路層)恢復。在時間確定性情況及非時間確定性情況兩者中,在實施例中,系統可偵測但不校正此等錯誤。一旦經偵測,錯誤便可經傳訊至主機,該主機之策略可要求BSP應用程式狀態經週期性檢查點設定且在此一致命硬體錯誤之情況下,將應用程式之狀態回轉至最後檢查點。藉由此機制,甚至用於實現資料交換之有損耗機制可經製成而以一定程度效能為代價對使用者呈現無損耗。
因此,對於以上原因之任何一或多者或其他原因,可期望將BSP程序分離成時間確定性階段及非時間確定性階段,以便防止時間確定性域內之至少一些時間確定性交換之時間確定性受此等域之間的非時間確定性交換污染。
因此,程式可經配置以執行包括呈以下順序之同步化、交換階段及運算階段之一序列:(i)一第一運算階段,接著(ii)一內部屏障同步化30,接著(iii)一內部交換階段50,接著(iv)一外部屏障同步化80,接著(v)一外部交換階段50’。參見圖13中之晶片2II。外部屏障80係在內部交換階段50之後強加,使得程式僅在內部交換50之後進行至外部交換50’。亦應注意,如參考圖12中之晶片2I所展示,視需要可在內部交換(iii)與外部屏障(iv)之間包含一運算階段。
此整個序列係藉由程式強制執行(例如,藉由編譯器如此產生)。在實施例中,程式經程式化以藉助於先前所描述之SYNC指令以此方式作用。內部同步化及交換並不擴展至另一晶片2上之任何微磚或其他實體。序列(i)至(v) (iii與iv之間具有上述選用運算階段)可在一系列整體反覆中重複。每反覆在外部同步化&交換之前可存在內部運算、同步化及交換(i)至(iii)之多個例項。即,(i)至(iii) (保持該順序)之多個例項(即,多個內部BSP超步驟)可在(iv)至(v) (即,外部同步化及交換)之前實施。亦應注意,微磚4之任一者可各與其他微磚4並行地執行其等自身之內部同步化及交換(ii)至(iii)之例項。
因此每整體BSP循環(i)至(v),確保存在週期(ii)至(iii)之至少一部分,其中同步化係限於僅在內部(即,僅在晶片上)執行。
應注意,在一外部交換50期間,通信並不限於僅外部的:一些微磚可僅執行內部交換,一些微磚可僅執行外部交換,且一些微磚可執行混合。然而,在一些實施例中,歸因於在外部互連件72中發生之時間確定性之損失,在此等實施例中,一旦一微磚已執行一外部通信,其便無法再次執行一內部通信直至下一同步化(參見下文依靠訊息時序及微磚間延遲之預定知識之較佳晶片上通信機制之解釋)。
在一些實施例中,又如圖13中所展示,一些微磚4可在一運算階段期間執行本端輸入/輸出,例如,其等可與一主機交換資料。
亦應注意,如圖13中所展示,一般而言可使任何或所有微磚在任何給定BSP超步驟中具有一空值運算階段52或一空值交換階段50。
在實施例中,同步化區帶91、92之不同層級可用於使一些外部同步化&交換操作之範圍僅限於系統中之晶片2之一子群組,且限制需要一完全、全域同步化及交換之損失之次數。即,整體循環可包括:(i)一第一運算階段,接著(ii)一內部屏障同步化,接著(iii)一內部交換階段,接著(iv)僅在一第一、較低層級同步化區帶91之微磚內之一外部屏障同步化80;接著(v)僅在第一同步化區帶91之晶片之間的一外部交換階段;接著(vi)跨一第二、較高層級同步化區帶92之一外部屏障同步化;接著(vii)在第二層級同步化區帶92之晶片中之一外部交換階段。第二層級交換階段之外部屏障係在第一層級外部交換階段之後強加,使得程式僅在第一層級交換階段之後進行至第二層級外部交換。此行為可藉由使用憑藉其運算元中之外部模式之不同層級所限定之SYNC指令而程式化。
在實施例中,同步化區帶之最高階層層級包含陣列6中之所有晶片2上之所有微磚4,即,其用於執行一全域同步化。當使用多個較低層級區帶時,BSP可在內部強加於各區帶內之(若干)晶片2上之微磚4群組中,但各區帶可相對於彼此非同步操作直至執行一全域同步。
注意:關於較低層級外部同步化及交換(iv)至(v),較低層級區帶91A、91B之任一者可各與(若干)其他較低層級區帶並行地執行其自身之較低層級外部交換之例項。及/或,在一些情況中,(i)至(v)之多個例項可在(vi)至(vii)之前實施,即,在外部同步化及交換之前可存在較低層級外部BSP超步驟之多個例項。此外,方案可擴展至同步化區帶之三個或三個以上階層層級。
下文描述用於在晶片上通信(內部交換)而無需佇列之一例示性機制。參考圖16。
在各晶片2上,晶片2包括控制晶片活動之時序之一各自時脈。該時脈連接至晶片之電路及組件之所有者。晶片2亦包括所有微磚及鏈路藉由連接導線組所連接至之內部、時間確定性互連件或「交換組構」34。在實施例中,互連件34可為無狀態的,因為其不具有可藉由軟體讀取之狀態。各組連接導線經端對端固定。該等導線係管線式的。在此實施例中,一組包括三十二條導線。各組可攜載由一或多個32位元資料組成之一封包,其中每時脈循環傳送一個資料。但本文中應注意,字詞「封包」表示一組位元,其等表示可能具有一或多個有效位元之一資料(在本文中有時被稱為一資料項)。「封包」並不具有標頭或任何形式之目的地識別符(其准許獨特地識別一預期接受者),亦不具有封包結束資訊。代替性地,其等各表示輸入至一微磚或自一微磚輸出之一數值。各微磚具有其自身本端記憶體(稍後描述)。晶片不具有共用記憶體。交換組構僅構成一組交叉連接導線且亦不保持任何狀態。相同晶片上之微磚之間之資料交換係在如本文中所描述之一時間確定性基礎上進行。一管線式連接導線包括在將資料釋放至下一儲存區之前保存該資料達一時脈循環之一系列暫時儲存區(例如,鎖存器或正反器)。沿著導線之行進時間係藉由此等暫時儲存區判定,各暫時儲存區在任兩點之間的一路徑中用完一時脈循環之時間。
各微磚4向內部互連件34中之同步化控制器36指示其同步化狀態。一旦確定各微磚4準備好發送資料,同步化程序30便引起系統進入交換階段50。應注意,各微磚在具有一不同但已知時間延遲之情況下經歷sync-ack。監督器視需要插入額外循環延遲使得各微磚在完全相同循環上開始其交換階段。在此交換階段中,資料值在微磚之間移動(實際上在微磚之記憶體之間在一記憶體至記憶體資料移動中)。在交換階段中,不存在運算且因此無併發性危害(或至少不存在依靠尚未自另一微磚4接收之資料之運算)。在交換階段中,各資料沿著連接導線自一傳輸微磚移動至其接受微磚,該資料在該等連接導線上退出一微磚。在各時脈循環,資料沿著其路徑(儲存區至儲存區)以一管線式方式移動一特定距離。當一資料自一微磚發出時,其並不伴隨識別一接受微磚之一標頭發出。代替性地,接受微磚知道其將預期在一特定時間來自一特定傳輸微磚之一資料。因此,本文中所描述之電腦係時間確定性的。
各微磚4運行已藉由程式設計員或藉由一編譯器練習分配給其之程式之一部分,其中程式設計員或編譯器函數已知將藉由一特定微磚在一特定時間傳輸之內容及需由一接受微磚在一特定時間接收之內容。為達成此,在藉由各微磚上之處理器執行之局部程式中包含SEND指令,其中該SEND指令之執行時間係相對於在電腦中之其他微磚上執行之其他指令之時序預定。
各微磚4係與其自身多工器210相關聯。各多工器至少具有與晶片上存在之微磚4一樣多之輸入,各輸入經連接至交換組構34。交換組構之交叉導線經連接至來自各微磚之一組資料輸出連接導線218 (一廣播交換匯流排)。為易於圖解,在圖16中未展示所有交叉導線。一組交叉導線係標記為140x以指示其係數組交叉導線之一者。
當多工器210切換至標記為220x之輸入時,該輸入將連接至交叉導線140x且因此連接至傳輸(發送)微磚4T之資料匯流排218T。若多工器經控制以在一特定時間切換至該輸入,則在連接至交叉導線140x之資料匯流排230上接收之資料將在一特定時間出現於多工器210之輸出處。其將在此後之一特定延遲到達接收微磚4R,該延遲取決於多工器210距接收微磚4R之距離。在多工器趨於配置成靠近交換組構時,自微磚至多工器之延遲可取決於接收微磚4R之位置而改變。
為實施切換,執行於微磚4上之局部程式包含切換控制指令(PUTi),該等PUTi引起發出一多工器控制信號214以控制與該微磚相關聯之多工器210在預期在該微磚處接收一特定資料之時間之前之一特定時間切換其輸入。在交換階段中,切換多工器且使用交換組構在微磚之間交換封包(資料)。由此說明可見,內部互連件34不具有狀態且不需要佇列,各資料之移動係藉由各多工器之輸入所連接至之特定交叉導線來預定。
在交換階段中,准許所有微磚4與其同步化群組內之所有其他微磚通信。各微磚4具有其自身獨特輸入多工器210之控制。傳入訊務可因此自晶片2中之任何其他微磚(或自一外部交換中之外部連接鏈路之一者)選擇。亦可使一多工器210經設定以在任何給定交換階段接收一空值輸入(即,無輸入)。
各微磚4具有三個介面:一「exin」介面224,其將資料自交換組構34傳遞至微磚4;一「exout」介面226,其經由廣播交換匯流排218將資料自該微磚傳遞至該交換組構;及一「exmux」介面228,其將控制多工器信號214 (mux-select)自微磚4傳遞至其多工器210。
為確保各個別微磚在適當時間執行SEND指令及切換控制指令以傳輸及接收正確資料,需要由將個別程式分配給電腦中之個別微磚之程式設計員或編譯器來滿足交換排程要求。此功能係藉由交換排程器較佳在編譯時間執行,其需要知曉以下參數。
參數I:各微磚之相對SYNC確認延遲,RSAK (TID發送微磚、TID接收微磚)。此係發送微磚及接收微磚之微磚ID (TID)之一函數,其保存於TILE_ID暫存器中。此係總是大於或等於0之循環數,指示各微磚相對於所有其他微磚自同步化控制器36接收sync ack信號之時間。此可自微磚ID計算,應注意,微磚ID指示該微磚在晶片上之特定位置,且因此反映實體距離。換言之,sync ack延遲經等化。若傳輸微磚4T較靠近同步化控制器36且接收微磚4R較遠離,則結果是針對傳輸微磚4T之同步化確認延遲將比針對接收微磚4R之同步化確認延遲要短,且反之亦然。一特定值將與針對同步化確認延遲之各微磚相關聯。此等值可保存(例如)於一延遲表中,或每次可基於微磚ID即時(on the fly)計算。
參數II:交換多工器控制迴路延遲,MXP (接收微磚之TID)。此係發出改變一微磚之輸入多工器選擇之一指令(PUTi MUXptr)與相同微磚可由於新的多工器選擇而針對儲存於記憶體中之交換資料發出一(假設)載入指令之最早時間點之間的循環數。此包括自接受微磚4R之exmux介面228R至其多工器210R獲取之控制信號之延遲及自該多工器之輸出至資料輸入exin介面224之線之長度。
參數III:微磚至微磚交換延遲,TT (發送微磚之TID、接收微磚之TID)。此係在一微磚上發出之一SEND指令與接收微磚可發出指向其自身記憶體中之經發送值之一(假設)載入指令之最早時間點之間的循環數。此可藉由存取一表或藉由即時計算而自發送微磚及接收微磚之TID運算。此延遲包含資料沿著其交換匯流排218T自傳輸微磚4T自其exout介面226T行進至交換組構14且接著經由接收微磚4R處之輸入多工器210R而至該接收微磚之exin介面224R所花費之時間。
參數IV:交換訊務記憶體指標更新延遲,MMP()。此係發出改變一微磚之交換輸入訊務記憶體指標232之一指令(PUTi MEMptr)與相同微磚可由於新的指標而針對儲存於記憶體中之交換資料發出一(假設)載入指令之間的循環數。此係一小、固定循環數。記憶體指標232充當至資料記憶體202中之一指標且指示將儲存來自exin介面224之傳入資料之位置。
此等參數一起給出將在自傳輸微磚4T傳輸一資料與由接收微磚4R接收該資料之間經歷之總微磚間延遲。上文特定交換機制及參數僅藉由實例給出。不同交換機制可在延遲之確切組成方面不同,但只要交換保持時間確定性,其即可被程式設計員或編譯器所知且因此在無佇列之情況下交換係可行的。
圖17更深入展示例示性交換時序。在左手側展示自0至30運行之晶片時脈循環。發送微磚4T上之動作發生在時脈循環0與時脈循環9之間,以發出一發送指令(SEND E0)開始。在時脈循環10至時脈循環24中,資料管線式通過交換組構34。
考慮IPU時脈循環11中之接收微磚4R,執行改變微磚輸入多工器選擇之一PUTi指令。在循環18中,執行容許時脈循環25中之一載入指令之記憶體指標指令。在發送微磚4T上,循環1至循環9係發出一SEND指令與在exout介面上表現該資料之間的一內部微磚延遲。E1、E2等表示來自較早SEND指令之資料。在交換組構34中,時脈循環10至時脈循環24係標記為「交換」。在此等循環之各者中,一資料沿著管線(在暫時儲存區之間)移動「一步」。接受微磚4R上之循環25至循環29表示在exin介面處接收一資料與將該資料編碼至記憶體中之間的延遲。
簡言之,若接收微磚4R之處理器想要作用於一資料(其係傳輸微磚4T上之一程序之輸出),則傳輸微磚4T必須在一特定時間(例如,圖17中之時脈循環0)執行一SEND指令發送,且接收微磚4R必須在相對於在傳輸微磚上執行SEND指令之一特定時間期間執行一切換控制指令PUTi EXCH MXptr (如在時脈循環11中)。此將確保資料即時到達接受微磚以經載入而用於在接受微磚4R處執行之一標碼串中。
應注意,接受微磚處之接收程序並不需要涉及如同指令PUTi MEMptr般設定記憶體指標。代替性地,記憶體指標232在exin介面224處接收各資料之後自動遞增。經接收資料接著僅載入至下一可用記憶體位置中。然而,改變記憶體指標之能力使接受微磚能夠變更寫入資料之記憶體位置。全部此可藉由將個別程式寫入至個別微磚使得該等微磚適當通信之編譯器或程式設計員來判定。此導致一內部交換(晶片上之微磚間交換)之時序為完全時間確定性。此時間確定性可藉由交換排程器用於高度最佳化交換序列。
圖19繪示用於在晶片外通信(外部交換)之一例示性機制。此機制係非時間確定性的。該機制係實施於外部互連件72中之專用硬體邏輯中。資料係經由外部互連件72以封包之形式發送。不同於經由內部互連件發送之封包,此等封包具有標頭:因為傳輸順序可改變,所以其等需要存在於封包標頭中之目的地位址。又在實施例中,外部互連件72採用一網路之形式且因此需要用於路由目的之額外資訊。
在實體層處,互連機制係有損耗的,但在異動層處,該機制歸因於鏈路層之架構而無損耗:若一封包未經確認,則其將藉由互連件72中之硬體自動重新發送。然而,損耗之可能性及在資料鏈路層處重新發送意謂經由外部互連件遞送資料封包係非時間確定性的。此外,一給定交換之所有封包可一起到達或在時間上且按任何順序分開,因此外部互連件需要流控制及佇列。此外,互連件可使用時脈資料恢復(CDR)技術以自具有足夠資料信號躍遷之一經接收資料串流推斷一時脈以維持位元鎖定。此經推斷時脈將與發送時脈具有未知相位關係且因此表示非確定性之一額外來源。
如所繪示,外部互連件72包括一外部交換區塊(XB) 78。編譯器指定微磚4之一者以將一外部交換請求(XREQ)發送至交換區塊78 (步驟S1)。該XREQ係包括一或多個控制封包之一訊息,其指示哪些微磚4具有發送至另一微磚或另一晶片2上之微磚4之資料封包(內容)。此係藉由勾號及叉號在圖19中示意性地繪示:藉由一例示性案例,以一勾號標記之微磚具有在外部發送之資料封包且用叉號標記之微磚不具有在外部發送之資料封包。在步驟S2,交換區塊78將一交換開啟(XON)控制封包發送至具有在外部發送之資料之微磚4之一第一者。此引起該第一微磚開始經由外部互連件78將其封包發送至相關目的地(步驟S3)。若在任何時間XB不能繼續將封包發送至互連件(例如,歸因於互連件中之一先前封包丟失及重新傳輸,或歸因於外部互連件藉由許多其他XB及微磚之過度訂用),則XB將在XB佇列溢出之前將一交換關閉(XOFF)發送至該微磚。一旦清除擁塞且XB再次在其佇列中具有足夠空間,則其將一XON發送至微磚以容許該微磚繼續傳輸其內容。一旦此微磚已發送其最後資料封包,則在步驟S4,交換區塊78將一交換關閉(XOFF)控制封包發送至此微磚,接著在步驟S5將另一XON發送至具有待發送之資料封包之下一微磚4等等。XON及XOFF之傳訊係實施為在呈外部交換區塊78之形式之專用硬體邏輯中之一硬體機制。
將瞭解,此僅為用於在晶片之間外部通信之一流控制機制之一實例。熟習此項技術者將熟知其他合適機制本身。又,不排除一時間確定性及/或無佇列外部互連之可能性。
圖15繪示本文中所揭示之處理器架構之一例示性應用,即,機器智慧之一應用。
如熟習機器智慧技術者將熟知,機器智慧以其中機器智慧演算法學習一知識模型之一學習階段開始。該模型包括互連節點(即,頂點) 102及邊緣(即,鏈路) 104之一圖表。該圖表中之各節點102具有一或多個輸入邊緣及一或多個輸出邊緣。一些節點102之一些輸入邊緣係一些其他節點之輸出邊緣,藉此將該等節點連接在一起以形成圖表。此外,節點102之一或多者之輸入邊緣之一或多者作為一整體形成圖表之輸入,且節點102之一或多者之輸出邊緣之一或多者作為一整體形成圖表之輸出。有時一給定節點可甚至具有以下所有此等:圖表之輸入、來自圖表之輸出及至其他節點之連接。各邊緣104傳送一值或更通常一張量(n維矩陣),此等形成分別在節點102之輸入及輸出邊緣上提供至節點102及自節點102提供之輸入及輸出。
各節點102表示如在其(若干)輸入邊緣上接收之其一或多個輸入之一函數,其中此函數之結果係提供於(若干)輸出邊緣上之(若干)輸出。各函數係藉由一或多個各自參數(有時被稱為權重,但其等不一定為乘法權重)參數化。一般而言,藉由不同節點102表示之函數可為不同形式之函數及/或可藉由不同參數參數化。
此外,各節點之函數之一或多個參數之各者藉由一各自錯誤值特性化。此外,一各自條件可與各節點102之該(等)參數中之該(等)錯誤相關聯。對於表示藉由一單個參數參數化之一函數之一節點102,該條件可為一簡單臨限值,即,若錯誤在該指定臨限值內則滿足條件,但若錯誤超出該臨限值則不滿足條件。對於藉由一個以上各自參數參數化之一節點102,節點102已達到一可接受錯誤位準之條件可更複雜。例如,僅在該節點102之參數之各者落在各自臨限值內時可滿足條件。作為另一實例,可定義組合用於相同節點102之不同參數中之錯誤之一組合度量,且在該組合度量之值落在一指定臨限值內之條件下可滿足條件,但在其他方面若該組合度量之值超出該臨限值,則不滿足條件(或反之亦然,取決於該度量之定義)。無論條件如何,此給予節點之(若干)參數中之錯誤是否降至低於一特定可接受位準或度之一度量。一般而言,可使用任何合適度量。條件或度量針對所有節點可相同,或針對節點之不同各自者可不同。
在學習階段中,演算法接收經驗資料,即,表示圖表之輸入之不同可能組合之多個資料點。隨著接收愈來愈多之經驗資料,演算法基於經驗資料逐步調諧圖表中之各種節點102之參數以便試圖最小化參數中之錯誤。目標係找出參數之值使得圖表之輸出儘可能接近用於一給定輸入之一所要輸出。在圖表作為一整體傾向於此一狀態時,圖表被稱作收斂。在一合適收斂度之後,圖表可接著用於執行預測或或推斷,即,預測某一給定輸入之一結果或推斷某一給定輸出之一原因。
學習階段可採用許多不同可能形式。例如,在一監督方法中,輸入經驗資料採用訓練資料(即,對應於已知輸出之輸入)之形式。運用各資料點,演算法可調諧參數使得輸出緊密匹配用於給定輸入之已知輸出。在後續預測階段中,圖表可接著用於將一輸入查詢映射至一近似經預測輸出(或若進行一推斷則反之亦然)。其他方法亦係可行的。例如,在一非監督方法中,每輸入基準不存在一參考結果之概念,且代替性地由機器智慧演算法來識別輸出資料中之其自身結構。或在一強化方法中,演算法針對輸入經驗資料中之各資料點嘗試至少一個可能輸出,且被告知此輸出是否為正或負(及可能其為正或負之一程度),例如,贏或輸、或獎勵或懲罰,或此類似者。在多次試驗中,演算法可逐步調諧圖表之參數以能夠預測將導致一正結果之輸入。熟習機器學習技術者將知道用於學習一圖表之各種方法及演算法。
根據本文中所揭示之技術之一例示性應用,各工作者執行緒經程式化以執行與一機器智慧圖表中之節點102之一各自個別者相關聯之運算。在此情況中,節點102之間的至少一些邊緣104對應於執行緒之間的資料交換,且一些邊緣104可涉及微磚之間的交換。此外,工作者執行緒之個別退出狀態係由程式設計員用於表示各自節點102是否已滿足其用於收斂該節點之(若干)參數之各自條件,即,是否具有落在錯誤空間中之可接受位準或區域內之(若干)參數中之錯誤。例如,此係實施例之一個例示性使用,其中個別退出狀態之各者係一個別位元且經彙總退出狀態係該等個別退出狀態之一AND (或等效地若將0視為正,則為一OR);或其中經彙總退出狀態係表示個別退出狀態是否全部真、全部假或混合之一個三元值。因此,藉由檢查退出狀態暫存器38中之一單個暫存器值,程式可判定圖表整體或圖表之至少一子區域是否已收斂於一可接受程度。
作為此之另一變體,可使用其中彙總採用個別置信度值之一統計彙總之形式之實施例。在此情況中,各個別退出狀態表示藉由各自執行緒表示之節點之參數已達到一可接受錯誤程度之一置信度(例如,作為一百分比)。經彙總退出狀態可接著用於判定關於圖表或圖表之一子區域是否已收斂於一可接受程度之一整體置信度。
在一多微磚配置6之情況中,各微磚運行圖表之一子圖表。各子圖表包括一監督器子程式,該監督器子程式包括一或多個監督器執行緒及其中一些或所有工作者可採用標碼串之形式之一組工作者執行緒。
將瞭解,僅藉由實例描述上文實施例。
例如,分離內部、時間確定性BSP階段與外部、非時間確定性BSP階段之概念並不限於透過使用上述實施例之專用同步化指令而實施。雖然此尤其有效,但不排除內部-外部BSP原理可代替性地實施於由通用機器程式碼指令組成之程式碼中。
又,本發明之範疇並不限於時間確定性域在晶片上亦不限於非時間確定性交換專門在晶片外。亦可以其他方式在時間確定性領域與非時間確定性領域之間進行劃分。例如,不排除跨多個晶片2擴展時間確定性域,其中不同多晶片時間確定性域藉由一非時間確定性互連件連接(例如,不同多晶片時間確定性域實施於不同卡或伺服器機箱上)。或作為另一實例,不同時間確定性域可實施於一給定晶片2上,其中在此等域之間提供一非時間確定性晶片上互連件。
此外,時間確定性域之實施方案並不限於使用一微磚間延遲查找表。代替性地,例如,一分析公式可用於判定微磚間延遲。此外,微磚間延遲及發送時序及接收時序並不限於藉由編譯器設定。例如,替代性地,其等可由程式設計員手動配置。
此外,本發明之範疇不受在時間確定性領域與非時間確定性領域之間進行分裂之任一特定原因限制。如先前所論述,存在針對此之許多潛在動因:佇列、有損耗相對於無損耗傳輸、延時,及/或晶片上/晶片外劃分。在所有此等情況或其他情況中,可期望至少在特定階段中避免非時間確定性交換污染一時間確定性交換階段之時間確定性。本發明之範疇不受任一可能動機限制。
此外,本文中所揭示之技術之適用性並不限於其中對監督器執行緒提供一獨立內文或其中監督器執行緒在一時槽中運行且接著將其時槽轉交給一工作者之上述架構。例如,在另一配置中,監督器可在其自身專用時槽中運行。或內部-外部BSP概念可甚至用於其中晶片之一者、一些或所有者上之微磚之一者、一些或所有者採用非多執行緒執行之案例中。
在使用多執行緒微磚之情況下,術語「監督器」及「工作者」並不一定暗示特定責任(惟另有明確說明除外),且尤其其等自身並不一定限於其中一監督器執行緒將其時槽轉交給一工作者之上述方案等等。一般而言,工作者執行緒可係指某一運算任務所分配至之任何執行緒。監督器可表示負責諸如以下各者之動作之任何種類之督導或協調執行緒:將工作者指派給桶形時槽,及/或在多個執行緒之間執行屏障同步化,及/或取決於一個以上執行緒之結果執行任何控制流操作(諸如一分支)。
在其中引用交錯時槽之一序列或類似者之情況下,此並不一定暗示所引用之序列組成任何可能或可用時槽。例如,討論中之序列可為所有可能時槽或僅當前在作用中之時槽。並不一定排除可存在當前不包含於經排程序列中之其他潛在時槽。
如本文中所使用之術語微磚並不一定限於任何特定拓撲或類似者,且一般而言可係指在一類似模組陣列(通常在相同晶片(即,相同晶粒)上)中包括一處理單元10及對應記憶體11之處理資源之任何模組化單元。
此外,在本文中引用在一微磚群組或複數個微磚或類似者之間執行一同步化或一彙總之情況下,此未必係指晶片上之所有微磚或系統中之所有微磚,除非明確說明。例如,SYNC及EXIT指令可經組態以僅相對於一給定晶片上之微磚4之一特定子集及/或僅一給定系統中之晶片2之一子集執行同步化及彙總;而一給定晶片上之一些其他微磚4及/或一給定系統中之一些其他晶片可不包含於一給定BSP群組中,且可甚至用於與藉由可用群組執行之運算無關之某組完全獨立任務。
此外,上述同步化方案並不排除在實施例中涉及除多微磚處理器以外之外部資源,例如,一CPU處理器(諸如主機處理器),或甚至並非處理器之一或多個組件(諸如一或多個網路卡、儲存裝置及/或FPGA) (例如,以經由一更廣互連件而非經由僅用於同步化目的之專用導線將全域同步化訊息作為封包傳達)。例如,一些微磚可選擇參與與一外部系統之資料傳送,其中此等傳送形成該微磚之運算負擔。在此情況中,該等傳送應在下一屏障之前完成。在一些情況中,微磚之退出狀態可取決於與外部資源之通信之一結果,且此資源可替代地影響退出狀態。替代性地或此外,除多微磚處理器以外之資源(例如,主機或一或多個FPGA)可併入至同步化網路自身中。即,需要來自此/此等額外資源之一同步化信號(諸如Sync_req)以便滿足屏障同步化且使微磚進行至下一交換階段。此外,在實施例中,經彙總之全域退出狀態可在彙總中包含(例如)來自一FPGA之外部資源之一退出狀態。
又,雖然上文已描述SYNC指令之特定模式,但更一般而言本發明之範疇並不限於此等模式。例如,上文給定之模式清單並不一定詳盡。或在其他實施例中,SYNC指令可具有較少模式,例如,SYNC不需要支援外部同步化之不同階層層級,或不需要在晶片上同步化與晶片間同步化之間進行區分(即,在一微磚間模式中,無關於是否在晶片上或晶片外始終相對於所有微磚起作用)。在又進一步替代實施例中,SYNC指令完全不需要採用一模式作為一運算元。例如,在實施例中,可對同步化及退出狀態彙總之不同層級提供SYNC指令之單獨版本(不同操作碼) (諸如不同SYNC指令用於微磚上同步化及微磚間晶片上同步化)。或在其他實施例中,可僅對微磚間同步化提供一專用SYNC指令(視需要在通用軟體中執行執行緒之間的微磚上同步化)。
在又進一步變動中,SYNC指令可採用較大數目個可能模式以適應階層式同步化區帶91、92之較大粒度或範圍;或僅採用一組不同模式以適應將系統不同劃分成階層式區帶。例如,除容許在內部(晶片上)同步化與外部(晶片外)同步化之間選擇之外(或甚至作為此之一替代),SYNC指令之模式可經組態以辨識進一步超出一個晶片(例如,一個IC封裝、一個卡、一個卡盒等)之其他實體斷點。或即使未使用任何專用SYNC指令,此等劃分仍可藉由程式設計員或編譯器使用通用程式碼實施。因此在實施例中,階層式同步化區帶之一者(例如,SYNC指令之模式之一者)可僅由相同IC封裝上之所有晶片上之所有微磚組成。替代性地或此外,階層式同步化區帶之一者(例如,又SYNC指令之模式之一者)可僅由相同卡上之所有晶片上之所有微磚組成。作為另一替代或額外實例,階層式同步化區帶之一者(例如,又SYNC指令之另一可能模式)可僅由相同實體盒(例如,相同伺服器機箱)中之所有卡上之所有晶片上之所有微磚組成。此將有利的,因為不同伺服器機箱之間的通信將趨於引發大於僅在定位於相同機箱內之晶片(晶粒)之間之一損失。
此外,同步化區帶並不限於階層式(即,彼此巢套),且在其他實施例中,可選擇同步化區帶可由一或多個非階層式群組組成或包含一或多個非階層式群組(該群組之所有微磚未經巢套於一單個其他可選擇群組內)。
一旦給定本文中之揭示內容,熟習此項技術者便可明白所揭示技術之其他應用及變體。本發明之範疇並不受限於所描述實施例而僅受限於隨附發明申請專利範圍。
2‧‧‧單晶片處理器/晶片/發送晶片
2I‧‧‧晶片/第一晶片
2II‧‧‧晶片/第二晶片
2III‧‧‧晶片/第三晶片
2IV‧‧‧晶片
4‧‧‧處理器模組/處理器微磚/微磚
4i至4N‧‧‧微磚群組
4R‧‧‧接收微磚/接受微磚
4T‧‧‧傳輸微磚
6‧‧‧陣列/多微磚陣列/多微磚配置
8‧‧‧外部鏈路/晶片至晶片鏈路/介面
10‧‧‧多執行緒處理器單元/處理單元/桶形執行緒處理單元
11‧‧‧本端記憶體/記憶體
12‧‧‧指令記憶體/記憶體/共用指令記憶體/程式記憶體
13‧‧‧執行管線/管線
14‧‧‧提取級
16‧‧‧解碼級
18‧‧‧執行級/執行單元
22‧‧‧資料記憶體/共用資料記憶體
24‧‧‧排程器
26‧‧‧內文暫存器檔案/硬體內文/暫存器組
28‧‧‧控制暫存器
30‧‧‧屏障同步化/內部屏障同步化
32‧‧‧運算元暫存器(OP)
34‧‧‧晶片上互連件/交換組構/互連件/硬體互連件/內部互連件
36‧‧‧同步化控制器/同步化邏輯/同步化控制器邏輯
37‧‧‧AND閘/彙總電路/彙總邏輯
38i至38N‧‧‧暫存器/局部共識暫存器$LC/局部退出狀態暫存器$LC/退出狀態暫存器
39‧‧‧專用同步化邏輯/微磚上同步化邏輯/同步化邏輯
40i至40N‧‧‧雙輸入AND閘
42i至42N‧‧‧退出狀態暫存器/全域共識暫存器($GC)/暫存器
50‧‧‧交換階段/內部交換階段
50’‧‧‧外部交換/外部交換階段
52‧‧‧運算階段/運算/運算循環
72‧‧‧外部互連件/互連件
76‧‧‧外部同步化邏輯/專用硬體同步化邏輯/同步化邏輯
78‧‧‧外部交換區塊(XB)/交換區塊/外部互連件
80‧‧‧外部屏障
91A‧‧‧區帶/同步化群組/較低層級區帶
91B‧‧‧區帶/同步化群組/較低層級區帶
92‧‧‧同步化群組/群組/同步化區帶/第二層級同步化區帶
95‧‧‧同步化區塊/同步化邏輯
96‧‧‧同步化導線/導線
96_0‧‧‧第一導線對
96_1‧‧‧第二導線對
102‧‧‧互連節點/節點
104‧‧‧邊緣
140x‧‧‧交叉導線
210‧‧‧多工器
214‧‧‧多工器控制信號/控制多工器信號
218T‧‧‧資料匯流排/交換匯流排
220x‧‧‧輸入
224‧‧‧exin介面/資料輸入exin介面
226‧‧‧exout介面
226T‧‧‧exout介面
228‧‧‧exmux介面
230‧‧‧資料匯流排
232‧‧‧交換輸入訊務記憶體指標/記憶體指標
S1‧‧‧步驟
S2‧‧‧步驟
S3‧‧‧步驟
S4‧‧‧步驟
S5‧‧‧步驟
CX0至CX3‧‧‧工作者內文暫存器檔案
CXS‧‧‧監督器內文暫存器檔案
為幫助理解本發明及展示可如何實施實施例,藉由實例參考隨附圖式,其中:
圖1係多執行緒處理單元之一示意性方塊圖,
圖2係複數個執行緒內文之一示意性方塊圖,
圖3示意性地繪示交錯之執行時槽之一方案,
圖4示意性地繪示一監督器執行緒及複數個工作者執行緒,
圖5係用於彙總多個執行緒之退出狀態之邏輯之一示意圖,
圖6示意性地繪示相同微磚上之工作者執行緒中之同步化,
圖7係包括多個微磚之一處理器晶片之一示意性方塊圖,
圖8係一整體同步平行(BSP)運算模型之一示意性圖解,
圖9係一BSP模型之另一示意性圖解,
圖10係多執行緒處理單元之間的BSP之一示意性圖解,
圖11係一互連系統之一示意性方塊圖,
圖12係多個互連處理器晶片之系統之一示意性圖解,
圖13係多層BSP方案之一示意性圖解,
圖14係多個處理器晶片之一系統之另一示意性圖解,
圖15係一機器智慧演算法中所使用之一圖表之一示意性圖解,
圖16示意性地繪示用於在微磚之間交換資料之一配置,
圖17示意性地繪示交換時序之一方案,
圖18繪示用於在晶片之間同步化之實例性佈線,及
圖19示意性地繪示用於在晶片之間交換之一外部流控制機制。
Claims (23)
- 一種操作包括劃分成複數個域之多個處理器微磚之一系統之方法,其中在各域內該等微磚經由一時間確定性互連件之一各自例項彼此連接且在域之間該等微磚經由一非時間確定性互連件彼此連接;該方法包括: 在跨該等域之一些或所有該等微磚之一參與群組之每一各自者上,執行一運算階段,其中該各自微磚執行各自一或多個微磚上運算,但既不將運算結果傳達至該群組中之該等微磚之任何其他者亦不自該群組中之該等微磚之任何其他者傳達運算結果; 在該一或多個域之每一各自者內,執行一各自內部屏障同步化以要求該各自域中之所有該等參與微磚在容許該各自域中之該等參與微磚之任一者進行至一內部交換階段之前已完成該運算階段,藉此在該一或多個域之各個別者內在內部建立所有參與微磚之間的一共同時間參考; 在該各自內部屏障同步化之後,在該一或多個域之各者內執行該內部交換階段,其中該各自域內之各參與微磚經由該時間確定性互連件將其各自運算之一或多個結果傳達至相同域內之該等參與微磚之一或多個其他者及/或自相同域內之該等參與微磚之一或多個其他者傳達其各自運算之一或多個結果,但既不將運算結果傳達至該等域之任何其他者亦不自該等域之任何其他者傳達運算結果; 執行一外部屏障同步化以要求該等域之所有該等參與微磚在容許該等參與微磚之任一者進行至一外部交換階段之前已完成該內部交換階段,藉此跨該等域建立所有參與微磚之間的一共同時間參考;及 在該外部屏障同步化之後,執行該外部交換階段,其中該等參與微磚之一或多者經由該非時間確定性互連件將該等運算結果之一或多者傳達給該等域之另一者。
- 如請求項1之方法,其中經由該非時間確定性互連件之該等通信在佇列中,但經由該時間確定性互連件之微磚之間之該等通信未在佇列中。
- 如請求項1或2之方法,其中經由該時間確定性互連件,各對傳輸微磚及接收微磚之間的該通信係藉由以下者執行: 自該接收微磚傳輸一訊息,及 控制該接收微磚以在藉由該傳輸微磚之該傳輸之後之一預定時間間隔監聽該傳輸微磚之一位址, 其中該預定時間間隔等於該傳輸微磚與該接收微磚之間的一總預定延遲,該時間間隔係由具有關於該延遲之預定資訊之一編譯器設定。
- 如請求項1或2之方法,其中:該時間確定性互連件係無損耗的,而該非時間確定性互連件在一實體層、輸送層或網路化層處係有損耗的。
- 如請求項1或2之方法,其中該等域之各者係一不同各自晶片,該時間確定性互連件係一內部晶片上互連件且該非時間確定性互連件係該等晶片之間的一外部互連件。
- 如請求項1或2之方法,其中該等域之各者包括多個晶片,該時間確定性互連件係一外部無損耗晶片間互連件且該非時間確定性互連件係一外部有損耗互連件。
- 如請求項1或2之方法,其包括執行一系列重複反覆,各重複反覆包括該運算階段之一各自例項,接著為該內部屏障同步化之一各自例項,接著為該內部交換階段之一各自例項,接著為該外部屏障同步化之一各自例項,接著為該外部交換階段之一各自例項;其中不容許各連續反覆進行直至已執行緊接在前之反覆之該外部屏障同步化。
- 如請求項1或2之方法,其包括執行如下之一序列:該運算階段之例項,其後各接著該內部交換階段之一對應例項且接著該內部屏障同步化之一對應例項,其中該外部屏障同步化係在該序列中之最後運算階段之後。
- 如請求項7之方法,其包括執行如下之一序列:該運算階段之例項,其後各接著該內部交換階段之一對應例項且接著該內部屏障同步化之一對應例項,其中該外部屏障同步化係在該序列中之該最後運算階段之後; 其中該等反覆之一或多個反覆之各者包括如下之一各自序列:該運算階段之多個例項,其後各接著該內部交換階段之一對應例項且接著該內部屏障同步化之一對應例項,其中該各自外部屏障同步化係在該各自序列中之該運算階段之最後例項之後。
- 如請求項1或2之方法,其中該內部屏障同步化及該外部屏障同步化之各者係藉由執行包括一操作碼及一運算元之一同步化指令而執行,其中該運算元將該同步化指令之一模式指定為內部或外部,且其中該操作碼在經執行時引起該時間確定性互連件中之硬體邏輯在該運算元指定內部模式時協調該內部屏障同步化之效能,且引起該非時間確定性互連件中之硬體邏輯在該運算元指定外部模式時協調該外部屏障同步化之效能。
- 如請求項1之方法,其包括選擇複數個預定義區帶之一者作為該等參與微磚,各區帶包括該多個域之一不同組或子集。
- 如請求項11之方法,其中該等區帶係階層式的,其中至少兩個較低層級區帶經巢套於至少一較高層級區帶內。
- 如請求項11或12之方法,其中: 該內部屏障同步化及該外部屏障同步化之各者係藉由執行包括一操作碼及一運算元之一同步化指令而執行,其中該運算元將該同步化指令之一模式指定為內部或外部,且其中該操作碼在經執行時引起該時間確定性互連件中之硬體邏輯在該運算元指定該內部模式時協調該內部屏障同步化之該效能,且引起該非時間確定性互連件中之硬體邏輯在該運算元指定該外部模式時協調該外部屏障同步化之該效能;且 該同步化指令之該運算元指定該外部屏障同步化應用於該外部模式之複數個不同可能變體之哪一者,各變體對應於該等區帶之一不同者。
- 如請求項13之方法,其中: 該等區帶係階層式的,其中至少兩個較低層級區帶經巢套於至少一較高層級區帶內;且 該外部模式之該等變體指定該外部屏障同步化應用於區帶之至少哪一階層式層級。
- 如請求項12之方法,其中該外部同步化及交換包括: 首先執行限於該等階層式區帶之一第一、較低層級區帶內之一第一層級外部同步化且接著交換;及 在該第一層級同步化及交換之後,跨該等區帶之一第二、較高層級區帶執行一第二層級外部同步化及交換。
- 如請求項11或12之方法,其中該等階層式區帶之一者僅由一相同IC封裝上之所有微磚組成;及/或該等階層式區帶之一者僅由一相同卡上之所有微磚組成;及/或該等階層式區帶之一者僅由一相同機箱上之所有微磚組成。
- 2、11、12或15之方法,其包括在該等微磚中之一個或一些微磚上執行一放棄指令,該放棄指令之操作碼引起其上執行該放棄指令之該微磚或該等微磚選擇退出該群組。
- 2、11、12或15之方法,其中在該外部交換階段中,該等參與微磚之一或多者亦經由該外部互連件將該等運算結果之一或多者傳達給一主機處理器,該主機處理器經實施於一單獨主機處理器晶片上。
- 2、11、12或15之方法,其中在該運算階段中,一些或所有該等參與微磚各以一交錯方式運行一批工作者執行緒,且該內部屏障同步化要求每批中之所有該等工作者執行緒已退出。
- 2、11、12或15之方法,其包括使用該系統執行一機器智慧演算法,其中一圖表中之各節點具有一或多個各自輸入頂點及一或多個各自輸出頂點,其中該等節點中之至少一些節點之該等輸入頂點係該等節點中之至少一些其他節點之該等輸出頂點,各節點包括使其輸出頂點與其輸入頂點有關之一各自函數,其中每一各自函數藉由一或多個各自參數參數化,且該等各自參數之各者具有一相關聯錯誤,使得該圖表在一些或所有該等參數中之該等錯誤減少時收斂於一解; 其中該等微磚之各者模型化該圖表中之該等節點之各自一或多者。
- 如請求項5之方法,其中: 在該外部交換階段中,該等參與微磚之一或多者亦經由該外部互連件將該等運算結果之一或多者傳達給一主機處理器,該主機處理器經實施於一單獨主機處理器晶片上; 在該運算階段中,一些或所有該等參與微磚各以一交錯方式運行一批工作者執行緒,且該內部屏障同步化要求每批中之所有該等工作者執行緒已退出;且 該等晶片係協助該主機處理器之AI加速器晶片。
- 一種電腦程式產品,其體現於電腦可讀儲存器上且包括經組態以便在執行於該等微磚上時執行如請求項1至21中任一項之操作之程式碼。
- 一種包括劃分成複數個域之多個處理器微磚之系統,其中在各域內該等微磚經由一時間確定性互連件之一各自例項彼此連接且在域之間該等微磚經由一非時間確定性互連件彼此連接;該系統經程式化以執行以下操作: 在跨該等域之一些或所有該等微磚之一參與群組之每一各自者上,執行一運算階段,其中該各自微磚執行各自一或多個微磚上運算,但既不將運算結果傳達至該群組中之該等微磚之任何其他者也不自該群組中之該等微磚之任何其他者傳達運算結果; 在該一或多個域之每一各自者內,執行一各自內部屏障同步化以要求該各自域中之所有該等參與微磚在容許該各自域中之該等參與微磚之任一者進行至一內部交換階段之前已完成該運算階段,藉此在該一或多個域之各個別者內在內部建立所有參與微磚之間的一共同時間參考; 在該各自內部屏障同步化之後,在該一或多個域之各者內執行該內部交換階段,其中該各自域內之各參與微磚經由該時間確定性互連件將其各自運算之一或多個結果傳達至相同域內之該等參與微磚之一或多個其他者及/或自相同域內之該等參與微磚之一或多個其他者傳達其各自運算之一或多個結果,但既不將運算結果傳達至該等域之任何其他者也不自該等域之任何其他者傳達運算結果; 執行一外部屏障同步化以要求該等域之所有該等參與微磚在容許該等參與微磚之任一者進行至一外部交換階段之前已完成該內部交換階段,藉此跨該等域建立所有參與微磚之間的一共同時間參考;及 在該外部屏障同步化之後,執行該外部交換階段,其中該等參與微磚之一或多者經由該非時間確定性互連件將該等運算結果之一或多者傳達給該等域之另一者。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
??1717294.1 | 2017-10-20 | ||
GB1717294.1A GB2569775B (en) | 2017-10-20 | 2017-10-20 | Synchronization in a multi-tile, multi-chip processing arrangement |
GB1717294.1 | 2017-10-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201928665A true TW201928665A (zh) | 2019-07-16 |
TWI673649B TWI673649B (zh) | 2019-10-01 |
Family
ID=60481813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107136871A TWI673649B (zh) | 2017-10-20 | 2018-10-19 | 多微磚、多晶片處理配置中之同步化 |
Country Status (10)
Country | Link |
---|---|
US (2) | US10579585B2 (zh) |
JP (1) | JP6797880B2 (zh) |
KR (1) | KR102263078B1 (zh) |
CN (1) | CN110121699B (zh) |
CA (1) | CA3021409C (zh) |
DE (1) | DE102018126005A1 (zh) |
FR (1) | FR3072797B1 (zh) |
GB (1) | GB2569775B (zh) |
TW (1) | TWI673649B (zh) |
WO (1) | WO2019076715A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716756A (zh) * | 2019-10-15 | 2020-01-21 | 上海兆芯集成电路有限公司 | 多晶粒的多核计算机平台及其开机方法 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2569775B (en) | 2017-10-20 | 2020-02-26 | Graphcore Ltd | Synchronization in a multi-tile, multi-chip processing arrangement |
GB2579412B (en) | 2018-11-30 | 2020-12-23 | Graphcore Ltd | Gateway pull model |
GB2580165B (en) | 2018-12-21 | 2021-02-24 | Graphcore Ltd | Data exchange in a computer with predetermined delay |
JP7207133B2 (ja) | 2019-04-23 | 2023-01-18 | 富士通株式会社 | 情報処理装置、同期装置及び情報処理装置の制御方法 |
US20220326988A1 (en) * | 2019-08-16 | 2022-10-13 | Google Llc | Explicit scheduling of on-chip operations |
CN114270956A (zh) * | 2019-08-23 | 2022-04-01 | 北京希姆计算科技有限公司 | 同步电路和同步芯片 |
US11127442B2 (en) | 2019-12-06 | 2021-09-21 | Xilinx, Inc. | Data transfers between a memory and a distributed compute array |
GB2590661B (en) * | 2019-12-23 | 2022-02-09 | Graphcore Ltd | Sync network |
GB2590658A (en) * | 2019-12-23 | 2021-07-07 | Graphcore Ltd | Communication in a computer having multiple processors |
US11631001B2 (en) | 2020-04-10 | 2023-04-18 | SiMa Technologies, Inc. | Heterogeneous computing on a system-on-chip, including machine learning inference |
US11321607B2 (en) * | 2020-04-03 | 2022-05-03 | SiMa Technologies, Inc. | Machine learning network implemented by statically scheduled instructions, with compiler |
US11989581B2 (en) | 2020-04-17 | 2024-05-21 | SiMa Technologies, Inc. | Software managed memory hierarchy |
US11734549B2 (en) | 2020-04-21 | 2023-08-22 | SiMa Technologies, Inc. | Avoiding data routing conflicts in a machine learning accelerator |
US11734605B2 (en) | 2020-04-29 | 2023-08-22 | SiMa Technologies, Inc. | Allocating computations of a machine learning network in a machine learning accelerator |
US11886981B2 (en) | 2020-05-01 | 2024-01-30 | SiMa Technologies, Inc. | Inter-processor data transfer in a machine learning accelerator, using statically scheduled instructions |
US11586894B2 (en) | 2020-05-04 | 2023-02-21 | SiMa Technologies, Inc. | Ordering computations of a machine learning network in a machine learning accelerator for efficient memory usage |
GB2597078B (en) * | 2020-07-14 | 2022-07-13 | Graphcore Ltd | Communication between host and accelerator over network |
GB2597945B (en) | 2020-08-11 | 2022-11-16 | Graphcore Ltd | Predictive clock control |
US11782757B2 (en) | 2021-05-07 | 2023-10-10 | SiMa Technologies, Inc. | Scheduling off-chip memory access for programs with predictable execution |
GB202110148D0 (en) * | 2021-07-14 | 2021-08-25 | Graphcore Ltd | Synchronisation for a multi-tile processing unit |
WO2023285304A1 (en) * | 2021-07-14 | 2023-01-19 | Graphcore Limited | Subscription to sync zones |
GB202110147D0 (en) | 2021-07-14 | 2021-08-25 | Graphcore Ltd | time deterministic trace |
GB202110155D0 (en) | 2021-07-14 | 2021-08-25 | Graphcore Ltd | GSP trace unit |
US11675588B2 (en) | 2021-08-20 | 2023-06-13 | Micron Technology, Inc. | Tile-based result buffering in memory-compute systems |
US11966745B2 (en) | 2021-11-15 | 2024-04-23 | Google Llc | Sparse SIMD cross-lane processing unit |
US11972263B2 (en) | 2021-11-22 | 2024-04-30 | Google Llc | Cooperative instruction prefetch on multicore system |
TWI788193B (zh) | 2022-01-14 | 2022-12-21 | 智原科技股份有限公司 | 用來於多分頻時鐘系統中進行分頻時鐘相位同步之方法、同步控制電路、同步控制子電路及電子裝置 |
WO2023183015A1 (en) * | 2022-03-22 | 2023-09-28 | Google Llc | Streaming transfers and ordering model |
US11977499B2 (en) | 2022-03-22 | 2024-05-07 | Google Llc | Streaming transfers and ordering model |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282583B1 (en) * | 1991-06-04 | 2001-08-28 | Silicon Graphics, Inc. | Method and apparatus for memory access in a matrix processor computer |
GB2284494B (en) * | 1993-11-26 | 1998-09-09 | Hitachi Ltd | Distributed shared memory management system |
JPH07234842A (ja) * | 1994-02-22 | 1995-09-05 | Fujitsu Ltd | 並列データ処理システム |
GB2303274B (en) | 1995-07-11 | 1999-09-08 | Fujitsu Ltd | Switching apparatus |
US5887143A (en) * | 1995-10-26 | 1999-03-23 | Hitachi, Ltd. | Apparatus and method for synchronizing execution of programs in a distributed real-time computing system |
JP3532037B2 (ja) | 1996-07-31 | 2004-05-31 | 富士通株式会社 | 並列計算機 |
US6771264B1 (en) | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
US7100021B1 (en) | 2001-10-16 | 2006-08-29 | Cisco Technology, Inc. | Barrier synchronization mechanism for processors of a systolic array |
US8307194B1 (en) * | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
US7437521B1 (en) * | 2003-08-18 | 2008-10-14 | Cray Inc. | Multistream processing memory-and barrier-synchronization method and apparatus |
US20050120185A1 (en) * | 2003-12-01 | 2005-06-02 | Sony Computer Entertainment Inc. | Methods and apparatus for efficient multi-tasking |
US7305639B2 (en) * | 2005-02-11 | 2007-12-04 | International Business Machines Corporation | Method and apparatus for specifying multiple voltage domains and validating physical implementation and interconnections in a processor chip |
US7861060B1 (en) | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
US7636835B1 (en) | 2006-04-14 | 2009-12-22 | Tilera Corporation | Coupling data in a parallel processing environment |
US7577820B1 (en) | 2006-04-14 | 2009-08-18 | Tilera Corporation | Managing data in a parallel processing environment |
US7761485B2 (en) * | 2006-10-25 | 2010-07-20 | Zeugma Systems Inc. | Distributed database |
US8407428B2 (en) * | 2010-05-20 | 2013-03-26 | Hicamp Systems, Inc. | Structured memory coprocessor |
US8234652B2 (en) | 2007-08-28 | 2012-07-31 | International Business Machines Corporation | Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks |
US8078834B2 (en) | 2008-01-09 | 2011-12-13 | Analog Devices, Inc. | Processor architectures for enhanced computational capability |
US8866827B2 (en) | 2008-06-26 | 2014-10-21 | Microsoft Corporation | Bulk-synchronous graphics processing unit programming |
US7978721B2 (en) * | 2008-07-02 | 2011-07-12 | Micron Technology Inc. | Multi-serial interface stacked-die memory architecture |
US8151088B1 (en) | 2008-07-08 | 2012-04-03 | Tilera Corporation | Configuring routing in mesh networks |
US7979844B2 (en) * | 2008-10-14 | 2011-07-12 | Edss, Inc. | TICC-paradigm to build formally verified parallel software for multi-core chips |
US20100115236A1 (en) * | 2008-10-31 | 2010-05-06 | Cray Inc. | Hierarchical shared semaphore registers |
GB2471067B (en) | 2009-06-12 | 2011-11-30 | Graeme Roy Smith | Shared resource multi-thread array processor |
CN101586961B (zh) | 2009-07-06 | 2011-04-06 | 中国人民解放军国防科学技术大学 | 用于组合导航处理器的多任务调度方法及组合导航处理器 |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
JP5549575B2 (ja) * | 2010-12-17 | 2014-07-16 | 富士通株式会社 | 並列計算機システム、同期装置、並列計算機システムの制御方法 |
US20120179896A1 (en) * | 2011-01-10 | 2012-07-12 | International Business Machines Corporation | Method and apparatus for a hierarchical synchronization barrier in a multi-node system |
CN103108000B (zh) | 2011-11-09 | 2016-08-10 | 中国移动通信集团公司 | 用于任务同步的方法和系统及系统中的主节点和工作节点 |
JP5974703B2 (ja) * | 2012-07-20 | 2016-08-23 | 富士通株式会社 | 情報処理装置およびバリア同期方法 |
US9465432B2 (en) | 2013-08-28 | 2016-10-11 | Via Technologies, Inc. | Multi-core synchronization mechanism |
US9977676B2 (en) | 2013-11-15 | 2018-05-22 | Qualcomm Incorporated | Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods |
JP6007430B2 (ja) | 2015-05-20 | 2016-10-12 | 大澤 昇平 | 機械学習モデル設計支援装置、機械学習モデル設計支援方法、機械学習モデル設計支援装置用プログラム |
US10210134B2 (en) | 2015-05-21 | 2019-02-19 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
US10248177B2 (en) | 2015-05-22 | 2019-04-02 | Advanced Micro Devices, Inc. | Droop detection and regulation for processor tiles |
WO2017028908A1 (en) | 2015-08-18 | 2017-02-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for observing software execution, debug host and debug target |
WO2017069900A1 (en) | 2015-10-21 | 2017-04-27 | Advanced Micro Devices, Inc. | Droop detection and regulation for processor tiles |
CN105608191A (zh) * | 2015-12-23 | 2016-05-25 | 云南电网有限责任公司 | 一种基于EnersunWebCache动态生成缓存电网地图瓦片的方法 |
EP3400688B1 (en) | 2016-01-04 | 2020-05-20 | Gray Research LLC | Massively parallel computer, accelerated computing clusters, and two dimensional router and interconnection network for field programmable gate arrays, and applications |
US10324730B2 (en) | 2016-03-24 | 2019-06-18 | Mediatek, Inc. | Memory shuffle engine for efficient work execution in a parallel computing system |
GB2569844B (en) | 2017-10-20 | 2021-01-06 | Graphcore Ltd | Sending data off-chip |
GB2569775B (en) | 2017-10-20 | 2020-02-26 | Graphcore Ltd | Synchronization in a multi-tile, multi-chip processing arrangement |
GB2569271B (en) | 2017-10-20 | 2020-05-13 | Graphcore Ltd | Synchronization with a host processor |
-
2017
- 2017-10-20 GB GB1717294.1A patent/GB2569775B/en active Active
-
2018
- 2018-02-01 US US15/886,138 patent/US10579585B2/en active Active
- 2018-10-11 WO PCT/EP2018/077675 patent/WO2019076715A1/en active Application Filing
- 2018-10-11 CN CN201880004198.7A patent/CN110121699B/zh active Active
- 2018-10-18 FR FR1859638A patent/FR3072797B1/fr active Active
- 2018-10-19 DE DE102018126005.9A patent/DE102018126005A1/de active Pending
- 2018-10-19 JP JP2018197213A patent/JP6797880B2/ja active Active
- 2018-10-19 CA CA3021409A patent/CA3021409C/en active Active
- 2018-10-19 TW TW107136871A patent/TWI673649B/zh active
- 2018-10-22 KR KR1020180126033A patent/KR102263078B1/ko active IP Right Grant
-
2019
- 2019-12-23 US US16/725,313 patent/US11023413B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716756A (zh) * | 2019-10-15 | 2020-01-21 | 上海兆芯集成电路有限公司 | 多晶粒的多核计算机平台及其开机方法 |
CN110716756B (zh) * | 2019-10-15 | 2023-03-14 | 上海兆芯集成电路有限公司 | 多晶粒的多核计算机平台及其开机方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102263078B1 (ko) | 2021-06-09 |
WO2019076715A1 (en) | 2019-04-25 |
GB2569775A (en) | 2019-07-03 |
US20200133914A1 (en) | 2020-04-30 |
JP2019079526A (ja) | 2019-05-23 |
KR20190044568A (ko) | 2019-04-30 |
CA3021409C (en) | 2021-02-02 |
US11023413B2 (en) | 2021-06-01 |
US20190121784A1 (en) | 2019-04-25 |
DE102018126005A1 (de) | 2019-04-25 |
GB201717294D0 (en) | 2017-12-06 |
FR3072797A1 (fr) | 2019-04-26 |
GB2569775B (en) | 2020-02-26 |
US10579585B2 (en) | 2020-03-03 |
CA3021409A1 (en) | 2019-04-20 |
TWI673649B (zh) | 2019-10-01 |
CN110121699B (zh) | 2023-07-07 |
JP6797880B2 (ja) | 2020-12-09 |
CN110121699A (zh) | 2019-08-13 |
FR3072797B1 (fr) | 2024-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI673649B (zh) | 多微磚、多晶片處理配置中之同步化 | |
TWI691900B (zh) | 用於處理器微磚中之同步化之處理器系統及方法 | |
KR102161683B1 (ko) | 호스트 프로세서와의 동기화 | |
US10949266B2 (en) | Synchronization and exchange of data between processors | |
TWI700641B (zh) | 用於發送資料至晶片外之方法及相關處理器和系統 | |
TWI703496B (zh) | 處理器及其操作之方法,以及電腦程式產品 | |
TWI700634B (zh) | 具有在多微磚處理配置中之同步的處理系統、操作處理系統之方法、以及相關電腦程式產品 | |
TW201923557A (zh) | 多微磚處理配置中之同步化 |