TW202328931A - 用於可重組態處理器的強制停止 - Google Patents
用於可重組態處理器的強制停止 Download PDFInfo
- Publication number
- TW202328931A TW202328931A TW111140888A TW111140888A TW202328931A TW 202328931 A TW202328931 A TW 202328931A TW 111140888 A TW111140888 A TW 111140888A TW 111140888 A TW111140888 A TW 111140888A TW 202328931 A TW202328931 A TW 202328931A
- Authority
- TW
- Taiwan
- Prior art keywords
- stop
- configurable
- force
- forced
- forced stop
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 62
- 230000004044 response Effects 0.000 claims abstract description 34
- 238000003491 array Methods 0.000 claims abstract description 26
- 239000000872 buffer Substances 0.000 claims abstract description 25
- 238000012545 processing Methods 0.000 claims description 61
- 239000003795 chemical substances by application Substances 0.000 claims description 32
- 239000000758 substrate Substances 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 6
- 230000004913 activation Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 35
- 210000004027 cell Anatomy 0.000 description 84
- 230000006870 function Effects 0.000 description 46
- 230000007704 transition Effects 0.000 description 26
- 239000013598 vector Substances 0.000 description 21
- 238000005516 engineering process Methods 0.000 description 19
- 239000011449 brick Substances 0.000 description 16
- 230000009471 action Effects 0.000 description 11
- 238000010801 machine learning Methods 0.000 description 11
- 238000013473 artificial intelligence Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000001994 activation Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 241000665848 Isca Species 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000005284 excitation Effects 0.000 description 3
- 238000010304 firing Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 210000004460 N cell Anatomy 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
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/82—Architectures of general purpose stored program computers data or demand driven
- G06F15/825—Dataflow computers
-
- 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/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- 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
-
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/442—Shutdown
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Logic Circuits (AREA)
- Stored Programmes (AREA)
Abstract
一種可重組態處理器,包括複數個可組態單元子陣列,每個子陣列包括一主位址產生與合併單元(MAGCU),其包含強制停止控制器。在特定子陣列之MAGCU上的強制停止控制器可被配置成回應強制停止命令執行強制停止過程,包括將MAGCU從任何當前狀態轉換成強制停止等待狀態,啟動計數器,廣播強制停止控制信號以重置特定子陣列中的可組態單元,並且使在可組態單元之間的互連上的MAGCU的輸出埠失效。當計數器到期時,MAGCU可被組態為一旦其輸入和輸出緩衝器為空則使其至互連的輸出生效,對來自該互連的輸入埠進行採樣以檢測特定子陣列中的每個可組態單元已使其至互連的輸出埠生效,並且發送強制停止完成中斷。
Description
本技術係關於可重組態架構以及其他分散式處理架構。特別是,關於可重組態處理器的強制停止(force-quit)。
優先權資料
本申請案主張2021年10月27日申請之標題為“FORCE-QUIT OF RECONFIGURABLE PROCESSOR”的美國臨時專利申請案序號第63/272,557號的權益。該臨時申請案出於所有目的透過引用併入本文。本申請案還關於與本申請案同日申請之標題為“FRACTIONAL FORCE-QUIT FOR RECONFIGURABLE PROCESSORS”的美國專利申請案(待定),其亦透過引用併入本文。
合併案
出於所有目的,下面內容透過引用方式併入,如在本文中完整闡述一般:
Prabhakar等人,“Plasticine: A Reconfigurable Architecture for Parallel Patterns”,ISCA ’17,2017年6月24-28日,加拿大安大略省多倫多;
Koeplinger等人,“Spatial: A Language and Compiler for Application Accelerators”,第39屆ACM SIGPLAN程式語言設計與實施(PLDI)研討會論文集,第43屆計算機結構國際研討會論文集,2018;
美國非臨時專利申請案序號第17/379,924號,於2021年7月19日申請,標題為“DATAFLOW ALL-REDUCE FOR RECONFIGURABLE PROCESSOR SYSTEMS”;
美國非臨時專利申請案序號第17/127,929號,於2020年12月18日申請,標題為“INTER-NODE BUFFER-BASED STREAMING FOR RECONFIGURABLE PROCESSOR-AS-A-SERVICE (RPaaS)”;
美國非臨時專利申請案序號第17/127,818號,於2020年12月18日申請,標題為“INTRA-NODE BUFFER-BASED STREAMING FOR RECONFIGURABLE PROCESSOR-AS-A-SERVICE (RPaaS)”;
美國非臨時專利申請案序號第16/239,252號,於2019年1月3日申請,標題為“VIRTUALIZATION OF A RECONFIGURABLE DATA PROCESSOR”;
美國非臨時專利申請案序號第16/197,826號,於2018年11月21日申請,標題為“CONFIGURATION LOAD OF A RECONFIGURABLE DATA PROCESSOR”;
美國非臨時專利申請案序號第16/198,086號,於2018年11月21日申請,標題為“CONFIGURATION UNLOAD OF A RECONFIGURABLE DATA PROCESSOR”;
美國非臨時專利申請案序號第16/260,548號,於2019年1月29日申請,標題為“MATRIX NORMAL/TRANSPOSE READ AND A RECONFIGURABLE DATA PROCESSOR INCLUDING SAME”;
美國非臨時專利申請案序號第16/536,192號,於2019年8月8日申請,標題為“COMPILER FLOW LOGIC FOR RECONFIGURABLE ARCHITECTURES”;
美國非臨時專利申請案序號第16/407,675號,於2019年5月9日申請,標題為“CONTROL FLOW BARRIER AND RECONFIGURABLE DATA PROCESSOR”;
美國非臨時專利申請案序號第16/504,627號,於2019年7月8日申請,標題為“QUIESCE RECONFIGURABLE DATA PROCESSOR”;
美國非臨時專利申請案序號第16/572,516號,於2019年9月16日申請,標題為“EFFICIENT EXECUTION OF OPERATION UNIT GRAPHS ON RECONFIGURABLE ARCHITECTURES BASED ON USER SPECIFICATION”;
美國非臨時專利申請案序號第16/744,077號,於2020年1月15日申請,標題為“COMPUTATIONALLY EFFICIENT SOFTMAX LOSS GRADIENT BACKPROPAGATION”;
美國非臨時專利申請案序號第16/590,058號,於2019年10月1日申請,標題為“COMPUTATION UNITS FOR FUNCTIONS BASED ON LOOKUP TABLES”;
美國非臨時專利申請案序號第16/695,138號,於2019年11月25日申請,標題為“COMPUTATION UNITS FOR BATCH NORMALIZATION”;
美國非臨時專利申請案序號第16/688,069號,於2019年11月19日申請,標題為“LOOK-UP TABLE WITH INPUT OFFSETTING”;
美國非臨時專利申請案序號第16/718,094號,於2019年12月17日申請,標題為“COMPUTATION UNITS FOR ELEMENT APPROXIMATION”;
美國非臨時專利申請案序號第16/560,057號,於2019年9月4日申請,標題為“SIGMOID FUNCTION IN HARDWARE AND A RECONFIGURABLE DATA PROCESSOR INCLUDING SAME”;
美國非臨時專利申請案序號第16/572,527號,於2019年9月16日申請,標題為“PERFORMANCE ESTIMATION-BASED RESOURCE ALLOCATION FOR RECONFIGURABLE ARCHITECTURES”;
美國非臨時專利申請案序號第15/930,381號,於2020年5月12日申請,標題為“COMPUTATIONALLY EFFICIENT GENERAL MATRIX-MATRIX MULTIPLICATION (GeMM)”;
美國非臨時專利申請案序號第16/890,841號,於2020年6月2日申請,標題為“ANTI-CONGESTION FLOW CONTROL FOR RECONFIGURABLE PROCESSORS”;
美國非臨時專利申請案序號第16/922,975號,於2020年7月7日申請,標題為“RUNTIME VIRTUALIZATION OF RECONFIGURABLE DATAFLOW RESOURCES”;
美國非臨時專利申請案序號第16/996,66號,於2020年8月18日申請,標題為“RUNTIME PATCHING OF CONFIGURATION FILES”;
美國非臨時專利申請案序號第17/023,015號,於2020年9月16日申請,標題為“COMPILE TIME LOGIC FOR DETECTING STREAMING COMPATIBLE AND BROADCAST COMPATIBLE DATA ACCESS PATTERNS”;以及
美國非臨時專利申請案序號第17/031,679號,於2020年9月24日申請,標題為“SYSTEMS AND METHODS FOR MEMORY LAYOUT DETERMINATION AND CONFLICT RESOLUTION”。
本節中討論的主題不應僅是因為在本節中提及而被假定為先前技術。類似地,本節中提及的問題或與作為背景而提供的主題相關聯的問題不應被假定為已在先前技術中得到認可。本節中的主題僅代表不同的方法,這些方法本身也可以對應於要求專利保護的技術的實現。
可重組態處理器,包括現場可編程閘陣列(FPGA),可被組態為比使用執行電腦程式的通用處理器可能達成的更生效率或更快地實現各種功能。所謂的粗粒度可重組態架構(例如,CGRA)正在開發中,其中陣列中的可組態單元比典型的、細粒度的FPGA中使用的更複雜,並且可以致能更快或更生效地執行各種類別的功能。例如,已提出了CGRA,可以針對機器學習和人工智慧工作負載致能高效節能加速器的實現。參見Prabhakar等人,“Plasticine: A Reconfigurable Architecture for Parallel Patterns”,ISCA ’17,2017年6月24-28日,加拿大安大略省多倫多。
檢查點、多任務及多程式設計在分散式處理系統,諸如CGRA,中存在複雜的問題。通常,運行時(runtime)控制程式僅能加載組態檔案,並且按照所組態的來執行機器直到完成,然後允許硬體強制停止。在執行期間可能無法中斷機器來進行系統管理功能,如佔先式多任務及除錯。為了最大化操作效率,以及能夠在處理系統上的處理單元,諸如可重組態處理器的可組態處理元件,之間進行協調,需要一種生效管理處理單元之強制停止的手段。
本技術係關於具有可組態單元陣列的可重組態處理器的強制停止,包括可組態單元的特定子陣列的強制停止。
描述了一種可重組態處理器,包括在積體電路基板上的可組態單元陣列,該陣列包括複數個可組態單元的子陣列(或磚片(tile)),以及在該複數個子陣列中的特定子陣列中的主位址產生與合併單元(address generation and coalescing unit,AGCU)中的強制停止控制器,該強制停止控制器可配置成從在主機處理器上運行的運行時程式接收強制停止命令,並產生重置特定子陣列中的可組態單元的強制停止控制信號。
在一些態樣中,特定子陣列中的可組態單元以互連拓樸(例如,菊鏈)連接,其包括特定主AGCU、一組從屬AGCU、型樣記憶單元(pattern memory unit,PMU)、型樣計算單元(pattern compute unit,PCU)和交換器。
在一些態樣中,強制停止控制器進一步被配置成針對特定子陣列執行強制停止過程,包括:回應於從運行時程式接收強制停止命令,將特定主AGCU從當前狀態,無論該狀態為何,轉換成強制停止等待狀態,並且在處於強制停止等待狀態時:啟動強制停止計數器,向特定子陣列中的可組態單元廣播強制停止控制信號,並且使特定主AGCU在互連拓樸上的輸出埠失效(de-assert)。當強制停止計數器到期時,強制停止控制器進一步可配置成將特定主AGCU從強制停止等待狀態轉換成強制停止完成狀態,並且當處於強制停止完成狀態時:一旦特定主AGCU在陣列級網路上的輸入緩衝器和輸出緩衝器為空時,使其在互連拓樸上的輸出埠生效(assert),對特定主AGCU在互連拓樸上的輸入埠進行採樣以檢測在互連拓樸上的最後一個可組態單元已經使其輸出埠生效,向運行時程式發送強制停止完成中斷,並且回應於從運行時程式接收閒置(idle)命令,將特定主AGCU從強制停止完成狀態轉換成閒置狀態。
在申請專利範圍、說明書和圖式中描述了所公開的技術的特定態樣。
傳統的編譯器將人類可讀取的電腦原始碼轉譯成可以在范紐曼(Von Neumann)計算機架構上執行的機器碼。在此架構中,處理器在軟體程式碼的一或多個線程(thread)中連續執行指令。架構是靜態的,編譯器無法確定指令的執行是如何被管線化,或者哪個處理器或記憶體負責哪個線程。線程執行是非同步的,不支援在平行線程之間安全的資料交換。
用於機器學習(ML)和人工智慧(AI)的高階程式可能需要大規模平行計算,其中許多平行且相互依賴的線程(元管線)交換資料。此類程式不適合在范紐曼電腦上執行。它們更適合針對平行處理進行最佳化的架構,諸如粗粒度可重組態架構(CGRA)或圖形處理單元(GPU)。ML、AI和大規模平行架構的興起對編譯器提出了新的要求,包括計算圖,尤其是資料流(dataflow)圖,是如何管線化的,哪些操作被分配給哪些計算單元,資料如何在各種計算單元和記憶體之間路由,以及如何控制同步,特別是當資料流圖包括一或多個巢狀迴圈時,其執行時間因處理的資料而異。
由於可重組態處理器增加了可組態單元的複雜性和數量,它們也更容易遇到錯誤。在操作中,很可能會出現硬體或軟體錯誤,導致全部或部分的系統變得無回應。在沒有強制停止功能的情況下,處理無回應系統的一種方法是拔掉它的插頭,換句話說,以某種方式將其供電電壓降低到工作位準以下使系統崩潰,以便可以重新啟動系統。這可以稱為冷重置(cold reset)。這樣的程序是具有挑戰性的。對於技術人員而言,識別然後實際拔掉插頭可能是一個挑戰。此外,切斷特定元件的電力可能需要切斷整個機架的電力。而且,可能需要很長的時間才能重新啟動系統,執行系統操作系統所需的所有初始化任務。
處理系統的無回應部分(諸如電路板或積體電路(IC))的另一種方法是使用專用的RESET輸入來重置子系統,這可以稱為暖重置(warm reset)。RESET輸入可以將子系統置於已知的初始狀態,但可以完全地刪除所有的配置資訊,這意味著子系統可能需要被重新初始化。重新初始化序列可能會很長,這會對系統可用性產生重大影響。
在沒有強制停止的情況下,除錯和解決此類錯誤也是具有挑戰性的。首先,確定導致錯誤的原因將是一個挑戰。如果是硬體錯誤,導致錯誤的硬體是什麼?如果是軟體錯誤,導致錯誤的軟體常式是什麼?在任一種情況下,重新啟動系統以使其達到故障點都是困難且耗時的。
公開的強制停止功能允許平穩重置無回應的可重組態處理器。強制停止提供了一種輕量的重置,以平穩地將可重組態處理器置於其可以加載和執行一新的圖形程式的狀態,而無需軟體重新初始化系統的大部分。這允許無回應的可重組態處理器恢復,而不會導致過度的系統性能損失。
公開了一種可重組態處理器,包括可組態單元陣列,該可組態單元陣列可被分割成可組態單元的子陣列(或磚片)。每個子陣列(或磚片)在主位址產生與合併單元(master address generation and coalescing unit,MAGCU)中包括強制停止控制器。強制停止控制器可以由在主機上運行的運行時程式下命令以在一或多個磚片上執行強制停止過程。無論MAGCU狀態機的狀態或任何可組態單元的狀態機的狀態如何,強制停止過程將使用磚片的每個可組態單元中的強制停止邏輯,使MAGCU和其磚片上的可組態單元放棄它們正在執行的任何操作並且重置為閒置狀態。
在操作中,運行時程式可以檢測到強制停止一特定磚片的需求,並向該磚片的MAGCU發出強制停止命令。作為回應,無論MAGCU的狀態機的狀態為何,MAGCU都將立即轉換成強制停止等待(force-quit-wait)狀態,而不管其處於什麼狀態。在處於強制停止等待狀態時,MAGCU將廣播強制停止命令以重置其子陣列中的所有可組態單元,並且不會將任何暫存器讀取或寫入請求路由至任何單元。在接收到強制停止命令後,每個可組態單元將立即從它們所處的任何狀態轉換成強制停止排空(force-quit-drain)狀態,在此期間它們將排空其輸入和輸出緩衝器,允許內部執行管線排空而不向它們饋送新資料,允許輸出緩衝器排出到系統匯流排而不添加新項目,重置內部計數器,重置內部狀態機,並且如本文和關於圖14中所述的進一步動作。每個可組態單元將在強制停止排空狀態停留一段固定的時間,在此期間其被重置,這意味著它們的輸入和輸出緩衝器是空的,它們的內部狀態機被重置,它們的執行管線是空的,以及它們的計數器和信用被重置。此後,可組態單元轉換成強制停止完成狀態,在該狀態中其等待命令以轉換成IDLE狀態。
MAGCU,就其本身而言,將保持在強制停止等待狀態中,直到可編程強制停止等待逾時(timeout)計數器到期。在計數器到期之後,MAGCU將在其磚片狀態暫存器中設置一位元指示強制停止的完成,並且若所有的可組態單元都已完成強制停止而沒有錯誤(即,包括AGCU之磚片的可組態單元中的所有狀態都成功地被重置),則將在磚片狀態暫存器中設置一不同的位元,並將向運行時程式發出強制停止完成中斷。
以這種方式,透過使用強制停止過程,可以在可重組態處理器變得無回應時平穩地將其重置。事實上,無回應的可重組態處理器可能有某狀態機卡在某個狀態,強制停止過程可以重置此狀態機。可重組態資料處理器可以從強制停止之前的無回應變成強制停止之後的有回應。然後,運行時程式可以自由執行其選擇的任何程式。或者,為了排除故障,可以使用測試案例透過檢查點來重複故障,以找出修復方法。此外,為了最大化資料中心的正常運行時間,主機處理器可以嘗試一次除錯一個磚片,同時允許其他磚片繼續運算。此外,強制停止可以由技術人員遠端執行,而無需查找和存取硬體。
術語
如本文中所使用的,短語其中之一者應被解釋為表示所列項目之恰好一項。例如,短語“A、B和C之其中一者”應被解釋為表示以下任一者:僅A、僅B或者僅C。
如本文中所使用的,短語其中至少一者和其中之一或多者應被解釋為表示一或多項。例如,短語“A、B和C之其中至少一者”或者短語“A、B或C之其中至少一者”應被解釋為表示A、B和/或C之任意組合。短語“A、B和C之其中至少一者”是指至少一個A和至少一個B和至少一個C。
除非另有說明,否則使用序數形容詞第一、第二、第三等來說明物件,僅指代該物件的不同實例或類別,並非表示任何排序或順序。
本文中所使用的以下術語或首字母縮寫詞至少部分地定義如下:
AGCU-位址產生(AG)與合併單元(CU)。
AI-人工智慧。
ALN-陣列級網路(array-level network)。
緩衝器-資料的中間儲存。
編譯器-將以程式語言編寫的語句處理成用於電腦處理器的機器語言指令的翻譯器。編譯器可以包括多個階段,以在多個步驟中操作。每個階段都可以創建或更新已翻譯語句的中間表示(intermediate representation,IR)。
計算圖-可以將一些演算法表示為計算圖。如本文中所使用的,計算圖是一種有向圖,包含表示數學運算/表達式的節點和表示運算/表達式之間的依賴關係的邊。例如,使用機器學習(ML)演算法,輸入層節點分配變數,輸出層節點表示演算法結果,以及隱藏層節點對該些變數執行運算。邊表示在運算之間流動的資料(例如,純量、向量、張量)。除了依賴關係之外,計算圖還揭示了哪些運算及/或表達式可以同時執行。
可組態單元-可被組態和重組態以本地儲存資料的電路(例如,記憶體單元或PMU),或可被組態和重組態以執行可編程功能的電路(例如,計算單元或PCU)。可組態單元包括硬連線功能,其執行計算圖和資料流圖中使用的有限數量的功能。可組態單元的其他範例包括CU和AG,其可被組合於AGCU中。一些實施方式包括可組態交換器,而其他實施方式可以包括常規交換器。
CU-合併單元。
資料路徑-執行資料處理操作的功能單元的集合。功能單元可以包括記憶體、多工器、ALU、SIMD、乘法器、暫存器、匯流排等。
FCMU-融合計算和記憶單元-包括可組態記憶單元和可組態計算單元二者的可組態單元。
FIFO-先進先出,通常適用於緩衝器。
圖-由邊連接的節點的集合。節點可以表示各種項目或操作,取決於圖的類型。邊可以表示關係、方向、依賴關係等。
IC-積體電路-單片式(monolithically)積體電路,即,可以作為裸晶粒或作為封裝電路交付的單一半導體晶粒。出於本文件的目的,術語積體電路還包括封裝電路,其包括多個半導體晶粒、堆疊晶粒、或多晶粒基板。這種結構現在在行業中很常見,由同一供應鏈生產,對於普通用戶而言,它們通常與單片式電路沒有區別。
ML-機器學習。
PCU-型樣計算單元-可被組態以執行一或多個運算的計算單元。PCU也是可被組態以重覆執行運算序列的計算單元。
PEF-處理器可執行格式-合適於配置可組態資料處理器的檔案格式。
管線-通過一連串管線階段的交錯操作流。這些操作可以平行且以時間片段的方式執行。管線化增加了整體指令的吞吐量。可重組態處理器可以包括在不同級別的管線。例如,計算單元可以包括在閘級別的管線,以在計算單元的同步邏輯實現中致能閘級別操作的正確計時,以及在圖執行級別的元管線,以致能已組態圖的節點級操作的正確計時。閘級管線通常是硬連線且不可改變,而元管線是在可重組態處理器、可重組態單元陣列的級別及/或可重組態單元級別組態的。
管線階段-管線被分為數個階段,該些階段彼此耦合以形成管道拓樸。
PMU-型樣記憶單元-可以本地儲存資料的記憶單元。PMU也是可以根據程式化的型樣儲存資料的記憶單元。
SIMD-單指令多資料-算術邏輯單元(ALU),其同時對多個資料元素執行單一可編程操作,提供多個輸出結果。
TLN-頂級網路(top level network)。
可組態單元陣列的架構、可組態性和資料流能力可以提高支持平行和管線化計算的計算能力。包括一或多個可組態單元陣列的可重組態處理器可以被編程以同時執行多個獨立和相互依賴的資料流圖。為了能夠同時執行,可能需要從高階程式中提取資料流圖,並將其轉譯成針對可重組態處理器的組態檔案。高階程式是以如Spatial、Python、C++和C等程式語言編寫的原始碼,並且可以使用用於科學計算、ML、AI等的計算庫。高階程式和參考庫可以實現如AlexNet、VGG Net、GoogleNet、ResNet、ResNeXt、RCNN、YOLO、SqueezeNet、SegNet、GAN、BERT、ELMO、USE、Transformer和Transformer-XL等機器學習模型的計算結構和演算法。
高階程式到可執行位元檔的轉譯是由編譯器執行的。儘管傳統的編譯器循序地將操作映射到處理器指令,通常不考慮管線利用和持續時間(通常由硬體管理的任務),但可組態單元陣列需要在空間(用於平行性)和時間(用於相互依賴的計算圖或資料流圖的同步)上將操作映射到處理器指令。此需求意味著用於可重組態處理器的編譯器必須決定要將計算圖或資料流圖的哪個操作分配給哪個可組態單元,以及資料和與資料流圖的支持相關的資料二者如何控制可組態單元之間的資訊流,以及往返於外部主機和儲存器。這個過程,被稱為“佈局和路由(place and route)”,是針對可組態單元陣列的編譯器提出的許多新挑戰之一。
圖1示出包括可重組態處理器、主機和記憶體的示例性系統。可重組態處理器140(或可重組態資料處理器或RDP)具有可重組態的架構並且包括可組態單元陣列130(或處理單元)。可組態單元陣列130可以包括型樣計算單元(PCU)、型樣記憶單元(PMU)、交換器和位址產生與合併單元(AGCU),並且可被分割成複數個子陣列,在本文中稱為磚片(tile)。每個磚片中的可組態單元各包含在強制停止過程中使用的強制停止電路和在程式加載過程中使用的組態資料儲存。每個磚片的可組態單元還包括輸入和輸出緩衝器,以及執行管線,並且關於圖12進一步描述和描繪示例性可組態計算單元。磚片中的可組態單元在陣列級網路(ALN)中彼此連接,並且透過陣列介面128與TLN介面126連接。關於圖3、圖4和圖11進一步描述和描繪磚片的範例和其中包含的可組態單元之間的連接。
可重組態處理器140還包括IO介面124,其透過鏈路122(例如,PCIe鏈路)提供對主機120的存取。主機120可以是或者可以包括電腦和編譯器,該電腦運行運行時過程,諸如圖5中所述的運行時程式。IO介面124包括由介面代理(例如,P-Shim)控制的鏈路介面(例如,PCIe介面),如關於圖6和圖8進一步描繪和說明的。可重組態處理器140還包括透過記憶體匯流排116至記憶體104的IO介面114。IO介面114由另一介面代理(例如,D-Shim)控制,如關於圖2所描繪和說明的。
在一些實施方式中,可重組態處理器140可以包括一或多個IC。在其他實施方式中,單一IC可以跨越多個粗粒度可重組態資料處理器。可重組態處理器140可以在單一積體電路(IC)基板或晶粒上或者在多晶片模組(MCM)上實現。IC可以封裝在單一晶片模組或多晶片模組中。MCM是一種電子封裝,可以包括多個IC晶粒和其他元件,被組裝成單一模組,就好像它是單一元件一樣。MCM的各種晶粒可以安裝在基板上,並且針對某些實施方式使用有線接合、膠帶接合或覆晶接合將基板的裸晶粒電耦合到表面或者彼此電耦合。
可組態單元陣列130中的可組態單元提供用於執行可能已從具有使用者演算法和功能的高階程式導出的計算圖或資料流圖的電路。高階程式可以包括一組程序,諸如AI或ML系統中的學習或推理。更具體地,高階程式可以包括應用程式、圖、應用程式圖、使用者應用程式、計算圖、控制流圖、資料流圖、模型、深度學習應用程式、深度學習神經網路、程式、程式圖形、工作、任務及/或任何其他可能需要串列及/或平行處理的程序和功能。
可重組態處理器140可以透過執行組態檔案(例如,PEF檔)來完成計算任務。為了描述的目的,組態檔案對應於資料流圖,或資料流圖的轉譯,並且可以進一步包括初始化資料。在主機120上運行的編譯器編譯高階程式以提供組態檔案。在一些實施方式中,在程式加載過程期間透過使用組態檔案的全部或部分對一或多個配置儲存進行編程來配置可組態單元陣列130。單一配置儲存可以在可重組態處理器140或可組態單元陣列130的級別,或者在子陣列(或磚片)的級別。組態檔案可以包括針對可組態單元陣列130和該陣列中的可組態單元的配置資料,並且將計算圖鏈接到可組態單元陣列130。可重組態處理器140對組態檔案的執行使得可組態單元陣列130實現資料流圖中的使用者演算法和功能。
在操作中,強制停止子陣列(磚片)的需求可以由子陣列外部的外部事件產生。或者強制停止子陣列(或磚片)的需求可以由子陣列內部的事件產生。或者因為子陣列(或磚片)由於硬體錯誤或軟體錯誤而變得無回應,可以產生強制停止子陣列(或磚片)的需求。
圖2示出將兩個磚片連接到三個IO介面的可重組態處理器。兩個磚片,磚片1和磚片2,各包含可組態單元的子陣列。在一些實施方式中,磚片1和磚片2可以在同一積體電路基板上。可組態單元陣列包括透過陣列級網路(ALN),例如匯流排系統,耦合的可組態單元(例如,PMU、PCU)。每個描繪的磚片(或子陣列)都有四個AGCU,其中一個是主AGCU(MAGCU),另外三個是從屬AGCU(例如,磚片1中有MAGCU1、AGCU12、AGCU13、和AGCU14,以及磚片2中有MAGCU2、AGCU22、AGCU23和AGCU24)。AGCU將ALN介接到TLN,並將資料從TLN路由到ALN,反之亦然。
TLN是使用頂級交換器(交換器211、交換器212、交換器213、交換器214、交換器215和交換器216)構建的,該些頂級交換器彼此耦合以及與包括AGCU和外部介面的TLN上的其他電路耦合。例如,交換器211可以經由P-Shim 257(PCIe shim)經由PCIe介面277將MAGCU1耦合到PCIe鏈路237。類似地,交換器212可以經由P-Shim 258經由PCIe介面278將MAGCU2耦合到PCIe鏈路238。
TLN包括耦合頂級交換器的鏈路(例如,標記了L11、L12、L21、L22)。資料可以在鏈路上在頂級交換器之間以封包形式傳輸,並且從交換器到與交換器耦合的頂級網路上的電路。例如,交換器211和交換器212透過鏈路L11耦合、交換器214和交換器215透過鏈路L12耦合,交換器212和交換器213透過鏈路L21耦合,以及交換器215和交換器216透過鏈路L22耦合。鏈路可以包括一或多個匯流排,並且支援控制線,其包括例如塊寬(chunk-wide)匯流排(向量匯流排)。例如,頂級網路可以包括資料、請求和回應通道,其可協同操作用於以本領域中已知的任何方式傳輸資料。
本範例中在TLN上的電路包括一或多個外部IO介面,包括PCIe介面277(與P-Shim 257和PCIe鏈路237相關聯)、PCIe介面278(與P-Shim 258和PCIe鏈路238相關聯)和記憶體介面279(與D-Shim 259和記憶體匯流排239相關聯)。至外部裝置的介面包括用於在與TLN耦合的電路及與介面耦合的外部裝置,諸如高容量記憶體、主機處理器、其他可重組態處理器、FPGA裝置等,之間路由資料的電路。
本範例中每個磚片中的AGCU之一被配置為主AGCU(MAGCU),並包括用於該磚片的強制停止控制器和陣列組態加載/卸載控制器。MAGCU1包括一強制停止控制器,可用於協助處理磚片1的強制停止過程。MAGCU1還包括組態加載/卸載控制器以協助處理磚片1的程式加載過程。類似地,MAGCU2包括一強制停止控制器以協助強制停止,和組態加載/卸載控制器以協助磚片2的程式加載。
圖3示出包含在ALN中的可組態單元子陣列的示例性磚片。在一些實施方式中,磚片的元件可以在同一積體電路基板上。磚片表示組成可重組態處理器的可組態單元陣列130(圖1)的子陣列或分區(partition)。磚片可以包括數種類型的可組態單元307,例如FCMU、PMU、PCU、交換器、記憶單元及/或計算單元。圖示的磚片包含複數個位址產生與合併單元(AGCU),其中一個是主AGCU(MAGCU),另外三個是從屬AGCU。至於這些類型的可組態單元的功能的範例,參見Prabhakar等人,“Plasticine: A Reconfigurable Architecture for Parallel Patterns”,ISCA 2017,2017年6月24-28日,加拿大安大略省多倫多。每個可組態單元可以包括組態儲存308,其包括一組暫存器或正反器,儲存組態資料,該組態資料表示運行程式的設定及/或序列,並且可以包括巢狀迴圈的數量、每個迴圈迭代器的限制、每個階段要執行的指令、運算元的來源以及用於輸入和輸出介面的網路參數。在一些實施方式中,各個可組態單元307包括FCMU。在其他實施方式中,陣列包含以棋盤模式布置的PMU和PCU,或記憶單元和計算單元二者。在又其他實施方式中,可組態單元可以不同的模式布置。ALN包括交換單元304(S)和三個從屬AGCU(每個包括位址產生器,例如302,和共用的合併單元,例如301)。交換單元304透過互連305相互連接並且透過互連306連接到可組態單元307。交換單元304可以透過互連303與位址產生器(例如,302)耦合。在一些實施方式中,通訊通道可以被配置為端對端連接,並且交換單元304是可組態單元。在其他實施方式中,交換器根據封包標頭中的位址資訊透過可用的鏈路路由資料,並且在需要時建立通訊通道。
組態檔案可以包括表示每個可組態單元的初始組態或起始狀態的組態資料,該些可組態單元執行具有使用者演算法和功能的高階程式。程式加載是根據組態資料在磚片中設置組態儲存,以允許可組態單元執行高階程式的過程。程式加載還可能需要加載記憶單元及/或PMU。
ALN包括一或多種物理資料匯流排,例如塊級(chunk-level)向量匯流排(例如,512位元的資料)、字級純量匯流排(例如,32位元的資料)和控制匯流排。例如,在兩個交換器之間的互連305可以包括匯流排寬度為512位元的向量匯流排互連,和匯流排寬度為32位元的純量匯流排互連。控制匯流排可以包括可組態互連,其在由磚片的組態檔案中的組態位元指定的信號路由上承載多個控制位元。在一些實施方式中,控制匯流排可以包括與資料匯流排分開的物理線路。在其他實施方式中,控制匯流排可以使用具有單獨協定或分時程序的相同物理線路來實現。
物理資料匯流排在傳輸資料的粒度方面可能有所不同。在一個實施方式中,向量匯流排可以承載一包括16通道32位元浮點資料或32通道16位元浮點資料(即,512位元)的資料塊作為其生效負載。純量匯流排可以具有32位元生效負載,並承載純量運算元或控制資訊。控制匯流排可以承載控制握手,諸如符記(token)和其他信號。向量及純量匯流排可以進行封包交換,包括指示每個封包目的地的標頭和其他資訊,諸如當亂序接收到封包時可用於重組檔案的序列號。每個封包標頭可以包含目的地標識符,其標識目的地交換單元的地理坐標(例如,陣列中的列與行),以及介面標識符,其標識目的地交換器上用以到達目的地單元的介面(例如,北、南、東、西等)。
可組態單元307可以具有四個埠(如圖所示)以與交換單元304介接,或是適合於ALN的任何其他數量的埠。每個埠可以適合於接收和傳送資料,或者埠可以適合於僅接收或僅傳送資料。
圖3A示出交換可組態單元,其可具有八個介面。交換單元的北、南、東和西介面可用於使用互連305之交換單元之間的鏈路。交換單元的東北、東南、西北和西南介面各可用以使用互連306之一建立與FCMU、PCU或PMU實例的鏈接。AGCU合併單元在AG之間進行仲裁,並處理記憶體請求。交換單元之八個介面中的每個介面可以包括向量介面、純量介面及控制介面,以與向量網路、純量網路及控制網路進行通訊。在其他實施方式中,交換單元可以具有任何數量的介面。
在組態之後執行磚片中的圖或子圖的期間,可以透過一或多個交換單元及交換單元之間的一或多個鏈路將資料發送給可組態單元,其使用ALN上的向量匯流排和一或多個交換單元的向量介面。
由磚片組態實現的資料處理操作可以包括指定資料處理操作的多個圖或子圖,該些資料處理操作分散在相對應的可組態單元(例如,FCMU、PMU、PCU、AG和CU)之並或由相對應的可組態單元執行。
圖4示出可組態單元陣列的四個子陣列(或磚片)。如所示,可組態單元陣列130包括四個子陣列,標記為磚片1、磚片2、磚片3和磚片4。每個磚片都包括4個AGCU,其中一個是包括強制停止控制器的主AGCU,另外三個是從屬AGCU,其包括強制停止邏輯以執行圖14的元件狀態機。包括在磚片1、磚片2、磚片3和磚片4中的MAGCU分別被標記為MAGCU1、MAGCU2、MAGCU3和MAGCU4,並且分別包括強制停止控制器1、強制停止控制器2、強制停止控制器3和強制停止控制器4。強制停止控制器控制強制停止過程的執行,如關於圖9和圖10所描繪和說明的。
圖5示出主機處理器和運行於其上的運行時程式。如所示,主機102是如圖1之主機120的處理裝置,並且具有運行於其上的運行時程式502。雖然未示出,但在某些情況下,主機102也可以具有運行於其上的編譯器程式。
圖6示出複數個P-Shim(或PCIe介面代理)257、258,其分別耦合到PCIe介面277、278。在所示的範例中,兩個P-Shim/PCIe介面組257/277、258/278實現兩種不同的機制來對可重組態處理器中的一或多個子陣列發起強制停止。
第一PCI介面277被配置成要求包括暫存器622的位址空間612。取決於實施方式,位址空間612可以是包括暫存器622的PCI組態空間或PCIe擴展組態空間,或透過用於PCIe介面277的PCI組態空間中的基址暫存器組態的I/O或記憶體位址空間,其包括在位址空間中預定偏移處的暫存器622。在主機102上運行的運行時程式502可以存取暫存器622以允許運行時程式502透過在主機102和PCI介面277之間耦合的PCIe鏈路,在可重組態處理器的一或多個子陣列中發起強制停止。暫存器622包括強制停止位元遮罩,對於可重組態處理器中的可組態單元陣列中的每個子陣列具有1位元。
暫存器622的輸出向P-Shim 257中的強制停止偵測器發送值630,該值由運行時處理器寫入位元遮罩。強制停止偵測器642可以偵測到位元遮罩中的哪些位元是生效的並向對應於位元遮罩中生效的位元的子陣列發送強制停止信號。因此,舉例來說,若可重組態處理器包括四個子陣列,則位元遮罩可以具有4位元,每個子陣列1位元。再舉一個例子,若將0b0001寫入位元遮罩,則第一子陣列被發送強制停止信號,但另外三個不受影響,可以繼續執行其被配置以運行的程式圖。將0b1111寫入位元遮罩會向所有四個子陣列發送強制停止信號。
眾所周知,PCIe標準定義了三個獨立的位址範圍,其需要不同的匯流排命令來存取:組態位址空間(具有擴展的組態位址空間)、記憶體位址空間及IO位址空間。每個PCIe介面(或端點)都有其自己的組態位址空間,其使用該PCIe介面在PCI主機複合體中的邏輯位置有關的資訊來進行存取,該PCI主機複合體可以包括透過PCIe-PCI-橋耦合的多個PCIe鏈路。每個PCIe介面被編程(使用對其組態空間的存取)以接受對分配給該PCIe介面之特定位址範圍的記憶體存取及/或IO存取。組態暫存器622可以例如透過運行時程式使用PCIe組態空間命令,CfgRd或CfgWr,來存取。在其他實施方式中,作為設計選擇,暫存器622可以被映射到由PCIe介面277中的基址暫存器定義的PCIe介面277的IO空間或記憶體空間。
在一替代實施方式中,在主機120上運行的運行時程式透過向PCIe介面278中的組態暫存器624的PCIe位址發出PCIe寫入之子陣列特定(或磚片特定)強制停止位元序列來觸發強制停止過程。例如,組態暫存器624可以是PCI介面278之組態空間614中的MSI-X訊息控制暫存器,以及運行時程式可以寫入位元[15](MSI-X致能)和位元[14](函數遮罩)。
運行時程式不會將2’b10寫入MSI-X暫存器的那兩個位元,因為這麼做會致能P-shim中斷(通常,P-shim可被用來從磚片中的可組態單元向運行時程式發出中斷,但在強制停止過程中中斷會被抑制,因此P-shim 258會將在強制停止過程中檢測到的中斷請求排入佇列,並允許它們在之後得到服務)。因此,運行時程式會將b00、b01和b11序列寫入範例實施方式中的MSI-X訊息暫存器的位元[15:14],以向特定子陣列發送強制停止命令。PCIe介面278檢測到定址到包括在其組態空間614中的組態暫存器624的PCIe鏈路238上的PCIe寫入。MSI-X訊息控制暫存器的位元[15]和[15]在兩個獨立的連接,位元634和位元636,上直接從PCIe介面278路由到P-shim 258。P-Shim 258包括序列檢測器644,其耦合到線634和636以接收PCIe介面278之組態空間614中的組態暫存器624的兩個位元。P-Shim 257、258和可重組態處理器中的其他P-Shim透過頂級網路彼此相連並連接到AGCU,並且可能或可能不與陣列位於同一機體電路基板上,這取決於實施方式的設計選擇。
在所示的範例中,磚片特定強制停止位元序列有三個部分:函數標頭、函數選擇和子陣列特定的函數引數(argument)。子陣列特定的函數引數使子陣列特定的強制停止位元序列可用於選擇特定的子陣列(或磚片)並且特定於特定的子陣列(或磚片)。P-shim 257使用序列檢測器644(也是一種強制停止檢測器)來監視來自組態暫存器624的兩個位元,位元634和位元636,並且從兩個位元,位元634和位元636,中檢測子陣列特定的(或磚片特定的)強制停止位元序列,並透過全局佈線向定址的MAGCU(未示出)發送專用強制停止命令激發(strobe)。PCIe介面278操作以在強制停止期間抑制中斷並將它們排入佇列以供之後服務,因為0b10永遠不會被寫入位元15和14,這是致能發送MSI-X中斷的唯一狀態。可以使用任何類型的邊敏感或位準敏感方式來發出強制停止命令激發之傳輸的信號,但作為一個範例,可以包括低位準信號和高位準信號之間的切換。
在一些實施方式中,全局佈線將P-shim連接到MAGCU。它們被稱為全局佈線是因為它們可以跨越IC上功能單元的單元邊界。一條全局佈線將一個P-Shim與一個MAGCU連接,因此全局佈線的數量可能與P-Shim數量乘以MAGCU數量一樣多。全局佈線可以將激發信號從特定P-Shim發送到特定MAGCU。激發信號可以是位準敏感的信號,具有活動(或生效)狀態(高或低取決於發出強制停止命令信號的設計選擇),以及係不活動或無效狀態的相反位準。激發信號替代地可以是邊敏感信號,其中從高狀態轉換到低狀態或從低狀態轉換到高狀態中的一或二種轉換可以發出強制停止命令信號。
在一個實施方式中,將位元(位元遮罩或用於序列發送信號的一組佈線)直接從PCI介面中的暫存器路由到P-shim並透過全局佈線向定址的MAGCU發送強制停止命令激發,具有即使系統無回應也可能成功的優點。當磚片無回應時,用於在P-shim和MAGCU之間通訊的正常TLN交易可能是無效的。當磚片無回應時,ALN或菊鏈式命令匯流排也可是無作用的。使用從PCIe介面到P-Shim中的強制停止檢測器的佈線,然後從P-Shim到MAGCU中的強制停止控制器的全局佈線意味著只有PCI介面、強制停止檢測器和強制停止控制器(和可組態單元中的強制停止電路)需要運行以成功執行強制停止命令。
圖7示出與圖6的P-Shim 258中的序列檢測器644一致之特定於四個不同磚片的強制停止位元序列的格式。其他實施方式可以使用不同格式,其可能或可能不會被分割成多個部分。亦示出如表1中的一個範例(其重複了圖7中的資訊),四個磚片特定強制停止位元序列全都具有三個部分。第一部分是函數標頭702a,其在此範例中對於所有四個磚片都是相同的。第二部分是函數選擇702b,其在此範例中對於所有四個磚片也都是相同的。第三部分,函數引數702c/712c/722c/732c,是特定於每個磚片,並且可被用來識別磚片。每個部分可以包括一或多組順序寫入組態暫存器的的值。例如,函數標頭702a可以由b00後接b11來指示。函數選擇702b可以由b11來指示,而函數引數702c可以由b00後接b01來指示。然後,在操作中,運行時程式將發送四個位元序列之一,使用該序列的第三部分來識別磚片。
每個部分可以包括一或多組順序寫入MSI-X組態暫存器的值。如上所述,序列可以由任何兩位元的值組成,除了b10到MSI-X組態暫存器的最高兩位元之外。因此,舉例來說,函數標頭702a可以由b00之後是b11然後是寫入MSI-X最高位元的b00的序列來指示。函數選擇702b可以由b00、b01、寫入MSI-X最高位元的b00的序列來指示。請注意,此序列結構可用於透過針對函數選擇值使用不同序列,諸如b00、b01、b11,將其他命令發送給可重組態處理器。特定的子陣列可以透過針對函數引數使用不同序列來指示,諸如b00、b00、b00用於函數引數702c指示子陣列1的強制停止,b00、b01、b00用於函數引數712c指示子陣列2的強制停止,b11、b00、b00用於函數引數722c指示子陣列3的強制停止,以及b11、b11、b00用於函數引數732c指示子陣列4的強制停止。其他實施方式可以使用任何適當的序列或遮罩,取決於實施方式。
圖8示出向四個磚片之任一者發送強制停止命令的運行時程式。PCIe鏈路804、806和808是可選的,如它們的虛線所示。特定可重組態處理器中的磚片數量是可變的,並且可以依據實施方式而異。可重組態處理器可能只有兩個磚片,例如圖6中所示。
如所示,在主機處理器上運行的運行時程式202透過PCIe鏈路802、804、806和808(所謂的介面匯流排)連接到標記為組態暫存器1、2、3和4的組態暫存器,每個暫存器位於其個別PCIe介面(或端點)的位址空間中。在一個實施方式中,組態暫存器對應於PCIe MSI-X訊息控制暫存器,位元15(MSI-X致能)和位元14(函數遮罩)透過佈線812發送給相關聯的P-Shim。在此實施方式中,0b10永遠不會在強制停止期間發送到這些位元,因為這會啟動中斷。在其他實施方式中,該暫存器可以是組態空間、或由PCIe介面中的基址暫存器定義的I/O空間或記憶體空間中的位置中的另一暫存器,其用以透過佈線812將位元圖(bit-map)發送給其相關聯的P-Shim。
還示出了四個P-Shim(所謂的介面代理),每個都包括了一強制停止檢測器,能夠監視透過直接連接從暫存器發送的位元。強制停止檢測器可以簡單地在位元遮罩中尋找生效的位元,或者可以檢測如圖7中描述的一組特定序列,或者任何其他機制來確定強制停止信號正被發送給一或多個子陣列。
當檢測到強制停止位元時,包含該強制停止檢測器的P-Shim可以產生強制停止激發並將其發送到由接收自暫存器的位元識別的特定MAGCU的強制停止控制器。在一個實施方式中,位元遮罩與每個子陣列的一個位元一起使用,以指示相關聯的子陣列應接收強制停止激發。在另一實施方式中,強制停止檢測器是序列檢測器,其檢測具有三個部分的強制停止位元序列,而第三部分(子陣列特定的函數引數)使位元序列特定以識別應接收強制停止激發的特定子陣列(或磚片)。
從P-Shim 1發出的全局佈線被標記為11、12、13和14。從P-Shim 2發出的全局佈線被標記為21、22、23和24。從P-Shim 3發出的全局佈線被標記為31、32、33和34。而從P-Shim 4發出的全局佈線被標記為41、42、43、44。因此,在所示範例中,總共使用16條全局佈線來將強制停止命令激發從四個P-Shim中任一個傳輸到四個MAGCU中任一個。其他實施方式可以有任意數量的P-Shim和任意數量的MAGCU,在某些情況下,一些P-Shim可能不包括序列檢測器且可能無法啟動強制停止命令。
在操作中,運行時程式202透過PCIe鏈路802、804、806或808之一(或介面匯流排)將PCIe寫入之磚片特定強制停止啟動810(例如,位元遮罩或位元序列)發送給暫存器(例如,專用的強制停止位元遮罩暫存器或PCIe MSI-X訊息控制暫存器),該暫存器是其個別PCIe介面的位址空間的一部分。
繼續操作,由運行時程式202編寫的任何P-Shim的強制停止檢測器檢測到已請求強制停止。作為回應,包含強制停止檢測器的P-Shim產生強制停止命令激發並透過頂級網路的全局佈線(11-14、21-24、31-34、41-44)將其發送到由強制停止位元序列識別的磚片的強制停止控制器。圖9和圖10示出和描述接收到強制停止命令激發的強制停止控制器的MAGCU的回應。
其他實施方式可以使用替代機制來啟動強制停止序列。一種替代的實施方式可以為可重組態處理器中的每個子陣列定義唯一的位址,其可以被編寫成向個別子陣列發送強制停止命令。可以使用任何技術將針對一或多個子陣列的強制停止命令從運行時程式202發送到可重組態處理器,並且仍然在本公開的範圍內。
圖9示出用於執行強制停止命令的示例性MAGCU狀態機。所公開的強制停止實施方式的一有利態樣是MAGCU可以開始執行強制停止命令,而不管其恰巧佔據的當前狀態為何。MAGCU狀態機的操作起始於902,其中MAGCU狀態機處於任意狀態,包括閒置狀態、程式加載狀態、程式加載等待狀態、引數加載狀態、引數加載等待狀態、程式卸載狀態、程式卸載等帶狀態、執行狀態、停止狀態或停止等待狀態。
在904,MAGCU從介面代理(或P-Shim)接收強制停止激發。如關於圖8所描繪和說明的,MAGCU的強制停止控制器可以透過頂級網路上的全局佈線從P-Shim(PCIe介面代理)接收強制停止激發。強制停止控制器透過將MAGCU狀態機轉換成強制停止等待狀態906來回應強制停止激發。
在906,MAGCU在進入強制停止等待狀態時執行三個動作:908、910和912。在908,MAGCU啟動強制停止計數器,可選地使用軟體可編程強制停止逾時暫存器中的值。如關於圖15所述,在一些實施方式中,強制停止計數器將被設置為8192和強制停止逾時暫存器之位元A:0中的位元值中較大的值,因此強制停止計數器將至少計數8192個週期。根據設計選擇,計數器可以從0計數到計數器值、或從計數器值計數到0。在某些實施方式中,還可以透過設置強制停止逾時暫存器的位元[A+1]來禁用強制停止功能。其還啟動強制停止排空計數器,該計數器被設置為低於強制停止計數器的值,但足夠大以允許MAGCU輸入和輸出FIFO有足夠的時間清空。
在912,同樣在進入強制停止等待狀態時,MAGCU使其被饋送到菊鏈式完成匯流排1291(圖12)上的第一個處理單元的PROGRAM_LOAD_DONE_IN的PROGRAM_LOAD_DONE_OUT失效,這是互連拓樸的範例。子陣列中的可組態單元各具有PROGRAM_LOAD_DONE_IN,其耦合到菊鏈中前一個可組態單元的PROGRAM_LOAD_DONE_OUT。並且,該可組態單元的PROGRAM_LOAD_DONE_OUT耦合到菊鏈中下一個可組態單元的PROGRAM_LOAD_DONE IN。MAGCU的PROGRAM_LOAD_DONE_OUT可以被認為是菊鏈第一元件的輸出,而MAGCU的PROGRAM_LOAD_DONE_IN是菊鏈最後一個元件的輸入。可以使用其他拓樸來實現類似的結果,例如多輸入AND閘,以產生來自子陣列中所有可組態單元的所有PROGRAM_LOAD DONE_OUT信號的AND函數,其接著被反饋到MAGCU的PROGRAM_LOAD DONE_IN。
在910,進一步當進入強制停止等待狀態時,MAGCU在其強制停止控制器的協助下,向其磚片的所有可組態單元廣播強制停止命令,即所謂的強制停止控制信號。強制停止命令將導致可組態單元透過執行圖14的元件強制停止過程來重置。收到來自MAGCU的強制停止命令將導致元件重置它們的內部狀態、重置它們的信用計數器、清空它們在ALN上的輸入和輸出IO緩衝器、清洗(flush)任何內部資料處理管線以及採取任何附加步驟,如關於圖14所示和描述。此外,收到強制停止命令的從屬AGCU將完成它們可能擁有的任何未完成的TLN交易。在一些實施方式中,元件將有至少8192個週期來完成圖14的強制停止過程,因為MAGCU的強制停止計數器在8192個週期過去之前將不會到期。
此外,當處於強制停止等待狀態時,MAGCU對接收自運行時程式的暫存器讀取和寫入請求應用特殊處理。讀取和寫入強制停止控制器所在的MAGCU本地暫存器的交易係正常服務。MAGCU將使TLN上任何未完成的交易完成,並且亦使從屬AGCU完成其在TLN上未完成的交易。這提供了允許運行時程式監視MAGCU狀態暫存器以監視強制停止命令的執行狀態的好處。例如,在陣列元件上,對MAGCU遠端暫存器的暫存器寫入請求被丟棄。對於對MAGCU遠端暫存器的暫存器讀取請求,MAGCU返回0。對於AGCU遠端的暫存器存取,將不會發出錯誤信號。禁用對遠端暫存器的讀取和寫入請求預計可提高實現重置的可能性。
MAGCU繼續將其PROGRAM_LOAD_DONE OUT保持在失效狀態,直到強制停止排空計數器遞減為零。一旦強制停止排空計數器在922到達零,若MAGCU的輸入和輸出FIFO為空,則MAGCU使其PROGRAM_LOAD DONE_OUT生效。應注意,在強制停止排空計數器遞減為零之後,MAGCU將保持在強制停止等待狀態中。
如複製於表2中的,在914的圖示顯示了第一可組態單元為接收強制停止命令而採取的動作。該元件將應用圖14的元件狀態機。在914,第一元件轉換為強制停止排空並啟動強制停止排空計數器。當計數器到期時,若元件在ALN上的IO FIFO為空且程式加載完成輸入(program-load-done-in)是生效的,則元件轉換為強制停止完成,並且使其輸出到程式加載完成菊鏈(或互連拓樸)的程式加載完成(program-load-done)生效。執行圖14的元件強制停止過程的目的是重置元件,至少透過重置內部狀態、計數器或信用,以及清洗輸入、輸出、內部緩衝器。
如複製於表3中的,在916的圖示顯示了最後一個可組態單元為接收強制停止命令而採取的動作。與在914和表2所示的第一個元件的動作一樣,最後一個元件將應用圖14的元件狀態機。在916及如表3中所示,最後一個元件轉換成強制停止排空狀態並啟動強制停止排空計數器。接著,當計數器到期時,元件轉換成強制停止完成狀態,並且若元件在ALN上的IO FIFO為空且程式加載完成輸入是生效的,則使其輸出到菊鏈(或互連拓樸)的程式加載完成生效。與第一個可組態單元一樣,在最後一個單元上執行強制停止過程的目的是重置可組態單元。
在操作中,預計可組態單元能夠實現重置。在一些實施方式中,MAGCU將停留在強制停止等待狀態,並允許可組態單元重置至少8192個週期。在一些實施方式中,可組態單元的強制停止排空計數器針對PMU、PCU和交換器元件被設置為1024週期,以及針對從屬AGCU元件被設置為4096個週期。因此,磚片元件可以有足夠的時間重置其自身。
在處於強制停止等待狀態時,MAGCU對耦合到菊鏈中的最後一個可組態單元(MAGCU除外,其同時為菊鏈中的第一和最後一個元件)的PROGRAM_LOAD_DONE_OUT的PROGRAM_LOAD_DONE IN進行採樣,若其為生效的,則指示菊鏈(或互連拓樸)上的每個元件都已完成強制停止。MAGCU在處於強制停止等待狀態906時繼續重複地對菊鏈式完成輸入進行採樣。MAGCU可以修改採樣頻率:當流量大時更頻繁地進行採樣,否則更不頻繁地進行採樣。採樣率是一種實施方式設計選擇。在926,一旦菊鏈中的最後一個元件使菊鏈式PROGRAM_LOAD_DONE_OUT生效,則MAGCU設置磚片狀態暫存器的位元Y(圖16)。
在918,當強制停止計數器到期時,MAGCU的強制停止控制器將MAGCU狀態機轉換成強制停止完成狀態920,MAGCU在該狀態下執行操作,如下面四個段落中所述。
一旦MAGCU進入強制停止完成狀態920,MAGCU會設置磚片狀態暫存器的位元X(圖16)。當MAGCU進入強制停止完成狀態時,輸入和輸出FIFO很可能為空,因為它們在強制停止等待狀態期間被排空,並且將強制停止排空計數器設置為足夠大的值以允許FIFO完全排空,該強制停止排空計數器小於用於轉換成強制停止等待狀態的強制停止計數器。運行時程式可以監視磚片狀態暫存器的位元X和Y以判斷強制停止命令的執行進度。可以將MAGCU的強制停止計數器設置為具有比MAGCU的強制停止排空計數器和菊鏈的傳播延遲更大的值,以確保磚片狀態暫存器的Y位元在MAGCU進入強制停止完成狀態之前被設置,只要不存在錯誤狀況。
在928,MAGCU在某些情況下可以透過介面代理(或P-Shim)向運行時程式產生強制停止完成中斷。
在一些實施方式中,MAGCU實現強制停止完成計數器來管理生效的program-load-done-in永遠不會到達的情況。若計數器超過強制停止完成逾時值,則MAGCU確定來自菊鏈的生效輸入預計不會到達。在這種情況下,MAGCU產生強制停止完成中斷,僅設定磚片狀態暫存器的位元X,並忽略program-load-done-in的任何後續轉換,其將反之設置位元Y。
MAGCU狀態機保持在強制停止完成狀態920,直到運行時程式在930設置靜止控制暫存器(Quiesce Control Register)(圖17)的位元Z,其將用作閒置命令,使MAGCU從強制停止完成920轉換成MAGCU閒置狀態932。
圖10示出用於使用不同的表示執行如圖9中所示的強制停止命令的MAGCU狀態機。狀態機包括兩個狀態,強制停止等待和強制停止完成,其在處理強制停止命令的期間使用。
在操作中,無論MAGCU狀態機的當前狀態如何,都可以啟動MAGCU強制停止過程。當強制停止命令到達時的MAGCU狀態機的當前狀態可以是閒置狀態、程式加載狀態、程式加載等待狀態、引數加載狀態、引數加載等待狀態、程式卸載狀態、程式卸載等待狀態、執行狀態、靜止狀態和靜止等待狀態。在任何狀態中啟動的能力提供了一個優勢,即,無需等待退出其他狀態即可開始強制停止。
然後,從任何狀態開始,MAGCU狀態機轉換成強制停止等待狀態,以回應於在頂級網路上透過全局佈線從P-shim接收到強制停止命令激發,P-shim在PCIe匯流排上檢測到主機處理器發送的磚片特定強制停止位元序列(如關於圖6至圖8所描繪和說明的)。
在處於強制停止等待狀態時,MAGCU將嘗試重置其磚片中的可組態單元,並透過在陣列級網路的命令匯流排上向磚片的所有可組態單元廣播強制停止來清除其內部狀態。可組態單元將至少透過重置其內部狀態、重置其信用計數器、排空其執行管線、排空輸入和輸出FIFO以及採取如關於圖14所描繪和說明的任何額外步驟來回應強制停止。接收到強制停止的從屬AGCU亦將在TLN上完成其未完成的交易。此外,在處於強制停止等待狀態時,MAGCU將定期遞減強制停止計數器,該計數器被初始化為強制停止逾時暫存器中的值(如圖15中所示和描述的)。當MAGCU處於強制停止等待狀態時,磚片元件將重置其內部狀態、重置信用計數器、清除輸入和輸出FIFO,如在914(圖9)和圖14所描繪和說明的。
當強制停止計數器到達0時,MAGCU狀態機轉換成強制停止完成。當處於強制停止完成時,MAGCU被配置成執行數個動作,如在圖9中所描繪和說明的,以確定磚片的狀態並且向運行時程式發出強制停止完成中斷。
回應於強制停止閒置命令,MAGCU狀態機從強制停止完成轉換為MAGCU閒置狀態,即,運行時程式設置靜止控制暫存器的位元Z,如關於圖17所描繪和說明的。
圖11示出可組態單元子陣列(或磚片)中的強制停止邏輯。如所示,磚片表示組成可重組態處理器的可組態單元陣列130(圖1)的子陣列或分區。磚片可以包括數種類型的可組態單元,諸如AGCU、PMU、PCU、交換器、記憶單元及/或計算單元,所有這些都參照圖3進行描述。所示的磚片包含複數個位址產生與合併單元(AGCU),其中一者是主AGCU(MAGCU),而其他三個是從屬AGCU。ALN包括一或多種物理資料匯流排,例如塊級向量匯流排(例如,512位元的資料)、字級純量匯流排(例如,32位元的資料)和控制匯流排。
然而,與圖3不同的是,圖11示出了強制停止控制器1101。如所示,主AGCU包括強制停止控制器,其實現圖9和圖10的狀態機並且廣播強制停止命令,以嘗試重置其磚片中所有的可組態單元並重置它們的內部狀態。
此外,與圖3不同的是,圖11示出了強制停止邏輯包括在ALN中所有可組態單元中以及在三個從屬AGCU中。在操作中,透過實現關於圖14所描繪和說明的元件狀態機,可組態單元和從屬AGCU中的強制停止邏輯試圖回應強制停止命令重置可組態單元以及重置其內部狀態。
圖12示出包括強制停止邏輯的示例性可組態單元。該圖式是說明示例性型樣計算單元(PCU)的方塊圖,但可以將強制停止處理1240和菊鏈邏輯應用於任何類型的可組態單元,包括型樣記憶單元(PMU)、融合計算和記憶單元(FCMU)、交換器、MAGCU(在這種情況下,強制停止過程邏輯1240協助實現圖9和圖10的MAGCU狀態機)或從屬AGCU(在這種情況下,強制停止過程邏輯1240協助實現圖14的元件狀態機)。如果圖示的可組態單元是PCU、PMU、FCMU或交換器,則強制停止處理邏輯1240協助實現圖14的元件狀態機。可組態單元可以與陣列級網路介接。例如,純量輸入可以被儲存在純量FIFO 1250中並被饋送到執行管線1280。向量輸入可以被儲存在向量FIFO 1260中並被饋送到執行管線1280和組態資料儲存1220。控制輸入可被輸入到控制塊1270中。
可組態單元陣列130中的可組態單元各包括組態資料儲存1220(例如,串列鏈)以儲存單元檔案,其包含特定於相應可組態單元之組態資料的複數塊(或其他大小的子檔案)。組態資料儲存1220可以從輸入組態資料1210接收輸入並且可以使用輸出組態資料1230輸出組態資料。
向量輸入可以被儲存在向量FIFO 1260中,然後作為輸入組態資料1210被傳輸到組態資料儲存1220。可以使用向量輸出從組態資料儲存1220卸載輸出組態資料1230。向量IO可以用於傳輸資料塊(例如,512位元),例如在單元組態加載過程(也稱為程式加載過程)中接收組態資料以及在組態後的操作期間跨多個PCU之間的長管線傳輸和接收資料。
在一些實施方式中,控制線1292可以由MAGCU用來向其磚片中的所有可組態單元廣播強制停止命令,如圖9的步驟910,或者在強制停止過程期間廣播強制停止命令(如關於圖14所述)。菊鏈邏輯1293A還可以驅動菊鏈式完成匯流排1291(所謂的互連拓樸),其在強制停止期間用於承載強制停止完成信號,如關於圖13進一步描述的。
可組態單元130中的可組態單元各包括強制停止過程邏輯1240,其透過線路1222連接到組態資料儲存1220以執行如關於圖14所描繪和說明的強制停止過程。
在由磚片中的可組態單元執行的強制停止過程期間,如關於圖14所描繪和說明的,可組態單元將嘗試清空它們的輸入和輸出FIFO、排空內部管線操作、重置信用和重置它們的內部狀態,以便實現重置狀態。然後,在執行強制停止期間,將以最大速率排空純量FIFO 1250和向量FIFO 1260,並且丟棄資料而非饋送到執行管線1280。背壓將被禁用,以及信用將被重置,允許輸入無障礙地到達,因為它們將以最大速率被排空。在強制停止期間,輸出FIFO將被允許排出到ALN,因為它們將被接收者丟棄,並且將不會加載新項目到輸出FIFO。控制輸入在強制停止期間將被忽略,並且將禁用控制輸出。關於圖14描繪和說明可組態單元的強制停止過程的處理。
可以使用向量FIFO 1260中的向量FIFO來緩衝向量輸入。可以使用純量FIFO 1250來緩衝純量輸入。使用輸入FIFO可以解耦資料生產者和消費者之間的時序,並透過使其對輸入延遲失配具有強健性來簡化可組態單元間的控制邏輯。
在強制停止命令的執行期間,磚片(或可組態單元陣列130的子陣列)使用菊鏈式完成匯流排1291來指示強制停止命令何時完成。如圖12的範例中所示,菊鏈式完成匯流排1291和菊鏈式命令匯流排接到菊鏈邏輯1293A,其與強制停止過程邏輯1240通訊。下面進一步描述菊鏈式完成匯流排。用於命令和完成匯流排的其他拓樸顯然是可能的,但此處沒有描述。
可組態單元,諸如PCU,可以在執行管線1280中包括多個可重組態的資料路徑。可以將可組態單元中的資料路徑組織為多階段(階段1...階段N)、可重組態SIMD(單指令、多資料)管線。被推入可組態單元中的組態串列鏈的資料塊包括可組態單元中各資料路徑的各階段的組態資料。組態資料儲存1220中的組態串列鏈透過線路1221連接到執行管線1280中的多個資料路徑。
型樣記憶單元(例如,PMU)可以包含與用於位址計算的可重組態純量資料路徑耦合的高速暫存記憶體(scratchpad memory),以及PCU中使用的匯流排介面。PMU可用於在整個可重組態單元陣列中分佈晶載記憶體。在一些實施方式中,PMU記憶體內的位址計算是在PMU資料路徑上執行的,而核心計算是在PCU內執行。
圖13示出可組態單元可用於接收PROGRAM_LOAD_DONE_IN並在菊鏈互連拓樸中驅動其PROGRAM_LOAD_DONE_OUT的邏輯。如所示,磚片元件控制塊1304接收陣列級網路控制匯流排1302,該匯流排可用於承載強制停止命令,該命令將來自磚片的MAGCU以啟動強制停止過程。暫存器1312(或鎖存器或正反器)中完成的程式加載將透過可組態單元的PROGRAM_LOAD_DONE_IN輸入接收程式完成菊鏈(或互連拓樸)中緊接在前的可組態單元的PROGRAM_LOAD_DONE_OUT。
在操作中,強制停止命令將從MAGCU到達並啟動由磚片元件控制塊1304控制的磚片的強制停止過程。在某個時候,來自先前可組態單元的PROGRAM_LOAD_DONE_IN將到達並儲存在暫存器1312中。一旦從磚片元件控制塊1304輸出的強制停止命令完成是生效的且暫存器1312是生效的,則AND閘1314將使程式加載完成輸出暫存器1316(或鎖存器或正反器)的輸入生效,這將使可組態單元的PROGRAM_LOAD_DONE_OUT生效,其接著被發送到菊鏈中下一個可組態單元的PROGRAM_LOAD_DONE_IN。
圖14示出用於執行強制停止命令的可組態單元狀態機。所公開的強制停止實施方式的一個有利態樣是可以使可組態單元(或處理單元)開始執行強制停止命令,而不管它們的當前狀態為何,其可以是閒置、組態(或程式加載)、引數加載、檢查點、執行或靜止。在任何狀態下開始的能力提供了開始強制停止而無需等待退出某些其他狀態的優勢。
在操作中,可組態單元在1400開始執行強制停止,此為其在收到強制停止命令之前所處的任何狀態。回應於收到由MAGCU向其磚片中所有可組態單元廣播的強制停止命令,每個可組態單元轉換成強制停止排空1402並初始化強制停止排空計時器。每個可組態單元也在進入強制停止排空1402時使其至菊鏈式完成匯流排1291(圖12)(互連拓樸)的program-load-done-out信號失效。
當處於強制停止排空1402時,可組態單元在每個週期遞減強制停止排空計時器。在一些實施方式中,計數器從零開始向上計數。在強制停止排空計時器到期時,每個可組態單元轉換成強止停止完成1404,並保持在該處直到其收到閒置命令。
當處於強制停止排空1402或強制停止完成1404時,每個可組態單元執行表4中列出的動作。表4中列出的動作也由從屬AGCU執行,其包括強止停止邏輯,如圖11中所示。此外,從屬AGCU完成TLN上任何未完成的交易。
圖15示出強制停止逾時暫存器的格式。這是主AGCU中的運行時編程暫存器,其保存逾時計數器值和強制停止過程使用的致能(Enable)位元。暫存器的欄位示於圖15和表5中。在一些實施方式中,強制停止逾時暫存器是33位元暫存器。
一旦向MAGCU發出強制停止命令,計數器每個週期都會遞增,直到其達到此暫存器或8192中指定的強制停止逾時值,以較大者為準。當計數器達到該值時,將發生以下事件:
主AGCU轉換成強制停止完成狀態。
MAGCU向運行時發出中斷信號,指示強制停止完成。
信號MSI-X中斷#27由所有4個磚片使用來發出強制停止完成信號。
MAGCU將更新磚片狀態暫存器。
預設情況下,在某些實施方式中可啟用強制停止功能。在某些實施方式中,可以設置(SET)強制停止逾時CSR的位元A+1以禁用強制停止功能。
圖16示出示例性磚片狀態暫存器的格式。圖16示出磚片狀態暫存器中與強制停止實施方式相關的位元。磚片狀態暫存器的內容也示出於表6中。運行時程式可以檢查X和Y位元以了解強制停止狀態。可以透過X和Y位元被設置來指示成功的強制停止。在一些實施方式中,當MAGCU轉換成強制停止完成狀態時,位元X被設置,並且若子陣列上的所有元件都指示成功強制停止完成,則位元Y被設置。透過使菊鏈式程式加載完成信號生效,元件指示成功強制停止完成。位元N:M反映MAGCU狀態機的狀態。若位元X被設置但位元Y未被設置,則子陣列中至少一個可組態單元無法完成強制停止操作。在這種情況下,運行時軟體可能需要採取更嚴厲的行動來恢復子陣列,諸如對子系統(或完整系統)執行完全重置或通知操作員需要某些動作,諸如對系統執行全面診斷及/或修復。
圖17示出靜止控制暫存器的格式。靜止控制暫存器的內容亦示於表7中。
運行時程式可以使用靜止控制暫存器的位元Z來啟動子陣列上的閒置命令。運行時程式可以設置位元Z以回應讀取磚片狀態暫存器的位元X和Y並看到強制停止已成功完成。設置靜止控制暫存器的Z位元會導致MAGCU從強制停止完成狀態轉換成閒置狀態。
條項
所公開的技術,特別是本節中公開的條項,可以實踐為系統、方法或製品。實施方式的一或多個特徵可以與基礎實施方式組合。不相互排斥的實施方式被教示為可組合的。實施方式的一或多個特徵可以與其他實施方式組合。本公開會週期性地提醒使用者這些選項。省略重複這些選項的敘述的一些實施方式不應被視為限制前面章節中教導的組合-這些敘述特此透過引用併入到以下每個實施方式中。
所公開技術的一或多個實施方式和條項或其元素可以以電腦產品的形式實現,該電腦產品包括具有用於執行所指示的方法步驟的電腦可使用程式碼的非暫時性電腦可讀取儲存媒體。此外,所公開技術的一或多個實施方式和條項或其元素可以以裝置的形式實現,該裝置包括記憶體和至少一個處理器,其耦合到該記憶體並且可操作以執行示例性方法步驟。此外,在另一態樣,所公開技術的一或多個實施方式和條項或其元素可以以用於執行本文描述的一或多個方法步驟的手段的形式實現;該手段可以包括(i)硬體模組、(ii)在一或多個硬體處理器上執行的軟體模組、或(iii)硬體和軟體模組的組合;(i)-(iii)中的任一項實現本文所述的特定技術,並且軟體模組儲存在電腦可讀取儲存媒體(或多個此種媒體)中。
可以將本節中描述的條項組合為特徵。為了簡明起見,特徵的組合沒有單獨列舉,也沒有與每個基礎特徵集重複。讀者將理解在本節中描述的條項中標識的特徵如何容易地與在本申請之其他節中標識為實施方式的基礎特徵集組合。這些條項並不意味著相互排斥、窮舉或限制性的;並且所公開的技術不限於這些條項,而是包括在要求專利保護的技術及其等效物的範圍內的所有可能的組合、修改和變化。
本節中描述的條項的其他實施方式可以包括非暫時性電腦可讀取儲存媒體,其儲存可由處理器執行以執行本節中描述的任何條項的指令。本節中描述的條項的又一實施方式可以包括系統,其包括記憶體及一或多個處理器,其可操作以執行儲存在記憶體中的指令,以執行本節中描述的任何條項。
吾人揭露以下條項。
條項集1
條項1.一種可重組態處理器,包括:積體電路基板上的可組態單元陣列,該陣列包括複數個可組態單元子陣列;以及在該複數個子陣列中的特定子陣列上的強制停止控制器,可組態成接收強制停止命令,並產生重置該特定子陣列中的可組態單元的強制停止控制信號。
條項2.如條項1之可重組態處理器,還包括介面代理,其耦合到該強制停止控制器並被組態成向該強制停止控制器發送該強制停止命令。
條項3.如條項2之可重組態處理器,其中該介面代理透過頂級網路在該陣列和介面匯流排之間傳輸資料,以及其中該介面匯流排經由介面鏈路連接到主機處理器。
條項4.如條項3之可重組態處理器,其中該強制停止控制信號使該特定子陣列之包括該強制停止控制器的特定可組態單元完成該頂級網路上未完成的交易。
條項5.如條項3之可重組態處理器,其中該介面代理進一步耦合到介面匯流排並被組態成接收由運行在主機處理器上的運行時程式寫入該介面匯流排之位址空間中的暫存器的強制停止訊息,並向該強制停止控制器發送該強制停止命令作為回應。
條項6.如條項5之可重組態處理器,其中該暫存器位於該介面匯流排的組態位址空間中。
條項7.如條項5之可重組態處理器,其中該強制停止訊息包括寫入該暫存器的特定於子陣列的強制停止位元序列。
條項8.如條項7之可重組態處理器,其中該特定於子陣列的強制停止位元序列具有函數標頭、函數選擇及特定於子陣列的函數引數。
條項9.如條項8之可重組態處理器,其中該特定於子陣列的函數引數使該特定於子陣列的強制停止位元序列特定於該特定子陣列。
條項10.如條項7之可重組態處理器,其中該暫存器是該介面匯流排之組態位址空間中的訊息控制暫存器。
條項11.如條項7之可重組態處理器,其中該介面代理包括序列檢測器,其檢測來自該組態暫存器之該特定於子陣列的強制停止位元序列。
條項12.如條項11之可重組態處理器,其中該介面代理產生該強制停止命令作為激發信號,以回應於該序列檢測器檢測到該特定於子陣列的強制停止位元序列。
條項13.如條項12之可重組態處理器,其中該介面代理經由全局線路向該強制停止控制器發送該強制停止命令。
條項14.如條項13之可重組態處理器,其中該全局線路上從高信號位準至低信號位準或從低信號位準至高信號位準的轉換指示該強制停止命令到該強制停止控制器的傳輸。
條項15.如條項5之可重組態處理器,其中該強制停止訊息標識該特定子陣列,以及其中該介面代理產生該強制停止命令作為回應於該資料的激發信號。
條項16.如條項5之可重組態處理器,其中該強制停止訊息是遮罩。
條項17.如條項5之可重組態處理器,其中該強制停止訊息是遮罩,其針對該複數個子陣列中的每個子陣列具有一位元。
條項18.如條項1之可重組態處理器,其中該強制停止控制器可進一步組態成透過連接到該特定子陣列中的該些可組態單元的陣列級網路,向該特定子陣列中的該些可組態單元廣播該強制停止控制信號。
條項19.如條項1之可重組態處理器,其中該強制停止控制信號使該特定子陣列中的該些可組態單元重置其內部狀態。
條項20.如條項1之可重組態處理器,其中該強制停址控制信號使該特定子陣列中的該些可組態單元清空其輸入緩衝器和輸出緩衝器。
條項21.如條項1之可重組態處理器,其中該複數個子陣列中的每個子陣列具有複數個位址產生與合併單元(AGCU),包括主AGCU和一或多個從屬AGCU。
條項22.如條項21之可重組態處理器,其中該特定子陣列的特定主AGCU包括該強制停止控制器。
條項23.如條項22之可重組態處理器,其中該強制停止控制信號使該特定主AGCU清空其輸入緩衝器和輸出緩衝器。
條項24.如條項22之可重組態處理器,其中該特定子陣列中的該些可組態單元係連接在互連拓樸中。
條項25.如條項24之可重組態處理器,其中除了該互連拓樸之外,該些可組態單元進一步被耦合到陣列級網路,以及該些可組態單元包括該特定主AGCU、一組從屬AGCU、型樣記憶單元(PMU)、型樣計算單元(PCU)和交換器。
條項26.如條項25之可重組態處理器,其中該強制停止控制器進一步被配置成針對該特定子陣列執行強制停止過程,包括:回應於接收該強制停止命令,將該特定主AGCU從當前狀態轉換成強制停止等待狀態;在處於該強制停止等待狀態時:啟動強制停止計數器,向該特定子陣列中的該些可組態單元廣播該強制停止控制信號,並且使該互連拓樸上的該特定主AGCU的輸出埠失效;當該強制停止計數器到期時,將該特定主AGCU從該強制停止等待狀態轉換成強制停止完成狀態;在處於該強制停止完成狀態時:一旦該互連拓樸上該特定主AGCU之陣列級網路上的輸入緩衝器和輸出緩衝器為空,則使該互連拓樸上該特定主AGCU的該輸出生效,並且對該互連拓樸上該特定主AGCU之輸入埠進行採樣,並且檢測該互連拓樸上的最後一個可組態單元已使其輸出埠生效;向運行於主機處理器上的運行時程式發送強制停止完成中斷;並且將該特定主AGCU從該強制停止完成狀態轉換成閒置狀態以回應於從該運行時程式接收到閒置命令。
條項27.如條項26之可重組態處理器,其中該當前狀態是該閒置狀態、程式加載狀態、程式加載等待狀態、引數加載狀態、引數加載等待狀態、程式卸載狀態、程式卸載等待狀態、執行狀態、靜止狀態或靜止等待狀態中之一者。
條項28.如條項21之可重組態處理器,其中該複數個子陣列中的個別子陣列具有個別主AGCU,其包括個別強制停止控制器。
條項29.如條項28之可重組態處理器,其中該個別強制停止控制器可被組態成從複數個介面代理接收強制停止命令。
條項30.如條項29之可重組態處理器,其中運行在主機處理器上的運行時程式可被組態成產生個別特定於子陣列的強制停止位元序列以發送針對該個別子陣列的個別強制停止命令。
條項31.如條項30之可重組態處理器,其中該運行時程式可進一步被組態成將該個別特定於子陣列的強制停止位元序列寫入與該數個介面代理通訊的介面匯流排的組態空間中的組態暫存器。
條項32.如條項31之可重組態處理器,其中該複數個介面代理的序列檢測器被組態成檢測寫入該些組態暫存器之相對應組態暫存器的該個別特定於子陣列的強制停止位元序列。
條項33.如條項32之可重組態處理器,其中該複數個介面代理可被組態成經由相對應的全局線路集與該個別的強制停止控制器進行通訊。
條項34.如條項33之可重組態處理器,其中該複數個介面代理可被組態成產生該強制停止命令作為激發信號以回應於該序列檢測器檢測到該個別的特定於子陣列的強制停止位元序列。
條項35.如條項34之可重組態處理器,其中該複數個介面代理可被組態成經由該相應的全局線路集將該強制停止命令發送給該個別強制停止控制器。
條項36.如條項35之可重組態處理器,其中在該相應的全局線路集中的全局線路上的轉換指示從相應的介面代理向相應的強制停止控制器傳輸強制停止命令。
條項37.如條項36之可重組態處理器,其中該複數個介面代理中的介面代理可被組態成連接到主機處理器、連接到其他可組態單元陣列、連接到交換結構、以及連接到其他介面裝置。
條項38.如條項1之可重組態處理器,其中該特定子陣列中的至少一個可組態單元對來自主機處理器的通訊無反應。
條項39.如條項1之可重組態處理器,其中在執行當前程式時,該特定子陣列無反應。
條項40.如條項39之可重組態處理器,其中該強制停址控制信號使該特定子陣列中的該些可組態單元排空該當前程式的資料。
條項41.如條項39,其中該強制停址控制信號使該特定子陣列中的該些可組態單元可用於執行下一個程式。
條項42.如條項39之可重組態處理器,其中該特定子陣列在被組態成執行該當前程式之後但在執行該當前程式之前無反應。
條項43.如條項39之可重組態處理器,其中該特定子陣列在被組態成執行待當前程式時但在執行該當前程式之前無反應。
條項44.如條項41之可重組態處理器,其中該特定子陣列在開始該當前程式之後但在被組態成執行該下一個程式之前無反應。
條項45.一種處理系統,包括:處理單元陣列;耦合到該些處理單元的強制停止邏輯,每個強制停止邏輯可配置成:接收強制停止控制信號,並且回應於該強制停止控制信號而重置相關聯的處理單元;以及以互連拓樸在該些處理單元之間連接的該強制停止邏輯,使得每個強制停止邏輯回應於接收到該強制停止控制信號可以進一步組態成:產生強制停止完成信號以指示相關聯的處理單元的重置完成,並且一旦從互連拓樸上之先前處理單元的強制停止邏輯接收到強制停止完成信號,則在該互連拓樸上轉發該強制停止完成信號。
條項46.如條項45之處理系統,還包括強制停止控制器,可被組態成向該些處理單元廣播強制停止控制信號,並從該互連拓樸上最後一個處理單元的強制停止邏輯接收強制停止完成信號。
條項47.如條項45之處理系統,其中每個強制停止邏輯進一步可配置成執行針對該相關聯的處理單元的強制停止過程,包括:回應於接收該強制停止控制信號,將該相關聯的處理單元從當前狀態轉換成強制停止排空狀態;當處於該強制停止排空狀態時:使至該互連拓樸的該強制停止完成信號失效;並啟動強制停止排空計數器;在該強制停止排空計數器到期時,將該相關聯的處理單元從該強制停止排空狀態轉換成強制停止完成狀態;以及當處於該強制停止完成狀態時:使至該互連拓樸的該強制停止完成信號生效以回應於來自生效的該互連拓樸的輸入埠。
條項48.如條項45之處理系統,其中該互連拓樸包括菊鏈。
條項49.如條項45之處理系統,該處理單元陣列中的每個處理單元具有FORCE_QUIT_DONE_IN輸入和FORCE_QUIT_DONE_OUT輸出,該FORCE_QUIT_DONE_OUT輸出僅在FORCE_QUIT_DONE_IN和指示該處理單元的該重置的該強制停止完成信號二者皆已生效時才生效。
條項50.一種可重組態處理器,包括:積體電路基板上的可組態單元陣列,該陣列包括一或多個可組態單元子陣列;用於由該一或多個可組態單元子陣列之子陣列中的該些可組態單元產生的強制停止完成信號的互連拓樸;強制停止控制器,其耦合到該一或多個可組態單元子陣列之該子陣列中的該些可組態單元以及耦合到該互連拓樸;該可組態單元子陣列中的可組態單元分別包括強制停止邏輯,可組態成:從該強制停止控制器接收強制停止命令以回應於該強制停止命令而重置其個別可組態單元,並且產生強制停止完成信號以指示該個別可組態單元之該重置完成,並向該互連拓樸提供該強制停止完成信號;以及該互連拓樸被組態成回應於該可組態單元子陣列中的每個可組態單元產生其強制停止完成信號而向該強制停止控制器報告強制停止完成。
條項51.如條項50之可重組態處理器,還包括:介面代理,其經由介面鏈路耦合到執行運行時軟體的主機處理器;以及強制停止檢測器,其耦合到該介面代理以及耦合到該一或多個可組態單元子陣列的個別強制停止控制,並被組態成透過該介面代理從該運行時軟體接收強制停止啟動,並透過該些個別強制停止控制器和該強制停止檢測器之間的專用連接,向該些個別強制停止控制器中的一或多者提供強制停止激發。
條項52.如條項50之可重組態處理器,還包括介面代理,其經由介面鏈路耦合到執行運行時軟體的主機處理器;該強制停止控制器被組態成回應於從該互連拓樸接收到該強制停止完成的該報告,向該主機處理器發送中斷。
條項53.如條項50之可重組態處理器,該可組態單元子陣列包括主要可組態單元,其包括強制停止控制器和U個其他可組態單元,該主要可組態單元和該可組態單元子陣列中的N個其他可組態單元之各者具有FORCE_QUIT_DONE_IN和FORCE_QUIT_DONE_OUT;該互連拓樸包括:在該可組態單元子陣列中之各個其他可組態單元的邏輯,其回應於該其他可組態單元的個別FORCE_QUIT_DONE_IN和個別強制停止完成信號係生效的而使其個別FORCE_QUIT_DONE_OUT生效;從該主要可組態單元的該FORCE_QUIT_DONE_OUT至該N個其他可組態單元的其他可組態單元1的連接;在其他可組態單元N-1的個別FORCE_QUIT_DONE_OUT至其他可組態單元N的個別FORCE_QUIT_DONE_IN之間的菊鏈連接,其中2≤N≤U;以及從其他可組態單元U的該FORCE_QUIT_DONE_OUT到該主要可組態單元的該FORCE_QUIT_DONE_IN的連接。
條項集2
條項1.一種可重組態資料處理器,包括:一可組態單元陣列,該陣列包括複數個可組態單元子陣列,以及該複數個可組態單元子陣列中的可組態單元子陣列可被組態成分別執行不同的程式;以及強制停止控制器,其連接到該陣列,可被組態成停止在該複數個可組態單元子陣列中的特定可組態單元子陣列上執行特定程式並重置該特定可組態單元子陣列,同時該複數個可組態單元子陣列中的剩餘可組態單元子陣列繼續執行剩餘的程式。
條項2.如條項1之可重組態資料處理器,其中該強制停止控制器可進一步被組態成回應於強制停止命令以停止在該特定可組態單元子陣列上執行該特定程式並重置該特定可組態單元子陣列。
條項3.如條項2之可重組態資料處理器,其中該強制停止命令係回應於該陣列外部的外部事件而產生的。
條項4.如條項3之可重組態資料處理器,其中該強制停止命令係由運行於連接到該陣列的主機處理器上的運行時程式產生的。
條項5.如條項2之可重組態資料處理器,其中該強制停止命令係回應於該陣列內部的內部事件而產生的。
條項6.如條項5之可重組態資料處理器,其中該強制停止命令係由在該陣列中執行的程式產生的。
條項7.如條項2之可重組態資料處理器,其中該強制停止命令係回應於該特定可組態單元子陣列變成無反應而產生的。
條項8.如條項7之可重組態資料處理器,其中該特定可組態單元子陣列由於硬體錯誤而變得無反應。
條項9.如條項7之可重組態資料處理器,其中該特定可組態單元子陣列由於軟體錯誤而變得無反應。
條項10.如條項1之可重組態資料處理器,其中該強制停止控制器可進一步組態成使該特定可組態單元子陣列可用於執行新程式。
條項11.如條項10之可重組態資料處理器,其中該強制停止控制器可進一步組態成使該特定可組態單元子陣列可用於從運行時程式接收新命令。
條項12.如條項1之可重組態資料處理器,其中在該複數個可組態單元子陣列中的每個可組態單元子陣列具有複數個位址產生與合併單元(AGCU),其包括主AGCU。
條項13.如條項12之可重組態資料處理器,其中該特定可組態單元子陣列的特定主AGCU包括該強制停止控制器。
條項14.如條項13之可重組態資料處理器,其中該複數個可組態單元子陣列中的個別子陣列具有個別主AGCU,其包括個別強制停止控制器。
條項15.如條項1之可重組態資料處理器,其中該強制停止控制器可進一步組態成使特定可組態單元子陣列中的可組態單元清除其內部狀態。
條項16.如條項1之可重組態資料處理器,其中該強制停止控制器可進一步組態成使該些可組態單元恢復其信用計數器。
條項17.如條項1之可重組態資料處理器,其中該強制停止控制器可進一步組態成使該些可組態單元清空其輸入緩衝器和輸出緩衝器。
條項18.如條項13之可重組態資料處理器,其中該強制停止控制器可進一步組態成使該特定主AGCU在通訊資源(頂級網路(TLN))上完成未完成的交易,該通訊資源可組態成在該陣列的可組態互連(陣列級網路(ALN))和該陣列外的外部資料處理資源之間建立鏈接。
條項19.如條項13之可重組態資料處理器,其中該強制停止控制器可進一步組態成使該特定主AGCU清空其輸入緩衝器和輸出緩衝器。
條項20.一種電腦實現的方法,包括:在可重組態資料處理器上的複數個可組態單元子陣列的第一可組態單元子陣列上加載和執行第一程式;在該可重組態資料處理器上的該複數個可組態單元子陣列的第二可組態單元子陣列上加載和執行第二程式;在該可重組態資料處理器的介面代理處接收來自運行時程式的強制停止啟動,該強制停止啟動指示應在該第一可組態單元子陣列上啟動強制停止過程,而不影響在該第二可組態單元子陣列上該第二程式的執行;從該介面代理向該第一子陣列的強制停止控制器發送強制停止信號;以及回應於停止該第一程式之執行的該強制停止信號而重置該第一可組態單元子陣列中的可組態單元,同時繼續在該第二可組態單元子陣列上的該第二程式的執行。
其他注意事項
我們描述了支持強制停止的可重組態處理器的各種實施方式。
所公開的技術可以被實踐為系統、方法或製品。實施方式的一或多個特徵可以與基礎實施方式組合。不相互排斥的實施方式被教示為可組合的。實施方式的一或多個特徵可以與其他實施方式組合。本公開會週期性地提醒使用者這些選項。省略重複這些選項的敘述的一些實施方式不應被視為限制前面章節中教導的組合-這些敘述特此透過引用併入到以下每個實施方式中。
儘管已經描述了關於其特定實施方式的說明,但這些特定的實施方式僅是說明性的,而不是限制性的。本說明可以引用具體的結構實施方式和方法,並不旨在將技術限制於具體公開的實施方式和方法。可以使用其他特徵、元素、方法和實施方式來實踐技術。描述實施方式是為了說明本技術,而不是限制其範圍,該範圍係由請求項限定。本領域之普通技術人士將理解對上面說明的各種等效變化。
說明書(包括申請專利範圍、摘要和圖式)中公開的所有特徵以及公開的任何方法或過程中的所有步驟,可以以任何組合方式組合,除非組合中至少一些此類特徵及/或步驟是相互排斥的。除非另有明確說明,否則說明書(包括申請專利範圍、摘要和圖式)中公開的每個特徵可以由服務於相同、等效或類似目的的替代特徵取代。
儘管已經描述了關於其特定實施方式的說明,但這些特定實施方式僅是說明性的,而不是限制性的。例如,許多操作可以在系統單晶片(SoC)、特殊應用積體電路(ASIC)、可編程處理器,諸如現場可編程閘陣列(FPGA)或圖形處理單元(GPU)的可編程邏輯裝置中實現,避免了需要至少部分的專用硬體。實施方式可以是作為單一晶片、或作為將多個半導體晶片封裝在單一封裝中的多晶片模組(MCM)。所有這些變化和修改都應被視為在本公開技術的範圍內,本公開技術的性質係根據前述描述來確定。
技術的一或多個實施方式或其元素可以以電腦產品的形式實現,該電腦產品包括非暫時性電腦可讀取媒體,具有用於針對一或多個RDU執行任何指示方法步驟及/或任何組態檔案以執行高階程式的電腦可使用程式碼。此外,技術的一或多個實施方式或其元素可以以裝置的形式實現,該裝置包括記憶體和至少一個處理器,其耦合到該記憶體並可操作以執行示例性方法步驟,及/或可操作以基於組態檔案執行高階程式的RDU。此外,在另一態樣中,技術的一或多個實施方式或其元素可以以用於執行本文描述的一或多個方法步驟及/或執行本文描述的高階程式的手段的形式實現。此類手段可以包括(i)硬體模組;(ii)在一或多個硬體處理器上執行的軟體模組;(iii)用於組態可組態單元陣列的位元檔案;或(iv)前述項目的組合。
因此,雖然本文已經描述了特定的實施方式,但修改的範圍、各種改變和替換旨在前述公開中,並且應當理解的是,在某些情況下,在不背離所闡述的範圍和精神的情況下,將採用特定實施方式的一些特徵而無需相應地使用其他特徵。因此,可以進行許多修改以使特定情況或材料適應於所公開技術的基本範圍。
102:主機
104:記憶體
114:IO介面
116:記憶體匯流排
120:主機
122:鏈路
124:IO介面
126:TLN介面
128:陣列介面
130:可組態單元陣列
140:可重組態處理器
202:運行時程式
211~216:交換器
237:PCIe鏈路
238:PCIe鏈路
239:記憶體匯流排
257:P-Shim
258:P-Shim
259:D-Shim
277:PCIe介面
278:PCIe介面
279:記憶體介面
301:合併單元
302:位址產生器
303:互連
304:交換單元
305:互連
306:互連
307:可組態單元
308:組態儲存
502:運行時程式
612:位址空間
614:組態空間
622:暫存器
624:組態暫存器
630:值
634:位元
636:位元
642:強制停止偵測器
644:序列檢測器
702:強制停止位元序列
702a:函數標頭
702b:函數選擇
702c:函數引數
712:強制停止位元序列
712c:函數引數
722:強制停止位元序列
722c:函數引數
732:強制停止位元序列
732c:函數引數
802~808:PCIe鏈路
812:佈線
902,906,920,932:狀態
904,908,910~918,922~930:動作
1101:強制停止控制器
1102:強制停止邏輯
1210:輸入組態資料
1220:組態資料儲存
1221:線路
1222:線路
1230:輸出組態資料
1240:強制停止處理邏輯
1250:純量FIFO
1260:向量FIFO
1270:控制塊
1280:執行管線
1302:陣列級網路控制匯流排
1304:磚片元件控制塊
1312:暫存器
1314:AND閘
1316:程式加載完成輸出暫存器
1400~1404:狀態
將參考附圖說明該技術,其中:
[圖1]示出包括可重組態處理器、主機和記憶體的示例性系統。
[圖2]示出將兩個磚片連接到三個IO介面的可重組態處理器。
[圖3]示出包含在ALN中的可組態單元子陣列的示例性磚片。
[圖3A]示出交換可組態單元,其可以有8個介面。
[圖4]示出可組態單元陣列的四個子陣列(或磚片)。
[圖5]示出主機處理器和運行於其上的運行時程式。
[圖6]示出複數個P-Shim(PCIe介面代理)。
[圖7]示出特定於四個不同磚片之強制停止序列的格式。
[圖8]示出將強制停止命令發送給四個磚片之任一者的運行時程式。
[圖9]示出用於執行強制停止命令的MAGCU狀態機。
[圖10]示出用於執行強制停止命令的另一MAGCU狀態機。
[圖11]示出可組態單元的子陣列(或磚片)中的強制停止邏輯。
[圖12]示出包括強制停止邏輯的示例性可組態單元。
[圖13]示出可組態單元可用於驅動其程式加載完成輸出的邏輯。
[圖14]示出用於執行強制停止命令的可組態單元狀態機。
[圖15]示出強制停止逾時暫存器的格式。
[圖16]示出磚片狀態暫存器的格式。
[圖17]示出靜止控制暫存器的格式。
在圖式中,相似的參考標號可以表示功能相似的元件。圖式中所示的以及在下面的實施方式中所描述的系統和方法可以以多種不同的實施方式來安排和設計。圖式和實施方式均非旨在限制申請專利範圍的範圍。反之,它們僅代表所公開之技術的不同實施方式的範例。
202:運行時程式
802~808:PCIe鏈路
810:停止啟動
Claims (20)
- 一種可重組態處理器,包括: 積體電路基板上的可組態單元陣列,該陣列包括複數個可組態單元子陣列;以及 在該複數個子陣列中的特定子陣列上的強制停止控制器,可組態成接收強制停止命令,並產生重置該特定子陣列中的可組態單元的強制停止控制信號。
- 如請求項1之可重組態處理器,還包括介面代理,其耦合到該強制停止控制器並被組態成向該強制停止控制器發送該強制停止命令,其中該介面代理透過頂級網路在該陣列和介面匯流排之間傳輸資料,以及其中該介面匯流排經由介面鏈路連接到主機處理器。
- 如請求項2之可重組態處理器,其中該強制停止控制信號使該特定子陣列之包括該強制停止控制器的特定可組態單元完成該頂級網路上未完成的交易。
- 如請求項2之可重組態處理器,其中該介面代理進一步耦合到介面匯流排並被組態成接收由運行在主機處理器上的運行時程式寫入該介面匯流排之位址空間中的暫存器的強制停止訊息,並向該強制停止控制器發送該強制停止命令作為回應。
- 如請求項4之可重組態處理器,其中該暫存器位於該介面匯流排的組態位址空間中。
- 如請求項4之可重組態處理器,其中該強制停止訊息包括寫入該暫存器的特定於子陣列的強制停止位元序列。
- 如請求項6之可重組態處理器,其中該介面代理包括序列檢測器,其檢測來自該組態暫存器之該特定於子陣列的強制停止位元序列。
- 如請求項7之可重組態處理器,其中該介面代理產生該強制停止命令作為激發信號,以回應於該序列檢測器檢測到該特定於子陣列的強制停止位元序列。
- 如請求項8之可重組態處理器,其中該介面代理經由全局線路向該強制停止控制器發送該強制停止命令。
- 如請求項4之可重組態處理器,其中該強制停止訊息是遮罩。
- 如請求項4之可重組態處理器,其中該強制停止訊息是遮罩,其針對該複數個子陣列中的每個子陣列具有一位元。
- 如請求項1之可重組態處理器,其中該強制停止控制器可進一步組態成透過連接到該特定子陣列中的該些可組態單元的陣列級網路,向該特定子陣列中的該些可組態單元廣播該強制停止控制信號。
- 如請求項1之可重組態處理器,其中該些強制停止控制信號使該特定子陣列中的該些可組態單元重置其內部狀態。
- 如請求項1之可重組態處理器,其中該些強制停止控制信號使該特定子陣列中的該些可組態單元清空其輸入緩衝器和輸出緩衝器。
- 如請求項1之可重組態處理器,其中該特定子陣列中的至少一個可組態單元對來自主機處理器的通訊無反應。
- 一種處理系統,包括: 處理單元陣列; 耦合到該些處理單元的強制停止邏輯,每個強制停止邏輯可配置成: 接收強制停止控制信號,以及 回應於該強制停止控制信號而重置相關聯的處理單元;以及 該強制停止邏輯在該些處理單元之間以互連拓樸連接,使得每個強制停止邏輯可回應於接收到該強制停止控制信號進一步被組態成: 產生強制停止完成信號以指示完成該相關聯的處理單元的該重置,以及 一旦接收到來自該互連拓樸上前一個處理單元的強制停止邏輯的強制停止完成信號,在該互連拓樸上轉發該強制停止完成信號。
- 如請求項16之處理系統,還包括強制停止控制器,可組態成向該些處理單元廣播強制停止控制信號,以及從該互連拓樸上最後一個處理單元的強制停止邏輯接收強制停止完成信號。
- 如請求項16之處理系統,其中每個強制 停止邏輯進一步可配置成執行針對該相關聯的處理單元的強制停止過程,包括: 回應於接收到該強制停止控制信號,將該相關聯處理單元從當前狀態轉換成強制停止排空狀態; 當處於該強制停止排空狀態時: 使至該互連拓樸的該強制停止完成信號失效(de-assert);以及 啟動強制停止排空計數器; 當該強制停止排空計數器到期時,將該相關聯處理單元從該強制停止排空狀態轉換成強制停止完成狀態;以及 當處於該強制停止完成狀態時: 使至該互連拓樸的該強制停止完成信號生效(assert)以回應於來自該互連拓樸的輸入埠已生效。
- 如請求項16之處理系統,其中該互連拓樸包括菊鏈。
- 如請求項16之處理系統,該處理單元陣列中的每個處理單元具有FORCE_QUIT_DONE_IN輸入和FORCE_QUIT_DONE_OUT輸出,該FORCE_QUIT_DONE_OUT輸出僅在FORCE_QUIT_DONE_IN和指示該處理單元之該重置的該強制停止完成信號二者皆已生效時才生效。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163272557P | 2021-10-27 | 2021-10-27 | |
US63/272,557 | 2021-10-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202328931A true TW202328931A (zh) | 2023-07-16 |
Family
ID=86056771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111140888A TW202328931A (zh) | 2021-10-27 | 2022-10-27 | 用於可重組態處理器的強制停止 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20230127793A1 (zh) |
TW (1) | TW202328931A (zh) |
WO (1) | WO2023076521A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5251227A (en) * | 1989-08-01 | 1993-10-05 | Digital Equipment Corporation | Targeted resets in a data processor including a trace memory to store transactions |
US20120227045A1 (en) * | 2009-12-26 | 2012-09-06 | Knauth Laura A | Method, apparatus, and system for speculative execution event counter checkpointing and restoring |
US9582287B2 (en) * | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US10585873B2 (en) * | 2017-05-08 | 2020-03-10 | Sap Se | Atomic processing of compound database transactions that modify a metadata entity |
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 |
US11055141B2 (en) * | 2019-07-08 | 2021-07-06 | SambaNova Systems, Inc. | Quiesce reconfigurable data processor |
-
2022
- 2022-10-26 US US17/974,488 patent/US20230127793A1/en active Pending
- 2022-10-26 US US17/974,496 patent/US20230125149A1/en active Pending
- 2022-10-27 TW TW111140888A patent/TW202328931A/zh unknown
- 2022-10-27 WO PCT/US2022/048095 patent/WO2023076521A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
US20230125149A1 (en) | 2023-04-27 |
US20230127793A1 (en) | 2023-04-27 |
WO2023076521A1 (en) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6988040B2 (ja) | ヘテロジニアスコンピューティングのためのシステム、方法及び装置 | |
US8103910B2 (en) | Local rollback for fault-tolerance in parallel computing systems | |
US8832413B2 (en) | Processing system with interspersed processors and communication elements having improved wormhole routing | |
US7895260B2 (en) | Processing data access requests among a plurality of compute nodes | |
US11625283B2 (en) | Inter-processor execution of configuration files on reconfigurable processors using smart network interface controller (SmartNIC) buffers | |
JP7295104B2 (ja) | メモリ・ネットワーク・プロセッサ | |
TW202240384A (zh) | 可重組態處理器的儀器分析 | |
US11182264B1 (en) | Intra-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) | |
JP7164267B2 (ja) | ヘテロジニアスコンピューティングのためのシステム、方法及び装置 | |
US20220091657A1 (en) | Mechanism for performing distributed power management of a multi-gpu system | |
WO2008133979A2 (en) | System and method for processing data in pipeline of computers | |
US11487694B1 (en) | Hot-plug events in a pool of reconfigurable data flow resources | |
TW202328931A (zh) | 用於可重組態處理器的強制停止 | |
US20220224605A1 (en) | Simulating network flow control | |
Ly et al. | The challenges of using an embedded MPI for hardware-based processing nodes | |
US20230333879A1 (en) | System for the Remote Execution of Applications | |
US20240069770A1 (en) | Multiple contexts for a memory unit in a reconfigurable data processor | |
US20230251994A1 (en) | Fast Argument Load in a Reconfigurable Data Processor | |
US20230388373A1 (en) | Load Balancing System for the Execution of Applications on Reconfigurable Processors | |
US20230297527A1 (en) | Direct Access to Reconfigurable Processor Memory | |
US20230205585A1 (en) | Elevated Isolation of Reconfigurable Data Flow Resources in Cloud Computing | |
Becht et al. | IBM z14: Advancing the I/O storage and networking channel adapter | |
Sterling et al. | The “MIND” scalable PIM architecture | |
Ewo et al. | Hardware mpi-2 functions for multi-processing reconfigurable system on chip | |
CN117632256A (zh) | 用于处置多元件处理器中的断点的装置及方法 |