TWI703451B - 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體 - Google Patents
處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體 Download PDFInfo
- Publication number
- TWI703451B TWI703451B TW107139064A TW107139064A TWI703451B TW I703451 B TWI703451 B TW I703451B TW 107139064 A TW107139064 A TW 107139064A TW 107139064 A TW107139064 A TW 107139064A TW I703451 B TWI703451 B TW I703451B
- Authority
- TW
- Taiwan
- Prior art keywords
- generate
- tasks
- intermediate representations
- specific
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000003860 storage Methods 0.000 title claims description 19
- 238000004891 communication Methods 0.000 claims abstract description 74
- 238000005457 optimization Methods 0.000 claims abstract description 63
- 238000004088 simulation Methods 0.000 claims abstract description 19
- 238000011068 loading method Methods 0.000 claims abstract description 10
- 230000015654 memory Effects 0.000 claims description 89
- 238000013507 mapping Methods 0.000 claims description 33
- 230000004044 response Effects 0.000 claims description 2
- 238000011017 operating method Methods 0.000 claims 3
- 230000001131 transforming effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 36
- 230000015572 biosynthetic process Effects 0.000 abstract description 7
- 238000003786 synthesis reaction Methods 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 42
- 230000006870 function Effects 0.000 description 29
- 238000013461 design Methods 0.000 description 14
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 11
- 238000012360 testing method Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 238000012546 transfer Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000012512 characterization method Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000011049 filling Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 231100000871 behavioral problem Toxicity 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010894 electron beam technology Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000007970 homogeneous dispersion Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Hardware Redundancy (AREA)
Abstract
揭示了利用最佳化對多處理器系統進行之編譯及程式化處理元件之相關聯方法的各種實施例,所述多處理器系統具有針對高效能及低功率耗散經最佳化之處理元件。可首先將應用程式原始程式碼編譯成中間表示。在初始編譯之後,可映射資源且執行通信合成。可在將可執行影像載入至多處理器系統上之前執行模擬及除錯。在每一步驟處,可執行檢查以進行可能的最佳化,且使用所述檢查之結果來重複一或多個步驟。
Description
本發明係關於多處理器系統,且更特定言之,係關於處理器操作及執行之改良,以及針對此類系統之軟體之開發。
通用硬體系統之主要目的為達成特殊應用(非可程式化)硬體效能,同時保持完整的可程式化性。歷史上,此兩種概念截然不同。特殊應用硬體為固定硬體方案,其以可能的最高效方式執行特定功能。此通常依據每一功能之能量或每一操作之能量且依據每一(電路)區域之功能來量測,其可能與產品之部分成本相關。晶片產品之成本由許多因素構成,包含晶粒面積及最終封裝。成本亦應考慮整個生態系統以開發產品。此生態系統成本由以下各項構成:將特定應用縮減為特定硬體方案之時間、構成整個系統所需之特定硬體方案的數目,及經由自訂通信及記憶體結構整合所有特定硬體方案所花費之時間等。因此,需要完全整合之方案支援所有眾多特定硬體方案以及其自訂互連,從而導致單一晶片晶粒需要極大面積。歷史上,此過程導致在面積、能量及上市時間方面無效之方案。
當考慮可程式化性及目標硬體之概念時,自硬體架構及軟體開發風格之角度來看,市場或環境由以下各項代表:由英特爾(Intel)、AMD及ARM提供之通用處理器(GPP);來自NVIDIA及AMD之圖形處理單元(GPU);
來自Texas Instruments及Analog Devices之數位信號處理器(DSP);來自Xilinx、Altera等之場可程式化閘陣列(FPGA);來自Cavium及Tilera之多核/眾核處理器;及特殊應用積體電路(ASIC)或系統單晶片(SoC)。
GPP用於通用處理,亦即,基於40多年來極老但經過驗證之硬體架構思考而試圖成為多面手。其主流目的為運行使用者界面(UI)及高度交互的UI密集型應用程式,如MSWord、Excel、電子郵件等,以及支援的操作系統(例如Windows及Linux)。影響功率耗散之硬體特性為多層級快取、複雜硬體記憶體管理單元、大型匯流排及大型時序結構。總之,其耗散大量功率來執行此等任務。自軟體開發之角度來看,其被視為最容易定位之軟體程式化模型。此係自使用者正在開發連續或依序執行之單個執行緒的角度而言的。當引入並行性或多個硬體執行緒(大於約四個執行緒)時,對其高效地進行程式化之能力變得更加困難。此係因為基本上未開發架構來支援並行執行緒操作,且因此硬體架構需要大量額外負荷複雜性來管理。軟體程式化模型需要引入API或語言擴展以便支援多個軟體執行緒之定義。儘管此不一定必須為複雜的,但遺憾的是,當前GPP硬體架構需要此類複雜性。
在高層級下,在世界上每台超級電腦中廣泛用於C、C++、Fortran等之API為MPI(訊息傳遞介面)API,其自20世紀90年代初以來一直為行業標準。此為極簡單、易於理解之API,其不限制硬體實施路徑。MPI API允許以獨立於硬體之方式定義軟體執行緒及通信。此不同於OpenMP、Coarray Fortran、OpenCL等及本質上規定假設的基礎硬體模型之其他語言/API,因此限制了解譯靈活性且導致向前相容性問題。換言之,在使用後面此等語言/API之情況下,程式設計師需要為所針對之每一新硬體平台重寫程式。
GPU在歷史上係為處理及針對資料顯示而開發。其在硬體架構上受到其核心外(外部)記憶體模型要求及內核記憶體模型要求約束。核心外記
憶體需要GPP將資料置放於GPU記憶體空間中。GPU接著拉入(pull in)資料,以管線方式對其進行操作,且接著將其置放回其外部記憶體空間中。自此,資料可被發送至顯示器,或者GPP需要將資料移出GPU記憶體空間以在一般處理下進一步使用/儲存。硬體效率低下之原因在於:(1)支援在周圍移動資料以支援核心外硬體限制所需之支援,及(2)有限的內核記憶體結構,其中資料限於在類似於深度管線化SIMD機器之流線型管線中處理。結果為歸因於處理資料之硬體效率低下而導致功率利用較高。所使用之軟體程式化模型為極度以硬體為中心的OpenCL、CUDA等,且因此達成效率較為複雜且不太便攜,並且在嘗試移動至新硬體目標平台時必須重寫及重建程式碼。
DSP可被視為具有已減小且針對通用信號處理之指令集的GPP。其遭受與其哥哥/姐姐(brother/sister)GPP相同的快取、MMU及匯流排問題。另外,諸如Viterbi/Turbo解碼或運動估計之任何真正高輸送量處理功能已經縮減為具有有限能力之ASIC加速器,其通常僅支援商業市場中一組有限的特定標準。程式化模型在針對單一硬體執行緒時類似於GPP,但由於執行單元硬體中之信號處理指令方法,要達成任何高效率,需要手工組合功能或使用DSP公司之程式庫。當創建類似於上文所論述之並行GPP的多並行DSP架構時,問題進一步惡化。
FPGA為完全不同的硬體方法,在所述方法中,可在位元級下完成功能之定義且經由可程式化導線結構完成邏輯功能之間的通信。此硬體方法帶來巨大額外負荷及複雜性。歸因於此,高效程式化係以諸如Verilog或VHDL之硬體程式設計語言執行。由於引入時序收斂障礙之可程式化佈線及可程式化邏輯,編譯過程要複雜得多,所述可程式化佈線及可程式化邏輯類似於ASIC/SOC所需之可程式化佈線及可程式化邏輯,但具有結構化導線網狀架構。由於FPGA僅執行與其程式化之功能完全相同的功能,因此當一次僅執行一項
功能時,特定功能之功率耗散及效能輸送量明顯優於GPP或GPU。然而,若試圖在FPGA中實施GPP之所有能力,則其顯然會比GPP差得多。在硬體下進行程式化之難度為顯而易見的(例如時序收斂)。程式化FPGA實際上並非「程式化」,而是邏輯/硬體設計,且VHDL/Verilog為邏輯/硬體設計語言,而非程式設計語言。
自硬體之角度來看,幾乎所有多核/眾核架構皆採用核心處理器、快取、MMU、匯流排及所有相關聯邏輯,且用圍繞其之通信匯流排/網狀架構將其複製於晶粒上。多核架構之實例為IBM之單元、英特爾及AMD之四元組(quad)及N個多核、Cavium及Tilera之產品、數個自訂SOC等。另外,在多核架構中達成之功率減少大部分不顯著。此相當明顯的結果來源於多核方法僅複製GPU方法之事實。多核架構中唯一真正節省功率的是減少一些IO驅動器,由於核心在處於單獨晶粒上之前連接於添加之通信匯流排上,因此現在不需要此等驅動器。因此,多核方法不會導致任何功率降低。其次,軟體程式化模型並未自上文所論述之GPP改良。
針對其他方法識別到之問題清單為,對於特定市場,為什麼通常認為達成效能效率及成本目標之唯一方法為開發具有特定GPP、DSP及ASIC加速器之自訂晶片以形成SoC。SoC在需要時提供可程式化性,並為特定功能提供ASIC效能,以平衡功率耗散及成本。然而,現在軟體程式化模型甚至比上述可程式化硬體解決方案中所討論之情況更複雜。另外,SOC可能導致與完全可程式化方案相關聯之靈活性喪失。
所有此等可程式化硬體方案中之共同點為,當今市場上所代表之軟體程式化模型專注於推斷執行模型及基礎硬體架構,以更高效地支援其目標。在觀察較風行的並行程式化語言中之一些之關鍵特性時,可觀測到對推斷執行模型至軟體程式化模型之特徵的專注。代表當今使用之方法的幾個實例為
OpenMP、OpenCL及MPI。
OpenMP(開放式多處理)為支援共用記憶體多處理程式化之行業標準API。OpenMP包括一組編譯器指引、程式庫常式及影響運行時間行為之環境變數。其經由並行化方法支援多執行緒,由此主執行緒(連續執行之一系列指令)分叉出指定數目個從執行緒且在其間劃分任務。在運行時間環境取決於使用情況、機器負載及其他因素而將執行緒分配至不同資源或處理器之同時,執行緒接著運作。執行緒之數目可基於環境變數或以使用功能之程式碼由運行時間環境指派。相應地用預處理器指引標記意欲並行運行之程式碼部分,所述預處理器指引標記將導致執行緒在所述部分被執行之前形成。在C/C++中,此過程係使用#pragmas來進行。默認情況下,每一執行緒獨立地執行程式碼的並行化部分。可達成任務並行性及資料並行性兩者。在執行並行化程式碼之後,所述執行緒重新加入主執行緒中,主執行緒繼續向前至程式結束。為了支援執行緒間通信,可使用OpenMP之擴展或另一不同的行業標準API,諸如MPI(訊息傳遞介面)。
開放式計算語言(OpenCL)為用於編寫程式之框架,其目標為跨異質平台執行,所述異質平台包括中央處理單元(CPU)、圖形處理單元(GPU)、數位信號處理器(DSP)、場可程式化閘陣列(FPGA)及其他處理器。其經設計以用有限的抽象支援接近硬體之介面。因此,基於OpenCL之程式通常需要基礎硬體之進階知識來達成可接受效能。當重新針對不同的硬體架構時,OpenCL程式亦需要重構。
OpenCL支援使用ANSI C來編寫內核程式設計語言,但有一些限制及添加。其不允許使用函數指標、遞迴、位元字段、可變長度陣列及標準標頭檔案。擴展所述語言以支援與向量類型及操作、同步及功能之並行性,以與工作項/組一起工作。應用程式設計介面(API)用以定義且接著控制平台。在課
程層級下,OpenCL支援使用基於任務且基於資料之並行性的並行計算。
訊息傳遞介面(MPI)為標準化語言獨立、可調式且便攜式的訊息傳遞通信協定API。MPI API意欲用語言特定的語法(連結)以語言獨立的方式在一組過程(已映射至節點/伺服器/電腦執行個體)之間提供基本虛擬拓樸、同步及通信功能性。MPI API標準定義程式庫常式之核心的語法及語義,其包含但不限於對以下各項之支援:可點對點定義之各種行為及集體/廣播通信發送/接收操作及過程同步。MPI仍為當今高效能計算中使用之主要模型。
開發軟體應用程式以供在多處理器系統上並行執行之其他方法通常需要在易於開發與並行執行之效率之間進行權衡。換言之,通常情況為,程式設計師之開發過程愈容易,所得可執行程式在硬體上同時執行之效率就愈低;相反,更高效的並行執行通常需要程式設計師付出更多努力,亦即,更詳細地設計程式以避免低效處理及使用目標硬體之效率增強特徵。
因此,需要改良之系統及方法來促進應用程式級或系統級視圖之軟體描述,以驅使軟體程式化模型及其後續使用針對執行模型及基礎硬體架構。亦需要提供經由此過程實現應用程式之高效可程式化實施之機制的改良。
揭示了用於準備用於多處理器陣列之應用軟體的各種實施例。多處理器陣列可包括複數個處理器(例如,在2D或3D柵格中)以及散佈於所述處理器之間的複數個記憶體及路由元件。可提供路由網狀架構以使用路由元件連接各種處理器及記憶體。
可使用應用程式原始程式碼來執行一前端編譯,以生成複數個中間表示及連接性資訊。所述複數個中間表示中之一特定中間表示可對應於複數
個任務中之一特定任務,其中所述連接性資訊包含複數個連接,且其中一特定連接指定所述複數個任務中之一第一任務與所述複數個任務中之一第二任務之間的一通信。可使用所述複數個中間表示及所述連接性資訊將包含在所述應用程式原始程式碼中之邏輯對象映射至包含在所述多處理器陣列中之實體資源以生成一資源映圖。可接著針對所述複數個連接中之每一連接選擇一各別實施,且可使用所述複數個中間表示來執行一第一最佳化操作以生成複數個經最佳化中間表示。可使用所述複數個經最佳化中間表示來生成可執行程式碼。可接著模擬所述可執行程式碼以生成一模擬結果,且可將所述可執行程式碼載入至所述多處理器陣列上。
在非限制性實施例中,可剖析所述應用程式原始程式碼以生成一初始中間表示,且可使用所述初始中間表示來執行至少一個第二最佳化操作以生成所述複數個中間表示。可使用所述複數個中間表示來判定所述複數個任務之間的連接性以生成所述複數個連接,且可將所述複數個中間表示及連接性資訊儲存於一項目資料庫中。所述多處理器陣列可包含複數個處理器以及散佈於所述處理器之間的記憶體。在映射邏輯對象時,可將所述複數個任務中之一特定任務指派至所述複數個處理器中之所述特定處理器,且可將與所述特定任務相關聯之一變數指派至與所述特定處理器相關聯(例如,實體地接近於所述特定處理器)之一各別資料記憶體。
10:多處理器系統(MPS)
62:任務
71:任務
501:區塊
502:區塊
503:區塊
504:區塊
505:區塊
506:區塊
600:電腦系統
601:工作站
602:項目資料庫
603:模擬器
604:多處理器陣列
701:區塊
702:區塊
703:區塊
704:區塊
705:區塊
706:區塊
707:區塊
801:區塊
802:區塊
803:區塊
804:區塊
805:區塊
806:區塊
807:區塊
808:區塊
809:區塊
810:區塊
811:區塊
812:區塊
813:區塊
901:區塊
902:區塊
903:區塊
904:區塊
905:區塊
1001:區塊
1002:區塊
1003:區塊
1004:區塊
1005:區塊
1102:區塊
1103:區塊
1104:區塊
1105:區塊
u:變數
w:變數
x:變數
圖1為說明多處理器系統(MPS)之一個實施例的方塊圖。
圖2說明由均勻地散佈有資料記憶體路由器之處理元件構成的實例MPS。
圖3為說明包含於可動態組態之處理元件中之資料路徑之實施例的方塊圖。
圖4為描繪編譯流程之實施例的流程圖。
圖5為描繪多任務編譯流程之實施例的流程圖。
圖6為描繪利用最佳化之多處理器編譯之實施例的方塊圖。
圖7為描繪多處理器編譯流程之實施例的流程圖。
圖8為描繪利用最佳化之多處理器編譯流程之實施例的流程圖。
圖9為描繪用於執行前端編譯之方法之實施例的流程圖。
圖10為描繪用於執行資源映射之方法之實施例的流程圖。
圖11為描繪用於執行通信合成之方法之實施例的流程圖。
雖然本發明易受各種修改及替代形式之影響,但在圖式中藉助於實例展示了其特定實施例,且將在本文中對其進行詳細描述。然而,應理解,所述圖式及對其之詳細描述並不意欲將本發明限於所說明之特定形式,而是相反地,意欲涵蓋屬於隨附申請專利範圍所界定的本發明之精神及範疇內的所有修改、等效物及替代例。本文中所使用之標題僅為達成組織性目的,且不意欲用以限制描述之範疇。如貫穿本申請案所使用,詞語「可」係在許可之意義(亦即,意謂有可能)而非強制性之意義(亦即,意謂必須)下予以使用。類似地,詞語「包含」意謂包含但不限於。
各種單元、電路或其他組件可被描述為「經組態以」執行一或多個任務。在此等上下文中,「經組態以」為大體上意謂「具有」在操作期間執行所述任務「之電路」之結構的寬泛敍述。因而,單元/電路/組件可經組態以甚至在單元/電路/組件當前未接通時執行任務。一般而言,形成對應於「經組態以」之結構的電路可包含硬體電路。類似地,為便於描述,各種單元/電路/組件可被描述為執行一或多個任務。此等描述應解釋為包含片語「經組態以」。敍述經
組態以執行一或多個任務之單元/電路/組件明確地不意欲援引35 U.S.C.§ 112,第六段對彼單元/電路/組件之解釋。更一般而言,對任何元件之敍述明確地不意欲援引35 U.S.C.§ 112,第六段對彼元件之解釋,除非具體敍述了語言「用於......之手段」或「用於......之步驟」。
題為「利用可程式化最佳化之記憶體網路處理器(Memory-Network Processor with Programmable Optimizations)」之發明人為Michael B.Doerr、Carl S.Dobbs、Michael B.Solka、Michael R.Trocino、Kenneth R.Faulkner、Keith M.Bindloss、Sumeer Arya、John Mark Beardslee及David A.Gibson的美國專利第9,430,369號特此以全文引用之方式併入,如同充分且完全闡述於本文中。
術語
電腦系統-術語「電腦系統」係指各種類型之計算或處理系統中之任一者,包含個人電腦系統(PC)、大型主機電腦系統、工作站、網路器具、網際網路器具、個人數位助理(PDA)、柵格計算系統或其他裝置或裝置之組合。一般而言,術語「電腦系統」可廣泛定義為涵蓋具有執行來自記憶體媒體的指令之至少一個處理器的任何裝置(或裝置之組合)。
軟體應用程式-術語「軟體應用程式」(在本文中亦僅被稱作「應用程式」)意欲具有其普通含義之全部廣度,且包含可儲存於一或多個記憶體中且由一或多個處理器執行的任何類型之程式指令、程式碼、指令碼及/或資料,或其組合。例示性軟體應用程式包含以基於文本之程式設計語言編寫的程式,諸如C、C++、FORTRAN、JavaTM、組合語言等;圖形程式(以圖形程式設計
語言編寫之程式);組合語言程式;已編譯為機器語言之程式;指令碼;及其他類型之可執行軟體。一般而言,程式為一組指令,其指定一或多個資料結構且關於彼等結構中之資料指定應採用之程序步驟以執行一或多個功能。程式通常針對特定機器架構。更抽象地,程式之程序步驟可被稱作其演算法。
應用程式可在多處理器系統(MPS)之一或多個處理器上執行,且可自MPS之本端記憶體中之一或多者讀取資料及/或將資料寫入至MPS之本端記憶體中之一或多者。應用程式可包含一或多個計算任務(或簡稱為「任務」),其中每一任務通常在MPS之單一處理器上運行且可與來自一或多個應用程式之一或多個任務共用處理器。應用程式可執行特定功能或操作。若應用程式包含多於一個任務,則任務可與彼此通信以執行功能或操作。
MPS可同時執行複數個應用程式,例如,應用程式在其中彼此並行執行。應用程式可與彼此通信,且由應用程式執行之各別功能或操作可構建於彼此之上以執行較大或較高層級之功能或操作。
軟體程式化模型-簡單而言,軟體程式化模型為使用者對機器及其操作環境之看法。軟體程式化模型包含可編寫應用程式之語言以及提供無法以語言直接表達之抽象、囊封功能性的程式庫。軟體程式化模型亦包含應用程式與自身之外的實體(I/O、擴展記憶體等)互動且表達關於應用程式之元資訊(例如,效能約束或要求)所藉以的機制。程式化模型之兩個主要部分為表示並行性如何在應用程式中表達或自應用程式導出之控制模型,及表示應用程式的並行實體如何共用資訊之通信模型。
軟體程式化模型呈現實際控制之「理想化」視圖及在最終執行應用程式時將發生的資料流及通信。操作之語義「如同」基礎實施完全按照軟體程式化模型中所描述而執行一般;只要獲得相同的效果(答案),所採取之實際步驟並不重要。出於程式碼之效率及/或資料大小、速度、功率消耗等原因,
實際實施步驟可能不同。
軟體程式化模型之重要考慮因素為,其同時以對於使用者而言方便、自然且直觀的方式為使用者提供支援應用程式(及其操作)之表達的機制,同時亦經由工具集(編譯器等)且接著在執行模型下擷取足以支援應用程式之正確且高效處理的資訊。
硬體程式化/執行模型-硬體程式化模型或執行模型表示如何執行應用程式。其定義如何表達對應於應用程式之邏輯及資料對象的資訊集及如何隨時間處理彼資訊以實現由應用程式指定之功能。系統工具(編譯器、並行性擷取器、佈局與路由等)之目的為將應用程式自其軟體程式化模型表達轉換成對應執行模型表達。執行模型包含支援由軟體程式化模型描述之功能性所需的機制(例如,經由程式庫)以及監視、調節及管理硬體之使用(例如,經由O/S)。
執行模型可相當緊密地對應於軟體程式化模型,或其可完全不同;軟體程式化模型之不同態樣可與執行模型具有不同程度之直接對應性。對應之層級與基礎硬體架構酷似初始(軟體)程式化模型之程度有關。愈相似,對應性就愈高。
基礎硬體架構-基礎硬體架構為在其上執行計算之實體裝置的架構。在此層級下,所有操作直接地對應於由裝置進行之實體操作。可描述基礎硬體架構之抽象層級可自高層級概念架構(適用於在設計空間探索期間進行評估、模擬、特徵化及權衡分析)變為低層級實施架構(適用於驅使製造裝置之實體設計)。即使在實施層級下,基礎硬體架構之不同執行個體之能力或容量亦可能不同。舉例而言,一個執行個體可實施處理單元之10×10柵格,而另一執行個體可僅實施6×6柵格。雖然容量不同,但每一者皆與基礎硬體架構保持一致。
自動地-係指由電腦系統執行之動作或操作(例如,由電腦系統執
行之軟體)或裝置(例如,電路、可程式化硬體元件、ASIC等),而無需使用者輸入直接地指定或執行動作或操作。因此,術語「自動地」與由使用者手動地執行或指定之操作相反,在所述手動操作中使用者提供輸入以直接執行操作。自動程序可由使用者所提供之輸入啟動,但「自動地」執行之後續動作未由使用者指定,亦即,未「手動地」執行,其中使用者指定待執行之每一動作。舉例而言,藉由選擇每一欄位及提供輸入指定資訊(例如,藉由鍵入資訊、選擇核取方塊、無線電選擇等)而填寫電子表格之使用者手動地填寫表格,儘管電腦系統必須回應於使用者動作而更新表格。可由電腦系統自動地填寫表格,其中電腦系統(例如,在電腦系統上執行之軟體)分析表格之欄位且在無使用者輸入指定所述欄位之回答的情況下填寫表格。如上文所指示,使用者可調用表格之自動填寫,但不涉及表格之實際填寫(例如,使用者不手動地指定對欄位之回答而是自動完成所述回答)。本說明書提供回應於使用者已採取之動作而自動地執行之操作之各種實例。
處理元件(PE)-多核處理器中之單一可程式化核心。
資料記憶體-用以儲存由一或多個PE使用之資料的記憶體。
I/O埠-至來自晶片外之電腦處理器中的連接或出自所述電腦處理器之連接。
路由-兩個資料記憶體之間的實體連接,其可用於在兩個記憶體之間傳送。
直接記憶體存取(DMA)-用於使用路由在兩個資料記憶體之間傳送資料之方法。DMA存取並不經由PE傳送資料。
共用記憶體-儲存於資料記憶體中之資料,所述資料可由兩個或多於兩個任務存取。
任務-由應用程式原始程式碼構成之用以實施特定功能的計算單
元任務被指派至多核處理器上之一或多個PE。
變數-與符號名稱配對之儲存位置。變數在任務中被引用,且被指派至可由任務存取之資料記憶體中的位置。
輸入/輸出(IO)-自晶片外讀取或經由IO埠寫入晶片外之資料。
通信(Comm)-任務或IO與兩個或多於兩個其他任務之間的抽象連接,其用以傳送資料。可使用路由、共用記憶體或任何其他可用實體資源來實施通信。
通信API-用以在任務之間或在I/O與任務之間傳送資料之常式及協定集,諸如MPI(訊息傳遞介面)。
資源映射-將抽象對象(任務、變數、通信、I/O等)指派至處理器晶片上之實體資源的過程。可手動地、自動地或以兩者之組合映射所有資源。
任務映射-將任務指派至PE及IO至IO埠之資源映射步驟。
變數分配-將變數映射至資料記憶體且為變數分配資料記憶體中之位址空間的資源映射步驟。
通信映射-將通信指派至諸如共用記憶體或路由之實體資源的資源映射步驟。
中間表示(IR)-由編譯器在內部使用之用以表示原始程式碼的資料結構。IR有助於進行進一步處理,諸如最佳化及轉譯。
轉至圖1,描繪了說明多處理器系統(MPS)之一個實施例的方塊圖。在所說明實施例中,MPS 10包含經耦接以與彼此傳達資料及指令之複數個處理元件(PE)及複數個資料記憶體路由器(DMR),所述PE及DMR亦可被稱作可動態組態之通信器或可動態組態之通信元件。如本文中所使用,PE亦可被稱作PE節點,且DMR亦可被稱作DMR節點。
處理系統(MPS)10可用於當前使用GPMC、DSP、FPGA或ASIC
之各種系統及應用程式中的任一者中。因此,舉例而言,處理系統10可用於需要計算之各種類型之電腦系統或其他裝置中的任一者中。在一個所涵蓋實施例中,處理系統10被用作數位視訊顯示系統中之信號處理裝置。
在一個實施例中,PE可包含經組態以用於操控資料之一或多個算術邏輯單元(ALU)、經組態以用於控制ALU之一或多個指令處理單元(IPU)、經組態以保持指令或資料之一或多個記憶體,及各種類型之多工器及解碼器。此類實施例可包含數個埠(「處理器埠」),其中之一些可經組態以用於連接至DMR,且其他埠可經組態以用於連接至其他PE。
在一個實施例中,DMR可包含經組態以保持資料及指令之一或多個隨機存取記憶體(RAM)、可組態控制器、諸如縱橫交換機之網路交換機、暫存器及多工器。此類實施例可包含複數個埠,其中之一些可經組態以用於連接至PE(在本文中被稱作PE型埠),且其他埠可經組態以連接至DMR(在本文中被稱作DMR型埠)。應注意,在各種實施例中,對於任何給定埠,無論係經組態以用於連接至DMR抑或PE或自DMR抑或PE連接,在特定時脈週期中可經由此類給定埠傳送之資料量可變化。舉例而言,在一個實施例中,給定埠可經組態以在每一時脈週期傳送一個資料字,而在另一實施例中,給定埠可經組態以在每一時脈週期傳送多個資料字。在又一實施例中,給定埠可使用諸如分時之技術在多個時脈週期內傳送一個資料字,藉此減少包括埠之實體連接之數目。
在MPS 10之一個實施例中,每一PE可包含為指令保留之小型本端記憶體,且可包含極少本端資料儲存。在此類實施例中,與每一PE相鄰之DMR可經組態以向給定PE提供運算元。在特定實施例中,對於許多PE指令,給定PE可在一個時脈週期中自相鄰DMR讀取運算元,執行ALU操作,且將ALU結果儲存至給定相鄰DMR。可藉此在時脈週期中緊接在執行之後使一個
PE所產生之ALU可用於若干其他PE。以此方式產生結果可使相鄰PE之執行能夠緊密協調或「緊密耦接」。
如本文中所使用,自給定DMR或PE之角度來看,相鄰DMR或PE係指可在特定潛時內自給定DMR或PE存取之DMR或PE。在一些實施例中,定義相鄰關係之程度的潛時可取決於諸如時脈速度之因素而變化。此外,在一些實施例中,可定義多個相鄰程度,所述程度可對應於不同存取時延。舉例而言,在一個實施例中,「最近相鄰者」可被定義為可在請求裝置之相同時脈週期期間供應資料的裝置,「下一最近相鄰者」可被定義為可在請求裝置之後的一個時脈週期內供應資料的裝置,等等。在其他實施例中,預期可使用其他度量來量化相鄰關係。
在給定MPS實施例中,一些DMR及PE可邏輯地鄰近於其他DMR及PE。如本文中所使用,「邏輯地鄰近」係指諸如一個DMR與另一DMR或一個DMR與一個PE之兩個裝置之間的關係,使得一個裝置之一或多個埠直接連接至另一裝置之各別埠而不穿過介入DMR或PE。此外,在給定MPS實施例中,一些DMR及PE可實體地鄰近於其他DMR及PE。如本文中所使用,「實體地鄰近」係指諸如一個DMR與另一DMR或一個DMR與一個PE之兩個裝置之間的關係,使得其他DMR或PE不實體地位於所述兩個裝置之間。
在一些MPS實施例中,諸如DMR及PE之邏輯地及/或實體地鄰近的裝置亦為相鄰或近鄰者裝置。然而,應注意,在一些實施例中,給定裝置之間的邏輯及/或實體鄰近不伴有給定裝置之間的相鄰關係或特定程度之相鄰關係。舉例而言,在一個實施例中,一個DMR可直接連接至距離相當遠之另一DMR。此對可邏輯地鄰近但不實體地鄰近,且自一個DMR至另一DMR之信號傳播時間可能過大而無法滿足相鄰者之潛時要求。類似地,在一個實施例中,一個DMR可實體地鄰近於另一DMR,但不直接連接至其,且因此不邏輯地鄰
近於其。自一個DMR至另一DMR之存取可遍歷一或多個中間節點,且所得中轉延遲可能過大而無法滿足相鄰者之潛時要求。
取決於MPS 10之給定實施例之技術及實施,DMR之複數個埠之特定數目以及DMR記憶體之大小可與總所要執行速度及DMR大小相平衡。舉例而言,一個DMR實施例可包含4個PE型埠、4個DMR型埠及4K個記憶體字。此DMR實施例可經組態以提供直接記憶體存取(DMA)機制。DMA機制可允許給定DMR高效地將資料拷貝至其他DMR或自其他DMR拷貝資料,或將資料拷貝至MPS 10外部之位置或自所述位置拷貝資料,同時PE計算結果。
在MPS 10之一個實施例中,可以若干不同方式中之一種在DMR之間傳送資料及指令。可將串列匯流排提供至MPS 10中之所有記憶體;此類匯流排可用以自外部記憶體初始化MPS 10或支援MPS資料結構之測試。對於短距離傳送,給定PE可經程式化以直接將資料移動至其相鄰者DMR或自其相鄰者DMR移動。為了在較長距離上傳送資料或指令,可在DMR之網路中動態地創建及銷毀通信路徑。
出於此類較長距離數據傳送之目的,MPS 10內之互連DMR之網路可構成用於通信路徑之交換路由網狀架構(SRF)。在此類實施例中,可存在至少兩種用於管理SRF中之通信路徑的方法。第一種方法為藉由全局程式化,其中可藉由軟體控制(例如,由人類程式設計師或具有路由能力之編譯器)來選擇路徑,且可將指令寫碼至DMR組態控制器中以適當地程式化交叉開關。為了創建路徑,可用特定路由功能顯式地程式化沿路徑之每一DMR。在頻繁創建及銷毀路徑之動態環境中,可能需要大量交叉開關組態程式碼,其儲存可能又消耗可能有限的DMR RAM資源。
第二種用於管理通信路徑之方法被稱為「蟲洞路由」。為了實施蟲洞路由,每一DMR可包含一組轉向功能及用以經由SRF停止及再啟動一連
串字(被稱作訊息)之進程的機制。因為轉向功能可由所有通信路徑共同使用及重複使用,所以可佔據DMR RAM之組態程式碼量可比上文所描述之全局程式化方法小得多。對於蟲洞路由方法,軟體控制仍可用於選擇路徑使用之特定鏈路,但路徑創建(在本文中亦被稱作設置)及銷毀/鏈路釋放的過程(在本文中亦被稱作卸除)可用最少的軟體干預在硬體中實施。
為了防止路徑上之資料字的潛在丟失,MPS 10之實施例可實施接收器與傳輸器之間沿路徑的流動控制。流動控制係指可在傳輸器之對應接收器無法再接收資料之情況下停止傳輸器且可在傳輸器之對應接收器準備好接收資料時再啟動傳輸器的機制。因為停止及再啟動路徑上之資料流與停止及再啟動蟲洞路由中之訊息之進程具有許多類似性,因此此兩者可合併於整合方案中。
在一個實施例中,MPS 10可包含複數個PE及DMR,所述PE可為相同的且所述DMR可為相同的,所述PE及DMR在均一陣列中連接在一起。在均一陣列中,大多數PE可為相同的,且大多數PE中之每一者可具有相同數目個至DMR之連接。並且,在均一陣列中,大多數DMR可為相同的,且大多數DMR中之每一者可具有相同數目個至其他DMR及至PE之連接。在一個MPS實施例中,PE及DMR可以實質上同質的方式散佈。如本文中所使用,實質上同質的散佈係指其中PE與DMR之比率在陣列之大多數子區域上一致的配置。
以實質上同質的方式配置之均一陣列可具有某些有利特性,諸如提供可預測互連型樣及使得能夠在陣列上重複使用軟體模組。在一個實施例中,均一陣列可使得能夠設計及測試PE及DMR之少量執行個體。可接著藉由製造包括DMR及PE之單元且接著多次重複或「平鋪」此類單元來組合系統。此類方法可經由重複使用共同系統元件來降低設計及測試成本。
亦應注意,PE及DMR之可組態性質可允許程式化各種非均一行為在實體均一陣列上發生。然而,在替代實施例中,MPS 10亦可由非均一DMR
及PE單元形成,所述DMR及PE單元可以規則或不規則陣列或甚至以隨機方式連接。在一個實施例中,PE及DMR互連件可實施為例如積體電路(IC)、陶瓷基板或印刷電路板(PCB)上之電路跡線。然而,在替代實施例中,此類互連件可為多種小型通信鏈路中之任一者,諸如用於電磁能量(亦即,無線電或光能)、無線(亦即,非導)能量、粒子(諸如電子束)或分子上之電位的波導。
MPS 10可實施於單一積體電路上。在一個實施例中,可組合複數個MPS積體電路以產生較大系統。MPS 10之給定實施例可使用矽積體電路(Si-IC)技術來實施,且可使用各種特徵以考慮此類技術之特定特性。舉例而言,Si-IC晶片上之電路可被限制為薄平面。對應地,MPS 10之給定實施例可使用PE及DMR之二維陣列,諸如圖2中所說明之二維陣列。然而,涵蓋包含PE及DMR之不同配置的替代MPS實施例。
此外,Si-IC晶片上之可用佈線密度可能比此類晶片之間的可用佈線密度高得多,且每一晶片可具有特殊輸入/輸出(I/O)電路之周邊以介接晶片上信號及晶片外信號。對應地,MPS 10之給定實施例可沿晶片之周邊使用略微不均一的陣列及經修改之PE/DMR單元,所述陣列係由晶片核心中之PE及DMR之均一陣列構成。然而,涵蓋包含不同配置以及均一及經修改之PE/DMR單元之組合的替代MPS實施例。
此外,由Si-IC電路執行之計算操作可能產生熱,所述熱可由IC封裝移除。增加之IC封裝可能需要額外空間,且穿過及圍繞IC封裝之互連可能引發與路徑長度成比例之延遲。因此,如上文所提及,可藉由互連多個晶片來建構極大MPS。此類多晶片MPS實施例之程式化可考慮晶片間信號延遲比晶片內延遲長得多。
在給定Si-IC MPS 10實施例中,可藉由可能利用給定Si-IC技術
之小型化及每一PE及DMR之複雜性來判定可實施於單一晶片上之PE及DMR之最大數目。在此類MPS實施例中,可在達成計算輸送量之目標層級之情況下最小化PE及DMR之電路複雜性。此類經最小化PE及DMR在本文中可被稱為流線型的。在一個MPS 10實施例中,PE輸送量之目標層級可與在相同Si-IC技術中製得之最佳數位信號處理器(DSP)之算術執行單元之目標層級相當。然而,涵蓋可使用目標PE輸送量之替代參考的其他MPS實施例。
在一些實施例中,MPS 10可使用DSP及FPGA架構之最佳特徵。與DSP類似,MPS 10可為具有多個處理單元及晶載記憶體之可程式化晶片。然而,相對於DSP,MPS處理單元可為流線型的,可存在較多MPS處理單元,且其可以新穎方式互連以最大化其間之資料移動以及晶片上及晶片外之資料移動的頻寬。具有比DSP更多的處理單元可允許MPS 10每單位時間進行更多乘法,且流線型處理單元可最小化能量使用。具有內部並行性之許多DSP可為匯流排定向之架構。在一些實施例中,MPS 10可不包含匯流排,而是可包含諸如在DMR中、嵌入於SRF中之相鄰共用本端記憶體,其可提供顯著高於匯流排定向之架構的總頻寬。
相比於FPGA方法,一些MPS實施例可能粗粒度更高。舉例而言,在一個MPS實施例中,操作可具有自然字長(例如,16位元),且若使用為多個自然字長之資料來執行,則計算可為最高效的。在一些MPS實施例中,PE及DMR可比在FPGA中實現之等效結構更密集,此可能導致平均佈線長度較短,佈線電容較低且能量使用較少。相比於FPGA實施,在一些MPS實施例中,MPS中之每一ALU可為處理器(亦即PE)之部分,此可促進運算元之提取及DMR中之周圍快速記憶體之結果的回寫。ALU之時序及時脈偏斜問題、提取及回寫操作可在IC晶片之設計期間解決一次,且無需如同典型的FPGA實施一樣用每一新應用程式重新解決。
粗粒度可程式化嵌入式系統可由小數目之處理器或數位信號處理引擎組成。舉例而言,裝置可含有四個或八個處理器核心以及固定或可程式化的特殊應用邏輯功能。此等系統通常具有用以儲存資料及指令之大型共同記憶體。通常,其利用虛擬記憶體方案將可經定址之資料及指令記憶體之範圍擴展為大於晶載記憶體之大小。此類系統在程式碼生成期間不考慮通信映射要求及最小實體特性。
圖3說明由均勻地散佈有9×9 DMR陣列(圓形)之8×8 PE陣列(正方形)構成的實例MPS。程式可被編譯為經指派至PE之任務。第一實例程式已用taskID=62編譯,且被指派至陣列之左上角中的特定PE。變數u、v、w為程式原始程式碼中之聲明的通信變數,且被指派至鄰近DMR中之特定記憶體位址;u及v為用於I/O埠之緩衝區,且w為用於與其相關聯DMR進行晶片上網路通信之緩衝區。第二實例程式已用taskID=71編譯,且被指派至陣列內部中之特定PE。變數x為聲明的通信變數且被指派至所示DMR。與變數x相關聯之通信路徑經由其他DMR自其經指派DMR延伸至頂列之I/O埠。如所展示,兩個實例程式不與彼此通信,但可藉由將另一通信變數添加至任務71及其DMR與鄰近於任務62之DMR中之變數w之間的路徑而易於使其通信。
圖3展示具有稱為資料管線0(DP0)及資料管線1(DP1)之雙高輸送量操作單元之資料路徑實例,其中擴展了用於此論述之一些附加流程暫存器。此等為額外的用於輸入之管線暫存器X、Y及用於輸出之Z。亦展示了標稱運算元階段A、B、C及目的地階段D。
A、B及C暫存器用於儲存高達64位元寬的運算元,如先前論述為可用的。HyperOps在兩個資料路徑之A、B及C暫存器與X及Y暫存器之間使用多工以控制運算元及由資料路徑執行之每一操作所需的字對準。在HyperOp處理期間將運算元提取至A、B及C暫存器中係在具有移位選項之程式控制下,
以允許對記憶體進行位址對準之存取且允許對資料路徑數學單元進行恰當運算元對準。此創新允許較簡單、低功率之記憶體結構及尋址模式,以便提供將足夠的運算元供應至複雜資料路徑/HyperOp組合之方式,以提供與運算元如何儲存於記憶體中無關的峰值輸送量。
結果中之一者類似於運算元論述。在HyperOp執行期間,資料路徑結果被放入累加器或Z暫存器中。此等結果可接著移動至D以用於在別處回寫或在所說明路徑上回饋,以用作後續指令中之額外運算元。如同運算元一樣,此處可進行結果之重新對準,以針對未對準資料實現記憶體/暫存器之經對準回寫。同樣,此等操作由HyperOp指令獨立地控制。
在許多架構中,在存在單一累加器之情況下,支援用於將類似數學運算之長串一起添加為單一總和之累加器。另外,有時所有操作皆利用結果修改此累加器(同樣,吾人之上一代)。雖然此結構適用於主要為每週期單一標量操作之架構,但添加了額外資料路徑且能夠用HyperOps對每週期多個運算元進行操作,因此變得有必要擴展此概念。當前設計點含有每資料路徑兩個獨立累加器。每一操作可選擇更新哪一累加器(若存在)。因此,此等者可用於儲存中間值以供稍後經由先前論述之多工結構進行處理,或允許以交錯形式處理多個資料流,而無保存及恢復累加器值之額外週期或功率額外負荷。雙累加器結構之此等特性在與諸如雙資料路徑及運算元/結果對準之其他特徵耦接使用時提供一種機制,其較充分利用管道,此又降低設計之每次操作的總功率。
與累加器有關之另一特徵提供另一種加速一些演算法之內部迴路且增加在晶片中多個PE上之並行執行的方法。舉例而言,此係為了最小化計算迴路之額外負荷,所述計算迴路應在多個PE上擴散以便提供足夠的資料處理頻寬,如在多分接頭高頻寬FIR濾波器中那樣。
在圖3中,展示但未詳述含有位址生成單元(AGU)之位址生成
器部分。PE架構之位址生成器部分生成由硬體支援之各種尋址模式的位址。此章節中將進一步描述其獨特特徵。
位址生成器部分可具有用於生成位址之多個可程式化數學單元。此等單元中之每一者為位址生成單元(AGU)。另外,可存在可用於在管線之位址計算部分中進行額外運算的一或多個擴展數學及邏輯單元(GALU)。此等計算適用於擴展管之功能性及效能且適用於移除表查找類型操作中之管線延遲以及其他。在圖3中,實例位址生成器部分含有三個AGU及一個GALU及一組支援暫存器。
對於標準編碼方法中之典型操作,AGU用於為兩個源運算元及目的地生成位址,或為此等者之子集及一些位址或擴展數學運算生成位址。單元與編碼緊密耦接。對於經由HyperOp編碼之擴展操作,此等單元更加分離,且可由指令流獨立地控制。此允許操作具較高靈活性及較高並行性。可在編譯時間執行最佳化,使得無需即時重新排序,因此不存在此類最佳化之操作功率損失。
圖4中展示典型程式化設計流程。使用者原始程式碼經由編譯器及組合程式翻譯成一或多個目標檔案,所述目標檔案接著鏈接在一起以形成含有可由目標處理器核心解譯之二進位程式碼影像的可執行檔案。為了運行及測試可執行影像,載入程式將其拷貝至模擬器或實體嵌入式系統之目標核心之指令記憶體。
對於圖4之典型流程,在組合程式及鏈接器階段之前完成所有編譯器最佳化。多執行緒應用程式甚至允許個別執行緒在不同核心上運行。
具有許多PE及較小分佈式記憶體之多核處理器具有功率消耗較低之益處,但需要考慮較多實體約束。此類處理器之典型工具流程展示於圖5中。在開始於區塊501之此工具流程中,使用者原始程式碼由經由通信賦能應
用程式設計介面(API)彼此通信之一或多個任務組成。舉例而言,API可經設計以支援訊息傳遞範例。
所述方法包含編譯應用程式原始程式碼以生成組合程式碼(區塊502)。編譯階段運行C編譯器、組合程式及任務鏈接器以針對每一任務生成目標檔案,且接著將任務之間的連接性擷取至連接性資料庫中。此時,所有編譯器最佳化皆已完成,但任務、變數及通信尚未映射至實體資源。
所述方法包含映射資源(區塊503)。在資源映射期間完成任務映射、變數分配及通信映射。另外,所述方法包含合成通信(區塊504)。用於通信API之此類程式碼合成可作為編譯過程之最終鏈接器階段之一部分來執行。
所述方法亦包含模擬及除錯(區塊505)。影像檔案可載入至軟體模擬或硬體除錯器中以進行此類測試及除錯。所述方法進一步包含在硬體上載入可執行影像(區塊506)。此類裝載可為部署經編譯軟體以在多處理器陣列上使用之部分。
由於用於最佳化之編譯器資料在完成編譯過程後消失,因此在資源映射中指派實體資源後,幾乎或根本不可能進行最佳化。不支援迭代流程中之步驟。
用分佈式記憶體、多核處理器達成最佳結果之方式為創建在整個流程中維持足夠資訊以允許在結束時-在已完全映射所有資源之後完成編譯器最佳化工具流程。此包含所有形式之編譯器最佳化以及負載平衡最佳化,諸如多任務。在多任務中,多個任務被指派至同一PE。為了通常有用及實務,可選擇針對每一PE選擇之任務以一起操作而不會產生上下文交換之額外負荷(其中暫存器及變數被保存以使其可在稍後某一時間恢復)。可執行此類流程之電腦系統之方塊圖說明於圖6中。
如所說明,電腦系統600包含工作站601、項目資料庫602、模
擬器603及多處理器陣列604。在各種實施例中,工作站601可包含電腦、膝上型電腦、平板電腦或能夠經由有線或無線網路與項目資料庫602、多處理器陣列604及模擬器603通信之任何其他合適計算裝置。
項目資料庫602可包含應用程式原始程式碼,以及在編譯過程期間生成之檔案,諸如中間表示及影像檔案。在各種實施例中,項目資料庫602可儲存於磁碟伺服器或連接至電腦系統600中所說明之其他組件的其他合適儲存裝置上。
在各種實施例中,多處理器陣列604可包含多個處理元件(PE)以及其他組件。舉例而言,如上文所描述,多處理器陣列604可包含一或多個資料記憶體路由器,如圖1中所描繪之實施例中所說明。
模擬器603可包含經組態以執行應用程式原始程式碼之編譯版本的軟體及硬體之任何合適組合。舉例而言,模擬器603可為執行軟體以模擬最終將執行應用程式之所要環境的專用電腦或工作站。在一些情況下,模擬器603可經組態以向正被模擬之應用軟體提供測試資料,且收集由對測試資料進行操作之應用軟體生成的結果,諸如變數值。
轉至圖7,說明了描繪用於編譯應用程式原始程式碼之方法之實施例的流程圖。開始於區塊701之方法可應用於圖6中所說明之電腦系統。
所述方法包含使用應用程式原始程式碼來執行前端編譯以生成複數個中間表示及連接性資訊,其中複數個中間表示中之特定中間表示對應於複數個任務中之特定任務,其中連接性資訊包含複數個連接,且其中特定連接指定複數個任務中之第一任務與複數個任務中之第二任務之間的通信(區塊702)。如本文中所使用及描述,連接性資訊為描述兩個或多於兩個任務與兩個或多於兩個輸入/輸出埠之間的抽象連接之資訊。
所述方法亦包含使用複數個中間表示及連接性資訊將包含在應
用程式原始程式碼中之邏輯對象映射至包含在多處理器陣列中之實體資源以生成資源映圖(區塊703)。如以下更詳細地描述,資源映射可包含將特定任務指派至多處理器陣列內之特定PE。
所述方法進一步包含針對複數個連接中之每一連接選擇各別實施(區塊704)。如下文所描述,連接可顯式地經由應用程式程式設計師所提供之程式碼而識別,或經由對原始程式碼之分析由軟體工具自動地擷取。
另外,所述方法包含使用複數個中間表示來執行第一最佳化操作以生成複數個經最佳化中間表示(區塊705)。如以下更詳細地描述,此類最佳化可包含較佳資源映射以利用多處理器陣列之能力。藉由在已判定初始資源映圖之後執行最佳化,最佳化可有利地改良多處理器陣列上之應用軟體之執行。
所述方法亦包含使用複數個經最佳化中間表示來生成可執行程式碼(區塊706)。在各種實施例中,生成可執行程式碼可包含創建影像檔案,所述影像檔案之部分可由包含於多處理器陣列中之各別PE執行。
所述方法亦包含將可執行程式碼載入至多處理器陣列上(區塊707)。在一些實施例中,可執行程式碼之影像檔案之部分可載入至多處理器陣列之各別PE中。此類載入可使用耦接多處理器陣列之各種PE的通信網路。所述方法在區塊708中結束。
在一些狀況下,執行前端及後端最佳化兩者。圖8中說明描繪此類方法之實施例的流程圖。開始於區塊801之方法可應用於圖6中所描繪之電腦系統。所述方法包含執行前端編譯以生成中間表示(區塊802)。
所述方法進一步包含映射資源(區塊803)。在各種實施例中,可使用自中間表示收集之資訊來判斷哪些任務應映射至包含於多處理器陣列中之哪一PE。所述方法亦包含檢查可能的最佳化(區塊804)。在一些情況下,最佳化可能涉及不同於最初指派之資源映射的資源映射。
所述方法接著取決於最佳化是否可能(區塊805)。若最佳化若可能,則所述方法自如上文所描述之區塊803繼續。替代地,若最佳化係不可能的,則所述方法包含執行後端編譯及通信合成(區塊806)。
與前端編譯一樣,所述方法包含檢查可能的最佳化(區塊807)。所述方法同樣取決於最佳化是否可能(區塊808)。若最佳化係可能的,則所述方法自如上文所描述之區塊806或區塊803繼續。若最佳化係不可能的,則所述方法包含模擬及除錯(區塊809)。在一些情況下,此類模擬及除錯包含將軟體載入至多處理器上及執行軟體。此類執行可包含使用測試資料且自軟體之執行收集結果。可將結果與預期資料進行比較。
所述方法接著包含檢查可能的最佳化(區塊810)。以類似於先前所描述之方式的方式,所述方法接著取決於最佳化是否可能(區塊811)。若最佳化係可能的,則所述方法可自如上文所描述之區塊803、區塊806或區塊809繼續。若最佳化係不可能的,則方法包含將可執行影像載入至多處理器陣列上(區塊812)。在各種實施例中,可使用連接於個別PE之間且如上文所描述之通信網路將可執行影像載入至多處理器陣列上。所述方法在區塊813中結束。
如圖9中所描繪,用於諸如C之高層級語言的編譯器使用中間表示(IR)來儲存編譯過程之中間結果。開始於區塊901之方法包含分析應用程式原始程式碼(區塊902)。諸如LLVM之現代編譯器提供一組組件,其包含用以將源語言轉換為IR之剖析器。所述方法接著包含執行初始最佳化操作(區塊903)。此類初始最佳化操作可包含一或多個最佳化遍(pass)及指令生成器框架以生成由用於諸如X86、Arm等不同目標指令集之指令構成的程式模組。
最佳化係使用一或多個「下降」遍來實施,所述下降遍中之每一者讀取輸入IR,進行變換,且輸出經修改之IR。可添加額外遍以用於任何所要變換。所述系列之變換經設計以將高層級語言構造轉換為低層級機器特徵。傳
統上,依序執行編譯步驟,且最終編產生用於目標機器之經最佳化組合語言。接著運行組合程式及任務鏈接器以產生每一任務之單一目標檔案及含有所有任務之資料庫。接著使用此資訊來識別任務之間的連接性且將其儲存於資料庫中。關於傳統方法,存在若干重要觀察結果。
不必運行所有最佳化以識別連接性。僅需要用以傳播常數及移除死碼之最佳化。此等者係避免識別錯誤連接性所需的。
應注意,不需要任務鏈接來為每一任務生成單一目標檔案。替代地,所述方法包含執行及程序間分析(IPA)(區塊904)。IPA為在原始程式碼檔案上操作且每一任務產生單一IR之編譯器最佳化遍。
目標碼並非連接性識別之要求。有可能自用於任務之IR擷取連接性。對於增強型流程,前端編譯過程僅運行最少的最佳化遍及IPA以針對任務中之每一者生成IR表示。關於每一任務及用於每一任務之IR的相關資訊儲存於資料庫中。所述方法在區塊905中結束。
上文所描述之流程直至後端編譯步驟才生成組合語言。因此,組合源檔案及包含於C源檔案之進線組合被轉換為以自C源生成之IR與相同的方式處置的IR表示。此係作為前端編譯過程之部分而被處置。
當然,組合語言程式碼通常由應用程式開發者手動最佳化,因此所產生之IR的層級低於自C源生成之初始IR。幸而,在IR中支援混合之抽象層級,且一些額外最佳化可仍為可能的。
對於進線組合,辨識在組合程式碼區塊中參考之實體暫存器,使得在程式碼生成期間,額外資訊可用於暫存器分配。替代地,流程可支援在進線組合程式碼之區塊中使用虛擬暫存器。在暫存器分配期間辨識此等暫存器參考且用實體暫存器替換,同時對自C源生成之程式碼完成暫存器分配。
連接性識別為編譯階段之最終步驟。在此步驟期間,識別任務之
間的所有連接。此可顯式地經由應用程式程式設計師所提供之程式碼而識別,或經由分析由軟體工具自動地擷取。
對於自動通信擷取,關於針對任務中之每一者發送及接收通信的資訊在前端編譯期間儲存於IR中。擷取過程構建整個設計之連接性圖表。此係使用可用於任務之IR的聲明資訊及通信API之組合來完成。連接性資訊儲存於資料庫中。
轉至圖10,說明了描繪用於資源映射之方法之實施例的流程圖。開始於區塊1001之方法為將應用程式碼中所定義之邏輯對象指派至硬體上之實體資源的過程。為了實現此目的,所述方法包含映射任務(區塊1002)。舉例而言,不同任務可映射至各別PE。所述方法進一步包含分配變數(區塊1003)。在一些情況下,特定變數被分配至可用資料記憶體中之給定資料記憶體。
另外,所述方法包含映射任務之間的通信(區塊1104)。在一些情況下,輸入及輸出通信被映射至I/O埠以及其他實體資源。所述方法在區塊1005中結束。
應注意,此等操作之次序很重要,但其可針對不同硬體而變化。在典型分佈式記憶體陣列處理器上,任務必須指派至PE,且在通信可路由之前必須分配涉及通信之變數及I/O埠。可在通信映射完成之前或之後置放不涉及通信之變數。
可向資源映射提供約束以影響結果。約束可指定為視情況選用的或需要的。資源映射程式無法達成所需約束會導致資源映射誤差。無法達成視情況選用之約束係可接受的。約束之一些實例為對任務及變數之相對位置約束,且共用通信之間的相同路由資源。
可能需要位置約束以允許訪問諸如共用記憶體之共同資源或允許訪問某些指令以用於最佳化目的。若滿足約束,則軟體工具可利用最佳結果
之必要資源。否則,可基於可用之資源而使用並非最佳的方法。
可使用通信映射約束來防止具有高頻寬要求之通信之間的競爭。此類約束可由使用者手動地提供或由工具自動地提供。若使用者原始程式碼包含需要用於實施之硬體資源之特殊配置的構造,則後者係常見的。亦可自流程中之下游工具提供約束。
由於任務映射係在最終程式碼最佳化之前完成,因此有可能將多個任務指派至同一PE而不會引發任務之間的上下文交換之額外負荷巨大。上下文交換需要保存及恢復包含暫存器及變數之狀態資訊。由於直至後端編譯器階段才完成暫存器及變數分配,因此可在多個任務上分配暫存器及變數,且可減少或完全移除上下文交換之額外負荷。
選擇實施適當程式碼之通信及生成中之每一者之最佳機制的過程稱為「通信合成」。圖11中說明了描繪用於執行通信合成之方法之實施例的流程圖。在資源映射完成後,方法開始於區塊101。在此類資源映射之後,選擇通信API中之每一者之最佳實施所需的所有資訊皆為可用的。所述方法接著包含合成通信(區塊1102)。舉例而言,軟體工具基於涉及通信之變數之相對位置且基於可用之硬體資源而選擇最高效實施。舉例而言,經由直接記憶體存取(DMA)之傳送通常為最佳方案,但若發送器及接收器變數在同一資料記憶體中,則最佳機制可利用共用記憶體。
在通信已用實際實施全部替換後,所述方法包含執行編譯器最佳化(區塊1103)。此類最佳化可包含執行可在任務中之每一者之IR上運行的一或多個最佳化遍。針對通信API合成之程式碼與任務中之其他程式碼一起進行最佳化。此為優於在合成用於通信API之程式碼之前完成後端編譯器最佳化之先前流程的明顯優勢。
在流程中此時執行之共同最佳化可包含硬體特定迴路最佳化及
運算元模式選擇以選擇存取源及目的地運算元之最佳方法。在各種實施例中,硬體特定迴路最佳化可包含重複迴路擷取、迴路不變程式碼運動、用以隱藏某些PE功能之時延的軟體管線化、利用多個PE以改良效能之向量化、迴路展開、用以組合類似迴路之迴路融合,及用以分離迴路之特定部分的迴路***。
在一些實施例中,運算元模式選擇可包含用於最佳使用硬體暫存器之暫存器選擇及用於將變數最佳指派至記憶體位址之變數分配。
雖然此等最佳化中之許多可在資源映射完成之前完成,但其無法充分完成。舉例而言,暫存器及變數分配最佳在完全置放任務以使得多任務之排程可經最佳化之後完成。迴路向量化最佳在任務被指派至PE以使得鄰近PE中之可用資源為已知之後完成。並且,諸如迴路不變程式碼運動之最佳化最佳在通信合成完成之後完成。
所述方法還包含生成可執行程式碼(區塊1104)。在各種實施例中,程式碼生成可包含針對每一任務IR生成目標碼,及生成用以將應用程式載入至硬體上或載入至軟體模擬環境中之最終影像檔案。取決於實施,第一步驟可涉及針對每一任務生成組合語言源,所述任務接著經由組合程式運行以生成目標碼。
在程式碼生成期間,軟體工具基於儲存於資料庫中之彼任務之經最佳化IR而選擇指令之順序以實施每一任務之初始源。此過程可能涉及基於任務及變數之相對位置而可用的硬體之特殊特徵。舉例而言,一些指令可能僅在陣列中之某些PE上可用。若任務被置放於彼等PE中之一者上,則可使用特殊指令來進行實施。在其他情況下,一些指令可能僅在源及/或目的地變數位於同一記憶體中時可用。若資源映射無法達成變數之必要同置(colocation),則選擇並非最佳的實施。
所述方法在區塊1105中結束。應注意,在一些情況下,在程式碼
生成完成之後,寫入最終影像檔案。此檔案可載入於實際硬體上,或載入至軟體模擬器或硬體調試器環境中以用於測試及除錯。
在一些情況下,在將可執行影像載入至多處理器陣列上之前,工具流程中之最後一個步驟為模擬步驟。在各種實施例中,模擬步驟可包含應用程式執行、行為測試及除錯、效能及時序特徵化,及功率特徵化。行為問題通常藉由修改應用程式原始程式碼來解決。
對於滿足效能目標存在各種要求。在一些實施例中,此等要求包含要求所有任務必須必須足夠快地運行以跟上所要輸送量,且任務之間的資料必須足夠快地流動以使得任務不必等待資料。
任務執行速度可能受任務執行以完成其功能所需的指令之數目限制。在此情況下,藉由將任務分成多個任務或藉由將一些指令移動至其他任務以平衡負載來緩解問題。此等操作中之任一者可手動地完成。替代地,模擬儲存可用於進一步最佳化設計之資訊。舉例而言,若發現迴路執行之時間過長,則可使用諸如迴路向量化之進一步最佳化來改良結果。
多任務為用於負載平衡之另一有價值工具。若使用許多小的快速執行任務來開發應用程式,則可使用單一PE來執行多個任務之全部或部分。若任務未跟上所要輸送量,則其可被指派至不同PE,使得其具有較多可用計算資源。
任務執行速度亦可能受與其他任務競爭共同資源之限制。舉例而言,兩個任務可能正嘗試同時訪問同一記憶體組。此可藉由將變數重新分配至位於不同記憶體組或甚至不同記憶體中之位址來解決。此資訊在模擬期間被收集且用以重新分配變數。
傳送資料之延遲通常歸因於對共用資源之競爭。舉例而言,兩個臨界通信可共用相同DMA引擎或相同路由資源中之一些。此可致使通信中之一
者在等待另一者完成時暫停。關於通信暫停之資訊在模擬期間被儲存且可用以改良任務映射及通信映射。
在許多嵌入式系統中,功率考慮亦為重要的。與時序效能資料非常類似,在模擬運行期間保存之功率資料可用於改良資源映射、通信合成及後端編譯期間之最佳化。
在一些情況下,可使用靜態分析來查找與模擬相同之效能限制,而無需特定測試資料。舉例而言,有可能使用靜態分析來查找潛在的記憶體組衝突或可能的通信衝突。此資訊亦供應至資源映射、通信合成及後端編譯以最佳化結果。
迭代流程為將在流程中之稍後步驟中收集之資訊回饋至流程中之前一步驟的流程。接著重新執行先前步驟中之一些或所有以進一步最佳化設計。舉例而言,程式碼最佳化可能導致添加或刪除某些變數,因此需要部分重新運行資源映射以調整變數置放。或者,可使用自模擬或靜態分析收集之資訊對早期步驟進行迭代以進一步最佳化設計。此係可能的,因為資料庫包含用於所有應用程式任務之IR。可根據需要運行最佳化遍。
在各種實施例中,電腦可讀記憶體媒體可儲存可由MPS之處理器及/或一或多個外部處理器執行的程式指令以實施上文所描述之各種功能,諸如涉及調換軟體應用程式之功能。大體而言,電腦可讀記憶體媒體可包含任一組指令,所述指令在被執行時實施本文中所描述之部分或全部功能。一般而言,電腦可讀記憶體媒體可包含可由電腦在使用期間存取以將指令及/或資料提供至電腦系統之任何儲存媒體。舉例而言,電腦可讀記憶體媒體可包含儲存媒體,諸如磁性或光學媒體,例如磁碟(固定或可移動)、磁帶、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或藍光。儲存媒體可進一步包含揮發性或非揮發性記憶體媒體,諸如RAM(例如,同步動態RAM(SDRAM)、Rambus
DRAM(RDRAM)、靜態RAM(SRAM)等)、ROM、快閃記憶體、可經由周邊介面存取之非揮發性記憶體(例如,快閃記憶體),所述周邊介面諸如通用串列匯流排(USB)介面、快閃記憶體介面(FMI)、串列周邊介面(SPI)等。儲存媒體可包含微機電系統(MEMS)以及可經由諸如網路及/或無線鏈路之通信媒體存取的儲存媒體。載體媒體可包含電腦可存取儲存媒體以及諸如有線或無線傳輸之傳輸媒體。
儘管本發明之系統及方法已結合較佳實施例進行了描述,但其並不意欲限於本文所闡述之特定形式,而相反地,其意欲涵蓋此類替代方案、修改及等效物,如可合理地包含於如隨附申請專利範圍所定義之本發明之精神及範疇內。
10:多處理器系統(MPS)
Claims (20)
- 一種處理器操作方法,其包括:使用應用程式原始程式碼來執行一前端編譯以生成複數個中間表示及連接性資訊,其中所述複數個中間表示中之一特定中間表示對應於複數個任務中之一特定任務,其中所述連接性資訊包含複數個連接,且其中一特定連接指定所述複數個任務中之一第一任務與所述複數個任務中之一第二任務之間的一通信;使用所述複數個中間表示及所述連接性資訊將包含在所述應用程式原始程式碼中之邏輯對象映射至包含在一多處理器陣列中之實體資源以生成一資源映圖;針對所述複數個連接中之每一連接選擇一各別實施;使用所述複數個中間表示來執行一第一最佳化操作以生成複數個經最佳化中間表示;使用所述複數個經最佳化中間表示來生成可執行程式碼;及將所述可執行程式碼載入至所述多處理器陣列上。
- 如申請專利範圍第1項之處理器操作方法,其中執行所述前端編譯包含:剖析所述應用程式原始程式碼以生成一初始中間表示;使用所述初始中間表示來執行至少一個第二最佳化操作以生成所述複數個中間表示;使用所述複數個中間表示來識別所述複數個任務之間的連接性以生成所述複數個連接;及將所述複數個中間表示及連接性資訊儲存於一項目資料庫中。
- 如申請專利範圍第1項之處理器操作方法,其中所述多處理器陣列包含複數個處理器,其中所述複數個處理器中之一特定處理器包含一資料記憶體,且其中映射所述邏輯對象包含:將所述複數個任務中之一特定任務指派至所述複數個處理器中之所述特定處理器;及將與所述特定任務相關聯之一變數指派至所述資料記憶體。
- 如申請專利範圍第1項之處理器操作方法,其中針對所述複數個連接中之每一連接選擇所述各別實施包含選擇用於將資料自一發送器傳送至一接收器之一直接記憶體存取,所述直接記憶體存取包含於所述複數個連接中之一特定連接中。
- 如申請專利範圍第1項之處理器操作方法,其中所述多處理器陣列包含複數個處理器,且其中使用所述複數個中間表示來執行所述第一最佳化操作以生成所述複數個經最佳化中間表示包含向量化多個指令之一迴路以利用所述複數個處理器之一子集。
- 如申請專利範圍第1項之處理器操作方法,其進一步包括:模擬所述可執行程式碼以生成一模擬結果;及基於所述模擬結果而至少修改所述應用程式原始程式碼。
- 一種電腦系統,其包括:一或多個記憶體,其經組態以儲存指令;及一或多個處理器,其經組態以自所述一或多個記憶體接收指令且執行所述指令以致使所述電腦系統執行包含以下各項之操作:使用應用程式原始程式碼來執行一前端編譯以生成複數個中間表示及連接性資訊,其中所述複數個中間表示中之一特定中間表示對應於複數個任務中之一特定任務,其中所述連接性資訊包含複數個連接,且其中一特定連接指定所 述複數個任務中之一第一任務與所述複數個任務中之一第二任務之間的一通信;使用所述複數個中間表示及所述連接性資訊將包含在所述應用程式原始程式碼中之邏輯對象映射至包含在一多處理器陣列中之實體資源以生成一資源映圖;針對所述複數個連接中之每一連接選擇一各別實施;使用所述複數個中間表示來執行一第一最佳化操作以生成複數個經最佳化中間表示;及使用所述複數個經最佳化中間表示來生成可執行程式碼。
- 如申請專利範圍第7項之電腦系統,其中執行所述前端編譯包含:剖析所述應用程式原始程式碼以生成一初始中間表示;使用所述初始中間表示來執行至少一個第二最佳化操作以生成所述複數個中間表示;使用所述複數個中間表示來識別所述複數個任務之間的連接性以生成所述複數個連接;及將所述複數個中間表示及連接性資訊儲存於一項目資料庫中。
- 如申請專利範圍第7項之電腦系統,其中所述多處理器陣列包含複數個處理器,其中所述複數個處理器中之一特定處理器包含一資料記憶體,且其中映射所述邏輯對象包含:將所述複數個任務中之一特定任務指派至所述複數個處理器中之所述特定處理器;及將與所述特定任務相關聯之一變數指派至所述資料記憶體。
- 如申請專利範圍第7項之電腦系統,其中針對所述複數個連接中之每一連接選擇所述各別實施包含選擇用於將資料自一發送器傳送至一接收 器之一直接記憶體存取,所述直接記憶體存取包含於所述複數個連接中之一特定連接中。
- 如申請專利範圍第7項之電腦系統,其中所述多處理器陣列包含複數個處理器,且其中使用所述複數個中間表示來執行所述第一最佳化操作以生成所述複數個經最佳化中間表示包含向量化多個指令之一迴路以利用所述複數個處理器之一子集。
- 如申請專利範圍第7項之電腦系統,其中所述操作進一步包含:模擬所述可執行程式碼以生成一模擬結果;及基於所述模擬結果而至少修改所述應用程式原始程式碼。
- 如申請專利範圍第7項之電腦系統,其中使用所述複數個經最佳化中間表示來生成所述可執行程式碼包含使用所述複數個經最佳化中間表示中之一對應經最佳化中間表示針對所述複數個任務中之每一任務生成一各別目標碼。
- 一種非暫時性電腦可存取儲存媒體,其具有儲存於其中之程式化指令,所述程式化指令回應於由一電腦系統之執行而致使所述電腦系統執行包括以下各項之操作:使用應用程式原始程式碼來執行一前端編譯以生成複數個中間表示及連接性資訊,其中所述複數個中間表示中之一特定中間表示對應於複數個任務中之一特定任務,其中所述連接性資訊包含複數個連接,且其中一特定連接指定所述複數個任務中之一第一任務與所述複數個任務中之一第二任務之間的一通信;使用所述複數個中間表示及所述連接性資訊將包含在所述應用程式原始程式碼中之邏輯對象映射至包含在一多處理器陣列中之實體資源以生成一資源映圖; 針對所述複數個連接中之每一連接選擇一各別實施;使用所述複數個中間表示來執行一第一最佳化操作以生成複數個經最佳化中間表示;使用所述複數個經最佳化中間表示來生成可執行程式碼;及將所述可執行程式碼載入至所述多處理器陣列上。
- 如申請專利範圍第14項之非暫時性電腦可存取儲存媒體,其中執行所述前端編譯包含:剖析所述應用程式原始程式碼以生成一初始中間表示;使用所述初始中間表示來執行至少一個第二最佳化操作以生成所述複數個中間表示;使用所述複數個中間表示來識別所述複數個任務之間的連接性以生成所述複數個連接;及將所述複數個中間表示及連接性資訊儲存於一項目資料庫中。
- 如申請專利範圍第14項之非暫時性電腦可存取儲存媒體,其中所述多處理器陣列包含複數個處理器,其中所述複數個處理器中之一特定處理器包含一資料記憶體,且其中映射所述邏輯對象包含:將所述複數個任務中之一特定任務指派至所述複數個處理器中之所述特定處理器;及將與所述特定任務相關聯之一變數指派至所述資料記憶體。
- 如申請專利範圍第14項之非暫時性電腦可存取儲存媒體,其中針對所述複數個連接中之每一連接選擇所述各別實施包含選擇用於將資料自一發送器傳送至一接收器之一直接記憶體存取,所述直接記憶體存取包含於所述複數個連接中之一特定連接中。
- 如申請專利範圍第14項之非暫時性電腦可存取儲存媒體,其中 所述多處理器陣列包含複數個處理器,且其中使用所述複數個中間表示來執行所述第一最佳化操作以生成所述複數個經最佳化中間表示包含向量化多個指令之一迴路以利用所述複數個處理器之一子集。
- 如申請專利範圍第14項之非暫時性電腦可存取儲存媒體,其中所述操作進一步包含:模擬所述可執行程式碼以生成一模擬結果;及基於所述模擬結果而至少修改所述應用程式原始程式碼。
- 如申請專利範圍第14項之非暫時性電腦可存取儲存媒體,其中使用所述複數個經最佳化中間表示來生成所述可執行程式碼包含使用所述複數個經最佳化中間表示中之一對應經最佳化中間表示針對所述複數個任務中之每一任務生成一各別目標碼。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762581525P | 2017-11-03 | 2017-11-03 | |
US62/581,525 | 2017-11-03 | ||
PCT/US2018/058700 WO2019089918A1 (en) | 2017-11-03 | 2018-11-01 | Programming flow for multi-processor system |
US16/177,680 | 2018-11-01 | ||
WOPCT/US18/58700 | 2018-11-01 | ||
US16/177,680 US11755382B2 (en) | 2017-11-03 | 2018-11-01 | Programming flow for multi-processor system |
??PCT/US18/58700 | 2018-11-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201923613A TW201923613A (zh) | 2019-06-16 |
TWI703451B true TWI703451B (zh) | 2020-09-01 |
Family
ID=64362703
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111114174A TWI806550B (zh) | 2017-11-03 | 2018-11-02 | 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體 |
TW107139064A TWI703451B (zh) | 2017-11-03 | 2018-11-02 | 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體 |
TW109125816A TWI762982B (zh) | 2017-11-03 | 2018-11-02 | 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111114174A TWI806550B (zh) | 2017-11-03 | 2018-11-02 | 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109125816A TWI762982B (zh) | 2017-11-03 | 2018-11-02 | 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11755382B2 (zh) |
EP (1) | EP3704572A1 (zh) |
JP (1) | JP2021501949A (zh) |
CN (1) | CN111566616B (zh) |
TW (3) | TWI806550B (zh) |
WO (1) | WO2019089918A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11144286B2 (en) | 2019-01-14 | 2021-10-12 | Microsoft Technology Licensing, Llc | Generating synchronous digital circuits from source code constructs that map to circuit implementations |
US11093682B2 (en) | 2019-01-14 | 2021-08-17 | Microsoft Technology Licensing, Llc | Language and compiler that generate synchronous digital circuits that maintain thread execution order |
US11106437B2 (en) * | 2019-01-14 | 2021-08-31 | Microsoft Technology Licensing, Llc | Lookup table optimization for programming languages that target synchronous digital circuits |
US11275568B2 (en) | 2019-01-14 | 2022-03-15 | Microsoft Technology Licensing, Llc | Generating a synchronous digital circuit from a source code construct defining a function call |
US11113176B2 (en) | 2019-01-14 | 2021-09-07 | Microsoft Technology Licensing, Llc | Generating a debugging network for a synchronous digital circuit during compilation of program source code |
US10810343B2 (en) | 2019-01-14 | 2020-10-20 | Microsoft Technology Licensing, Llc | Mapping software constructs to synchronous digital circuits that do not deadlock |
KR20230095507A (ko) * | 2021-12-22 | 2023-06-29 | 삼성전자주식회사 | 신경망 연산의 스케줄링 방법 및 장치 |
CN114398011B (zh) * | 2022-01-17 | 2023-09-22 | 安谋科技(中国)有限公司 | 数据存储方法、设备和介质 |
CN114610288B (zh) * | 2022-05-12 | 2022-09-16 | 之江实验室 | 基于阵列式解析基元结构的后端编译器实现方法及装置 |
CN117724764A (zh) * | 2022-09-09 | 2024-03-19 | 达发科技(苏州)有限公司 | 网络处理单元的算法分析方法及装置和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110067018A1 (en) * | 2009-09-15 | 2011-03-17 | International Business Machines Corporation | Compiler program, compilation method, and computer system |
US20130198494A1 (en) * | 2012-01-30 | 2013-08-01 | Vinod Grover | Method for compiling a parallel thread execution program for general execution |
TW201423402A (zh) * | 2012-12-12 | 2014-06-16 | Paneve Llc | 通用目的數位資料處理器、系統及方法 |
US20170255468A1 (en) * | 2016-02-01 | 2017-09-07 | Sas Institute Inc. | Compilation for node device gpu-based parallel processing |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3039953B2 (ja) * | 1989-04-28 | 2000-05-08 | 株式会社日立製作所 | 並列化装置 |
IL100989A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Analysis of inductive expressions in multilingual mehadoptimization |
US7702499B1 (en) * | 2000-05-02 | 2010-04-20 | Cadence Design Systems, Inc. | Systems and methods for performing software performance estimations |
US8001266B1 (en) | 2003-03-31 | 2011-08-16 | Stretch, Inc. | Configuring a multi-processor system |
JP4042972B2 (ja) | 2003-09-30 | 2008-02-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 最適化コンパイラ、コンパイラプログラム、及び記録媒体 |
US7721069B2 (en) * | 2004-07-13 | 2010-05-18 | 3Plus1 Technology, Inc | Low power, high performance, heterogeneous, scalable processor architecture |
US8190381B2 (en) * | 2005-01-27 | 2012-05-29 | Electro Industries/Gauge Tech | Intelligent electronic device with enhanced power quality monitoring and communications capabilities |
US7509632B2 (en) * | 2005-03-24 | 2009-03-24 | International Business Machines Corporation | Method and apparatus for analyzing call history data derived from execution of a computer program |
EP1783604A3 (en) | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
CN101479704B (zh) * | 2006-03-27 | 2013-09-04 | 相干逻辑公司 | 为多处理器***设计程序 |
US8375368B2 (en) * | 2006-06-20 | 2013-02-12 | Google Inc. | Systems and methods for profiling an application running on a parallel-processing computer system |
US8359586B1 (en) * | 2007-08-20 | 2013-01-22 | The Mathworks, Inc. | Code generation |
US8578381B2 (en) * | 2007-10-26 | 2013-11-05 | Oracle America, Inc. | Apparatus, system and method for rapid resource scheduling in a compute farm |
EP2257874A4 (en) * | 2008-03-27 | 2013-07-17 | Rocketick Technologies Ltd | DESIGN SIMULATION ON THE BASIS OF PARALLEL PROCESSORS |
KR101275698B1 (ko) * | 2008-11-28 | 2013-06-17 | 상하이 신하오 (브레이브칩스) 마이크로 일렉트로닉스 코. 엘티디. | 데이터 처리 방법 및 장치 |
US8566804B1 (en) * | 2009-08-13 | 2013-10-22 | The Mathworks, Inc. | Scheduling generated code based on target characteristics |
BR112013008640A2 (pt) * | 2010-09-23 | 2016-06-21 | Apple Inc | sistemas e métodos para vetorização baseada em compilador de código não foliar |
US8904398B2 (en) | 2011-03-31 | 2014-12-02 | International Business Machines Corporation | Hierarchical task mapping |
US9335977B2 (en) * | 2011-07-28 | 2016-05-10 | National Instruments Corporation | Optimization of a data flow program based on access pattern information |
US9009686B2 (en) * | 2011-11-07 | 2015-04-14 | Nvidia Corporation | Algorithm for 64-bit address mode optimization |
US8495535B2 (en) * | 2011-11-28 | 2013-07-23 | International Business Machines Corporation | Partitioning and scheduling uniform operator logic trees for hardware accelerators |
US9135143B2 (en) * | 2012-10-08 | 2015-09-15 | National Instruments Corporation | Automated analysis of compilation processes in a graphical specification and constraint language |
US9286039B2 (en) * | 2013-03-14 | 2016-03-15 | Microsoft Technology Licensing, Llc | Operating system support for contracts |
WO2014190263A2 (en) * | 2013-05-24 | 2014-11-27 | Coherent Logix, Incorporated | Memory-network processor with programmable optimizations |
US10326448B2 (en) * | 2013-11-15 | 2019-06-18 | Scientific Concepts International Corporation | Code partitioning for the array of devices |
US9817931B1 (en) * | 2013-12-05 | 2017-11-14 | The Mathworks, Inc. | Systems and methods for generating optimized hardware descriptions for models |
JP6217386B2 (ja) | 2013-12-25 | 2017-10-25 | 富士通株式会社 | マルチプロセッサ用プログラム生成方法 |
US9274771B1 (en) | 2014-09-22 | 2016-03-01 | Oracle International Corporation | Automated adaptive compiler optimization |
US9864583B2 (en) * | 2014-11-14 | 2018-01-09 | Cavium, Inc. | Algorithm to derive logic expression to select execution blocks for programmable network devices |
US10002455B2 (en) * | 2015-04-20 | 2018-06-19 | Intel Corporation | Optimized depth buffer cache apparatus and method |
GB2541353A (en) * | 2015-05-07 | 2017-02-22 | Aria Networks Ltd | Multi-layer network topology optimization |
US9507891B1 (en) * | 2015-05-29 | 2016-11-29 | International Business Machines Corporation | Automating a microarchitecture design exploration environment |
US10175992B2 (en) * | 2016-10-01 | 2019-01-08 | Intel Corporation | Systems and methods for enhancing BIOS performance by alleviating code-size limitations |
WO2018078451A1 (en) * | 2016-10-25 | 2018-05-03 | Reconfigure.Io Limited | Synthesis path for transforming concurrent programs into hardware deployable on fpga-based cloud infrastructures |
-
2018
- 2018-11-01 EP EP18804827.6A patent/EP3704572A1/en active Pending
- 2018-11-01 US US16/177,680 patent/US11755382B2/en active Active
- 2018-11-01 JP JP2020524794A patent/JP2021501949A/ja active Pending
- 2018-11-01 CN CN201880084639.9A patent/CN111566616B/zh active Active
- 2018-11-01 WO PCT/US2018/058700 patent/WO2019089918A1/en active Search and Examination
- 2018-11-02 TW TW111114174A patent/TWI806550B/zh active
- 2018-11-02 TW TW107139064A patent/TWI703451B/zh active
- 2018-11-02 TW TW109125816A patent/TWI762982B/zh active
-
2023
- 2023-04-20 US US18/136,976 patent/US20230359509A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110067018A1 (en) * | 2009-09-15 | 2011-03-17 | International Business Machines Corporation | Compiler program, compilation method, and computer system |
US20130198494A1 (en) * | 2012-01-30 | 2013-08-01 | Vinod Grover | Method for compiling a parallel thread execution program for general execution |
TW201423402A (zh) * | 2012-12-12 | 2014-06-16 | Paneve Llc | 通用目的數位資料處理器、系統及方法 |
US20170255468A1 (en) * | 2016-02-01 | 2017-09-07 | Sas Institute Inc. | Compilation for node device gpu-based parallel processing |
Also Published As
Publication number | Publication date |
---|---|
EP3704572A1 (en) | 2020-09-09 |
CN111566616B (zh) | 2023-12-12 |
JP2021501949A (ja) | 2021-01-21 |
TWI806550B (zh) | 2023-06-21 |
TW202042080A (zh) | 2020-11-16 |
TW201923613A (zh) | 2019-06-16 |
TW202305590A (zh) | 2023-02-01 |
US11755382B2 (en) | 2023-09-12 |
TWI762982B (zh) | 2022-05-01 |
WO2019089918A1 (en) | 2019-05-09 |
US20230359509A1 (en) | 2023-11-09 |
CN111566616A (zh) | 2020-08-21 |
US20190138365A1 (en) | 2019-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI703451B (zh) | 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體 | |
US9898292B2 (en) | Hardware instruction generation unit for specialized processors | |
EP2710467B1 (en) | Automatic kernel migration for heterogeneous cores | |
US11782729B2 (en) | Runtime patching of configuration files | |
KR20220042424A (ko) | 재구성가능 아키텍처들을 위한 컴파일러 플로우 로직 | |
EP2601577A2 (en) | A method and apparatus for a compiler and related components for stream-based computations for a general-purpose, multiple-core system | |
US20220147328A1 (en) | Compile time logic for inserting a buffer between a producer operation unit and a consumer operation unit in a dataflow graph | |
Xu et al. | HECTOR: A multi-level intermediate representation for hardware synthesis methodologies | |
TW202230129A (zh) | 用於檢測串流相容和廣播相容的資料存取型樣之編譯時邏輯 | |
Podobas | Accelerating parallel computations with openmp-driven system-on-chip generation for fpgas | |
US20240069770A1 (en) | Multiple contexts for a memory unit in a reconfigurable data processor | |
US20230325312A1 (en) | Merging Buffer Access Operations in a Coarse-grained Reconfigurable Computing System | |
US12045591B2 (en) | Skip buffer splitting | |
US20230385043A1 (en) | Skip Buffer Splitting | |
US20230205501A1 (en) | Compiler-based input synchronization for processor with variant stage latencies | |
US20230325346A1 (en) | Buffer Splitting | |
US20230315411A1 (en) | Operation Fusion in Nested Meta-pipeline Loops | |
US20230305823A1 (en) | Merging Skip-Buffers | |
US20240054099A1 (en) | Cluster-Based Placement and Routing of Memory Units and Compute Units in a Reconfigurable Computing Grid | |
US20230259477A1 (en) | Dynamically-Sized Data Structures on Data Flow Architectures | |
US20240037063A1 (en) | Routing Method Based On A Sorted Operation Unit Graph For An Iterative Placement And Routing On A Reconfigurable Processor | |
KHALILI MAYBODI | A Data-Flow Threads Co-processor for MPSoC FPGA Clusters |