国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      具有與運(yùn)行在虛擬模式下的指令相關(guān)的中斷指令的計(jì)算機(jī)系統(tǒng)的制作方法

      文檔序號:6406709閱讀:245來源:國知局
      專利名稱:具有與運(yùn)行在虛擬模式下的指令相關(guān)的中斷指令的計(jì)算機(jī)系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明總的說是關(guān)于一包括有特別設(shè)計(jì)以在虛擬模式下運(yùn)行的給定微處理機(jī)的計(jì)算機(jī)系統(tǒng),該虛擬模式允許早先為一臺早先設(shè)計(jì)的單程序微處理機(jī)編寫的軟件程序能依靠一個(gè)特別設(shè)計(jì)的主操作軟件程序在被保護(hù)的、分頁式、多任務(wù)環(huán)境中運(yùn)行。更確地說,本發(fā)明涉及對該給定微處理機(jī)和它的主操作軟件程序處理早先編寫的程序中的某些有關(guān)中斷的指令,亦即CLEARINTERRUPT(CLI)和SETINTERRUPT(STI)的方法的改進(jìn),所采取的措施是依靠作為主程序中一部分的模擬軟件程序來模擬早先微處理機(jī)執(zhí)行這些指令的狀態(tài)。
      上面的討論中,引用了一給定的微處理機(jī),一早先編寫的軟件程序,一早先設(shè)計(jì)的單程序微處理機(jī),及一特殊設(shè)計(jì)的主操作軟件程序。在本發(fā)明實(shí)際的實(shí)踐中,該給定微處理機(jī)具體指的是INTEL公司的80386和80486TM經(jīng)過改進(jìn)的微處理機(jī),下文將僅指386微處理機(jī),因?yàn)楸景l(fā)明對上面兩種都是適用的。該早先設(shè)計(jì)的單程序微處理機(jī),指的是INTEL公司早先設(shè)計(jì)的單程序8086微處理機(jī)。該早先編寫的軟件程序,指的是一些具體包括早先為8086微處理機(jī)寫的DOS程序在內(nèi)的各種程序。最后,該主操作軟件程序指的是任何適用的主(中央)控制操作系統(tǒng),諸如WINDOWTM軟件(MICrOSOFT公司)或UNIXTM系統(tǒng)軟件(AT&amp;T公司),兩者都是特別為該給定微處理機(jī)寫的,以使后者能運(yùn)行在上述的虛擬操作模式下。雖然下文對本發(fā)明的敘述將針對INTEL386(及486TM)及8086微處理機(jī),早先編寫的DOS程序及WINDOWS或UNIX操作系統(tǒng),但亦應(yīng)理解,本發(fā)明并不局限于這些特定的微處理機(jī)、那些早先編寫的軟件程序或那些特定的中央操作系統(tǒng)。理解了這一點(diǎn),8086及386微處理機(jī)的簡短歷史會(huì)立即明白。在下面詳細(xì)討論中將敘述這些微處理機(jī)與本發(fā)明的具體關(guān)系的細(xì)節(jié)。
      可以毫無保留地說,INTEL公司早先的8086微處理機(jī)是相當(dāng)成功的,已經(jīng)為它寫出了很多軟件程序。然而,如果說這一微處理機(jī)是以后一系列改進(jìn)微處理機(jī)的第一個(gè)的話,就自然會(huì)有它的局限性。尤其是這一點(diǎn),雖然在當(dāng)時(shí)這不一定被看作是一種缺陷,就是此微處理機(jī)沒有能力同時(shí)執(zhí)行一個(gè)以上的軟件程序。當(dāng)然這就是說程序本身無需在被保護(hù)的、分頁式、多任務(wù)的環(huán)境下運(yùn)行。然而隨著技術(shù)的發(fā)展,正如前面所說的,INTEL公司終于開發(fā)出386微處理機(jī),它能采用較復(fù)雜的中央操作系統(tǒng),諸如WINDOWS或UNIX來執(zhí)行多個(gè)程序。同時(shí)386微處理機(jī)是被設(shè)計(jì)在以虛擬8086操作模式運(yùn)行的,就是說允許使用早先為8086處理機(jī)寫的多個(gè)軟件程序,亦即允許以更復(fù)雜的操作系統(tǒng)在被保護(hù)的、分頁式、多任務(wù)環(huán)境下運(yùn)行,雖然這些早先的軟件程序并不是為這種狀態(tài)下執(zhí)行所設(shè)計(jì)的。的確有許多早先的程序開始失效。所以每當(dāng)對8086微處理機(jī)后繼產(chǎn)品作任何變化時(shí),總是考慮與早先的8086軟件能兼容。
      雖然INTEL的現(xiàn)代微處理機(jī)與較早寫的軟件之間的兼容性的確重要,但在有一些情況下,這一目標(biāo)也確實(shí)使整個(gè)計(jì)算機(jī)系統(tǒng)的某些其他操作性能作出了犧牲。如在執(zhí)行某些與中斷有關(guān)的指令,特別是CLI和STI指令時(shí)情況就是如此。在下文將詳細(xì)討論的現(xiàn)在的386微處理機(jī)就是被設(shè)計(jì)成以虛擬模式執(zhí)行所有CLI及STI指令的,此時(shí)采取模擬方式以模擬8086微處理機(jī)執(zhí)行這些指令的情況。雖然執(zhí)行這些特殊指令的數(shù)量,只占此虛擬模式執(zhí)行的全部指令相當(dāng)小的百分比,但卻需要相當(dāng)長的執(zhí)行時(shí)間。已經(jīng)提示了一個(gè)這個(gè)問題的具體解決方法,下文也將詳細(xì)的討論。雖然這個(gè)方案確實(shí)大大減少了在虛擬狀態(tài)下執(zhí)行CLIS和STIS指令所需的時(shí)間,但都部分地犧牲了微處理機(jī)與其軟件之間的兼容性。
      如上所述,本發(fā)明的一個(gè)主要目的,就是在如早先提出的減少執(zhí)行CLIS和STIS指令時(shí)間的同時(shí),改善兼容性方面的性能。
      下面將會(huì)看到,這里揭示的一個(gè)計(jì)算機(jī)系統(tǒng)包括一個(gè)給定的微處理機(jī),例如386微處理機(jī),該微處理機(jī)專門設(shè)計(jì)運(yùn)行在一種虛擬操作模式,該模式允許以一個(gè)軟件程序運(yùn)行,該軟件程序是諸如早先為一臺較早設(shè)計(jì)的單程序微處理機(jī)例如8086微處理機(jī)寫的一個(gè)DOS程序,可借助一個(gè)特別設(shè)計(jì)的主操作軟件程序例如WINDOWS或UNIX,在一被保護(hù)的、分頁式、多任務(wù)環(huán)境下執(zhí)行。該系統(tǒng)還包括為執(zhí)行某些源于早先寫的程序的有關(guān)中斷的指令即CLI和STI的裝置,它采用作為主程序的一部分的模擬軟件,以便模擬早先微處理機(jī)執(zhí)行這種指令的情況。
      為了減少當(dāng)計(jì)算機(jī)系統(tǒng)運(yùn)行在虛擬操作模式時(shí),模擬軟件執(zhí)行CLI及STI指令所需的時(shí)間,設(shè)置有一個(gè)EFLAGS寄存器,此寄存器包括(1)一個(gè)VIRTUALINTERRUPTFLAG(VIF)位,該VIF二進(jìn)制位工作在為允許執(zhí)行源于早先寫的程序的中斷指令的STI狀態(tài)或?yàn)榻乖撝袛嘀噶顖?zhí)行的CLI狀態(tài);(2)一個(gè)VIRTUALINTERRUPTPENDING(VIP)位,該VIP二進(jìn)制位工作在為等待執(zhí)行中斷請求的PENDING狀態(tài)或工作在為沒有這種中斷等待執(zhí)行的NONPENDING狀態(tài)。為了同樣目的,即為了減少虛擬模式下執(zhí)行時(shí)間,還設(shè)置有只要VIP位處于其NONPENDING狀態(tài)下,即可以不采用模擬軟件來改變EFLAGS寄存器VIF位的狀態(tài)的裝置。使用這種方法,以虛擬模式執(zhí)行CLI及STI的時(shí)間大大減少。然而同時(shí)還設(shè)置有響應(yīng)VIP位的PENDING狀態(tài)、VIF的CLI狀態(tài)、和隨后由早先寫的軟件程序發(fā)出的STI指令,借助模擬軟件不必首先將VIF位從CLI狀態(tài)改變到STI狀態(tài),即自動(dòng)地執(zhí)行該隨后產(chǎn)生的STI指令及一等待中斷請求的裝置。這就如在下文中將更詳細(xì)討論的會(huì)提高微處理機(jī)及其相應(yīng)軟件之間的兼容性。
      下面結(jié)合附圖對本發(fā)明作較詳細(xì)說明。


      圖1以圖示說明包括早先8086微處理機(jī)的已有計(jì)算機(jī)系統(tǒng)的某些方面。
      圖2是包含早先386微處理機(jī)的計(jì)算機(jī)系統(tǒng)相似圖,具體說明有關(guān)STI及CLI中斷指令的它的虛擬模式。
      圖3也是包括386微處理機(jī)計(jì)算機(jī)系統(tǒng)的相似圖,其中采取了先前提出的改進(jìn),以使該微處理機(jī)能在虛擬模式下以比圖2中所述系統(tǒng)快的速度執(zhí)行中斷指令。
      圖4是一根據(jù)本發(fā)明設(shè)計(jì)的計(jì)算機(jī)系統(tǒng)的簡圖說明,不僅具有圖3所述系統(tǒng)的優(yōu)點(diǎn),而且具有微處理機(jī)與該計(jì)算機(jī)系統(tǒng)中執(zhí)行的軟件之間兼容性方面的某些優(yōu)點(diǎn);和圖5是說明根據(jù)本發(fā)明圖4中所說明的計(jì)算機(jī)系統(tǒng)執(zhí)行CLI和STI指令的方法的流程圖。
      現(xiàn)在回到圖上,首先注意圖1。如前述圖1是包括早先8086微處理機(jī)的先有計(jì)算機(jī)系統(tǒng)的某些特點(diǎn)的圖示說明。數(shù)字10總的代表計(jì)算機(jī)系統(tǒng)整體。此系統(tǒng)還包括許多未加說明的組成部分,這里只是特別示出了一個(gè)包含存有中斷標(biāo)志IF的EFLAGS寄存器14的8086微處理機(jī)12,一個(gè)單DOS軟件程序16及數(shù)個(gè)I/O外圍設(shè)備18、20,及22。為了討論目的,假設(shè)外設(shè)18是一監(jiān)視器,外設(shè)20是一個(gè)磁盤驅(qū)動(dòng)器,外設(shè)22是一個(gè)鍵盤,本發(fā)明對各個(gè)別I/O裝置并無限制,這也是不言而喻的。
      談到當(dāng)前這一系統(tǒng)10,現(xiàn)在來看在此系統(tǒng)中特別是8086微處理機(jī)12是如何處理它的I/O外設(shè)發(fā)出的中斷指令的。一般地說,8086微處理機(jī)是被設(shè)計(jì)成當(dāng)執(zhí)行某些指令時(shí)可被中斷,而在執(zhí)行另外的指令時(shí)不能被中斷。例如微處理機(jī)正在被DOS軟件要求訪問磁盤驅(qū)動(dòng)器20期間,該微處理機(jī)就不希望為例如從鍵盤22擊鍵所產(chǎn)生的信號所中斷。因此在對磁盤驅(qū)動(dòng)器訪問期間,F(xiàn)LAGS寄存器14的中斷標(biāo)志位IF為置于CLI的狀態(tài),以便防止微處理器正在訪問磁盤驅(qū)動(dòng)器期間因外部中斷要求而被中斷。為方便起見,假設(shè)中斷標(biāo)志位IF的CLI狀態(tài)在圖1以0來表示。只要IF位保持為0,微處理機(jī)將不接收中斷。一經(jīng)完成對磁盤驅(qū)動(dòng)器的訪問,并且假設(shè)此后該微處理機(jī)不是立刻被要求去執(zhí)行其他不可中斷指令的話,那么中斷標(biāo)志IF的狀態(tài),將由CLI狀態(tài)變換到STI狀態(tài)。在圖1中通過1表示STI狀態(tài)。只要中斷標(biāo)志是在STI狀態(tài),8086微處理機(jī)將接收中斷。這些中斷包括例如早先IF位是在CLI狀態(tài)時(shí)產(chǎn)生的鍵入信號,而現(xiàn)在IF位是STI狀態(tài);以及在IF標(biāo)志從它的CLI狀態(tài)轉(zhuǎn)換到它的STI狀態(tài)以后產(chǎn)生的中斷。對上述任何一種情況而言,記住這一點(diǎn)是很重要的,就是在CLI狀態(tài)與STI狀態(tài)間的轉(zhuǎn)換過程中,DOS軟件16均直接與構(gòu)成8086微處理機(jī)的一部分的EFLAG寄存器中斷標(biāo)志通訊。這是很容易理解的,因?yàn)镈OS軟件16是計(jì)算機(jī)系統(tǒng)10運(yùn)行的唯一程序。
      現(xiàn)在由圖2來看一個(gè)較先進(jìn)的計(jì)算機(jī)系統(tǒng),其中采用數(shù)24代表該整個(gè)系統(tǒng)。除了與系統(tǒng)10之間的其他區(qū)別外,系統(tǒng)24包括386微處理機(jī)26,并能同時(shí)運(yùn)行包括早先為8086微處理機(jī)寫的程序在內(nèi)的多個(gè)軟件程序,雖然這里僅列出了一個(gè)程序,例如DOS程序16。為了能同時(shí)運(yùn)行多個(gè)軟件程序,計(jì)算機(jī)系統(tǒng)24必須如此設(shè)計(jì),以使得這些程序中沒有一個(gè)能直接地訪問并因此改變386微處理機(jī)的EFLAGS寄存器的中斷標(biāo)志位的狀態(tài)。該寄存器以30表示,它包括有中斷標(biāo)志位IF。根據(jù)這一點(diǎn)以及希望能使用8086軟件,該386微處理機(jī)被設(shè)計(jì)為在前述的特定虛擬操作模式下運(yùn)行,就是說一種使8086程序,例如DOS程序16能在一主操作系統(tǒng)控制下于一被保護(hù)的、分頁式、多任務(wù)環(huán)境下運(yùn)行的操作模式。前面也說過,一種這樣的主(中央)操作系統(tǒng)是前面引述的WINDOWS或UNIX程序,如圖2中的32。此程序必須編寫得包含有8086模擬軟件(下面有時(shí)僅稱之為模擬程序),用來執(zhí)行早先編寫的程序中的某些有關(guān)中斷的指令,即CLI和STI。此時(shí)依靠該模擬軟件來模擬早先的8086微處理機(jī)執(zhí)行這些指令的狀態(tài)。
      再參照圖2,為方便起見,圖示計(jì)算機(jī)系統(tǒng)24含有相同的I/O外設(shè)18、20及22。此外,圖中作為386微處理機(jī)26一部分的EFLAGS寄存器30含有一虛擬模式位VM。當(dāng)這一個(gè)二進(jìn)制位處于其虛擬模式狀態(tài),例如說1狀態(tài)時(shí),該系統(tǒng)即被設(shè)定于在上面簡略說明過的它的虛擬模式下運(yùn)行。將VM位改變?yōu)?狀態(tài),將使該系統(tǒng)在其標(biāo)準(zhǔn)的(非虛擬)狀態(tài)下運(yùn)行。
      對于目前所說的計(jì)算機(jī)系統(tǒng)24,現(xiàn)在來看此系統(tǒng)在其虛擬操作模式下如何處理中斷。為此假設(shè)計(jì)算機(jī)系統(tǒng)24同時(shí)對多個(gè)早先為8086微處理機(jī)寫的軟件程序(包括DOS程序16)進(jìn)行運(yùn)行。為了進(jìn)行討論,開始還將假設(shè)DOS程序16剛剛指示微處理機(jī)去訪問磁盤驅(qū)動(dòng)器20。在這些情況下,該程序發(fā)出一個(gè)CLI指令,以保證在磁盤驅(qū)動(dòng)器正被訪問時(shí)EFLAGS寄存器30的中斷標(biāo)志IF處于它的清除中斷(0)狀態(tài)。但正如前面指出過的,因?yàn)槲⑻幚頇C(jī)26可能正在處理多個(gè)軟件程序,因而在一種被保護(hù)的模式下運(yùn)行,DOS程序不可能直接訪問EFLAGS寄存器30。而且由于程序16實(shí)際上是為8086微處理機(jī)編寫的,由該程序發(fā)出的這個(gè)CLI以及許多其它指令,必須由構(gòu)成主操作系統(tǒng)32一部分的模擬軟件來俘獲并執(zhí)行,以模擬這些指令為8086微處理機(jī)所執(zhí)行時(shí)的狀態(tài)。緊接著磁盤驅(qū)動(dòng)器20之后,并假設(shè)無其它禁止中斷的原因存在,即發(fā)出STI指令以使微處理機(jī)26能處理中斷。像CLI指令一樣,這一個(gè)以及其他使EFLAGS寄存器30的中斷標(biāo)志IF由0轉(zhuǎn)變到1狀態(tài)的STI指令也必須由同一模擬軟件俘獲和執(zhí)行。
      通過上面的討論,很明顯,即使中斷不存在或者處于待處理狀態(tài),寄存器30的中斷位亦需要在它的CLI狀態(tài)及STI狀態(tài)之間來回轉(zhuǎn)換。的確,根據(jù)一個(gè)典型操作計(jì)算機(jī)系統(tǒng)24的試驗(yàn),寄存器30的中斷位IF在它的CLI與STI狀態(tài)之間的轉(zhuǎn)換遠(yuǎn)比由微處理機(jī)26形成的實(shí)際中斷請求更頻繁。況且由于每一個(gè)要求轉(zhuǎn)換IF位的CLI與STI指令均必須由模擬軟件俘獲和執(zhí)行,因而執(zhí)行這些指令所花的時(shí)間是很長的。事實(shí)上,在某些情況下發(fā)現(xiàn),在一個(gè)給定的時(shí)間周期內(nèi)這些CLI和STI指令雖然只占通過主操作系統(tǒng)32模擬的全部指令的50%,執(zhí)行CLI及STI指令所需的時(shí)間卻總計(jì)高達(dá)包括花費(fèi)在模擬程序中的時(shí)間在內(nèi)的整個(gè)執(zhí)行時(shí)間的30%。
      上面已指出,圖3中圖示說明包括一個(gè)386微處理機(jī)的一個(gè)計(jì)算機(jī)系統(tǒng),該386微處理機(jī)已經(jīng)作了前面提出的改進(jìn),使它可以比圖2所示計(jì)算機(jī)系統(tǒng)24以更快的速度在虛擬模式中執(zhí)行中斷指令。圖3中34表示該計(jì)算機(jī)系統(tǒng)整體,而經(jīng)改進(jìn)的微處理機(jī)即386微處理機(jī)用數(shù)字26′表示。圖示后面這一微處理機(jī)包括有一經(jīng)改進(jìn)的EFLAGS寄存器30′和一經(jīng)改進(jìn)的主操作系統(tǒng)32′,它們將在下面討論??偟恼f,所示系統(tǒng)34中也包括有同一DOS軟件程序16和I/O外設(shè)18、20和22。需要說明的不同點(diǎn)在于,計(jì)算機(jī)系統(tǒng)34有可能以與系統(tǒng)24相同的狀態(tài)運(yùn)行。
      如圖3中所示,EFLAGS寄存器30′不僅包含一中斷標(biāo)志位IF(圖中未示出)和一圖中示出的虛擬操作模式位VM,而且還有計(jì)算機(jī)系統(tǒng)24的標(biāo)志寄存器30中不具有的兩個(gè)附加位。此二附加位之一是VIRTUALINTERRUPTFLAGS位VIF,另一是VIRTUALINTERRUPTPENDING位VIP。VIF位或者處于例如說明以0表示的CLI狀態(tài),或者處于以1表示的STI狀態(tài),在功能上它對應(yīng)于中斷標(biāo)志IF。這就是說,在要排除(禁止)對微處理機(jī)的中斷時(shí),將VIF位置于其CLI狀態(tài),而在容許中斷時(shí),則將其置于其STI狀態(tài)。同時(shí),VIP位在其PENDING狀態(tài)(例如可以1表示,此時(shí)有中斷請求在等待執(zhí)行)與其NONPENDING狀態(tài)(例如可以0表示,此時(shí)無等待執(zhí)行的中斷)之間變換。
      借助這一改進(jìn)的EFLAGS寄存器30′,該386′微處理機(jī)26′及其對應(yīng)的主操作系統(tǒng)32′的設(shè)計(jì)就使得整個(gè)計(jì)算機(jī)系統(tǒng)34能以如下狀態(tài)運(yùn)行。首先假設(shè),系統(tǒng)以其虛擬模式運(yùn)行(置VM為1),而且沒有中斷指令在執(zhí)行中或在等待執(zhí)行,因而在一定時(shí)間周期內(nèi)VIP位被置為0。進(jìn)而假定在此同一給定時(shí)間周期內(nèi),DOS程序16依次啟動(dòng)STI和CLI指令,如圖3中所示。在這種條件下,每次DOS程序16啟動(dòng)一個(gè)STI或CLI指令,總與EFLAGS寄存器30通信,將其VIF位由STI狀態(tài)1改變成CLI狀態(tài)0,返回到STI狀態(tài)1等等,而不由主操作系統(tǒng)的模擬軟件來俘獲并執(zhí)行這些STI和CLI指令。換句話說,只要VIP位處于其NONPENDING狀態(tài)(0),主操作系統(tǒng)模擬程序就不考慮EFLAGS寄存器中VIF位狀態(tài)變化。這一點(diǎn)就與系統(tǒng)24不同,在系統(tǒng)24中每一個(gè)STI與CLI指令均為模擬程序所俘獲,亦即通過主操作系統(tǒng)的模擬軟件來執(zhí)行。因而很明顯,系統(tǒng)34將大大減少作為主操作系統(tǒng)32′組成部分的模擬程序內(nèi)的執(zhí)行時(shí)間。
      以上剛討論的是假定沒有正在等等執(zhí)行的中斷指令,這就是說,在不斷地產(chǎn)生STI和CLI指令時(shí),VIP位繼續(xù)保持它的NONPENDING狀態(tài)?,F(xiàn)在假設(shè)VIF位處于其STI狀態(tài)(1),而軟件16正發(fā)出一中斷指令。在這些條件下,此改進(jìn)過的計(jì)算機(jī)系統(tǒng)就作如下狀態(tài)運(yùn)行。該軟件程序首先通過主操作系統(tǒng)與EFLAGS寄存器30通信,將VIP位由NONPENDING狀態(tài)(0)改變成PENDING狀態(tài)(1)。結(jié)果,VIF位為1狀態(tài),和VIP位為1狀態(tài),如圖3中所示。每當(dāng)這種情況出現(xiàn),此系統(tǒng)即被指定通過模擬程序以與系統(tǒng)24同樣的狀態(tài)來處理中斷。而當(dāng)中斷被處理后,假設(shè)VIF位仍處于STI狀態(tài),VIP位立即回到其NONPENDING狀態(tài)。
      仍然來討論計(jì)算機(jī)系統(tǒng)34的運(yùn)行狀態(tài),現(xiàn)在假定EFLAGS寄存器30′中VIF位為其CLI狀態(tài)(0),而VIP位為其PENDING狀態(tài)(1)。當(dāng)VIF位及VIP位處于這種狀態(tài)下,現(xiàn)在假設(shè)軟件程序發(fā)出一個(gè)STI指令以便使微處理機(jī)能接收中斷。在這一情況時(shí),按照前面提示的計(jì)算機(jī)系統(tǒng)34,主操作系統(tǒng)識別到這一指令,并立即將VIF位由CLI狀態(tài)(0)改變到STI狀態(tài)(1)。結(jié)果VIF位和VIP位現(xiàn)在都為1,等待著的中斷請求即由模擬程序俘獲后執(zhí)行。必須特別注意,只有在VIF位已經(jīng)由其CLI狀態(tài)變到其STI狀態(tài)之后才會(huì)開始執(zhí)行等待中的中斷請求。這一點(diǎn)應(yīng)與計(jì)算機(jī)系統(tǒng)24區(qū)別開來。在后一系統(tǒng)中,如果中斷標(biāo)志位IF最初是處于其CLI狀態(tài)(0),并且存在有一個(gè)待處理的中斷,那么隨后由軟件程序28所產(chǎn)生的STI指令就立即被俘獲到模擬程序中,而該等待處理的中斷請求即為模擬程序連同STI指令一并處理,無需首先改變寄存器30中的中斷標(biāo)志。只有在這些指令被模擬程序執(zhí)行過后,該模擬程序才將中斷標(biāo)志復(fù)位到它的STI狀態(tài)(1),如果沒有產(chǎn)生另外的CLI指令的話。進(jìn)行系統(tǒng)24與系統(tǒng)34之間的這種比較,目的在于指出后一系統(tǒng)的在模擬程序俘獲并執(zhí)行一等待處理的中斷指令之前首先將其VIF位由0改變?yōu)?的這種技術(shù),與系統(tǒng)24中的模擬軟件處理同樣情況需首先俘獲并進(jìn)行模擬的情況是不一致的,因而是不相兼容的。如下面將會(huì)看到的,本發(fā)明消除這種不兼容的情況,但同時(shí)仍能保持系統(tǒng)34勝過系統(tǒng)24的優(yōu)點(diǎn)。
      現(xiàn)在再看圖4,來看另一個(gè)計(jì)算機(jī)系統(tǒng)36,它是根據(jù)本發(fā)明設(shè)計(jì)的一種。與系統(tǒng)34一樣,系統(tǒng)36包括一個(gè)以改進(jìn)的386微處理機(jī)26′作為其特征的圖4中所述的386微處理機(jī)。這種微處理機(jī)專門設(shè)計(jì)運(yùn)行在一種虛擬模式,在該模式下能夠使早先為8086寫的多種軟件程序,例如DOS程序16,為一專門設(shè)計(jì)的帶有其自己的8086模擬軟件的主操作軟件程序32控制,以與系統(tǒng)34相同狀態(tài)在被保護(hù)、分頁式、多任務(wù)的環(huán)境下執(zhí)行。所示系統(tǒng)36還包括其相應(yīng)的外設(shè)18、20及22,以及構(gòu)成微處理機(jī)26″一部分的相應(yīng)的EFLAGS寄存器30。
      有許多方面,計(jì)算機(jī)系統(tǒng)36處理中斷請求的情況與系統(tǒng)34一樣。特別是,只要寄存器30″的VIP位是在它的NONPENDING狀態(tài)(0),即就是無等待處理中斷指令時(shí),就允許VIF位在它的STI(1)和它的CLI(0)狀態(tài)之間轉(zhuǎn)換而不通過主操作系統(tǒng)32″的模擬。然而,現(xiàn)在假設(shè)寄存器30″中的VIP位初始是在CLI(0)狀態(tài),而該VIP位初始是在它的PENDING(1)狀態(tài)。并假設(shè)軟件程序28接著發(fā)出一個(gè)STI指令。在這種情況下微處理機(jī)26及主操作系統(tǒng)32被設(shè)計(jì)得能響應(yīng)VIP位的PENDING狀態(tài)、VIF位的CLI狀態(tài)及緊接著產(chǎn)生的STI指令,并依靠作為主操作系統(tǒng)組成部分的模擬軟件自動(dòng)地執(zhí)行該隨后發(fā)出STI指令和等待中的中斷請求,而不必首先將VIF位的狀態(tài)從它CLI狀態(tài)改變到STI狀態(tài)。換名話說,在模擬軟件執(zhí)行這些指令的期間,VIF位保留在CLI狀態(tài)直到中斷指令執(zhí)行完為止,只有在此之后,主操作系統(tǒng)才把VIF位轉(zhuǎn)變到STI狀態(tài),如果在這期間也沒有產(chǎn)生CLI指令的話。也因?yàn)樵缦鹊却闹袛嘁蟋F(xiàn)在已經(jīng)執(zhí)行,主操作軟件也把VIP位轉(zhuǎn)換到它的NONPENDING狀態(tài),如果沒有其他中斷請求等待執(zhí)行的話。
      顯而易見,像剛才上面所述的計(jì)算機(jī)系統(tǒng)36處理中斷的方法與系統(tǒng)34的處理中斷是不同的。具體說在系統(tǒng)36內(nèi),當(dāng)一個(gè)中斷指令正待處理而虛擬中斷標(biāo)志是在CLI狀態(tài)時(shí),隨后來的STI指令及待處理中斷請求通過模擬軟件被立即執(zhí)行而無需首先轉(zhuǎn)變虛擬中斷標(biāo)志的狀態(tài)。這就相當(dāng)于計(jì)算機(jī)24處理相同情況的狀態(tài)。因而是與系統(tǒng)24相兼容的,這與系統(tǒng)34相反,如前述,后者在這個(gè)方面與系統(tǒng)24不相兼容。這就使得能更容易和可能更正確地的修改早先為作為系統(tǒng)24組成部分386微處理機(jī)編寫的軟件程序。另外這種方法還使得386微處理機(jī)能在直接產(chǎn)生的與由如386微處理機(jī)過去通過POPF所產(chǎn)生的STI指令之間加以區(qū)分。這一點(diǎn)是很重要的,因?yàn)殡S后的執(zhí)行STI等待處理中斷是在延遲一個(gè)指令之后,而隨后的執(zhí)行POPF等待處理中斷是立即進(jìn)行的。所建議的386微處理機(jī)方案(圖3)不具備這種能力。
      已經(jīng)介紹了計(jì)算機(jī)系統(tǒng)36與所述建議的系統(tǒng)34、現(xiàn)存系統(tǒng)34和原始系統(tǒng)10之間的差異,但應(yīng)理解,本發(fā)明并不僅限于對INTEL公司的386微處理機(jī)及其相應(yīng)部件,它的80486TM微處理機(jī)或者任何有關(guān)的微處理機(jī)的改善,雖然本發(fā)明特別適宜于這些微處理機(jī)。不過由系統(tǒng)10、24、34及36的這些特點(diǎn)亦可明顯看到,本發(fā)明僅僅是關(guān)于對中斷的處理,而且也只介紹了這方面的情況。當(dāng)然,每一系統(tǒng)均還包含有與本發(fā)明無關(guān)的其他一些部件。這些以及其他任何這里未談到但對這些系統(tǒng)處理中斷操作所必不可少的部件,對于本技術(shù)領(lǐng)域的普通人員來說應(yīng)該是顯而易見的。不過具體關(guān)于STI和CLI指令,亦應(yīng)理解,本發(fā)明對他們的處理方法,無論這些指令是由一特定的DOS應(yīng)用程序直接發(fā)出的,還是作為POPF指令的結(jié)果而產(chǎn)生的,均是完全相同的。還應(yīng)理解,本發(fā)明亦不限于計(jì)算機(jī)系統(tǒng)的虛擬模式運(yùn)行。新系統(tǒng)36與系統(tǒng)34一樣,是被設(shè)計(jì)為在被保護(hù)的模式、即專門為386微處理機(jī)26編寫的利用該微處理機(jī)中較大(32位)存儲(chǔ)器的新DOS應(yīng)用程序下運(yùn)行的。在系統(tǒng)24,當(dāng)在被保護(hù)的模式下以新軟件(與為8086系統(tǒng)10編寫的較老軟件不同)運(yùn)行時(shí),STI和CLI指令是以與系統(tǒng)在虛擬模式下運(yùn)行8086軟件時(shí)相同的方式和同樣的條件下被俘獲進(jìn)模擬程序32中的。系統(tǒng)36在虛擬模式下處理這些指令過程的改進(jìn)已經(jīng)被延伸到在被保護(hù)模式下處理他們的方法中。換言之,不管計(jì)算機(jī)系統(tǒng)36(圖4)是在虛擬模式下對8086軟件、還是在被保護(hù)模式下對386軟件運(yùn)行,STI和CLI指令的處理過程均是同樣的。
      討論過計(jì)算機(jī)系統(tǒng)36處理中斷指令的運(yùn)行過程以及它的超過現(xiàn)有技術(shù)和先前建議的系統(tǒng)的優(yōu)點(diǎn)之后,現(xiàn)在來看圖5。圖中描述系統(tǒng)36以前述狀態(tài)處理中斷過程的流程圖。應(yīng)特別注意到,此流程圖不僅包含有如對照圖4所說明的系統(tǒng)34與36之間的差異,而且還包含有如對照圖3所述的他們之間的相似處。根據(jù)這一流程圖和這里所揭示的內(nèi)容,本技術(shù)領(lǐng)域的普通熟練人員將能很容易地實(shí)現(xiàn)本發(fā)明。
      再回到圖5,圖中的流程圖說明根據(jù)本發(fā)明的圖4所示的計(jì)算機(jī)系統(tǒng)36處理STI和CLI指令的過程。雖然該流程圖本身已經(jīng)說明問題,這里還是再作簡單敘述。由圖中可見,首先要確定指令是STI還是CLI。如果為一個(gè)CLI指令,將VIF標(biāo)志30″直接(不經(jīng)過模擬過程)置(或保持)0,而后處理結(jié)束。如果指令是STI,那么就讀出VIP位以確定它是1還是0。如果VIP位為0,將VIF位置1,處理結(jié)束。如果VIP位為1,則在處理結(jié)束前進(jìn)行模擬操作所需的俘獲。
      權(quán)利要求
      1.在一包括有一給定微處理機(jī)的計(jì)算機(jī)系統(tǒng)中,該微處理機(jī)專門設(shè)計(jì)成在一虛擬操作模式下運(yùn)行,此模式可以使為早先設(shè)計(jì)的單程序微處理機(jī)編寫的軟件程序在一特殊設(shè)計(jì)的主操作軟件程序控制下能在一被保護(hù)的、分頁式、多任務(wù)環(huán)境中運(yùn)行,所述系統(tǒng)還包括有利用作為所述主程序組成部分的模擬軟件來執(zhí)行所述早先編寫的程序產(chǎn)生的某些與中斷有關(guān)的指令CLEAR INTERRUPT (CLI)和SETINTERRUPT (STI),以便模擬這些指令為所述早先的微處理機(jī)執(zhí)行的狀況,對所述系統(tǒng)的改進(jìn)特征在于包括(a)一作為所述給定微處理機(jī)組成部分的EFLAGS寄存器,它包含有(1)一個(gè)VIRTUAL INTERRUPT FLAG (VIF)位,它處于一允許執(zhí)行所述早先編寫的程序所產(chǎn)生的中斷指令的STI狀態(tài)或一禁止所述中斷指令執(zhí)行的CLI狀態(tài);(2)一個(gè)VIRTUAL INTERRUPT PENDING (VIP)位,它處于一中斷請求正等待執(zhí)行時(shí)期的PENDING狀態(tài),或者一無中斷請求等待執(zhí)行的NONPENDING狀態(tài);(b)構(gòu)成所述給定微處理機(jī)和所述主操作軟件組成部分的裝置,用來在只要VIP位處于其NONPENDING狀態(tài),改變所述EFLAGS寄存器為VIF位的狀態(tài),而可不利用所述模擬軟件;(c)構(gòu)成所述給定微處理機(jī)和所述主操作軟件組成部分的裝置,響應(yīng)所述VIP位的PENDING狀態(tài)、所述VIF位的CLI狀態(tài)和一隨后由所述早先編寫的軟件程序產(chǎn)生的STI指令,借助所述模擬軟件來自動(dòng)執(zhí)行該STI指令,而無需首先將所述VIF位的狀態(tài)由CLI狀態(tài)改變?yōu)镾TI狀態(tài)。
      2.在一包括有一給定微處理機(jī)的計(jì)算機(jī)系統(tǒng)的操作方法中,該微處理機(jī)專門設(shè)計(jì)成在一虛擬操作模式下運(yùn)行,此模式可以使為早先設(shè)計(jì)的單程序微處理機(jī)編寫的軟件程序在一特殊設(shè)計(jì)的主操作軟件程序控制下能在一被保護(hù)的、分頁式、多任務(wù)環(huán)境中運(yùn)行,所述系統(tǒng)還包括有利用作為所述主程序組成部分的模擬軟件來執(zhí)行所述早先編寫的程序產(chǎn)生的某些與中斷有關(guān)的指令CLEAR INTERRUPT(CLI)和SET INTERRUPT(STI),以便模擬這些指令為所述早先的微處理機(jī)執(zhí)行的狀況,所述方法的改進(jìn)特征在于包括下列步驟(a) 設(shè)置構(gòu)成所述給定微處理機(jī)部件的EFLAGS寄存器,它包含有(1) 一個(gè)VIRTUAL INTERRUPT FLAG(VIF)位,它處于一允許執(zhí)行所述早先編寫的程序所產(chǎn)生的中斷指令的STI狀態(tài)或一禁止所述中斷指令執(zhí)行的CLI狀態(tài);(2) 一個(gè)VIRTUAL INTERRUPT PENDING(VIP)位,它處于一中斷請求正等待執(zhí)行時(shí)期的PENDING狀態(tài),或一不存在這種中斷正在或等待執(zhí)行的中斷的NONPENDING狀態(tài);(b) 只要VIP位處于其NONPENDING狀態(tài),改變所述EFLAGS寄存器的VIF位的狀態(tài)或狀態(tài)的變化而無需利用所述模擬軟件;(c)響應(yīng)所述VIP位的PENDING狀態(tài),所述VIF位的CLI狀態(tài)和一隨后由所述早先編寫的軟件程序產(chǎn)生的STI指令,借助所述模擬軟件來自動(dòng)地執(zhí)行該STI指令及一等待著的中斷請求,而無需首先將所述VIF位的狀態(tài)由CLI狀態(tài)改變?yōu)镾TI狀態(tài)。
      3.在一包括有一給定微處理機(jī)的計(jì)算機(jī)系統(tǒng)中,該微處理機(jī)專門設(shè)計(jì)成在一被保護(hù)的運(yùn)行模式下運(yùn)行,此模式使得早先為一大存儲(chǔ)器微處理機(jī)編寫的給定軟件程序能在一特定設(shè)計(jì)的主操作軟件程序控制下在一被保護(hù)的、分頁式、多任務(wù)環(huán)境下運(yùn)行,所述系統(tǒng)還包括有利用構(gòu)成所述主程序一部分的模擬軟件來執(zhí)行由所述給定程序產(chǎn)生的某些有關(guān)中斷的指令CLEAR INTERRUPT(CLI)和SET INTERRUPT(STI),對所述系統(tǒng)的改進(jìn)特征在于包括(a)作為所述給定微處理機(jī)組成部分的EFLAGS寄存器,它包括有(1)一個(gè)VIRTUAL INTERRUPT FLAG(VIF)位,它處于一允許執(zhí)行所述給定程序所產(chǎn)生的中斷指令的STI狀態(tài),或一禁止所述中斷指令執(zhí)行的CLI狀態(tài);(2)一個(gè)VIRTUAL INTERRUPT PENDING(VIP)位,它處于一中斷請求正等待執(zhí)行時(shí)期的PENDING狀態(tài),或者一無中斷請求等待執(zhí)行的NONPENDING狀態(tài);(b)構(gòu)成所述給定微處理機(jī)和所述主操作軟件組成部分的裝置,用來在只要VIP位處于其NONPENDING狀態(tài)時(shí),改變所述EFLAGS寄存器的VIF位的狀態(tài),而不必利用所述模擬軟件;(c)構(gòu)成所述給定微處理機(jī)和所述主操作軟件組成部分的裝置,響應(yīng)所述VIP位的PENDING狀態(tài),所述VIF位的CLI狀態(tài)和一隨后由所述給定程序產(chǎn)生的STI指令,借助所述模擬軟件來自動(dòng)地執(zhí)行該STI指令和一等待著的中斷請求而無需首先將所述VIF位的狀態(tài)由CLI狀態(tài)改變?yōu)镾TI狀態(tài)。
      4.在一包括有一給定微處理機(jī)的計(jì)算機(jī)系統(tǒng)的操作方法中,該微處理機(jī)專門設(shè)計(jì)成在一被保護(hù)的運(yùn)行模式下運(yùn)行,此模式使得早先為一大存儲(chǔ)器微處理機(jī)編寫的給定軟件程序能在一特定設(shè)計(jì)的主操作軟件程序控制下在一被保護(hù)的、分頁式、多任務(wù)環(huán)境下運(yùn)行,所述系統(tǒng)還包括有利用構(gòu)成所述主程序一部分的模擬軟件來執(zhí)行由所述給定程序產(chǎn)生的某些有關(guān)中斷的指令CLEAR INTERRUPT(CLI)和SET INTERRUPT(STI),對所述系統(tǒng)運(yùn)行方法的改進(jìn)特征在于包括下列步驟(a)設(shè)置作為所述給定微處理機(jī)組成部分的EFLAGS寄存器包括,它包含有(1)一個(gè)VIRTUAL INTERRUPT FLAG(VIF)位,它處于一允許執(zhí)行所述給定程序所產(chǎn)生的中斷指令的STI狀態(tài)或一禁止所述中斷指令執(zhí)行的CLI狀態(tài);(2)一個(gè)VIRTUAL INTERRUPT PENDING(VIP)位,它處于一中斷請求正等待執(zhí)行時(shí)期的PENDING狀態(tài)或一沒有這種中斷請求正在執(zhí)行或等待執(zhí)行的NONPENDING狀態(tài);(b)只要VIP位處于其NONPENDING狀態(tài),改變所述EFLAGS寄存器的VIF位的狀態(tài)或狀態(tài)的變化,而無需利用所述模擬軟件;(c)響應(yīng)所述VIP位的PENDING狀態(tài),所述VIF位的CLI狀態(tài)和一隨后由所述早先編寫的軟件程序產(chǎn)生的STI指令,借助所述模擬軟件來自動(dòng)地執(zhí)行該STI指令及等待著的中斷請求而無需首先將所述VIF位的狀態(tài)由CLI狀態(tài)改變?yōu)镾TI狀態(tài)。
      全文摘要
      這里揭示的計(jì)算機(jī)系統(tǒng),包括有一專門設(shè)計(jì)為以一虛擬操作模式(亦即被保護(hù)的模式)運(yùn)行的給定微處理機(jī),該操作模式使得早先為一較早設(shè)計(jì)的單程序微處理機(jī)編寫的軟件程序能在一特定設(shè)計(jì)的主操作軟件程序控制下,在一被保護(hù)的、分頁式、多任務(wù)環(huán)境中運(yùn)行。此系統(tǒng)還包括有依靠作為主程序的構(gòu)成部分的模擬軟件來執(zhí)行該早先編寫的程序所產(chǎn)生的某些有關(guān)中斷的指令,即CLEAR INTERRUPT(CLI)和SET INTERRUPT(STI)的裝置,以模擬這些指令為早先的微處理機(jī)執(zhí)行的情況。
      文檔編號G06F9/455GK1071269SQ9211098
      公開日1993年4月21日 申請日期1992年9月23日 優(yōu)先權(quán)日1991年9月23日
      發(fā)明者D·阿爾帕特, A·鄧 申請人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1