TW202115575A - 靜止可重組態的資料處理器 - Google Patents
靜止可重組態的資料處理器 Download PDFInfo
- Publication number
- TW202115575A TW202115575A TW109122772A TW109122772A TW202115575A TW 202115575 A TW202115575 A TW 202115575A TW 109122772 A TW109122772 A TW 109122772A TW 109122772 A TW109122772 A TW 109122772A TW 202115575 A TW202115575 A TW 202115575A
- Authority
- TW
- Taiwan
- Prior art keywords
- static
- array
- configurable
- logic
- unit
- Prior art date
Links
- 238000012545 processing Methods 0.000 claims abstract description 240
- 239000012634 fragment Substances 0.000 claims abstract description 51
- 230000003068 static effect Effects 0.000 claims description 356
- 230000004888 barrier function Effects 0.000 claims description 172
- 238000000034 method Methods 0.000 claims description 94
- 230000004044 response Effects 0.000 claims description 38
- 238000003491 array Methods 0.000 claims description 6
- 238000004519 manufacturing process Methods 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 description 60
- 230000008569 process Effects 0.000 description 48
- 238000003860 storage Methods 0.000 description 33
- 238000010586 diagram Methods 0.000 description 21
- 238000013500 data storage Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 239000011449 brick Substances 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 9
- 239000004020 conductor Substances 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 101100328518 Caenorhabditis elegans cnt-1 gene Proteins 0.000 description 2
- 241000665848 Isca Species 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000284 resting effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5012—Processor sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/506—Constraint
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一種可重組態資料處理器,包括可組態單元陣列,可組態成在該陣列中配置複數個可組態單元集合,以實現資料處理操作的各個執行片段。靜止邏輯耦合至陣列中的可組態單元,可組態成回應靜止控制信號以在各個執行片段的靜止邊界上靜止可組態單元集合,並且當相應的處理單元集合就緒時,轉發用於各個執行片段的靜止就緒信號。陣列靜止控制器將靜止控制信號分配給陣列中的可組態單元,並且從靜止邏輯接收用於各個執行片段的靜止就緒信號。
Description
本技術係關於可重組態架構及其他分散式處理架構中的靜止(quiesce),並且可以特別應用於在粗粒度可重組態架構上執行的操作的靜止。
可重組態處理器,包括現場可編程閘陣列(FPGA),可以被配置成比使用執行電腦程式的通用處理器可達成的更有效率或更快地執行各種功能。正在開發所謂的粗粒度可重組態架構(例如,CGRA),其中陣列中的可重組態單元比典型的、更細粒度的FPGA中所使用的單元更複雜,並且可以更快或更有效地執行各種類別的功能。例如,已提出了CGRA,其可以實現針對機器學習和人工智慧工作負載之節能加速器的執行。請見Prabhakar等人的“Plasticine:A Reconfigurable Architecture for Parallel Patterns(平行型的可重組態架構)”ISCA ’17,2017年6月24-28日,加拿大安大略省多倫多市。
檢查點、多任務及多程式設計在分散式處理系統,諸如CGRA,中存在複雜的問題。通常,運行時期(runtime)控制程式僅能載入組態檔案,並且按照所組態的來執行機器到完成,然後允許硬體靜止。在執行期間可能無法中斷機器來進行系統管理功能,如佔先式多任務及除錯。為了最大化操作效率,以及能夠在處理系統的處理單元,諸如可重組態處理器的可組態處理元件,之間進行協調,需要一種有效管理處理單元之靜止的手段。
描述了一種技術,其能夠實現資料處理系統之處理單元的高效靜止,包括粗粒度可重組態陣列(Coarse-Grained Reconfigurable Array)處理器之可組態單元之間的靜止。
描述了一種處理系統,其包括處理單元陣列,可組態及可重組態以在陣列中分配一組處理單元來實現資料處理操作的執行片段(fragment)。提供了包括邏輯電路的靜止邏輯,其耦合至陣列中的一些或所有處理單元。靜止邏輯電路可組態以回應控制信號,在執行片段的靜止邊界(quiesce boundary)上靜止陣列中的資料處理單元集合。在本文所述的實施例中,集合中的處理單元可被分散在陣列中,並且非同步地操作。靜止邏輯可操作以在靜止邊界上同步非同步操作的處理單元集合。靜止邊界可以由可組態處理單元陣列中的組態資料定義。
在一些實施例中,處理單元陣列可組態以在陣列中分配多組處理單元,即指定的執行片段資源組EFRG,來實現資料處理操作的個別執行片段,其中,例如在CGRA中,執行片段包括資料處理操作之控制及資料流程圖中的操作子集合。在此情況下的靜止邏輯可以包括靜止控制器,用以將靜止控制信號發送給與陣列中的處理單元相關聯的靜止邏輯,並且從個別的處理單元集合接收靜止就緒(quiesce ready)信號。
描述了一種用於操作包括帶有靜止之可組態處理單元陣列之處理系統的方法。該方法可以包括將組態資料載入陣列用於資料處理操作,其將陣列組態成多個EFRG,用於具有靜止邊界的相應執行片段;以及將靜止命令發送到陣列中的該多個EFRG。被發送到陣列的靜止命令可回應於外部靜止事件而產生,外部靜止事件諸如主機處理器中的執行期控制程式,向用於該陣列的靜止控制器發送信號以例如支援多任務,或者可從內部靜止事件(自靜止)而產生,內部靜止事件由陣列中的資料處理操作產生,其由控制網路提供給用於陣列的靜止控制器。在執行片段資源組中,該方法包括回應靜止命令以檢測相應執行片段中的靜止命令之後的靜止邊界,禁止超出靜止邊界的相應執行片段的執行,以及引發針對相應執行片段的靜止就緒信號。可以透過每個EFRG之處理單元中已組態的執行狀態集合,在組態資料中定義靜止邊界。該方法可以包括透過檢測該組中的處理單元之已組態的狀態集合來檢測EFRG中的靜止邊界。
描述了一種技術,透過該技術,靜止邏輯可組態針對給定的EFRG,在執行片段中定義一靜止邊界,或多個靜止邊界,並且回應於控制信號,在靜止邊界上靜止EFRG中的處理單元。在所述範例中,可以包括計數器,諸如迴圈計數器,其對處理單元中的執行迴圈或其他類型的處理週期進行計數,以檢測EFRG中的處理單元的已組態狀態。靜止邏輯可以回應於計數器,檢測在與執行片段中的靜止邊界相對應的處理單元中的事件,諸如已組態的狀態,並且追蹤EFRG中的執行片段的進度。因此,靜止邏輯能夠在EFRG中被分配給執行片段的靜止邊界上同步靜止操作。在所述範例中,提供了偏斜(skew)計數器用以追蹤EFRG中之處理單元之間的執行片段的進度差異。在一些實施例中,當程式執行可以到達下一個靜止邊界之前,執行片段中還有待處理的工作時,偏斜計數器為非零;或者,也可將偏斜計數器的非零值認為是反映了程式不在靜止邊界上。在其他實施例中,偏斜計數器的不同值或不同追蹤手段可以指示這些情況。
本文所述之系統示例中的執行片段被分配給處理單元集合,其中集合中的一或多個處理單元被組態為輸入的生產者,並且集合中的一或多個處理單元被組態為輸入的消費者。描述了一種靜止技術,其中靜止邏輯被組態成在靜止邊界上停止該生產者、或每個生產者,並且在消費者、或每個消費者完成在靜止邊界之前產生的輸入的處理之後,靜止EFRG。
本文描述了一種架構,其中處理系統包括控制屏障網路,其耦合到陣列中的處理單元。控制屏障網路可以包括控制匯流排,其可組態以在控制屏障網路中形成信號路徑,以及包括多個屏障邏輯單元,其具有連接到控制匯流排及處理單元之陣列的輸入和輸出。為了支持靜止邏輯,針對特定執行片段所分配的EFRG的第一邏輯單元可組態以從執行片段中的生產者接收符記(P_QB),其中符記在對應於執行片段中的靜止邊界的生產者單元中發出事件信號,並且基於來自生產者的符記在輸出上產生生產者屏障符記。生產者屏障符記可被用來使集合中的生產者能夠超出執行片段的靜止邊界繼續進行。同樣,針對特定執行片段所分配的EFRG的第二邏輯單元可組態以從處理器單元集合中的消費者單元接收符記(C_QB),以基於來自消費者的符記在輸出上產生消費者屏障符記。消費者屏障符記可以在靜止邏輯中與生產者屏障符記一起使用,以在靜止邊界上同步單元集合。靜止邏輯可被組態成連接到控制匯流排,並且可以包括偏斜計數器,其可被組態成接收生產者屏障符記和消費者屏障符記,用以追蹤生產者和消費者之間的執行片段的進度差異,包括集合中的處理單元之間的靜止邊界符記(P_QB和C_QB)的偏斜。
此外,可以提供致能電路,用以回應生產者屏障符記及其他資料和控制相依性,為EFRG中被組態成生產者的相關處理器單元產生致能信號。同樣,可以提供致能電路,其可被組態以回應資料和控制相依性,為EFRG中被組態成消費者的相關處理器單元產生致能信號。生產者屏障符記和消費者屏障符記可被用來追蹤生產者與消費者之間執行片段的進度差異。此外,靜止邏輯可以透過禁用生產者屏障符記來停止生產者,並且EFRG將在消費者達到已組態的狀態後靜止。
在本文所述的靜止架構中,陣列靜止控制器可以包括將控制信號轉發到陣列中之處理單元的靜止邏輯的邏輯。與處理單元集合相關聯的靜止邏輯可以包括與陣列中的相應處理單元相關聯的靜止就緒邏輯,用以將靜止就緒信號提供給陣列靜止控制器。在本文所述的範例中,用於處理單元的靜止就緒邏輯在陣列中的處理單元之間以菊鏈形式連接。當接收到來自菊鏈之前成員的靜止就緒信號時,靜止就緒邏輯可以將靜止就緒信號轉發給菊鏈上的陣列靜止控制器,相應EFRG的靜止就緒。此外,該架構可以提供可組態的靜止參與旗標,以及回應靜止參與旗標之狀態而置換靜止就緒邏輯的邏輯。以此方式,陣列可被組態成使用靜止就緒邏輯中與生產者相關聯的靜止就緒信號。
通常,提供一種用於操作包括可組態處理單元陣列之處理系統的方法,該方法包括監視陣列中之EFRG中的資料處理操作之執行片段的進度;以及回應控制信號以在執行片段的靜止邊界上靜止陣列中的資料處理單元集合。
該方法可以包括監視陣列中之多個處理單元集合中的資料處理操作之個別執行片段的進度,將靜止控制信號發送給陣列中的處理單元,以及從個別處理單元集合接收靜止就緒信號。
此外,對於包括用以在執行片段中定義多個靜止邊界的邏輯的處理系統,該方法可以包括在控制信號之後的通用靜止邊界上靜止EFRG中的處理單元。
還提供了用於追蹤EFRG中處理單元之間跨越靜止邊界之執行片段的進度差異的技術。
描述了一種用於操作資料處理系統的方法,其中可組態單元陣列耦合到執行控制程式的主機,該控制程式產生靜止控制信號以支持可組態系統上的檢查點操作、斷點操作、暫停及恢復操作、多程式及多任務以及其他功能,諸如有助於對在可組態單元陣列上運行的程式進行除錯的那些功能。在一個操作中,控制程式可以迭代地在靜止邊界上靜止操作、在每個靜止邊界卸載例如狀態資料和記憶體內容之類的檢查點資料的副本、恢復操作並重複收集關於靜止邊界上之操作效能的資訊。
此外,描述了一種用於操作資料處理系統的方法,其中可組態單元陣列耦合到在多程式環境及多任務環境中執行控制程式的主機,在多程式環境中,處理單元陣列中的資料處理操作可能會不時產生資源供其他進程使用,以及在多任務環境中,可回應排程器、中斷、或其他外力而迫使處理單元陣列中的資料處理操作產生資源。控制程式可以管理使用可組態單元陣列執行的操作,包括在產生資源的多程式或多任務事件中,分配操作之間的優先權。利用本文所述的技術,主機可以依據優先權對操作進行排程,包括當針對具有比可組態單元陣列中部署的操作更高優先權的操作觸發事件時,控制程式可以在靜止邊界上暫停執行程式、在靜止邊界卸載正在執行的程式的全部或部分組態檔案、狀態及工作記憶體、然後為更高優先權的操作加載組態檔案,並且開始執行優先權較高的檔案。此外,在完成優先權較高的操作之後,可選地可以透過加載被暫停的操作的組態檔案、狀態及記憶體,並且在靜止邊界恢復操作,來恢復該被暫停的操作。
透過閱讀下面的圖式、詳細說明及申請專利範圍可以看見本文所述之技術的其他態樣及優點。
以下描述通常將參考具體的結構實施例和方法。應當理解,無意將本技術限制在具體公開的實施例和方法,而是可以使用其他特徵、元件、方法和實施例來實踐該技術。描述較佳實施例來說明本技術,而非限制其範圍,其範圍由申請專利範圍來限定。本領域普通技術人員將在以下描述中認識到各種等效的變型。
圖1是系統圖,其示出包括主機120、記憶體140以及可重組態資料處理器110的系統。如在圖1的範例中所示,可重組態資料處理器110包括處理單元陣列190,其包括如本文所述之靜止控制網路。在此範例中,處理單元是可組態的單元,可使用組態檔案或位元檔案進行組態,用以以資料流形式或者部分以資料流形式實現資料處理操作。在其他實施例中,處理單元陣列可被組態用於范紐曼(von Neumann)或控制流操作,或用於混合操作。
陣列的處理單元可以非同步地執行,這幾乎無法保證程式點可以安全的靜止。
在CGRA和包含被組態用於執行資料處理操作的處理單元陣列的其他處理系統中,陣列可以是可組態的,用來分配處理單元集合,本文稱該處理單元集合為陣列中的“執行片段資源組(execution fragment resource group)EFRG”,用以實現資料處理操作的不同部分,本文稱該些不同部分為資料處理操作的“執行片段(execution fragment)EF”。可以將陣列組態成在陣列的不同處理單元集合中執行複數個執行片段。這些不同的處理單元集合可以執行該多個執行片段,針對這些執行片段非同步地組態這些不同的處理單元集合。此外,在被分配給單一執行片段的給定處理單元集合內的多個處理單元,可以非同步操作,其支援例如陣列中的處理單元的分散式性質。因此,當需要停止資料處理操作之執行並以可安全恢復的方式靜止陣列中的處理單元時,就會出現問題。
為了便於說明,執行片段(EF)通常是實現資料處理操作之程式的一部分,包括一組操作,諸如程式中遵循相似控制流順序的一系列操作。EF可以是迴圈本體,或是基於諸如if-else或switch敘述之條件構造執行的操作。EF可以是階層式的,並且可以完全地涵蓋其他巢狀迴圈。一個具體的範例是在諸如深度學習訓練及推理負載之類的繁重迴圈(loop-heavy)程式中的最外層迴圈級別定義的EF。使用適用於某些實現的控制流程圖表示,如果程式控制流程圖G是由一組邊緣E和頂點V表示,則每個唯一的EF是G的一相異子圖g,其將G劃分為G的相異邊緣e和頂點v。
為了便於說明,執行片段資源組(EFRG)是被分配或組態以執行EF的一組物理硬體資源。EF及其EFRG之間可以是1:1的對應關係;雖然EFRG能夠,並且可以連續地執行多個EF,但在任何給定的時間,單線程部署中的EFRG中的每個組件僅能執行一個EF。在處理單元,諸如CGRA中的可組態單元,的陣列中,EFRG可以包含陣列中的一組處理單元。
為了便於說明,靜止邊界(quiesce boundary, QB)是一事件,該事件描述在EF內的多組操作,該多組操作被限制為在QB處具有一致的狀態。例如,在迴圈中,可以將QB定義為在任何完全執行的迴圈迭代之後或之前。每個EF具有兩個自然QB:一個在EF的執行之前,而另一個緊接在EF完成執行之後。可以在EF內視情況定義及構造額外的QB。
以下是通用迴圈的一些簡單範例,虛擬碼中有放置QB的注釋:
//通用迴圈
//一個自然QB在此,緊接在迴圈執行之前。
for(i=0;i<N;i++){
c[i]=a[i]+ b[i];
}
//另一自然QB在此,緊接在迴圈執行之後。
//通用迴圈
//每次迭代可以是一QB
for(i=0;i<N;i++){
//下面的if敘述由編譯器有效地插入,
if(quiesce_received())wait();//wait()是等待恢復/卸載/等的硬體構造。
c[i]=a[i]+b[i];
}
//通用迴圈
//每個第4次迭代可以是一QB
for(i=0;i<N;i++){
//下面的if敘述由編譯器有效地插入,
if(!(i%4)&& quiesce_received())wait();//wait()是等待恢復/卸載/等的硬體構造。
c[i]= a[i]+ b[i];
}
為了實現QB,使用者可以直接向編譯器指定QB,或者編譯器可以預設插入適當的QB,以致能自檢查點或其他類似基於使用者輸入之斷點的功能。使用者可以經由下列方式指定QB:由使用者插入到程式碼中的編譯器指令(標注)、使用者經由編譯器的命令行調用、經由編譯器使用的組態檔案、這些技術的某些組合或某些其他方式所指定的選項。在控制流實施例中,編譯器接著透過插入額外的邊緣和頂點來將原始控制流圖G轉換為G',其對靜止請求進行採樣,並且若靜止請求在QB處有效時,同步/暫停執行。在EF內,可以透過識別生產者與消費者、以及執行例如以下的操作來完成此同步/暫停:
a)產生一生產者屏障,其係所有(初始)生產者的邏輯功能(例如,AND)。若生產者的數量很多,則可以遞迴地構造生產者屏障。
b)產生一消費者屏障,其係所有(結束)消費者的邏輯功能(例如,AND)。若消費者的數量很多,則可以遞迴地構造消費者屏障。
c)表示用於EFRG的一個元件,其包含偏斜計數器、或與之相關聯及相關聯的控制、或與偏斜計數器及相關聯的控制相關聯。將靜止請求、生產者屏障、及消費者屏障路由到此偏斜計數器。將生產者屏障連接到偏斜計數器增量輸入,及將消費者屏障連接到偏斜計數器減量輸入。
d)在上面步驟c)中之EFRG中表示的元件中或與之相關聯的屏障邏輯確定EF的生產者是否應繼續執行直到下一個QB,或是暫停並等待所有的消費者趕上和生產者一樣的QB。為了(暫停後)繼續執行直到下一個QB,參與的元件會向所有生產者廣播控制信號。而為了暫停執行,在一方案中,此控制信號根本不會被發出,這將有效地阻止EF繼續進行。若參與的元件已經接收到靜止請求,則生產者將不會接收到所述控制信號。參與的元件使用偏斜計數器等待所有的消費者達到與生產者一樣的QB。當偏斜計數器達到零時,參與的元件產生一信號,指示EF是靜止就緒的。
在可組態單元的陣列中,可以透過定義資料處理操作的複數個執行片段來實現資料處理操作。EF可能包含適合程式的固定或可變數量的工作。同樣的,不同的EF可能包含不同的計算量。EF可以表示程式控制及資料流圖中的平行型樣、部分的平行型樣或任何其他操作的子集。
可以將資料處理操作的全部或部分分成一組EF。可組態單元陣列可以使用組態檔案來進行組態以分配EFRG,實現資料處理操作的執行片段,該EFRG包含一組處理單元,其在陣列中具有複數個成員。可以將許多的EFRG和相對應的可組態單元集合分配給各自的執行片段。EF具有輸入,其從一組輸入生產者接收輸入資料。該組輸入生產者可以包括一或多個生產者。EF具有分散在被分配給它們的可組態單元集合之中的功能元件,這些功能元件消耗輸入資料,並產生結果。一個EF所產生的結果可被用作不同EF中的輸入。
耦合至陣列中之可組態單元的靜止邏輯可組態成回應控制信號,以在執行片段的靜止邊界上,靜止分配給特定執行片段的陣列中的資料處理單元集合。可將執行片段組態成包括一個靜止邊界,或複數個靜止邊界,取決於特定的實施方案。
在同步時,對應於直到被分配給EF的EFRG中的靜止邊界前的操作的週期被完全地執行,或者根本不被執行。
在陣列中的所有單元都已到達它們被分配到的EFRG之EF中的靜止邊界之後,可將處理單元陣列視為已靜止,並且可以針對特定實施方案之安全的方式停止陣列中的執行。
例如,靜止的EFRG或靜止的陣列可以具有以下特徵:
1. 將不執行新的計算,並且不創建新的異動(transaction)。
2. 所有有關的進行中(in-flight)的異動(資料及控制位元)均已完成,並已到達它們的目的地。
3. 所有有關的程式狀態和中間資料被儲存在可組態處理單元的狀態元件和記憶體中,可以在程式卸載操作期間將其卸載。
如在圖1的範例中所示,可重組態資料處理器110包括可組態單元(處理單元)陣列190及陣列靜止控制器195,其可被用於檢查點及復原操作、斷點操作及其他操作。靜止控制器可以包括組態加載/卸載控制器或與組態加載/卸載控制器耦接,該組態加載/卸載控制器可以包括組態加載控制器及組態卸載控制器的組合。組態加載控制器及組態卸載控制器可使用單獨的邏輯和資料路徑資源來實現,或者可使用適合於特定實施例的共享邏輯和資料路徑資源來實現。
處理器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介面。
可以包括靜止控制網路,其可組態以在可用於協調執行片段的可組態單元之間建立控制信號路由。靜止控制網路係在可組態及可重組態架構中可組態的,以提供適合於支持複雜資料處理操作的信號路由於可組態單元陣列中,包括例如在CGRA處理器的可組態單元中。
靜止控制網路提供了註冊或記錄來自CGRA上數個不同來源的入站符記和狀態信號的能力,其可被定義於組態資料儲存中,並且基於入站符記和狀態信號的特定組合來產生輸出屏障符記和其他信號。本文所述的範例足夠彈性以透過將屏障邏輯分解為多個級別來支持跨任意數量來源的控制屏障。
如本文所述的靜止控制網路可以與其他類型的資料處理器一起使用,該些其他類型的資料處理器包括處理單元陣列,其執行為了更廣泛的資料處理操作而可能需要協調的執行片段。
圖1示出了處理系統,包括可重組態單元陣列和互連,可組態以執行資料處理操作;以及耦接至陣列中的可重組態單元的靜止邏輯,可組態以回應控制信號來靜止陣列。可回應於源自陣列的內部事件而產生控制信號。可回應於源自陣列外部的外部事件而產生控制信號。
如圖1中所示的主處理器,可以執行有多任務的執行期程式,並且可以產生引起靜止的控制信號以支援多任務。
如圖1中所示的主處理器,可以執行有多任務的執行期程式,並且可以產生引起靜止的控制信號以支援檢查點。
如圖1中所示的主處理器,可以執行有多任務的執行期程式,以及可以響應於源自陣列內部的事件產生引起靜止的控制信號,並且在靜止之後可以重組態執行期程式以支援多程式。
圖2是包括可組態單元陣列之磚片(tile)的簡化圖,其中陣列中的可組態單元是資料匯流排系統上的節點,其在多磚片實施例中可以被組態為陣列級網路,耦接至被設置用於磚片之間的通訊及與裝置上之外部介面的通訊的較上層或頂層網路(見圖9)。
在此範例中,可組態單元陣列200包括多種類型的可組態處理單元。處理單元的類型在此範例中包括,型樣計算單元(Pattern Compute Units, PCU)、型樣記憶體單元(Pattern Memory Units, PMU)、交換單元(S)及位址產生與合併單元(Address Generation and Coalescing Units, AGCU)(每個單元包括兩個位址產生器AG和共享CU)。有關這些類型的可組態單元的功能的範例,請見Prabhakar等人的“Plasticine:A Reconfigurable Architecture For Parallel Patterns(塑泥:平行型的可重組態架構)” ISCA ’17,2017年6月24-28日,加拿大安大略省多倫多市,其透過引用併入,如同本文完整闡述的。在圖2中所示的架構中,主AGCU 250包括陣列靜止控制器251,其控制磚片中可組態單元陣列的靜止操作。
由磚片之組態所實現的資料處理操作(有時稱為“機器”)包括資料處理操作的複數個執行片段,該些執行片段被分布在相應的可組態單元集合(在此範例中是AG、CU、PMU、PCU)之間並由其執行。
參與靜止處理的陣列元件在EF靜止邊界執行來自主AGCU 250(MAGCU)中的陣列靜止控制器251的靜止要求。在以下範例中,在每個EF靜止邊界處,生產者與消費者之間的同步是使用兩種構想達成的:生產者屏障(p_barrier)、及消費者屏障(c_barrier),可以使用控制屏障網路將其鏈接至可組態單元。陣列中的靜止邏輯可以透過控制屏障網路的組態、透過獨立的專用邏輯和通訊鏈路、或者透過控制屏障網路與專用邏輯和鏈路的組合來實現。
控制屏障網路,可使用作為靜止控制網路,在此範例中包括複數個可組態靜止邏輯單元(包括屏障邏輯單元),與陣列中的可組態單元耦接。在此範例中,複數個靜止邏輯單元包括在位址產生器AG中或可操作地耦接至其的邏輯單元(例如,201)、PMU中的邏輯單元(例如,202)、以及PCU中的邏輯單元(例如,203)。可將針對給定資料處理操作的控制屏障網路組態成強制(enforce)執行片段之間的關係,以協調跨磚片分散的執行片段之實行的結束和起始時間點,並且支持如本文所述的靜止處理。
靜止邏輯單元係連接至控制匯流排,該控制匯流排在此範例中使用可組態互連(未示出 – 見圖3)來實現。可使用組態資料來組態控制匯流排,以形成在磚片中的靜止/屏障邏輯單元之間的信號路由,支援被設計用於執行資料處理操作的磚片的特定組態,包括被分配給個別執行片段的多組可組態單元。
這些可組態單元的每一個都包含組態儲存,包括一組暫存器或正反器,儲存表示運行其被分配到的執行片段的設定或順序的組態資料,並且可以包括巢狀迴圈的數量、各迴圈迭代器的限制、每個階段要執行的指令、運算元的來源、以及輸入和輸出介面的網路參數。組態資料還可以包括在各種執行片段中定義靜止邊界的資料。
此外,這些可組態單元的每一者都包含一組態儲存,該組態儲存包括一組暫存器或正反器,儲存可用於追蹤在巢狀迴圈或其他情況下之進度的狀態。組態檔案包含表示每個執行程式之元件的初始組態、或起始狀態的位元流。此位元流被稱為位元檔案。
匯流排系統包括將陣列中的可組態單元互連的鏈路。陣列級網路的鏈路包括一種或多種物理資料匯流排,在本例中是兩種:塊級別(chunk-level)向量匯流排(例如,128位元資料)、及字級別(word-level)純量匯流排(例如,32位元資料)。例如,交換單元211和212之間的互連221包括具有128位元之向量匯流排寬度的向量匯流排互連,以及具有32位元之純量匯流排寬度的純量匯流排互連。此外,還包括可包含可組態互連、或專用與可組態互連之組合的控制匯流排(見圖3),在信號路由上運載由磚片的組態檔案中的組態位元指定的多個控制位元。在一些實施例中,控制匯流排可包括與資料匯流排分離的物理線路。在其他實施例中,控制匯流排可以使用具有獨立協定的相同物理線路或者以分時程序實現,以及作為與資料匯流排在共享硬體上執行的虛擬匯流排。
匯流排可以有不同的資料傳輸粒度。在一個實施例中,向量匯流排可以運載包括16位元組(=128位元)資料作為其負載的塊。純量匯流排可以具有32位元負載,並且攜帶純量運算元或控制資訊。控制匯流排可以運載控制交握,諸如符記和其他信號。向量及純量匯流排可以是分封交換(packet-switched)的,包括指示每個封包之目的地的標頭和其他資訊,例如當封包的接收失序時可用來重組檔案的順序號碼。每個封包標頭可以包含目的地識別符,其識別目的地交換單元的地理座標(例如,陣列中的列與行)、以及介面識別符,該介面識別符識別目的地交換器上用來到達目的地單元的介面(例如,北、南、東、西等)。例如,可以基於裝置中的計時電路對控制網路進行電路交換。組態加載/卸載控制器可以為每個具有128位元的組態資料的塊產生一標頭。在標頭匯流排上將標頭傳輸給可組態單元陣列中的每個可組態單元。
在一個範例中,在向量匯流排上傳輸具有128位元的資料塊,該向量匯流排將該塊作為向量輸入提供給可組態單元。向量匯流排可以包括128條負載線路,以及一組標頭線路。標頭可以包括用於每個塊的序列ID,其可以包括:
· 用以指示塊是高速暫存記憶體或是組態儲存資料的一位元。
· 形成塊號碼的位元。
· 指示行識別符的位元。
· 指示列識別符的位元。
· 指示元件識別符的位元。
對於加載操作,組態加載控制器可以依照N-1至0的順序,將數量N的塊發送至可組態單元。針對此範例,6個塊是以塊5->塊4->塊3->塊2->塊1->塊0的最高有效位元第一順序來發送。(應注意,此最高有效位元第一順序導致塊5在陣列組態加載控制器之分發順序的第0輪中被發送。)對於卸載操作,組態卸載控制器可以按順序將已靜止之可組態單元中的組態資料、狀態暫存器資料、及工作記憶體中的一或多者寫到記憶體。對於加載及卸載兩操作,在此範例中,可組態單元中的組態資料儲存中的組態串聯鏈的移位是從LSB(最低有效位元)到MSB(最高有效位元),或者是MSB優先。
圖2A示出了連接陣列級網路中之元件的示例性交換單元。如在圖2A的範例中所示,交換單元可以有8個介面。交換單元的北、南、東、西介面係用於交換單元之間的連接。交換單元的東北、東南、西北、西南介面係分別用於建立與PCU或PMU實例的連接。每個磚片象限中的兩個交換單元連接到位址產生單元與合併單元(AGCU),其包括多個位址產生(AG)單元及連接到多個位址產生單元的合併單元(CU)。合併單元(CU)在AG之間進行仲裁,並處理記憶體請求。交換單元之8個介面中的每個介面可以包括向量介面、純量介面、及控制介面,以與向量網路、純量網路、及控制網路進行通訊。
在組態之後執行機器之執行片段的期間,可以經由一或多個單元交換器及該些單元交換器之間的一或多條鏈路將資料發送給可組態單元,其使用陣列級網路上的向量匯流排及該一或多個交換單元的向量介面。
在一個實施例中,可組態單元包括組態及狀態暫存器,其保存在組態加載過程中被加載、或者在組態卸載過程中被卸載的單元組態檔案。暫存器可以串聯連接,並且可以透過在串聯鏈移位位元的過程而被加載。在一些實施例中,可能會有多個並聯或串聯配置的串聯鏈。當可組態單元在一個匯流排週期中接收到例如128位元的組態資料時,可組態單元以每週期1個位元的速率將此資料在其串聯鏈中移位,其中移位器週期可以與匯流排週期相同的速率運行。可組態單元將耗費128個移位器週期來加載128個組態位元,以及在向量介面上接收到的128位元的資料。
在組態磚片之前,組態檔案或位元檔案可以使用相同的向量匯流排,經由一或多個單元交換器和該些單元交換器之間的一或多個鏈路被發送至可組態單元,其使用陣列級網路上的向量匯流排及該一或多個交換單元的向量介面。舉例來說,特定於可組態單元PMU 241之單元檔案中的組態資料的塊可以經由位址產生器AG中的加載控制器與交換單元211之西(W)向量介面之間的鏈路220、以及交換單元211之東南(SE)向量介面與PMU 241之間的鏈路231傳送給PMU 241。用於控制屏障網路的組態資料可以被包括在相關聯的可組態單元的組態資料中,或者經由其他組態資料結構而被提供。
可組態單元透過多個記憶體介面與記憶體介接。可以使用多個AGCU來存取每個記憶體介面。每個AGCU包含可重組態的純量資料路徑,以產生對外接記憶體的請求。每個AGCU包含FIFO(用於組織資料的先進先出緩衝區),以緩衝來自外接記憶體的輸出命令、資料以及輸入響應。
出於特定資料處理操作的目的,可以加載組態檔案以指定包括EFRG、靜止/屏障邏輯單元及控制匯流排之磚片的組態,包括可組態單元中的執行片段、互連組態及控制屏障網路組態。協調組態檔案的加載與卸載之技術描述於下列文件中:2018年11月21日申請、由Shah等人共同擁有的美國專利申請案號No. 16/197,826,標題為「可重組態資料處理器的組態加載(Configuration Load of a Reconfigurable Data Processor)」,該文件透過引用完整併入本文。
圖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構造)的結果,或其他動態的、與輸入有關的操作,其表示執行片段之與控制流有關的排序。
可將執行片段分配給EFRG,其包括定義一可組態單元集合的一或多個可組態單元,其中該些集合可具有在空間上跨磚片分布的多個成員。由於可變潛伏期、每個單元的可變工作、可變相依性等等,空間分布可導致EFRG中各單元之間的非同步操作。
例如,執行片段可被分配給包括一或多個PMU及一或多個PCU的可組態單元集合(例如,380)。並且,執行片段可被分配給包括一或多個AG或AGCU、一或多個PMU及一或多個PCU的可組態單元集合。在可組態單元集合中的可組態單元之中,一些單元被組態為輸入的生產者,而其他單元被組態為消費者。例如,被分配給執行片段的一組可組態單元可以包括兩個充當生產者的PMU,提供輸入給充當消費者的一個PCU,該組可組態單元的輸出可被儲存在第三PMU內或者儲存在PCU上的記憶體內。可出於靜止的目的,將靜止邏輯和控制屏障網路組態成鏈結每個集合中被分配給特定執行片段的可組態單元。
圖4是示出示例性可組態單元400,諸如型樣計算單元(PCU)的方塊圖。可組態單元陣列中的可組態單元包括組態資料儲存420(例如,串聯鏈),用以儲存包含特定於相應的可組態單元的組態資料的多個塊(或其他大小的子檔案)的單元檔案,以及相關聯的靜止/屏障邏輯單元475。可組態單元陣列中的可組態單元各包括單元組態加載/卸載邏輯440,經由線路422連接至組態資料儲存420,以執行單元組態加載過程。單元組態加載過程包括經由匯流排系統(例如,向量輸入)接收特定於可組態單元的單元檔案的塊,以及將接收到的塊載入可組態單元的組態資料儲存420。
在此範例中,複數個可組態單元中的可組態單元中的組態資料儲存420包含鎖存器的串聯鏈,其中該些鎖存器儲存控制可組態單元中資源的組態的位元。組態資料儲存中的串聯鏈可以包括用於組態資料的移位暫存器鏈以及用於狀態資訊和串聯連接的計數器值的第二移位暫存器鏈。
可組態單元可以使用三組相應的輸入及輸出(I/O)來與純量、向量、及控制匯流排介接:純量輸入/輸出、向量輸入/輸出、及控制輸入/輸出。純量I/O可用於傳達單字的資料(例如,32位元)。向量I/O可用於在一些情況下傳達塊(chunk)的資料(例如,128位元),該些情況例如在單元組態加載過程中接收組態資料,以及在跨多個PCU之間的長管線組態之後,在操作期間傳送和接收資料。控制I/O可用於傳達控制信號,諸如可組態單元之執行的起始或結束。控制輸入由控制塊470接收,以及控制輸出由控制塊470提供。
在向量FIFO塊460中使用向量FIFO來緩衝每個向量輸入,該向量FIFO塊可以包括一或多個向量FIFO。每個純量輸入使用純量FIFO 450進行緩衝。使用輸入FIFO解耦資料生產者和消費者之間的時序,並且透過使其對輸入延遲失配具有強健性來簡化可組態單元間的控制邏輯。
輸入組態資料410可被提供給向量FIFO作為向量輸入,然後被傳送到組態資料儲存420。可以使用向量輸出從組態資料儲存420卸載輸出組態資料430。
陣列使用菊鏈式完成/靜止就緒匯流排,以指示加載/卸載命令何時被完成,並且如下所述傳輸靜止就緒信號。主AGCU透過菊鏈式命令匯流排,將靜止、以及程式加載和卸載命令傳輸到可組態單元陣列中的可組態單元(從S0遷移到S1,圖10)。如在圖4的範例中所示,菊鏈式完成/靜止就緒匯流排491和菊鏈式命令匯流排492係連接到菊鏈邏輯493,其與單元組態加載/卸載邏輯440通訊。菊鏈邏輯493可以包括加載/卸載完成及靜止就緒狀態邏輯,如下所述。菊鏈式完成匯流排在下面進一步說明。命令及完成/靜止就緒匯流排的其他布局顯然是可能的,但此處未說明。
在此範例中的可組態單元包括多個可重組態資料路徑在方塊480中。可以將可組態單元中的資料路徑組織為多階段(階段1…階段N)、可重組態的SIMD(單指令、多資料)管線。被推送進可組態單元中的組態串聯鏈中的資料塊包括可組態單元中每個資料路徑之各階段的組態資料。組態資料儲存420中的組態串聯鏈係經由線路421連接至方塊480中的多個資料路徑。
在所示範例中的PCU被設計為執行資料處理操作之執行片段的部分,其可以包含應用程式中的單一、最內層的平行型樣,或其他適合使用靜止及控制屏障網路進行控制的型樣。可將PCU資料路徑組織為多階段、可重組態的SIMD管線。這種設計使每個PCU能達到高計算密度,並且利用跨通道的迴圈級平行性與跨階段的管線平行性二者。每個SIMD通道的各階段(階段1…階段N)都可以由功能單元(FU)和相關聯的管線暫存器組成。FU可以例如執行32位元字級算數和二進位運算,包括支援浮點和整數運算。由於單一管線階段中的FU以SIMD運行,因此在示例性實施例中,各階段僅需要單一組態暫存器。將來自各FU的結果寫入其相關聯的暫存器。
每個通道中的管線暫存器可以跨管線階段鏈接在一起,以允許存活值(live values)在同一通道內的各階段之間傳播。可以使用兩種類型的PCU內(intra-PCU)網路來捕捉FU之間的跨通道通訊。允許將來自多個通道的值縮減成單一純量的歸約(reduction)樹網路,以及允許使用PR作為跨階段的滑動窗口以利用模板應用程式中的再利用的移位網路。兩種網路都使用PR內的專用暫存器來最小化硬體負擔。
每個向量I/O(例如,向量FIFO 460)允許在PCU中每個通道傳輸一個字,並且用於諸如對PMU中的高速暫存進行讀或寫以及在多個PCU之間跨長管線傳輸中間資料的情況。使用輸入FIFO可解耦資料生產者和消費者,並且透過使其對輸入延遲失配具有強健性來簡化PCU間的控制邏輯。FIFO 450、460可以產生例如FIFO空(empty)或FIFO非空信號的狀態信號,其被連接至控制塊470,以及單元中的其他電路,並且可用於指示執行片段的狀態,例如所需的輸入資料在FIFO中是否可用。
控制I/O(Cntl輸入、Cntl輸出)係連接至控制塊470,並用於傳輸控制信號,例如PCU之執行的開始或結束,或者用於指示背壓(backpressure)。
可重組態的計數器鏈471產生型樣迭代索引以及狀態和控制信號,其可被用來指示執行片段的狀態,並且可被用來在可組態單元的元件之間協調執行。計數器鏈471例如可以產生計數器完成信號,其可被用來指示執行片段的狀態,諸如執行片段的數個週期例如迴圈中的迭代、或包括數個迭代的迴圈、靜止邊界、以及執行片段中的迴圈是否已完成(迴圈的所有週期都已執行)。
當控制塊470致能多個計數器之其中一者時,可以啟動PCU中執行片段的執行。基於應用程式的控制及資料相依性,可以將控制塊組態成組合來自本地FIFO及全域控制輸入二者的多個狀態信號,以觸發PCU執行。可以使用狀態機的可重組態組合邏輯和可編程上-下數計數器來實現控制塊470。
靜止/屏障邏輯475被包括在可組態單元的此範例中。靜止/屏障邏輯475可以是控制塊470的一部份,或者被實現為裝置上的單獨塊。靜止/屏障邏輯475係耦接至控制輸入及耦接至控制輸出。並且,靜止/屏障邏輯475係耦接至控制塊470及計數器鏈471,用於交換狀態信號和控制信號以支持陣列寬的靜止邏輯和如上所述組態的控制屏障網路。
型樣記憶體單元(例如,PMU)可以包含高速暫存記憶體,其與可重組態的純量資料路徑耦合,用於位址計算和其他純量計算,以及包含PCU中使用的匯流排介面。PMU可被用於在整個可重組態單元陣列中分配外部記憶體。在一個實施例中,PMU中的記憶體內的位址計算是在PMU資料路徑上執行的,而核心計算是在PCU內執行的。PMU還可以包括靜止/屏障邏輯單元,被組態以與PMU的元件交換狀態和控制信號,並且可用於靜止及啟用PMU中的執行片段。此外,在此範例中的位址產生器AG還可以包括靜止/屏障邏輯單元,被組態以與AG的元件交換狀態及控制信號,並且可用於靜止及啟用AG中的執行片段。
圖5示出靜止/屏障邏輯單元的範例,可使用於可組態單元陣列中,以形成如本文所述的可組態控制屏障網路。使用在陣列中之可組態單元中的或與之相關聯的多個如圖5所示的邏輯單元,可以遞迴地構造控制屏障網路以支持複雜的EFRG。圖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,或者換句話說,用來重設定符記儲存中的值。UDC可被組態為一位元計數器、或多位元計數器。
符記儲存係耦合到可組態輸入電路,其在此範例中包括複數個可組態縱橫交換器(crossbar switch)。可組態輸入電路的狀態交叉開關(crossbar)550具有輸入551,其被連接到可用來指示陣列中之可組態單元中的執行片段的狀態的信號。在此範例中,狀態信號可以包含來自相關聯的可組態單元中的複數個計數器的靜止邊界計數器完成信號,其可被用來指示執行片段的狀態。狀態交叉開關550包括輸出552、553,其可連接到增量交叉開關530及減量交叉開關540。
可組態輸入電路的增量交叉開關530向符記儲存中的每個UDC提供增量信號,並且具有連接到控制匯流排之可組態互連的輸入557,以及連接到狀態交叉開關550之輸出的輸入。因此,每個UDC具有增量信號,其係基於來自狀態交叉開關550之輸出以及來自可組態互連輸入557之輸出的可組態的選擇。增量交叉開關還具有輸入,被連接以在線路552上接收由屏障邏輯520產生的屏障符記,如下所述。
可組態輸入電路的減量交叉開關540向符記儲存中的每個UDC提供減量信號,並且具有連接到控制匯流排之可組態互連的輸入558(或多個輸入),以及連接到狀態交叉開關550之輸出552、553的輸入。因此,每個UDC具有減量信號,其係基於來自狀態交叉開關550之輸出及來自可組態互連輸入558之輸出的可組態的選擇。減量交叉開關還具有輸入,被連接以在線路552上接收由屏障邏輯520產生的屏障符記,如下所述。
靜止/屏障邏輯單元包括致能邏輯500(AND樹),其包括可組態致能遮罩503,該可組態致能遮罩基於符記儲存中的信號與來自相關聯的可組態邏輯單元的狀態信號的可組態組合,產生用於連接至相關聯的可組態邏輯單元的致能信號於線路502上。例如,可將線路502上的致能信號提供給圖4的控制塊470,其可以包括用於利用線路502上的致能信號為PCU產生控制信號的邏輯,以開始和停止執行片段。致能邏輯500的輸入包括來自相關聯的可組態單元的線路501上的狀態信號,諸如FIFO非空信號等。並且,致能邏輯500的輸入可以包括符記儲存的輸出(例如,513)。線路502上的致能信號因此可以基於符記儲存之輸出的可組態組合來產生。此外,可以基於符記儲存的輸出與來自相關聯的可組態單元的狀態信號的可組態組合來產生線路502上的致能信號。
靜止/屏障邏輯單元包括屏障符記邏輯520,其包括可組態屏障遮罩521,該可組態屏障遮罩基於儲存在符記儲存中的線路513上的信號的可組態組合,產生屏障符記於線路522上。線路522上的屏障符記作為反饋信號被反饋到減量交叉開關540,例如可用於重設符記儲存。並且,線路522上的屏障符記在此範例中作為輸入被施加到增量交叉開關530,可用作設定符記儲存中的值的條件。依據組態檔案,屏障符記可以充當生產者屏障(p_barrier)或充當消費者屏障(c_barrier)符記。
靜止/屏障邏輯單元包括輸出交叉開關560。輸出交叉開關的輸入在此範例中包括線路522上的屏障符記,其包括p_barrier或c_barrier、以及由狀態交叉開關550輸出的狀態信號。在其他實施方案中也可以將其他輸入提供給輸出交叉開關560。輸出交叉開關可組態以將來自線路522的屏障符記和其他信號施加到可組態互連上的選定線路561。可組態互連上的選定線路561可以在信號路由中被組態,該信號路由提供屏障符記作為可組態邏輯陣列之控制屏障網路中的另一靜止/屏障邏輯單元的輸入(例如,輸入557)。可組態互連上的選定線路561可以在信號路由中被組態,該信號路由提供來自可組態單元之一的狀態信號(例如,信號552、553)作為可組態邏輯陣列之控制屏障網路中的另一靜止/屏障邏輯單元的輸入(例如,輸入557)。
利用如圖5所示的靜止/屏障邏輯單元,屏障操作如下。每個單元可以被組態成實現跨所有信號的屏障,其可以增加UDC。這包括來自源自相關聯的可組態單元外部的控制匯流排的外部控制輸入,以及內部狀態信號,例如來自相關聯的可組態單元內部的計數器完成信號。為了實現跨這些信號之子集合的屏障,組態檔案在符記儲存中為子集合中的每個信號保留一個零初始化的UDC。交叉開關被組態成將所需的信號路由至它們各自的UDC,其經由增量交叉開關530增加輸入。接下來,將屏障遮罩組態成選擇保留的UDC。該遮罩選擇參與AND樹的UDC。AND樹的輸出是一位元屏障符記,例如當遮罩中的所有UDC都具有大於零的值時,該屏障符記將變為高。屏障符記可被組態成透過減量交叉開關540處的選擇線路522來減少參與屏障的所有UDC。這可被用來確保針對每組輸入符記,屏障信號僅在一個週期內為高,從而產生一個輸出符記。在此組態中,屏障符記係用於重設定符記儲存的目的。在其他實施例中,為了那個目的可使用不同的信號。並且,屏障符記可被用來重設符記儲存中的一個位元、或僅某些位元,而不是全部的位元。透過對“輸出”交叉開關560進行編程,可將得到的屏障符記在控制輸出上發送。然後可以依據程式要求使用此符記,例如,輸入到下一個計算階段、或到下一個屏障節點等。在某些情況下,屏障符記也可能需要被本地發送給節點。為了促進這種使用情況,屏障符記也是進入可以增加其他UDC的增量交叉開關530的入口。
這為軟體提供了最大的彈性,可以靠近屏障符記的消費者實現屏障,以更佳地利用資源。
來自可組態單元陣列中多個來源的控制符記通常需要在屏障處進行同步,其中在從每個來源接收一個符記之後,會產生信號符記(控制脈衝),允許遞迴及階層式的控制網路。
圖6示出靜止邏輯,其在邏輯示意(signaling)的意義上可以是陣列中的可組態單元(或者更一般地是處理單元)之其中一者的一部分或與其相關聯。靜止邏輯在一個範例中與圖4中所示的屏障邏輯、控制命令菊鏈及完成/靜止菊鏈電路耦合。圖6中所示的靜止邏輯包括偏斜計數器。偏斜計數器可以是專用計數器,用以追蹤生產者和消費者之間的迴圈迭代偏斜或靜止邊界偏斜。在具有深層管線的迴圈中,或當生產者和消費者在物理上分離時,生產者可能超前消費者執行或運行,從而產生了偏斜。
在包括複數個可組態單元的EFRG中,可透過分布在EFRG中的一些可組態單元之間的事件,諸如可組態狀態,的組合來定義QB。在給定的實施方案中,EFRG的一些可組態單元可被組態為生產者,而一些可被組態為消費者。執行片段的QB可以包含一事件,該事件是在EFRG中的生產者處的不同事件的函數。EFRG中的消費者可以非同步地操作,並且回應於、或使用生產者提供的信號及資料。消費者處的事件可以示意來自生產者的信號或資料的消耗。
在圖6中,將指示QB之生產者處的事件的信號表示為P_QB_x,其中x是事件信號源的指定符,並且在示出的範例中是從0到N。可以如圖7所示展生P_QB_x信號。在此範例中,P_QB_x信號的可組態組合係用於產生指示在EFRG中偵測QB的信號EF_QB,並與靜止控制信號組合以產生信號P_BARRIER。因此,靜止邏輯回應在EFRG中的至少一個處理單元中的迴圈計數器來偵測靜止邊界。信號C_BARRIER是在與EFRG中的消費者相關聯的靜止/屏障邏輯中產生的,如下面圖8所示,此係基於QB之消費者處的事件的組合,其表示為C_QB_x,其中x是事件信號源的指定符,並且在示出的範例中是從0到M。取決於EFRG的特定組態,M及N可以相同或不同。
在此實施方案中使用P_BARRIER信號以使EFRG中的生產者能夠超出QB繼續。若其未宣告(asserted),則生產者將無法繼續超出QB。針對給定的QB,消費者可能無法在生產者開始下一個QB之前完成,從而導致EFRG內出現偏斜的可能性。
在基本操作中,圖6中的偏斜計數器透過P_BARRIER信號遞增,以及透過C_BARRIER信號遞減。因此,偏斜計數器追蹤EFRG之生產者和消費者之間的靜止邊界的數量(由P_BARRIER表示)。偏斜計數器還可以作為偵測從生產者到消費者之進行中的資料封包或交易的機制。
在示出的邏輯中,來自陣列中的主AGCU的命令AGCU_CMD跨命令菊鏈被傳遞到解碼器601。主AGCU可以回應源自陣列外部的外部事件,使用菊鏈分發此命令,該外部事件如運行期間從外部處理器上的主控制程式接收到的信號所指示的。並且,主AGCU可以回應源自陣列內部的事件,使用菊鏈分發此命令,該內部事件例如可由陣列之當前組態實現的機器所產生並且在控制匯流排上傳遞至主AGCU或其他方式的信號所指示。對於靜止命令,正反器602被設定成儲存旗標Q_RCV,以開始靜止操作。可透過多種方式重設此旗標,包括例如回應於來自主AGCU的任何後續接收到的非靜止命令的命令、或透過使用控制屏障邏輯中的符記來產生重設信號。正反器602的輸出係連接到閘603,其致能包含多工器604和組態儲存605的靜止就緒菊鏈邏輯。組態儲存605儲存靜止參與Q_PCPT旗標。為與參與靜止操作所需的靜止邏輯相關聯的可組態單元設定靜止參與旗標。例如,在靜止操作中,可能只需要充當生產者的可組態單元參與。靜止參與旗標的使用能夠實現出於靜止目的有效利用組態資源。
從邏輯電路提供閘603的第二輸入,該邏輯電路追蹤跨靜止邊界的執行片段的進度,其可被分配給相應的可組態單元集合。在此範例中,當偏斜計數器SKEW UDC 632的輸出等於零時,如元件633所示,提供該第二輸入。
亦提供正反器602作為閘630的反向輸入,使邏輯能夠追蹤執行片段的執行進度。閘630的第二輸入為屏障遮罩及AND樹610的輸出EF_QB,屏障遮罩及AND樹610可使用圖5中所示的元件520及521實現。屏障遮罩及AND樹610可被組態成產生EF_QB信號。在圖6的簡化圖示中,屏障遮罩及AND樹610的輸入包含符記儲存的元件,其被組態成在UDC 620-622中接收信號P_QB_0至P_QB_N,其示意相關聯的生產者可組態單元集合的執行片段靜止邊界。此外,符記儲存可以包括UDC 611中的起始符記以及其他符記和信號,該起始符記由例如主AGCU中的主狀態機傳送到陣列中的可組態單元。屏障遮罩及AND樹610可被組態成產生EF_QB作為閘630的輸入,以回應特定執行片段所需的生產者的組態靜止邏輯。
閘630的輸出被提供作為閘631的輸入,閘631的輸出被施加到SKEW UDC 632的增量輸入。SKEW UDC 632的減量輸入由控制輸入交叉開關640提供,控制輸入交叉開關640被組態成出於靜止的目的,在控制屏障網路的線路641上接收消費者屏障符記C_BARRIER。
當SKEW UDC 632是滿的(full)時,宣告一信號,禁用閘631。SKEW UDC 632的大小在執行片段之靜止邊界的單元中設置最大偏斜,該大小在各種實施例中可以是固定的或可組態的。使用此種類型的邏輯,在某些組態中,可以在除了靜止邊界以外的偏斜單元上控制單元之間的偏斜。
亦提供閘631的輸出作為符記儲存UDC 620-622及611的反饋,以清除或減少儲存的值。並且,閘631的輸出還提供給控制輸出交叉開關650,其可被組態成,針對被分配給相關聯的可組態單元集合的執行片段,在控制屏障網路的線路651上輸出信號作為P_BARRIER。
在操作中,當充當生產者的可組態單元到達執行片段中的靜止邊界時,P_QB_x信號被施加到符記儲存。當所有生產者都施加P_QB_x之後,只要正反器602的輸出為低,就在線路651上施加生產者屏障信號P_BARRIER,並且增加SKEW UDC 632,只要其未滿。當在線路641上接收到C_BARRIER時,減少SKEW UDC 632。因此,SKEW UDC 632可被用來追蹤一組非同步操作的可組態單元之間跨靜止邊界的執行片段的進度。
只要SKEW UDC 632未滿,並且正反器602的輸出為低,則閘631的輸出等於EF_QB信號,以及P_BARRIER信號被產生。此信號使得生產者能夠超出由EF_QB信號示意的QB,繼續進行至下一分段(segment)的根。若正反器602的輸出為高,則將閘631的輸出設定為邏輯零,以及P_BARRIER不被宣告。這可以防止生產者超出由EF_QB示意的QB繼續進行,從而允許靜止發生。
當正反器602的輸出為高,邏輯停止在線路651上宣告P_BARRIER,並且停止增加SKEW UDC 632。一旦SKEW UDC被遞減至零(633),同時正反器602的輸出致能閘603,並且設置Q_PCPT位元,靜止就緒Q_RDY信號在線路652上從邏輯0翻轉成邏輯1。在此實施例中,可以基於來自菊鏈中的陣列中的先前單元的靜止就緒Q_RDY信號的邏輯組合,將用於執行片段的Q_RDY信號傳送到完成/靜止菊鏈上的陣列靜止控制器。若未設置Q_PCPT位元,則Q_RDY信號保持在邏輯1,以維持菊鏈跨參與和未參與的可組態單元連接。
圖7示出與被組態為生產者的可組態單元相關聯的邏輯,該生產者消耗來自線路651的P_BARRIER符記,在線路741上為在相關聯的可組態單元上執行的執行片段的部分產生生產者靜止邊界信號P_QB_x。在偵測到被用作由OR樹及遮罩750的組態表示的每個執行片段資源組中的生產者的可組態單元以及圖7中的計數器760-762的組態狀態集合時,產生P_QB_x信號。該邏輯在線路712上產生致能信號,用以超出執行片段的靜止邊界繼續進行至EF的下一分段的根,或用以繞回到EF的起始根,若它是EF中的最後一個QB的話。因此,EF在QB之後的分段的根成為EF的靜止點。
在此範例中,P_BARRIER是EFRG之生產者元件之間針對執行片段的同步屏障。特定生產者處之EF的每個迴圈可包括至少一個P_QB_x。將生產者信號P_QB_x連接在一起以形成如圖6中所示的控制流屏障。使用P_QB_x信號參與P_BARRIERS之生產的客戶端元件被組態成在編譯時參與靜止過程。
在所示的實施例中,可組態單元包括,或可被組態成連接至,包含可指示元件狀態之計數器CNTR_0至CNTR_N(760-762)的計數器鏈。計數器鏈中的計數器可位於裝置上的任何位置,從其可將輸出傳送至圖7的邏輯。在一些實施例中,計數器鏈被實現為可組態單元的一部分。計數器鏈輸出被施加到OR樹及遮罩750,其可由組態檔案設定以在計數器鏈中之計數器狀態的任何組合上產生執行片段靜止邊界信號P_QB。OR樹及遮罩750可被組態成選擇要一起進行OR運算、或者邏輯上組合的計數器及計數器狀態的組合,以示意對應於靜止邊界的狀態。例如,可以在迴圈完成處、或在迴圈的可分割部分,設置靜止邊界信號P_QB。例如,可將具有大量N次迭代的迴圈分割成N/M個靜止邊界,每個具有多達M次迭代。該技術不需要M是N的除數。最終的靜止邊界可能具有小於M的餘數次迭代。這種除法以及餘數迴圈迭代的處理可以使用可組態的OR樹或其他類型的邏輯來實現。
將邊界信號P_QB作為輸入施加到減量交叉開關730,其耦合至QB UDC符記儲存711。QB UDC符記儲存711的增量輸入由增量交叉開關720施加,增量交叉開關720接收EFRG的P_BARRIER,可組態單元為EFRG的成員。QB UDC符記儲存711可以是由控制屏障網路中的控制信號及屏障信號反饋到致能遮罩及AND樹710的多個符記儲存的其中一個,其可使用圖5的元件500及503來實現。致能遮罩及AND樹710的輸出是用於相關聯的可組態單元的致能信號,以使執行能夠在下一個靜止邊界之前的分段的根恢復執行。EFRG中的所有生產者可以透過相同的P_BARRIER信號致能,以管理EFRG跨成員可組態單元的同步。
亦將邊界信號P_QB作為輸入施加到控制輸出交叉開關740,以提供P_QB_x信號作為發送到圖6中所述的邏輯的多個P_QB_x信號之一。
圖8示出屏障邏輯的實施方案,以在與充當EFRG中之消費者的可組態單元相關聯的靜止邏輯中產生C_BARRIER符記。C-BARRIER符記是執行片段中消費者元件之間的同步屏障。充當消費者的每個可組態單元可被組態,使得在單元中執行的EF的每個分段(諸如迴圈或迴圈的分區)可以包含單一C_QB_x於靜止邊界上,其對應於分段的出口點。當檢測到每個執行片段資源組中用作消費者的可組態單元的組態狀態集合時,可以參考圖7中所示的P_QB_x信號所描述的、或以適合於消費者功能的等效方式來產生C_QB_x信號。
在此範例中,一組符記儲存810-812從與在執行片段中充當消費者之可組態單元相關聯的靜止邏輯接收C_QB_x靜止邊界信號。
遮罩及AND樹800(其可使用圖5的元件520和521來實現)被組態成在檢測到已組態的C_QB_x信號組合後,在線路801上產生用於EFRG的C_BARRIER符記。線路801上的C_BARRIER符記被提供給圖6中所示之靜止邏輯的部分。
回應於線路820上的信號,諸如來自線路801的C_BARRIER信號、或其他可組態信號,遞減或重設符記儲存810-812。
圖6-8中所示的電路是耦合到控制匯流排的靜止邏輯的邏輯單元,該控制匯流排可組態以在控制屏障網路中形成邏輯單元之間的信號路由。控制屏障網路包含複數個屏障邏輯單元,其具有連接至控制匯流排及處理單元陣列的輸入及輸出。屏障邏輯單元包括耦合到EFRG的第一邏輯單元(例如,圖6-7),可組態以消耗來自輸入的生產者之示意EFRG中的靜止邊界的信號,以及基於來自生產者的信號產生生產者屏障;耦合到EFRG的第二邏輯單元(例如,圖8),可組態以消耗來自輸入的消費者之示意將EFRG的輸入用於靜止邊界的信號,以及基於來自消費者的信號產生消費者屏障。靜止邏輯包括電路,該電路可組態以連接至控制匯流排,並且包括偏斜計數器,可組態以接收生產者屏障符記和消費者屏障符記來追蹤生產者和消費者之間執行片段的進度差異。
圖9是CGRA(粗粒度可重組態架構)處理器之元件的簡化方塊圖,其中CGRA處理器具有2個磚片(Tile1、Tile2)。磚片包含連接至匯流排系統的可組態單元陣列,在此範例中包括陣列級網路,如圖2及3中所示。匯流排系統還包括頂層網路,將磚片連接到外部I/O介面905(或任何數量的介面)。在其他實施例中,可以使用不同的匯流排系統組態。在此實施例中,每個磚片中的可組態單元是陣列級網路上的節點。
兩個磚片之各者具有4個AGCU(位址產生及合併單元)(例如,MAGCU1、AGCU12、AGCU13、AGCU14)。AGCU是頂層網路上的節點以及陣列級網路上的節點,並且包括用於在每個磚片中在頂層網路上的節點與陣列級網路上的節點之間路由資料的資源。
在此範例中,頂層網路上的節點包括一或多個外部I/O介面,包括介面905。至外部裝置的介面包括用於在頂層網路上的節點與外部裝置之間路由資料的資源,外部裝置諸如被連接至介面的大容量記憶體、主處理器、其他CGRA處理器、FPGA裝置等。
在此範例中,將AGCU之其中一者組態為主AGCU,其包括用於磚片的陣列靜止控制器351和組態加載/卸載控制器。在其他實施例中,每個磚片可實現一個以上的陣列靜止控制器351,並且可透過分布在一個以上的AGCU之間的邏輯來實現一個陣列靜止控制器351。
MAGCU1包括陣列靜止控制器351用於Tile1,以及MAGCU2包括陣列靜止控制器351用於Tile2。在其他實施例中,陣列靜止控制器351可被設計用於一個以上之磚片的靜止控制。在其他實施例中,一個以上的陣列靜止控制器可被設計用於單一磚片的組態。此外,陣列靜止控制器351可以在系統的其他部分中實現,包括作為頂層網路和一或多個陣列級網路上的獨立節點。
頂層網路係使用頂層交換器(911-916)以及I/O介面905來構成,頂層交換器彼此連接以及連接至頂層網路上的其他節點,包括AGCU。頂層網路包括鏈路(例如,L11、L12、L21、L22),連接至頂層交換器。資料以封包形式在鏈路上的頂層交換器之間傳輸,並且從交換器傳輸到與交換器相連的網路上的節點。例如,透過鏈路L11連接頂層交換器911與912,透過鏈路L12連接頂層交換器914與915,透過鏈路L13連接頂層交換器911與914,以及透過鏈路L21連接頂層交換器912與913。該些鏈路可以包括一或多個匯流排,並且支持控制線路,包括例如塊寬的匯流排(向量匯流排)。例如,頂層網路可以包括資料、請求和響應通道,可協同操作用於以類似AXI相容協定的方式傳輸資料。參見AMBA® AXI及ACE協定規格書,ARM, 2017。
可將頂層交換器連接至AGCU。例如,將頂層交換器911、912、914及915分別連接至磚片Tile1中的MAGCU1、AGCU12、AGCU13及AGCU14。將頂層交換器912、913、915及916分別連接至磚片Tile2中的MAGCU2、AGCU22、AGCU23及AGCU24。
頂層交換器可被連接到一或多個外部I/O介面(例如,介面905)。執行運行時期程式的主機可以經由頂層網路與陣列靜止控制器、以及與組態加載/卸載控制器進行通訊。
圖10示出可用於控制可組態單元中的單元組態加載過程之狀態機的一個範例。組態加載過程可以由例如主AGCU中的組態加載邏輯來控制,並且可以與陣列靜止控制器耦合。通常,單元組態加載過程在一個匯流排週期中,從匯流排系統接收特定於可組態單元的單元檔案的第一塊(或子檔案),然後在接收到單元檔案的第二塊之前,在後續的移位器週期期間開始將接收到的第一塊推送進串聯鏈,該移位器週期與匯流排週期的發生速率相同。當在稍後的匯流排週期中,從匯流排系統接收特定於可組態單元的單元檔案的第二塊時,該過程在將較早接收到的塊推送進串聯鏈之後的週期期間,開始將接收到的第二塊推送進串聯鏈。在一些或所有回合的組態加載過程中,在可組態單元接收到複數個有序塊中的第二塊(單元檔案之塊順序的下一個)之前,第一塊可被可組態單元中的單元組態加載過程消耗。
圖10的狀態機包括六個狀態S0至S5。在狀態S0(閒置),單元組態加載過程等待來自主AGCU中的組態加載/卸載控制器的組態加載/卸載命令。組態加載/卸載控制器負責將組態資料加載及卸載自/至外接記憶體(off-chip memory)(140,圖1)以及至/自可組態單元的陣列(190,圖1)。當在組態加載/卸載控制器接收到加載命令時,單元組態加載過程進入狀態S1。
在狀態S1(等待靜止),狀態機在加載或卸載命令之後等待靜止狀態。在狀態S1,狀態機可以執行如本文所述之靜止過程,包括分配靜止命令。當靜止狀態被建立後,禁用多資料路徑中的功能觸發器(flop),因而功能觸發器不會循環,並且關閉純量輸出、向量輸出及控制輸出,因而輸出不會驅動任何加載。可以使用上述陣列靜止控制器及靜止邏輯來誘發陣列的靜止狀態。若已接收到加載命令,則在達到靜止狀態之後,單元組態加載過程進入狀態S2。當接收到的是卸載命令時,則在達到靜止狀態之後,單元組態加載過程進入狀態S4。
在狀態S2(等待輸入有效),單元組態加載過程等待輸入FIFO(1110,圖11)變成有效。當輸入FIFO變成有效時,輸入FIFO透過匯流排系統接收到組態檔案的組態資料塊。舉例來說,一組態資料塊可以包括128位元的加載資料,其在匯流排系統的向量網路上被接收,並且該向量網路的向量匯流排寬度為128位元。當輸入FIFO變成有效時,單元組態加載過程進入狀態S3。
在狀態S3(加載移位),首先在一個時脈週期內將128位元的組態資料塊從輸入FIFO移出佇列,然後在128個時脈週期內將128位元的組態資料塊移位進輸入移位暫存器(1120,圖11)。輸入移位暫存器可以具有與組態資料塊相同的長度(例如,128位元),並且其花費與組態資料塊之長度相同的移位器時脈週期數(例如,128)來將組態資料塊移位進輸入移位暫存器。如上所述,在某些實施例中,移位器時脈與匯流排時脈(或匯流排週期)可以相同速率運行。
圖11是可組態單元中之組態儲存的邏輯表示。在此實施例中,可組態單元中的組態資料儲存(420,圖4)包括組態串聯鏈,其包括第一移位暫存器鏈1130和第二移位暫存器鏈1140。第一移位暫存器鏈1130包括一組暫存器或鎖存器。第二移位暫存器鏈1140包括另一組暫存器或鎖存器(正反器)。在此實施例中,第一移位暫存器鏈和第二移位暫存器鏈係串聯連接以形成單鏈。
組態檔案包括複數個組態資料塊,用於可組態單元陣列中之複數個可組態單元的每個可組態單元。組態資料塊代表個別可組態單元的初始組態、或起始狀態。此系統中的組態加載操作是在可組態單元陣列中設置組態資料的單元檔案以允許所有的可組態單元執行程式的過程。
第一移位暫存器鏈1130中的暫存器集合可以代表運行程式的設置或順序,其包括操作包含暫存器之可組態單元的定義。這些暫存器可以註冊巢狀迴圈的數量、各迴圈迭代器的限制、靜止邊界、各階段要執行的指令、運算元的來源、以及用於輸入及輸出介面的網路參數。第二移位暫存器鏈中的暫存器集合可以包含關於在被分配給陣列之執行片段的靜止邊界上加載進可組態單元中的程式的運行狀態的資料。
如在圖11的範例中所示,第一移位暫存器鏈1130和第二移位暫存器鏈1140係串聯連接,使得第一移位暫存器鏈的MSB(最高有效位元)被連接到第二移位暫存器鏈的LSB(最低有效位元)。加載信號或卸載信號可以充當移位致能信號,其耦合到第一移位暫存器鏈的LSB和第二移位暫存器鏈的LSB,以控制第一移位暫存器鏈和第二移位暫存器鏈上的加載/卸載操作。輸入FIFO 1110經由選擇器1170耦合到輸入移位暫存器1120。當加載信號有效時,選擇器1170將輸入移位暫存器1120連接到組態資料儲存的輸入(第一移位暫存器鏈1130的LSB)。
當加載信號有效時,可將輸入移位暫存器1120中的組態資料移位到組態串聯鏈中的第一移位暫存器鏈1130和第二移位暫存器鏈1140。此處,加載信號可以用作針對輸入移位暫存器、第一移位暫存器鏈、及第二移位暫存器鏈的致能信號。加載操作可以重複進行直到可組態單元的所有組態資料塊都被載入可組態單元中的組態資料儲存。當串聯鏈的長度與整數個塊(或子檔案)的長度不同時,可以用該差異來填補串聯中的第一塊,並且當移入最後一塊時,填補位元將被移出到鏈的末尾。例如,可組態單元中的組態資料儲存可以儲存大小為1400位元的單元檔案。單元組態加載過程可以加載整數N個塊。在此範例中,N=11,以及數量N個塊包括Chunk 5、Chunk 4、Chunk 3、Chunk 2、Chunk 1及Chunk 0。向量匯流排的向量寬度為128位元,組態資料塊具有128位元,以及可在一個匯流排時脈週期內將塊傳送給可組態單元。N個塊的大小為N x 128=11*128=1408位元,其包括8個填補位元以匹配1408位元的單元檔案大小。
為了從錯誤中恢復,卸載操作可以查驗各個可組態單元的狀態。卸載操作可以在重新啟動所需的靜止邊界上儲存各個可組態單元的執行狀態,並且在錯誤發生時致能應用程式被重新啟動。其還允許為了除錯,儲存或傳輸可組態單元的狀態。需要儲存的狀態至少包括部分第一或第二移位暫存器的內容,以及可選地包括PMU記憶體的內容。程式卸載還可能需要卸載所有第一及第二移位暫存器的狀態。
輸出FIFO 1160係耦合到輸出移位暫存器1150,該移位暫存器1150進而耦合到組態資料儲存的輸出(第二移位暫存器鏈1140的MSB)。針對卸載操作,當卸載信號有效時,可以將第二移位暫存器鏈1140及第一移位暫存器鏈1130中的組態資料移位到輸出移位暫存器1150。當輸出FIFO 1160有效時,可以在一個時脈週期內將輸出移位暫存器1150中的組態資料(例如,128位元)插入到輸出FIFO 1160。可以重複卸載操作直到可組態單元中的組態資料儲存中的所有組態資料塊都被卸載到輸出FIFO中為止。還可使用具有靜止的程式卸載來實現多程式環境以及實現多任務環境,其中高優先權程式可在低優先權程式的靜止邊界上中斷低優先權程式,靜止並卸載低優先權程式,然後加載並執行高優先權程式。
為了同步及傳達由MAGCU中的組態加載控制器發出的組態加載命令的完成,在一個範例中實施單線菊鏈方案,其由鏈中各元件中的菊鏈邏輯(例如,圖4中的菊鏈邏輯493)中包括的邏輯支持。此方案要求每個元件具有下面2個埠:
1. 被稱為PROGRAM_LOAD_DONE_IN的輸入埠
2. 被稱為PROGRAM_LOAD_DONE_OUT的輸出埠
當組件完成執行MAGCU發出的命令並將其PROGRAM_LOAD_DONE_IN輸入驅動為高時,將驅動其PROGRAM_LOAD_DONE_OUT信號。當MAGCU完成執行命令的所有必要步驟後,將透過驅動其PROGRAM _LOAD_DONE_OUT來啟動菊鏈。鏈中最後一個元件將驅動其PROGRAM_LOAD_DONE_OUT,其將被連接到MAGCU的PROGRAM_LOAD_DONE_IN。MAGCU的PROGRAM_LOAD_DONE_IN變為高表示命令已完成。在傳送與所有元件的所有CHUNK相對應的資料之後,MAGCU將其PROGRAM_LOAD_DONE_OUT埠驅動為高。所有元件在完成加載它們所有的組態位元之後,將它們各自的PROGRAM_LOAD_DONE_OUT埠驅動為高。此操作可以在與靜止就緒發訊相同的菊鏈上執行。
當宣告MAGCU輸入埠PROGRAM_LOAD _DONE_IN後,組態檔案加載完成。相同或相似的邏輯可被用於Q_RDY信號,如上所述。
圖12是狀態機圖,示出執行針對類似圖3及圖10之系統的陣列組態加載過程之邏輯的一個範例,包括分發組態檔案,其包含用於陣列中複數個可組態單元的單元檔案,該些單元檔案各包含複數個有序塊(或子檔案),此係透過在N輪序列(R(i),i=0至N-1)中經由匯流排系統發送一個順序(i)的單元塊給該複數個可組態單元中包括多達N個子檔案的所有可組態單元,直到組態檔案中的單元檔案被分發給該複數個可組態單元中的可組態單元。
在此範例中,狀態機包括六個狀態S1至S6。在狀態S1(閒置),組態加載控制器等待來自主機的組態加載命令。當收到組態加載命令,加載程序進入狀態S2,以開始執行分配序列的第一輪R(0)。每一輪遍歷狀態S2至S6。在本文所述的範例中,之所以要進行六輪,是因為要分配給陣列中的組態單元的最大塊數為六。
在狀態S2(交換器請求),組態加載控制器透過頂層網路產生記憶體存取請求,以提取個別交換單元之組態單元檔案的第R(i)輪的狀態S2的塊,並將提取的塊分發給個別的交換單元。對於i=0,在第R(0)輪中,組態加載控制器為個別交換單元產生針對多個塊中的塊(0)的記憶體存取請求,並將塊(0)發送給個別交換單元。對於i=1,在第R(1)輪中,組態加載控制器為個別交換單元產生針對多個塊中的塊(1)的記憶體存取請求,並將塊傳送給個別交換單元。在第R(i)輪中,當組態加載控制器已為個別交換單元產生了針對多個塊中的塊(i)的記憶體存取請求,並為所有的交換單元分發了塊時,加載過程進入狀態S3。
在狀態S3(PCU請求),組態加載控制器透過頂層網路產生記憶體存取請求,以提取個別PCU單元(型樣計算單元)之組態單元檔案的第R(i)輪的塊,並將提取的塊分發給個別PCU單元。在第R(i)輪的狀態S3中,組態加載控制器為個別PCU單元產生針對多個塊中的塊(i)的記憶體存取請求,並將塊(i)發送給個別PCU單元。在第R(i)輪中,當組態加載控制器已為個別PCU單元產生了針對多個塊中的塊(i)的記憶體存取請求,並分發了塊時,加載過程進入狀態S4。
在狀態S4(PMU請求),組態加載控制器透過頂層網路產生記憶體存取請求,以在一些實施例中為可組態單元陣列中的個別PMU單元(型樣記憶體單元)提取組態單元檔案及記憶體檔案的塊,並將提取的塊發送給個別PMU單元。在第R(i)輪的狀態S4中,組態加載控制器為個別PMU單元產生針對多個塊中的塊(i)的記憶體存取請求,並將塊(i)發送給個別PMU單元。舉例來說,對於i=0,在第R(0)輪中,組態加載控制器為個別PMU單元產生針對多個塊中的塊(0)的記憶體存取請求,並將塊(0)發送給個別PMU單元。對於i=1,在第R(1)輪中,組態加載控制器為個別PMU單元產生針對多個塊中的塊(1)的記憶體存取請求,並將塊(1)發送給個別PMU單元。在第R(i)輪中,當組態加載控制器已為個別PMU單元產生了針對多個塊中的塊(i)的記憶體存取請求,並分發了塊時,加載過程進入狀態S5。
在狀態S5(AGCU請求),組態加載控制器透過頂層網路產生記憶體存取請求,以為可組態單元陣列中的個別AGCU(位址產生與合併單元)提取組態單元檔案的塊,並將提取的塊發送給個別AGCU單元。在第R(i)輪的狀態S5中,組態加載控制器為個別AGCU單元產生針對多個塊中的塊(i)的記憶體存取請求,並將塊(i)發送給個別AGCU單元。在第R(i)輪的狀態S5中,當組態加載控制器已為個別AGCU單元產生了針對多個塊中的塊(i)的記憶體存取請求,並分發了塊時,加載過程進入第R(i)輪的狀態S6。
在狀態S6(響應等待),組態加載控制器等待確保陣列中的可組態單元(交換器、PCU、PMU、AGCU單元)準備好在下一輪接收更多的組態資料塊。若用於交換單元的全部的塊尚未被發送,則加載過程遞增(i)並前進到狀態S2以開始下一輪R(i+1)。若用於交換單元的全部的塊已被發送但用於PCU單元的全部的塊尚未被發送,則加載過程遞增(i)並前進到狀態S3以開始下一輪R(i+1)。若用於交換單元及PCU單元的全部的塊已被發送但用於PMU單元的全部的塊尚未被發送,則加載過程遞增(i)並前進到狀態S4以開始下一輪R(i+1)。若用於交換單元、PCU單元及PMU單元的全部的塊已被發送但用於AGCU單元的全部的塊尚未被發送,則加載過程遞增(i)並前進到狀態S5以開始下一輪R(i+1)。若用於所有可組態單元(交換器、PCU、PMU、AGCU單元)的全部的塊都已被發送(即,已完成每一輪),則加載過程前進到狀態S1。
圖13是用以執行陣列組態卸載程序之邏輯的一個範例的狀態機圖。
在此範例中,狀態機包括三個狀態S1至S3。在狀態S1(閒置),組態卸載控制器等待來自主機的組態卸載命令。組態卸載控制器實現用於陣列組態卸載過程的兩個計數“next_unld_req_count”及“next_unld_resp_count”。計數“next_unld_req_count”追蹤下一個卸載請求計數。計數“next_unld_resp_count”追蹤下一個卸載回應計數。在狀態S1,這兩個計數皆被重置為初始值,例如0。當接收到組態卸載命令時,卸載過程進入狀態S2。
在狀態S2(產生請求),組態卸載控制器為可組態單元陣列中的各個可組態單元,包括陣列中的交換單元、PCU、PMU及AGCU產生卸載請求。針對每個產生的卸載請求,遞增計數“next_unld_req_count”。將計數“next_unld_req_count”與預定數量PROGRAM_ UNLOAD_REQ_COUNT進行比較,該預定數量表示可組態單元陣列中的可組態單元的總數。只要計數“next_unld_req_count”少於PROGRAM_UNLOAD_REQ_ COUNT,卸載過程停留在狀態S2。當計數“next_unld_req_count”等於PROGRAM_UNLOAD_REQ_ COUNT時,已為陣列中的各個可組態單元產生了卸載請求,並且卸載過程進入狀態S3。
在狀態S3(響應等待),組態卸載控制器對從陣列中的可組態單元接收到的每個響應遞增計數“next_unld_resp_count”。響應包括可組態單元之組態資料的單元檔案中的塊(子檔案)。在一些範例中,響應還可以包括PMU高速暫存資料。在卸載過程期間,響應被提供給可組態單元的向量輸出,並且在向量匯流排上被發送給組態加載控制器。只要計數“next_unld_resp_count”小於PROGRAM_UNLOAD_REQ _COUNT,卸載過程就停留在狀態S3。
在狀態S3,卸載過程為接收到的每個響應產生記憶體位址,並且將接收到的每個響應與在頂層網路上產生的記憶體位址一起插入。每個響應包括卸載塊及序列ID。從伴隨陣列級網路中攜帶塊的封包的標頭產生記憶體位址,包括序列ID中的塊號、行標識符、列標識符及元件標識符。元件識別符可以指示可組態單元是交換單元、PCU單元、PMU單元、或是AGCU單元。參考圖3進一步說明序列ID。
當計數“next_unld_resp_count”等於PROGRAM_UNLOAD_REQ_COUNT時,已從陣列中的每個可組態單元接收到響應,並且將其插入到頂層網路上,卸載過程遷移回狀態S1。
在一個實施例中,交換單元中組態資料之線性記憶體位址的順序是交換單元之第一行中各列的第一塊,其次是交換單元之第二行中各列的第一塊,然後是交換單元之第三行中各列的第一塊,以此類推,直到最後一行中各列的第一塊。這使線性位址空間中所有交換單元的第一塊成組。其他類型之可組態單元的第一塊在相鄰位址空間中被加載。接著,針對所有類型之可組態單元的第二塊,該順序之後是交換單元之第一行中各列的第二塊,其次是交換單元之第二行中各列的第二塊,然後是交換單元之第三行中各列的第二塊,以此類推,直到交換單元之最後一行中各列的最後一塊等等。
在一些實施例中,可以在靜止邊界處使用卸載過程,用以例如從EFRG卸載或複製組態、狀態及記憶體資料,用以僅卸載或複製狀態資訊及記憶體內容,或用以僅卸載或複製狀態資訊,而無可用於除錯目的的組態資料。
圖14是簡化流程圖,示出在主AGCU透過陣列靜止控制器執行靜止操作。在此範例中,回應於來自例如主機中運行程式的外部請求而開始靜止操作,該運行程式在陣列靜止控制器中的靜止控制暫存器設置位元(1400)。在一些實施例中,可以回應於在CGRA內偵測到的事件而啟動靜止操作以幫助除錯,該些事件例如由到達被組態之斷點的執行所檢測到的異常條件或執行事件。作為回應,MAGCU將靜止AGCU_CMD命令發送到陣列中的可組態單元(1401)。回應於命令,與陣列中的每個EFRG相關聯的陣列中的靜止邏輯設置Q_RCV_FF旗標。若針對該單元Q_PCPT旗標為低,則靜止邏輯會在菊鏈上針對其相關聯的可組態單元的引發Q_RDY信號(1402)。若針對可組態單元Q_PCPT旗標為高,則靜止邏輯將阻止EFRG中的單元前進超出QB,並且在本地執行片段之靜止邊界上、在以其之變成零的偏斜UDC表示的菊鏈上引發Q_RDY信號,緊接著針對相關聯的可組態單元設置Q_RCV_FF旗標(1403)。MAGCU等待從所有參與的可組態單元、在菊鏈上接收Q_RDY信號,或者不接收(1404)。當接收到針對參與可組態單元的Q_RDY信號時,則靜止陣列,然後MAGCU可以轉換到下一個操作,諸如用於斷點或檢查點的卸載操作,其中在靜止狀態期間卸載可組態單元陣列中的程式與資料資源(1405)。替代地,磚片可以保持靜止而無須卸載,例如,用以在繼續之前,等待恢復命令,設置後續的斷點,或其他外部資訊或事件。
在檢查點卸載之後,可以透過加載新的組態檔案使用陣列來實現包括複數個執行片段的另一台機器,或者可以執行其他操作。稍後可以透過重新加載檢查點組態、狀態及資料資源來復原在檢查點卸載的靜止機器。因此,靜止為CGRA提供了佔先式多任務能力和多編程能力。
靜止分散式CGRA的能力還增強了除錯的能力。例如,透過定義細粒度的靜止邊界,例如內迴圈的每次迭代,或定義可在諸如錯誤或異常等事件或其他斷點條件發生時觸發的靜止邊界,可以停止CGRA執行,由使用者檢查結果、然後恢復,其可能在改變狀態之後,或者視情況終止。
本文描述的靜止邏輯和控制屏障網路技術適用於以CGRA裝置實現。並且,其可以與包括處理單元陣列的其他類型的處理系統一起使用,該處理單元陣列可以受益於陣列中分布的執行片段之間的協調。
描述了一種用於操作處理系統的方法,該系統包括可組態處理單元陣列,被組態以實現資料處理操作或者允許以安全及可再現方式在靜止邊界上停止資料處理操作的「機器」。該方法可以由分布在陣列中並被組態以設置靜止邊界的靜止邏輯電路支持。
該方法可以包括將組態資料加載至陣列用於資料處理操作,其將陣列組態成複數個執行片段資源組,用於具有靜止邊界的相應執行片段。在資料處理操作期間,該方法可以包括使用例如靜止邏輯電路,將靜止命令分配給陣列中的複數個執行片段資源組。在執行片段資源組中,靜止邏輯回應靜止命令以檢測在相應執行片段中接在靜止命令之後的靜止邊界,禁用超出靜止邊界之相應執行片段的執行,並且引發相應執行片段的靜止就緒信號。
可以在組態資料中由執行片段資源組之可組態單元中的已組態的執行狀態集來定義靜止邊界。該方法可以包括回應靜止命令以透過檢測在每個執行片段資源組中之可組態單元的已組態的狀態來檢測靜止邊界。
這種靜止能力使得包括可組態處理單元陣列,諸如多核心陣列、CGRA或FPGA等的處理系統能夠實現獨特的操作方案。例如,一種操作方法可以包括回應於來自主機的請求、或回應於CGRA內檢測到的事件而分配靜止命令,以停止資料處理操作。在從複數個執行片段資源組接收到靜止就緒信號之後,該方法可以包括從陣列卸載組態和狀態以用於除錯或其他目的。
圖15示出了一種可能在多任務及多程式環境中執行的操作方法,其中主機或運行程式可以管理具有不同優先權等級的多個資料處理操作。例如,一個資料處理操作可以被視為背景操作,僅在不需要較高優先權之操作時才被執行。
參考圖15,方法可以包括起始操作1(1500),其可能是背景操作。若主機偵測到較高優先權的操作(1501),該方法可以較佳地透過使用如上所述的技術,藉由在其靜止邊界上停止陣列中的執行片段來(1502)靜止陣列。靜止後,主機可以在靜止點卸載操作1的組態、狀態及/或記憶體資料(1503)。可以儲存此資訊供稍後的恢復操作使用。卸載操作1之後,加載操作2的組態檔案(1504)。成功加載操作2之後,可以開始操作(1505)。操作2將一直執行到完成為止,或另一事件指示其可停止操作(1506)。在一些範例中,可以使用類似於本文所述之靜止操作來停止操作2。在停止操作2之後,可以卸載操作2的組態檔案(1507)。此後,在靜止處卸載的操作1的組態、狀態及/或記憶體資料可以被重新載入陣列(1508)。在某些情況下,相對於已卸載的資料,被重新加載的資料可以包括諸如狀態更改之類的修改。然後,可以在由重新加載的資料所表示的靜止邊界處,恢復操作1(1509)。
在其他操作中,本文所述之靜止功能可被用於斷點處理,這在例如除錯的期間是很有用的。圖16是此類操作的簡化流程圖。在圖16中,操作1在可組態陣列中開始(1600)。若在(1601)接收到斷點請求,則執行靜止操作,導致在靜止命令之後在靜止邊界QB(i)上靜止EFRG(1602)。靜止後,可以將操作1在QB(i)處的組態、狀態及/或記憶體資料複製到保持記憶體(1603)。然後,操作1可以恢復(1604)。主機接著可以透過確定QB(i)是否是最後一個要複製的斷點((i)= N?)來確定是否已完成其斷點操作(1605)。若在步驟(1605)主機尚未完成,則主機可以增加索引(i)並針對下一個靜止邊界發出新的靜止命令,將處理返回步驟(1602)。若在步驟(1605)主機已完成,則斷點操作結束(1607),然後主機可以分析按靜止邊界順序下載的斷點資料。
提供靜止技術,其可實現檢查點、斷點、多任務、多編程及對處理單元之可組態陣列的其他利用。描述靜止技術,其由靜止電路支持,靜止電路可組態成定義相應機器的靜止邊界。
靜止技術不需要使用插入到資料處理操作之指令序列中的指令,並且也不需要用於靜止功能的資料匯流排資源。
在本文所述的實施例中,處理單元陣列可以包括指令處理器,諸如在CPU和GPU中使用的指令處理器,其在指令流上進行操作,其中指令執行狀態(stateful)操作。此種類型的指令處理器係使用編碼成位元的指令而被編程。透過軟體將任務指定為有序列表。這些單元的硬體結構具有追蹤「程式狀態」的機制。程式狀態尤其包括全域「程式計數器」暫存器的形式,以追蹤要從記憶體提取的下一個指令。此外,硬體結構還可具有管線,用以解碼和執行這些已被提取的指令。換句話說,這些結構包含管線,在執行期間指令流會流經該管線,其中每個指令執行操作並更新硬體狀態。對這種結構進行檢查點處理涉及儲存該結構的有狀態元件,例如程式計數器及暫存器檔案。舉例來說,GPU可以由通常依賴於共享記憶體池的核心內的分散式計算單元陣列組成。分散式計算單元是儲存程式處理器,其可透過編寫與普通處理器一樣被提取、解碼及執行的指令來進行編程。透過執行在共享記憶體上操作的指令序列來實現同步和通訊。
在本文所述之技術的其他實施例中,處理單元陣列包含可組態單元,以CGRA而言,其對流經大量可組態單元的資料和控制訊息(與指令相反)進行操作,其中可組態單元使用組態資料,諸如位元檔案,來進行編程。基於可組態單元的實施例具有在外觀上及操作上與已儲存之基於程式指令的處理器不同的架構,因為它們必須以不同的方式來管理執行。
CGRA和FPGA中的可組態單元陣列具有不同的編程合約:組態位元;這些結構不具有提取及處理指令的硬體。在指令處理器的意義上,它們沒有全域的「編程計數器」暫存器,並且它們沒有用以提取、解碼及執行指令流的管線。取而代之的是,可組態執行單元與有狀態元件物理分布在晶片上,並且使用可編程互連連接在一起。程式不是指令流;組態位元對可組態執行單元進行編程以構造應用程式的自訂控制項及資料路徑。取代指令流,可組態單元被編程以對資料流和控制訊息流進行操作,以產生其他資料和控制訊息。這使得此種結構固有地分布,而無單一全域程式狀態。
因為能夠加載和卸載組態資料或位元檔案,因此可組態單元陣列中的可組態單元是可重組態的。在較佳的替代方案中,本文中所述的可組態單元的所有實施例是使用可重組態單元來實現的。
CGRA和等效架構中執行的分散式特性使得建構及縮放硬體變得更容易,但更難以執行諸如檢查點的全域同步操作。
可使用分散式協定、及支持不依賴於單一全域程式狀態的可組態邏輯,如本文所述地實現用於這些架構的檢查點方案。
CGRA包含可重組態元件的陣列。該些元件多少可包括專門的計算及記憶體單元。這些單元透過結構相連,以實現單元間的通訊和同步。該些元件可以透過幾種方式進行重組態,但通常依賴於直接的硬體重組態,此係透過在加載自位元檔案的組態位元的控制下改變元件的行為,類似於FPGA。沒有指令被提取、解碼、或執行;相反的,透過位元檔案內容來組態狀態機以實現操作序列。
因此,CGRA的單元無法透過執行指令來進行同步(包括靜止)。它們必須使用替代方案。在此較佳的實施例中,它們交換被表示為控制網路中的控制線上的脈衝的符記,儘管CGRA可使用替代的機制。
儘管透過參考上面詳述的較佳實施例及範例來公開本發明,但應當理解的是,這些範例僅是示例性的而非限制性的。可想到的是,本領域之技術人士將容易想到修改及組合,這些修改及組合將在本發明的精神和所附的申請專利範圍的範圍之內。
110:可重組態資料處理器
115:匯流排系統
120:主機
125:線
130:I/O介面
140:記憶體
145:線
150:I/O介面
170:外部時脈產生器
175:時脈信號
190:可組態單元陣列
195:陣列靜止控制器
200:可組態單元陣列
201:邏輯單元
202:邏輯單元
203:邏輯單元
211:交換單元
212:交換單元
220:鏈路
221:互連
231:鏈路
241:型樣記憶體單元(PMU)
250:主位址產生與合併單元(AGCU)
251:陣列靜止控制器
350:交換器
351:PMU
352:PCU
354:AG
355:CU
360:垂直導體
361:水平導體
362:交換盒
370:靜止/屏障邏輯單元
371:輸入及輸出
380:可組態單元集合
400:可組態單元
410:輸入組態資料
420:組態資料儲存
421:線路
422:線路
430:輸出組態資料
440:單元組態加載/卸載邏輯
450:純量FIFO
460:FIFO塊
470:控制塊
471:計數器鏈
475:靜止/屏障邏輯
480:方塊
491:菊鏈式完成/靜止就緒匯流排
492:菊鏈式命令匯流排
493:菊鏈邏輯
500:致能邏輯
501:輸入
502:輸出
503:可組態致能遮罩
510:上/下數計數器(UDC)
511:增量輸入
512:減量輸入
513:輸出
520:屏障符記邏輯
521:可組態屏障遮罩
522:線路
530:增量交叉開關
540:減量交叉開關
550:狀態交叉開關
551:輸入
552:輸出
553:輸出
557:輸入
558:輸入
560:輸出交叉開關
561:輸出
601:解碼器
602:正反器
603:閘
604:多工器
605:組態儲存
610:AND樹
611:UDC
620:UDC
621:UDC
622:UDC
630:閘
631:閘
632:偏斜計數器(SKEW UDC)
633:零
640:控制輸入交叉開關
641:線路
650:控制輸出交叉開關
651:線路
652:線路
710:AND樹
711:QB UDC符記儲存
712:線路
720:增量交叉開關
730:減量交叉開關
740:控制輸出交叉開關
741:線路
750:OR樹及遮罩
760:計數器
761:計數器
762:計數器
800:遮罩及AND樹
801:線路
810:符記儲存
811:符記儲存
812:符記儲存
820:線路
905:I/O介面
911:頂層交換器
912:頂層交換器
913:頂層交換器
914:頂層交換器
915:頂層交換器
916:頂層交換器
1110:輸入FIFO
1120:輸入移位暫存器
1130:第一移位暫存器鏈
1140:第二移位暫存器鏈
1150:輸出移位暫存器
1160:輸出FIFO
1170:選擇器
1400:步驟
1401:步驟
1402:步驟
1403:步驟
1404:步驟
1405:步驟
1500:步驟
1501:步驟
1502:步驟
1503:步驟
1504:步驟
1505:步驟
1506:步驟
1507:步驟
1508:步驟
1509:步驟
1600:步驟
1601:步驟
1602:步驟
1603:步驟
1604:步驟
1605:步驟
1606:步驟
1607:步驟
[圖1]是系統圖,示出了包括主機、記憶體以及包括靜止控制網路之可重組態資料處理器的系統。
[圖2]是磚片的簡化圖,其包括具有陣列靜止控制器和分散式靜止邏輯的可組態單元陣列。
[圖2A]示出在陣列級網路中連接元件的示例性交換單元。
[圖3]是類似於圖2之磚片的一組處理單元的圖,示出了連接至磚片中的靜止邏輯的可組態互連。
[圖4]是示出了包括靜止邏輯之示例性可組態單元的方塊圖。
[圖5]是可組態成支持靜止的屏障邏輯單元的實現圖。
[圖6]是用以產生生產者屏障符記及靜止就緒邏輯之靜止邏輯的簡化邏輯圖。
[圖7]是靜止邊界邏輯的簡化邏輯圖。
[圖8]是用以產生消費者屏障符記之靜止邏輯的簡化邏輯圖。
[圖9]是支持具有多個磚片之實施例的上級網路和CGRA(粗粒度可重組態架構)之元件的簡化方塊圖。
[圖10]示出可用於控制可組態單元中的單元組態加載過程之狀態機圖的一個範例。
[圖11]是支持在可組態單元中加載及卸載組態檔案之結構的邏輯表示。
[圖12]是狀態機圖,其示出執行陣列組態加載過程之邏輯的一個範例。
[圖13]是狀態機圖,其示出執行陣列組態卸載過程之邏輯的一個範例。
[圖14]是靜止操作的一個範例的流程圖,該靜止操作隨後是針對可組態處理單元之陣列的陣列組態及程式卸載過程。
[圖15]是用於使用靜止來改變可組態陣列中之資料處理操作的方法的流程圖。
[圖16]是用於使用靜止來卸載斷點檔案以進行可組態陣列中之資料處理操作的方法的流程圖。
110:可重組態資料處理器
115:匯流排系統
120:主機
125:線
130:I/O介面
140:記憶體
145:線
150:I/O介面
170:外部時脈產生器
175:時脈信號
190:可組態單元陣列
195:陣列靜止控制器
Claims (39)
- 一種處理系統,包括: 處理單元陣列,可組態以在該陣列中配置具有複數個成員的處理單元集合,以實現資料處理操作的執行片段;以及 耦合至該陣列中的處理單元的靜止邏輯,可組態以回應控制信號,以在該執行片段的靜止邊界上靜止該陣列中的該處理單元集合。
- 如請求項1的處理系統,其中,該處理單元陣列可組態以在該陣列中分配複數個處理單元集合,以實現該資料處理操作的各個執行片段,該複數個集合包括首先提及的該集合;以及 該靜止邏輯包括靜止控制器,以將靜止控制信號分配給該陣列中的處理單元,並且從該各個處理單元集合接收靜止就緒信號。
- 如請求項1的處理系統,其中,該靜止邏輯可組態成在該執行片段中定義複數個靜止邊界,並且在該複數個靜止邊界中的共用靜止邊界上靜止該處理單元集合中的該些處理單元。
- 如請求項1的處理系統,該靜止邏輯包括: 偏斜計數器,用以追蹤該處理單元集合中該些處理單元之間該執行片段的進度差異。
- 如請求項1的處理系統,其中,該集合中的至少一個處理單元被組態為輸入的生產者,以及該集合中的至少一個處理單元被組態為輸入的消費者,並且該靜止邏輯可組態成在該靜止邊界上停止該生產者。
- 如請求項1的處理系統,其中,該執行片段包括複數個處理迴圈,並且包括迴圈計數器,該靜止邏輯回應該迴圈計數器以檢測該靜止邊界。
- 如請求項1的處理系統,其中,該集合中的至少一個處理單元被組態為輸入的生產者,以及該集合中的至少一個處理單元被組態為輸入的消費者,並且該處理系統包括耦合至該陣列中處理單元的控制屏障網路,該控制屏障網路包括: 控制匯流排,可組態成在該控制屏障網路中形成信號路由;以及 複數個屏障邏輯單元,具有連接至該控制匯流排及至該處理單元陣列的輸入及輸出,包括: 耦合至該處理單元集合的邏輯電路,可組態成消耗來自輸入的生產者之示意該處理單元集合中之靜止邊界的信號,並且基於來自該些生產者的信號產生生產者屏障符記; 耦合至該處理單元集合的邏輯電路,可組態成消耗來自輸入的消費者之示意將該處理單元集合的輸入用於靜止邊界的信號,並且基於來自消費者的信號產生消費者屏障符記;以及 該靜止邏輯可組態成連接到該控制匯流排,並且包括偏斜計數器,其可組態成接收該生產者屏障符記和該消費者屏障符記以追蹤該些生產者和消費者之間的該執行片段的進度差異。
- 如請求項7的處理系統,該複數個屏障邏輯單元中的邏輯單元包括: 致能電路,可組態成回應該生產者符記。
- 如請求項1的處理系統,其中,靜止邏輯包括與該陣列中相應處理單元相關聯的靜止就緒電路,並且以菊鏈形式連接在該陣列中的處理單元之間。
- 如請求項9的處理系統,包括陣列靜止控制器,其包括用以將控制信號轉發到該靜止邏輯的邏輯,並且當接收到來自該菊鏈之先前成員的靜止就緒信號時,該靜止就緒邏輯在該菊鏈上轉發該靜止就緒信號。
- 如請求項10的處理系統,其中,該靜止就緒電路包括可組態靜止參與旗標,以及用以回應該靜止參與旗標之特定狀態而覆蓋該靜止就緒邏輯的邏輯。
- 一種處理系統,包括: 可使用組態檔案組態的可組態單元陣列,其中該可組態單元陣列可組態成在該陣列中配置複數個可組態單元集合,以實現資料處理操作的各個執行片段; 耦合至該陣列中之可組態單元的靜止邏輯,可組態成回應靜止控制信號以在該各個執行片段的靜止邊界上靜止該陣列中的該些可組態單元集合,並且當相應的可組態單元集合之靜止已就緒時,轉發該各個執行片段之靜止就緒信號;以及 陣列靜止控制器,用以將該靜止控制信號分配給該陣列中的可組態單元,以及用以從該靜止邏輯接收該各個執行片段的靜止就緒信號。
- 如請求項12的處理系統,其中,該靜止邏輯包括與該陣列中之該可組態單元集合中的可組態單元相關聯的可組態靜止參與旗標,以及用以回應該靜止參與旗標之特定狀態而覆蓋該些相關聯的可組態單元的該靜止邏輯的邏輯。
- 如請求項12的處理系統,其中,該靜止邏輯可組態成針對該各個執行片段定義複數個靜止邊界,並且在該各個執行片段的該複數個靜止邊界中的共用靜止邊界上靜止該複數個可組態單元集合中的給定可組態單元集合中的可組態單元。
- 如請求項12的處理系統,其中,針對該複數個集合中的給定可組態單元集合,將該給定集合中的至少一個可組態單元組態為輸入的生產者,以及將該給定集合中的至少一個可組態單元組態為輸入的消費者,以及該處理系統包括耦合至該陣列中可組態單元的控制屏障網路,該控制屏障網路包括: 控制匯流排,可組態成在該控制屏障網路中形成信號路由;以及 複數個屏障邏輯單元,具有連接至該控制匯流排及至該可組態單元陣列的輸入及輸出,包括: 耦合至該給定可組態單元集合的邏輯電路,可組態成消耗來自輸入的生產者之示意該給定可組態單元集合中的靜止邊界的信號,並且基於來自生產者的該些信號產生生產者屏障符記; 耦合至該給定可組態單元集合的邏輯電路,可組態成消耗來自輸入的消費者之示意將該給定可組態單元集合中的輸入用於該靜止邊界的信號,並且基於來自消費者的該些信號產生消費者屏障符記;以及 該靜止邏輯可組態成連接至該控制匯流排,並且包括用於該給定集合的偏斜計數器,可組態成接收該生產者屏障符記和該消費者屏障符記以追蹤該些生產者和消費者之間跨該執行片段之靜止邊界的進度差異。
- 如請求項15的處理系統,該複數個屏障邏輯單元中的邏輯單元包括: 致能電路,可組態成回應該生產者屏障符記。
- 一種用於操作包括可組態處理單元陣列之處理系統的方法,包括: 監控該陣列中處理單元集合中的資料處理操作之執行片段的進度;以及 回應控制信號以在該執行片段的靜止邊界上靜止該陣列中的該資料處理單元集合。
- 如請求項17的方法,包括監控資料處理操作之各個執行片段之該陣列中的複數個處理單元集合中的進度,該複數個集合包括首先提及的該集合;以及 將靜止控制信號分配給該陣列中的處理單元,並且從該各個處理單元集合接收靜止就緒信號。
- 如請求項17的方法,其中該處理系統包括用以在該執行片段中定義複數個靜止邊界的邏輯,並且包括在該複數個靜止邊界中的該控制信號之後,在共用靜止邊界上靜止該處理單元集合中的處理單元。
- 如請求項17的方法,包括: 追蹤該處理單元集合中處理單元之間跨靜止邊界之該執行片段的進度差異。
- 如請求項17的方法,其中該執行片段包括複數個處理迴圈,並且包括回應在該複數個處理迴圈中對處理迴圈進行計數而檢測該靜止邊界。
- 如請求項17的方法,其中,該集合中的至少一個處理單元被組態為輸入的生產者,以及該集合中的至少一個處理單元被組態為輸入的消費者,並且包括在該靜止邊界上停止該生產者,以及在該消費者消耗了在該靜止邊界之前產生的輸入之後,產生該處理單元集合的靜止就緒信號。
- 如請求項17的方法,其中,該集合中的至少一個處理單元被組態為輸入的生產者,以及該集合中的至少一個處理單元被組態為輸入的消費者,並且該處理系統包括耦合至該陣列中的處理單元的控制屏障網路,該控制屏障網路包括: 控制匯流排,可組態成在該控制屏障網路中形成信號路由;以及 複數個屏障邏輯單元,具有連接至該控制匯流排及至該處理單元陣列的輸入及輸出,包括: 組態耦合至該處理單元集合的邏輯電路,以消耗來自輸入的生產者之示意該處理單元集合中的靜止邊界的信號,並且基於來自生產者的信號在該輸出上產生生產者屏障符記; 組態耦合至該處理單元集合的邏輯電路,以消耗來自輸入的消費者之示意將該處理單元集合的輸入用於該靜止邊界的信號,並且基於來自消費者的信號在該輸出上產生消費者屏障符記;以及 使用該生產者屏障符記和該消費者屏障符記追蹤該些生產者和消費者之間該執行片段的進度差異。
- 如請求項23的方法,包括: 回應該生產者屏障符記。
- 如請求項17的方法,包括產生用於該陣列中的該處理單元集合的靜止就緒,以及使用在陣列中的處理單元之間的菊鏈控制匯流排傳遞該靜止就緒信號給控制器。
- 如請求項25的方法,包括透過在該集合的至少一個處理單元中設定靜止參與旗標來組態該陣列中的處理單元,以及回應該靜止參與旗標的特定狀態致能或失能該靜止就緒信號的產生。
- 一種用操作包括可組態處理單元陣列之處理系統的方法,包括: 將組態資料加載到該陣列用於資料處理操作,其將該陣列組態成複數個執行片段資源組,用於具有靜止邊界的相應執行片段; 將靜止命令分配給該陣列中的該複數個執行片段資源組;以及 在該些執行片段資源組中,回應該靜止命令以檢測該相應執行片段中接在該靜止命令之後的靜止邊界,使該相應執行片段之超出該靜止邊界的執行失能,並且為該相應執行片段發出靜止就緒信號。
- 如請求項27的方法,其中,透過在該相應執行片段之該些執行片段資源組的可組態單元中之執行的已組態狀態集合,在該組態資料中定義該靜止邊界,回應該靜止命令以檢測靜止邊界包括檢測該已組態狀態集合。
- 如請求項27的方法,包括停止該資料處理操作: 分發該靜止命令;以及 在從該複數個執行片段資源組接收到該靜止就緒信號之後,卸載來自該陣列的組態及狀態資料。
- 如請求項27的方法,包括卸載檢查點資料及恢復該資料處理操作: 分發該靜止命令;以及 在從該複數個執行片段資源組接收到該靜止就緒信號之後,從該陣列複製組態及狀態資料,並且恢復該資料處理操作。
- 如請求項27的方法,包括實現不同資料處理操作: 分發該靜止命令;以及 在從該複數個執行片段資源組接收到該靜止就緒信號之後,卸載及儲存來自該陣列的組態及狀態資料,加載用於不同資料處理操作的組態檔案,並且執行該不同的資料處理操作; 卸載該不同資料處操作的該組態檔案,並且加載該儲存的組態及狀態資料,以及在該靜止邊界處恢復首先提及的資料處理操作。
- 如請求項27的方法,包括回應源自該陣列之內部事件而分配該靜止命令。
- 如請求項27的方法,包括回應源自該陣列外部之外部事件而分配該靜止命令。
- 一種處理系統,包括: 可重組態單元陣列及互連,可組態成執行資料處理操作;以及 耦合至該陣列中之可重組態單元的靜止邏輯,可組態成回應控制信號來靜止該陣列。
- 如請求項34的處理系統,其中,回應源自該陣列之內部事件而產生控制信號。
- 如請求項34的處理系統,其中,回應源自該陣列外部之外部事件而產生該控制信號。
- 如請求項34的處理系統,包括主機處理器,執行帶有多任務的運行期程式,並且產生該控制信號以支援該多任務。
- 如請求項34的處理系統,包括主機處理器,執行帶有檢查點的運行期程式,並且產生該控制信號以支援該檢查點。
- 如請求項34的處理系統,包括主機處理器,執行帶有多編程的運行期程式,並且回應源自該陣列內部的事件而產生該控制信號,以及在該靜止之後,該運行期程式重組態該陣列以支援該多編程。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/504,627 US11055141B2 (en) | 2019-07-08 | 2019-07-08 | Quiesce reconfigurable data processor |
US16/504,627 | 2019-07-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202115575A true TW202115575A (zh) | 2021-04-16 |
TWI758770B TWI758770B (zh) | 2022-03-21 |
Family
ID=71738314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109122772A TWI758770B (zh) | 2019-07-08 | 2020-07-06 | 靜止可重組態的資料處理器 |
Country Status (8)
Country | Link |
---|---|
US (2) | US11055141B2 (zh) |
EP (1) | EP3997566A1 (zh) |
JP (1) | JP2022539844A (zh) |
KR (1) | KR20220027245A (zh) |
CN (1) | CN114586004B (zh) |
CA (1) | CA3146815A1 (zh) |
TW (1) | TWI758770B (zh) |
WO (1) | WO2021007131A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11163715B1 (en) * | 2020-05-04 | 2021-11-02 | International Business Machines Corporation | CGRA accelerator for weather/climate dynamics simulation |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
GB202010785D0 (en) * | 2020-07-14 | 2020-08-26 | Graphcore Ltd | Sliding window domain |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
US11182264B1 (en) * | 2020-12-18 | 2021-11-23 | SambaNova Systems, Inc. | Intra-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) |
US11182221B1 (en) | 2020-12-18 | 2021-11-23 | SambaNova Systems, Inc. | Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) |
US11392740B2 (en) | 2020-12-18 | 2022-07-19 | SambaNova Systems, Inc. | Dataflow function offload to reconfigurable processors |
US11237880B1 (en) | 2020-12-18 | 2022-02-01 | SambaNova Systems, Inc. | Dataflow all-reduce for reconfigurable processor systems |
US11782760B2 (en) | 2021-02-25 | 2023-10-10 | SambaNova Systems, Inc. | Time-multiplexed use of reconfigurable hardware |
US11200096B1 (en) | 2021-03-26 | 2021-12-14 | SambaNova Systems, Inc. | Resource allocation for reconfigurable processors |
US11328209B1 (en) | 2021-06-02 | 2022-05-10 | SambaNova Systems, Inc. | Dual cycle tensor dropout in a neural network |
US11256987B1 (en) | 2021-06-02 | 2022-02-22 | SambaNova Systems, Inc. | Memory efficient dropout, with reordering of dropout mask elements |
WO2023004347A1 (en) * | 2021-07-20 | 2023-01-26 | The Regents Of The University Of California | Run-time configurable architectures |
US20230127793A1 (en) * | 2021-10-27 | 2023-04-27 | SambaNova Systems, Inc. | Force Quit of Reconfigurable Processor |
US11487694B1 (en) | 2021-12-17 | 2022-11-01 | SambaNova Systems, Inc. | Hot-plug events in a pool of reconfigurable data flow resources |
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 |
AU5805300A (en) | 1999-06-10 | 2001-01-02 | Pact Informationstechnologie Gmbh | Sequence partitioning in cell structures |
US6817005B2 (en) | 2000-05-25 | 2004-11-09 | Xilinx, Inc. | Modular design method and system for programmable logic devices |
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.) |
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 | 富士通株式会社 | 再構成可能な演算装置 |
US7673164B1 (en) | 2004-12-13 | 2010-03-02 | Massachusetts Institute Of Technology | Managing power in a parallel processing environment |
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 |
JP4804829B2 (ja) | 2005-08-24 | 2011-11-02 | 富士通株式会社 | 回路 |
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 |
US8407429B2 (en) | 2006-06-21 | 2013-03-26 | Element Cxi, Llc | Multi-context configurable memory controller |
US8456191B2 (en) | 2006-06-21 | 2013-06-04 | Element Cxi, Llc | Data-driven integrated circuit architecture |
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 |
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 |
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 |
US9015436B2 (en) * | 2011-08-22 | 2015-04-21 | Intel Corporation | Performing an atomic operation without quiescing an interconnect structure |
JP6078923B2 (ja) | 2011-10-14 | 2017-02-15 | パナソニックIpマネジメント株式会社 | 転置演算装置とその集積回路、および転置処理方法 |
US9405552B2 (en) | 2011-12-29 | 2016-08-02 | Intel Corporation | Method, device and system for controlling execution of an instruction sequence in a data stream 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 |
US9348792B2 (en) | 2012-05-11 | 2016-05-24 | Samsung Electronics Co., Ltd. | Coarse-grained reconfigurable processor and code decompression method thereof |
EP2728491A1 (en) * | 2012-10-31 | 2014-05-07 | MStar Semiconductor, Inc | Stream Data Processor |
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 |
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 | 財團法人工業技術研究院 | 矩陣轉置電路 |
US10025608B2 (en) * | 2014-11-17 | 2018-07-17 | International Business Machines Corporation | Quiesce handling in multithreaded environments |
US10776115B2 (en) * | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
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 |
EP3157172B1 (en) | 2015-10-15 | 2018-11-28 | 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 |
US10230817B2 (en) | 2015-12-21 | 2019-03-12 | Intel Corporation | Scheduling highly parallel applications |
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 |
US10719470B2 (en) | 2016-09-26 | 2020-07-21 | Wave Computing, Inc. | Reconfigurable fabric direct memory access with multiple read or write elements |
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 |
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 |
US10261786B2 (en) | 2017-03-09 | 2019-04-16 | Google Llc | Vector processing unit |
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 |
WO2019089816A2 (en) | 2017-10-31 | 2019-05-09 | 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-07-08 US US16/504,627 patent/US11055141B2/en active Active
-
2020
- 2020-07-03 JP JP2022500801A patent/JP2022539844A/ja active Pending
- 2020-07-03 KR KR1020227003995A patent/KR20220027245A/ko unknown
- 2020-07-03 CN CN202080062737.XA patent/CN114586004B/zh active Active
- 2020-07-03 CA CA3146815A patent/CA3146815A1/en active Pending
- 2020-07-03 EP EP20743938.1A patent/EP3997566A1/en active Pending
- 2020-07-03 WO PCT/US2020/040832 patent/WO2021007131A1/en unknown
- 2020-07-06 TW TW109122772A patent/TWI758770B/zh active
-
2021
- 2021-05-17 US US17/322,697 patent/US11928512B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11055141B2 (en) | 2021-07-06 |
CA3146815A1 (en) | 2021-01-14 |
WO2021007131A1 (en) | 2021-01-14 |
US11928512B2 (en) | 2024-03-12 |
US20210271519A1 (en) | 2021-09-02 |
KR20220027245A (ko) | 2022-03-07 |
CN114586004A (zh) | 2022-06-03 |
TWI758770B (zh) | 2022-03-21 |
JP2022539844A (ja) | 2022-09-13 |
CN114586004B (zh) | 2023-07-14 |
EP3997566A1 (en) | 2022-05-18 |
US20210011770A1 (en) | 2021-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI758770B (zh) | 靜止可重組態的資料處理器 | |
US9158575B2 (en) | Multithreaded processor array with heterogeneous function blocks communicating tokens via self-routing switch fabrics | |
US8615646B2 (en) | Unanimous branch instructions in a parallel thread processor | |
Nicol | A coarse grain reconfigurable array (CGRA) for statically scheduled data flow computing | |
US11816560B2 (en) | Performance estimation-based resource allocation for reconfigurable architectures | |
KR20220042424A (ko) | 재구성가능 아키텍처들을 위한 컴파일러 플로우 로직 | |
US20110078418A1 (en) | Support for Non-Local Returns in Parallel Thread SIMD Engine | |
CA3137470A1 (en) | Control flow barrier and reconfigurable data processor | |
US20210081691A1 (en) | Efficient Execution of Operation Unit Graphs on Reconfigurable Architectures Based on User Specification | |
Sakai et al. | Super-threading: Architectural and software mechanisms for optimizing parallel computation | |
US11782760B2 (en) | Time-multiplexed use of reconfigurable hardware | |
US11940940B2 (en) | External exchange connectivity | |
Sterling et al. | The “MIND” scalable PIM architecture | |
Yamaguchi et al. | High Performance Synchronization Mechanisms for General Purpose Parallel Computers | |
US20130061028A1 (en) | Method and system for multi-mode instruction-level streaming |