欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一條多處理器流水線的動(dòng)態(tài)工作量平衡的制作方法

文檔序號(hào):6406626閱讀:243來源:國(guó)知局
專利名稱:一條多處理器流水線的動(dòng)態(tài)工作量平衡的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及并行計(jì)算,更具體地涉及并聯(lián)在一條多處理器流水線上的處理工作量的動(dòng)態(tài)平衡。
在現(xiàn)有技術(shù)中已經(jīng)利用了各式各樣的處理器、存儲(chǔ)器、總線及其它資源的配置來提供并行與流水線處理。這些配置包括用于使用共享存儲(chǔ)器的多處理器的系統(tǒng)或者分擔(dān)并行工作量的處理器的系統(tǒng)。
下面所描述的是用于并行與流水線處理的各種配置及技術(shù)。
4,930,102號(hào)美國(guó)專利是針對(duì)一種利用并行處理器的計(jì)算機(jī)體系結(jié)構(gòu)的,它包括位于各種物理部件之間的一個(gè)接口系統(tǒng)以及用于保持等待中的工作的一個(gè)排隊(duì)結(jié)構(gòu)。更具體地,該計(jì)算機(jī)體系結(jié)構(gòu)包括一個(gè)縱橫電路(Cross-barCircuit)及一個(gè)折疊式存儲(chǔ)隊(duì)列結(jié)構(gòu)(accordian-storequeuestructure)。
4,920,487號(hào)美國(guó)專利是針對(duì)具有多個(gè)處理單元及共享存儲(chǔ)器的一種并行處理計(jì)算機(jī)系統(tǒng)的,它通過利用具有在其各連接點(diǎn)上執(zhí)行相同的計(jì)算的一個(gè)網(wǎng)絡(luò)來平衡集合計(jì)算工作量。
4,875,161是針對(duì)一種矢量文件組織來支持多道程序執(zhí)行流水線的。各流水線通過將文件存儲(chǔ)分段并以尋址這些段的不同單元能夠同時(shí)存取一個(gè)矢量文件的不同的塊。
4,850,027號(hào)美國(guó)專利是針對(duì)一種具有有限處理單元連接的圖象處理系統(tǒng)的,它不需要海量存儲(chǔ)器與總線容量便能提供多種圖象處理網(wǎng)絡(luò)選擇。
4,839,798號(hào)美國(guó)專利是針對(duì)一種具有多個(gè)聯(lián)機(jī)連接的計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的。各計(jì)算機(jī)系統(tǒng)能夠請(qǐng)求將一個(gè)作業(yè)傳送給另一個(gè)計(jì)算機(jī)系統(tǒng)。
4,814,978號(hào)美國(guó)專利是針對(duì)一種利用大量VLSI(超大規(guī)模集成)電路芯片的計(jì)算機(jī)設(shè)計(jì)。這一設(shè)計(jì)為一種靜態(tài)數(shù)據(jù)流體系結(jié)構(gòu),其中多個(gè)處理單元使用I/O電路進(jìn)行外部通信,而使用通過一個(gè)選路網(wǎng)絡(luò)傳送的包進(jìn)行內(nèi)部通信,該網(wǎng)絡(luò)實(shí)現(xiàn)一條從任一處理單元到達(dá)任何其它處理單元的傳輸路徑。
4,766,566號(hào)美國(guó)專利是針對(duì)使用雙并行執(zhí)行單元的一種RISC(精簡(jiǎn)指令集計(jì)算機(jī))型VLSI處理器的??梢栽谶@兩個(gè)單元中增加一個(gè)加法器、一個(gè)乘法器或者一個(gè)ALU(算術(shù)邏輯單元)來平衡雙單元之間的工作量。
4,736,291號(hào)美國(guó)專利是針對(duì)一種包含用于處理存儲(chǔ)在一個(gè)大容量存儲(chǔ)器中的地震數(shù)據(jù)的多個(gè)獨(dú)立處理單元的通用陣列處理器的。一臺(tái)數(shù)字主計(jì)算機(jī)通過一個(gè)主接口單元提供該系統(tǒng)的總體控制。
4,633,387號(hào)美國(guó)專利是針對(duì)諸如多控制單元外圍數(shù)據(jù)存儲(chǔ)器系統(tǒng)的一種多單元數(shù)據(jù)處理系統(tǒng)的,其中,根據(jù)一個(gè)較為不忙的單元的一個(gè)工作請(qǐng)求,一個(gè)較忙的單元可以將工作移交給該較為不忙的單元。
4,543,626號(hào)美國(guó)專利是針對(duì)一種響應(yīng)一條命令協(xié)調(diào)在一個(gè)多處理器系統(tǒng)中的多個(gè)處理器的操作的控制裝置的。所接收的每一條命令與一條包含路由矢量的予定的路由相關(guān)聯(lián)。為該路由生成一個(gè)控制塊。每一個(gè)路由矢量標(biāo)識(shí)一個(gè)要執(zhí)行的操作以及擬行該操作的站。各站具有一個(gè)包含控制塊的工作隊(duì)列,該站對(duì)這些控制塊順序地檢索與處理。
4,504,909號(hào)美國(guó)專利是針對(duì)用于實(shí)時(shí)處理從一臺(tái)CT掃描器所采集的數(shù)據(jù)的一種陳列處理器。在該系統(tǒng)中,給定的陳列的子部分的處理是與下一陣列的采集的數(shù)據(jù)集合的輸入交替進(jìn)行的。
4,495,562號(hào)美國(guó)專利是針對(duì)一種用于并行處理系統(tǒng)的控制方法的,其中對(duì)一臺(tái)處理器的使用時(shí)間間隔進(jìn)行周期性測(cè)定以確定其工作量。
4,493,020號(hào)美國(guó)專利是針對(duì)一種微程序編碼的數(shù)據(jù)處理系統(tǒng)的,其中每一條高級(jí)指令是通過一個(gè)或多個(gè)任務(wù)執(zhí)行的,而每一任務(wù)則以一種微程序編碼方式執(zhí)行一條或多條任務(wù)微指令來進(jìn)行。三個(gè)分立的處理器以互相間隔120度相位進(jìn)行操作但共享共同的物理硬件,諸如存儲(chǔ)器。根據(jù)可分配的寄存器的狀態(tài),在需要時(shí)分配給處理器資源。
4,493,019號(hào)美國(guó)專利是地對(duì)一種具有三附高點(diǎn)體系結(jié)構(gòu)的微程序編碼的數(shù)據(jù)處理系統(tǒng)的,該體系結(jié)構(gòu)是為使用三個(gè)分立的以互相相隔120度的相位操作的處理器執(zhí)行微指令而實(shí)現(xiàn)的。
4,384,324號(hào)美國(guó)專利是針對(duì)一種具有三階高點(diǎn)體系結(jié)構(gòu)的微程序編碼的數(shù)據(jù)處理系統(tǒng)的,該體系結(jié)構(gòu)是為使用三個(gè)分立的以互相相隔120度的相位操作的處理器執(zhí)行微指令而實(shí)現(xiàn)的。
4,229,790號(hào)美國(guó)專利是針對(duì)用于并發(fā)處理任務(wù)與指令的一種系統(tǒng)的。該處理器是使用控制與功能單元流水作業(yè)介避免優(yōu)先權(quán)約束負(fù)擔(dān)的一種多指令多數(shù)據(jù)屏面數(shù)字計(jì)算機(jī)。
3,905,023號(hào)美國(guó)專利是針對(duì)一種具有通過交換獨(dú)立地操作計(jì)算,I/O(輸入/輸出)及存儲(chǔ)器模塊的微程序編碼的多道處理信息處理系統(tǒng)的。
本發(fā)明包括一個(gè)用于處理高級(jí)指令的裝置,該裝置包括多個(gè)處理單元、用于生成執(zhí)行所述高級(jí)指令的多條指令的裝置、以及用于動(dòng)態(tài)地將所述生成的指令組成至少一個(gè)組,各組包括至少一條要被所述處理單元之一處理的指令。
此外,本發(fā)明包括由多個(gè)處理單元處理高級(jí)指令的一種方法,該方法包括,生成執(zhí)行所述高級(jí)指令的多條指令、以及動(dòng)態(tài)地將所述生成的指令組成至少一個(gè)組,各組至少包括一條要被所述處理單元之一處理的指令。
對(duì)本發(fā)明的性質(zhì)與優(yōu)點(diǎn)的進(jìn)一步了解可參照本說明書的其余部分及附圖。


圖1是一臺(tái)典型的數(shù)字計(jì)算機(jī)的方框圖;
圖2是使用本發(fā)明的一個(gè)較佳實(shí)施例的一種可能的圖形流水線的方框圖;
圖3是存儲(chǔ)一張流水線圖以及其它對(duì)于將例程分配給該處理流水線有用的信息的存儲(chǔ)器的方框圖;
圖4與5給出上述圖3中展示的流水線圖中可能使用的數(shù)據(jù)結(jié)構(gòu)的示例;
圖6是從該流水線圖構(gòu)成的指針或鏈接表的展示,分配程序可利用它來分配任務(wù);
圖7是用于分配或組織在流水線中處理的任務(wù)的一種方法的高級(jí)流程圖;
圖8是可能為一組給定的例程生成的進(jìn)程棧的展示;
圖9是上述圖7中所描述的配置步驟的更詳細(xì)的流程圖;
圖10與11是一張配置表與一張例程表的示例;
圖12是上述圖7中所描述的步驟805的更詳細(xì)的流程圖;
圖13是一個(gè)配置高速緩沖存儲(chǔ)器項(xiàng)的示例;
圖14是上述圖7中所描述的分配步驟的更詳細(xì)的流程圖;
圖15是上述圖14中所描述的分配步驟的更詳細(xì)的流程圖;
圖16是上述圖14中所描述的新的目標(biāo)瓶頸計(jì)算步驟的更詳細(xì)的流程圖;
圖17是上述圖7中所描述的裝入步驟的更詳細(xì)的流程圖;
圖18是上述圖7中所描述的短裝入步驟的更詳細(xì)的流程圖;以及圖19示出供執(zhí)行的一組進(jìn)程棧。
圖1是一個(gè)典型的數(shù)字計(jì)算機(jī)系統(tǒng)100的方框圖。該計(jì)算機(jī)系統(tǒng)包括一臺(tái)主計(jì)算機(jī)105。該主計(jì)算機(jī)包括連接到一個(gè)存儲(chǔ)器120的主處理器110,從而包括主流水線125、輸入設(shè)備130及輸出設(shè)備140。主處理順110可包括一個(gè)單一處理器或多個(gè)處理器。輸入設(shè)備130可包括一個(gè)鍵盤、鼠標(biāo)器、圖形輸入板或其它類型的輸入設(shè)備。輸出設(shè)備140可包含一文本監(jiān)視器、繪圖儀或其它類型的輸出設(shè)備。主計(jì)算機(jī)的主處理器同時(shí)可通過圖表適配器200連接到圖形輸出設(shè)備150,諸如一個(gè)圖形顯示器。圖形適配器200在總線160上接上來自主處理器110的與圖形相關(guān)的指令。這些指令包括諸如光線的數(shù)量與位置等屬性,以及諸如描繪一個(gè)三角形、多條線(polyline)之類的任務(wù)。然后,圖形適配器在一條圖形流水線210中執(zhí)行這些指令,流水線210包括圖形處理器220與圖形存儲(chǔ)器230。然后,圖形流水線執(zhí)行這些指令并在這些指令的基礎(chǔ)上更新幀緩沖器240。幀緩沖器240包括要在圖形輸出設(shè)備上顯示的每一個(gè)象素的數(shù)據(jù)。一個(gè)RAMDAC(隨機(jī)存取存儲(chǔ)器數(shù)到模轉(zhuǎn)換器)250將存儲(chǔ)在幀緩沖器中的數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換成RGB(紅綠藍(lán))信號(hào)以提供給圖形顯示器150,從而描繪從主處理器輸出的所要求的圖形。
圖2是使用本發(fā)明的一個(gè)較佳實(shí)施例的一條可能的圖形流水線210。該圖形處理器流水線包括三個(gè)處理器300、310與320,別的流水線可包括更多或較少的處理器。此外,除了圖形流水線之外,主流水線或其它流水線可利用本發(fā)明的一個(gè)實(shí)施例。更進(jìn)一步,各處理器可視為一個(gè)處理單元,其中每一單元可包括多個(gè)作為一條流水線、并行處理器等組合在一起的處理器。第一處理器300用作一個(gè)分配器來在流水線上分配工作量。別的流水線在流水線前面可有一分配器。存儲(chǔ)器包括內(nèi)存儲(chǔ)器330、340與350加上外存儲(chǔ)器360、365與370。各內(nèi)存儲(chǔ)器緊密地耦合于一個(gè)處理器以提供一個(gè)頻繁地使用的信息的小而快的存儲(chǔ)器。各外存儲(chǔ)器包含需要較多存儲(chǔ)區(qū)或處理器較難得用到的信息。外存儲(chǔ)器360、365與370分別以總線380、385與390耦合到處理器300、310與320上。
圖3是一個(gè)存儲(chǔ)器的方框圖,諸如存儲(chǔ)一張流水線圖400、任務(wù)分裂碼430、一張例程表440以及用于將例程分配給較佳實(shí)施例中的處理流水線的一個(gè)配置高速緩沖存儲(chǔ)器450的外存儲(chǔ)器360。一個(gè)屬性緩沖器存儲(chǔ)流水線所用的屬性,諸如窗口位置、變換、光線信息等。流水線圖400包括一張?zhí)幚砥鲌D410與一張存儲(chǔ)器圖420。處理器圖410包括流水線中分配了要執(zhí)行的例程的每一處理器的一個(gè)處理器數(shù)據(jù)結(jié)構(gòu)。如果該分配器可作為流水線中的一個(gè)處理器執(zhí)行例程,則該分配器也同樣有一個(gè)數(shù)據(jù)結(jié)構(gòu)。在下面圖4與5中更詳細(xì)地說明這些圖。包括在內(nèi)存儲(chǔ)器中的還有任務(wù)分裂碼430、例程表440及配置高速緩沖存儲(chǔ)器450。任務(wù)分裂碼包括用于為各任務(wù)或高級(jí)指令生成可以指示處理器流水線去執(zhí)行的例程或指令的代碼,從而將任務(wù)或高級(jí)指令分裂成一組例程或指令。例如,描繪一個(gè)三角形的任務(wù)可以分裂為順序執(zhí)行的輸入、變換、剪輯、光線、變換以及輸出例程。例程表440包括由進(jìn)程ID(PID)執(zhí)行的可能的例程或指令的一張表。各例程項(xiàng)包括在分配進(jìn)程中所使用的該例程的相關(guān)信息。下面將對(duì)例程表更詳細(xì)地說明。配置高速緩沖存儲(chǔ)器450包括前面已配置的任務(wù)的一張表。當(dāng)前屬性緩沖器455包含應(yīng)用軟件已經(jīng)提交給適配器的當(dāng)前屬性,諸如光線的數(shù)量與位置。下面對(duì)任務(wù)分裂碼430,例程表440與配置高速緩沖存儲(chǔ)器450更詳細(xì)地進(jìn)行說明。
圖4與5給出可用于上面圖3所示的流水線圖400中的處理器與存儲(chǔ)器的數(shù)據(jù)結(jié)構(gòu)的示例。處理器數(shù)據(jù)結(jié)構(gòu)460展示了上面圖2中所示的流水線中所示的處理器P2的一個(gè)可能的數(shù)據(jù)結(jié)構(gòu)。這一數(shù)據(jù)結(jié)構(gòu)包括分別指向前一個(gè)處理器P1、下一個(gè)處理器P3、內(nèi)存儲(chǔ)器M2與外存儲(chǔ)器M4與M5的指針461-465。該數(shù)據(jù)結(jié)構(gòu)還可包括分配給該處理器的內(nèi)與外存儲(chǔ)器以字為單位的數(shù)量466與467。該數(shù)據(jù)結(jié)構(gòu)還可包括諸如處理器速度之類的可利用的其它信息468。存儲(chǔ)器結(jié)構(gòu)470展示上面圖2中所示的存儲(chǔ)器M4的一個(gè)可能的數(shù)據(jù)結(jié)構(gòu)。該存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)包含以字為單位的存儲(chǔ)器數(shù)量473以及指向可使用該存儲(chǔ)器的處理器的指針471。該存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)還可包含指向流水線中的前一存儲(chǔ)器的指針472,該指針用于在裝入步驟中跨越存儲(chǔ)器定位數(shù)據(jù),該數(shù)據(jù)結(jié)構(gòu)可包含要用到的其它信息474。
圖6為較佳實(shí)施例中從流水線圖構(gòu)成的并且分配器能用來分配任務(wù)的指針或鏈接表500-580的示例。注意,從流水線中最后的存儲(chǔ)器550(M3)開始一張導(dǎo)向流水線中的第一存儲(chǔ)器560(M4)的鏈接表。這對(duì)于分配處理器只須簡(jiǎn)單地從一個(gè)存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)走向另一個(gè)數(shù)據(jù)結(jié)構(gòu)來尋找信息是有用的。
圖7是用于分配或組成在處理流水線中進(jìn)行處理的任務(wù)的一種方法的高層流程圖。在稱作配置的第一步驟800中,分配器為完成一個(gè)給定的任務(wù)要執(zhí)行的例程建立一張配置表。配置表中包含執(zhí)行各例程所需的時(shí)間長(zhǎng)度以及各例程所需要執(zhí)行的任何初始化例程。這些初始化例程設(shè)置某些該例程要用到的屬性或者為該例程分配工作存儲(chǔ)器。在第二步驟805中,對(duì)一個(gè)配置高速緩沖存儲(chǔ)器進(jìn)行檢測(cè)以判定該任務(wù)在此之前已經(jīng)被執(zhí)行過。如果沒有,則在稱作分配的步驟810中,分配器利用上述流水線圖在流水線內(nèi)的處理器之間動(dòng)態(tài)地組織或分配這些例程,從而將這些例程或指令組合成例程或指令的指令流水線中的處理器去處理。分配進(jìn)程是動(dòng)態(tài)的,因?yàn)槔袒蛑噶畹慕M織的分配并不是事先定義的而是根據(jù)下述因素變化的諸如正在分配的指令的處理時(shí)間的長(zhǎng)度,用于執(zhí)行這些指令的處理器的數(shù)量,處理器的當(dāng)前處理工作量等。這一步驟中建立稱作進(jìn)程棧的數(shù)據(jù)結(jié)構(gòu)。一個(gè)進(jìn)程棧是一個(gè)特定的處理器或處理器單元在完成其任務(wù)部分時(shí)要執(zhí)行或處理的一組例程或指令。在本較佳實(shí)施例中,對(duì)于執(zhí)行任何例程的每一個(gè)處理器有一個(gè)進(jìn)程棧。在稱作裝入的下一個(gè)步驟820中,在進(jìn)程棧中裝入指向適當(dāng)?shù)拇鎯?chǔ)器中要由處理器執(zhí)行的數(shù)據(jù)與指令的適當(dāng)指針、如果該任務(wù)在這以前已經(jīng)被執(zhí)行過,如在上述步驟805中所判定的,則執(zhí)行另一個(gè)短裝入步驟825,在其中檢驗(yàn)進(jìn)程棧以保證全部需要的例程與數(shù)據(jù)指針都已裝入。在稱作執(zhí)行的最后步驟830中,順序地執(zhí)行分配給流水線中每一個(gè)處理器的進(jìn)程棧以完成所要求的任務(wù)。在本較佳實(shí)施例中,然后可以像上面所述那樣處理下一個(gè)任務(wù),包括在完成前一個(gè)任務(wù)的進(jìn)程棧的執(zhí)行之前開始進(jìn)程棧的執(zhí)行。這是可能的,由于一條流水線中的處理器可以順序地然而卻是獨(dú)立地處理其進(jìn)行棧這一事實(shí)。
圖8是可能為一組給定的例程生成的一個(gè)進(jìn)程棧900的示例。一個(gè)進(jìn)程棧是要執(zhí)行的例程910-940的一張鏈接表。在該鏈接表中的每一個(gè)例程完成一定量的工作。例程是一個(gè)自含的功能,它需要一個(gè)該進(jìn)程的進(jìn)程ID(標(biāo)識(shí)符)(PID)950、該例程的代碼的局部地址960、一個(gè)由它得到該例程的輸入數(shù)據(jù)的輸入指針970、一個(gè)向它寫輸出數(shù)據(jù)的輸出指針980以及諸如指向局部工作存儲(chǔ)器的指針之類的局部信息990。這一信息是在下面要更詳細(xì)地說明的裝入步驟中加入到進(jìn)程棧中的。各處理器從其進(jìn)程棧項(xiàng)中讀取這些指針,以其指針調(diào)用例程,然后對(duì)進(jìn)程棧中的下一例程重復(fù)這一過程。由于進(jìn)程棧是一張鏈接表,它可以容易地由一個(gè)控制程序動(dòng)態(tài)地建立和操作。
圖9是上面圖7中所說明的配置步驟800的更詳細(xì)的流程圖。在第一步驟1000中,執(zhí)行給定任務(wù)的任務(wù)分裂代碼以提供完成這一給定任務(wù)所要執(zhí)行的例程的一個(gè)配置表。任務(wù)分裂代碼照顧到事先由屬性指令裝入系統(tǒng)的該系統(tǒng)的各種當(dāng)前屬性。在第二步驟1005,在配置表上加上任務(wù)類型的一個(gè)配置ID(CID)。在本較佳實(shí)施例中,CID是以任務(wù)分裂代碼生成配置表中所取的路徑為基礎(chǔ)的。結(jié)果,對(duì)于任何以后的同一類型的具有相同當(dāng)前屬性的任務(wù),其CID是相同的。在第三步驟1010,對(duì)于配置表中的每一個(gè)例程,搜索一張例程表以確定執(zhí)行該例程所需時(shí)間的長(zhǎng)度以及對(duì)該例程的任何限制。例程限制包括哪一個(gè)處理器可以執(zhí)行該例程這樣的限制(例如由于需要存取一個(gè)適配器輸入緩沖器而必須由第一處理器執(zhí)行該例程,或者由于需要存取幀緩沖器而必須由最后那個(gè)處理器執(zhí)行該例程)。該例程需要外存儲(chǔ)器、以及其它可能的例程限制。在分配步驟中,這一信息將是最為有用的。然而,如下面將要更詳細(xì)地說明的,這些限制并不常用并且一般情況下在分配步驟中并不引起任何困難。然后在步驟1020中更新例程表以反映這一信息。
圖10與11為本發(fā)明的一個(gè)較佳實(shí)施例中所用的一張配置表1040與一張例程表1065的示例。配置表給出為執(zhí)行一個(gè)給定的任務(wù)所需要的例程中每一個(gè)的進(jìn)程ID(PID)1045、執(zhí)行每一個(gè)例程所需的時(shí)間1050以及對(duì)分配該例程的任何限制1055。配置表還包含任務(wù)類型的CID1060。配置表是在配置步驟中生成的并且在分配步驟中受到重用。例程表包括所有已知例程的PID1070、例程代碼在分配器存儲(chǔ)器中的地址1075、每一個(gè)例程的大小1080、執(zhí)行每一個(gè)例程所需的時(shí)間1085、對(duì)每一個(gè)例程的任何分配限制1090以及有時(shí)候指向一個(gè)初始化例程的一個(gè)指針。這一信息中有一些是用于在配置步驟中完成該配置表的。其余的信息則在裝入步驟中使用。
圖12是上面圖7中描述的步驟805的一張更詳細(xì)的流程圖,其中判定這一類型的任務(wù)在以前是否已經(jīng)執(zhí)行過。在第一步驟1100中,讀取配置高速緩沖存儲(chǔ)器中的一個(gè)給定任務(wù)的第一項(xiàng)。如果沒有找到第一項(xiàng)(步驟1110),則處理繼續(xù)前進(jìn)到分配步驟(步驟1150),這是因?yàn)橐郧皼]有以相同的有關(guān)屬性(例如模型中所用的光線的數(shù)據(jù))執(zhí)行過當(dāng)前任務(wù)。如果在配置高速緩沖存儲(chǔ)器中找到了該給定任務(wù)的一個(gè)項(xiàng),則將該項(xiàng)的配置ID與給定的任務(wù)的CID進(jìn)行比較。如果CID相同,則具有相同的內(nèi)部屬性的同一任務(wù)以前已經(jīng)執(zhí)行過。結(jié)果,處理繼續(xù)前進(jìn)到短裝入步驟(步驟1140)。如果CID不相同,則檢驗(yàn)當(dāng)前項(xiàng)以確定在配置高速緩沖存儲(chǔ)器中是否有另一后續(xù)項(xiàng)(步驟1130)。如果沒有,則處理繼續(xù)前進(jìn)到分配步驟(步驟1150),這是因?yàn)楫?dāng)前任務(wù)在此之前并未以相同的內(nèi)部屬性執(zhí)行過。如果有,則處理返回到步驟1120繼續(xù)進(jìn)行。
圖13為本發(fā)明的較佳實(shí)施例中所用的一個(gè)配置高速緩沖存儲(chǔ)器項(xiàng)1160的示例。該配置高速緩沖存儲(chǔ)器面包括配置ID(CID)1165、一個(gè)指向下一高速緩沖存儲(chǔ)器項(xiàng)的指針1170、前面執(zhí)行的進(jìn)程棧的付本1175、指向前面執(zhí)行的進(jìn)程棧的局部存儲(chǔ)器地址的指針1180、以及各進(jìn)程棧的裝入標(biāo)志1185用于指示哪些進(jìn)程棧仍裝入在局部存儲(chǔ)器中。其它信息1190可根據(jù)要求加入。
圖14為上面圖7中描述的分配步驟810的更詳細(xì)的流程圖。在第一步驟1210中,分配器計(jì)算一個(gè)目標(biāo)瓶頸。這時(shí)要分配給任何處理器的最長(zhǎng)路徑長(zhǎng)度(執(zhí)行例程的時(shí)間)。在本較佳實(shí)施例中,該目標(biāo)瓶頸是這樣計(jì)算的將從配置表中找出的要執(zhí)行的所有例程的路徑長(zhǎng)度之和除以處理器的數(shù)目。在第二步驟1220,將配置表中所列出的例程順序地分配給處理器。就是在這一過程中,在分配器的存儲(chǔ)器中建立了進(jìn)程棧的框架。一個(gè)給定的處理器所要執(zhí)行的例程被裝入一個(gè)進(jìn)程棧,每一個(gè)執(zhí)行例程的處理器有一個(gè)進(jìn)程棧。下面將對(duì)將例程分配給處理器更詳細(xì)地進(jìn)行說明。在第三步驟1230,判定是否最后一個(gè)處理器分配了比目標(biāo)瓶頸更長(zhǎng)的路徑長(zhǎng)度。如果是這樣,則在步驟1240中計(jì)算一個(gè)新的目標(biāo)瓶頸,并且步驟1220的分配過程重新開始。下面在圖16中更詳細(xì)地說明新的目標(biāo)瓶頸的計(jì)算。如果所有的處理器都分配了小于或等于目標(biāo)瓶頸的路徑長(zhǎng)度,則在步驟1250中檢驗(yàn)配置表中所列出的例程限制是否都又被當(dāng)前的處理器例程分配所滿足。如果這些限制都已滿足,則過程繼續(xù)到步驟1270中的裝入步驟。如果限制未滿足,則在步驟1260中將這些例程以及任何插入的例程重新分配給適當(dāng)?shù)奶幚砥?。例如,如果將一個(gè)例程分配給了流水線中的第二處理器,而該例程限制于流水線中的第一處理器,則將該例程連同任何其它前面的分配給第二處理器的例程重新分配給第一處理器。重新分配步驟一經(jīng)完成,則過程繼續(xù)到步驟1270中的裝入步驟。
圖15為上面圖14中所描述的分配步驟1220的更詳細(xì)的流程圖。在第一步驟1310中,將第一例程分配給第一處理器,在這一分配中,配置表中所給出的該例程的路徑長(zhǎng)度被輸入到接收該例程的處理器的一個(gè)當(dāng)前分配的路徑長(zhǎng)度中。可使用該處理器數(shù)據(jù)結(jié)構(gòu)來暫時(shí)保存該當(dāng)前分配路徑長(zhǎng)度。在第二步驟1320,分配器判定是否在配置表中還有要分配給處理器的其它例程。由于這是第一次進(jìn)入步驟1320,答案很可能是肯定的。在下一步驟1330中,將已分配給該處理器的當(dāng)前路徑長(zhǎng)度加上要分配的下一例程的路徑長(zhǎng)度與目標(biāo)瓶頸進(jìn)行比較。如果這一量不大于目標(biāo)瓶頸,則在步驟1310中將下一例程分配給該處理器,并且將該例程的路徑長(zhǎng)度加到當(dāng)前處理器的當(dāng)前分配路徑長(zhǎng)度上。這一過程一直重復(fù)到下一例程的路徑長(zhǎng)度再也不能在不超出目標(biāo)瓶頸的條件下加到分配給該處理器的路徑長(zhǎng)度為止。在步驟1340,分配器隨即通過在處理器數(shù)據(jù)結(jié)構(gòu)中查找下一個(gè)處理器來判定是否還有要分配例程的另一個(gè)處理器。如果有,則分配過程在步驟1350中通過訪問其處理器數(shù)據(jù)結(jié)構(gòu)前進(jìn)到下一處理器。然后,在步驟1310中將一個(gè)例程分配給該處理器,并且將該例程的路徑長(zhǎng)度輸入到接收該例程的處理器的當(dāng)前分配的路徑長(zhǎng)度中。如果步驟1340的判定為否,則在步驟1360中將其余的例程分配給最后一個(gè)處理器,并且將這些例程的路徑長(zhǎng)度加到該最后處理器的當(dāng)前分配路徑長(zhǎng)度上。
圖16為上面圖14中所描述的一種較佳的新目標(biāo)瓶頸計(jì)算步驟的更詳細(xì)的流程圖。在這一過程中,其目的為得到一個(gè)其值為大于當(dāng)前目標(biāo)瓶頸的最小的路徑線性和的新瓶頸。在第一步驟1405中,以將其設(shè)置為其最大可能值初始化變量最小路徑并將一個(gè)計(jì)數(shù)器i設(shè)置為1,在第二步驟1410,判定配置表中的例程i是否存在。由于這是第一例程(i=1),答案為是。在下一步驟1415中,將路徑長(zhǎng)度和設(shè)置為0并將計(jì)數(shù)器j設(shè)置為等于計(jì)數(shù)器i。因步驟1420中,判定路徑長(zhǎng)度和是否大于目標(biāo)瓶頸。由于這是第一次通過,答案為否。在步驟1425中,將配置表中給出的例程路徑長(zhǎng)度加在路徑長(zhǎng)度和上,并且通過將計(jì)數(shù)器j增加1而過程前進(jìn)到下一例程。在步驟1430中,判定例程j是否在配置表中。如果是,則處理返回步驟1420。如果為否或者上面步驟1420的答案為是,則步驟1435判定路徑長(zhǎng)度和是否小于最小路徑長(zhǎng)度。如果是,則步驟1440將最小路徑長(zhǎng)度設(shè)置為等于該路徑長(zhǎng)度和。然后步驟1445將計(jì)數(shù)器i增加1以開始對(duì)下一組例程的處理。然后步驟1410判定例程i是否存在于配置表中。如果否,則處理返回到圖14的步驟1220。
圖17是上面圖7中所描述的裝入步驟的更詳細(xì)的流程圖。最好從最后一個(gè)處理器的進(jìn)程棧開始向后操作到第一處理器的進(jìn)程棧。這使得裝入作為帶有從第一進(jìn)程棧至最后進(jìn)程棧的指針的鏈接表的進(jìn)程棧較為容易。在第一步驟1510中,以從進(jìn)程棧得到的進(jìn)程ID(PID)唑例程表讀取最后一個(gè)進(jìn)程棧的第一個(gè)例程的地址。然后將該例程復(fù)制到能被該處理器訪問的局部存儲(chǔ)器中,最好是內(nèi)存儲(chǔ)器。然后將局部例程地址裝入進(jìn)程棧中的例程地址中。在步驟1520中,還為該例程所使用與生成的數(shù)據(jù)的輸入與輸出地址生成輸入與輸出指針。假定這是該進(jìn)程棧中的第一個(gè)例程,輸入指針便是輸入端口地址。輸出指針則指向該處理器能夠訪問的內(nèi)存儲(chǔ)器中的一個(gè)局部地址。在步驟1530,如果例程表指定了一個(gè)初始化例程作為這一例程可使用的初始化例程,則調(diào)用該初始化例程。這一初始化例程將供該程使用的屬性,諸如窗口位置、變換、光線信息等,裝入局部存儲(chǔ)器。此外,該初始化例程在局部存儲(chǔ)器中建立該例程所需的任何局部的或工作存儲(chǔ)區(qū)。在進(jìn)程棧中裝入一個(gè)指向該工作存儲(chǔ)區(qū)的指針。在為該列程、輸入與輸出緩沖器以及工作存儲(chǔ)區(qū)分配存儲(chǔ)器時(shí),對(duì)配置高速緩沖存儲(chǔ)器中所存儲(chǔ)的前面執(zhí)行過的那些進(jìn)程棧的付本進(jìn)行檢驗(yàn)以確定是否有可利用的存儲(chǔ)器空間。如果將以前分配給前面執(zhí)行過的一個(gè)進(jìn)程棧的存儲(chǔ)器重新分配給當(dāng)前的進(jìn)程棧,則將該進(jìn)程棧在配置高速緩沖存儲(chǔ)器中的一個(gè)裝入標(biāo)志關(guān)掉。這指明前央執(zhí)行過的進(jìn)程棧的資源不再分配給該進(jìn)程棧。這一標(biāo)志是在下面要詳細(xì)說明的短裝入步驟中使用的。在步驟1540中,判定這是否進(jìn)程棧上的最后例程。如果不是,則執(zhí)行返回到步驟1510裝入該進(jìn)程棧中的下一個(gè)例程。如果是,則步驟1550判定這是否是最后的進(jìn)程棧(第一個(gè)裝入的但是進(jìn)程棧鏈接表中的最后一個(gè))。如果是,則步驟1555將一個(gè)稱作返回的最終例程加到該進(jìn)程棧上,當(dāng)在執(zhí)行步驟中執(zhí)行這一返回例程時(shí),它完成這些進(jìn)程棧的執(zhí)行。如果否,則步驟1560將一個(gè)稱作“送到下一個(gè)”的最終例程加到當(dāng)前進(jìn)程棧的末尾,其目的在處理器之間移動(dòng)數(shù)據(jù)。這一例程的輸入是前一例程的輸出地址而且輸出地址是該處理器的輸出緩沖器地址。然后,步驟1565將進(jìn)程棧以及指向該進(jìn)程棧的一個(gè)指針裝入到局部存儲(chǔ)器中并且裝入配置高速緩沖存儲(chǔ)器中。此外,在配置高速緩沖存儲(chǔ)器中存儲(chǔ)該進(jìn)程棧的一個(gè)接通的裝入標(biāo)志,用來指示該進(jìn)程棧及其資源已裝入局部存儲(chǔ)器中。然后步驟1575判定這是否是第一進(jìn)程棧(最后裝入的但是在進(jìn)程棧鏈接表中的第一個(gè)進(jìn)程棧)。如果不是,則執(zhí)行返回到步驟1510去加入前一進(jìn)程棧的第一個(gè)例程。如果是,則處理繼續(xù)到步驟1580中所示的執(zhí)行步驟。
圖18是上面圖7中所描述的短裝入步驟的更詳細(xì)的流程圖。如上面所描述的裝入步驟,最好從最后處理器的進(jìn)程棧開始向后操作到第一處理器的進(jìn)程棧。這使得作為具有從第一進(jìn)程棧到最后進(jìn)程棧的指針的一張鏈接表的那些進(jìn)程棧在必要時(shí)較容易重新裝入。在第一步驟1610,從配置高速緩沖存儲(chǔ)器讀取給定的任務(wù)與屬性的最后進(jìn)程棧。在步驟1620中,檢驗(yàn)該進(jìn)程棧的裝入標(biāo)志以確定該進(jìn)程棧是否仍裝入。如果不是,則在步驟1630將該進(jìn)程棧重新裝入局部存儲(chǔ)器,如以上在裝入步驟中所描述的。這包括重新裝入該例程、輸入指針、輸出指針、重新運(yùn)行初始化例程等。如果對(duì)步驟1620的判定為是,或者在重新裝入進(jìn)程棧之后,則判定最后的進(jìn)程棧已經(jīng)從配置高速緩沖存儲(chǔ)器中讀入。如果尚未,則處理返回到步驟1610。否則步驟1650進(jìn)入到執(zhí)行步驟。
圖19示出一組供執(zhí)行的進(jìn)程棧1700-1900,它們可能是為圖2中所述的流水線由上述配置、分配與裝入步驟生成的。這些進(jìn)程棧中包括描繪具有一條側(cè)面光線及兩條定向光線的一個(gè)三維模型中的一個(gè)三角形的例程。進(jìn)程棧執(zhí)行從第一處理器執(zhí)行第一個(gè)棧1700中的第一例程1710開始。在本例中,它是位于進(jìn)程棧中所給出的局部存儲(chǔ)器地址上的網(wǎng)目輸入例程。該例程從進(jìn)程棧中取得其輸入/輸出及局部靜態(tài)或工作存儲(chǔ)器指針,并執(zhí)行其功能。該例程從輸入指針讀取數(shù)據(jù),在本例中是M1輸入端口地址,并且將結(jié)果傳送線輸出指針,在本例中為M1-A。如果必要,該例程還使用分配給該進(jìn)程棧的工作存儲(chǔ)器。然后處理前進(jìn)到要執(zhí)行的下一例程1720。在該進(jìn)程棧1700中要執(zhí)行的最后一個(gè)例程1740是一個(gè)“送到下一個(gè)”例程。這一例程啟動(dòng)一次將數(shù)據(jù)傳送給下一個(gè)處理器的直接存儲(chǔ)器存取(DMA)。在“送入下一個(gè)”例程被調(diào)用以后,處理器防止由“送入下一個(gè)”輸出指針?biāo)傅妮敵鼍彌_被寫入,直到該“送到下一個(gè)”例程完成為止。結(jié)果,該處理器便可開始處理一個(gè)隨后分配的任務(wù)的一個(gè)后隨的進(jìn)程棧。在當(dāng)前的例子中,在“送到下一個(gè)”例程完成以后,處理繼續(xù)到第二處理器,其中執(zhí)行第二進(jìn)程棧1800。使用M2輸入端口地址于輸入及M2-A于輸出,執(zhí)行側(cè)而光例程1810。同樣,第二處理器繼續(xù)到該“送到下一個(gè)”例程,并在其中執(zhí)行該例程。處理繼續(xù)到第三處理器的進(jìn)程棧1900。執(zhí)行這些例程直到最后一個(gè)例程。在最后棧1900上的最后一個(gè)例程1930是一個(gè)返回例程。由于現(xiàn)在已經(jīng)完成了該任務(wù)這一例程使執(zhí)行終止。
本發(fā)明的一個(gè)優(yōu)點(diǎn)是可以通過增加或減少處理器或存儲(chǔ)器或者通過改變處理器和/或存儲(chǔ)器之間的關(guān)系容易地修改流水線。用戶只須簡(jiǎn)單地重新配置表示流水線的流水線圖并擦除包含以前分配的進(jìn)程棧的配置圖。這允許分配器容易地通過重新分配新流水線配置的進(jìn)程棧在流水線上重新平衡任務(wù),這是利用修改后的流水線圖進(jìn)行的。
雖然上述已經(jīng)參照特定實(shí)施例對(duì)本發(fā)明進(jìn)行了全面的描述,對(duì)于本領(lǐng)域內(nèi)的普通技術(shù)人員而言,其它代替實(shí)施例也將是顯而易見的。例如,分配器可用于多條流水線,其中每一條流水線根據(jù)需要分配任務(wù)。此外,上述各處理器可包括多個(gè)處理單元。這些多個(gè)處理單元也可以組成一條多處理器流水線。此外,處理流水線也可使用共享存儲(chǔ)器。還可以使用其它的代替分配方案。此外,對(duì)以前執(zhí)行過但已不再裝入的進(jìn)程棧的檢測(cè)方法也可使用與配置高速緩沖存儲(chǔ)器分離的一張裝入圖來完成。因此,不能將上述說明視為對(duì)本發(fā)明的范圍的限制,本發(fā)明是由所附的權(quán)利要求書定義的。
權(quán)利要求
1.一種用于處理高級(jí)指令的裝置,其特征在于a)多個(gè)處理單元;b)用于生成執(zhí)行所述高級(jí)指令的多條指令的裝置;以及c)用于動(dòng)態(tài)地將所述生成的指令組成至少一個(gè)組的裝置,各組至少包含一條要被所述處理單元之一處理的指令。
2.權(quán)利要求1的裝置,其特征在于所述處理單元包括用于順序地處理各所述指令組中的各指令的裝置。
3.權(quán)利要求2的裝置,其特征在于順序地耦合所述處理器的裝置。
4.權(quán)利要求3的裝置,其特征在于用于由所述處理單元順序地處理所述組的裝置。
5.權(quán)利要求4的裝置,其特征在于耦合到所述組織裝置,用于提供處理各所述指令的時(shí)間長(zhǎng)度的裝置。
6.權(quán)利要求5的裝置,其特征在于該組織裝置包括用于根據(jù)所提供的處理各指令的時(shí)間長(zhǎng)度動(dòng)態(tài)地將指令組成所述組的裝置。
7.權(quán)利要求5的裝置,其特征在于耦合到該組織裝置,用于提供所述處理單元的一個(gè)描述的裝置。
8.權(quán)利要求7的裝置,其特征在于該組織裝置包括用于根據(jù)所提供的處理各指令的時(shí)間長(zhǎng)度以及所提供的所述處理單元的描述,動(dòng)態(tài)地將指令組成所述組的裝置。
9.權(quán)利要求8的裝置,其特征在于耦合到該組織裝置,用于提供各所述處理單元可獲得的存儲(chǔ)器資源的一個(gè)描述的裝置。
10.一種用多個(gè)處理單元處理高級(jí)指令的方法,其特征在于下述步驟a)生成多條指令去執(zhí)行所述高級(jí)指令;以及b)動(dòng)態(tài)地將所述生成的指令組成至少一個(gè)組,各級(jí)至少包括一條要被所述處理單元之一處理的指令。
11.權(quán)利要求10的方法,其特征在于順序地處理各所述組中的各指令的步驟。
12.權(quán)利要求11的方法,其特征在于由所述處理單元順序地處理所述組的步驟。
13.權(quán)利要求12的方法,其特征在于提供處理各所述指令的一個(gè)時(shí)間長(zhǎng)度的步驟。
14.權(quán)利要求13的方法,其特征在于組織步驟包括動(dòng)態(tài)地根據(jù)所提供的處理各指令的時(shí)間長(zhǎng)度將這些指令組成所述組。
15.權(quán)利要求13的方法,其特征在于提供所述處理單元的一個(gè)描述的步驟。
16.權(quán)利要求15的方法,其特征在于該組織步驟包括動(dòng)態(tài)地根據(jù)所提供的處理各指令的時(shí)間長(zhǎng)度以及所提供的所述處理單元的描述將這些指令組成所述組。
17.權(quán)利要求16的方法,其特征在于提供各所述處理單元可獲得的存儲(chǔ)器資源的一個(gè)描述的步驟。
全文摘要
用于處理高級(jí)指令的一種裝置包括多個(gè)處理單元、用于生成執(zhí)行所述高級(jí)指令的多條指令的裝置、以及用于動(dòng)態(tài)地將所述生成的指令組成至少一個(gè)組的裝置,各組至少包括一條由所述處理單元之一處理的指令。此外,一種由多個(gè)處理單元處理高級(jí)指令的方法,包括生成執(zhí)行所述高級(jí)指令的多條指令以及動(dòng)態(tài)地將所述生成的指令組成至少一個(gè)組,各組至少包括一條由所述處理單元之一處理的指令。
文檔編號(hào)G06F9/50GK1068434SQ9210450
公開日1993年1月27日 申請(qǐng)日期1992年6月10日 優(yōu)先權(quán)日1991年7月10日
發(fā)明者吉米·達(dá)賴厄斯, 馬克·阿蘭·愛考夫, 艾侖·比特·焉森, 米歇爾·特雷爾·范奧沃 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
叶城县| 新蔡县| 沁阳市| 武汉市| 顺昌县| 马山县| 江油市| 托克托县| 海门市| 德保县| 青海省| 凤台县| 郯城县| 健康| 吉木乃县| 湟中县| 和林格尔县| 攀枝花市| 连城县| 东至县| 武邑县| 金乡县| 铁岭市| 罗山县| 陆川县| 大安市| 松阳县| 益阳市| 建德市| 吉木乃县| 南郑县| 河源市| 醴陵市| 柳林县| 弥渡县| 江北区| 耒阳市| 西宁市| 平顶山市| 饶阳县| 揭东县|