TWI704465B - 用於支援進階運算功能之設備、系統與方法 - Google Patents

用於支援進階運算功能之設備、系統與方法 Download PDF

Info

Publication number
TWI704465B
TWI704465B TW105115745A TW105115745A TWI704465B TW I704465 B TWI704465 B TW I704465B TW 105115745 A TW105115745 A TW 105115745A TW 105115745 A TW105115745 A TW 105115745A TW I704465 B TWI704465 B TW I704465B
Authority
TW
Taiwan
Prior art keywords
computing
core
processors
reducer
cores
Prior art date
Application number
TW105115745A
Other languages
English (en)
Other versions
TW201706870A (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 TW201706870A publication Critical patent/TW201706870A/zh
Application granted granted Critical
Publication of TWI704465B publication Critical patent/TWI704465B/zh

Links

Images

Classifications

    • 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
    • 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
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • 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/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Jib Cranes (AREA)
  • Epoxy Resins (AREA)
  • Forklifts And Lifting Vehicles (AREA)
  • Nuclear Medicine (AREA)
  • Stored Programmes (AREA)

Abstract

本發明揭示一種包括多個平行運算核心的設備,其中每一運算核心經組態以執行一或多個處理操作並產生輸入資料。該設備亦包括與每一運算核心相關聯的多個平行共處理器。該設備進一步包括多個通信線路,該多個通信線路經組態以將該輸入資料自每一運算核心輸送至與該等運算核心中之每一者相關聯的該等共處理器中之一指定共處理器,其中該等共處理器經組態以處理該輸入資料並產生輸出資料。另外,該設備包括多個歸算器電路,其中每一運算核心與該等歸算器電路中之一者相關聯。每一歸算器電路經組態以自該相關聯運算核心之該等共處理器中之每一者接收該輸出資料,將一或多個函數應用於該輸出資料,並將一或多個結果提供至該相關聯運算核心。

Description

用於支援進階運算功能之設備、系統與方法
本發明大體上係關於用於運算裝置及運算系統的硬體架構。更具體而言,本發明涉及一種通用平行運算架構,其可支援諸如用於人工智慧的進階運算功能。
人類大腦係通常包含大約由一千萬億個突觸連接的1000億個神經元的大規模平行系統。理想地,模擬人類大腦的運行可支援諸如人工智慧的進階運算功能。然而,對模擬人類大腦或設計與人類大腦能力相競爭的運算系統之習知嘗試大體上由於多種原因(諸如實質上不匹配大腦之連接性或三維結構)而係不適當的。
本發明提供一種通用平行運算架構。
在第一實施例中,一種設備包括多個平行運算核心,其中每一運算核心經組態以執行一或多個處理操作並產生輸入資料。該設備亦包括與每一運算核心相關聯的多個平行共處理器。該設備進一步包括多個通信線路,該多個通信線路經組態以將輸入資料自每一運算核心輸送至與 該等運算核心中之每一者相關聯的該等共處理器中之一指定共處理器,其中該等共處理器經組態以處理該輸入資料並產生輸出資料。另外,該設備包括多個歸算器電路,其中每一運算核心與該等歸算器電路中之一者相關聯。每一歸算器電路經組態以自該相關聯運算核心之該等共處理器中之每一者接收該輸出資料,將一或多個函數應用於該輸出資料,並將一或多個結果提供至該相關聯運算核心。
在第二實施例中,一種系統包括多個積體電路裝置。每一積體電路裝置包括多個平行運算核心,其中每一運算核心經組態以執行一或多個處理操作並產生輸入資料。每一積體電路裝置亦包括與每一運算核心相關聯的多個平行共處理器。每一積體電路裝置進一步多個通信線路,該多個通信線路經組態以將該輸入資料自每一運算核心輸送至與該等運算核心中之每一者相關聯的該等共處理器中之一指定共處理器,其中該等共處理器經組態以處理該輸入資料並產生輸出資料。另外,每一積體電路裝置包括多個歸算器電路,其中每一運算核心與該等歸算器電路中之一者相關聯。每一歸算器電路經組態以自該相關聯運算核心之該等共處理器中之每一者接收該輸出資料,將一或多個函數應用於該輸出資料,並將一或多個結果提供至該相關聯運算核心。該系統亦包括耦接積體電路裝置中的至少一些通信線路的至少一個高速連接。
在第三實施例中,一種方法包括使用多個平行運算核心產生輸入資料,其中每一運算核心經組態以執行一 或多個處理操作。該方法亦包括:針對每一運算核心,向該等運算核心中之每一者的一指定共處理器發佈來自該運算核心之輸入資料,其中該等運算核心中之每一者與多個平行共處理器相關聯。該方法進一步包括:針對每一運算核心,使用與該運算核心相關聯的共處理器處理來自所有運算核心的輸入資料以產生輸出資料。該方法亦包括:針對每一運算核心,歸算來自與該運算核心相關聯之共處理器的輸出資料以產生一或多個結果。另外,該方法包括:針對每一運算核心,將該一或多個結果提供至該運算核心。
在第四實施例中,一種方法包括:自第一運算核心發出第一指令以供由與該第一運算核心相關聯的多個平行共處理器執行,及自第一運算核心發出第二指令以供由與該第一運算核心相關聯的歸算器電路執行。該方法亦包括使用第一運算核心產生輸入資料。該方法進一步包括使用共處理器執行第一指令,以在共處理器處處理來自第一運算核心的輸入資料及來自一或多個額外運算核心的輸入資料並產生輸出資料。該方法亦包括使用歸算器電路執行第二指令以將一或多個函數應用於輸出資料並產生一或多個結果。另外,該方法包括將該一或多個結果提供至運算核心。
藉由其他技術特徵可自以下諸圖、描述以及申請專利範圍而易於對熟習此項技術者顯而易見。
100:第一層級
102、102a、102b:胞體核心
104、116:處理電路
106、114、117、602、710:記憶體裝置
110:第二層級
112:突觸共處理器
113:算術單元
115:減小器
120:第三層級
122、124:信號線路
402、502:程式
404、504:參數
700:運算系統
702、802、804、806、808:處理器
704:儲存裝置
706:通信單元
708:輸入/輸出單元
712:持久儲存體
800:多處理器配置
900:方法
902、904、906、908、910:步驟
為更全面理解本發明及其特徵,現參考結合隨附圖式進行的以下描述,其中:圖1A至圖1C說明根據本發明之一實例通用平行運算架構;圖2及圖3說明根據本發明之圖1A至圖1C的運算架構中的實例通信;圖4及圖5說明根據本發明之圖1A至圖1C的運算架構中的實例共處理器功能性;圖6說明根據本發明之圖1A至圖1C的運算架構中的實例可程式化共處理器及歸算功能性;圖7及圖8說明根據本發明之使用通用平行運算架構的實例運算系統;以及圖9說明根據本發明之用於使用通用平行運算架構支援進階運算功能的一實例方法。
下文論述之圖1A至圖9,及用以在此專利文件中描述本發明原理的各種實施例僅為說明,且決不應被視為限制本發明的範疇。熟習此項技術者將理解,本發明的原理可實施於任何類型的合適配置的裝置或系統中。
如上所述,人類大腦係通常包含大約由一千萬億個突觸連接的1000億個神經元的大規模平行系統。該等突觸支援該等神經元之間的信號輸送。人類大腦之結構與經典的圖靈機極為不同。考慮到人類大腦中通常有大量神經元及突觸,故使用經典圖靈機模擬人類大腦係不切實際 的。
儘管人類智慧存在許多組分,一個關鍵組分為維度縮減,其係指接收一巨大數目(高頻寬)之感測輸入並將資訊縮減降至一更少量(低頻寬)之描述性概念的過程。在數學方面,可使用各種形式的迭代因素分析達成此歸算。各種形式的因素分析傾向於具有若干共同特徵。舉例而言,在一個被稱為「正向解釋性模式(forward explanatory mode)」的操作模式中,該等因素分析對大量輸入執行某種簡單運算,累積總和,並對輸出執行可能較複雜的運算。在被稱為「反向學習模式(backward learning mode)」的另一操作模式中,該等因素分析藉由對輸出及相應的輸入的某種簡單運算而更改對輸入的簡單運算。儘管此等運算傾向於簡單的,但扇入(指代輸入之數目)及扇出(指代輸出提供至之目的地之數目)之數目皆可數以萬計。
設計在某種程度上甚至可與人類大腦之能力相競爭的系統由於多種原因而大體上係不適當的。舉例而言,如此巨大的扇入及扇出實際上無法映射至二維(2D)電路中,其保持此類高度連接的運算架構遠離主流。為了設計與人類大腦能力相競爭的運算裝置,需要具有更多通信頻寬的硬體架構。本發明描述各種新型通用「連接主義(connectionist)」硬體架構,其包括多個高互連處理核心。此外,此等硬體架構可促進機器學習、科學運算、視訊遊戲及其他領域中之廣泛類別之演算法。在一些實施例中,可使用諸如三維(3D)積體電路技術的現代技術以合理成本 製造此等硬體架構。
圖1A至圖1C說明根據本發明之一實例通用平行運算架構。特定言之,圖1A至圖1C說明一實例多層級結構,其提供具有高通信頻寬之硬體架構。如下文所描述,該結構之不同層級執行不同的功能。
圖1A說明硬體架構之第一層級100。此層級100包括多個運算或處理核心102,其被稱為胞體核心。在其最小形式中,每一胞體核心102可接收一或多個資料信號,執行某種類型的處理並傳輸一或多個輸入信號。每一胞體核心102中所包括的用於執行處理操作之結構的範圍可為一非常簡單的處理核心至一非常複雜的處理核心。舉例而言,每一胞體核心102中的處理單元可為相對簡單化的運算核心,諸如通用單指令多資料(SIMD)算術單元。胞體核心102亦可表示全處理核心,諸如來自ARM、INTEL或其他電腦處理器製造商的彼等全處理核心。在一些實施例中,胞體核心102之群組可使用現有的「多核心(many core)」處理器設計來實施。然而,任何合適的運算核心可用以實施胞體核心102。雖然此處的硬體架構包括十六個胞體核心102,但可在該硬體架構中支援任何數目之胞體核心102。在特定實施例中,此處所有的胞體核心102可實施於被稱為處理器之單個積體電路晶片內。此外,應注意,胞體核心102可為或可不為均質的。
每一胞體核心102包括處理電路104及至少一個記憶體裝置106。處理電路104通常指示用以在胞體核心102 內執行某種類型之處理的電路。如上所述,該處理可為簡單化的或複雜的,且處理電路104可取決於執行之特定處理而變化。記憶體裝置106通常指示任何合適的儲存或擷取裝置,諸如用於儲存由胞體核心102使用、產生或接收之資料的一或多個暫存器。在圖1A中,雖然記憶體裝置106經展示為嵌入胞體核心102內,但每一記憶體裝置106可全部或部分地位於可由胞體核心102存取的任何其他合適的位置。
圖1B說明硬體架構之第二層級110,其與硬體架構之第一層級100相關聯。第二層級110包括與每一胞體核心102相關聯的多個共處理器112(稱為突觸共處理器)。突觸共處理器112通常處理在胞體核心102之間的信號線路(下文所論述)上傳輸的輸入資料。每一胞體核心102可與多個突觸共處理器112相關聯。作為一實例,對於N個胞體核心之群組中之每一胞體核心102,可提供至多N個突觸共處理器112且該N個突觸共處理器112用以支援自群組中的胞體核心102(包括其自身)至彼胞體核心102的通信。在一些實施例中,每一胞體核心102通信耦接至用於群組中之每一胞體核心102之一個突觸共處理器112。換言之,每一胞體核心102可通信耦接至所有N個胞體核心102。因此,「局部」或「主機」胞體核心102之突觸共處理器112用以接收並處理來自所有胞體核心102(包括其自身)的傳入之輸入資料。在一些實施例中,此情況有效地允許所有每一胞體核心102之N個突觸共處理器112接收來自所有平行的N個胞體核心102的輸入資料。應注意,每一胞體核心102可通常包括相 同數目之突觸共處理器112,但可使用其他實施例。
每一突觸共處理器112包括支援處理胞體核心102之傳入之輸入資料的任何合適的結構。突觸共處理器112可具有受限之能力且可再程式化。在一些實施例中,每一突觸共處理器112包括可程式化或其他算術單元113及至少一個記憶體裝置114。算術單元113指示經組態以執行一或多個指令序列以支援硬體架構中之各種功能之任何合適的結構。此等功能之實例包括接收及處理特定序列中之資料、對所接收之輸入及儲存之參數執行算術運算,或轉寄值。記憶體裝置114通常指示任何合適的儲存及擷取裝置,諸如用於儲存由突觸共處理器112使用、產生或接收之資料的一或多個暫存器。在圖1B中,雖然記憶體裝置114經展示為嵌入突觸共處理器112內,但每一記憶體裝置114可全部或部分地位於可由突觸共處理器112存取的任何其他合適的位置。
硬體架構之第二層級110亦包括各種歸算器電路或「歸算器」115。在一些實施例中,每一胞體核心102可有一個歸算器115。每一歸算器115接收藉由與胞體核心102中之一者相關聯的所有突觸共處理器112產生的輸出資料,以某種方式處理所接收之輸出資料,並將一或多個處理結果傳遞至局部胞體核心102。舉例而言,每一歸算器115可總計或累加所接收之輸出資料值,識別最小或最大的所接收之輸出資料值,或執行某種其他處理操作。以此方式,每一歸算器115處理胞體核心102之輸出資料並歸算提供至 該胞體核心102之資料量。
每一歸算器115包括用於處理多個輸出值之任何合適的結構。在一些實施例中,每一歸算器115包括處理電路116及至少一個記憶體裝置117。處理電路116通常指示用以在歸算器115內執行某一類型之處理的電路,且常常比胞體核心102之處理電路104更加專業。例如,處理電路116可包括由用累加器形成的加法器樹,該等累加器用以總計來自與一個胞體核心102相關聯之突觸共處理器112的所有輸出值。記憶體裝置117通常指示任何合適的儲存及擷取裝置,諸如用於儲存由歸算器115使用、產生或接收之資料的一或多個暫存器。在圖1B中,雖然記憶體裝置117經展示為嵌入歸算器115內,但每一記憶體裝置117可全部或部分地位於可由歸算器115存取的任何其他合適的位置。
圖1C說明硬體架構之第三層級120,其與本文之硬體架構之第一層級100及第二層級110相關聯。第三層級120包括多個信號線路122及124,其通信耦接胞體核心102,從而支援將信號輸送至胞體核心102、自胞體核心102輸送信號及在胞體核心102之間輸送信號。在一些實施例中,在群組中之彼每一胞體核心102中完全連接之胞體核心102可經由信號線路122及124與突觸共處理器112之適當組態而與同一群組中之所有其他胞體核心102直接通信。然而,亦可在硬體架構中支援不夠全面的連接性。
應注意,圖1C中之信號線路122及信號線路124的物理佈局僅用於說明,且不必表示信號線路在硬體架構 中之實際物理配置。舉例而言,存在各種在胞體核心102之間設計網路的方式,其可支援或可不支援所有胞體核心102之間的直接通信。因此,信號線路122及信號線路124可經配置以支援硬體架構中之任何期望的通信路徑。
在操作期間,每一胞體核心102操作以執行期望的指令並處理資料,該資料可能包括接收自其歸算器115或其他來源的資料。每一胞體核心102可將其處理操作之結果作為輸入資料提供至其他胞體核心102(且可能為其自身),且每一胞體核心102可經由其突觸共處理器112接收由其他胞體核心之處理操作產生之輸入資料。每一胞體核心102的突觸共處理器112可對輸入資料執行期望的處理操作,且由突觸共處理器112輸出之資料可由胞體核心102之歸算器115進一步處理。來自歸算器115之結果經提供至局部/主機胞體核心102,該等局部/主機胞體核心102可使用該資料以執行額外處理操作。
亦有可能在自胞體核心102至連接的突觸處理機112的每一通信中支援多個「頻道」,其中每一頻道可與不同處理操作相關聯。舉例而言,每一突觸共處理器112可在多個頻道上自一個胞體核心102接收輸入資料,且連接至該胞體核心112之突觸共處理器112可取決於用於輸入資料之頻道而執行不同處理操作。此外,每一歸算器115可在多個頻道上自其相關聯之突觸共處理器112接收輸出資料,且歸算器115可取決於突觸處理器112自其接收輸出資料之頻道而執行不同處理操作。該等頻道可指示實際物理頻道(諸如 當資料在不同信號線路上發送時)或邏輯頻道(諸如當資料在共同信號線路上藉由不同頻道識別符發送時)。在此等實施例中,胞體核心102、突觸共處理器112及歸算器115中之不同暫存器或其他記憶體位置可用以儲存不同資料及不同程式設計指令。如此允許硬體架構支援並行或其他類型之程式設計操作。
如上所述,每一突觸共處理器112之記憶體裝置114可包括多個暫存器。在一些實施例中,該等暫存器可包括與每一可能的連接夥伴(每一胞體核心102)相關聯的暫存器,且用以為每一連接夥伴之頻道保持傳入的輸入資料。該等暫存器亦可包括用以保持在程式設計指令之執行期間使用的參數值及其他值的局部暫存器。在特定實施例中,使用回應於傳入之輸入資料執行的一或多個指令來描述突觸共處理器112之處理操作,且突觸共處理器112中不存在命令迴路。
每一胞體核心102可單獨地控制程式指令在其突觸共處理器112上的安裝,且可為不同頻道提供不同程式指令。舉例而言,可存在引起胞體核心102將同一程式載入至其一些或所有突觸共處理器112中指令。亦可存在引起胞體核心102載入其突觸共處理器112之參數暫存器的指令,該等參數暫存器常具有不同值。應注意,胞體核心102可自給定記憶體區域載入所有此資料,該記憶體區域足夠大以保持該胞體核心之所有突觸共處理器112的所有暫存器的值。可允許每一胞體核心102讀取其突觸共處理器112之單獨的 參數暫存器,而非每頻道暫存器之值。實情為,每頻道暫存器中之值可由突觸處理機112處理,及/或可饋入相關聯歸算器115中,該相關聯歸算器115可由局部/主機胞體核心102程式化以在針對每一頻道接收之資料上適當地操作。至每一歸算器115之輸入可表示在一特定頻道上來自相關聯胞體核心102之所有突觸共處理器112的輸出值。
每一胞體核心102可支援多個新指令以促進如上文所描述的之突觸共處理器112及歸算器115的使用。舉例而言,每一胞體核心102可支援指令,該等指令用於將輸入資料元件發送至所有胞體核心102(其特定頻道)、用於將輸入資料發送至其自有的突觸共處理器112之特定頻道、用於接收來自其自有的歸算器115的結果、用於在其突觸共處理器112及歸算器115中安裝或選擇程式或其他指令,以及用於在突觸共處理器112之參數暫存器中儲存資料。在下文中提供硬體架構中所支援之實例指令的額外細節。
在一些實施例中,圖1A至圖1C中所示之硬體架構可實施於單個積體電路晶片中。該積體電路晶片可以任何合適的方式製造,諸如藉由使用諸如絕緣體上矽(SOI)之長期存在的製造技術或諸如三維積體電路製造技術的最近研發之技術。若需要或期望,圖1A至圖1C中所示之硬體架構的多個個例可耦接在一起並用以擴大可供使用之胞體核心102的數目。舉例而言,多個積體電路晶片可(諸如)藉由使用一或多個高速連接耦接硬體架構之每一個例的信號線路122及信號線路124而通信耦接在一起以提供任何期望數 目之胞體核心102。
此外,在一些實施例中,每一胞體核心102可經組態以執行一特定功能或功能之組合以便在硬體架構中提供期望的功能性。在其他實施例中,每一胞體核心102可為可程式化的,使得胞體核心102之功能可得以定義且可隨著時間或按期望變化。類似地,在一些實施例中,每一突觸共處理器112及歸算器115可經組態以執行一特定功能或功能之組合以便在硬體架構中提供期望的功能性。在其他實施例中,每一突觸共處理器112及歸算器115可為可程式化的,使得共處理器112及歸算器115之功能可得以定義且可隨著時間或按期望變化。
應注意,由胞體核心102執行之處理可平行發生且由每一胞體核心102之突觸共處理器112及歸算器115執行的處理亦可平行發生。以此方式,在給出胞體核心102之間的充分通信基礎結構的情況下,每一胞體核心102能夠經由多個信號線路122及124同時通信。在給出適當數目之胞體核心102、突觸共處理器112、歸算器115以及信號線路122及124的情況下,此硬體架構可支援運算核心之間的巨大數目的通信連接,且彼等通信連接可全部供同時使用。因此,此設計表示具有更多通信頻寬的硬體架構。
儘管圖1A至圖1C說明通用平行運算架構之一個實例,但可對圖1A至圖1C中所示之硬體架構作出各種變化。舉例而言,硬體架構可支援任何合適數目的胞體核心,以及合適數目的突觸共處理器及歸算器。此外,每一胞體核 心、突觸共處理器以及歸算器可以任何其他合適的方式實施,諸如藉由使用胞體核心或突觸共處理器之共用運算資源或藉由使用允許執行並行地執行超過一個的操作的多個歸算器。另外,圖1A至圖1C中的各種組件可經組合、進一步細分、重新佈置或省略,且可根據特定需要添加額外組件。作為特定實例,一或多個胞體核心102可不必與歸算器115結合使用。
圖2及圖3說明根據本發明之圖1A至圖1C之運算架構中的實例通信。如圖2中所示,每一胞體核心102可具有自所有胞體核心102(包括其自身)接收輸入資料的突觸共處理器112。可針對胞體核心102的群組中的所有胞體核心102重複此相同模式。上文所描述之信號線路122及124可用於以合適的方式將每一胞體核心102耦接至所有胞體核心102的一個突觸共處理器112以支援此等通信。
當存在N個胞體核心102時,每一胞體核心102可具備N個突觸共處理器112(每胞體核心102一個突觸共處理器112,包括胞體核心自身)。每一胞體核心102可向所有胞體核心102廣播資訊,且每一胞體核心102可經由其突觸共處理器112自所有其他胞體核心102接收資訊。實際上,在一些實施例中,N個胞體核心102中之每一者的N個突觸共處理器112可支援胞體核心102之間的N個獨立通信網路。
圖3說明在胞體核心之間的兩個獨立通信網路的一個具體實例。如圖3中所示,一個胞體核心102a可向系統中之每一胞體核心102的一個突觸共處理器112廣播輸入資 料。類似地,另一胞體核心102b可向系統中之每一胞體核心102的一個突觸共處理器112廣播資料。在一些實施例中,可同時發生藉由胞體核心102a及胞體核心102b進行廣播。因此,N個胞體核心102可同時參與資料的N個廣播。
應注意,儘管此處的廣播展示為以列及行自一個胞體核心至下一個連續發生,但此僅為了易於說明。正廣播資料之每一突觸共處理器112可替代地經由信號線路122及124將該資料直接廣播至所有胞體核心102的突觸共處理器112。當然,若需要或期望,則亦有可能允許多個胞體核心102(諸如)適當地利用某種定址或爭用機制在相同信號線路122及124上廣播。
儘管圖2及圖3說明圖1A至圖1C之運算架構中的通信實例,但可對圖2及圖3作出各種變化。舉例而言,硬體架構可支援任何合適數目的胞體核心以及合適數目的突觸共處理器。此外,圖2至圖3中的各種組件可經組合、進一步細分、重新佈置或省略,且可根據特定需要添加額外組件。另外,可支援胞體核心102中的任何合適的通信。
圖4及圖5說明根據本發明之圖1A至圖1C的運算架構中的實例共處理器功能性。特定而言,圖4及圖5說明用於實施上文所描述之突觸共處理器112的實例機制。應注意,此等實例實施僅用於說明,且突觸共處理器112可以其他方式實施。
如圖4中所示,第j個胞體核心102之突觸共處理器112可使用上文所描述之算術單元113實施。算術單元113 使用接收自第i個胞體核心102的傳入的輸入資料來執行一或多個期望的運算。算術單元113隨後將所得輸出資料輸出至與第j個胞體核心102相關聯的歸算器115。歸算器115可處理來自與第j個胞體核心102相關聯之多個突觸共處理器112之多個算術單元113之輸出,並將結果提供至第j個胞體核心102。
由圖4中之算術單元113執行之操作可使用程式(Φ)402定義或控制,且程式402使用一或多個參數404操作。程式402及參數404可儲存於記憶體裝置114內或其他位置。該一或多個參數404可由突觸共處理器112、由相關聯胞體核心102或以任何其他合適的方式設定或控制。可藉由算術單元113執行之實例操作可包括:對值進行相加、相減或相乘;跨越與胞體核心102相關聯之所有突觸共處理器112產生定值;輸出突觸共處理器112之識別符;基於測試值選擇多個值中之一個值;或計算值之正負號或平方根倒數。
如圖5中所示,可存在多個操作或操作集合,其在硬體架構內執行。「頻道識別符」值可由突觸共處理器112使用以識別多個可選擇程式(Φ)502中之哪一者將由算術單元113在傳入資料上執行。「頻道識別符」亦可用以控制哪一(哪些)參數504由算術單元113使用及由算術單元113產生的結果所發送至的位置。可選擇程式502及參數504可儲存於突觸共處理器112的記憶體裝置114中或其他位置中。
在一些實施例中,算術單位113及歸算器115中之每一者可以管線式方式實施,且傳入資料可指示純量值或 小的值向量。在此等實施例中,多個純量值或至少一個值向量可接收自第i個胞體核心102,且單一程式502或不同程式502可由算術單元113應用至該等值以產生一輸出值序列。該輸出值序列可提供至歸算器115以用於進一步處理。
儘管圖4及圖5說明圖1A至圖1C之運算架構中的共處理器功能性的實例,但可對圖4及圖5作出各種變化。舉例而言,每一突觸共處理器112可以任何其他經定義或可重組態的方式實施。
圖6說明根據本發明之圖1A至圖1C之運算架構中的實例可程式化共處理器及歸算功能性。特定而言,圖6說明用於控制上文所描述之突觸共處理器112及歸算器115之程式化的實例機制。
如圖6中所示,歸算器115經組態以自與胞體核心102相關聯的多個突觸共處理器112接收輸出資料。歸算器115隨後使用來自突觸共處理器112之輸出執行至少一個操作(由Ψ識別),以產生經提供至相關聯胞體核心102的至少一個結果。由歸算器115執行的一或多個運算可包括使用來自多個突觸共處理器112之輸出執行的任何合適的操作。在一些實施例中,歸算器115可執行一或多個指令序列以支援硬體架構中之各種功能。舉例而言,在平行地接收來自與胞體核心102相關聯之共處理器112的資料之後,歸算器115可對所接收的資料執行可程式化操作並將結果輸出至相關聯之胞體核心102。實例操作可包括對來自所有突觸共處理器112的輸出進行求和或相乘,識別來自突觸共處理器112 的最小或最大輸出,或選擇特定突觸共處理器之值作為輸出。
記憶體裝置602可在此結構中使用以儲存由突觸共處理器112執行的一或多個程式(Φ)。記憶體裝置602亦可用以儲存由歸算器115執行的一或多個程式(Ψ)。記憶體裝置602表示任何合適的揮發性或非揮發性儲存及擷取裝置,諸如一或多個記憶體106、114、117的一部分。
儘管圖6說明圖1A至圖1C之運算架構中之可程式化共處理器及歸算功能性的一個實例,但可對圖6作出各種變化。舉例而言,硬體架構可支架任何合適數目的胞體核心以及合適數目的突觸共處理器與歸算器。此外,圖6中之各種組件可經組合、進一步細分、重新佈置或省略,且可根據特定需要添加額外組件。
圖7及圖8說明根據本發明之使用通用平行運算架構的實例運算系統。如圖7中所示,運算系統700包括至少一個處理器702、至少一個儲存裝置704、至少一個通信單元706以及至少一個輸入/輸出(I/O)單元708。
處理器702可指示併入了上文所描述之胞體核心102、突觸共處理器112、歸算器115以及信號線路122及124的積體電路晶片。處理器702執行指令,諸如彼等可載入至記憶體裝置710中並隨後載入至暫存器或胞體核心102、突觸共處理器112以及歸算器115的其他記憶體中的指令。處理器702可包括任何合適數目的胞體核心102、突觸共處理器112、歸算器115以及信號線路122及124。
記憶體裝置710及持久儲存體712為儲存裝置704之實例,其表示能夠儲存及便於擷取資訊(諸如在暫時或永久性基礎上的資料、程式碼及/或其他合適的資訊)的任何結構。記憶體裝置710可表示隨機存取記憶體或任何其他合適的揮發性或非揮發性儲存裝置。持久儲存體712可包含支援資料之更長期儲存之一或多個組件或裝置,諸如唯讀記憶體、硬碟機、快閃記憶體或光碟。
通信單元706支援與其他系統或裝置的通信。舉例而言,通信單元706可包括網路介面卡或無線收發器,其促進在有線或無線網路上的通信。通信單元706可支援經由任何物理或無線通信連結的通信。
I/O單元708允許資料的輸入及輸出。舉例而言,I/O單元708可為經由鍵盤、滑鼠、小鍵盤、觸控式螢幕或其他合適的輸入裝置之使用者輸入提供連接。I/O單元708亦可將輸出發送至顯示器、印表機或其他合適的輸出裝置。
若需要或期望,則圖1A至圖1C中所示之硬體架構的多個個例可耦接在一起並用以擴大可供使用的胞體核心102的數目。舉例而言,多個積體電路晶片可通信耦接在一起以提供任何期望數目的胞體核心102。此情況之實例展示於圖8中,其中多處理器配置800可在運算系統700作為處理器702使用或在另一運算系統中使用。此處之多處理器配置800包括由至少一個高速連接耦接的至少兩個處理器。在此實例中,四個處理器802至808藉由四個高速連接810環式 耦接,但可使用任何其他合適數目及配置的處理器及高速連接。
每一高速連接810可支援用於耦接圖1A至圖1C中所示之硬體架構的多個個例的任何合適的通信路徑。舉例而言,每一高速連接810可通信耦接至硬體架構之每一實例的第三層級120,使得高速連接810支援在硬體個例之信號線路122及/或124之間的信號輸送。每一高速連接810包括用於在硬體個例之間(諸如在多個積體電路晶片之間)輸送信號的任何合適的結構。
各種類型的高速連接810可用以支援多處理器架構。舉例而言,每一高速連接810可使用兩個積體電路晶片之間的光子連接實施。作為另一實例,積體電路晶片本身可支援「術縫(quilt)」封裝,其中每一積體電路晶片包括沿至少一側的電連接,且該等積體電路晶片經安裝為使得不同晶片上的電連接彼此接觸。然而,應注意,亦可使用任何其他或額外高速連接810。
儘管圖7及圖8說明使用通用平行運算架構之運算系統的實例,但可對圖7及圖8作出各種變化。舉例而言,圖1A至圖1C中所示之硬體架構可用於任何其他合適的系統中以執行任何合適的功能。
圖9說明根據本發明之用於使用通用平行運算架構支援進階運算功能的實例方法900。為了易於解釋,參考圖1A至圖1C中所示之硬體架構來描述方法900。然而,方法900可與任何其他合適的硬體架構一起使用。
如圖9中所示,在步驟902處使用多個平行運算核心執行處理操作。此可包括(例如)一或多個處理器中之胞體核心102執行指令以執行各種運算中之任一運算。該等處理操作可指示由SIMD胞體核心102執行的簡單化操作,直至由全處理器胞體核心102執行的複雜操作。應注意,由於該等操作的相依性,圖9中所示之操作可按次序執行。多個獨立的相同操作鏈可並行執行,且通信及突觸/歸算器操作可使用如上文所描述的頻道定址而平行地執行。
在步驟904處,將來自每一運算核心的處理結果發佈至其他運算核心。此可包括(例如)每一胞體核心102經由信號線路122及124將其處理結果提供至每一胞體核心102的一個突觸共處理器112。在一些實施例中,此舉引起每一胞體核心102之突觸共處理器112接收來自所有胞體核心102的處理結果。
對於每一運算核心,在步驟906處處理來自運算核心之處理結果並在步驟908處歸算該等處理結果。此可包括(例如)與每一胞體核心102相關聯之突觸共處理器112對來自所有胞體核心102之處理結果執行某種類型的處理。下文描述可由突觸共處理器112之算術單元113執行之該等類型的操作的特定實例。此亦可包括每一胞體核心102之歸算器115處理該胞體核心102之突觸共處理器112的輸出。下文描述可由歸算器115執行之該等類型的操作的特定實例。應注意,(諸如)當不同程式Φ及Ψ用於不同的資料頻道時,由突觸共處理器112及歸算器115執行之操作可受到控制且可 變化。
在步驟910處,將歸算之結果提供至運算核心。此可包括(例如)歸算器115將輸出提供至其相關聯的胞體核心102。此時,可藉由使用該等歸算之結果之運算核心在處理操作的進一步執行期間重複方法900。替代地,方法900可結束且稍後可以新資料進行重複。
儘管圖9說明用於使用通用平行運算架構支援進階運算功能之方法900的一個實例,但可對圖9作出各種變化。舉例而言,雖然展示為一系列步驟,但圖9中之各種步驟可重疊、平行發生、以不同次序發生或發生任何次數。
在上文所描述之一些實施例中,每一胞體核心102可將其突觸共處理器112程式化以執行至少一個程式Φ,且一旦傳入資料到達,則可執行程式Φ。胞體核心102之歸算器115使用來自該胞體核心102之所有突觸共處理器112的程式Φ的結果來執行至少一個程式Ψ。在特定實施例中,在給定固定向量大小且無迴路的情況下,每一程式Φ可常常在O(1)時間內執行,且程式Ψ可常常在O(log N)時間內執行。此外,在特定實施例中,由每一胞體核心102之突觸共處理器112及歸算器115執行的集體處理可表達為:
Figure 105115745-A0305-02-0024-22
此處,i指示發送器胞體核心102的身分標識(或胞體核心102的標識加胞體核心102的胞體群組識別符),且N指示胞體核心102之數目(或胞體核心102之數目乘以胞體群組之數目)。此外,j指示頻道標識符,且p指示在突觸共處理 器112(諸如可為或可不為頻道特定的狀態或局部變數)中使用的一或多個參數(諸如參數402或502)。另外,x i 指示第i個胞體核心102之輸出,且y j 指示由歸算器115將其作為結果在頻道j中提供至胞體核心102的輸出。另外,
Figure 105115745-A0305-02-0025-23
()指示由突觸共處理器112針對第j個頻道使用傳入資料x i 及可能的參數p的執行的函數,且Ψ()指示由局部胞體核心102之歸算器115使用突觸共處理器112的輸出執行的函數。
Figure 105115745-A0305-02-0025-24
()函數之實例可包括:
˙r=x*a+b
˙
Figure 105115745-A0305-02-0025-1
˙r=max(x,c)
˙r=min(x,c)
˙r=select(x,a,b)
˙r=index
此處,a、b、cr可指示突觸共處理器112中的暫存器的名稱,且x可指示來自胞體核心102的輸入值(但可替代地使用突觸共處理器112的另一暫存器)。選擇操作測試第一參數之條件(諸如藉由執行簡單的非零測試)並基於該測試結果返回第二參數抑或第三參數。索引操作可特定於利用多個胞體群組的實施。每一胞體群組可包括相同數目的胞體核心102。在下文提供胞體群組之更多細節。在一些實施例中,由突觸共處理器112實施的功能中無一者涉及迴路。
Ψ()函數之實例可包括:
˙v=sum(r[i])
˙v=max(r[i])
˙v=min(r[i])
此處,v指示提供至胞體核心102之歸算器115的輸出,且r[i]指示由歸算器115自突觸共處理器112接收的輸入(來自同一突觸共處理器112的多個值可在利用多個胞體群組的實施中獲得)。最大最小函數中之每一者可返回(i)最大或最小值及(ii)提供該最大或最小值的突觸共處理器112的索引值i。可使Ψ()函數之結果對使用一或多個暫存器之胞體核心102可用。
在此等實例中,突觸共處理器112可不能利用以迴路執行且主動擷取(且在必要等待)輸入的傳統程式來程式化。實情為,每一頻道可與程式Φ相關聯,且當資料到達該頻道時,程式Φ可標記為可執行,且當運算資源變為可用時最終執行程式Φ。當所有突觸共處理器程式Φ完成時,可對歸算程式Ψ之結果進行運算。在有諸如下文提及之一的告誡的情況下,一旦最小數目的突觸共處理器結果為可用時,則可開始藉由歸算程式Ψ對結果進行運算。歸算程式Ψ的結果可保存在每頻道暫存器中。當胞體核心102發出讀取歸算結果的指令時,歸算器115可隨後準備好為該頻道產生下一個歸算結果。在此之前,可阻斷歸算器115針對該頻道的操作。
若期望,則突觸共處理器112及歸算器115中的暫存器的分配及頻道的分配可抽象化。舉例而言,替代參考程式說明書中之此等資源之每一者的絕對索引,一種分配 機制可用以達成多程式執行的等效物。舉例而言,當載入程式(包括Φ程式及Ψ程式)時,所使用的實際暫存器可選自暫存器檔案中可用的暫存器,且可選擇可用的頻道。將不一定會產生明確並行,係因為該程式基於傳入資料而調用。在完成該程式後,可使在暫存器與頻道方面使用的資源再次可用。由突觸共處理器112及歸算器115執行的實際指令無需對其有任何瞭解。相反,上傳之程式碼的指令可使用絕對暫存器編號或索引,且該抽象可發生在較高層級處,其中由胞體核心102進行程式載入之前,基於程式及可用資源的需求進行適當的程式碼生成或重寫。
對於藉由歸算程式Ψ對結果進行運算(一旦最小數目的突觸共處理器結果可用即開始)的一個實例告誡如下。取決於操作及可能的資料類型,硬體架構可支援可藉由不遵循特定操作次序,以可重複性為代價而顯著加速程式Ψ之執行的模式。舉例而言,由於有取消的可能,故浮點運算不遵循結合性規則。此情況之特定實例為當浮點加法必須以相同次序執行以保證每次產生準確的相同結果。此可在一個輸入值仍不可用而操作次序中之後面的其他輸入值可用的情況下產生減速(slowdown)。歸算器115可經程式化以等待輸入值,使得操作次序始終保持(導致減速),或歸算器115可經程式化以不按次序執行求和(允許更快地獲得結果,但具有潛在的較低可重複性)。
如上所述,硬體架構之實施可包括胞體核心102之超過一個的群組。此類方法可在單個積體電路中實施該 等胞體群組,或不同胞體群組可作為單獨的積體電路實施(且該等積體電路可諸如藉由電連接或光學連接而耦接在一起)。若整個資料集可映射至胞體核心102,則若干類型的程式(包括下文更詳細論述的彼等程式)可以此類型之硬體架構顯著加速。
為促進利用多個胞體群組的解決方案,一些資源及操作可取決於每一突觸共處理器112之通信夥伴的數目而加以複製。舉例而言,在簡單模型中,每一突觸共處理器112可準確地自一個胞體核心102接收結果。在利用多個胞體群組的解決方案中,每一突觸共處理器112可自每胞體群組一個胞體核心102接收結果。在突觸共處理器程式中,若關於資料傳遞的資源(諸如用以保持經傳輸資料的暫存器或用於保持結果之暫存器)被複製,則此可正如在利用單個胞體群組之實施中表達。因此,在每一突觸共處理器暫存器存在S個複本的情況下,單個處理器可經實施以與至多S個胞體群組一起工作。為啟用每胞體群組參數,提供對係資料源之胞體群組編號的存取可為有用的或必要的。此可使用上文所描述之索引操作達成,除用於特定通信的胞體核心索引外,其返回胞體群組編號。
若多個胞體群組實體分離,則該多個胞體群組之實施可以任何合適的方式達成,諸如藉由使用光子或其他高速互連件耦接多個積體電路。在每一胞體核心102將其結果寫入至專用匯排流的情況下,每一胞體群組中之不同胞體核心102的各別匯排流可相連接,其將每一匯排流自1:N 通信匯排流變為S:N匯排流。(例如)若經傳輸資料攜載完整位址(諸如為最一般的形式[胞體群組ID,胞體ID,頻道ID]),則可准許此情況,從而只要可確保每一胞體群組中之每一胞體核心102上的突觸共處理器112接收到資料,即允許在每胞體群組之基礎上路由資料。
另外,存在用於實施用以使用信號線路122及124將胞體核心102耦接至突觸共處理器112之網路的多個可能的方法。舉例而言,如上文所描述,N個獨立網路中之每一者可具有N個胞體核心102中之一者作為來源並將該胞體核心102連接至N個突觸共處理器112(每一胞體核心102有一個突觸共處理器112)。當用於每一胞體核心102之每一輸出的專用網路將資料傳遞中可能的爭用降至最低時,其意謂當無傳輸發生時,資源不會被使用。理想地,所有胞體核心102同步工作並在大致相同的時間傳輸資料,在僅使用專用信號線路的情況下,該等胞體核心102可得到良好處置。實際上,由於各種因素,胞體核心102可失去同步,該各種因素諸如執行(如等待資源)或不同的動態決策(如分支預測)中之微小效應。在彼情況下,傳輸不能恰好在相同時間發生。由於經傳輸資料通常小,用以連接胞體核心102之網路中之一個(或更小數目的)網路的使用可能無需顯著減速即可係足夠的,且其將提供改良的資源利用率。應注意,在上文所描述之位址[胞體群組ID,胞體ID,頻道ID]中,若每胞體群組的每一胞體核心102具有其自有的將其連接至每一胞體核心102上的突觸共處理器112的專用網路,則可 丟棄胞體群組ID。連接網路之另一實施可具有每個胞體群組一個單個網路,且所有資料封包具有與其附接的完整位址。
存在各種在胞體核心102之間創建網路的方式。一種可能性係將所有資料封包自中心起點發送至每一接收端(recipient)。資料封包亦可易於自此起點發送至其他胞體群組。此方法之優勢包括直接遞送、高輸送量(與至不同目標之傳輸無衝突)以及低潛時。一個缺點為高成本,尤其對於每個胞體或每個胞體群組一個網路如此。
另一方法將係提供與胞體核心102的有限集合之點對點連接且使接收端進一步分佈資料封包。該等接收端可連接至胞體核心102的不同子集,且此等子集可經選擇以確保所有胞體核心102連接。理想地,該等子集可經選擇以歸算或最小化網路之「直徑」,其中網路之直徑係指兩個核心102之間的最大距離(逐步達到目標之胞體核心102的數目)。在給定對每一胞體核心102之連接數目的固定上限的情況下,該程度之超立方體架構可最小化該直徑。
為確保所有胞體核心102接收資料並傳播儘可能多的個別連接上之傳輸,可使用各種方法。舉例而言,熟知演算法可考慮發送器胞體核心102之索引及資料接收自其的連結。在彼等情況中,來自每一胞體核心102的資料可以固定模式發送,但該模式對於個別胞體核心102可為不同的,從而將連接利用率最大化。此方法亦允許消除每一網路之中心開始位置,係因為每一胞體核心102僅可與所選擇 的相鄰者通信,且在必要時該等相鄰者可轉寄資料。網路中之一或多個胞體核心102可負責將資料發送至其他胞體群組,且不同胞體核心102可負責與不同胞體群組通信。
亦可使用動態演算法。舉例而言,每一個接收的封包可自一個胞體核心102轉寄至所有相鄰者(除發送該封包的胞體核心102外)。每一相鄰胞體核心102隨後可追蹤其是否已發送封包。若如此,則可僅丟棄該封包。若非如此,則相鄰胞體核心102的突觸共處理器112接收並轉寄該封包。此方法的一個優點在於該網路可更快地完全溢出。此方法的另一優點在於將多個胞體群組整合為該設計係更直接的。將1:N匯流排架構(其從不需要檢查發送器衝突)變為S:N架構可為巨大進步。若一個胞體群組的胞體核心102將封包轉寄至另一胞體群組中的胞體核心102,則後者對封包之看法可類似於其如何看待任何其他傳入封包。實際上,胞體間核心連結可被視為與普通胞體間胞體內群組連接相同。
如上所述,多個新指令可用以促進突觸共處理器112及歸算器115的使用。此等指令包括由胞體核心102執行之指令,以及提供至突觸共處理器112及歸算器115並由突觸共處理器112及歸算器115執行的指令。下文呈現可用以支援新硬體架構的新指令的類型的實例。應注意,當下文描述特定指令時,在硬體架構中可按需要或期望支援其他或額外指令。
表1說明可由胞體核心102及突觸共處理器執行的實例指令。在表1中,oreg指示胞體核心暫存器(諸如在記憶體裝置106中),且yreg指示突觸共處理器暫存器(諸如在 記憶體裝置114中)。
Figure 105115745-A0305-02-0032-2
表2說明可由歸算器115執行的實例操作。歸算操作可對數性地進行多個循環,因此歸算操作可得益於將多個此類操作以不同樹狀層級管線化。
Figure 105115745-A0305-02-0032-3
在一些實施例中,每一突觸共處理器112可執行SIMD操作。每一胞體核心102可先於特定頻道上的資料通信將用於該頻道之指令序列上傳至局部突觸共處理器112。另外,每一胞體核心102可藉由廣播將用於該頻道之指令序列上傳至所有其突觸共處理器112。胞體核心102可將應在所需輸入資料變得可用時執行的操作進一步程式化至歸算器115之中。表3說明可上傳至突觸共處理器112以供執行的指令的類型的實例。
Figure 105115745-A0305-02-0033-4
上文所描述的硬體架構可促進在機器學習、科學運算、視訊遊戲及其他領域中的廣泛類別的演算法。基於以上指令的類型,下文描述如何可使用此專利文件中描述的硬體架構加速並解決六個實例類型的問題。
作為第一個實例,在深度學習中使用的可由所提議的架構加速的一個演算法為稀疏寫碼。在其最簡單的形式中,稀疏編碼採用∥x∥=1的正規化輸入向量x且運算將能量e最小化的標準化稀疏輸出向量y,其定義為:
Figure 105115745-A0305-02-0034-5
此處,F係因數矩陣,且∥y∥=1。此外∥y e i 指示y中之條目的絕對值的總和,且λ係控制輸出稀疏性的常數。在非監督的學習模式中,因數矩陣F經選擇以將跨越訓練輸入集合x i 的能量e i 的總和E最小化。實現兩種最小化的一種方式為梯度下降,其負梯度定義為:-▽ yi E=-(y i -Fx i )+λ sgn y i (3)
-▽ F E i (y i -Fx i )
Figure 105115745-A0305-02-0034-25
x i (4)
接著加以限制∥y i ∥=1。此處,sgn y指示y中之條目之正負號的向量。
為運算(y-Fx),訓練輸入x及輸出y可存在於共用的虛擬或局部胞體記憶體中。因數矩陣F的條目(其不稀疏)可存在於突觸共處理器112的暫存器中。具體而言,因數矩陣F的條目F jk 可存在第j個胞體核心102的第k個突觸共處理器112的暫存器中。由胞體核心102廣播至其突觸共處理器112的SIMD指令可使用相對定址,使得第k個胞體核心102可同時跨越胞體核心102將輸入條目x k 廣播至第j個胞體核心102的第k個突觸共處理器112。第j個胞體核心102的第k個突觸共處理器以SIMD方式執行乘法F jk x k ,其隨後由第j 個胞體核心102的歸算器115跨越胞體核心的突觸共處理器112以對數時間求和以得到(Fx) j 且由此得到第j個條目(y-Fx) j
為運算F的梯度下降,條目F jk (y-Fx) j x k 成正比例地遞增。第j個胞體核心102剛已運算(y-Fx) j ,且其第k個突觸共處理器112已接收最近的x k 值並將其儲存於突觸共處理器112的暫存器中。因此,第j個胞體核心102將(y-Fx) j 廣播至其第k個突觸共處理器112廣播,其隨後以SIMD方式將結果乘以所儲存的x k 值,並將該值的倍數與儲存於該突觸共處理器112處之F jk 值相加。
為了以偽碼表達此運算,由於胞體核心102為多指令多資料(MIMD)核心,故採用i表示上面放置指令的胞體核心102的索引的約定。由於MIMD,該等指令可由i參數化。對比而言,由於突觸共處理器112可為SIMD核心,所以胞體核心102可將相同指令序列廣播至其所有突觸共處理器112。出於明晰之目的,暫存器用變數名而非暫存器編號加以標記。鑒於此等約定,用於深度學習問題的稀疏寫碼可如下使用硬體架構解決。
Figure 105115745-A0305-02-0035-7
Figure 105115745-A0305-02-0036-8
作為第二實例,深度學習中所使用的可由所提議的架構加速的另一個演算法涉及受限的波茲曼(Boltzmann)機器。在此類型的網路中,值為{-1,1}的輸入向量x及輸出向量y可如下有概率與波茲曼分佈相關:
Figure 105115745-A0305-02-0036-6
此處,Z為分隔函數,且呈其最簡單形式的能量E(x,y)可表達為:E(x,y)=-Σ j,k y j F jk x k (6)
就在給定輸入的情況下輸出條件性地獨立的意義而言,此網路係「受約束的」,且反之亦然。此意謂,在給定輸入的情況下,可以一機率獨立地取樣輸出,該機率表達為:P(y j =1|x)=σ(Σ k F jk x k ) (7)
其中σ(x)係對數函數。用於此網路的對比發散非監督的訓練演算法將耦接F的梯度計算為:▽F=y'
Figure 105115745-A0305-02-0036-26
x'-y
Figure 105115745-A0305-02-0036-27
x (8)
其中x為訓練輸入,y如上文解釋自x取樣,x'自y取樣,且y'自x'取樣。
為實施此問題,訓練輸入x k 及輸出y j 可存在於共用的虛擬或局部胞體記憶體中。耦接F jk 可存在於突觸共處理器112的暫存器中。具體而言,每一耦接F jk 可存在於第j個胞體核心102的第k個突觸共處理器112的暫存器中。為解釋此演算法如何加速,首先解釋取樣步驟。在給定輸入向量x的情況下,經由同時跨越胞體核心102的SIMD通信,第k個胞體核心102將輸入條目x k 廣播至第j個胞體核心102的第k個突觸共處理器112。第j個胞體核心102的第k個突觸共處理器112隨後以SIMD方式執行乘法F jk x k ,其隨後由第j個胞體核心102的歸算器115跨越該胞體核心的突觸共處理器112以對數時間求和以得到Σ k F jk x k 。第j個胞體核心102隨後運算此總和的對數函數並將其用作自{-1,1}隨機取樣y的機率 j
隨後,發生梯度之運算。以訓練輸入x開始,執行如上文所描述之取樣步驟三次以得到第j個胞體核心102中的y、第k個胞體核心102中的x'以及第j個胞體核心102中的y'。第j個胞體核心102將y j (y2) j 廣播至其所有突觸共處理器112以儲存於其暫存器中。隨後,高頻寬通信用以同時將(x') k 自第k個胞體核心102傳輸至每一個胞體核心102的第k個突觸共處理器112。最後,第j個胞體核心102的第k個突觸共處理器112計算(y') J (x') k -y j x k 並從其保持的值F jk 減去其倍數。
在偽碼中,正向取樣演算法可表達為:
Figure 105115745-A0305-02-0038-9
反向取樣可為類似的。考慮到取樣,梯度演算法可表達為:
Figure 105115745-A0305-02-0038-10
作為第三實例,可得益於較好通信的不同機器學習方法為階層叢集。最簡單的階層叢集方法以其自有叢集中的每一項目開始。隨後,在每一階層層級上,階層叢集方法將以最小最短距離分開的兩個叢集集合成單個叢集。
改良的階層叢集方法的第一步驟涉及計算叢集之間的距離的初始矩陣。每一作用中胞體核心102可表示叢集,且其突觸共處理器112可儲存至其他叢集的平方距離。在第一次迭代中,每一叢集為單個項目,因此每一作用中胞體核心102將其項目的座標傳播至其他胞體核心102之對應的突觸共處理器112,且其突觸共處理器112平行運算其他項目至其自身項目的平方距離。改良的階層叢集方法的第二步驟涉及得到叢集之間的最小平方距離。每一胞體核心102(經由其歸算器115)使用最小操作歸算其自有的突觸共處理器的平方距離,且每一胞體核心102將此數目廣播至所有胞體核心102,其以最小操作再次歸算該等值(經由其歸算器115)。假設在值相同的情況下(諸如選擇最低索引突觸核心的值)存在一可預測的連結斷路器,第二最小操作在所有胞體核心102上產生相同結果。替代例為對胞體核心102執行第二最小操作並將結果廣播回至所有其他胞體核心102。
改良之階層叢集方法的第三個步驟涉及得到以此最小距離分開的兩個叢集。對應於最佳叢集的胞體核心102運算至除自身外的胞體核心102的最小距離,且此下一個最佳從集隨後廣播回至所有胞體核心102。改良之階層叢 集方法的第四個步驟涉及將兩個選擇的叢集組合為單個聚集。每一胞體核心102取其至最佳叢集及下一個最佳叢集的距離的最小值,將最小距離儲存回對應於最佳叢集的突觸共處理器112中,並在此胞體核心的頻道上廣播該最小距離。對應於最佳叢集的胞體核心102隨後用此等經廣播的距離替換其所有突觸共處理器112的距離。最後,下一最佳胞體核心102及其相對應的突觸共處理器112退出運算。隨後重複第二步驟至第四步驟直至僅存在單個叢集。
在偽碼中,計算平方距離矩陣的第一步驟(針對每一座標重複)可表達為:
Figure 105115745-A0305-02-0040-11
得到叢集之間的最小距離的第二個步驟可表達為:
Figure 105115745-A0305-02-0040-12
Figure 105115745-A0305-02-0041-13
得到以最小距離分開的兩個叢集的第三個步驟可表達為:
Figure 105115745-A0305-02-0041-14
Figure 105115745-A0305-02-0042-15
組合兩個最接近的叢集的第四個步驟可表達為:
Figure 105115745-A0305-02-0042-16
Figure 105115745-A0305-02-0043-17
作為第四個實例,另一普遍的機器學習方法涉及貝氏網路,其將複雜的多變數的接合機率函數分解為條件機率的乘積,該等條件機率中之每一者僅涉及少量變數(高達該網路的入度)。隨後問題為運算每一變數的邊限分佈。在標準串行架構中,此可使用置信傳播演算法(Belief Propagation Algorithm)實現,其與下者成時間正比:Variables×In-Degree×2 In-Degree (9)
此演算法迭代地運算以上數目的乘積,並隨後運算Variables×In-Degree2 In-Degree 中的此類乘積中的每一者。
使用新硬體架構,只要存在適當的胞體核心102及突觸共處理器112,此可在恆定時間中實現。對任何一個胞體核心102的扇入僅為2 In-Degree ,所以此並不使通信飽和。為運算乘積,一者可累加log的總和(其中exp及log運算在胞體核心102中執行)或展開歸算器115之可用累加方法以包括乘積以及總和。
作為第五個實例,可以架構加速的與人工智慧不相關的其他應用包括分子模擬及虛擬實境。對於此等應用,假設突觸共處理器112除乘法及加法之外,還具有用於平方根倒數運算(1/
Figure 105115745-A0305-02-0044-29
)的硬體。兩個應用中昂貴的步驟係類似的。著重於分子模擬,其為庫侖電位的運算。
Figure 105115745-A0305-02-0044-18
其中q j 為第j個電荷且r jk 為第j個電荷與第k個電荷之間的距離。高頻寬通信處理注意同時自第k個胞體核心102向第j個胞體核心102的第k個突觸共處理器跨越所有jk同時廣播第k個電荷的座標。在每一突觸共處理器112中,加法及乘法用以運算r jk 2 ,且隨後使用平方根倒數以運算1/rjk。最後,藉由第j個胞體核心102使用累加器(歸算器115)跨越其突觸共處理器112運算。
作為第六個實例,可由提議的架構自二次時間加速至恆定時間的另一類演算法涉及幾何演算法,諸如凸包演算法。此等演算法可不需要所提議的架構的非線性能力且可僅依賴於所提議的架構的矩陣處理功能。其以高維度展示此等演算法的一個關鍵步驟係動態行列式運算。此運算可由矩陣向量乘法在二次時間中連續實現。然而,此等乘法可使用提議的架構歸算至恆定時間。
應注意,以上提供的此等實例僅為證實如何使用此專利文件中描述之硬體架構來解決對特定問題的特定解決方案。當然,硬體架構可用以執行其他功能。此外,上 文所描述之特定問題可使用利用硬體架構實施的其他解決方案解決。
此專利文件中所描述之硬體架構及相關聯指令/操作可取決於實施而提供優於先前方法的各種優點。舉例而言,本發明提供允許架構與人類大腦的能力相競爭的硬體架構(若以充足數目的組件實施)。此外,硬體架構之功能性可用以改良其他領域的運算,諸如人工智慧、深度學習、分子模擬以及虛擬實境。
在一些實施例中,此專利文件中所描述之各種功能由電腦程式實施或支援,該電腦程式由電腦可讀程式碼形成且體現於電腦可讀媒體中。片語「電腦可讀程式碼」包括任何類型的電腦碼,包括原始程式碼、目標程式碼以及可執行程式碼。片語「電腦可讀媒體」包括能夠由電腦存取之任何類型的媒體,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)、硬碟驅動機、光碟(CD)、數位影音光碟(DVD)或任何其他類型的記憶體。「非暫時性」電腦可讀媒體不包括輸送暫時性電或其他信號的有線、無線、光學或其他通信連結。非暫時性電腦可讀媒體包括其中可永久地儲存資料的媒體及其中可儲存資料並稍後覆寫資料的媒體,諸如可重寫光碟或可抹除記憶體裝置。
可有利的係闡述貫穿此專利文件使用的某些詞及片語的定義。術語「應用」、「程式」係指一或多個電腦程式、軟體組件、指令集、程序、功能、物件、類別、個例、相關資料或其經調適以用於以合適的電腦程式碼(包括 原始程式碼、目標程式碼或可執行程式碼)實施的部分。術語「通信」以及其衍生詞涵蓋直接及間接通信兩者。術語「包括」及「包含」以及其衍生詞意謂包含而非限制。術語「或」係包含性的,意謂及/或。片語「與......相關聯」及其衍生詞可意謂包括、包括於......內、與......互連、含有、含於......之內、連接至......或與......連接、耦接至......或與......耦接、可與......通信、與......合作、交錯、並置、接近於、結合至......或與......結合、具有、具有......的性質、與......具有關係或具有與......的關係或類似者。片語「(at least one of)」當用以項目列表中時,意謂可使用一或多個所列項目中一或多者的不同組合,且可僅需該清單中的一個項目。舉例而言,「A、B以及C中至少一者」包括以下組合中之任一種組合:A、B、C、A與B、A與C、B與C以及A與B與C。
此專利文件中的描述不應解讀為暗示著任何特定元件、步驟或功能係必須包括於申請專利範圍之範疇中的基本或關鍵元件。此外,除非在特定請求項中明確使用準確詞語「用於......的構件」或「用於......的步驟」接著使用識別功能的分詞片語,否則申請專利範圍中無一者旨在相對於所附申請專利範圍或請求項要素中之任何一者援引35 U.S.C.§ 112(f)。在請求項內之諸如(但不限於)「機制」、「模組」、「裝置」、「(unit)」、「組件」、「元件」、「部件」、「設備」、「機器」、「系統」、「處理器」、「處理裝置」或「控制器」的術語的使用被理解為且意欲指代熟習相關技術者 已知的結構,如由申請專利範圍本身之特徵進一步修改或增強,且不意欲援引35 U.S.C.§ 112(f)。
雖然本發明已描述某些實施例及大體上相關聯的方法,但此等實施例及方法的更改及排列將對熟習此項技術者顯而易見。因此,實例實施例的以上描述不定義或約束本發明。在不背離本發明的精神及範疇的情況下,其他變化、替代以及更改亦為可能的,如以下申請專利範圍中所定義。
100:第一層級
102:胞體核心
104:處理電路
106:記憶體裝置

Claims (37)

  1. 一種用於支援進階運算功能之設備,其包含:多個平行運算核心,每一運算核心組配來執行一或多個處理操作並產生輸入資料;與每一運算核心相關聯之多個平行共處理器;多個通信線路,其組配來將該輸入資料自每一運算核心輸送至與該等運算核心中之每一者相關聯的該等共處理器中之一指定共處理器,該等共處理器組配來處理該輸入資料並產生輸出資料;以及多個歸算器電路,每一運算核心與該等歸算器電路中之一者相關聯,每一歸算器電路組配來從該相關聯運算核心之該等共處理器中之每一者接收該輸出資料、將一或多個函數應用於該輸出資料及將一或多個結果提供至該相關聯運算核心。
  2. 如請求項1之設備,其中該等運算核心、共處理器、歸算器電路以及通信線路設於一積體電路晶片的多個層中。
  3. 如請求項1之設備,其中該等運算核心完全連接,而其中每一運算核心能夠經由該等通信線路及該等共處理器來與所有其他運算核心直接通訊。
  4. 如請求項1之設備,其中該等運算核心中之每一者組配來執行支援以下項目中之至少一者的指令:在該等通信線路上之低潛時發送操作; 將輸入資料發送至該運算核心之指定共處理器;以及程式化該運算核心之相關聯共處理器。
  5. 如請求項1之設備,其中該等共處理器中之每一者組配來執行支援以下項目中之至少一者之指令:以一特定序列接收並處理輸入資料;對所接收之輸入資料及所儲存之參數執行一或多個可程式化操作;以及將輸出資料轉送至一歸算器電路。
  6. 如請求項5之設備,其中該一或多個可程式化操作包括以下項目中之一或多者:加法、乘法、最小值、最大值、平方根倒數、基於一測試值選擇一值、及輸出一唯一共處理器識別符。
  7. 如請求項1之設備,其中該等歸算器電路中之每一者組配來執行支援以下項目中之至少一者的指令:自該相關聯運算核心之該等共處理器平行地接收輸出資料;對所接收之輸出資料執行一或多個可程式化操作;以及將一或多個結果轉送至該相關聯運算核心。
  8. 如請求項7之設備,其中該一或多個可程式化操作包括以下項目中之一或多者:總和、最小值、最大值、及選擇一數值。
  9. 如請求項1之設備,其中該等共處理器及通信線路形成 該等運算核心之間的多個通信通道。
  10. 如請求項1之設備,其中每一歸算器電路的一結果定義為:
    Figure 105115745-A0305-02-0050-20
    其中:y j 表示與一特定運算核心j相關聯之該歸算器電路之結果;Ψ j 表示由與該特定運算核心j相關聯之該歸算器電路執行的一函數;Φ j 表示由與該特定運算核心j相關聯之該等共處理器執行的一函數;x i 表示由一第i個運算核心產生之一輸入;p ij 表示一或多個狀態或局部變數;以及N表示運算核心之數目。
  11. 如請求項10的設備,其中Ψ j Φ j 分別表示該歸算器電路及該等共處理器的可選函數。
  12. 如請求項1之設備,其中:該等運算核心、共處理器以及歸算器電路組配來在多個通道上通訊;以及該等共處理器及歸算器電路組配成使得由該等共處理器及歸算器電路執行之操作基於接收特定輸入資料時所透過之該通道而變化。
  13. 如請求項1之設備,其中:該等運算核心形成運算核心之一第一群組; 該設備進一步包含運算核心之至少一個額外群組;以及該等共處理器組配來從運算核心之該至少一個額外群組接收輸入資料。
  14. 一種用於支援進階運算功能之系統,其包含:多個積體電路裝置,每一積體電路裝置包含:多個平行運算核心,每一運算核心組配來執行一或多個處理操作並產生輸入資料;與每一運算核心相關聯之多個平行共處理器;多個通信線路,其組配來將該輸入資料自每一運算核心輸送至與該等運算核心中之每一者相關聯之該等共處理器中之一指定共處理器,該等共處理器組配來處理該輸入資料並產生輸出資料;以及多個歸算器電路,每一運算核心與該等歸算器電路中之一者相關聯,每一歸算器電路組配來從該相關聯運算核心之該等共處理器中之每一者接收該輸出資料、將一或多個函數應用於該輸出資料、及將一或多個結果提供至該相關聯運算核心;以及至少一個高速連接,其耦接該等積體電路裝置中的該等通信線路中之至少一些。
  15. 如請求項14之系統,其中在每一積體電路裝置中,該等運算核心完全連接,而每一運算核心能夠經由該等通信線路及該等共處理器來與所有其他運算核心直接通 訊。
  16. 如請求項14之系統,其中該等運算核心中之每一者組配來執行支援以下項目中之至少一者的指令:透過該等通信線路之低潛時發送操作;將輸入資料發送至該運算核心之指定共處理器;以及程式化該運算核心之相關聯共處理器。
  17. 如請求項14之系統,其中該等共處理器中之每一者組配來執行支援以下項目中之至少一者之指令:以一特定序列接收並處理輸入資料;對所接收之輸入資料及所儲存參數執行一或多個可程式化操作;以及將輸出資料轉送至一歸算器電路。
  18. 如請求項17之系統,其中該一或多個可程式化操作包括以下項目中之一或多者:加法、乘法、最小值、最大值、平方根倒數、基於一測試值選擇一值、及輸出一唯一共處理器識別符。
  19. 如請求項14之系統,其中該等歸算器電路中之每一者組配來執行支援以下項目中之至少一者的指令:自該相關聯運算核心之該等共處理器平行地接收輸出資料;對所接收之輸出資料執行一或多個可程式化操作;以及將一或多個結果轉送至該相關聯運算核心。
  20. 如請求項19之系統,其中該一或多個可程式化操作包括以下項目中之一或多者:總和、最小值、最大值、及選擇一數值。
  21. 如請求項14之系統,其中每一歸算器電路之一結果定義為:
    Figure 105115745-A0305-02-0053-21
    其中:y j表示與一特定運算核心j相關聯之該歸算器電路之結果;Ψ j 表示由與特定運算核心j相關聯之該歸算器電路執行的一函數;Φ j 表示由與該特定運算核心j相關聯之該等共處理器執行的一函數;x i 表示由一第i個運算核心產生之一輸入;p ij 表示一或多個狀態或局部變數;以及N表示運算核心之數目。
  22. 如請求項14之系統,其中:該等運算核心、共處理器以及歸算器電路組配來在多個通道上通訊;以及該等共處理器及歸算器電路組配成使得由該等共處理器及歸算器電路執行的操作基於接收特定輸入資料時所透過之該通道而變化。
  23. 如請求項14之系統,其中對於每一積體電路裝置:該等運算核心形成運算核心之一第一群組; 該積體電路裝置進一步包含運算核心之至少一個額外群組;以及該等共處理器組配來從運算核心之該至少一個額外群組接收輸入資料。
  24. 一種用於支援進階運算功能之方法,其包含:使用多個平行運算核心產生輸入資料,每一運算核心組配來執行一或多個處理操作;對於每一運算核心,將來自該運算核心之該輸入資料發佈至該等運算核心中之每一者的一指定共處理器,該等運算核心中之每一者與多個平行共處理器相關聯;對於每一運算核心,使用與該運算核心相關聯之該等共處理器處理來自所有該等運算核心的該輸入資料以產生輸出資料;對於每一運算核心,歸算來自與該運算核心相關聯之該等共處理器之該輸出資料以產生一或多個結果;以及對於每一運算核心,將該一或多個結果提供至該運算核心。
  25. 如請求項24之方法,其中多個通信線路將該輸入資料自該等運算核心輸送至該等共處理器。
  26. 如請求項24之方法,其進一步包含使用該等運算核心中之每一者以執行支援以下項目中之至少一者之指令:透過該等通信線路之低潛時發送操作; 將輸入資料發送至該運算核心之指定共處理器;以及程式化該運算核心之相關聯共處理器。
  27. 如請求項24之方法,其進一步包含使用該等共處理器中之每一者以執行支援以下項目中之至少一個之指令:以一特定序列接收並處理輸入資料;對所接收之輸入資料及所儲存之參數執行一或多個可程式化操作;以及將輸出資料轉送至一歸算器電路,該歸算器電路將來自與該等運算核心中之一者相關聯的該等共處理器之該輸出資料歸算為該一或多個結果。
  28. 如請求項27之方法,其中該一或多個可程式化操作包括以下項目中之一或多者:加法、乘法、最小值、最大值、平方根倒數、基於一測試值選擇一值、及輸出一唯一共處理器識別符。
  29. 如請求項24之方法,其進一步包含使用多個歸算器電路中之每一者以執行支援以下項目中之至少一者之指令:自該相關聯運算核心之該等共處理器平行地接收輸出資料;對所接收之輸出資料執行一或多個可程式化操作;以及將一或多個結果轉送至該相關聯運算核心。
  30. 如請求項29之方法,其中該一或多個可程式化操作包括 以下項目中之一或多者:總和、最小值、最大值、及選擇一數值。
  31. 如請求項24之方法,其中來自與該等運算核心中之一者相關聯之該等共處理器之該輸出資料的每一歸算的一結果定義為:
    Figure 105115745-A0305-02-0056-19
    其中:y j 表示與一特定運算核心j相關聯之歸算的結果;Ψ j 表示在與該特定運算核心j相關聯之該歸算期間執行的一函數;Φ j 表示由與該特定運算核心j相關聯之該等共處理器執行的一函數;x i 表示一第i個運算核心之一輸入;p ij 表示一或多個狀態或局部變數;以及N表示運算核心之數目。
  32. 如請求項24之方法,其中:該等運算核心在多個通道上通訊;以及該輸入資料之該處理及該輸出資料之該歸算基於接收特定輸入資料時所透過的該通道而變化。
  33. 如請求項24之方法,其中:該等運算核心及其相關聯共處理器劃分為多組群組;以及與每一運算核心相關聯之該等共處理器自一或多 組該等群組中的該等運算核心接收輸入資料。
  34. 一種用於支援進階運算功能之方法,其包含:自一第一運算核心發出第一指令以供由與該第一運算核心相關聯的多個平行共處理器執行,及自該第一運算核心發出第二指令以供由與該第一運算核心相關聯的一歸算器電路執行;使用該第一運算核心產生輸入資料;使用該等共處理器執行該等第一指令,以在該等共處理器上處理來自該第一運算核心的該輸入資料及來自一或多個額外運算核心的輸入資料,並產生輸出資料;使用該歸算器電路執行該等第二指令以將一或多個函數應用於該輸出資料並產生一或多個結果;以及將該一或多個結果提供至該運算核心。
  35. 如請求項34之方法,其進一步包含使用該第一運算核心執行支援以下項目中之至少一者之指令:透過耦接至該第一運算核心之通信線路的低潛時發送操作;將輸入資料發送至該等共處理器;以及程式化該等共處理器。
  36. 如請求項34之方法,其進一步包含使用該等共處理器執行支援以下項目中之至少一者之該等第一指令:以一特定序列接收並處理輸入資料;對所接收之輸入資料及所儲存之參數執行一或多 個可程式化操作;以及將輸出資料轉送至該歸算器電路。
  37. 如請求項34之方法,其進一步包含使用該歸算器電路執行支援以下項目中之至少一者之該等第二指令:自該等共處理器平行地接收輸出資料;對所接收之輸出資料執行一或多個可程式化操作;以及將該一或多個結果轉送至該運算核心。
TW105115745A 2015-05-21 2016-05-20 用於支援進階運算功能之設備、系統與方法 TWI704465B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201562165052P 2015-05-21 2015-05-21
US62/165,052 2015-05-21
US201562173866P 2015-06-10 2015-06-10
US62/173,866 2015-06-10
US15/157,218 2016-05-17
US15/157,218 US10108580B2 (en) 2015-05-21 2016-05-17 General-purpose parallel computing architecture

Publications (2)

Publication Number Publication Date
TW201706870A TW201706870A (zh) 2017-02-16
TWI704465B true TWI704465B (zh) 2020-09-11

Family

ID=57320620

Family Applications (3)

Application Number Title Priority Date Filing Date
TW105115745A TWI704465B (zh) 2015-05-21 2016-05-20 用於支援進階運算功能之設備、系統與方法
TW110134067A TWI792557B (zh) 2015-05-21 2016-05-20 用於支援進階運算功能之設備、系統與方法
TW109126873A TWI747426B (zh) 2015-05-21 2016-05-20 用於支援進階運算功能之設備、系統與方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW110134067A TWI792557B (zh) 2015-05-21 2016-05-20 用於支援進階運算功能之設備、系統與方法
TW109126873A TWI747426B (zh) 2015-05-21 2016-05-20 用於支援進階運算功能之設備、系統與方法

Country Status (10)

Country Link
US (2) US10108580B2 (zh)
EP (1) EP3298486B1 (zh)
JP (3) JP6816027B2 (zh)
CN (2) CN107636638B (zh)
AU (3) AU2016264100B2 (zh)
CA (1) CA2984155A1 (zh)
ES (1) ES2929626T3 (zh)
HK (1) HK1252999A1 (zh)
TW (3) TWI704465B (zh)
WO (1) WO2016187232A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366325B2 (en) * 2011-12-07 2019-07-30 Paul Burchard Sparse neural control
CN107636638B (zh) 2015-05-21 2021-10-26 高盛有限责任公司 通用并行计算架构
US11449452B2 (en) 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
JP2018160180A (ja) * 2017-03-23 2018-10-11 富士通株式会社 情報処理システム、情報処理装置および情報処理システムの制御方法
CN110720095A (zh) * 2017-04-06 2020-01-21 高盛有限责任公司 通用并行计算架构
KR102586173B1 (ko) * 2017-10-31 2023-10-10 삼성전자주식회사 프로세서 및 그 제어 방법
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
GB201904267D0 (en) * 2019-03-27 2019-05-08 Graphcore Ltd A networked computer with multiple embedded rings
CN110516332B (zh) * 2019-08-15 2021-06-11 浪潮电子信息产业股份有限公司 并行计算结果的过滤方法及系统
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
WO2023171278A1 (ja) * 2022-03-09 2023-09-14 株式会社エヌエスアイテクス 演算装置及び演算方法
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations
EP4354282A1 (en) * 2022-10-10 2024-04-17 Huawei Technologies Co., Ltd. Data processing method and apparatus, processor, and network device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140301395A1 (en) * 2013-04-06 2014-10-09 Citrix Systems, Inc. Systems and methods for synchronizing mss and pmtu in ncore and cluster systems

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112287A (en) * 1993-03-01 2000-08-29 Busless Computers Sarl Shared memory multiprocessor system using a set of serial links as processors-memory switch
US4965717A (en) 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
DE68927474T2 (de) * 1988-12-29 1997-05-22 Sharp Kk Neuro-Rechner
US5247613A (en) * 1990-05-08 1993-09-21 Thinking Machines Corporation Massively parallel processor including transpose arrangement for serially transmitting bits of data words stored in parallel
JPH05242065A (ja) * 1992-02-28 1993-09-21 Hitachi Ltd 情報処理装置及びシステム
JP2561028B2 (ja) * 1994-05-26 1996-12-04 日本電気株式会社 サイドローブキャンセラ
US6023753A (en) * 1997-06-30 2000-02-08 Billion Of Operations Per Second, Inc. Manifold array processor
US6389404B1 (en) * 1998-12-30 2002-05-14 Irvine Sensors Corporation Neural processing module with input architectures that make maximal use of a weighted synapse array
US6588008B1 (en) * 2000-04-11 2003-07-01 International Business Machines Corporation Assembler tool for processor-coprocessor computer systems
US6829697B1 (en) * 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
DE10061998A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
US6839808B2 (en) * 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
GB2378271B (en) * 2001-07-30 2004-12-29 Advanced Risc Mach Ltd Handling of coprocessor instructions in a data processing apparatus
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7612443B1 (en) 2003-09-04 2009-11-03 University Of Notre Dame Du Lac Inter-chip communication
US9292904B2 (en) * 2004-01-16 2016-03-22 Nvidia Corporation Video image processing with parallel processing
US20060179273A1 (en) 2005-02-09 2006-08-10 Advanced Micro Devices, Inc. Data processor adapted for efficient digital signal processing and method therefor
US7500083B2 (en) * 2005-08-15 2009-03-03 Silicon Informatics Accelerated processing with scheduling to configured coprocessor for molecular data type by service and control coprocessor upon analysis of software code
US20070204268A1 (en) 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
JP5242065B2 (ja) 2007-02-22 2013-07-24 三菱重工環境・化学エンジニアリング株式会社 間接加熱式キルン
US8046727B2 (en) * 2007-09-12 2011-10-25 Neal Solomon IP cores in reconfigurable three dimensional integrated circuits
US8136071B2 (en) * 2007-09-12 2012-03-13 Neal Solomon Three dimensional integrated circuits and methods of fabrication
US7941637B2 (en) * 2008-04-15 2011-05-10 Freescale Semiconductor, Inc. Groups of serially coupled processor cores propagating memory write packet while maintaining coherency within each group towards a switch coupled to memory partitions
US8374986B2 (en) * 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
US9063783B2 (en) 2008-11-24 2015-06-23 Red Hat, Inc. Coordinating parallel execution of processes using agents
JP5990466B2 (ja) * 2010-01-21 2016-09-14 スビラル・インコーポレーテッド ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置
US8492886B2 (en) * 2010-02-16 2013-07-23 Monolithic 3D Inc 3D integrated circuit with logic
JP5776688B2 (ja) * 2010-04-30 2015-09-09 日本電気株式会社 情報処理装置及びタスク切り替え方法
US8949577B2 (en) * 2010-05-28 2015-02-03 International Business Machines Corporation Performing a deterministic reduction operation in a parallel computer
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US8359453B2 (en) 2010-09-13 2013-01-22 International Business Machines Corporation Real address accessing in a coprocessor executing on behalf of an unprivileged process
US8965834B2 (en) 2011-12-07 2015-02-24 Extendabrain Corporation Particle methods for nonlinear control
US20130304990A1 (en) 2012-05-08 2013-11-14 International Business Machines Corporation Dynamic Control of Cache Injection Based on Write Data Type
US9292569B2 (en) * 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US9367357B2 (en) * 2013-01-18 2016-06-14 Nec Corporation Simultaneous scheduling of processes and offloading computation on many-core coprocessors
US9146777B2 (en) * 2013-01-25 2015-09-29 Swarm Technology Llc Parallel processing with solidarity cells by proactively retrieving from a task pool a matching task for the solidarity cell to process
EP2962210A4 (en) 2013-02-28 2016-11-02 Intel Corp OPERATING A MECHANISM FOR ENUMERATION AND / OR CONFIGURATION OF AN INTERCONNECTION PROTOCOL FOR A DIFFERENT INTERCONNECTION PROTOCOL
JP5660149B2 (ja) 2013-03-04 2015-01-28 日本電気株式会社 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム
WO2015035327A1 (en) * 2013-09-06 2015-03-12 Futurewei Technologies, Inc. Method and apparatus for asynchronous processor with fast and slow mode
CN104391821A (zh) * 2014-11-20 2015-03-04 天津大学 一种多核共享simd协处理器的系统级模型构建方法
US10210134B2 (en) 2015-05-21 2019-02-19 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
US11449452B2 (en) 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
CN107636638B (zh) 2015-05-21 2021-10-26 高盛有限责任公司 通用并行计算架构

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140301395A1 (en) * 2013-04-06 2014-10-09 Citrix Systems, Inc. Systems and methods for synchronizing mss and pmtu in ncore and cluster systems

Also Published As

Publication number Publication date
ES2929626T3 (es) 2022-11-30
CA2984155A1 (en) 2016-11-24
AU2021229205A1 (en) 2021-10-07
AU2016264100B2 (en) 2020-01-02
AU2016264100A1 (en) 2017-11-09
TWI792557B (zh) 2023-02-11
JP2022046557A (ja) 2022-03-23
TW202044059A (zh) 2020-12-01
JP2018518753A (ja) 2018-07-12
CN107636638A (zh) 2018-01-26
JP2021057076A (ja) 2021-04-08
JP7335312B2 (ja) 2023-08-29
EP3298486A1 (en) 2018-03-28
US20190026248A1 (en) 2019-01-24
TW201706870A (zh) 2017-02-16
US10108580B2 (en) 2018-10-23
TWI747426B (zh) 2021-11-21
AU2021229205B2 (en) 2021-10-21
JP6997285B2 (ja) 2022-01-17
AU2020201520A1 (en) 2020-03-19
CN107636638B (zh) 2021-10-26
EP3298486B1 (en) 2022-08-24
WO2016187232A1 (en) 2016-11-24
CN113641627A (zh) 2021-11-12
AU2020201520B2 (en) 2021-09-09
HK1252999A1 (zh) 2019-06-06
TW202201241A (zh) 2022-01-01
US10810156B2 (en) 2020-10-20
EP3298486A4 (en) 2019-01-16
AU2020201520C1 (en) 2022-01-06
JP6816027B2 (ja) 2021-01-20
US20160342568A1 (en) 2016-11-24

Similar Documents

Publication Publication Date Title
TWI704465B (zh) 用於支援進階運算功能之設備、系統與方法
US10210134B2 (en) General-purpose parallel computing architecture
US11449452B2 (en) General-purpose parallel computing architecture
JP2023015205A (ja) 汎用並列コンピューティングアーキテクチャ
US11709783B1 (en) Tensor data distribution using grid direct-memory access (DMA) controller
WO2019089553A1 (en) Tensor radix point calculation in a neural network
WO2019084254A1 (en) TENSEUR HANDLING IN A NEURONAL NETWORK