TWI771675B - 控制流程屏障和可重組態的資料處理器 - Google Patents
控制流程屏障和可重組態的資料處理器 Download PDFInfo
- Publication number
- TWI771675B TWI771675B TW109114892A TW109114892A TWI771675B TW I771675 B TWI771675 B TW I771675B TW 109114892 A TW109114892 A TW 109114892A TW 109114892 A TW109114892 A TW 109114892A TW I771675 B TWI771675 B TW I771675B
- Authority
- TW
- Taiwan
- Prior art keywords
- configurable
- token
- barrier
- control
- storage area
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17325—Synchronisation; Hardware support therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/40—Bus coupling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
可重組態資料處理器包含佈設以進行資料處理運算之執行片段的處理單元之陣列。控制屏障網路係耦接至在陣列中的處理單元。控制屏障網路包含:控制匯流排,可組態以在控制屏障網路中形成信號路線,以及複數個控制屏障邏輯單元,具有連接至控制匯流排及連接至處理單元之陣列的輸入及輸出。在複數個邏輯單元中的邏輯單元可組態以在輸入上耗用來源符記和狀態信號,並且基於在輸入上的來源符記和狀態信號來在輸出上生成屏障符記。同樣,該邏輯單元能基於在該輸入上的該來源符記及狀態信號來生成用於該處理單元之陣列的致能信號。
Description
本技術係關於可重組態架構之組態,其特別能應用到用於粗粒度(coarse-grain)可重組態架構及其它分佈式執行系統的控制流程邏輯。
可重組態處理器,包括場可程式化閘陣列(FPGA; field programmable gate array),能組態以比可使用執行電腦程式的通用處理器來達成更有效率或快速的實施各種功能/函數。所謂粗粒度可重組態架構(例如,CGRA(coarse-grain reconfigurable architecture))係於在其中在陣列中的可組態單元比典型的、更細粒度FPGA中使用更複雜來發展,並且可使能更快速或更有效率的執行各種類別的功能/函數。例如,已提出一種CGRA,其能夠使能對於機器學習及人工智慧工作量(workload)實施能源效率加速度器(energy-efficient accelerator)。請見Prabhakar等人於2017年6月24-28日在加拿大安大略省多倫多市在ISCA ’17發表的「Plasticine: A Reconfigurable
Architecture for Parallel Patterns」。
在CGRA和包含參與資料處理運算的複數個處理單元的其它處理系統中,要在一處理單元中執行的部分的資料處理運算可與跨系統分佈的處理單元中被執行的其它部分同步。例如,數個部分的資料處理運算可能需要在下一個部分能安全開始之前完成。因此,需求用於將控制信號分佈於處理系統之元件之間的技術。
為了將運算效率最大化,且為了能夠在處理系統上的處理單元之間進行調和/協調,需要有效率地管理控制信令的機構。
說明了使能有效控制資料處理系統之處理單元之間(包括在粗粒度可重組態陣列處理器之可重組態處理單元之間)的信令的技術。
說明了處理系統,其包含佈設以進行資料處理運算之執行片段(execution fragment)的處理單元之陣列。在陣列中的處理單元係佈設以回應於致能信號來致能由處理單元執行執行片段,並且產生可使用以指示在處理單元中進行的執行片段之狀態的狀態信號。控制屏障網路係耦接至在陣列中的處理單元。該控制屏障網路包含:控制匯流排,可組態以在控制屏障網路中形成信號路線;以及複數個控制屏障邏輯單元,具有連接至該控制匯流排及連接至該處理單元之陣列的輸入及輸出。
控制屏障係可組態於可組態及可重組態的架構中,用以提供合適於支援在可組態單元之陣列中(例如包括在粗粒度可重組態陣列處理器之可組態單元中)複雜資料處理運算的信號選路。
該控制屏障網路提供用以登記或記錄來自數個相異來源的入站符記及狀態的能力,其能以組態資料來界定並且基於明定的該入站符記(token)和狀態信號之組合來生成輸出屏障符記和其它信號。於此說明的範例足夠彈性以藉由將屏障邏輯分解成多個層級來支援跨任意的來源數目控制屏障。
於此說明的技術中,在複數個控制屏障邏輯單元中的邏輯單元可組態以例如藉由在輸入上登記來源符記及狀態信號來在輸入上消耗/耗用來源符記及狀態信號。於此說明的技術中,在複數個控制屏障邏輯單元中的邏輯單元可組態以基於所耗用的來源符記和狀態信號來在輸出上生成屏障符記。同樣,該邏輯單元能基於在該輸入上的該來源符記及狀態信號來生成用於該處理單元之陣列的致能信號。
控制匯流排能包含藉由組態資料可組態的可組態互連,用以將攜載在控制屏障邏輯單元之輸出上生成的屏障符記的該控制匯流排上的線連接至耗用來源符記的邏輯單元之輸入。控制匯流排能可組態以形成信號路線,其當來源符記至在該複數個邏輯單元中多於一邏輯單元之輸入時連接在該複數個邏輯單元中一邏輯單元之該屏障符記輸出。控制匯流排能可組態以形成將源自於在該複數個邏輯單元中多於一邏輯單元的屏障符記提供給在複數個邏輯單元中一邏輯單元之輸入的信號路線。
在複數個邏輯單元中的控制屏障單元能操作地耦接至(或為部分的)在該處理單元之陣列中之關聯的處理單元。
在於此說明的技術中,該邏輯單元包括:具有輸入及輸出的符記存放區(store);可組態輸入電路,可組態用以將選定的線在該控制匯流排中連接且可組態成到該符記存放區之輸入的關聯處理單元之狀態信號線;以及屏障符記輸出電路,可組態以回應於符記存放區之輸出的第一可組態組合而將屏障符記提供給控制匯流排。
在複數個邏輯單元中的邏輯單元可以包括回饋電路,其可組態以回應於該符記存放區之輸出的第二可組態組合來提供回饋信號以清空該符記存放區。在一些實施例中,該第一及第二可組態組合可以是相同的。邏輯單元能包括致能信號輸出電路,用以回應於該符記存放區之輸出的第三可組態組合來對於關聯的可組態單元提供致能信號。在一些實施例中,該第一及第三可組態組合可以是相同的。
在一些實施例中,處理系統包括將處理單元之陣列互連的資料匯流排,其與控制匯流排分開。在於此說明的技術中,資料匯流排包括封包交換網路,並且該控制匯流排可組態以形成在執行對應的執行片段期間為靜態的信號路線。在其它實施例中,該控制匯流排可為封包交換網路。仍在其它實施例中,該控制匯流排及資料匯流排可在相同實體網路上、在不同虛擬通道上操作。
於此說明的技術之其它態樣和益處能見於圖式、詳細發明說明以及附隨的申請專利範圍的檢視中。
下列說明將典型地參考特定結構實施例及方法。要了解的是,並沒有打算將本技術限於具體揭示的實施例及方法,而是本技術可使用其它特徵、元件、方法及實施例來實現。說明了用以闡述本技術的較佳的實施例,並不限制其範圍,其係由申請專利範圍來界定。本領域具有通常知識的該些者將認知在接下來的說明上各種等效變化。
圖1為闡述包括主機120、記憶體140以及可重組態資料處理器110的系統之系統圖。如在圖1的範例中所繪示,可重組態資料處理器110包括可組態單元之陣列190,其包括如於此所說明的控制屏障網路。
處理器110包括藉由線125連接至主機120的外部I/O介面130,以及藉由線145連接至記憶體140的外部I/O介面150。I/O介面130、150經由匯流排系統115連接至可組態單元之陣列190。匯流排系統115可具有攜載一個區塊的資料之匯流排寬度,其可以是例如128位元(更一般而言,對遍及128位元之參考可被視為範例塊尺寸)。
為了以組態檔案來將可組態單元之陣列190中的可組態單元組態,主機120能經由在可重組態資料處理器110中的介面130、匯流排系統115及介面150發送組態檔案給記憶體140。組態檔案可以如適合特定架構的許多途徑來載入,包括在可組態處理器110外側的資料路經中。組態檔案能經由記憶體介面150從記憶體140取回。接著能以分佈序列來發送區塊的組態檔案到在可重組態資料處理器110中的可組態單元之陣列190中的可組態單元。
外部時脈產生器170或其它時脈信號源能提供時脈信號175或多個時脈信號給在可重組態資料處理器110中的元件,包括可組態單元之陣列190和匯流排系統115以及外部資料I/O介面。
在陣列190中的可組態單元可組態以執行陣列190之組態檔案所設計用於的資料處理運算之片段。在一實施例中,執行片段(「EF(execution fragment)」)由代表工作量的程式之部分組成。EF可由成組的迴圈(loop)、或成組的圖形節點或在其處需要同步的某其它工作之單元所包圍的計算所組成。EF可由如適合程式之固定的或可變的工作量所組成;同樣的,不同的EF可包含不同的計算量。EF可代表平行型樣(parallel pattern)或平行型樣之部分。
控制屏障網路係組態以在可使用於執行片段之協調的可組態單元之間建立控制信號路線。控制屏障網路係可組態於可組態及可重組態的架構中,用以提供合適於支援在可組態單元之陣列中(例如包括在CGRA處理器之可組態單元中)複雜資料處理運算的信號選路。
該控制屏障網路提供用以登記或記錄來自在CGRA上數個相異來源的入站符記及狀態的能力,其能以組態資料存放區來界定並且基於明定的該入站符記和狀態信號之組合來生成輸出屏障符記和其它信號。於此說明的範例足夠彈性以藉由將屏障邏輯分解成多個層級來支援跨任意的來源數目控制屏障。
能以其它類型的資料處理器來利用如於此所說明的控制屏障網路,其它類型的資料處理器包括處理單元之陣列,其進行可能為了更廣泛的資料處理運算之目的而需要協調的執行片段。
圖2為簡化方磚圖,其包含可組態單元之陣列,其中在陣列中的可組態單元為在資料匯流排系統中的節點。
在此範例中,可組態單元之陣列300包括複數類型的可組態單元。在此範例中,可組態單元之類型包括型樣計算單元(PCU; Pattern Compute Unit)、型樣記憶體單元(PMU; Pattern Memory Unit)、交換單元(S)以及位址產生及合併(Address Generation and Coalescing)單元(各者包括二個位址產生器AG及共用CU)。舉這些類型的可組態單元之功能的例子,請見Prabhakar等人於2017年6月24-28日於加拿大安大略省多倫多市在ISCA ’17發表的「Plasticine: A Reconfigurable Architecture For Parallel Patterns」,其有如於此全部提出般地藉併入來參考。這些可組態單元之各者包含儲存代表用以運行程式之安裝或順序其一者的組態資料之成組的暫存器或正反器(flip-flop),並且能包括若干個巢狀迴圈、各個迴圈疊代器(iterator)之限制、要針對各個級執行的指令、運算元之來源以及用於輸入及輸出介面的網路參數。
此外,這些可組態單元之各者含有組態存放區,其包含儲存可用來在巢狀迴圈中或相反追蹤進展的狀態之成組的暫存器或正反器。組態檔案含有代表執行程式之組件的初始組態或開始狀態的位元串流。此位元串流稱為位元檔案。程式載入為基於位元檔案之內容在可組態單元中安裝組態存放區的過程,用以允許所有組件執行程式(亦即,機器)。程式載入亦需要載入所有PMU記憶。
匯流排系統包括將在陣列中的可組態單元互連的連結。在陣列層級網路中的連結包括一或多種(在本情形中為二)實體資料匯流排:塊級(chunk-level)向量匯流排(例如,128位元的資料)和字組級(word-level)純量匯流排(例如,32位元的資料)。舉例而言,在交換單元311及312之間的互連321包括與128位元之向量匯流排寬度互連的向量匯流排,以及與32位元之純量匯流排寬度互連的純量匯流排。也同樣,能包含可組態互連的控制匯流排(請見圖3)被包括在由在用於方磚的組態檔案中的組態位元所指定的信號路線上之攜載多個控制位元中。在一些實施例中,控制匯流排能包括從資料匯流排分開的實體線。在其它實施例中,控制匯流排能使用與分開的協定相同的實體線或以時間共享程序來實施。
實體匯流排在資料被轉移的粒度(granularity)上是相異的。在一實施例中,向量匯流排能攜載包括16位元組(=128 bits)的資料作為其酬載的區塊。純量匯流排能具有32位元酬載,且攜載純量運算元或控制資訊。控制匯流排能攜載控制交握(handshake),像是符記(token)和其它信號。向量及純量匯流排能被封包交換(packet-switched),包括指示各個封包之目的地的標頭(header)和其它資訊,像是能被使用以當封包亂序接收時重裝配的順序號碼(sequence number)。各個封包標頭能含有目的地識別符,其識別目的地交換單元之地理座標(例如在陣列中的橫列和直行),以及含有介面識別符,其識別在使用以到達目的地單元的目的地交換(例如,北、南、東、西等)上的介面。
圖2A闡述將在陣列層級網路中的元件連接的範例交換單元。如在圖2A的範例中所繪示,交換單元能具有8個介面。交換單元之北、南、東及西介面被使用於交換單元之間的連接。交換單元之東北、東南、西北及西南介面各者係使用以對PCU或PMU實例作成連接。在各個方磚象限(quadrant)中的兩個交換單元具有對包括多個位址產生(AG)單元和連接至該多個位址產生單元的合併單元(CU)的位址產生單元及合併單元(AG CU)之連接。合併單元(CU)在AG之間進行仲裁且處理記憶體請求。交換單元的8個介面之各者能包括向量介面、純量介面以及用以與向量網路、純量網路及控制網路通訊的控制介面。
在組態以於機器之執行片段的執行期間,能使用在陣列級網路上的一或多個交換單元之向量匯流排和向量介面來經由一或多個單元交換器和在單元交換器之間的一或多個連結發送資料給可組態單元。
由方磚的組態所實施的資料處理運算包含在對應的可組態單元(在此範例中為AG、CU、PMU、PCU)之間分佈且由對應的可組態單元執行的資料處理運算之複數個執行片段。
在此範例中的控制屏障網路包含與在陣列中的可組態單元耦接的複數個可組態控制屏障邏輯單元。在此範例中,複數個控制屏障邏輯單元包括在或操作地耦接至位址產生器AG的控制屏障邏輯單元(例如,301)、在PMU中的控制屏障邏輯單元(例如,302)和在PCU中的控制屏障邏輯單元(例如,303)。用於給定資料處理運算的控制屏障網路能組態以加強執行片段之間的關係,用以調協進行跨方磚分佈的執行片段之結束和開始的時序。
控制屏障邏輯單元係連接至控制匯流排,其在此範例中係使用可組態互連來實施(未繪示 – 請見圖3)。控制匯流排能使用組態資料來組態,用以形成支援設計用於進行資料處理運算的方磚之特定組態中的控制屏障邏輯單元之間的信號路線。
在一實施例中,可組態單元包括於組態載入過程中載入的或在組態卸載過程中卸載的組態及狀態暫存器持定單元組態檔案。暫存器能以串列鏈(serial chain)來連接且能透過通過串列鏈的移位位元之過程載入。在一些實施例中,可能有並聯或串聯佈設的多於一個串列鏈。當可組態單元接收例如在一匯流排週期(cycle)中128位元的組態資料時,可組態單元在每週期1位元的速率將此資料移位通過其串列鏈,其中移位器週期可在與匯流排週期相同的速率來運行。將對於可組態單元採用128移位器週期以載入具有在向量介面之上接收的128位元的資料的128組態位元。
在組態方磚之前,能使用相同向量匯流排經由一或多個單元交換器及在單元交換器之間的一或多個連結來發送組態檔案或位元檔案到在陣列級網路上使用一或多個交換單元之向量匯流排和向量介面的可組態單元。舉例而言,能經由在位址產生器AG中的載入控制器與交換單元311之西(W)向量介面之間的連結320、交換單元311及交換單元311之東南(SE)介面與PMU 341之間的連結331來發送特定於可組態單元PMU 341的單元檔案中區塊的組態資料給PMU 341。用於控制屏障網路的組態資料能被包括在用於關聯的可組態單元的可組態資料中,或是經由其它組態資料結構來提供。
可組態單元透過多個記憶體介面來與記憶體介接。能使用數個AGCU來存取記憶體介面之各者。各個AGCU含有可重組態純量資料路徑,用以產生對於晶片外記憶體的請求。各個AGCU含有FIFO(用於組織資料的先進先出緩衝器)用以緩存向外(outgoing)命令、資料及來自晶片外記憶體的進入(incoming)回應。
能載入組態檔案以為了特定資料處理運算的目的(包括在可組態單元中的執行片段、互連組態以及控制屏障網路組態)來明定方磚的組態,包括控制屏障邏輯單元及控制匯流排。用於協調組態檔案之載入及卸載的技術係在於11/21/2018申請由Shah等人共有名為「Configuration Load of a Reconfigurable Data Processor」的美國專利申請案第16/197,826號中描述,其有如於此全部提出般地藉併入來參考。
圖3闡述具有移除的資料網路的方磚之部分(圖2之右上部分),並且繪示部分的控制匯流排,包括可使用於在控制屏障邏輯單元之間形成信號路線的可組態互連。在陣列之闡述的部分中複數個可組態單元包括交換器S(例如,350)、PMU(例如,351)、PCU(例如,352)、AG(354)以及CU(355)。控制屏障邏輯單元(例如,370)被包括在陣列中的可組態單元中。在此範例中,排除交換器S及合併單元CU的所有的可組態單元包括控制屏障邏輯單元。在其它範例中,能利用控制屏障邏輯單元之不同的分佈,包括在控制屏障邏輯單元連接至在陣列中多於一的可組態單元的範例,以及在控制屏障邏輯單元連接至所有可組態單元中的範例(例如,包括在闡述的範例中的S及CU類型的單元)。
可組態互連係由垂直導體(例如,360)被水平導體(例如,361)相交之柵格所闡述。交換盒(例如,362)由組態資料所設定,用以將特定線互連或是將在水平導體與垂直導體中的線設定於相交處。同樣的,可組態單元之各者能包括輸入及輸出(未繪示),以用於控制信號使用能組態以連接至水平及垂直導體中特定線的可組態互連來選路。
在此實施例中,控制屏障邏輯單元(例如,370)之各者包括複數個輸入及輸出(例如,371),其可組態用於對在互連之水平導體中的特定線連接。在此闡述中,在可組態互連中的控制屏障邏輯單元之間的連接係以在可組態互連中的水平導體來作成。此闡述並未在能以可組態互連及控制屏障邏輯單元作成的可組態連接之實施及分佈上建議任何限制。
可組態交換器能一般使用具有連接至儲存用於控制屏障邏輯單元之可組態檔案之位元的暫存器的控制輸入的傳遞閘(pass gate)來實施。在一些實施例中,組態形成在控制屏障邏輯單元之輸入和輸出之間持續執行資料處理運算下去的靜態路線,用以建立實施以支援特定資料處理運算的控制屏障網路以及用以支援資料處理運算的方磚之可組態單元之間所分佈的執行片段。在其它實施例中,組態可形成依據執行程式的階段改變的動態路線,或是作為控制流程述詞(if-then-else構造)的結果,或是代表執行片段之控制流程相依定序(control-flow-dependent sequencing)的其它動態、輸入相依的運算。
圖4為闡述像是型樣計算單元(PCU)的範例可組態單元400之方塊圖。在可組態單元之陣列中的可組態單元包括用以儲存包含特定於對應的可組態單元之複數區塊的(或是其它尺寸的子檔案)組態資料的單元檔案的組態資料存放區420(例如,串列鏈),以及包括關聯的控制屏障邏輯單元475。在可組態單元之陣列中的可組態單元各者包括經由線422連接至組態資料存放區420的單元組態載入/卸載邏輯440,用以執行單元組態載入處理。單元組態載入處理包括經由匯流排系統(例如,向量輸入)接收特定於可組態單元之單元檔案區塊,並且將接收的區塊載入到可組態單元之組態資料存放區420。
在此範例中,在複數個可組態單元中的可組態單元中的組態資料存放區420包含閂鎖器(latch)之串列鏈,其中閂鎖器儲存在可組態單元中的資源之控制組態的位元。在組態資料存放區中的串列鏈包括用於組態資料的移位暫存器和串聯連接之用於狀態資訊及計數器值的第二移位暫存器鏈。
可組態單元能使用三對應組的輸入及輸出(I/O):純量輸入/輸出、向量輸入/輸出以及控制輸入/輸出,來與純量、向量及控制匯流排介接。能使用純量IO以通訊單一字組的資料(例如,32位元)。能使用向量IO以通訊區塊的資料(例如,128位元)(在像是於單元組態載入處理中接收組態資料的情形中),以及在跨多個PCU之間的長管線之組態之後於運算期間傳送及接收資料。能使用控制IO以通訊控制信號,像是執行可組態單元的開始或結束。控制輸入係由控制方塊470所接收,並且由控制方塊470提供控制輸出。
使用在能包括一或多個向量FIFO的向量FIFO方塊460中的向量FIFO來緩存各個向量輸入。使用純量FIFO 450來緩存各個純量輸入。使用輸入FIFO將資料生成者與耗用者之間的時序去耦合,並且藉由使其耐受於輸入延遲不匹配而簡化可組態單元間(inter-configurable-unit)的控制邏輯。
能提供輸入組態資料410給向量FIFO作為向量輸入,且接著轉移到組態資料存放區420。能使用向量輸出來從組態資料存放區420卸載輸出組態資料430。
在此範例中的可組態單元包括在方塊480中的多個可重組態資料路徑。在可組態單元中的資料路徑能被組織成多級(級1…級N)、可重組態SIMD(單一指令,多筆資料)管線。推入到在可組態單元中組態串列鏈的區塊的資料包括用於在可組態單元中各個資料路徑之各級的組態資料。在組態資料存放區420中的組態串列鏈係經由線421連接至在方塊480中的多條資料路徑。
在闡述的範例中之PCU係設計來執行資料處理運算之執行片段,其能包含在應用中單一、最內層平行型樣,或是合適於使用控制屏障網路來控制的其它型樣。PCU資料路徑能被組織成多級、可重組態SIMD管線。此設計使各個PCU能達成高計算密度,並且開拓跨線道(lane)的迴圈層級平行性(parallelism)和跨級的管線平行性兩者。各個SIMD線道之各個級(級1…級N)能由功能性單元(FU; functional unit)和關聯的管線暫存器所組成。FU能例如進行32位元字組級算術及二進制運算,包括對於浮點及整數運算的支援。如在SIMD中單一管線級運算中的FU,在範例實施例中,各個級需要僅單一組態暫存器。來自各個FU的結果被寫入到其關聯的暫存器中。
在各個線道中的管線暫存器能跨管線級而被鏈接在一起,用以允許活值(live value)在相同線道內的級之間傳播。能使用兩類型的PCU內(intra-PCU)網路來捕捉FU之間的跨線道通訊:允許從多個線道將值降減成單一純量的降減樹網路(reduction tree network),和允許使用PR作為跨級之滑動窗來在模板應用中開拓再使用的移位網路(shift network)。兩者的網路在PR內使用專用的暫存器,用以最小化硬體負擔(hardware overhead)。
各個向量IO(例如,向量FIFO 460)允許在PCU中每線道一字組的通訊,並且在像是讀取且寫入到在PMU中的暫存記憶體(scratchpad)以及在多個PCU之間跨長管線傳送立即資料的情形中使用。使用輸入FIFO將資料生成者與耗用者去耦合,並且藉由使其耐受於輸入延遲不匹配而簡化PCU間的控制邏輯。FIFO 450、460能產生狀態信號,像是FIFO空的或FIFO非空的信號,其係連接至控制方塊470以及在單元中的其它電路,並且能使用以指示執行片段的狀態,像是需要的輸入資料在FIFO中是否可獲得。
控制IO(Cntl輸入,Cntl輸出)係連接至控制方塊470,並且使用以通訊控制信號,像是執行PCU的開始或結束,或使用以指示反壓(backpressure)。
可重組態的計數器之鏈471產生型樣疊代索引及能被使用來指示執行片段之狀態且能被使用來協調可組態單元之元件之間的執行的狀態及控制信號。例如,計數器鏈471能產生計數器做完信號,其能被使用來指示執行片段之狀態,像是在執行片段中的迴圈是否完成。
當控制方塊470致能計數器其中一者時,能致能在PCU中的執行片段之執行。基於應用的控制和資料相依性,控制方塊能組態以組合來自本地FIFO和全域控制輸入兩者的多個狀態信號,用以觸發PCU執行。能使用可重組態組合邏輯和用於狀態機之可程式化可逆計數器(up-down counter)來實施控制方塊470。
控制屏障邏輯475被包括在此可組態單元之範例中。屏障邏輯475能為部分的控制方塊470,或被實施為在裝置上分開的方塊。屏障邏輯475係耦接至控制輸入且耦接至控制輸出。同樣,屏障邏輯475係耦接至控制方塊470及計數器鏈471,用於在如上討論所組態的控制屏障網路之支援中交換狀態信號和控制信號。
型樣記憶體單元(例如,PMU)能含有與打算用於位址計算及其它純量計算的可重組態純量資料路徑耦接的高速暫存記憶體(scratchpad memory),連同在PCU中使用的匯流排介面。能使用PMU以將晶片上記憶體(on-chip memory)分散到遍及可重組態單元之陣列。在一實施例中,在PMU中的記憶體內的位址計算係在PMU資料路徑上進行,同時核心計算係在PCU內進行。PMU亦能包括屏障邏輯單元,其組態以與PMU之元件交換狀態及控制信號,並且能使用以在PMU中致能片段之執行。此外,在此範例中的位址產生器AG亦能包括屏障邏輯單元,其組態以與AG之元件交換狀態及控制信號,並且能使用以在AG中致能執行片段。
圖5闡述可使用於可組態單元之陣列中之控制屏障邏輯單元之範例,用以形成如於此所述的可組態控制屏障網路。在圖5中的範例可使用為例如圖4之屏障邏輯475。圖5之屏障邏輯單元包括輸入(例如,501、551、557)和輸出(例如,502、561),其係連接至控制匯流排(圖3之可組態互連)和關聯的可組態單元,像是上述範例之PCU、PMU、AG。
控制屏障邏輯單元包括符記存放區,其在此範例中包含複數個可逆計數器UDC(例如,510)。在其它實施例中,不同類型的閂鎖器,像是設定/重置SR閂鎖器及類似者,能被使用來實施符記存放區。仍在其它實施例中,能使用FIFO緩衝器之各種實施來實施符記存放區。UDC之各者具有增量輸入(例如,511)和遞減輸入(例如,512)。能使用增量輸入來將儲存在UDC中的邏輯0改變成邏輯1,或換言之設定在符記存放區中的值。能使用遞減輸入來將儲存在UDC中的邏輯1改變成邏輯0,或換言之重置在符記存放區中的值。
符記存放區係耦接至可組態輸入電路,在此範例中其包含複數個可組態縱橫交換器(crossbar switch)。可組態輸入電路之狀態縱橫器550具有輸入551,其連接至可使用以指示在陣列中的可組態單元中執行片段狀態的信號。在此範例中,狀態信號能包含來自在能使用以指示執行片段之狀態的關聯可組態單元中複數個計數器的計數器做完信號。狀態縱橫器550包括輸出552、553,其可連接至增量縱橫器530及遞減縱橫器540。
可組態輸入電路之增量縱橫器530將增量信號提供給在符記存放區中UDC之各者,並且具有連接至控制匯流排之可組態互連的輸入557以及連接至狀態縱橫器550之輸出的輸入。因此,各個UDC基於來自狀態縱橫器550和來自可組態互連輸入557的輸出之可組態選擇具有增量信號。如下所討論的,增量縱橫器亦具有連接以在由屏障邏輯520產生的線552上接收屏障符記的輸入。
可組態輸入電路之遞減縱橫器540將遞減信號提供給在符記存放區中UDC之各者,並且具有連接至控制匯流排之可組態互連的輸入558(或多個輸入)以及連接至狀態縱橫器550之552、553的輸入。因此,各個UDC基於來自狀態縱橫器550和來自可組態互連輸入558的輸出之可組態選擇具有遞減信號。如下所討論的,遞減縱橫器亦具有連接以在由屏障邏輯520產生的線552上接收屏障符記的輸入。
控制屏障邏輯單元包括致能邏輯500,該致能邏輯包括可組態致能遮罩503,其基於在符記存放區中的信號和來自關聯的可組態邏輯單元的狀態信號之可組態組合在線502上產生用於連接至關聯可組態邏輯單元的致能信號。例如,能提供在線502上的致能信號給圖4之控制方塊470,其能包括用以產生控制信號以用於PCU利用在線502上的致能信號來開始和停止執行片段的邏輯。對致能邏輯500的輸入包括來自關聯可組態單元在線501上的狀態信號,像是FIFO非空的信號及類似者。同樣,對致能邏輯500之輸入能包括符記存放區之輸出(例如,513)。因此,能基於符記存放區之輸出的可組態組合來產生在線502上的致能信號。同樣,能基於符記存放區之輸出和來自關聯可組態單元的狀態信號之可組態組合來產生在線502上的致能信號。
控制屏障邏輯單元包括屏障符記邏輯520,該屏障符記邏輯包括可組態屏障遮罩521,其基於儲存在符記存放區中的線513上的信號之可組態組合來在線522上產生屏障符記。將在線522上的屏障符記饋送回作為回饋信號給遞減縱橫器540,其例如能使用以重置符記存放區。同樣,在此範例中,在線522上的屏障符記被應用為對增量縱橫器530的輸入,其可使用為用於設定在符記存放區中的值的條件。
控制屏障邏輯單元包括輸出縱橫器560。在此範例中,對輸出縱橫器的輸入包括在線522上的屏障符記和由狀態縱橫器550輸出的狀態信號。在其它實施中也能提供其它輸入給輸出縱橫器560。輸出縱橫器可組態以將來自線522的屏障符記及其它信號施加至在可組態互連上的選定線561。在可組態互連上的選定線561能在信號路線中組態,該信號路線將屏障符記供應為在可組態邏輯陣列之控制屏障網路中另一控制屏障邏輯單元之輸入(例如,輸入557)。在可組態互連上的選定線561能在信號路線中組態,該信號路線將來自可組態單元其中一者的狀態信號供應為在可組態邏輯陣列之控制屏障網路中另一控制屏障邏輯單元之輸入(例如,輸入557)。
利用像是圖5之者的控制屏障邏輯單元,屏障運算如下作用。各個單元能組態以跨能增量UDC的所有信號來實施屏障。這包括來自源自於關聯可組態單元外側的控制匯流排的外部控制輸入,以及像是源自於關聯可組態單元內側計數器做完信號的內部狀態信號。為了實施跨這些信號之子集的屏障,組態檔案針對在子集中各個信號保留一零初始化的(zero-initialized)UDC於符記存放區中。縱橫器係組態以將需要的信號對他們分別的UDC進行選路。下一步,屏障遮罩係組態以選擇保留的UDC。遮罩選擇在AND樹中參加的UDC。AND樹之輸出為1位元屏障符記,其例如當在遮罩中所有的UDC具有大於預的值時走向高準位。屏障符記能被組態以將參加於屏障中的所有UDC遞減。此確保屏障信號對於每組輸入符記為僅經一週期的高準位,因此生成一輸出符記。藉由將「out」縱橫器程式化在控制輸出上將造成的屏障符記發送出去。接著此符記如程式所需要的被使用,例如輸入到計算的下一級,或到下一個屏障節點等。在一些情形中,屏障符記可能必需也被本地/區域地發送到節點。為了促進此使用的情形,屏障符記亦進入增量Xbar,其能將其UDC增量。在此組態中,使用屏障符記以為了重置符記存放區的目的。在其它實施例中,為了該目的能使用不同的信號。同樣,能使用屏障符記來在符記存放區中重置僅1位元,或是位元中的僅一些者,而不是所有的位元。
此對軟體提供了最大彈性,用以實施接近耗用者的屏障來較佳利用資源。
來自在可組態單元之陣列中多個來源的控制符記通常需要在屏障處被同步,其中在從各個來源接收一符記之後生成單一符記(控制脈衝)。此屏障需求係由能使用如於此所述控制屏障邏輯之圖6中信號選路之範例所繪圖地示出。
在圖6中,包括可組態邏輯單元的可組態單元被稱為執行片段單元EFU。網路包括3個EFU之層。第一層包括4個EFU(601-604),其具有組合以形成第一層級屏障605的輸出。與各者關聯的控制屏障邏輯能被組態以生成屏障符記,該屏障符記被選路到第二層級,該第二層級包括具有被組合以提供屏障613的輸出之EFU 611和EFU 612,和包括具有被組合以提供屏障617的輸出之EFU 614-616。在一組態中,與EFU 611及612關聯的控制屏障邏輯係組態以至少部分基於來自EFU 601-604的屏障符記產生用於EFU 611及612的致能信號,並且組態以在與屏障613對應的他們的控制輸出上生成屏障符記。同樣地,與EFU 614-616關聯的控制屏障邏輯係組態以至少部分基於來自EFU 601-604的屏障符記產生用於EFU 614-616的致能信號,並且組態以在與屏障617對應的他們的控制輸出上生成屏障符記。能由在EFU之第三層級中的控制屏障邏輯實施屏障613及617,包括EFU 621和EFU 622,其被組合以提供屏障623。如由線625所指示的,能將屏障623應用到下一層級。如能看到的,能在圖6中繪示的控制屏障網路之各個層級中實施各種屏障網路組態。例如,在圖6中的第一層級包含一層級、4元控制屏障樹(4-ary control barrier tree)。
如範例,圖7及8闡述跨如於此所述能使用控制屏障邏輯單元選路信號的四個單元之其它屏障網路組態。圖7闡述2層級、二元樹(binary tree),其包括組合以在第一層級形成屏障705及706及在第二層級形成輸出屏障708的四個EFU(701-704)。圖8闡述3層級、一元屏障樹(unitary barrier tree)或鏈接的屏障,包括四個EFU(801-804),其中EFU 803-804係組合以形成屏障806,EFU 802係與屏障806之輸出組合以形成屏障807,並且EFU 801係與屏障807之輸出組合以形成屏障808。
可重組態資料處理器包含佈設以進行資料處理運算之執行片段的處理單元之陣列。控制屏障網路係耦接至在陣列中的處理單元。控制屏障網路包含:控制匯流排,可組態以在控制屏障網路中形成信號路線,以及複數個控制屏障邏輯單元,具有連接至控制匯流排及連接至處理單元之陣列的輸入及輸出。在複數個邏輯單元中的邏輯單元可組態以在輸入上耗用來源符記和狀態信號,並且基於在輸入上的來源符記和狀態信號來在輸出上生成屏障符記。同樣,該邏輯單元能基於在該輸入上的該來源符記及狀態信號來生成用於該處理單元之陣列的致能信號。
於此描述的控制屏障網路技術合適於具有CGRA裝置的實施。也同樣,其能與包含得益自於在陣列之間分佈的執行片段之間協調的處理單元之陣列的其它類型的處理系統一起利用。
在本發明係藉由上面詳述的較佳實施例及範例所揭示的同時,要了解的是,這些範例打算為說明性的含意而非限制性的含意。要考量的是,對本領域具有通常知識者而言修改及組合將輕易的發生,其修改及組合將在本發明之精神的範圍內以及在下列申請專利範圍的範圍內。
110:可重組態資料處理器
115:匯流排系統
120:主機
125:線
130:輸入/輸出介面
140:記憶體
145:線
150:輸入/輸出介面
170:外部時脈產生器
175:時脈信號
190:可組態單元之陣列
300:可組態單元之陣列
301:控制屏障邏輯單元
302:控制屏障邏輯單元
303:控制屏障邏輯單元
311:交換單元
312:交換單元
320:連結
321:互連
331:連結
341:型樣記憶體單元
350:交換器
351:型樣記憶體單元
352:型樣記憶體單元
354:位址產生器
355:合併單元
360:垂直導體
361:水平導體
362:交換盒
370:控制屏障邏輯單元
371:輸入及輸出
400:可組態單元
410:輸入組態資料
420:組態資料存放區
421:線
422:線
430:輸出組態資料
440:單元組態載入/卸載邏輯
450:純量先進先出緩衝器
460:向量先進先出緩衝器方塊
470:控制方塊
471:計數器鏈
475:控制屏障邏輯
480:方塊
500:致能邏輯
501:線
502:線
503:可組態致能遮罩
510:可逆計數器
511:增量輸入
512:遞減輸入
513:線
520:屏障邏輯
521:可組態屏障遮罩
522:線
530:增量縱衡器
540:遞減縱衡器
550:狀態縱衡器
551:輸入
552:線
553:輸出
557:輸入
558:輸入
560:輸出縱衡器
561:線
601:執行片段單元
602:執行片段單元
603:執行片段單元
604:執行片段單元
605:第一層級屏障
611:執行片段單元
612:執行片段單元
613:屏障
614:執行片段單元
615:執行片段單元
616:執行片段單元
617:屏障
621:執行片段單元
622:執行片段單元
623:屏障
625:連結
701:執行片段單元
702:執行片段單元
703:執行片段單元
704:執行片段單元
705:屏障
706:屏障
708:屏障
801:執行片段單元
802:執行片段單元
803:執行片段單元
804:執行片段單元
806:屏障
807:屏障
808:屏障
[圖1]為闡述包括主機、記憶體以及包括控制屏障網路之可重組態資料處理器的系統之系統圖。
[圖2]為包含具有關聯的屏障邏輯單元的可組態單元之陣列的簡化方磚圖。
[圖2A]闡述將在陣列層級網路中的元件連接的範例交換單元。
[圖3]為類似圖2之者的方磚之部分的圖,其闡述連接至在方磚中的控制屏障邏輯單元的可組態互連。
[圖4]為闡述包括屏障邏輯單元的範例可組態單元之方塊圖。
[圖5]為實施控制屏障邏輯單元的圖。
[圖6]闡述能使用如於此說明的控制屏障網路實施的控制屏障之組態的範例。
[圖7]闡述能使用如於此說明的控制屏障網路實施的信號路線的範例。
[圖8]闡述能使用如於此說明的控制屏障網路實施的信號路線的另一範例。
110:可重組態資料處理器
115:匯流排系統
120:主機
125:線
130:輸入/輸出介面
140:記憶體
145:線
150:輸入/輸出介面
170:外部時脈產生器
175:時脈信號
190:可組態單元之陣列
Claims (20)
- 一種處理系統,包含:控制匯流排,由組態資料可組態以在耦接至處理單元之陣列中之處理單元的控制屏障網路中形成信號路線;以及複數個邏輯單元,具有連接至該控制匯流排及連接至該處理單元之陣列的輸入及輸出,在該複數個邏輯單元中的一邏輯單元可操作地耦接至在該處理單元之陣列中的一處理單元,並且由該組態資料可組態以在該輸入上耗用來自該處理單元的來源符記和狀態信號,以及用以基於在該輸入上的該來源符記和該狀態信號在該輸出上生成屏障符記和致能信號,其中該邏輯單元包括符記存放區,其具有能使用以生成該屏障符記和該致能信號的輸出,且其中由該邏輯單元產生的屏障符記被饋送回該邏輯單元之符記存放區,以用於選擇性地將該符記存放區重置。
- 如請求項1所述的處理系統,其中該控制匯流排能包含藉由組態資料可組態的可組態互連,用以將攜載在當來源符記至耗用來源符記之者中的邏輯單元之輸入時之中在邏輯單元之該輸出上生成的屏障符記之該控制匯流排上的線連接。
- 如請求項1所述的處理系統,其中在該陣列中的處理單元包含可組態邏輯單元,其藉由組態資料可組態以執行執行片段。
- 如請求項1所述的處理系統,其中該控制匯流排係可組態以形成信號路線,其當來源符記至在該複數個邏輯單元中多於一邏輯單元之輸入時連接在該複數個邏輯單元中一邏輯單元之該輸出。
- 如請求項1所述的處理系統,其中該控制匯流排係可組態以形成將源自於在該複數個邏輯單元中多於一邏輯單元的來源符記提供給在複數個邏輯單元中一邏輯單元之輸入的信號路線。
- 如請求項1所述的處理系統,其中在該複數個邏輯單元中的邏輯單元係操作地耦接至在該處理單元之陣列中關聯的處理單元,該邏輯單元包括:具有輸入和輸出的該符記存放區;可組態輸入電路,可組態以將在該控制匯流排中選定的線和該關聯的處理單元之狀態信號線連接至該符記存放區之輸入;及符記輸出電路,可組態以回應於該符記存放區之輸出的第一可組態組合來提供屏障符記給該控制匯流排。
- 如請求項1所述的處理系統,其中在該複數個邏輯中的邏輯單元係操作地耦接至在該處理單元之陣列中的處理單元,該邏輯單元包括:具有輸入和輸出的該符記存放區;可組態輸入電路,可組態以將在該控制匯流排中選定的線和該關聯的處理單元之狀態信號線連接至該符記存放區之輸入; 符記輸出電路,可組態以回應於該符記存放區之輸出的第一可組態組合來提供屏障符記給該控制匯流排;回饋電路,可組態以回應於該符記存放區之輸出的第二可組態組合來提供回饋信號,用以清空該符記存放區;及回應於該符記存放區之輸出的致能電路。
- 如請求項1所述的處理系統,包括資料匯流排,互連該處理單元之陣列,且與該控制匯流排分開。
- 如請求項8所述的處理系統,其中該資料匯流排包含封包交換的網路。
- 一種可組態處理器,包含:可組態單元之陣列;匯流排系統,互連在該可組態單元之陣列中的該可組態單元;複數個控制屏障邏輯單元,在該複數個控制屏障邏輯單元之控制屏障邏輯單元係操作地耦接至在該可組態單元之陣列中一或多個可組態單元及至該匯流排系統,該控制屏障邏輯單元包括具有輸入和輸出的符記存放區;可組態輸入電路,可組態以將在該匯流排系統中選定的線連接至該符記存放區之輸入;可組態輸出電路,可組態以回應於該符記存放區之輸出的第一可組態組合來提供屏障符記給該匯流排系統;及回饋電路,可組態以提供該屏障符記,用以清空該符 記存放區。
- 如請求項10所述的可組態處理器,其中在該陣列中的可組態單元包括致能輸入,並且該控制屏障邏輯單元包括:用以回應於該符記存放區之輸出的第二可組態組合來將致能信號施加到該可組態單元之致能輸入的電路。
- 如請求項11所述的可組態處理器,其中在該陣列中的可組態單元在狀態線上產生狀態信號,並且該可組態輸入電路可組態以連接該狀態線之一或多者作為對該符記存放區之一輸入或多個輸入。
- 如請求項10所述的可組態處理器,其中在該陣列中的可組態單元在狀態線上產生狀態信號,並且該可組態輸入電路可組態以連接該狀態線之一或多者作為對該符記存放區之一輸入或多個輸入。
- 如請求項10所述的可組態處理器,該控制屏障邏輯單元包括回饋電路,可組態以回應於該符記存放區之輸出來提供回饋信號,用以清空該符記存放區。
- 如請求項14所述的可組態處理器,其中在該陣列中的可組態單元包含處理元件,可組態以進行處理運算之執行片段,執行片段係由致能信號致能且產生狀態信號,並且該可組態輸入電路可組態以施加來自該執行片段的狀態信號作為對該符記存放區的輸入;及該控制屏障邏輯單元包括回應於在該符記存放區中的 來源符記施加用於該執行片段的該致能信號的電路。
- 如請求項15所述的可組態處理器,其中回應於該符記存放區之輸出的第二可組態組合來施加該致能信號。
- 如請求項10所述的可組態處理器,其中該匯流排系統包括資料匯流排和控制匯流排,並且該可組態輸入電路係連接至在該控制匯流排中的線。
- 如請求項17所述的可組態處理器,其中該控制匯流排包含可組態互連,其由組態資料可設置以將耦接至該可組態輸入電路的該控制匯流排上的線連接至來源符記之來源。
- 一種可組態處理器,包含:可組態單元之陣列,其中在該陣列中的可組態單元回應於在致能輸入上的致能信號來執行執行片段,並且在狀態線上產生狀態信號,其可使用以指示在該可組態單元上的執行片段之狀態;匯流排系統,互連在該可組態單元之陣列中的該可組態單元,該匯流排系統包括資料匯流排和控制匯流排;及複數個控制屏障邏輯單元,在該複數個控制屏障邏輯單元中各個控制屏障邏輯單元包括:符記存放區;可組態輸入電路,可組態以將在該控制匯流排中選定的線和在該陣列中一或多個可組態單元之選定的狀態信號線連接至該符記存放區之輸入; 屏障邏輯電路,可組態以回應於該符記存放區之輸出的第一可組態組合來提供屏障符記;可組態輸出電路,可組態以提供該屏障符記給該控制匯流排;用以回應於該符記存放區之輸出的第二可組態組合來將致能信號施加到在該可組態邏輯單元之陣列中該可組態單元之一或多者的該致能輸入的電路;及回饋電路,可組態以回應於該符記存放區之輸出來提供回饋信號,用以施用該回饋信號以清空該符記存放區。
- 如請求項19所述的可組態處理器,其中該回饋信號為該屏障符記。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/407,675 US11386038B2 (en) | 2019-05-09 | 2019-05-09 | Control flow barrier and reconfigurable data processor |
US16/407,675 | 2019-05-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202103003A TW202103003A (zh) | 2021-01-16 |
TWI771675B true TWI771675B (zh) | 2022-07-21 |
Family
ID=70975928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109114892A TWI771675B (zh) | 2019-05-09 | 2020-05-05 | 控制流程屏障和可重組態的資料處理器 |
Country Status (8)
Country | Link |
---|---|
US (3) | US11386038B2 (zh) |
EP (1) | EP3966693A1 (zh) |
JP (1) | JP2022531910A (zh) |
KR (1) | KR20220004216A (zh) |
CN (1) | CN113811859A (zh) |
CA (1) | CA3137470A1 (zh) |
TW (1) | TWI771675B (zh) |
WO (1) | WO2020227671A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
US11126574B1 (en) * | 2021-02-12 | 2021-09-21 | SambaNova Systems, Inc. | Instrumentation profiling for reconfigurable processors |
CN112732639B (zh) * | 2021-04-01 | 2021-06-25 | 南京大学 | 一种粗粒度动态可重构处理器及其数据处理方法 |
US11256987B1 (en) * | 2021-06-02 | 2022-02-22 | SambaNova Systems, Inc. | Memory efficient dropout, with reordering of dropout mask elements |
US11328209B1 (en) | 2021-06-02 | 2022-05-10 | SambaNova Systems, Inc. | Dual cycle tensor dropout in a neural network |
US20230229623A1 (en) * | 2022-01-20 | 2023-07-20 | SambaNova Systems, Inc. | Fracturable Data Path in a Reconfigurable Data Processor |
US11983141B2 (en) * | 2022-01-27 | 2024-05-14 | SambaNova Systems, Inc. | System for executing an application on heterogeneous reconfigurable processors |
US12072836B2 (en) * | 2022-02-09 | 2024-08-27 | SambaNova Systems, Inc. | Fast argument load in a reconfigurable data processor |
US20230385231A1 (en) * | 2022-05-25 | 2023-11-30 | SambaNova Systems, Inc. | Low Latency Nodes Fusion in a Reconfigurable Data Processor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070046326A1 (en) * | 2005-08-24 | 2007-03-01 | Fujitsu Limited | Circuit and circuit connecting method |
US8656141B1 (en) * | 2004-12-13 | 2014-02-18 | Massachusetts Institute Of Technology | Architecture and programming in a parallel processing environment with switch-interconnected processors |
TW201730761A (zh) * | 2015-12-21 | 2017-09-01 | 英特爾股份有限公司 | 高度平行應用的排程 |
TW201833767A (zh) * | 2017-03-09 | 2018-09-16 | 美商谷歌有限責任公司 | 向量處理單元 |
Family Cites Families (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6238075A (ja) | 1985-08-13 | 1987-02-19 | Fuji Xerox Co Ltd | 行列デ−タの転置処理装置 |
US5963746A (en) | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
US5430850A (en) | 1991-07-22 | 1995-07-04 | Massachusetts Institute Of Technology | Data processing system with synchronization coprocessor for multiple threads |
US5434995A (en) | 1993-12-10 | 1995-07-18 | Cray Research, Inc. | Barrier synchronization for distributed memory massively parallel processing systems |
CN1076838C (zh) | 1994-08-19 | 2001-12-26 | 财团法人工业技术研究院 | 离散余弦转换/反离散余弦转换电路的转置存储器 |
US5794033A (en) | 1995-10-24 | 1998-08-11 | International Business Machines Corporation | Method and system for in-site and on-line reprogramming of hardware logics with remote loading in a network device |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
US6105119A (en) | 1997-04-04 | 2000-08-15 | Texas Instruments Incorporated | Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems |
US7073069B1 (en) | 1999-05-07 | 2006-07-04 | Infineon Technologies Ag | Apparatus and method for a programmable security processor |
CN1378665A (zh) | 1999-06-10 | 2002-11-06 | Pact信息技术有限公司 | 编程概念 |
US6845445B2 (en) | 2000-05-12 | 2005-01-18 | Pts Corporation | Methods and apparatus for power control in a scalable array of processor elements |
US6817005B2 (en) | 2000-05-25 | 2004-11-09 | Xilinx, Inc. | Modular design method and system for programmable logic devices |
US8058899B2 (en) * | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US6990555B2 (en) | 2001-01-09 | 2006-01-24 | Pact Xpp Technologies Ag | Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.) |
GB2374443B (en) * | 2001-02-14 | 2005-06-08 | Clearspeed Technology Ltd | Data processing architectures |
US9411532B2 (en) | 2001-09-07 | 2016-08-09 | Pact Xpp Technologies Ag | Methods and systems for transferring data between a processing device and external devices |
EP1372084A3 (en) | 2002-05-31 | 2011-09-07 | Imec | Method for hardware-software multitasking on a reconfigurable computing platform |
GB0304628D0 (en) | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
US7412581B2 (en) | 2003-10-28 | 2008-08-12 | Renesas Technology America, Inc. | Processor for virtual machines and method therefor |
US7386703B2 (en) | 2003-11-18 | 2008-06-10 | International Business Machines Corporation | Two dimensional addressing of a matrix-vector register array |
JP4594666B2 (ja) | 2004-07-12 | 2010-12-08 | 富士通株式会社 | 再構成可能な演算装置 |
US20060190517A1 (en) | 2005-02-02 | 2006-08-24 | Guerrero Miguel A | Techniques for transposition of a matrix arranged in a memory as multiple items per word |
US7571269B2 (en) | 2005-08-25 | 2009-08-04 | Silicon Image, Inc. | Covert channel for conveying supplemental messages in a protocol-defined link for a system of storage devices |
GB0605349D0 (en) | 2006-03-17 | 2006-04-26 | Imec Inter Uni Micro Electr | Reconfigurable multi-processing coarse-grain array |
US8456191B2 (en) | 2006-06-21 | 2013-06-04 | Element Cxi, Llc | Data-driven integrated circuit architecture |
US8407429B2 (en) | 2006-06-21 | 2013-03-26 | Element Cxi, Llc | Multi-context configurable memory controller |
US7797258B1 (en) | 2006-11-02 | 2010-09-14 | Nvidia Corporation | Graphics system transposer read scheduler |
US7669014B2 (en) | 2007-07-23 | 2010-02-23 | Nokia Corporation | Transpose memory and method thereof |
JP5089776B2 (ja) | 2007-09-11 | 2012-12-05 | コア ロジック,インコーポレイテッド | 浮動小数点演算のための再構成アレイプロセッサ |
US8526422B2 (en) | 2007-11-27 | 2013-09-03 | International Business Machines Corporation | Network on chip with partitions |
US8001316B2 (en) | 2007-12-27 | 2011-08-16 | Sandisk Il Ltd. | Controller for one type of NAND flash memory for emulating another type of NAND flash memory |
US8006021B1 (en) | 2008-03-27 | 2011-08-23 | Xilinx, Inc. | Processor local bus bridge for an embedded processor block core in an integrated circuit |
CN101593169A (zh) | 2008-05-30 | 2009-12-02 | 国际商业机器公司 | 可配置逻辑阵列的配置管理器和配置方法 |
US8045546B1 (en) | 2008-07-08 | 2011-10-25 | Tilera Corporation | Configuring routing in mesh networks |
US7952387B1 (en) | 2008-08-13 | 2011-05-31 | Altera Corporation | Securing memory based IP in FPGAs |
US20100161309A1 (en) | 2008-12-23 | 2010-06-24 | Scaleo Chip | Apparatus and Methods Thereof for Configuration and Control of a System-On-Chip Emulation Platform |
CN101485576A (zh) | 2008-12-30 | 2009-07-22 | 深圳市蓝韵实业有限公司 | 一种对设备内fpga芯片统一配置和管理的系统 |
KR101581882B1 (ko) | 2009-04-20 | 2015-12-31 | 삼성전자주식회사 | 재구성 가능한 프로세서 및 그 재구성 방법 |
GB2471067B (en) | 2009-06-12 | 2011-11-30 | Graeme Roy Smith | Shared resource multi-thread array processor |
KR101076869B1 (ko) | 2010-03-16 | 2011-10-25 | 광운대학교 산학협력단 | 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치 |
US20110264723A1 (en) | 2010-04-21 | 2011-10-27 | Samsung Electronics Co., Ltd. | System and method for successive matrix transposes |
WO2013054468A1 (ja) | 2011-10-14 | 2013-04-18 | パナソニック株式会社 | 転置演算装置とその集積回路、および転置処理方法 |
WO2013100782A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for controlling execution of an instruction sequence in a accelerator. |
KR101978409B1 (ko) | 2012-02-28 | 2019-05-14 | 삼성전자 주식회사 | 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 |
US9875105B2 (en) | 2012-05-03 | 2018-01-23 | Nvidia Corporation | Checkpointed buffer for re-entry from runahead |
KR102070199B1 (ko) | 2012-05-11 | 2020-01-28 | 삼성전자주식회사 | 재구성가능 프로세서 및 재구성가능 프로세서의 코드 압축해제 방법 |
US10150285B2 (en) | 2012-11-13 | 2018-12-11 | Hp Indigo B.V. | Formation of a crease and an image on media |
US20140149480A1 (en) | 2012-11-28 | 2014-05-29 | Nvidia Corporation | System, method, and computer program product for transposing a matrix |
US9411715B2 (en) | 2012-12-12 | 2016-08-09 | Nvidia Corporation | System, method, and computer program product for optimizing the management of thread stack memory |
CN103906068B (zh) | 2012-12-26 | 2017-07-21 | 华为技术有限公司 | 虚拟基站创建方法及装置 |
US9569214B2 (en) | 2012-12-27 | 2017-02-14 | Nvidia Corporation | Execution pipeline data forwarding |
JP6092649B2 (ja) | 2013-02-15 | 2017-03-08 | キヤノン株式会社 | 演算装置、アレイ型演算装置およびその制御方法、情報処理システム |
US10628578B2 (en) | 2013-03-15 | 2020-04-21 | Imagine Communications Corp. | Systems and methods for determining trust levels for computing components using blockchain |
KR20140126190A (ko) | 2013-04-22 | 2014-10-30 | 삼성전자주식회사 | 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법 |
KR20140131472A (ko) | 2013-05-03 | 2014-11-13 | 삼성전자주식회사 | 상수 저장 레지스터를 구비하는 재구성 가능 프로세서 |
US9588774B2 (en) | 2014-03-18 | 2017-03-07 | International Business Machines Corporation | Common boot sequence for control utility able to be initialized in multiple architectures |
US10140157B2 (en) | 2014-05-29 | 2018-11-27 | Apple Inc. | Multiple process scheduling of threads using process queues |
TWI570573B (zh) | 2014-07-08 | 2017-02-11 | 財團法人工業技術研究院 | 矩陣轉置電路 |
US10180908B2 (en) | 2015-05-13 | 2019-01-15 | Qualcomm Incorporated | Method and apparatus for virtualized control of a shared system cache |
US20170083313A1 (en) * | 2015-09-22 | 2017-03-23 | Qualcomm Incorporated | CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs) |
US10019234B2 (en) * | 2015-10-05 | 2018-07-10 | Altera Corporation | Methods and apparatus for sequencing multiply-accumulate operations |
US9697318B2 (en) | 2015-10-08 | 2017-07-04 | Altera Corporation | State visibility and manipulation in integrated circuits |
EP3435545B1 (en) | 2015-10-15 | 2023-06-07 | Menta | System and method for testing and configuration of an fpga |
US10528356B2 (en) | 2015-11-04 | 2020-01-07 | International Business Machines Corporation | Tightly coupled processor arrays using coarse grained reconfigurable architecture with iteration level commits |
GB2545170B (en) | 2015-12-02 | 2020-01-08 | Imagination Tech Ltd | GPU virtualisation |
US10037227B2 (en) | 2015-12-17 | 2018-07-31 | Intel Corporation | Systems, methods and devices for work placement on processor cores |
JP6669961B2 (ja) | 2015-12-24 | 2020-03-18 | 富士通株式会社 | プロセッサ、再構成可能回路の制御方法及びプログラム |
US10516396B2 (en) | 2016-04-29 | 2019-12-24 | University Of Florida Research Foundation, Incorporated | Overlay architecture for programming FPGAs |
US10067911B2 (en) | 2016-07-26 | 2018-09-04 | Advanced Micro Devices, Inc. | High performance inplace transpose operations |
DE102016216944A1 (de) | 2016-09-07 | 2018-03-08 | Robert Bosch Gmbh | Verfahren zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit vereinfachter Aktivierungsfunktion |
US20180089117A1 (en) | 2016-09-26 | 2018-03-29 | Wave Computing, Inc. | Reconfigurable fabric accessing external memory |
US10459644B2 (en) | 2016-10-28 | 2019-10-29 | Western Digital Techologies, Inc. | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
US11487445B2 (en) | 2016-11-22 | 2022-11-01 | Intel Corporation | Programmable integrated circuit with stacked memory die for storing configuration data |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US9952831B1 (en) | 2017-02-16 | 2018-04-24 | Google Llc | Transposing in a matrix-vector processor |
EP3646179B1 (en) | 2017-06-30 | 2023-10-25 | Intel Corporation | Modifying processor frequency based on interrupt rate |
US11256978B2 (en) | 2017-07-14 | 2022-02-22 | Intel Corporation | Hyperbolic functions for machine learning acceleration |
US11055126B2 (en) | 2017-08-16 | 2021-07-06 | Royal Bank Of Canada | Machine learning computing model for virtual machine underutilization detection |
US11093251B2 (en) * | 2017-10-31 | 2021-08-17 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
GB2568087B (en) | 2017-11-03 | 2022-07-20 | Imagination Tech Ltd | Activation functions for deep neural networks |
US10599596B2 (en) | 2018-01-08 | 2020-03-24 | Intel Corporation | Management of processor performance based on user interrupts |
US20190303297A1 (en) | 2018-04-02 | 2019-10-03 | Intel Corporation | Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator |
US11048661B2 (en) | 2018-04-16 | 2021-06-29 | Simple Machines Inc. | Systems and methods for stream-dataflow acceleration wherein a delay is implemented so as to equalize arrival times of data packets at a destination functional unit |
US11200186B2 (en) * | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10831507B2 (en) | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US10698853B1 (en) | 2019-01-03 | 2020-06-30 | SambaNova Systems, Inc. | Virtualization of a reconfigurable data processor |
-
2019
- 2019-05-09 US US16/407,675 patent/US11386038B2/en active Active
-
2020
- 2020-05-05 TW TW109114892A patent/TWI771675B/zh active
- 2020-05-08 KR KR1020217040374A patent/KR20220004216A/ko unknown
- 2020-05-08 JP JP2021566221A patent/JP2022531910A/ja active Pending
- 2020-05-08 WO PCT/US2020/032186 patent/WO2020227671A1/en unknown
- 2020-05-08 CN CN202080034324.0A patent/CN113811859A/zh active Pending
- 2020-05-08 CA CA3137470A patent/CA3137470A1/en active Pending
- 2020-05-08 EP EP20730358.7A patent/EP3966693A1/en active Pending
-
2021
- 2021-10-01 US US17/492,403 patent/US11580056B2/en active Active
-
2023
- 2023-02-14 US US18/109,817 patent/US11971846B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8656141B1 (en) * | 2004-12-13 | 2014-02-18 | Massachusetts Institute Of Technology | Architecture and programming in a parallel processing environment with switch-interconnected processors |
US20070046326A1 (en) * | 2005-08-24 | 2007-03-01 | Fujitsu Limited | Circuit and circuit connecting method |
TW201730761A (zh) * | 2015-12-21 | 2017-09-01 | 英特爾股份有限公司 | 高度平行應用的排程 |
TW201833767A (zh) * | 2017-03-09 | 2018-09-16 | 美商谷歌有限責任公司 | 向量處理單元 |
Non-Patent Citations (1)
Title |
---|
ACM/IEEE 44th Annual International Symposium on Computer Architecture (ISCA) 2017 * |
Also Published As
Publication number | Publication date |
---|---|
US20200356523A1 (en) | 2020-11-12 |
US20230195686A1 (en) | 2023-06-22 |
TW202103003A (zh) | 2021-01-16 |
CA3137470A1 (en) | 2020-11-12 |
CN113811859A (zh) | 2021-12-17 |
WO2020227671A1 (en) | 2020-11-12 |
US20220027308A1 (en) | 2022-01-27 |
US11386038B2 (en) | 2022-07-12 |
US11971846B2 (en) | 2024-04-30 |
EP3966693A1 (en) | 2022-03-16 |
US11580056B2 (en) | 2023-02-14 |
JP2022531910A (ja) | 2022-07-12 |
KR20220004216A (ko) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI771675B (zh) | 控制流程屏障和可重組態的資料處理器 | |
US11928512B2 (en) | Quiesce reconfigurable data processor | |
US10831507B2 (en) | Configuration load of a reconfigurable data processor | |
US11188497B2 (en) | Configuration unload of a reconfigurable data processor | |
CN107239420B (zh) | 具有散布处理器dma-fifo的处理系统 | |
TWI779355B (zh) | 用於可重組態資料處理器的效能估計式資源分配 | |
US11750195B2 (en) | Compute dataflow architecture | |
Pontes et al. | Hermes-A–an asynchronous NoC router with distributed routing | |
US7509479B2 (en) | Reconfigurable global cellular automaton with RAM blocks coupled to input and output feedback crossbar switches receiving clock counter value from sequence control unit | |
CN103955353B (zh) | 具有面向全分布式超长指令字的高能效局部互连结构的装置 |