TW202032383A - 可重組態資料處理器的組態加載和卸載 - Google Patents

可重組態資料處理器的組態加載和卸載 Download PDF

Info

Publication number
TW202032383A
TW202032383A TW108142191A TW108142191A TW202032383A TW 202032383 A TW202032383 A TW 202032383A TW 108142191 A TW108142191 A TW 108142191A TW 108142191 A TW108142191 A TW 108142191A TW 202032383 A TW202032383 A TW 202032383A
Authority
TW
Taiwan
Prior art keywords
unit
configuration
configurable
files
file
Prior art date
Application number
TW108142191A
Other languages
English (en)
Other versions
TWI766211B (zh
Inventor
曼尼斯 夏
倫 西瓦拉瑪
馬克 盧特雷爾
大衛 傑克森
拉古 帕拉哈卡
蘇姆蒂 賈拉斯
格雷戈里 格羅霍斯
普拉莫德 娜塔拉雅
Original Assignee
美商聖巴諾瓦系統公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/197,826 external-priority patent/US10831507B2/en
Priority claimed from US16/198,086 external-priority patent/US11188497B2/en
Application filed by 美商聖巴諾瓦系統公司 filed Critical 美商聖巴諾瓦系統公司
Publication of TW202032383A publication Critical patent/TW202032383A/zh
Application granted granted Critical
Publication of TWI766211B publication Critical patent/TWI766211B/zh

Links

Images

Abstract

一種可重組態資料處理器包含一匯流排系統、及連接至該匯流排系統之一陣列的可組態單元,於該陣列中之可組態單元包括組態資料儲存器以儲存包含特定於對應的可組態單元之組態資料的複數個子檔案之單元檔案。於該複數個可組態單元中之可組態單元各包括用以執行一單元組態加載處理之邏輯,該單元組態加載處理包括經由該匯流排系統來接收特定於該可組態單元之一單元檔案的子檔案、及將所接收的子檔案加載至該可組態單元之組態儲存器內。連接至該匯流排系統之組態加載控制器,包括用以執行一陣列組態加載處理之邏輯,包括對於在該陣列中的複數個可組態單元分配 包含單元檔案的一組態檔案。

Description

可重組態資料處理器的組態加載和卸載
本技術有關可重組態架構的組態,具體言之,可被應用至粗粒(coarse-grain)可重組態架構之組態。
包括場可程式化閘極陣列(FPGA)之可重組態處理器可經組構以更有效率地或可能比使用通用處理器執行電腦程式被達成還快速地實現各種各樣的功能。所謂的粗粒可重組態架構(例如CGRA)正在發展中,其中於陣列中之可組態單元比典型的、更細粒的FPGA所使用的更複雜,且可賦能更快速或更有效率的各種各樣的類別之執行。舉例來說,CGRA已被提出其可賦能用於機器學習與人工智慧工作負載之能源效率的加速器之實現。見Prabhakar等人所著的“Plasticine: A Reconfigurable Architecture for Parallel Patterns,” ISCA ’17, June 24-28, 2017, Toronto, ON, Canada。
可重組態處理器之組態涉及組態描述之編譯以產生組態檔案(有時參照為位元流或位元檔案)、及於處理器上將組態檔案分配至可組態單元。要開始一處理,組態檔案必須對於該處理被加載。要改變一處理,組態檔案必須被新的組態檔案取代。
為了分配與加載組態檔案之程序與支持結構會很複雜,且程序之執行會很耗時。
為了最大化操作效率,且能在可重組態處理器上調換程式,需要一種有效率地加載組態狀態及儲存組態與程式狀態之手段。
說明一種技術,其賦能對於粗粒可重組態陣列處理器(其含有被以柵(grid)、方塊(tile)狀設置之可程式化元件及其他類型的可重組態處理器)的組態與控制狀態之有效率的加載及卸載。
此處所述之技術提供從儲存於記憶體中之經格式化的組態檔案加載組態資料及經由並聯與串聯技術的組合被傳送至可重組態處理器之能力。同樣的,此處所述之技術提供卸載程式控制及資料狀態至被類似地格式化的卸載組態檔案內之有效率的手段。綜上所述,加載與卸載技術可支援協定以快速地調換程式進出可重組態處理器以賦能分時(time-sharing)與其他虛擬化技術。
組態與重組態程序及結構於此被說明可使用於可重組態處理器,其包含匯流排系統、及連接至匯流排系統之一或多個陣列的可組態單元。於一或多個陣列中之可組態單元包括組態資料儲存器(其使用例如閂鎖之序列鏈來實現)以儲存組態資料(於此參照為單元檔案)。特定於可組態單元之單元檔案可包含組態資料之複數個子檔案。於此處所述之範例中,子檔案由具有適於使用匯流排系統有效的分配之資料的「群集(chunk)」所組成。
於該複數個可組態單元中之可組態單元可各包括用以執行一單元組態加載處理之邏輯,該單元組態加載處理包括經由該匯流排系統來接收特定於該可組態單元之一單元檔案的子檔案、及將所接收的子檔案加載至該可組態單元之組態儲存器內。於一些實施例中,於該複數個可組態單元中之可組態單元在執行期間在組態亦被使用於該組態加載處理中之後使用於該匯流排系統中之路由。
組態加載控制器被描述包括用以執行陣列組態加載處理之邏輯。陣列組態加載處理包括對於在該陣列中的複數個可組態單元分配包含單元檔案的一組態檔案以實現一機器。
於該技術之一個觀點中,單元檔案可被組織以包含複數個排序過的子檔案。於一些實施例中,特定於不同的可組態單元之單元檔案可具有不同數量之排序過的子檔案。用於一陣列的可組態單元之組態檔案被設置使得單元檔案之子檔案與對於其他單元檔案相同次序之其他子檔案交錯、及被設置使得於組態檔案中的子檔案之位置暗示於子檔案之陣列中的可組態單元及其於特定於可組態單元之單元檔案中的次序。
此處所述之陣列組態加載處理的範例藉由以N個回合(回合R(i),i從0至N-1)之分配序列來發送子檔案至於陣列中之複數個可組態單元而執行。於各回合R(i)中,該處理經由匯流排系統將一個次序(i)的子檔案傳送至具有包括最多(i+1)個子檔案之單元檔案的可組態單元。
於該複數個可組態單元中之可組態單元中的該等組態資料儲存器包含序列鏈,且該單元組態加載處理可於一個匯流排週期中於一個回合的分配序列中從該匯流排系統接收所有或部份的特定於該可組態單元之該單元檔案的一第一子檔案、及在於下一個回合的分配序列中接收一第二子檔案之前在隨後的匯流排週期期間開始將所接收的第一子檔案推入該序列鏈內、及於一稍後的匯流排週期中於該下一個回合的分配序列中從該匯流排系統接收該第二子檔案、及在將稍早所接收的子檔案推入該序列鏈內之後開始將所接收的第二子檔案推入該序列鏈內。
於某些回合的分配序列中,於該複數個排序過的子檔案中之該第二子檔案被該可組態單元接收之前,該第一子檔案於該可組態單元中被該單元組態加載處理消耗。
該陣列可包括多於一個類型的可組態單元,且用於不同類型的可組態單元之該等單元檔案包括不同數量的組態資料之子檔案。舉例來說,用於一第一類型的可組態單元之該等單元檔案包括Z1群集,且用於一第二類型的可組態單元之該等單元檔案包括Z2群集,其中Z1小於Z2。該陣列組態加載處理可包括擷取包括用於所有將於回合R(i)中被分配的第一類型與第二類型的可組態單元之該等單元檔案的子檔案(i)之該組態檔案的片段,其中(i)從0至Z1-1,及接著擷取包括用於所有將於回合R(i)中被分配的第二類型的可組態單元之該等單元檔案的子檔案(i)之該組態檔案的片段,其中(i)從Z1至Z2-1。此協定可被延伸至任何數量的類型之具有不同數量的子檔案於其單元檔案中之可組態單元。
於啟始該陣列組態加載處理之一項技術中,識別該組態檔案於記憶體中之位置的組態加載命令可從一主處理被接收、及因應該命令,該處理產生一或多個記憶體存取請求。當所請求的組態檔案之部份返回時,分配序列可被執行。
複數個單元檔案之檔案可依符合該分配序列的交錯方式被設置於組態檔案中。組態檔案之此設置賦能組態加載處理以暗示可組態單元、及於各子檔案之複數個排序過的子檔案中之位置(藉由子檔案於組態檔案中之位置)。陣列組態加載處理可包括基於該等子檔案於該組態檔案中之位置將該等子檔案路由至可組態單元。
藉由陣列組態加載處理來接收組態資料之複數個可組態單元可包括於該陣列之可組態單元中之所有可組態單元。於被組態檔案實現的機器沒有利用所有的可組態單元之例子中,用於一或多個未使用的可組態單元之單元檔案可實現無操作組態。同樣的,陣列組態加載處理可被組構使得藉由陣列組態加載處理來接收組態資料之複數個可組態單元包括少於於該陣列之可組態單元中之所有的可組態單元。
於此處所述之一範例中,於該陣列的可組態單元中之可組態單元包括個別的以在該陣列組態加載邏輯處開始與結束之菊鍊連接的加載完成狀態邏輯。於確認組態檔案的使用菊鍊之成功的加載之程序中,該陣列組態加載邏輯在該組態檔案被分配之後於該菊鍊上轉送組態加載完成訊號,且在該陣列中之各可組態單元中,當來自該鏈之一先前的成員之該組態加載完成訊號被接收且其自己的單元檔案之加載被完成時,該組態加載完成狀態邏輯於該菊鍊上轉送該組態加載完成訊號。
匯流排系統係於此說明,其支援複數個陣列之可組態單元,其中各陣列可被參照為方塊(tile)。所述之匯流排系統包括一頂層網路與一陣列層網路,該頂層網路係連接至一外部資料介面(例如一或多個PCIE或DDR類型介面)及至各方塊之一陣列介面,且該陣列層網路係連接至對應的方塊之陣列介面及至該陣列的可組態單元中之該等可組態單元。該陣列組態加載處理可包括從一主處理接收識別該組態檔案於記憶體中之位置的組態加載命令、及因應該命令經由該頂層網路而產生一或多個記憶體存取請求以透過該外部資料介面來擷取該組態檔案。該陣列組態加載處理可使用於該組態檔案中之該等子檔案的位置所暗示之位址將子檔案經由該陣列層網路路由至該等可組態單元。
組態卸載控制器被說明包括用以執行陣列組態卸載處理之邏輯,該陣列組態卸載處理包括分配一卸載命令至在該陣列中之複數個可組態單元以卸載特定於對應的可組態單元之該等單元檔案,該等單元檔案各包含複數個排序過的子檔案、在該組態卸載控制器處接收來自該陣列的可組態單元之子檔案。一卸載組態檔案係根據該子檔案為其之一部分的該單元檔案之該可組態單元及於該單元檔案中之該子檔案之次序藉由設置所接收的子檔案於記憶體中來組合。組態卸載檔案之結構可與以上所述之組態檔案的結構相同。於該複數個可組態單元中之可組態單元可包括用以執行一單元組態卸載處理之邏輯,該單元組態卸載處理包括從該可組態單元之該組態儲存器卸載該等子檔案及經由該匯流排系統(例如經由陣列層網路)將特定於該可組態單元的一單元檔案之子檔案傳輸至該組態卸載控制器。經卸載的子檔案不需要被組態卸載控制器以任何特定次序接收。組態卸載控制器接著透過匯流排系統(例如經由頂層網路)將單元子檔案傳輸至記憶體。
用以組態可重組態資料處理器之方法亦被提供。
此處所述之技術的其他態樣與優點可見於圖式、及其後之詳細說明、及申請專利發明的檢閱。
以下說明將典型地參照特定的結構實施例與方法。應了解的是,並沒有要將技術限制至具體揭露的實施例與方法,取代的是,該技術可使用其他特徵、元件、方法、及實施例來實行。較佳實施例被描述以顯示本技術,而沒有限制其範疇,其為申請專利範圍所界定。所屬技術領域中具有通常知識者將於以下說明中了解到各種各樣的等效變化。
第1圖為顯示包括主機120、記憶體140、及可重組態資料處理器110之系統的系統圖。如於第1圖之範例中所示,可重組態資料處理器110包括可組態單元之陣列190及組態加載/卸載控制器195。如此處所使用之用語「組態加載/卸載控制器(configuration load/unload controller)」參照組態加載控制器與組態卸載控制器之結合。組態加載控制器與組態卸載控制器可使用分開的邏輯與資料路徑來源被實現、或當適合特定實施例時可使用共用的邏輯與資料路徑來源被實現。於一些實施例中,系統可僅包括此處所述之類型的組態加載控制器。於一些實施例中,系統可僅包括此處所述之類型的組態卸載控制器。
處理器110包括連接至主機120之外部I/O介面130、及連接至記憶體140之外部I/O介面150。I/O介面130、150經由匯流排系統115連接至可組態單元之陣列190及組態加載/卸載控制器195。匯流排系統115可具有運送一個群集的資料之匯流排寬度,於此範例中其可為128個位元(大致而言,本說明中所參照的128個位元可被考量為範例群集大小)。通常,一群集的組態檔案可具有數量N個位元的資料,且匯流排系統於一個匯流排週期中可被組構以傳送N個位元的資料,其中N為任何實用的匯流排寬度。被分配於分配序列中之子檔案可由一個群集、或其他量的資料組成(當適合特定實施例時)。程序係使用由各一個群集的資料組成的子檔案來說明。當然,技術可被組構以分配不同的大小之子檔案,包括可由被分配於例如兩個匯流排週期中之兩個群集所組成的子檔案。
要組態可組態單元之陣列190中之可組態單元與組態檔案,主機120可經由於可重組態資料處理器110中之介面130、匯流排系統115、及介面150將組態檔案發送至記憶體140。組態檔案可用許多方式被加載,包括在可組態處理器110的外部之資料路徑(當適合特定架構時)。組態檔案可經由記憶體介面150從記憶體140被擷取。群集的組態檔案可接著依此處所述之分配序列被發送至可重組態資料處理器110中的可組態單元之陣列190中的可組態單元。
外部時脈產生器170或其他時脈訊號來源可將一時脈訊號175或複數個時脈訊號提供至在可重組態資料處理器110中之元件,包括可組態單元之陣列190、及匯流排系統115、及外部資料I/O介面。
第2圖為粗粒可重組態架構(Coarse Grain Reconfigurable Architecture;CGRA)處理器之組件的簡化方塊圖。於此範例中,CGRA處理器具有兩個方塊(Tile1、Tile2)。方塊包含連接至匯流排系統的可組態單元之陣列,於此範例中包括陣列層網路。匯流排系統包括將方塊連接至外部I/O介面205(或任何數量的介面)之頂層網路。於其他實施例中,不同的匯流排系統組態可被利用。於各方塊中之可組態單元於此範例中為於陣列層網路上之節點。
兩個方塊各具有四個位址產生及合併單元(Address Generation and Coalescing Unit;AGCU)(例如MAGCU1、AGCU12、AGCU13、AGCU14)。AGCU為頂層網路上之節點與陣列層網路上之節點,且包括用以將資料於各方塊中在頂層網路上之節點與陣列層網路上之節點之間路由的資源。
於此範例中,在頂層網路上之節點包括一或多個外部I/O,包括介面205。到外部裝置之介面包括用以將資料在頂層網路上之節點與外部裝置之間路由的資源,例如連接至該介面之高容量記憶體、主處理器、其他CGRA處理器、FPGA裝置等等。
於方塊中之一個AGCU於此範例中被組構為主AGCU,其包括用於該方塊之陣列組態加載/卸載控制器。於其他實施例中,多於一個陣列組態加載/卸載控制器可被實現且一個陣列組態加載/卸載控制器可藉由在多於一個的AGCU之間分配的邏輯被實現。
MAGCU1包括用於Tile1之組態加載/卸載控制器,且MAGCU2包括用於Tile2之組態加載/卸載控制器。於其他實施例中,組態加載/卸載控制器可被設計用於多於一個的方塊之加載與卸載組態。於其他實施例中,多於一個的組態控制器可被設計用於單一個方塊的組態。同樣的,組態加載/卸載控制器可被實現於系統的其他部份中,包括頂層網路與陣列層網路或複數個網路上之獨立節點。
頂層網路係使用連接至彼此以及至其他在頂層網路上之節點(包括AGCU、及I/O介面205)的頂層切換器(211-216)來構成。頂層網路包括連接頂層切換器之鏈結(例如L11、L12、L21、L22)。資料在鏈結上之頂層切換器之間的封包中移動、及從切換器移動至於連接至切換器之網路上的節點。舉例來說,頂層切換器211與212係藉由鏈結L11來連接、頂層切換器214與215係藉由鏈結L12來連接、頂層切換器211與214係藉由鏈結L13來連接、及頂層切換器212與213係藉由鏈結L21來連接。鏈結可包括一或多個匯流排與支援控制線,包括舉例來說群集寬(chunk-wide)匯流排(向量匯流排)。舉例來說,頂層網路可包括資料、可操作以協調資料之以類似AXI相容協定的方式之傳送的請求與回應通道。見AMBA® AXI and ACE Protocol Specification, ARM, 2017。
頂層切換器可被連接至AGCU。舉例來說,頂層切換器211、212、214及215分別連接至方塊Tile1中之MAGCU1、AGCU12、AGCU13及AGCU14。頂層切換器212、213、215及216分別連接至方塊Tile2中之MAGCU2、AGCU22、AGCU23及AGCU24。
頂層切換器可被連接至一或多個外部I/O介面(例如介面205)。
第3圖為方塊及可使用於第2圖之組態中的陣列層網路之簡化圖式,其中,在該陣列中之可組態單元為在陣列層網路上之節點。
於此範例中,可組態單元之陣列300包括複數個類型的可組態單元。該等類型的可組態單元於此範例中包括型樣計算單元(Pattern Compute Unit;PCU)、型樣記憶體單元(Pattern Memory Unit;PMU)、切換單元(S)、及位址產生及合併單元(各包括兩個位址產生器AG及共用CU)。這些類型的可組態單元之功能的範例見Prabhakar等人所著的“Plasticine: A Reconfigurable Architecture For Parallel Patterns”, ISCA ’17, June 24-28, 2017, Toronto, ON, Canada,其全部併入於此作為參考。這些可組態單元中之各者含有包含表示要運行程式之設定或序列的一組暫存器或正反器之組態儲存器,且可包括巢套迴路之數量、各迴路迭代器之限制、於各階段被執行的指令、運算元之來源、及用於輸入與輸出介面之網路參數。
此外,這些可組態單元中之各者含有包含可使用以追蹤於巢套迴路或其他中之進展的狀態之一組暫存器或正反器之組態儲存器。組態檔案含有表示執行程式之各組件的初始組態或開始狀態之位元流。此位元流被參照為位元檔案。程式加載是基於位元檔案之內容來設定於該陣列的可組態單元之中的組態儲存器以允許所有的組件執行程式(亦即,機器)之程序。程式加載亦可需要所有PMU記憶體之加載。
陣列層網路包括與陣列中之可組態單元互連的鏈結。於陣列層網路中之鏈結包括一或多個(且於此情形中,三個)種類的實體匯流排:群集級(chunk-level)向量匯流排(例如128個位元的資料)、字元級(word-level)純量匯流排(例如32個位元的資料)、及多位元級(multiple bit-level)控制匯流排。例如,在切換單元311與312之間的互連321包括具有128個位元的向量匯流排寬度之向量匯流排互連、具有32個位元的純量匯流排寬度之純量匯流排互連、及控制匯流排互連。
三種類型的實體匯流排的不同之處在於資料被傳送的詳盡性(granularity)。於一個實施例中,向量匯流排可運送包括16個位元組(=128個位元)的資料作為其酬載之群集。純量匯流排可具有32個位元的酬載、及運送純量運算元或控制資訊。控制匯流排可運送控制交握,例如符記(token)及其他訊號。向量與純量匯流排可被封包切換,包括表示各封包之目的地的標頭及其他資訊,例如序列號碼,其可被使用以當封包沒有依照次序被接收時將檔案再組合。各封包標頭可含有目的地識別符,其識別目的地切換單元之地理座標(例如陣列中之列與行)、及介面識別符,其識別被使用以抵達目的地單元之目的地切換器上的介面(例如北、南、東、西等)。控制網路可基於舉例來說於裝置中之時序電路而被電路切換。組態加載/卸載控制器可產生用於128個位元之各群集的組態資料之標頭。標頭於標頭匯流排被傳輸至該陣列之可組態單元中的各可組態單元。
於一範例中,128個位元之群集的資料於於向量匯流排上被傳輸,其提供該群集如同向量輸入至可組態單元。向量匯流排可包括128個酬載線、及一組標頭線。標頭可包括用於各群集之序列ID,其可包括: • 用來表示該群集是否為高速暫存記憶體(scratchpad memory)或組態儲存器資料之位元。 • 形成群集號碼之位元。 • 表示行識別符之位元。 • 表示列識別符之位元。 • 表示組件識別符之位元。
對於加載操作,組態加載控制器可將數量N的群集按照次序從N-1到0發送至可組態單元。於此範例中,6個群集以最大有效位元第一次序按照群集5->群集4->群集3->群集2->群集1->群集0被發送。(應注意的是,此最大有效位元第一次序導致群集5從陣列組態加載控制器於回合0的分配序列中被分配。)對於卸載操作,組態卸載控制器可將卸載資料的次序寫入至記憶體。對於加載與卸載操作兩者,於可組態單元中之組態資料儲存器中的組態序列鏈中之轉移係從最小有效位元(least-significant-bit;LSB)至最大有效位元(most-significant-bit;MSB)、或先MSB。
第3A圖顯示連接於陣列層網路中之元件的切換單元之範例。如於第3A圖之範例中,切換單元可具有8個介面。切換單元之北、南、東、及西介面被使用於在切換單元之間的連接。切換單元之東北、東南、西北及西南介面各被使用以形成至PCU或PMU例子之連接。各方塊象限中之一組2個切換單元具有至位址產生及合併單元(AGCU)之連接,其包括多個位址產生(AG)單元及連接至多個位址產生單元之合併單元(coalescing unit;CU)。合併單元(CU)作出AG之間的仲裁及處理記憶體請求。切換單元的8個介面中之各者可包括向量介面、純量介面、及控制介面以跟向量網路、純量網路、及控制網路通訊。
在機器組態之後之執行期間,資料可經由一或多個單元切換器及在單元切換器之間的一或多個鏈結被發送至使用陣列層網路上之一或多個切換單元的向量匯流排與向量介面之可組態單元。
於此處所述之實施例中,在方塊之組態之前,資料可經由一或多個單元切換器及在單元切換器之間的一或多個鏈結從使用相同的向量匯流排之組態加載控制器發送至使用陣列層網路上之一或多個切換單元的向量匯流排與向量介面之可組態單元。例如,特定於可組態單元PMU 341之於單元檔案中之群集的組態資料可經由在組態加載/卸載控制器301與切換單元311之西(West;W)向量介面之間的鏈結320、切換單元311、切換單元311之東南(Southeast;SE)向量介面與PMU 341之間的鏈結331而從組態加載/卸載控制器301被發送至PMU 341。
於此範例中,AGCU之其中一者被組構為主AGCU,其包括組態加載/卸載控制器(例如301)。主AGCU實現暫存器,而透過暫存器,主機(120,第1圖)可經由匯流排系統將命令發送至主AGCU。主AGCU控制於方塊中於可組態單元之陣列上的操作且實現程式控制狀態機以基於其從主機所接收之命令透過寫入至暫存器來追蹤方塊之狀態。對於每次的狀態轉變,主AGCU透過菊鍊命令匯流排(第4圖)發出命令至方塊上之所有組件。命令包括用以將於方塊中的可組態單元之陣列中的可組態單元重置之程式重置命令、以及用以將組態檔案加載至可組態單元之程式加載命令。
於主AGCU中之組態加載控制器負責從記憶體讀取組態檔案及將組態資料發送至方塊之每個可組態單元。主AGCU可從記憶體以較佳地頂層網路之最大總處理量(throughput)讀取組態檔案。從記憶體讀取之資料根據此處所述之分配序列透過於陣列層網路上之向量介面被主AGCU傳輸至對應的可組態單元。
於一個實施例中,有一種方式可減少在可組態單元內之線路需求,保持待於組態加載處理中被加載或於組態卸載處理中被卸載之單元檔案於一組件中的組態與狀態暫存器係以序列鏈連接,且可透過透過序列鏈來轉移位元之程序被加載。於一些實施例中,可有多於一個的序列鏈被並聯或串聯設置。當可組態單元於一個匯流排週期中從主AGCU接收舉例來說128個位元的組態資料時,可組態單元透過其序列鏈以每週期1個位元的比率轉移此資料,轉移週期可用與匯流排週期相同的比率來運行。可組態單元會需要128個轉移週期以加載128個組態位元連同透過向量介面所接收的128個位元之資料。128個位元組態資料參照為群集。可組態單元可要求多個群集的資料加載所有其組態位元。範例移位暫存器結構係顯示於第6圖中。
可組態單元透過多個記憶體介面(150,第1圖)介接記憶體。記憶體介面中之各者可使用數個AGCU被存取。各AGCU含有可重組態純量資料路徑以產生用於晶片外記憶體(off-chip memory)之請求。各AGCU含有用以組織資料之先進先出緩衝器(first-in-first-out buffers;FIFO)以緩衝出去的命令、資料、及從晶片外記憶體進來的回應。
AGCU中之位址產生器AG可產生稀疏的或密集的記憶體命令。密集的請求可被使用以大量傳送相鄰的晶片外記憶體區域、且可被使用以從可組態單元之陣列中的可組態單元讀取群集的資料或將群集的資料寫入至可組態單元之陣列中的可組態單元。密集的請求可藉由AGCU中之合併單元(CU)被轉換至多個晶片外記憶體叢發(burst)請求。稀疏的請求可使位址之流(stream)排入佇列(enqueue)至合併單元內。合併單元使用合併快取以維持於所發出的晶片外記憶體請求上之元資料及結合屬於相同的晶片外記憶體請求之稀疏的位址以將所發出的晶片外記憶體請求之數量最小化。
第4圖為顯示範例可組態單元400(例如型樣計算單元(PCU))之方塊圖。於可組態單元之陣列中的可組態單元包括組態資料儲存器420(例如序列鏈)以儲存單元檔案,包含特定於對應的可組態單元之複數個群集(或其他大小的子檔案)的組態資料。於可組態單元之陣列中的可組態單元各包括經由線路422連接至組態資料儲存器420之單元組態加載邏輯440,以執行單元組態加載處理。單元組態加載處理包括經由匯流排系統(例如向量輸入)接收特定於可組態單元之群集的單元檔案、及加載所接收的群集至可組態單元之組態資料儲存器420中。單元組態加載處理將參照第5圖進一步說明。
於此範例中在複數個可組態單元中之可組態單元中的組態資料儲存器包含閂鎖之序列鏈,其中閂鎖儲存控制於可組態單元中之資源的組態之位元。於組態資料儲存器中之序列鏈可包括用於組態資料之移位暫存器鏈及用於狀態資訊與串聯連接的計數器值之第二移位暫存器鏈。組態儲存器將參照第6圖進一步說明。
可組態單元可介接純量、向量、及控制匯流排,使用三個對應的輸入與輸出(IO)之組:純量輸入/輸出、向量輸入/輸出、及控制輸入/輸出。純量IO可被使用以與單一字元的資料(例如32個位元)通訊。向量IO可被使用以與群集的資料(例如128個位元)通訊,在例如於單元組態加載處理中接收組態資料、及在操作期間在組態之後從長管線的一邊到另一邊多個PCU之間傳輸與接收資料的情形中。控制IO可被使用以與控制訊號通訊,例如可組態單元之執行的開始或結束。控制輸入被控制區塊470接收,且控制輸出被控制區塊470提供。
各向量輸入使用於向量FIFO區塊460中之向量FIFO來緩衝,其可包括一或多個向量FIFO。各純量輸入使用純量FIFO 450來緩衝。使用輸入FIFO解耦接資料生產者與消費者之間的時序、及簡化可組態單元間之控制邏輯,此係藉由使其強健以輸入延遲錯配。
輸入組態資料410可被提供至向量FIFO作為向量輸入,接著被傳送至組態資料儲存器420。輸出組態資料430可使用向量輸出從組態資料儲存器420被卸載。
CGRA使用菊鍊完成匯流排以表示何時加載/卸載命令已被完成。主AGCU透過菊鍊命令匯流排將程式加載與卸載命令傳輸至可組態單元之陣列中的可組態單元(以從S0轉變至S1,第5圖)。如第4圖之範例所示,菊鍊完成匯流排491與菊鍊命令匯流排492被連接至菊鍊邏輯493,其與單元組態加載邏輯440通訊。菊鍊邏輯493可包括加載完成狀態邏輯,如以下所說明。菊鍊完成匯流排將進一步說明如下。用於命令與完成匯流排之其他拓樸明顯為可能的,但未於此說明。
可組態單元包括於區塊480中之多個可重組態資料路徑。於可組態單元中之資料路徑可被組織為多階段(Stage 1 … Stage N)、可重組態單一指令多個資料(Single Instruction, Multiple Data;SIMD)管線。被推入至可組態單元中的組態序列鏈中之群集的資料包括用於可組態單元中之各資料路徑的各階段之組態資料。組態資料儲存器420中之組態序列鏈經由線路421連接至區塊480中之多個資料路徑。
連同被使用於PCU中之匯流排介面,型樣記憶體單元(例如PMU)可含有與用於位址計算的可重組態純量資料路徑耦接之高速暫存記憶體。PMU可被使用以在整個可重組態單元之陣列分配晶片上(on-chip)記憶體。於一個實施例中,PMU中的記憶體內之位址計算被執行於PMU資料路徑上,同時核心計算於PCU內被執行。
第5圖顯示狀態機的一個範例,其可被使用以控制可組態單元中之單元組態加載處理。通常,單元組態加載處理在一個匯流排週期中從匯流排系統接收特定於可組態單元之單元檔案的第一群集(或子檔案)、在隨後的轉移週期期間開始將所接收的第一群集推入至序列鏈內,其在第二群集的單元檔案被接收之前以與匯流排週期相同的比率來發生。一旦於稍後的匯流排週期中從匯流排系統接收特定於可組態單元之第二群集的單元檔案,程序在將稍早所接收的群集推入序列鏈內之後開始將所接收的第二群集推入至序列鏈內。於某些或所有回合的組態加載處理中,於複數個排序過的群集中之第二群集(群集的單元檔案之次序的下一個)被可組態單元接收之前,第一群集可被單元組態加載處理於可組態單元中消耗。
第5圖之狀態機包括六個狀態S0至S5。於狀態S0(閒置),單元組態加載處理等待來自主AGCU中之組態加載/卸載控制器的組態加載/卸載命令。組態加載/卸載控制器負責組態資料從/至(from/to)晶片外記憶體(140,第1圖)及至/從(to/from)可組態單元之陣列(190,第1圖)之加載與卸載。當加載命令在組態加載/卸載控制器處被接收時,單元組態加載處理進入狀態S1。
於狀態S1(等待靜止),於多個資料路徑中之功能性擺動被去能使得功能性擺動沒有循環,而純量輸出、向量輸出及控制輸出被關閉使得輸出沒有驅動任何加載。若加載命令已被接收,則單元組態加載處理進入狀態S2。當卸載命令被接收時,單元組態加載處理進入狀態S4。
於狀態S2(等待輸入有效(valid)),單元組態加載處理等待輸入FIFO(610,第6圖)變成有效的。當輸入FIFO變成有效的時,輸入FIFO已經由匯流排系統接收組態檔案之群集的組態資料。例如,群集的組態資料可包括128個位元的加載資料,其於匯流排系統之向量網路上被接收且向量網路具有128個位元的向量匯流排寬度。當輸入FIFO變成有效的時,單元組態加載處理進入狀態S3。
於狀態S3(加載轉移),128個位元之群集的組態資料首先於一個時脈週期中從輸入FIFO被退出佇列(de-queued),然後128個位元之群集的組態資料於128個時脈週期中被轉移至輸入移位暫存器(620,第6圖)。輸入移位暫存器可具有如群集的組態資料之相同的長度(例如128個位元),且其花費相同數量的移位器時脈週期(例如128)以將群集的組態資料轉移至輸入移位暫存器內作為群集的組態資料之長度。如上所述,於一些實施例中,移位器時脈與匯流排時脈(或匯流排週期)可用相同比率運行。
於可組態單元中之組態資料儲存器包含組態序列鏈(630、640,第6圖),其可被組構為FIFO鏈,以儲存包含特定於可組態單元之複數個群集的組態資料之單元檔案。複數個群集的組態資料包括第一群集的組態資料及最後群集的組態資料。於輸入移位暫存器中之群集的組態資料在隨後的時脈週期中進一步被序列地轉移至組態資料儲存器內。組態資料儲存器將參照第6圖進一步說明。
在特定於可組態單元之第一群集的單元檔案於狀態S3被轉移至輸入移位暫存器內之後,單元組態加載處理決定第一群集的組態資料是否為特定於可組態單元之最後群集的組態資料。若是,則對於可組態單元之單元檔案的加載係完成,且單元組態加載處理進入狀態S0。若否,則單元組態加載處理進入狀態S2,且等待輸入FIFO對於特定於可組態單元之第二群集的組態資料變成有效的。
當卸載命令於狀態S1被接收時,單元組態加載處理進入狀態S4。
於狀態S4(卸載轉移),來自組態資料儲存器之群集的組態資料被轉移至輸出移位暫存器(650,第6圖)內。群集的組態資料可包括128個位元的卸載資料。輸出移位暫存器可具有如群集的組態資料之相同的長度(例如128),且其花費相同數量的移位器時脈週期(例如128)以將群集的組態資料從組態資料儲存器轉移至輸出FIFO內作為群集的組態資料之長度。當群集的組態資料被轉移至輸出移位暫存器內時,單元組態加載處理進入狀態S5(等待輸出有效)。
於狀態S5(等待輸出有效),單元組態加載處理等待輸出FIFO(660,第6圖)變成有效的。當輸出FIFO變成有效的時,來自輸出移位暫存器的具有128個位元之群集的組態資料於一個時脈週期中被插入至輸出FIFO內。於輸出FIFO中之群集的組態資料接著可被發送至匯流排系統(第3圖)。
在第一群集的組態資料於狀態S5被轉移至輸出FIFO內之後,單元組態加載處理決定第一群集的組態資料是否為組態資料儲存器中之最後群集的組態資料。若是,則對於可組態單元之組態資料的卸載係完成,且單元組態加載處理進入狀態S0。若否,則單元組態加載處理進入狀態S4,且來自組態資料儲存器之第二群集的組態資料被序列地轉移至輸出移位暫存器內。
第6圖為可組態單元中之組態儲存器的邏輯表示。於此實施例中,於可組態單元中之組態資料儲存器(420,第4圖)包含組態序列鏈,包括第一移位暫存器鏈630與第二移位暫存器鏈640。第一移位暫存器鏈630包括一組暫存器或閂鎖。第二移位暫存器鏈640包括另一組暫存器或閂鎖(正反器)。於此實施例中,第一移位暫存器鏈與第二移位暫存器鏈係串聯連接以形成單一鏈。
組態檔案包括用於在可組態單元之陣列中的複數個可組態單元中之各可組態單元之複數個群集的組態資料。群集的組態資料代表個別的可組態單元之初始組態、或開始狀態。於此系統中之組態加載操作為設定於可組態單元之陣列中的組態資料之單元檔案以允許所有可組態單元執行程式的程序。
於第一移位暫存器鏈630中之該組暫存器可代表運行程式之設定或序列,包括含有暫存器之可組態單元的操作之定義。這些暫存器可記錄(register)巢套迴路的數量、各迴路迭代器的限制、對於各階段執行的指令、運算元的來源、及用於輸入與輸出介面的網路參數。於第二移位暫存器鏈中的該組暫存器可含有有關週期地被加載於可組態單元中之程式的運行狀態之資料。
如於第6圖之範例中所示,第一移位暫存器鏈630與第二移位暫存器鏈640被串聯連接,使得第一移位暫存器鏈之最大有效位元(MSB)被連接至第二移位暫存器鏈之最小有效位元(LSB)。加載訊號或卸載訊號可作用為耦接至第一移位暫存器鏈之LSB與第二移位暫存器鏈之LSB的轉移賦能訊號,以控制於第一移位暫存器鏈與第二移位暫存器鏈上之加載/卸載操作。輸入FIFO 610經由選擇器670耦接至輸入移位暫存器620。當加載訊號為活躍的時,選擇器670將輸入移位暫存器620連接至組態資料儲存器之輸入(第一移位暫存器鏈630之LSB)。
當加載訊號為活躍的時,於輸入移位暫存器620中之組態資料可被轉移至組態序列鏈中之第一移位暫存器鏈630與第二移位暫存器鏈640內。於此,加載訊號可作用為用於輸入移位暫存器、第一移位暫存器鏈、及第二移位暫存器鏈之賦能訊號。加載操作可重複直到用於可組態單元之所有群集的組態資料被加載至可組態單元中之組態資料儲存器內。當序列鏈之長度不同於整數的群集(或子檔案)之長度時,序列中的第一群集可將其差加以填補,且當最後的群集被轉移進去時,填補位元將被轉移至該鏈之末端。舉例來說,可組態單元中之組態資料儲存器可儲存具有760個位元的大小之單元檔案。單元組態加載處理可加載整數N的群集。於此範例中,N=6,且數量N的群集包括群集5、群集4、群集3、群集2、群集1及群集0。向量匯流排具有128個位元的向量寬度,群集的組態資料具有128個位元,且群集可於一個匯流排時脈週期中被發送至可組態單元。N個群集具有N x 128 = 6 * 128 = 768位元的大小,其包括8個填補位元以匹配760個位元的單元檔案大小。
為了從錯誤中復原,卸載操作可查驗(checkpoint)各可組態單元之狀態。卸載操作可儲存重新開始所需的各可組態單元之執行狀態,及賦能若錯誤發生時應用程式可被重新開始。其亦允許可組態單元之狀態被儲存或傳送以用於除錯目的。需要被儲存的狀態包括至少部份的第一或第二移位暫存器之內容、及選項地PMU記憶體之內容。程式卸載亦會需要卸載所有的第一與第二移位暫存器之狀態。
輸出FIFO 660被耦接至輸出移位暫存器650,其接著被耦接至組態資料儲存器之輸出(第二移位暫存器鏈640之MSB)。對於卸載操作,當卸載訊號為活躍的時,於第二移位暫存器鏈640與第一移位暫存器鏈630中之組態資料可被轉移至輸出移位暫存器650內。當輸出FIFO 660為有效的時,輸出移位暫存器650中之組態資料(例如128個位元)可於一個時脈週期中被插入至輸出FIFO 660內。卸載操作可重複直到於可組態單元中之組態資料儲存器中的所有群集的組態資料被卸載至輸出FIFO內。
為了將由MAGCU中之組態加載控制器所發出的組態加載命令之完成同步化與通訊,單一線路菊鍊方案被實現於一範例中,其由於該鍊之各組件中的菊鍊邏輯(例如第4圖中之菊鍊邏輯493)中所包括之邏輯所支持。此方案要求每個組件具有以下2埠:
1.輸入埠,稱為PROGRAM_LOAD_DONE_IN
2.輸出埠,稱為PROGRAM_LOAD_DONE_OUT
一組件將驅動其PROGRAM_LOAD_DONE_OUT訊號,當其已完成執行MAGCU所發出的命令且其PROGRAM_LOAD_DONE_IN輸入被驅動為高(high)。當其已完成所有執行命令所需要的步驟時,MAGCU將藉由驅動其PROGRAM_LOAD_DONE_OUT來啟動菊鍊。該鍊中之最後組件將驅動其PROGRAM_LOAD_DONE_OUT,其將被連接至MAGCU之PROGRAM_LOAD_DONE_IN。MAGCU之PROGRAM_LOAD_DONE_IN變高表示命令的完成。在傳遞對應至所有群集的所有組件之資料之後,MAGCU將其PROGRAM_LOAD_DONE_OUT埠驅動為高。當所有組件已完成加載所有其組態位元時,所有組件將驅動其個別的PROGRAM_LOAD_DONE_OUT埠為高。
當MAGCU輸入埠PROGRAM_LOAD_DONE_IN被判定時,組態檔案加載即完成。
第7圖為顯示耦接至可重組態資料處理器之主機的操作之流程圖。於步驟711,主機(120,第1圖)經由PCIE介面(130,第1圖)及頂層網路(115,第1圖)將用於可組態單元之陣列的組態檔案發送至晶片外記憶體(140,第1圖)、或以別的方式將組態檔案儲存於對於可組態處理器為可存取的記憶體中。
於步驟712,當將組態檔案加載至記憶體被完成時,主機120將組態加載命令發送至於處理器(於此範例中,部份的主AGCU)中之組態加載控制器。主AGCU可實現暫存器,而透過暫存器,主機可將組態加載命令發送至組態加載控制器。組態加載命令可識別於可組態處理器上經由記憶體介面為可存取的記憶體中之位置。組態加載控制器可接著因應擷取組態檔案之命令而經由頂層網路產生一或多個記憶體存取請求。主機可接著對於可組態處理器監視已被完全加載之組態檔案的訊號(714)。當檔案加載完成時,接著主機可啟始待由機器所執行的功能(716)。
第8圖為顯示組態加載控制器之操作的流程圖,該組態加載控制器可為與在方塊中的該陣列之可組態單元通訊之部份的MAGCU或其他者。組態加載控制器負責從晶片外記憶體(140,第1圖)讀取組態檔案並將組態資料發送至於可組態單元之陣列中的每個可組態單元。此流程圖開始於組態加載控制器等待組態加載命令(810)。如上所述,組態加載命令識別組態檔案,及其於處理器可存取的記憶體中之位置。
一旦接收加載命令,於步驟811,組態加載控制器將加載請求發出至連接至可重組態資料處理器(110,第1圖)之記憶體(140,第1圖)。於步驟812,組態加載控制器經由記憶體介面於頂層網路上擷取群集的組態檔案。於步驟813,組態加載控制器在排序過的回合中將群集的組態檔案分配至於陣列層網路上的陣列中之可組態單元。於步驟814,當所有群集的組態檔案已被接收與分配時,組態加載控制器產生分配完成訊號(例如其PROGRAM_LOAD_DONE_OUT)。於步驟815,組態加載控制器接著等待來自可組態單元之對於其個別的單元檔案已被加載的確認,舉例來說,藉由其 PROGRAM_LOAD_DONE_IN之判定來表示。一旦確認成功的組態加載,組態加載控制器可通知主機(816)。
第9圖顯示組態檔案之一個範例組織。其他組織亦可被使用以及設置成符合用於加載與卸載組態檔案之特定協定。於參照第9圖所述之範例中,於可組態單元之陣列中的可組態單元包括切換器、PCU、PMU、及AGCU。這些可組態單元中之各者含有代表要運行程式之設定或序列的一組暫存器。這些暫存器包括用以界定含有其的可組態單元之操作的資料,例如巢套迴路的數量、各迴路迭代器的限制、對於各階段執行的指令、運算元的來源、及用於輸入與輸出介面的網路參數。此外,各組態檔案可包括用以設定一組計數器之脈絡(context)的資料,其在各巢套迴路中追蹤其進展。
程式(可執行的)含有表示執行程式之各可組態單元的初始組態或開始狀態之位元流。此位元流被參照為位元檔案,或於此作為組態檔案。程式加載是基於組態檔案之內容來設定於可組態單元中的組態儲存器以允許所有可組態單元執行程式之程序。程式卸載是從可組態單元卸載組態儲存器、及組合位元流(於此稱為卸載組態檔案)之程序。於此處所述之範例中,卸載組態檔案具有被使用於程式加載之相同的設置群集或子檔案與組態檔案。
組態檔案包括用於可組態單元之陣列中的各可組態單元之複數個群集的組態資料,群集被以符合其被分配之序列的方式設置於組態檔案中。基於組態檔案中的群集之位置,組態檔案之此組織賦能陣列組態加載處理以將群集路由至可組態單元。
如第9圖所示,組態檔案(及以相同方式設置的卸載組態檔案)包括用於複數個可組態單元中之各可組態單元的複數個群集的單元檔案,單元檔案具有最多M(於此範例中,Z4 = 6)個具有單元檔案中次序(i)的子檔案。於第9圖中,M為六,且群集被從第一排序至第六(亦即,於此索引中,第一至第六群集對應群集(0)至(5))。群集被設置使得對於在加載或卸載組態檔案中之所有單元檔案,次序(i)的所有子檔案,(i)從0至M-1,被儲存於記憶體中對應的區塊(i)之位址空間中,(i)從0至M-1。次序(0)的群集被儲存於包括位址A0至A1-1之區塊(0)中。於此範例中,對於切換單元,次序(0)的群集係位於在區塊(0)內之相鄰的位址之群組中。對於PCU,次序(0)的群集係位於在區塊(0)內之相鄰的位址之群組中。對於PMU,次序(0)的群集係位於在區塊(0)內之相鄰的位址之群組中。對於AGCU,次序(0)的群集係位於相鄰的位址之群組中。次序(1)的群集被儲存於包括位址A1至A2-1之區塊(1)中。於此範例中,對於切換單元,次序(1)的群集被儲存於在區塊(1)內之相鄰的位址之群組中。對於PCU,次序(1)的群集係位於在區塊(1)內之相鄰的位址之群組中。對於PMU,次序(1)的群集係位於在區塊(1)內之相鄰的位址之群組中。對於AGCU,次序(1)的群集係位於在區塊(1)內之相鄰的位址之群組中。次序3至5的群集被設置如第9圖所示,跟隨區塊(2)至(5)中之型樣。
由圖可見,於此範例中,線性的位址空間被配置於行邊界(line boundaries)上用於組態檔案之區塊內。於其他實施例中,線性的位址空間可被配置於字元邊界或群集邊界上。邊界可被選擇以符合被使用的記憶體之效率特性。因此,於此範例中組態檔案包含具有按順序的行位址(line addresses)之記憶體行。
同樣的,陣列包括多於一種類型的可組態單元,且用於不同類型的可組態單元之該等單元檔案包括不同數量的組態資料之子檔案,且其中在一區塊(i)之位址空間內,對於各類型的可組態單元,該等子檔案被儲存於在區塊(i)之位址空間內之相鄰的位址之對應的群組中。
該陣列可包括多於一個類型的可組態單元,且用於不同類型的可組態單元之該等單元檔案包括不同數量的群集的組態資料。例如,如第3圖所示,於陣列中之可組態單元的類型可包括切換單元、PCU(型樣計算單元)、PMU(型樣記憶體單元)及AGCU(位址產生及合併單元)。
範例組態檔案組織包括: W(例如第3圖中,28)個切換單元,各單元需要Z1群集的組態位元; X(例如9)個PCU單元,各單元需要Z2群集的組態位元; Y(例如9)個PMU單元,各單元需要Z3群集的組態位元; Z(例如4)個AGCU單元,各單元需要Z4群集的組態位元。
因此,用於一第一類型的可組態單元之單元檔案可包括Z1群集,且用於一第二類型的可組態單元之單元檔案包括Z2群集,其中Z1小於Z2。陣列組態加載處理可包括擷取包括用於所有於Z1回合中的第一類型與第二類型的可組態單元之單元檔案的群集(i)之組態檔案的片段,其中(i)從0至Z1-1,及接著擷取包括用於所有於Z2回合中的第二類型的可組態單元之單元檔案的群集(i)之組態檔案的片段,其中(i)從Z1至Z2-1。用於第三類型的可組態單元之單元檔案可包括Z3群集,且用於第四類型的可組態單元之該等單元檔案包括Z4群集,其中Z1小於Z2、Z2小於Z3、及Z3小於Z4。分配序列可依此模式繼續一個回合,對於所有不同類型的可組態單元對於各群集(i),其需要多於(i+1)群集。
如於範例組態檔案組織中所示,組態檔案中之群集的組態資料被以交錯方式設置: • 對於回合R(i = 0),對於切換單元中之各者的2個群集的組態位元中之第一個; • 對於回合R(i = 0),對於PCU單元中之各者的3個群集的組態位元中之第一個; • 對於回合R(i = 0),對於PMU單元中之各者的5個群集的組態位元中之第一個; • 對於回合R(i = 0),對於AGCU單元中之各者的6個群集的組態位元中之第一個; • 對於回合R(i = 1),對於切換單元中之各者的2個群集的組態位元中之第二個; • 對於回合R(i = 1),對於PCU單元中之各者的3個群集的組態位元中之第二個; • 對於回合R(i = 1),對於PMU單元中之各者的5個群集的組態位元中之第二個; • 對於回合R(i = 1),對於AGCU單元中之各者的6個群集的組態位元中之第二個; • 對於回合R(i = 2),對於PCU單元中之各者的3個群集的組態位元中之第三個; • 對於回合R(i = 2),對於PMU單元中之各者的5個群集的組態位元中之第三個; • 對於回合R(i = 2),對於AGCU單元中之各者的6個群集的組態位元中之第三個; • 對於回合R(i = 3),對於PMU單元中之各者的5個群集的組態位元中之第四個; • 對於回合R(i = 3),對於AGCU單元中之各者的6個群集的組態位元中之第四個; • 對於回合R(i = 3),對於PMU單元中之各者的5個群集的組態位元中之第五個; • 對於回合R(i = 4),對於AGCU單元中之各者的6個群集的組態位元中之第五個; • 對於回合R(i = 5),對於AGCU單元中之各者的6個群集的組態位元中之第六個。
單元檔案可被組織以包含複數個排序過的群集(或其他大小的子檔案)。於一些實施例中,特定於不同的可組態單元之單元檔案可具有不同數量之排序過的群集。用於可組態單元之陣列的組態檔案被設置使得群集的單元檔案被以與其他單元檔案有相同次序的群集組成群組。同樣的,組態檔案被設置使得組態檔案中之群集的位置暗示群集之陣列中的可組態單元及其特定於可組態單元於單元檔案中之次序。
陣列組態加載處理可擷取組態檔案之片段,包括第一類型(切換器類型)、第二類型(PCU類型)、第三類型(PMU類型)及第四類型(AGCU類型)之所有的可組態單元之群集(i)的單元檔案,其中(i)從0至Z1-1(=1)。四種類型之所有的可組態單元之群集(0)的單元檔案於第一回合中被擷取,而四種類型之所有的可組態單元之群集(1)的單元檔案於第二回合中被擷取。在第一與第二回合之後,第一類型(切換器類型)之所有的可組態單元之所有(2)群集的單元檔案已被擷取。第一、第二、第三及第四類型之所有的可組態單元之單元檔案分別具有0、1、3及4群集剩下要被擷取。
陣列組態加載處理可接著於第三回合中擷取組態檔案之片段,包括第二、第三及第四類型之所有的可組態單元之群集(i)的單元檔案。在第三回合之後,第二類型(PCU類型)之所有的可組態單元之所有(3)群集的單元檔案已被擷取。第一、第二、第三及第四類型之所有的可組態單元之單元檔案分別具有0、0、2及3群集剩下要被擷取。
陣列組態加載處理可接著於第四回合中擷取組態檔案之片段,包括第三及第四類型之所有的可組態單元之群集(i)的單元檔案。在第四回合之後,第三類型(PMU類型)之所有的可組態單元之所有(4)群集的單元檔案已被擷取。第一、第二、第三及第四類型之所有的可組態單元之單元檔案分別具有0、0、1及2群集剩下要被擷取。
陣列組態加載處理可接著於第五及第六回合中擷取組態檔案之片段,包括第三及第四類型之所有的可組態單元之群集(i)的單元檔案,(i)從Z3(=4)至Z4-1(5)。在第六回合之後,第四類型(AGCU類型)之所有的可組態單元之所有(6)群集的單元檔案已被擷取。第一、第二、第三及第四類型之所有的可組態單元之單元檔案分別具有0、0、0及0群集剩下要被擷取。
於以上所述之方式中,陣列組態加載處理可繼續直到第一、第二、第三及第四類型之所有的可組態單元之單元檔案不具有群集剩下要被擷取。
陣列組態加載處理使用於組態檔案中之群集的位置所暗示之位址將組態資料之群集經由陣列層網路路由至可組態單元。例如,對於198個切換單元中之各者的2個群集的組態位元中之第一個具有線性的記憶體位址0-12288,而對於198個切換單元中之各者的2個群集的組態位元中之第二個具有線性的記憶體位址33792-46080。
於一些實施例中,群集的組態檔案可從記憶體不依次序被返回至組態加載控制器。組態檔案中之群集的位置可被使用以將群集路由至正確的可組態單元。因為分配序列中之回合的組織,可組態單元被保證按次序接收其單元檔案的群集。
第10圖為顯示用以執行用於類似第2與3圖之系統的陣列組態加載處理之邏輯的一個範例之狀態機圖,包括對於於陣列中之複數個可組態單元分配包含單元檔案之組態檔案,單元檔案各包含複數個排序過的群集(或子檔案),藉由在N個回合(R(i),i從0至N-1)的序列中經由匯流排系統將次序(i)的一個單元群集發送至於複數個可組態單元中之所有的包括最多N個子檔案之可組態單元,直到組態檔案中之單元檔案被分配至複數個可組態單元中之可組態單元。
於此範例中,狀態機包括六個狀態S1至S6。於狀態S1(閒置),組態加載控制器等待來自主機之組態加載命令。當組態加載命令被接收時,加載處理進入狀態S2以開始執行第一回合R(0)的分配序列。各回合遍歷(traverse)狀態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。
第11圖為顯示類似第10圖之較早回合的分配序列之時序的時序圖。於此範例中,群集的組態單元檔案具有數量B的位元之資料(例如B=128),分配序列中之回合可包括數量X的可組態單元,可組態單元之陣列可包括數量Y的可組態單元(例如Y=148)。對於回合R(0),X可等於Y。於隨後的回合中,X可小於或等於Y。
於此範例中,回合R(0)包括Y=148個可組態單元。對於回合R(0)與R(1),X=Y。在前兩個回合R(0)與R(1)之後,切換單元已接收所有的(2)其群集,所以第三回合R(2)包括少於128個可組態單元。
如第11圖之範例中所示,回合R(0),第一群集P11的組態單元檔案於第一匯流排週期C0中經由匯流排系統於可組態單元被接收。第一群集接著被加載至第一可組態單元「單元1」之組態儲存器內,藉由當其他群集的回合被組態加載控制器分配至其他可組態單元時在可組態單元於平行任務中在B時脈週期中序列地轉移在第一群集P11中的資料之B位元(其可用與匯流排時脈相同的比率運行)。第二群集P21的組態檔案於第二匯流排週期C1中經由匯流排系統被接收。藉由在B時脈週期中轉移於第二群集P21中之資料的B位元,第二群集接著於平行任務中被加載至第二可組態單元「單元2」之組態儲存器內。第三群集P31的組態檔案於第三匯流排週期C2中經由匯流排系統被接收。藉由在B時脈週期中轉移於第三群集P31中之資料的B位元,第三群集P31接著被加載至第三可組態單元「單元3」之組態儲存器內。此回合前進直到所有可組態單元接收特定於其之第一群集的單元檔案。
回合R(0)包括分配第一組之Y群集的組態檔案(P11、P21、P31 … PY1)於陣列中之Y個別的可組態單元(單元1 … 單元Y)。群集的組態檔案具有數量B的位元之資料,且可組態單元之陣列具有數量Y的可組態單元。當回合R(0)完成時,第一組中之Y群集的組態檔案(P11、P21、P31 … PY1)已於Y匯流排週期(C0至CY-1)中被接收於陣列中之Y可組態單元,且第一群集P11已於B時脈週期中被加載或序列地轉移至第一可組態單元「單元1」之組態儲存器內。B時脈週期在第一群集P11被接收的第一時脈週期C0之後。
下一個回合R(1)包括接收第二組之Y群集的組態檔案(P12、P22、P32 … Py2)於陣列中之Y個別的可組態單元(單元1 … 單元Y)。當回合R(1)完成時,第二組中之Y群集的組態檔案(P12、P22、P32 … Py2)已於Y匯流排週期(Cy至C2y-1)中被接收於陣列中之Y個別的可組態單元。當回合R(1)完成時,對於第一可組態單元「單元1」之第二群集P12在回合R(1)中第一時脈週期(Cy)之後的B時脈週期中已被加載或序列地轉移至第一可組態單元「單元1」之組態儲存器內。同樣的,當第二回合完成時,於回合R(0)所接收之第一組的Y群集的組態檔案中之最後群集PY1已被加載或序列地轉移至最後可組態單元「單元Y」之組態儲存器內。
只要群集中位元的數量B(128)小於回合中可組態單元之數量X,可組態單元在先前的群集已被加載之後將接收下個群集的單元組態檔案,使得可組態單元應為準備好了而不需要序列來拖延。於此範例中,群集中位元的數量B為128,而回合R(0)中可組態單元之數量X為X=Y=148。由於將群集中之128個位元序列地轉移至可組態單元之組態資料儲存器內需要128個時脈週期,在轉移完成之後可有有效的20(Y-B=148-128)個緩衝器週期,以確保第一可組態單元「單元1」在下一個回合R(1)中準備好接收下個群集(P12)。當群集中位元的數量B大於回合中可組態單元之數量X時,先前的群集被消耗的同時下個群集可被接收。於此,「被消耗」參照將群集中位元序列地轉移至可組態單元之組態資料儲存器內。
通常,單元組態加載處理於一個匯流排週期中從匯流排系統接收特定於可組態單元之單元檔案的第一群集(或子檔案)、在單元檔案之第二群集在下一個回合被接收之前在隨後的匯流排週期期間開始將所接收的第一群集推入序列鏈內、於稍後的匯流排週期中對於該序列之下一個回合從匯流排系統接收特定於可組態單元之單元檔案的第二群集、及在將稍早所接收的群集推入序列鏈內之後在該序列之週期期間開始將所接收的第二群集推入序列鏈內。於某些回合中,所有的接收群集可在下個群集被接收之前被消耗。
由於不同類型的可組態單元可具有不同數量的組態位元,可組態單元會需要各不相同之數量的群集。一旦需要較少數量的群集之可組態單元已加載所有其組態位元時,組態加載控制器停止對其發送資料。此會導致較少的可組態單元(數量X)被交錯且會造成可組態單元在其完成處理先前的群集之前接收新的群集。此會在陣列層網路上造成回壓(back-pressure)。
回壓可經由信用機制(credit mechanism)在陣列層網路上被處理。例如,各輸入FIFO可具有點對點(hop-to-hop)信用,所以若PCU的輸入FIFO填滿了,則試著發送組態資料至該PCU的輸入FIFO之陣列層網路中的切換器無法發送資料直到輸入FIFO空出一個項目(entry)並將信用送返至發送的切換器。最後,因為鏈結很忙碌,回壓會拖延AGCU發送資料。但是,一旦可組態單元消耗所有128個位元的群集,其空出一個輸入FIFO項目,信用被釋出,然後發送者可發送新的群集(若有的話)。
第12圖為顯示於可組態單元中之單元組態加載處理的流程圖。於步驟1221,單元組態加載處理等待輸入FIFO(610,第6圖)變成有效的。當其為有效的時,輸入FIFO已經由匯流排系統接收組態檔案之群集的組態資料以組態可組態單元。當輸入FIFO為有效的時,流程前進至步驟1222。
於步驟1222,輸入FIFO被退出佇列。於步驟1223,來自輸入FIFO之群集的組態資料被平行加載至輸入移位暫存器(620,第6圖)內。於步驟1224,輸入移位暫存器中之群集的組態資料被轉移至可組態單元之組態資料儲存器中的組態序列鏈內。
於步驟1225,單元組態加載處理決定所加載的群集的組態資料是否為可組態單元最後群集的組態資料。若是,則可組態單元之組態資料的加載便完成。若否,則流程前進至步驟1221,且單元組態加載處理等待輸入FIFO對於下個群集的組態資料變成有效的。可組態單元中之單元組態加載處理將參照第5與6圖進一步說明。
第13圖為用以執行用於類似第2與3圖之系統的陣列組態卸載處理之邏輯的一個範例之狀態機圖。
於此範例中,狀態機包括三個狀態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單元。序列ID將參照第3圖進一步說明。
當計數「next_unld_resp_count」等於 PROGRAM_UNLOAD_REQ_COUNT時,回應已從陣列中之可組態單元之各者被接收且被插入於頂層網路上,而卸載處理轉變回狀態S1。
於一個實施例中,對於切換單元中之組態資料的線性的記憶體位址之次序為第一行的切換單元中之各列的第一群集、之後跟隨著第二行的切換單元中之各列的第一群集、之後跟隨著第三行的切換單元中之各列的第一群集、 … 直到最後行中之各列的第一群集。其將所有切換單元的第一群集在線性的位址空間中加入群組。其他類型的可組態單元之第一群集在鄰近的位址空間中被加載於群組中。接著,次序是之後跟隨著第一行的切換單元中之各列的第二群集、之後跟隨著第二行的切換單元中之各列的第二群集、之後跟隨著第三行的切換單元中之各列的第二群集、 … 直到最後行的切換單元中之最後列的最後群集,以此方式用於所有類型的可組態單元之第二群集。
如上所述,使用對於切換單元之組態資料的記憶體位址之次序,以下偽碼(pseudo code)顯示如何對於切換單元(comp_switch)產生線性的記憶體位址。偽碼使用4個輸入: comp_id: component identifier(組件識別符); comp_col: column identifier(行識別符); comp_row: row identifier(列識別符); comp_chunk: chunk number(群集號碼); 及產生輸出: linear_address: linear memory address for an unload chunk(卸載群集之線性的記憶體位址);
用以對於切換單元之特定卸載群集產生線性的記憶體位址之偽碼係如下:
Figure 02_image001
其中 • comp_switch表示切換單元; • NUM_ROW_SW為所有切換單元之列的數量; • COMP_COUNT_ALL為所有可組態單元的總和。
要對於PCU、PMU、或AGCU單元之特定的卸載群集產生線性的記憶體位址,類似的碼可被使用。一個差異是所有切換單元之列的數量不同於所有PCU之列的數量、所有PMU之列的數量、及所有AGCU之列的數量。另一個差異是用於切換單元之線性的記憶體位址可在基底位址(例如0)開始,同時用於PCU、PMU與AGCU之線性的記憶體位址分別在切換單元、PCU、與PMU之最後群集之後的位址開始。
第14圖為顯示於可組態單元中之單元組態卸載處理的流程圖。於步驟1431,來自組態資料儲存器中組態序列鏈之群集的組態資料被序列地轉移至輸出移位暫存器(650,第6圖)內。流程進入步驟1432。
於步驟1432,單元組態卸載處理等待輸出FIFO(660,第6圖)或其他類型的輸出緩衝器電路變成有效的。於步驟1433,當輸出FIFO變成有效的時,來自輸出移位暫存器之群集的組態資料被插入至輸出FIFO內。於步驟1434,於輸出FIFO中之群集的組態資料被寫入至匯流排系統(第3圖)。
於步驟1435,單元組態卸載處理決定第一群集的組態資料是否為組態資料儲存器中之最後群集的組態資料。若是,則可組態單元之組態資料的卸載便完成。若否,則流程轉變回步驟1431,且來自組態資料儲存器之第二群集的組態資料被序列地轉移至輸出移位暫存器內。
雖然本發明參照較佳實施例與以上詳述之範例來揭露,應了解的是,這些範例僅為說明用而非限制用。應考量的是,對於所屬技術領域中具有通常知識者而言,修改與結合將輕易地發生,其修改與結合將落於本發明之精神與以下申請專利範圍之範疇內。
110:可重組態資料處理器 115:匯流排系統 120:主機 130:外部I/O介面 140:記憶體 150:外部I/O介面 170:外部時脈產生器 175:時脈訊號 190:可組態單元之陣列 195:組態加載/卸載控制器 205:外部I/O介面 211:頂層切換器 212:頂層切換器 213:頂層切換器 214:頂層切換器 215:頂層切換器 216:頂層切換器 300:可組態單元之陣列 301:組態加載/卸載控制器 311:切換單元 312:切換單元 320:鏈結 321:互連 331:鏈結 341:型樣記憶體單元 400:可組態單元 410:輸入組態資料 420:組態資料儲存器 421:線路 422:線路 430:輸出組態資料 440:單元組態加載邏輯 450:純量FIFO 460:FIFO區塊 470:控制區塊 480:區塊 491:菊鍊完成匯流排 492:菊鍊命令匯流排 493:菊鍊邏輯 610:輸入FIFO 620:輸入移位暫存器 630:組態序列鏈 640:組態序列鏈 650:輸出移位暫存器 660:輸出FIFO 670:選擇器 711:步驟 712:步驟 714:步驟 716:步驟 810:步驟 811:步驟 812:步驟 813:步驟 814:步驟 815:步驟 816:步驟 1221:步驟 1222:步驟 1223:步驟 1224:步驟 1225:步驟 1431:步驟 1432:步驟 1433:步驟 1434:步驟 1435:步驟 A0:位址 A1:位址 A2:位址 A3:位址 A4:位址 A5:位址 AG:位址產生器 AGCU12:位址產生及合併單元 AGCU13:位址產生及合併單元 AGCU14:位址產生及合併單元 AGCU22:位址產生及合併單元 AGCU23:位址產生及合併單元 AGCU24:位址產生及合併單元 C0:匯流排週期 C1:匯流排週期 C2:匯流排週期 C2y-1:匯流排週期 CU:合併單元 Cy:匯流排週期 Cy+1:匯流排週期 Cy+2:匯流排週期 Cy-1:匯流排週期 L11:鏈結 L12:鏈結 L21:鏈結 L22:鏈結 LSB:最小有效位元 MAGCU1:位址產生及合併單元 MAGCU2:位址產生及合併單元 MSB:最大有效位元 P11:群集的組態檔案 P12:群集的組態檔案 P21:群集的組態檔案 P22:群集的組態檔案 P31:群集的組態檔案 P32:群集的組態檔案 PCU:型樣計算單元 PMU:型樣記憶體單元 PY1:群集的組態檔案 PY2:群集的組態檔案 S:切換單元 Stage 1:階段 Stage N:階段 Tile1:方塊 Tile2:方塊
[第1圖]為顯示包括主機、記憶體、及可重組態資料處理器之系統的系統圖。
[第2圖]為頂層網路及粗粒可重組態架構(Coarse Grain Reconfigurable Architecture;CGRA)之組件的簡化方塊圖。
[第3圖]為方塊及可使用於第2圖之組態中的陣列層網路之簡化圖式,其中,在該陣列中之可組態單元為在陣列層網路上之節點。
[第3A圖]顯示連接於陣列層網路中之元件的切換單元之範例。
[第4圖]為顯示範例可組態單元之方塊圖。
[第5圖]顯示狀態機圖的一個範例,其可被使用以控制可組態單元中之單元組態加載處理。
[第6圖]為支援於可組態單元中之組態儲存器之加載的結構之邏輯表示。
[第7圖]為顯示耦接至可重組態資料處理器之主機的操作之流程圖。
[第8圖]為顯示組態加載控制器之操作的流程圖,該組態加載控制器可為與在方塊中的該陣列之可組態單元通訊之部份的主AGCU或其他者。
[第9圖]顯示組態檔案之範例組織。
[第10圖]為顯示用以執行用於類似第2與3圖之系統的陣列組態加載處理之邏輯的一個範例之狀態機圖。
[第11圖]為顯示類似第10圖之較早回合的分配序列之時序的時序圖。
[第12圖]為顯示於可組態單元中之單元組態加載處理的流程圖。
[第13圖]為顯示用以執行用於類似第2與3圖之系統的陣列組態卸載處理之邏輯的一個範例之狀態機圖。
[第14圖]為顯示於可組態單元中之單元組態卸載處理的流程圖。
110:可重組態資料處理器
115:匯流排系統
120:主機
130:外部I/O介面
140:記憶體
150:外部I/O介面
170:外部時脈產生器
175:時脈訊號
190:可組態單元之陣列
195:組態加載/卸載控制器

Claims (60)

  1. 一種可重組態資料處理器,包含: 一匯流排系統; 連接至該匯流排系統之一陣列的可組態單元,於該陣列中之可組態單元包括組態資料儲存器以儲存包含特定於對應的可組態單元之組態資料的複數個子檔案之單元檔案; 其中於該複數個可組態單元中之可組態單元各包括用以執行一單元組態加載處理之邏輯,該單元組態加載處理包括經由該匯流排系統來接收特定於該可組態單元之一單元檔案的子檔案、及將所接收的子檔案加載至該可組態單元之組態儲存器內;及 連接至該匯流排系統之一組態加載控制器,包括用以執行一陣列組態加載處理之邏輯,該陣列組態加載處理包括對於於該陣列中之複數個可組態單元分配包含單元檔案之一組態檔案,該等單元檔案各包含複數個排序過的子檔案,藉由在N個回合(R(i),i從0至N-1)的序列中經由該匯流排系統將次序(i)的一個單元子檔案發送至於該複數個可組態單元中之所有的包括最多(i+1)個子檔案之可組態單元。
  2. 如請求項1之處理器,其中該複數個可組態單元包括於該陣列的可組態單元中之所有的可組態單元,且用於該等可組態單元中之一或多者的該單元檔案實現一無操作組態。
  3. 如請求項1之處理器,其中於該複數個可組態單元中之可組態單元中的該等組態資料儲存器包含序列鏈,且該單元組態加載處理於一個匯流排週期中從該匯流排系統接收特定於該可組態單元之該單元檔案的一第一子檔案、在該單元檔案之一第二子檔案被接收之前在隨後的匯流排週期期間開始將所接收的第一子檔案推入該序列鏈內、於一稍後的匯流排週期中對於該序列之下一個回合從該匯流排系統接收特定於該可組態單元之該單元檔案的該第二子檔案、及在將稍早所接收的子檔案推入該序列鏈內之後在該序列之週期期間開始將所接收的該第二子檔案推入該序列鏈內。
  4. 如請求項3之處理器,其中於該複數個排序過的子檔案中之該第二子檔案被該可組態單元接收之前,該第一子檔案於該可組態單元中被該單元組態加載處理消耗。
  5. 如請求項1之處理器,其中該陣列組態加載處理包括從一主處理接收識別該組態檔案於記憶體中之位置的組態加載命令、及因應該命令而產生一或多個記憶體存取請求以擷取該組態檔案。
  6. 如請求項1之處理器,其中對於在複數個可組態單元中之各可組態單元,該組態檔案包括單元檔案之複數個子檔案,該等子檔案被以符合該序列的交錯方式設置於該組態檔案中,且其中該陣列組態加載處理包括基於該等子檔案於該組態檔案中之位置將該等子檔案路由至可組態單元。
  7. 如請求項1之處理器,其中子檔案具有數量N位元的資料,且該匯流排系統經組構以在一個匯流排週期中傳送N位元的資料。
  8. 如請求項7之處理器,其中於該複數個可組態單元中之可組態單元中的該等組態資料儲存器包含序列鏈,且該單元組態加載處理於一個匯流排週期中從該匯流排系統接收特定於該可組態單元之該單元檔案的一第一子檔案、在N個隨後的匯流排週期期間將所接收的第一子檔案推入該序列鏈內、及於一稍後的匯流排週期中從該匯流排系統接收特定於該可組態單元之該單元檔案的一第二子檔案、及在將稍早所接收的子檔案推入該序列鏈內之後在N個隨後的匯流排週期期間將所接收的第二子檔案推入該序列鏈內。
  9. 如請求項8之處理器,其中該陣列包括多於N個的可組態單元。
  10. 如請求項1之處理器,其中該陣列包括多於一個類型的可組態單元,且用於不同類型的可組態單元之該等單元檔案包括不同數量的組態資料之子檔案。
  11. 如請求項1之處理器,其中用於一第一類型的可組態單元之該等單元檔案包括Z1子檔案,且用於一第二類型的可組態單元之該等單元檔案包括Z2子檔案,其中Z1小於Z2,且該陣列組態加載處理包括: 擷取包括用於所有第一類型與第二類型的可組態單元之該等單元檔案的子檔案(i)之該組態檔案的片段,其中(i)從0至Z1-1,及接著擷取包括用於所有第二類型的可組態單元之該等單元檔案的子檔案(i)之該組態檔案的片段,其中(i)從Z1至Z2-1。
  12. 如請求項1之處理器,其中於該陣列的可組態單元中之可組態單元包括個別的以在該陣列組態加載邏輯處開始與結束之菊鍊連接的加載完成狀態邏輯。
  13. 如請求項12之處理器,其中該陣列組態加載邏輯在該組態檔案被分配之後於該菊鍊上轉送加載完成訊號,且在該陣列中之各可組態單元中,當來自該菊鍊之一先前的成員之該加載完成訊號被接收且其單元檔案之加載被完成時,該加載完成狀態邏輯於該菊鍊上轉送該加載完成訊號。
  14. 如請求項1之處理器,其中該匯流排系統包括一頂層網路與一陣列層網路,該頂層網路包括一外部資料介面與一陣列介面,且該陣列層網路係連接至該陣列介面及至該陣列的可組態單元中之該等可組態單元。
  15. 如請求項14之處理器,其中該陣列組態加載處理包括從一主處理接收識別該組態檔案於記憶體中之位置的組態加載命令、及因應該命令經由該頂層網路而產生一或多個記憶體存取請求以透過該外部資料介面來擷取該組態檔案。
  16. 如請求項15之處理器,其中該陣列組態加載處理使用於該組態檔案中之該等子檔案的位置所暗示之位址將該組態資料之子檔案經由該陣列層網路路由至該等可組態單元。
  17. 如請求項1之處理器,其中於該複數個可組態單元中之可組態單元在執行期間在組態亦被使用於該組態加載處理中之後使用於該匯流排系統中之路由。
  18. 一種用以操作可重組態資料處理器之方法,該可重組態資料處理器包含一匯流排系統及連接至該匯流排系統之一陣列的可組態單元,於該陣列中之可組態單元包括組態資料儲存器以儲存包含特定於對應的可組態單元之組態資料的複數個子檔案之單元檔案,該方法包含: 對於於該陣列中之複數個可組態單元分配包含單元檔案之一組態檔案,該等單元檔案各包含複數個排序過的子檔案,藉由在N個回合(R(i),i從0至N-1)的序列中經由該匯流排系統將次序(i)的一個單元子檔案發送至於該複數個可組態單元中之所有的包括最多(i+1)個子檔案之可組態單元;及 接收特定於該可組態單元之一單元檔案的該等子檔案,及將所接收的子檔案加載至該可組態單元之組態儲存器內。
  19. 如請求項18之方法,其中該複數個可組態單元包括於該陣列的可組態單元中之所有的可組態單元,且用於該等可組態單元中之一或多者的該單元檔案實現一無操作組態。
  20. 如請求項18之方法,其中於該複數個可組態單元中之可組態單元中的該等組態資料儲存器包含序列鏈,該方法包括於一個匯流排週期中接收於一特定的可組態單元中之該單元檔案的一第一子檔案、在該單元檔案之一第二子檔案被接收之前在隨後的匯流排週期期間開始將所接收的第一子檔案推入該序列鏈內、及於一稍後的匯流排週期中對於該序列之下一個回合接收於該特定的可組態單元中之該單元檔案的該第二子檔案、及在完成將稍早所接收的子檔案推入該序列鏈內之後在該序列之週期期間開始將所接收的第二子檔案推入該序列鏈內。
  21. 如請求項20之方法,其中於該複數個排序過的子檔案中之該第二子檔案被一可組態單元接收之前,該第一子檔案於該可組態單元中被該單元組態加載處理消耗。
  22. 如請求項18之方法,包括在所述分配之前從一主處理接收接收識別該組態檔案於記憶體中之位置的組態加載命令、及因應該命令而產生一或多個記憶體存取請求以擷取該組態檔案。
  23. 如請求項18之方法,其中對於在複數個可組態單元中之各可組態單元,該組態檔案包括單元檔案之複數個子檔案,該等子檔案被以交錯方式設置於該組態檔案中,且該方法包括基於該等子檔案於該組態檔案中之位置將該等子檔案路由至可組態單元。
  24. 如請求項23之方法,其中子檔案具有數量N位元的資料,且該匯流排系統經組構以在一個匯流排週期中傳送N位元的資料。
  25. 如請求項24之方法,其中於該複數個可組態單元中之可組態單元中的該等組態資料儲存器包含序列鏈,該方法包括於一個匯流排週期中於一可組態單元處接收特定於該可組態單元之該單元檔案的一第一子檔案、及在N個隨後的匯流排週期期間將所接收的第一子檔案推入該序列鏈內、及於一稍後的匯流排週期中接收特定於該可組態單元之該單元檔案的一第二子檔案、及在將稍早所接收的子檔案推入該序列鏈內之後在N個隨後的匯流排週期期間將所接收的第二子檔案推入該序列鏈內。
  26. 如請求項25之方法,其中該陣列包括多於N個的可組態單元。
  27. 如請求項18之方法,其中該陣列包括多於一個類型的可組態單元,且用於不同類型的可組態單元之該等單元檔案包括不同數量的組態資料之子檔案。
  28. 如請求項18之方法,其中用於一第一類型的可組態單元之該等單元檔案包括Z1子檔案,且用於一第二類型的可組態單元之該等單元檔案包括Z2子檔案,其中Z1小於Z2,該方法包括: 擷取包括用於所有第一類型與第二類型的可組態單元之該等單元檔案的子檔案(i)之該組態檔案的片段,其中(i)從0至Z1-1,及接著擷取包括用於所有第二類型的可組態單元之該等單元檔案的子檔案(i)之該組態檔案的片段,其中(i)從Z1至Z2-1。
  29. 如請求項18之方法,包括於可組態單元之菊鍊中通過加載完成狀態。
  30. 如請求項29之方法,包括在該組態檔案被分配之後從於該菊鍊上之一第一節點轉送加載完成訊號,且在該陣列中之各可組態單元中,當來自該菊鍊之一先前的節點之該加載完成訊號被接收且其單元檔案之加載被完成時,於該菊鍊上轉送該加載完成訊號。
  31. 如請求項18之方法,包括從一主處理接收接收識別該組態檔案於記憶體中之位置的組態加載命令、及因應該命令經由頂層網路而產生一或多個記憶體存取請求以擷取該組態檔案。
  32. 如請求項31之方法,其中該陣列組態加載處理使用於該組態檔案中之該等子檔案的位置所暗示之位址將該組態資料之子檔案經由該陣列層網路路由至該等可組態單元。
  33. 如請求項18之方法,在執行期間在組態亦被使用於所述分配處理之後使用於該匯流排系統中之路由。
  34. 一種可重組態資料處理器,包含: 匯流排系統; 連接至該匯流排系統之一陣列的可組態單元,於該陣列中之可組態單元包括被設置於序列鏈中之組態資料儲存器以儲存包含特定於對應的可組態單元之組態資料的複數個子檔案之單元檔案;及 連接至該匯流排系統之一組態加載控制器,包括用以對於在平行子檔案之該陣列中的複數個該可組態單元分配包含單元檔案的一組態檔案之邏輯。
  35. 一種用以操作可重組態資料處理器之方法,該可重組態資料處理器包含一匯流排系統及連接至該匯流排系統之一陣列的可組態單元,於該陣列中之可組態單元包括被設置於序列鏈中之組態資料儲存器以儲存包含特定於對應的可組態單元之組態資料的複數個子檔案之單元檔案,該方法包含: 對於在平行子檔案之該陣列中的複數個可組態單元分配包含單元檔案的一組態檔案。
  36. 一種可重組態資料處理器,包含: 一匯流排系統; 連接至該匯流排系統之一陣列的可組態單元,於該陣列中之可組態單元包括組態資料儲存器以儲存包含特定於對應的可組態單元之組態資料的複數個子檔案之單元檔案;及 連接至該匯流排系統之一組態卸載控制器,包括用以執行一陣列組態卸載處理之邏輯,該陣列組態卸載處理包括分配一命令至在該陣列中之複數個可組態單元以卸載特定於對應的可組態單元之該等單元檔案,該等單元檔案各包含複數個排序過的子檔案、經由該匯流排系統從該陣列的可組態單元接收子檔案、及根據該子檔案為其之一部分的該單元檔案之該可組態單元及於該單元檔案中之該子檔案之次序藉由設置所接收的子檔案於記憶體中來組合一卸載組態檔案; 其中於該複數個可組態單元中之可組態單元各包括用以執行一單元組態卸載處理之邏輯,該單元組態卸載處理包括從該可組態單元之該組態儲存器卸載該等子檔案及經由該匯流排系統將特定於該可組態單元的一單元檔案之子檔案傳輸至該組態卸載控制器。
  37. 如請求項36之處理器,其中於該複數個可組態單元中之可組態單元中的該組態資料儲存器包含一序列鏈及耦接至該序列鏈之一輸出緩衝器,且該單元組態卸載處理將該單元檔案之該等子檔案從該序列鏈轉移出至該輸出緩衝器、及於該匯流排系統上從該輸出緩衝器傳輸該等子檔案。
  38. 如請求項36之處理器,其中該陣列組態卸載處理包括從一主處理接收組態卸載命令,該組態卸載命令識別於記憶體中何處儲存一卸載組態檔案之一位址位置,且該組合步驟包括對於該等子檔案計算從該位址位置之位址偏移。
  39. 如請求項36之處理器,其中對於在複數個可組態單元中之各可組態單元,該組態檔案包括單元檔案之複數個子檔案,該等單元檔案具有多達M個具有於該單元檔案中次序(i)之子檔案、及被設置於該卸載組態檔案中使得對於在該卸載組態檔案中之所有單元檔案,所有次序(i)之子檔案被儲存於在該記憶體中之對應的區塊(i)之位址空間,其中(i)從0至M-1。
  40. 如請求項39之處理器,其中該陣列包括多於一種類型的可組態單元,且用於不同類型的可組態單元之該等單元檔案包括不同數量的組態資料之子檔案,且其中在一區塊(i)之位址空間內,對於各類型的可組態單元,該等子檔案被儲存於在該區塊(i)內之相鄰的位址之群組中。
  41. 如請求項36之處理器,其中子檔案具有數量N位元的資料,且該匯流排系統經組構以在一個匯流排週期中傳送N位元的資料。
  42. 如請求項36之處理器,其中於該陣列的可組態單元中之該等可組態單元的該等單元檔案具有最多M個子檔案,且所述設置所接收的子檔案於記憶體中之步驟包括: 儲存該卸載組態檔案於記憶體中於複數個區塊(i)之位址,其中(i)從0至最多M-1,及對於在區塊(i)中在該複數個可組態單元中之所有的可組態單元儲存該等單元檔案之子檔案(i);及 所述傳輸子檔案步驟包括於該匯流排系統上發送具有一標頭與一酬載之封包,該酬載包括該等子檔案,且該標頭從被發送之該子檔案識別該可組態單元及識別該子檔案之次序。
  43. 如請求項36之處理器,其中該匯流排系統包括一頂層網路與一陣列層網路,該頂層網路包括一外部資料介面與一陣列介面,且該陣列層網路係連接至該陣列介面及至該陣列的可組態單元中之該等可組態單元。
  44. 如請求項43之處理器,其中該陣列組態卸載處理經由該頂層網路使用藉由於該等可組態單元之該等單元檔案中的該等子檔案之次序所暗示的位址來將該卸載組態檔案之子檔案路由至記憶體。
  45. 如請求項43之處理器,其中該單元組態卸載處理經由該頂層網路使用藉由於該等可組態單元之該等單元檔案中的該等子檔案之次序所暗示的位址來將該卸載組態檔案之子檔案路由至記憶體。
  46. 如請求項36之處理器,其中於該複數個可組態單元中之可組態單元在執行期間在卸載該組態檔案亦被使用於該組態卸載處理中之前使用於該匯流排系統中之路由。
  47. 如請求項36之處理器,其中該等單元檔案包含複數個排序過的子檔案,且用於一陣列的可組態單元之該卸載組態檔案被組合使得對於所有相同類型的可組態單元,相同次序之子檔案被儲存於一區塊的位址空間中,且使得一子檔案於該卸載組態檔案中之位置對應於該陣列之該子檔案中的該可組態單元及特定於該可組態單元之該單元檔案中之其次序。
  48. 一種用以操作可重組態資料處理器之方法,該可重組態資料處理器包含一匯流排系統及連接至該匯流排系統之一陣列的可組態單元,於該陣列中之可組態單元包括組態資料儲存器以儲存包含特定於對應的可組態單元之組態資料的複數個子檔案之單元檔案,該方法包含: 分配一命令至在該陣列中之複數個可組態單元以卸載特定於對應的可組態單元之該等單元檔案,該等單元檔案各包含複數個排序過的子檔案; 從該陣列之可組態單元從該匯流排系統接收子檔案,及根據該子檔案為其之一部分的該單元檔案之該可組態單元及於該單元檔案中之該子檔案之次序藉由設置所接收的子檔案於記憶體中來組合一卸載組態檔案。
  49. 如請求項48之方法,包括從該可組態單元之該組態儲存器卸載該等子檔案及經由該匯流排系統將特定於該可組態單元的一單元檔案之子檔案傳輸至該組態卸載控制器。
  50. 如請求項48之方法,其中於該複數個可組態單元中之可組態單元中的該組態資料儲存器包含一序列鏈及耦接至該序列鏈之一輸出緩衝器,且所述卸載步驟包括將該單元檔案之該等子檔案從該序列鏈轉移出至該輸出緩衝器、及於該匯流排系統上從該輸出緩衝器傳輸該等子檔案。
  51. 如請求項48之方法,包括從一主處理接收組態卸載命令,該組態卸載命令識別於記憶體中何處儲存一卸載組態檔案之一位址位置,且該組合步驟包括對於該等子檔案計算從該位址位置之位址偏移。
  52. 如請求項48之方法,其中對於在複數個可組態單元中之各可組態單元,該組態檔案包括單元檔案之複數個子檔案,該等單元檔案具有多達M個具有於該單元檔案中次序(i)之子檔案、及被設置於該卸載組態檔案中使得對於在該卸載組態檔案中之所有單元檔案,所有次序(i)之子檔案被儲存於在該記憶體中之對應的區塊(i)之位址空間,其中(i)從0至M-1。
  53. 如請求項52之方法,其中該陣列包括多於一種類型的可組態單元,且用於不同類型的可組態單元之該等單元檔案包括不同數量的組態資料之子檔案,且其中在一區塊(i)之位址空間內,對於各類型的可組態單元,該等子檔案被儲存於在區塊(i)之位址空間內之相鄰的位址之群組中。
  54. 如請求項48之方法,其中子檔案具有數量N位元的資料,且該匯流排系統經組構以在一個匯流排週期中傳送N位元的資料。
  55. 如請求項48之方法,其中於該陣列的可組態單元中之該等可組態單元的該等單元檔案具有最多M個子檔案,且所述設置所接收的子檔案於記憶體中之步驟包括: 儲存該卸載組態檔案於記憶體中於複數個區塊(i)之位址空間,其中(i)從0至最多M-1,及對於在區塊(i)之位址空間中在該複數個可組態單元中之所有的可組態單元儲存該等單元檔案之子檔案(i);及 藉由於該匯流排系統上發送具有一標頭與一酬載之封包,從於該陣列中之該等可組態單元傳輸子檔案,該酬載包括一子檔案,且該標頭從被發送之該酬載中的該子檔案識別該可組態單元及識別該子檔案之次序。
  56. 如請求項48之方法,其中該匯流排系統包括一頂層網路與一陣列層網路,該頂層網路包括一外部資料介面與一陣列介面,且該陣列層網路係連接至該陣列介面及至該陣列的可組態單元中之該等可組態單元。
  57. 如請求項56之方法,其中該陣列組態卸載處理經由該頂層網路使用藉由於該等可組態單元之該等單元檔案中的該等子檔案之次序所暗示的位址來將該卸載組態檔案之子檔案路由至記憶體。
  58. 如請求項56之方法,其中該單元組態卸載處理經由該頂層網路使用藉由於該等可組態單元之該等單元檔案中的該等子檔案之次序所暗示的位址來將該卸載組態檔案之子檔案路由至記憶體。
  59. 如請求項48之方法,包括在執行期間在卸載該組態檔案亦被使用以接收該等子檔案之前使用於該匯流排系統中之路由。
  60. 如請求項48之方法,其中該等單元檔案包含複數個排序過的子檔案,且用於一陣列的可組態單元之該卸載組態檔案被組合使得對於所有相同類型的可組態單元,相同次序之子檔案被儲存於一線性的位址空間中,且使得一子檔案於該卸載組態檔案中之位置對應於該陣列之該子檔案中的該可組態單元及特定於該可組態單元之該單元檔案中之其次序。
TW108142191A 2018-11-21 2019-11-20 可重組態資料處理器的組態加載和卸載 TWI766211B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/197,826 US10831507B2 (en) 2018-11-21 2018-11-21 Configuration load of a reconfigurable data processor
US16/197,826 2018-11-21
US16/198,086 2018-11-21
US16/198,086 US11188497B2 (en) 2018-11-21 2018-11-21 Configuration unload of a reconfigurable data processor

Publications (2)

Publication Number Publication Date
TW202032383A true TW202032383A (zh) 2020-09-01
TWI766211B TWI766211B (zh) 2022-06-01

Family

ID=73643865

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108142191A TWI766211B (zh) 2018-11-21 2019-11-20 可重組態資料處理器的組態加載和卸載

Country Status (1)

Country Link
TW (1) TWI766211B (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US10719470B2 (en) * 2016-09-26 2020-07-21 Wave Computing, Inc. Reconfigurable fabric direct memory access with multiple read or write elements
US10558575B2 (en) * 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator

Also Published As

Publication number Publication date
TWI766211B (zh) 2022-06-01

Similar Documents

Publication Publication Date Title
US11609769B2 (en) Configuration of a reconfigurable data processor using sub-files
CN113272796B (zh) 可重配置的数据处理器
TWI789687B (zh) 可重組態資料處理器的虛擬化
US20230325163A1 (en) Flow control for reconfigurable processors
US11561925B2 (en) Tensor partitioning and partition access order
TW202307689A (zh) 用於緩衝資料以進行處理的多頭多緩衝器
TWI766211B (zh) 可重組態資料處理器的組態加載和卸載
US11983140B2 (en) Efficient deconfiguration of a reconfigurable data processor