專利名稱:一條多處理器流水線的動態工作量平衡的制作方法
技術領域:
本發明一般涉及并行計算,更具體地涉及并聯在一條多處理器流水線上的處理工作量的動態平衡。
在現有技術中已經利用了各式各樣的處理器、存儲器、總線及其它資源的配置來提供并行與流水線處理。這些配置包括用于使用共享存儲器的多處理器的系統或者分擔并行工作量的處理器的系統。
下面所描述的是用于并行與流水線處理的各種配置及技術。
4,930,102號美國專利是針對一種利用并行處理器的計算機體系結構的,它包括位于各種物理部件之間的一個接口系統以及用于保持等待中的工作的一個排隊結構。更具體地,該計算機體系結構包括一個縱橫電路(Cross-barCircuit)及一個折疊式存儲隊列結構(accordian-storequeuestructure)。
4,920,487號美國專利是針對具有多個處理單元及共享存儲器的一種并行處理計算機系統的,它通過利用具有在其各連接點上執行相同的計算的一個網絡來平衡集合計算工作量。
4,875,161是針對一種矢量文件組織來支持多道程序執行流水線的。各流水線通過將文件存儲分段并以尋址這些段的不同單元能夠同時存取一個矢量文件的不同的塊。
4,850,027號美國專利是針對一種具有有限處理單元連接的圖象處理系統的,它不需要海量存儲器與總線容量便能提供多種圖象處理網絡選擇。
4,839,798號美國專利是針對一種具有多個聯機連接的計算機系統的計算機網絡系統的。各計算機系統能夠請求將一個作業傳送給另一個計算機系統。
4,814,978號美國專利是針對一種利用大量VLSI(超大規模集成)電路芯片的計算機設計。這一設計為一種靜態數據流體系結構,其中多個處理單元使用I/O電路進行外部通信,而使用通過一個選路網絡傳送的包進行內部通信,該網絡實現一條從任一處理單元到達任何其它處理單元的傳輸路徑。
4,766,566號美國專利是針對使用雙并行執行單元的一種RISC(精簡指令集計算機)型VLSI處理器的。可以在這兩個單元中增加一個加法器、一個乘法器或者一個ALU(算術邏輯單元)來平衡雙單元之間的工作量。
4,736,291號美國專利是針對一種包含用于處理存儲在一個大容量存儲器中的地震數據的多個獨立處理單元的通用陣列處理器的。一臺數字主計算機通過一個主接口單元提供該系統的總體控制。
4,633,387號美國專利是針對諸如多控制單元外圍數據存儲器系統的一種多單元數據處理系統的,其中,根據一個較為不忙的單元的一個工作請求,一個較忙的單元可以將工作移交給該較為不忙的單元。
4,543,626號美國專利是針對一種響應一條命令協調在一個多處理器系統中的多個處理器的操作的控制裝置的。所接收的每一條命令與一條包含路由矢量的予定的路由相關聯。為該路由生成一個控制塊。每一個路由矢量標識一個要執行的操作以及擬行該操作的站。各站具有一個包含控制塊的工作隊列,該站對這些控制塊順序地檢索與處理。
4,504,909號美國專利是針對用于實時處理從一臺CT掃描器所采集的數據的一種陳列處理器。在該系統中,給定的陳列的子部分的處理是與下一陣列的采集的數據集合的輸入交替進行的。
4,495,562號美國專利是針對一種用于并行處理系統的控制方法的,其中對一臺處理器的使用時間間隔進行周期性測定以確定其工作量。
4,493,020號美國專利是針對一種微程序編碼的數據處理系統的,其中每一條高級指令是通過一個或多個任務執行的,而每一任務則以一種微程序編碼方式執行一條或多條任務微指令來進行。三個分立的處理器以互相間隔120度相位進行操作但共享共同的物理硬件,諸如存儲器。根據可分配的寄存器的狀態,在需要時分配給處理器資源。
4,493,019號美國專利是地對一種具有三附高點體系結構的微程序編碼的數據處理系統的,該體系結構是為使用三個分立的以互相相隔120度的相位操作的處理器執行微指令而實現的。
4,384,324號美國專利是針對一種具有三階高點體系結構的微程序編碼的數據處理系統的,該體系結構是為使用三個分立的以互相相隔120度的相位操作的處理器執行微指令而實現的。
4,229,790號美國專利是針對用于并發處理任務與指令的一種系統的。該處理器是使用控制與功能單元流水作業介避免優先權約束負擔的一種多指令多數據屏面數字計算機。
3,905,023號美國專利是針對一種具有通過交換獨立地操作計算,I/O(輸入/輸出)及存儲器模塊的微程序編碼的多道處理信息處理系統的。
本發明包括一個用于處理高級指令的裝置,該裝置包括多個處理單元、用于生成執行所述高級指令的多條指令的裝置、以及用于動態地將所述生成的指令組成至少一個組,各組包括至少一條要被所述處理單元之一處理的指令。
此外,本發明包括由多個處理單元處理高級指令的一種方法,該方法包括,生成執行所述高級指令的多條指令、以及動態地將所述生成的指令組成至少一個組,各組至少包括一條要被所述處理單元之一處理的指令。
對本發明的性質與優點的進一步了解可參照本說明書的其余部分及附圖。
圖1是一臺典型的數字計算機的方框圖;
圖2是使用本發明的一個較佳實施例的一種可能的圖形流水線的方框圖;
圖3是存儲一張流水線圖以及其它對于將例程分配給該處理流水線有用的信息的存儲器的方框圖;
圖4與5給出上述圖3中展示的流水線圖中可能使用的數據結構的示例;
圖6是從該流水線圖構成的指針或鏈接表的展示,分配程序可利用它來分配任務;
圖7是用于分配或組織在流水線中處理的任務的一種方法的高級流程圖;
圖8是可能為一組給定的例程生成的進程棧的展示;
圖9是上述圖7中所描述的配置步驟的更詳細的流程圖;
圖10與11是一張配置表與一張例程表的示例;
圖12是上述圖7中所描述的步驟805的更詳細的流程圖;
圖13是一個配置高速緩沖存儲器項的示例;
圖14是上述圖7中所描述的分配步驟的更詳細的流程圖;
圖15是上述圖14中所描述的分配步驟的更詳細的流程圖;
圖16是上述圖14中所描述的新的目標瓶頸計算步驟的更詳細的流程圖;
圖17是上述圖7中所描述的裝入步驟的更詳細的流程圖;
圖18是上述圖7中所描述的短裝入步驟的更詳細的流程圖;以及圖19示出供執行的一組進程棧。
圖1是一個典型的數字計算機系統100的方框圖。該計算機系統包括一臺主計算機105。該主計算機包括連接到一個存儲器120的主處理器110,從而包括主流水線125、輸入設備130及輸出設備140。主處理順110可包括一個單一處理器或多個處理器。輸入設備130可包括一個鍵盤、鼠標器、圖形輸入板或其它類型的輸入設備。輸出設備140可包含一文本監視器、繪圖儀或其它類型的輸出設備。主計算機的主處理器同時可通過圖表適配器200連接到圖形輸出設備150,諸如一個圖形顯示器。圖形適配器200在總線160上接上來自主處理器110的與圖形相關的指令。這些指令包括諸如光線的數量與位置等屬性,以及諸如描繪一個三角形、多條線(polyline)之類的任務。然后,圖形適配器在一條圖形流水線210中執行這些指令,流水線210包括圖形處理器220與圖形存儲器230。然后,圖形流水線執行這些指令并在這些指令的基礎上更新幀緩沖器240。幀緩沖器240包括要在圖形輸出設備上顯示的每一個象素的數據。一個RAMDAC(隨機存取存儲器數到模轉換器)250將存儲在幀緩沖器中的數字數據轉換成RGB(紅綠藍)信號以提供給圖形顯示器150,從而描繪從主處理器輸出的所要求的圖形。
圖2是使用本發明的一個較佳實施例的一條可能的圖形流水線210。該圖形處理器流水線包括三個處理器300、310與320,別的流水線可包括更多或較少的處理器。此外,除了圖形流水線之外,主流水線或其它流水線可利用本發明的一個實施例。更進一步,各處理器可視為一個處理單元,其中每一單元可包括多個作為一條流水線、并行處理器等組合在一起的處理器。第一處理器300用作一個分配器來在流水線上分配工作量。別的流水線在流水線前面可有一分配器。存儲器包括內存儲器330、340與350加上外存儲器360、365與370。各內存儲器緊密地耦合于一個處理器以提供一個頻繁地使用的信息的小而快的存儲器。各外存儲器包含需要較多存儲區或處理器較難得用到的信息。外存儲器360、365與370分別以總線380、385與390耦合到處理器300、310與320上。
圖3是一個存儲器的方框圖,諸如存儲一張流水線圖400、任務分裂碼430、一張例程表440以及用于將例程分配給較佳實施例中的處理流水線的一個配置高速緩沖存儲器450的外存儲器360。一個屬性緩沖器存儲流水線所用的屬性,諸如窗口位置、變換、光線信息等。流水線圖400包括一張處理器圖410與一張存儲器圖420。處理器圖410包括流水線中分配了要執行的例程的每一處理器的一個處理器數據結構。如果該分配器可作為流水線中的一個處理器執行例程,則該分配器也同樣有一個數據結構。在下面圖4與5中更詳細地說明這些圖。包括在內存儲器中的還有任務分裂碼430、例程表440及配置高速緩沖存儲器450。任務分裂碼包括用于為各任務或高級指令生成可以指示處理器流水線去執行的例程或指令的代碼,從而將任務或高級指令分裂成一組例程或指令。例如,描繪一個三角形的任務可以分裂為順序執行的輸入、變換、剪輯、光線、變換以及輸出例程。例程表440包括由進程ID(PID)執行的可能的例程或指令的一張表。各例程項包括在分配進程中所使用的該例程的相關信息。下面將對例程表更詳細地說明。配置高速緩沖存儲器450包括前面已配置的任務的一張表。當前屬性緩沖器455包含應用軟件已經提交給適配器的當前屬性,諸如光線的數量與位置。下面對任務分裂碼430,例程表440與配置高速緩沖存儲器450更詳細地進行說明。
圖4與5給出可用于上面圖3所示的流水線圖400中的處理器與存儲器的數據結構的示例。處理器數據結構460展示了上面圖2中所示的流水線中所示的處理器P2的一個可能的數據結構。這一數據結構包括分別指向前一個處理器P1、下一個處理器P3、內存儲器M2與外存儲器M4與M5的指針461-465。該數據結構還可包括分配給該處理器的內與外存儲器以字為單位的數量466與467。該數據結構還可包括諸如處理器速度之類的可利用的其它信息468。存儲器結構470展示上面圖2中所示的存儲器M4的一個可能的數據結構。該存儲器數據結構包含以字為單位的存儲器數量473以及指向可使用該存儲器的處理器的指針471。該存儲器數據結構還可包含指向流水線中的前一存儲器的指針472,該指針用于在裝入步驟中跨越存儲器定位數據,該數據結構可包含要用到的其它信息474。
圖6為較佳實施例中從流水線圖構成的并且分配器能用來分配任務的指針或鏈接表500-580的示例。注意,從流水線中最后的存儲器550(M3)開始一張導向流水線中的第一存儲器560(M4)的鏈接表。這對于分配處理器只須簡單地從一個存儲器數據結構走向另一個數據結構來尋找信息是有用的。
圖7是用于分配或組成在處理流水線中進行處理的任務的一種方法的高層流程圖。在稱作配置的第一步驟800中,分配器為完成一個給定的任務要執行的例程建立一張配置表。配置表中包含執行各例程所需的時間長度以及各例程所需要執行的任何初始化例程。這些初始化例程設置某些該例程要用到的屬性或者為該例程分配工作存儲器。在第二步驟805中,對一個配置高速緩沖存儲器進行檢測以判定該任務在此之前已經被執行過。如果沒有,則在稱作分配的步驟810中,分配器利用上述流水線圖在流水線內的處理器之間動態地組織或分配這些例程,從而將這些例程或指令組合成例程或指令的指令流水線中的處理器去處理。分配進程是動態的,因為例程或指令的組織的分配并不是事先定義的而是根據下述因素變化的諸如正在分配的指令的處理時間的長度,用于執行這些指令的處理器的數量,處理器的當前處理工作量等。這一步驟中建立稱作進程棧的數據結構。一個進程棧是一個特定的處理器或處理器單元在完成其任務部分時要執行或處理的一組例程或指令。在本較佳實施例中,對于執行任何例程的每一個處理器有一個進程棧。在稱作裝入的下一個步驟820中,在進程棧中裝入指向適當的存儲器中要由處理器執行的數據與指令的適當指針、如果該任務在這以前已經被執行過,如在上述步驟805中所判定的,則執行另一個短裝入步驟825,在其中檢驗進程棧以保證全部需要的例程與數據指針都已裝入。在稱作執行的最后步驟830中,順序地執行分配給流水線中每一個處理器的進程棧以完成所要求的任務。在本較佳實施例中,然后可以像上面所述那樣處理下一個任務,包括在完成前一個任務的進程棧的執行之前開始進程棧的執行。這是可能的,由于一條流水線中的處理器可以順序地然而卻是獨立地處理其進行棧這一事實。
圖8是可能為一組給定的例程生成的一個進程棧900的示例。一個進程棧是要執行的例程910-940的一張鏈接表。在該鏈接表中的每一個例程完成一定量的工作。例程是一個自含的功能,它需要一個該進程的進程ID(標識符)(PID)950、該例程的代碼的局部地址960、一個由它得到該例程的輸入數據的輸入指針970、一個向它寫輸出數據的輸出指針980以及諸如指向局部工作存儲器的指針之類的局部信息990。這一信息是在下面要更詳細地說明的裝入步驟中加入到進程棧中的。各處理器從其進程棧項中讀取這些指針,以其指針調用例程,然后對進程棧中的下一例程重復這一過程。由于進程棧是一張鏈接表,它可以容易地由一個控制程序動態地建立和操作。
圖9是上面圖7中所說明的配置步驟800的更詳細的流程圖。在第一步驟1000中,執行給定任務的任務分裂代碼以提供完成這一給定任務所要執行的例程的一個配置表。任務分裂代碼照顧到事先由屬性指令裝入系統的該系統的各種當前屬性。在第二步驟1005,在配置表上加上任務類型的一個配置ID(CID)。在本較佳實施例中,CID是以任務分裂代碼生成配置表中所取的路徑為基礎的。結果,對于任何以后的同一類型的具有相同當前屬性的任務,其CID是相同的。在第三步驟1010,對于配置表中的每一個例程,搜索一張例程表以確定執行該例程所需時間的長度以及對該例程的任何限制。例程限制包括哪一個處理器可以執行該例程這樣的限制(例如由于需要存取一個適配器輸入緩沖器而必須由第一處理器執行該例程,或者由于需要存取幀緩沖器而必須由最后那個處理器執行該例程)。該例程需要外存儲器、以及其它可能的例程限制。在分配步驟中,這一信息將是最為有用的。然而,如下面將要更詳細地說明的,這些限制并不常用并且一般情況下在分配步驟中并不引起任何困難。然后在步驟1020中更新例程表以反映這一信息。
圖10與11為本發明的一個較佳實施例中所用的一張配置表1040與一張例程表1065的示例。配置表給出為執行一個給定的任務所需要的例程中每一個的進程ID(PID)1045、執行每一個例程所需的時間1050以及對分配該例程的任何限制1055。配置表還包含任務類型的CID1060。配置表是在配置步驟中生成的并且在分配步驟中受到重用。例程表包括所有已知例程的PID1070、例程代碼在分配器存儲器中的地址1075、每一個例程的大小1080、執行每一個例程所需的時間1085、對每一個例程的任何分配限制1090以及有時候指向一個初始化例程的一個指針。這一信息中有一些是用于在配置步驟中完成該配置表的。其余的信息則在裝入步驟中使用。
圖12是上面圖7中描述的步驟805的一張更詳細的流程圖,其中判定這一類型的任務在以前是否已經執行過。在第一步驟1100中,讀取配置高速緩沖存儲器中的一個給定任務的第一項。如果沒有找到第一項(步驟1110),則處理繼續前進到分配步驟(步驟1150),這是因為以前沒有以相同的有關屬性(例如模型中所用的光線的數據)執行過當前任務。如果在配置高速緩沖存儲器中找到了該給定任務的一個項,則將該項的配置ID與給定的任務的CID進行比較。如果CID相同,則具有相同的內部屬性的同一任務以前已經執行過。結果,處理繼續前進到短裝入步驟(步驟1140)。如果CID不相同,則檢驗當前項以確定在配置高速緩沖存儲器中是否有另一后續項(步驟1130)。如果沒有,則處理繼續前進到分配步驟(步驟1150),這是因為當前任務在此之前并未以相同的內部屬性執行過。如果有,則處理返回到步驟1120繼續進行。
圖13為本發明的較佳實施例中所用的一個配置高速緩沖存儲器項1160的示例。該配置高速緩沖存儲器面包括配置ID(CID)1165、一個指向下一高速緩沖存儲器項的指針1170、前面執行的進程棧的付本1175、指向前面執行的進程棧的局部存儲器地址的指針1180、以及各進程棧的裝入標志1185用于指示哪些進程棧仍裝入在局部存儲器中。其它信息1190可根據要求加入。
圖14為上面圖7中描述的分配步驟810的更詳細的流程圖。在第一步驟1210中,分配器計算一個目標瓶頸。這時要分配給任何處理器的最長路徑長度(執行例程的時間)。在本較佳實施例中,該目標瓶頸是這樣計算的將從配置表中找出的要執行的所有例程的路徑長度之和除以處理器的數目。在第二步驟1220,將配置表中所列出的例程順序地分配給處理器。就是在這一過程中,在分配器的存儲器中建立了進程棧的框架。一個給定的處理器所要執行的例程被裝入一個進程棧,每一個執行例程的處理器有一個進程棧。下面將對將例程分配給處理器更詳細地進行說明。在第三步驟1230,判定是否最后一個處理器分配了比目標瓶頸更長的路徑長度。如果是這樣,則在步驟1240中計算一個新的目標瓶頸,并且步驟1220的分配過程重新開始。下面在圖16中更詳細地說明新的目標瓶頸的計算。如果所有的處理器都分配了小于或等于目標瓶頸的路徑長度,則在步驟1250中檢驗配置表中所列出的例程限制是否都又被當前的處理器例程分配所滿足。如果這些限制都已滿足,則過程繼續到步驟1270中的裝入步驟。如果限制未滿足,則在步驟1260中將這些例程以及任何插入的例程重新分配給適當的處理器。例如,如果將一個例程分配給了流水線中的第二處理器,而該例程限制于流水線中的第一處理器,則將該例程連同任何其它前面的分配給第二處理器的例程重新分配給第一處理器。重新分配步驟一經完成,則過程繼續到步驟1270中的裝入步驟。
圖15為上面圖14中所描述的分配步驟1220的更詳細的流程圖。在第一步驟1310中,將第一例程分配給第一處理器,在這一分配中,配置表中所給出的該例程的路徑長度被輸入到接收該例程的處理器的一個當前分配的路徑長度中。可使用該處理器數據結構來暫時保存該當前分配路徑長度。在第二步驟1320,分配器判定是否在配置表中還有要分配給處理器的其它例程。由于這是第一次進入步驟1320,答案很可能是肯定的。在下一步驟1330中,將已分配給該處理器的當前路徑長度加上要分配的下一例程的路徑長度與目標瓶頸進行比較。如果這一量不大于目標瓶頸,則在步驟1310中將下一例程分配給該處理器,并且將該例程的路徑長度加到當前處理器的當前分配路徑長度上。這一過程一直重復到下一例程的路徑長度再也不能在不超出目標瓶頸的條件下加到分配給該處理器的路徑長度為止。在步驟1340,分配器隨即通過在處理器數據結構中查找下一個處理器來判定是否還有要分配例程的另一個處理器。如果有,則分配過程在步驟1350中通過訪問其處理器數據結構前進到下一處理器。然后,在步驟1310中將一個例程分配給該處理器,并且將該例程的路徑長度輸入到接收該例程的處理器的當前分配的路徑長度中。如果步驟1340的判定為否,則在步驟1360中將其余的例程分配給最后一個處理器,并且將這些例程的路徑長度加到該最后處理器的當前分配路徑長度上。
圖16為上面圖14中所描述的一種較佳的新目標瓶頸計算步驟的更詳細的流程圖。在這一過程中,其目的為得到一個其值為大于當前目標瓶頸的最小的路徑線性和的新瓶頸。在第一步驟1405中,以將其設置為其最大可能值初始化變量最小路徑并將一個計數器i設置為1,在第二步驟1410,判定配置表中的例程i是否存在。由于這是第一例程(i=1),答案為是。在下一步驟1415中,將路徑長度和設置為0并將計數器j設置為等于計數器i。因步驟1420中,判定路徑長度和是否大于目標瓶頸。由于這是第一次通過,答案為否。在步驟1425中,將配置表中給出的例程路徑長度加在路徑長度和上,并且通過將計數器j增加1而過程前進到下一例程。在步驟1430中,判定例程j是否在配置表中。如果是,則處理返回步驟1420。如果為否或者上面步驟1420的答案為是,則步驟1435判定路徑長度和是否小于最小路徑長度。如果是,則步驟1440將最小路徑長度設置為等于該路徑長度和。然后步驟1445將計數器i增加1以開始對下一組例程的處理。然后步驟1410判定例程i是否存在于配置表中。如果否,則處理返回到圖14的步驟1220。
圖17是上面圖7中所描述的裝入步驟的更詳細的流程圖。最好從最后一個處理器的進程棧開始向后操作到第一處理器的進程棧。這使得裝入作為帶有從第一進程棧至最后進程棧的指針的鏈接表的進程棧較為容易。在第一步驟1510中,以從進程棧得到的進程ID(PID)唑例程表讀取最后一個進程棧的第一個例程的地址。然后將該例程復制到能被該處理器訪問的局部存儲器中,最好是內存儲器。然后將局部例程地址裝入進程棧中的例程地址中。在步驟1520中,還為該例程所使用與生成的數據的輸入與輸出地址生成輸入與輸出指針。假定這是該進程棧中的第一個例程,輸入指針便是輸入端口地址。輸出指針則指向該處理器能夠訪問的內存儲器中的一個局部地址。在步驟1530,如果例程表指定了一個初始化例程作為這一例程可使用的初始化例程,則調用該初始化例程。這一初始化例程將供該程使用的屬性,諸如窗口位置、變換、光線信息等,裝入局部存儲器。此外,該初始化例程在局部存儲器中建立該例程所需的任何局部的或工作存儲區。在進程棧中裝入一個指向該工作存儲區的指針。在為該列程、輸入與輸出緩沖器以及工作存儲區分配存儲器時,對配置高速緩沖存儲器中所存儲的前面執行過的那些進程棧的付本進行檢驗以確定是否有可利用的存儲器空間。如果將以前分配給前面執行過的一個進程棧的存儲器重新分配給當前的進程棧,則將該進程棧在配置高速緩沖存儲器中的一個裝入標志關掉。這指明前央執行過的進程棧的資源不再分配給該進程棧。這一標志是在下面要詳細說明的短裝入步驟中使用的。在步驟1540中,判定這是否進程棧上的最后例程。如果不是,則執行返回到步驟1510裝入該進程棧中的下一個例程。如果是,則步驟1550判定這是否是最后的進程棧(第一個裝入的但是進程棧鏈接表中的最后一個)。如果是,則步驟1555將一個稱作返回的最終例程加到該進程棧上,當在執行步驟中執行這一返回例程時,它完成這些進程棧的執行。如果否,則步驟1560將一個稱作“送到下一個”的最終例程加到當前進程棧的末尾,其目的在處理器之間移動數據。這一例程的輸入是前一例程的輸出地址而且輸出地址是該處理器的輸出緩沖器地址。然后,步驟1565將進程棧以及指向該進程棧的一個指針裝入到局部存儲器中并且裝入配置高速緩沖存儲器中。此外,在配置高速緩沖存儲器中存儲該進程棧的一個接通的裝入標志,用來指示該進程棧及其資源已裝入局部存儲器中。然后步驟1575判定這是否是第一進程棧(最后裝入的但是在進程棧鏈接表中的第一個進程棧)。如果不是,則執行返回到步驟1510去加入前一進程棧的第一個例程。如果是,則處理繼續到步驟1580中所示的執行步驟。
圖18是上面圖7中所描述的短裝入步驟的更詳細的流程圖。如上面所描述的裝入步驟,最好從最后處理器的進程棧開始向后操作到第一處理器的進程棧。這使得作為具有從第一進程棧到最后進程棧的指針的一張鏈接表的那些進程棧在必要時較容易重新裝入。在第一步驟1610,從配置高速緩沖存儲器讀取給定的任務與屬性的最后進程棧。在步驟1620中,檢驗該進程棧的裝入標志以確定該進程棧是否仍裝入。如果不是,則在步驟1630將該進程棧重新裝入局部存儲器,如以上在裝入步驟中所描述的。這包括重新裝入該例程、輸入指針、輸出指針、重新運行初始化例程等。如果對步驟1620的判定為是,或者在重新裝入進程棧之后,則判定最后的進程棧已經從配置高速緩沖存儲器中讀入。如果尚未,則處理返回到步驟1610。否則步驟1650進入到執行步驟。
圖19示出一組供執行的進程棧1700-1900,它們可能是為圖2中所述的流水線由上述配置、分配與裝入步驟生成的。這些進程棧中包括描繪具有一條側面光線及兩條定向光線的一個三維模型中的一個三角形的例程。進程棧執行從第一處理器執行第一個棧1700中的第一例程1710開始。在本例中,它是位于進程棧中所給出的局部存儲器地址上的網目輸入例程。該例程從進程棧中取得其輸入/輸出及局部靜態或工作存儲器指針,并執行其功能。該例程從輸入指針讀取數據,在本例中是M1輸入端口地址,并且將結果傳送線輸出指針,在本例中為M1-A。如果必要,該例程還使用分配給該進程棧的工作存儲器。然后處理前進到要執行的下一例程1720。在該進程棧1700中要執行的最后一個例程1740是一個“送到下一個”例程。這一例程啟動一次將數據傳送給下一個處理器的直接存儲器存取(DMA)。在“送入下一個”例程被調用以后,處理器防止由“送入下一個”輸出指針所指的輸出緩沖被寫入,直到該“送到下一個”例程完成為止。結果,該處理器便可開始處理一個隨后分配的任務的一個后隨的進程棧。在當前的例子中,在“送到下一個”例程完成以后,處理繼續到第二處理器,其中執行第二進程棧1800。使用M2輸入端口地址于輸入及M2-A于輸出,執行側而光例程1810。同樣,第二處理器繼續到該“送到下一個”例程,并在其中執行該例程。處理繼續到第三處理器的進程棧1900。執行這些例程直到最后一個例程。在最后棧1900上的最后一個例程1930是一個返回例程。由于現在已經完成了該任務這一例程使執行終止。
本發明的一個優點是可以通過增加或減少處理器或存儲器或者通過改變處理器和/或存儲器之間的關系容易地修改流水線。用戶只須簡單地重新配置表示流水線的流水線圖并擦除包含以前分配的進程棧的配置圖。這允許分配器容易地通過重新分配新流水線配置的進程棧在流水線上重新平衡任務,這是利用修改后的流水線圖進行的。
雖然上述已經參照特定實施例對本發明進行了全面的描述,對于本領域內的普通技術人員而言,其它代替實施例也將是顯而易見的。例如,分配器可用于多條流水線,其中每一條流水線根據需要分配任務。此外,上述各處理器可包括多個處理單元。這些多個處理單元也可以組成一條多處理器流水線。此外,處理流水線也可使用共享存儲器。還可以使用其它的代替分配方案。此外,對以前執行過但已不再裝入的進程棧的檢測方法也可使用與配置高速緩沖存儲器分離的一張裝入圖來完成。因此,不能將上述說明視為對本發明的范圍的限制,本發明是由所附的權利要求書定義的。
權利要求
1.一種用于處理高級指令的裝置,其特征在于a)多個處理單元;b)用于生成執行所述高級指令的多條指令的裝置;以及c)用于動態地將所述生成的指令組成至少一個組的裝置,各組至少包含一條要被所述處理單元之一處理的指令。
2.權利要求1的裝置,其特征在于所述處理單元包括用于順序地處理各所述指令組中的各指令的裝置。
3.權利要求2的裝置,其特征在于順序地耦合所述處理器的裝置。
4.權利要求3的裝置,其特征在于用于由所述處理單元順序地處理所述組的裝置。
5.權利要求4的裝置,其特征在于耦合到所述組織裝置,用于提供處理各所述指令的時間長度的裝置。
6.權利要求5的裝置,其特征在于該組織裝置包括用于根據所提供的處理各指令的時間長度動態地將指令組成所述組的裝置。
7.權利要求5的裝置,其特征在于耦合到該組織裝置,用于提供所述處理單元的一個描述的裝置。
8.權利要求7的裝置,其特征在于該組織裝置包括用于根據所提供的處理各指令的時間長度以及所提供的所述處理單元的描述,動態地將指令組成所述組的裝置。
9.權利要求8的裝置,其特征在于耦合到該組織裝置,用于提供各所述處理單元可獲得的存儲器資源的一個描述的裝置。
10.一種用多個處理單元處理高級指令的方法,其特征在于下述步驟a)生成多條指令去執行所述高級指令;以及b)動態地將所述生成的指令組成至少一個組,各級至少包括一條要被所述處理單元之一處理的指令。
11.權利要求10的方法,其特征在于順序地處理各所述組中的各指令的步驟。
12.權利要求11的方法,其特征在于由所述處理單元順序地處理所述組的步驟。
13.權利要求12的方法,其特征在于提供處理各所述指令的一個時間長度的步驟。
14.權利要求13的方法,其特征在于組織步驟包括動態地根據所提供的處理各指令的時間長度將這些指令組成所述組。
15.權利要求13的方法,其特征在于提供所述處理單元的一個描述的步驟。
16.權利要求15的方法,其特征在于該組織步驟包括動態地根據所提供的處理各指令的時間長度以及所提供的所述處理單元的描述將這些指令組成所述組。
17.權利要求16的方法,其特征在于提供各所述處理單元可獲得的存儲器資源的一個描述的步驟。
全文摘要
用于處理高級指令的一種裝置包括多個處理單元、用于生成執行所述高級指令的多條指令的裝置、以及用于動態地將所述生成的指令組成至少一個組的裝置,各組至少包括一條由所述處理單元之一處理的指令。此外,一種由多個處理單元處理高級指令的方法,包括生成執行所述高級指令的多條指令以及動態地將所述生成的指令組成至少一個組,各組至少包括一條由所述處理單元之一處理的指令。
文檔編號G06F9/50GK1068434SQ9210450
公開日1993年1月27日 申請日期1992年6月10日 優先權日1991年7月10日
發明者吉米·達賴厄斯, 馬克·阿蘭·愛考夫, 艾侖·比特·焉森, 米歇爾·特雷爾·范奧沃 申請人:國際商業機器公司