專利名稱:為多處理器系統(tǒng)設(shè)計程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于為具有多處理器的計算系統(tǒng)設(shè)計程序的方 法論和工具。
背景技術(shù):
由于高時鐘頻率處功率系數(shù)下降,所以通過增加時鐘速度來增強 處理器性能的傳統(tǒng)手段將達到極限。采用多處理器的計算系統(tǒng)作為計
算中性能定標問題(performance scaling problem)的解決方案已出 現(xiàn)。多處理器系統(tǒng)的出現(xiàn)要求常規(guī)程序設(shè)計范例從單線程串行程序設(shè) 計和順序執(zhí)行到并行程序設(shè)計和并行執(zhí)行的根本變化。
從程序設(shè)計的觀點,從單處理器到多處理器的硬件結(jié)構(gòu)的改變要 求重新考慮算法開發(fā)和使用存儲器與通信的特定最佳方式。新的問題 同樣存在于對許多同時運轉(zhuǎn)的進程的全然復雜性進行管理中。在多芯 芯片上實現(xiàn)多處理器系統(tǒng)的能力急劇地改變處理、存儲器存儲、和通 信之間的平衡。
例如,在傳統(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)。
因此,需要改善的工具和改善的方法學以改善并行程序設(shè)計的生產(chǎn)率。
發(fā)明內(nèi)容
發(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)化用于特定應用的系統(tǒng)。 HyperX多處理器系統(tǒng)可包括異類或同類陣列的PE。
開發(fā)用于這樣多種可能的PE組合的并行編譯器是令人不敢問津 的花費高的任務(wù)。本發(fā)明的實施方式通過以下方式避開該問題產(chǎn)生
的多個常規(guī)串行程序,以便能夠使用為單處理器系統(tǒng)編寫的常規(guī)編譯 器。
器結(jié)構(gòu)的詳細知識的情況下允許有效的程序開發(fā)。程序編寫成結(jié)構(gòu)上 獨立于實際處理器核心或使用的其它資源。產(chǎn)生的目標碼能夠容易地 重新將系統(tǒng)中的任何處理器核心作為目標。自動地執(zhí)行通信、到處理 器的任務(wù)分配、和對程序變量的存儲器分配,以滿足諸如等待時間、 通過量(throughput)、功率、和資源限制的系統(tǒng)級i殳計約束條件。 通信通過程序中以符號形式表示的信息傳遞或共享存儲器實現(xiàn),并且 不要求需要理解通信架構(gòu)的硬件結(jié)構(gòu)。產(chǎn)生通信合成過程以無死鎖地 將符號通信表示轉(zhuǎn)換成有效的物理通信路由選擇方案。設(shè)計系統(tǒng)具有 自上而下的持續(xù)的驗證流程。高級別處使用的測試能夠用于驗證設(shè)計 流程的較低級別處的設(shè)計。
最后,本發(fā)明的實施方式提供一種才幾制(mechanism)來圖形地
9或程序地表示和模型化設(shè)計中的固有并行性,以手動地或自動地優(yōu)化 并行性,并且圖形地和交互地使并行性可視。
在一個實施方式中,描述一種為多處理器系統(tǒng)產(chǎn)生程序的計算機 實現(xiàn)的方法。多處理器系統(tǒng)包括多個處理器,其中每個處理器耦聯(lián)至 至少一個其它的處理器,并且其中在相應的處理器之間具有多個通信
機構(gòu)。多處理器系統(tǒng)可包括耦聯(lián)至處理器、例如散布在處理器中間的 多個存儲器。更具體而言,多處理器系統(tǒng)可包括耦聯(lián)至、例如散布在 處理器中間的多個通信單元,其中每個通信單元包括存儲器和路由選 擇邏輯。
該方法可包括響應于用戶輸入的首先存儲源代碼,其中源代碼指
定第一功能性(functionality)。例如,用戶可利用程序設(shè)計語言指 定或產(chǎn)生源代碼。源代碼用于在多處理器上執(zhí)行。源代碼指定多個任 務(wù)和多個任務(wù)之間的數(shù)據(jù)通信。但是,源代碼可不(在一個實施方式 中不要求)1)明確地指定哪個處理器執(zhí)行各任務(wù)和/或2)明確地指 定在多個任務(wù)之中使用哪個通信機構(gòu)。源代碼可以符號"發(fā)送,,和"接 收,,形式指定任務(wù)之間的通信??赡艿耐ㄐ艡C構(gòu)可包括在處理器中相 應的處理器之間傳遞的消息和在處理器中相應的處理器之間的共享 變量的使用。
然后該方法基于源代碼產(chǎn)生機器語言指令,其中機器語言指令設(shè) 計用于在多個處理器上執(zhí)行。換句話說,該方法將源代碼編譯成機器 語言指令(也稱為"目標碼")。機器語言指令的產(chǎn)生包括如果在源代 碼中不明確指定任務(wù)分配,則分配用于在相應處理器上執(zhí)行的任務(wù)。
機器語言指令的產(chǎn)生包括如果在源代碼中不明確指定通信機構(gòu),則基 于相應處理器的位置和要求的數(shù)據(jù)通信在處理器之間選擇通信機構(gòu)。 產(chǎn)生的機器語言指令存儲在存儲器上??稍诙嗵幚砥飨到y(tǒng)上執(zhí)行機器 語言指令,以實現(xiàn)由原始源代碼程序指令指定的第 一 功能性。
機器語言指令的產(chǎn)生包括將局部變量分配給存儲器,其中所述存 儲器靠近執(zhí)行擁有該局部變量的任務(wù)的處理器??苫跀?shù)據(jù)量和相應 通信單元內(nèi)的資源可用性執(zhí)行局部變量到存儲器的分配。
10在一個實施方式中, 一個或多個任務(wù)使用共享變量,并且機器語 言指令的產(chǎn)生包括將利用公共共享變量的任務(wù)分配給共享到相同存 儲器的通道的鄰近處理器。優(yōu)選地在分配不具有公共共享變量的任務(wù) 之前執(zhí)行利用公共共享變量的任務(wù)的分配。
該方法可基于源代碼產(chǎn)生性能模型,其中性能模型設(shè)計用于為等 待時間、通過量、和功率中的一個或多個而優(yōu)化。例如,在一個實施 方式中,對于一個或多個相應通信中的每個通信,該方法確定數(shù)據(jù)的 數(shù)據(jù)位置以及相應通信的發(fā)送和接收塊的數(shù)據(jù)位置。然后,該方法為 相應的通信產(chǎn)生性能模型。然后可基于性能模型選擇任務(wù)或處理器之 間的通信機構(gòu)。通信機構(gòu)的選擇可包括通過將源代碼中的通信需求綁 定至路由選擇邏輯而合成處理器之間的通信連接??苫诳捎玫穆酚?br>
選擇資源的最高利用系數(shù)執(zhí)行綁定,以使掠奪性能的(performance robbing)通信擁塞和沖突最少并減少致命通信死鎖的潛在可能。
作為一個示例,源代碼指定第一消息、用于第一消息的至少一個 消息發(fā)送命令、用于笫一消息的至少一個消息接收命令、用于第一消 息的源信息、和用于第一消息的目的信息。源信息和目的信息可以符 號術(shù)語表示,其中源信息和目的信息不指定執(zhí)行至少一個消息發(fā)送命 令和至少一個消息接收命令的處理器的位置。機器語言指令的產(chǎn)生可 包括將發(fā)送和/或接收消息的任務(wù)分配給特定的處理器。機器語言指令 的產(chǎn)生還可包括決定用于消息的最佳通信機構(gòu)。
在一個實施方式中,該方法為支持多路消息傳遞的所有通信通道 產(chǎn)生通信依賴圖。然后,該方法確定利用相同通道的通信之間是否存 在相關(guān)性。如果是這樣的話,該方法可自動地重新分配路由選擇通道, 以便沖突通信出現(xiàn)在不同的物理路由上。如果重新分配不可行,則該 方法可明確為通信通道調(diào)度以防止出現(xiàn)死鎖。
在一個實施方式中,多任務(wù)無死鎖地集束、列表、和分配給處理 器以便串行執(zhí)行。分配給相同處理器的任務(wù)之間的通信利用處理器內(nèi) 在任務(wù)之間共享的變量/存儲器執(zhí)行,在無同步系統(tǒng)開銷的情況下導致 最有效的通信形式。
ii在一個實施方式中,機器語言指令的產(chǎn)生包括將程序指令分解成 用于多處理器系統(tǒng)中的每個處理器的多個常規(guī)串行程序。然后,該方 法執(zhí)行設(shè)計用于單處理器系統(tǒng)的常規(guī)編譯器,以編譯多個常規(guī)串行程 序中的每個常規(guī)串行程序。
圖1-6示出HyperX系統(tǒng)的處理元件(PE)和數(shù)據(jù)存儲路由器 (DMR)的網(wǎng)絡(luò);圖l-6還描繪了在多處理器系統(tǒng)(或網(wǎng)絡(luò))上執(zhí)行 的算法的跟蹤;圖l-6還可表示用于指定和/或觀察多處理器系統(tǒng)的操 作的圖形用戶界面(GUI)。
圖7是包括用于對系統(tǒng)(應用模型和系統(tǒng)模型)進行限定的期望 程序的源代碼的示例性圖形框圖。
圖8a示出表示ANSI-C中的系統(tǒng)/算法并明確利用SPMD編程模 型的示例主程序。
圖8b是從主程序(圖8a)提取以驅(qū)動最優(yōu)化自動化的任務(wù)列表。
圖8c是以源自主程序和提取的任務(wù)信息列表(圖8b )的3-D示 出的4-D+最佳程序模型。涵蓋尺寸的最佳化包括空間的(在特定時間 點使用的硬件架構(gòu)資源)、時間的(在該圖
的循環(huán)計數(shù)中表示的時間線)、和系統(tǒng)的約束條件。該附圖示 出作為時間的函數(shù)響應于系統(tǒng)約束條件(例如通過量、等待時間、功 率等等)在資源利用方面的最優(yōu)化過程的結(jié)果。
圖8d是來自時鐘周期16,384與24,576之間的時間區(qū)域中的主程 序(圖8a)的程序模型(圖8c)的硬件構(gòu)架資源的空間過程紋理圖 (spatial course-grain view )。應指出的是,圖7中不同的功能塊(利 用灰度陰影/圖案)彩色地編碼,并且在圖8c和8d中使用相同的彩色 編碼方案,以空間地和時間地跟蹤功能的執(zhí)^f亍。
圖9是"C"軟件開發(fā)流程的概視圖。
圖10示出圖形布局工具(GLT) /圖形程序設(shè)計工具(GPT)視 圖,以提供具有分配的任務(wù)和通信的目標結(jié)構(gòu)的低級別視圖。各矩形表示PE或DMR,示出相應塊的內(nèi)部狀態(tài)。PE與DMR之間的線表 示它們之間的數(shù)據(jù)通信。該視圖提供完全交互的仿真和硬件設(shè)計/調(diào)試 環(huán)境,并且能夠跟蹤性能、功率、和其它有用的量度以幫助設(shè)計/開發(fā)。 圖11示出性能捕獲仿真器和開發(fā)的程序能夠連接到第三方系統(tǒng) 級開發(fā)工具,以提供系統(tǒng)級的極好的驗證。來自系統(tǒng)級模型的相同輸 入可用于驗證設(shè)計。將設(shè)計的輸出與系統(tǒng)模型極好的輸出相比較。這 使得能夠?qū)崿F(xiàn)快速的開發(fā)和驗證流程。
具體實施例方式
多處理器系統(tǒng)是包括多處理器、存儲器(統(tǒng)一的和/或分布的)、 和通信(或通信網(wǎng)絡(luò))資源的并行計算平臺。示例性多處理器系統(tǒng)包 括多個處理器,其中每個處理器耦聯(lián)至至少一個其它的處理器,并且 其中在相應的處理器之間具有多個通信機構(gòu)。多處理器系統(tǒng)可包括耦 聯(lián)至處理器的多個存儲器。例如,存儲器可散布在處理器中間。更具 體而言,多處理器系統(tǒng)可包括散布在處理器中間的多個通信單元,其 中每個通信單元包括存儲器和路由選擇邏輯。如在此使用的,術(shù)語"耦 聯(lián)"意味著直接或間接地連接。
這樣的多處理器系統(tǒng)的示例是2003年6月24日提交的、專利公 開號為US20040030859、發(fā)明人為Michael B. Doerr, William H. Hallidy, David A. Gibson和Craig M.的、名稱為"具有散布處理器和 通信元件的處理系統(tǒng)"的未決專利申^青No.10/602,292中披露的多芯 HyperX結(jié)構(gòu)。
總之,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ù)的路由器。通過將HyperSlice結(jié)合到一起以產(chǎn)生 硬件構(gòu)架,形成片上(on-chip)網(wǎng)絡(luò)。該片上網(wǎng)絡(luò)對處理資源獨立地并且透明地操作。其在支持功能或系統(tǒng)實現(xiàn)地任意網(wǎng)絡(luò)拓樸地
HyperSlice之間提供通過實時可編程并且可適應的通信構(gòu)架的有求必 應的帶寬??稍谲浖刂葡?即時生成(on-the-fly)"地形成并重新形 成HyperSlice協(xié)同組。動態(tài)地改變用于評估功能的硬件值的該能力允 許硬件資源的最佳應用,以減輕處理瓶頸。
DMR提供橫跨芯片的和從芯片到芯片的最近鄰、區(qū)域的、和全 體的通信。DMR通過四種不同傳送模式完成以上通信;存儲器到存 儲器、存儲器到寄存器、寄存器到存儲器、和寄存器到寄存器。每個 傳送模式可物理地使用DMR資源,以不同地根據(jù)數(shù)據(jù)位置和軟件算 法必要條件發(fā)送數(shù)據(jù)/消息。提供"QuickPort (快速端口 )"設(shè)備以將 數(shù)據(jù)字從處理器快速地傳送至任何地方。對于塊傳送,DMR內(nèi)的直 接存儲器存取(DMA )引擎可用來管理橫跨存儲器和路由選擇構(gòu)架的 數(shù)據(jù)運動。對于最近鄰的通信,共享存儲器和寄存器的使用是數(shù)據(jù)傳 送最有效的方法。對于區(qū)域的和全體的數(shù)據(jù)傳送,利用路由選擇構(gòu)架 是最有效的方法。通信通道可以是動態(tài)的或者靜態(tài)的。動態(tài)路由選擇
路由選擇資源。靜態(tài)路由選擇貫穿程序執(zhí)行保持就位并且主要用于高 優(yōu)先級和危急的通信。所有的數(shù)據(jù)傳送以及通信通道的選擇都在軟件 程序的控制下。存在多路通信通道以支持任何發(fā)送器與接收器之間同 時的數(shù)據(jù)傳送。
DMR的結(jié)構(gòu)允許在多處理器構(gòu)架中使用不同的可互換的PE, 以便為特定應用優(yōu)化系統(tǒng)。HyperX多處理器系統(tǒng)可包括異類或同類 陣列的PE。 PE可以是常規(guī)處理器,或者替代地PE可不與處理器的 常規(guī)定義一致。在可編程性換位成較高性能、較小區(qū)域、和/或較低功 率的情況下,PE簡單地可以是用于某些邏輯功能的用作硬接線的處 理器的邏輯門的集合。
圖1-6:示例性多處理器系統(tǒng)
圖1中,示出HyperX系統(tǒng)的處理元件(PE )和數(shù)據(jù)存儲器路 由器(DMR)的網(wǎng)絡(luò)的視圖。PE示出為方框而DMR示出為圓圏。DMR之間的路由選擇通道示出為虛線。實心三角形示出網(wǎng)格外的通 信,而實線示出DMR之間的有效數(shù)據(jù)通信。計算任務(wù)通過其數(shù)字標 識符示出并設(shè)置在執(zhí)行它的PE上。用于通信的數(shù)據(jù)變量通過其名稱 示出并設(shè)置在包含其的DMR上。
在該部分中,我們將示出在該計算網(wǎng)格上執(zhí)行的算法的跟蹤。該 算法為例證目的有意地簡單和稀疏。
算法使采樣數(shù)據(jù)到網(wǎng)格上、處理該數(shù)據(jù)、然后將結(jié)果發(fā)送離開網(wǎng) 格。然后,算法重復地在開始處開始,并且使使下一組采樣數(shù)據(jù)到網(wǎng) 格上。
在圖2中,任務(wù)62從網(wǎng)格外的源讀取數(shù)據(jù),并將該數(shù)據(jù)存儲在 變量"t"和"u"中。同時,任務(wù)62結(jié)合變量"t"和"u"并將結(jié)果寫入變量 "w"中。同時,任務(wù)71從網(wǎng)格外帶來數(shù)據(jù)并將其存儲在變量"x,,中。
在稍后的某時(圖3 ),任務(wù)62完成讀取變量"t"和"u"并開始 將變量"w"傳遞至其將被進一步處理的任務(wù)12。任務(wù)12必須等待, 直到變量"w"和變量"x"可用才開始其下一計算任務(wù)。
一旦數(shù)據(jù)就緒,任務(wù)12就由其輸入"x,,和"y,,計算變量"sv,,(圖 4) 。 "sv"是共享變量。
在圖5中,由任務(wù)5作用于共享變量"sv",以產(chǎn)生變量"z"。由 于"sv,,是共享的,所以在任務(wù)12與5之間無明確的通信,但在任務(wù)之 間存在同步。同時,任務(wù)62和71開始從網(wǎng)格外讀取下次數(shù)據(jù)抽樣(如 圖2)。
在圖6中,任務(wù)5在任務(wù)62和71繼續(xù)讀取下次數(shù)據(jù)抽樣的同時 將最終結(jié)果(變量"z")發(fā)送出網(wǎng)格。
圖l-6還可表示用于指定系統(tǒng)的"程序"或期望的操作的圖形用戶 界面(GUI)。因此,圖1-6可包括在指定期望的功能性中由用戶使 用的顯示器上表示的屏幕截圖。圖l-6還可在執(zhí)行期間顯示,以在執(zhí) 行操作時可見地向用戶指示操作。因此,圖1-6可用作觀察/調(diào)試/優(yōu) 化工具。
盡管在以上示例中未示出,但該圖形方法還示出其它詳細的網(wǎng)格
15活動。例如
1. 通過改變其顏色示出每個PE的狀態(tài)。PE狀態(tài)包括未啟動、 運轉(zhuǎn)、停頓、和等待。
2. 可引導某些PE以串行地運行多于一個的任務(wù)。通過改變?nèi)蝿?wù) 標識符的顏色、使其更顯眼、或使其區(qū)別于分配給該PE的其它任務(wù) 的其它手段示出正在執(zhí)行哪個任務(wù)。
3. 示出同步性態(tài)。例如,如果任務(wù)等待與兩個其它任務(wù)同步,則 顯示其在等待哪個任務(wù)。
4. 示出停頓性態(tài)。例如,任務(wù)可停頓,因為其等待某些其它任務(wù) 以放棄公共資源的所有權(quán)。圖形地顯示停頓關(guān)系。
5. 示出同步變量的狀態(tài),例如互斥、條件變量、和信號。還示出 哪個PE與同步變量相關(guān)。
6. 利用用于各種嚴重性水平的不同顏色示出路由選擇資源沖突。 產(chǎn)生和編譯用于多處理器系統(tǒng)的源代碼
該方法可首先包括產(chǎn)生指定對期望執(zhí)行的程序進行指定的源代 碼。如下所述,可以任何不同的程序設(shè)計語言產(chǎn)生源代碼,包括文本 語言(例如C或C++)和圖形程序設(shè)計語言(例如Simulink和 LabVIEW)。源存儲在存儲介質(zhì)上。源代碼包括/指定多個任務(wù)和多 個任務(wù)之間的通信。
在本發(fā)明的一個實施方式中,ANSI C/C十+用作程序設(shè)計語言。 將C程序編寫成在它們之間具有通信的計算任務(wù)的集合,如圖8a和 8b所示的。圖8a示出表示ANSI-C中的系統(tǒng)/算法并使用MPI API 的示例性主程序。圖8b是從主程序(圖8a)提取以驅(qū)動優(yōu)化自動化 的任務(wù)列表和連通性信息。
圖8c示出以源自主程序和提取的任務(wù)信息列表(圖8b)的3-D 示出的4-D+最佳程序模型。涵蓋尺寸的最優(yōu)化包括空間的(在特定時 間點4吏用的硬件結(jié)構(gòu)資源)、時間的(在該圖[0; 16,384; 24,576; 25,600; 33,792的循環(huán)計數(shù)中表示的時間線)、和系統(tǒng)的約束條件。圖8d示 出圖8c的表示響應于系統(tǒng)約束條件(例如通過量、等待時間、功率等等)在資源利用方面的最優(yōu)化過過程的結(jié)果的時間片。
在單程序包含用于所有處理器的指令的情況下,"c,,程序可編寫
成類似于常規(guī)的SPMD (單程序多數(shù)據(jù))程序。不同于將程序編譯成 用于所有處理器的單目標代碼程序的常規(guī)SPMD編輯習慣,本發(fā)明的
保存存儲器。替代地,程序不必是SPMD而是可實現(xiàn)為以下的混合
1. 每處理器的獨特的源代碼。
2. 兩個或更多的處理器之間的共享源代碼。在該情況下, 一組處 理器可都執(zhí)行相同的功能,并且不需要復制代碼。
在另一實施方式中,例如來自MATHWORKS的Simulink工具 或來自NATIONAL INSTRUMENTS的Lab VIEW的圖形輸入機構(gòu) (圖形程序設(shè)計系統(tǒng))用于產(chǎn)生源代碼。圖形程序設(shè)計語言可更容易 地模仿并行性。Simulink和LabVIEW具有許多優(yōu)點。它們分別是用 于算法開發(fā)的交互圖形環(huán)境。例如,Simulink系統(tǒng)提供完全的圖形輸 入系統(tǒng)以及驗證環(huán)境。由于Simulink建立在來自MATHWORKS的 另 一產(chǎn)品的Matlab頂部,所以用戶能夠自由地將Matlab和Simulink 混合用于設(shè)計和驗證、然后設(shè)計到用于實現(xiàn)的純Simulink的過渡。來 自National Instruments的Lab VIEW和MathScript可以類似的方式 一起4吏用。術(shù)語"Simulink" 、 "Matlab"和"MATHWORKS"是 MATHWORKS的商標。術(shù)語"LabVIEW"、 "MathScript,,和"National Instmments"商標是National Instruments的商標。
圖7示出利用Simulink軟件產(chǎn)生的示例性圖形框圖。圖7的框 圖指定希望執(zhí)行的系統(tǒng)或應用的模型。圖7的框圖主要包括用于期望 的程序的源代碼。
在Simulink中,設(shè)計標識為許多連接的功能塊。這些塊假定獨 立地起作用并通過在塊之間傳遞變量通信。變量可以是固定或浮點數(shù) 據(jù)的標量、矢量、或矩陣。在塊級別,計算模型是眾所周知的"同步 數(shù)據(jù)流"模型。在該模型中,每個塊只在收到其所有的必要輸入之后 才產(chǎn)生其輸出。另外,到設(shè)計的外部輸入中的每個外部輸入以固定速
17率出現(xiàn),但允許具有不同速率的輸入。因此,Simulink固有地表示塊 級別的并行性。塊可分層地限定或者它們可以是具有相關(guān)功能的本 原。本原的功能性可簡單如逆變器或者復雜如FFT(快速傅里葉變 換)。
塊內(nèi)的并行性通過塊的實現(xiàn)操縱。為了指定塊級別并行性,我們 采用與并行¥81 1^++中限定的"映射"思想類似的方法。各功能塊具有 指定塊的計算和變量如何分配橫跨處理器陣列上的一個或多個處理
器的相關(guān)"映射"。例如,映射限定要使用的一組處理器和各i/o標量
/矢量/矩陣的數(shù)據(jù)如何在處理器中間分配。
"映射,,的簡單示例是矩陣乘法算子。假定在100x100的元件矩陣 上操作。"映射,,可指定塊使用1、 10、或100個處理器,通過這種方 式可產(chǎn)生實現(xiàn)并計算性能。
基于并行性的級別、數(shù)據(jù)分配方案、不同的物理實現(xiàn)、或不同的 算法實現(xiàn);性能、區(qū)域、和功率之間表示的不同折衷使構(gòu)件塊的庫參 數(shù)化。每個塊實現(xiàn)在優(yōu)化過程中具有相關(guān)的模型使用。在設(shè)計優(yōu)化期 間,設(shè)計系統(tǒng)從庫選擇最佳的塊實現(xiàn)并選擇塊之間最佳的通信方式以 滿足系統(tǒng)要求。構(gòu)件塊的不同變體也可基于優(yōu)化過程的結(jié)果和必要條 件即時生成地和有求必應地產(chǎn)生。
在另 一 實施方式中,利用匯編語言以最低的機器級別表達和模仿 并4亍性。
圖9示出整個編譯過程。術(shù)語"編譯過程"可用于指圖9所示的大 部分或所有的過程,包括C編譯、匯編和任務(wù)連接步驟、以及布局布 線步驟和連接/仿真步驟。
如所示,程序或源代碼(在圖9中稱作"C程序")可如上所述地 由用戶產(chǎn)生。如上所述,源代碼可以任何不同的程序設(shè)計語言產(chǎn)生, 包括文本語言和圖形語言。如在此所述的,任務(wù)之間的通信可以符號 形式、例如"發(fā)送"和"接收"的符號形式在程序中指定。術(shù)語"符號形 式"意味著引導通信的程序中的相應語句不與任何特定的硬件相關(guān), 例如獨立于硬件、路徑等等。在產(chǎn)生程序之后,可執(zhí)行c編譯、匯編和任務(wù)連接步驟。可利
用標準的現(xiàn)行軟件執(zhí)行c編譯、匯編和任務(wù)連接步驟。c編譯、匯編
和任務(wù)連接步驟可操作以產(chǎn)生機器語言指令。
然后執(zhí)行如圖9所示的布局和布線步驟。這可包括將任務(wù)分配給 處理器、分配存儲器、和在處理器之間產(chǎn)生通信連接。布局和布線步 驟可手動地、自動地、或兩者結(jié)合地執(zhí)行。關(guān)于這一點,術(shù)語"自動 地"是指在無指定布局(將任務(wù)分配給處理器和將變量分配給存儲器) 和布線(為通信分配路由選擇資源)的直接用戶輸入的情況下執(zhí)行布 局和布線。如何對設(shè)計進行布局和布線的選擇是取決于許多因素的優(yōu) 化練習等待時間和通過量必要條件、功率要求、設(shè)計尺寸、數(shù)據(jù)量、 和陣列大小。
基于特定DMR內(nèi)的數(shù)據(jù)量和資源可用性,將局部變量分配給緊 鄰的DMR——所述DMR圍繞執(zhí)行擁有該局部變量的任務(wù)的PE。利 用共享變量通信的任務(wù)被集束并分配給共享到相同存儲位置的通道 的鄰近的PE。局部變量和共享變量因為接近消耗它們的PE,所以具
有低的通信開銷。共享變量和強制變量的任務(wù)在將任務(wù)設(shè)置到PE中 的過程中具有最高的優(yōu)先級。強制變量的示例包括來自片外的通過用 戶為高優(yōu)先級放置供應的約束必須放置在IO框架和其它變量附近的 數(shù)據(jù)。然后基于使PE之間的通信距離最小來分配其它任務(wù)。短的通 信距離減少等待時間、改善性能、和減小功率消耗。沿通信路徑根據(jù) 發(fā)送器與接收器之間的大量躍距測量通信距離。例如,通過DMR則 向通信距離增加一個躍距。
一旦已知數(shù)據(jù)的位置、特定通信的發(fā)送處理器和接收處理器,則 系統(tǒng)產(chǎn)生用于該通信的性能模型,以優(yōu)化設(shè)計的系統(tǒng)級別性能。然后 自動地合成處理器之間的通信。為便于通信連接的自動產(chǎn)生,在程序 中以符號"發(fā)送"和"接收"形式指定通信。例如,給予所有信息傳遞或 任務(wù)獨特的符號名稱("a"、 "b"、 "c,,.,.)。這使所有的通信獨特但 不給出絕對處理器陣列位置(例如,發(fā)送數(shù)據(jù)("a",數(shù)據(jù))而不是 發(fā)送數(shù)據(jù)((1、 4),數(shù)據(jù)),其中(1、 4)是指多處理器陣列中特定的處理器位置)。然后,分配步驟可手動地或自動地將任務(wù)分配給 任何處理器陣列位置。用于不需要指定在通信連接中使用地硬件機 構(gòu)。通信合成包括最佳通信方式的自動選擇。通信可以是連續(xù)的(流 動轉(zhuǎn)移)、分批的(塊轉(zhuǎn)移)、和/或與依賴發(fā)送和接收塊的特性和要
求的計算重疊。在HyperX系統(tǒng)的情況下,在由共享存儲器、快速端 口或DMA機構(gòu)實現(xiàn)的共享存儲器、存儲器到存儲器、存儲器到寄存 器、寄存器到存儲器、和寄存器到寄存器的轉(zhuǎn)移或者這些通信方式的 組合之間作出選擇。
放置之后,引用路由選擇步驟以通過將程序中的通信必要條件綁 定至物理硬件路由選擇資源以合成PE之間的全部通信連接。路由選 擇步驟基于所有可用的路由選擇資源的最高利用系數(shù)分配路由選擇 資源,以使掠奪性能的通信擁塞和沖突最少并減少致命通信死鎖的潛 在可能。
例如,任務(wù)A期待通過通信通道B來自任務(wù)B的數(shù)據(jù)和通過通 信通道C來自任務(wù)C的數(shù)據(jù),而通道B和通道C是給予最小通信距 離標準分配給相同物理路由選擇資源的動態(tài)通道。在任務(wù)B試圖同時 在相同的物理通道上向任務(wù)A發(fā)送數(shù)據(jù)的同時,當任務(wù)A期待來自 任務(wù)C的數(shù)據(jù)時出現(xiàn)死鎖。在這種情況下,任務(wù)C不能建立通道C, 因為路由選擇硬件由停頓(等待任務(wù)A響應)并且不會將路由選擇資 源釋放給通道C的通道B使用。
即使程序邏輯上是無死鎖的,但因為有限的通信資源、通信的動 態(tài)特性和/或異步特性以及通信在編譯時間期間分解并與硬件結(jié)合起 來的事實,所以仍然可能具有通信死鎖。因此,在路由選擇過程的最 后階段使用明確的死鎖去除過程,以確保無死鎖程序。
現(xiàn)今多處理器系統(tǒng)中存在用于去除死鎖的許多技術(shù)。這些技術(shù)主 要在運行時間期間使用,以基于某些形式的暫停、查詢、和監(jiān)控機構(gòu) 分解死鎖。盡管現(xiàn)有技術(shù)可應用于本發(fā)明以破壞死鎖,但除由死鎖去 除機構(gòu)引入的潛在數(shù)據(jù)丟失以外,其收到高性能的退化和高度的硬件 系統(tǒng)開銷。本發(fā)明的一個實施方式采用低成本死鎖去除方案,以在編譯時間期間產(chǎn)生無死鎖的程序。
為了檢測潛在的死鎖,對于支持多路消息傳遞的所有通信通道形 成通信依賴圖。如果利用相同通道的通信之間不存在相關(guān)性,則不可 能有死鎖。如果存在相關(guān)性,則可重新分配路由選擇通道,以便沖突 通信出現(xiàn)在不同的物理路由上。如果重新分配不可能,如在資源強制 或性能強制情形的情況下,明確為通信通道的使用列表并且以死鎖不 出現(xiàn)的方式排序。例如,為了去除上述死鎖示例中的死鎖,在完成通
道C轉(zhuǎn)移之后修改任務(wù)A以通過快速端口向任務(wù)B發(fā)送信號。修改 任務(wù)B以在其能夠向任務(wù)A轉(zhuǎn)移數(shù)據(jù)之前等待來自任務(wù)A的信號。 增加到任務(wù)A和任務(wù)B的附加握手確保通道B和通道C在分享相同 物理路由選擇硬件的同時無死鎖。在連接階段期間在沒有程序員介入
任務(wù)B的修改。
取決于資源約束、通過量必要條件、等待時間、功率、和通信效 率可將一個或多個任務(wù)分配給一個處理器。當任務(wù)的數(shù)量超過系統(tǒng)中 處理器的數(shù)量時,需要將多任務(wù)分配給一個處理器。如果其產(chǎn)生低功 率解決方案或改善通信效率,則常常希望將多任務(wù)分配給處理器。處 理器資源由指令和數(shù)據(jù)(局部和共享)存儲容量、以及向其它處理器 上的其它任務(wù)發(fā)送數(shù)據(jù)或從其它處理器上的其它任務(wù)接收數(shù)據(jù)所需 的通信資源約束。為了將多任務(wù)分配給處理器,基于例如等待時間、 通過量、區(qū)域、和功率的規(guī)格將任務(wù)與將程序嵌合在可用處理器資源 中并優(yōu)化應用性能的目標"集束"。
當多任務(wù)分配給處理器時,動態(tài)地在運行時間期間或靜態(tài)地在編 譯時間期間確定執(zhí)行次序。在動態(tài)調(diào)度中,各處理器記住能夠執(zhí)行各 任務(wù)和然后當它們就緒時執(zhí)行它們的條件。靜態(tài)調(diào)度在編譯時間期間
產(chǎn)生執(zhí)行順序,以便預定的任務(wù)只有在其所有前提數(shù)據(jù)可用時才執(zhí) 行。調(diào)度過程使并行任務(wù)串行化,用于無死鎖地由單處理器執(zhí)行。通 過向任務(wù)圖增加由集束和調(diào)度過程引入的相關(guān)性來檢測死鎖。任務(wù)圖 中的循環(huán)對應于潛在可能的死鎖條件,通過改變集束或調(diào)度方案去除該潛在可能的死鎖條件。
分配給相同處理器的任務(wù)之間的通信利用處理器內(nèi)在任務(wù)之間 共享的變量/存儲器執(zhí)行,導致任務(wù)之間最有效的通信形式。由于任務(wù) 不能同時執(zhí)行,所以不需要這種類型的數(shù)據(jù)的同步。
存儲器分配遵循通過量、等待時間、功率、和資源約束的類似的
折衷。例如,數(shù)據(jù)的矢量可以許多不同方式布置 ,整個在一個存儲器中。 .拷貝至N個存儲器。
(通過分解數(shù)據(jù)的許多不同的方式)打斷成N片并分配給N個 存儲器。
打斷成N片并拷貝至許多存儲器,以便參與計算的各處理器能 訪問特別有用的整組數(shù)據(jù)。 *存儲在片外存儲器中。
另外,利用對數(shù)據(jù)生存期的理解產(chǎn)生數(shù)據(jù)存儲器"重新使用"的模 型。存儲重新使用意味著到塊的輸入的存儲能重新用于存儲塊的輸出 數(shù)據(jù)或臨時數(shù)據(jù)。例如,如果你計算o-a+b+c+,你可能需要用于部 分結(jié)果的2個臨時存儲器單元tmpl=c+d, tmp2=b+tmpl ,然后 o=a+tmp2。通過采用重新使用,能夠一起消除暫時存儲器并且輸出數(shù) 據(jù)可重新使用a、 b、 c、或d的存儲。這在a、 b、 c、和d是非常長 的矢量或非常大的矩陣時特別重要。因此,根據(jù)數(shù)據(jù)類型,能夠限定 算法中的操作以使得能夠重新使用。此外,如果等待時間非常需要并 且用于矩陣乘塊的輸入矩陣數(shù)據(jù)完全布置在一個存儲器中,則塊實現(xiàn) 可作的第一件事是將數(shù)據(jù)拷貝至更多的存儲器,然后從那里開始并行 計算。
關(guān)鍵字—shared識別將橫跨任務(wù)共享的變量。例如,—sharedintxyz 將整型變量xyz識別成共享變量。共享變量用作任務(wù)之間的通信形式。 訪問共享變量中任務(wù)之間的同步通過使用信號。在HyperX示例中, 信號是具有特殊硬件支持的寄存器?;コ?相互排斥)的信號是用于 對通過任務(wù)的某些資源的相互排斥的所有權(quán)進行標記的1位寄存器。
22當互斥信號(和隱含的共享資源)由任務(wù)所擁有時,其被鎖定并且共 享資源不能同時被遵守該信號的其它任務(wù)訪問。通信合成步驟自動地 確保利用信號合適地保護利用共享變量的通信。
對于處理器之間明確的模型通信,使用稱為信息傳遞接口 ( MPI) 的并行程序設(shè)計工業(yè)標準。MPI是其實現(xiàn)具體到特定平臺的API。例 如,MPI庫存在用于PC橫跨通常的局域網(wǎng)通信的系統(tǒng)。MPI標準包 含超過120個功能,但只有子集需要用于類似HyperX的單芯片多處 理器系統(tǒng)。這些功能以軟件實現(xiàn),或者因為效率可以硬件實現(xiàn)。
MPI功能的示例如下:
MPI Call作用
MPI Init初始化
MPI Finalize清理
MPI Send向另 一任務(wù)發(fā)送數(shù)據(jù)
MPI Receive從另一任務(wù)接收數(shù)據(jù)
MPI Initroute產(chǎn)生從一個處理器到另一處理器的路由
MPI Endroute去除從一個處理器到另一處理器的路由
MPI Wait等待通信完成
MPI Test測試通信是否完成
MPI Lock鎖定互斥變量
MPI Unlock解鎖互斥變量
MPI Broadcast向選定的處理器組發(fā)送數(shù)據(jù)
MPI一Barrier通過使每個任務(wù)處于等待狀態(tài)來使一組處理器同 步,直到所有參與的任務(wù)到達某一點
MPI一Reduce例如結(jié)合來自處理器組的部分結(jié)果,以增加調(diào)用 該組處理器上的"Reduce ADD"操作的N個整數(shù) (分別位于獨立的處理器上)
在這點上,所有的變量分配、共享存儲器、和內(nèi)部處理通信以流 程的形式分解和實現(xiàn)。工具流程的最終步驟是將代碼流匯編成適于由 處理器執(zhí)行的可執(zhí)行目標圖像文件。有效地,形成編譯方法學以利用常規(guī)編譯器從c產(chǎn)生用于處理器的異類或同類陣列的目標代碼,其中
該常規(guī)編譯器編寫成產(chǎn)生用于單處理器系統(tǒng)的代碼。在不重新為多處 理器系統(tǒng)編寫編譯器的情況下使用常規(guī)編譯器的能力是重要的,因為 需要構(gòu)建利用不同處理器的各種多處理器系統(tǒng)。
空間時間算法觀察器/編輯器允許算法設(shè)計者理解算法計算什 么、算法在哪里計算、和算法在什么時候計算之間的關(guān)系。
圖10示出圖形布局工具(GLT) /圖形程序設(shè)計工具(GPT)視 圖,以提供具有分配的任務(wù)和通信的目標結(jié)構(gòu)的低級別視圖。每個矩 形表示PE或DMR,以示出相應塊的內(nèi)部狀態(tài)。PE與DMR之間的 線表示它們之間的數(shù)據(jù)通信。該視圖提供完全交互的仿真和硬件設(shè)計 /調(diào)試環(huán)境,并且能夠跟蹤性能、功率、和其它有用的量度,以幫助設(shè) 計/開發(fā)。
圖11示出性能捕獲仿真器和開發(fā)的程序能夠連接到第三方系統(tǒng) 級開發(fā)工具,以提供系統(tǒng)級的極好的驗證。來自系統(tǒng)級模型的相同輸 入可用于驗證設(shè)計。將設(shè)計的輸出與系統(tǒng)模型極好的輸出相比較。這 使得能夠?qū)崿F(xiàn)快速的開發(fā)和驗證流程。
因此,在此描述的方法提供許多優(yōu)點。如上所述,在多處理器系 統(tǒng)中,處理器之間存在分別表示等待時間、通過量、和功率之間的折 衷的多種方式的通信。用戶程序不需要明確選擇使用哪個通信機構(gòu)。 相反地,基于處理器位置的知識和能夠手動地或自動地得到的數(shù)據(jù)布 局合成通信。該系統(tǒng)可產(chǎn)生優(yōu)化用于等待時間、通過量、和功率的性 能模型和選定的最佳通信機構(gòu)。
任務(wù)通過符號通信連接而連接并分配給處理器以滿足設(shè)計約束 條件。決定符號連接并且選擇最佳通信模式以滿足設(shè)計約束條件。因 此,程序員不需要擔心處理器的物理位置。消息發(fā)送和接收命令的源 和目的地以符號術(shù)語表示,以便能夠最佳地分配處理器的準確位置以 滿足設(shè)計約束條件。共享變量可用作在處理器上執(zhí)行的任務(wù)之間通信 的手段。
因此,在此描述的方法提供用于多處理器系統(tǒng)的支持在多處理器
24系統(tǒng)中使用不同處理器的以便編譯策略。在一個實施方式中,該方法 在不開發(fā)特定并行編譯器的情況下使用用于串行代碼的常規(guī)(現(xiàn)有) 編譯器。不同于多處理器系統(tǒng)中的所有處理器的指令存儲器加載相同 的目標代碼圖像的常規(guī)方法,在一個實施方式中,目標碼分開以便處 理器的指令存儲器僅加載分配給它的指令。
在一個實施方式中,在設(shè)計表示為許多連接的功能塊、例如數(shù)據(jù) 流程圖的情況下使用圖形程序設(shè)計規(guī)范。圖形數(shù)據(jù)流程圖提供表達和 指定并行性的圖形方式??苫谔幚砥骱痛鎯ζ魇褂媚P偷臄?shù)量使功 能塊參數(shù)化。參數(shù)化的塊實現(xiàn)被選定并優(yōu)化以滿足設(shè)計約束條件。因 此,優(yōu)化存儲器的使用和分配,優(yōu)化塊之間的通信,并且可調(diào)度功能 塊以由單個或多個處理器執(zhí)行。在替代的實施方式中,并且通過編寫
SPMD程序以C才莫仿并行性。
信息傳遞接口 (MPI)可用于通信。如在局域網(wǎng)上通信的常規(guī)多 處理器系統(tǒng)中使用的MPI信息傳遞相對于存儲器訪問具有高的系統(tǒng) 開銷。在優(yōu)選實施方式中使用HyperX結(jié)構(gòu)的情況下,通信系統(tǒng)開銷 因廣泛的片上通信設(shè)備而與存儲器訪問相比較相對小,因此使得能夠 實現(xiàn)每處理器具有相對小的存儲器的結(jié)構(gòu)。
空間-時間發(fā)展GUI/瀏覽器可用于使用戶能夠可視地指定程序 和/或觀察程序的運行。
權(quán)利要求
1. 一種用于為多處理器系統(tǒng)產(chǎn)生程序的計算機實現(xiàn)的方法,其中所述多處理器系統(tǒng)包括多個處理器和耦聯(lián)至所述處理器的多個存儲器,其中所述處理器中的每個處理器耦聯(lián)至至少一個其它處理器,其中在所述相應的處理器之間具有多個通信機制,所述方法包括響應于用戶輸入存儲源代碼,其中所述源代碼指定第一功能性,其中所述源代碼用于在所述多處理器系統(tǒng)上執(zhí)行,其中所述源代碼指定多個任務(wù)和所述多個任務(wù)之間的數(shù)據(jù)通信,其中所述源代碼不進一步指定在所述多個任務(wù)之中使用哪個通信機制;基于所述源代碼產(chǎn)生機器語言指令,其中所述機器語言指令設(shè)計用于在所述多個處理器上執(zhí)行,基于所述相應的處理器的位置和所需的數(shù)據(jù)通信而選擇所述處理器之間的通信機制;將所述機器語言指令存儲在所述多個存儲器中的不同存儲器中,其中所述多處理器系統(tǒng)適于使用所述選定的通信機制執(zhí)行所述機器語言指令,以實現(xiàn)所述第一功能性。
2. 如4又利要求1所述的方法,其中所述通信機制包括在所述處理器中相應的處理器之間傳遞 的消息和在所述處理器中相應的處理器之間的共享變量;其中所述選擇處理器之間的通信機制包括選擇共享變量或信息 傳遞中的一個。
3. 如權(quán)利要求l所述的方法,還包括所述方法還包括將局部變量分配給與執(zhí)行擁有所述局部變量的 任務(wù)的處理器相臨近的存儲器。
4. 如權(quán)利要求3所述的方法,其中所述將局部變量分配到存儲器是基于所述存儲器內(nèi)的數(shù)據(jù) 量和資源可用性而執(zhí)行的。
5. 如權(quán)利要求l所述的方法,其中所述多處理器系統(tǒng)包括耦聯(lián)至所述處理器的多個通信單元, 其中所述通信單元中的每個通信單元包括存儲器和路由選擇邏輯;所述方法還包括將局部變量分配給相應通信單元中的存儲器,其 中所述通信單元靠近執(zhí)行擁有所述局部變量的任務(wù)的處理器;其中基于數(shù)據(jù)量和所述通信單元內(nèi)的資源可用性執(zhí)行所述分配 局部變量。
6. 如斥又利要求1所述的方法,其中所述選擇所述處理器之間的通信機制包括為所述任務(wù)的至 少一個子集選擇共享變量;所述方法還包括將使用公共共享變量的任務(wù)分配給共享到所述 相同存儲器的通道的鄰近處理器。
7. 如權(quán)利要求l所述的方法,還包括在分配不具有公共共享變量的任務(wù)之前分配使用公共共享變量 的任務(wù)。
8. 如權(quán)利要求l所述的方法,還包括基于所述源代碼產(chǎn)生性能模型,其中所述性能模型設(shè)計用于為等 待時間、通過量和功率中的一個或多個而優(yōu)化;其中所述選擇所述任務(wù)或處理器之間的通信機制包括基于所述 性能模型選擇通信機制。
9. 如權(quán)利要求l所述的方法,還包括對于一個或多個相應通信中的每個通信,確定所述相應通信的發(fā)送和接收塊的數(shù)據(jù)位置;為所述相應的通信產(chǎn)生性能模型;其中所述選擇所述任務(wù)或處理器之間的通信機制包括基于所述 性能模型選擇通信機制。
10.如權(quán)利要求l所述的方法,其中所述源代碼以符號形式指定通信。
11.如權(quán)利要求l所述的方法,其中所述源代碼指定第 一消息、用于所述第 一消息的至少一個消 息發(fā)送命令、用于所述第一消息的至少一個消息接收命令、用于所述 第 一 消息的源信息、和用于所述第 一 消息的目的信息;其中所述源信息和所述目的信息以符號術(shù)語表示,其中所述源信 息和所述目的信息不指定執(zhí)行所述至少一個消息發(fā)送命令和所述至 少一個消息接收命令的處理器的位置;所述方法還包括將任務(wù)發(fā)送和/或接收消息分配給特定處理器。
12.如權(quán)利要求l所述的方法元,其中所述存儲器單元中的每個存儲器單元包括存儲器和路由選擇 邏輯;所述方法還包括通過將所述源代碼中的通信需求綁定至所述路 由選擇邏輯而合成處理器之間的通信連接。
13.如權(quán)利要求12所述的方法,其中基于可用路由選擇資源的最高利用而執(zhí)行所述綁定,以使掠 奪性能的通信擁塞和沖突最小化并減少致命通信死鎖的潛在可能。
14.如權(quán)利要求l所述的方法,還包括:為支持多路信息傳遞的所有通信通道產(chǎn)生通信依賴圖; 確定利用相同通道的通信之間是否存在相關(guān)性; 如果在利用相同通道的通信之間存在相關(guān)性,則自動地重新分配 路由選擇通道,使得沖突出現(xiàn)在不同的物理路由上。
15. 如權(quán)利要求14所述的方法,還包括 如果重新分配不可行,則自動地明確調(diào)度所述通信通道以防止出現(xiàn)死鎖。
16. 如^5L利要求1所述的方法,其中所述產(chǎn)生機器語言指令包括將所述源代碼分解成用于多處 理器系統(tǒng)中的每個處理器的多個常規(guī)串行程序;和執(zhí)行設(shè)計用于單處理器系統(tǒng)的常規(guī)編譯器,以編譯多個常規(guī)串行 程序中的每個常規(guī)串行程序。
17. 如權(quán)利要求l所述的方法,還包括所述多處理器系統(tǒng)利用選定的通信機制執(zhí)行所述機器語言指令, 以實現(xiàn)所述第一功能性;和顯示視覺地描繪多處理器系統(tǒng)的圖形用戶界面,其中所述圖形用 戶界面在所述執(zhí)行期間更新以視覺地指示正在執(zhí)行的操作。
18. 如權(quán)利要求17所述的方法,其中所述圖形用戶界面視覺地描繪所述多個處理器的至少一個 子集和所述多個存儲器的至少一個子集;其中所述顯示所述圖形用戶界面包括在相應處理器上顯示視覺 指示,以指示所述相應處理器的狀態(tài)。
19. 如權(quán)利要求18所述的方法,其中所述可見指示包括顏色。
20. 如權(quán)利要求18所述的方法,其中所述相應處理器的所述狀 態(tài)包括未啟動、運轉(zhuǎn)、停止、停頓和等待中的一個或多個。
21. 如權(quán)利要求18所述的方法,其中所述顯示所述圖形用戶界面包括顯示在所述多處理器系統(tǒng) 中執(zhí)行的相應任務(wù)。
22. 如權(quán)利要求21所述的方法,其中多個任務(wù)被分配為在第 一處理器上運行;其中所述多個任務(wù)中的每個任務(wù)圖標地示出在所述圖形用戶界面上;其中所述顯示圖形用戶界面包括將視覺指示顯示在指示多個任 務(wù)中哪個任務(wù)正在執(zhí)行的相應任務(wù)圖標上。
23. 如權(quán)利要求18所述的方法,其中所述顯示所述圖形用戶界面包括顯示在所述多個處理器上 執(zhí)行的任務(wù)的同步性態(tài)。
24. 如權(quán)利要求18所述的方法,其中所述顯示所述圖形用戶界面包括顯示在所述多個處理器上 執(zhí)行的任務(wù)的停頓性態(tài)。
25. 如權(quán)利要求18所述的方法,其中所述顯示所述圖形用戶界面包括顯示對所述多處理器系統(tǒng) 中的路由選擇資源沖突的嚴重性進行指示的視覺指示。
26. —種存儲介質(zhì),包括用于為多處理器系統(tǒng)產(chǎn)生程序的程序指 令,其中所述多處理器系統(tǒng)包括多個處理器,其中所述處理器中的每 個處理器耦聯(lián)至至少一個其它的處理器,其中在所述相應的處理器之間具有多個通信機制,其中所述程序指令適于被執(zhí)行以訪問來自存儲器的源代碼,其中所述源代碼指定第一功能性,其中所述源代碼用于在所述多處理器系統(tǒng)上執(zhí)行,其中所述源代碼指定多個任務(wù)和所述多個任務(wù)之間的數(shù)據(jù)通信,其中所述源代碼不明確指定哪個處理器執(zhí)行各任務(wù),其中所述源代碼進一步不指定在多個任務(wù)之中使用哪個通信機制;基于所述源代碼產(chǎn)生機器語言指令,其中所述機器語言指令設(shè)計用于在所述多個處理器上執(zhí)行,分配用于在相應處理器上執(zhí)行的任務(wù),其中所述分配包括將與所述任務(wù)相關(guān)的機器代碼存儲在連接到將執(zhí)行所述任務(wù)的相應處理器的存儲器上;基于相應處理器的位置和需要的通信數(shù)據(jù)而選擇所述處理器之 間的通信機制;其中所述機器語言指令在所述多處理器系統(tǒng)上是可執(zhí)行的,以實 現(xiàn)所述第一功能性。
全文摘要
一種為包括多個散布的處理器和存儲器的多處理器系統(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ù)分配給相應的處理器和基于相應處理器的位置和必要的數(shù)據(jù)通信選擇處理器之間的通信機制,以滿足系統(tǒng)要求。
文檔編號G06F9/46GK101479704SQ200780019634
公開日2009年7月8日 申請日期2007年3月27日 優(yōu)先權(quán)日2006年3月27日
發(fā)明者J·M·比爾茲利, M·B·多爾, T·K·恩格 申請人:相干邏輯公司