專利名稱:雙執(zhí)行部件處理器的反回邏輯線路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及具有雙執(zhí)行部件的計算機處理系統(tǒng)。更具體地說,該系統(tǒng)配備有使第二執(zhí)行部件即使在第一執(zhí)行部件上正在執(zhí)行可中斷的指令時也可以工作的邏輯線路。
按照慣例,在雙執(zhí)行部件處理系統(tǒng)中,當在第一執(zhí)行部件上遇到可中斷指令時通常是掛斷第二部件的工作直到執(zhí)行該指令為止。鑒于許多常用指令都可能會引起中斷,因而若第二執(zhí)行部件上正在執(zhí)行的指令必須根據(jù)在第一部件上正在執(zhí)行的指令是否會引起中斷而暫緩執(zhí)行,則處理系統(tǒng)的性能必然會下降。
在雙執(zhí)行部件處理器設(shè)計中,經(jīng)常需要取消剛執(zhí)行的第二指令。取消這個指令的理由可能是發(fā)生了因執(zhí)行第一指令引起的中斷。中斷可能因“頁面出錯”(即某頁面不在存儲器中)或因俘獲式中斷發(fā)生的。由于兩個指令是在同一個機器周期中執(zhí)行的,因而第二指令可能業(yè)已改變構(gòu)成體系的寄存器,即能為軟件所改變的寄存器,因而這時必須將其恢復(fù)到原先的狀態(tài)。舉例說,若第一執(zhí)行部件上正在執(zhí)行送數(shù)指令,第二部件上正在執(zhí)行允許溢出的加法指令,且該送數(shù)引起中斷,則由于加法指令因該中斷而必須取消,因而必須將加法指令在定點異常寄存器(XER)中設(shè)定的二進位恢復(fù)到其原先的值。
因此問題在于當?shù)诙?zhí)行部件中正在執(zhí)行的指令因第一執(zhí)行部件中執(zhí)行第一指令引起的副作用而被取消時恢復(fù)構(gòu)成體系的各寄存器已改變的內(nèi)容。可以看出,這類問題在成體系的寄存器是在回寫周期(不是執(zhí)行周期)期間改變的情況下是不存在的,因為在回寫期間就知道該中斷。因此若在執(zhí)行周期期間發(fā)生真正的中斷,這些寄存器的內(nèi)容會包括機器在中斷之前原先的狀態(tài)。這是因為直等到回寫周期才識別出真正的中斷,從而避免了寄存器通常在回寫周期期間進行的更新。這樣,在回寫周期期間無需更改這些寄存器的內(nèi)容。但那些在執(zhí)行周期期間更新的寄存器則必須加以復(fù)原。
1992年6月第35卷第1B期第398-399頁的IBM技術(shù)公開公報論述了一種多執(zhí)行部件處理器,該處理器有一個計數(shù)器跟蹤著業(yè)已傳送到定點部件(FXU)流水線最后一級之外的浮點部件(FPU)指令的數(shù)目。該計數(shù)器在原先也發(fā)送到FPU的指令傳送到FXU最后一級之外時遞增計數(shù),在FPU完成指令時遞減計數(shù)。這種系統(tǒng)只容許FPU在計數(shù)器的計數(shù)值大于零時完成指令,從而避免指令終結(jié)。
1989年9月第32卷第4A期第474頁的IBM技術(shù)公開公報介紹了一種用以在流水線處理器中快速中斷響應(yīng)的系統(tǒng)。數(shù)據(jù)流中采用了中斷狀態(tài)寄存器(ISR),這使所有指令對中斷是透明的。ISR是輔助的寄存器,除狀態(tài)寄存器之外還可以存儲在中斷服務(wù)結(jié)束時通過加入“復(fù)原”指令復(fù)原的流水線狀態(tài)參數(shù)。
美國專利5,148,530和4,901,222介紹了一種通過用虛擬存儲器編址方案改變系統(tǒng)中的地址重新執(zhí)行指令的方法。該虛擬地址在前一個操作數(shù)的讀出周期期間增加或減少。若該操作數(shù)不在物理存儲器中,則將基址寄存器的內(nèi)容恢復(fù)到其原值。這種系統(tǒng)在執(zhí)行開始之后取消某一軟件指令。
美國專利4,766,566總的介紹了一種具兩個特殊用途執(zhí)行部件的處理系統(tǒng)。美國專利4,912,628是關(guān)于一種具有能履行暫停和再繼續(xù)控制功能的特殊程序的虛機系統(tǒng)。該程序經(jīng)管虛機外部中斷控制器的控制過程并親自處理所有進來的中斷,而不是讓虛機處理各中斷。稍后,虛機恢復(fù)工作,同時通過恢復(fù)所有寄存器的內(nèi)容使使用者再繼續(xù)進行從中斷時刻起的任務(wù)。美國專利4,589,065在俘獲異常不導(dǎo)致中斷的情況下在單個周期內(nèi)進行存儲器地址有效性檢查。若確實發(fā)生中斷,則需要更多的周期。
可以看出,上述傳統(tǒng)的系統(tǒng)沒有一個是通用的雙執(zhí)行部件處理系統(tǒng),即能確定第二執(zhí)行部件中的指令是否在執(zhí)行周期內(nèi)改變成體系的諸寄存器并在中斷是第一執(zhí)行部件的指令引起時提供使這些寄存器復(fù)原的后備邏輯線路。
與現(xiàn)有技術(shù)相反,本發(fā)明能確定有待在第一執(zhí)行部件上執(zhí)行的指令是否可中斷指令,若然,且若在待在第二執(zhí)行部件上執(zhí)行的指令改變唯一體系結(jié)構(gòu)寄存器,則可以進行反回操作來維持這些唯一寄存器的狀態(tài)。這些寄存器都是在流水線的執(zhí)行周期期間更新的,相比之下,寄存器堆則是在回寫周期期間更新的。鑒于在執(zhí)行周期期間不知道該可中斷指令是否真的引起中斷信號的產(chǎn)生,因而必須將這些寄存器的內(nèi)容保存起來。這樣就可以使第二執(zhí)行部件中的指令繼續(xù)執(zhí)行而無需掛斷等待看看該可中斷指令是否確實引起中斷發(fā)生。
概括地說,本發(fā)明在兩個執(zhí)行部件中都配備了另外的邏輯線路,供確定是否有可能出現(xiàn)反回操作的情況。唯一寄存器的反回操作邏輯線路采用兩個譯碼來確定現(xiàn)時執(zhí)行的指令是否改變這些唯一寄存器。單個指令可以改變一個以上的唯一寄存器。本發(fā)明的反回操作邏輯線路設(shè)在兩個執(zhí)行部件中,但特別是設(shè)在裝有有待由執(zhí)行指令改變的相應(yīng)唯一寄存器的執(zhí)行部件中。若正在執(zhí)行改變其中一個唯一寄存器的指令,則該寄存器的內(nèi)容就存放在一個反回鎖存器中。這時若執(zhí)行可中斷指令而不致引起中斷,則發(fā)出刪除信號。但若可中斷指令確實引起中斷,則反回鎖存器的內(nèi)容就再裝入唯一寄存器中。可以看出,若不配備有反回系統(tǒng),可能同時只能發(fā)送單個可中斷指令。這對雙執(zhí)行部件設(shè)計來說可以說是性能上的一個嚴厲的懲罰,因為所有送數(shù)和存儲指令都會引起中斷的。因此,采用本發(fā)明則無論指令是否為可中斷的都可以在兩個執(zhí)行部件上執(zhí)行兩個指令。
因此,根據(jù)以上的概述,本技術(shù)領(lǐng)域的技術(shù)人員將從下面結(jié)合附圖所作的說明和所附的權(quán)利要求書了解到本發(fā)明的目的、特點和優(yōu)點。
圖1是示出本發(fā)明最佳實施例的雙執(zhí)行處理部件系統(tǒng)的各組成部分的方框圖。
圖2是本發(fā)明在沒有發(fā)生中斷(實例A)時和根據(jù)執(zhí)行部件1確實有中斷發(fā)生(實例B)時操作實例的圖表。
圖3a和3b是示出本發(fā)明用來反回各唯一寄存器中的指令的各步驟的流程圖。
圖4是示出用來實施本發(fā)明的實際控制信號及其順序的時序圖。
圖5是對應(yīng)于圖4的另一個時序圖,示出了用以反回XER和MQ寄存器的實際雙態(tài)信號。
參看圖1,圖中示出了本發(fā)明雙處理器系統(tǒng)的方框圖。系統(tǒng)存儲器與高速緩存器1相連接,由該緩存器將數(shù)據(jù)從系統(tǒng)存儲器(圖中未示出)傳送到寄存器堆5。接著寄存器堆5中的數(shù)據(jù)提供給雙定點部件9和11。
指令從指令總線(圖中未示出)提供給指令高速緩存部件(ICU)3。這些指令接著由譯碼部件7譯碼并發(fā)送出去。指令一經(jīng)譯碼就提供給相應(yīng)的一個定點部件9或11,以便將從寄存器5供到其上的數(shù)據(jù)如上所述那樣處理。接著定點部件9和11執(zhí)行從譯碼/發(fā)送部件7收到的指令并處理寄存器堆5所提供的數(shù)據(jù)。然后輸出數(shù)據(jù)送到通用鎖存器(2 1和23),以便將數(shù)據(jù)送回寄存器堆5再次由另一個指令(例如加法指令)加以處理,或者,數(shù)據(jù)也可以送到轉(zhuǎn)換邏輯線路(圖中未示出),由該線路將處理中的數(shù)據(jù)原先計算出的有效地址轉(zhuǎn)換到系統(tǒng)存儲器(或高速緩存器1)的實際存儲單元。數(shù)據(jù)然后存入存儲器轉(zhuǎn)換后的實際地址。因此,從定點9和11輸出的數(shù)據(jù)不是送回到寄存器堆5進一步處理就是存入系統(tǒng)存儲器(包括高速緩存器1在內(nèi))中。
從圖1中還可以看到定點異常寄存器(XER)13和多商(MQ)寄存器15。XER和MQ寄存器都是體系結(jié)構(gòu)唯一寄存器,都是在流水線的執(zhí)行周期期間更新的。因此和寄存器堆5不同,寄存器堆5是在回寫周期期間沿總線25更新的,XER和MQ寄存器則是在執(zhí)行指令時更新的。定點異常寄存器是個32位寄存器,其二進制位的定義是根據(jù)指令大致的執(zhí)行情況下的,而不是根據(jù)中間結(jié)果下的。通常,XER寄存器算術(shù)運算時保持溢出和進位狀態(tài)。舉例說,從進位指令減去的結(jié)果用三個值的和表示。這個指令是根據(jù)整個操作情況而不是根據(jù)中間和數(shù)確定二進制位的。XER中的零位是每當指令將溢出位取得使其表示溢出情況并繼續(xù)這樣取直到軟件清除它為止時取的總溢出位。二進制位1是溢出位,且系取得使其表示在執(zhí)行指令過程中出現(xiàn)溢出情況。若輸出二進制位0不等于輸出二進制位1,則加法和減法指令可取溢出位1為邏輯1。不然的話,溢出位就被清除掉。二進制位2是通常用以表示在執(zhí)行指令的過程中輸出二進制位0的。加法進位、減位、延長加法過程和從延長指令中減,若輸出二進制位0或不然將其清除,都可將進位位置為邏輯1。二進制位3-15是備用的。二進制位16-23是含有有待負載串和比較位組指令加以比較的位組的一個信息組。二進制位24是備用的,二進制位25-31則是確定有待負載串字索引或存儲串字索引指令轉(zhuǎn)移的位組的數(shù)目的信息組。
多商寄存器是個用作寄存器擴充部分的32位寄存器,用來存儲乘法指令的乘積和除法指令的被除數(shù)。它還可以用作長指令、循環(huán)指令和移位指令的運算對象。它還可以在執(zhí)行包括MULI、MULS、DIVS、DIVU等各種指令的過程中加以改變,這視具體實用情況而定。在這些運算過程中寫到MQ寄存器的值與運算對象有關(guān),因而MQ寄存器的內(nèi)容在任何這些指令執(zhí)行之后變得不定。其它諸如乘、除、左移、右移等指令也改變MQ寄存器。移向和移離特殊用途寄存器也可以訪問MQ寄存器。
此外,本發(fā)明中還包括備用寄存器17和19(B_XER和B_MQ),這些都是非體系結(jié)構(gòu)的鎖存器,供存儲XER和MQ寄存器13、15內(nèi)容的副本用。上面說過,XER和MQ寄存器是在執(zhí)行周期期間更新的。因此,若發(fā)生中斷且這些寄存器的內(nèi)容沒有存儲起來,則處理器不能返回到引起中斷的指令執(zhí)行時的狀態(tài)。應(yīng)該指出的是,所有其它特殊用途和一般用途的寄存器都是在回寫周期期間更新的,而這個回寫周期是在執(zhí)行周期之后,這時若遭中斷,則這些寄存器的內(nèi)容會和執(zhí)行引起中斷的指令期間的一樣。后備XER17和后備MQ19就會將XER和111Q寄存器恢復(fù)到其執(zhí)行引起中斷的指令時的狀態(tài)。
在第一執(zhí)行部件9上遇到可中斷指令時,普通的系統(tǒng)會鎖定第二執(zhí)行部件,例如11。這會使各指令按順序執(zhí)行,但不會全面利用雙執(zhí)行部件系統(tǒng)的能力。此外,送數(shù)指令和存儲指令都是可中斷的,而且是一些更經(jīng)常遇到的使第二執(zhí)行部件長時間處于鎖定狀態(tài)的指令,這樣就與雙執(zhí)行部件系統(tǒng)的目的背道而馳。因此,本發(fā)明在執(zhí)行部件9和11中都配備了能識別可中斷指令且使后備鎖存器17和19接收其相應(yīng)寄存器13和15的內(nèi)容的后備邏輯線路。這些寄存器當在定點部件9上執(zhí)行的指令是可中斷指令時處于備用狀態(tài),這時FXU11上的指令改變XER和MQ寄存器13或15的內(nèi)容。在此情況下,后備邏輯線路(圖2)將這些寄存器內(nèi)容的副本放入后備鎖存器17和19中,而若中斷實際上確實發(fā)生時,就用該數(shù)據(jù)將XER和MQ寄存器恢復(fù)到其執(zhí)行引起中斷的指令時的狀態(tài)。若可中斷指令實際上不引起中斷,則只將數(shù)據(jù)保留在后備鎖存器17和19中直到遇到另一個可中斷指令為止,這時XER和MQ寄存器當時的內(nèi)容就存入后備鎖存器17和19中。
本發(fā)明的反回邏輯線路裝在定點部件9和11中。XER和MQ寄存器的反回邏輯線路從第二執(zhí)行部件11中的譯碼操作開始。這個譯碼確定現(xiàn)時執(zhí)行的指令改變的是XER抑或MQ寄存器。應(yīng)該指出的是,可能會有改變兩個寄存器的指令,例如MULO指令。鑒于MQ寄存器是數(shù)據(jù)流的一部分,因而MQ反回用的其余邏輯線路裝在第二執(zhí)行部件中,鑒于XER寄存器是在第一執(zhí)行部件中,因而XER反回邏輯線路也就裝在第一執(zhí)行部件中。
MQ后備邏輯線路確定MQ改變指令是否在第二執(zhí)行部件上執(zhí)行,若然,則MQ寄存器的內(nèi)容就存放到MQ后備鎖存器19中。若在以后各周期中,F(xiàn)X_CANCEL信號起作用(表明發(fā)生中斷情況)且仍然取經(jīng)鎖定的MQ改變譯碼,則MQ反回鎖存器的內(nèi)容就重新裝入MQ寄存器中。保持MQ改變譯碼鎖存器使FX_CANCEL在數(shù)周期之后起作用而仍然使MQ寄存器復(fù)原。
若在第二執(zhí)行部件執(zhí)行XER改變指令,則XER后備邏輯線路就處于設(shè)定狀態(tài)。若兩個執(zhí)行部件保持原狀,該鎖存器就保持原狀,不然將該鎖存器復(fù)位。XER寄存器的三個二進制位存放在XER反回鎖存器17中。若FX_CANCEL信號起作用而仍然取鎖定的XER改變譯碼,則XER反回鎖存器17的內(nèi)容就重新裝入XER寄存器的三個二進制位中。應(yīng)該指出的是,若在上一個周期中第二執(zhí)行部件上的指令已設(shè)定XER的SO二進制位,這種情況可能還沒有在XER的狀態(tài)中反映出來,因此必須將從第二執(zhí)行部件鎖定入XER反回鎖存器的SO數(shù)據(jù)旁路掉。
圖2中包括兩個舉例說明本發(fā)明的實例。在第一實例A中,情況是因在部件1上執(zhí)行的指令而引起的中斷沒有真正發(fā)生。在譯碼周期期間,送數(shù)指令加到執(zhí)行部件1,加法指令則在執(zhí)行部件2中。譯碼邏輯線路確定加到執(zhí)行部件1上的送數(shù)指令是可中斷的,且執(zhí)行部件2中的加法指令會改變XER寄存器。在執(zhí)行周期期間,送數(shù)指令在部件1上執(zhí)行,加法指令在執(zhí)行部件2上執(zhí)行。由于譯碼邏輯線路確定,加法指令改變XER寄存器,因而XER寄存器的值復(fù)寫在反回XER鎖存器17,XER鎖存器則用對應(yīng)于加法指令的數(shù)據(jù)值在部件2執(zhí)行加法指令之后更新。在回寫周期期間,確定在部件1上執(zhí)行的送數(shù)指令并不引起中斷,因而送數(shù)數(shù)據(jù)就寫到寄存器堆5上。此外,部件2上加法指令的結(jié)果寫到寄存器堆5上。在此情況下,無需進行復(fù)原或“反回”操作。
實例B舉例說明了在部件1上執(zhí)行的指令實際上確實引起中斷的情況。這時譯碼邏輯線路再次確定部件1上的送數(shù)指令可能會引起中斷且部件2上的加法指令會改變XER寄存器。在執(zhí)行周期期間,送數(shù)指令由部件1執(zhí)行。加法指令由部件2執(zhí)行,同時XER寄存器的值復(fù)制到反回寄存器上。在回寫周期期間,確定部件1執(zhí)行的送數(shù)操作確定實際上引起中斷發(fā)生。因此,送數(shù)數(shù)據(jù)就沒有寫到寄存器堆5上。由于確實發(fā)生中斷,因而XER反回鎖存器17的內(nèi)容就寫回到XER寄存器13,使該寄存器恢復(fù)到執(zhí)行加法指令之前的狀態(tài)??梢钥闯觯捎诩拇嫫鞫咽窃诨貙懼芷谄陂g更新的,因而由于知道中斷是否確實在更新寄存器堆之前發(fā)生的且可以避免更新因而無需反回這些值。MQ和XER寄存器的情況就不是這樣,因為它們是在執(zhí)行周期期間更新的,因而需要反回邏輯線路以便在MQ和XER寄存器處在在部件1上執(zhí)行引起中斷的指令之前的狀態(tài)下儲存該兩寄存器的內(nèi)容。
現(xiàn)在說明圖3a和3b的流程圖。在步驟1和步驟2開始的程序確定提供給部件1的指令實際上是否可中斷的。若答案是否定的,則由于無需反回因而程序繼續(xù)進入步驟3并一直進入步驟12而結(jié)束。若在步驟2經(jīng)譯碼邏輯線路確定指令部件1實際上是不可中斷的,則譯碼邏輯線路就在步驟4確定部件2中的指令改變的是XER抑或MQ寄存器。若指令部件2不改變?nèi)魏芜@兩個寄存器,則無需反回,于是程序就繼續(xù)進入步驟3,然后在步驟12結(jié)束。
但若在步驟4經(jīng)確定指令部件2確實改變XER或MQ寄存器,則這些寄存器的內(nèi)容就在步驟5存放到反回鎖存器17和19中。在步驟6,執(zhí)行執(zhí)行部件1和2中的指令,同時MQ和/或XER寄存器都用在部件2上執(zhí)行指令得出的值加以更新(步驟7)。在回寫周期期間,在步驟8確定在部件1上執(zhí)行的指令是否真正引起中斷發(fā)生。若沒有中斷發(fā)生,程序就繼續(xù)進入步驟9。在步驟9,從在部件1和2執(zhí)行指令得出的數(shù)據(jù)寫到寄存器堆5,繼續(xù)進行流水線執(zhí)行指令的過程。步驟9之后,程序在步驟12結(jié)束。
若實際上經(jīng)確定在部件1上執(zhí)行的指令確實引起中斷發(fā)生,步驟10就將MQ和/或XER從反回鎖存器17和19恢復(fù)到它們在部件1上執(zhí)行引起中斷的指令之前的狀態(tài)。在步驟11,防止用對應(yīng)于在部件1上執(zhí)行且引起中斷的指令的數(shù)據(jù)更新寄存器堆。步驟11之后,程序就在步驟12結(jié)束。
以上的說明涉及的是指令流水線的單個分段,但本技術(shù)領(lǐng)域的技術(shù)人員將知道,對提供到執(zhí)行部件1和2的各指令流水線的各階段可以履行步驟1-12。
圖4的時序圖示出了按本發(fā)明使用的實際控制信號以及它們之間的相互關(guān)系。信號1,SOX_.FXU_.XGC_XER_MOD(0)是檢測執(zhí)行部件2中改變XER寄存器13的指令的信號。該信號由譯碼邏輯線路7發(fā)出,由本發(fā)明的反回邏輯線路在執(zhí)行周期期間檢測??刂菩盘?,SOX_.FXU_.XGA.L_XER_MOD(0)是控制信號1的鎖存復(fù)本,在儲起來供中斷實際上確實發(fā)生時使用。控制信號3,SOX_.FXU_.XGA.(ER_SL_(0)和控制信號4,SOX_.FXU_.XGA.(ER_BAK_SL_(0)都用來確定數(shù)據(jù)是在XER寄存器抑或在反回寄存器中。鑒于部件2上不會發(fā)生中斷,所以本發(fā)明總是選擇(ER寄存器??刂菩盘?,SOX_.FXU_.XGA.HOLD_EXO(0)和控制信號6,SOX_.FXU_.XGA.HOLD_EXO(1)分別表示執(zhí)行部件0和1發(fā)生故障。這些信號(5和6)的第一次傳送表明部件1上的指令已執(zhí)行。這些信號(5和6)的以后3次傳送表明中斷處理器已履行職責,表明中斷實際上已發(fā)生。這些信號最后的傳送是在執(zhí)行部件2上的指令(應(yīng)用圖2實例的指令)重新執(zhí)行時進行的??刂菩盘?,SOX_.FXU.XJH_FX_CANCEL(0)向本發(fā)明的反回邏輯線路表明執(zhí)行部件1中的指令是否真的引起中斷。確實發(fā)生中斷時該信號會起作用??刂菩盘?0,SOX_.FXU_.XGA_XER(0)、控制信號11,SOX_.FXU_.XGA_XER(1)和控制信號12,SOX_.FXU._XGA._XGA_XER(2)提供XER寄存器待反回的內(nèi)容。信號11和12停止作用時的下降邊表示XER寄存器這時含有來自部件2所執(zhí)行指令的新值。信號11和12起作用時的上升邊線表示XER寄存器已在前一個值的情況下復(fù)原,且中斷處理器會設(shè)法使XER寄存器恢復(fù)正常狀態(tài)。信號11和12起作用時的第二下降邊表明XER寄存器一旦在部件2上執(zhí)行的指令再執(zhí)行就設(shè)定到從該指令得出的值。控制信號13、14和15(分別為SOX_.FXU_.XGA.SO-BACK(0)、SOX_.FXU_.XGA.OV_.BACK(0)是對應(yīng)于反回XER鎖存器17內(nèi)容的控制信號。這些信號表明XER寄存器內(nèi)容已存儲起來,且存儲到反回鎖存器中。應(yīng)該指出的是圖4是就XER寄存器說明的,但本技術(shù)領(lǐng)域的技術(shù)人員將會知道,用履行同一些功能的控制信號可以反回MQ寄存器15的內(nèi)容。
圖5的時序圖與圖4的類似,但示出了本發(fā)明邏輯線路所使用的雙態(tài)信號,其中表示邏輯0和1的周期表示邏輯1。這里也示出了控制信1-15,這些控制信號用以履行本發(fā)明的反回功能。
可以看出,通過檢測那些能在執(zhí)行周期期間改變機器狀態(tài)的指令并提供反回這些指令的機理,可以大大提高處理器的性能。在傳統(tǒng)的系統(tǒng)中,當在第一執(zhí)行部件上遇到可中斷指令時可以掛斷(閑置)第二部件直到執(zhí)行可中斷指令為止。鑒于可中斷指令有多種多樣,數(shù)量也多,因而第二執(zhí)行部件閑置不用的場合就多。相比之下,本發(fā)明對在第二部件上現(xiàn)時執(zhí)行的指令所改變的寄存器的狀態(tài)作了備份。這一下提高了第二執(zhí)行部件在時間上的利用率而不致在第一部件上遇到可中斷指令時閑置著。由于許多指令(例如送數(shù)指令)都是可中斷的,因而這樣做給處理過程帶來顯著的好處。
權(quán)利要求
1.一種用以有選擇地儲存多執(zhí)行部件處理系統(tǒng)的狀態(tài)的方法,其特征在于包括下列步驟確定第一指令是否可中斷的;確定現(xiàn)行有待與所述第一指令一起執(zhí)行的第二指令是否改變在執(zhí)行周期期間更新的寄存器;當所述第一指令可中斷且所述第二指令改變所述寄存器時,存儲所述寄存器的內(nèi)容;和恢復(fù)出現(xiàn)中斷時所述寄存器的所述內(nèi)容。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括分別在第一和第二執(zhí)行部件上執(zhí)行所述第一和第二指令的步驟。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述執(zhí)行步驟包括用從執(zhí)行所述第一和第二指令時得出的新值改變所述寄存器的步驟。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述恢復(fù)步驟包括確定所述可中斷的第一指令是否確實會起中斷發(fā)生的步驟。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述恢復(fù)的步驟還包括將所存儲的內(nèi)容放入所述寄存器中從而將所述寄存器恢復(fù)到執(zhí)行所述第一和第二指令之前的狀態(tài)的步驟。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,該方法還包括若真的發(fā)生中斷時防止在所述執(zhí)行周期之后更新的其它寄存器更新成相應(yīng)于執(zhí)行所述第一和第二指令的結(jié)果的步驟。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,該方法還包括如果不發(fā)生中斷時將所述其它寄存器更新成相應(yīng)于執(zhí)行所述第一和第二指令的結(jié)果的步驟。
8.根據(jù)權(quán)利要求5所述的方法,其特征在于,該方法還包括真的發(fā)生中斷時再執(zhí)行所述第一和第二指令的步驟。
9.一種有選擇地儲存多執(zhí)行部件處理系統(tǒng)的狀態(tài)的系統(tǒng),其特征在于,它以組合形式包括用以確定第一指令是否可中斷的裝置;用以確定現(xiàn)時有待與所述第一指令一起執(zhí)行的第二指令是否改變在執(zhí)行周期期間更新的寄存器的裝置;用以在所述第一指令可中斷且所述第二指令改變所述寄存器時存儲所述寄存器內(nèi)容的裝置;用以恢復(fù)出現(xiàn)中斷時所述寄存器的所述內(nèi)容的裝置。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,它還包括用以執(zhí)行所述第一和第二指令的裝置。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述執(zhí)行裝置包括用從所述第一和第二指令得出的新值改變所述寄存器的裝置。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述用以恢復(fù)裝置包括用以確定所述可中斷的第一指令是否真的能引起中斷發(fā)生的裝置。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,所述用以恢復(fù)的裝置還包括用以將所存儲的內(nèi)容放入所述寄存器中從而使所述寄存器恢復(fù)到執(zhí)行所述第一和第二指令之前的狀態(tài)的裝置。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,它還包括這樣的裝置,該裝置用以在真的發(fā)生中斷時防止在所述執(zhí)行周期之后更新的其它寄存器更新成相應(yīng)于執(zhí)行所述第一和第二指令的結(jié)果。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,它還包括這樣的裝置,該裝置用以在不發(fā)生中斷時將所述其它寄存器更新成相應(yīng)于執(zhí)行所述第一和第二指令的結(jié)果。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其特征在于,它還包括這樣的裝置,該裝置用以在真的發(fā)生中斷時再執(zhí)行所述第一和第二指令。
17.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述用以確定第一指令是否可中斷的裝置和所述用以確定第二指令是否改變寄存器的裝置都包括一個含在中央處理機單元中的譯碼電路。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其特征在于,所述用以存儲的裝置包括反回鎖存器。
全文摘要
一種在雙執(zhí)行部件處理系統(tǒng)的兩個執(zhí)行部件都設(shè)置另外的邏輯線路的方法和設(shè)備,以便確定指令是否可中斷的。此外還配備了反回邏輯線路。該線路裝在兩個執(zhí)行部件中,特別裝設(shè)在裝有有待執(zhí)行指令加以改變的唯一寄存器的部件中。若執(zhí)行改變其中一個唯一寄存器的指令,則寄存器的內(nèi)容就存入一個反回鎖存器中。若執(zhí)行可中斷指令而不致引起中斷,則發(fā)出刪除信號。但若可中斷指令確實引起中斷,則反回鎖存器的內(nèi)容就再裝入執(zhí)行部件中。
文檔編號G06F9/46GK1117166SQ9411609
公開日1996年2月21日 申請日期1994年9月19日 優(yōu)先權(quán)日1993年9月20日
發(fā)明者D·S·雷, A·K·史賓沙 申請人:國際商業(yè)機器公司