專利名稱:處理系統(tǒng)調度的制作方法
技術領域:
本發(fā)明涉及具有共享一個存儲器的多個處理器的處理系統(tǒng),尤其是涉及這種系統(tǒng)中的作業(yè)調度。
提高處理系統(tǒng)的處理能力,尤其在不改變應用軟件條件下,通常的方法是使用所謂的超標量處理器,其探測在相鄰指令之間所發(fā)現(xiàn)的細粒狀的并行性。在超標量處理器中,處理器內部的功能單元可進行安排來同時并行執(zhí)行幾個指令。有時這可以被稱為指令級并行性(ILP)。
提高處理能力的另一種方法是將處理系統(tǒng)建成為一個多處理器系統(tǒng),即一個有多個處理器并行操作的處理系統(tǒng)。某些處理系統(tǒng)通過一種公知的對稱多處理器(SMP)體系結構獲得了高性能的處理能力。與通過超標量處理器獲得的細粒度并行性相對比,SMP體系結構利用粗粒度并行性,它或者是在依據(jù)并發(fā)程序原則設計的程序中明確指定,或者是從設計用來在單處理器系上連續(xù)執(zhí)行的程序在編譯期間內提取得到。在SMP體系結構中,幾個任務中的每一個是各自在幾個處理器中的某一個上執(zhí)行的。這些任務是相互并發(fā)的進程或者線程在1995年意大利Ligure Santa Margherita召開的第22屆計算機體系結構的國際專題討論年會上,由Sohi、Breach和Vijaykumar提出的“多標量處理器”文章中描述了一種所謂的多標量處理器。在多標量執(zhí)行模型中,將一種表示關注控制相關性的靜態(tài)程序的控制流圖表(CFG)劃分成多個任務,且多標量處理器可采取任務尺寸大小的步驟,推測性地途經CFG,而不會暫停檢查一個任務中的任何指令。通過將任務的初始程序計數(shù)器傳遞到處理單元,從而將一個任務分配給處理單元集合中的一個進行執(zhí)行。那么多任務可以在處理單元上并行執(zhí)行,這會產生一個每周期多指令總計執(zhí)行速率。多標量硬件的功能是途經CFG,向處理單元分配任務并以連續(xù)執(zhí)行的方式來執(zhí)行這些任務。還提供附加的硬件以保持推測的存儲器操作、探測違反存儲器相關性、以及在需要時的初始化糾正動作。由于在開頭的任務是唯一一個確保非推測的任務,除開頭部分以外的所有單元進行的存儲器操作都是推測性的。
在處理器系統(tǒng)中,外部事件是大多數(shù)初始作業(yè)的起源,作業(yè)的出現(xiàn)是非常隨機的,并在處理器系統(tǒng)內部創(chuàng)建一個異步作業(yè)流。在這樣的系統(tǒng)中,一種有效的作業(yè)處理是尤其難以獲得的。仍然有普遍的需要更為有效的處理系統(tǒng)。
日本專利6276198的摘要披露了一種包交換,其中提供了多個處理器單元,而且包的交換處理可以用相互獨立的單元執(zhí)行。
日本專利4100449A的摘要披露了一種通過STM-多路復用ATM信道在ATM交換和信號處理器陣列(SPA)之間分配信號單元的ATM通信系統(tǒng)。處理負荷的分散是通過STM交換信號單元來實現(xiàn)的,其中STM基于用路由標記加法器增加到每個虛擬信道上的SPA數(shù)量。
日本專利5274279的摘要披露了一種用于并行處理的設備,它形成一套分層的處理器,其中處理器單元組負責并行和流水線處理。概述因此本發(fā)明的一般目的是提供一種處理系統(tǒng),其能夠提供作業(yè)的有效并行執(zhí)行。本發(fā)明的另一目的是提供安排用于有效地并行處理作業(yè)的共享存儲器的處理器。本發(fā)明還有一個目的是提高處理系統(tǒng)中用于并行作業(yè)執(zhí)行的調度有效性。本發(fā)明更深入的目的是在多處理器系統(tǒng)復用現(xiàn)存的用于單處理器系統(tǒng)中的應用軟件。
由本發(fā)明實現(xiàn)的這些和其他目的如隨后的權利要求書定義所示。
依據(jù)本發(fā)明的第一個方面,一種處理系統(tǒng)包含多個共享存儲器的處理器,安排用來實現(xiàn)作業(yè)的并行處理;和數(shù)據(jù)一致性裝置,用來保證數(shù)據(jù)的一致性。處理系統(tǒng)包含一個調度器,用來依據(jù)第一算法調度作業(yè)在處理器上的執(zhí)行,它使用作業(yè)的局部/并發(fā)來提高執(zhí)行效率。依據(jù)本發(fā)明的處理系統(tǒng)進一步使用用來以第二算法給出的順序退出作業(yè)的裝置。第二算法與第一算法不同。更可取的是,第二算法依據(jù)先進先出的原則進行操作,其中可保持如創(chuàng)建順序等的全局順序。對使用的特定系統(tǒng)可以調整第一算法,并且可以把對特定處理器的調度建立在如源、目標、通信信道或是為討論的作業(yè)創(chuàng)建處理器基礎之上。處理系統(tǒng)使用一個通用的作業(yè)隊列,而且更為可取的是調度可以適應性地執(zhí)行。而且更可取的是調度程序和用于退出的裝置是分布式單元。
依據(jù)本發(fā)明的第二方面,電信系統(tǒng)包含一個上述的處理系統(tǒng)。
依據(jù)本發(fā)明的第三方面,用于這樣一個系統(tǒng)的作業(yè)處理方法包含以下步驟以通常作業(yè)隊列的形式存儲作業(yè);在共享存儲器的并行處理器上執(zhí)行作業(yè);以及當處理器對共享存儲器中的全局數(shù)據(jù)進行操作時確保數(shù)據(jù)的一致性。該方法還進一步包含步驟依據(jù)第一算法對在通用隊列中的作業(yè)進行調度以使其在處理器上執(zhí)行;以及依據(jù)與第一算法不同的第二算法退出作業(yè)。更為可取地,第二算法依據(jù)先進先出的原則進行操作,并可保持如創(chuàng)建順序等的全局順序。第一算法可以被進行調整到使用的特定系統(tǒng),并且可以把對特定處理器的調度建立在如源、目標、通信信道或是為討論的作業(yè)創(chuàng)建處理器基礎之上。更為可取地,對要執(zhí)行的作業(yè)的調度適應于特定的應用特征、操作相位、和/或系統(tǒng)的硬件體系結構。
在共享存儲器的系統(tǒng)中,全部的應用程序和數(shù)據(jù)都可以被系統(tǒng)中所有共享存儲器的處理器進行訪問。因此,當處理器對全局數(shù)據(jù)進行操作時必須確保數(shù)據(jù)一致性(順序以及原子訪問相關)。
依據(jù)本發(fā)明,數(shù)據(jù)一致性能夠由作業(yè)的推測性并行執(zhí)行來保證,這里可以探測作業(yè)之間的相關性沖突,并在探測到有相關性沖突時退回和重新開始推測性執(zhí)行的作業(yè)。相關性沖突或者是在變量標記的基礎上進行探測,或者是基于對讀和寫地址的比較進行探測。
通過對較大區(qū)域而不是個別數(shù)據(jù)進行標記,可以實現(xiàn)更粗的粒度相關性沖突檢測。
依據(jù)本發(fā)明的解決方案能夠在實質上增加處理系統(tǒng)的吞吐量。
通過使用共享存儲器的多處理器和提供合適的用于確保數(shù)據(jù)一致性的裝置,已經存在的用于單處理器系統(tǒng)的應用軟件可以復用。在使用標準非定制微處理器實現(xiàn)多處理器的情況下,所有的應用軟件都能夠通過自動轉換應用軟件和為支持多處理器而可能進行的系統(tǒng)虛擬機/操作系統(tǒng)修改來實現(xiàn)復用。另一方面,如果多處理器以專有設計的專用硬件來實現(xiàn),應用軟件能夠直接遷移到多處理器環(huán)境中。兩種情況都可以,與從頭設計應用軟件相比,節(jié)約寶貴的時間,并減少程序設計成本。
本發(fā)明通過使用固有的作業(yè)局部性/并發(fā)性來有效地調度用于并行執(zhí)行的作業(yè),提供了增加吞吐量的優(yōu)點。本系統(tǒng)更進一步容易軟件適應于硬件體系結構,應用特征和操作模式,即它普遍地適用于幾乎全部的處理系統(tǒng),尤其是基于事件的處理系統(tǒng)。此外,尤其在面向塊/對象設計的情況下,本發(fā)明還允許對已經存在應用軟件的復用。根據(jù)閱讀本發(fā)明的實施例的詳細描述可以使本發(fā)明所提供的其他優(yōu)點變得明顯。
詳細描述在整個附圖中,對相應的或是類似的元件采用了相同的標記符號。
圖1為依據(jù)本發(fā)明的處理系統(tǒng)的原理圖。依據(jù)本發(fā)明的一種增加吞吐量的有效方法包括使用多個共享存儲器的處理器10a-e。更為可取的是,多個共享存儲器的處理器10a-e是以基于標準微處理器的多處理器系統(tǒng)的形式實現(xiàn)。本發(fā)明中的術語-“多個共享存儲器的處理器”還包含邏輯上相似的實現(xiàn),如在同一芯片上實現(xiàn)的多個共享存儲器的處理單元。所有的處理器10a-e共享一個通用的存儲器,即所謂的共享存儲器11。一般來說,外部事件以作業(yè)信號的形式首先到達一個輸入/輸出(I/O)單元15,然后從這里被傳送到一作業(yè)隊列16。通常作業(yè)隊列中的項實際上并不是作業(yè)本身,而是作業(yè)信號或是作業(yè)的任何其它表示。然而,在整個描述中,“作業(yè)”也將用來互換地表示“作業(yè)表示”的出現(xiàn)。與作業(yè)隊列中的項有關的作業(yè)將被進行調度用以在處理器10a-e之一上執(zhí)行。還可以對作業(yè)進行調度,使其以一定的順序,一個確認的順序退出。退出包括確認在作業(yè)執(zhí)行期間內對存儲器所作的改變完成;在通用隊列中插入內部產生的作業(yè);和向外部單元等發(fā)送輸出信號等等。調度器17在作業(yè)進入作業(yè)隊列16的人口處或者是稍候的場合執(zhí)行調度。下面將給出實際調度更為詳細的描述。
根據(jù)調度,作業(yè)被分配到不同的處理器進行執(zhí)行。由于處理器為共享存儲器的處理器,指令和數(shù)據(jù)存儲在共享存儲器11中。在不同處理器上并行執(zhí)行的作業(yè)有一定的相互關聯(lián),這是有一定可能性的。有可能發(fā)生有關全局數(shù)據(jù)的并行的情況。為了確保數(shù)據(jù)是一致的,提供了用來確保數(shù)據(jù)一致性的裝置14。確保數(shù)據(jù)一致性的裝置14通常涉及不同處理器10a-e以及共享存儲器11的功能,因此一般以分布式的形式構造,如圖1中的虛線所示。下面將對確保數(shù)據(jù)一致性的裝置14進行更深入的描述。
當一個作業(yè)執(zhí)行完成時,該作業(yè)就必須退出或提交。由提交器18依據(jù)調度的提交次序執(zhí)行這樣的退出過程。因此,提交器18與共享存儲器11、作業(yè)隊列16相結合以一種合適的方式執(zhí)行退出過程。下面將對提交器18和提交次序展開更深入的討論。一個作業(yè)的執(zhí)行可以導致共享存儲器中儲存的數(shù)據(jù)的改變,但是也可引起新的作業(yè)或消息。這些內部創(chuàng)建的作業(yè)或消息目的為了外部單元或是當前系統(tǒng)的處理器。目的為了外部單元的作業(yè)和消息被傳送到輸入/輸出(I/O)單元15,以便更進一步傳送到向右邊接收器。內部作業(yè)也可以指向沿該路徑,或者直接進入作業(yè)隊列,或者甚至直接進入某個處理器。
對基于事件的系統(tǒng)的計算一般可以模擬為狀態(tài)機,其中從外部世界輸入的作業(yè)會改變系統(tǒng)的狀態(tài),并可產生一輸出作業(yè)。如果一獨立的/不相交的狀態(tài)機能夠處理每一作業(yè)階段,在各種狀態(tài)機之間就不會有任何的數(shù)據(jù)共享。但是考慮到存在用全局狀態(tài)表示的全局資源,通常對一個給定全局狀態(tài)的操作不得不僅僅對于一個處理器是“原子”的,該處理器執(zhí)行部分系統(tǒng)狀態(tài)機,并一次訪問一個給定的全局狀態(tài)。在通用隊列中的作業(yè)之間甚至可能會有順序相關性。在一個共享存儲器的系統(tǒng)中,共享存儲器內全部的程序空間和數(shù)據(jù)空間對所有的處理器來說都是可以訪問的。因此,當處理器需要對所有或者至少不只一個處理器所共用的全局數(shù)據(jù)進行操作時,就必須確保數(shù)據(jù)的一致性。這可以由數(shù)據(jù)一致性方法來完成。
在那些軟件基于順序編程的處理器系統(tǒng)中,對作業(yè)以正確的順序退出是很重要的。這允許對作業(yè)之間的順序相關性進行檢查和校正。在每一優(yōu)先級中最重要的邏輯退出次序是遵循先進先出(FIFO)的原則,即最早的作業(yè)最先退出。發(fā)生于不同源的作業(yè)也能夠互相相關,則可以把如創(chuàng)建次序等的全局次序用作為提交次序。異步作業(yè)可以在執(zhí)行后立即退出,因此可以給定一個缺省的全局次序。因此,提交調度通常是依據(jù)作業(yè)隊列FIFO的次序執(zhí)行的。
對要執(zhí)行的作業(yè)進行調度的最簡單的方式也是依據(jù)FIFO的次序。也就是說,在作業(yè)隊列16中有一隊作業(yè)被執(zhí)行,分布這些作業(yè)的次序以便按與它們進入作業(yè)隊列16的相同次序執(zhí)行。只要在系統(tǒng)中有可用的處理器,就會將最早可用的作業(yè)順序調度到不同的處理器中。當一個處理器可用時,就會將最早的作業(yè)導引到該處理器中。一旦執(zhí)行這些作業(yè),則就通過退出過程保存該全局次序。
這個設計在或多或少全部地由程序次序所指定的作業(yè)次序的基礎上,將作業(yè)調度到處理器中。然而,還有其它的幾個考慮在多處理器系統(tǒng)中調度作業(yè)時也是很重要的。例如,由不同處理器執(zhí)行的作業(yè)可以對相同的數(shù)據(jù)進行操作,這會導致數(shù)據(jù)的不一致/沖突,接下來會導致回退或拖延,從而降低整體的處理速度。使用高速緩存從而利用數(shù)據(jù)在時間和空間上的局部性的優(yōu)越性。也存在一個相應的作業(yè)局部性,其可用于以更有效的方式來調度作業(yè)。同樣,在異步配置中,所有的處理器沒有執(zhí)行所有任務所需要的能力,且作業(yè)將不得不等待一個具有正確能力的處理器可用。
因此,依據(jù)本發(fā)明,執(zhí)行調度是依照第一算法執(zhí)行的,且提交調度是依照第二算法執(zhí)行的。第二算法與第一算法不同,而且更可取地它是一FIFO類型,并保持如創(chuàng)建次序等的全局次序。第一算法,即在其之后執(zhí)行執(zhí)行調度的規(guī)則,能更好地適應特殊處理系統(tǒng)。因此,可以對算法進行調整以適合于特定應用的特征、操作階段和處理系統(tǒng)的硬件結構體系。這樣的調節(jié)可以在安裝或修改系統(tǒng)的基礎上執(zhí)行,但是也可以在操作期間內周期性地或間歇性地執(zhí)行。
第一算法使用那些試圖最優(yōu)化整個系統(tǒng)性能的規(guī)則和試探法。一種考慮是為了減少并行操作的情形和/或在當?shù)靥幚砥鞲咚倬彺嬷袃?yōu)化高速緩存命中率,盡可能地保持那些對相同的數(shù)據(jù)進行操作的作業(yè)在同一處理器上。另外考慮是為了在所有時間保持所有的處理器忙碌,而平衡處理器之間的負載。第三個考慮是避免資源缺乏和滿足實時的要求。所有的作業(yè)必須保證在一定的時間期間內被調度到一個處理器。
圖2表示了依據(jù)本發(fā)明的處理系統(tǒng)1的另一個實施例。這兒,用來確保數(shù)據(jù)一致性的裝置14是一個對所有處理器10a-e的公用裝置,但是與處理器10a-e的實際作業(yè)執(zhí)行部分相分開。這是為了說明一種情況,作業(yè)在處理器10a-e上推測性地執(zhí)行,用來確保數(shù)據(jù)一致性的裝置14包含如一個回寫存儲區(qū)和相關性檢查裝置。處理器10a-e可以從例如存儲器11內的一個程序存儲12中讀出程序指令,而用來確保數(shù)據(jù)一致性的裝置14主要針對存儲器11中的一個數(shù)據(jù)存儲13進行操作。
作業(yè)隊列16是一個用于并行處理的關鍵部分,這是因為它包含所有執(zhí)行作業(yè)所必需的信息。圖3a是一個依據(jù)本發(fā)明的作業(yè)隊列16的一個實施例原理說明。在接下來的例子中,為了便于描述,在處理系統(tǒng)中只有3個并行處理器。在圖3a中作業(yè)隊列16安排為作業(yè)的一個FIFO緩沖區(qū)。作業(yè)隊列16中的每一入口20與圖中的一條線相對應,而且包含多個位置21-24,在其中鍵入作業(yè)的相關信息。作業(yè)說明21或者其它任何的表示,與關聯(lián)信息22如作業(yè)的起始地點、作業(yè)類型分類、作業(yè)的期望目標、執(zhí)行的數(shù)據(jù)等一起都是可用的。作業(yè)隊列16還包括兩個標志符以保持執(zhí)行情況的徑跡。開始標志23表示那個特定入口的作業(yè)是否已經開始了它在處理器10a-e中任何一個上的執(zhí)行?!?”表示作業(yè)開始了,“0”表示它仍然在等待執(zhí)行。相似地,就緒標志24表示一個作業(yè)是否已經完成了執(zhí)行,并等待退出。這兒“1”表示作業(yè)已經準備好了。作業(yè)隊列16的這樣一種簡單結構是可能和本發(fā)明一起使用的。
由于作業(yè)隊列是一個FIFO的隊列,因此提交次序是由隊列中的作業(yè)次序來定義的。指針25與提交次序相關聯(lián),并指示作業(yè)隊列中最先進入的作業(yè)。當指示的作業(yè)退出以后,指針25就在作業(yè)隊列16中向上移動一步從而指示要退出的下一個作業(yè)。第二算法的一個簡單的FIFO特性是由FIFO隊列和指針25的使用創(chuàng)建的。
在說明中,將調度器和提交器用單個單元表示。然而事實上,這種裝置的天生特征是以分布式的方式實現(xiàn)它們。因此部分調度器或它的功能可以在不同的處理器和共享存儲器中出現(xiàn)或執(zhí)行。以同樣的方式,提交器最好也作為一個分布式的裝置來實現(xiàn)。
圖3a的實施例中,由于作業(yè)隊列自身中沒有存儲執(zhí)行調度信息,當一個處理器10a-e變得可用時就必須執(zhí)行執(zhí)行調度。在這種情況下,處理器通知調度器有關的空閑執(zhí)行容量,且調度器搜索作業(yè)隊列以向該處理器提供一個合適的作業(yè)。然后依據(jù)前面所描述的第一算法選擇這個合適的作業(yè)。被選擇的作業(yè)然后在空閑的處理器上執(zhí)行。當一個處理器變得可用時,實際的調度就會執(zhí)行了,而且不會提前進行,這種過程的一個優(yōu)點是一個不平衡的負載分布能夠很容易地通過使算法搜索幾個不同的優(yōu)先選擇來進行補償。依據(jù)第一優(yōu)先權用于某個處理器的作業(yè),如果沒有開始打算對那個處理器可用的作業(yè)時,它就可以在其它的處理器上執(zhí)行。因此就會分布有暫時不平衡的負載。
然而,由于當一個處理器變得可用時就會發(fā)生調度,而且調度本身需要過多的處理器容量,由于處理器必須等待調度的執(zhí)行,因此在某些應用中這種方法就會很緩慢。
圖3b說明了依據(jù)本發(fā)明的作業(yè)隊列16的一個可選實施例。以與前面相同的方式發(fā)生提交調度,但是在這個實施例中的作業(yè)隊列16每一入口包含一個額外的字段。調度執(zhí)行標志26包含有關當前作業(yè)的最優(yōu)選處理器的信息。當一個新作業(yè)進入隊列時,調度器17基于如作業(yè)本身信息21和相關信息22來執(zhí)行一個執(zhí)行調度。調度器17查找一個合適的處理器,并在執(zhí)行標志26中存儲一個指示。當一個處理器變得可用時,就搜索執(zhí)行標志以獲得該可用處理器的指示,然后開始執(zhí)行。
由于調度是提前進行的,因此開始執(zhí)行一個新作業(yè)的過程是很快的。然而,在沒有為特定的處理器調度作業(yè)的情況下,空閑的處理器容量就不能直接使用。然而在這種情況下一個可能的解決方案是可以將某些已經調度給其它處理器的等待作業(yè)重新調度到空閑處理器。
在圖3c中說明了本發(fā)明中使用的作業(yè)隊列的另一個實施例。這兒,提交調度可以通過對作業(yè)隊列中的每一個入口引入提交標志27來執(zhí)行。提交標志27是依據(jù)第二算法在作業(yè)進入作業(yè)隊列16時進行設置的,用來指示作業(yè)的全局次序。對這樣的一個作業(yè)隊列,由于提交標志27保持了該次序的徑跡,不同作業(yè)的位置不必是一FIFO的次序。在退出時,提交器18搜索具有已經準備好退出的作業(yè)相對應的最低提交標志的作業(yè)。
圖3d說明了本發(fā)明中使用的作業(yè)隊列的其它解決方案。作業(yè)隊列16被分成三個部分28,每一個對應于一個特定的處理器。當一個新的作業(yè)進入作業(yè)隊列時,調度程序17就依據(jù)作業(yè)的全局次序設置提交標志27。然而,調度程序17依據(jù)第一算法確定作業(yè)隊列中的位置。如果一個作業(yè)被調度到第一處理器,該作業(yè)就進入作業(yè)隊列的第一部分,如果一個作業(yè)被調度到第二處理器,該作業(yè)就進入作業(yè)隊列的第二部分,而且如果一個作業(yè)被調度到第三處理器中,則該作業(yè)就進入作業(yè)隊列的第三部分。當一個處理器變得可用時,就選擇與特定處理器相對應的部分28中第一作業(yè)來執(zhí)行。在退出時,提交標志27用來確保退出的執(zhí)行是以正確的全局次序進行的。這允許向處理器提供并行相關/耦合的隊列。
上面所描述的公用的作業(yè)隊列是以一個單元的形式實現(xiàn)的。這兒,公用的作業(yè)隊列還可以用不同存儲器單元的存儲器部分構成,彼此之間相互關聯(lián)。這種耦合的隊列可以包含上面所描述的隊列設計中的任何一個。使用相關的存儲區(qū),其對不同的處理器會出現(xiàn)不同的訪問次數(shù),這也是可能的。
對于本領域的任何一個技術人員來說,上面所描述的四個作業(yè)隊列的實施例僅僅是作業(yè)隊列如何能夠被實現(xiàn)的例子。在維持關于分開執(zhí)行調度和提交次序的基本構思的同時,可以進行許多的變化和修改。
在優(yōu)化系統(tǒng)性能時執(zhí)行調度是非常重要的。如上所述,調度必須進行調整以適應于它將被用于的特定系統(tǒng)。圖4a是一個依據(jù)本發(fā)明的第一實施例的處理系統(tǒng)的框圖。處理系統(tǒng)包含多個共享存儲器的處理器10a-10e、一個共享的存儲器11、一個I/O單元15、一個調度器17、數(shù)據(jù)一致性裝置14和一個公用的作業(yè)隊列16。
I/O單元15接收進入的外部作業(yè),并輸出外出作業(yè)。調度器17調度進入的作業(yè)用于執(zhí)行和提交,并在作業(yè)隊列16中安排作業(yè)。每一處理器從公用的作業(yè)隊列16中讀取或接收作業(yè)用來進行處理。該讀取是依據(jù)第一算法的調度和依據(jù)一個合適的優(yōu)先權執(zhí)行的。
一般情況下作業(yè)是以信號消息的形式,其中每一消息有一個標題和一個信號主體。這個信號主體包含執(zhí)行一個軟件任務所必需的參數(shù)。在整個本發(fā)明中,術語“任務”和“作業(yè)”可以互相交換使用。通常,信號主體包含一個隱式或顯式的指針指向共享存儲器中的軟件代碼/數(shù)據(jù)以及所要求的輸入操作數(shù)。因此,處理器獨立地讀取和處理作業(yè)從而并行執(zhí)行相應的軟件任務或作業(yè)。
在并行任務執(zhí)行期間,處理器需要對共享存儲器中的全局數(shù)據(jù)進行操作。為了避免數(shù)據(jù)的不一致性,這是指幾個處理器對同一全局數(shù)據(jù)進行訪問和操作,或者是以不正確的次序對數(shù)據(jù)進行操作(在一個作業(yè)或任務的生命周期內,即直到作業(yè)退出為止),數(shù)據(jù)一致性裝置14一定必須在任何時候都確保數(shù)據(jù)的一致性。本發(fā)明為確保數(shù)據(jù)的一致性使用了沖突檢測和退回過程。
軟件任務可以推測性地并行執(zhí)行,對相關性沖突進行檢測,從而使那些被檢測出存在相關性沖突的推測性執(zhí)行的任務能夠退回并重新開始。通常標記方法或者地址比較方法能實現(xiàn)沖突檢測。在標記方法中,每一處理器包含用來對共享存儲器中變量的使用加以標記的裝置,然后就可以基于這些標記檢測出變量訪問沖突。通常由于退回(導致無用處理)而造成沖突檢測存在損失。應注意到在使用之前鎖定源可以和沖突檢測一起使用從而減少由于退回而造成的損失。
通常情況下,作業(yè)信號包含一個指針,隱式或顯式的,指向存儲器中存儲的應用軟件內的指令,以及這些指令執(zhí)行時需要的操作數(shù)。從這個意義上來說,作業(yè)信號在定義相應的作業(yè)上是完全自我包含的。
由協(xié)議控制信息流的系統(tǒng)的通用要求是某些相關事件必須以接收的次序進行處理(必須滿足給定的系統(tǒng)協(xié)議所施加的次序要求)。不管系統(tǒng)是如何實現(xiàn)的,這對系統(tǒng)來說是不變的。通常,作業(yè)之間的退出次序是由處理核心的到達/創(chuàng)建來定義的,而且一般不會發(fā)生改變。然而,在一個處理不同優(yōu)先權等級的作業(yè)信號的處理系統(tǒng)中,先退出具有較高優(yōu)先權等級的作業(yè)信號,然后退出具有較低優(yōu)先權等級的作業(yè)信號,這是很有用的。一般來說,同一優(yōu)先權等級的作業(yè)以與它們到達/被創(chuàng)建的相同的次序退出。
稍后將對沖突檢測和確保數(shù)據(jù)一致性的裝置進行更為詳細地描述。調度實例基于通信源的映射舉例來說,一個分層結構處理系統(tǒng)包含一個中央高級處理器節(jié)點和一些被稱為區(qū)域處理器的低級處理器,其中每一個區(qū)域處理器輪流為一些硬件設備服務。在這樣的系統(tǒng)中,源于硬件設備的事件和來自為一組設備服務的區(qū)域處理器的事件滿足由給定協(xié)議所定義的管理需求所設定的條件(除錯誤條件以外,該條件由在一個較高級的處理來保護)。這樣來自特定設備/區(qū)域處理器的任務形成一組任務,通常它們相對于其他這樣的組而言是獨立的(一直到順序相關性開始)。在每一個這樣的組中,作業(yè)更可能訪問同樣的數(shù)據(jù)(在相關的時間尺度上),因此很可能提高緩存點擊率。此外,在來自不同區(qū)域處理器的作業(yè)之間幾乎不存在順序相關性。為了保持這些特性,每一個設備/區(qū)域處理器必須總是把它的作業(yè)送給同樣的處理器10a-e。舉例來說,在電信應用中,接受自用戶的一連串數(shù)字,或者某個中繼設備所接收的一連串ISDN用戶部分信息必須以接收的順序進行處理。然而,從兩個獨立的中繼設備接收的一連串信息可以以任意的順序處理,而只要保持每個中繼設備的信息順序。
在圖4a中可以看出,來自一個預定源如一個特定的硬件設備或通訊信道等的作業(yè)31被調度給預定的處理器10e,來自另一個預定源如一個特定的區(qū)域處理器的作業(yè)32被調度給另一個預定的處理器10b。由于源的數(shù)量一般遠遠超過共享存儲器的處理器的數(shù)量,通常每個處理器被分配了多個源。在典型的電信/數(shù)據(jù)通信應用中,可能有1024個區(qū)域處理器和一個中央處理器結點連接。以負載平衡的方式將區(qū)域處理器映射到在中央結點的多個共享存儲器的處理器,這意味著每一個共享存儲器的處理器大約連接205個區(qū)域處理器(假定在中央結點有5個處理器,所有區(qū)域處理器產生同樣的負載)。然而實際上,具有一個更細的粒狀理論(finer granularity),將來自諸如信號設備、用戶終端等硬件設備的作業(yè)調度給中央節(jié)點處理器,這是有益的。這通常會使它更容易獲得負載平衡。電信網中的每一區(qū)域處理器可以控制幾百個硬件設備。所以依據(jù)本發(fā)明的解決方案是將來自硬件設備的作業(yè)調度給在中央節(jié)點的多個共享存儲器的處理器,而不是由一個中央節(jié)點處理器來處理10000個或者更多的硬件設備,它當然是以共享時間的方式來處理負載。
一個諸如Telefonaktiebolaget LM Ericsson的AXE數(shù)字交換系統(tǒng)之類的系統(tǒng),用由處理器-到-處理器(CP-to-CP)的信號、或者所謂的內部作業(yè)相連接的片段,處理一個外部作業(yè),該系統(tǒng)在實施由協(xié)議所要求的調度需求外,還可能需要實施自己的調度需求。通常這些CP-to-CP信號不得不以它們產生的順序進行處理(除非被在執(zhí)行的最近一個片段所產生的更高優(yōu)先級的信號所取代)。如果每一個CP-to-CP信號(內部作業(yè))在產生它的處理器上面處理,就可以滿足附加的調度需求。這如圖4b所示,虛線37從處理器10a到作業(yè)隊列16,然后又返回同一處理器10a。同樣的,由處理器10e創(chuàng)建的內部作業(yè),如線30所示,返回到同一處理器10e。這樣,由返饋它們來控制內部作業(yè)返回到產生它們的同一處理器或處理器集-因此就保證它們以與它們的產生順序相同的順序進行處理。這種調度即可以提高緩存點擊率,又可以減少相關性?;谲浖δ?數(shù)據(jù),目標/源的映射如上所述,一些系統(tǒng)以由內部作業(yè)(例如,CP-to-CP緩沖信號)相連的“片段”方式來處理外部作業(yè)。執(zhí)行調度可以以這樣的方式執(zhí)行,其中多個共享存儲器的處理器的集合以多處理器流水線的方式運行,每一個外部作業(yè)以相當于一連串作業(yè)的片段方式處理,該作業(yè)在流水線的不同處理器階段執(zhí)行。這意味著第一算法會將由流水線中第一處理器創(chuàng)建的內部作業(yè)調度到它本身或者其他特定的處理器執(zhí)行。因此該調度和前面圖4b描述的調度不同。只要所有由一個階段產生的信號以與它們產生的順序相同的順序送到下面的處理器階段,以信號創(chuàng)建的順序來處理信號的順序需求將會得到滿足。對該準則的任何偏離都會導致競爭,其結果是相關性沖突和退回從而降低系統(tǒng)的吞吐量。如果對一給定片段的執(zhí)行會導致不只一個信號,那么這些信號都不得不以和它們產生相同的順序送到下面的處理器階段?;蛘?,如果信號分布到兩個或者更多的處理器上,就有必要確認產生的競爭可能性將會比較難以避免退回。
圖4b中的處理系統(tǒng)也可以用來說明這種可能性。由一個作為多處理器流水線的一部分的處理器如10a所產生的內部作業(yè),并沒有依據(jù)粗的虛線37所示返回到同一處理器,而是依據(jù)細虛線38所示返回到另一個處理器10d。在流水線中處理器的邏輯順序是串行的,而不是并行的,即使物理布局是并行的。
可以理解的是,當在多處理器流水線中的一個處理器級已經執(zhí)行了一個屬于第一作業(yè)鏈的作業(yè),并把產生的內部作業(yè)信號發(fā)送給下一個處理器級,通常它可以自由地開始處理來自下一個作業(yè)鏈中的作業(yè),因此可以提高系統(tǒng)的吞吐能力。
從總的來看,“流水線”執(zhí)行會減少訪問全局數(shù)據(jù)的沖突原子的數(shù)量,然而在例如基于通信源的作業(yè)執(zhí)行中,會提高緩存點擊率和減少順序相關性。因此一種最有利的情況是二者的結合,其中表示對于原子訪問難度來說具有高風險的流可以在流水線中進行處理,而能夠以類別之間很少或者沒有順序相關性進行類別分類的流被并行處理。集群的使用圖5是一個簡化的共享存儲器的多處理器系統(tǒng)的簡圖,該系統(tǒng)具有一個共享存儲器軟件的面向對象設計。共享存儲器11內的軟件具有面向對象/塊的設計,并被組織成一個塊或類B1到Bn的集合,其中每一塊都負責執(zhí)行某一或某些功能。一般地,每個塊都分為兩個主要的段一個程序段用來存儲代碼,和一個數(shù)據(jù)段用來存儲數(shù)據(jù)。在一個塊的程序段中的代碼只能對屬于同一塊的數(shù)據(jù)進行訪問和操作。數(shù)據(jù)段最好同樣也分為兩段,第一段“全局”數(shù)據(jù)包含多個全局變量GV1到GVn,和第二段包含如“私有”數(shù)據(jù),諸如記錄R1到Rn等,其中每一記錄一般包含多個記錄變量RV1到RVn,如記錄Rx所示。
一般來說,一個信號進入一個塊時啟動塊內數(shù)據(jù)的處理過程。當接收到作業(yè)時,不論是外部的還是內部的,每個處理器執(zhí)行由作業(yè)信號指示的塊中的代碼,并操作該塊中的全局變量和記錄變量,這樣就執(zhí)行一個軟件任務。在圖5中,對軟件任務的執(zhí)行用每一個處理器中的波浪線指示。
在圖5的示例中,第一處理器10a執(zhí)行在軟件塊B88中的代碼。多個指令被執(zhí)行,其中只顯示了指令I20到I23,且每一個指令對塊內的一個或多個變量進行操作。例如,指令I20對記錄R1中的記錄變量RV28進行操作,指令I21對記錄R5中的記錄變量RV59進行操作,指令I22操作全局變量GV43,以及指令I23操作全局變量GV67。相應地,處理器10b執(zhí)行塊B1中的代碼并對該塊中的變量進行操作,處理器10c執(zhí)行塊B5中的代碼并對該塊中的變量進行操作,以及處理器10d執(zhí)行塊B2中的代碼并對該塊中的變量進行操作。
一個面向塊的軟件示例是Telefonaktiebolaget LM Ericsson的PLEX(用于交換的編程語言)軟件,其中整個軟件是由塊組織而成的。Java應用軟件是真實面向對象設計的實例。
在面向對象的軟件設計中,共享存儲器中的軟件是由如上所述的塊或類組織而成的,而且當接收到一個外部作業(yè)(指向某個特定塊)時,相應的處理器執(zhí)行在該塊/對象中的代碼,并且可以產生一個內部作業(yè)形式的結果送給另一個塊/對象。當開始執(zhí)行這個內部作業(yè)時,它在指定的塊/對象上執(zhí)行,并可能產生另一個內部作業(yè)送給某些其他的決/對象。該鏈一般會在幾個內部作業(yè)以后消失。例如,在電信應用中,每個外部作業(yè)一般產生5-10個內部作業(yè)。
為面向對象軟件設計而定制的流水線執(zhí)行調度是將軟件塊/類的集群分配在處理器上,并在目標塊的基礎上調度作業(yè)。一個集群分配給一個處理器,而另一個集群分配給另一個處理器。以這樣的方式,每一個共享存儲器內的塊/類集群都分配給一個預定的處理器,且該分配方案由例如調度器內的查詢表和共享存儲器內的查詢表來實現(xiàn)。該查詢表在例如作業(yè)ID等的基礎上把一個目標塊和每個作業(yè)相鏈接,同時將每一個目標塊和一個預定的塊集群關聯(lián)。調度器依據(jù)查詢表內的信息將外部作業(yè)分配給處理器。共享存儲器內的查詢表可以為所有的處理器所用,從而將內部作業(yè)分配給處理器。換句話說,當一個處理器產生一個內部作業(yè)時,它將參考該查詢表來決定i)基于作業(yè)ID的相應目標塊,ii)確定的目標決所屬的集群,及iii)該確定的集群所分配的處理器,然后將內部作業(yè)信號送到恰當?shù)奶幚砥?。很重要的是要注意到通常每一塊屬于一個且僅此一個集群,雖然一種具有重疊集群的分配方案可以以一個稍微復雜一點的方式,通過使用除作業(yè)ID以外的例如執(zhí)行狀態(tài)信息來實現(xiàn)。
圖4c說明了一個基于作業(yè)目標塊39a到c的執(zhí)行調度算法。共享存儲器11中的一個具有特定目標塊39a的作業(yè)被調度給特定的處理器10e執(zhí)行,如實線路徑34所示。共享存儲器11中的另一個具有另一目標塊39c的作業(yè)被調度在特定處理器10b內執(zhí)行,如虛線路徑33所示。
而圖4d說明基于數(shù)據(jù)源的作業(yè)執(zhí)行調度。一個作業(yè)執(zhí)行塊/類39a中的代碼,且該作業(yè)依據(jù)基于源的調度算法調度到處理器10d。該輸入數(shù)據(jù)沿實線35而行。另一個任務,執(zhí)行另一個塊/類39b中的代碼,被調度給處理器10b。該輸入數(shù)據(jù)沿虛線36而行。
為了最大的收益,對處理器的調度必須做到所有的處理器是平均負載的。因此,塊/類集群是依據(jù)一個“平均負載”的準則進行劃分的(花費在每一個集群上的時間總量可以通過例如在一個單獨的處理器上運行一個相似的應用來獲知或者通過監(jiān)視系統(tǒng)性能來收集,以便重調劃分)。
不管實際上的執(zhí)行調度是如何實現(xiàn)的,還是可能會發(fā)生這樣的情況,不同的處理器上的負載暫時或長期是不均衡的。這樣的情況可能會導致不同作業(yè)的延遲時間會有相當?shù)牟煌榱俗柚惯@種情況的發(fā)生,最好是不時地調整第一算法。一個用來實現(xiàn)自適應負載均衡的簡單過程是將某些原先調度給具有最高負載的處理器的作業(yè)重新調度給其他的預定處理器。這樣的重新調度可以周期性地進行,或者當檢測到在一個嚴重不均勻的作業(yè)分布的時候間歇性地進行。這樣的過程不僅能夠處理負載分布的臨時變化同樣也可以處理負載分布的長時間變化。
現(xiàn)在,下面將對沖突檢測進行描述。在一個用沖突檢測來確保數(shù)據(jù)一致性裝置的系統(tǒng)里,軟件任務(作業(yè))由多個處理器推測性地并行執(zhí)行,而且對相關性沖突進行檢測從而使那些檢測到存在相關性沖突的推測性執(zhí)行的任務能夠以正確的順序退回和重新開始。
退回的基本原理是返回到涉及導致沖突的一個或者兩個作業(yè)的開始處。直到該點執(zhí)行中所做的所有改變都被取消,退回的作業(yè)稍后會以保證進度的效率不受影響這樣的方式,或者這樣的延遲之后,重新開始。這一般意味著該方案不允許導致重現(xiàn)退回。實際退回的決定將取決于如沖突作業(yè)創(chuàng)建的全局順序。
更可取的是,為實現(xiàn)沖突檢測,每一個處理器在執(zhí)行任務時會對共享存儲器中變量的使用加以標記,這就能使變量訪問沖突被檢測到。在其非常基本的層次中,標記方法包含對使用在共享存儲器里的單個變量做標記。然而,通過標記更大的區(qū)域而不是單獨數(shù)據(jù),就可以實現(xiàn)一個更經歷粒狀(course-grained)相關性的沖突檢測。一種實現(xiàn)更經歷粒狀相關性檢測的方法是使用包含分頁的標準內存管理技術。另一種方法是標記組群變量,而且可以發(fā)現(xiàn)標記包含記錄中的所有記錄變量的整個記錄,而不是標記單個記錄變量,要有效的多。然而,以這樣的方式——如果一個作業(yè)使用一給定的數(shù)據(jù)區(qū),則某些其他作業(yè)使用同一區(qū)域的可能性會非常低,來選擇“數(shù)據(jù)區(qū)”是重要的。否則,更大范圍的數(shù)據(jù)區(qū)標記實際上可能會導致更高的回退頻率。
圖7說明了在面向對象軟件設計中使用變量標記來檢測相關性沖突。如上所述,共享存儲器11由塊/類B1到Bn組織而成,且多個處理器10a到10c和共享存儲器11相連。圖7中更詳細地顯示了兩個塊,塊B2和塊B4。在該標記方法的特定實現(xiàn)中,塊中的每一個全局變量GV1到GVn和每一個記錄R1到Rn都與一個標記字段相關連,如圖7所示。
標記字段有和每一個與共享存儲器系統(tǒng)連接的處理器對應的一位,因此在這個例子中,每一個標記字段都有三位(可用于讀,寫和執(zhí)行態(tài))。所有的位在開始時重置,每一個處理器在訪問(讀或寫)變量或記錄之前設置自己所對應的位,然后再讀取整個標記字段用于計算。如果在標記字段中有其他任何位已經被設置,則沖突已經臨近,處理器退回正執(zhí)行的任務,取消在執(zhí)行中直到那點的所有改變,包括重置所有對應的標記位。反之,如果沒有其他的位被設置,則處理器繼續(xù)執(zhí)行任務。每個處理器記錄在執(zhí)行中訪問的每個變量的地址,并在它被退回/被提交時用它來重置其在每一個相應的標記字段內的對應位。為了在沖突被檢測到時能夠進行退回,必須在每個作業(yè)的執(zhí)行期間保持所有修改了的變量(如在修改之前的變量狀態(tài))和它們地址的備份。
在圖7中,處理器10b需要訪問全局變量GV1,并設置它在和GV1相關的標記字段第二位置的所有位,然后讀取整個標記字段。在這種情況下,字段(110)包含一個由處理器10a設置的位和一個由處理器10b設置的位,因此隨即就檢測到變量訪問沖突。處理器10b退回正在執(zhí)行的任務。相應的,如果處理器10b需要訪問紀錄R2,它設置在第二位置的所有位,然后讀取整個標記字段。字段(011)包含一個由10b設置的位和一個由10c設置的位,因此會檢測到記錄訪問沖突。同樣在這種情況下處理器10b回退其正執(zhí)行的任務。當處理器10c需要訪問記錄R1時,它首先在相關標記字段的第三位置設置其所有位,然后讀取整個字段用于計算。在該情況下,沒有其他的位被設置,所以允許處理器10c訪問記錄用來讀或寫。注意,當退回一個檢測到沖突的作業(yè)時,同樣也必須依據(jù)全局順序如創(chuàng)建順序來退回與之發(fā)生沖突的作業(yè)。
一個更可取的標記字段方法是為每個處理器提供兩位,而不是上述的單個位。一位用于寫而一位用于讀。由于絕大多數(shù)的數(shù)據(jù)僅僅被讀取,因此這種方法可以最小化退回。同樣為每個作業(yè)而不是每個處理器提供標記字段也是可能的。
另一種沖突檢測的方法可以被稱為地址比較方法,其中在任務結束時比較讀和寫的地址。和標記方法相比最大的不同之處在于在任務開始執(zhí)行期間一般不檢測其他處理器的訪問,而僅僅在退出時。在我們的國際專利申請W088/02513中已經描述了一種實現(xiàn)地址比較方法的相關性檢測單元的特定類型的例子。
已有的順序編程應用軟件一般表示大量的投資,而且對于單處理器系統(tǒng)來說已經存在成千上萬行的軟件代碼。在利用標準的現(xiàn)成供應的微處理器來實現(xiàn)多處理器的情況下,可以通過對應用軟件的自動轉化和對虛擬機/操作系統(tǒng)的可能修改來使用所有現(xiàn)存的軟件。這樣的自動轉化最好是通過重新編譯和相應的方式來實現(xiàn)。在多個處理器上執(zhí)行應用軟件時虛擬機/操作軟件的修改會支持數(shù)據(jù)的一致性裝置。另一方面,如果多處理器是用專門設計的專用硬件來實現(xiàn)的話,應用軟件能夠直接移植到多處理器環(huán)境中,這樣所有的軟件代碼可以移植到多處理器環(huán)境中并在多處理器環(huán)境中重新使用,因此就節(jié)省了時間和金錢。
在現(xiàn)有技術中,單處理器系統(tǒng)可以用一個分層視圖來說明。在最底層,可以發(fā)現(xiàn)諸如標準微處理器等的處理器。在下一層中包含操作系統(tǒng),然后是虛擬機,它用來解釋位于最頂層的應用軟件。
多處理器系統(tǒng)也同樣可以用一個分層試圖來說明。在底層,可以發(fā)現(xiàn)多個共享存儲器的處理器。然后是操作系統(tǒng)。虛擬機,例如可能是一個在SUN工作站上運行的APZ仿真器、一個編譯的高性能仿真器如SIMAX或者眾知的java虛擬機,被進行修改以用于多處理器支持和數(shù)據(jù)一致性的相關支持。接下來的程序應用軟件一般可以通過簡單添加和數(shù)據(jù)一致性相關支持的代碼、重新編譯已經編譯的塊/類、和修改已經解釋的解釋器、或者在合適的位置插入用于數(shù)據(jù)一致性支持的指令來后處理對象代碼,來進行轉化。
在基于變量標記的沖突檢測情況下,要執(zhí)行下面的步驟從而將為單處理器系統(tǒng)編寫的應用軟件移植到多處理器環(huán)境中。在每次對一個變量的寫訪問之前,在應用軟件中插入用于儲存該變量地址和原有狀態(tài)的代碼從而允許正確的退回。在每次讀和寫訪問一個變量之前,要在軟件中插入用于設置標記字段中的標記位、檢查標記字段和存儲該變量地址的代碼。然后應用軟件進行重新編譯、重新解釋或者后處理。硬件/操作系統(tǒng)/虛擬機同樣要進行修改從而提供沖突檢測相關支持,實現(xiàn)退回和重新設置標記字段。相應地,如果在執(zhí)行用于檢查標記字段的代碼時檢測到沖突,控制一般遷移給硬件/操作系統(tǒng)/虛擬機,它使用存儲的修改變量拷貝來執(zhí)行回退。除此之外,當一個作業(yè)退出時,硬件/操作系統(tǒng)/虛擬機一般要接管,并重新設置每一個標記字段中的相關位,該字段由那些被該作業(yè)訪問的變量的存儲地址所給定。
已有的在單處理器系統(tǒng)上執(zhí)行的應用軟件能夠象它原來運行那樣被移植到多處理器系統(tǒng)上,然后可以對該軟件進行連續(xù)的修改,每次一步,通過盡可能使軟件更加“并行”來獲得越來越多的性能。
當然,應用軟件可以從頭開始設計,例如,對于全新的應用來說,可以通過設計一個多線程軟件或者通過在某一編程語言中使用并行結構來實現(xiàn)。
圖8是一個說明表示依據(jù)本發(fā)明的作業(yè)處理方法的主要特征的流程圖。過程從步驟40開始,在步驟41中,作業(yè)被存儲在一個公用的作業(yè)隊列中。依據(jù)第一算法在步驟42中執(zhí)行執(zhí)行調度。步驟43中,作業(yè)在他們被調度去的處理器中進行處理。步驟44中,利用諸如數(shù)據(jù)沖突檢測來解決任何的數(shù)據(jù)相關性。在步驟45中,根據(jù)和第一算法不同的第二算法來最后退出和提交作業(yè)。過程在步驟46結束。如上所述,不同的步驟能夠以不同的順序執(zhí)行。例如,實際的提交調度能夠在作業(yè)隊列中存儲的作業(yè)上執(zhí)行。執(zhí)行調度能夠和存儲步驟連著執(zhí)行,也可以恰恰在實際作業(yè)執(zhí)行之前執(zhí)行。
圖6是一個通訊系統(tǒng)的原理圖,其中實現(xiàn)了依據(jù)本方面的一個或者更多處理系統(tǒng)。通訊系統(tǒng)2可以支持諸如PSTN(公共交換電話網絡),PLMN(公共陸地移動網絡),ISDN(集成服務數(shù)字網絡)和ATM(異步傳輸模式)網絡等不同框架服務網絡。通訊系統(tǒng)2基本上包含多個交換/路由結點50-1到50-6,它們之間用物理連接互相連接一般來說組成主干道組。交換/路由結點50-1到50-4具有接入終止到的接入點,象電話51-1到51-4和計算機52-1到52-4通過本地交換(沒有顯示)連接到入口點。交換/路由結點50-5和移動交換中心(MSC)53相連。MSC53和兩個基站控制器(BSC)54-1和54-2,及一個標識位置寄存器(HLR)結點55相連。第一BSC54-1和多個基站56-1和56-2相連,基站又和一個或者更多移動單元57-1和57-2進行通訊。相似地,第二BSC54-2和多個基站56-3和56-4相連,基站又和一個或者更多移動單元57-3進行通訊。交換/路由結點50-6和提供數(shù)據(jù)庫系統(tǒng)(DBS)的主計算機58相連。用戶終端和系統(tǒng)2相連,例如計算機52-1到52-4,就可以從在主機58中的數(shù)據(jù)庫系統(tǒng)請求數(shù)據(jù)庫服務。服務器59,如java服務器和交換/路由結點50-4相連。私有網絡如商業(yè)網絡(沒有顯示)也可以和圖6所示的通訊系統(tǒng)相連。
通訊系統(tǒng)2為和網絡相連的用戶提供了多種不同的服務。這些服務的例子如在PSTN和PLMN中的一般電話呼叫,消息服務,LAN互連接,智能網絡(IN)服務,ISDN服務,CTI(計算機電話集成)服務,視頻會議,文件傳輸,連接所謂的Internet,尋呼服務,視頻點播服務等等。
依據(jù)本發(fā)明,系統(tǒng)2中的每一個交換結點50都最好提供依據(jù)本發(fā)明的處理系統(tǒng)1-1到1-6。例如一個電話設置需要處理系統(tǒng)執(zhí)行一連串作業(yè)。該串作業(yè)在處理器層上定義了電話設置服務。一個依據(jù)本發(fā)明的處理系統(tǒng)最好同樣布局在通訊系統(tǒng)2的每一個MSC53,BSCs54-1和54-2,HLR結點55,主機58和服務器59上。
例如,一個操作Internet協(xié)議(IP)包的服務器包含一個依據(jù)本發(fā)明的處理系統(tǒng)。該處理系統(tǒng)的調度器可以安排調度屬于同一傳輸控制協(xié)議(TCP)對話的IP包給同一處理器。
術語基于事件的系統(tǒng)包含但不局限于電信,數(shù)據(jù)通訊和面向傳輸?shù)南到y(tǒng)。
術語“共享存儲器處理器”不局限于標準的現(xiàn)貨供應的微處理器,而包括所有類型的處理單元如對稱多處理器和專用硬件,使用應用軟件和可被所有處理單元所訪問的數(shù)據(jù)來操作共享存儲器。這同樣包括一些系統(tǒng),其中共享存儲器分布在幾個內存單元中,且訪問不是對稱的,因此不同的處理器訪問分散的共享存儲器的不同部分的次數(shù)是不同的。
上述實施例僅僅是一個例子,必須理解本發(fā)明并不僅僅局限于此。在下面披露和要求的基本原理以內的更進一步的修改、改變和改進都在本方面的范圍和精神以內。
權利要求
1.一種處理系統(tǒng)(1;1-1-1-12)包含一個用來輸入作業(yè)的作業(yè)隊列(16);多個共享存儲器的處理器(10a-10e),用來并行執(zhí)行作業(yè);一個調度器(17),依據(jù)第一算法調度上述作業(yè)使之由上述處理器執(zhí)行;裝置(14),當上述共享存儲器(11)中的數(shù)據(jù)被處理器(10a-10e)進行操作時,確保并行作業(yè)之間數(shù)據(jù)一致性;依據(jù)與上述第一算法不同的第二算法退出上述作業(yè)的裝置(18)。
2.權利要求1所述的處理系統(tǒng),其特征在于上述退出裝置(18)和上述調度器(17)都是分布式裝置。
3.如權利要求1或2所述的處理系統(tǒng),其特征在于上述退出裝置(18)是依據(jù)先進先出的原則進行操作的。
4.權利要求3所述的處理系統(tǒng),其特征在于上述退出裝置(18)是依據(jù)作業(yè)的一個全局程序退出作業(yè)的,其中最先進入的作業(yè)最先退出。
5.權利要求1到4中的任何一個所述的處理系統(tǒng),其特征在于上述第一算法能永久或間歇地調整以適于特定應用特征、操作階段、和/或處理系統(tǒng)(1;1-1-1-12)的硬件結構。
6.如權利要求1到5中任何一個所述的處理系統(tǒng),其特征在于上述調度器(17)安排用來將由預定源產生的作業(yè)調度到一個相同的處理器。
7.如權利要求6所述的處理系統(tǒng),其特征在于源是在輸入端口、外部處理器、和/或硬件設備之間進行選擇的。
8.如權利要求1到7中任何一個所述的處理系統(tǒng),其特征在于所述的調度器(17)安排用來將上述處理器中的第一個所產生的作業(yè)調度到所述的第一處理器。
9.如權利要求1到5中任何一個所述的處理系統(tǒng),其特征在于所述的調度器(17)將指向一個預定目標的作業(yè)調度到一個相同的處理器。
10.如權利要求1到5中任何一個所述的處理系統(tǒng),其特征在于作業(yè)需要來自共享存儲器(11)的不同數(shù)據(jù)區(qū)(39a-c)中的輸入數(shù)據(jù),而且所述的調度器將那些需要來自給數(shù)據(jù)區(qū)的數(shù)據(jù)的作業(yè)調度到一個相同的處理器。
11.如權利要求1到5中任何一個所述的處理系統(tǒng),其特征在于共享存儲器中的軟件包含多個軟件塊,每一個作業(yè)至少指向一個軟件塊,而且為實現(xiàn)基于目標的調度,所述調度器將一個塊集群分配到每一個處理器。
12.如權利要求1到5中任何一個所述的處理系統(tǒng),其特征在于所述的調度器(17)將在同一通信信道上到達的作業(yè)調度到一個相同的處理器。
13.如權利要求1到12中任何一個所述的處理系統(tǒng),其特征在于所述的調度器(17)將那些已經被調度到具有最高負載的處理器的作業(yè)定期重新調度到其它預定的處理器。
14.如權利要求1到13中任何一個所述的處理系統(tǒng),其特征在于所述的第一算法是基于靜態(tài)作業(yè)分類和相關性分析的。
15.如權利要求1到14中任何一個所述的處理系統(tǒng),其特征在于處理器(10a-10e)安排用來推測性地并行執(zhí)行多個作業(yè),而且確保數(shù)據(jù)一致性的裝置(14)包含用于檢測相關性的裝置;以及對于一個被探測到了相關性沖突的作業(yè),用來取消和重新開始推測性執(zhí)行該作業(yè)的裝置。
16.如權利要求15所述的處理系統(tǒng),其特征在于每一個處理器(10a-10e)包含用來對共享存儲器(11)中變量使用加以標記的裝置,用來檢測相關性的裝置包含基于標記的檢測變量訪問沖突的裝置。
17.如權利要求16所述的處理系統(tǒng),其特征在于標記裝置對多組變量加以標記。
18.如權利要求15所述的處理系統(tǒng),其特征在于共享存儲器(11)中的軟件包含多個軟件塊,每一作業(yè)與一個軟件塊相關聯(lián),而且每一處理器(10a-10e)包含用來對塊內變量的使用加以標記的裝置,相關性探測裝置包含用來基于標記的檢測變量訪問沖突的裝置。
19.如權利要求1到18中任何一個所述的處理系統(tǒng),其特征在于所述作業(yè)隊(16)中的每一個作業(yè)包含用來指示依據(jù)所述第一算法是由哪個處理器執(zhí)行該作業(yè)的信息(26,28)。
20.如權利要求1到19中任何一個所述的處理系統(tǒng),其特征在于所述作業(yè)隊列(16)中的每一個作業(yè)與依據(jù)所述第二算法用來指示退出作業(yè)的次序的信息(25,27)相關聯(lián)。
21.如權利要求1到20中任何一個所述的處理系統(tǒng),其特征在于所述作業(yè)隊列(16)是成段的,每一作業(yè)存儲在一個特定的、取決于依據(jù)所述第一算法執(zhí)行作業(yè)的處理器的部分(28)。
22.如權利要求1到21中任何一個所述的處理系統(tǒng),其特征在于所述的作業(yè)隊列(16)包含物理分離的部分,彼此之間互相關聯(lián)。
23.如權利要求22所述的處理系統(tǒng),其特征在于對所述處理器(10a-10e)中的第一個的所述分離部分訪問次數(shù),與所述處理器(10a-10e)的第二個的所述分離部分的訪問次數(shù)不同。
24.一種帶有處理系統(tǒng)(1;1-1-1-12)的通信系統(tǒng)(2),所述的處理系統(tǒng)包含一個用于輸入作業(yè)的作業(yè)隊列(16);多個共享存儲器的處理器(10a-10e),用來并行執(zhí)行作業(yè);一個調度器(17),調度上述作業(yè)使之由上述處理器(10a-10e)依據(jù)第一算法進行執(zhí)行;裝置(14),當上述共享存儲器(11)中的數(shù)據(jù)被處理器(10a-10e)進行操作時,確保并行作業(yè)之間數(shù)據(jù)一致性;和依據(jù)與上述第一算法不同的第二算法退出上述作業(yè)的裝置(18)。
25.權利要求24所述的通信系統(tǒng),其特征在于上述退出裝置(18)和上述調度器(17)都是分布式裝置。
26.如權利要求24或25所述的通信系統(tǒng),其特征在于上述退出裝置(18)是依據(jù)先進先出的原則進行操作的。
27.權利要求24、25或26所述的通信系統(tǒng),其特征在于上述第一算法能永久或間歇地調整以適于特定應用特征、操作階段、和/或通信系統(tǒng)(2)的硬件結構。
28.如權利要求24到27中任何一個所述的通信系統(tǒng),其特征在于所述的調度器(17)將上述處理器中的第一個所產生的作業(yè)調度到所述的第一處理器。
29.如權利要求24到27中任何一個所述的通信系統(tǒng),其特征在于所述的調度器(17)將由一個預定源產生的作業(yè)調度到一個相同的處理器。
30.如權利要求29所述的通信系統(tǒng),其特征在于所述的處理系統(tǒng)(1-12)包含在一個對國際協(xié)議(IP)包進行操作的服務器(59)中,所述的調度器(17)將那些屬于一個相同的傳輸控制協(xié)議(TCP)會話的IP包調度到一個相同的處理器。
31.如權利要求24到27中任何一個所述的通信系統(tǒng),其特征在于所述的調度器(17)將指向一個預定目標的作業(yè)調度到一個相同的處理器。
32.如權利要求24到27中任何一個所述的通信系統(tǒng),其特征在于所述的調度器(17)將在同一通信信道上到達的作業(yè)調度到一個相同的處理器。
33.如權利要求24到32中任何一個所述的通信系統(tǒng),其特征在于所述的調度器(17)將那些已經調度到具有最高負載的處理器的作業(yè)定期調度到其它預定處理器。
34.如權利要求24到33中任何一個所述的通信系統(tǒng),其特征在于所述的第一算法是基于靜態(tài)作業(yè)分類和相關性分析的。
35.一種在由多個共享存儲器的處理器(10a-10e)并行執(zhí)行作業(yè)的處理器系統(tǒng)(1;1-1-1-12)中處理作業(yè)的方法,包含以下步驟在作業(yè)隊列(16)中存儲輸入的作業(yè);依據(jù)第一算法將所述作業(yè)隊列(16)中的作業(yè)調度到所述的處理器(10a-10e);在上述的處理器(10a-10e)上執(zhí)行上述的作業(yè);當所述共享存儲器(11)中的數(shù)據(jù)被處理器(10a-10e)進行操作時,確保并行作業(yè)之間的數(shù)據(jù)一致性;和依據(jù)與所述第一算法不同的第二算法退出所述作業(yè)。
36.如權利要求35所述的處理作業(yè)的方法,其特征在于所述的第二算法是依據(jù)先進先出的原則進行操作的。
37.如權利要求36所述的處理作業(yè)的方法,其特征在于所述的依據(jù)所述第二算法的退出步驟是基于作業(yè)的全局次序的,其中作業(yè)隊列中最先進入的作業(yè)最先退出。
38.如權利要求35到37中的任意一個所述的處理作業(yè)的方法,其特征在于還包含一個使上述第一算法永久或間歇地適于特定應用特征、操作狀態(tài)、和/或處理系統(tǒng)(1;1-1-1-12)的硬件結構的另一步驟。
39.如權利要求35到38中的任意一個所述的處理作業(yè)的方法,其特征在于所述的調度步驟包含將由所述處理器的第一個所產生的作業(yè)調度到所述第一處理器的步驟。
40.如權利要求35到38中的任意一個所述的處理作業(yè)的方法,其特征在于所述的調度步驟包含將由一預定源產生的作業(yè)調度到一個相同處理器的步驟。
41.如權利要求35到38中的任意一個所述的處理作業(yè)的方法,其特征在于所述的調度步驟包含將指向一預定目標的作業(yè)調度到一個相同處理器的步驟。
42.如權利要求35到38中的任意一個所述的處理作業(yè)的方法,其特征在于作業(yè)需要從共享存儲器(11)中不同數(shù)據(jù)區(qū)(39a-c)輸入數(shù)據(jù),而且所述的調度步驟包含將需要來自該數(shù)據(jù)區(qū)的數(shù)據(jù)的作業(yè)調度到一個相同處理器的步驟。
43.如權利要求35到38中的任意一個所述的處理作業(yè)的方法,其特征在于共享存儲器(11)中的軟件包含多個軟件塊,每一個作業(yè)目標為至少指向一個軟件塊,而且所述的調度步驟包含將一塊集群分配到每一處理器從而執(zhí)行基于目標的調度的步驟。
44.如權利要求35到38中的任意一個所述的處理作業(yè)的方法,其特征在于所述的調度步驟包含將在同一通信信道上到達的作業(yè)調度到一個相同處理器的步驟。
45.如權利要求35到44中的任意一個所述的處理作業(yè)的方法,其特征在于所述的調整所述第一算法的步驟包含將已經調度到具有最高負載的處理器的作業(yè)間歇性地重新調度到其它預定處理器的步驟。
46.如權利要求35到45中的任意一個所述的處理作業(yè)的方法,其特征在于所述的調度步驟包含基于靜態(tài)作業(yè)分類和相關性分析的作業(yè)調度步驟。
47.如權利要求35到46中的任意一個所述的處理作業(yè)的方法,其特征在于所述的執(zhí)行作業(yè)包含推測性并行執(zhí)行作業(yè)的步驟,所述的確保數(shù)據(jù)一致性的步驟包含以下步驟檢測相關性沖突;以及取消和重新開始推測性地執(zhí)行已經檢測出存在相關性沖突的作業(yè)。
48.如權利要求47所述的處理作業(yè)的方法,其特征在于還進一步包含每一處理器(10a-10e)對共享存儲器(11)中的變量使用加以標記的步驟,而且所述的檢測數(shù)據(jù)沖突的步驟包含基于標記的檢測變量訪問沖突的步驟。
49.如權利要求48所述的處理作業(yè)的方法,其特征在于所述的標記步驟包含對多組變量加以標記。
50.如權利要求35到49中的任意一個所述的處理作業(yè)的方法,其特征在于執(zhí)行所述的調度步驟和新作業(yè)進入所述作業(yè)隊列(16)的入口相連。
51.如權利要求50所述的處理作業(yè)的方法,其特征在于所述的調度步驟進一步包含在所述作業(yè)隊列(16)中設置一執(zhí)行標志(26)的步驟,所述的執(zhí)行標志(26)指示作業(yè)由哪一個處理器執(zhí)行。
52.如權利要求50所述的處理作業(yè)的方法,其特征在于所述的調度步驟進一步包含在所述作業(yè)隊列的一部分(28)中存儲一作業(yè)的步驟,所述的部分(28)取決于執(zhí)行該作業(yè)的處理器。
53.如權利要求35到49中的任意一個所述的處理作業(yè)的方法,其特征在于執(zhí)行所述調度步驟與所述處理器其中之一變得空閑從而開始執(zhí)行一個新作業(yè)相連。
54.如權利要求35到53中的任意一個所述的處理作業(yè)的方法,其特征在于還進一步包含退出調度的步驟,依據(jù)所述第二算法確定作業(yè)退出的次序,其中退出步驟包含依據(jù)所述的退出調度退出作業(yè)的步驟。
55.如權利要求54所述的處理作業(yè)的方法,其特征在于所述的退出調度進一步包含在所述作業(yè)隊列中設置一個退出標志(27)的步驟,所述的退出標志(27)指示作業(yè)退出的次序。
56.如權利要求35到55中的任意一個所述的處理作業(yè)的方法,其特征在于還進一步包含將用于單處理器系統(tǒng)的應用軟件遷移到多個共享存儲器的處理器(10a-10e)中用于執(zhí)行的另一步驟。
全文摘要
本發(fā)明提出了一種處理系統(tǒng)(1),它包含:共享存儲器的多個處理器(10a-e),用來并行處理作業(yè);數(shù)據(jù)一致性裝置(14),用來確保數(shù)據(jù)的一致性。處理系統(tǒng)(1)包含一個調度器(17),依據(jù)第一算法調度作業(yè)在處理器(10a-e)上執(zhí)行。依據(jù)本發(fā)明的處理系統(tǒng)(1)還使用了退出作業(yè)裝置(18),退出以第二算法給出的次序進行,更為可取的是依據(jù)一個創(chuàng)建的全局次序進行。第二算法與第一算法不同。第一算法可以進行調整以適應于所使用的特定系統(tǒng),并且可以將對特定處理器的調度建立在如源、目標、通信信道、或者是為正討論的作業(yè)創(chuàng)建處理器的基礎上。處理系統(tǒng)(1)使用一公用的作業(yè)隊列(16),而且更可取地是調度能調整執(zhí)行。
文檔編號G06F9/52GK1326567SQ9981332
公開日2001年12月12日 申請日期1999年11月12日 優(yōu)先權日1998年11月16日
發(fā)明者P·A·霍姆貝里, L·-O·克林, S·E·約翰松, M·索霍尼, N·蒂克卡 申請人:艾利森電話股份有限公司