TW202127238A - 可重組態架構的編譯器流程邏輯 - Google Patents
可重組態架構的編譯器流程邏輯 Download PDFInfo
- Publication number
- TW202127238A TW202127238A TW109131179A TW109131179A TW202127238A TW 202127238 A TW202127238 A TW 202127238A TW 109131179 A TW109131179 A TW 109131179A TW 109131179 A TW109131179 A TW 109131179A TW 202127238 A TW202127238 A TW 202127238A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- unit
- data
- configurable
- segment
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/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
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Logic Circuits (AREA)
- Devices For Executing Special Programs (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本文揭示技術將高階程式之資料流程圖分割成記憶體分配與執行片段。該記憶體分配表示在處理器上及/或處理器外記憶體中,為了實作該資料流程圖所需之資料所建立之邏輯記憶體空間。該執行片段表示對該資料之操作。本揭示技術指定該記憶體分配給虛擬記憶體單元,以及指定該執行片段給虛擬計算單元。本揭示技術將該執行片段分割成記憶體片段與計算片段,並分配該記憶體片段到該虛擬記憶體單元,以及分配該計算片段到該虛擬計算單元。本揭示技術接著分配該虛擬記憶體單元到實體記憶體單元,以及分配該虛擬計算單元到實體計算單元。其接著將該實體記憶體單元與該實體計算單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路。
Description
本技術相關於可重組態架構之編譯器流程,以及可更明確地應用到針對粗粒度可重組態架構與其他經分配執行系統之編譯器流程邏輯。
優先申請案
本應用主張於2019年8月8日提交的題為“COMPILER FLOW LOGIC FOR RECONFIGURABLE ARCHITECTURES(可重組態架構的編譯器流程邏輯)”的美國申請案No.16/536,192的優先權和權益(律師案卷號:SBNV 1006-2)。
併入
出於所有目的,以下內容透過引用而併入本文中,如同在本文中完整闡述其一般:
於2019年1月3日提交的美國非臨時專利申請案No.16/239,252,標題為“VIRTUALIZATION OF A RECONFIGURABLE DATA PROCESSOR(可重組態資料處理器的虛擬化)”(代理人案卷號:SBNV 1000-1);
於2018年11月21日提交的美國非臨時專利申請案No.16/197,826,標題為“CONFIGURATION LOAD OF A RECONFIGURABLE DATA PROCESSOR(可重組態資料處理器的組態載入)”(代理人案卷號:SBNV 1001-1A);
於2018年11月21日提交的美國非臨時專利申請案No.16/198,086,標題為“CONFIGURATION UNLOAD OF A RECONFIGURABLE DATA PROCESSOR(可重組態資料處理器的組態卸載)”(代理人案卷號:SBNV 1001-1B);
於2019年1月29日提交的美國非臨時專利申請案No.16/260,548,標題為“MATRIX NORMAL/ TRANSPOSE READ AND A RECONFIGURABLE DATA PROCESSOR INCLUDING SAME(矩陣一般/轉置讀取和包括相同者之可重組態的資料處理器)”(代理人案卷號:SBNV 1005-1);以及
於2019年5月9日提交的美國非臨時專利申請案No.16/407,675,標題為“CONTROL FLOW BARRIER AND RECONFIGURABLE DATA PROCESSOR(控制流障壁與可重組態資料處理器)”(代理人案卷號:SBNV 1007-1)。
本節中所論及之標的不應僅由於在本節中提及而被認為是先前技術。相似的,在本節中論及或與提供作為先前技術之標的相關之問題不應被假定已先前被識為是在先前技術中。在本區段中的標的僅表示不同的方式,其本身亦可對應於所主張技術之實作。
可重組態處理器(包括現場可程式閘極陣列(FPGA))可經組態以相較於使用執行電腦程式之通用處理器更高效或更快之方式實作各式各樣功能。所謂粗粒度可重組態架構(CGRA)正在被研發,其中在陣列中的可組態單元比典型上更精細顆粒之FPGA中所用者更為複雜,且可賦能各種類型功能之更快或更高效執行。舉例而言,CGRA已被提出為可為機器學習與人工智慧工作量實現高能效的加速器。請見,Prabhakar等人,「Plasticine: A Reconfigurable Architecture for Parallel Patterns」,ISCA’17,2017年6月24-28,多倫多,ON,加拿大。
當性能、功率、或能量效率是最重要處,CGRA是極具吸引力之平台。CGRA是粗粒度可重組態計算與記憶體元件之組成,該等元件可透過使用可重組態互連構造而以某種特定拓樸互連在一起。其被稱為粗粒度可重組態之原因在於在該架構中的可重組態組件是在諸如指令、字、及字之向量等較粗糙粒度上操作,相對於在諸如FPGA等架構中普遍找到的細粒度、位元層級之粒度。透過將可重組態計算與記憶體組件連接到客製化、深度巢套且階層式之管線中,CGRA中的可程式資料與控制路徑使得其自然適合利用應用程式中的巢套並行性。
當代應用程式通常具有若干層級之巢套迴圈層級,並包含在多層級巢套中的並行性。針對此等深度巢套之迴路,習知的迴路管線操作方法(其僅專注在最內層迴路之主體)通常利用不足夠的並行性,並且造成差的硬體運用性,結果導致差的性能、功率或能量效率。
高效的編譯器技術賦能程式設計師得以使用高階程式語言描述應用程式,雖然大部分的最佳化都是自動化發生的。已經提出可以自動將高階程式語言轉譯成一階層之管線(pipeline)與在FPGA上的狀態機器之編譯器。請參見Koeplinger等人著作之「Spatial: A Language And Compiler For Application Accelerators」,Proceedings Of The 39th ACM SIGPLAN Conference On Programming Language Design And Implementation
(對程式設計語言與實作之第39屆ACM SIGPLAN會議論文集)(PLDI),2018。
要達到預期的性能、功率、和能量效率,關鍵取決於編譯器技術。CGRA編譯器比常規編譯器更為複雜,因為其必須(i)執行程式碼分析,以在多層級之巢套處,擷取出工作、資料與管線化並行性(ii)在空間與時間兩者上,分割與排程對該可重組態元件之操作,(iii)置入對該可重組態元件之操作,以及(iv)在可重組態元件之間路由該資料與控制相依性。
因此,出現了將巢套迴圈有效地映射到CGRA的可重組態元素的機會。可產生改進之並行化與硬體運用性。
及
以下說明經呈述以使得在該技術領域中具有通常知識者能夠製造和使用揭示技術,並且在特定應用及其需求的背景下提供以下說明。對於該技術領域中具有通常知識者而言,對所揭示實作的各種修改是顯而易見的,並且在不脫離所揭示技術的精神和範圍之前提下,本文定義的一般原則可以應用於其他實作和應用中。因此,揭示技術並不旨在受限制於所示實作中,而其應符合與本文揭示的原理和特徵一致的最寬範圍。
可重組態資料處理器與編譯器
圖1是系統圖式,其描繪的系統包括編譯器196、主機120、記憶體140、以及可重組態資料處理器110。如圖1之實例所示,可重組態資料處理器110包括一陣列190之可組態單元以及組態載入/卸載控制器195。用語「組態載入/卸載控制器」(如本文所用)參照一組合之組態載入控制器與組態卸載控制器。可使用分離邏輯與資料路徑資源實作組態載入控制器與組態卸載控制器,或如特定實施例適合般使用共享邏輯與資料路徑資源來實作組態載入控制器與組態卸載控制器。在若干實施例中,系統可僅包括本文所述之類型的組態載入控制器。在若干實施例中,系統可僅包括本文所述之類型的組態卸載控制器。
該陣列190之可組態單元的組態涉及由編譯器196對組態描述進行之編譯,以產生組態檔案198(有時被稱為位元流或位元檔案),並將該組態檔案198分佈到陣列190上之可組態單元。在一實施例中,編譯器196提供從應用程式到位元檔案之轉譯。
處理器110包括外部I/O介面130與150,該外部I/O介面130連接到主機120以及該外部I/O介面150連接到記憶體140。I/O介面130、150經由匯流排系統115連接到該陣列190之可組態單元與連接到該組態載入/卸載控制器195。匯流排系統115可具有承載一資料塊之匯流排寬度,其可在本實例中是128位元(全文對128位元之參考可一般而言被視成一例示性塊尺寸)。一般而言,該組態檔案塊可具有數量N個位元之資料,以及匯流排系統可經組態以在一匯流排週期中轉移N位元之資料,其中N是任何實際之匯流排寬度。在分佈序列中分佈之次檔案(sub-file)可包含一塊,或如特定實施例適合之其他資料量。程序(Procedure)在本文中是使用各包括一資料塊的次檔案描述。當然,該技術可經組態以分佈不同大小之次檔案,包括例如可包含在兩匯流排週期中分佈兩塊之次檔案。
使用組態檔案將陣列190之可組態單元中的可組態單元進行組態,主機120可將組態檔案經由介面130、匯流排系統115、以及可重組態資料處理器110中的介面150傳送到記憶體140。主機120經由匯流排系統125連接到介面130。記憶體140經由匯流排系統145連接到介面150。可以許多種方式載入組態檔案以適配特定之架構,包括載入到可組態處理器110外部之資料路徑中。該組態檔案可以從記憶體140經由記憶體介面150而取回。組態檔案之塊(chunk)可接著以本文所述分佈序列(distribution sequence)被傳送到可重組態資料處理器110中該陣列190之可組態單元中的可組態單元。
外部時脈產生器170或其他時脈訊號來源可對可重組態資料處理器110中的元件提供時脈訊號175或數個時脈訊號,該元件包括該陣列190之可組態單元、匯流排系統115、與外部資料I/O介面。
圖2是變換高階程式用於映射到可重組態資料處理器100上的一實作之方塊圖200。應用程式映射到可重組態資料處理器100上涉及將算數與邏輯操作映射到可重組態資料處理器100之可重組態單元。使用機器學習框架(例如PyTorch,ONNX和Tensorflow)或高階程式語言(例如C,C++,Java,Python或Spatial)以高抽象層次指定設計。請參見Koeplinger等人著作之「Spatial: A Language And Compiler For Application Accelerators」,Proceedings Of The 39th ACM SIGPLAN Conference On Programming Language Design And Implementation
(PLDI)(對程式設計語言與實作之第39屆ACM SIGPLAN會議論文集)、第43屆國際電腦架構研討會論文集,2018。所提出技術是用以自動化產生實作在高階抽象所述行為之組態位元結構。
編譯器流程
高階程式202是以諸如(但不限於C,C++,Java,Python或Spatial)等程式語言撰寫之應用程式或原始碼。舉例而言,高階程式202可以若干不同尺寸之層與資料類型來實作卷積類神經網路(CNN)處理,以使得各層包含具有不同特性之若干巢套迴圈。舉例而言,高階程式202可涉及記憶體操作,以存取輸入與權重;以及涉及浮點運算,以執行矩陣乘法。作為另一實例,高階程式202可包括具高迭代計數之巢套迴圈以及從先前層載入並將輸入數值乘以接續層之權重以產生接續層之輸出之的迴圈主體。高階程式202具有最外層迴圈主體之迴圈層級並行性,其可透過使用粗粒度管線操作來利用。其具有最內層迴圈主體之指令層級並行性,可透過使用迴圈展開、SIMD向量化與管線操作來利用。
有關迴圈、直接巢套在迴圈主體內之迴圈被定術語成外部之父迴圈之子迴圈。若一迴圈不具有任何子迴圈(亦即,在其主體內無任何巢套迴圈),則該迴圈被稱作最內層迴圈。若一迴圈不具有父迴圈(亦即,其不是被巢套在另一迴圈之主體內),則該迴圈被稱作最外層迴圈。一不完美巢套迴圈具有非迴圈聲明(例如,基本算術,邏輯和關係運算)以及一或多子迴圈之混和的一主體。在不完美巢套循環中的並行性可以在任何或全部的迴圈層級上利用,以及在包含迴圈主體之操作中利用。並行性可以數種型態發生,諸如細粒度、粗粒度管線並行性、資料並行性與工作並行性。
在動作1,資料流程圖產生器204產生高階程式202之資料流程圖206。編譯會將輸入行為描述(input behavioral description )變換成中間表示法。此第一步驟可包括各種程式碼最佳化,諸如假資料依賴性消去、死碼消去以及常數摺疊。由編譯所產生之中間表示法顯現操作之間的資料與控制相依性。
在資料流程圖206中的節點表示控制結構、資料操作、以及記憶體分配,而邊緣代表資料與效應相依性。在程式中的各迴圈在中間表示法中被表示成「控制器」。資料流程圖206支援分支、迴圈、函數呼叫以及其他控制相依性之變體。一旦建構好資料流程圖206,可執行專注在包括迴圈展開、迴圈管線操作、迴圈裂變/融合與迴圈分塊等迴圈變換之額外分析或最佳化。
在動作2,分割器214將資料流程圖206分割成記憶體分配224與執行片段222。有關執行片段222,其表示對該資料之操作。執行片段可包含表示工作量的部分之程式。執行片段可包含涵蓋一組循環、一組圖表節點、或若干其他需要同步的工作單元之計算。執行片段可包含固定或可變工作量,如視工作需求。相似的,執行片段222中不同片段可包含不同的計算量。執行片段222可表示並行模式或並行模式之部分。另外,執行片段222是異步可執行的。
在一實施例中,分割器214包含記憶體分配器216與執行片段產生器212,該記憶體分配器216產生記憶體分配224以及該執行片段產生器212產生執行片段222。在一實施例中,該資料流程圖206之分割成該執行片段222更包括將該資料流程圖206之巢套迴圈的至少一最內層迴圈內之計算視為分離的執行片段。在另一實施例中,該資料流程圖206之分割成該執行片段222更包括將該資料流程圖206之該最內層迴圈周圍的外部迴圈之計算視為分離的執行片段。在不完美巢套迴圈之情況下,迴圈主體內中直到該迴圈主體內的巢套迴圈起始處之操作被分組在一起成為分離之執行片段。
有關記憶體分配224,其表示在晶載及/或晶片外記憶體中,為了實作該資料流程圖206所需之資料所建立之邏輯記憶體空間。記憶體分配224界定硬體資源(功能單元、儲存器或連接組件)之數量與類型。主記憶體(簡稱為DRAM)是晶片外記憶體之一實例,對其進行記憶體分配224。高速暫存記憶體(或稱作,SRAM)是晶載記憶體之一實例,對其進行記憶體分配224。可以為應用程式中常見的各種常見存取模式和佈局進行記憶體分配224的其他記憶體類型。此種記憶體類型之實例包括唯讀查找表(LUT)、固定尺寸佇列(FIFO)以及暫存器檔案。
在動作3,指定器232指定該記憶體分配224給虛擬記憶體單元244,以及指定該執行片段222給虛擬計算單元242。
在動作4,執行片段分割器252將執行片段222分割成記憶體片段264與計算片段262。各記憶體片段包括導致記憶體存取之位址計算。該計算片段包含在父執行片段之所有其他的操作。在一實施例中,各執行片段被分解成複數個記憶體片段以及僅只一個計算片段。編譯器196使用反向資料流分析來執行分割,使得在記憶體存取中對位址之輸入遞迴帶旗標(flagged),直到編譯器196到達常數值或(界限)迴圈/模式迭代器。取決於在原始迴圈主體中存在多少個記憶體存取,單一執行片段可產生一或多記憶體片段。在橫跨多個記憶體存取共享相同記憶體定址邏輯之情況下,位址計算可以被複製以從相同執行片段產生多個記憶體片段。
該執行片段222之該記憶體片段264經組態以在資料結構中設索引。該記憶體片段264之至少一者在該記憶體分配224之一中的該邏輯記憶體空間中的資料結構中設索引。各計算與記憶體片段保存有關其迴圈主體直接包含對應執行片段中的操作之所有迴圈的資訊。在一實施例中,此對應將各迴圈之迴圈迭代器的計算複製到各計算與記憶體片段中。此複製允許各片段可以保存與原始程式相同的迭代行為,同時也允許循環迭代器之分散式計算(distributed calculation)。
在動作5,分配器266將該記憶體片段264分配到該虛擬記憶體單元244,以及將該計算片段262分配到該虛擬計算單元242。虛擬記憶體單元244實作對應的記憶體片段264。虛擬計算單元242實作對應的計算片段262。
各記憶體片段在操作方面被映射到對應於正被存取之記憶體的虛擬記憶體單元。各操作被降低到針對該虛擬記憶體單元之其對應組態中間表示法(IR)。各計算片段在操作方面被映射到一新分配之虛擬計算單元。各操作被降低到針對該虛擬計算單元之其對應組態中間表示法(IR)。
在動作6,分配器274將該虛擬記憶體單元244分配到實體記憶體單元284,以及將該虛擬計算單元242分配到實體計算單元282。
在動作7,放置器與路由器286將該實體記憶體單元284與該實體計算單元282放置於該陣列100之可組態單元的位置上,並在該放置位置之間路由資料與控制網路。在一實施例中,此更包括分配實體資源,諸如在各實體記憶體與計算單元中的計數器與暫存器。
在動作8,位元檔案產生器292存取由放置器與路由器286所產生之放置與路由資訊296,並產生具有針對放置位置與路由資料及控制網路之組態資料的位元檔案198。在一實施例中,此包括由放置與路由單元分配實體記憶體與計算單元之座標與通訊資源到該陣列100之可組態單元上,同時將頻寬最大化且將潛時最小化。
在動作9,組態載入/卸載控制器195將該位元檔案198載入該陣列100之可組態單元,並導致該陣列100之可組態單元實作該資料流程圖206。
拆分
圖3是分配該虛擬記憶體單元244到多個實體記憶體單元284、285以及分配該虛擬計算單元242到多個實體計算單元282、283的一實作之方塊圖300。這是由分配器274在圖3之動作6中完成。在一實施例中,該分配滿足該多個實體記憶體單元284、285與該多個實體計算單元282、283之硬體限制條件。
在一實施例中,該分配至少部分取決於由特定實體計算單元所接受之數個輸入。在一實施例中,作為第一步驟,在各虛擬記憶體與計算單元中,將操作移除直到虛擬記憶體與計算單元是實體可實現。在一實施例中,作為第二步驟,該移除操作被分組為分離且新的虛擬記憶體與計算單元。在一實施例中,此等兩步驟被重複執行,直到所有的虛擬記憶體與計算單元是實體可實現。在一實施例中,取決於原始虛擬記憶體與計算單元中的相依性,編譯器196接著添加資料與控制通訊通道到虛擬記憶體與計算單元之間的IR。
在本申請案之上下文中,「實體可實現」是透過使用分析與目標架構參數來建模。在一實施例中,參數包括在實體記憶體單元中可用之晶載SRAM的容量、算數邏輯單元(ALU)階之數量、每階之暫存器之數量、各ALU階之能力、在ALU與暫存器之間可用之連接、以及在該暫存器之間可用之連接。在一實施例中,其中操作被移除之順序可有所不同且是基於其目標函數在於最小化實體可實現單元之最終數量的試探式方法。在其他實施例中,可應用具有不同目標函數之試探式方法,以將總執行時間最小化,這可以增加實體可實現單元之數量。
在動作7,該放置器與路由器286將該多個實體記憶體單元284、285與該多個實體計算單元282、283放置於該陣列100之可組態單元的位置上,並在該放置位置之間路由資料與控制網路。
在動作8,該位元檔案產生器292存取由放置器與路由器286所產生之放置與路由資訊296,並產生具有針對放置位置與路由資料及控制網路之組態資料的位元檔案198。
在動作9,組態載入/卸載控制器195將該位元檔案198載入該陣列100之可組態單元,並導致該陣列100之可組態單元實作該資料流程圖206。
融合
圖4是將該多個實體記憶體單元402、404、406融合到單一實體記憶體單元424中以及將該多個實體計算單元402、404、406融合到單一實體計算單元424中的一實作之方塊圖400。這是由融合器424基於融合邏輯416在圖4之動作7中完成。融合之目標在於透過封裝到實體記憶體與計算單元中的較佳封裝操作以降低資源浪費。在一實施例中,術語「空間上的融合(fusion in space)」,為求效率,二或更多具利用不足的資源之實體記憶體或計算單元可以被結合成具有較高資源運用之單一記憶體或計算單元,前提在於產生資源運用仍是實體可實現。在另一實施例中,術語「時間上的融合(fusion in time)」,透過排程二或更多實體記憶體或計算單元以如分離執行上下文般序列性執行於單一且新的實體記憶體或計算單元中,該等二或更多實體記憶體或計算單元可以被結合。仍在其他實施例中,可採用融合規則在空間與時間上之結合,前提是若此種最佳化的組合在編譯流程方面被視為是有利的。可使用試探式方式、搜尋演算法或其他演算法最佳化技術來判定融合規則。
在一實施例中,該融合至少部分取決於在實體記憶體單元中可用之晶載SRAM的容量、以及該單一實體計算單元內ALU階之數量。在一實施例中,在空間上該融合包括對該單一實體計算單元424執行多個操作,該多個操作否則是在不同時脈週期對分離的實體計算單元402、404、406所執行。在一實施例中,在時間上該融合包括對該單一實體計算單元424,如同在分離的執行情境下般,序列地執行該多個操作。在一實施例中,分組到特定實體計算單元之該資料流程圖206中的複數個操作被映射到該特定實體計算單元內之資源上。在其他實施例中,使用試探式方式來找尋所需實體記憶體與計算單元之數量與達到性能之間的取捨。
在動作8,該放置器與路由器286將該單一實體記憶體單元424與該單一實體計算單元424放置於該陣列100之可組態單元的位置上,並在該放置位置之間路由資料與控制網路。
在動作9,該位元檔案產生器292存取由放置器與路由器286所產生之放置與路由資訊296,並產生具有針對放置位置與路由資料及控制網路之組態資料的位元檔案198。
在動作10,組態載入/卸載控制器195將該位元檔案198載入該陣列100之可組態單元,並導致該陣列100之可組態單元實作該資料流程圖206。
在若干實施例中,參照圖2、3與4所討論之編譯器流程邏輯是由編譯器196所實作。
ResNet 實例
高階程式
圖5示出PyTorch之高階程式202之實例。此實例實作殘差類神經網路(residual neural network,ResNet)區塊,其一般用於在自動化影像分類中廣泛使用的卷積類神經網路(Convolutional Neural Network,CNN)之類型。ResNet架構包含若干層之卷積操作,其中各層對先前層與當前層之權重過濾器之輸出執行若干卷積操作。ResNet架構亦包含跳過連接,其將若干層之輸出連接到在該網路中更進一步層之輸入,「跳過」其之間的二或三層。ResNet模型亦包含非線性函數,諸如 ReLU 以及其間批次正規化。批次正規化是一種加速深層網路訓練之方法,其透過使資料標準化成為網路架構之核心部分。
資料流程圖
圖6描繪ResNet區塊600之資料流程圖206之一實例。此實例對輸入602執行卷積612,並產生輸出614。批次正規化622是對輸出614執行以產生輸出624。批次一般輸出624接著在零與最大正數值間被ReLU啟用632線性化,以產生ReLU啟動輸出634。平均池化642是對ReLU啟動輸出634執行以產生平均池化之輸出644。該平均池化輸出644接著被饋送到線性層652(例如,完全連接之網路)作為輸入,以產生ResNet區塊600之最終輸出654。線性層652具有1000個神經元(權重)。
輸入602之維度是4 x 3 x 224 x 224,其中4是批次尺寸,3是輸入通道之數量(例如,RGB影像通道),224是輸入寬度(例如,影像中像素行之數量),以及224是輸入高度(例如,影像中像素寬度之數量)。卷積612之維度是64 x 3 x 7 x 7,其中64是卷積過濾器之數量,3是各卷積過濾器中核心之數量,7是核心寬度(例如,核心中權重行之數量),以及7是核心高度(例如,核心中權重列之數量)。輸出614之維度是4 x 64 x 112 x 112,其中4是批次通道,64是輸出通道之數量,112是輸出寬度(例如,特徵映射圖中特徵行之數量),以及112是輸出高度(例如,特徵映射圖中特徵列之數量)。最終輸出654之維度是4 x 100,其中4是批次通道以及1000是輸出通道之數量。
中間表示法與分區
圖7A、7B、7C示出ResNet架構之子集的例示性實作,示出成高階程式202,其在內部表示成資料流程圖206。在一實施例中,高階程式可以是以空間高階程式語言進行撰寫。請參見D. Koeplinger等人著作之「Spatial: A Language And Compiler For Application Accelerators」,Proceedings Of The 39th ACM SIGPLAN Conference On Programming Language Design And Implementation
(PLDI)(對程式設計語言與實作之第39屆ACM SIGPLAN會議論文集)、第43屆國際電腦架構研討會論文集,2018。
圖7A、7B與7C描繪將資料流程圖206分割成記憶體分配224與執行片段222之一實例。在圖7A、7B與7C中, 斜體字
程式碼識別出記憶體分配224,以及粗體字
程式碼識別出執行片段222。第一記憶體分配701為輸入602分配晶載SRAM中記憶體空間。第二記憶體分配702為卷積612分配晶載SRAM中記憶體空間。第三記憶體分配703為輸出614分配晶載SRAM中記憶體空間。
第一執行片段704在輸入602與卷積612之卷積權重之間實作卷積612。第二執行片段705實作輸出614之累積。
第四記憶體分配706為批次正規化622之輸出624分配晶載SRAM中記憶體空間。第五記憶體分配707為批次正規化622之縮放數值分配晶載SRAM中記憶體空間。第六記憶體分配708為批次正規化622之偏壓(bias)數值分配晶載SRAM中記憶體空間。
第三執行片段709實作批次正規化622之平均值計算1302。第四執行片段710實作批次正規化622之平均值正規化1206。
在圖7B中,第五執行片段711實作批次正規化622之變異值計算1304。第六執行片段712實作批次正規化622之變異值正規化1207。第七執行片段713實作批次正規化622之輸出624之計算。
第七記憶體分配714為ReLU啟用632之輸出634分配晶載SRAM中記憶體空間。第八執行片段715實作ReLU啟用632之輸出634之計算。
第八記憶體分配716為平均池化642之輸出644分配晶載SRAM中記憶體空間。第九執行片段717實作平均池化642之輸出644之計算。第十執行片段718實作平均池化642之輸出644之累積。
在圖7C中,第九記憶體分配719為線性層652之神經元(權重)分配晶載SRAM中記憶體空間。第十記憶體分配720為最終輸出654分配晶載SRAM中記憶體空間。第十一執行片段721實作最終輸出654之計算。
指定
圖8示出實例,其指定該記憶體分配224給虛擬記憶體單元244以及指定該執行片段給虛擬計算單元242之一實作。在圖8中,在圖7A、7B與7C中的十個記憶體分配224被分別指定一對應虛擬記憶體單元(VMU)。亦在圖8中,在圖7A、7B與7C中的十一個執行片段被分別指定一對應虛擬計算單元(VCU)。
執行片段分割
圖9A與9B示出將該執行片段222分割成記憶體片段264與計算片段262之一實作。圖9A示出第一執行片段704,其在輸入602與卷積612之卷積權重之間實作卷積612,該第一執行片段704被分割成第一記憶體片段901、第二記憶體片段902與計算片段903。圖9B也示出由第一與第二記憶體片段901、902(MF1a、MF1b)所計算出用於記憶體存取之各別的位址。
圖10描繪各別的分配該記憶體片段901、902到該虛擬記憶體單元1002、1022(VMU 1、VMU 2)以及分配該計算片段903到該虛擬計算單元1014(VCU 1)之一實作。位址計算901、902(MF1a、MF1b)各別以分配904、905(A1、A2)來分配到虛擬記憶體單元1002、1022(VMU 1、VMU 2)。
圖11描繪映射該虛擬記憶體單元1002、1022(VMU 1、VMU 2)到一或多實體記憶體單元1102、1112、1122、1132、1142(PMU 1_0、PMU 1_1、PMU 2_0、PMU 2_1、PMU 2_2)以及映射該虛擬計算單元1014(VCU 1)到一或多實體計算單元1104、1124(PCU 1_0、PCU 1_1)之一實作。
虛擬記憶體單元1002(VMU 1)被映射到實體記憶體單元1102(PMU 1_0)以及實體記憶體單元1112(PMU 1_1)。虛擬記憶體單元1002(VMU 1)之原始位址指定904(A1)分別被表示成實體記憶體單元1102、1112(PMU 1_0、PMU 1_1)之重複的位址指定1101、1102(A1_0、A1_1)。
虛擬記憶體單元1022(VMU 2)被映射到實體記憶體單元1122(PMU 2_0)、實體記憶體單元1132(PMU 2_1)以及實體記憶體單元1142(PMU 2_1)。虛擬記憶體單元1022(VMU 2)之原始位址指定905(A2)分別被表示成實體記憶體單元1122、1132、1142(PMU 2_0、PMU 2_1、PMU 2_2)之重複的位址指定1103、1104、1105(A2_0、A2_1、A2_2)。
虛擬計算單元1014(VCU 1)被映射到實體計算單元1104(PCU 1_0)以及實體計算單元1124(PCU 1_1)。
圖12A與12B描繪映射執行片段713到具有四個輸入之虛擬計算單元(VCU 7)之一實例。執行片段713被分割成第一記憶體片段1201、第二記憶體片段1202、第三記憶體片段1203、第四記憶體片段1205、以及計算片段1204。
在圖12B中,由於虛擬計算單元(VCU 7)具有四個輸入,其能夠處理全部四個記憶體片段1201、1202、1203、1205以為執行片段713計算出計算片段1204。
當單一實體計算單元不足以執行映射到虛擬計算及/或記憶體單元之執行片段時,則可使用拆分以映射虛擬計算及/或記憶體單元到多個實體計算及/或記憶體單元。多個實體計算及/或記憶體單元接著一起執行該執行片段。
看到圖12C,考慮到單一實體計算單元僅具有三個輸入。然而,虛擬計算單元(VCU 7)具有四個輸入。為應付此狀況,使用兩個實體計算單元(PCU 7_0與PCU 7_1)以為執行片段713計算該計算片段1204。這可透過將虛擬計算單元(VCU 7)映射到兩個實體計算單元(PCU 7_0 與 PCU 7_1)來達成。
圖13A是融合實體計算單元與實體記憶體單元之一實例。在圖13A中,實作各種記憶體片段與計算片段之實體計算單元與實體記憶體單元相連接。該連接遵循資料流程圖206所需之資料與控制相依性。
空間上融合
圖13B說明在空間上該融合之一實例,其是透過對該單一實體計算單元執行多個操作,該多個操作否則是在不同時脈週期對分離的實體計算單元所執行。在圖13B中,PCU 3_0與PCU 4_0被結合成單一個PCU 3_0_4_0。另外,PCU 5_0與PCU 6_0被結合成單一個PCU 5_0_6_0。
時間上融合
圖13C示出在時間上該融合之一實例,其是透過對該單一實體計算單元,如同在分離的執行情境下般,序列地執行該多個操作。在圖13C中,PCU 3_0、PCU 4_0、PCU 5_0與PCU 6_0被結合成單一個PCU 3_0_4_0_5_0_6_0。這表示單一PCU 3_0_4_0_5_0_6_0針對一時間片段執行該融合的計算片段1302、1206(CF 3/4),接著改變情境並執行該融合的計算片段1304、1207(CF 5/6)。在CF 3/4之後的數值是傳遞回到該單元(由於其是用作對CF 5/6之輸入的中間數值)。此自迴圈之實作取決於硬體實施例,但可實作成PCU中內部暫存器或記憶體,或透過將PCU之輸出饋送回給自己來使用外部網路。在另一實施例中,饋送回到PCU之資料可以被儲存在分離記憶體單元中,諸如PMU或一組PMU中。
可重組態片(Reconfigurable Tile)
圖14A是一片(tile)與在圖1可重組態資料處理器中可用陣列層級網路之簡略圖1400。圖14B描繪與陣列層級網路中的元件連接之例示性交換單元。在本實例中,該陣列之可組態單元300包括複數類型之可組態單元。在本實例中,可組態單元之類型包括模式計算單元(Pattern Compute Unit,PCU),模式記憶體單元(Pattern Memory Unit,PMU),交換單元(switch unit,S)與位址產生與合併單元(各包括兩個位址產生器AG與共享CU)。有關此等類型之可組態單元的功能之實例,請見Prabhakar等人著「Plasticine: A Reconfigurable Architecture For Parallel Patterns」,ISCA ’17, June 24-28, 2017, Toronto, ON, Canada,其透過對其參照而如在本文中完全陳述般將其併入。
各個此等可組態單元包含組態儲存(configuration store),包含一組代表執行程式的設定或序列之暫存器或正反器,並且可以包括巢套迴圈的數量、每個迴圈迭代器的限制、各階(stage)要執行的指令、運算元的來源以及輸入和輸出介面的網路參數。
額外地,此等可組態單元各包含組態儲存,包含一組暫存器或正反器,其儲存可用以追蹤巢套循環中進度或他者之狀態。組態檔案198包含表示執行該程式之各組件的初始組態(或開始狀態)之位元流。此位元流被稱為位元檔案。程式載入是在陣列190之可組態單元中基於位元檔案之內容來設定好組態儲存之處理,以允許所有組件可以執行程式(亦即,機器)。程式載入也可能需要所有PMU記憶體之載入。
陣列層級網路包括將陣列中可組態單元互連之鏈接。陣列層級網路中的鏈接包括一或多(且在本案之情況下,三種)實體匯流排:塊層級之向量匯流排(例如,128位元之資料)、字層級之純量匯流排(例如,32位元之資料)、以及多位元層級之控制匯流排。舉例而言,交換單元1411與1412之間的互連1421包括具128位元之向量匯流排寬度的向量匯流排互連、具32位元之純量匯流排寬度的純量匯流排互連、與控制匯流排互連。
該三種實體匯流排在轉移之資料粒度方面有所不同。在一實施例中,向量匯流排可承載一包括16-Bytes(=128位元)之資料的塊作為其酬載。純量匯流排可具有32-bit之酬載,並承載純量運算元或控制資訊。控制匯流排可承載諸如符記與其他訊號之控制交握(handshake)。向量與純量匯流排可為封包交換的,包括指示各封包目的地之標頭與諸如序列號等其他資訊,該序列號等其他資訊可用以當接收到封包順序亂掉時重組一檔案。各封包標頭可包含目的地識別符,其識別目的地交換單元之地理座標(例如,陣列中的行與列);以及包括介面識別符,其識別在目的地交換器(例如,東南西北等)上用以到達目的地單元之介面。控制網路可以是例如基於裝置中計時電路來進行交換(switched)之電路。組態載入/卸載控制器可產生用於128位元的各組態資料塊之標頭。該標頭被傳輸於標頭匯流排上,傳輸到該陣列190之可組態單元中的各可組態單元。
在一實例中,128位元之資料塊經傳輸於向量匯流排上,該向量匯流排將該塊提供成向量輸入到可組態單元。向量匯流排可包括128個酬載線,以及一組標頭線。該標頭可包括針對各塊之序列ID,其可包括:
一位元,以指示該塊是暫用記憶體(scratchpad memory)或是組態儲存資料。
數個位元,其形成塊編號。
數個位元,其指示行識別符。
數個位元,其指示列識別符。
數個位元,其指示組件識別符。
針對載入操作,組態載入控制器可將數量N個塊以N-1到0之順序傳送到可組態單元。對此實例而言,以塊5>塊4>塊3>塊2>塊1>塊0(Chunk 5->Chunk 4->Chunk 3->Chunk 2->Chunk 1->Chunk 0)的最高有效位元優先的順序發送6個塊。(應註明,該最高有效位元優先的順序將導致塊5在分佈序列之第0輪從陣列組態載入控制器予以分配)針對卸載操作,組態卸載控制器可照順序寫出卸載資料到記憶體。針對載入與卸載操作兩種操作而言,在可組態單元中組態資料儲存裡的組態序列鏈裡的移位是從LSB(最低有效位元)到MSB(最高有效位元),或MSB先出。
圖14B描繪與陣列層級網路中的元件連接之例示性交換單元。如圖14B之實例所示出,交換單元可具有8個介面。該交換單元之東南西北介面(North, South, East and West interface)被用以在交換單元之間進行連接。該交換單元的最東南西北之介面各用以連接到PCU或PMU實例。各片象限中一組2個交換單元具有到位址產生與合併單元(AGCU)與合併單元(CU)之連接,該AGCU包括多個位址產生(AG)單元且該CU連接到多個位址產生單元。合併單元(CU)在AG之間進行仲裁併並處理記憶體請求。交換單元之8個介面各可包括向量介面、純量介面、以及控制介面,以與向量網路、純量網路、與控制網路進行通訊。
在組態後執行機器期間,可透過使用在陣列層級網路上一或多交換單元之(一或多)向量介面與向量匯流排,以經由一或多單元交換器與在該等單元交換器之間的一或多鏈接來將資料傳送到可組態單元。
在本文所述實施例中,在將片進行組態之前,組態檔案或位元檔案198可透過使用相同的向量匯流排以從組態載入控制器,經由一或多單元交換器與在該等單元交換器之間的一或多鏈接,傳送到可組態單元,其使用在陣列層級網路上一或多交換單元之(一或多)向量介面與向量匯流排。舉例而言,可以經由組態載入/卸載控制器1401與交換單元1411之西(West,W)向量介面之間的鏈接1420、經由交換單元1411、並經由交換單元1411之東南(Southeast,SE)向量介面與PMU 1441之間的鏈接1431,將特定於可組態單元PMU 1441的單元檔案中的組態資料塊從該組態載入/卸載控制器1401發送到PMU 1441。
在本實例中,AGCU中一者經組態以成為主AGCU,其包括組態載入/卸載控制器(例如,1401)。主AGCU實作暫存器,透過該暫存器,主機(圖1之120)可傳送指令經由匯流排系統到達主AGCU。主AGCU控制對片中一陣列之可組態單元的操作並實作程式控制狀態機器,以基於其通過對登記寫入而自主機接收到的指令以追蹤該片之狀態。對每個狀態轉換,主AGCU透過菊花鏈拓撲指令匯流排(daisy chained command bus)發出指令到該片上所有組件(圖15)。該指令包括程式重置指令,以將片內一陣列之可組態單元中的可組態單元重置,以及包括程式載入指令,以將組態檔案載入可組態單元中。
主AGCU中的組態載入控制器負責從記憶體讀取組態檔案,並將組態資料傳送到片中每個可組態單元。主AGCU可較佳以頂層級網路之最大產量來從記憶體讀取組態檔案。根據本文所述之分佈序列,從記憶體讀取之資料被主AGCU傳輸透過陣列層級網路上之向量介面,到對應的可組態單元。
在一實施例中,在可降低可組態單元內佈線需求之方式,在一組件中,由組態與狀態暫存器所固持之將在組態載入處理中載入或將在組態卸載處理中被卸載之單元檔案,是連接於序列鏈中,並且可透過通過該序列鏈之移位位元的處理來載入。在若干實施例中,可有多於一個並聯或串聯配置之序列鏈。當可組態單元在一匯流排週期中從主AGCU接收到例如128位元之組態資料時,可組態單元以每週期一位元之速率將本資料移位通過其序列鏈,其中移位器週期可以運行於與匯流排週期相同之速率。可組態單元需花費128個移位器週期,才能將透過向量介面接收到之128位元之資料載入128個組態位元中。128位元之組態資料被稱為塊(chunk)。可組態單元可能需要多個資料塊以將其全部組態位元載入。
可組態單元透過多個記憶體介面(圖1之150)以與記憶體介接。各個記憶體介面可透過使用些許AGCU來存取。各AGCU包含可重組態資料路徑,以產生對晶片外記憶體之請求。各AGCU包含FIFO(先進先出緩衝器,用於組織資料)以將發出指令、資料與從晶片外記憶體來訊的回應緩衝。
在AGCU中的位址產生器AG可產生為緻密或稀疏之記憶體指令。緻密請求可用以批量轉移連續的晶片外記憶體區,且可用以讀取或寫入資料塊到/自該陣列之可組態單元中的可組態單元。緻密請求可以被AGCU中的合併單元(CU)轉換成多個晶片外記憶體突發請求。稀疏請求可將一串流之位址佇列排序到合併單元中。合併單元可使用合併快取以維持對發出晶片外記憶體請求之元資料,以結合屬於相同晶片外記憶體請求之稀疏位址以將發出晶片外記憶體請求之數量最小化。
可重組態單元(Reconfigurable Unit)
圖15是描繪例示性可組態單元1500(諸如模式計算單元(PCU))之方塊圖。在本申請案之上下文中,PCU對應一實體計算單元。該陣列之可組態單元中的可組態單元包括組態資料儲存1520(例如,序列鏈),用以儲存包含對對應可組態單元特定的複數個組態資料塊(或其他大小之次檔案)之單元檔案。該陣列之可組態單元中的可組態單元各包括單元組態載入邏輯1540,其經由線1522連接到組態資料儲存1520,用以執行單元組態載入處理。該單元組態載入處理包括經由匯流排系統(例如,向量輸入)接收對可組態單元特定的單元檔案之塊,並將接收到的塊載入可組態單元的組態資料儲存1520中。
在本實例中,在複數個可組態單元的可組態單元中的組態資料儲存包含序列鏈之鎖存器,其中該鎖存器儲存有控制可組態單元中資源組態之位元。組態資料儲存中的序列鏈可包括用於組態資料之移位暫存器鏈以及用於狀態資訊與串聯連接計數器值之第二移位暫存器鏈。
可組態單元可與純量、向量、與控制匯流排介接,透過使用三種對應組之輸入與輸出(IO)來與其介接,該等輸入與輸出包括:純量輸入/輸出、向量輸入/輸出、以及控制輸入/輸出。純量IO可用以通訊單一字之資料(例如,32個位元)。向量IO可用以通訊資料塊(例如,128個位元),其使用情形諸如在單元組態載入處理中接收組態資料時,以及在橫跨多個PCU之間的一長管線組態之後的操作期間傳輸與接收資料之情形。控制IO可用以通訊控制訊號,諸如可組態單元之執行的開始或結束。控制輸入是由控制區塊1570所接收,以及控制輸出是由控制區塊1570所提供。
使用向量FIFO區塊1560中的向量FIFO來將各向量輸入進行緩衝,該向量FIFO區塊1560可包括一或多向量FIFO。使用純量FIFO 1550來將各純量輸入進行緩衝。使用輸入FIFO會將資料產生者與消費者之間的計時去耦合,並透過使其對輸入延遲失配具有穩健性,簡化可組態單元間控制邏輯。
輸入組態資料1510可被提供到向量FIFO作為向量輸入,並接著被轉移到組態資料儲存1520中。可使用向量輸出從組態資料儲存1520卸載輸出組態資料1530。
CGRA使用菊花鏈拓撲完成匯流排以指示何時載入/卸載指令已完成。主AGCU將程式載入與卸載指令傳輸透過菊花鏈拓撲指令匯流排到陣列之可組態單元中的可組態單元。如圖15之實例所示,菊花鏈拓撲完成匯流排1591與菊花鏈拓撲指令匯流排1592經連接到菊花鏈拓撲邏輯1593,該邏輯1593與單元組態載入邏輯1540通訊。該菊花鏈拓撲邏輯1593可包括載入完整狀態邏輯,如下述。將在下文中進一步描述菊花鏈拓撲完成匯流排。其他用於指令與完成匯流排之拓樸也是可能的,但此處未描述。
在區塊1580中,可組態單元包括多個可重組態資料路徑。可組態單元中的資料路徑可以被組織成多階段(階段1…階段N)、可重組態SIMD(單指令多資料)管線。推進可組態單元中組態序列鏈裡的該數個資料塊包括用於該可組態單元中各資料路徑中各階段的組態資料。組態資料儲存420中的組態序列鏈經由線1521而連接到區塊1580中的多個資料路徑。
在本申請案之上下文中,模式記憶體單元(PMU)對應一實體記憶體單元。PMU可包含與目的用於位址計算的可重組態資料路徑耦接之暫用記憶體,連帶耦接PCU中所用匯流排介面。PMU可用在該陣列之可重組態單元上分配晶載記憶體。在一實施例中,PMU中記憶體內的位址計算是對PMU資料路徑執行,而核心計算是在PCU內執行。各PMU包含與可重組態資料路徑耦接的程式設計師管理之高速暫存記憶體(scratchpad memory),該資料路徑目的主要用於位址計算,以及其他該程式所需之計算操作。PMU是用在該陣列190上分配晶載記憶體。陣列架構使得涉及記憶體位址計算之操作與核心計算基礎應用之間有區隔性。位址計算是對PMU資料路徑執行,而核心計算是在PCU內執行。若干觀察促進了對此設計選項之動機:(i)涉及簡單純量數學之位址計算,其需要比PCU中的ALU更為簡易之ALU;(ii)對於大多數晶載存取模式而言,通常不需要使用多個通道用於位址計算;以及(iii)執行PCU內位址計算需要從PCU路由位址到PMU,其佔據PCU階與輸出鏈路,且可導致PCU利用不足。
PCU與PMU(統稱為『單元』)與三種類型之互連通訊:字層級純量、多個字層級向量、以及位元層級控制互連。陣列190之可組態單元通過多個DDR通道以與DRAM介接。各通道具有相關聯位址管理單元,其在多個位址串流間進行仲裁,並包括緩衝器以支援多個未完成記憶體請求以及位址合併,以將DRAM存取最小化。是在PMU中完成本地位址計算,在DRAM位址管理單元中發生DRAM位址計算,以及剩餘的資料計算是在PCU中發生。高速暫存記憶體被構建有與PCU通道數量匹配之多個SRAM庫。在高速暫存記憶體周圍之位址解碼邏輯可經組態以在若干庫模式之中操作,以支援各種存取模式。跨距庫模式支援在緻密資料結構中常見之線性存取模式。FIFO模式支援串流存取。線緩衝器模式擷取與滑動窗口類似之存取模式。複製模式(Duplication mode,其中橫跨所有的記憶體庫將內容複製)提供多個讀取位址通道以支援平行化之晶載收集操作。
PCU經設計以執行應用程式中最內層並行模式。PCU資料路徑被組織成一多階、可重組態之SIMD管線。此設計賦能各PCU可以實現高計算密度,並利用橫跨各通道(lane)之迴圈層級並行性與橫跨各階(stage)之管線並行性。各SIMD通道之各階是由功能單元(FU)與相關管線暫存器(PR)構成。融合執行32位元之字層級算數與二元操作,包括對浮點與整數運算之支援。作為在SIMD中操作之單一管線階段中的FU,各階僅需要單一組態暫存器。出自各FU之結果被寫入其自身相關聯之暫存器。橫跨管線階段,各通道之PR被串在一起以允許live值在相同通道之內的數階之間傳播。在融合間跨通道之通訊是使用兩種類型之PCU內網路來擷取:降低樹網路,其允許降低來自多個通道之值成為一單一純量,以及移位網路,其允許使用PR如橫跨階段之滑動窗口,以利用模板應用程式中的重用。兩種網路使用PR內之專用暫存器以將硬體負擔最小化。
PCU與總體互連介接,其透過使用三種類型之輸入與輸出(IO):純量、向量、以及控制。純量IO是用以通訊單一字之資料(諸如,摺合(Fold)之結果)。各個向量IO允許在PCU中的每個通道傳送一個字,並用於諸如讀取和寫入PMU中的高速暫存記憶體以及在多個PCU之間的長管線上傳輸中間資料的情況。使用小型FIFO,將各向量與純量輸入進行緩衝。使用輸入FIFO會將資料產生者與消費者去耦合,並透過使其對輸入延遲失配具有穩健性,簡化PCU間的控制邏輯。控制IO是用以通訊控制訊號,諸如PCU之執行的開始或結束或用以指示反壓(backpressure)。
一可重組態鏈之計數器產生模式迭代索引以及控制訊號以協調執行。PCU之執行是在控制區塊賦能該等計數器之一時開始進行。基於應用程式之控制與資料相依性,控制區塊可經組態以結合來自兩者本地FIFO之多個控制訊號以及總體控制輸入以觸發PCU之執行。控制區塊是使用可重組態組合邏輯與用於狀態機器之可程式可逆計數器來實作。
就如同庫對饋送多個SIMD單元以持續計算產量之重要性,N緩衝(N-buffering或通稱為雙重緩衝)也一樣重要以支援粗粒度管線。作為實例,在ResNet中的跳過連接,以及固持各層輸出之緩衝器可使用N緩衝來實作。PMU高速暫存記憶體可經組態以如N緩衝般操作,具有上述任一庫模式。N緩衝是透過將各SRAM庫中的位址空間分割成N個不相交區來實作。透過使用寫入與讀取狀態資訊,適當偏移被添加到各庫之本地位址以存取該正確資料。
可程式設計計數器鏈與控制區塊觸發了與PCU相似之PMU執行。各PMU典型上包含出自產生者模式之寫入位址計算邏輯,以及出自消費者模式之讀取位址計算邏輯。基於本地FIFO之狀態與外部控制輸入,控制區塊可經組態以透過賦能適當計數器以觸發寫入位址計算、讀取位址計算、或觸發兩者。
特定實作
在一實作中,揭露一種電腦實作方法,用於將高階程式變換以映射到具有一陣列之可組態單元的可重組態資料處理器上。該方法包括將高階程式之資料流程圖分割成記憶體分配與執行片段。該記憶體分配表示在處理器上及/或處理器外記憶體中,為了實作該資料流程圖所需之資料所建立之邏輯記憶體空間。該執行片段表示對該資料之操作。
該方法包括指定該記憶體分配給虛擬記憶體單元,以及指定該執行片段給虛擬計算單元。
該方法包括將該執行片段分割成記憶體片段與計算片段。
該方法包括分配該記憶體片段到該虛擬記憶體單元,以及分配該計算片段到該虛擬計算單元。
該方法包括分配該虛擬記憶體單元到實體記憶體單元,以及分配該虛擬計算單元到實體計算單元。
該方法包括將該實體記憶體單元與該實體計算單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路。
該方法包括產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路。該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
在特定實作部分中針對其他實作而討論的每個功能都同樣適用於本實作。如上述,所有其餘特徵並沒有在本處被重複說明且應視為透過引用進行了重複說明。讀者將理解如何將這些實作中之特徵可如何輕鬆地與其他實作中特徵的予以組合。
該方法包括分配該虛擬記憶體單元之至少一者到多個實體記憶體單元,及/或分配該虛擬計算單元之至少一者到多個實體計算單元。
該方法包括將該多個實體記憶體單元與該多個實體計算單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路。
該方法包括產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路。該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
該分配滿足該多個實體記憶體單元與該多個實體計算單元之硬體限制條件。該分配至少部分取決於由特定實體計算單元所接受之數個輸入。該分配至少部分取決於在實體記憶體單元中可用之晶載SRAM的容量、算數邏輯單元(ALU)階之數量、每階之暫存器之數量、各ALU階之能力、在ALU與暫存器之間可用之連接、以及在該暫存器之間可用之連接。
該方法包括將該實體記憶體單元之至少兩者融合到單一實體記憶體單元中及/或將該實體計算單元之至少兩者融合到單一實體計算單元中。
該方法包括將該單一個實體記憶體單元與該單一個實體計算單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路。
該方法包括產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路。該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
該融合增加了該單一的實體記憶體單元與該單一的實體計算單元的資源之運用。該融合至少部分取決於該單一實體計算單元內ALU階之數量。在空間上該融合包括對該單一實體計算單元執行多個操作,該多個操作否則是在不同時脈週期對分離的實體計算單元所執行。在時間上該融合包括對該單一實體計算單元,如同在分離的執行情境下般,序列地執行該多個操作。執行片段是異步可執行的。
該方法包括組態該執行片段之該記憶體片段以在資料結構中設索引。該記憶體片段之至少一者在該記憶體分配之一中的該邏輯記憶體空間中的資料結構中設索引。該執行片段之至少一者包括迴圈或模式迭代器,其造成對該計算片段之至少一者的操作,以在由該記憶體片段設索引的值上重複的操作。特定執行片段之該計算片段與該記憶體片段造成該操作在至少兩維度之固持該索引的值之資料結構上操作。特定執行片段包括多個記憶體片段,該多個記憶體片段在多個資料結構中設索引。
該分割成該執行片段更包括將該資料流程圖之巢套迴圈的至少一最內層迴圈內之計算視為分離的執行片段。該分割成該執行片段更包括將該資料流程圖之該最內層迴圈周圍的外部迴圈之計算視為分離的執行片段。
該方法包括將分組到特定實體計算單元之該資料流程圖中的複數個操作映射到該特定實體計算單元內之資源上。
在本區段中描述之方法之其他實作可包括一種非暫態電腦可讀儲存媒體,其儲存有由處理器可執行之指令,以執行上述方法之任一者。在本區段中描述之方法之又另一實作可包括一種系統,其包括記憶體與一或多處理器,該處理器可操作以執行儲存在該記憶體上之指令,以執行上述方法之任一者。
在一實作中,揭露一種電腦實作方法,用於將高階程式變換以映射到具有一陣列之可組態單元的可重組態資料處理器上。
該方法包括將高階程式之資料流程圖分割成記憶體分配與執行片段。該記憶體分配表示在處理器上及/或處理器外記憶體中,為了實作該資料流程圖所需之資料所建立之邏輯記憶體空間。該執行片段表示對該資料之操作。
該方法包括指定該記憶體分配以及該執行片段給虛擬可組態單元。
該方法包括將該執行片段分割成記憶體片段與計算片段。
該方法包括分配該記憶體片段以及該計算片段到該虛擬可組態單元。
該方法包括分配該虛擬可組態單元到實體可組態單元。
該方法包括將該實體可組態單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路。
該方法包括產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路。該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
在特定實作部分中針對其他實作而討論的每個功能都同樣適用於本實作。如上述,所有其餘特徵並沒有在本處被重複說明且應視為透過引用進行了重複說明。讀者將理解如何將這些實作中之特徵可如何輕鬆地與其他實作中特徵的予以組合。
該方法包括分配該虛擬可組態單元之至少一者到多個實體可組態單元。
該方法包括將該多個實體可組態單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路。
該方法包括產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路。該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
該方法包括將該實體可組態單元之至少兩者融合到單一實體可組態單元中。
該方法包括將該單一實體可組態單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路。
該方法包括產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路。該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
在本區段中描述之方法之其他實作可包括一種非暫態電腦可讀儲存媒體,其儲存有由處理器可執行之指令,以執行上述方法之任一者。在本區段中描述之方法之又另一實作可包括一種系統,其包括記憶體與一或多處理器,該處理器可操作以執行儲存在該記憶體上之指令,以執行上述方法之任一者。
呈現以上說明以賦能所揭示技術之使用與建立。對於該技術領域中具有通常知識者而言,對所揭示實作的各種修改是顯而易見的,並且在不脫離所揭示技術的精神和範圍之前提下,本文定義的一般原則可以應用於其他實作和應用中。因此,揭示技術並不旨在受限制於所示實作中,而其應符合與本文揭示的原理和特徵一致的最寬範圍。本揭露技術之範圍是由所附申請專利範圍所界定。
100:可重組態資料處理器
110:可重組態資料處理器
115:匯流排系統
120:主機
125:匯流排系統
130:I/O介面
140:記憶體
145:匯流排系統
150:I/O介面
170:時鐘
175:時脈訊號
190:陣列
195:組態載入/卸載控制器
196:編譯器
198:位元檔案
200:方塊圖
202:高階程式
204:資料流程圖產生器
206:資料流程圖
212:執行片段產生器
214:分割器
216:記憶體分配器
222:執行片段
224:記憶體分配
232:指定器
242:虛擬計算單元
244:虛擬記憶體單元
252:執行片段分割器
262:計算片段
264:記憶體片段
266:分配器
274:分配器
282:實體計算單元
283:實體計算單元
284:實體記憶體單元
285:實體記憶體單元
286:放置器與路由器
292:位元檔案產生器
296:放置與路由資訊
300:可組態單元
400:方塊圖
402:實體記憶體單元
404:實體記憶體單元
406:實體記憶體單元
414:融合器
416:融合邏輯
424:融合的實體計算/記憶體單元
600:ResNet區塊
602:輸入
612:卷積
614:輸出
622:批次正規化
624:輸出
632:ReLU
634:輸出
642:平均池化
644:輸出
652:線性層
654:輸出
701:第一記憶體分配
702:第二記憶體分配
703:第三記憶體分配
704:第一執行片段
705:第二執行片段
706:第四記憶體分配
707:第五記憶體分配
708:第六記憶體分配
709:第三執行片段
710:第四執行片段
1206:平均值正規化
1302:平均值計算
711:第五執行片段
712:第六執行片段
713:第七執行片段
714:第七記憶體分配
715:第八執行片段
716:第八記憶體分配
717:第九執行片段
718:第十執行片段
1207:變異值正規化
1304:變異值計算
719:第九記憶體分配
720:第十記憶體分配
721:第十一執行片段
901:第一記憶體片段
902:第二記憶體片段
903:計算片段
904:位址指定
905:位址指定
1002:虛擬記憶體單元
1014:虛擬計算單元
1022:虛擬記憶體單元
1101:位址指定
1102:實體記憶體單元
1103:位址指定
1104:實體計算單元
1105:位址指定
1112:實體記憶體單元
1122:實體記憶體單元
1124:實體計算單元
1132:實體記憶體單元
1142:實體記憶體單元
1201:第一記憶體片段
1202:第二記憶體片段
1203:第三記憶體片段
1204:計算片段
1205:第四記憶體片段
1206:計算片段
1207:計算片段
1302:計算片段
1304:計算片段
1401:組態載入/卸載控制器
1411:交換單元
1412:交換單元
1420:鏈接
1421:互連
1431:鏈接
1441:實體記憶體單元
1500:可組態單元
1510:輸入組態資料
1520:組態資料儲存
1521:線
1522:線
1530:輸出組態資料
1540:單元組態載入邏輯
1550:純量FIFO
1560:向量FIFO區塊
1570:控制區塊
1580:區塊
1591:菊花鏈拓撲完成匯流排
1592:菊花鏈拓撲指令匯流排
1593:菊花鏈拓撲邏輯
1:動作
2:動作
3:動作
4:動作
5:動作
6:動作
7:動作
8:動作
9:動作
VMU1:虛擬記憶體單元
VMU2:虛擬記憶體單元
VMU3:虛擬記憶體單元
VMU4:虛擬記憶體單元
VMU5:虛擬記憶體單元
VMU6:虛擬記憶體單元
VMU7:虛擬記憶體單元
VMU8:虛擬記憶體單元
VMU9:虛擬記憶體單元
VMU10:虛擬記憶體單元
VCU1:虛擬計算單元
VCU2:虛擬計算單元
VCU3:虛擬計算單元
VCU4:虛擬計算單元
VCU5:虛擬計算單元
VCU6:虛擬計算單元
VCU7:虛擬計算單元
VCU8:虛擬計算單元
VCU9:虛擬計算單元
VCU10:虛擬計算單元
VCU11:虛擬計算單元
PMU1_0:實體記憶體單元
PMU1_1:實體記憶體單元
PMU2_0:實體記憶體單元
PMU2_1:實體記憶體單元
PMU2_2:實體記憶體單元
PCU1_0:實體計算單元
PCU1_1:實體計算單元
PCU3_0:實體計算單元
PCU4_0:實體計算單元
PCU5_0:實體計算單元
PCU6_0:實體計算單元
PCU7_0:實體計算單元
PCU7_1:實體計算單元
PCU3_0_4_0:實體計算單元
PCU5_0_6_0:實體計算單元
PCU3_0_4_0_5_0_6_0:實體計算單元
在所附圖式中,相似參考編號通常橫跨不同視圖參照相似部件。另外,該等圖式並不必然是按比例繪製,其重點反而一般是在於說明揭示技術之原理。在以下描述中,參照以下圖式說明揭示技術之各種實作,其中:
[圖1]是系統圖式,其描繪的系統包括編譯器、主機、記憶體、以及具有一陣列之可組態單元之可重組態資料處理器。
[圖2]是變換高階程式用於映射到可重組態資料處理器上的一實作之方塊圖。
[圖3]是分配該虛擬記憶體單元到多個實體記憶體單元以及分配該虛擬計算單元到多個實體計算單元的一實作之方塊圖。
[圖4]是將該多個實體記憶體單元融合到單一實體記憶體單元中以及將該多個實體計算單元融合到單一實體計算單元中的一實作之方塊圖。
[圖5]示出針對單一層ResNet區塊之高階程式之實例。
[圖6]描繪ResNet區塊之資料流程圖之一實例。
[圖7A、7B]與[7C]描繪將資料流程圖分割成記憶體分配與執行片段之一實例。
[圖8]是指定該記憶體分配給虛擬記憶體單元以及指定該執行片段給虛擬計算單元之一實作。
[圖9A]與[9B]示出將該執行片段分割成記憶體片段與計算片段之一實作。
[圖10]描繪各別的分配該記憶體片段到該虛擬記憶體單元以及各別的分配該計算片段到該虛擬計算單元之一實作。
[圖11]描繪映射該虛擬記憶體單元到一或多實體記憶體單元以及映射該虛擬計算單元到一或多實體計算單元之一實作。
[圖12A]與[12B]描繪映射執行片段到虛擬計算單元之一實例。
[圖12C]示出當單一實體計算單元不足以執行映射到虛擬計算及/或記憶體單元之執行片段時,則可使用拆分以映射虛擬計算及/或記憶體單元到多個實體計算及/或記憶體單元。
[圖13A]是融合實體計算單元與實體記憶體單元之一實例。
[圖13B]說明在空間上該融合之一實例,其是透過對該單一實體計算單元執行多個操作,該多個操作否則是在不同時脈週期對分離的實體計算單元所執行。
[圖13C]示出在時間上該融合之一實例,其是透過對該單一實體計算單元,如同在分離的執行情境下般,序列地執行該多個操作。
[圖14A]是一片(tile)與在圖1可重組態資料處理器中可用陣列層級網路之簡略圖。[圖14B]描繪與陣列層級網路中的元件連接之例示性交換單元。
[圖15]是描繪例示性可組態單元之方塊圖。
100:可重組態資料處理器
110:可重組態資料處理器
115:匯流排系統
120:主機
125:匯流排系統
130:I/O介面
140:記憶體
145:匯流排系統
150:I/O介面
170:時鐘
175:時脈訊號
190:陣列
195:組態載入/卸載控制器
196:編譯器
198:位元檔案
Claims (24)
- 一種電腦實作方法,用於將高階程式變換以映射到具有一陣列之可組態單元的可重組態資料處理器上,該方法包括: 將高階程式之資料流程圖分割成記憶體分配與執行片段,其中該記憶體分配表示在處理器上及/或處理器外記憶體中,為了實作該資料流程圖所需之資料所建立之邏輯記憶體空間,以及該執行片段表示對該資料之操作; 指定該記憶體分配給虛擬記憶體單元,以及指定該執行片段給虛擬計算單元; 將該執行片段分割成記憶體片段與計算片段; 分配該記憶體片段到該虛擬記憶體單元,以及分配該計算片段到該虛擬計算單元; 分配該虛擬記憶體單元到實體記憶體單元,以及分配該虛擬計算單元到實體計算單元; 將該實體記憶體單元與該實體計算單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路;以及 產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路,其中該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
- 如請求項1所述之電腦實作方法,更包含: 分配該虛擬記憶體單元之至少一者到多個實體記憶體單元,及/或分配該虛擬計算單元之至少一者到多個實體計算單元; 將該多個實體記憶體單元與該多個實體計算單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路;以及 產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路,其中該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
- 如請求項2所述之電腦實作方法,其中該分配滿足該多個實體記憶體單元與該多個實體計算單元之硬體限制條件。
- 如請求項2所述之電腦實作方法,其中該分配至少部分取決於由特定實體計算單元所接受之數個輸入。
- 如請求項2所述之電腦實作方法,其中該分配至少部分取決於在實體記憶體單元中可用之晶載SRAM的容量、算數邏輯單元(ALU)階之數量、每階之暫存器之數量、各ALU階之能力、在ALU與暫存器之間可用之連接、以及在該暫存器之間可用之連接。
- 如請求項1所述之電腦實作方法,更包括: 將該實體記憶體單元之至少兩者融合到單一實體記憶體單元中及/或將該實體計算單元之至少兩者融合到單一實體計算單元中; 將該單一個實體記憶體單元與該單一個實體計算單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路;以及 產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路,其中該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
- 如請求項6所述之電腦實作方法,其中該融合增加了該單一的實體記憶體單元與該單一的實體計算單元的資源之運用。
- 如請求項6所述之電腦實作方法,其中該融合至少部分取決於在實體記憶體單元中可用之晶載SRAM的容量、以及該單一實體計算單元內ALU階之數量。
- 如請求項6所述之電腦實作方法,其中在空間上該融合包括對該單一實體計算單元執行多個操作,該多個操作否則是在不同時脈週期對分離的實體計算單元所執行。
- 如請求項9所述之電腦實作方法,其中在時間上該融合包括對該單一實體計算單元,如同在分離的執行情境下般,序列地執行該多個操作。
- 如請求項1所述之電腦實作方法,其中該執行片段是異步可執行的。
- 如請求項11所述之電腦實作方法,更包括: 組態該執行片段之該記憶體片段以在資料結構中設索引。
- 如請求項12所述之電腦實作方法,其中該記憶體片段之至少一者在該記憶體分配之一中的該邏輯記憶體空間中的資料結構中設索引。
- 如請求項12所述之電腦實作方法,其中該執行片段之至少一者包括迴圈或模式迭代器,其造成對該計算片段之至少一者的操作,以在由該記憶體片段設索引的值上重複的操作。
- 如請求項14所述之電腦實作方法,其中特定執行片段之該計算片段與該記憶體片段造成該操作在至少兩維度之固持該索引的值之資料結構上操作。
- 如請求項12所述之電腦實作方法,其中特定執行片段包括多個記憶體片段,該多個記憶體片段在多個資料結構中設索引。
- 如請求項1所述之電腦實作方法,其中該分割成該執行片段更包括將該資料流程圖之巢套迴圈的至少一最內層迴圈內之計算視為分離的執行片段。
- 如請求項17所述之電腦實作方法,其中該分割成該執行片段更包括將該資料流程圖之該最內層迴圈周圍的外部迴圈之計算視為分離的執行片段。
- 如請求項1所述之電腦實作方法,更包括: 將分組到特定實體計算單元之該資料流程圖中的複數個操作映射到該特定實體計算單元內之資源上。
- 一種電腦實作方法,用於將高階程式變換以映射到具有一陣列之可組態單元的可重組態資料處理器上,該方法包括: 將高階程式之資料流程圖分割成記憶體分配與執行片段,其中該記憶體分配表示在處理器上及/或處理器外記憶體中,為了實作該資料流程圖所需之資料所建立之邏輯記憶體空間,以及該執行片段表示對該資料之操作; 指定該記憶體分配以及該執行片段給虛擬可組態單元; 將該執行片段分割成記憶體片段與計算片段; 分配該記憶體片段以及該計算片段到該虛擬可組態單元; 分配該虛擬可組態單元到實體可組態單元; 將該實體可組態單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路;以及 產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路,其中該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
- 如請求項20所述之電腦實作方法,更包括: 分配該虛擬可組態單元之至少一者到多個實體可組態單元; 將該多個實體可組態單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路;以及 產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路,其中該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
- 如請求項21所述之電腦實作方法,更包括: 將該實體可組態單元之至少兩者融合到單一實體可組態單元中; 將該單一實體可組態單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路;以及 產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路,其中該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
- 一種非暫態電腦可讀儲存媒體,其上存有電腦程式指令,以將高階程式變換以映射到具有一陣列之可組態單元的可重組態資料處理器上,當對處理器執行該指令時,該指令實作的方法包含: 將高階程式之資料流程圖分割成記憶體分配與執行片段,其中該記憶體分配表示在處理器上及/或處理器外記憶體中,為了實作該資料流程圖所需之資料所建立之邏輯記憶體空間,以及該執行片段表示對該資料之操作; 指定該記憶體分配給虛擬記憶體單元,以及指定該執行片段給虛擬計算單元; 將該執行片段分割成記憶體片段與計算片段; 分配該記憶體片段到該虛擬記憶體單元,以及分配該計算片段到該虛擬計算單元; 分配該虛擬記憶體單元到實體記憶體單元,以及分配該虛擬計算單元到實體計算單元; 將該實體記憶體單元與該實體計算單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路;以及 產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路,其中該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
- 一種包括與記憶體耦接的一或多處理器之系統,該記憶體載入有電腦指令,以將高階程式變換以映射到具有一陣列之可組態單元的可重組態資料處理器上,當對該處理器執行該指令時,該指令實作的動作包含: 將高階程式之資料流程圖分割成記憶體分配與執行片段,其中該記憶體分配表示在處理器上及/或處理器外記憶體中,為了該資料流程圖的實作所需之資料所建立之邏輯記憶體空間,以及該執行片段表示對該資料之操作; 指定該記憶體分配給虛擬記憶體單元,以及指定該執行片段給虛擬計算單元; 將該執行片段分割成記憶體片段與計算片段; 分配該記憶體片段到該虛擬記憶體單元,以及分配該計算片段到該虛擬計算單元; 分配該虛擬記憶體單元到實體記憶體單元,以及分配該虛擬計算單元到實體計算單元; 將該實體記憶體單元與該實體計算單元放置於該陣列之可組態單元的位置上,並在該放置位置之間路由資料與控制網路;以及 產生位元檔案,其具有用於該放置位置之組態資料以及該路由資料與控制網路,其中該位元檔案當被載入該陣列之可組態單元之實例上時,導致該陣列之可組態單元實作該資料流程圖。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/536,192 US11080227B2 (en) | 2019-08-08 | 2019-08-08 | Compiler flow logic for reconfigurable architectures |
US16/536,192 | 2019-08-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202127238A true TW202127238A (zh) | 2021-07-16 |
Family
ID=72179258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109131179A TW202127238A (zh) | 2019-08-08 | 2020-09-10 | 可重組態架構的編譯器流程邏輯 |
Country Status (8)
Country | Link |
---|---|
US (2) | US11080227B2 (zh) |
EP (1) | EP4010793A1 (zh) |
JP (1) | JP2022543457A (zh) |
KR (1) | KR20220042424A (zh) |
CN (1) | CN114450661A (zh) |
CA (1) | CA3147217A1 (zh) |
TW (1) | TW202127238A (zh) |
WO (1) | WO2021026489A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11709664B2 (en) * | 2020-06-02 | 2023-07-25 | SambaNova Systems, Inc. | Anti-congestion flow control for reconfigurable processors |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
US11237880B1 (en) | 2020-12-18 | 2022-02-01 | SambaNova Systems, Inc. | Dataflow all-reduce for reconfigurable processor systems |
US11182221B1 (en) | 2020-12-18 | 2021-11-23 | SambaNova Systems, Inc. | Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) |
US11392740B2 (en) | 2020-12-18 | 2022-07-19 | SambaNova Systems, Inc. | Dataflow function offload to reconfigurable processors |
US11782760B2 (en) | 2021-02-25 | 2023-10-10 | SambaNova Systems, Inc. | Time-multiplexed use of reconfigurable hardware |
US11442696B1 (en) | 2021-03-23 | 2022-09-13 | SambaNova Systems, Inc. | Floating point multiply-add, accumulate unit with exception processing |
US11200096B1 (en) | 2021-03-26 | 2021-12-14 | SambaNova Systems, Inc. | Resource allocation for reconfigurable processors |
CN113934681B (zh) * | 2021-12-15 | 2022-09-13 | 北京清微智能信息技术有限公司 | 一种可重构计算阵列及构建方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6964029B2 (en) * | 2002-10-31 | 2005-11-08 | Src Computers, Inc. | System and method for partitioning control-dataflow graph representations |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
US7734895B1 (en) * | 2005-04-28 | 2010-06-08 | Massachusetts Institute Of Technology | Configuring sets of processor cores for processing instructions |
EP3191962B1 (en) * | 2014-07-18 | 2019-12-11 | AB Initio Technology LLC | Managing parameter sets |
BR112018015276A2 (pt) * | 2016-01-26 | 2018-12-18 | Icat Llc | processador com núcleo com pipeline algorítmico reconfigurável e compilador com pipeline correspondente algorítmico |
US10558575B2 (en) * | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10452452B2 (en) * | 2017-04-17 | 2019-10-22 | Wave Computing, Inc. | Reconfigurable processor fabric implementation using satisfiability analysis |
US10445098B2 (en) * | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10331836B1 (en) * | 2017-10-11 | 2019-06-25 | Xilinx, Inc. | Loop optimization for implementing circuit designs in hardware |
US11120188B2 (en) * | 2019-01-28 | 2021-09-14 | King Fahd University Of Petroleum And Minerals | FPGA virtualization |
-
2019
- 2019-08-08 US US16/536,192 patent/US11080227B2/en active Active
-
2020
- 2020-08-07 CA CA3147217A patent/CA3147217A1/en active Pending
- 2020-08-07 JP JP2022507592A patent/JP2022543457A/ja active Pending
- 2020-08-07 WO PCT/US2020/045478 patent/WO2021026489A1/en unknown
- 2020-08-07 CN CN202080067026.1A patent/CN114450661A/zh active Pending
- 2020-08-07 KR KR1020227006963A patent/KR20220042424A/ko unknown
- 2020-08-07 EP EP20760710.2A patent/EP4010793A1/en active Pending
- 2020-09-10 TW TW109131179A patent/TW202127238A/zh unknown
-
2021
- 2021-05-20 US US17/326,128 patent/US11714780B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11714780B2 (en) | 2023-08-01 |
CN114450661A (zh) | 2022-05-06 |
CA3147217A1 (en) | 2021-02-11 |
US20210271630A1 (en) | 2021-09-02 |
EP4010793A1 (en) | 2022-06-15 |
KR20220042424A (ko) | 2022-04-05 |
WO2021026489A1 (en) | 2021-02-11 |
US11080227B2 (en) | 2021-08-03 |
US20210042259A1 (en) | 2021-02-11 |
JP2022543457A (ja) | 2022-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW202127238A (zh) | 可重組態架構的編譯器流程邏輯 | |
US11816560B2 (en) | Performance estimation-based resource allocation for reconfigurable architectures | |
US11782729B2 (en) | Runtime patching of configuration files | |
US11709664B2 (en) | Anti-congestion flow control for reconfigurable processors | |
TWI781441B (zh) | 在具有目標架構的可重組態資料處理器上高效執行運算單元圖的方法、非暫態電腦可讀儲存媒體及系統 | |
TW202227979A (zh) | 用於檢測串流相容及廣播相容的資料存取型樣的編譯時邏輯 | |
TW202230129A (zh) | 用於檢測串流相容和廣播相容的資料存取型樣之編譯時邏輯 | |
US11983141B2 (en) | System for executing an application on heterogeneous reconfigurable processors | |
Shahsavani et al. | Efficient compilation and mapping of fixed function combinational logic onto digital signal processors targeting neural network inference and utilizing high-level synthesis | |
US11709611B2 (en) | Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems | |
US11954053B2 (en) | Integrating buffer views into buffer access operations in a coarse-grained reconfigurable computing environment | |
US20230281156A1 (en) | Partitioning dataflow operations for a reconfigurable computing system | |
US20230244748A1 (en) | Matrix Multiplication on Coarse-grained Computing Grids | |
US20240241844A1 (en) | Method and System for Integrating Buffer Views into Buffer Access Operations in Reconfigurable Computing Environments | |
US20240054099A1 (en) | Cluster-Based Placement and Routing of Memory Units and Compute Units in a Reconfigurable Computing Grid |