為多處理器系統設計程序的制作方法
【專利摘要】一種為包括多個散布的處理器和存儲器的多處理器系統產生程序的計算機實現的方法。用戶可利用程序設計語言指定或產生源代碼。源代碼指定多個任務和在多個任務之間的數據通信。但是,源代碼可不(并且優選地不需要)1)明確指定哪個物理處理器執行各任務和2)在多個任務當中明確指定使用哪個通信機制。于是該方法能夠基于源代碼產生機器語言指令,其中機器語言指令設計用于在多個處理器上執行。機器語言指令的產生包括將用于執行的任務分配給相應的處理器和基于相應處理器的位置和必要的數據通信選擇處理器之間的通信機制,以滿足系統要求。
【專利說明】為多處理器系統設計程序
[0001]本申請是于2007年3月27日提交的、于2008年11月7日進入中國國家階段的、PCT申請號為PCT/US2007/065268、國家申請號為200780019634.X、發明名稱為“為多處理器系統設計程序”的申請之分案申請。
【技術領域】
[0002]本發明涉及一種用于為具有多處理器的計算系統設計程序的方法論和工具。
【背景技術】
[0003]由于高時鐘頻率處功率系數下降,所以通過增加時鐘速度來增強處理器性能的傳統手段將達到極限。采用多處理器的計算系統作為計算中性能定標問題(performancescaling problem)的解決方案已出現。多處理器系統的出現要求常規程序設計范例從單線程串行程序設計和順序執行到并行程序設計和并行執行的根本變化。
[0004]從程序設計的觀點,從單處理器到多處理器的硬件結構的改變要求重新考慮算法開發和使用存儲器與通信的特定最佳方式。新的問題同樣存在于對許多同時運轉的進程的全然復雜性進行管理中。在多芯芯片上實現多處理器系統的能力急劇地改變處理、存儲器存儲、和通信之間的平衡。
[0005]例如,在傳統的單處理器系統中,存儲器傾向于大、統一、和分層。在速度和功率方面存儲器訪問迅速而通信相對地費用高,因此當多個常規單處理器系統連接到一起以形成多處理器系統時策略是使通信最少。在基于高度集成和連接大多芯處理器芯片的多處理器系統中,通信的費用相對地便宜。為處理器向與其它處理器或存儲器的有效的通信提供豐富的通信通道,因此,這樣的系統中的存儲器傾向于是較小的、分布的、并且不太分層的。結果,現代多處理器系統不同的存儲器結構和復雜的通信機構提出有意義的程序設計生產率挑戰。
[0006]因此,需要改善的工具和改善的方法學以改善并行程序設計的生產率。
【發明內容】
[0007]發明的實施方式可在多處理器系統中使用,即在包括多處理器、存儲器(統一的和/或分布的)、和通信網絡資源的并行計算平臺中使用。一個示例性多處理器系統包括稱為HyperX結構的系統。總之,HyperX結構的中心核心構件塊是可升級的基于單元體的硬件架構、HyperSlice。整個硬件結構通過復制該核心單元體以產生多芯并行處理系統而形成。各個HyperSlice包含DMR (數據存儲器和路由器)和處理元件(PE)。DMR提供數據存儲器、控制邏輯、寄存器、和用于到處理資源的快速路由選擇服務的路由器。DMR結構允許不同可互換的PE在多處理器架構中使用,以優化用于特定應用的系統。HyperX多處理器系統可包括異類或同類陣列的PE。
[0008]開發用于這樣多種可能的PE組合的并行編譯器是令人不敢問津的花費高的任務。本發明的實施方式通過以下方式避開該問題:產生多個自動步驟以有效地將并行程序分解成用于系統中的每個處理器的多個常規串行程序,以便能夠使用為單處理器系統編寫的常規編譯器。
[0009]本發明的實施方式在不需要并行程序設計中的專門知識或對機器結構的詳細知識的情況下允許有效的程序開發。程序編寫成結構上獨立于實際處理器核心或使用的其它資源。產生的目標碼能夠容易地重新將系統中的任何處理器核心作為目標。自動地執行通信、到處理器的任務分配、和對程序變量的存儲器分配,以滿足諸如等待時間、通過量(throughput)、功率、和資源限制的系統級設計約束條件。通信通過程序中以符號形式表示的信息傳遞或共享存儲器實現,并且不要求需要理解通信架構的硬件結構。產生通信合成過程以無死鎖地將符號通信表示轉換成有效的物理通信路由選擇方案。設計系統具有自上而下的持續的驗證流程。高級別處使用的測試能夠用于驗證設計流程的較低級別處的設計。
[0010]最后,本發明的實施方式提供一種機制(mechanism)來圖形地或程序地表示和模型化設計中的固有并行性,以手動地或自動地優化并行性,并且圖形地和交互地使并行性可視。
[0011]在一個實施方式中,描述一種為多處理器系統產生程序的計算機實現的方法。多處理器系統包括多個處理器,其中每個處理器耦聯至至少一個其它的處理器,并且其中在相應的處理器之間具有多個通信機構。多處理器系統可包括耦聯至處理器、例如散布在處理器中間的多個存儲器。更具體而言,多處理器系統可包括耦聯至、例如散布在處理器中間的多個通信單元,其中每個通信單元包括存儲器和路由選擇邏輯。
[0012]該方法可包括響應于用戶輸入的首先存儲源代碼,其中源代碼指定第一功能性(functionality)。例如,用戶可利用程序設計語言指定或產生源代碼。源代碼用于在多處理器上執行。源代碼指定多個任務和多個任務之間的數據通信。但是,源代碼可不(在一個實施方式中不要求)O明確地指定哪個處理器執行各任務和/或2)明確地指定在多個任務之中使用哪個通信機構。源代碼可以符號“發送”和“接收”形式指定任務之間的通信。可能的通信機構可包括在處理器中相應的處理器之間傳遞的消息和在處理器中相應的處理器之間的共享變量的使用。
[0013]然后該方法基于源代碼產生機器語言指令,其中機器語言指令設計用于在多個處理器上執行。換句話說,該方法將源代碼編譯成機器語言指令(也稱為“目標碼”)。機器語言指令的產生包括如果在源代碼中不明確指定任務分配,則分配用于在相應處理器上執行的任務。機器語言指令的產生包括如果在源代碼中不明確指定通信機構,則基于相應處理器的位置和要求的數據通信在處理器之間選擇通信機構。產生的機器語言指令存儲在存儲器上。可在多處理器系統上執行機器語言指令,以實現由原始源代碼程序指令指定的第一功能性。
[0014]機器語言指令的產生包括將局部變量分配給存儲器,其中所述存儲器靠近執行擁有該局部變量的任務的處理器。可基于數據量和相應通信單元內的資源可用性執行局部變量到存儲器的分配。
[0015]在一個實施方式中,一個或多個任務使用共享變量,并且機器語言指令的產生包括將利用公共共享變量的任務分配給共享到相同存儲器的訪問的鄰近處理器。優選地在分配不具有公共共享變量的任務之前執行利用公共共享變量的任務的分配。[0016]該方法可基于源代碼產生性能模型,其中性能模型設計用于為等待時間、通過量、和功率中的一個或多個而優化。例如,在一個實施方式中,對于一個或多個相應通信中的每個通信,該方法確定數據的數據位置以及相應通信的發送和接收塊的數據位置。然后,該方法為相應的通信產生性能模型。然后可基于性能模型選擇任務或處理器之間的通信機構。通信機構的選擇可包括通過將源代碼中的通信需求綁定至路由選擇邏輯而合成處理器之間的通信連接。可基于可用的路由選擇資源的最高利用系數執行綁定,以使掠奪性能的(performance robbing)通信擁塞和沖突最少并減少致命通信死鎖的潛在可能。
[0017]作為一個示例,源代碼指定第一消息、用于第一消息的至少一個消息發送命令、用于第一消息的至少一個消息接收命令、用于第一消息的源信息、和用于第一消息的目的信息。源信息和目的信息可以符號術語表示,其中源信息和目的信息不指定執行至少一個消息發送命令和至少一個消息接收命令的處理器的位置。機器語言指令的產生可包括將發送和/或接收消息的任務分配給特定的處理器。機器語言指令的產生還可包括決定用于消息的最佳通信機構。
[0018]在一個實施方式中,該方法為支持多路消息傳遞的所有通信通道產生通信依賴圖。然后,該方法確定利用相同通道的通信之間是否存在相關性。如果是這樣的話,該方法可自動地重新分配路由選擇通道,以便沖突通信出現在不同的物理路由上。如果重新分配不可行,則該方法可明確為通信通道調度以防止出現死鎖。
[0019]在一個實施方式中,多任務無死鎖地集束、列表、和分配給處理器以便串行執行。分配給相同處理器的任務之間的通信利用處理器內在任務之間共享的變量/存儲器執行,在無同步系統開銷的情況下導致最有效的通信形式。
[0020]在一個實施方式中,機器語言指令的產生包括將程序指令分解成用于多處理器系統中的每個處理器的多個常規串行程序。然后,該方法執行設計用于單處理器系統的常規編譯器,以編譯多個常規串行程序中的每個常規串行程序。
【專利附圖】
【附圖說明】
[0021]圖1-6示出HyperX系統的處理元件(PE)和數據存儲路由器(DMR)的網絡;圖1-6還描繪了在多處理器系統(或網絡)上執行的算法的跟蹤;圖1-6還可表示用于指定和/或觀察多處理器系統的操作的圖形用戶界面(GUI)。
[0022]圖7是包括用于對系統(應用模型和系統模型)進行限定的期望程序的源代碼的示例性圖形框圖。
[0023]圖8a示出表示ANS1-C中的系統/算法并明確利用SPMD編程模型的示例主程序。
[0024]圖8b是從王程序(圖8a)提取以驅動最優化自動化的任務列表。
[0025]圖8c是以源自主程序和提取的任務信息列表(圖8b)的3-D示出的4_D+最佳程序模型。涵蓋尺寸的最佳化包括空間的(在特定時間點使用的硬件架構資源)、時間的(在該圖[O ;16,384 ;24,576 ;25,600 ;33,792]的循環計數中表示的時間線)、和系統的約束條件。該附圖示出作為時間的函數響應于系統約束條件(例如通過量、等待時間、功率等等)在資源利用方面的最優化過程的結果。
[0026]圖8d是來自時鐘周期16,384與24,576之間的時間區域中的主程序(圖8a)的程序模型(圖8c)的硬件構架資源的空間過程紋理圖(spatial course-grain view)。應指出的是,圖7中不同的功能塊(利用灰度陰影/圖案)彩色地編碼,并且在圖Sc和8d中使用相同的彩色編碼方案,以空間地和時間地跟蹤功能的執行。
[0027]圖9是“C”軟件開發流程的概視圖。
[0028]圖10示出圖形布局工具(GLT)/圖形程序設計工具(GPT)視圖,以提供具有分配的任務和通信的目標結構的低級別視圖。各矩形表示PE或DMR,示出相應塊的內部狀態。PE與DMR之間的線表示它們之間的數據通信。該視圖提供完全交互的仿真和硬件設計/調試環境,并且能夠跟蹤性能、功率、和其它有用的量度以幫助設計/開發。
[0029]圖11示出性能捕獲仿真器和開發的程序能夠連接到第三方系統級開發工具,以提供系統級的極好的驗證。來自系統級模型的相同輸入可用于驗證設計。將設計的輸出與系統模型極好的輸出相比較。這使得能夠實現快速的開發和驗證流程。
【具體實施方式】
[0030]多處理器系統是包括多處理器、存儲器(統一的和/或分布的)、和通信(或通信網絡)資源的并行計算平臺。示例性多處理器系統包括多個處理器,其中每個處理器耦聯至至少一個其它的處理器,并且其中在相應的處理器之間具有多個通信機構。多處理器系統可包括耦聯至處理器的多個存儲器。例如,存儲器可散布在處理器中間。更具體而言,多處理器系統可包括散布在處理器中間的多個通信單元,其中每個通信單元包括存儲器和路由選擇邏輯。如在此使用的,術語“耦聯”意味著直接或間接地連接。
[0031]這樣的多處理器系統的示例是2003年6月24日提交的、專利
【發明者】T·K·恩格, J·M·比爾茲利, M·B·多爾 申請人:相干邏輯公司