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