專利名稱:包括多個處理器的系統(tǒng)以及操作該系統(tǒng)的方法
技術領域:
本發(fā)明的揭示大致有關計算機系統(tǒng)的領域,尤有關包含多個處理器的系統(tǒng)。
背景技術:
在現代的計算機系統(tǒng)中,采用了包含多個指令之處理器。處理器自被連接到該處 理器的系統(tǒng)存儲器讀取指令及數據,并根據該等指令而修改該等指令及(或)數據。該系 統(tǒng)存儲器可包含諸如隨機存取存儲器(RAM)的易失性但可迅速存取的存儲器裝置、以及諸 如硬盤等的緩慢但永久性的存儲器裝置。此外,計算機可自諸如鍵盤、鼠標、及(或)網絡 聯機等的裝置接收輸入,并可將輸出提供給諸如監(jiān)視器、一個或多個喇叭、及(或)打印機 等的裝置。在大部分的計算機系統(tǒng)中,采用被稱為"操作系統(tǒng)"之專門計算機程序,以便控 制對各種程序的處理、以及該計算機系統(tǒng)的各組件間之數據傳輸。 圖la是現階段技術狀態(tài)的計算機系統(tǒng)100之方塊示意圖。計算機系統(tǒng)100包含 處理器101、系統(tǒng)存儲器104、以及一個或多個輸入/輸出裝置103。箭頭102示意地指示處 理器101、系統(tǒng)存儲器104、與輸入/輸出裝置103間之數據傳輸。 處理器101包含多個寄存器102、103、104、105??蓪祿韵到y(tǒng)存儲器104讀取 到寄存器102至105,且可將寄存器102至105中之數據寫到系統(tǒng)存儲器104。處理器101 可包括適于修改寄存器102至105的內容之指令、以及在寄存器102至105與系統(tǒng)存儲器 104之間及(或)在寄存器102至105之間傳輸數據之指令。此外,可提供用來執(zhí)行這些工 作的一組合之指令。處理器101通??梢员却嫒∠到y(tǒng)存儲器104中儲存的數據的速度快許 多之速度存取寄存器102至105中之數據。 為了改善計算機系統(tǒng)100的效能,最好是可提供取代單一處理器101的多個處理 器。因此,可同時執(zhí)行多個工作及(或)執(zhí)行緒。此種方式可有助于提高計算機系統(tǒng)100 的作業(yè)速度。 然而,在根據現階段最高技術的計算機系統(tǒng)中,如將于下文中參照圖lb而說明 的,處理器的數目增加時,可能需要有操作系統(tǒng)的修改。圖lb示出在根據現階段最高技術 的計算機系統(tǒng)100的處理器101中執(zhí)行之工作201之示意流程圖。工作201包含將被處理 器101循序地處理的多個210至215。因此,處理器101以自指令210至指令211且自指令 211至指令212之方式循序處理該等指令。 當工作201被處理時,諸如在處理指令212期間或之后,可能發(fā)生以圖lb中之箭 頭230示意地指示之中斷或異常。如果在處理指令212期間發(fā)生錯誤,例如,如果發(fā)生除以 零,或如果有來自系統(tǒng)存儲器104的諸如分頁錯誤等的錯誤訊息,則可產生異常。也可由工 作201的指令(例如,指令212)有規(guī)律地產生異常。工作201所產生的異常之典型應用是 呼叫計算機系統(tǒng)100的操作系統(tǒng)。諸如輸入到輸入/輸出裝置103或輸入/輸出裝置103 的同步要求等的處理器IOI以外的其它裝置引起之事件可產生中斷。如果計算機系統(tǒng)IOO 中執(zhí)行多任務,則可將時序電路所產生的中斷用來交替地激活可以是程序或執(zhí)行緒的各種 工作。
4
如果發(fā)生了中斷或異常,則可中斷工作201的執(zhí)行,并執(zhí)行可以是諸如該操作系 統(tǒng)的一部分之中斷例程202。中斷例程202包含多個指令220至225。這些指令被循序地 處理。在處理了中斷例程202的最后一個指令225之后,接續(xù)在發(fā)生中斷的指令212之后 的指令(在上述例子中為指令213)上繼續(xù)對工作201之處理。 中斷例程202可修改處理器101的寄存器102至105之內容。為了保證工作201 在發(fā)生中斷或異常之后可不管該中斷或異常而正確地工作,寄存器102至105之內容被復 制到系統(tǒng)存儲器104中之儲存位置。在繼續(xù)執(zhí)行工作201之前,該儲存位置的內容被讀回 到寄存器102至105。因此,當執(zhí)行指令213而繼續(xù)執(zhí)行工作201時,寄存器102至105可 包含如同在指令212之后將立即執(zhí)行指令213 —般的實質上相同之數據。
在根據現階段最高技術的計算機系統(tǒng)100中,被實施為計算機系統(tǒng)100的該操作 系統(tǒng)的一部分之中斷例程202中之指令完成將該等寄存器的復制到該儲存位置及將該儲 存位置的內容復制回該等寄存器。因此,如果計算機系統(tǒng)100中提供了額外的處理器,則對 該操作系統(tǒng)的修改可能被要求保證如果在該等處理器的任何處理器中發(fā)生中斷或異常, 則該等處理器的內容被正確地儲存在系統(tǒng)存儲器中,且該內容在該中斷例程結束之后被讀 回到該等寄存器。 可能需要對該操作系統(tǒng)的進一步修改,以便將個別處理器中之程序及工作的執(zhí)行
排程。在根據現階段最高技術的計算機系統(tǒng)中,系由操作系統(tǒng)執(zhí)行對該等處理器中之程序
及(或)執(zhí)行緒的執(zhí)行以及對將各程序及(或)執(zhí)行緒分配給該等處理器之控制。除了需
要根據多個處理器的存在而調整操作系統(tǒng)之外,對程序及(或)執(zhí)行緒的執(zhí)行之控制可能
在產生及(或)控制程序及(或)執(zhí)行緒時需要較大的管理負擔(overhead)。尤其在呼叫
操作系統(tǒng)例程之前將該等處理器的寄存器之內容復制到儲存位置以及在該操作系統(tǒng)例程
終止之后將該儲存位置之內容讀回該等寄存器時,可能產生相當大的管理負擔。 根據現階段最高技術的計算機系統(tǒng)100之問題在于在操作系統(tǒng)的制造商實施了
對計算機系統(tǒng)100中提供的額外的處理器或任何其它可能裝置的支持之前,可能無法合理
地使用該等額外的處理器。 根據現階段最高技術的計算機系統(tǒng)100之另外的一問題在于利用操作系統(tǒng)執(zhí)行
的對程序及(或)執(zhí)行緒之產生及(或)控制的較大之管理負擔可能降低了計算機系統(tǒng)ioo 的效能,尤其在使用較細粒(fine grain)的多任務及(或)多緒執(zhí)行(multithreading) 時更是如此。 此外,縱然在提供了對多個處理器的支持的根據現階段最高技術之計算機系統(tǒng) 中,可能希望對操作系統(tǒng)隱藏額外的處理器或特征。額外的處理器或特征也可能包含操作 系統(tǒng)不知道的額外的硬件及(或)處理器。因此,根據現階段最高技術的計算機系統(tǒng)之另 外的一問題在于該計算機系統(tǒng)可能難以使用諸如操作系統(tǒng)不知道的處理器或硬件等的額 外的資源。 本發(fā)明之揭示系有關可避免或至少減輕前文所述的一個或多個問題的影響之各 種系統(tǒng)及方法。
發(fā)明內容
下文中提供了本發(fā)明的簡化摘要,以便提供對本發(fā)明的某些態(tài)様的基本了解。該CN 101730881 A
說明書
3/23頁
摘要并不是本發(fā)明的徹底的概述。其目的并不是識別本發(fā)明的關鍵性或緊要的組件,也不 是描述本發(fā)明的范圍。其唯一目的只是以簡化的形式提供某些觀念,作為將于后文中提供 的更詳細的說明之前言。 根據一個顯示范例,系統(tǒng)包含主控處理器及至少一個從屬處理器。該主控處理器 之狀態(tài)包含第一多個變量,且該從屬處理器之狀態(tài)包含第二多個變量。該系統(tǒng)包括由該主 控處理器及該從屬處理器處理數據的并行操作模式、以及由該主控處理器處理數據的串行 操作模式。該系統(tǒng)之組態(tài)被設定成在該并行操作模式中發(fā)生中斷或異常時執(zhí)行下列步驟 將該第一多個變量及該第二多個變量的至少一部分儲存到緩沖存儲器;以及將該系統(tǒng)切換 到該串行操作模式。該系統(tǒng)之組態(tài)被進一步設定成若該從屬處理器中發(fā)生中斷或異常,則 將該第一多個變量中之至少一個變量設定為該第二多個變量中之至少一個變量的值。
根據另一個顯示范例,系統(tǒng)包含主控處理器及至少一個從屬處理器。該主控處 理器之狀態(tài)包括其中包含第一返回地址之第一多個變量,且該從屬處理器之狀態(tài)包括其 中包含第二返回地址之第二多個變量。該系統(tǒng)包括由該主控處理器及該從屬處理器處理 數據的并行操作模式、以及由該主控處理器處理數據的串行操作模式。該系統(tǒng)包含跳轉 (trampoline)指令。該系統(tǒng)之組態(tài)被設定成在該并行操作模式期間于該主控處理器中發(fā) 生中斷或異常時執(zhí)行下列步驟將該第一返回地址及該第二多個變量儲存到緩沖存儲器; 以該跳轉指令的地址取代該第一返回地址;以及切換到該串行操作模式。該系統(tǒng)之組態(tài)被 進一步設定成在該并行操作模式期間于該從屬處理器中發(fā)生中斷或異常時執(zhí)行下列步驟 將該第一多個變量及該第二多個變量儲存到緩沖存儲器;將該第一多個變量中之至少一個 變量設定為該等第二變量中之至少一個變量的值;以該跳轉指令的地址取代該第一返回地 址;以及切換到該第一作業(yè)模式。該跳轉指令適于執(zhí)行下列步驟將該系統(tǒng)切換到該并行 操作模式;以及如果在該主控處理器中發(fā)生中斷或異常,則自該緩沖存儲器讀取該第二多 個變量及該第一返回地址。該跳轉指令進一步適于執(zhí)行下列步驟將該系統(tǒng)切換到該并行 操作模式;自該緩沖存儲器讀取該第二多個變量;將該第二多個變量中之至少一個變量設 定為該第一多個變量中之至少一個變量的值;以及如果在該至少一個從屬處理器中發(fā)生中 斷或異常,則自該緩沖存儲器讀取該第一多個變量。 根據另外的顯示范例,揭示了一種操作包含主控處理器及至少一個從屬處理器的 系統(tǒng)之方法,該主控處理器之狀態(tài)包含第一多個變量,且該從屬處理器之狀態(tài)包含第二多 個變量,該系統(tǒng)包含由該主控處理器及該從屬處理器處理數據的并行操作模式、以及由該 從屬處理器處理數據的串行操作模式,該方法包含下列特征。如果在該并行操作模式中發(fā) 生中斷或異常,則執(zhí)行下列步驟將該第一多個變量及該第二多個變量中之至少一部分儲 存到緩沖存儲器以及將該系統(tǒng)切換到該串行操作模式。如果在該至少一個從屬處理器中 發(fā)生中斷或異常,則將該第一多個變量中之至少一個變量設定為該第二多個變量中之至少 一個變量的值。
若配合各附圖而參閱前文中說明,將可了解本發(fā)明之揭示,在該等附圖中,相同的 代號識別類似的組件,其中 圖la示出根據現階段最高技術的計算機系統(tǒng)之示意6
圖lb示出在根據現階段最高技術的計算機系統(tǒng)上運行的程序及中斷例程之示意流程圖; 圖2a示出根據本發(fā)明所揭示的實施例的計算機系統(tǒng)之示意圖; 圖2b示出在根據本發(fā)明所揭示的實施例的計算機系統(tǒng)上運行的程序之示意流程
圖;以及 圖2c示出在根據本發(fā)明所揭示的實施例的計算機系統(tǒng)上運行的程序及中斷例程之示意流程圖。 雖然易于對本發(fā)明所揭示的標的內容作出各種修改及替代形式,但是該等圖式中系以舉例方式示出本發(fā)明的一些特定實施例,且已在本說明書中詳細說明了這些特定實施例。然而,我們當了解,本說明書對這些特定實施例的說明之用意并非將本發(fā)明限制在所揭示的該等特定形式,相反地,本發(fā)明將涵蓋最后的權利要求書所界定的本發(fā)明的精神及范圍內之所有修改、等效物、及替代。
具體實施例方式
下文中將說明本發(fā)明的各實施例。為了顧及說明的清晰,本說明書中將不說明實際實施例的所有特征。當然,我們當了解,在任何此種實際實施例的開發(fā)過程中,必須作出許多與實施例相關的決定,以便達到開發(fā)者的特定目標,諸如符合與系統(tǒng)相關的及與商業(yè)相關的限制條件,而該等限制將隨著各實施例而有所不同。此外,我們當了解,雖然此種開發(fā)的工作可能是復雜且耗時的,但是此種開發(fā)工作仍然是對此項技術具有一般知識者在受益于本發(fā)明的揭示后所從事的日常工作。 現在將參照各附圖而說明本發(fā)明之標的內容。只為了解說之用,而在該等圖式中以示意圖之方式示出各種結構、系統(tǒng)、及裝置,以便不會以熟習此項技術者習知的細節(jié)模糊了本發(fā)明之揭示。然而,該等附圖被加入,以便描述并解說本發(fā)明揭示之各例子。應將本說明書所用的字及詞匯了解及詮釋為具有與熟習相關技術者對這些字及詞匯所了解的一致之意義。不會因持續(xù)地在本說明書中使用一術語或詞匯,即意味著該術語或詞匯有特殊的定義(亦即與熟習此項技術者所了解的一般及慣常的意義不同之定義)。如果想要使術語或詞匯有特殊的意義(亦即與熟習此項技術者所了解的意義不同之意義),則會將在本說明書中以一種直接且毫不含糊地提供該術語或詞匯的特殊定義之下定義之方式明確地述及該特殊的定義。 根據一個實施例,提供了一種包含主控處理器及至少一個從屬處理器之計算機系統(tǒng)。雖然在某些實施例中,該計算機系統(tǒng)可包含單一的從屬處理器,但是在其它實施例中,可提供多個從屬處理器。該計算機系統(tǒng)包含由主控處理器及至少一個從屬處理器處理數據的并行操作模式。在計算機系統(tǒng)包含多個從屬處理器之實施例中,每一個從屬處理器或該等從屬處理器的一部分可在該并行操作模式中同時執(zhí)行一些指令。因此,在該并行操作模式中,可在該主控處理器及該等從屬處理器中同時執(zhí)行多個工作,以便改善該計算機系統(tǒng)之效能。在某些實施例中,該串行操作模式可以是該計算機系統(tǒng)提供只有單一處理器的先前機型的功能之兼容模式。 該主控處理器的狀態(tài)包含可代表該主控處理器的寄存器的內容之多個變量。同樣地,每一從屬處理器的狀態(tài)可包含可代表該從屬處理器之寄存器的內容之多個變量、及(或)用來指示該從屬處理器是否目前正在執(zhí)行指令之運行狀態(tài)位。在該主控處理器及該等從屬處理器中,個別處理器的該多個變量中之一變量可包含該處理器于沒有中斷或異常時用來繼續(xù)指令執(zhí)行之返回地址。例如,可在該等個別處理器的該等寄存器中之一寄存器中提供該返回地址。 該計算機系統(tǒng)可包含適于將該主控處理器的該多個變量中之一個或多個變量的值寫到該等從屬處理器中之一個從屬處理器的該多個變量中之一個或多個變量。因此,可在由該從屬處理器開始執(zhí)行執(zhí)行緒之前,先建立該從屬處理器之參數。可利用可接收將要開始指令執(zhí)行的從屬處理器的識別號碼以及要開始指令執(zhí)行時作為自變量(argument)的
目標地址之分叉指令(fork instruction)開始每一從屬處理器上之指令執(zhí)行??衫脧膶俾摵现噶?slave join instruction)停止從屬處理器上的執(zhí)行緒之執(zhí)行。如果在從屬處理器執(zhí)行的指令序列中發(fā)生從屬聯合指令,則該從屬處理器將停止指令的執(zhí)行。可將主控聯合指令(master join instruction)用來執(zhí)行該主控處理器與該等從屬處理器中之一個從屬處理器間之同步。系以被用來作為自變量的從屬處理器之識別號碼呼叫該主控聯合指令。如果在該主控處理器執(zhí)行的指令序列中發(fā)生該主控聯合指令,則該主控處理器將等候到該主控聯合指令的自變量中指定的該從屬處理器中之指令的執(zhí)行終止為止。該計算機系統(tǒng)進一步包含適于將該等從屬處理器中之一個從屬處理器的該多個變量中之一個或多個變量的值寫到該主控處理器的該多個變量中之一個或多個變量之變量接收指令??蓪⒃撟兞拷邮罩噶钣脕斫邮掌渲邪搹膶偬幚砥髦兄ぷ鞯膱?zhí)行結果的緩沖存儲器之結果值或指針。 因此,在該計算機系統(tǒng)中,可以一種平行之方式在該主控處理器及該等從屬處理器中執(zhí)行程序及(或)執(zhí)行緒。使用上述的該等指令時,可以獨立于在該計算機系統(tǒng)上運行的操作系統(tǒng)之方式開始及停止該等從屬處理器中之一個或多個從屬處理器中之工作的執(zhí)行。 可將該計算機系統(tǒng)之組態(tài)設定成若在該并行操作模式中發(fā)生中斷或異常,則將代表該主控處理器及該等從屬處理器的狀態(tài)的變量之至少一部分儲存到緩沖存儲器,將該系統(tǒng)切換到該串行操作模式。尤其可儲存諸如該計算機系統(tǒng)的先前機型中不存在的寄存器之內容等的該等從屬處理器之變量及該主控處理器之變量。因此,無須使該操作系統(tǒng)適于儲存包含單一處理器的計算機系統(tǒng)中并未被使用的從屬處理器之變量及主控處理器之變量。因此,可提供該計算機系統(tǒng)與包含單一處理器的先前機型間之兼容性,且可將適于該先前機型的操作系統(tǒng)用于該計算機系統(tǒng)。 若在從屬處理器中發(fā)生了中斷或異常,則可將該主控處理器的該多個變量中之至少一個變量設定為發(fā)生了該中斷或異常的該從屬處理器的該多個變量中之至少一個變量的值。因此,可將該從屬處理器的各變量傳送到該操作系統(tǒng),而該操作系統(tǒng)可自該主控處理器讀取與該操作系統(tǒng)執(zhí)行的中斷例程相關之數據。 該計算機系統(tǒng)可進一步包含跳轉指令。該跳轉指令可適于自該緩沖存儲器讀取于中斷或異常時被儲存的該等從屬處理器及或有的該主控處理器之那些變量。此外,該跳轉指令可適于將該計算機系統(tǒng)自該串行操作模式切換到該并行操作模式。若在從屬處理器中發(fā)生中斷或異常,則該跳轉指令可將該中斷或異常發(fā)生時被設定為該從屬處理器的各變量的值之該主控處理器的那些變量寫到該從屬處理器的該等變量。可在自該緩沖存儲器讀取該主控處理器的該等原始變量之前,先執(zhí)行上述步驟。 若發(fā)生了中斷或異常,則可以該跳轉指令之地址取代該主控處理器之返回地址。因此,在該中斷例程終止之后,自動地呼叫該跳轉指令。因此,可以獨立于該操作系統(tǒng)之方式處理包含單一處理器的計算機系統(tǒng)中不存在的從屬處理器及(或)主控處理器之變量。此種方式可以對操作系統(tǒng)透通之方式使用該計算機系統(tǒng)的該并行操作模式。因此,實質上不需要調整該操作系統(tǒng),即可使用該計算機系統(tǒng)的該并行操作模式。 圖2a示出根據一個實施例的計算機系統(tǒng)300之示意圖。計算機系統(tǒng)300包含主控處理器301以及從屬處理器321、331。然而,本發(fā)明并不限于圖2a所示的提供兩個從屬處理器之實施例。在其它實施例中,可提供三個或更多個從屬處理器。在另外的實施例中,計算機系統(tǒng)300可包含單一從屬處理器。此外,本發(fā)明不限于從屬處理器321、331是一般用途處理器之實施例。在其它實施例中,從屬處理器321、331可包含特殊功能的硬件。
計算機系統(tǒng)300可進一步包含系統(tǒng)存儲器304及輸入/輸出裝置303。箭頭314示意地指示主控處理器301、從屬處理器321、331、系統(tǒng)存儲器304、與輸入/輸出裝置303間之數據傳輸。 主控處理器301包含多個寄存器302至307。在某些實施例中,該多個寄存器302至307可包含其中可包含諸如寄存器302至305之第一子集,以及其中可包含寄存器306、307之第二子集。該第一子集之寄存器302至305可對應于根據現階段最高技術的計算機系統(tǒng)中之處理器的各寄存器,例如,對應于前文中參照圖la至lb所述的計算機系統(tǒng)100中之處理器101的寄存器102至105。主控處理器301之組態(tài)可進一步被設定成在計算機系統(tǒng)300的串行操作模式中提供其中包含根據現階段最高技術的處理器101的指令集之指令集。因此,在該串行操作模式中,計算機系統(tǒng)300可執(zhí)行提供給根據現階段最高技術的計算機系統(tǒng)IOO之二進制代碼。 如將于下文中更詳細說明的,可將該第二子集之寄存器306、307用來處理與主控處理器301及從屬處理器321、331中之數據的平行處理相關聯之數據傳輸。
與主控處理器301類似,第一從屬處理器321可包含多個寄存器322至325,且第二從屬處理器331可包含多個寄存器332至335。在某些實施例中,從屬處理器321、331之寄存器322至325、332至335可對應于主控處理器301之該第一子集的寄存器302至305。在寄存器302至307、322至325、332至335的每一寄存器中,可儲存代表主控處理器302、第一從屬處理器321、及第二從屬處理器331的狀態(tài)之變量。 在某些實施例中,可使主控處理器301及從屬處理器321、331中之每一處理器適于提供熟悉此項技術者習知的x86或x86-64類型的處理器之功能。在其它實施例中,可將主控處理器301及從屬處理器321、331中之每一處理器之組態(tài)設定成提供不同類型的處理器之功能。在另外的實施例中,可使主控處理器301適于提供與從屬處理器321、331的類型不同的一類型的處理器之功能。 在一個實施例中,可使主控處理器301適于提供現有操作系統(tǒng)支持的處理器類型之功能,例如,提供x86或x86-64處理器之功能,且從屬處理器321、331可以是無須被該操作系統(tǒng)支持的不同類型之處理器。例如,從屬處理器321、331可包含簡化架構,以便將從屬處理器321、331所占用的晶粒面積最小化。此種方式可有助于增加計算機系統(tǒng)300的從屬處理器321、331之數目,以便增強計算機系統(tǒng)300之效能。此外,從屬處理器321、331的簡
9化架構可增加從屬處理器321、331的時脈速率,因而增加了每一個別從屬處理器之工作速度。 在某些實施例中,在單晶粒上提供主控處理器301、以及從屬處理器321、331中之一個或多個從屬處理器。在其它實施例中,可在不同的晶粒上提供主控處理器301以及從屬處理器321、331。 主控處理器301可包含指示器位308以及控制寄存器位309。指示器位308可以是架構上看不到的位,用以指示計算機系統(tǒng)300目前正在可由主控處理器301處理數據的串行操作模式或可由主控處理器301及從屬處理器321、331中之一個或多個從屬處理器處理數據之并行操作模式中運行??刂萍拇嫫魑?09可指示是否容許該并行操作模式。如果控制寄存器位309被設定為例如值"開"等的第一值,則程序可在計算機系統(tǒng)300的該并行操作模式中運行。然而,如果控制寄存器位309被設定為例如值"關"等的第二值,則只可在該串行操作模式中使用計算機系統(tǒng)300。 與主控處理器301類似,從屬處理器321、331中之每一從屬處理器可包含指示器位及控制寄存器位。在圖2a中,代號328、338表示從屬處理器321 、331之指示器位,且代號329、339表示從屬處理器321、331之控制寄存器位。在其它實施例中,從屬處理器321、331無須包含指示器位328、329。在這些實施例中,可將主控處理器301之控制寄存器位309用來指示容許計算機系統(tǒng)300的并行操作模式,且可將主控處理器301之控制寄存器位309用來指示計算機系統(tǒng)300正處于并行操作模式中。 第一從屬處理器321可進一步包含運行狀態(tài)位330。運行狀態(tài)位330指示第一從屬處理器321目前是否正在運行或從屬處理器321是否被停止了。例如,運行狀態(tài)位330之值"開"可指示第一從屬處理器321目前正在運行,且運行狀態(tài)位330之值"關"可指示第一從屬處理器321被停止了。與第一從屬處理器321類似,第二從屬處理器331亦可包含運行狀態(tài)位340。 在系統(tǒng)存儲器304中,可提供緩沖存儲器313。如將于下文中更詳細說明的,若在計算機系統(tǒng)300處于該并行操作模式時發(fā)生了一中斷或異常,則可將主控處理器的寄存器302至307的一部分或全部之內容、從屬處理器321、331的寄存器322至325、332至335的一部分或全部之內容、以及諸如指示器位308、328、338、控制寄存器位309、329、339、及(或)運行狀態(tài)位330、340的值等的進一步信息儲存在在緩沖存儲器313中。若正在計算機系統(tǒng)300中執(zhí)行多任務,則可為每一程序而分配個別的緩沖存儲器。
在某些實施例中,可自將使用計算機系統(tǒng)300的該并行操作模式的一程序之程序代碼呼叫中央處理單元(CPU)驅動例程,而分配緩沖存儲器313??墒乖揅PU驅動例程適于分配足以儲存寄存器302至307、322至325、及332至335、以及前文所詳述之或有的進一步信息的內容的容量之存儲器區(qū)域。在某些實施例中,可在將不會被操作系統(tǒng)交換到諸如硬盤等的大量儲存裝置之非分頁系統(tǒng)存儲器庫(non-paged pool system memory)中提供緩沖存儲器313。在某些計算機系統(tǒng)300中,只可由CPU驅動例程執(zhí)行該非分頁系統(tǒng)存儲器中之存儲器的分配。 有利之處在于在該非分頁系統(tǒng)存儲器庫中分配緩沖存儲器313之方式可有助于確保緩沖存儲器313將一直是保持在實體存儲器的狀態(tài),且不會發(fā)生分頁錯誤。此種方式可較易于利用不可分割的作業(yè)(atomic operation)對緩沖存儲器313進行第二多個寄存器309至312的內容及或有的進一步數據之分別寫入及讀取。因此,可有利地避免在將數 據寫到緩沖存儲器313時碰到中斷或異常而可能發(fā)生的錯誤。 可將該CPU驅動例程之組態(tài)設定成返回緩沖存儲器313之存儲器地址。在某些實 施例中,該存儲器地址可以是虛擬地址。此種方式可有助于將在計算機系統(tǒng)300上運行的 所有程序相互隔離,且可能要求每一程序使用獨立的存儲器分頁。如果緩沖存儲器313的 分配是不可行的,例如,如果非分頁存儲器區(qū)域中沒有可供使用的存儲器,則該CPU驅動例 程可指示失敗。 在某些實施例中,用來分配緩沖存儲器313的該CPU驅動例程可以是處理器供貨 商可能提供的CPU驅動程序的一部分。除了用來分配緩沖存儲器313的該CPU驅動例程之 外,可提供用來釋出緩沖存儲器313之第CPU驅動例程。如熟悉此項技術者所習知的,該等 CPU驅動例程可在開機期間被操作系統(tǒng)加載,且提供了在計算機系統(tǒng)300上運行的程序可 執(zhí)行之功能。因此,使用第二作業(yè)模式之程序可呼叫用來分配及釋出緩沖存儲器313之該 等CPU驅動例程。 計算機系統(tǒng)300可包含起動指令,用以起動計算機系統(tǒng)300之該并行操作模式。該 起動指令接收緩沖存儲器313的諸如虛擬地址等的地址,作為操作數,且該起動指令接收 跳轉指令的地址。計算機系統(tǒng)300提供該跳轉指令。在某些實施例中,主控處理器301可 提供該跳轉指令。如將于下文中更詳細說明的,在完成了中斷例程之后,通常將該跳轉指令 用來恢復寄存器302至307、322至325、及332至335的一部分或全部之內容??稍谑褂迷?并行操作模式之程序中提供該跳轉指令,且該跳轉指令的地址可以是該程序中提供的該跳 轉指令的記憶位置之指針。 可將計算機系統(tǒng)300之組態(tài)設定成如果該起動指令被呼叫,則執(zhí)行下列步驟。計 算機系統(tǒng)300可檢查控制寄存器位309。如果控制寄存器位309指示不容許使用該并行操 作模式,則該起動指令將產生非法指令錯誤,且將不執(zhí)行任何進一步的步驟。否則,可將主 控處理器301的寄存器302至307的第二子集的寄存器306、307中之第一寄存器(例如, 寄存器306)設定為緩沖存儲器313之地址,且可將寄存器302至307的第二子集的寄存器 306、307中之第二寄存器(例如,寄存器307)設定為該跳轉指令之地址。在其它實施例中, 可將主控處理器301的寄存器302至307中之另一寄存器用來儲存緩沖存儲器313及該跳 轉指令之地址。此外,計算機系統(tǒng)300可將指示器位308以及或有的從屬處理器321、331 之指示器位328、338設定為用來指示該計算機系統(tǒng)正處于該并行操作模式之值。然后,計 算機系統(tǒng)300可在該并行操作模式中執(zhí)行次一指令。 在某些實施例中,該起動指令之組態(tài)可進一步設定成清除從屬處理器321、331之 寄存器322至325、332至335。因此,可避免不同的程序間之狀態(tài)信息的傳播,因而可有助 于計算機系統(tǒng)300之安全。 計算機系統(tǒng)300可進一步包含適于將主控處理器301的寄存器302至307中之一 個或多個寄存器的內容寫到從屬處理器321、331中之一個從屬處理器的寄存器322至325、 332至335中之一個或多個寄存器的變量傳送指令。在某些實施例中,該變量傳送指令接收 內容將被寫到其寄存器的從屬處理器321、331之識別號碼、用來識別其內容將被傳送到從 屬處理器321、331的主控處理器301的寄存器之數據、以及用來識別其值將被設定的從屬 處理器321、331的寄存器之數據,作為操作數。在一個實施例中,可將該變量傳送指令之組態(tài)設定成每次將主控處理器301的該等寄存器中之一個寄存器的內容傳送到從屬處理器 321 、331中之一個從屬處理器,且用來識別主控處理器301及個別從屬處理器321、331的寄 存器之數據可包含主控處理器301及從屬處理器321 、331的個別寄存器之識別號碼。
可將計算機系統(tǒng)300之組態(tài)設定成如果該變量傳送指令被呼叫,則執(zhí)行下列步 驟。計算機系統(tǒng)300可檢查指示器位308。如果指示器位308指示計算機系統(tǒng)300并非處 于并行操作模式,則該變量傳送指令將產生非法指令錯誤,且將不執(zhí)行任何進一步的步驟。 否則,可檢查主控處理器301是否執(zhí)行該變量傳送指令。如果從屬處理器321、331中之一 個從屬處理器執(zhí)行該變量傳送指令,則產生非法指令錯誤,且將不執(zhí)行任何進一步的行動。 否則,將該變量傳送指令的操作數中指定的主控處理器301的寄存器302至307中之一個 或多個寄存器的內容寫到被指定的從屬處理器321、331之被指定的寄存器。然后,計算機 系統(tǒng)300可執(zhí)行次一指令。 計算機系統(tǒng)300可進一步包含適于將從屬處理器321、331中之一個從屬處理器的 寄存器322至325、332至335中之一個或多個寄存器的內容寫到主控處理器301的寄存器 302至307中之一個或多個寄存器之變量接收指令。該變量接收指令可接收將自其接收變 量的從屬處理器321、331之識別號碼、用來識別其內容將被讀取的從屬處理器321、331的 寄存器之數據、以及用來識別其值將被設定的主控處理器301的寄存器之數據,作為操作 數。與該變量傳送指令類似,用來識別該等寄存器之數據可包含從屬處理器321、331的寄 存器之識別號碼、以及主控處理器301的寄存器之識別號碼。 可將計算機系統(tǒng)300之組態(tài)設定成如果該變量接收指令被呼叫,則執(zhí)行下列步 驟。計算機系統(tǒng)300可檢查指示器位308。如果指示器位308指示計算機系統(tǒng)300并非處 于并行操作模式,則該變量接收指令將產生非法指令錯誤,且將不執(zhí)行任何進一步的步驟。 否則,可檢查主控處理器301是否執(zhí)行該變量接收指令。如果從屬處理器321、331中之一 個從屬處理器執(zhí)行該變量接收指令,則該變量接收指令產生非法指令錯誤,且將不執(zhí)行任 何進一步的行動。否則,將被指定的從屬處理器321、331之被指定的一個或多個寄存器之 內容寫到主控處理器301之被指定的寄存器。 可將該變量傳送指令及該變量接收指令用來交換主控處理器301與從屬處理器 321、331間之信息。如將于下文中更詳細說明的,尤其可將該變量傳送指令用來在從屬處理 器321、331中開始執(zhí)行緒之前先建立從屬處理器321、331之參數,且尤其可將該變量接收 指令用來在完成了執(zhí)行緒的執(zhí)行之后擷取其中包含一個或多個結果值的記憶位置之結果 值或指針。 計算機系統(tǒng)300可進一步包含適于激活從屬處理器321、331中之一個從屬處理器 的指令執(zhí)行之分叉指令。該分叉指令可接收將開始指令執(zhí)行的從屬處理器321、331之識別 號碼、以及將用來開始指令執(zhí)行之目標地址,作為操作數。 可將計算機系統(tǒng)300之組態(tài)設定成如果該分叉指令被呼叫,則執(zhí)行下列步驟。計 算機系統(tǒng)300可檢查指示器位308。如果指示器位308指示計算機系統(tǒng)300并非處于并行 操作模式,則產生非法指令錯誤,且將不執(zhí)行任何進一步的步驟。否則,檢查主控處理器301 是否執(zhí)行該分叉指令。如果從屬處理器321、331中之一個從屬處理器執(zhí)行該分叉指令,則 產生非法指令錯誤,且將不執(zhí)行任何進一步的行動。否則,將被指定的目標地址傳送到被指 定的從屬處理器321、331。從屬處理器321、331接收該目標地址。在從屬處理器321、331
12中,運行狀態(tài)位330、340被設定為用來指示從屬處理器321、331正在運行之值,且從屬處理 器321、331在該目標地址上開始指令執(zhí)行。然后,可執(zhí)行另外的指令。
在某些實施例中,若于指令的操作數中指定的個別從屬處理器321、331正在運行 時,使用該變量傳送指令、該變量接收指令、及(或)該分叉指令,則將產生不可預測的結 果。在這些實施例中,可改寫在該計算機系統(tǒng)上運行的程序之程序代碼,使上述的狀況不會 發(fā)生。在其它實施例中,如果在操作數中指定的從屬處理器321正在運行時,呼叫該變量傳 送指令、該變量接收指令、或該分叉指令,則可使計算機系統(tǒng)300適于產生非法指令錯誤。
計算機系統(tǒng)300可進一步包含適于停止從屬處理器321、331中之一個從屬處理器 的指令執(zhí)行之從屬聯合指令。從屬處理器321、331中之一個從屬處理器可執(zhí)行該從屬聯合 指令,且可在執(zhí)行該從屬聯合指令的從屬處理器上停止指令執(zhí)行。更具體而言,可將計算機 系統(tǒng)300適于在該從屬聯合指令被呼叫時執(zhí)行下列步驟。計算機系統(tǒng)300可檢查指示器位 308。如果指示器位308指示計算機系統(tǒng)300并非處于并行操作模式,則產生非法指令錯誤, 且將不執(zhí)行任何進一步的步驟。否則,檢查從屬處理器321、331中之一個從屬處理器是否 執(zhí)行該從屬聯合指令。如果并非在從屬處理器321、331上執(zhí)行該從屬聯合指令,則產生非 法指令錯誤,且將不執(zhí)行任何進一步的行動。否則,將運行狀態(tài)位330設定為用來指示從屬 處理器321、331并不正在運行且可停止從屬處理器321、331上的指令執(zhí)行之值。
計算機系統(tǒng)300可進一步包含適于使主控處理器301保持等候直到從屬處理器 321、331中之一個從屬處理器上的指令執(zhí)行停止了為止之主控聯合指令。該主控聯合指令 可接收主控處理器301必須等候的從屬處理器321、331中之一個從屬處理器的識別號碼, 作為操作數。 可將計算機系統(tǒng)300之組態(tài)設定成如果該主控聯合指令被呼叫,則執(zhí)行下列步 驟。計算機系統(tǒng)300可檢查指示器位308。如果指示器位308指示計算機系統(tǒng)300并非處 于并行操作模式,則產生非法指令錯誤,且將不執(zhí)行任何進一步的步驟。否則,檢查主控處 理器301是否執(zhí)行該主控聯合指令。如果主控處理器301并不執(zhí)行該主控聯合指令,則產 生非法指令錯誤,且將不執(zhí)行任何進一步的行動。否則,檢查該主控聯合指令的操作數中指 定的從屬處理器321、331之運行狀態(tài)位330、340是否指示個別的從屬處理器321、331正在 運行。然后,主控處理器301將等候到運行狀態(tài)位330、340被設定為用來指示從屬處理器 321 、 331不再運行之值為止。然后,可在接續(xù)在主控聯合指令之后的指令上繼續(xù)主控處理器 301中之指令執(zhí)行。 在其它實施例中,該主控聯合指令可檢查該等個別的從屬處理器321、331是否仍 然在運行中。然后該主控聯合指令可在諸如主控處理器301的寄存器302至307中之一寄 存器等的架構上可看見之寄存器中送回該結果。在計算機系統(tǒng)300上運行的程序然后可將 該狀態(tài)用來決定進一步的作業(yè)。因此,主控處理器301可檢查該等個別的從屬處理器321、 331之運行狀態(tài),然后繼續(xù)程序的執(zhí)行。在這些實施例中,該主控聯合指令的進一步之特征 可類似于前文所述的其它實施例的那些指令之特征。 可將該從屬聯合指令及該主控聯合指令用來同步在主控處理器301及從屬處理 器321、331中運行的執(zhí)行緒。該主控聯合指令可精確地指定從屬處理器321、331中之一個 從屬處理器。因此,在程序的執(zhí)行期間,不需要所有執(zhí)行緒的共同聯合點,即可在不同的時 點將該不同從屬處理器中運行的執(zhí)行緒同步。因此,可得到較大程度的彈性。
本發(fā)明不限于提供相互不同的主控聯合指令及從屬聯合指令之實施例。在其它實 施例中,可提供單一的聯合指令。當該聯合指令被呼叫時,即檢查是在主控處理器301中或 在從屬處理器321、331的一個從屬處理器中執(zhí)行該聯合指令。如果是在從屬處理器321、 331的一個從屬處理器中執(zhí)行該聯合指令,則執(zhí)行與前文中針對該從屬聯合指令所述之那 些步驟對應的步驟。相反地,如果是在主控處理器301中執(zhí)行該聯合指令,則可執(zhí)行與前文 中針對該主控聯合指令所述之那些步驟對應的步驟。 如前文所述,計算機系統(tǒng)300可進一步包含跳轉指令。在完成了中斷例程之后,可 將該跳轉指令用來恢復主控處理器301的寄存器302至307以及從屬處理器321、331的寄 存器322至325、332至335的一部分或全部之內容。 可使該跳轉指令適于執(zhí)行下列步驟如果在主控處理器301中發(fā)生中斷,則將計 算機系統(tǒng)300切換到該并行操作模式;以及自緩沖存儲器313讀取寄存器322至325、332 至335之內容以及主控處理器301之返回地址。此外,可自該緩沖存儲器讀取寄存器302 至307中之第二子集的寄存器306、307之內容。 可使該跳轉指令進一步適于執(zhí)行下列步驟如果在從屬處理器321、331中之一個 從屬處理器中發(fā)生中斷或異常,則將計算機系統(tǒng)300切換到該并行操作模式;自該緩沖存 儲器讀取從屬處理器321、331的寄存器322至325、332至335之內容;將該主控處理器的 寄存器302至307中之一個或多個寄存器的內容寫到發(fā)生該中斷或異常的從屬核心321、 331之各寄存器;以及自該緩沖存儲器讀取主控處理器301的寄存器302至307之內容。
在某些實施例中,可將計算機系統(tǒng)300之組態(tài)設定成若該跳轉指令被呼叫,則執(zhí) 行下列步驟。計算機系統(tǒng)300可檢查控制寄存器位309。如果控制寄存器位309指示不容 許使用計算機系統(tǒng)300的該并行操作模式,則將產生非法指令錯誤。否則,可自主控處理器 301的寄存器302至307中之一個寄存器讀取緩沖存儲器313之地址。在某些實施例中,可 自主控處理器301的寄存器302至307中之第一子集的寄存器302至305中之一個寄存器 (例如,自寄存器305)讀取緩沖存儲器313之地址。 然后,計算機系統(tǒng)300可自緩沖存儲器313讀取造成中斷或異常的處理器之識別 號碼。在某些實施例中,主控處理器301可具有識別號碼O,第一從屬處理器321可具有識 別號碼1,且第二從屬處理器331可具有識別號碼2。在提供不同于2的數目的從屬處理器 之實施例中,每一個從屬處理器可具有大于零的自然數之識別號碼,且主控處理器301可 具有識別號碼O。在另外的實施例中,可使用處理器301、321、331的不同之編號體系。計算 機系統(tǒng)300然后可自該識別號碼決定是由主控處理器301或是由從屬處理器321、331中之 一個從屬處理器造成該中斷或異常。 如果因處理器識別號碼等于零而指出是由主控處理器301造成該中斷或異常,則 計算機系統(tǒng)300可自緩沖存儲器313讀取第一從屬處理器321的寄存器322至325以及第 二從屬處理器331的寄存器332至335中之每一寄存器的內容。此外,可自緩沖存儲器313 讀取主控處理器301的寄存器302至307中之第二子集的寄存器306、307之內容。此外, 可自該緩沖存儲器讀取主控處理器301之返回地址。在某些實施例中,可將該主控處理器 之該返回地址寫到主控處理器301的該等寄存器中之一個寄存器,例如,寫到寄存器302。 此外,可自緩沖存儲器313讀取從屬處理器321 、331之運行狀態(tài)位330、340。在某些實施例 中,自緩沖存儲器313讀取的從屬處理器321、331的寄存器322至325、332至335之內容可包含從屬處理器321、331之返回地址。在其它實施例中,可自緩沖存儲器313分別地讀 取從屬處理器321 、331之返回地址。 然后,可交換主控處理器301的寄存器302至307中之第二子集的寄存器306、307 中之一個寄存器的內容(例如,寄存器306的內容)、以及用來讀取該緩沖存儲器的地址之 寄存器的內容(例如,寄存器305的內容)。因此,將緩沖存儲器313之地址寫到寄存器 306,而寄存器306可以是該起動指令用來儲存緩沖存儲器313的地址之寄存器。自緩沖存 儲器313讀取的第二子集的寄存器306、307中之另一寄存器(例如,寄存器307)可包含該 跳轉指令之地址。 然后,可將指示器位308設定為用來指示計算機系統(tǒng)300系處于該并行操作模式 之值,例如,設定為值"開"。因此,可將計算機系統(tǒng)300切換到該并行操作模式,且可自從屬 處理器321、331的每一從屬處理器中開始指令執(zhí)行,其中運行狀態(tài)位330、340指示該等個 別的從屬處理器321、331之運行狀態(tài)。在主控處理器301中,系在自緩沖存儲器301讀取 的該返回地址上繼續(xù)指令的執(zhí)行。因此,可在計算機系統(tǒng)300的該并行操作模式中繼續(xù)被 該中斷或異常打斷的程序之處理。 如果從屬處理器321、331中之一個從屬處理器造成該中斷或異常,則可自緩沖存 儲器313讀取第一從屬處理器321的寄存器322至325及第二從屬處理器331的寄存器 332至335之內容、以及運行狀態(tài)位330、340。此外,可自緩沖存儲器313讀取主控處理器 301的寄存器302至307中之第二子集的寄存器306、307之內容。第二子集的寄存器306、 307中之寄存器307或在其它實施例中之另一寄存器可包含該跳轉指令之地址。
然后,可將用來讀取該緩沖存儲器的地址的該等寄存器中之一個寄存器的內容 (例如,寄存器305的內容)寫到可例如在緩沖存儲器313中提供的暫時性寄存器,且可自 緩沖存儲器313將造成該中斷或異常的從屬處理器321、331的對應的寄存器之內容讀取到 寄存器305。例如,如果第一從屬處理器321造成該中斷或異常,則可自緩沖存儲器313將 第一從屬處理器321的寄存器325之被儲存的內容讀取到寄存器305。如果第二從屬處理 器331造成該中斷或異常,則可自緩沖存儲器313將第二從屬處理器331的寄存器335之 被儲存的內容讀取到寄存器305。 如將于下文中更詳細說明的,在完成了該中斷例程之后,第一處理器301的其它 寄存器302至304包含發(fā)生該中斷或異常的從屬處理器321、331的各寄存器之內容,其中 該中斷例程可已經修改了該等寄存器中之某些寄存器的內容。因此,在將發(fā)生中斷或異常 的該從屬處理器的對應的寄存器之內容寫到主控處理器301的寄存器305之后,主控處理 器301的第一子集的寄存器302至305包含代表發(fā)生中斷或異常的該從屬處理器的對應的 寄存器的內容之數據,其中該中斷例程可已經修改了該等寄存器中之某些寄存器的內容。
現在可將主控處理器301的第一子集的寄存器302至305之內容寫到發(fā)生該中斷 或異常的從屬處理器321、331之寄存器。例如,如果在第一從屬處理器321中發(fā)生該中斷 或異常,則可將寄存器302至305之內容寫到第一從屬處理器321之寄存器322至325。如 果在第二從屬處理器331中發(fā)生該中斷或異常,則可將寄存器302至305之內容寫到第二 從屬處理器331之寄存器332至335。因此,可將該中斷例程造成的寄存器內容之修改寫到 從屬處理器321、331之該等寄存器。 本發(fā)明并不限于將該主控處理器的寄存器302至307中之第一子集的寄存器302
15至305的每一寄存器之內容復制到造成中斷或異常的該從屬處理器的各寄存器之實施例。 在其它實施例中,可以只將第一子集的寄存器302至305中已被中斷例程修改的某些寄存 器之內容復制到該從屬處理器。因此,可加速該跳轉指令的執(zhí)行,這是因為只須將較少量的 數據自主控處理器301復制到從屬處理器321、331。 在將主控處理器301的寄存器302至307的第一子集的寄存器302至305中之一 部分或全部的內容寫到造成該中斷或異常的從屬處理器321、331的各寄存器之后,可自緩 沖存儲器313讀取主控處理器301的寄存器302至307中之第一子集的寄存器302至305 之內容,而該等內容亦可包含主控處理器301之返回地址。此外,可將先前被儲存到該暫時 性寄存器的緩沖存儲器313之地址寫到主控處理器301的該第二多個寄存器中之一個寄存 器,例如,寫到寄存器306。因此,可恢復主控處理器301在該中斷或異常之前的狀態(tài)。
然后,可將計算機系統(tǒng)300的指示器位308及或有的從屬處理器321、331的指示 器位328、338設定為用來指示系在該并行操作模式中操作計算機系統(tǒng)300之值,且可在從 屬處理器321、331的每一從屬處理器中起動指令的執(zhí)行,其中運行狀態(tài)位330、340指示個 別的從屬處理器在該中斷或異常之前是正在運行中。此外,可在主控處理器301的該返回 地址上開始主控處理器301中之指令執(zhí)行。因此,可在計算機系統(tǒng)300中繼續(xù)程序的執(zhí)行。
可使計算機系統(tǒng)300適于以一不可分割的作業(yè)之方式執(zhí)行該跳轉指令的上述之 步驟。因此,可有利地避免該跳轉指令的執(zhí)行期間因中斷或異常而造成的錯誤。
計算機系統(tǒng)300可進一步包含適于將計算機系統(tǒng)300自該并行操作模式切換到該 串行操作模式之結束指令(end instruction)。為達到此一 目的,計算機系統(tǒng)300可將指 示器位308及或有的從屬處理器321、331的指示器位328、338設定為用來指示計算機系統(tǒng) 300正在該串行操作模式中操作之值。在一個實施例中,可將指示器位308、328、338設定為 值"關"。 可使計算機系統(tǒng)300進一步適于在該并行操作模式期間發(fā)生中斷或異常時執(zhí)行 下列步驟將主控處理器301的寄存器302至307及從屬處理器321、331的寄存器322至 325、332至335的內容之至少一部分、以及或有的從屬處理器321、331的運行狀態(tài)位330、 340之值儲存到緩沖存儲器313 ;以及將計算機系統(tǒng)300切換到該串行操作模式。如果在從 屬處理器321、331中之一個從屬處理器中正在發(fā)生中斷或異常,則計算機系統(tǒng)300可額外 地將該主控處理器的寄存器302至307中之至少一個寄存器的內容設定為個別的從屬處理 器的該等寄存器中之至少一個寄存器的內容。因此,可以獨立于操作系統(tǒng)之方式儲存處理 器301、321、331的該等寄存器中之數據。如果在從屬處理器321、331中之一個從屬處理器 中正在發(fā)生中斷或異常,則可將與操作系統(tǒng)的中斷例程有關之數據自從屬處理器321、331 寫到主控處理器301之各寄存器。因此,該操作系統(tǒng)可處理這些數據,其中該操作系統(tǒng)無須 考慮到從屬處理器321、331是否存在。尤其無須使該操作系統(tǒng)適于自從屬處理器321、331 中之任何從屬處理器取得與中斷例程的執(zhí)行有關之數據。 在某些實施例中,可將計算機系統(tǒng)300之組態(tài)設定成如果在指示器位308被設定 為用來指示計算機系統(tǒng)300處于該第二作業(yè)模式中之值時,發(fā)生了中斷或異常,則執(zhí)行下 列步驟。計算機系統(tǒng)300所執(zhí)行的行動可取決于是在主控處理器301中或是在從屬處理器 321、331的從屬處理器中發(fā)生中斷或異常。 如果正在主控處理器301中發(fā)生中斷或異常,則計算機系統(tǒng)300可停止從屬處理器321、331中之指令執(zhí)行。在停止了從屬處理器321、331中之每一從屬處理器的指令執(zhí)行 之后,計算機系統(tǒng)300可將從屬處理器321、331的寄存器322至325、332至335之內容寫 到緩沖存儲器313,且可自主控處理器301的寄存器302至307的第二子集的寄存器306、 307中之一個寄存器(例如,自寄存器306)讀取緩沖存儲器313之地址。這些寄存器可包 含從屬處理器321、331中之每一個從屬處理器的返回地址。此外,可將從屬處理器321、331 的運行狀態(tài)位330、340儲存到緩沖存儲器313。運行狀態(tài)位330、340指示從屬處理器321、 331中之每一從屬處理器在發(fā)生該中斷或異常之前是否正在執(zhí)行指令。此外,可將主控處理 器301的識別號碼儲存到緩沖存儲器313。如前文所述,在某些實施例中,主控處理器301 可具有識別號碼O。在這些實施例中,如果在主控處理器301中發(fā)生了中斷或異常,則可將 該識別號碼0儲存到緩沖存儲器313。 然后,可將其中包含緩沖存儲器313的地址的主控處理器301的寄存器302至307 的第二子集的寄存器306、307中之一個寄存器(在某些實施例中,該寄存器可以是寄存器 306)的內容與主控處理器301的寄存器302至307的第一子集的寄存器302至305中之一 個寄存器的內容交換,例如,與寄存器305的內容交換。其內容與寄存器305的內容交換之 該寄存器可以相同于該跳轉指令用來讀取緩沖存儲器313的地址之寄存器。
主控處理器301的第一子集的寄存器302至305可對應于根據現階段最高技術的 處理器之寄存器組。因此,可將適于在計算機系統(tǒng)300中運行的根據現階段最高技術的該 處理器之操作系統(tǒng)之組態(tài)設定成若發(fā)生了中斷或異常,則儲存主控處理器301的第一子 集的寄存器302至305之內容,且在完成了系為該操作系統(tǒng)的一部分的中斷例程之后,恢復 第一子集的寄存器302至305之內容。因此,可藉由將包含該緩沖存儲器的地址的該寄存器 之內容與第一子集的寄存器302至305中之一個寄存器之內容交換,而確保該緩沖存儲器 的該地址在完成了該中斷例程之后出現在主控處理器301的寄存器302至305中之一個寄 存器,且確保該地址可被該跳轉指令存取。此外,在計算機系統(tǒng)300之該并行操作模式中, 在計算機系統(tǒng)300中運行的程序可使用第一子集的寄存器302至305中之每一寄存器,這 是因為緩沖存儲器313之該地址于該并行操作模式中被儲存在該主控處理器的第二子集 的寄存器306、307中之一個寄存器。因此,可改善計算機系統(tǒng)300與根據現階段最高技術 的計算機系統(tǒng)100間之兼容性。 然后,可將主控處理器301之寄存器302至307中之第二子集的寄存器306、307之 內容儲存到緩沖存儲器313。然后,可擷取主控處理器301之返回地址。在某些實施例中, 可自該第一子集的寄存器中之一個寄存器(例如,自寄存器302)讀取主控處理器301之該 返回地址。在儲存了主控處理器301的該返回地址之后,可以可自主控處理器301的寄存 器302至307的第二子集的寄存器306、307中之一個寄存器(例如,寄存器307)讀取的該 跳轉指令的地址取代主控處理器301之該返回地址。因此,在完成了該操作系統(tǒng)的該中斷 例程之后,該跳轉指令被呼叫,以便恢復主控處理器301的第二子集的寄存器306、307之內 容、從屬處理器321、331的寄存器322至325、332至335之內容、以及并未被該操作系統(tǒng)恢 復的從屬處理器321、331之運行狀態(tài)位330、340。從屬處理器321、331之該等寄存器可包 含從屬處理器321、331中之每一個從屬處理器的返回地址。 如果正在從屬處理器321、331的其中一個從屬處理器中發(fā)生中斷或異常,則可停 止主控處理器301以及從屬處理器321、331的每一個從屬處理器中之指令的執(zhí)行。在所有的處理器301、321、331中停止了指令的執(zhí)行之后,計算機系統(tǒng)300可將主控處理器301的 寄存器302至307中之每一個寄存器的內容儲存到緩沖存儲器313,且可自主控處理器301 的寄存器302至307的第二子集的寄存器306、307中之一個寄存器(例如,自寄存器306) 讀取緩沖存儲器313之地址。此外,可將從屬處理器321、331中之每一個從屬處理器的寄存 器322至325、332至335之內容以及從屬處理器321、331中之每一個從屬處理器的運行狀 態(tài)位330、340之值儲存到緩沖存儲器313。運行狀態(tài)位330、340的值指示從屬處理器321、 331在發(fā)生該中斷或異常時正在運行。 然后,可將主控處理器301的寄存器302至307的第二子集的寄存器306、307中 用來儲存緩沖存儲器313的地址之其中一個寄存器的內容寫到暫時性寄存器,而在某些實 施例中,可在緩沖存儲器313中提供該暫時性寄存器。此外,可將發(fā)生中斷或異常的從屬處 理器321、331之識別號碼儲存在緩沖存儲器313。在某些實施例中,第一從屬處理器321可 具有識別號碼1,且第二從屬處理器331可具有識別號碼2。在這些實施例中,如果在第一 從屬處理器321中發(fā)生中斷或異常,則可將識別號碼1儲存到緩沖存儲器313,且如果在第 二從屬處理器331中發(fā)生中斷或異常,則可將識別號碼2儲存到緩沖存儲器313。從屬處理 器321、331之該等寄存器可包含從屬處理器321、331中之每一個從屬處理器的返回地址。
然后,可將發(fā)生中斷或異常的從屬處理器321、331的該等寄存器之內容寫到主控 處理器301的寄存器302至307中之第一子集的寄存器302至305。如果在第一從屬處理 器321中發(fā)生中斷或異常,則可將第一從屬處理器321的寄存器322至325之內容寫到主 控處理器301之寄存器302至305。同樣地,如果在第二從屬處理器331中發(fā)生中斷或異 常,則可將第二從屬處理器331的寄存器332至335之內容寫到寄存器302至305。本發(fā)明 不限于將第一從屬處理器321或第二從屬處理器331的寄存器322至325或332至335中 之每一個寄存器的內容分別寫到主控處理器301之對應的寄存器之實施例。在其它實施例 中,可以只將被操作系統(tǒng)的中斷例程修改的某些從屬處理器之內容寫到主控處理器301之 寄存器。 在該中斷例程中,操作系統(tǒng)將處理主控處理器301的寄存器302至307中可對應 于根據現階段最高技術的處理器的寄存器組(例如,對應于前文中參照圖la至lb所述的 現階段最高技術的處理器101之寄存器102至105)之第一子集的寄存器302至305之內 容。寄存器302至305之內容可包含與該操作系統(tǒng)有關的中斷或異常相關之所有信息,其 中包括包含了與該中斷或異常有關的進一步信息之從屬處理器321、331的堆棧之存儲器 地址。 在將發(fā)生中斷或異常的從屬處理器321、331的該等寄存器之內容寫到主控處理 器301的寄存器302至307之后,主控處理器301之狀態(tài)可對應于主控處理器301中若發(fā) 生中斷或異常時所存在之狀態(tài)。因此,對該操作系統(tǒng)而言,看起來猶如主控處理器301遭遇 到了中斷或異常。因此,縱然在使該操作系統(tǒng)適于只包含單一處理器的計算機系統(tǒng)之實施 例中,該操作系統(tǒng)也可處理該中斷或異常。 然后,可將主控處理器301的寄存器302至307的第一子集的寄存器302至305 中之一個寄存器(諸如寄存器305,而寄存器305之內容相同于發(fā)生中斷或異常的從屬處理 器321、331的對應的寄存器之內容)的內容寫到緩沖存儲器313(可自暫時性緩沖器擷取 緩沖存儲器313之地址),且可將緩沖存儲器313之地址寫到寄存器305。因此,可在主控處理器301的寄存器302至307的第一子集的寄存器302至305中之一個寄存器中提供緩 沖存儲器313之地址,且在完成了該中斷例程之后,該操作系統(tǒng)可恢復主控處理器301之狀 態(tài)。 然后,可將主控處理器301之返回地址儲存在緩沖存儲器313,且可用可自主控處 理器301的寄存器302至307的第二子集的寄存器306、307中之一個寄存器(例如,自寄 存器307)讀取的該跳轉指令的地址取代主控處理器301之返回地址。因此,可在完成該中 斷例程之后,執(zhí)行該跳轉指令。 可用不可分割的作業(yè)之方式執(zhí)行計算機系統(tǒng)300的該并行操作模式期間發(fā)生中 斷或異常時由計算機系統(tǒng)300執(zhí)行的上述步驟。如熟悉此項技術者習知的,因而可避免計 算機系統(tǒng)300執(zhí)行該等步驟時出現中斷或異常。 在執(zhí)行了上述的步驟之后,不論是否在主控處理器301或從屬處理器321、331中 之一個從屬處理器中發(fā)生中斷或異常,計算機系統(tǒng)300都可將主控處理器301的指示器位 308設定為用來指示計算機系統(tǒng)300系處于該串行操作模式之值,例如,設定為值"關"。在 此種方式下,計算機系統(tǒng)300可被切換到該串行操作模式。然后,可執(zhí)行該操作系統(tǒng)之中斷 例程。 在下文中,將參照圖2b及圖2c而說明計算機系統(tǒng)300之作業(yè),其中圖2b示出在 計算機系統(tǒng)300上運行的程序400之示意流程圖,且圖2c示出程序400及中斷例程502之 示意流程圖。 在計算機系統(tǒng)300的操作系統(tǒng)被加載之前,可先識別主控處理器301及從屬處理 器321、331。在某些實施例中,可以硬件之形式提供將處理器指定為主控處理器301或從屬 處理器321、331中之一個從屬處理器。在這些實施例中,在計算機系統(tǒng)300的整個使用壽 命中,可使作為主控處理器301或從屬處理器321、331中之一個從屬處理器的指定保持不 變。在其它實施例中,可利用軟件實現作為主控處理器301或從屬處理器321、331中之一 個從屬處理器的指定。例如,可以計算機系統(tǒng)300的基本輸入/輸出系統(tǒng)(Basic Input/ OutputSystem ;簡稱BIOS)識別主控處理器301及從屬處理器321、331。在這些實施例中, 可藉由修改計算機系統(tǒng)300的BIOS設定值,而改變對該等處理器的指定。
在識別了主控處理器301及從屬處理器321 、331之后,計算機系統(tǒng)300的操作系 統(tǒng)可被加載。當該操作系統(tǒng)已激活時,計算機系統(tǒng)300可處于該串行操作模式。因此,主控 處理器301可提供根據現階段最高技術的計算機處理器之功能,例如,提供前文中參照圖 la至lb所述的計算機系統(tǒng)100中之處理器101之功能。因此,計算機系統(tǒng)300可與在某些 實施例中可適于根據現階段最高技術的計算機系統(tǒng)100之該操作系統(tǒng)協(xié)作。 一旦該操作系 統(tǒng)在計算機系統(tǒng)300中運行,即可激活程序400。 在程序400之步驟401中,可分配系統(tǒng)存儲器304中之緩沖存儲器313,其方式系 藉由呼叫為該目的而提供之CPU驅動例程。然后,在步驟402中,可執(zhí)行起動指令,以便起 動計算機系統(tǒng)300之該并行操作模式,且在步驟403中,可將堆棧存儲器分配給將被從屬處 理器321、331執(zhí)行的程序之各執(zhí)行緒??蓪⑹煜ご隧椉夹g者習知的存儲器分配技術用來分 配該堆棧存儲器。 在步驟404中,可執(zhí)行第一多個指令??捎芍骺靥幚砥?01以一種序列之方式執(zhí) 行該第一多個指令。因為主控處理器301可提供諸如前文中參照圖la至lb所述的處理器CN 101730881 A
說明書
17/23頁 101等的根據現階段最高技術的處理器之指令集,所以該第一多個指令可包含亦可根據現 階段最高技術的該處理器執(zhí)行之指令碼。因此,可利用適于提供根據現階段最高技術的處 理器IOI的程序代碼之編譯器而產生該第一多個指令。因此,來自現有函式庫之程序代碼 可被包含在程序400中。 在步驟405中,可一次或多次呼叫該變量傳送指令,以便將數據傳送到第一從屬 處理器321之寄存器322至325。因此,可使第一主控處理器321準備執(zhí)行程序400之執(zhí)行 緒。在步驟407中,可將該變量傳送指令用來將數據傳送到第二從屬處理器331之寄存器 332至335,以便使該第二從屬處理器準備執(zhí)行程序400之另一執(zhí)行緒。本發(fā)明不限于先將 數據傳送到第一從屬處理器321的寄存器322至325且然后將數據傳送到第二從屬處理器 331之實施例。在其它實施例中,可在將數據傳送到第一從屬處理器321的寄存器322至 325之前,先將數據傳送到第二從屬處理器331的寄存器332至335。
在步驟409中,可執(zhí)行該分叉指令,以便開始執(zhí)行第一從屬處理器321中之指令。 因此,在步驟410中,第一從屬處理器321可執(zhí)行第二多個指令。在步驟411中,可將該分 叉指令用來開始第二從屬處理器331中之指令的執(zhí)行。因此,在步驟412中,第二從屬處理 器331可執(zhí)行第三多個指令。然后,主控處理器301可執(zhí)行第四多個指令。計算機系統(tǒng)300 可同時執(zhí)行該第二多個指令、該第三多個指令、及該第四多個指令,其中該第二多個指令的 執(zhí)行、該第三多個指令的執(zhí)行、及該第四多個指令的執(zhí)行構成了程序400之不同的執(zhí)行緒。 因此,程序400的執(zhí)行速度可比在前文中參照圖la至lb所述的根據現階段最高技術的計 算機系統(tǒng)IOO時加快。 在主控處理器301及從屬處理器321、331中之每一處理器都適于提供特定類型的 處理器的功能(例如,前文中參照圖la至lb所述的根據現階段最高技術的處理器101的 功能)之實施例中,該第二、第三、及第四多個指令之每一指令可包含適于在該個別類型的 處理器中執(zhí)行之指令碼。例如,該第二、第三、及第四多個指令之每一個指令可包含適于在 該x86或x86-64類型的處理器中執(zhí)行之指令碼。 在從屬處理器321、331是與主控處理器301不同類型的處理器之其它實施例中, 該第二多個指令及該第三多個指令可包含特別適于在從屬處理器321、331中執(zhí)行的指令 碼,而該第四多個指令可包含特別適于在主控處理器301中執(zhí)行的指令碼。
在完成了其中包含該第二多個指令的執(zhí)行緒之后,第一從屬處理器321可以執(zhí)行 該從屬聯合指令,以便停止執(zhí)行第一從屬處理器321中之指令(步驟415)。為達到此一 目 的,可提供該從屬聯合指令作為該第二多個指令之最后的指令。同樣地,亦可提供該從屬聯 合指令作為該第三多個指令之最后的指令,因而在執(zhí)行了該第三多個指令之后,停止執(zhí)行 第二從屬處理器331中之指令(步驟423)。 在完成了該第四多個指令的執(zhí)行之后,主控處理器301可在步驟414中執(zhí)行該主 控聯合指令,以便等候到第一從屬處理器321完成了該第二多個指令的執(zhí)行為止。接著,在 步驟416中,主控處理器301可再執(zhí)行該主控聯合指令一次,以便等候到第二從屬處理器 331完成了該第三多個指令的執(zhí)行為止。 然后,主控處理器301可在步驟417、419中執(zhí)行該變量接收指令,以便分別自第一 從屬處理器321及第二從屬處理器331讀取該第二多個指令及該第三多個指令所提供的執(zhí) 行緒之執(zhí)行結果。在圖2b中,代號418指示第一從屬處理器321提供寄存器322至325之
20內容,且代號420指示第二從屬處理器331提供寄存器332至335之內容。 然后,主控處理器421可以序列之方式執(zhí)行第五多個指令(步驟421)。與在步驟
404中執(zhí)行的該第一多個指令類似,該第五多個指令可包含適于在諸如前文中參照圖la至
lb所述的處理器101等的根據現階段最高技術的處理器中執(zhí)行之指令碼,而主控處理器
301提供了該根據現階段最高技術的處理器之功能。因此,該第五多個指令可包含適于提供
根據現階段最高技術的處理器101的程序代碼的編譯器所產生之程序代碼。在終止程序400的執(zhí)行之前,主控處理器301可在步驟422中執(zhí)行該結束指令,以
便將計算機系統(tǒng)300切換到該串行操作模式。此外,可在終止程序400的執(zhí)行之前,先空出
緩沖存儲器313,且可呼叫計算機系統(tǒng)300中提供的CPU驅動例程,而執(zhí)行該步驟。 圖2c示出程序400以及分別在從屬處理器321、331及主控處理器301中執(zhí)行該
第二多個指令、該第三多個指令、及該第四多個指令時發(fā)生中斷或異常的情形下可執(zhí)行的 中斷例程502之示意流程圖。 在圖2c中,代號510、511 、512表示被主控處理器301執(zhí)行的該第四多個指令之指 令。代號510' 、511' 、512'表示被第一從屬處理器321執(zhí)行的該第二多個指令之指令,且 代號510" 、511〃 、512〃表示被第二從屬處理器331處理的該第三多個指令之指令。
于分別在主控處理器301及從屬處理器321、331中執(zhí)行該等指令510' 、511'、 512'之時點上,可能發(fā)生了中斷或異常460。在該中斷或異常460之后,系統(tǒng)300可執(zhí)行 將主控處理器301的寄存器302至307及從屬處理器321、331的寄存器322至325、332至 335之內容之至少一部分儲存到緩沖存儲器313以及將計算機系統(tǒng)300切換到該串行操作 模式之步驟。如果在從屬處理器321、331的一個從屬處理器中發(fā)生中斷或異常,則計算機 系統(tǒng)300可進一步將發(fā)生中斷或異常的從屬處理器321、331的寄存器322至325或332至 335中之至少一個寄存器的內容分別寫到主控處理器301的寄存器302至307的第一子集 的寄存器302至305中之至少一個寄存器。在圖2c中,以代號540指示發(fā)生中斷或異常時 由計算機系統(tǒng)300執(zhí)行的行動。如前文中參照圖2a所述的,當計算機系統(tǒng)300處于該并行 操作模式時,若發(fā)生中斷或異常,則計算機系統(tǒng)300亦可執(zhí)行進一步的行動。
然后,計算機系統(tǒng)300可執(zhí)行中斷例程502之指令520至525。中斷例程502可以 是包含對計算機系統(tǒng)300的該串行操作模式的支持且無須支持該并行操作模式的操作系 統(tǒng)之一部分。因此,中斷例程502可包含適于將該主控處理器的寄存器302至307的第一 子集的寄存器302至305之內容儲存到系統(tǒng)存儲器304以及在中斷例程502的執(zhí)行終止時 自系統(tǒng)存儲器304讀取第一子集的寄存器302至305之內容之指令。此外,中斷例程502 可修改主控處理器301的寄存器302至307的第一子集的寄存器302至305的一部分或全 部之內容。 然而,中斷例程502無須適于儲存且恢復主控處理器301的寄存器302至307的第 二子集的寄存器306、307之內容、第一從屬處理器321的寄存器322至325之內容、第二從 屬處理器331的寄存器332至335之內容、以及從屬處理器321、331的運行狀態(tài)位330、340 之值。在某些實施例中,中斷例程502可以是容許多任務的操作系統(tǒng)之一部分。尤其,可使 中斷例程502適于執(zhí)行可使用計算機系統(tǒng)300的該并行操作模式之另一程序,其中寄存器 306、307、322至325、332至335以及運行狀態(tài)位330、340的內容可被修改。因為在執(zhí)行了 中斷例程502的最后的指令525之后,中斷例程502無須恢復寄存器306、307、322至325、332至335以及運行狀態(tài)位330、340的內容,所以寄存器306、307、322至325、332至335以 及運行狀態(tài)位330、340的內容可以不同于在執(zhí)行了程序400的指令512、512' 、512〃之后 的該等寄存器以及運行狀態(tài)位之內容。 在完成了中斷例程502之后,計算機系統(tǒng)300執(zhí)行該跳轉指令550,這是因為已以 跳轉指令550之地址取代了可在其上執(zhí)行中斷例程502的主控處理器301之返回地址。
于執(zhí)行跳轉指令550時,計算機系統(tǒng)300可執(zhí)行前文中參照圖2a所述之步驟。在 執(zhí)行了該跳轉指令之后,恢復處理器301 、321 、331的寄存器302至307、322至325、332至 335中之每一個寄存器以及運行狀態(tài)位330、340之內容,其中可適當地考慮中斷例程502對 某些寄存器所作的修改。 因此,雖然計算機系統(tǒng)300的操作系統(tǒng)(尤其是中斷例程502)不適于儲存及恢復 處理器301、321、331的寄存器302至307、322至325、332至335中之每一個寄存器以及運 行狀態(tài)位330、340之內容,但是在執(zhí)行了中斷例程502之后,恢復了寄存器302至307、322 至325、332至335以及運行狀態(tài)位330、340之內容。此外,可在計算機系統(tǒng)300的該串行 操作模式下執(zhí)行中斷例程502。因此,不需要針對計算機系統(tǒng)300的該并行操作模式而調適 該操作系統(tǒng)。因此,根據本發(fā)明揭示的計算機系統(tǒng)300提供了與為不支持從屬處理器321、 331的存在的現有計算機系統(tǒng)所設計的軟件間之高兼容性。 在某些實施例中,計算機系統(tǒng)300可進一步包含第一模式切換指令,用以將計算 機系統(tǒng)300自該并行操作模式切換到該串行操作模式??墒乖撓到y(tǒng)適于執(zhí)行在該第一模式 切換指令被呼叫時將主控處理器301及從屬處理器321、331的寄存器302至307、322至 325、332至335的至少一部分之內容儲存到緩沖存儲器313并將該系統(tǒng)切換到該串行操作 模式之步驟。如果從屬處理器321、331中之一個從屬處理器執(zhí)行該第一模式切換指令,則 計算機系統(tǒng)300之組態(tài)可額外地被設定成將執(zhí)行該第一模式切換指令的從屬處理器321 或從屬處理器331的寄存器322至325或332至335中之至少一個寄存器的內容分別寫到 主控處理器301的寄存器302至307中之至少一個寄存器。 在某些實施例中,計算機系統(tǒng)300之組態(tài)可設定成于執(zhí)行該第一模式切換指令 時,執(zhí)行下列步驟,計算機系統(tǒng)300可檢查指示器位308是否被設定為用來指示計算機系統(tǒng) 300處于該并行操作模式之值。如果指示器位308指示計算機系統(tǒng)300系處于該串行操作 模式,則產生非法指令錯誤,且將不執(zhí)行任何進一步的行動。計算機系統(tǒng)300執(zhí)行之進一步 的行動系取決于是由主控處理器301或是由從屬處理器321、331中之從屬處理器執(zhí)行該第 一模式切換指令。 如果是由主控處理器301執(zhí)行該第一模式切換指令,則計算機系統(tǒng)300可停止從 屬處理器321、331中之指令執(zhí)行。在已停止了從屬處理器321、331的每一從屬處理器中之 指令的執(zhí)行之后,可將從屬處理器321 、331的寄存器322至325、332至335之內容以及或有 的從屬處理器321、331之運行狀態(tài)位330、340寫到緩沖存儲器313,且可自主控處理器301 的寄存器302至307的第二子集的寄存器306、307之一個寄存器(例如,自寄存器306)讀 取緩沖存儲器313之地址。此外,可將主控處理器301之識別號碼(在某些實施例中,該識 別號碼可以是號碼O)寫到緩沖存儲器313。 然后,可將其中包含緩沖存儲器313的地址的主控處理器301的寄存器302至307 的第二子集的寄存器306、307中之一個寄存器之內容(例如,寄存器306之內容)與主控
22處理器301的寄存器302至307的第一子集的寄存器302至305中之一個寄存器之內容交 換(例如,與寄存器305之內容交換)。如前文所述,可將在計算機系統(tǒng)300上運行的操作 系統(tǒng)之組態(tài)設定成若發(fā)生中斷或異常,則處理主控處理器301之第一子集的寄存器302至 305。因此,寄存器305、306的內容之交換可有助于保證該操作系統(tǒng)在發(fā)生中斷或異常之情 形下將儲存并恢復緩沖存儲器313之地址。 然后,該計算機系統(tǒng)可將主控處理器301的第二子集的寄存器306、307之內容儲 存到緩沖存儲器313。如前文所述,寄存器302至307的第二子集的寄存器306、307中之一 個寄存器(例如,寄存器307)可包含該跳轉指令之地址。因此,于儲存寄存器306、307之 內容時,可將該跳轉指令之地址儲存到緩沖存儲器313。然后,計算機系統(tǒng)300可將指示器 位308設定為用來指示該計算機系統(tǒng)系處于該第二作業(yè)模式之值,例如,設定為值"關"。
如果從屬處理器321、331中之一個從屬處理器執(zhí)行該第一模式切換指令,則計算 機系統(tǒng)300可停止主控處理器301以及從屬處理器321、331中之指令的執(zhí)行。在停止了所 有處理器301、321、331中之指令的執(zhí)行之后,可將主控處理器301的寄存器302至307之 內容儲存到緩沖存儲器313,且可自主控處理器301的寄存器302至307的第二子集的寄存 器306、307中之寄存器(例如,自寄存器306)讀取緩沖存儲器313之地址。此外,可將從 屬處理器321、331的寄存器322至325、332至335之內容以及或有的從屬處理器321、331 的運行狀態(tài)位330、340之值儲存到緩沖存儲器313。 在某些實施例中,無須將執(zhí)行該第一模式切換指令的從屬處理器321、331之內容 儲存到該緩沖存儲器。在這些實施例中,只有將另一從屬處理器的寄存器之內容儲存到緩 沖存儲器313。因此,如果第一從屬處理器321執(zhí)行該第一模式切換指令,則將第二從屬處 理器331的寄存器332至335之內容以及或有的除了從屬處理器321、331以外在計算機系 統(tǒng)300中提供的另外的從屬處理器的寄存器之內容儲存到緩沖存儲器313。相反地,如果 第二從屬處理器331執(zhí)行該第一模式切換指令,則該系統(tǒng)可將第一從屬處理器321的寄存 器322至325之內容儲存到緩沖存儲器313。然而,在這些實施例中,可將運行狀態(tài)位330、 340中之每一個運行狀態(tài)位的值儲存到緩沖存儲器313。 然后,可將其中包含該緩沖存儲器的地址的主控處理器301的寄存器之內容(例 如,寄存器306之內容)儲存到暫時性寄存器,且在某些實施例中,可在緩沖存儲器313中 提供該該暫時性寄存器。此外,可將執(zhí)行該第一模式切換指令的該處理器之識別號碼儲存 到緩沖存儲器313。例如,如果由第一從屬處理器321執(zhí)行該第一模式切換指令,則計算機 系統(tǒng)300可將識別號碼1儲存到緩沖存儲器313。如果由第二從屬處理器331執(zhí)行該第一 模式切換指令,則計算機系統(tǒng)300可將識別號碼2儲存到緩沖存儲器313。在其它實施例 中,可使用不同的識別號碼。 然后,可將執(zhí)行該第一模式切換指令的從屬處理器321或331的個別寄存器322 至325或332至335之內容分別寫到主控處理器301的寄存器302至307中之第一子集的 寄存器302至305。在某些實施例中,當將寄存器322至325或332至335的內容寫到第一 子集的寄存器302至305時,可覆寫主控處理器301的寄存器302至307的第二子集的寄 存器306、307之一部分或全部寄存器的內容。 然后,計算機系統(tǒng)300可將主控處理器301的第一子集的寄存器302至305中之 一個寄存器的內容(例如,寄存器305的內容)儲存到緩沖存儲器313。然后,可將該暫時性緩沖器的內容寫到寄存器305。因此,緩沖存儲器313之地址被儲存在寄存器中,且該操 作系統(tǒng)在發(fā)生中斷或異常時可處理該寄存器之內容。然后,可將指示器位308設定為用來 指示計算機系統(tǒng)300系處于第一作業(yè)模式之值(例如,設定為值"關"),以便將計算機系統(tǒng) 300切換到該串行操作模式。 在某些實施例中,可將計算機系統(tǒng)300之組態(tài)設定成不可分割的作業(yè)之方式執(zhí)行 前文所述之步驟,以避免在執(zhí)行該第一模式切換指令期間因中斷或異常而造成之問題。
在執(zhí)行了該第一模式切換指令之后,該計算機系統(tǒng)可在該串行操作模式下執(zhí)行一 個或多個指令。在執(zhí)行了前文所述之起動指令或將于后文中更詳細說明的第二模式切換指 令之前,計算機系統(tǒng)300可保持在該串行操作模式中。例如,計算機系統(tǒng)300可執(zhí)行對計算 機系統(tǒng)300的該操作系統(tǒng)之呼叫。 計算機系統(tǒng)300可進一步包含第二模式切換指令,且第二模式切換指令適于將計 算機系統(tǒng)300自該串行操作模式切換到該并行操作模式,并自緩沖存儲器313讀取處理器 301、321、331的寄存器302至307、322至325、332至335的一部分或全部寄存器之內容、以 及或有的從屬處理器321、331的運行狀態(tài)位330、340之值。如果從屬處理器321、331中之 一個從屬處理器先前執(zhí)行了該第一模式切換指令,則計算機系統(tǒng)300可額外地將主控處理 器301的寄存器302至307中之至少一個寄存器的內容寫到先前執(zhí)行了該第一模式切換指 令之從屬處理器321、331。 在某些實施例中,計算機系統(tǒng)300之組態(tài)可被設定成于執(zhí)行該第二模式切換指令 時執(zhí)行下列步驟。首先,計算機系統(tǒng)300可檢查控制寄存器位309。如果控制寄存器位309 之值指示不容許計算機系統(tǒng)300的該并行操作模式,則產生非法指令錯誤,且將不執(zhí)行任 何進一步的行動。否則,計算機系統(tǒng)300可讀取用來指示先前執(zhí)行了該第一模式切換指令 的處理器之識別號碼。計算機系統(tǒng)300所執(zhí)行的進一步之步驟可取決于是由主控處理器 301或是由從屬處理器321、331中之一個從屬處理器執(zhí)行了該第一模式切換指令。
如果是由在某些實施例中可以0值的指示器號碼指示之主控處理器301執(zhí)行了該 第一模式切換指令,則計算機系統(tǒng)300可自緩沖存儲器313讀取從屬處理器321、331的寄 存器322至325、332至335之內容、以及或有的運行狀態(tài)位330、340之值。此外,則計算機 系統(tǒng)300可自緩沖存儲器讀取主控處理器301的寄存器302至307的第二子集的寄存器 306、307之內容。然后,可將其中包含該緩沖存儲器的地址的主控處理器301的寄存器302 至307的第一子集的寄存器302至305中之一個寄存器的內容與第二子集的寄存器306、 307中之一個寄存器的內容交換,以便將緩沖存儲器313之地址儲存在第二子集的寄存器 306、307。在某些實施例中,可交換寄存器305、306之內容。 然后,計算機系統(tǒng)300可將指示器位308設定為用來指示計算機系統(tǒng)300系處于 該并行操作模式之值。在某些實施例中,可將指示器位308設定為值"關"。然后,可恢復主 控處理器301及從屬處理器321、331中之任何從屬處理器中之指令的執(zhí)行,其中運行狀態(tài) 位330、340之值指示個別的從屬處理器321、331在該第一模式切換指令被執(zhí)行之前正在執(zhí) 行指令。 如果該等從屬處理器中可由大于零的識別號碼的值指示之其中一個從屬處理器 先前執(zhí)行了該第一模式切換指令,則可自緩沖存儲器313讀取從屬處理器321、331的寄存 器322至325、332至335之內容、 及運行狀態(tài)位330、340之值,且可自主控處理器301的第一子集的寄存器302至305中之一個寄存器(例如,自寄存器305)讀取緩沖存儲器313 之地址。在某些實施例中,只須自緩沖存儲器313讀取先前并未執(zhí)行該第一模式切換指令 的該從屬處理器321、331的寄存器之內容。此外,計算機系統(tǒng)300可自緩沖存儲器313讀 取主控處理器301的寄存器302至307的第二子集的寄存器306、307之內容。
然后,可將包含緩沖存儲器313的地址的寄存器(在某些實施例中,可以是寄存器 305)之內容寫到可在緩沖存儲器313中提供的暫時性寄存器,且可自緩沖存儲器313讀取 寄存器305之內容。然后,可將主控處理器301的寄存器302至307的第一子集的寄存器 302至305之內容寫到先前執(zhí)行了該第一模式切換指令的從屬處理器321、331之寄存器。 因此,從屬處理器321、331之寄存器可包含當計算機系統(tǒng)300在該串行操作模式下操作時 對主控處理器的寄存器所作之修改。因此,可更容易在該從屬處理器中繼續(xù)于該串行操作 模式期間在主控處理器301上運行的執(zhí)行緒之執(zhí)行。例如,主控處理器301的寄存器302 至307中之第一子集的寄存器302至305可包含當計算機系統(tǒng)300系處于該并列作業(yè)模式 時可能被從屬處理器321、331視為當計算機系統(tǒng)300在該串行操作模式下操作時發(fā)生的中 斷或異常有關之異常信息。 然后,可自緩沖存儲器313讀取主控處理器301的寄存器302至307的第一子集的 寄存器302至305之內容,且可將指示器位308設定為用來指示計算機系統(tǒng)300系處于該 并行操作模式之值,且可恢復主控處理器301及從屬處理器321、331中之那些從屬處理器 中之指令的執(zhí)行,其中各自的運行狀態(tài)位330、340之值指示當該第一模式切換指令被呼叫 而將該計算機系統(tǒng)切換到該串行操作模式時系在個別的從屬處理器321、331中執(zhí)行指令。
在某些實施例中,計算機系統(tǒng)300之組態(tài)可被設定成以不可分割的作業(yè)之方式 執(zhí)行該第二模式切換指令的上述步驟,以避免于該第二模式切換指令的執(zhí)行期間因中斷或 異常的發(fā)生而造成之問題。 可將該第一模式切換指令及該第二模式切換指令用來實施可將計算機系統(tǒng)300 在該平行與串行操作模式之間切換的程序。如果執(zhí)行該第一模式切換指令,則在執(zhí)行該起 動指令或該第二模式切換指令之前,將在該串行操作模式下執(zhí)行程序之進一步的執(zhí)行。使 用該第一模式切換指令及(或)該第二模式切換指令之程序可包含用來執(zhí)行下列步驟之進 一步的指令在執(zhí)行該第一模式切換指令之后,將其中儲存緩沖存儲器313的地址的該主 控處理器的該寄存器302至307的寄存器305或另一寄存器之內容儲存在系統(tǒng)存儲器304 中;以及在執(zhí)行該第二模式切換指令之前,先自系統(tǒng)存儲器304讀取寄存器305之內容???利用計算機系統(tǒng)300的該串行操作模式之標準儲存及加載指令以執(zhí)行上述步驟。在將寄存 器305的內容儲存在該系統(tǒng)存儲器之后,該程序可使用主控處理器301的寄存器302至307 的第一子集的寄存器302至305中之每一個寄存器。或者,可在執(zhí)行該第一及(或)該第 二模式切換指令之前,先將緩沖存儲器313之地址儲存在可自其加載寄存器305之變量。
可利用主控處理器301及從屬處理器321、331中提供的專門電路或利用主控處理 器301及從屬處理器321、331中提供的微碼而提供計算機系統(tǒng)300的上述之功能及指令。
前文所揭示的該等特定實施例只是舉例,這是因為熟悉此項技術者在受益于本發(fā) 明的揭示之后,可易于以不同但等效之方式修改及實施本發(fā)明。例如,可按照不同的順序執(zhí) 行前文所述之程序步驟。此外,除了在最后的權利要求書中所述者之外,將不受本說明書中 示出的結構或設計的細節(jié)之限制。因此,顯然可改變或修改前文中揭示的該等特定實施例,且所有此類變化將被視為在本發(fā)明之范圍及精神內。因此,最后的權利要求書將述及本發(fā) 明所尋求的保護。
權利要求
一種包括主控處理器(301)及至少一個從屬處理器(321、331)的系統(tǒng)(300),其中該主控處理器(301)的狀態(tài)包括第一多個變量,且該從屬處理器(321、331)的狀態(tài)包括第二多個變量,該系統(tǒng)(300)包括由該主控處理器(301)及該從屬處理器(321、331)處理數據的并行操作模式、以及由該主控處理器(301)處理數據的串行操作模式;該系統(tǒng)(300)被設定成響應該并行操作模式中發(fā)生中斷或異常而執(zhí)行下列步驟將該第一多個變量及該第二多個變量的至少一部分儲存到緩沖存儲器(313);以及將該系統(tǒng)(300)切換到該串行操作模式;該系統(tǒng)(300)被進一步設定成響應該從屬處理器(321、331)中發(fā)生該中斷或異常,將該第一多個變量中的至少一個變量設定為該第二多個變量中的至少一個變量的值。
2. 如權利要求l所述的系統(tǒng)(300),其中,該第一多個變量包括第一返回地址,該第二 多個變量包括第二返回地址,且該系統(tǒng)(300)包括跳轉指令;其中該系統(tǒng)(300)被設定成響應該主控處理器(301)中發(fā)生該中斷或異常而執(zhí)行下列 步驟將該第一返回地址及該第二多個變量儲存到該緩沖存儲器(313);以及以該跳轉指 令的地址取代該第一返回地址;以及其中該跳轉指令適于執(zhí)行下列步驟響應該主控處理器(301)中發(fā)生該中斷或異常, 將該系統(tǒng)(300)切換到該并行操作模式,且自該緩沖存儲器(313)讀取該第二多個變量及 該第一返回地址。
3. 如權利要求2所述的系統(tǒng)(300),其中,該系統(tǒng)(300)被進一步設定成響應該從屬處 理器(321、331)中發(fā)生該中斷或異常而執(zhí)行下列步驟將該第一多個變量及該第二多個變量儲存到該緩沖存儲器(313);以該跳轉指令的該地址取代該第一返回地址;以及切換到 該串行操作模式;以及其中該跳轉指令適于執(zhí)行下列步驟響應該至少一個從屬處理器(321、331)中發(fā)生該 中斷或異常,將該系統(tǒng)(300)切換到該并行操作模式;自該緩沖存儲器(313)讀取該第二多 個變量;將該第二多個變量中的該至少一個變量設定為該第一多個變量中的該至少一個變 量的值;以及自該緩沖存儲器(313)讀取該第一多個變量。
4. 如權利要求1、2或3所述的系統(tǒng)(300),進一步包括用來起動該并行操作模式的起 動指令,該起動指令適于將該第一多個變量的第一變量設定為該緩沖存儲器(313)的地 址,將該第一多個變量的第二變量設定為該跳轉指令的地址,并將該處理器切換到該并行 操作模式。
5. 如權利要求1、2或3所述的系統(tǒng)(300),進一步包括變量傳送指令,該變量傳送指令 適于將該第一多個變量中的一個或多個變量的值寫到該第二多個變量中的一個或多個變
6. 如權利要求1、2或3所述的系統(tǒng)(300),進一步包括變量接收指令,該變量接收指令 適于將該第二多個變量中的一個或多個變量的值寫到該第一多個變量中的一個或多個變
7. 如權利要求1、2或3所述的系統(tǒng)(300),進一步包括適于開始該至少一個從屬處理 器(321、331)的指令執(zhí)行的分叉指令,且該指令執(zhí)行開始于被指定的存儲器地址。
8. 如權利要求1、2或3所述的系統(tǒng)(300),進一步包括從屬聯合指令,該從屬聯合指令 適于停止由該至少一個從屬處理器(321、331)的指令執(zhí)行。
9. 如權利要求8所述的系統(tǒng)(300),進一步包括主控聯合指令,該主控聯合指令適于使該主控處理器(301)保持等候到已終止了該至少一個從屬處理器(321、331)上的指令執(zhí)行為止。
10. 如權利要求1、2或3所述的系統(tǒng)(300),進一步包括結束指令,該結束指令適于將該系統(tǒng)(300)自該并行操作模式切換到該串行操作模式。
11. 一種操作包括主控處理器(301)及至少一個從屬處理器(321、331)的系統(tǒng)(300)的方法,該主控處理器(301)的狀態(tài)包括第一多個變量,且該從屬處理器(321、331)的狀態(tài)包括第二多個變量,該系統(tǒng)(300)包括由該主控處理器(301)及該從屬處理器(321、331)處理數據的并行操作模式、以及由該從屬處理器(321、331)處理數據的串行操作模式,該方法包括下列步驟響應該并行操作模式中發(fā)生中斷或異常,執(zhí)行下列步驟將該第一多個變量及該第二多個變量中的至少一部分儲存到緩沖存儲器(313);以及將該系統(tǒng)(300)切換到該串行操作模式;以及響應該至少一個從屬處理器(321、331)中發(fā)生該中斷或異常,將該第一多個變量中的至少一個變量設定為該第二多個變量中的至少一個變量的值。
12. 如權利要求11所述的方法,其中,該第一多個變量包括第一返回地址,該第二多個變量包括第二返回地址,且該系統(tǒng)(300)包括跳轉指令,該方法進一步包括下列步驟響應該主控處理器(301)中發(fā)生該中斷或異常,執(zhí)行下列步驟將該第一返回地址及該第二多個變量儲存到該緩沖存儲器(313);以及以該跳轉指令的地址取代該第一返回地址;以及在執(zhí)行該跳轉指令時,執(zhí)行下列步驟響應該主控處理器(301)中發(fā)生該中斷或異常,將該系統(tǒng)(300)切換到該并行操作模式,且自該緩沖存儲器(313)讀取該第二多個變量及該第一返回地址。
13. 如權利要求12所述的方法,進一步包括下列步驟響應該從屬處理器(321、331)中發(fā)生該中斷或異常,執(zhí)行下列步驟將該第一多個變量及該第二多個變量儲存到該緩沖存儲器(313);以該跳轉指令的該地址取代該第一返回地址;以及切換到該串行操作模式;以及在執(zhí)行該跳轉指令時,執(zhí)行下列步驟響應該至少一個從屬處理器(321、331)中發(fā)生該中斷或異常,將該系統(tǒng)(300)切換到該并行操作模式,自該緩沖存儲器(313)讀取該第二多個變量,將該第二多個變量中的該至少一個變量設定為該第一多個變量中的該至少一個變量的值,且自該緩沖存儲器(313)讀取該第一多個變量。
全文摘要
一種系統(tǒng)(300)包括主控處理器(301)及至少一個從屬處理器(321、331)。該主控處理器(301)的狀態(tài)包括第一多個變量,且該從屬處理器(321、331)的狀態(tài)包括第二多個變量。該系統(tǒng)(300)包括由該主控處理器(301)及該從屬處理器(321、331)處理數據的并行操作模式、以及由該主控處理器(301)處理數據的串行操作模式。響應該并行操作模式中發(fā)生的中斷或異常,該系統(tǒng)(300)執(zhí)行下列步驟將該第一多個變量及該第二多個變量的至少一部分儲存到緩沖存儲器(313);以及將該系統(tǒng)(300)切換到該串行操作模式。響應該從屬處理器(321、331)中發(fā)生的異常,則將該第一多個變量中的至少一個變量設定為該第二多個變量中的至少一個變量的值。
文檔編號G06F9/38GK101730881SQ200880018013
公開日2010年6月9日 申請日期2008年5月28日 優(yōu)先權日2007年5月31日
發(fā)明者U·克拉尼奇 申請人:先進微裝置公司