TWI700637B - 用於控制時序之計算機程式、計算計算機中之功能的方法、及相關計算機 - Google Patents

用於控制時序之計算機程式、計算計算機中之功能的方法、及相關計算機 Download PDF

Info

Publication number
TWI700637B
TWI700637B TW107136966A TW107136966A TWI700637B TW I700637 B TWI700637 B TW I700637B TW 107136966 A TW107136966 A TW 107136966A TW 107136966 A TW107136966 A TW 107136966A TW I700637 B TWI700637 B TW I700637B
Authority
TW
Taiwan
Prior art keywords
switching
micro
processing unit
data
brick
Prior art date
Application number
TW107136966A
Other languages
English (en)
Other versions
TW201923563A (zh
Inventor
理查 路克 薩斯維爾 歐斯朋
艾倫 葛拉漢 亞歷山大
史蒂芬 菲立克斯
Original Assignee
英商葛夫科有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英商葛夫科有限公司 filed Critical 英商葛夫科有限公司
Publication of TW201923563A publication Critical patent/TW201923563A/zh
Application granted granted Critical
Publication of TWI700637B publication Critical patent/TWI700637B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本發明提供一種包括用於在一處理單元上執行之一指令序列之計算機程式,該處理單元具有用於保存該計算機程式之指令儲存器、用於執行該計算機程式之一執行單元及用於保存資料之資料儲存器,該計算機程式包括:一切換控制指令,其在被執行時致使該處理單元控制切換電路以將該處理單元之一連接線組連接至一切換構體以在一預定接收時間接收一資料封包,該切換控制指令包括一延遲控制欄位,該延遲控制欄位保存一值,該值定義以該指令序列發佈該指令與其由該執行單元之執行之間的一延遲。

Description

用於控制時序之計算機程式、計算計算機中之功能的方法、及相關計算機
本發明係關於在包括多個微磚之一處理器中同步化多個不同微磚之工作負載,各微磚包括具有本端記憶體之一處理單元。特定而言,本發明係關於整體同步並行(BSP)計算協定,其中一微磚群組之各者必須在該群組中之微磚之任一者可繼續至一交換階段之前完成一計算階段。
計算之並行性採用不同形式。程式片段可經組織以並發地執行(其中其在時間上重疊但可共用執行資源)或並行地執行(其中其可能在相同時間執行不同資源)。
計算之並行性可以數種方式達成,例如藉由一多互連處理器微磚陣列、或一多線程處理單元、或實際上一多微磚陣列,其中各微磚包括一多線程處理單元。
當藉由在相同晶片(或相同積體電路封裝中之若干晶片)上包括一多微磚陣列之一處理器達成並行性時,各微磚包括具有本端記憶體(包含程式記憶體及資料記憶體)之其自身單獨之各自處理單元。因此,程式碼之單獨部分可在不同微磚上並發地運行。微磚經由一晶片上互連連接在一起,此使在不同微磚上運行之程式碼能夠在微磚之間進行通信。在一 些情況下,各微磚上之處理單元可採用一桶形線程處理單元(或其他多線程處理單元)之形式。各微磚可具有一情境集及一執行管線,使得各微磚可並發地運行多個交錯線程。
一般而言,可存在在陣列中之不同微磚上運行之一程式之部分之間之相依性。因此,需要一種技術來防止一個微磚上之一程式碼段在資料之前運行,另一微磚上之另一程式碼段取決於該資料而變得可用。存在用於達成此目的之數個可能方案,但本文中所關注之方案稱為「整體同步並行」(BSP)。根據BSP,各微磚以一交替方式執行一計算階段及一交換階段。在計算階段期間,各微磚在微磚上本端地執行一或多個計算任務,但不將其任何計算結果傳達給任何其他微磚。在交換階段,允許各微磚將來自前一計算階段之一或多個計算結果交換至群組中之一或多個其他微磚及/或自群組中之一或多個其他微磚交換來自前一計算階段之一或多個計算結果,但尚未開始一新計算階段直至彼微磚已完成其交換階段。此外,根據此形式之BSP原理,一屏障同步化置於自計算階段過渡至交換階段或自交換階段過渡至計算階段或兩者之接合點處。即:(a)所有微磚需要在允許群組中之任何微磚繼續至下一交換階段之前完成其各自計算階段,或(b)群組中之所有微磚需要在允許群組中之任何微磚繼續至下一計算階段之前完成其各自交換階段,或(c)兩者。當在本文中使用時,術語「在一計算階段與一交換階段之間」涵蓋所有此等選項。
多線程及/或多微磚並行處理之一實例用法見於機器智慧中。如熟習機器智慧技術者將熟悉,機器智慧演算法「能夠產生知識模型」且使用知識模型來運行學習及推理演算法。併入知識模型及演算法之一機器智慧模型可表示為多個互連節點之一圖。各節點表示其輸入之一功能。一些節點接收至圖之輸入且一些節點接收來自一或多個其他節點之輸 入。一些節點之輸出啟動形成其他節點之輸入,且一些節點之輸出提供圖之輸出,且至圖之輸入提供輸入至一些節點。此外,各節點處之功能係由一或多個各自參數(例如,權重)參數化。在一學習階段期間,目標係基於一經驗輸入資料集找到各種參數之值,使得圖作為整體將為一定範圍之可能輸入產生一所期望輸出。如此做之各種演算法在此項技術中係已知的,諸如基於隨機梯度下降之一反向傳播演算法。在多次迭代中,逐漸調諧參數以減小其誤差,且因此圖收斂於一解。在一後續階段,所學習模型接著可用來在給定一指定輸入集之情況下對輸出進行預測或在給定一指定輸出集之情況下對輸入(原因)進行推斷,或可對所學習模型執行其他內省形式之分析。
各節點之實施方案將涉及資料之處理,且圖之互連對應於待在節點之間交換資料。通常,各節點之至少一些處理可獨立於圖中之一些或所有其他節點執行,且因此大圖顯示巨大並行性之機會。
如上文所提及,表示知識模型及關於知識模型如何用於學習及推理之演算法資訊之一機器智慧模型通常可由多個互連節點之一圖表示,各節點對資料具有一處理要求。該圖之互連指示待在節點之間交換資料且因此致使在節點處執行之程式片段之間的相依性。一般而言,一節點處之處理可獨立於另一節點實行,且因此大圖顯示巨大並行性。一高度分佈式平行機係計算此等機器智慧模型之一適當機器結構。此特徵使一機器能夠被設計來進行特定時間確定性保證。
本發明中所利用之知識模型之一因素係圖之大體上靜態本質。即,在執行機器智慧演算法期間,節點及圖之結構(包括圖)通常不會 改變。發明人已製造一種進行特定時間確定性保證以最佳化機器智慧模型上之計算之機器。此允許一編譯器以一時間確定性方式跨節點劃分及排程工作。正是此時間確定性在下文所描述之實施例中用於設計經最佳化以基於知識模型處理工作負載之一計算機時之顯著最佳化。
根據第一態樣,提供一種包括用於在一處理單元上執行之一指令序列之計算機程式,該處理單元具有用於保存該計算機程式之指令儲存器、用於執行該計算機程式之一執行單元及用於保存資料之資料儲存器,該計算機程式包括:一切換控制指令,其在被執行時致使該處理單元控制切換電路以將該處理單元之一連接線組連接至一切換構體以在一預定接收時間接收一資料封包,該切換控制指令包括一延遲控制欄位,該延遲控制欄位保存定義以該指令序列之該指令之發佈與其由該執行單元執行之間的一延遲之一值。
在一項實施例中,該切換控制指令包括一交換控制欄位,該交換控制欄位選擇連接至該切換構體之對應連接器之該切換電路之多個輸入之一者,預期在該接收時間該資料封包係在該切換構體上。
在一項實施例中,定義該延遲之該值致使在該預定接收時間之前之至少一個執行循環執行該切換控制指令。
在一項實施例中,該值定義在執行循環方面之延遲。
在一項實施例中,該切換控制指令進一步定義一發送功能,該發送功能致使在連接至一接受者處理單元之一連接線組上傳輸目的地係該處理單元之一資料封包,該資料封包不具有目的地識別符但在一預定傳輸時間傳輸,藉此該處理單元經組態以進行操作以傳輸一資料封包且控制其切換電路以在單個執行循環中自另一處理單元接收一不同資料封 包。
在一項實施例中,該切換控制指令進一步定義一記憶體指標更新功能,該記憶體指標更新功能更新一記憶體指標,該記憶體指標識別該資料儲存器中用於儲存在該接受者處理單元處接收之該資料封包之一記憶體位置。
根據第二態樣,提供複數個處理單元,各處理單元具有保存一本端程式之指令儲存器,及用於執行該本端程式之執行單元、用於保存資料之資料儲存器,及具有一輸入線組之輸入介面及具有一輸出線組之一輸出介面;一切換構體,其藉由各自輸出線組連接至該等處理單元之各者且可藉由其各自輸入線藉由可由各處理單元控制之切換電路連接至該等處理單元之各者,該方法包括:該等處理單元根據一共同時脈執行其本端程式,其中在一預定切換時間,該等處理單元之一者執行來自其本端程式之一切換控制指令以控制該切換電路以將其輸入線連接至該切換構體以在一接收時間接收一資料封包,其中由該切換控制指令中之延遲控制欄位控制該預定切換時間,該延遲控制欄位保存定義該切換控制指令之發佈與其由該執行單元執行之間的一延遲之一值。
根據第三態樣,提供一種計算機,其包括:複數個處理單元,各處理單元具有保存一本端程式之指令儲存器;用於執行該本端程式之執行單元、用於保存資料之資料儲存器;具有一輸入線組之輸入介面及具有一輸出線組之一輸出介面;一切換構體,其藉由各自輸出線組連接至該等處理單元之各者且可藉由其各自輸入線藉由可由各處理單元控制之切換電路連接至該等處理單元之各者,其中該等處理單元經組態以根據一共同時脈執行其本端程式,其中該複數個處理單元之一者經組態以在一預定 切換時間,執行來自其本端程式之一切換控制指令以控制該切換電路以將其輸入線連接至該切換構體以在一接收時間接收一資料封包,其中由該切換控制指令中之延遲控制欄位控制該預定切換時間,該延遲控制欄位保存定義該切換控制指令之發佈與其由該執行單元執行之間的一延遲之一值。
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(例如,相同微磚)上本端運行之彼等工作程式線程本端地運行,或代替地其是否將跨多個微磚或甚至跨多個晶片應用。
SYNC mode //mode
Figure 107136966-A0305-02-0014-1
{tile,chip,zone_1,zone_2}
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行進至切換構體14且接著經由接收微磚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」指令,且係最佳化程式碼壓縮之一方式。當發佈用以改變微磚之輸入多工器選擇之指令時,可設置一暫存器(其可稱為循環逐減計數器暫存器)。微磚可將其運行模式設定為DELAY,且逐減計數器暫存器可進行逐減計數,直至指令之發佈與其由執行單元執行之間的延遲已到期。一旦逐減計數器達到零,微磚運行模式便過渡回為執行以發佈進一步指令。逐減計數器暫存器可為監督程式情境之部分。逐減計數器暫存器可僅為監督程式情境之部分。逐減計數器暫存器可使得其無法被讀取或修改,但可經由延遲指令隱式讀取或修改(即,其並非一CSR)。施加延遲之執行循環之數目可由立即值92加1來給定。
PUT-i-MUX指令在被執行時在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),所揭示技術之其他應用及變化對於熟習此項技術者而言將變得顯而易見。本發明之範疇不受限於所描述實施例,但僅受限於隨附發明申請專利範圍。
4:微磚/處理器模組
30:同步化
50:交換階段
52:計算階段

Claims (18)

  1. 一種包括用於在一處理單元上執行之一指令序列之計算機程式,該處理單元具有用於保存該計算機程式之指令儲存器、用於執行該計算機程式之一執行單元及用於保存資料之資料儲存器,該計算機程式包括: 一切換控制指令,其在被執行時致使該處理單元控制切換電路以將該處理單元之一連接線組連接至一切換構體以在一預定接收時間接收一資料封包,該切換控制指令包括一延遲控制欄位,該延遲控制欄位保存一值,該值定義以該指令序列發佈該指令與其由該執行單元執行之間的一延遲。
  2. 如請求項1之計算機程式,其中該切換控制指令包括一交換控制欄位,該交換控制欄位選擇連接至該切換構體之對應連接器之該切換電路之多個輸入之一者,預期在該接收時間該資料封包係在該切換構體上。
  3. 如請求項1或請求項2之計算機程式,其中定義該延遲之該值致使在該預定接收時間之前之至少一個執行循環執行該切換控制指令。
  4. 如請求項1或請求項2之計算機程式,其中該值定義在執行循環方面之延遲。
  5. 如請求項1或請求項2之計算機程式,其中該切換控制指令進一步定義一發送功能,該發送功能致使在連接至一接受者處理單元之一連接線組上傳輸目的地係該處理單元之一資料封包,該資料封包不具有目的地識別符但在一預定傳輸時間傳輸,藉此該處理單元經組態以進行操作以傳輸一資料封包且控制其切換電路以在一單個執行循環中自另一處理單元接收一不同資料封包。
  6. 如請求項1或請求項2之計算機程式,其中該切換控制指令進一步定義一記憶體指標更新功能,該記憶體指標更新功能更新一記憶體指標,該記憶體指標識別該資料儲存器中用於儲存在該接受者處理單元處接收之該資料封包之一記憶體位置。
  7. 一種計算一計算機中之一功能之方法,該計算機包括: 複數個處理單元,各處理單元具有保存一本端程式之指令儲存器,及 用於執行該本端程式之執行單元、用於保存資料之資料儲存器, 及具有一輸入線組之輸入介面及具有一輸出線組之一輸出介面; 一切換構體,其藉由該等各自輸出線組連接至該等處理單元之各者且可藉由其各自輸入線藉由可由各處理單元控制之切換電路連接至該等處理單元之各者,該方法包括: 該等處理單元根據一共同時脈執行其本端程式, 其中在一預定切換時間,該等處理單元之一者執行來自其本端程式之一切換控制指令以控制該切換電路以將其輸入線連接至該切換構體以在一接收時間接收一資料封包, 其中由該切換控制指令中之延遲控制欄位控制該預定切換時間,該延遲控制欄位保存一值,該值定義該切換控制指令之發佈與其由該執行單元執行之間的一延遲。
  8. 如請求項7之方法,其中該切換控制指令包括一交換控制欄位,該交換控制欄位選擇連接至該切換構體之對應連接器之該切換電路之多個輸入之一者,預期在該接收時間該資料封包係在該切換構體上。
  9. 如請求項7或請求項8之方法,其中定義該延遲之該值致使在該預定接收時間之前之至少一個執行循環執行該切換控制指令。
  10. 如請求項7或請求項8之方法,其中該值定義在執行循環方面之延遲。
  11. 如請求項7或請求項8之方法,其中該切換控制指令進一步定義一發送功能,該發送功能致使在連接至一接受者處理單元之一連接線組上傳輸目的地係該處理單元之一資料封包,該資料封包不具有目的地識別符但在一預定傳輸時間傳輸,藉此該處理單元經組態以進行操作以傳輸一資料封包且控制其切換電路以在一單個執行循環中自另一處理單元接收一不同資料封包。
  12. 如請求項7或請求項8之方法,其中該切換控制指令進一步定義一記憶體指標更新功能,該記憶體指標更新功能更新一記憶體指標,該記憶體指標識別該資料儲存器中用於儲存在該接受者處理單元處接收之該資料封包之一記憶體位置。
  13. 一種計算機,其包括: 複數個處理單元,各處理單元具有保存一本端程式之指令儲存器; 用於執行該本端程式之執行單元、用於保存資料之資料儲存器; 具有一輸入線組之輸入介面及具有一輸出線組之一輸出介面; 一切換構體,其藉由該等各自輸出線組連接至該等處理單元之各者且可藉由其各自輸入線藉由可由各處理單元控制之切換電路連接至該等處理單元之各者,其中該等處理單元經組態以根據一共同時脈執行其本端程式, 其中該複數個處理單元之一者經組態以在一預定切換時間,執行來自其本端程式之一切換控制指令以控制該切換電路以將其輸入線連接至該切換構體以在一接收時間接收一資料封包, 其中由該切換控制指令中之延遲控制欄位控制該預定切換時間,該延遲控制欄位保存一值,該值定義該切換控制指令之發佈與其由該執行單元執行之間的一延遲。
  14. 如請求項13之計算機,其中該切換控制指令包括一交換控制欄位,該交換控制欄位選擇連接至該切換構體之對應連接器之該切換電路之多個輸入之一者,預期在該接收時間該資料封包係在該切換構體上。
  15. 如請求項13或請求項14之計算機,其中定義該延遲之該值致使在該預定接收時間之前之至少一個執行循環執行該切換控制指令。
  16. 如請求項13或請求項14之計算機,其中該值定義在執行循環方面之延遲。
  17. 如請求項13或請求項14之計算機,其中該切換控制指令進一步定義一發送功能,該發送功能致使在連接至一接受者處理單元之一連接線組上傳輸目的地係該處理單元之一資料封包,該資料封包不具有目的地識別符但在一預定傳輸時間傳輸,藉此該處理單元經組態以進行操作以傳輸一資料封包且控制其切換電路以在一單個執行循環中自另一處理單元接收一不同資料封包。
  18. 如請求項13或請求項14之計算機,其中該切換控制指令進一步定義一記憶體指標更新功能,該記憶體指標更新功能更新一記憶體指標,該記憶體指標識別該資料儲存器中用於儲存在該接受者處理單元處接收之該資料封包之一記憶體位置。
TW107136966A 2017-10-20 2018-10-19 用於控制時序之計算機程式、計算計算機中之功能的方法、及相關計算機 TWI700637B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
??1717290.9 2017-10-20
GB1717290.9A GB2569268B (en) 2017-10-20 2017-10-20 Controlling timing in computer processing
GB1717290.9 2017-10-20

Publications (2)

Publication Number Publication Date
TW201923563A TW201923563A (zh) 2019-06-16
TWI700637B true TWI700637B (zh) 2020-08-01

Family

ID=60481870

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107136966A TWI700637B (zh) 2017-10-20 2018-10-19 用於控制時序之計算機程式、計算計算機中之功能的方法、及相關計算機

Country Status (4)

Country Link
US (2) US10579582B2 (zh)
KR (1) KR102228502B1 (zh)
GB (1) GB2569268B (zh)
TW (1) TWI700637B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12019527B2 (en) 2018-12-21 2024-06-25 Graphcore Limited Processor repair
GB2584983B (en) 2018-12-21 2021-10-20 Graphcore Ltd Preserving transmission time between processing units
GB2580165B (en) * 2018-12-21 2021-02-24 Graphcore Ltd Data exchange in a computer with predetermined delay
KR102138490B1 (ko) * 2020-01-31 2020-07-29 (주)시지바이오 알루미나를 주성분으로 한 fdm 3d 프린터용 조성물

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246409A1 (en) * 2011-03-22 2012-09-27 Fujitsu Limited Arithmetic processing unit and arithmetic processing method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0338727A (ja) * 1989-07-05 1991-02-19 Matsushita Electric Ind Co Ltd 資源干渉制御装置とデータ処理装置
US5408646A (en) * 1991-03-29 1995-04-18 International Business Machines Corp. Multipath torus switching apparatus
US6338137B1 (en) * 1998-05-29 2002-01-08 Texas Instruments Incorporated Data processor having memory access unit with predetermined number of instruction cycles between activation and initial data transfer
KR20030088892A (ko) * 2001-02-06 2003-11-20 애더란트 테크놀로지스 비.브이. 인터럽트를 핸들링하기 위한 방법 및 장치
US7673164B1 (en) * 2004-12-13 2010-03-02 Massachusetts Institute Of Technology Managing power in a parallel processing environment
US7577820B1 (en) * 2006-04-14 2009-08-18 Tilera Corporation Managing data in a parallel processing environment
US20090210677A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246409A1 (en) * 2011-03-22 2012-09-27 Fujitsu Limited Arithmetic processing unit and arithmetic processing method

Also Published As

Publication number Publication date
US11416440B2 (en) 2022-08-16
KR102228502B1 (ko) 2021-03-16
TW201923563A (zh) 2019-06-16
KR20190044573A (ko) 2019-04-30
GB2569268B (en) 2020-09-09
US20190121779A1 (en) 2019-04-25
US10579582B2 (en) 2020-03-03
GB2569268A (en) 2019-06-19
GB201717290D0 (en) 2017-12-06
US20200183878A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
TWI699700B (zh) 編譯方法、編譯器及相關計算機程式
TWI708186B (zh) 用於多微磚處理陣列之同步化之計算機與方法
TWI713913B (zh) 電腦可讀儲存媒體、處理單元及計算機
US10963003B2 (en) Synchronization in a multi-tile processing array
TWI700637B (zh) 用於控制時序之計算機程式、計算計算機中之功能的方法、及相關計算機
US10817459B2 (en) Direction indicator
US11176066B2 (en) Scheduling messages