TWI794008B - 可重組態處理器的儀器分析 - Google Patents
可重組態處理器的儀器分析 Download PDFInfo
- Publication number
- TWI794008B TWI794008B TW111105084A TW111105084A TWI794008B TW I794008 B TWI794008 B TW I794008B TW 111105084 A TW111105084 A TW 111105084A TW 111105084 A TW111105084 A TW 111105084A TW I794008 B TWI794008 B TW I794008B
- Authority
- TW
- Taiwan
- Prior art keywords
- stage
- data
- buffer
- instrument
- logic
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
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)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
一種資料處理系統包含編譯時間邏輯、運行期邏輯、控制匯流排以及可操作地耦合到處理單元陣列之儀器單元(instrumentation unit)。編譯時間邏輯被組態以產生資料流圖表的組態檔案。運行期邏輯被組態以執行陣列上的組態檔案,以觸發組態檔案所定義的開始和停止事件,以回應在陣列上資料流圖表的計算和記憶體操作的實作。控制匯流排被組態以在陣列中形成事件路徑。儀器單元具有連接到控制匯流排和連接到處理單元的輸入和輸出。儀器單元被組態以消耗輸入上的開始事件並開始計數時脈週期,消耗輸入上的停止事件並停止計數時脈週期,以及在輸出報告計數的時脈週期。
Description
本技術涉及可重組態處理器上資料流管線的運行期執行的儀器分析(instrumentation profiling),其可應用於粗粒度可重組態架構(CGRA)和其他分散式執行系統。
併入
出於所有目的,以下內容透過引用而併入本文中,如同在本文中完整闡述其一般:
Prabhakar等人所著「Plasticine: A Reconfigurable Architecture for Parallel Patterns」,ISCA '17,2017年6月24-28日,多倫多,ON,加拿大;
Koeplinger等人所著「Spatial: A Language and Compiler for Application Accelerators」,第39屆 ACM SIGPLAN 程式設計語言與實作 (PLDI) 會議論文集,第43屆電腦架構結構國際研討會論文集,2018;
Ashish Vaswani等人所著「Attention Is All You Need」,神經資訊處理系統的進展,第6000-6010 頁,2017年;
Jacob Devlin等人所著「Bert: Pre-Training of Deep Bidirectional Transformers For Language Understanding」,arXiv預印本arXiv:1810.04805,2018;
IBM,「POWER9 Performance Monitor Unit User's Guide」,OpenPOWER,1.2版,2018年11月28日,可透過https://wiki.raptorcs.com/w/images/6/6b/ POWER9_PMU_UG_v12_28NOV2018_pub.pdf存取;
Intel,「Intel® FPGA SDK for Pro Edition: Best Practices Guide」,第20.4版,2020年12月14日,可透過https://www.intel.com/content/dam/www/ programmable/us/en/pdfs/literature /hb/opencl-sdk/aocl-best-practices-guide.pdf存取;
於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年8月8日提交的美國非臨時專利申請案No.16/536,192,標題為「COMPILER FLOW LOGIC FOR RECONFIGURABLE ARCHITECTURES」(代理人案卷號:SBNV 1006-1);
於2019年5月9日提交的美國非臨時專利申請案No.16/407,675,標題為「CONTROL FLOW BARRIER AND RECONFIGURABLE DATA PROCESSOR」(代理人案卷號:SBNV 1007-1);
於2019年7月8日提交的美國非臨時專利申請案No.16/504,627,標題為「QUIESCE RECONFIGURABLE DATA PROCESSOR」(代理人案卷號:SBNV 1008-1);
於2019年9月16日提交的美國非臨時專利申請案No. 16/572,516,標題為“EFFICIENT EXECUTION OF OPERATION UNIT GRAPHS ON RECONFIGURABLE ARCHITECTURES BASED ON USER SPECIFICATION”(代理人案卷號:SBNV 1009-2);
於2020年1月15日提交的美國非臨時專利申請案No.16/744,077,標題為「COMPUTATIONALLY EFFICIENT SOFTMAX LOSS GRADIENT BACKPROPAGATION」(代理人案卷號:SBNV 1010-1);
於2019年10月1日提交的美國非臨時專利申請案No.16/590,058,標題為「COMPUTATION UNITS FOR FUNCTIONS BASED ON LOOKUP TABLES」(代理人案卷號:SBNV 1011-1);
於2019年11月25日提交的美國非臨時專利申請案No.16/695,138,標題為「COMPUTATION UNITS FOR BATCH NORMALIZATION」(代理人案卷號:SBNV 1012-1);
於2019年11月19日提交的美國非臨時專利申請案No.16/688,069,標題為「LOOK-UP TABLE WITH INPUT OFFSETTING」(代理人案卷號:SBNV 1013-1);
於2019年12月17日提交的美國非臨時專利申請案No.16/718,094,標題為「COMPUTATIONAL UNITS FOR ELEMENT APPROXIMATION」(代理人案卷號:SBNV 1014-1);
於2019年9月4日提交的美國非臨時專利申請案No.16/560,057,標題為「SIGMOID FUNCTION IN HARDWARE AND A RECONFIGURABLE DATA PROCESSOR INCLUDING SAME」(代理人案卷號:SBNV 1015-1);
於2019年9月16日提交的美國非臨時專利申請案No.16/572,527,標題為「PERFORMANCE ESTIMATION-BASED RESOURCE ALLOCATION FOR RECONFIGURABLE ARCHITECTURES」(代理人案卷號:SBNV 1016-2);
於2020年5月12日提交的美國非臨時專利申請案No.15/930,381,標題為「COMPUTATIONALLY EFFICIENT GENERAL MATRIX-MATRIX MULTIPLICATION (GeMM)」(代理人案卷號:SBNV 1019-1);
於2020年6月2日提交的美國非臨時專利申請案No.16/890,841,標題為「ANTI-CONGESTION FLOW CONTROL FOR RECONFIGURABLE PROCESSORS」(代理人案卷號:SBNV 1021-1);
於2020年9月16日提交的美國非臨時專利申請案No.17/023,015,標題為「COMPILE TIME LOGIC FOR DETECTING STREAMING COMPATIBLE AND BROADCAST COMPATIBLE DATA ACCESS PATTERNS」(代理人案卷號:SBNV 1022-1);
於2020年9月24日提交的美國非臨時專利申請案No.17 /031,679,標題為「SYSTEMS AND METHODS FOR MEMORY LAYOUT DETERMINATION AND CONFLICT RESOLUTION」(代理人案卷號:SBNV 1023-1);
於2020年7月7日提交的美國非臨時專利申請案No.16/922,975,標題為“RUNTIME VIRTUALIZATION OF RECONFIGURABLE DATAFLOW RESOURCES”(代理人案卷號:SBNV 1026-1);
於2020年8月18日提交的美國非臨時專利申請案No.16/996,666,標題為「RUNTIME PATCHING OF CONFIGURATION FILES」(代理人案卷號 SBNV 1027-1);
於2020年12月18日提交的美國非臨時專利申請案No.17/127,818,標題為「INTRA-NODE BUFFER-BASED STREAMING FOR RECONFIGURABLE PROCESSOR-AS-A-SERVICE (RPaaS)」(代理人案卷號:SBNV 1029-1);以及
於2020年12月18日提交的美國非臨時專利申請案No.17/127,929,標題為「INTER-NODE BUFFER-BASED STREAMING FOR RECONFIGURABLE PROCESSOR-AS-A-SERVICE (RPaaS)」(代理人案卷號:SBNV 1029-2)。
本節中所論及之標的不應僅因為在本節中提及而被認為是先前技術。相似的,在本節中論及或與提供作為先前技術之標的相關問題不應被假定已先前被視為是在先前技術中。在本節中的標的僅表示不同的方式,其本身亦可對應於所請技術之實作。
可重組態處理器(包括現場可程式閘陣列(FPGA))可經組態以相較於使用執行電腦程式之通用處理器更高效或更快之方式實作各式各樣功能。正在研發所謂粗粒度可重組態架構(CGRA),其中在一陣列中的可組態單元比典型上更細粒度FPGA中所用者更為複雜,且可啟用各種類型功能之更快或更高效執行。舉例而言,已提出CGRA可為機器學習與人工智慧工作量實作高能效的加速器。請參見Prabhakar等人所著,「Plasticine: A Reconfigurable Architecture for Parallel Patterns」,ISCA ’17,2017年6月24-28,多倫多,ON,加拿大。
為了在CGRA上執行深度學習應用程式,CGRA編譯器產生具有任意層次階層、巢套迴圈和記憶體存取模式(同步和異步)的資料流管線。這些資料流管線的高效執行需要將它們劃分為多個階段,並以平衡的方式在CGRA的空間分佈處理元件上執行這些階段。如果階段不平衡,可能會引入瓶頸(Bottleneck),這通常是由於不正確並行性、次優的硬體資源分配、在階段邊界提供的緩衝區深度不足或資源放置不當所導致在互連結構中的瓶頸。
在每個管線階段準確測量運行期執行時間使程式設計人員能夠調整應用程式的相關部分。由於所有階段都在空間上以並行方式執行,因此性能對於為分析目的而插入的任何添加的控制同步尤其敏感。因此,識別和除錯運行期執行中的性能瓶頸是一項具有挑戰性的工作。
揭露了在引入最小開銷的同時測量資料流管線的運行期階段延時的硬體和軟體技術。
性能測量是用於瞭解已經構建或原形測試(prototype)的系統。性能測量可以達成兩個主要目的:(i)調整系統或待構建的系統,以及(ii)如果原始碼和演算法仍然可能被更改,則調整應用程式。本質上,該過程涉及(i)瞭解已構建系統中的瓶頸,(ii)瞭解系統上運行的應用以及系統功能與工作量特徵之間的匹配,以及(iii)將利用工作量特徵的創新設計特徵。通用處理器(General Purpose Processor,GPP)中的一些性能測量技術包括微處理器晶載性能監控計數器、晶片外硬體監控、軟體監控和微編碼儀器。
出現了開發性能測量技術的機會,這些技術非常適合可重組態處理器的空間分散式計算網路和深度學習應用程式的管線運行期執行。
及
以下說明經呈述以使得在該技術領域中具有通常知識者能夠製造和使用揭示技術,並且在特定應用及其需求的背景下提供以下說明。對於該技術領域中具有通常知識者而言,對所揭示實作的各種修改是顯而易見的,並且在不脫離所揭示技術的精神和範圍之前提下,本文定義的一般原則可以應用於其他實作和應用中。因此,揭露技術並不旨在受限制於所示實作中,而其應符合與本文揭示的原理和特徵一致的最寬範圍。
簡介
本文所揭露的技術透過測量累積階段執行時間來測量和表徵化具有並行運行階段的分級、巢套資料流管線的性能。在一種實作中,所揭露的技術為每個階段創建一個或多個「開始」和「停止」條件,其中測量「開始」和「停止」事件之間的經過時間。
在若干實作中,一階段中一個「執行單元」被定義為要由一階段執行以消耗來自其輸入緩衝區的一個資料單元並產生一個資料單元到其所有輸出緩衝區的計算量。資料單元由程式判定,例如,對應於一個資料張量(tensor),如一批輸入樣本、啟用或梯度。
在一種實作中,所揭露的編譯器/編譯時間邏輯132透過在每個階段以程式化方式產生兩個控制事件來檢測資料流程式:一「開始」事件對應於一個執行單元的開始,以及一「停止」事件對應於一個執行單元的結束。一個(開始、停止)事件對是用於對可重組態處理器152中的硬體儀器計數器進行程式化。在一實作中,儀器計數器在「開始」事件發生後每個時脈週期遞增1,並在「停止」事件發生後停止計數。
「開始」事件定義為一週期,其中輸入緩衝區開始第一次讀取以開始該階段的一個執行單元。在一個實作中,閘控「讀取」操作的資料和控制相依性可以被記錄為儲存控制事件發生的一組符記緩衝區上的位元遮罩。在這種情況下,「開始」事件可以實作為跨越位元遮罩中標識的同一組符記緩衝區的控制屏障(control barrier),以僅在滿足所有讀取相依性時產生新的控制事件。在另一實作中,「開始」事件可以定義為當輸入緩衝區中的資料單元變得可用時的週期。此實作與先前實作的不同之處在於「開始」事件發生得更早,並且因此將包括輸入緩衝區的讀取在資料可用後停止的週期數。
「停止」事件被定義為所有輸出緩衝區已經接收到對應於一個階段執行單元的所有輸出的週期。在一種實作中,每個輸出緩衝區可以產生一個新的「寫入完成」控制事件,該控制事件指示一個資料單元已被寫入緩衝區。此控制事件可以透過程式設計方式產生,並且可以處理任意記憶體存取模式、張量形狀和張量佈局。然後可以透過實作一個分散式控制屏障來產生「停止」事件,該屏障將來自所有輸出緩衝區的幾個這樣的「寫入完成」事件組合起來,以產生一個新的控制事件。「開始」和「停止」事件不必一個接一個地順序發生。
在可重組態處理器(例如,可重組態處理器1500)上的管線執行期間,多個執行單元可以同時運行。例如,當來自一個執行單元的輸出資料被寫入一個階段的輸出緩衝區時,下一次執行的輸入資料可以從輸入緩衝區中讀取並經由互連發送到計算單元。透過在硬體符記緩衝區中緩衝所有「開始」事件和「停止」事件來處理此類情況的分析(Profiling)。只要至少有一個執行單元在運行,儀器計數器就會繼續計數。只有在所有運行中的執行單元都產生了它們的所有輸出後,儀器計數器才會停止。
在管線階段具有單個輸入緩衝區和單個輸出緩衝區的情況下,從硬體儀器計數器獲得的數字直接表示該階段執行期間經過的時脈週期總數。
如果一個階段有多個輸入和輸出緩衝區,則需要在編譯器或後處理公用程式(utility)中提供額外的支援,以準確識別階段延時。在一種實作中,編譯器分別檢測每個輸入緩衝區。每個一輸入緩衝區中的元組(tuple)和輸入緩衝區中所有可到達的輸出緩衝區都程式設計成一個儀器計數器。然後,每個儀器計數器計算該特定輸入緩衝區路徑處於活動狀態的累積週期。
然後,後處理公用程式(postprocessing utility)可以使用聚合方法將來自每個輸入緩衝區的延時進行組合。由於一個階段僅在所有輸入都處於活動狀態時才處於活動狀態(active),因此可以使用來自所有輸入緩衝區的經過週期的「MIN」聚合。在另一個實作中,編譯器可以跨階段的所有輸入緩衝區或「輸入兄弟(input sibling)」的讀取操作插入額外的同步。額外的「兄弟同步(sibling synchronization)」可以實作為控制屏障,其僅當滿足所有輸入緩衝區的所有相依性時才會產生新的控制事件。同步限制了在一階段的輸入緩衝區的開始時間之間的偏差。在本實作中,「開始」事件被定義為與「兄弟同步」事件對應的控制事件。在這種情況下不需要後處理,因為每個階段的輸入緩衝區和輸出緩衝區元組只將一個儀器計數器程式化。
儀器計數器是可程式設計的計數器,因為可以計數的事件可以由軟體(亦即,編譯時邏輯132)指定。在一種實作中,儀器計數器是對事件進行計數的32位元暫存器。在一些實作中,可以鏈接一系列儀器計數器。
資料處理系統
圖1是本文揭露資料處理系統的一實作的系統圖式。可重組態處理器152包括可程式互連結構中的可組態單元陣列(例如,計算單元和記憶體單元)。可重組態處理器中之可組態單元陣列是可分區成複數個子陣列(或塊(tile))的可組態單元。將於下文中使用圖15、16、16A、17、18及19討論有關可重組態處理器152的CGRA實作之額外細節。
包括可重組態處理器152的可重組態資料流資源之池也包括匯流排資源(或傳送資源)。匯流排資源之實例包括PCIe通道、DMA通道以及DDR通道。可重組態資料流資源池也包括記憶體資源(或儲存器資源)。記憶體資源的實例包括主記憶體(例如,晶片外/外部 DRAM)、本地次要儲存器(例如,區域磁碟(例如,HDD、SSD))和遠端次要儲存器(例如,分散式檔案系統、Web伺服器)。記憶體資源的其他實例包括鎖存器、暫存器和快取(例如,SRAM)。可重組態資料流資源池是動態可縮放的以滿足應用程式102所需的性能目標。應用程式102透過一或多個網路(例如,網際網路)存取該可重組態資料流資源池。
在若干實作中,根據所揭露技術的不同實作,不同的計算規模和階級結構形成可重組態資料流資源池。在一個實例中,可重組態資料流資源池是運行複數個可重組態處理器152的節點(或單個機器),由所需的匯流排和記憶體資源支援。該節點還包括主機處理器(例如,CPU),其例如透過PCIe介面與複數個可重組態處理器152交換資料。主機處理器包括運行期處理器,其管理資源分配、記憶體映射、以及應用程式之組態檔案的執行,該應用程式是從主機處理器請求執行之應用程式。在另一個實例中,可重組態資料流資源池是節點的機架(或集群),使得機架中的每個節點運行各自的複數個可重組態處理器152,並且包括組態有各自運行期處理器的各自主機處理器。運行期處理器分佈在節點上並相互通訊,因此它們可以統一存取連接到它們運行的節點的可重組態處理器152,以及還可以連接到資料中心中每個其他節點所附接的可重組態處理器152。
機架中節點是例如透過乙太網路或InfiniBand (IB)進行連接的。在又一個實例中,可重組態資料流資源池是包含複數個機架之小群聚(pod)。在又一個實例中,可重組態資料流資源池是包含複數個小群聚之大群聚(superpod)。在又一個實例中,可重組態資料流資源池是包含複數個大群聚之區(zone)。在又一個實例中,可重組態資料流資源池是包含複數個區之資料中心(data center)。
深度學習應用
藉由對單獨的計算和記憶體組件進行程式化以異步地接收、處理和傳送資料和控制資訊,以分散式方式在可重組態處理器152上執行應用程式102。在可重組態處理器152中,計算可以作為深度巢套的資料流管線執行,其非常有效地利用巢套並行性和資料區域性。這些資料流管線包含些許計算階段,其中每個階段從一或多個具有不規則記憶體存取模式的輸入緩衝區讀取資料,在使用一或多個內部緩衝區儲存和取回中間結果的同時對資料執行計算,並產生輸出寫入一個或多個輸出緩衝區。這些管線的結構取決於表示應用程式的控制和資料流圖表。管線可以任意的巢套與迴路於彼此中。
應用程式102包括高階程式。高階程式是使用C、C++、Java、JavaScript、Python和Spatial等程式語言編寫的原始碼,例如使用PyTorch、TensorFlow、ONNX、Caffe和Keras等深度學習框架。高階程式可以實作AlexNet、VGGNet、GoogLeNet、ResNet、ResNeXt、RCNN、YOLO、SqueezeNet、SegNet、GAN、BERT、ELMo、USE、Transformer和Transformer-XL等機器學習模型的計算結構和演算法。在一個實例中,高階程式可以實作具有多個處理層的卷積類神經網路,使得每個處理層可以包括一個或多個巢套迴圈。高階程式可以執行不規則的記憶體操作,其涉及存取輸入和權重以及在輸入和權重之間執行矩陣乘法。高階程式可包括具高迭代計數之巢套迴圈以及從先前處理層載入輸入值並將該輸入值乘以接續處理層之權重以產生接續處理層之輸出的迴圈主體。高階程式可具有最外層迴圈主體之迴圈層級並行性,其可透過使用粗粒度管線操作來利用。高階程式可具有內迴圈主體之指令層級並行性,可透過使用迴圈展開、SIMD向量化與管線操作來利用。
關於應用程式102的高階程式中的迴圈,直接巢套在迴圈主體中的迴圈被稱為外部父迴圈的子迴圈。若一迴圈不具有任何子迴圈(亦即,在其主體內無任何巢套迴圈),則該迴圈被稱作最內層迴圈。若一迴圈不具有父迴圈(亦即,其不是被巢套在另一迴圈之主體內),則該迴圈被稱作最外層迴圈。一種不完美巢套迴圈具有非迴圈聲明(例如,基本算術、邏輯和關係運算)以及一或多子迴圈之混和的一主體。在不完美巢套迴圈中的並行性可以在任何或全部的迴圈層級上利用,以及在包含迴圈主體之操作中利用。並行性(Parallelism)可以數種型態發生,諸如細粒度、粗粒度管線並行性、資料並行性與工作並行性。
在若干實作中,軟體開發工具包(SDK)(或資料流圖表產生器112)產生應用程式102的高階程式的資料流圖表122。SDK會將高階程式之輸入行為描述(input behavioral description)轉換成中間表示法,諸如資料流圖表122。這可包括程式碼最佳化步驟,例如假資料依賴性消去、死碼消去以及常數摺疊。資料流圖表122對高階程式的資料和控制依賴項進行編碼。
資料流圖表122包含節點和邊。節點可以代表計算操作和記憶體分配。邊可以表示資料流和控制流。在若干實作中,在程式中的各迴圈在資料流圖表122中以「控制器」進行表示。資料流圖表122支援分支、迴圈、函數呼叫以及其他控制與承載相依性之變體。在若干實作中,在產生資料流圖表122之後,可以執行側重於迴圈轉換的額外分析或最佳化,例如迴圈展開、迴圈管線操作、迴圈裂變/融合和迴圈平鋪。
SDK還支援在多個層級對可重組態資料流資源池中的可重組態處理器152進行程式化,例如,從高階深度學習框架到C++和組合語言。在某些實作中,SDK允許程式設計師開發直接在可重組態處理器152上運行的程式碼。在其他實作中,SDK提供了包含預定義函數的庫,例如線性代數運算、元素級張量運算、非線性以及在可重組態處理器152上創建、執行和分析資料流圖表122所需的歸約(reduction)。SDK經由應用程式程式化介面(API)與深度學習框架通訊。
資料流圖表中的節點表示操作單元,這些操作單元被組態為生產者以產生用於執行應用程式的張量,並作為消費者以使用用於執行應用程式的張量。生產者和消費者沿著資料連接異步發送資料。張量包括一或多個向量。編譯時間邏輯132為資料流圖表中的每個操作單元判定資料存取模式。操作單元的資料存取模式是由操作單元實作的操作類型所定義。特定生產者的寫入存取模式指定特定生產者產生張量元素的順序。相應消費者的讀取存取模式指定相應消費者處理張量元素的順序。生產者的寫入存取模式和消費者的讀取存取模式儲存在記憶體中,並跨越所有已知的操作,如非線性操作,如整流線性單元(ReLU)及其變體(例如,洩漏ReLU)、雙曲正切(tanh)、sigmoid(S型函數)、softmax等、逐元素加法、矩陣乘法(例如,通用矩陣乘法(GeMM))、層正規化(例如,批量正規化)等等。
編譯時間邏輯
編譯時間邏輯132將資料流圖表122轉換成硬體特定的組態,該組態在由編譯時間邏輯132產生的執行檔案中指定。在一實作中,編譯時間邏輯132將資料流圖表122分區為記憶體分配和執行片段,並且在執行檔案中指定這些分區。執行片段表示對該資料執行之操作。執行片段可包含表示工作量的部分之程式。執行片段可包含涵蓋一組迴圈、一組圖節點、或若干其他需要同步的工作單元之計算。執行片段可包含固定或可變工作量,如視程式需求。執行片段中不同片段可包含不同的計算量。執行片段可表示並行模式或並行模式之部分並且可異步執行。
在一些實作中,該資料流程圖122之分區成該執行片段包括將該資料流程圖122之巢套迴圈的至少一內迴圈內之計算視為分離的執行片段。在另一實作中,將資料流圖表122分區為執行片段包括將圍繞資料流圖表122的內迴圈之外迴圈的計算視為單獨的執行片段。在不完美巢套迴圈之情況下,迴圈主體內中直到該迴圈主體內的巢套迴圈起始處之操作被分組為分離之執行片段。
記憶體分配表示在晶載及/或晶片外記憶體中,為了實作該資料流圖表122,以及在執行檔案中指定此等記憶體分配。記憶體分配界定硬體資源(功能單元、儲存器或連接組件)之數量與類型。主記憶體(例如,DRAM)是晶片外記憶體,對其進行記憶體分配。暫用記憶體(例如,SRAM)是晶載記憶體,對其進行記憶體分配。可以對各種常見存取模式和佈局進行記憶體分配的其他記憶體類型包括唯讀查找表(LUT)、固定尺寸佇列(例如,FIFO)以及暫存器檔案。
編譯時間邏輯132將記憶體分配保定到虛擬記憶體單元,以及將執行片段綁定到虛擬計算單元,以及此等綁定是在執行檔案中指定。在若干實作中,編譯時間邏輯132將執行片段分區為記憶體片段和計算片段,並且在執行檔案中指定這些分區。記憶體片段包含導致記憶體存取之位址計算。計算片段包含在父執行片段之所有其他的操作。在一實作中,各執行片段被分解成複數個記憶體片段以及僅只一個計算片段。在一實作中,編譯時間邏輯132使用反向資料流分析來執行分區,使得在記憶體存取中對位址之輸入遞迴帶旗標(flagged),直到編譯時間邏輯132到達常數值或(界限)迴圈/模式迭代器。取決於在原始迴圈主體中存在多少個記憶體存取,單一執行片段可產生一或多記憶體片段。在橫跨多個記憶體存取共享相同記憶體定址邏輯之情況下,位址計算可以被複製以從相同執行片段產生多個記憶體片段。
執行片段之記憶體片段經組態以在資料結構中設索引。該記憶體片段之至少一者在該記憶體分配之一中的該邏輯記憶體空間中的資料結構中設索引。各計算與記憶體片段保存有關其迴圈主體直接包含對應執行片段中的操作之所有迴圈的資訊。在一實作中,此對應將各迴圈之迴圈迭代器的計算複製到各計算與記憶體片段中。此複製允許各片段可以保存與原始程式相同的迭代行為,同時也允許迴圈迭代器之分散式計算(distributed calculation)。
編譯時間邏輯132分配該記憶體片段到該虛擬記憶體單元,以及分配該計算片段到該虛擬計算單元,以及在執行檔案中指定此等分配。各記憶體片段在操作方面被映射到對應於正被存取之記憶體的虛擬記憶體單元。各操作被降低到針對該虛擬記憶體單元之其對應組態中間表示法。各計算片段在操作方面被映射到一新分配之虛擬計算單元。各操作被降低到針對該虛擬計算單元之其對應組態中間表示法。
編譯時間邏輯132將虛擬記憶體單元分配給可重組態處理器152的實體記憶體單元(例如,可重組態處理器152的模式記憶體單元(PMU)),並將虛擬計算單元分配給可重組態處理器152的實體計算單元(例如,可重組態處理器152的模式計算單元(PCU)),並且在執行檔案中指定此等分配。編譯時間邏輯132將該實體記憶體單元與該實體計算單元放置於可重組態處理器152的可組態單元陣列的位置上,並在該放置位置之間路由資料與控制網路,以及在執行檔案中指定此等放置與路徑。在一實作中,此包括分配實體資源,諸如在各實體記憶體與計算單元中的計數器與暫存器,以及在執行檔案中指定此等分配。
編譯時間邏輯132將使用諸如Keras和PyTorch之類的常用開源包開發的應用程式102轉譯成可重組態處理器規範。編譯時間邏輯132產生組態檔案(位元檔案/位元流),其具有用於該放置位置之組態資料以及該路由資料與控制網路。在一實作中,此包括透過可重組態處理器152上的放置與路由單元分配實體記憶體與計算單元之座標與通訊資源,同時將頻寬最大化且將延時最小化。編譯時間邏輯132將組態檔案載入到可重組態處理器152上並且使組態檔案實作資料流圖表122。在若干實作中,資料流圖表產生器112是編譯時間邏輯132的一部分。
圖2示出編譯時間邏輯132的一種實作。編譯時間邏輯132組態有緩衝區插入邏輯202、緩衝區分類邏輯212、控制連接創建邏輯222以及流控制邏輯232。
緩衝區插入邏輯202被組態以透過將階段緩衝區(緩衝區/控制器/控制節點)插入到第二層迴圈內部以及在第一層迴圈與第二層迴圈之間的輸入/輸出邊界處來將資料流圖表的執行分區為兩個或更多個異步階段。每個階段都包括計算節點的子集。各個階段包括複數個計算節點中的一個或多個計算節點,並且對於各個階段,階段緩衝區包括一個或多個輸入階段緩衝區和一個或多個輸出階段緩衝區。緩衝區插入邏輯202還被組態以在第二層迴圈內插入額外的階段緩衝區。額外階段緩衝區被組態以與插入在第一層迴圈和第二層迴圈之間的輸入/輸出邊界處的階段緩衝區介接。
緩衝區分類邏輯212被組態以透過將向特定階段提供輸入資料的那些階段緩衝區分類為生產者並將那些儲存來自特定階段的輸出資料的階段緩衝區分類為消費者,以逐階段地將階段緩衝區分類為生產者(輸入階段緩衝區)和消費者(輸出階段緩衝區)。
控制連接創建邏輯222被組態為藉由將控制連接從特定階段中的消費者擴展到特定階段中的生產者來創建階段緩衝區之間的控制連接。控制連接從特定消費者延伸到一個或多個將資料寫入特定消費者的相應生產者。
流控制邏輯232被組態以處理資料流圖表並為資料流圖表產生流控制資料。流控制邏輯232被組態以透過使用控制連接以控制由生產者將資料寫入消費者中,以控制計算節點之間沿資料連接的資料傳輸。例如,流控制邏輯232被組態以為每個生產者組態讀取就緒信用計數器(ready-to-read credit counter),使得特定生產者的讀取就緒信用計數器被初始化為與從特定生產者讀取資料的相應消費者的緩衝區深度具有一樣多的讀取信用。讀取就緒信用計數器被組態以在特定生產者開始沿著資料連接將緩衝資料單元寫入相應消費者時減量。讀取就緒信用計數器被組態以當特定生產者沿控制連接從相應消費者接收到讀取就緒符記時增量。讀取就緒符記向特定生產者指示相應的消費者已釋放緩衝資料單元並準備好接收額外的緩衝資料單元。當讀取就緒信用計數器的讀取信用為零時,特定的生產者停止將資料寫入相應的消費者中。當特定的生產者從相應的消費者接收到讀取就緒符記時,特定的生產者恢復將資料寫入相應的消費者。在一些實作中,特定生產者將資料寫入具有各自緩衝區深度的兩個或多個對應消費者。各緩衝區深度度包括最小緩衝區深度。讀取就緒信用計數器初始化為與最小緩衝區深度具有一樣多的讀取信用。
在另一實例中,流控制邏輯232被組態以為每個生產者組態寫入信用計數器,該寫入信用計數器被初始化為一個或多個寫入信用。寫入信用計數器被組態以在特定生產者開始沿著資料連接將緩衝資料單元寫入相應消費者時減量。寫入信用計數器被組態以當特定生產者沿控制連接從相應消費者接收到讀取完成符記時增量。寫入完成符記向特定的生產者指示緩衝資料單元到相應消費者的寫入已經完成。當寫入信用計數器的寫入信用為零時,特定的生產者停止將資料寫入相應的消費者中。當特定的生產者從相應的消費者接收到寫入完成符記時,特定的生產者恢復將資料寫入相應的消費者。
在一個實作中,特定階段具有兩個或更多消費者和一組生產者。在這樣的實作中,流控制邏輯232被組態以創建從消費者中的兩個或更多消費者延伸到生產者集合中的生產者的屏障連接。屏障連接控制讀取就緒符記和寫入完成符記從兩個或多個消費者到生產者集合中的生產者之傳輸。
在一種實作中,第二層迴圈是用多個並行管線實作的。在這樣的實作中,流控制邏輯232被組態以插入階段緩衝區並為多個並行管線中的每個管線分別創建階段緩衝區之間的控制連接。
在一種實作中,第二層迴圈是序列迴圈。在這樣的實作中,流控制邏輯232還被組態以將插入在第二層迴圈內的階段緩衝區組態以具有1的緩衝區深度,並且僅擴展第二層迴圈內的控制連接,從在第二層迴圈的出口點的消費者到第二層迴圈的入口點的生產者。
編譯時間邏輯132被組態以將每個階段緩衝區映射到可重組態處理器152的一個或多個模式記憶體單元(PMU)。編譯時間邏輯132被組態以將每個計算節點映射到可重組態處理器152的一個或多個模式計算單元(PCU)。編譯時間邏輯132被組態以在可重組態處理器152的控製網路上實作PMU和PCU之間的控制連接。編譯時間邏輯132被組態以在可重組態處理器152的資料網路上實作PMU和PCU之間的資料連接。資料網路包括用於傳輸向量資料的向量子網路和用於傳輸純量資料的純量子網路。每個PMU和PCU 都可組態有一個或多個向量輸入埠、純量輸入埠、向量輸出埠、純量輸出埠以及控制埠。
運行期邏輯
運行期邏輯142剖析執行檔案並判定執行應用程式102所需的虛擬資料流資源的組態。運行期邏輯142將可重組態資料流資源池中的記憶體與實體可組態單元分配給虛擬資料流資源。運行期邏輯142接著使用該分配的實體可組態單元與記憶體來執行組態檔案。
圖3示出運行期邏輯142的一種實作。運行期邏輯142組態有階段延時判定邏輯302。階段延時判定邏輯302藉由計算接收資料單元的特定階段的輸入階段緩衝區與接收透過特定階段的一或多個計算節點處理該資料單元的結果的特定階段的輸出階段緩衝區之間的經過時間來判定資料流圖表的每個階段的階段延時。
儀器分析
儀器分析邏輯162被組態以基於為每個階段判定的階段延時為資料流圖表產生性能統計數據172。在若干實作中,儀器分析邏輯162是運行期邏輯142的一部分。
資料流圖表
圖4描繪深度學習應用程式的資料流圖表400的執行的一種實作。資料流圖表400的操作至少包括生產者、計算節點和消費者。生產者向計算節點提供輸入(例如向量、張量)。計算節點處理輸入並產生輸出(例如,由點積運算產生的加權和)。計算節點將輸出提供給消費者。
如在該技術領域中具有通常知識者將能理解,資料流圖表400可以包含複數個生產者、複數個計算節點和複數個消費者,使得計算節點可以接收來自多個生產者的輸入並且可以向多個消費者提供輸出。在本申請案的上下文中,當說明特定生產者將資料寫入相應的消費者時,應理解特定生產者向計算節點提供資料,計算節點繼而處理資料,產生資料的替代表示,並將該資料的替代表示寫入相應的消費者。在一個實例中,替代表示可以是通用矩陣乘法(General Matrix Multiply,GeMM)運算的結果。
在本申請案的上下文中,生產者可以稱為上游緩衝區或上游記憶體節點/單元,計算節點可以稱為中間計算節點/單元或中間處理節點/單元,以及消費者可以是稱為下游緩衝區或下游記憶體節點/單元。此外,生產者、計算節點和消費者異步操作,因此使用這裡描述的流控制邏輯232來處理背壓並避免生產者和消費者之間的處理瓶頸和緩衝區溢出。
資料流圖表400具有計算節點,該計算節點沿著資料連接異步發送資料。在所示實例中,資料流圖表400表示所謂的Transformer(變換器)和BERT深度學習模型的多頭注意力模組(multi-head attention module),它們通過引用併入本文中。資料流圖表400包括迴圈巢套,其中迴圈被配置在數層之階層中,使得第二層409的迴圈在第一層410的迴圈內。第一層410的迴圈包括四個矩陣乘法節點402、412、422、408,並且可以被認為是外迴圈410。第二層409的迴圈包括入口矩陣乘法節點403、遮罩填充(mask fill)節點404、softmax節點405、dropout節點406和出口矩陣乘法節點407,並且可以被認為是內迴圈409。
在外迴圈410中,前三個矩陣乘法節點402、412、422中的各個接收各自的輸入(例如,各自的張量),使用各自的一組權重對各自的輸入執行通用矩陣乘法(GeMM)運算,並產生各自的輸出。來自前三個矩陣乘法節點402、412、422的輸出由內迴圈409在多次迭代中分段處理,並且多次迭代中的各次可以透過並行化內迴圈409的多個實例來並行化執行。這是外迴圈410和內迴圈409之間的第一資料傳送點/邊界,在該處資料從外迴圈410發送到內迴圈409。
來自多次迭代的輸出被組合(例如,級聯)以產生用於外迴圈410的矩陣乘法節點408的輸入。這是內迴圈409和外迴圈410之間的第二資料傳送點/邊界,在該處資料從內迴圈409發送到外迴圈410。
緩衝區插入和階段分區
圖5示出插入資料流圖表400中的階段緩衝區的一種實作。在圖示實例中,插入了三種類型的階段緩衝區:(1)階段間緩衝區,(2)階段內緩衝區,以及(3)基於資料流圖表400的計算節點的成本模型的介面緩衝區。
階段間緩衝區(inter-stage buffer)被插入在第一層迴圈410和第二層迴圈409之間的輸入/輸出邊界處(亦即,在外迴圈410與內迴圈409之間的資料傳送點/邊界處的計算節點之間)。階段內緩衝區(intra-stage buffer)被插入到第二層迴圈409內(例如,在內迴圈409內的計算節點之間)。介面緩衝區(interface buffer)也被插入內迴圈409內,以與用於佈局和存取模式轉換的階段間緩衝區介接。使用介面緩衝區是因為通訊的粒度(即,產生/消耗的張量/資料的大小)在不同層迴圈之間變化。
在所描繪實例中,階段間緩衝區被描繪成藍色並包括階段緩衝區502、512 、522、520。階段內緩衝區被描繪成黃色並包括階段緩衝區514、515 、516、517。介面緩衝區被描繪成橘色並包括階段緩衝區503、513 、518、519。
圖6示出將資料流圖表的執行劃分為複數個階段的一種實作。在所示實例中,資料流圖表400的執行被劃分為至少三個階段:階段0、階段1以及階段2。階段1的執行進一步分為五個階段:階段1.0、階段1.1.、階段1.2、階段1.3以及階段1.4。
緩衝區分類
圖7描繪將階段緩衝區逐階段分類為生產者和消費者的一種實作。那些為特定階段提供輸入資料的階段緩衝區被歸類為生產者。那些儲存來自特定階段的輸出資料的階段緩衝區被歸類為消費者。在圖7中,請注意分類會隨著階段的變化而產生變化,因此特定階段緩衝區可以在給定階段是消費者和在另一個階段是生產者。例如,階段緩衝區A、B、C(502、512、522)是階段0的消費者和階段1的生產者。類似地,階段緩衝區G(515)是階段1.1中的消費者和階段1.2中的生產者。
控制連接
圖8描繪在逐階段基礎上在階段緩衝區之間創建的控制連接的一種實作,其透過從特定階段的消費者延伸控制連接至特定階段的生產者。控制連接在可重組態處理器的控制網路的控制匯流排上實作。控制連接從特定消費者延伸到一個或多個將資料寫入特定消費者的相應生產者。例如,對於階段1,生產者是階段緩衝區A、B、C(502、512、522),以及消費者是階段緩衝區L(520),並且因此三個控制連接從階段緩衝區L(520)分別延伸到階段緩衝區A、B、C(502、512、522)。相似的,對於階段1.0,生產者是階段緩衝區D、E(503、513),以及消費者是階段緩衝區F(514),並且因此兩個控制連接從階段緩衝區F(514)分別延伸到階段緩衝區D與E(503、513)。
儀器計數器
所揭露的技術使用儀器計數器來判定資料流圖表400的階段的運行期執行中的階段延時。如稍後使用圖15、16、17、18和19所討論的,在一種實作中,儀器計數器是組態有儀器邏輯並且可操作地耦合到晶片/積體電路(例如,可重組態處理器1500)的處理元件/可組態單元(例如,模式計算單元(PCU))、模式記憶體單元(PMU)的硬體單元(儀器單元),其在運行期執行資料流圖表400。在一種實作中,資料流圖表400的每個階段在運行期是由一個或多個相關聯的處理元件/可組態單元執行,以及儀器計數器可操作地耦合到相關聯的處理元件/可組態單元,以測量運行期的相應階段的階段延時。
排程和相依性
由編譯時間邏輯132產生的組態檔案定義被組態以執行資料流圖表400的計算操作和記憶體操作的排程和相依性。組態檔案定義的排程可以是管線、依序或串流執行。例如,外迴圈410是第一管線,內迴圈409是第二管線。第二管線的當前迭代被排程在第一管線的當前迭代已經執行之後執行。在管線執行中,迴圈迭代的執行是重疊的。在最內層迴圈(例如,迴圈409)中,重疊程度基於控制器的平均啟動間隔。在外迴圈(例如,迴圈410)中,重疊量由控制器的深度確定,該深度定義為一個階段在其消費者階段開始執行之前允許執行的外迴圈迭代的最大數量。
在依序執行中,迴圈主體的單次迭代在下一次迭代開始之前全部執行。依序排程等效於管線操作,其中啟動間隔等於迴圈主體的延時,或者對於外部階段緩衝區而言,深度為1。透過允許每個內部階段緩衝區在輸入可用時同步運行,串流執行進一步重疊階段。當階段緩衝區之間的通訊透過串流介面或佇列完成時,串流是一種定義良好的控制方案。
程式迴圈可以根據它們所包含的相依性類型進行分類。程式中兩個操作之間的相依性是限制它們執行順序的關係。相依性的實例包括read-after-write(寫入後讀取,真正的相依性或流相依性)、write-after-read(讀取後寫入,反相依性)和write-after-write(寫入後寫入,輸出相依性)。迴圈的同一迭代中不同操作之間的相依性稱為迭代內相依性。迴圈的不同迭代之間的相依性稱為迭代攜帶相依性(loop-carried dependencies)。硬體迴圈管線操作利用此等相依性之並行性,例如透過將不同迴圈迭代的計算重疊於管線方式中進行。例如,在一種實作中,為迴圈主體實例化單個深度管線電路,並且不同迴圈迭代的計算在時間和空間上重疊。相依性的其他實例包括獨立於迴圈的相依性和迴圈控制相依性。
編譯時間邏輯132對迴圈進行管線化,而不管它們的巢套層級為何。內部管線是基於它們的啟動間隔 (II)進行排程。編譯器首先根據內部的、目標相關的查找表為給定控制器中的每個基元節點收集資源啟動間隔。大多數基元操作都是管線化的,並且其資源啟動間隔為1。編譯時間邏輯132然後基於資料流圖表400計算管線內的所有迴圈攜帶的相依性。對於不可定址記憶體,總啟動間隔是所有相關讀取和寫入之間的最大路徑長度。對於可定址記憶體,迴圈攜帶的相依性的路徑長度也乘以寫入和讀取位址的差異。如果位址是獨立於迴圈的,則啟動間隔是路徑長度(如果它們可能相等),如果它們可證明永遠不相等,則其為路徑長度。如果位址之間的距離不能靜態確定,則啟動間隔是無限的,這意味著迴圈必須按順序運行。控制器的最終啟動間隔定義為所有迴圈攜帶的相依性的啟動間隔和所有資源啟動間隔的最大值。編譯時間邏輯132也以類似的方式對外部控制節點的主體進行管線化,但是根據內部控制節點和階段數來計算資料流排程。編譯時間邏輯132還將外迴圈的多次迭代管線化通過外迴圈的階段緩衝區。
階段延時
所揭露的技術使用控制訊號來判定階段延時。控制訊號的實例包括讀取就序符記、讀取開始符記、讀取完成符記、寫入就緒符記、寫入開始符記、寫入完成符記以及屏障符記。控制訊號是通過控制網路進行路由且交換(沿控制連接傳播)的脈衝訊號。在一種實作中,控制訊號表示開始事件和停止事件,其表徵在資料流圖表400的執行期間實作的資料處理操作(例如,計算操作、記憶體操作、路由操作及/或控制操作)的開始和停止。
如上所述,內迴圈410可組態以針對外迴圈410的每次迭代執行n次迭代。例如,考慮外迴圈410處理一批數千個影像並且每個影像具有三個維度(例如,RGB)。此外,內迴圈409在逐維度的基礎上處理千幅影像。然後,針對該批次,外迴圈410的一千次迭代是針對千張影像執行,且內迴圈409的三千次迭代是針對千張影像中的各個的三個維度執行。儀器計數器用於判定外迴圈410和內迴圈409的批次層級的階段延時。
多個生產者,單個消費者
考慮外迴圈410的實例。階段1有三個生產者A、B、C和一個消費者L。進一步考慮,在階段1的單次迭代中,生產者A接收具有Q個向量的第一張量作為輸入,生產者B接收具有K個向量的第二張量作為輸入, 生產者C接收具有V個向量的第三張量作為輸入。內迴圈410處理第一、第二和第三張量作為輸入以及產生具有Z向量的第四張量作為輸出。
沿著y軸,圖9中的時序圖示出生產者A、B、C和消費者L在階段1的當前迭代中的操作。y軸還示出生產者A、B、C的各自的儀器計數器IC A、IC B、IC C,其組態有儀器邏輯並且可操作地耦合到運行期在晶片上實作生產者A、B、C的可重組態處理器的可組態單元。x軸示出由生產者A、B、C和消費者L為當前迭代實作的資料處理操作(例如,計算操作、記憶體操作、路由操作及/或控制操作)期間經過的時脈週期。x軸還示出在儀器計數器IC A、IC B、IC C回應於資料處理操作的計數累積(或增量)期間經過的時脈週期。
在週期2,生產者A 從輸入源(IN)接收來自第一張量(T1
0)的Q個向量中的第一向量。作為回應,生產者A發布讀取開始符記(以藍色表示為開始事件)。讀取開始符記在週期3觸發儀器計數器IC A。
在週期3,生產者B 從輸入源(IN)接收第二張量(T2
0)的K個向量中的第一向量。作為回應,生產者B發佈讀取開始符記(以藍色表示為開始事件)。讀取開始符記在週期4觸發儀器計數器IC B。
在週期4,生產者C 從輸入源(IN)接收第三張量(T3
0)的V個向量中的第一向量。作為回應,生產者C發佈讀取開始符記(以藍色表示為開始事件)。讀取開始符記在週期5觸發儀器計數器IC C。
在周期121,消費者L 從第四張量的Z個向量中接收最後一個向量(R1
2)(R1,R表示結果)。作為回應,生產者L發佈寫入完成符記(以洋紅色表示為停止事件)。寫入完成符記由生產者A、B、C中的各個在週期122沿控制網路的控制匯流排接收。寫入完成符記在計數120處停止儀器計數器IC A。儀器計數器IC A輸出120作為生產者A的儀器計數。寫入完成符記在計數119處停止儀器計數器IC B。儀器計數器IC B輸出119作為生產者B的儀器計數。寫入完成符記在計數118處停止儀器計數器IC C。儀器計數器IC C輸出118作為生產者C的儀器計數。
儀器計數器IC A、IC B、IC C報告的儀器計數用於計算階段1的當前迭代的階段延時。可以透過對儀器計數器IC A、IC B、IC C報告的儀器計數應用MIN、MAX、AVERAGE及/或SUM函數,以計算出階段1的當前迭代的階段延時(對於AVERAGE實作,除數是階段緩衝區的數量)。類似地,可以為該批次的千個影像計算階段1的千次迭代的複數個階段延時。可以透過對複數個階段延時應用MIN、MAX、AVERAGE及/或SUM函數,以計算階段1的累積階段延時(對於AVERAGE實作,除數是階段迭代的數量(由批次大小或小批次(mini-batch)大小判定))。
在若干實作中,針對資料處理操作(例如,計算操作、記憶體操作、路由操作及/或控制操作)同時運行多個儀器計數器。多個儀器計數器可以對資料處理操作的多個並行執行的迭代的性能事件進行計數。例如,轉向圖9,考慮生產者A接收用於資料處理操作的第一次迭代的第一張量的第一向量並且作為回應釋放第一讀取開始符記。第一讀取開始符記觸發第一個增量計數器IC1 A。生產者A接收到第一張量的所有向量,但尚未從消費者L接收到第一次迭代的第一個寫入完成符記。在接收到第一寫完成符記之前,生產者A接收到用於資料處理操作的第二次迭代的第二張量的第一向量,並且作為回應釋放第二讀取開始符記。第二讀取開始符記觸發第二個增量計數器IC2 A。生產者A接收到第二張量的所有向量,但尚未從消費者L接收到第二次迭代的第二個寫入完成符記。在接收到第一與第二寫完成符記之前,生產者A接收到用於資料處理操作的第三次迭代的第三張量的第一向量,並且作為回應釋放第三讀取開始符記。第三個讀取開始符記觸發第三增量計數器IC3 A。因此,三個增量計數器IC1 A、IC2 A、IC3 A針對資料處理操作的各個迭代並行計數,儘管在不同時脈週期被啟用。在生產者A接收到第一個寫入完成符記後,第一個增量計數器IC1 A關閉,並報告其計數以計算第一次迭代的階段延時。在生產者A接收到第二個寫入完成符記後,第二個增量計數器IC2 A關閉,並報告其計數以計算第二次迭代的階段延時。在生產者A接收到第三個寫入完成符記後,第三個增量計數器IC3 A關閉,並報告其計數以計算第三次迭代的階段延時。
在一些實作中,增量計數器的輸出(例如,計數)被報告給主機(例如,經由PCIe匯流排)。在一種實作中,儀器計數器以菊花鏈形式連接複數個性能計數器,然後主機讀取由這些計數器收集的資料,例如經由PCIe控制暫存器訪問(CRA)或控制和狀態暫存器(CSR)埠收集到的資料。
在一些實作中,這三個計數在同一儀器計數器上計數。在其他實作中,這三個計數在各自或不同儀器計數器上計數。在一種實作中,各自或不同的儀器計數器在各自的或不同的儀器單元上實作。在一些實作中,各自的或不同的儀器單元可操作地耦合到各自的或不同的可組態單元。在一些實作中,各自的或不同的儀器單元可操作地耦合到相同的可組態單元。在另一種實作中,各自或不同的儀器計數器在相同的儀器單元上實作。單個可組態單元可以具有一個或多個儀器單元,該等儀器單元可以在單個可組態單元上同時、同步和異步操作。單個儀器單元可以同時、同步和異步運行一或多個儀器計數器。
在一些實作中,可組態單元被組態以回應於基於編譯時間邏輯132定義的控制和資料相依性結合多個控制訊號來觸發會開始和停止增量計數器的開始事件和停止事件。上面,我們討論了生產者A為當前迭代釋放讀取開始符記以回應滿足單個條件或相依性的情境:接收當前迭代的資料單元。在其他實作中,生產者A可組態以回應兩個條件或相依性的滿足以釋放當前迭代的讀取開始符記:(i)接收當前迭代的資料單元,以及(ii)接收來自消費者L的針對上一次迭代的寫入完成符記。在這種情況下,生產者A的增量計數器可能會遇到一些等待滿足第二個條件的停滯週期。第二個條件確保上一次迭代的執行在當前迭代開始執行之前完成(也防止緩衝區溢出)。
在另一個實例中,可以組態具有共享消費者的兩個生產者,以便兩個生產者以不同的速率和延時接收輸入。在這種情況下,兩個生產者中較快的增量計數器在當前迭代中經歷了許多死週期(dead cycle)。為了防止這種情況,可以將更快的生產者組態以回應兩個條件或相依性的滿足而釋放讀取開始符記:(i)接收當前迭代的資料單元,以及(ii)接收來自較慢生產者針對當前迭代的讀取開始符記(或同步符記)。第二個條件確保兩個生產者的增量計數器在同一迭代中同時觸發,即同步或在幾個時脈週期內,從而防止較快生產者的增量計數器錯誤地報告死計數(這實際上是由較慢的生產者引起的)。
圖10是使用儀器計數器判定資料流圖表400的內迴圈409中第一階段1.0的迭代的階段延時的時序圖。階段1.0有兩個生產者D和E以及一個消費者F。增量計數器IC D和IC E在生產者D和E依序釋放各自的讀取開始符記時依序觸發(以藍色表示為開始事件),並在當它們分別接收到來自消費者F的寫入完成符記時並行終止(以洋紅色表示為停止事件)。
儀器計數器IC D、IC E報告的儀器計數用於計算階段1.0的當前迭代的階段延時。可以透過對儀器計數器IC D以及IC E報告的儀器計數應用MIN、MAX、AVERAGE及/或SUM函數,以計算出階段1.0的當前迭代的階段延時(對於AVERAGE實作,除數是階段緩衝區的數量)。類似地,可以為該批次的一千個影像計算階段1.0的千次迭代的複數個階段延時。可以透過對複數個階段延時應用MIN、MAX、AVERAGE及/或SUM函數,以計算階段1.0的累積階段延時(對於AVERAGE實作,除數是階段迭代的數量(由批次大小或小批次(mini-batch)大小判定))。
單個生產者,單個消費者
圖11是使用儀器計數器判定資料流圖表400的內迴圈409中第二階段1.1的迭代的階段延時的時序圖。階段1.1有一個生產者F以及一個消費者G。增量計數器IC F在生產者F釋放讀取開始符記時觸發(以藍色表示為開始事件),並在當生產者F接收到來自消費者G的寫入完成符記時終止(以洋紅色表示為停止事件)。
儀器計數器IC F報告的儀器計數用於計算階段1.1的當前迭代的階段延時。可以為該批次的一千個影像計算階段1.1的千次迭代的複數個階段延時。可以透過對複數個階段延時應用MIN、MAX、AVERAGE及/或SUM函數,以計算階段1.1的累積階段延時(對於AVERAGE實作,除數是階段迭代的數量(由批次大小或小批次(mini-batch)大小判定))。
圖12是使用儀器計數器判定資料流圖表400的內迴圈409中第三與第四階段1.2與1.3的迭代的階段延時的時序圖。階段1.2有一個生產者G以及一個消費者H。增量計數器IC G在生產者G釋放讀取開始符記時觸發(以藍色表示為開始事件),並在當生產者G接收到來自消費者H的寫入完成符記時終止(以洋紅色表示為停止事件)。
儀器計數器IC G報告的儀器計數用於計算階段1.2的當前迭代的階段延時。類似地,可以為該批次的一千個影像計算階段1.2的千次迭代的複數個階段延時。可以透過對複數個階段延時應用MIN、MAX、AVERAGE及/或SUM函數,以計算階段1.2的累積階段延時(對於AVERAGE實作,除數是階段迭代的數量(由批次大小或小批次(mini-batch)大小判定))。
階段1.3有一個生產者H以及一個消費者I。增量計數器IC H在生產者H釋放讀取開始符記時觸發(以藍色表示為開始事件),並在當生產者H接收到來自消費者I的寫入完成符記時終止(以洋紅色表示為停止事件)。
儀器計數器IC H報告的儀器計數用於計算階段1.3的當前迭代的階段延時。可以為該批次的一千個影像計算階段1.3的千次迭代的複數個階段延時。可以透過對複數個階段延時應用MIN、MAX、AVERAGE及/或SUM函數,以計算階段1.3的累積階段延時(對於AVERAGE實作,除數是階段迭代的數量(由批次大小或小批次(mini-batch)大小判定))。
同步事件
圖13是使用儀器計數器判定資料流圖表400的內迴圈409中第五階段1.4的迭代的階段延時的時序圖。階段1.4有兩個生產者J和I以及一個消費者K。增量計數器IC J和IC I在生產者J和I依序釋放各自的讀取開始符記時依序觸發(以藍色表示為開始事件),並在當它們分別接收到來自消費者K的寫入完成符記時並行終止(以洋紅色表示為停止事件)。
圖14是使用儀器計數器與同步符記判定資料流圖表400的內迴圈409中第五階段1.4的迭代的階段延時的時序圖。生產者J 直接從階段緩衝區C接收其輸入。相反,生產者I在階段1.0、1.1和1.3完成的級聯處理之後接收其輸入。這導致生產者J比生產者I更快地接收到其當前迭代的輸入。為了同步增量計數器IC J和IC I,生產者I釋放同步符記(以綠色表示)以回應接收到當前迭代的資料單元。生產者I並行釋放同步符記與其讀取開始符記。如圖所示,生產者J在接收到當前迭代的資料單元時不釋放其讀取開始符記。取而代之的,生產者J釋放其讀取開始符記以回應從生產者I接收到同步符記。
儀器計數器IC J與IC I報告的儀器計數用於計算階段1.4的當前迭代的階段延時。可以透過對儀器計數器IC J以及IC I報告的儀器計數應用MIN、MAX、AVERAGE及/或SUM函數,以計算出階段1.4的當前迭代的階段延時(對於AVERAGE實作,除數是階段緩衝區的數量)。類似地,可以為該批次的一千個影像計算階段1.4的千次迭代的複數個階段延時。可以透過對複數個階段延時應用MIN、MAX、AVERAGE及/或SUM函數,以計算階段1.4的累積階段延時(對於AVERAGE實作,除數是階段迭代的數量(由批次大小或小批次(mini-batch)大小判定))。
單一生產者,多個消費者
在一些實作中,當多個消費者共享的單個生產者釋放讀取開始符記時觸發儀器計數器,以及當多個消費者中的各個已將其各自的寫入完成符記發送到單個生產者時終止(凍結)。
多個生產者,多個消費者
在一些實作中,當從多個生產者接收到各自的讀取開始符記時觸發儀器計數器,以及當多個消費者中的各個已將其各自的寫入完成符記發送到多個生產者時終止(凍結)。
其他檢測事件(Instrumented Events)
儀器單元被組態以計數其他性能事件,例如可組態單元的寫入和讀取速度/頻寬/速率。儀器單元被組態以計數其他性能事件,例如在有效範圍內的計算出記憶體位址的數量,計數小於最小位址的計算出記憶體位址的數量,及/或計數大於最大位址的計算出記憶體位址的數量,並將計數報告為性能度量。儀器單元被組態以對其他性能事件進行計數,例如當向處理單元陣列中的同一處理單元發出的多個記憶體請求佇列並按依序履行時的實例數量,並將計數報告為性能度量。儀器單元被組態以對其他性能事件進行計數,例如當由於特定處理單元的不可用性造成向處理單元陣列中的特定處理單元發出的特定記憶體請求被移交(hand off)給處理單元陣列中的另一個處理單元以供履行時的實例數量,並將計數報告為性能度量。
儀器單元被組態以計數其他性能事件,例如特定記憶體請求的發出、移交與履行之間的經過週期數量。儀器單元被組態以計數其他性能事件,例如向複數個記憶體通道中的各自記憶體通道發出的記憶體請求的數量,並且將計數報告為性能度量。儀器單元被組態以對其他性能事件進行計數,例如當向複數個記憶體通道中的同一記憶體通道發出的多個記憶體請求佇列並按依序履行時的實例數量,並將計數報告為性能度量。儀器單元被組態以計數其他性能事件,例如多個記憶體請求的發布、佇列和依序履行之間經過的週期數,並將該計數報告為性能度量。儀器單元被組態以對其他性能事件進行計數,例如當由於特定記憶體通道的不可用性造成向複數個記憶體通道中的特定記憶體通道發出的特定記憶體請求被移交(hand off)給複數個記憶體通道中的另一個記憶體通道以供履行時的實例數量,並將計數報告為性能度量。
由所揭露儀器計數器所檢測的其他事件實例可以在:IBM,「POWER9 Performance Monitor Unit User's Guide」,OpenPOWER,1.2版,2018年11月28日找到,其可透過https://wiki.raptorcs.com/w/images/6/6b/ POWER9_PMU_UG_v12_28NOV2018_pub.pdf存取,其透過引用併入,就好像在此完全闡述一樣。
由所揭露儀器計數器所檢測的其他事件實例可以在:Intel,「Intel® FPGA SDK for Pro Edition: Best Practices Guide」,版本20.4,2020年12月14日找到,其可透過https://www.intel.com/content/dam/www/ programmable/us/en/pdfs/literature/hb/opencl-sdk/aocl-best-practices-guide.pdf存取,其透過引用併入,就好像在此完全闡述一樣。
由所揭露儀器計數器所檢測的其他事件實例可以在:Prabhakar et al.所著「Plasticine: A Reconfigurable Architecture for Parallel Patterns」,ISCA
‘17,June 24-28,2017,Toronto,ON,Canada以及Koeplinger et al.所著「Spatial: A Language and Compiler for Application Accelerators」,
Proceedings Of The 39th ACM SIGPLAN Conference On Programming Language Design And Implementation(PLDI),Proceedings of the 43rd International Symposium on Computer Architecture,2018中找到,其透過引用併入,就好像在此完全闡述一樣,並且包括包括諸如線性存取、平鋪存取、串流存取、對DRAM的隨機讀取/寫入、密集和稀疏請求等實例的數量,以及每次花費的時間。
儀器網路和儀器單元
圖15是描繪包括主機、記憶體、以及可重組態資料處理器(包括儀器網路)的系統之系統圖式。如圖15之實例所示,可重組態資料處理器1510包括可組態單元陣列1590,其包括本文所述的儀器網路。
處理器1550包括外部I/O介面1530以及外部I/O介面1550,該外部I/O介面1530藉由線1525以與主機1520連接,該外部I/O介面1550藉由線1545以與記憶體1540連接。I/O介面1530、1550經由匯流排系統1515連接到該可組態單元陣列1590。匯流排系統1515可具有承載一資料塊之匯流排寬度,其可在本實例中是1528位元(全文對1528位元之參考可一般而言被視成一例示性大小)。
使用組態檔案將可組態單元陣列1590中的可組態單元進行組態,主機1520可將組態檔案經由介面1530、匯流排系統1515、以及可重組態資料處理器1510中的介面1550傳送到記憶體1540。可以許多種方式載入組態檔案以適配特定之架構,包括載入到可組態處理器1510外部之資料路徑中。該組態檔案可以從記憶體1540經由記憶體介面1550而取回。組態檔案之塊(chunk)可接著以分佈序列(distribution sequence)被傳送到可重組態資料處理器1510中該可組態單元陣列1590中的可組態單元。
外部時脈產生器1570或其他時脈訊號來源可對可重組態資料處理器1510中的元件提供時脈訊號1575或數個時脈訊號,該元件包括該可組態單元陣列1590、匯流排系統1515、與外部資料I/O介面1550。陣列1590中的可組態單元可以被組態以執行執行片段。
儀器網路為可組態以在可用於協調執行片段和測量階段延時以及其他性能度量的可組態單元之間建立控制訊號路徑。儀器網路可組態為可組態和可重組態的架構中,以提供適合支援可組態單元陣列中的複雜資料處理操作的訊號路由,包括例如CGRA處理器中的可組態單元。
儀器網路提供了在CGRA上註冊或記錄來自多個不同來源的入站符記(inbound token)和狀態訊號(status signal)的能力,這些可以在組態資料儲存中定義,並根據入站符記與狀態訊號的指定組合產生輸出符記和其他訊號。本文描述的實例足夠靈活,可以透過將儀器邏輯分解為多個層級來支援跨任意數量來源的控制。
如本文所述的儀器網路可以與包括處理單元陣列的其他類型的資料處理器一起使用,這些處理單元執行為了更廣泛的資料處理操作的目的可能需要協調的執行片段。
圖16是包含具有相關儀器單元的一陣列可組態單元的塊(tile)的簡化圖。在本實例中,該可組態單元陣列1600包括複數類型之可組態單元。在本實例中,可組態單元之類型包括模式計算單元(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)要執行的指令、運算元的來源以及輸入和輸出介面的網路參數。
額外地,此等可組態單元各包含組態儲存,包含一組暫存器或正反器,其儲存可用以追蹤巢套迴圈中進度或他者之狀態。組態檔案包含表示執行該程式之各組件的初始組態(或開始狀態)之位元流。此位元流被稱為位元檔案。程式載入是在可組態單元陣列中基於位元檔案之內容來設定好組態儲存之處理,以允許所有組件可以執行程式(亦即,機器)。程式載入也可能需要所有PMU記憶體之載入。
匯流排系統包括將陣列中可組態單元互連之鏈接。陣列層級網路中的鏈接包括一或多(且在本案之情況下,兩種)實體匯流排:塊層級之向量匯流排(例如,128位元之資料)、以及字層級之純量匯流排(例如,32位元之資料)。舉例而言,交換單元1611與1612之間的互連1621包括具128位元之向量匯流排寬度的向量匯流排互連、以及具32位元之純量匯流排寬度的純量匯流排互連。此外,包括可包括可組態互連的控制匯流排(參見圖16),其在由塊的組態檔案中的組態位元指定的訊號路徑上攜帶多個控制位元。在一些實作中,控制匯流排可以包含與資料匯流排分開的實體線。在其他實作中,控制匯流排可以使用具有不同協定的相同實體線或在時間共享過程中實施。
實體匯流排在傳送之資料粒度方面有所不同。在一實作中,向量匯流排可承載一包括16位元組(=128位元)(16-Bytes (=128 bits))之資料的塊作為其酬載。純量匯流排可具有32位元之酬載,並承載純量運算元或控制資訊。控制匯流排可承載諸如符記與其他訊號之控制交握(handshake)。向量與純量匯流排可為封包交換的,包括指示各封包目的地之標頭與諸如序列號等其他資訊,該序列號等其他資訊可用以當接收到封包順序亂掉時重組一檔案。各封包標頭可包含目的地識別符,其識別目的地交換單元之地理座標(例如,陣列中的行與列);以及包括介面識別符,其識別在目的地交換器(例如,東南西北等)上用以到達目的地單元之介面。
圖16A描繪與陣列層級網路中的元件連接之例示性交換單元。如圖16A之實例所示出,交換單元可具有8個介面。該交換單元之東南西北介面(North, South, East and West interface)被用以在交換單元之間進行連接。該交換單元的最東南西北之介面各用以連接到PCU或PMU實例。各塊象限(tile quadrant)中2個交換單元具有到位址產生與合併單元(AG CU)與合併單元(CU)之連接,該AG CU包括多個位址產生(AG)單元且該CU連接到多個位址產生單元。合併單元(CU)在AG之間進行仲裁併以及處理記憶體請求。交換單元之8個介面各可包括向量介面、純量介面、以及控制介面,以與向量網路、純量網路、與控制網路進行通訊。例示性交換單元包括儀器單元1651。
在組態後執行機器的片段之執行期間,可透過使用在陣列層級網路上一或多交換單元之(一或多)向量介面與向量匯流排,以經由一或多單元交換器與在該等單元交換器之間的一或多鏈接來將資料傳送到可組態單元。
透過塊(tile)的組態實作的資料處理操作包括資料處理操作的複數個執行片段,這些執行片段分佈在相應的可組態單元(本實例中為AG、CU、PMU、PCU)之間並由其執行。
該實例中的儀器網路包含與陣列中的可組態單元耦合的複數個可組態儀器邏輯單元。在該實例中,複數個儀器邏輯單元包括在位址產生器AG中或可操作地耦合到位址產生器AG的儀器邏輯單元(例如1601)、在PMU中的儀器邏輯單元(例如1602)以及在PCU中的儀器邏輯單元(例如1603)。針對給定資料處理操作的儀器網路可以被組態以檢測/分析/性能度量/計數執行片段之間的關係,以協調分佈在塊上的執行片段的性能的結束和開始的時間。
儀器邏輯單元連接到控制匯流排,在此實例中,該控制匯流排是使用可組態互連(未顯示-參見圖16)實作的。可以使用組態資料來組態控制匯流排,以在塊中的儀器邏輯單元之間形成訊號路徑,以支援設計用於執行資料處理操作的塊的特定組態。
在一種實作中,可組態單元包括組態和狀態暫存器,其保存在組態載入處理中載入或在組態卸載處理中卸載的單元組態檔案。暫存器可以連接於序列鏈中並且可透過透過該序列鏈移位位元之處理載入。在若干實作中,可有多於一個並聯或串聯配置之序列鏈。當可組態單元在一匯流排週期中接收到例如128位元之組態資料時,可組態單元以每週期一位元之速率透過其序列鏈將本資料移位,其中移位器週期可以與匯流排週期相同之速率運行。可組態單元需花費128個移位器週期,才能將透過向量介面接收到之128位元之資料載入128個組態位元中。
在將塊(tile)進行組態之前,組態檔案或位元檔案可透過使用相同的向量匯流排,經由一或多單元交換器與在該等單元交換器之間的一或多鏈接,傳送到可組態單元,其使用在陣列層級網路上一或多交換單元之(一或多)向量介面與向量匯流排。例如,可組態單元PMU 1641所特有的單元檔案中特定的一塊組態資料可以傳送到PMU 1641,其是經由位址產生器AG中載入控制器與交換單元1611的西(W)向量介面之間的鏈接1620、交換單元1611、以及交換單元1611的東南(SE)向量介面與PMU 1641之間的鏈接1631。儀器網路的組態資料可包括在相關組態單元的組態資料中或經由其他組態資料結構提供。
可組態單元透過多個記憶體介面以與記憶體介接。各個記憶體介面可透過使用些許AGCU來存取。各AGCU包含可重組態純量資料路徑,以產生對晶片外記憶體之請求。各AGCU包含FIFO(先進先出緩衝區,用於組織資料)以將發出命令、資料與從晶片外記憶體來訊的回應緩衝。
為了特定資料處理操作的目的,可以載入組態檔案以指定一包括儀器邏輯單元和控制匯流排的塊的組態,其包括可組態單元中的執行片段、互連組態和儀器網路組態。用於協調組態檔案的載入與卸載的技術描述於由Shah等人提出共同擁有的於2018年11月21日提出的美國專利申請案No.16/197,826,標題為可重組態資料處理器的組態負載,其內容透過引用全文併入本文中。
圖17 示出一部分的片(圖16的右上部分),其中資料網路被移除,並示出控制匯流排的一部分,包括可用於在儀器邏輯單元之間形成訊號路徑的可組態互連。圖示部分中的複數個可組態單元陣列包括交換器S(例如,1750)、PMU(例如,1751)、PCU(例如,1752)、AG(例如,1754)以及CU(例如,1755)。儀器邏輯單元(例如,1770)包含在陣列中的可組態單元中。在該實例中,除了交換器S和合併單元CU 之外的所有可組態單元都包括儀器邏輯單元。在其他實例中,可以利用儀器邏輯單元的不同分佈,包括儀器邏輯單元連接到陣列中的一個以上可組態單元的實例,以及其中儀器邏輯單元連接到所有可組態單元的實例(例如,包括描繪實例中的S和CU 類型單元)。
可組態互連由與水平導電體(例如,1761)相交的垂直導電體(例如,1760)格線示出。交換器盒(例如,1762)由組態資料設定以將水平導電體中的特定線或線組與每個交叉點處的垂直導電體互連。同樣,每個可組態單元可以包括輸入和輸出(未示出),用於使用可組態互連來將控制訊號路由,該可組態互連可以被組態以連接到水平和垂直導電體中的特定線。
在該實作中,每個儀器邏輯單元(例如,1770)包括複數個輸入和輸出(例如,1771),其可組態用於連接到互連的水平導電體中的特定線。在圖示中,可組態互連中的儀器邏輯單元之間的連接由可組態互連中的水平導電體構成。該圖式不建議對可使用可組態互連和儀器邏輯單元進行的可組態連接的實施和分佈進行任何限制。
可組態交換器通常可以使用具有連接到暫存器的控制輸入的傳輸閘來實作,該暫存器儲存用於控制屏障邏輯單元的組態檔案的位元。在一些實作中,組態形成在資料處理操作的整個執行期間在儀器邏輯單元的輸入和輸出之間持續的靜態路徑,以建立儀器網路,該儀器網路被實作以支援特定資料處理操作和分佈在塊的可組態單元之間的執行片段以支援資料處理操作。在其他實作中,組態可以形成動態路徑,這些路徑根據程式的執行階段改變,或作為控制流謂詞(if-then-else 構造)或表示控制流相依的執行片段定序的其他動態、輸入相依操作而改變。
圖18是描繪例示性可組態模式計算單元(Pattern Compute Unit,PCU)(包括儀器邏輯單元)之方塊圖。可組態單元可與純量、向量、與控制匯流排介接,在本實例中使用三種對應組之輸入與輸出(IO)來與其介接,該等輸入與輸出包括:純量輸入/輸出、向量輸入/輸出、以及控制輸入/輸出。純量IO可用以通訊單一字之資料(例如,32個位元)。向量IO可用以通訊資料塊(例如,128個位元),其使用情形諸如在單元組態載入處理中接收組態資料時,以及在橫跨多個PCU之間的一長管線組態之後的操作期間傳輸與接收資料之情形。控制IO可用以在控制線上通訊訊號,諸如可組態單元之執行的開始或結束。控制輸入是由控制區塊1890所接收,以及控制輸出是由控制區塊1890所提供。
在本實例中,使用向量FIFO區塊1860中的向量FIFO來將各向量輸入進行緩衝,該向量FIFO區塊1860可包括一或多向量FIFO。與本實例相似的,使用純量FIFO 1870來將各純量輸入進行緩衝。使用輸入FIFO會將資料產生者與消費者之間的計時去耦合,並透過使其對輸入延遲失配具有穩健性,簡化可組態單元間控制邏輯。
在區塊1880中,可組態單元包括多個可重組態資料路徑。可組態單元中的資料路徑可以被組織成多階段(階段1…階段N)、可重組態SIMD(單指令多資料)管線。推進可組態單元中組態序列鏈裡的該數個資料塊包括用於該可組態單元中各資料路徑中各階段的組態資料。組態資料儲存1820中的組態序列鏈經由線1821而連接到區塊1880中的多個資料路徑。
經組織成多階管線之可組態資料路徑可在各自階段包括多個功能單元(例如,1881、1882、1883、1884、1885、1886)。可以在多階管線或多個多階管線中的各個階段的多個功能單元中實作計算單元或計算單元的一部分。在圖9所示的實例中,可以在多個功能單元和多個記憶體單元中實作電路。功能單元中的輸入暫存器可以暫存來自純量FIFO 1870或向量FIFO 1860或來自多階管線中的前階段的輸入。多階管線中一階段的功能單元可以執行例如,邏輯移位、算術函數、比較、邏輯運算等功能,並產生輸出。
儀器邏輯1895包含在可組態單元的這個實例中。儀器邏輯1895可以是控制區塊1890的一部分或被實作為裝置上的單獨區塊。儀器邏輯1895耦合到控制輸入和到控制輸出。此外,儀器邏輯1895耦合到控制區塊1890和計數器鏈1894,用於交換狀態訊號和控制訊號以支援如上所述組態的控制屏障網路。
該可組態單元陣列中的可組態單元包括組態資料儲存1820(例如,序列鏈),用以儲存包含對對應可組態單元特定的複數個組態資料塊(或其他大小之次檔案)之單元檔案。該可組態單元陣列中的可組態單元各包括單元組態載入邏輯1840,其經由線1822連接到組態資料儲存1820,用以執行單元組態載入處理。該單元組態載入處理包括經由匯流排系統(例如,向量輸入)接收對可組態單元特定的單元檔案之塊,並將接收到的塊載入可組態單元的組態資料儲存1820中。載入到組態資料儲存1820中的單元檔案可包括用於實作如本文所述多個功能單元與多個記憶體單元中儀器邏輯之組態資料,該組態資料包括運算碼與路由組態。
在本實例中,在複數個可組態單元的可組態單元中的組態資料儲存包含序列鏈之鎖存器,其中該鎖存器儲存有控制可組態單元中資源組態之位元。組態資料儲存中的序列鏈可包括用於組態資料之移位暫存器鏈以及用於狀態資訊與串聯連接計數器值之第二移位暫存器鏈。
輸入組態資料1810可被提供到向量FIFO作為向量輸入,並接著被傳送到組態資料儲存1820中。可使用向量輸出從組態資料儲存1820卸載輸出組態資料1830。
CGRA使用菊鏈完成匯流排以指示何時載入/卸載指令已完成。主AGCU將程式載入與卸載指令傳輸透過菊鏈指令匯流排到可組態單元陣列中的可組態單元。如圖18之實例所示,控制區塊1890、菊鍊完成匯流排1891與菊鍊指令匯流排1892經連接到菊鍊邏輯1893,該邏輯1893與單元組態載入邏輯1840通訊。該菊鍊邏輯1893可包括載入完成狀態邏輯,如下述。將在下文中進一步描述菊鍊完成匯流排。其他用於指令與完成匯流排之拓撲也是可能的,但此處未描述。
圖19是描繪例示性可組態模式記憶體單元(Pattern Memory Unit,PMU)(包括儀器邏輯單元)之方塊圖。PMU可包含與可重組態純量資料路徑1920耦合之暫用記憶體1930,其目的用於暫用記憶體1930之位址計算(RA、WA)與控制(WE、RE),並連帶耦合PCU中所用匯流排介面(圖18)。
匯流排介面可以包括純量輸入、向量輸入、純量輸出和向量輸出,可用於提供寫入資料(WD)。資料路徑可以組織為多階可重組態管線,包括多階之功能單元(FU)和相關管線暫存器(PR),這些暫存器將功能單元的輸入和輸出暫存。PMU可用儲存分散式晶載記憶體遍歷在該可重組態單元陣列上。
暫用記憶體由多個SRAM bank(組)構建(例如,1931、1932、1933、1934)。在暫用記憶體中SRAM bank之banking(分組)與緩衝邏輯1935可組態以些許模式操作以支援各種存取模式。本文描述之計算單元可包括儲存在暫用記憶體1930中的查找表,其來自組態檔案或來自其他來源。如本文所述的計算單元中,純量資料路徑1920可將實作函數f(I)之定址查找表的一部分原始輸入值I轉譯成由SRAM暫用記憶體1930所運用之定址格式,添加適當偏移等等,以使用該部分之輸入值I來讀取儲存在暫用記憶體1930中查找表之項目。各PMU可包括寫入位址計算邏輯與讀取位址計算邏輯,其提供寫入位址WA、寫入啟用WE、讀取位址RA與讀取啟用RE到分組緩衝邏輯(banking buffering logic)1935。基於本地FIFO 1911與1919之狀態與外部控制輸入,控制區塊1915可經組態以透過啟用適當計數器1916以觸發寫入位址計算、讀取位址計算、或觸發兩者。可程式化計數器鏈1916(控制輸入,控制輸出)與控制區塊1915可觸發PMU執行。
儀器邏輯1918包含在可組態單元的這個實例中。儀器邏輯1918可以是控制區塊1915的一部分或被實作為裝置上的單獨區塊。儀器邏輯1918耦合到控制輸入和到控制輸出。此外,儀器邏輯1918耦合到控制區塊1915和計數器鏈1916,用於交換狀態訊號和控制訊號以支援如上所述組態的控制屏障網路。
這是用於實作如本文所述的計算單元的可組態處理器的組態的一個簡化實例。可組態處理器可以以其他方式組態以實作計算單元。其他類型的可組態處理器可以其他方式實作計算單元。此外,在一些實例中,使用專用邏輯實作該計算單元,或使用一組和之專用邏輯與指令控制之處理器實作該計算單元。
圖20示出儀器邏輯單元的實例,其可用於可組態單元的陣列中以形成如本文所述的可組態儀器網路。例如,圖20中的實例可用作前面圖式中的儀器邏輯。屏障符記可用作開始和停止事件,以觸發和終止儀器單元的儀器計數器。
儀器邏輯單元包括輸入(例如,2001、2051、2057)和輸出(例如,2002、2061),它們連接到控制匯流排(圖3的可組態互連)和相關的可組態單元,例如上述例子的PCU、PMU、AG。
儀器邏輯單元(或儀器單元)包括符記儲存,其在該實例中包括複數個向上/向下計數器UDC(例如,2010)。在其他實施例中,可以使用不同類型的鎖存器,例如設置/重置SR鎖存器等來實作符記儲存。在其他實施例中,可以使用FIFO緩衝區的各種實作來實作符記儲存。每個UDC 都有增量輸入(increment input,例如,2011)和減量輸入(decrement input,例如,2012)。增量輸入可用於將儲存在UDC中的邏輯0更改為邏輯1,或者換句話說,用於設定符記儲存中的值。減量輸入可用於將儲存在UDC中的邏輯1更改為邏輯0,或者換句話說,用於將符記儲存中的值重置。
符記儲存是耦合到可組態輸入電路,在該實例中,該可組態輸入電路包含複數個可組態交叉開關(crossbar switch)。可組態輸入電路的狀態交叉開關2050具有連接到訊號的輸入2051,該訊號可用於指示陣列中可組態單元中的執行片段的狀態。在該實例中,狀態訊號可以包括來自相關可組態單元中的複數個計數器的計數器完成訊號,其可以用於指示執行片段的狀態。狀態交叉開關2050包括輸出2052、2053,它們可連接到增量交叉開關2030和減量交叉開關2040。
可組態輸入電路的增量交叉開關2030向符記儲存中的每個UDC提供增量訊號,並具有連接到控制匯流排的可組態互連的輸入2057,以及連接到狀態交叉開關2050的輸出的輸入。因此,每個UDC具有基於來自狀態交叉開關2050和來自可組態互連輸入2057的輸出的可組態選擇的增量訊號。增量交叉開關還具有連接以在線2052上接收由屏障邏輯2020產生的屏障符記的輸入,如下所述。
可組態輸入電路的減量交叉開關2040向符記儲存中的每個UDC提供減量訊號,並具有連接到控制匯流排的可組態互連的輸入2058(或多個輸入),以及連接到狀態交叉開關2050的輸出2052、2053的輸入。因此,每個UDC具有基於來自狀態交叉開關2050和來自可組態互連輸入2058的輸出的可組態選擇的減量訊號。減量交叉開關還具有連接以在線2022上接收由屏障邏輯2020產生的屏障符記的輸入,如下所述。
儀器邏輯單元包括啟用邏輯2000,該啟用邏輯2000包括可組態啟用遮罩2003,其基於符記儲存中的訊號和來自相關可組態邏輯單元的狀態訊號的可組態組合,在線2002上產生啟用訊號用於與相關聯可組態邏輯單元連接。例如,可以將線2002上的啟用訊號提供給圖19的控制區塊1970,其可以包括邏輯以利用線2002上的啟用訊號為PCU產生控制訊號以開始和停止執行片段。啟用邏輯2000的輸入包括來自相關可組態單元的線2001上的狀態訊號,例如FIFO非空訊號等。此外,啟用邏輯2000的輸入可以包括符記儲存的輸出(例如,2013)。因此,可以基於符記儲存的輸出的可組態組合來產生線2002上的啟用訊號。另外,可以基於符記儲存的輸出與相關可組態單元的狀態訊號的可組態組合來產生線2002上的啟用訊號。
儀器邏輯單元包括屏障符記邏輯2020,該屏障符記邏輯2020包括可組態屏障遮罩2021,其基於儲存在符記儲存中的線2013上的訊號的可組態組合以在線2022上產生屏障符記。線2022上的屏障符記作為回饋訊號被反饋到減量交叉開關2040,例如,該訊號可用於重置符記儲存。另外,在本實例中將線2022上的屏障符記應用到增量交叉開關2030作為輸入,例如,該訊號在設定符記儲存中的值的情況下是可用。
儀器邏輯單元包括輸出交叉開關2060。在本實例中,輸出交叉開關的輸入包括線2022上的屏障符記,以及由狀態交叉開關20200輸出的狀態訊號。在其他實作中,也可以向輸出交叉開關2060提供其他輸入。輸出交叉開關可組態以將來自線2022的屏障符記和其他訊號應用到可組態互連上的選定線2061。可組態互連上的選定線2061可以組態在提供屏障符記作為可組態邏輯陣列的儀器網路中的另一個儀器邏輯單元的輸入(例如,輸入2057)的訊號路徑中。可組態互連上的選定線2061可以組態在提供來自可組態單元之一的狀態訊號作為可組態邏輯陣列的儀器網路中的另一個儀器邏輯單元的輸入(例如,輸入2057)的訊號路徑中。
利用儀器邏輯單元,屏障操作如下運作。每個單元都可以組態以在所有可以增量UDC 訊號號上實施障壁。這包括來自相關可組態單元外部的控制匯流排的外部控制輸入,以及來自相關可組態單元內部的內部狀態訊號(如計數器完成訊號)。為了在這些訊號的子集上實作屏障,組態檔案在符記儲存中為子集的每個訊號保留一個初始化為零的UDC。交叉開關被組態以將所需的訊號路由到它們各自的UDC。接下來,組態屏障遮罩以選擇保留的UDC。該等遮罩選擇參與AND樹的UDC。AND樹的輸出是一個1位元的屏障符記,例如,當遮罩中的所有UDC具有大於零的值時,該符記變高。屏障符記可以組態以將參與屏障的所有UDC減量。這確保對於每組輸入符記,屏障訊號僅在一個週期內為高,從而產生一個輸出符記。透過對「輸出」交叉開關進行程式化,將產生的屏障符記發送到控制輸出。然後可以根據程式的需要使用該符記,例如,輸入到下一階段的計算,或輸入到下一個屏障節點等。在某些情況下,屏障符記可能也必須在本地發送到節點。為了促進這個用例,屏障符記也是增量交叉開關(Xbar)的一個入口,該增量交叉開關可以將其他UDC增量。在此組態中,屏障符記是用於重置符記儲存的目的。在其他實施例中,可以為此目的使用不同的訊號。此外,屏障符記可用於僅重置符記儲存中的一位元或僅部分位元,而並非重置所有位元。
這為軟體提供了最大的靈活性,以在靠近消費者的地方實作儀器以更好地利用資源。
來自可組態單元陣列中多個來源的控制符記通常需要在屏障處同步,其中在從每個來源接收一個符記後產生單個符記(控制脈衝)。此屏障要求是透過圖21中的訊號路由實例以圖形方式示出,該實作可以使用本文所述的儀器邏輯單元來實作。
圖21示出可以使用如本文所述的儀器網路來實作的執行片段和訊號路徑的實例。在圖21中,包括可組態邏輯單元的可組態單元稱為執行片段單元(execution fragment unit,EFU)。該網路包括三層EFU。第一層包括4個EFU (2101-2104),其輸出組合形成第一層屏障2105。與每個相關聯的控制屏障邏輯可以被組態以產生屏障符記,該屏障符記被路由到第二層,該第二層包括具有組合以提供屏障2113的輸出的EFU 2111和EFU 2112,以及具有組合以提供屏障2117的輸出的EFU 2114-2116。屏障符記可用作開始和停止事件,以觸發和終止儀器單元的儀器計數器。
在一種組態中,與EFU 2111和2112相關聯的控制屏障邏輯被組態以至少部分地基於來自EFU 2101-2104的屏障符記為EFU 2111和2112產生啟用訊號,並且對它們的控制輸出產生對應於屏障2113的屏障符記。相似的,與EFU 2114-2116相關聯的控制屏障邏輯被組態以至少部分地基於來自EFU 2101-2104的屏障符記為EFU 2114-2116產生啟用訊號,並且對它們的控制輸出產生對應於屏障2117的屏障符記。屏障符記與啟用訊號可用作開始和停止事件,以觸發和終止儀器單元的儀器計數器。
屏障2113和2117可以透過第三層EFU中的控制屏障邏輯來實作,該第三層EFU中的控制屏障邏輯包括EFU 2121和EFU 2122,它們被組合以提供屏障2123。如線2125所示,屏障2123可以應用於下一層。可以看出,可以在圖21所示的儀器網路的每層中實作各種儀器網路組態。例如,圖21中的第一層包含一個層級、四元控制屏障樹。屏障符記可用作開始和停止事件,以觸發和終止儀器單元的儀器計數器。
其他實作
加速深度學習的第一實例是使用深度學習加速器來訓練神經網路。加速深度學習的第二實例是使用深度學習加速器來操作經過訓練神經網路以執行推理。加速深度學習的第三實例是使用深度學習加速器來訓練神經網路,並接續使用任一或多經過訓練神經網路、來自上述者的資訊以及上述者的變體執行推理。
神經網路的實例包括全連接神經網路(FCNN)、遞迴神經網路(RNN)、卷積神經網路(CNN)、長短期記記憶體(LSTM)網路、自動編碼器、深度信念網路以及產生對抗網路(GAN)。
訓練神經網路的一個實例是判定與神經網路相關的一或多個權重,例如透過經由深度學習加速器的硬體加速。進行推理的一個實例是使用經過訓練神經網路透過處理基於與經過訓練的神經網路相關的權重的輸入資料來進行推理(inference)。如本文所用,術語「權重」是在各種形式的神經網路處理中使用的「參數」的實例。例如,一些神經網路學習旨在判定參數,這些參數接著可用於執行神經網路推理。
神經網路根據包括數層神經元的資料流圖表來處理資料。刺激(Stimuli)(例如,輸入資料)由神經元的輸入層接收,以及資料流圖表的計算結果(例如,輸出資料)由神經元的輸出層提供。神經元的例示性層包括輸入層、輸出層、整流線性單元層、全連接層、遞迴層、長短期記憶體層、卷積層、內核層、釋放層和池化層。神經網路是有條件地及/或選擇性地訓練的,其受硬體加速的影響。在經過訓練後,神經網路是有條件地及/或選擇性地用以進行推理,其受硬體加速的影響。
深度學習加速器(晶片)的一個實例是一或多個相對專用的硬體元件,它與一或多個軟體元件一起操作以訓練神經網路及/或使用神經網路執行推理,比使用相對不那麼專用的硬體元件相對更有效。相對專用的硬體元件的一些實作包括一或多個硬體邏輯電路元件,例如電晶體、電阻器、電感器、電容器、導線互連、組合邏輯(例如,NAND、NOR)閘、鎖存器、暫存器檔案、記憶體陣列、用於記憶體陣列、內容可定址記憶體、快閃記憶體、ROM、DRAM、SRAM、串聯器/解串器(SerDes)、I/O驅動器等的標籤,例如透過客制邏輯、合成邏輯、ASIC及/或FPGA實作。一些相對不那麼專用的硬體元件包括習知的CPU和習知的GPU。
儲存器的實例是能夠保留狀態資訊的一個或多個元件,例如以下中的任何一或多個: 正反器、鎖存器或鎖存器陣列、暫存器或暫存器陣列、暫存器檔案、記憶體、記憶體陣列、磁性儲存裝置、光儲存裝置、SRAM、DRAM、快閃記憶體以及ROM。在各種實作中,儲存器是揮發性的(例如,SRAM或DRAM)及/或非揮發性的(例如,快閃記憶體或ROM)。
積體電路(IC)的一個實例是在半導體材料的一個或多個部分(例如單個晶粒或複數個晶粒)上實作的電路的集合。晶粒的3D堆疊的實例是提供晶粒之間的機械連接及/或電連接,例如在與晶粒的主表面正交的維度上,以形成單元。機械連接及/或電連接以各種方式實作,例如透過焊球、微凸塊和矽通孔中的一或多種。晶粒的2.5D堆疊的實例是經由共用元件(例如矽中介層)提供晶粒之間的機械連接及/或電連接以形成單元,其中該各晶粒之間的機械連接及/或電連接與共用基板是在與晶粒主表面正交的維度上。機械連接及/或電連接以各種方式實作,例如透過焊球、微凸塊和矽通孔中的一或多種。應用特定積體電路(ASIC)的一個實例是為特定用途設計的IC。
封裝的實例是能夠機械地保持及/或包含一個或多個電子電路及/或電互連一個或多個電子電路的元件。例示性電子電路是半導體材料的一個或多個部分、一個或多個晶粒、一個或多個中介層以及一個或多個基板中的任何一個或多個。封裝的特定實例包括BGA封裝及其變體。若干IC包含封裝。基板的一個實例是機械地保持及/或電互連一或多個晶粒及/或一個或多個封裝的元件。基板的特定實例是PCB,以例如保持和互連封裝。基板的另一個特定實例是矽中介層,以例如耦合一個或多個3D堆疊或2.5堆疊晶粒。基板的另一特定實例是封裝,例如保持複數個晶粒。
所揭露技術可以應用於其他處理器,例如中央處理單元(CPU)、圖形處理單元(GPU)、現場可程式閘陣列(FPGA)、專用積體電路(ASIC)、專用指令集處理器(ASIP)和數位訊號處理器(DSP)。
應用程式102還可以被認為是圖、應用程式圖、資料流圖表、控制流圖、資料和控制流圖、使用者應用程式、模型、深度學習應用程式、深度神經網路、程式、程式影像、處理、工作和任務。
緩衝區也可被視為控制器或控制節點。
資料流管線也可以被認為是資料處理管線。
交叉開關也可以被認為是交換器。
實施條項
1. 一種資料處理系統,包含:
記憶體,儲存具有複數個計算節點的資料流圖表,該複數個計算節點沿著資料連接異步發送資料,其中該資料流圖表包括迴圈巢套,其中該迴圈被配置在數層之階層中,使得第二層迴圈在第一層迴圈內;
編譯時間邏輯,組態以透過將階段緩衝區插入到該第二層迴圈內部以及在該第一層迴圈與該第二層迴圈之間的輸入/輸出邊界處來將該資料流圖表的執行分區為兩個或更多個異步階段,其中該各個階段包括該複數個計算節點中的一個或多個計算節點,並且對於該各個階段,該階段緩衝區包括一個或多個輸入階段緩衝區和一個或多個輸出階段緩衝區;
運行期邏輯,以該編譯時間邏輯組態該運行期邏輯,以藉由計算接收資料單元的特定階段的輸入階段緩衝區與接收透過該特定階段的一或多個計算節點處理該資料單元的結果的該特定階段的輸出階段緩衝區之間的經過時間來判定該各個階段的階段延時;以及
儀器分析邏輯,組態以基於為該各個階段判定的該階段延時為該資料流圖表產生性能統計數據。
2. 如實施條項1之資料處理系統,其中該編譯時間邏輯還被組態以在該第二層迴圈內插入額外的階段緩衝區,以及
其中,該額外的階段緩衝區被組態以與插入該輸入/輸出邊界處的該階段緩衝區介接。
3. 如實施條項1之資料處理系統,其中該經過時間是經過的時脈週期的數量。
4. 如實施條項3之資料處理系統,其中該輸入階段緩衝區被組態以在接收到該資料單元時釋放讀取開始符記。
5. 如實施條項3之資料處理系統,其中該輸出階段緩衝區被組態以在接收到該資料單元的處理結果時釋放寫入完成符記。
6. 如實施條項5之資料處理系統,其中該編譯時間邏輯還被組態以組態各個該輸入階段緩衝區具有儀器計數器,
其中,當特定輸入階段緩衝區釋放讀取開始符記時,該特定輸入階段緩衝區的該儀器計數器開始增量時脈週期(亦即,開始計數該時脈週期或開始增量該計數該時脈週期的儀器計數器),以及
其中,當該特定輸入階段緩衝區沿控制連接接收到由相應輸出階段緩衝區釋放的寫入完成符記時,該儀器計數器停止增量該時脈週期(亦即,停止計數該時脈週期或停止增量該計數該時脈週期的儀器計數器)。
7. 如實施條項6之資料處理系統,其中該資料單元是具有第一複數個向量的第一張量,以及該資料單元的該處理結果是具有第二複數個向量的第二張量,
其中,該第一張量的大小與該第二張量的大小相同,或
其中,該第一張量的大小與該第二張量的大小不同。
8. 如實施條項7之資料處理系統,其中該特定輸入階段緩衝區在接收到該第一複數個向量中的第一向量時釋放該讀取開始符記。
9. 如實施條項7之資料處理系統,其中該相應輸出階段緩衝區在接收到該第二複數個向量中的最終向量時釋放該寫入完成符記。
10. 如實施條項6之資料處理系統,其中當該特定輸入階段緩衝區在接收到用於第一處理迭代的第一資料單元的時刻而釋放第一讀取開始符記時,該儀器計數器(或第一儀器計數器)開始將時脈週期增量第一計數(亦即,開始計數該時脈週期或開始增量該計數該時脈週期的儀器計數器),
其中當該特定輸入階段緩衝區在接收到用於第二處理迭代的第二資料單元的時刻而釋放第二讀取開始符記時,該儀器計數器(或第二儀器計數器)開始將時脈週期增量第二計數(亦即,開始計數該時脈週期或開始增量該計數該時脈週期的儀器計數器),
其中當該特定輸入階段緩衝區在接收到用於第三處理迭代的第三資料單元的時刻而釋放第三讀取開始符記時,該儀器計數器(或第三儀器計數器)開始將時脈週期增量第三計數(亦即,開始計數該時脈週期或開始增量該計數該時脈週期的儀器計數器),
其中,當該特定輸入階段緩衝區沿該控制連接接收到由該相應輸出階段緩衝區在接收到用於該第一處理迭代的該第一資料單元的該處理結果的時刻所釋放的第一寫入完成符記時,該儀器計數器(或該第一儀器計數器)停止將該時脈週期增量該第一計數(亦即,停止計數該時脈週期或停止增量該計數該時脈週期的儀器計數器),
其中,當該特定輸入階段緩衝區沿該控制連接接收到由該相應輸出階段緩衝區在接收到用於該第二處理迭代的該第二資料單元的該處理結果的時刻所釋放的第二寫入完成符記時,該儀器計數器(或該第二儀器計數器)停止將該時脈週期增量該第二計數(亦即,停止計數該時脈週期或停止增量該計數該時脈週期的儀器計數器),以及
其中,當該特定輸入階段緩衝區沿該控制連接接收到由該相應輸出階段緩衝區在接收到用於該第三處理迭代的該第三資料單元的該處理結果的時刻所釋放的第三寫入完成符記時,該儀器計數器(或該第三儀器計數器)停止將該時脈週期增量該第三計數(亦即,停止計數該時脈週期或停止增量該計數該時脈週期的儀器計數器)。
11. 如實施條項1之資料處理系統,其中該特定階段對應於該第一層迴圈,以及該第二層迴圈被分區成複數個階段,
其中,在執行該特定階段的一批次的迭代中的各個迭代中,
該特定階段的第一複數個輸入階段緩衝區中的輸入階段緩衝區向該多個階段中第一階段的第二複數個輸入階段緩衝區中的輸入階段緩衝區提供各自的資料單元,以及
該特定階段的至少一個輸出階段緩衝區從該多個階段中最後階段的至少一個輸出階段緩衝區接收到透過該多個階段的計算節點處理該各自資料單元的結果,以及
其中,該第一複數個輸入階段緩衝區中的該輸入階段緩衝區的各自儀器計數器針對該批次的迭代中的多個迭代計算該第一複數個輸入階段中的該輸入階段緩衝區接收到該各自資料單元與該特定階段的該至少一輸出階段緩衝區接收到該各自資料單元的該處理結果之間的各自的經過時間序列。
12. 如實施條項11之資料處理系統,其中該儀器分析邏輯還組態以透過將該各自的經過時間序列中的經過時間加總,以判定該第一複數個輸入階段緩衝區的該輸入階段緩衝區的各自緩衝區延時。
13. 如實施條項12之資料處理系統,其中該儀器分析邏輯還組態以透過將該各自緩衝區延時除以該批次的迭代中該迭代數量,以判定該第一複數個輸入階段緩衝區的該輸入階段緩衝區的各自每次迭代的緩衝區延時。
14. 如實施條項13之資料處理系統,其中該儀器分析邏輯還組態以透過選擇該各自的每次迭代的緩衝區延時中的最小每次迭代的緩衝區延時以判定該特定階段的階段延時。
15. 如實施條項11之資料處理系統,其中該各自儀器計數器同步以在該第一複數個輸入階段緩衝區中的各輸入階段緩衝區已釋放讀取開始符記後,共同開始增量時脈週期(亦即,開始計數該時脈週期或開始增量該計數該時脈週期的儀器計數器)。
16. 如實施條項15之資料處理系統,其中該各自儀器計數器使用同步符記進行同步,該同步符記是沿控制連接在該第一複數個輸入階段緩衝區中的該輸入階段緩衝區之間傳遞。
17. 如實施條項16之資料處理系統,其中該儀器分析邏輯還組態以透過選擇該各自的每次迭代的緩衝區延時中的最大每次迭代的緩衝區延時以判定該階段延時。
18. 如實施條項17之資料處理系統,其中該儀器分析邏輯還組態以透過將該各自緩衝區延時加總以產生泛緩衝區延時並將該泛緩衝區延時除以該第一複數個輸入階段緩衝區中該輸入階段緩衝區的數量,以判定該階段延時。
19. 如實施條項11之資料處理系統,其中該批次的迭代中各個迭代具有執行該複數個階段的給定階段之複數個子迭代,
其中,在該批次的迭代中各子迭代處,
該給定階段的一或多個輸入階段緩衝區提供各自資料單元到該給定階段的一或多個計算節點,以及
該給定階段的至少一個輸出階段緩衝區接收到透過該給定階段的該計算節點處理該各自資料單元的結果,以及
其中,該給定階段的該輸入階段緩衝區的各自儀器計數器針對該批次的迭代中多個子迭代計算在該給定階段的該輸入階段緩衝區接收到該各自資料單元與該給定階段的該至少一輸出階段緩衝區接收到該各自資料單元的處理結果之間的各自的經過時間序列。
20. 如實施條項19之資料處理系統,其中該儀器分析邏輯還組態以透過將該各自的經過時間序列中的經過時間加總,以判定該給定階段的該輸入階段緩衝區的各自緩衝區延時。
21. 如實施條項20之資料處理系統,其中該儀器分析邏輯還組態以透過將該各自的緩衝區延時除以該批次的迭代中該子迭代的數量,以判定該給定階段的該輸入階段緩衝區的各自的每次迭代的緩衝區延時。
22. 如實施條項21之資料處理系統,其中該儀器分析邏輯還組態以將該各自緩衝區延時、該泛緩衝區延時、該各自的每次迭代的緩衝區延時、以及該階段延時包括在該性能統計數據中。
23. 如實施條項22之資料處理系統,其中,該儀器分析邏輯還被組態以產生視覺化,該視覺化在逐階段的基礎上用該性能統計數據來註釋該資料流圖表。
24. 一種資料處理系統,包含:
記憶體,儲存應用程式的資料流圖表,該資料流圖表具有複數個計算節點,其中該複數個計算節點中的計算節點組態為生產者以產生用於執行應用程式的資料,並作為消費者以消耗用於執行應用程式的資料;
編譯時間邏輯,組態以將該資料流圖表的執行劃分為多個階段,其中每個階段具有一個或多個計算節點、一個或多個生產者以及一個或多個消費者;
運行期邏輯,以該編譯時間邏輯組態該運行期邏輯,以藉由計算接收輸入資料的特定階段的生產者與接收輸出資料的特定階段的消費者之間的經過時間,判定各個階段的處理延時,其中該輸出資料是由特定階段的計算節點基於處理該輸入資料而產生;以及
儀器分析邏輯,組態以基於為該各個階段判定的該處理延時為該資料流圖表產生性能統計數據。
25. 如實施條項24之資料處理系統,其中該編譯時間邏輯還被組態以組態各個該生產者具有儀器計數器,
其中,當特定生產者釋放讀取開始符記時,該特定生產者的該儀器計數器開始增量時脈週期(亦即,開始計數該時脈週期或開始增量該計數該時脈週期的儀器計數器),以及
其中,當該特定生產者沿控制連接接收到由相應消費者釋放的寫入完成符記時,該儀器計數器停止增量該時脈週期(亦即,停止計數該時脈週期或停止增量該計數該時脈週期的儀器計數器)。
26. 如實施條項25之資料處理系統,其中該輸入資料是具有第一複數個向量的第一張量,以及該輸出資料是具有第二複數個向量的第二張量,
其中,該第一張量的大小與該第二張量的大小相同,或
其中,該第一張量的大小與該第二張量的大小不同。
27. 如實施條項26之資料處理系統,其中該特定生產者在接收到該第一複數個向量中的第一向量時釋放該讀取開始符記。
28. 如實施條項26之資料處理系統,其中該相應消費者在接收到該第二複數個向量中的最終向量時釋放該寫入完成符記。
29. 一種資料處理系統,包含:
編譯時間邏輯,組態以將應用程式的資料流圖表編譯並產生組態檔案,其中該組態檔案定義被組態以執行該資料流圖表的計算操作和記憶體操作的排程和相依性;
運行期邏輯,以該編譯時間邏輯組態以載入該組態檔案到處理單元陣列上,以及用以在該處理單元陣列上取決於該排程與相依性實作該計算操作與該記憶體操作,以在該處理單元陣列上執行該資料流圖表;以及
該處理單元陣列中的處理單元組態有儀器邏輯,其中該儀器邏輯被組態以造成產生用於實作(執行)該計算操作與該記憶體操作的性能度量。
30. 如實施條項29之資料處理系統,其中該組態檔案界定組態以執行該資料流圖表的路由操作的該排程與相依性,
其中該運行期邏輯還組態以取決於該排程與相依性以於該處理單元陣列上實作該路由操作,以在該處理單元陣列上執行該資料流圖表,以及
其中該儀器邏輯還組態以造成產生用於實作(執行)該路由操作的該性能度量。
31. 如實施條項30之資料處理系統,其中該儀器邏輯還組態以釋放狀態訊號,以指示該排程與相依性的滿足。
32. 如實施條項31之資料處理系統,還包含可操作地耦合至該處理單元的儀器網路,該儀器網路包含:
控制匯流排,組態以在該儀器網路中形成訊號路徑;以及
複數個儀器單元,具有連接到該控制匯流排和該處理單元的輸入和輸出,其中,該複數個儀器單元中的儀器單元被組態以消耗該輸入上的該狀態訊號,以及基於該狀態訊號在該輸出報告該性能度量。
33. 如實施條項32之資料處理系統,其中該運行期邏輯更組態以使用該處理單元陣列中的第一處理單元與第二處理單元實作第一計算操作,以及
其中,該第一處理單元被組態以讀取輸入資料,處理該輸入資料,產生輸出資料,以及將該輸出資料寫入該第二處理單元。
34. 如實施條項33之資料處理系統,其中在該第一處理單元處的儀器邏輯組態以當針對該第一計算操作的當前迭代在該第一處理單元中開始傳輸該輸入資料時釋放讀取開始符記,以及
其中在該第二處理單元處的儀器邏輯組態以當針對該當前迭代在該第二處理單元中完成傳輸該輸出資料時釋放寫入完成符記。
35. 如實施條項34之資料處理系統,其中該複數個儀器單元中的儀器單元可操作耦合至該第一處理單元,
其中該儀器單元被組態以
依序消耗對應輸入上的該讀取開始符記以及該寫入完成符記,以測量在該第一處理單元中該輸入資料的傳輸開始與在該第二處理單元中該輸出資料的傳輸完成之間經過時脈週期的數量,以及用以在相應輸出報告該經過時脈週期的數量作為該實作(執行)該第一計算操作的性能度量。
36. 如實施條項35之資料處理系統,其中該儀器單元更組態以當釋放該讀取開始符記時,開始增量該時脈週期(亦即,開始計數該時脈週期或開始增加該計數該時脈週期的儀器計數器),以及當該第一處理單元接收到來自該第二處理單元的該寫入完成符記時,停止增量該時脈週期(亦即,停止計數該時脈週期或停止增量該計數該時脈週期的儀器計數器)。
37. 如實施條項34之資料處理系統,其中在該第一處理單元處的儀器邏輯更組態以當在該第一處理單元中完成傳輸該輸入資料時釋放讀取完成符記。
38. 如實施條項37之資料處理系統,其中該儀器單元更組態以消耗該對應輸入上的該讀取完成符記,以測量在該第一處理單元中該輸入資料的傳輸開始與在該第一處理單元中該輸入資料的傳輸完成之間經過時脈週期的數量,以根據經過時脈週期的數量與該輸入資料中資料單元的數量判定該第一處理單元的讀取速度,以及用以在相應輸出報告該讀取速度作為該實作(執行)該第一計算操作的性能度量。
39. 如實施條項38之資料處理系統,其中該儀器單元更組態以當釋放該讀取開始符記時,開始增量該時脈週期(亦即,開始計數該時脈週期或開始增加該計數該時脈週期的儀器計數器),以及當該讀取完成符記被釋放時,停止增量該時脈週期(亦即,停止計數該時脈週期或停止增量該計數該時脈週期的儀器計數器)。
40. 如實施條項34之資料處理系統,其中在該第二處理單元處的儀器邏輯更組態以當在該第二處理單元中開始傳輸該輸出資料時釋放寫入開始符記。
41. 如實施條項40之資料處理系統,其中該儀器單元更組態以消耗該對應輸入上的該寫入開始符記,以測量在該第二處理單元中該輸出資料的傳輸開始與在該第二處理單元中該輸出資料的傳輸完成之間經過時脈週期的數量,以根據經過時脈週期的數量與該輸出資料中資料單元的數量判定該第一處理單元的寫入速度,以及用以在相應輸出報告該寫入速度作為該實作(執行)該第一計算操作的性能度量。
42. 如實施條項41之資料處理系統,其中該儀器單元更組態以當該第一處理單元接收到來自該第二處理單元的該寫入完成符記時,開始增量該時脈週期(亦即,開始計數該時脈週期或開始增加該計數該時脈週期的儀器計數器),以及當該第一處理單元接收到來自該第二處理單元的該寫入完成符記時,停止增量該時脈週期(亦即,停止計數該時脈週期或停止增量該計數該時脈週期的儀器計數器)。
43. 如實施條項29之資料處理系統,其中該記憶體操作更包含在該處理單元中的記憶體位址計算,以將資料分佈橫跨該處理單元陣列。
44. 如實施條項43之資料處理系統,其中該儀器單元更組態以計數在有效範圍內的計算出記憶體位址的數量,計數小於最小位址的計算出記憶體位址的數量,及/或計數大於最大位址的計算出記憶體位址的數量,並將計數報告為性能度量。
45. 如實施條項29之資料處理系統,其中該記憶體操作更包含發出記憶體請求至該處理單元,以讀取該處理單元的資料與寫入資料至該處理單元中。
46. 如實施條項45之資料處理系統,其中該儀器單元更組態以計數當向處理單元陣列中的同一處理單元發出的多個記憶體請求佇列並按依序履行時的實例數量,並將計數報告為性能度量。
47. 如實施條項46之資料處理系統,其中該儀器單元更組態以計數多個記憶體請求的發布、佇列和依序履行之間經過的週期數,並將該計數報告為性能度量。
48. 如實施條項45之資料處理系統,其中該儀器單元更組態以計數當由於特定處理單元的不可用性造成向處理單元陣列中的特定處理單元發出的特定記憶體請求被移交(hand off)給處理單元陣列中的另一個處理單元以供履行時的實例數量,並將計數報告為性能度量。
49. 如實施條項48之資料處理系統,其中該儀器單元更組態以計數發出、移交以及履行該特定記憶體請求之間的經過週期的數量。
50. 如實施條項29之資料處理系統,其中該記憶體操作更包含發出記憶體請求至可操作地耦合至該處理單元陣列的晶片外記憶體,以透過複數個記憶體通道讀取該晶片外記憶體的資料與寫入資料至該晶片外記憶體中。
51. 如實施條項50之資料處理系統,其中該儀器單元更組態以計數向多個記憶體通道中的各自記憶體通道發出的記憶體請求的數量,並且將計數報告為性能度量。
52. 如實施條項50之資料處理系統,其中該儀器單元更組態以計數當向複數個記憶體通道中的同一記憶體通道發出的多個記憶體請求佇列並按依序履行時的實例數量,並將計數報告為性能度量。
53. 如實施條項52之資料處理系統,其中該儀器單元更組態以計數多個記憶體請求的發布、佇列和依序履行之間經過的週期數,並將該計數報告為性能度量。
54. 如實施條項50之資料處理系統,其中該儀器單元更組態以計數當由於特定記憶體通道的不可用性造成向多個記憶體通道中的特定記憶體通道發出的特定記憶體請求被移交(hand off)給多個記憶體通道中的另一個記憶體通道以供履行時的實例數量,並將計數報告為性能度量。
55. 如實施條項34之資料處理系統,其中該儀器邏輯更組態以將多個狀態訊號結合並釋放新的狀態訊號,以指示該排程與相依性中多者的滿足。
56. 如實施條項55之資料處理系統,其中該當前迭代的執行是取決於該第一處理單元處的該儀器邏輯從該第二處理單元接收用於該第一計算操作的先前迭代的寫入完成符記並釋放針對該當前迭代的該讀取開始符記,以及作為回應釋放迭代觸發符記。
57. 如實施條項56之資料處理系統,其中該儀器單元更組態以消耗對應輸入上的該迭代觸發符記,以測量在該迭代觸發符記與針對該當前迭代的該寫入完成符記之間經過的時脈週期的數量,以及在相應輸出報告該經過的時脈週期的數量作為實作(執行)該第一計算操作的性能度量。
58. 如實施條項57之資料處理系統,其中該儀器單元更組態以當釋放該迭代觸發符記時,開始增量該時脈週期(亦即,開始計數該時脈週期或開始增加該計數該時脈週期的儀器計數器),以及當該第一處理單元接收到來自該第二處理單元針對該當前迭代的該寫入完成符記時,停止增量該時脈週期(亦即,停止計數該時脈週期或停止增量該計數該時脈週期的儀器計數器)。
59. 如實施條項56之資料處理系統,其中該當前迭代的執行是取決於該第一處理單元處的該儀器邏輯從該第二處理單元中多者接收針對先前迭代的多個寫入完成符記並釋放針對該當前迭代的該讀取開始符記,以及作為回應釋放迭代觸發符記。
60. 如實施條項59之資料處理系統,其中該儀器單元更組態以當釋放該迭代觸發符記時,開始增量該時脈週期(亦即,開始計數該時脈週期或開始增加該計數該時脈週期的儀器計數器),以及當該第一處理單元接收到來自該第二處理單元中多者針對該當前迭代的該多個寫入完成符記時,停止增量該時脈週期(亦即,停止計數該時脈週期或停止增量該計數該時脈週期的儀器計數器)。
61. 如實施條項29之資料處理系統,其中該儀器單元更組態具有計數器鏈以增量時脈週期(亦即,開始計數該時脈週期或停止增量計數器鏈中的計數器(計數時脈週期),以及開始計數該時脈週期或停止增量計數器鏈中的計數器(計數時脈週期))。
62. 如實施條項29之資料處理系統,其中該記憶體操作更包含主機與該處理元件陣列之間的介接、從檔案載入資料、分配該晶片外記憶體上的記憶體空間、傳送輸入資料到該晶片外記憶體、分配該處理單元上的記憶體空間、從該晶片外記憶體載入該輸入資料到該處理單元、該處理單元傳送該輸出資料到該晶片外記憶體、以及將該輸出資料存入檔案中。
63. 一種資料處理系統,包含:
編譯時間邏輯,組態以將應用程式的資料流圖表編譯並產生組態檔案,其中該組態檔案定義被組態以用於實作(執行)執行該資料流圖表的計算操作和記憶體操作的開始事件及停止事件;
運行期邏輯,以該編譯時間邏輯組態以載入該組態檔案到處理單元陣列上,以及用以觸發該開始事件以及該停止事件以在該陣列的處理單元上實作該計算操作與該記憶體操作;
控制匯流排,組態以在該處理單元陣列中形成事件路徑;以及
複數個儀器單元,具有連接到該控制匯流排和該處理單元的輸入和輸出,其中,該多個儀器單元中的儀器單元組態以:
消耗該輸入上該開始事件並開始計數時脈週期,
消耗該輸入上該停止事件並停止計數該時脈週期,以及
在該輸出報告該計數的時脈週期。
64. 一種可重組態資料處理器,包含:
處理單元陣列,組態以執行運行期事件(性能事件)以執行應用程式;以及
儀器網路,其可操作地耦合至該處理單元陣列,該儀器網路包含:
控制匯流排,組態以在該儀器網路中形成控制訊號路徑;以及
複數個儀器計數器,具有連接到該控制匯流排和該處理單元的輸入和輸出,該複數個儀器單元中的儀器計數器可組態以消耗該輸入上的該控制訊號,以及在該輸出上產生該運行期事件的計數(測量值/檢測值)。
65. 如實施條項64之可重組態處理器,其中該儀器網路與該儀器計數器被配置在該處理單元陣列內部。
66. 如實施條項64之可重組態處理器,其中該儀器網路與該儀器計數器被配置在該處理單元陣列外部。
67. 如實施條項64之可重組態處理器,其中該控制訊號是由該處理單元產生。
68. 如實施條項64之可重組態處理器,其中該控制訊號是讀取就緒符記。
69. 如實施條項64之可重組態處理器,其中該控制訊號是讀取開始符記。
70. 如實施條項64之可重組態處理器,其中該控制訊號是讀取完成符記。
71. 如實施條項64之可重組態處理器,其中該控制訊號是寫入就緒符記。
72. 如實施條項64之可重組態處理器,其中該控制訊號是寫入開始符記。
73. 如實施條項64之可重組態處理器,其中該控制訊號是寫入完成符記。
74. 如實施條項64之可重組態處理器,其中該控制訊號是屏障符記。
本揭露技術之一或多實作或其元素可以以電腦產品的形式實作,該電腦產品包括具有電腦可用程式碼的非暫態電腦可讀儲存媒體,用於執行所指示的方法步驟。此外,本揭露技術之一或多實作或其元素可以以包括記憶體與至少一處理器之設備的形式實作,該處理器與記憶體耦合並且可操作以執行例示性方法步驟。此外,在又另一態樣,本揭露技術的一個或多個實作或其元素可以以用於執行本文所述的一或多方法步驟的機構的形式實作;該機構可以包括(i)(一或多)硬體模組,(ii)在一個或多個硬體處理器上執行的(一或多)軟體模組,或(iii)硬體和軟體模組的組合;(i)-(iii)中任一者實現本文闡述的特定技術,並且軟體模組經儲存在電腦可讀儲存媒體(或多個這樣的媒體)中。
本揭露技術之此等與其他特徵、態樣及優勢將隨參照以下說明與其說明性實作而趨向明顯,其中應結合附圖來閱讀本說明書。
雖然參照上文詳細說明實例和較佳實作來揭示本發明,但應瞭解該等實例目的旨在是說明性而非限制性的。熟習該技藝者將能思及對特徵之調整與結合,其將會在本發明之精神與以下實施條項之範疇內。
102:應用程式
112:資料流圖表產生器
122:資料流圖表
132:編譯時間邏輯
142:運行期邏輯
152:可重組態處理器
162:儀器分析邏輯
172:性能統計數據
202:緩衝區插入邏輯
212:緩衝區分類邏輯
222:控制連接創建邏輯
232:流控制邏輯
302:階段延時判定邏輯
400:資料流圖表
402:矩陣乘法節點
403:入口矩陣乘法節點
404:mask fill節點
405:softmax節點
406:dropout節點
407:出口矩陣乘法節點
408:矩陣乘法節點
409:內迴圈
410:外迴圈
412:矩陣乘法節點
422:矩陣乘法節點
502:階段緩衝區
503:階段緩衝區
512:階段緩衝區
513:階段緩衝區
514:階段緩衝區
515:階段緩衝區
516:階段緩衝區
517:階段緩衝區
518:階段緩衝區
519:階段緩衝區
520:階段緩衝區
522:階段緩衝區
800:圖式
1500:可重組態處理器
1510:可重組態資料處理器
1515:匯流排系統
1520:主機
1525:線
1530:I/O介面
1540:記憶體
1545:線
1550:I/O介面
1570:外部時脈產生器
1575:時脈訊號
1590:可組態單元陣列
1600:可組態單元陣列
1601:儀器邏輯單元
1602:儀器邏輯單元
1603:儀器邏輯單元
1611:交換單元
1612:交換單元
1618:位址產生器
1620:鏈接
1621:互連
1631:互連
1641:模式記憶體單元
1651:儀器單元
1750:交換器
1751:模式記憶體單元
1752:模式計算單元
1754:位址產生器
1755:合併單元
1760:水平導電體
1761:垂直導電體
1762:交換器盒
1770:儀器邏輯單元
1771:輸入和輸出
1800:圖式
1810:輸入組態資料
1820:組態資料儲存
1821:線
1822:線
1830:輸出組態資料
1840:單元組態載入邏輯
1860:向量FIFO區塊
1870:純量FIFO
1880:區塊
1881:功能單元
1882:功能單元
1883:功能單元
1884:功能單元
1885:功能單元
1886:功能單元
1890:控制區塊
1891:菊鍊完成匯流排
1892:菊鍊指令匯流排
1893:菊鍊邏輯
1894:計數器鏈
1895:儀器邏輯
1900:圖式
1911:本地FIFO
1915:控制區塊
1916:計數器
1918:儀器邏輯
1919:本地FIFO
1920:可重組態純量資料路徑
1930:暫用記憶體
1931:SRAM組
1932:SRAM組
1933:SRAM組
1934:SRAM組
1935:分組緩衝邏輯
2000:啟用邏輯
2001:線
2002:線
2003:可組態啟用遮罩
2010:向上/向下計數器UDC
2011:增量輸入
2012:減量輸入
2013:輸出
2020:屏障符記邏輯
2021:可組態屏障遮罩
2022:線
2030:增量交叉開關
2040:減量交叉開關
2050:狀態交叉開關
2051:輸入
2052:輸出
2053:輸出
2057:輸入
2058:輸入
2060:輸出交叉開關
2061:線
2101:執行片段單元
2102:執行片段單元
2103:執行片段單元
2104:執行片段單元
2105:第一層屏障
2111:執行片段單元
2112:執行片段單元
2113:屏障
2114:執行片段單元
2115:執行片段單元
2116:執行片段單元
2117:屏障
2121:執行片段單元
2122:執行片段單元
2123:屏障
2125:線
本專利或申請案包含至少一彩色圖式。具有(一或多)彩色圖式的本專利或專利申請公開案的副本將被要求時且支付必要費用後由本局提供。彩色圖式也可以透過在PAIR中「補充內容」選項獲得。
在所附圖式中,在不同的視圖中,相似參考編號通常參照相似部件。另外,該等圖式並不必然是按比例繪製,其重點反而一般是在於說明揭示技術之原理。在以下描述中,參照以下圖式說明揭示技術之各種實作,其中:
[圖1]是本文揭露資料處理系統的一實作的系統圖式。
[圖2]示出由資料處理系統使用的編譯時間邏輯的一種實作。
[圖3]示出由資料處理系統使用的運行期邏輯的一種實作。
[圖4]描繪深度學習應用程式的資料流圖表的執行的一種實作。
[圖5]示出插入資料流圖表中的階段緩衝區的一種實作。
[圖6]示出將資料流圖表的執行劃分為複數個階段的一種實作。
[圖7]描繪將階段緩衝區逐階段分類為生產者和消費者的一種實作。
[圖8]描繪在逐階段基礎上在階段緩衝區之間創建的控制連接的一種實作。
[圖9]是使用儀器計數器(instrumentation counter)判定資料流圖表的外迴圈的迭代的階段延時的時序圖。
[圖10]是使用儀器計數器判定資料流圖表的內迴圈中第一階段的迭代的階段延時的時序圖。
[圖11]是使用儀器計數器判定資料流圖表的內迴圈中第二階段的迭代的階段延時的時序圖。
[圖12]是使用儀器計數器判定資料流圖表的內迴圈中第三與第四階段的迭代的階段延時的時序圖。
[圖13]是使用儀器計數器判定資料流圖表的內迴圈中第五階段的迭代的階段延時的時序圖。
[圖14]是使用儀器計數器與同步符記判定資料流圖表的內迴圈中第五階段的迭代的階段延時的時序圖。
[圖15]是描繪包括主機、記憶體、以及可重組態資料處理器(包括儀器網路(instrumentation network))的系統之系統圖式。
[圖16]是包含具有相關儀器單元(instrumentation unit)的一陣列可組態單元的塊(tile)的簡化圖。
[圖16A]描繪與陣列層級網路中的元件連接並包括相關儀器單元之例示性交換單元。
[圖17]是類似於圖16的塊的一部分的圖式,其示出連接到塊中的儀器單元的可組態互連。
[圖18]是描繪例示性可組態模式計算單元(Pattern Compute Unit,PCU)(包括儀器邏輯單元)之方塊圖。
[圖19]是描繪例示性可組態模式記憶體單元(Pattern Memory Unit,PMU)(包括儀器邏輯單元)之方塊圖。
[圖20]是由儀器單元實作的計數器的實作圖。
[圖21]圖示可以使用如本文所述的儀器網路來實作的執行片段和訊號路徑的實例。
102:應用程式
112:資料流圖表產生器
122:資料流圖表
132:編譯時間邏輯
142:運行期邏輯
152:可重組態處理器
162:儀器分析邏輯
172:性能統計數據
Claims (20)
- 一種資料處理系統,包含: 記憶體,儲存具有複數個計算節點的資料流圖表,該複數個計算節點沿著資料連接異步發送資料,其中該資料流圖表包括迴圈巢套,其中該迴圈被配置在數層之階層中,使得第二層迴圈在第一層迴圈內; 編譯時間邏輯,組態以透過將階段緩衝區插入到該第二層迴圈內部以及在該第一層迴圈與該第二層迴圈之間的輸入/輸出邊界處來將該資料流圖表的執行分區為兩個或更多個異步階段,其中該各個階段包括該複數個計算節點中的一個或多個計算節點,並且對於該各個階段,該階段緩衝區包括一個或多個輸入階段緩衝區和一個或多個輸出階段緩衝區; 運行期邏輯,以該編譯時間邏輯組態該運行期邏輯,以藉由計算接收資料單元的特定階段的輸入階段緩衝區與接收透過該特定階段的一或多個計算節點處理該資料單元的結果的該特定階段的輸出階段緩衝區之間的經過時間來判定該各個階段的階段延時;以及 儀器分析邏輯,組態以基於為該各個階段判定的該階段延時為該資料流圖表產生性能統計數據。
- 如請求項1之資料處理系統,其中該編譯時間邏輯還被組態以在該第二層迴圈內插入額外的階段緩衝區,以及 其中,該額外的階段緩衝區被組態以與插入該輸入/輸出邊界處的該階段緩衝區介接。
- 如請求項1之資料處理系統,其中該經過時間是經過的時脈週期的數量。
- 如請求項3之資料處理系統,其中該輸入階段緩衝區被組態以在接收到該資料單元時釋放讀取開始符記。
- 如請求項3之資料處理系統,其中該輸出階段緩衝區被組態以在接收到該資料單元的處理結果時釋放寫入完成符記。
- 如請求項5之資料處理系統,其中該編譯時間邏輯還被組態以組態各個該輸入階段緩衝區具有儀器計數器, 其中,當特定輸入階段緩衝區釋放讀取開始符記時,該特定輸入階段緩衝區的該儀器計數器開始增量時脈週期,以及 其中,當該特定輸入階段緩衝區沿控制連接接收到由相應輸出階段緩衝區釋放的寫入完成符記時,該儀器計數器停止增量該時脈週期。
- 如請求項6之資料處理系統,其中該資料單元是具有第一複數個向量的第一張量,以及該資料單元的該處理結果是具有第二複數個向量的第二張量, 其中,該第一張量的大小與該第二張量的大小相同,或 其中,該第一張量的大小與該第二張量的大小不同。
- 如請求項7之資料處理系統,其中該特定輸入階段緩衝區在接收到該第一複數個向量中的第一向量時釋放該讀取開始符記。
- 如請求項7之資料處理系統,其中該相應輸出階段緩衝區在接收到該第二複數個向量中的最終向量時釋放該寫入完成符記。
- 如請求項6之資料處理系統,其中當該特定輸入階段緩衝區在接收到用於第一處理迭代的第一資料單元的時刻而釋放第一讀取開始符記時,該儀器計數器開始將時脈週期增量第一計數, 其中當該特定輸入階段緩衝區在接收到用於第二處理迭代的第二資料單元的時刻而釋放第二讀取開始符記時,該儀器計數器開始將時脈週期增量第二計數, 其中當該特定輸入階段緩衝區在接收到用於第三處理迭代的第三資料單元的時刻而釋放第三讀取開始符記時,該儀器計數器開始將時脈週期增量第三計數, 其中,當該特定輸入階段緩衝區沿該控制連接接收到由該相應輸出階段緩衝區在接收到用於該第一處理迭代的該第一資料單元的該處理結果的時刻所釋放的第一寫入完成符記時,該儀器計數器停止將該時脈週期增量該第一計數, 其中,當該特定輸入階段緩衝區沿該控制連接接收到由該相應輸出階段緩衝區在接收到用於該第二處理迭代的該第二資料單元的該處理結果的時刻所釋放的第二寫入完成符記時,該儀器計數器停止將該時脈週期增量該第二計數,以及 其中,當該特定輸入階段緩衝區沿該控制連接接收到由該相應輸出階段緩衝區在接收到用於該第三處理迭代的該第三資料單元的該處理結果的時刻所釋放的第三寫入完成符記時,該儀器計數器停止將該時脈週期增量該第三計數。
- 如請求項1之資料處理系統,其中該特定階段對應於該第一層迴圈,以及該第二層迴圈被分區成複數個階段, 其中,在執行該特定階段的一批次的迭代中的各個迭代中, 該特定階段的第一複數個輸入階段緩衝區中的輸入階段緩衝區向該複數個階段中第一階段的第二複數個輸入階段緩衝區中的輸入階段緩衝區提供各自的資料單元,以及 該特定階段的至少一個輸出階段緩衝區從該複數個階段中最後階段的至少一個輸出階段緩衝區接收到透過該複數個階段的計算節點處理該各自資料單元的結果,以及 其中,該第一複數個輸入階段緩衝區中的該輸入階段緩衝區的各自儀器計數器針對該批次的迭代中的多個迭代計算該第一複數個輸入階段中的該輸入階段緩衝區接收到該各自資料單元與該特定階段的該至少一輸出階段緩衝區接收到該各自資料單元的該處理結果之間的各自的經過時間序列。
- 如請求項11之資料處理系統,其中該儀器分析邏輯還組態以透過將該各自的經過時間序列中的經過時間加總,判定該第一複數個輸入階段緩衝區中該輸入階段緩衝區的各自緩衝區延時,其中該儀器分析邏輯還組態以透過將該各自緩衝區延時除以該批次的迭代中該迭代數量,判定該第一複數個輸入階段緩衝區中該輸入階段緩衝區的各自的每次迭代的緩衝區延時,以及其中該儀器分析邏輯還組態以透過選擇該各自的每次迭代的緩衝區延時中的最小的每次迭代的緩衝區延時,判定該特定階段的階段延時。
- 如請求項11之資料處理系統,其中該各自儀器計數器同步以在該第一複數個輸入階段緩衝區中的各輸入階段緩衝區已釋放讀取開始符記後,共同開始增量時脈週期,其中該各自儀器計數器使用同步符記進行同步,該同步符記是沿控制連接在該第一複數個輸入階段緩衝區中的該輸入階段緩衝區之間傳遞,以及其中該儀器分析邏輯還組態以透過選擇該各自的每次迭代的緩衝區延時中的最大每次迭代的緩衝區延時以判定該階段延時。
- 如請求項13之資料處理系統,其中該儀器分析邏輯還組態以透過將該各自緩衝區延時加總以產生泛緩衝區延時並將該泛緩衝區延時除以該第一複數個輸入階段緩衝區中該輸入階段緩衝區的數量,以判定該階段延時, 其中該儀器分析邏輯還組態以透過將該各自的經過時間序列中的經過時間加總,以判定該給定階段的該輸入階段緩衝區的各自緩衝區延時, 其中該儀器分析邏輯還組態以透過將該各自的緩衝區延時除以該批次的迭代中該子迭代的數量,以判定該給定階段的該輸入階段緩衝區的各自的每次迭代的緩衝區延時, 其中該儀器分析邏輯還組態以將該各自緩衝區延時、該泛緩衝區延時、該各自的每次迭代的緩衝區延時、以及該階段延時包括在該性能統計數據中,以及 其中,該儀器分析邏輯還被組態以產生視覺化,該視覺化在逐階段的基礎上用該性能統計數據來註釋該資料流圖表。
- 如請求項11之資料處理系統,其中該批次的迭代中各個迭代具有執行該複數個階段的給定階段之複數個子迭代, 其中,在該批次的迭代中各子迭代處, 該給定階段的一或多個輸入階段緩衝區提供各自資料單元到該給定階段的一或多個計算節點,以及 該給定階段的至少一個輸出階段緩衝區接收到透過該給定階段的該計算節點處理該各自資料單元的結果,以及 其中,該給定階段的該輸入階段緩衝區的各自儀器計數器針對該批次的迭代中多個子迭代計算在該給定階段的該輸入階段緩衝區接收到該各自資料單元與該給定階段的該至少一輸出階段緩衝區接收到該各自資料單元的處理結果之間的各自的經過時間序列。
- 一種資料處理系統,包含: 編譯時間邏輯,組態以將應用程式的資料流圖表編譯並產生組態檔案,其中該組態檔案定義被組態以執行該資料流圖表的計算操作和記憶體操作的排程和相依性; 運行期邏輯,以該編譯時間邏輯組態以載入該組態檔案到處理單元陣列上,以及用以在該處理單元陣列上取決於該排程與相依性實作該計算操作與該記憶體操作,以在該處理單元陣列上執行該資料流圖表;以及 該處理單元陣列中的處理單元組態有儀器邏輯,其中該儀器邏輯被組態以造成產生用於實作該計算操作與該記憶體操作的性能度量。
- 如請求項16之資料處理系統,其中該組態檔案界定組態以執行該資料流圖表的路由操作的該排程與相依性, 其中該運行期邏輯還組態以取決於該排程與相依性以於該處理單元陣列上實作該路由操作,以在該處理單元陣列上執行該資料流圖表,以及 其中該儀器邏輯還組態以造成產生用於實作該路由操作的該性能度量。
- 如請求項17之資料處理系統,其中該儀器邏輯還組態以釋放狀態訊號,以指示該排程與相依性的滿足。
- 如請求項18之資料處理系統,還包含可操作地耦合至該處理單元的儀器網路,該儀器網路包含: 控制匯流排,組態以在該儀器網路中形成訊號路徑;以及 複數個儀器單元,具有連接到該控制匯流排和該處理單元的輸入和輸出,其中,該複數個儀器單元中的儀器單元被組態以消耗該輸入上的該狀態訊號,以及基於該狀態訊號在該輸出報告該性能度量。
- 一種資料處理系統,包含: 編譯時間邏輯,組態以將應用程式的資料流圖表編譯並產生組態檔案,其中該組態檔案定義被組態以用於實作執行該資料流圖表的計算操作和記憶體操作的開始事件及停止事件; 運行期邏輯,以該編譯時間邏輯組態以載入該組態檔案到處理單元陣列上,以及用以觸發該開始事件以及該停止事件以在該陣列的處理單元上實作該計算操作與該記憶體操作; 控制匯流排,組態以在該處理單元陣列中形成事件路徑;以及 複數個儀器單元,具有連接到該控制匯流排和該處理單元的輸入和輸出,其中,該多個儀器單元中的儀器單元組態以: 消耗該輸入上該開始事件並開始計數時脈週期, 消耗該輸入上該停止事件並停止計數該時脈週期,以及 在該輸出報告該計數的時脈週期。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/175,289 | 2021-02-12 | ||
US17/175,289 US11126574B1 (en) | 2021-02-12 | 2021-02-12 | Instrumentation profiling for reconfigurable processors |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202240384A TW202240384A (zh) | 2022-10-16 |
TWI794008B true TWI794008B (zh) | 2023-02-21 |
Family
ID=77749057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111105084A TWI794008B (zh) | 2021-02-12 | 2022-02-11 | 可重組態處理器的儀器分析 |
Country Status (3)
Country | Link |
---|---|
US (3) | US11126574B1 (zh) |
TW (1) | TWI794008B (zh) |
WO (1) | WO2022173821A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090464B (zh) * | 2018-10-23 | 2023-09-22 | 华为技术有限公司 | 一种数据流处理方法及相关设备 |
US11126574B1 (en) | 2021-02-12 | 2021-09-21 | SambaNova Systems, Inc. | Instrumentation profiling for reconfigurable processors |
US11782725B2 (en) * | 2021-08-16 | 2023-10-10 | Micron Technology, Inc. | Mask field propagation among memory-compute tiles in a reconfigurable architecture |
CN114116558B (zh) * | 2021-10-14 | 2024-07-02 | 南京国电南自维美德自动化有限公司 | 一种io设备及微机保护装置 |
US11733980B2 (en) * | 2021-12-10 | 2023-08-22 | Xilinx, Inc. | Application implementation and buffer allocation for a data processing engine array |
US20230205501A1 (en) * | 2021-12-27 | 2023-06-29 | SambaNova Systems, Inc. | Compiler-based input synchronization for processor with variant stage latencies |
US11934942B2 (en) * | 2022-03-15 | 2024-03-19 | Rebellions Inc. | Neural processing device |
US20230385231A1 (en) * | 2022-05-25 | 2023-11-30 | SambaNova Systems, Inc. | Low Latency Nodes Fusion in a Reconfigurable Data Processor |
US20240094944A1 (en) * | 2022-09-21 | 2024-03-21 | Xilinx, Inc. | Implementing data flows of an application across a memory hierarchy of a data processing array |
CN118259837A (zh) * | 2024-03-30 | 2024-06-28 | 苏州元脑智能科技有限公司 | 一种固态硬盘缓存管理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155708B2 (en) * | 2002-10-31 | 2006-12-26 | Src Computers, Inc. | Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation |
US7788659B1 (en) * | 2007-02-27 | 2010-08-31 | United States Of America As Represented By The Director, The National Security Agency | Method of converting computer program with loops to one without loops |
TW202029004A (zh) * | 2018-12-06 | 2020-08-01 | 美商雷森公司 | 加速異質cpu/gpu系統上之資料流訊號處理應用程式 |
US20200356523A1 (en) * | 2019-05-09 | 2020-11-12 | SambaNova Systems, Inc. | Control flow barrier and reconfigurable data processor |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US675A (en) | 1838-04-05 | Benjamin j | ||
US16407A (en) | 1857-01-13 | Machine fob sawing hoops | ||
GB292430A (en) | 1927-01-07 | 1928-06-18 | Ig Farbenindustrie Ag | Improvements in softening paper |
US1723015A (en) | 1928-03-02 | 1929-08-06 | Ludlum Steel Company | Molybdenum nitriding steels and process of nitriding same |
US6253373B1 (en) * | 1997-10-07 | 2001-06-26 | Hewlett-Packard Company | Tracking loop entry and exit points in a compiler |
US6938249B2 (en) * | 2001-11-19 | 2005-08-30 | International Business Machines Corporation | Compiler apparatus and method for optimizing loops in a computer program |
US6877114B2 (en) * | 2002-02-14 | 2005-04-05 | Delphi Technologies, Inc. | On-chip instrumentation |
US7523232B2 (en) * | 2004-07-26 | 2009-04-21 | Integrated Device Technology, Inc. | Mark/re-read and mark/re-write operations in a multi-queue first-in first-out memory system |
US7827541B2 (en) * | 2006-03-16 | 2010-11-02 | International Business Machines Corporation | Method and apparatus for profiling execution of code using multiple processors |
US7870438B2 (en) * | 2008-02-15 | 2011-01-11 | International Business Machines Corporation | Method, system and computer program product for sampling computer system performance data |
US9838222B2 (en) * | 2013-06-13 | 2017-12-05 | Hewlett Packard Enterprise Development Lp | Counter update remote processing |
RU2678481C2 (ru) | 2013-11-05 | 2019-01-29 | Сони Корпорейшн | Устройство обработки информации, способ обработки информации и программа |
US9323304B2 (en) * | 2013-12-18 | 2016-04-26 | NXGN Data, Inc. | Dynamic self-correcting power management for solid state drive |
US9917930B2 (en) | 2015-01-07 | 2018-03-13 | Samsung Electronics Co., Ltd. | Transmitting apparatus and receiving apparatus and signal processing method thereof |
US9870340B2 (en) * | 2015-03-30 | 2018-01-16 | International Business Machines Corporation | Multithreading in vector processors |
US10565134B2 (en) * | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
US20190303263A1 (en) | 2018-03-30 | 2019-10-03 | Kermin E. Fleming, JR. | Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator |
US11709664B2 (en) * | 2020-06-02 | 2023-07-25 | SambaNova Systems, Inc. | Anti-congestion flow control for reconfigurable processors |
US11126574B1 (en) * | 2021-02-12 | 2021-09-21 | SambaNova Systems, Inc. | Instrumentation profiling for reconfigurable processors |
CA3131637A1 (en) * | 2021-09-22 | 2023-03-22 | Suncor Energy Inc. | System and method for monitoring, analyzing and controlling emissions in a plant |
-
2021
- 2021-02-12 US US17/175,289 patent/US11126574B1/en active Active
- 2021-09-20 US US17/479,861 patent/US11782856B2/en active Active
- 2021-09-20 US US17/479,906 patent/US11841811B2/en active Active
-
2022
- 2022-02-09 WO PCT/US2022/015807 patent/WO2022173821A1/en active Application Filing
- 2022-02-11 TW TW111105084A patent/TWI794008B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155708B2 (en) * | 2002-10-31 | 2006-12-26 | Src Computers, Inc. | Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation |
US7788659B1 (en) * | 2007-02-27 | 2010-08-31 | United States Of America As Represented By The Director, The National Security Agency | Method of converting computer program with loops to one without loops |
TW202029004A (zh) * | 2018-12-06 | 2020-08-01 | 美商雷森公司 | 加速異質cpu/gpu系統上之資料流訊號處理應用程式 |
US20200356523A1 (en) * | 2019-05-09 | 2020-11-12 | SambaNova Systems, Inc. | Control flow barrier and reconfigurable data processor |
Also Published As
Publication number | Publication date |
---|---|
US11841811B2 (en) | 2023-12-12 |
US11126574B1 (en) | 2021-09-21 |
US11782856B2 (en) | 2023-10-10 |
US20220261364A1 (en) | 2022-08-18 |
US20220261365A1 (en) | 2022-08-18 |
WO2022173821A1 (en) | 2022-08-18 |
TW202240384A (zh) | 2022-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI794008B (zh) | 可重組態處理器的儀器分析 | |
US11893424B2 (en) | Training a neural network using a non-homogenous set of reconfigurable processors | |
US11625283B2 (en) | Inter-processor execution of configuration files on reconfigurable processors using smart network interface controller (SmartNIC) buffers | |
US11709664B2 (en) | Anti-congestion flow control for reconfigurable processors | |
US11392740B2 (en) | Dataflow function offload to reconfigurable processors | |
US11782729B2 (en) | Runtime patching of configuration files | |
US11182264B1 (en) | Intra-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) | |
US20240330074A1 (en) | Data processing system with link-based resource allocation for reconfigurable processors | |
US12079157B2 (en) | Reconfigurable data processor with fast argument load using a runtime program on a host processor | |
TW202227979A (zh) | 用於檢測串流相容及廣播相容的資料存取型樣的編譯時邏輯 | |
US20240094794A1 (en) | Integrated circuit that mitigates inductive-induced voltage droop using compute unit group identifiers | |
US20240085965A1 (en) | Integrated circuit that mitigates inductive-induced voltage droop | |
US12056012B2 (en) | Force quit of reconfigurable processor | |
WO2022133043A1 (en) | Runtime execution of configuration files on reconfigurable processors with varying configuration granularity | |
US20240069770A1 (en) | Multiple contexts for a memory unit in a reconfigurable data processor | |
US20240054099A1 (en) | Cluster-Based Placement and Routing of Memory Units and Compute Units in a Reconfigurable Computing Grid | |
US20230385077A1 (en) | Forward-style Gradient GeMMs | |
US20230385234A1 (en) | High performance layer normalization for large models |