TWI713913B - 電腦可讀儲存媒體、處理單元及計算機 - Google Patents
電腦可讀儲存媒體、處理單元及計算機 Download PDFInfo
- Publication number
- TWI713913B TWI713913B TW107136963A TW107136963A TWI713913B TW I713913 B TWI713913 B TW I713913B TW 107136963 A TW107136963 A TW 107136963A TW 107136963 A TW107136963 A TW 107136963A TW I713913 B TWI713913 B TW I713913B
- Authority
- TW
- Taiwan
- Prior art keywords
- processing unit
- data
- micro
- instruction
- computer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/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/17312—Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
-
- 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- 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
Abstract
本發明係關於一種包括用於在一處理單元上執行之一指令序列之計算機程式,該處理單元具有用於保存該計算機程式之指令儲存器、用於執行該計算機程式之一執行單元及用於保存資料之資料儲存器,該計算機程式包括一或多個計算機可執行指令,該一或多個計算機可執行指令在被執行時實施:一發送功能,其致使目的地係該處理單元之一資料封包在連接至一接受者處理單元之一連接線組上傳輸,該資料封包不具有目的地識別符但在一預定傳輸時間傳輸;及一切換控制功能,其致使該處理單元控制切換電路以將該處理單元之一連接線組連接至一切換構體以在一預定接收時間接收一資料封包。
Description
本發明係關於在包括多個微磚之一處理器中同步化多個不同微磚之工作負載,各微磚包括具有本端記憶體之一處理單元。特定而言,本發明係關於整體同步並行(BSP)計算協定,其中一微磚群組之各者必須在該群組中之微磚之任一者可繼續至一交換階段之前完成一計算階段。
計算之並行性採用不同形式。程式片段可經組織以並發地執行(其中其在時間上重疊但可共用執行資源)或並行地執行(其中其可能在相同時間執行不同資源)。
計算之並行性可以數種方式達成,例如藉由一多互連處理器微磚陣列、或一多線程處理單元、或實際上一多微磚陣列,其中各微磚包括一多線程處理單元。
當藉由在相同晶片(或相同積體電路封裝中之若干晶片)上包括一多微磚陣列之一處理器達成並行性時,各微磚包括具有本端記憶體(包含程式記憶體及資料記憶體)之其自身單獨之各自處理單元。因此,程式碼之單獨部分可在不同微磚上並發地運行。微磚經由一晶片上互連連接在一起,此使在不同微磚上運行之程式碼能夠在微磚之間進行通信。在一
些情況下,各微磚上之處理單元可採用一桶形線程處理單元(或其他多線程處理單元)之形式。各微磚可具有一情境集及一執行管線,使得各微磚可並發地運行多個交錯線程。
一般而言,可存在在陣列中之不同微磚上運行之一程式之部分之間之相依性。因此,需要一種技術來防止一個微磚上之一程式碼段在資料之前運行,另一微磚上之另一程式碼段取決於該資料而變得可用。存在用於達成此目的之數個可能方案,但本文中所關注之方案稱為「整體同步並行」(BSP)。根據BSP,各微磚以一交替方式執行一計算階段及一交換階段。在計算階段期間,各微磚在微磚上本端地執行一或多個計算任務,但不將其任何計算結果傳達給任何其他微磚。在交換階段,允許各微磚將來自前一計算階段之一或多個計算結果交換至群組中之一或多個其他微磚及/或自群組中之一或多個其他微磚交換來自前一計算階段之一或多個計算結果,但尚未開始一新計算階段直至彼微磚已完成其交換階段。此外,根據此形式之BSP原理,一屏障同步化置於自計算階段過渡至交換階段或自交換階段過渡至計算階段或兩者之接合點處。即:(a)所有微磚需要在允許群組中之任何微磚繼續至下一交換階段之前完成其各自計算階段,或(b)群組中之所有微磚需要在允許群組中之任何微磚繼續至下一計算階段之前完成其各自交換階段,或(c)兩者。當在本文中使用時,術語「在一計算階段與一交換階段之間」涵蓋所有此等選項。
多線程及/或多微磚並行處理之一實例用法見於機器智慧中。如熟習機器智慧技術者將熟悉,機器智慧演算法「能夠產生知識模型」且使用知識模型來運行學習及推理演算法。併入知識模型及演算法之一機器智慧模型可表示為多個互連節點之一圖。各節點表示其輸入之一功
能。一些節點接收至圖之輸入且一些節點接收來自一或多個其他節點之輸入。一些節點之輸出啟動形成其他節點之輸入,且一些節點之輸出提供圖之輸出,且至圖之輸入提供輸入至一些節點。此外,各節點處之功能係由一或多個各自參數(例如,權重)參數化。在一學習階段期間,目標係基於一經驗輸入資料集找到各種參數之值,使得圖作為整體將為一定範圍之可能輸入產生一所期望輸出。如此做之各種演算法在此項技術中係已知的,諸如基於隨機梯度下降之一反向傳播演算法。在多次迭代中,逐漸調諧參數以減小其誤差,且因此圖收斂於一解。在一後續階段,所學習模型接著可用來在給定一指定輸入集之情況下對輸出進行預測或在給定一指定輸出集之情況下對輸入(原因)進行推斷,或可對所學習模型執行其他內省形式之分析。
各節點之實施方案將涉及資料之處理,且圖之互連對應於待在節點之間交換資料。通常,各節點之至少一些處理可獨立於圖中之一些或所有其他節點執行,且因此大圖顯示巨大並行性之機會。
如上文所提及,表示知識模型及關於知識模型如何用於學習及推理之演算法資訊之一機器智慧模型通常可由多個互連節點之一圖表示,各節點對資料具有一處理要求。該圖之互連指示待在節點之間交換資料且因此致使在節點處執行之程式片段之間的相依性。一般而言,一節點處之處理可獨立於另一節點實行,且因此大圖顯示巨大並行性。一高度分佈式平行機係計算此等機器智慧模型之一適當機器結構。此特徵使一機器能夠被設計來進行特定時間確定性保證。
本發明中所利用之知識模型之一因素係圖之大體上靜態本
質。即,在執行機器智慧演算法期間,節點及圖之結構(包括圖)通常不會改變。發明人已製造一種進行特定時間確定性保證以最佳化機器智慧模型上之計算之機器。此允許一編譯器以一時間確定性方式跨節點劃分及排程工作。正是此時間確定性在下文所描述之實施例中用於設計經最佳化以基於知識模型處理工作負載之一計算機時之顯著最佳化。
根據本發明之一個態樣,提供一種包括用於在一處理單元上執行之一指令序列之計算機程式,該處理單元具有用於保存該計算機程式之指令儲存器、用於執行該計算機程式之一執行單元及用於保存資料之資料儲存器,該計算機程式包括一或多個計算機可執行指令,該一或多個計算機可執行指令在被執行時實施:一發送功能,其致使目的地係該處理單元之一資料封包在連接至一接受者處理單元之一連接線組上傳輸,該資料封包不具有目的地識別符但在一預定傳輸時間傳輸;及一切換控制功能,其在被執行時致使該處理單元控制切換電路以將該處理單元之一連接線組連接至一切換構體以在一預定接收時間接收一資料封包。
可存在兩個單獨指令:一發送指令及一切換控制指令。該發送指令之特徵可包含該發送指令藉由定義該指令儲存器中待自其發送該資料封包之一位置來定義一發送位址。替代地,該發送指令未顯式定義一發送位址但隱式定義其中保存該發送位址之一暫存器。該發送指令可定義數個待發送封包,各封包與一不同傳輸時間相關聯。該計算機程式可包括用於更新該隱式定義暫存器中之該發送位址之一進一步指令。
該計算機程式可包含至少一個進一步指令,該至少一個進
一步指令定義一記憶體指標更新功能,該記憶體指標更新功能更新記憶體指標,該記憶體指標識別該資料儲存器中用於儲存在該接受者處理單元處接收之該資料封包之一記憶體位置。
本文中所描述之指令集之一製作項(artefact)係其可包含合併指令,該等合併指令合併一傳輸處理單元及一接受者處理單元之功能,使得該處理單元可在單個執行循環內作為一傳輸單元及一接受者單元操作。一個此合併指令合併該發送功能與該切換控制功能。另一此合併指令合併該發送功能及該記憶體指標更新功能。一進一步合併指令合併該發送功能、該切換控制功能及該記憶體指標更新功能,使得所有三個功能可在單個執行循環中完成。
可以匹配該執行單元之一提取階段之一位元寬度之一第一位元寬度發佈指令。合併兩個功能之合併指令亦可為一第一位元寬度。實施合併三個功能之一合併指令之一種方式係一第一位元寬度之指令識別亦為該第一位元寬度之一運算元。該運算元實施該切換控制功能及該記憶體指標更新功能。替代地,合併三個功能之一指令可具有一第二位元,該第二位元係該執行單元之一提取階段之位元寬度之兩倍,但一旦被發佈便被視為單個指令。
一合併指令格式可為一常見格式,其中一運算碼部分指定其是否合併該發送功能與該記憶體指標更新功能或該切換控制功能。一交換狀態可取決於該運算碼部分保存用於該切換控制功能之資訊或用於該記憶體指標更新功能之資訊。
該計算機程式可包含一同步化指令,該同步化指令在該處理單元之一計算階段完成時產生一指示。此使一計算機程式能夠在該等處
理單元形成具有一計算階段及一交換階段之一屏障同步化協定之部分之一情境下操作。可在該交換階段執行該發送指令。
該計算機程式可儲存於一非可傳輸計算機可讀媒體上。替代地,其可實施為一可傳輸信號。
本發明之另一態樣包括一種處理單元,該處理單元包括指令儲存器、經組態以執行一計算機程式之一執行單元及用於保存資料之資料儲存器,其中該指令儲存器保存如上文所定義之一計算機程式。
本發明之另一態樣包括一種包括呈一整合式封裝之一或多個晶粒之計算機,該計算機包括複數個處理單元,各處理單元具有用於保存一計算機程式之指令儲存器、經組態以執行該計算機程式之一執行單元及用於保存資料之資料儲存器,其中各處理單元之該指令儲存器保存如上文所定義之一計算機程式。
根據本發明之一態樣,提供一種產生多個程式以遞送一計算機化功能之計算機實施方法,各程式待在一計算機之一處理單元中執行,該計算機包括:複數個處理單元,各處理單元具有用於保存一本端程式之指令儲存器、用於執行該本端程式之一執行單元及用於保存資料之資料儲存器;一切換構體,其連接至各處理單元之一輸出介面且可藉由可由各處理單元控制之切換電路連接至各處理單元之一輸入介面;及一同步化模組,其可操作以產生一同步化信號,該方法包括:針對各處理單元產生包括一可執行指令序列之一本端程式;針對各處理單元判定各本端程式之指令執行之一相對時間,藉此分配給一個處理單元之一本端程式經排程以依相對於一同步化信號之一預定延遲執行一發送指令以在相對於該同步化信號之一預定傳輸時間傳輸至少一個資料封包,該至少一個資料封包之目
的地係一接受者處理單元但不具有目的地識別符,且分配給該接受者處理單元之一本端程式經排程以在一預定切換時間執行一切換控制指令以控制該切換電路以將其處理單元線連接至該切換構體以在一接收時間接收該資料封包。
以此方式,實施上述方法之編譯器可自動地將各自本端程式分配給一計算機中之各自處理單元(微磚),該計算機經構造以依一時間確定性方式操作。此一計算機之實例在本文中描述並稱為IPU[智慧處理單元],且進一步參考申請案號[PWF Ref:408525及408527],所述案之內容以引用方式併入本文中。
該方法適於由一編譯器來實施,該編譯器具有可操作以實行方法步驟之一處理器且經連接以接收表示該計算機化功能之一固定圖結構及保存延遲之一表,該等延遲使能夠針對各處理單元判定在執行該發送指令之一預定發送時間及該預定切換時間。
將明白,該傳輸時間及該切換時間係相對於該同步化信號,且不表示絕對時間。該同步化信號可指示一BSP協定中之一交換階段之開始,其中各計算階段之後接著一交換階段。
在所描述實施例中,在由一處理器時脈管控之IPU處理器時脈循環中量測所有時間,因此可判定一延遲為作為一同步化信號之後之預定數目個IPU時脈循環量測之一間隔。在一時間確定性IPU處理器晶片之操作中,一同步化事件發生於晶片上之一特定實體位置處且接著以一固定循環延遲將一確認傳輸至所有處理單元(微磚)。因此,各微磚在一不同時間接收其確認(其自身同步化信號),但將知道在發生該同步化事件之彼時間之前有多少個循環,因此可有效地使用同步化信號接收時間作為其他
微磚將執行後續發送之一時間參考。然而,自一微磚執行其自身同步化請求及同步化事件之總延遲對於該編譯器及因此對於微磚程式而言係未知的,因為其係資料相依的。在實踐中,處理器時脈不必特別規則且其速度可動態地改變以減輕功耗,因此處理器時脈可能不保持絕對時間。唯一重要的是,計算機之所有部件係由相同同步處理器時脈控制且因此對相同數目個時脈循環進行計數。重要的是相對延遲/時間而非絕對時間。
在該本端程式中,該發送指令可形成該交換階段之部分。該切換控制指令亦可形成該交換階段之部分。各本端程式亦可包含用於對資料實行計算以實施一計算階段之指令。
在意欲於執行該等本端程式之一計算機中,該等處理單元可具有相對於彼此之一固定位置關係,其中該判定步驟包括基於該計算機中之各對處理單元之間的位置關係判定一固定延遲。即,各對將包含經排程以執行一發送指令之一個處理單元及經排程以包含一切換控制指令之另一處理單元。此可為同時發送至彼此及自彼此接收之一對。
該等處理單元之間的固定位置關係可包括一列及行陣列,其中各處理單元具有識別其在該陣列中之位置之一識別符。
將理解,單個處理單元上之各本端程式可包含一發送指令及一切換控制指令。在一些情況下,該處理單元之切換控制指令可經設定以接收在一較早時間由相同處理單元上之一發送指令發送之一資料封包。
另一態樣提供一種具有一處理器之編譯器,該處理器經程式化以實行產生多個程式以遞送一計算機化功能之一方法,各程式待在一計算機之一處理單元中執行,該計算機包括:複數個處理單元,各處理單元具有用於保存一本端程式之指令儲存器、用於執行該本端程式之一執行
單元及用於保存資料之資料儲存器;一切換構體,其連接至各處理單元之一輸出介面且可藉由可由各處理單元控制之切換電路連接至各處理單元之一輸入介面;及一同步化模組,其可操作以產生一同步化信號,該方法包括:針對各處理單元產生包括一可執行指令序列之一本端程式;針對各處理單元判定各本端程式之指令執行之一相對時間,藉此分配給一個處理單元之一本端程式經排程以依相對於一同步化信號之一預定延遲執行一發送指令以在相對於該同步化信號之一預定傳輸時間傳輸至少一個資料封包,該至少一個資料封包之目的地係一接受者處理單元但不具有目的地識別符,且分配給該接受者處理單元之一本端程式經排程以在一預定切換時間執行一切換控制指令以控制該切換電路以將其處理單元線連接至該切換構體以在一接收時間接收該資料封包;該編譯器經連接以接收表示該計算機化功能之一固定圖結構及保存延遲之表,該等延遲使能夠針對各處理單元判定在執行該發送指令之一預定發送時間及該預定切換時間。
在下文所描述之實施例中,該切換電路包括一多工器,該多工器具有連接至其處理單元之一輸出線組及可連接至該切換構體之多個輸入線組。該等多工器定位於該計算機上之相對於其處理單元之預定實體位置處。該判定步驟可包括基於該等預定實體位置及隨之發生的傳送時間判定該切換控制指令到達該多工器及來自該多上器之一輸出資料封包到達其處理單元之該輸入介面之固定延遲。在此重要的是,相對於該發送指令判定一資料封包可載入至一接受者處理單元之一本端記憶體中之確切時間。
各本端程式可包含一同步化指令,該同步化指令向該同步化模組指示該處理單元處之一計算階段完成。該判定步驟可包括針對各處理單元判定晶片上之一同步化事件與該處理單元處接收回一同步化事件已發生之一確認之間的一固定延遲。在一時間確定性機器中,該編譯器無法知道自一監督程式執行其下一指令之延遲,因為此係資料相依於參與同步化之其他微磚。該編譯器應知道的是自該晶片上同步化事件(其在所有時間已執行同步化之後的某個時間發生)至在各微磚中執行下一監督程式指令之延遲集。確認(sync_ack)信號將在監督程式於同步化之後執行指令之前的某個短固定時間到達一微磚。
該判定步驟可包括存取一查找表,該查找表保存關於使能夠判定該預定發送時間及該預定切換時間之延遲之資訊。替代地,可由該編譯器基於關於該計算機之架構之資訊計算延遲。
該方法特別適用於該計算機化功能係一機器學習功能之情況,且該固定圖結構表示此一功能。該固定圖結構可包括複數個節點,其中各節點係由一本端程式中之一標碼串(codelet)表示。應理解,該標碼串係一指令序列。各本端程式可包括複數個標碼串,其中該等標碼串無需表示該圖之相同節點,即使其係在相同處理單元上執行。
另一態樣提供一種記錄於非暫時性媒體上且包括計算機可讀指令之計算機程式,該等計算機可讀指令在由一編譯器之一處理器執行時實施產生多個程式以遞送一計算機化功能之一方法,各程式待在一計算機之一處理單元中執行,該計算機包括:複數個處理單元,各處理單元具有用於保存一本端程式之指令儲存器、用於執行該本端程式之一執行單元及用於保存資料之資料儲存器;一切換構體,其連接至各處理單元之一輸
出介面且可藉由可由各處理單元控制之切換電路連接至各處理單元之一輸入介面;及一同步化模組,其可操作以產生一同步化信號,該方法包括:針對各處理單元產生包括一可執行指令序列之一本端程式;針對各處理單元判定各本端程式之指令執行之一相對時間,藉此分配給一個處理單元之一本端程式經排程以依相對於一同步化信號之一預定延遲執行一發送指令以在相對於該同步化信號之一預定傳輸時間傳輸至少一個資料封包,該至少一個資料封包之目的地係一接受者處理單元但不具有目的地識別符,且分配給該接受者處理單元之一本端程式經排程以在一預定切換時間執行一切換控制指令以控制該切換電路以將其處理單元線連接至該切換構體以在一接收時間接收該資料封包。
另一態樣提供一種計算機,其包括:複數個處理單元,各處理單元具有保存一本端程式之指令儲存器、執行該本端程式之一執行單元、用於保存資料之資料儲存器、具有一輸入線組之一輸入介面及具有一輸出線組之一輸出介面;一切換構體,其藉由各自輸出線組連接至該等處理單元之各者且可藉由各自輸入線經由可由各處理單元控制之切換電路連接至該等處理單元之各者;一同步化模組,其可操作以產生一同步化信號以控制該計算機在一計算階段與一交換階段之間切換,其中該等處理單元經組態以根據一共同時脈執行其本端程式,該等本端程式使得在該交換階段,至少一個處理單元執行來自其本端程式之一發送指令以在一傳輸時間將一資料封包傳輸至其輸出連接線組上,該資料封包之目的地係至少一個接受者處理單元但不具有目的地識別符,且在一預定切換時間,該接受者處理單元執行來自其本端程式之一切換控制指令以控制其切換電路以將其輸入線組連接至該切換構體,以在一接收時間接收該資料封包,由該共同
時脈相對於該同步化信號管控該傳輸時間、該切換時間及該接收時間。
在一些實施例中,該發送指令顯式定義一發送位址,該發送位址識別該資料儲存器中待自其發送該資料封包之一位置。
在一些實施例中,該發送指令中未顯式定義發送位址,且自由該發送指令隱式定義之一暫存器中定義之一發送位址傳輸該資料封包。
在一些實施例中,該本端程式包括用於更新該隱式暫存器中之該發送位址之一發送位址更新指令。
在一些實施例中,該傳輸時間係在執行該發送指令之一發送時間之後的一已知數目個時脈循環。
在一些實施例中,該切換電路包括一多工器,該多工器具有連接至其處理單元之一出口輸出線組及連接至該切換構體之多個輸入線組,藉此如由該處理單元之控制選擇該多個輸入線組之一者。
在一些實施例中,該接受者處理單元經組態以接收該資料封包且在由一記憶體指標識別之一記憶體位置處將該資料封包載入至該資料儲存器中。
在一些實施例中,在已將各資料封包載入至該資料儲存器中之後,該記憶體指標可自動遞增。
在一些實施例中,該接受者處理單元處之該本端程式包含更新該記憶體指標之一記憶體指標更新指令。
在一些實施例中,該發送指令識別數個待發送資料封包,其中各資料封包與一不同傳輸時間相關聯。
在一些實施例中,該等輸入線組之一者連接至一空輸入。
在一些實施例中,該接受者處理單元係相同於在一較早時間執行一發送指令之處理單元之處理單元,藉此該相同處理單元經組態以發送一資料封包且稍後接收彼資料封包。
在一些實施例中,多個處理單元經組態以執行各自發送指令以傳輸各自資料封包,且其中至少一些該等資料封包之目的地並非接受者處理單元。
根據另一態樣,提供一種計算一計算機中之一功能之方法,該計算機包括:複數個處理單元,各處理單元具有保存一本端程式之指令儲存器、用於執行該本端程式之一執行單元、用於保存資料之資料儲存器、具有一組輸入線之一輸入介面及具有一組輸出線之一輸出介面;一切換構體,其藉由各自組之輸出線連接至該等處理單元之各者且可藉由其各自輸入線經由可由各處理單元控制之切換電路連接至該等處理單元之各者;及一同步化模組,其可操作以產生一同步化信號以控制該計算機在一計算階段與一交換階段之間切換,該方法包括:該等處理單元在該計算階段根據一共同時脈執行其本端程式,其中在該交換階段中,至少一個處理單元執行來自其本端程式之一發送指令以在一傳輸時間將一資料封包傳輸至其輸出連接線組上,該資料封包之目的地係至少一個接受者處理單元但不具有目的地識別符,及在一預定切換時間,該接受者處理單元執行來自其本端程式之一切換控制指令以控制該切換電路以將其輸入線組連接至該切換構體,以在一接收時間接收該資料封包,由該共同時脈相對於該同步化信號管控該傳輸時間、該切換時間及該接收時間。
在一些實施例中,該功能以包括複數個互連節點之靜態圖
之形式提供,各節點係由該等本端程式之一標碼串實施。
在一些實施例中,在計算階段,各標碼串處理資料以產生一結果,其中一些該等結果對於一後續計算階段而言並非必需的且未由任何接受者處理單元接收。
在一些實施例中,在交換階段,經由該切換構體及該切換電路在處理單元之間傳輸該等資料封包。
在一些實施例中,各處理單元向該同步化模組指示其自身計算階段完成,且其中當所有處理單元已指示其自身計算階段完成時由該同步化模組產生該同步化信號以開始該交換階段。
在一些實施例中,該圖表示一機器學習功能。
在一些實施例中,在該交換階段,透過該切換構體以穿過一系列暫時性儲存器之一管線方式傳輸資料封包,各儲存器保存一資料封包達該共同時脈之一個循環。
2:單晶片處理器
3:時脈
4:微磚/處理器模組
4R:接受者微磚/接收微磚
4T:傳輸微磚/發送微磚
6a:陣列
6b:陣列
8a:晶片至主機鏈路
8b:晶片至主機鏈路
12:共用指令記憶體
14:共用執行管線/提取階段
16:共用執行管線/解碼階段
18:共用執行管線/執行階段
22:共用資料記憶體
24:線程排程器
26:情境
30:同步化
30a:晶片至晶片鏈路
30b:晶片至晶片鏈路
34:時間確定性切換構體/硬體互連/交換匯流排
36:同步化模組
50:交換階段
52:計算階段
60:圖
70:編譯器
72:本端程式
72a:標碼串
72b:標碼串
73:監督程式子程式
74:微磚資料
80:運算碼
82:欄位
84:位址欄位
86:發送控制欄位
90:運算碼欄位
92:延遲立即值
98:incoming_mux欄位
100:運算碼欄位
102:互連節點/待發送項欄位
104:鏈路/欄位
106:傳入狀態修改欄位
110:運算碼欄位
112:格式欄位
114:項欄位
116:欄位
118:控制欄位
119:旗標
120:交換控制欄位
122:欄位
140x:連接線
202:資料記憶體
210:多工器
210R:輸入多工器
214:多工器控制信號
218:廣播交換匯流排/資料輸出連接線
218s:資料輸出線
218T:交換匯流排
220x:輸入
224:exin介面
224R:ex_in介面
226:exout介面
226T:ex_out介面
228:exmux介面
228R:exmux介面
230:輸出
232:記憶體指標
R0:暫存器
R1:暫存器
S0:時間槽
S1:時間槽
S5:時間槽
為了更好地理解本發明及展示可如何實現本發明,現將藉由實例參考以下圖式。
圖1示意地繪示一單晶片處理器之架構;圖2係連接至切換構體之一微磚之一示意圖;圖3係繪示一BSP協定之一圖式;圖4係展示一時間確定性交換中之兩個微磚之一示意圖;圖5係繪示一時間確定性交換之一示意時序圖;圖6係一機器智慧圖之一項實例;圖7係繪示用於產生時間確定性程式之一編譯器之操作之
一示意架構;及圖8至圖11繪示在一時間確定性架構中可用之不同指令之指令格式。
圖1示意地繪示一單晶片處理器2之架構。處理器在本文中稱為IPU(智慧處理單元)以表示其對機器智慧應用之適應性。在一計算機中,單晶片處理器可使用晶片上之鏈路連接在一起(如稍微所論述),以形成一計算機。本描述側重於單晶片處理器2之架構。處理器2包括稱為微磚之多個處理單元。在一項實施例中,存在組織成陣列6a、6b(本文中稱為「北」及「南」)之1216個微磚。在所描述實例中,各陣列具有8行76個微磚(事實上出於冗餘目的,通常將存在80個微磚)。將明白,本文中所描述之概念擴展至數個不同實體架構,在此給出一項實例以協助理解。晶片2具有配置於晶片2之「西」邊緣上之兩個晶片至主機鏈路8a、8b及4個晶片至晶片鏈路30a、30b。晶片2自一主機(未展示)以待由晶片2處理之輸入資料之形式接收工作,該主機經由卡片至主機鏈路之一者連接至該晶片。晶片可藉由沿晶片之「東」側配置之進一步6個晶片至晶片鏈路30a、30b一起連接至卡片中。一主機可存取一計算機,該計算機取決於來自主機應用程式之工作負載而構造為如本文中所描述之一單晶片處理器2或多個互連單晶片處理器2之一群組。
晶片2具有控制晶片活動之時序之一時脈3。該時脈連接至所有晶片電路及組件。晶片2包括所有微磚及鏈路藉由連接線組所連接至之一時間確定性切換構體34,該切換構體係無狀態的,即,不具有程式可見狀態。各連接線組係端對端固定的。線係管線的。在此實施例中,一組
包括32個資料線加上控制線,例如,一有效位元。各組可攜帶一32位元資料封包,但在本文中應注意,字詞「封包」表示代表一資料之一位元集(本文中有時稱為資料項),可能具有一或多個有效位元。「封包」既不具有允許唯一地識別一所欲接受者之標頭或任何形式之目的地識別符,亦不具有封包結束資訊。代替地,封包各表示輸入至一微磚或自一微磚輸出之一數值或邏輯值。各微磚具有其自身本端記憶體(稍後描述)。微磚不共用記憶體。切換構體構成僅連接至多工器及微磚之一交叉連接線組(如稍後所描述)且不保存任何程式可見狀態。切換構體被視為無狀態且不使用任何記憶體。微磚之間的資料交換係如本文中所描述依一時間確定性基礎進行。一管線連接線包括在將資料釋放至下一儲存器之前保存資料達一時脈循環之一系列暫時性儲存器,例如,鎖存器或正反器。沿線行進之時間係由此等暫時性儲存器判定,各暫時性儲存器在任何兩點之間的一路徑中耗盡一時脈循環之時間。
圖2繪示根據本發明之實施例之一實例微磚4。在該微磚中,多個線程交錯通過單個執行管線。微磚4包括:複數個情境26,各情境26經配置以表示複數個線程之一不同各自者之狀態;一共用指令記憶體12,其為複數個線程所共有;一共用資料記憶體22,其亦為複數個線程所共有;一共用執行管線14、16、18,其同樣為複數個線程所共有;及一線程排程器24,其用於排程複數個線程以透過共用管線以一交錯方式執行。線程排程器24在圖式中由時槽序列S0...S5示意地表示,但在實踐中係管理線程關於其時槽之程式計數值之一硬體機構。該執行管線包括一提取階段14、一解碼階段16、及包括一執行單元(EXU)及一載入/儲存單元(LSU)之一執行階段18。情境26之各者包括用於表示各自線程之程式狀態
之一各自暫存器組R0、R1......。
在線程排程器24之控制下,提取階段14連接至待自指令記憶體12執行之提取指令。線程排程器24經組態以控制提取階段14以自本端程式提取指令以在各時槽中執行,如下文將更詳細地論述。
提取階段14可存取當前分配給一時槽之線程之各者之一程式計數值(PC)。針對一給定線程,提取階段14自指令記憶體12中之下一位址提取彼線程之下一指令,如由該線程之程式計數值所指示。應注意,如本文中所提及之一指令意謂由一運算碼及零個或多個運算元組成之一機器碼指令,即,計算機指令集之基本指令之一者之一例項。亦應注意,載入至各微磚中之程式係由一處理器或編譯器判定以基於所支援之機器智慧模型之圖分配工作。
接著,提取階段14將所提取指令傳遞至解碼階段16以進行解碼,且接著解碼階段16將所解碼指令之一指示連同該指令中指定之當前情境之任何運算元暫存器之所解碼位址一起傳遞至執行階段18,以便執行該指令。
在本實例中,線程排程器24根據一循環(round-robin)方案使線程交錯,藉此在該方案之各回合內,該回合分成一時槽序列S0、S1、S2、S3,各時槽用於執行一各自線程。通常,各槽係一個處理器循環長且不同槽之大小均勻(但在所有可能實施例中不一定如此)。此型樣接著重複,各回合包括時槽之各者之一各自例項(在實施例中每次以相同順序,但在所有可能實施例中同樣不一定如此)。因此,應注意,如本文中所提及之一時槽意謂序列中之重複分配位置,而非序列之一給定重複中之時槽之一特定例項。在所繪示實施例中,存在八個時槽,但其他數目係可能
的。各時槽與用於管理一執行線程之情境之硬體資源(例如暫存器)相關聯。
情境26之一者(標記為SV)經保留用於一特殊功能,以表示一「監督程式」(SV)之狀態,SV之職責係協調「工作程式」線程之執行。監督程式可實施為組織為可並發地運行之一或多個監督程式線程之一程式。監督程式線程亦可負責執行稍後所描述之屏障同步化或可負責在微磚上及微磚外以及進出本端記憶體交換資料,使得在計算之間其可在工作程式線程之間共用。線程排程器24經組態以當程式作為整體起始時,藉由將監督程式線程分配給所有時槽而開始,即,因此監督程式SV開始在所有時槽S0...S5中運行。然而,監督程式線程具備用於在某個後續點(即刻或在執行一或多個監督程式任務之後)將監督程式線程正在其中運行之槽之各者暫時放棄給工作程式線程之一各自者之一機制,C0、C1表示一工作程式線程已被分配至之槽。此係藉由執行一放棄指令之監督程式線程來達成,本文中藉由實例稱為「RUN(運行)」。在實施例中,此指令採用兩個運算元:指令記憶體12中之一工作程式線程之一位址及資料記憶體22中之彼線程之一些資料之一位址:RUN task_addr,data_addr
各工作程式線程係意欲於表示圖中之一頂點且以原子方式執行之一標碼串。即,該工作程式線程消耗之所有資料在發動時可用且該工作程式線程產生之所有資料對其他線程不可見直至其退出。該工作程式線程運行至完成(除了誤差條件)。資料位址可指定待由標碼串作用之一些資料。替代地,放棄指令可僅採用指定標碼串位址之單個運算元,且資料位址可包含於標碼串之程式碼中;或單個運算元可指向指定標碼串位址及
資料位址之一資料結構。標碼串可彼此並發地且獨立地運行。
無論哪種方式,此放棄指令(「RUN」)作用於線程排程器24以便將當前時槽(即,其中執行此指令之時槽)放棄給由運算元指定之工作程式線程。應注意,在放棄指令中隱式放棄在其中執行此指令之時槽(在機器碼指令之情境下隱式意謂著其無需一運算元來指定此,隱式地自運算碼本身理解)。因此,被捨棄之槽係監督程式在其中執行放棄指令之槽。或換言之,監督程式係在其捨棄之相同空間中執行。監督程式指明「在此時槽運行此標碼串」,且接著自那時起,該槽由相關工作程式線程(暫時)擁有。應注意,當一監督程式使用一槽時,其不使用與彼槽關聯之情境,但使用其自身情境SV。
監督程式線程SV在時槽之各者中執行一類似操作,以將所有其槽C0、C1捨棄給工作程式線程之不同各自者。一旦監督程式完成最後一槽,監督程式便暫停執行,因為其不具有執行之槽。應注意,監督程式可不捨棄所有其槽,其可保留一些槽用於自身運行。
當監督程式線程判定是時候運行一標碼串時,監督程式線程使用放棄指令(「RUN」)來將此標碼串分配給監督程式線程在其中執行「RUN」指令之槽。
時槽C0、C1中之工作程式線程之各者繼續執行其一或多個計算任務。在其(若干)任務結束時,工作程式線程接著將工作程式線程在其中運行之時槽交還給監督程式線程。
此係藉由工作程式線程執行一退出指令(「退出(EXIT)」)來達成。在一項實施例中,EXIT指令採用至少一個運算元且較佳地僅採用單個運算元(退出狀態(例如,二進位值))以用於程式設計者所期望之任
何目的以在結束時指示各自標碼串之一狀態。
EXIT exit_state
在一項實施例中,EXIT指令作用於排程器24,使得在其中執行EXIT指令之時槽返回給監督程式線程。接著,監督程式線程可執行一或多個後續監督程式任務(例如,屏障同步化及/或記憶體中之資料移動以促進工作程式線程之間的資料交換),及/或繼續執行另一放棄指令以將一新工作程式線程(W4等)分配給所討論槽。因此,再次應注意,指令記憶體12中之線程之總數目可大於桶形線程處理單元10任一次可交錯之數目。監督程式線程SV之作用係排程來自指令記憶體12之哪個工作程式線程W0...Wj待在總體程式之哪個階段執行。
在另一實施例中,EXIT指令無需定義一退出狀態。
此指令作用於線程排程器24,使得將在其中執行該指令之時槽返回給監督程式線程。接著,監督程式線程可執行一或多個監督程式後續任務(例如,屏障同步化及/或資料交換),及/或繼續執行另一放棄指令,等等。
如上文簡要提及,在晶片中之微磚之間交換資料。各晶片操作一整體同步並行協定,包括一計算階段及一交換階段。該協定例如在圖3中繪示。圖3中之左手側圖式表示一計算階段,其中各微磚4處於其中有狀態標碼串在本端記憶體(12、22)上執行之一階段。儘管在圖3中,微磚4被展示為配置成一圓,但此僅用於解釋目的且不反映實際架構。
在計算階段之後,存在由箭頭30表示之一同步化。為達成此目的,在處理器之指令集中提供一SYNC(同步化)指令。該SYNC指令具有致使監督程式線程SV等待直至所有當前正在執行之工作程式W藉由
一EXIT指令退出之效應。在實施例中,該SYNC指令採用一模式作為一運算元(在實施例中,其係唯一運算元),該模式指定SYNC是否僅相對於僅在相同處理器模組4(例如,相同微磚)上本端運行之彼等工作程式線程本端地運行,或代替地其是否將跨多個微磚或甚至跨多個晶片應用。
BSP本身在此項技術中係已知的。根據BSP,各微磚4在一交替循環中執行一計算階段52及一交換(有時稱為通信或訊息傳遞)階段50。由微磚執行指令執行計算階段及交換階段。在計算階段52期間,各微磚4在微磚上本端地執行一或多個計算任務,但不將此等計算之任何結果傳達給任何其他微磚4。在交換階段50中,允許各微磚4將來自前一計算階段之一或多個計算結果交換(傳達)至群組中之一或多個其他微磚及/或自群組中之一或多個其他微磚交換(傳達)來自前一計算階段之一或多個計算結果,但尚未執行對另一微磚4上執行之一任務具有一潛在相依性之任何新計算或另一微磚4上之一任務可能對其具有一相依性之任何新計算(不排除可在交換階段執行其他操作,諸如內部控制相關操作)。此外,根據BSP原理,一屏障同步化置於自計算階段52過渡至交換階段50之接合點或自交換階段50過渡至計算階段52之接合點或兩者處。即,以下任一情況:強制執行(a)所有微磚4需要在允許群組中之任何微磚繼續至進入下一交換階段50之前完成其各自計算階段52,或(b)群組中之所有微磚4需要在允許群組中之任何微磚繼續至下一計算階段52之前完成其各自交換階段50,或(c)此等條件兩者。接著,可在多次重複中重複此交換及計算階段序列。在BSP術語中,交換階段及計算階段之各重複在本文中稱為「超級步驟(superstep)」,此與BSP之一些先前描述中之使用一致。本文中應注
意,術語「超級步驟」有時在此項技術中用來表示交換階段及計算階段之各者。
執行階段18之執行單元(EXU)經組態以回應於SYNC指令之運算碼,在由晶片上(微磚間)運算元驗證時,致使在其中執行「SYNC晶片」之監督程式線程暫停,直至陣列6中之所有微磚4已完成運行工作程式。此可用來對下一BSP超級步驟實施一屏障,即,在晶片2上之所有微磚4已通過該屏障之後,交叉微磚程式作為整體可繼續至下一交換階段50。
各微磚向一同步化模組36指示其同步化狀態。一旦已確立各微磚準備好發送資料,同步化程序30便致使系統進入圖3之右手側上所展示之一交換階段。在此交換階段,資料值在微磚之間移動(事實上在一記憶體至記憶體資料移動中係在微磚之記憶體之間)。在交換階段,不存在可能在微磚程式之間引發並發危險之計算。在交換階段,各資料沿連接線移動,在該等連接線上,資料自一傳輸微磚離開至一或多個接受者微磚。在各時脈循環,資料以一管線方式沿其路徑(儲存器至儲存器)移動一特定距離。當自一微磚發佈一資料時,不發佈識別一接受者微磚之一標頭。代替地,接受者微磚知道其將在一特定時間預期來自一特定傳輸微磚之一資料。因此,本文中所描述之計算機具時間確定性。各微磚操作一程式,該程式由程式設計者或藉由一編譯器練習分配給該微磚,其中該程式設計者或編譯器功能知道一特定微磚在一特定時間將傳輸什麼及一接受者微磚在一特定時間需要接收什麼。為了達成此目的,SEND(發送)指令包含於由處理器在各微磚上執行之本端程式中,其中SEND指令之執行時間相對於在計算機中對其他微磚上執行之其他指令之時序預定。此將在後文
更詳細地描述,但首先將描述一接受者微磚可藉由其在一預定時間接收一資料之機制。各微磚4與其自身多工器210相關聯:因此,晶片具有1216個多工器。各多工器具有1216個輸入,各輸入為32位元寬(加上(視情況)一些控制位元)。各輸入連接至切換構體34中之一各自連接線140x組。該切換構體之連接線亦自各微磚(稍後描述之一廣播交換匯流排)連接至一資料輸出連接線218組,因此存在1216個連接線組,在此實施例中該等連接線組在跨晶片之一方向上延伸。為了便於繪示,單個加粗線140sc組被展示為連接至來自南陣列6b中之圖2中未展示之一微磚之資料輸出線218s。此線組標記為140x以指示其係數個交叉線1400至1401215組之一者。現自圖2可見,將明白,當多工器210切換至標記為220x之輸入時,彼多工器210接著將連接至交叉線140x且因此連接至來自南陣列6b之微磚(圖2中未展示)之資料輸出線218s。若控制該多工器在一特定時間切換至彼輸入(220sc),則連接至該連接線140x組之資料輸出線上接收之資料將在一特定時間出現於多工器210之輸出230處。此後該資料將以一特定延遲到達微磚4,該延遲取決於多工器與微磚相隔之距離。由於多工器形成切換構體之部分,因此自微磚至多工器之延遲可取決於微磚之位置而變化。為了實施切換,在微磚上執行之本端程式包含切換控制指令(PUTi),該等切換控制指令(PUTi)致使發佈一多工器控制信號214以控制與彼微磚相關聯之多工器以在預期於微磚處接收一特定資料之時間之前的一特定時間切換其輸入。在交換階段,使用切換構體切換多工器且在微磚之間交換封包(資料)。自此說明可明白,切換構體不具有狀態,各資料之移動係由各多工器之輸入切換至之特定線組預定。
在交換階段,啟用一全微磚至全微磚通信。交換階段可具
有多個循環。各微磚4控制其自身唯一輸入多工器210。可選擇來自晶片中之任何其他微磚或來自連接鏈路之一者之傳入訊務。應注意,一多工器可經設定以接收一「空」輸入,即,在彼特定交換階段無來自任何其他微磚之輸入。選擇可在一交換階段逐個循環地改變;其不必始終恆定。取決於選定鏈路,資料可在晶片上交換,或自晶片交換至晶片或自晶片交換至主機。本申請案主要涉及一晶片上之微磚間通信。為了在晶片上執行同步化,將少量管線信號自所有微磚提供給晶片上之一同步化控制器36且一管線同步化信號自該同步化控制器廣播回給所有微磚。在一項實施例中,管線信號係1位元寬之菊鍊AND/OR信號。藉由其達成微磚之間的同步化之一種機制係上文所提及或下文所描述之SYNC指令。可利用其他機制:重要的是,所有微磚可在晶片之一計算階段與晶片之一交換階段之間同步化(圖3)。SYNC指令觸發以下功能性以在微磚4上之專用同步化邏輯中及在同步化控制器36中觸發。同步化控制器36可在硬體互連34中或(如所展示)在一單獨晶片上模組中實施。微磚上同步化邏輯及同步化控制器36兩者之此功能性係在專用硬體電路中實施,使得一旦執行SYNC晶片,其餘功能性便繼續進行而不為此執行進一步指令。
首先,微磚上同步化邏輯致使所討論微磚4上之監督程式之指令發佈自動暫停(致使提取階段14及排程器24暫停發佈監督程式之指令)。一旦本端微磚4上之所有未解決(outstanding)工作程式線程已執行一EXIT,同步化邏輯便自動將一同步化請求「sync_req」發送至同步化控制器36。接著,本端微磚4繼續等待,其中監督程式指令發佈暫停。亦在陣列6中之其他微磚4之各者上實施(各微磚包括其自身同步化邏輯之例項)一類似程序。因作,在某一時刻,一旦當前計算階段52中之所有最終工作
程式已在陣列6中之所有微磚4上退出,同步化控制器36便將已自陣列6中之所有微磚4接收一各自同步化請求(sync_req)。直至那時,回應於自相同晶片2上之陣列6中之每個微磚4接收sync_req,同步化控制器36將一同步化確認信號「sync_ack」發送回至微磚4之各者上之同步化邏輯。直至此時,微磚4之各者已暫停其監督程式指令發佈,等待同步化確認信號(sync_ack)。在接收sync_ack信號時,微磚4中之同步化邏輯自動對彼微磚4上之各自監督程式線程之監督程式指令發佈取消暫停。監督程式接著自由地繼續在一後續交換階段50經由互連34與其他微磚4交換資料。
較佳地,經由將各微磚4連接至互連34中之同步化控制器36之一或多個專用同步化線,分別將sycn_req及sync_ack信號傳輸至同步化控制器且自同步化控制器接收sycn_req及sync_ack信號。
現將更詳細地描述微磚之連接結構。
各微磚具有三個介面:一exin介面224,其將資料自切換構體34傳遞至微磚4;一exout介面226,其透過廣播交換匯流排218將資料自微磚傳遞至切換構體;及一exmux介面228,其將控制多工器信號214(mux-select)自微磚4傳遞至其多工器210。
為了確保各個別微磚在適當時間執行SEND指令及切換控制指令以傳輸及接收正確資料,將個別程式分配給計算機中之個別微磚之程式設計者或編譯器需要滿足交換排程要求。此功能係由需要知道以下交換時序(BNET)參數之一交換排程器實行。為了理解該等參數,圖4中展示圖2之一簡化版本。圖4亦展示一接受者微磚以及一傳輸微磚。
I. 各微磚之相對SYNC確認延遲BNET_RSAK(TID)。TID係保存於稍後所描述之一TILE_ID暫存器中之微磚識別符。此係始終大於或等於0之循環數目,指示各微磚何時自同步化控制器36接收關於最早接收微磚之確認信號。此可自微磚ID計算,應注意,微磚ID指示彼微磚之晶片上之特定位置,且因此反映實體距離。圖4展示一個傳輸微磚4T及一個接受者微磚4R。儘管僅示意地展示且未按比例繪製,但微磚4T被指示為更接近於同步化控制器且微磚4R被指示為更遠,後果係微磚4T之同步化確認延遲將短於微磚4R。針對同步化確認延遲,一特定值將與各微磚相關聯。此等值可保存於例如一延遲表中,或可每次基於微磚ID即時計算。
II. 交換多工器控制迴路延遲BNET_MXP(接收微磚之TID)。此係發佈改變一微磚之輸入多工器選擇之一指令(PUTi-MUXptr)與相同微磚由於新多工器選擇可為儲存於記憶體中之交換資料發佈一(假想)載入指令之最早點之間的循環數目。查看圖4,此延遲包括控制信號自接受者微磚4R之exmux介面228R至其多工器210R之延遲及自該多工器之輸出至資料輸入exin介面224之線之長度。
III. 微磚至微磚交換延遲BNET_TT(發送微磚之TID、接收微磚之TID)。此係在一個微磚上發佈之一SEND指令與接收微磚可發佈指向其自身記憶體中之發送值之一(假想)載入指令之最早點之間的循環數目。此已藉由存取諸如已論述之一表或藉由計算自發送及接收微磚之微磚ID判定。再次查看圖4,此延遲包括資料自傳輸微磚4T從其ex_out介面226T沿其交換匯流排218T行進至切換構體34且接著經由接收微磚4R處之輸入多工器210R行進至接收微磚之ex_in介面224R
所花費之時間。
IV. 交換訊務記憶體指標更新延遲BNET_MMP()。此係發佈改變一微磚之交換輸入訊務記憶體指標之一指令(PUTi-MEMptr)與相同微磚由於新指標可為儲存於記憶體中之交換資料發佈一(假想)載入指令之最早點之間的循環數目。此係少、固定數目個循環。記憶體指標尚未論述,但在圖2中被展示為以232參考。記憶體指標充當指向資料記憶體202之一指標且指示在何處儲存來自ex_in介面224之傳入資料。此將在稍後更詳細地描述。
圖5更深入地展示交換時序。圖4之左手側係自0運行至30之IPU時脈循環。發送微磚4T上之動作發生在IPU時脈循環0與9之間,自發佈一發送指令(SEND F3)開始。在IPU時脈循環10至24中,資料一路通過管線穿過切換構體34。
查看IPU時脈循環11中之接收微磚4R,執行改變微磚輸入多工器選擇之一PUTi指令:PUTi-MXptr(F3)。在圖5中,此PUTi指令標記為「PUTi INCOMING MUX(F3)」。
在循環18中,執行記憶體指標指令PUTi-MEMptr(F3),從而允許ITU時脈循環25中之一載入指令。在圖5中,此PUTi指令標記為「PUTi INCOMING ADR(F3)」。
在發送微磚4t上,IPU時脈循環1、3及5標記為「Transport()」。此係在一SEND指令之發佈與exout介面上之SEND指令之資料之顯現之間的一內部微磚延遲,F4、E1、E3等表示自較早SEND指令運送至exout介面之資料。IPU時脈循環2經分配以形成一SEND指令之一位址EO。應注意,此係待從其中提取EO之位置,而非其目的地位址。在IPU
時脈循環4中,執行一記憶體巨集以自記憶體提取E2。在IPU時脈循環6中,對E4執行一奇偶性校驗。在IPU時脈循環7中,執行一MUX輸出指令以發送E5。在IPU時脈循環8中,編碼E6且在IPU時脈循環中輸出E7。
在交換構體34中,IPU時脈循環10至24標記為「交換管線階段」。在各循環中,一資料沿管線(在暫時性儲存器之間)移動「一步」。
循環25至28表示接受者微磚4R在exin介面處接收一資料之間的延遲(參見Exc之Mem Macro(E2)),而循環25至29表示在exin介面處接收一資料與將該資料載入至LD之記憶體(參見Mem Macro(E2))中之間的延遲。其他功能可在彼延遲中實行,參見最早LD(F3)、Reg file rd(F4)、form adds(EO)、Transport(E1)。
簡言之,若接收微磚4R之處理器想要作用於作為傳輸微磚4T上之一程序之輸出之一資料(例如,F3),則傳輸微磚4T必須在一特定時間(例如圖5中之IPU時脈循環0)執行一SEND指令[SEND(F3)],且接收微磚必須執行一切換控制指令PUTi EXCH MXptr(如在IPU時脈循環11中)達關於在傳輸微磚上執行SEND指令[SEND(F3)]之一特定時間。此將確保資料及時到達接受者微磚以在IPU循環25中載入[最早LD(F3)]用於在接受者微磚處執行之一標碼串。
應注意,一接受者微磚上之接收程序無需如同指令PUTi MEMptr般涉及設定記憶體指標。代替地,記憶體指標232(圖2)在exin介面224處接收各資料之後自動遞增。接著僅將所接收資料載入至下一可用記憶體位置中。然而,改變記憶體指標之能力使接受者微磚能夠更改寫入資料之記憶體位置。所有此可由將個別程式寫入至個別微磚,使得其恰當地通信之編譯器或程式設計者判定。此導致一內部交換(晶片上之內部交
換)之時序完全係時間確定性的。可由交換排程器使用此時間確定性來高度最佳化交換序列。
圖6繪示本文中所揭示之處理器架構之一實例應用,即,一機器智慧應用。
如先前所提及且如熟習機器智慧技術者將熟悉,機器智慧自一學習階段開始,其中機器智慧演算法學習一知識模型。該模型可表示為互連節點102及鏈路104之一圖60。節點及鏈路可稱為頂點及邊緣。該圖中之各節點102具有一或多個輸入邊緣及一或多個輸出邊緣,其中一些節點102之一些輸入邊緣係一些其他節點之輸出邊緣,由此將節點連接在一起以形成該圖。此外,一或多個節點102之一或多個輸入邊緣作為整體形成至該圖之輸入,且一或多個節點102之一或多個輸出邊緣作為整體形成該圖之輸出。各邊緣104通常以一張量(n維矩陣)之形式傳達一值,此等分別形成在其輸入及輸出邊緣上形成提供給節點102及自節點102提供之輸入及輸出。
各節點102表示如在其輸入邊緣或若干輸入邊緣上接收之其一或多個輸入之一功能,其中該功能之結果係在輸出邊緣或若干輸出邊緣上提供之(若干)輸出。此等結果有時稱為啟動。各功能係由一或多個各自參數(有時稱為權重,但其不一定係乘法權重)參數化。通常,由不同節點102表示之功能可為不同形式之功能及/或可藉由不同參數來參數化。
此外,各節點功能之一或多個參數之各者之特徵在於一各自誤差值。此外,一各自誤差條件可與各節點102之(若干)參數之(若干)誤差相關聯。針對表示由單個誤差參數參數化之一功能之一節點102,該誤差條件可為一簡單臨限值,即,若誤差在指定臨限值內,則滿足該誤差條
件,但若誤差超出該臨限值,則不滿足該誤差條件。針對藉由一個以上各自參數參數化之一節點102,彼節點102之誤差條件可能更複雜。例如,僅當彼節點102之參數之各者落入各自臨限值內時,才可滿足該誤差條件。作為另一實例,可定義組合相同節點102之不同參數之誤差之一組合度量,且可在該組合度量之值落入一指定臨限值內之條件下滿足該誤差條件,否則若該組合度量之值超出該臨限值,則不滿足該誤差條件(或反之亦然,此取決於該度量之定義)。無論該誤差條件如何,此給定節點之(若干)參數之誤差是否低於一特定可接受性位準或程度之一度量。
在學習階段,演算法接收經驗資料,即,表示至圖之輸入之不同可能組合之多個資料點。隨著接收越來越多之經驗資料,演算法基於經驗資料逐漸調諧圖中之各種節點102之參數以嘗試最小化參數之誤差。目標係找到參數之值,使得圖之輸出儘可能接近於一所期望結果。由於圖整體傾向於此一狀態,因此計算被稱作收斂。
例如,在一監督方法中,輸入經驗資料採用訓練資料之形式,即,對應於已知輸出之輸入。對於各資料點,演算法可調諧參數,使得輸出更緊密地匹配給定輸入之已知輸出。在隨後預測階段,接著可使用圖將一輸入查詢映射至一近似預測輸出(或反之亦然,前提是進行一推斷)。其他方法亦係可能的。例如,在一無監督方法中,不存在每個輸入資料有一參考結果之概念,且代替地使機器智慧演算法在輸出資料中識別其自身結構。或在一強化方法中,演算法針對輸入經驗資料中之各資料點嘗試至少一個可能輸出,且被告知此輸出是否係正或負(且可能正或負之一程度),例如贏或輸,或獎勵或懲罰,或諸如此類。在諸多嘗試中,演算法可逐漸調諧圖之參數以能夠預測將導致一正結果之輸入。用於學習一
圖之各種方法及演算法對於熟習機器學習技術者而言將係已知的。
根據本文中所揭示之技術之一實例性應用,各工作程式線程經程式化以執行與一機器智慧圖中之節點102之一各自個別者相關聯之計算。在此情況下,節點102之間的邊緣104對應於線程之間的資料交換,其中至少一些資料可涉及在微磚之間的交換。
圖7係繪示一編譯器70之功能之一示意圖。該編譯器接收此一圖60且將圖中之功能編譯成多個標碼串,該等標碼串包含至圖7中標記為72之本端程式中。各本端程式經設計以載入至計算機之一特定微磚中。各程式包括各由一指令序列形成之一或多個標碼串72a、72b...加上一監督程式子程式73。該編譯器產生程式,使得其彼此即時鏈接,即,其係時間確定性的。為此,該編譯器存取包含微磚識別符之微磚資料74,該等微磚識別符指示微磚之位置及因此編譯器需要理解以便產生本端程式之延遲。延遲已在上文提及且可基於微磚資料來計算。替代地,微磚資料可併入一資料結構,其中此等延遲可透過一查找表獲得。
現在接著描述新穎指令,其已作為本文中所定義之計算機架構之指令集之部分被開發。圖8展示一32位元之SEND指令。一SEND指令指示來自微磚記憶體之一資料傳輸。該SEND指令致使儲存於一微磚之本端記憶體22中之一特定位址處之一或多個資料在一微磚之exout介面處傳輸。各資料(在指令中稱為「項」)可為一或多個字組長。一SEND指令作用於一個字組或多個字組以實施一發送功能。該SEND指令具有一運算碼80、表示一訊息計數之一欄位82、待以一或多個封包之形式自一位址欄位84中表示之SEND位址發送之項之數目。欄位84定義本端記憶體中之位址,項待以添加至儲存於一基址暫存器中之一基值之一立即值之形式自
該位址發送。該SEND指令亦具有一發送控制欄位86(SCTL),該發送控制欄位86表示字組大小,選擇為4個及8個位元組之一者。該封包中不具有目的地識別符:換言之,在該指令中未唯一地識別待接收項之接受者微磚。該發送功能致使來自發送位址之指定數目個資料項自本端記憶體被存取且置於微磚之ex_out介面處以在下一時脈循環傳輸。在SEND指令之另一變體中,待自其發送項之位址可為隱式的;取自基址暫存器中之基值及一傳出差量(delta)暫存器中之一差量值。可基於一先前SEND指令中之資訊設定該差量值。代替所欲接受者微磚之一唯一識別符,編譯器已配置正確接受者微磚將在正確時間切換其(若干)本端多工器以接收如本文中已描述之資料(資料項)。應注意,在一些情況下,一所欲接受者微磚可能係傳輸微磚本身。
為此,提供一切換控制功能,如上文所描述。圖9繪示執行此功能之一PUT-i-MUX指令。一運算碼欄位90將該指令定義為一PUT-i-MUX指令。可由一延遲立即值92指定一延遲週期。此延遲值可用來替換「no op」指令,且係最佳化程式碼壓縮之一方式。此指令在被執行時在incoming_mux欄位98中定義多工器210之哪個輸入待經設定以「監聽」已自另一微磚發送之項。為了緊湊起見,此多工器控制功能可與上文所定義之一發送功能組合在單個指令中,如圖10中所展示。應注意,在發送功能(其致使微磚充當一傳輸微磚)與切換控制功能(其係在微磚充當一接受者微磚時之一功能)之間不存在關係,惟其可在相同微磚上之單個執行循環中執行除外。
圖10係一「合併」指令之一實例。在此情境下,一「合併」指令意謂定義可在一個微磚上同時(在一個執行循環中)實行之兩個或
更多個功能之一指令。
圖10繪示一種形式之「合併」發送指令,其中一發送功能與一第二功能組合,該第二功能可修改保存於微磚處之暫存器中之狀態。一個功能將改變彼微磚處接收之資料之記憶體指標。另一功能將設定傳入MUX。PUTi_MEMptr功能啟用本端記憶體中之一記憶體位置,在該記憶體位置處將載入由微磚接收之下一資料以進行識別。此功能可由一專用「接收」指令來實行,但其功能未啟用接收一資料而是修改記憶體指標。事實上,無需執行特定指令以在一微磚處接收資料。在exin介面之控制下,到達exin介面之資料將載入至由記憶體指標識別之下一記憶體位置中。圖10之指令具有運算碼欄位100及數個待發送項欄位102。傳入狀態修改欄位106中之立即值被寫入至由欄位104指定之一交換組態狀態暫存器。在一種形式中,狀態修改欄位106可寫入一傳入差量以計算記憶體指標待設定至之接收位址。在另一形式中,將交換組態狀態與設定多工器輸入之傳入MUX值一起寫入。
針對此形式之「合併」指令,發送功能使用自儲存於在指令中係隱式之一或多個暫存器中之值判定之一發送位址。例如,可自基址暫存器及差量暫存器判定發送位址。
圖11展示一「倍寬」指令,稱為交換指令(EXCH)。此指令起始自微磚記憶體中之一所指示位址之一資料傳輸且設定傳入交換組態狀態(多工器及/或用於接收資料之記憶體指標)。EXCH指令之獨特之處在於其後緊接一線內32位元有效負載,該線內32位元有效負載定位於緊隨指令之後之記憶體位置處。EXCH指令具有表示一交換指令EXCH之一運算碼欄位110。該有效負載具有一「coissue(共同發佈)」旗標119。
EXCH指令包含格式欄位112,該格式欄位112具有指定傳入格式資料寬度(32位元或64位元)之單個位元。資料寬度可能對多工器線之設定具有影響(其經單個或成對設定)。一項欄位114定義致使其由交換指令發送之項之數目。此等項係自使用欄位116中之立即值計算之一發送位址發送,如在圖9之發送指令中。此欄位中之值被加至基址暫存器中之值。
元件符號118表示定義發送資料之字組大小之一控制欄位。有效負載包含一切換控制欄位120,該切換控制欄位120充當傳入多工器之一切換控制,如上文結合圖9所描述。符號122表示有效負載之一欄位,該欄位定義用於計算待儲存傳入資料之位址之一傳入差量,如上文結合圖10之指令所描述。圖11之64位元寬交換指令EXCH可在每次時脈循環執行且因此允許同時:
‧自一特定位址發送
‧更新傳入多工器
‧更新傳入位址
因此,可在單個指令中編碼任何交換排程。圖8、圖9及圖10之指令執行類似功能,但因為其僅32位元長,所以可用來最小化各微磚之本端記憶體中之交換碼之大小。當建構本端程式72之標碼串時,在編譯器70處做出關於在任何特定情境下使用哪個指令之決定。
接著係用來支援上述指令之關鍵暫存器及其語義之一清單。此等暫存器形成各微磚上之暫存器檔案之部分。
TILE_ID 保存彼微磚之一唯一識別符
INCOMING_MUX 保存傳入訊息之源微磚之微磚ID,其用
來選擇與接收微磚相關聯之多工器之「監聽」輸入。
INCOMING_DELTA 此保存一自動遞增值以計算待儲存傳入資料之位址:其可由一顯式欄位覆寫[例如,參見圖10]。其被添加至INCOMING_BASE。
INCOMING_BASE 此保存用於更新記憶體指標之共同基址(添加至INCOMING_DELTA)。
OUTGOING_BASE 此保存發送指令之一共同基址
OUTGOING_DELTA 此保存用於計算發送位址指令之差量。一「發送」位址係輸出基數+輸出差量。
INCOMING_FORMAT 識別32b或64b傳入資料。
應注意,INCOMING_DELTA及INCOMING_MUX暫存器形成微磚之交換狀態之部分。
本文中已描述一種在用於機器學習之知識模型之情境下特別有效之新計算機範例。提供一種如在一BSP範例之一交換階段利用時間確定性來有效地處理非常大量資料之架構。雖然已描述特定實施例,但一旦給定揭示內容聽證(disclosure hearing),所揭示技術之其他應用及變化對於熟習此項技術者而言將變得顯而易見。本發明之範疇不受限於所描述實施例,但僅受限於隨附發明申請專利範圍。
2:單晶片處理器
3:時脈
4:微磚/處理器模組
6a:陣列
6b:陣列
8a:晶片至主機鏈路
8b:晶片至主機鏈路
30a:晶片至晶片鏈路
30b:晶片至晶片鏈路
34:時間確定性切換構體/硬體互連件/交換匯流排
36:同步化模組
Claims (17)
- 一種非揮發性電腦可讀儲存媒體,其包括一計算機程式,其包含用於在一處理單元上執行之一指令序列,該處理單元具有用於保存該計算機程式之指令儲存器、用於執行該計算機程式之一執行單元及用於保存資料之資料儲存器,該計算機程式包括一或多個計算機可執行指令,該一或多個計算機可執行指令在被執行時實施:一發送功能,其致使目的地係一接受者處理單元之一傳出資料封包(outgoing data packet)在連接至該處理單元之一資料輸出連接線組上傳輸,在藉由該處理單元而被傳輸至該資料輸出連接線組時,該傳出資料封包不具有目的地識別符但在一預定傳輸時間被傳輸至該資料輸出連接線組;及一切換控制功能,其致使該處理單元控制切換電路以將該處理單元之一資料輸入連接線組連接至一切換構體以在相對於一傳入資料封包(incoming data packet)之一預定傳輸時間之一預定接收時間接收該傳入資料封包。
- 如請求項1之非揮發性電腦可讀儲存媒體,其中該一或多個指令包括一切換控制指令及一發送指令,該發送指令定義一發送位址,該發送位址定義該指令儲存器中待自其發送該傳出資料封包之一位置。
- 如請求項2之非揮發性電腦可讀儲存媒體,其中該發送指令定義數個待發送之傳出資料封包,各封包與一不同預定傳輸時間相關聯。
- 如請求項2之非揮發性電腦可讀儲存媒體,其中該發送指令未顯式定義一發送位址但隱式定義其中保存一發送位址之一暫存器。
- 如請求項4之非揮發性電腦可讀儲存媒體,其包括用於更新該隱式定義暫存器中之該發送位址之一進一步指令。
- 如請求項1至5中任一項之非揮發性電腦可讀儲存媒體,其中至少一個進一步指令定義一記憶體指標更新功能,該記憶體指標更新功能更新一記憶體指標,該記憶體指標識別該資料儲存器中用於儲存在該接受者處理單元處接收之該傳出資料封包之一記憶體位置。
- 如請求項1之非揮發性電腦可讀儲存媒體,其中該一或多個指令係在一單個執行循環中合併該發送功能及該切換控制功能之一合併指令,藉此該處理單元經組態以進行操作以傳輸一資料封包且控制其切換電路以自另一處理單元接收一不同資料封包。
- 如請求項6之非揮發性電腦可讀儲存媒體,其中該至少一個進一步指令係合併該發送功能及該記憶體指標更新功能之一合併指令。
- 如請求項8之非揮發性電腦可讀儲存媒體,其中該合併指令以具有一運算碼部分之一常見格式進行組態,該運算碼部分指定其是否合併該發送功能與該記憶體指標更新功能或該切換控制功能。
- 如請求項6之非揮發性電腦可讀儲存媒體,其中該一或多個指令係在一單個執行循環中合併該發送功能、該切換控制功能及該記憶體指標更新功能之一單個指令。
- 如請求項10之非揮發性電腦可讀儲存媒體,其中一或多個指令各具有匹配該執行單元之一提取階段之一位元寬度之一第一位元寬度,且其中:合併該發送功能、該切換控制功能及該記憶體指標更新功能之該指令具有為該執行單元之該提取階段之該位元寬度之兩倍之一第二位元寬度。
- 如請求項1至5中任一項之非揮發性電腦可讀儲存媒體,其中一或多個指令各具有匹配該執行單元之一提取階段之一位元寬度之一第一位元寬度。
- 如請求項12之非揮發性電腦可讀儲存媒體,其中該第一位元寬度之該指令識別該第一位元寬度之一運算元,該運算元實施該切換控制功能及該記憶體指標更新功能。
- 如請求項1至5中任一項之非揮發性電腦可讀儲存媒體,其包括一同步化指令,該同步化指令在該處理單元之一計算階段已完成時產生一指示。
- 如請求項1至5中任一項之非揮發性電腦可讀儲存媒體,其呈一可傳輸信號之形式。
- 一種處理單元,其包括指令儲存器、經組態以執行一計算機程式之一執行單元及用於保存資料之資料儲存器,其中該指令儲存器保存包括一或多個計算機可執行指令之一計算機程式,該一或多個計算機可執行指令在由該執行單元執行時實施:一發送功能,其致使目的地係一接受者處理單元之一傳出資料封包在連接至該處理單元之一資料輸出連接線組上傳輸,在藉由該處理單元而被傳輸至該資料輸出連接線組時,該傳出資料封包不具有目的地識別符但在一預定傳輸時間被傳輸至該資料輸出連接線組;及一切換控制功能,其致使該處理單元控制切換電路以將該處理單元之一資料輸入連接線組連接至一切換構體以在相對於一傳入資料封包之一預定傳輸時間之一預定接收時間接收該傳入資料封包。
- 一種包括呈一整合式封裝之一或多個晶粒之計算機,該計算機包括複數個處理單元,各處理單元具有用於保存一計算機程式之指令儲存器、經組態以執行該計算機程式之一執行單元及用於保存資料之資料儲存器,其中各處理單元之該指令儲存器保存包括一或多個計算機可執行指令之一計算機程式,該一或多個計算機可執行指令在被執行時實施:一發送功能,其致使目的地係一接受者處理單元之一傳出資料封包在連接至該處理單元之一資料輸出連接線組上傳輸,在藉由該處理單元而 被傳輸至該資料輸出連接線組時,該傳出資料封包不具有目的地識別符但在一預定傳輸時間被傳輸至該資料輸出連接線組;及一切換控制功能,其致使該處理單元控制切換電路以將該處理單元之一資料輸入連接線組連接至一切換構體以在相對於一傳入資料封包(incoming data packet)之一預定傳輸時間之一預定接收時間接收該傳入資料封包。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1717299.0 | 2017-10-20 | ||
??1717299.0 | 2017-10-20 | ||
GB1717299.0A GB2569275B (en) | 2017-10-20 | 2017-10-20 | Time deterministic exchange |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201923560A TW201923560A (zh) | 2019-06-16 |
TWI713913B true TWI713913B (zh) | 2020-12-21 |
Family
ID=60481878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107136963A TWI713913B (zh) | 2017-10-20 | 2018-10-19 | 電腦可讀儲存媒體、處理單元及計算機 |
Country Status (8)
Country | Link |
---|---|
US (2) | US11321272B2 (zh) |
EP (1) | EP3474152B1 (zh) |
JP (1) | JP6797879B2 (zh) |
KR (1) | KR102178190B1 (zh) |
CN (1) | CN109697082B (zh) |
CA (1) | CA3021414C (zh) |
GB (1) | GB2569275B (zh) |
TW (1) | TWI713913B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2580165B (en) | 2018-12-21 | 2021-02-24 | Graphcore Ltd | Data exchange in a computer with predetermined delay |
GB201904266D0 (en) | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A networked computer with embedded rings |
US11704270B2 (en) | 2019-03-27 | 2023-07-18 | Graphcore Limited | Networked computer with multiple embedded rings |
GB201904263D0 (en) | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A networked computer |
GB201904267D0 (en) | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A networked computer with multiple embedded rings |
GB201904265D0 (en) | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A partitionable networked computer |
US11531637B2 (en) | 2020-03-26 | 2022-12-20 | Graphcore Limited | Embedding rings on a toroid computer network |
GB202010839D0 (en) * | 2020-07-14 | 2020-08-26 | Graphcore Ltd | Variable allocation |
US11070621B1 (en) * | 2020-07-21 | 2021-07-20 | Cisco Technology, Inc. | Reuse of execution environments while guaranteeing isolation in serverless computing |
CN113254376B (zh) * | 2021-06-09 | 2021-12-17 | 广州朗国电子科技股份有限公司 | 一种一体机兼容集控指令的处理方法、系统、设备、存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6876652B1 (en) * | 2000-05-20 | 2005-04-05 | Ciena Corporation | Network device with a distributed switch fabric timing system |
US20130070588A1 (en) * | 2006-05-24 | 2013-03-21 | Tilera Corporation, a Delaware corporation | Packet Processing in a Parallel Processing Environment |
TW201610688A (zh) * | 2014-06-02 | 2016-03-16 | 美光科技公司 | 用於在可擴充記憶體系統協定中包裝資料之系統及方法 |
TW201724764A (zh) * | 2015-12-18 | 2017-07-01 | 瑞昱半導體股份有限公司 | 接收裝置及其封包處理方法 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434861A (en) | 1989-02-02 | 1995-07-18 | Pritty; David | Deterministic timed bus access method |
US5734826A (en) | 1991-03-29 | 1998-03-31 | International Business Machines Corporation | Variable cyclic redundancy coding method and apparatus for use in a multistage network |
US5408646A (en) * | 1991-03-29 | 1995-04-18 | International Business Machines Corp. | Multipath torus switching apparatus |
JP3501305B2 (ja) | 1993-08-04 | 2004-03-02 | サン・マイクロシステムズ・インコーポレイテッド | 相互接続制御装置及び方法 |
GB2303274B (en) | 1995-07-11 | 1999-09-08 | Fujitsu Ltd | Switching apparatus |
US6128307A (en) * | 1997-12-01 | 2000-10-03 | Advanced Micro Devices, Inc. | Programmable data flow processor for performing data transfers |
US20040172631A1 (en) | 2001-06-20 | 2004-09-02 | Howard James E | Concurrent-multitasking processor |
US7100021B1 (en) | 2001-10-16 | 2006-08-29 | Cisco Technology, Inc. | Barrier synchronization mechanism for processors of a systolic array |
US9479464B1 (en) * | 2002-08-27 | 2016-10-25 | Hewlett Packard Enterprise Development Lp | Computer system and network interface with hardware based packet filtering and classification |
US7894480B1 (en) * | 2002-08-27 | 2011-02-22 | Hewlett-Packard Company | Computer system and network interface with hardware based rule checking for embedded firewall |
JP2005032018A (ja) | 2003-07-04 | 2005-02-03 | Semiconductor Energy Lab Co Ltd | 遺伝的アルゴリズムを用いたマイクロプロセッサ |
CN1842770A (zh) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | 一种在处理器中挂起和释放执行过程中计算线程的整体机制 |
US7904905B2 (en) | 2003-11-14 | 2011-03-08 | Stmicroelectronics, Inc. | System and method for efficiently executing single program multiple data (SPMD) programs |
JP4204522B2 (ja) * | 2004-07-07 | 2009-01-07 | 株式会社東芝 | マイクロプロセッサ |
US7673164B1 (en) * | 2004-12-13 | 2010-03-02 | Massachusetts Institute Of Technology | Managing power in a parallel processing environment |
US7818725B1 (en) | 2005-04-28 | 2010-10-19 | Massachusetts Institute Of Technology | Mapping communication in a parallel processing environment |
US7577820B1 (en) | 2006-04-14 | 2009-08-18 | Tilera Corporation | Managing data in a parallel processing environment |
JP5055942B2 (ja) | 2006-10-16 | 2012-10-24 | 富士通株式会社 | 計算機クラスタ |
US7958333B2 (en) * | 2007-05-30 | 2011-06-07 | XMOS Ltd. | Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected |
GB2471067B (en) | 2009-06-12 | 2011-11-30 | Graeme Roy Smith | Shared resource multi-thread array processor |
CN101667451B (zh) * | 2009-09-11 | 2012-05-09 | 西安电子科技大学 | 高速数据交换接口的数据缓存器及其数据缓存控制方法 |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
US20110258421A1 (en) * | 2010-04-19 | 2011-10-20 | International Business Machines Corporation | Architecture Support for Debugging Multithreaded Code |
US8374182B2 (en) * | 2010-08-13 | 2013-02-12 | Juniper Networks, Inc. | Virtual local area network (VLAN)-based membership for multicast VLAN registration |
JP5568048B2 (ja) | 2011-04-04 | 2014-08-06 | 株式会社日立製作所 | 並列計算機システム、およびプログラム |
CN103765400B (zh) * | 2011-04-07 | 2016-05-04 | 威盛电子股份有限公司 | 一种乱序执行微处理器中的有条件存储指令 |
JP2013069189A (ja) | 2011-09-26 | 2013-04-18 | Hitachi Ltd | 並列分散処理方法および並列分散処理システム |
CN103186977B (zh) * | 2011-12-30 | 2016-02-03 | 无锡华润矽科微电子有限公司 | 微处理器中实现遥控信号发射指令控制的电路结构 |
US8990497B2 (en) | 2012-07-02 | 2015-03-24 | Grayskytech, LLC | Efficient memory management for parallel synchronous computing systems |
US9116738B2 (en) * | 2012-11-13 | 2015-08-25 | International Business Machines Corporation | Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system |
GB2522290B (en) * | 2014-07-14 | 2015-12-09 | Imagination Tech Ltd | Running a 32-bit operating system on a 64-bit machine |
US20160164943A1 (en) | 2014-12-05 | 2016-06-09 | Qualcomm Incorporated | Transport interface for multimedia and file transport |
JP6450330B2 (ja) | 2016-02-03 | 2019-01-09 | 日本電信電話株式会社 | 並列計算処理装置および並列計算処理方法 |
US10963003B2 (en) * | 2017-10-20 | 2021-03-30 | Graphcore Limited | Synchronization in a multi-tile processing array |
GB201717295D0 (en) * | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Synchronization in a multi-tile processing array |
-
2017
- 2017-10-20 GB GB1717299.0A patent/GB2569275B/en active Active
-
2018
- 2018-02-01 US US15/886,131 patent/US11321272B2/en active Active
- 2018-10-12 EP EP18200107.3A patent/EP3474152B1/en active Active
- 2018-10-19 TW TW107136963A patent/TWI713913B/zh active
- 2018-10-19 CA CA3021414A patent/CA3021414C/en active Active
- 2018-10-19 JP JP2018197183A patent/JP6797879B2/ja active Active
- 2018-10-22 CN CN201811228379.6A patent/CN109697082B/zh active Active
- 2018-10-22 KR KR1020180126038A patent/KR102178190B1/ko active IP Right Grant
-
2022
- 2022-04-06 US US17/658,124 patent/US20220253399A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6876652B1 (en) * | 2000-05-20 | 2005-04-05 | Ciena Corporation | Network device with a distributed switch fabric timing system |
US20130070588A1 (en) * | 2006-05-24 | 2013-03-21 | Tilera Corporation, a Delaware corporation | Packet Processing in a Parallel Processing Environment |
TW201610688A (zh) * | 2014-06-02 | 2016-03-16 | 美光科技公司 | 用於在可擴充記憶體系統協定中包裝資料之系統及方法 |
TW201724764A (zh) * | 2015-12-18 | 2017-07-01 | 瑞昱半導體股份有限公司 | 接收裝置及其封包處理方法 |
Also Published As
Publication number | Publication date |
---|---|
US11321272B2 (en) | 2022-05-03 |
JP6797879B2 (ja) | 2020-12-09 |
KR20190044572A (ko) | 2019-04-30 |
CN109697082A (zh) | 2019-04-30 |
GB201717299D0 (en) | 2017-12-06 |
US20220253399A1 (en) | 2022-08-11 |
JP2019079525A (ja) | 2019-05-23 |
EP3474152A1 (en) | 2019-04-24 |
CA3021414C (en) | 2021-08-10 |
EP3474152B1 (en) | 2024-01-31 |
GB2569275A (en) | 2019-06-19 |
KR102178190B1 (ko) | 2020-11-12 |
CN109697082B (zh) | 2023-07-14 |
CA3021414A1 (en) | 2019-04-20 |
TW201923560A (zh) | 2019-06-16 |
GB2569275B (en) | 2020-06-03 |
US20190121777A1 (en) | 2019-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI699700B (zh) | 編譯方法、編譯器及相關計算機程式 | |
TWI713913B (zh) | 電腦可讀儲存媒體、處理單元及計算機 | |
TWI708186B (zh) | 用於多微磚處理陣列之同步化之計算機與方法 | |
US10963003B2 (en) | Synchronization in a multi-tile processing array | |
US11416440B2 (en) | Controlling timing in computer processing | |
US10817459B2 (en) | Direction indicator | |
US11176066B2 (en) | Scheduling messages |