TWI708186B - 用於多微磚處理陣列之同步化之計算機與方法 - Google Patents

用於多微磚處理陣列之同步化之計算機與方法 Download PDF

Info

Publication number
TWI708186B
TWI708186B TW107136956A TW107136956A TWI708186B TW I708186 B TWI708186 B TW I708186B TW 107136956 A TW107136956 A TW 107136956A TW 107136956 A TW107136956 A TW 107136956A TW I708186 B TWI708186 B TW I708186B
Authority
TW
Taiwan
Prior art keywords
micro
processing unit
data
brick
computer
Prior art date
Application number
TW107136956A
Other languages
English (en)
Other versions
TW201928666A (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 TW201928666A publication Critical patent/TW201928666A/zh
Application granted granted Critical
Publication of TWI708186B publication Critical patent/TWI708186B/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • 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/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

本發明係關於一種計算機,其包括:複數個處理單元,各處理單元具有保存一本端程式之指令儲存器、執行該本端程式之一執行單元、用於保存資料之資料儲存器、具有一組輸入線之一輸入介面及具有一組輸出線之一輸出介面;一切換構體,其藉由該各自組之輸出線連接至該等處理單元之各者且可藉由該等各自輸入線經由可由各處理單元控制之切換電路連接至該等處理單元之各者;一同步化模組,其可操作以產生一同步化信號以控制該計算機在一計算階段與一交換階段之間切換,其中該等處理單元經組態以根據一共同時脈執行其本端程式,該等本端程式使得在該交換階段,至少一個處理單元執行來自其本端程式之一發送指令以在一傳輸時間將一資料封包傳輸至其輸出連接線組上,該資料封包之目的地係至少一個接受者處理單元但不具有目的地識別符,且在一預定切換時間,該接受者處理單元執行來自其本端程式之一切換控制指令以控制其切換電路以將其輸入線組連接至該切換構體,以在一接收時間接收該資料封包,由該共同時脈相對於該同步化信號管控該傳輸時間、該切換時間及該接收時間。

Description

用於多微磚處理陣列之同步化之計算機與方法
本發明係關於在包括多個微磚之一處理器中同步化多個不同微磚之工作負載,各微磚包括具有本端記憶體之一處理單元。特定而言,本發明係關於整體同步並行(BSP)計算協定,其中一微磚群組之各者必須在該群組中之微磚之任一者可繼續至一交換階段之前完成一計算階段。
計算之並行性採用不同形式。程式片段可經組織以並發地執行(其中其在時間上重疊但可共用執行資源)或並行地執行(其中其可能在相同時間執行不同資源)。
計算之並行性可以數種方式達成,例如藉由一多互連處理器微磚陣列、或一多線程處理單元、或實際上一多微磚陣列,其中各微磚包括一多線程處理單元。
當藉由在相同晶片(或相同積體電路封裝中之若干晶片)上包括一多微磚陣列之一處理器達成並行性時,各微磚包括具有本端記憶體(包含程式記憶體及資料記憶體)之其自身單獨之各自處理單元。因此,程式碼之單獨部分可在不同微磚上並發地運行。微磚經由一晶片上互連連接在一起,此使在不同微磚上運行之程式碼能夠在微磚之間進行通信。在一 些情況下,各微磚上之處理單元可採用一桶形線程處理單元(或其他多線程處理單元)之形式。各微磚可具有一情境集及一執行管線,使得各微磚可並發地運行多個交錯線程。
一般而言,可存在在陣列中之不同微磚上運行之一程式之部分之間之相依性。因此,需要一種技術來防止一個微磚上之一程式碼段在資料之前運行,另一微磚上之另一程式碼段取決於該資料而變得可用。存在用於達成此目的之數個可能方案,但本文中所關注之方案稱為「整體同步並行」(BSP)。根據BSP,各微磚以一交替方式執行一計算階段及一交換階段。在計算階段期間,各微磚在微磚上本端地執行一或多個計算任務,但不將其任何計算結果傳達給任何其他微磚。在交換階段,允許各微磚將來自前一計算階段之一或多個計算結果交換至群組中之一或多個其他微磚及/或自群組中之一或多個其他微磚交換來自前一計算階段之一或多個計算結果,但尚未開始一新計算階段直至彼微磚已完成其交換階段。此外,根據此形式之BSP原理,一屏障同步化置於自計算階段過渡至交換階段或自交換階段過渡至計算階段或兩者之接合點處。即:(a)所有微磚需要在允許群組中之任何微磚繼續至下一交換階段之前完成其各自計算階段,或(b)群組中之所有微磚需要在允許群組中之任何微磚繼續至下一計算階段之前完成其各自交換階段,或(c)兩者。當在本文中使用時,術語「在一計算階段與一交換階段之間」涵蓋所有此等選項。
多線程及/或多微磚並行處理之一實例用法見於機器智慧中。如熟習機器智慧技術者將熟悉,機器智慧演算法「能夠產生知識模型」且使用知識模型來運行學習及推理演算法。併入知識模型及演算法之一機器智慧模型可表示為多個互連節點之一圖。各節點表示其輸入之一功 能。一些節點接收至圖之輸入且一些節點接收來自一或多個其他節點之輸入。一些節點之輸出啟動形成其他節點之輸入,且一些節點之輸出提供圖之輸出,且至圖之輸入提供輸入至一些節點。此外,各節點處之功能係由一或多個各自參數(例如,權重)參數化。在一學習階段期間,目標係基於一經驗輸入資料集找到各種參數之值,使得圖作為整體將為一定範圍之可能輸入產生一所期望輸出。如此做之各種演算法在此項技術中係已知的,諸如基於隨機梯度下降之一反向傳播演算法。在多次迭代中,逐漸調諧參數以減小其誤差,且因此圖收斂於一解。在一後續階段,所學習模型接著可用來在給定一指定輸入集之情況下對輸出進行預測或在給定一指定輸出集之情況下對輸入(原因)進行推斷,或可對所學習模型執行其他內省形式之分析。
各節點之實施方案將涉及資料之處理,且圖之互連對應於待在節點之間交換資料。通常,各節點之至少一些處理可獨立於圖中之一些或所有其他節點執行,且因此大圖顯示巨大並行性之機會。
如上文所提及,表示知識模型及關於知識模型如何用於學習及推理之演算法資訊之一機器智慧模型通常可由多個互連節點之一圖表示,各節點對資料具有一處理要求。該圖之互連指示待在節點之間交換資料且因此致使在節點處執行之程式片段之間的相依性。一般而言,一節點處之處理可獨立於另一節點實行,且因此大圖顯示巨大並行性。一高度分佈式平行機係計算此等機器智慧模型之一適當機器結構。此特徵使一機器能夠被設計來進行特定時間確定性保證。
本發明中所利用之知識模型之一因素係圖之大體上靜態本 質。即,在執行機器智慧演算法期間,節點及圖之結構(包括圖)通常不會改變。發明人已製造一種進行特定時間確定性保證以最佳化機器智慧模型上之計算之機器。此允許一編譯器以一時間確定性方式跨節點劃分及排程工作。正是此時間確定性在下文所描述之實施例中用於設計經最佳化以基於知識模型處理工作負載之一計算機時之顯著最佳化。
根據本發明之一態樣,提供一種計算機,其包括:複數個處理單元,各處理單元具有保存一本端程式之指令儲存器、執行該本端程式之一執行單元、用於保存資料之資料儲存器、具有一組輸入線之一輸入介面及具有一組輸出線之一輸出介面;一切換構體,其藉由各自組之輸出線連接至該等處理單元之各者且可藉由各自輸入線經由可由各處理單元控制之切換電路連接至該等處理單元之各者;一同步化模組,其可操作以產生一同步化信號以控制該計算機在一計算階段與一交換階段之間切換,其中該等處理單元經組態以根據一共同時脈執行其本端程式,該等本端程式使得在該交換階段中,至少一個處理單元執行來自其本端程式之一發送指令以在一傳輸時間將一資料封包傳輸至其輸出連接線組上,該資料封包之目的地係至少一個接受者處理單元但不具有目的地識別符,且在一預定切換時間,該接受者處理單元執行來自其本端程式之一切換控制指令以控制其切換電路以將其輸入線組連接至該切換構體,以在一接收時間接收該資料封包,由該共同時脈相對於該同步化信號管控該傳輸時間、該切換時間及該接收時間。
本發明之另一態樣提供一種計算一計算機中之一功能之方法,該計算機包括:複數個處理單元,各處理單元具有保存一本端程式之指令儲存器、用於執行該本端程式之一執行單元、用於保存資料之資料儲 存器、具有一組輸入線之一輸入介面及具有一組輸出線之一輸出介面;一切換構體,其藉由各自組之輸出線連接至該等處理單元之各者且可藉由其各自輸入線經由可由各處理單元控制之切換電路連接至該等處理單元之各者;及一同步化模組,其可操作以產生一同步化信號以控制該計算機在一計算階段與一交換階段之間切換,該方法包括:該等處理單元在該計算階段根據一共同時脈執行其本端程式,其中在該交換階段中之一預定時間,至少一個處理單元執行來自其本端程式之一發送指令以在一傳輸時間將一資料封包傳輸至其輸出連接線組上,該資料封包之目的地係至少一個接受者處理單元但不具有目的地識別符,及在一預定切換時間,該接受者處理單元執行來自其本端程式之一切換控制指令以控制該切換電路以將其輸入線組連接至該切換構體,以在一接收時間接收該資料封包,由該共同時脈相對於該同步化信號管控該傳輸時間、該切換時間及該接收時間。
原理上,可產生同步化信號以控制自一計算階段至交換階段之切換,或自交換階段至計算階段之切換。然而,針對本文中所定義之時間確定性架構,若產生同步化信號以開始交換階段,則其係較佳的。在一項實施例中,各處理單元向同步化模組指示其自身計算階段完成,且在所有處理單元已指示其自身計算階段完成時,由同步化模組產生同步化信號,以開始交換階段。
應預定傳輸時間以使時間確定性交換能夠恰當地完成。假定預定執行發送指令之時間,則可由在執行發送指令之時間之後的已知數目個時脈循環判定傳輸時間。替代地,傳輸時間可為以某種其他方式判定之自從執行發送指令已知之一時間之一已知延遲。重要的是,傳輸時間相對於一所欲接受者處理單元上之接收時間係已知的。
發送指令之特徵可包含發送指令顯式定義發送位址,該發送位址識別資料儲存器中待自其發送資料封包之一位置。替代地,在發送指令中未顯式定義發送地址,且自由發送指令隱式定義之一暫存器中定義之一發送位址傳輸資料封包。本端程式可包含用於更新隱式暫存器中之發送位址之一發送位址更新指令。
在本文中所描述之實施例中,該切換電路包括一多工器,該多工器具有連接至其處理單元之一出口輸出線組及連接至該切換構體之多個輸入線組,藉此如由該處理單元控制選擇多個輸入線組之一者。各組可包括32位元。當利用64位元資料時,一對多工器可連接至一處理單元且一起被控制。
在所描述實施例中,該接受者處理單元經組態以接收該資料封包且在由一記憶體指標識別之一記憶體位置處將該資料封包載入至該資料儲存器中。在已將各資料封包載入至該資料儲存器中之後,該記憶體指標可自動遞增。替代地,該接受者處理單元處之本端程式可包含更新該記憶體指標之一記憶體指標更新指令。
該發送指令可經組態以識別數個待發送資料封包,其中各資料封包與一不同傳輸時間相關聯,因為其係自該處理單元連續地發送。
可控制該多工器之輸入線組之一者以連接至一空輸入。此可用來忽略另外到達彼處理單元之資料。
該接受者處理單元(其意欲於接收一特定資料封包)可為在一較早時間執行一發送指令之相同處理單元,藉此該相同處理單元經組態以發送一資料封包且稍後接收彼資料封包。一處理單元「發送至自身」之目的可能係在其記憶體中遵循傳入資料與自其他處理單元接收之資料交錯 之一配置。
在一些實施例中,該等處理單元之至少兩者可以一傳輸對協作,其中一第一資料封包係經由該對之一第一處理單元之輸出連接線組自該對之該第一處理單元傳輸,且一第二資料封包係經由該對之第二處理單元之輸出連接線組自該對之該第一處理單元傳輸以實現一倍寬傳輸。在一些實施例中,該等處理單元之至少兩者可作為一接收對操作,其中該對之各處理單元控制其切換電路以將其各自輸入線組連接至該切換構體以自一發送對之各自微磚接收各自資料封包。
多個處理單元可經組態以執行各自發送指令以傳輸各自資料封包,其中至少一些該等資料封包之目的地並非接受者處理單元。
所計算之功能可以包括複數個互連節點之一靜態圖之形式提供,各節點係由本端程式之一標碼串(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:記憶體指標
1200:控制儲存器
1202:寬度控制多工器
1300:電路
1302:多工器
1304:多工器
1306:管線階段
1308:控制緩衝器
R0:暫存器
R1:暫存器
R2:暫存器
S0:時槽
S1:時槽
S5:時槽
為了更好地理解本發明及展示可如何實現本發明,現將藉由實例參考以下圖式。
圖1示意地繪示一單晶片處理器之架構;圖2係連接至切換構體之一微磚之一示意圖;圖3係繪示一BSP協定之一圖式;圖4係展示一時間確定性交換中之兩個微磚之一示意圖;圖5係繪示一時間確定性交換之一示意時序圖;圖6係一機器智慧圖之一項實例;圖7係繪示用於產生時間確定性程式之一編譯器之操作之一示意架構;圖8至圖11繪示在一時間確定性架構中可用之不同指令之指令格式。
圖12係作為一傳輸對操作之兩個微磚之一示意圖;及圖13係作為一接收對操作之兩個微磚之一示意圖。
圖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 107136956-A0305-02-0017-2
{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」指令,且係最佳化程式碼壓縮之一方式。此指令在被執行時在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[INCOMING_MUXPAIR]保存傳入訊息之源微磚之微磚ID,其用來選擇與接收微磚相關聯之多工器之「監聽」輸入。
INCOMING_DELTA此保存一自動遞增值以計算待儲存傳入資料之位址:其可由一顯式欄位覆寫[例如,參見圖10]。其被添加至INCOMING_BASE。
INCOMING_BASE此保存用於更新記憶體指標之共同基址(添加至INCOMING_DELTA)。
OUTGOING_BASE此保存發送指令之一共同基址
OUTGOING_DELTA此保存用於計算發送位址指令之差量。一 「發送」位址係輸出基數+輸出差量。
INCOMING_FORMAT識別32b或64b傳入資料。
應注意,INCOMING_DELTA及INCOMING_MUX暫存器形成微磚之交換狀態之部分。
現將參考圖12及圖13來解釋微磚配對,該微磚配對係一實體對微磚可藉由其協作以便更有效地使用其組合交換資源之一特徵。微磚配對可用來藉由借用一鄰居之傳輸匯流排來使單個微磚之傳輸頻寬加倍,或藉由共用一鄰居之接收匯流排及相關聯傳入多工器來使一微磚對中之兩個微磚之接收頻寬加倍。
圖12繪示與用於執行倍寬傳輸之一微磚對中之微磚相關聯之邏輯。藉由在一SEND之持續期間借用一鄰居之傳出交換資源來達成倍寬傳輸。在此時間期間,鄰居微磚無法執行其自身資料傳輸。一SEND指令能夠執行單寬或倍寬資料傳送,其中傳送寬度係由保存於一暫存器中之一值或一立即值欄位指定。寬度可指示為32位元(一個字組)(在此情況下,欄位具有一0值)或64位元(兩個字組)(在此情況下,欄位具有一1值)。其他邏輯定義係可能的。指定寬度自晶片4上之一暫存器傳遞至微磚之Ex Out介面226中之一控制儲存器1200。圖12展示兩個此等配對微磚TID00及TID01。Ex Out介面226具有用於容納最低有效字組(LSW)及最高有效字組(MSW)之緩衝器。在此情境下,各字組係32位元。最低有效字組直接連接至一寬度控制多工器1202之一輸入。該多工器之輸出連接至交換匯流排34之對應交叉線,該等交叉線對應於彼特定微磚之輸出線。若傳輸寬度設定為32位元,則寬度控制多工器1202經設定以自配對微磚之各自LSW接收輸入,以由此允許該對之微磚同時傳輸一各自32位元字 組。
若該對之一個成員想要發送一64位元字組,則相鄰微磚之寬度控制多工器1202經設定以接收自發送微磚輸出之最高有效字組且將彼最高有效字組傳遞至該多工器之輸出。此將致使自發送微磚輸出之64位元之最高有效字組置於與相鄰微磚相關聯之交換匯流排之交叉線上(此時其被禁止發送任何東西)。為了清楚起見,來自發送微磚TID00之儲存器1200中之寬度控制旗標之MUX控制線被展示為連接至相鄰(非發送)微磚TID01之多工器1202之控制輸入。類似地,相鄰微磚TID01亦具有自其控制儲存器1200連接至其配對微磚之寬度控制多工器1202之輸入之一MUX控制線,但為了清楚起見未在圖12中展示。
現將參考圖13來解釋使用配對微磚之一倍寬接收。圖13中之配對微磚標記為TID03及TID04,但將容易理解,此功能性可結合倍寬傳輸功能性使用,使得如同TID00之一微磚亦可具有例如TID03上所展示之功能性。藉由共用一鄰居之傳入交換資源達一傳送之持續期間來達成倍寬接收。當經組態用於倍寬接收時,一微磚對內之各微磚可選擇取樣或忽略傳入資料。若該等微磚皆選擇取樣,則其將看見相同傳入資料。經由前文所描述之INCOMING_FORMAT值與鄰居微磚協作而啟用倍寬接收,該INCOMING_FORMAT值識別輸入資料是否係32位元或64位元。必須將微磚對之主要微磚之傳入多工器210之值設定為發送微磚之微磚ID。必須將微磚對內之輔助微磚之傳入多工器210之「監聽輸入」設定為發送對內之另一微磚之微磚ID。應注意,在此情況下,嚴格而言,發送微磚對之「發送」微磚(例如TID01)實際上不發送,但已供應其最高有效字組以使用微磚TID00之交換資源。因此,接收微磚對之微磚之傳入多工器210必 須分別連接至交叉線,發送對之倍寬傳輸輸出之個別字組置於該等交叉線上。
應注意,在一些實施例中,即使切換傳入多工器210以同時監聽其各自交換交叉線,此仍不一定意謂著將同時在接收微磚對之微磚處接收傳入值,此係歸因於交換微磚與個別微磚之間的行進之不同延時。因此,在一接收微磚對中考慮三種可能性。
在第一種可能性中,將獨立處理Exin介面之兩個傳入匯流排(微磚對中之微磚皆不參與一倍寬接收)。
根據第二種可能性,本端傳入交換匯流排用來傳送一倍寬項之早期組件(且彼組件現應被延遲)。此暗示鄰居之匯流排將用來傳送相同倍寬項之非早期組件。
根據第三種可能性,本端傳入交換匯流排用來傳送一倍寬項之非早期組件。此暗示鄰居之匯流排用來傳送相同倍寬項之早期組件(且因此鄰居之匯流排上之早期資料組件應被延遲)。
圖13展示使用多工器1302及1304處理此等案例之電路1300。應注意,電路1300複製於接收微磚對之各微磚之輸入上,但為了清楚起見僅在TID03之輸入上展示。
多工器之控制來自自一暫存器供應至一Exin介面224中之傳入格式控制。若微磚TID03待以一32位元模式操作,則其控制多工器1302以經由一管線階段1306及一控制緩衝器1308在圖13中之多工器之上輸入處使32位元字組通過。
若接收微磚作為一對操作,則控制多工器1302以阻止其上輸入且允許來自下輸入之最低有效字組通過至管線階段1306。在下一循 環,選擇最高有效字組以連同最低有效字組一起通過多工器1304傳遞至控制緩衝器1308中,該最低有效字組已透過管線階段1306進行時控。控制緩衝器1308可決定是否接收64位元字組。應注意,根據邏輯,將在相鄰微磚(TID04)處同時接收64位元字組。在一些情況下,兩個微磚可能想要讀取相同64位元值,但在其他情況下,該等微磚之一者可能想要忽略64位元值。
應注意,可能存在其中一64位元傳送之LSW及MSW可同時接收於其配對接收微磚處之實施例,在此情況下,將無需管線階段1306之相對延遲。
本文中已描述一種在用於機器學習之知識模型之情境下特別有效之新計算機範例。提供一種如在一BSP範例之一交換階段利用時間確定性來有效地處理非常大量資料之架構。雖然已描述特定實施例,但一旦給定揭示內容聽證(disclosure hearing),所揭示技術之其他應用及變化對於熟習此項技術者而言將變得顯而易見。本發明之範疇不受限於所描述實施例,但僅受限於隨附發明申請專利範圍。
2:單晶片處理器
3:時脈
4:微磚/處理器模組
6a:陣列
6b:陣列
8a:晶片至主機鏈路
8b:晶片至主機鏈路
30a:晶片至晶片鏈路
30b:晶片至晶片鏈路
34:時間確定性切換構體/硬體互連/交換匯流排
36:同步化模組

Claims (22)

  1. 一種計算機,其包括:複數個處理單元,各處理單元具有保存一本端程式之指令儲存器、執行該本端程式之一執行單元、用於保存資料之資料儲存器、具有一組輸入線之一輸入介面及具有一組輸出線之一輸出介面;一切換構體,其藉由該各自組之輸出線連接至該等處理單元之各者且可藉由該等各自輸入線經由可由各處理單元控制之切換電路連接至該等處理單元之各者;及一同步化模組,其可操作以產生一同步化信號以控制該計算機在一計算階段與一交換階段之間切換,其中該等處理單元經組態以根據一共同時脈執行其本端程式,該等本端程式使得在該交換階段,至少一個處理單元執行來自其本端程式之一發送指令以在一傳輸時間將一資料封包傳輸至其輸出連接線組上,該資料封包之目的地係至少一個接受者處理單元但不具有目的地識別符,且其中在一預定切換時間,該接受者處理單元執行來自其本端程式之一切換控制指令以控制其切換電路以將其輸入線組連接至該切換構體,以在一接收時間接收該資料封包,由該共同時脈相對於該同步化信號管控該傳輸時間、該切換時間及該接收時間。
  2. 如請求項1之計算機,其中該發送指令顯式定義一發送位址,該發送位址識別該資料儲存器中待自其發送該資料封包之一位置。
  3. 如請求項1之計算機,其中在該發送指令中未顯式定義發送地址,且 自由該發送指令隱式定義之一暫存器中定義之一發送位址傳輸該資料封包。
  4. 如請求項3之計算機,其中該本端程式包括用於更新該隱式暫存器中之該發送位址之一發送位址更新指令。
  5. 如請求項1至4中任一項之計算機,其中該傳輸時間係在執行該指令之該發送時間之後的已知數目個時脈循環。
  6. 如請求項1至4中任一項之計算機,其中該切換電路包括一多工器,該多工器具有連接至其處理單元之一出口輸出線組及連接至該切換構體之多個輸入線組,藉此如由該處理單元控制選擇該多個輸入線組之一者。
  7. 如請求項1至4中任一項之計算機,其中該接受者處理單元經組態以接收該資料封包且在由一記憶體指標識別之一記憶體位置處將該資料封包載入至該資料儲存器中。
  8. 如請求項7之計算機,其中在已將各資料封包載入至該資料儲存器中之後,該記憶體指標自動遞增。
  9. 如請求項7之計算機,其中該接受者處理單元處之該本端程式包含更新該記憶體指標之一記憶體指標更新指令。
  10. 如請求項1至4中任一項之計算機,其中該發送指令識別數個待發送資料封包,其中各資料封包與一不同傳輸時間相關聯。
  11. 如請求項6之計算機,其中該等輸入線組之一者連接至一空輸入。
  12. 如請求項1至4中任一項之計算機,其中該接受者處理單元係相同於在一較早時間執行一發送指令之該處理單元之處理單元,藉此該相同處理單元經組態以發送一資料封包且稍後接收彼資料封包。
  13. 如請求項1至4中任一項之計算機,其中多個處理單元經組態以執行各自發送指令以傳輸各自資料封包,且其中至少一些該等資料封包之目的地並非接受者處理單元。
  14. 如請求項1至4中任一項之計算機,其中該等處理單元之至少兩者以一傳輸對協作,其中一第一資料封包係經由該傳輸對之一第一處理單元之輸出連接線組自該傳輸對之該第一處理單元傳輸,且一第二資料封包係經由該傳輸對之第二處理單元之輸出連接線組自該傳輸對之該第一處理單元傳輸以實現一倍寬傳輸。
  15. 如請求項1至4中任一項之計算機,其中該等處理單元之至少兩者作為一接收對操作,其中該接收對之各處理單元控制其切換電路以將其各自輸入線組連接至該切換構體以自一發送對之各自微磚接收各自資料封包。
  16. 一種計算一計算機中之一功能之方法,該計算機包括:複數個處理單元,各處理單元具有保存一本端程式之指令儲存器、用於執行該本端程式之一執行單元、用於保存資料之資料儲存器、具有一組輸入線之一輸入介面及具有一組輸出線之一輸出介面;一切換構體,其藉由該等各自組之輸出線連接至該等處理單元之各者且可藉由其各自輸入線經由可由各處理單元控制之切換電路連接至該等處理單元之各者;及一同步化模組,其可操作以產生一同步化信號以控制該計算機在一計算階段與一交換階段之間切換,該方法包括:該等處理單元在該計算階段根據一共同時脈執行其本端程式,其中在該交換階段,至少一個處理單元執行來自其本端程式之一發送指令以,在一傳輸時間,將一資料封包傳輸至其輸出連接線組上,該資料封包之目的地係至少一個接受者處理單元但不具有目的地識別符,及在一預定切換時間,該接受者處理單元執行來自其本端程式之一切換控制指令以控制該切換電路以將其輸入線組連接至該切換構體,以在一接收時間接收該資料封包,由該共同時脈相對於該同步化信號管控該傳輸時間、該切換時間及該接收時間。
  17. 如請求項16之方法,其中該功能係以包括複數個互連節點之靜態圖之形式提供,各節點係由該等本端程式之一標碼串實施。
  18. 如請求項17之方法,其中在該計算階段,各標碼串處理資料以產生一結果,其中一些該等結果對於一後續計算階段而言並非必需的且未由任何接受者處理單元接收。
  19. 如請求項16至18中任一項之方法,其中在該交換階段,經由該切換構體及該切換電路在處理單元之間傳輸該等資料封包。
  20. 如請求項16至18中任一項之方法,其中各處理單元向該同步化模組指示其自身計算階段完成,且其中當所有處理單元已指示其自身計算階段完成時,由該同步化模組產生該同步化信號以開始該交換階段。
  21. 如請求項17之方法,其中該圖表示一機器學習功能。
  22. 如請求項16至18中任一項之方法,其中在該交換階段,透過該切換構體以穿過一系列暫時性儲存器之一管線方式傳輸資料封包,各儲存器保存一資料封包達該共同時脈之一個循環。
TW107136956A 2017-10-20 2018-10-19 用於多微磚處理陣列之同步化之計算機與方法 TWI708186B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
??1717295.8 2017-10-20
GBGB1717295.8A GB201717295D0 (en) 2017-10-20 2017-10-20 Synchronization in a multi-tile processing array
GB1717295.8 2017-10-20
??1816892.2 2018-10-17
GB1816892.2A GB2569430B (en) 2017-10-20 2018-10-17 Synchronization in a multi-tile processing array
GB1816892.2 2018-10-17

Publications (2)

Publication Number Publication Date
TW201928666A TW201928666A (zh) 2019-07-16
TWI708186B true TWI708186B (zh) 2020-10-21

Family

ID=60481682

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107136956A TWI708186B (zh) 2017-10-20 2018-10-19 用於多微磚處理陣列之同步化之計算機與方法

Country Status (9)

Country Link
US (1) US10936008B2 (zh)
JP (1) JP6722251B2 (zh)
KR (1) KR102167059B1 (zh)
CN (1) CN109697185B (zh)
CA (1) CA3021450C (zh)
DE (1) DE102018126001A1 (zh)
FR (1) FR3072801B1 (zh)
GB (2) GB201717295D0 (zh)
TW (1) TWI708186B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11455190B2 (en) 2016-02-05 2022-09-27 Sas Institute Inc. Implicit status in many task computing
GB2569275B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Time deterministic exchange
GB2580165B (en) 2018-12-21 2021-02-24 Graphcore Ltd Data exchange in a computer with predetermined delay
US11704270B2 (en) 2019-03-27 2023-07-18 Graphcore Limited Networked computer with multiple embedded rings
GB201904265D0 (en) 2019-03-27 2019-05-08 Graphcore Ltd A partitionable networked computer
GB201904267D0 (en) 2019-03-27 2019-05-08 Graphcore Ltd A networked computer with multiple embedded rings
GB201904263D0 (en) 2019-03-27 2019-05-08 Graphcore Ltd A networked computer
GB201904266D0 (en) 2019-03-27 2019-05-08 Graphcore Ltd A networked computer with embedded rings
JP7338354B2 (ja) 2019-09-20 2023-09-05 富士通株式会社 情報処理装置,情報処理システム及び通信管理プログラム
CN113222126B (zh) * 2020-01-21 2022-01-28 上海商汤智能科技有限公司 数据处理装置、人工智能芯片
KR20220003621A (ko) 2020-03-26 2022-01-10 그래프코어 리미티드 2개의 내장된 링을 구비한 네트워크 컴퓨터
US11336383B2 (en) * 2020-06-24 2022-05-17 Mellanox Technologies, Ltd. Packet scheduling system with desired physical transmission time for packets
GB2608180B (en) * 2021-06-25 2024-06-26 Graphcore Ltd Control of data send from a multi-processor device
GB202219286D0 (en) 2022-12-20 2023-02-01 Graphcore Ltd Rotating data blocks

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0588104A2 (en) * 1992-09-17 1994-03-23 International Business Machines Corporation Multipath torus switching apparatus
US20040172631A1 (en) * 2001-06-20 2004-09-02 Howard James E Concurrent-multitasking processor
US7904905B2 (en) * 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs
CN102782672A (zh) * 2010-02-01 2012-11-14 菲利普·马内 用于高效嵌入式同类多核平台的基于瓦片的处理器架构模型

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434861A (en) 1989-02-02 1995-07-18 Pritty; David Deterministic timed bus access method
DE68928980T2 (de) * 1989-11-17 1999-08-19 Texas Instruments Inc Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
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
JP3501305B2 (ja) 1993-08-04 2004-03-02 サン・マイクロシステムズ・インコーポレイテッド 相互接続制御装置及び方法
US5541921A (en) * 1994-12-06 1996-07-30 National Semiconductor Corporation Isochronous serial time division multiplexer
GB2303274B (en) * 1995-07-11 1999-09-08 Fujitsu Ltd Switching apparatus
CN101110664A (zh) * 1999-07-09 2008-01-23 范德雷布玛里纳公司 Tcp/ip以数据包为中心的无线传输系统结构
US6876652B1 (en) 2000-05-20 2005-04-05 Ciena Corporation Network device with a distributed switch fabric timing system
US20020165947A1 (en) * 2000-09-25 2002-11-07 Crossbeam Systems, Inc. Network application apparatus
US7100021B1 (en) 2001-10-16 2006-08-29 Cisco Technology, Inc. Barrier synchronization mechanism for processors of a systolic array
JP2005032018A (ja) 2003-07-04 2005-02-03 Semiconductor Energy Lab Co Ltd 遺伝的アルゴリズムを用いたマイクロプロセッサ
JP2005167965A (ja) * 2003-11-12 2005-06-23 Matsushita Electric Ind Co Ltd パケット処理方法および装置
US7804504B1 (en) 2004-12-13 2010-09-28 Massachusetts Institute Of Technology Managing yield for a parallel processing integrated circuit
US7814242B1 (en) * 2005-03-25 2010-10-12 Tilera Corporation Managing data flows 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
US8194690B1 (en) * 2006-05-24 2012-06-05 Tilera Corporation Packet processing in a parallel processing environment
JP5055942B2 (ja) 2006-10-16 2012-10-24 富士通株式会社 計算機クラスタ
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
JP5304194B2 (ja) * 2008-11-19 2013-10-02 富士通株式会社 バリア同期装置、バリア同期システム及びバリア同期装置の制御方法
US8571021B2 (en) * 2009-06-10 2013-10-29 Microchip Technology Incorporated Packet based data transmission with reduced data size
GB2471067B (en) 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
JP5568048B2 (ja) 2011-04-04 2014-08-06 株式会社日立製作所 並列計算機システム、およびプログラム
JP2013069189A (ja) 2011-09-26 2013-04-18 Hitachi Ltd 並列分散処理方法および並列分散処理システム
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
EP2929434B1 (en) * 2012-12-06 2019-01-16 Coherent Logix Incorporated Processing system with synchronization instruction
US9747048B2 (en) 2014-06-02 2017-08-29 Micron Technology, Inc. Systems and methods for packing data in a scalable memory system protocol
US20160164943A1 (en) 2014-12-05 2016-06-09 Qualcomm Incorporated Transport interface for multimedia and file transport
TWI580199B (zh) 2015-12-18 2017-04-21 瑞昱半導體股份有限公司 接收裝置及其封包處理方法
JP6450330B2 (ja) 2016-02-03 2019-01-09 日本電信電話株式会社 並列計算処理装置および並列計算処理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0588104A2 (en) * 1992-09-17 1994-03-23 International Business Machines Corporation Multipath torus switching apparatus
US20040172631A1 (en) * 2001-06-20 2004-09-02 Howard James E Concurrent-multitasking processor
US7904905B2 (en) * 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs
CN102782672A (zh) * 2010-02-01 2012-11-14 菲利普·马内 用于高效嵌入式同类多核平台的基于瓦片的处理器架构模型

Also Published As

Publication number Publication date
CN109697185B (zh) 2023-06-20
US10936008B2 (en) 2021-03-02
GB201816892D0 (en) 2018-11-28
CA3021450C (en) 2021-11-02
JP6722251B2 (ja) 2020-07-15
FR3072801B1 (fr) 2024-01-05
FR3072801A1 (fr) 2019-04-26
CN109697185A (zh) 2019-04-30
TW201928666A (zh) 2019-07-16
US20190121387A1 (en) 2019-04-25
GB201717295D0 (en) 2017-12-06
GB2569430A (en) 2019-06-19
KR102167059B1 (ko) 2020-10-16
JP2019079529A (ja) 2019-05-23
CA3021450A1 (en) 2019-04-20
DE102018126001A1 (de) 2019-04-25
GB2569430B (en) 2021-03-24
KR20190044574A (ko) 2019-04-30

Similar Documents

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