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