專利名稱:用于并行化集成電路計(jì)算機(jī)輔助設(shè)計(jì)軟件的設(shè)備與方法
技術(shù)領(lǐng)域:
通常,已公開(kāi)的原理涉及用于并行化軟件及算法的設(shè)備和方法。更具體地說(shuō),這些原理涉及用于并行化集成電路(IC),比如可編程邏輯器件(PLD)的計(jì)算機(jī)輔助設(shè)計(jì)(CAD)軟件的設(shè)備及方法。
背景技術(shù):
傳統(tǒng)上,處理器(比如Intel公司的奔騰系列,AMD公司的Athlon系列等等)通過(guò)支持不斷增加的時(shí)鐘速度而變得更快。由于處理器照此方式變得更快,在這些處理器上運(yùn)行一個(gè)特定軟件片段的耗時(shí)自動(dòng)成比例增加(因?yàn)閳?zhí)行代碼的單個(gè)指令的時(shí)間大致與處理器時(shí)鐘的速度成比例)。
然而當(dāng)今發(fā)布的新一代處理器沒(méi)有使用比兩年前顯著加快的時(shí)鐘(大約3G赫茲)。而代替的是,現(xiàn)在這些處理器芯片在其內(nèi)部包括超過(guò)一個(gè)處理器(例如,奔騰D處理器是“雙核”,意思是一個(gè)芯片中有兩個(gè)微型處理器)。這個(gè)特性使計(jì)算機(jī)能同時(shí)運(yùn)行幾個(gè)執(zhí)行線程。
在這些芯片中,任何串行的軟件(意思是一次執(zhí)行一個(gè)任務(wù))不能通過(guò)可使用附加的處理器來(lái)提高速度。為了平衡附加的處理能力,串行軟件需要被并行化,意味著為了使所有處理器保持忙碌,它不得不具有準(zhǔn)備執(zhí)行的多個(gè)任務(wù)。遺憾的是,幾乎從不能自動(dòng)進(jìn)行這個(gè)并行化,因?yàn)樗匦栊薷能浖a。修改本身也相當(dāng)錯(cuò)綜復(fù)雜,因?yàn)樵诓⑿熊浖?,許多構(gòu)成串行軟件基礎(chǔ)的假設(shè)失效。因此需要將軟件并行化,比如將CAD軟件并行化。
發(fā)明內(nèi)容
公開(kāi)的新原理涉及并行化軟件,比如CAD軟件和算法的設(shè)備和方法。本發(fā)明原理的一個(gè)方面涉及并行化CAD軟件,比如PLD CAD軟件的方法。在一個(gè)實(shí)施例中,依據(jù)本發(fā)明的一種方法包括識(shí)別一組具有獨(dú)立性的任務(wù),并分配該組任務(wù)中要并行執(zhí)行的的每個(gè)任務(wù)。該方法進(jìn)一步包括執(zhí)行該組任務(wù)中的每個(gè)任務(wù)。
本發(fā)明的另一個(gè)方面涉及一種用于并行化軟件的系統(tǒng),其中該系統(tǒng)包括一臺(tái)配置用來(lái)執(zhí)行上述并行化方法的計(jì)算機(jī)。然而,本發(fā)明原理的另一個(gè)方面關(guān)于計(jì)算機(jī)程序產(chǎn)品,其包括適于通過(guò)計(jì)算機(jī)處理來(lái)并行化軟件的計(jì)算機(jī)應(yīng)用程序。計(jì)算機(jī)應(yīng)用程序使計(jì)算機(jī)執(zhí)行上述軟件并行化方法。
附圖只說(shuō)明本發(fā)明的示例性實(shí)施例,因此不能認(rèn)為或解釋為限制其范圍。受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域的普通技術(shù)人員可以理解,所公開(kāi)的發(fā)明的原理適用于其他同樣有效的實(shí)施例。在附圖中,在多個(gè)附圖中使用的相同的數(shù)字標(biāo)記表示同樣的、類似的或等效的功能性元件或塊。
圖1示出了一種通過(guò)使用多線程在示例實(shí)施例中使用的并行化技術(shù)。
圖2說(shuō)明通過(guò)使用多處理器在示例實(shí)施例中使用的另一種并行化技術(shù)。
圖3描述PLD的通用框圖,該P(yáng)LD可通過(guò)使用本發(fā)明說(shuō)明性實(shí)施例來(lái)設(shè)計(jì)或使用。
圖4示出了PLD的平面圖,其可通過(guò)使用本發(fā)明的原理設(shè)計(jì)或?qū)崿F(xiàn)。
圖5說(shuō)明了根據(jù)本發(fā)明的說(shuō)明性實(shí)施例的PLD CAD軟件使用的各種軟件模塊。
圖6顯示并行化技術(shù)的簡(jiǎn)化框圖。
圖7描述說(shuō)明裝置平面布置圖的初始配置的實(shí)例。
圖8顯示資源移動(dòng)后的圖7的裝置平面布置圖。
圖9說(shuō)明裝置平面布置圖中移動(dòng)資源的建議。
圖10顯示根據(jù)示例性實(shí)施例的并行化技術(shù)。
圖11描述串行分析算法的實(shí)例。
圖12顯示分析算法的并行化的實(shí)例。
圖13說(shuō)明使用公開(kāi)的原理處理信息的系統(tǒng)框圖。
具體實(shí)施例方式本發(fā)明的原理設(shè)想用于并行化軟件的設(shè)備和相關(guān)方法,例如CAD算法或軟件或用于現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)的CAD軟件。公開(kāi)的原理尋求并行運(yùn)行軟件或算法,例如通過(guò)使用線程或多處理器,從而提高執(zhí)行速度。
總的來(lái)說(shuō),本發(fā)明的原理設(shè)想以并行方式運(yùn)行軟件或并行執(zhí)行算法的各種方法。圖1和2示出了可能使用的技術(shù)的兩個(gè)實(shí)例。如所期望的,受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員能夠理解可以使用的其它技術(shù)和實(shí)例。
圖1示出了一種通過(guò)使用多線程在示例性實(shí)施例中使用的并行化技術(shù)。圖1中顯示的配置包括一任務(wù)組13,調(diào)度程序或調(diào)度器10和一線程組16。任務(wù)組13組成不同的任務(wù),這些任務(wù)由CAD軟件或算法執(zhí)行或運(yùn)行。通常,任務(wù)組13可包括任何期望數(shù)量的任務(wù),比如說(shuō),N個(gè)任務(wù),而線程組16可包括任何期望或合適數(shù)量的線程,比如說(shuō),K個(gè)線程(注意K和N可相等或不等)。
調(diào)度器10從任務(wù)組13接受任務(wù),并安排它們?cè)谝慌_(tái)或多臺(tái)計(jì)算機(jī)上執(zhí)行。更明確地說(shuō),調(diào)度器10將任務(wù)組13中的任務(wù)分配到線程組16中的線程上。例如,調(diào)度器10可將任務(wù)1分配到線程1,任務(wù)2到線程2等等。到線程的分配然后將導(dǎo)致執(zhí)行相應(yīng)的分配任務(wù)。
圖2說(shuō)明了另一種通過(guò)使用多處理器在示例性實(shí)施例中使用的并行化技術(shù)。圖2中的配置包括一任務(wù)組13,調(diào)度器10和一組處理器或計(jì)算機(jī)或類似適當(dāng)?shù)脑O(shè)備,標(biāo)記為19。作為一個(gè)實(shí)例,處理器組19可以組成一臺(tái)并行計(jì)算機(jī),一臺(tái)大規(guī)模并行計(jì)算機(jī)等等,如已經(jīng)從本發(fā)明說(shuō)明書(shū)中受益的本領(lǐng)域普通技術(shù)人員理解的。
任務(wù)組13表示CAD軟件或算法設(shè)法執(zhí)行或運(yùn)行的不同任務(wù)。通常,任務(wù)組13可以包括任何期望數(shù)量的任務(wù),比如說(shuō)N個(gè)任務(wù),而處理器組19可包括任何期望或合適數(shù)量的處理器,比如說(shuō)M個(gè)線程(注意,K和M可以相等或不等)。
調(diào)度器10從任務(wù)組13中接受任務(wù),并安排由一臺(tái)或更多臺(tái)計(jì)算機(jī)執(zhí)行它們。更具體地說(shuō),調(diào)度器10將任務(wù)組13中的任務(wù)分配到組19中的處理器。例如,調(diào)度器10可以分配任務(wù)1到處理器1,任務(wù)2到處理器2等等。將任務(wù)分配給處理器將導(dǎo)致相應(yīng)分配任務(wù)的執(zhí)行。
根據(jù)需要,本發(fā)明的原理可以應(yīng)用到各種CAD軟件,算法和應(yīng)用程序中。應(yīng)用程序的一個(gè)特定領(lǐng)域構(gòu)成CAD軟件,用于設(shè)計(jì)并使用PLD(例如,使用PLD的資源實(shí)現(xiàn)用戶的設(shè)計(jì))。下面的描述提供這種PLD和軟件并行化技術(shù)的詳細(xì)資料。
圖3描述PLD的概括框圖,該P(yáng)LD可通過(guò)本發(fā)明說(shuō)明性的實(shí)施例設(shè)計(jì)或使用。人們可以使用所公開(kāi)的原理在CAD軟件中并行化軟件,該CAD軟件用于設(shè)計(jì)PLD 103或使用它的資源來(lái)實(shí)現(xiàn)期望的電路或系統(tǒng)。
PLD 103包括配置電路130、配置存儲(chǔ)器(CRAM)133、控制電路136、可編程邏輯106、可編程互連109和輸入/輸出(I/O)電路112。另外,依照需要,PLD 103可以包括測(cè)試/調(diào)試電路115、一個(gè)或更多個(gè)處理器118、一個(gè)或更多個(gè)通信電路121、一個(gè)或更多個(gè)存儲(chǔ)器124、一個(gè)或更多個(gè)控制器127、和初始化電路139。
注意附圖顯示了PLD 103的簡(jiǎn)化框圖。因此,如本領(lǐng)域普通技術(shù)人員理解的,PLD 103可以包括其它塊和電路。這種電路的實(shí)例包括時(shí)鐘生成和分發(fā)電路、冗余電路等等。此外,依照需要,PLD 103可以包括模擬電路、其它數(shù)字電路、和/或混合模式電路。
可編程邏輯106包括可配置或可編程邏輯電路塊,比如查找表(LUT)、乘積項(xiàng)邏輯、多路復(fù)用器(MUX)、邏輯門(mén)、寄存器、存儲(chǔ)器等等。可編程互連109與可編程邏輯106耦合,并在可編程邏輯106中的不同塊及PLD103內(nèi)外的其它電路之間提供可配置的互連(耦合機(jī)構(gòu))。
控制電路136控制PLD 103內(nèi)的不同操作。在控制電路136的監(jiān)督下,PLD配置電路130使用配置數(shù)據(jù)(其從外部源獲得,比如存儲(chǔ)裝置、主機(jī)等等)編制或配置PLD 103的功能。配置數(shù)據(jù)典型用于在CRAM133中存儲(chǔ)信息。CRAM 133的內(nèi)容確定PLD 103的不同塊的功能,比如可編程邏輯106和可編程互連109的功能。在PLD 103復(fù)位或通電時(shí),初始化電路139可以執(zhí)行不同的功能。
I/O電路112可以組成眾多種的I/O裝置或電路,如已經(jīng)從本發(fā)明說(shuō)明書(shū)中受益的本領(lǐng)域中普通技術(shù)人員理解的。I/O電路112可以與PLD 103的不同的部分耦合或連接,例如,可編程邏輯106和可編程互連109。I/O電路112提供機(jī)構(gòu)和電路用于PLD 103內(nèi)不同的塊以與外部電路或裝置通信。
測(cè)試/調(diào)試電路115幫助PLD 103內(nèi)不同塊和電路的測(cè)試和故障診斷,測(cè)試/調(diào)試電路115可包括各種塊或電路,這些塊或電路是已經(jīng)受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員公知的。例如,依照需要,測(cè)試/調(diào)試電路115可以包括在PLD 103加電或復(fù)位后執(zhí)行測(cè)試的電路。依照需要,測(cè)試/調(diào)試電路115還可包括編碼和奇偶電路。
PLD 103可以包括一個(gè)或更多個(gè)處理器118。處理器118可以與PLD103內(nèi)的其它塊和電路相連。處理器118可以從PLD 103內(nèi)部或外部的電路接收數(shù)據(jù)和信息,并以多種方式處理該信息,如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域技術(shù)人員可以理解的。一個(gè)或更多個(gè)處理器118可以組成數(shù)字信號(hào)處理器(DSP)。依照需要,DSP可執(zhí)行眾多種信號(hào)處理任務(wù),比如壓縮、解壓縮、音頻處理、視頻處理、濾波等等。
PLD 103可能還包括一個(gè)或更多個(gè)通信電路121。(多個(gè))通信電路121可幫助在PLD 103內(nèi)外的不同電路之間交換數(shù)據(jù)和信息,如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員理解的。
PLD 103可以進(jìn)一步包括一個(gè)或更多個(gè)存儲(chǔ)器124和一個(gè)或更多個(gè)控制器127。存儲(chǔ)器124允許在PLD 103中存儲(chǔ)不同的數(shù)據(jù)和信息(比如用戶-數(shù)據(jù)、中間結(jié)果、計(jì)算結(jié)果等等)。依照需要,存儲(chǔ)器124可為粒狀或塊狀的形式??刂破?27可連接到PLD外部的電路,并控制PLD外部的電路的操作及各種功能。例如,依照需要,控制器127可以組成存儲(chǔ)控制器,該存儲(chǔ)控制器連接于并控制外部同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)。
注意,PLD 103包括多個(gè)可編程資源塊。使用這些資源實(shí)現(xiàn)設(shè)計(jì)經(jīng)常需要在PLD 103的平面布置圖中布局那些塊(在下面描述)。圖4顯示了通過(guò)使用本發(fā)明原理設(shè)計(jì)或?qū)崿F(xiàn)的PLD的平面布置圖。
PLD 103包括布置為二維陣列的可編程邏輯106。布置為水平和垂直互連的可編程互連109,將可編程邏輯106的塊彼此相連。可以以特別的方式布局這些塊,從而實(shí)現(xiàn)用戶的設(shè)計(jì),如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員理解的。
在說(shuō)明性實(shí)施例中,PLD 103具有分層體系結(jié)構(gòu)。換句話說(shuō),可編程邏輯106的每個(gè)塊也可以依次包括更小的或更多的粒狀可編程邏輯塊或電路。例如,在一個(gè)實(shí)施例中,可編程邏輯106可以組成稱為邏輯陣列塊(LAB)的可配置的邏輯塊,并且依照需要,每個(gè)LAB可以包括邏輯元件(LE)或其它電路。
但是,受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員理解,具有變化的術(shù)語(yǔ)和拓?fù)浣Y(jié)構(gòu)的各式各樣的其它裝置都是可能的,并且屬于本發(fā)明原理的范圍。此外,雖然圖4顯示了可編程邏輯106的塊,但是可以在它們的平面布置圖中使用具有其它或附加塊(例如存儲(chǔ)器、處理器、圖3中的其它塊等等)的PLD,并利用本發(fā)明原理的優(yōu)點(diǎn),如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員理解的。
但是,不管是特別的裝置或設(shè)計(jì),可以在CAD軟件或程序中使用本發(fā)明原理,以采用PLD的資源,并實(shí)現(xiàn)期望的電路或系統(tǒng)。在PLD比如PLD103中實(shí)施用戶的設(shè)計(jì),需要多個(gè)步驟或處理,如下詳述的。
圖5說(shuō)明了根據(jù)本發(fā)明的說(shuō)明性實(shí)施例的PLD CAD軟件使用的各種軟件模塊。這些模塊包括設(shè)計(jì)項(xiàng)目模塊203、合成模塊206、布局和路由模塊209和驗(yàn)證模塊212。下面的描述提供每個(gè)模塊的操作的簡(jiǎn)化說(shuō)明。
CAD技術(shù)可以具有各種應(yīng)用,如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員理解的。依照需要,例子包括設(shè)計(jì)范圍、定時(shí)性能、電源需求、和可路由性或可布線性(routability)。
設(shè)計(jì)項(xiàng)目模塊203允許使用電路或其行為的圖形或文本描述來(lái)編輯不同的設(shè)計(jì)描述,依照需要,比如圖表、硬件描述語(yǔ)言(HDL)或波形。依照需要,用戶可以通過(guò)使用設(shè)計(jì)項(xiàng)目模塊203或通過(guò)使用各種電子設(shè)計(jì)自動(dòng)化(EDA)或CAD工具(比如工業(yè)標(biāo)準(zhǔn)電子設(shè)計(jì)自動(dòng)化工具)生成設(shè)計(jì)文件。依照需要,用戶可以以圖形格式、基于波形的格式、圖表格式、文本或二進(jìn)制格式、或作為那些格式的組合輸入設(shè)計(jì)。
合成模塊206接收設(shè)計(jì)項(xiàng)目模塊203的輸出。根據(jù)用戶提供的設(shè)計(jì),合成模塊206生成適當(dāng)?shù)倪壿嬰娐罚鋵?shí)現(xiàn)用戶提供的設(shè)計(jì)。一個(gè)或更多個(gè)PLD(未明確顯示)實(shí)現(xiàn)該合成的總體設(shè)計(jì)或系統(tǒng)。合成模塊206還可以生成任何膠合邏輯(glue logic),其允許在用戶設(shè)計(jì)中不同模塊的集成和正確操作及相接口。例如,合成模塊206提供適當(dāng)?shù)挠布?,以便一個(gè)塊的輸出可以正確地與另一個(gè)塊的輸入相接。合成模塊206可以提供適當(dāng)?shù)挠布?,以便滿足總體設(shè)計(jì)或系統(tǒng)中每個(gè)模塊的規(guī)范。
此外,合成模塊206可以包括用于最佳化或優(yōu)化該合成設(shè)計(jì)的算法和例程。通過(guò)最優(yōu)化,合成模塊206設(shè)法更有效地使用一個(gè)或更多個(gè)PLD的資源,其實(shí)現(xiàn)總體設(shè)計(jì)或系統(tǒng)。合成模塊206將其輸出提供給布局和路由模塊209。
布局和路由模塊209使用設(shè)計(jì)者的定時(shí)規(guī)范來(lái)執(zhí)行最佳邏輯映射和布局。該邏輯映射和布局確定(多個(gè))PLD內(nèi)的路由資源的使用。換句話說(shuō),通過(guò)(多個(gè))PLD使用特別的可編程互連用于設(shè)計(jì)的特定部分,布局和路由模塊209幫助優(yōu)化該總體設(shè)計(jì)或系統(tǒng)的性能。通過(guò)適當(dāng)使用PLD路由資源,布局和路由模塊209幫助滿足該總體設(shè)計(jì)或系統(tǒng)的苛刻的定時(shí)路徑。
布局和路由模塊209最優(yōu)化該苛刻的定時(shí)路徑,以一種為受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員已知的方式提供更快的定時(shí)關(guān)閉。結(jié)果,該總體設(shè)計(jì)或系統(tǒng)可以實(shí)現(xiàn)更快速的性能(即,以更高的時(shí)鐘頻率運(yùn)行或具有更高流通量)。
驗(yàn)證模塊212進(jìn)行設(shè)計(jì)的模擬和驗(yàn)證。模擬和驗(yàn)證尋求部分驗(yàn)證該設(shè)計(jì)符合用戶規(guī)定的規(guī)范。該模擬和驗(yàn)證還在給設(shè)計(jì)作原型之前用于檢測(cè)和校正任何設(shè)計(jì)問(wèn)題。因此,驗(yàn)證模塊212幫助用戶減少總體設(shè)計(jì)或系統(tǒng)進(jìn)入市場(chǎng)的時(shí)間和總成本。
依照需要,驗(yàn)證模塊212可以支持和執(zhí)行各種驗(yàn)證和模擬選項(xiàng)。這些選項(xiàng)可以包括功能驗(yàn)證、測(cè)試工作臺(tái)生成、靜態(tài)定時(shí)分析、定時(shí)模擬、硬件/軟件模擬、系統(tǒng)內(nèi)驗(yàn)證、板級(jí)定時(shí)分析、信號(hào)完整性分析和電磁兼容性(EMC)、正式連線表驗(yàn)證等等,如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員理解的。
注意,依照需要,可以執(zhí)行其它或附加驗(yàn)證技術(shù),如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員理解的。視情況和依照需要,設(shè)計(jì)的驗(yàn)證還可以在流程的其它階段執(zhí)行。
大量(大概是大多數(shù))常規(guī)的商業(yè)CAD算法的本性是串行的。換句話說(shuō),它們串行地執(zhí)行不同的任務(wù),而不是以并行方式。這并不驚奇,第一,因?yàn)槠裉幚砥鲿r(shí)鐘速度已經(jīng)定期加速,第二,因?yàn)殚_(kāi)發(fā)穩(wěn)固的并行軟件通常困難得多。
由于上面描述的趨勢(shì),現(xiàn)在更重要的是修改現(xiàn)有的算法,以平衡用戶將可用的新的并行處理能力。這是特別正確的,因?yàn)镃AD算法通常處于現(xiàn)用的最慢類型的軟件之中。整個(gè)周末的典型運(yùn)行時(shí)間是十分平常的。除非使用并行化技術(shù),否則串行算法不可能加速到足以滿足將來(lái)將它們用于解決更復(fù)雜的問(wèn)題。
通常,當(dāng)并行化串行的CAD算法時(shí),常使用兩種方法。第一種方法,丟棄串行算法,并替代使用具有更內(nèi)在并行性的算法。這個(gè)選擇有一些缺點(diǎn)。
第一,它強(qiáng)制設(shè)計(jì)者從頭開(kāi)始,丟棄現(xiàn)有代碼并開(kāi)發(fā)新的并行代碼。假發(fā)已經(jīng)投入許多人年的工作到將現(xiàn)有的算法最優(yōu)化,丟棄它們將使新算法在多年內(nèi)難以達(dá)到相同的質(zhì)量水平。該方法還限制設(shè)計(jì)者可用的算法選擇——一些串行算法更適合于某些問(wèn)題,而被迫使用并行算法可能損害軟件工具的質(zhì)量。
另外,并行算法相對(duì)難以做出確定性。當(dāng)以相同的輸入運(yùn)行多次時(shí),確定性算法給出相同的結(jié)果。然而,并行程序或算法同時(shí)執(zhí)行多組指令,并根據(jù)每個(gè)處理器分給這些組的使用權(quán),該算法每次運(yùn)行的結(jié)果可能不同。這個(gè)特征使用戶難以再現(xiàn)他們使用該算法得到的結(jié)果,以及使賣(mài)方難以調(diào)試用戶遇到的問(wèn)題。
最后,對(duì)于仍使用單個(gè)處理器運(yùn)行算法的用戶,強(qiáng)迫改為并行算法具有上述的質(zhì)量潛在損失,以及上述另一個(gè)缺點(diǎn)會(huì)造成用戶不滿。另外,對(duì)于這些用戶來(lái)說(shuō),并行算法通常引起使程序明顯變得更慢的開(kāi)銷。軟件工具賣(mài)方將因此至少在短期內(nèi)保持兩組算法,導(dǎo)致較高的維護(hù)費(fèi)用。
第二個(gè)選擇,可以在具有不同設(shè)置的每個(gè)可用處理器上運(yùn)行串行算法,并最終獲得最好的結(jié)果。這個(gè)傳統(tǒng)的方法,盡管比第一個(gè)容易實(shí)現(xiàn),但也有一些限制。
首先,它不包含加速該算法——它僅僅運(yùn)行該算法的更多個(gè)副本以改進(jìn)結(jié)果。任何需要獲得算法的最快可能運(yùn)行時(shí)間的用戶都不能從該方法獲取他們所需的結(jié)果。其次,它不能隨著更多的處理器可用而良好地伸縮,因?yàn)殡S著運(yùn)行越來(lái)越多的副本,這種多次運(yùn)行同樣的算法來(lái)獲得更好結(jié)果的能力迅速地消失。明顯地,這兩種方法都有重要的限制。然而本發(fā)明原理提供克服這些限制的技術(shù)。
更具體地說(shuō),本發(fā)明的方法利用這樣的事實(shí),眾多的串行CAD算法花費(fèi)大部分它們的執(zhí)行時(shí)間在輸入問(wèn)題的不同部分執(zhí)行一個(gè)特定的動(dòng)作或一組動(dòng)作。這個(gè)動(dòng)作重復(fù)多次(經(jīng)常是幾百萬(wàn)次),這導(dǎo)致這些算法相對(duì)長(zhǎng)的運(yùn)行時(shí)間。使這些算法串行的特性是,在知道每個(gè)先前動(dòng)作的結(jié)果的情況下(即,依靠先前的動(dòng)作)執(zhí)行每個(gè)動(dòng)作。這個(gè)特性又意味著一個(gè)動(dòng)作可以或?qū)嶋H上隨時(shí)執(zhí)行,這限制算法為串行執(zhí)行。
然而,給定的鄰近動(dòng)作組經(jīng)常影響輸入問(wèn)題的獨(dú)立部分,由此去除它們所有被串行執(zhí)行的需求。這個(gè)特性對(duì)于相對(duì)大的輸入問(wèn)題尤其有效。例如,在包括許多動(dòng)作的問(wèn)題中,包括動(dòng)作#10到#20,動(dòng)作#10到動(dòng)作#20可彼此獨(dú)立。換句話說(shuō),不需根據(jù)執(zhí)行其它(多個(gè))動(dòng)作的(多個(gè))結(jié)果執(zhí)行本動(dòng)作。
在這樣的條件下,該算法可以并行執(zhí)行所有那些11個(gè)動(dòng)作。在示例性實(shí)施例中,本發(fā)明的技術(shù)使用局部獨(dú)立性來(lái)產(chǎn)生并行執(zhí)行。例如,如果動(dòng)作#21接著依賴于兩個(gè)先前的動(dòng)作(比如說(shuō)#13和#17),那么在算法可以繼續(xù)進(jìn)行#21以前,它必須結(jié)束動(dòng)作#13和#17(否則結(jié)果將不是確定性的)。否則,該算法可以并行執(zhí)行各個(gè)動(dòng)作。這個(gè)方法使用這個(gè)局部獨(dú)立性來(lái)產(chǎn)生并行性,從而產(chǎn)生改進(jìn)的性能。
本發(fā)明的技術(shù)使用動(dòng)作隊(duì)列,其中,隊(duì)列裝載著彼此相互獨(dú)立的動(dòng)作。這個(gè)隊(duì)列是串行地裝載的,以確保全部動(dòng)作是獨(dú)立的。在本發(fā)明的一個(gè)變體中,隊(duì)列以和串行算法將執(zhí)行動(dòng)作的同樣順序被裝載。這個(gè)動(dòng)作確保算法的并行版本的結(jié)果與那些串行版本相仿或相同。
圖6顯示該技術(shù)的簡(jiǎn)化框圖。一組任務(wù)13輸入到調(diào)度器10中。如上所述,調(diào)度器10向隊(duì)列250提供任務(wù),以便提供局部獨(dú)立性。任務(wù)從隊(duì)列250輸出,并以并行方式執(zhí)行(只要存在局部獨(dú)立性)。
在本發(fā)明的另一個(gè)變體中,可以以使隊(duì)列保持的獨(dú)立動(dòng)作數(shù)目最多的方式選擇動(dòng)作。一旦裝載這個(gè)隊(duì)列,則所有可用處理器都可以以它們選擇的任何隨意的或期望的順序處理動(dòng)作,因?yàn)樵陉?duì)列中動(dòng)作的獨(dú)立性是有保證的。一旦完成隊(duì)列中所有動(dòng)作,就再次裝載該隊(duì)列,并重復(fù)該過(guò)程。
為了更詳細(xì)地闡明本技術(shù),提供一個(gè)布局的實(shí)例,以說(shuō)明它如何用于并行化布局算法。布局算法采用電路的連線表(netlist)表示和裝置的平面布置圖表示作為輸入。在Qrartus II軟件中(可以從本申請(qǐng)的受讓人Altera公司獲得),例如,連線表表示用戶的邏輯電路中的塊(例如,邏輯陣列塊或LAB;RAM塊;乘法器塊等等)。平面布置圖表示在PLD或類似器件中的可用塊。
串行布局算法可工作如下盡量快或相對(duì)快地創(chuàng)建初始的合法布局,而幾乎不考慮或不考慮質(zhì)量。結(jié)果,在平面布置圖中,連線表的每個(gè)塊都已經(jīng)被分配一個(gè)位置。第二,在連線表中隨機(jī)地取出一個(gè)塊,并試圖將它移動(dòng)到隨機(jī)位置。交換已經(jīng)在那里的任何塊與源塊。第三,評(píng)估布局的這個(gè)改變是否好或合乎需要。如果是,則提交這個(gè)改變。否則,丟棄這個(gè)改變。經(jīng)常對(duì)幾個(gè)度量進(jìn)行該評(píng)估,并且,通常,這些度量通常試圖保持彼此間連接或耦合的塊彼此靠近放置。最后,回到第二步并重復(fù),直到完成給定次數(shù)的移動(dòng)(例如,這個(gè)次數(shù)可以是連線表中塊數(shù)目的1000倍)。
以上布局算法本質(zhì)上是串行的,因?yàn)樵诘谌教峤桓淖兊臎Q定影響算法的所有將來(lái)迭代(即移動(dòng))。例如,假設(shè)采用圖7中所示的平面布置圖。假設(shè)在該平面布置圖中塊#6處于X=3且Y=4,并且算法的第一移動(dòng)試圖交換它與塊#20,塊#20處于X=30且Y=40。
另外,假設(shè)算法的第二移動(dòng)將要移動(dòng)塊#21(它正巧與塊#20連接或耦合)從X=30,Y=4到X=1,Y=1。圖8示出了如果接受第一移動(dòng)的位置和連接性是什么樣子。
如果算法的第一移動(dòng)接受該移動(dòng),那么第二移動(dòng)(它試圖移動(dòng)塊#21到(1,1))很可能被接受,因?yàn)閴K#21的新位置(1,1)將更接近于與它連接或耦合的塊(即,塊#20,其當(dāng)前位置是(3,4))。然而,如果沒(méi)有接受第一移動(dòng)(保留圖7中的情況),移動(dòng)塊#21到(1,1)就似乎不像是一個(gè)好的移動(dòng),因?yàn)槠溥B接或耦合的塊(即,塊#20)在(30,40),并且塊#21的當(dāng)前位置(即,30,4)比(1,1)離它近。
這個(gè)實(shí)例說(shuō)明了如果如上面串行算法一樣的算法并行運(yùn)行將會(huì)遇到的問(wèn)題。例如,如果同時(shí)移動(dòng)#1和#2,那么移動(dòng)#2是否被接受依賴于移動(dòng)#1是否在移動(dòng)#2被評(píng)估之前結(jié)束。
除非改變?cè)撍惴?,否則并行運(yùn)行它可以導(dǎo)致產(chǎn)生追趕最后位置的塊,而該位置是其連接或耦合塊所在,可能急劇地降低最后的布局質(zhì)量。它還將使結(jié)果不確定,因?yàn)橥ǔ2豢赡茴A(yù)計(jì)將用多長(zhǎng)時(shí)間完成給出的移動(dòng),即使是對(duì)于同一電路的不同運(yùn)行。
為應(yīng)用本發(fā)明的技術(shù)來(lái)解決這些問(wèn)題,可以設(shè)立一個(gè)獨(dú)立移動(dòng)的隊(duì)列,如上所述。當(dāng)以上實(shí)例中的第一移動(dòng)被放入隊(duì)列中時(shí),第二移動(dòng)將不再被容許進(jìn)入該隊(duì)列(因?yàn)樵撘苿?dòng)依賴于通過(guò)塊#21和塊#20之間的連接或耦合的第一移動(dòng))。該隊(duì)列裝載可以被停止,并且處理的移動(dòng)或者隊(duì)列可以在處理這些移動(dòng)之前裝入其它獨(dú)立的移動(dòng),如上所述。但不論是哪種情況,因具有多個(gè)處理器,隊(duì)列越大,加速越快。例如一個(gè)其中總是只有兩個(gè)移動(dòng)的隊(duì)列將受益于使用兩個(gè)處理器(但不是四個(gè)或更多)。
注意上述技術(shù)使用隊(duì)列的串行裝載。如果計(jì)劃移動(dòng)的時(shí)間花費(fèi)相對(duì)較小,那么串行裝載不會(huì)引起問(wèn)題。例如,在雙處理器機(jī)器上,裝載占用5%的串行運(yùn)行時(shí)間而評(píng)估占用95%的運(yùn)行時(shí)間的算法理論上可以加速1.9倍。但是如果串行部分更大,這個(gè)益處將顯著地減少。例如,如果僅僅一半算法是并行的,那么在雙處理器系統(tǒng)中的加速將限于1.33倍。
但是,通過(guò)使用相對(duì)更復(fù)雜的隊(duì)列,就可能緩和該問(wèn)題?;氐揭陨系牟季謱?shí)例,我們注意到,在移動(dòng)之間存在依賴性的兩個(gè)來(lái)源(1)不可能計(jì)劃獨(dú)立的移動(dòng);和(2)不可能獨(dú)立地評(píng)估移動(dòng)。
類似地或同等地處理這兩個(gè)實(shí)例,但是它們十分不同。例如,考慮單個(gè)塊的兩個(gè)計(jì)劃移動(dòng)。顯然,直到第一個(gè)移動(dòng)已經(jīng)被提交或被拒絕,才能計(jì)劃第二個(gè)移動(dòng),因?yàn)椴恢赖谝粋€(gè)移動(dòng)之后該塊將在哪里。
另一方面,考慮希望移動(dòng)兩個(gè)塊到更接近??梢匀菀椎赜?jì)劃同時(shí)移動(dòng)兩個(gè)塊。不能獨(dú)立地評(píng)估它們(因?yàn)?,依賴于首先移?dòng)哪一個(gè)塊,第二個(gè)移動(dòng)未必是好的或合乎需要或有利的)。注意,盡管甚至能夠在已經(jīng)評(píng)估的兩個(gè)塊移動(dòng)之前進(jìn)行和計(jì)劃其它移動(dòng)。從并行觀點(diǎn)來(lái)看,這樣做是有利的,因?yàn)樗軌蛟诒热魏畏N類的依賴導(dǎo)致停頓時(shí)的環(huán)境多得多的環(huán)境中為所有處理器持續(xù)生成工作。
以下說(shuō)明這個(gè)改進(jìn)應(yīng)用的實(shí)例。考慮在圖9中的布局,具有塊303-315的幾個(gè)計(jì)劃的移動(dòng)。使用上述原始的發(fā)明算法,可以計(jì)劃第一個(gè)移動(dòng),然后在計(jì)劃第二個(gè)移動(dòng)之后停止,因?yàn)樗鼈兣c連接或耦合塊相關(guān),由此,接受或丟棄移動(dòng)#2的決定將依賴于移動(dòng)#1的結(jié)果(換言之,移動(dòng)#1將移動(dòng)塊303,而移動(dòng)#2將移動(dòng)塊306,其中塊306與塊303耦合)。
無(wú)論如何,然后可以評(píng)估并行移動(dòng)#2和#3(移動(dòng)塊309),然后移動(dòng)#4(移動(dòng)塊312),#5(移動(dòng)塊315)和#6(移動(dòng)塊303),和最后移動(dòng)#7(移動(dòng)塊318)。注意,布置已經(jīng)停止了三次,并且在第四組移動(dòng)中,半個(gè)組是使單個(gè)塊移動(dòng)。因此,在一半時(shí)間內(nèi),雙核機(jī)器的一個(gè)處理器(作為實(shí)例)將空閑。
但是,如果相反,當(dāng)不能再計(jì)劃移動(dòng)時(shí)就停止,情況改進(jìn)了。例如,可以計(jì)劃移動(dòng)#1通過(guò)#5而不停止。注意,將在移動(dòng)#6停止,因?yàn)樗赶蜃鳛榱硪粋€(gè)移動(dòng)的結(jié)果的已經(jīng)被移動(dòng)的塊(即,塊303)。一旦已經(jīng)接受或者拒絕移動(dòng)#1,就可以恢復(fù),并進(jìn)行到計(jì)劃移動(dòng)#7。換句話說(shuō),當(dāng)已經(jīng)解決在一個(gè)或更多個(gè)較早的移動(dòng)上的一個(gè)或更多個(gè)依賴性后,可以進(jìn)行恢復(fù)。
現(xiàn)在,在任何給定時(shí)間,總是存在可以并行評(píng)估的至少兩個(gè)移動(dòng)(移動(dòng)#3與#1并行;移動(dòng)#4與#3并行;移動(dòng)#5與移動(dòng)#4和移動(dòng)#2并行;移動(dòng)#6與移動(dòng)#3并行;移動(dòng)#4,#5和#7與移動(dòng)#3,#5和#6并行)。受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員可以理解如何進(jìn)行,使用該技術(shù),將還有很大的可能性確保每次可以生成4個(gè)或8個(gè)乃至更多的移動(dòng),由此,依照需要,能夠很好地利用具有兩個(gè)以上處理器的機(jī)器。
為了實(shí)現(xiàn)該算法,本發(fā)明原理使用一個(gè)更復(fù)雜或“聰明”或改進(jìn)或增強(qiáng)的隊(duì)列。更具體地說(shuō),代替保持所有移動(dòng)按次序并允許處理器在下一個(gè)有效的移動(dòng)上工作,這種隊(duì)列記錄最后的移動(dòng),該移動(dòng)在每個(gè)移動(dòng)可以被評(píng)估之前應(yīng)該被接受或拒絕。例如,移動(dòng)#2將列出移動(dòng)#1,移動(dòng)#6將列出#2(但不是移動(dòng)#3,#4或#5)。例如,結(jié)束評(píng)估移動(dòng)#2的處理器將能開(kāi)始在移動(dòng)#6上工作,即使移動(dòng)#3,#4和#5還沒(méi)有完成。
可以在各種情況中使用本技術(shù)。例如,依照需要,可以在圖6中用這種隊(duì)列代替隊(duì)列250。或者,依照需要,可以使用其它排列,如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員理解的。
如果即使增強(qiáng)或改進(jìn)隊(duì)列允許的加速不夠充分,也可能使不同的線程選擇輸入問(wèn)題的哪些部分是它們希望并行工作的。注意,這樣做將仍保持確定性結(jié)果。使用以上的布局實(shí)例,本方法意味著我們不僅并行評(píng)估這些移動(dòng),我們還并行產(chǎn)生它們。該技術(shù)的操作如下所述,并如圖10中所示。
如上所述,在350,給每個(gè)動(dòng)作一個(gè)數(shù)字ID。然而,多個(gè)線程可以在355作出關(guān)于它們選擇檢查輸入問(wèn)題的哪個(gè)部分(例如,每個(gè)線程計(jì)劃移動(dòng)哪個(gè)塊)的決定。然而各個(gè)線程并不實(shí)際執(zhí)行該動(dòng)作。
然后該線程在360將該動(dòng)作添加到提交隊(duì)列。該隊(duì)列以任何順序接受動(dòng)作,但是將按照它們的ID號(hào)的順序發(fā)出它們。例如,如果加入動(dòng)作#1和#3,則該隊(duì)列將看來(lái)像是在其中具有一個(gè)動(dòng)作(#1),直到動(dòng)作#2也加入。
隨著從該隊(duì)列中去除動(dòng)作,在365,執(zhí)行如上所述的依賴性分析。如果發(fā)現(xiàn)一個(gè)動(dòng)作依賴于一個(gè)先前的動(dòng)作,就按如上所述處理它。然而,該動(dòng)作自身可能是無(wú)效的。例如,可以為一個(gè)塊計(jì)劃移動(dòng),該塊可能不再處于預(yù)期的位置。注意,如果伴隨此處所述的本技術(shù)版本出現(xiàn)該情況,就簡(jiǎn)單地停止生成新的動(dòng)作。假設(shè)用改進(jìn)的技術(shù),可以使多個(gè)線程并行生成動(dòng)作,那將是相對(duì)更嚴(yán)格的限制。
一旦發(fā)現(xiàn)該相對(duì)更嚴(yán)重的依賴性類型,在370,僅僅要求一個(gè)線程重新生成該動(dòng)作,優(yōu)選的是越快越好。例如,“越快越好”可能是指確定目標(biāo)塊是否已經(jīng)移動(dòng)的時(shí)候。如果它還沒(méi)有移動(dòng),就可能僅僅評(píng)估該移動(dòng);但是,如果它已經(jīng)移動(dòng),就計(jì)劃或考慮一個(gè)從頭開(kāi)始的新移動(dòng)并代替評(píng)估該移動(dòng)。
該技術(shù)的好處是因?yàn)樵撍惴](méi)有任何部分是串行的(除了依賴性檢驗(yàn)器外,其假設(shè)相對(duì)快),考慮到其固有的依賴性,預(yù)計(jì)能夠按理論上的可能加速整個(gè)程序。注意,該算法幾乎沒(méi)有引入其自己的新的依賴性。
存在除了PLD CAD應(yīng)用之外的其它方法,其對(duì)于特殊算法是特定的,這些算法可利用并行處理的能力,而不顯著影響算法設(shè)計(jì)的靈活性。一個(gè)實(shí)例是并行分析。
更具體地說(shuō),最優(yōu)化算法經(jīng)常依賴分析引擎來(lái)確定施加多少工作(及那些工作用在哪里),以實(shí)現(xiàn)不同的設(shè)計(jì)目標(biāo)。這些分析引擎經(jīng)常給當(dāng)前狀態(tài)拍快照,并返回對(duì)該狀態(tài)分析的結(jié)果。在圖11中顯示的串行算法將等待該分析,并在它完成時(shí)進(jìn)行(例如,最優(yōu)化階段403B等待分析階段406的結(jié)果,而分析階段406依次從最優(yōu)化階段403A接收其輸入)。因此,它具有以上所述的缺點(diǎn)。
為使這些算法并行,可以使附加處理器持續(xù)地進(jìn)行該狀態(tài)的快照,并執(zhí)行分析。這有一個(gè)缺點(diǎn),因?yàn)榉治鼋Y(jié)果將過(guò)時(shí),因?yàn)楫?dāng)可獲得分析結(jié)果時(shí),用于分析的狀態(tài)不是當(dāng)前的,但是,另一方面,并行性提供增加的效率并降低資源需求。圖12顯示這個(gè)過(guò)程如何工作。
在圖12顯示的技術(shù)中,可以并行執(zhí)行分析和最優(yōu)化。例如,最優(yōu)化階段或引擎403A可以與分析階段或引擎406A并行工作或當(dāng)前工作。同樣地,最優(yōu)化階段或引擎403B可以與分析階段或引擎406B并行工作或當(dāng)前工作。在該方案中,分析階段在先前的最優(yōu)化狀態(tài)上執(zhí)行。在最優(yōu)化狀態(tài)已經(jīng)潛在地改變之后,分析階段的結(jié)果反饋到最優(yōu)化階段。
注意,到每個(gè)分析步驟的輸入來(lái)自于一個(gè)與使用其輸出的狀態(tài)不同的最優(yōu)化狀態(tài)。例如,假設(shè)該最優(yōu)化步驟是布局(其中,假定,塊正在進(jìn)行數(shù)千次的移動(dòng)),并且分析步驟是定時(shí)分析,其向布局階段提供輸入,該輸入是關(guān)于哪些連接對(duì)定時(shí)是關(guān)鍵的。這種技術(shù)提供的優(yōu)點(diǎn)是分析和最優(yōu)化是并行執(zhí)行或同時(shí)執(zhí)行的,即使?jié)撛诘?但不是必然地)以不太最優(yōu)的解為代價(jià)。
本技術(shù)可能應(yīng)用的分析的例子包括定時(shí)分析(確定電路中每個(gè)路徑的定時(shí)性能)、擁塞分析(根據(jù)設(shè)計(jì)的布局,確定芯片的哪些區(qū)域可能會(huì)面臨路由擁塞)和設(shè)計(jì)分析(確定設(shè)計(jì)的什么部分更聚焦進(jìn)行最優(yōu)化是可取的或有益的(或需要的))。注意,列出的例子是說(shuō)明性的,并且可以將該技術(shù)應(yīng)用到其它應(yīng)用或情況,如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員理解的。
如上所述,可以在計(jì)算機(jī)系統(tǒng)或處理器上,運(yùn)行或執(zhí)行根據(jù)本發(fā)明的算法或軟件。圖13顯示根據(jù)本發(fā)明的用于處理信息的示例性系統(tǒng)的框圖。
系統(tǒng)1000包括計(jì)算機(jī)裝置1005、輸入裝置1010、視頻/顯示裝置1015和存儲(chǔ)/輸出裝置1020,雖然依照需要,可以包括一個(gè)以上的這些裝置。
計(jì)算機(jī)裝置1005與輸入裝置1010、視頻/顯示裝置1015和存儲(chǔ)/輸出裝置1020相連。系統(tǒng)1000可以包括多于一個(gè)的計(jì)算機(jī)裝置1005,例如,依照需要,一組關(guān)聯(lián)計(jì)算機(jī)裝置或系統(tǒng)。
系統(tǒng)1000的運(yùn)行與來(lái)自用戶的輸入相關(guān)聯(lián)。用戶輸入典型地導(dǎo)致系統(tǒng)1000執(zhí)行特定的期望的信息處理任務(wù),包括電路模擬。系統(tǒng)1000部分使用計(jì)算機(jī)裝置1005來(lái)執(zhí)行那些任務(wù)。計(jì)算機(jī)裝置1005包括信息處理電路,諸如中央處理單元(CPU),盡管可以使用一個(gè)以上或信息處理電路,如本領(lǐng)域的技術(shù)人員將會(huì)理解的。
輸入裝置1010接收來(lái)自用戶的輸入,并使那些輸入可以讓計(jì)算機(jī)裝置1005使用進(jìn)行處理。依照需要,該用戶輸入可以包括數(shù)據(jù)、指令或兩個(gè)都有。輸入裝置1010可以組成字母數(shù)字輸入裝置(例如,鍵盤(pán))、定點(diǎn)設(shè)備(例如鼠標(biāo)、滾動(dòng)球、光筆、觸敏設(shè)備,例如觸控式顯示器、或?qū)懽职?或兩者。用戶操作字母數(shù)字鍵盤(pán)來(lái)向計(jì)算機(jī)裝置1005提供文本,例如ASCII字符。同樣地,用戶操作定點(diǎn)設(shè)備提供光標(biāo)位置或控制信息到計(jì)算機(jī)裝置1005。
視頻/顯示裝置1015向用戶顯示視覺(jué)圖像。視覺(jué)圖像可以包括關(guān)于計(jì)算機(jī)裝置1005的操作的信息,例如圖表、圖片、圖像和文本。視頻/顯示裝置可以組成計(jì)算機(jī)監(jiān)視器或顯示器、投影裝置等等,如本領(lǐng)域普通技術(shù)人員可以理解的。如果系統(tǒng)使用觸控式顯示器,那么該顯示器也可以提供用戶輸入到計(jì)算機(jī)裝置1005。
存儲(chǔ)/輸出裝置1020允許計(jì)算機(jī)裝置1005保存信息用于附加處理或以后取回(例如,軟拷貝),以不同的形式(例如,硬拷貝)表現(xiàn)信息,或兩者。作為實(shí)例,存儲(chǔ)/輸出裝置1020可以組成磁、光或磁光驅(qū)動(dòng)器,它們能夠以期望的格式將信息存儲(chǔ)到期望的介質(zhì)上。作為另一個(gè)實(shí)例,存儲(chǔ)/輸出裝置1020可以組成打印機(jī)、繪圖儀或其它輸出裝置,以從計(jì)算機(jī)裝置1005生成信息的打印表示或繪圖表示。
計(jì)算機(jī)可讀介質(zhì)1025在結(jié)構(gòu)上和功能上與計(jì)算機(jī)裝置1005相互關(guān)聯(lián)。計(jì)算機(jī)可讀介質(zhì)1025存儲(chǔ)、編碼、記錄和/或具體化功能描述內(nèi)容。通過(guò)說(shuō)明,該功能描述內(nèi)容可以包括計(jì)算機(jī)程序、計(jì)算機(jī)代碼、計(jì)算機(jī)應(yīng)用程序、和/或信息結(jié)構(gòu)(例如,數(shù)據(jù)結(jié)構(gòu)或文件系統(tǒng))。當(dāng)通過(guò)計(jì)算機(jī)可讀介質(zhì)1025存儲(chǔ)、編碼、記錄和/或具體化時(shí),該功能描述內(nèi)容賦予功能性。功能描述內(nèi)容與計(jì)算機(jī)可讀介質(zhì)1025相互關(guān)聯(lián)。
功能描述內(nèi)容內(nèi)的信息結(jié)構(gòu)在信息結(jié)構(gòu)和計(jì)算機(jī)可讀介質(zhì)1025和/或系統(tǒng)1000的其它方面之間定義結(jié)構(gòu)和功能相互聯(lián)系。這些相互聯(lián)系允許信息結(jié)構(gòu)的功能的實(shí)現(xiàn)。此外,在這種功能描述內(nèi)容內(nèi),計(jì)算機(jī)程序在計(jì)算機(jī)程序和計(jì)算機(jī)可讀介質(zhì)1025及系統(tǒng)1000的其它方面之間定義結(jié)構(gòu)和功能相互聯(lián)系。這些相互聯(lián)系允許計(jì)算機(jī)程序功能的實(shí)現(xiàn)。
通過(guò)說(shuō)明,計(jì)算機(jī)裝置1005將功能描述內(nèi)容讀出、存取或復(fù)制到計(jì)算機(jī)裝置1005的計(jì)算機(jī)存儲(chǔ)器內(nèi)(附圖中未明確顯示)。計(jì)算機(jī)裝置1005執(zhí)行操作來(lái)響應(yīng)計(jì)算機(jī)存儲(chǔ)器中存在的內(nèi)容。計(jì)算機(jī)裝置1005可以執(zhí)行處理計(jì)算機(jī)應(yīng)用的操作,其中計(jì)算機(jī)應(yīng)用導(dǎo)致計(jì)算機(jī)裝置1005執(zhí)行附加的操作。因此,功能描述內(nèi)容展現(xiàn)功能相互聯(lián)系和計(jì)算機(jī)裝置1005執(zhí)行處理和操作的方式。
此外,計(jì)算機(jī)可讀介質(zhì)1025組成一臺(tái)設(shè)備,計(jì)算機(jī)裝置1005可以從這個(gè)設(shè)備訪問(wèn)計(jì)算機(jī)信息、程序、代碼和/或應(yīng)用。計(jì)算機(jī)裝置1005可以處理引起計(jì)算機(jī)裝置1005執(zhí)行附加操作的信息、程序、代碼和/或應(yīng)用。
注意,可以以各種方式實(shí)現(xiàn)計(jì)算機(jī)可讀介質(zhì)1025,如本領(lǐng)域普通技術(shù)人員可以理解。例如,依照需要,計(jì)算機(jī)裝置1005內(nèi)的存儲(chǔ)器可以組成計(jì)算機(jī)可讀介質(zhì)1025?;蛘?,計(jì)算機(jī)可讀介質(zhì)1025可以包括一組關(guān)聯(lián)的、相互關(guān)聯(lián)的、耦合的(例如,通過(guò)導(dǎo)體、光纖等等)、或連網(wǎng)的計(jì)算機(jī)可讀介質(zhì),例如,當(dāng)計(jì)算機(jī)裝置1005從計(jì)算機(jī)裝置或信息處理系統(tǒng)網(wǎng)絡(luò)接收該功能描述內(nèi)容時(shí)。注意,依照需要,計(jì)算機(jī)裝置1005可以從計(jì)算機(jī)可讀介質(zhì)1025、網(wǎng)絡(luò)或兩者接收功能描述內(nèi)容。
注意,依照需要,可以有效地將本發(fā)明原理應(yīng)用到不同的集成電路(IC),包括有可編程或可配置電路的IC,其在該領(lǐng)域中可有其它名字,并且如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域技術(shù)人員理解的。這種電路包括例如以下裝置,通稱是復(fù)雜可編程邏輯器件(CPLD)、可編程門(mén)陣列(PGA)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、和結(jié)構(gòu)化應(yīng)用特定IC或結(jié)構(gòu)化ASIC的裝置。
參考附圖,本領(lǐng)域普通技術(shù)人員將注意到,顯示的不同塊可以大體上描述設(shè)想的功能和信號(hào)流。實(shí)際電路實(shí)現(xiàn)可能或未必單獨(dú)包含用于不同功能塊的可識(shí)別硬件,以及可能或未必使用顯示的特定電路。例如,依照需要,可以將不同塊的功能組合到一個(gè)電路塊中。此外,依照需要,可以在幾個(gè)電路塊中實(shí)現(xiàn)單個(gè)塊的功能。電路實(shí)現(xiàn)的選擇依賴不同的因素,例如對(duì)一個(gè)給定實(shí)現(xiàn)的特定設(shè)計(jì)和性能規(guī)范,如受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員理解的。除這里描述的之外,本發(fā)明的其它修改和替代實(shí)施例對(duì)于受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域普通技術(shù)人員是顯而易見(jiàn)的。因此,本說(shuō)明書(shū)向本領(lǐng)域技術(shù)人員講授實(shí)施本發(fā)明的方式,并看作僅僅是說(shuō)明性的。
應(yīng)該認(rèn)為示出和描述的本發(fā)明形式是目前優(yōu)選的或說(shuō)明性的實(shí)施例。本領(lǐng)域技術(shù)人員可以在不脫離本文說(shuō)明的本發(fā)明的范圍內(nèi),在部件的形狀、尺寸和排列方面進(jìn)行各種變化。例如,本領(lǐng)域技術(shù)人員可以將這里說(shuō)明和描述的元素代替為等效的元素。此外,受益于本發(fā)明說(shuō)明書(shū)的本領(lǐng)域技術(shù)人員可以獨(dú)立于其它特征的使用來(lái)使用本發(fā)明的某些特征,而不脫離本發(fā)明的范圍。
權(quán)利要求
1.一種在計(jì)算機(jī)輔助設(shè)計(jì)CAD軟件中提供并行的系統(tǒng),該系統(tǒng)包括計(jì)算機(jī),其配置為識(shí)別具有獨(dú)立性的一任務(wù)組;分配所述任務(wù)組中要并行執(zhí)行的每個(gè)任務(wù);和執(zhí)行所述任務(wù)組中的每個(gè)任務(wù)。
2.如權(quán)利要求1所述的系統(tǒng),其中所述計(jì)算機(jī)被配置為裝載具有所述任務(wù)組的隊(duì)列。
3.如權(quán)利要求2所述的系統(tǒng),其中所述隊(duì)列以類似于串行CAD算法的順序被裝載,以便并行化的CAD軟件產(chǎn)生類似于該串行算法的結(jié)果。
4.如權(quán)利要求2所述的系統(tǒng),其中選擇所述任務(wù)組,以便最大化所述隊(duì)列中保持的獨(dú)立動(dòng)作的數(shù)量。
5.如權(quán)利要求4所述的系統(tǒng),其中以任意順序執(zhí)行任務(wù)。
6.如權(quán)利要求2所述的系統(tǒng),其中所述隊(duì)列在所述任務(wù)組被執(zhí)行之前裝載所述任務(wù)組中的所有任務(wù)。
7.如權(quán)利要求2所述的系統(tǒng),其中所述隊(duì)列包括增強(qiáng)隊(duì)列,該增強(qiáng)隊(duì)列允許當(dāng)正在執(zhí)行所述任務(wù)組時(shí),計(jì)劃附加的任務(wù)。
8.如權(quán)利要求2所述的系統(tǒng),其中多個(gè)線程確定要被執(zhí)行的各自任務(wù),并將該任務(wù)增加到所述隊(duì)列。
9.如權(quán)利要求8所述的系統(tǒng),其中如果依賴另一個(gè)任務(wù),則線程重生一個(gè)任務(wù)。
10.如權(quán)利要求1所述的系統(tǒng),其中所述CAD軟件包括布局算法,其用于在可編程邏輯器件PLD中的資源布局。
11.如權(quán)利要求1所述的系統(tǒng),其中所述CAD軟件包括并行分析算法。
12.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)應(yīng)用程序,其適合于通過(guò)計(jì)算機(jī)處理來(lái)并行化計(jì)算機(jī)輔助設(shè)計(jì)CAD軟件,該計(jì)算機(jī)應(yīng)用程序被配置為使所述計(jì)算機(jī)識(shí)別一具有獨(dú)立性的任務(wù)組;分配所述任務(wù)組中要并行執(zhí)行的每個(gè)任務(wù);和執(zhí)行所述任務(wù)組中的每個(gè)任務(wù)。
13.如權(quán)利要求12所述的計(jì)算機(jī)程序產(chǎn)品,使所述計(jì)算機(jī)裝載具有所述任務(wù)組的隊(duì)列。
14.如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,使所述計(jì)算機(jī)以類似于串行CAD算法的順序裝載所述隊(duì)列,以便并行化的CAD軟件產(chǎn)生類似于該串行算法的結(jié)果。
15.如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,使所述計(jì)算機(jī)選擇所述任務(wù)組,以便最大化所述隊(duì)列中保持的獨(dú)立動(dòng)作的數(shù)量。
16.如權(quán)利要求15所述的計(jì)算機(jī)程序產(chǎn)品,使所述計(jì)算機(jī)以任意順序執(zhí)行任務(wù)。
17.如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,使所述計(jì)算機(jī)在所述任務(wù)組被執(zhí)行之前給所述隊(duì)列裝載所述任務(wù)組中的所有任務(wù)。
18.如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,使所述計(jì)算機(jī)使用一個(gè)增強(qiáng)隊(duì)列,該增強(qiáng)隊(duì)列允許當(dāng)所述任務(wù)組正在被執(zhí)行時(shí),計(jì)劃附加的任務(wù)。
19.如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,使所述計(jì)算機(jī)使用多個(gè)線程,所述線程確定要被執(zhí)行的各自任務(wù),并將該任務(wù)增加到所述隊(duì)列。
20.如權(quán)利要求19所述的計(jì)算機(jī)程序產(chǎn)品,使所述計(jì)算機(jī)使用一個(gè)線程,如果依賴另一個(gè)任務(wù),則該線程重生一個(gè)任務(wù)。
21.如權(quán)利要求12所述的計(jì)算機(jī)程序產(chǎn)品,使所述計(jì)算機(jī)在可編程邏輯器件PLD中執(zhí)行資源的布局。
22.如權(quán)利要求12所述的計(jì)算機(jī)程序產(chǎn)品,使所述計(jì)算機(jī)執(zhí)行并行分析算法。
23.一種并行化計(jì)算機(jī)輔助設(shè)計(jì)CAD軟件的方法,該方法包括識(shí)別一具有獨(dú)立性的任務(wù)組;分配所述任務(wù)組中要并行執(zhí)行的每個(gè)任務(wù);和執(zhí)行所述任務(wù)組中的每個(gè)任務(wù)。
24.如權(quán)利要求23所述的方法,還包括裝載具有所述任務(wù)組的隊(duì)列。
25.如權(quán)利要求24所述的方法,還包括以類似于串行CAD算法的順序裝載所述隊(duì)列,以便并行化的CAD軟件產(chǎn)生類似于該串行算法的結(jié)果。
26.如權(quán)利要求24所述的方法,還包括選擇所述任務(wù)組,以便最大化所述隊(duì)列中保持的獨(dú)立動(dòng)作的數(shù)量。
27.如權(quán)利要求26所述的方法,還包括以任意順序執(zhí)行所述任務(wù)。
28.如權(quán)利要求24所述的方法,還包括在所述任務(wù)組被執(zhí)行之前給所述隊(duì)列裝載所述任務(wù)組中的所有任務(wù)。
29.如權(quán)利要求24所述的方法,其中所述隊(duì)列包括增強(qiáng)隊(duì)列,該增強(qiáng)隊(duì)列允許當(dāng)所述任務(wù)組正在執(zhí)行時(shí),計(jì)劃附加的任務(wù)。
30.如權(quán)利要求24所述的方法,還包括使用多個(gè)線程,這些線程確定要執(zhí)行的各自任務(wù),并將該任務(wù)增加到所述隊(duì)列。
31.如權(quán)利要求30所述的方法,其中如果依賴另一個(gè)任務(wù),則線程重生一個(gè)任務(wù)。
32.如權(quán)利要求23所述的方法,其中所述CAD軟件包括布局算法,該算法用于可編程邏輯器件PLD中資源的布局。
33.如權(quán)利要求23所述的方法,其中所述CAD軟件包括并行分析算法。
全文摘要
一種在計(jì)算機(jī)輔助設(shè)計(jì)(CAD)軟件中提供并行的系統(tǒng)包括臺(tái)計(jì)算機(jī)該計(jì)算機(jī)被配置成識(shí)別一組具有局部獨(dú)立性的任務(wù),并分配該組任務(wù)中要并行執(zhí)行的每個(gè)任務(wù)。該計(jì)算機(jī)進(jìn)一步配置為執(zhí)行該組任務(wù)中的每個(gè)任務(wù)。
文檔編號(hào)G06F17/50GK101021802SQ20071008798
公開(kāi)日2007年8月22日 申請(qǐng)日期2007年2月12日 優(yōu)先權(quán)日2006年2月13日
發(fā)明者K·帕達(dá)利, A·路德文, V·比特茲, R·馮 申請(qǐng)人:阿爾特拉公司