两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種對(duì)訪存操作進(jìn)行權(quán)限檢查的系統(tǒng)、裝置及方法

文檔序號(hào):6554836閱讀:261來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種對(duì)訪存操作進(jìn)行權(quán)限檢查的系統(tǒng)、裝置及方法
技術(shù)領(lǐng)域
本發(fā)明涉及復(fù)雜指令集計(jì)算機(jī)段保護(hù)機(jī)制技術(shù)領(lǐng)域,尤其涉及一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的系統(tǒng)、裝置及方法。
背景技術(shù)
基于復(fù)雜指令集的計(jì)算機(jī)(Complex Instruction Set Computer,CISC)是指以微程序?yàn)榛A(chǔ)、具有復(fù)雜指令系統(tǒng)的計(jì)算機(jī),一般可以具有多種訪存處理模式。例如,基于X86的處理器80386就同時(shí)具有實(shí)地址模式、保護(hù)虛地址模式、虛擬8086模式三種訪存處理模式。其中,保護(hù)虛地址模式是80386最常用的訪存處理模式,該模式引入了虛擬存儲(chǔ)器的概念,虛擬存儲(chǔ)器容量高達(dá)64TB,CPU可訪問(wèn)的物理存儲(chǔ)器容量為4GB。
在保護(hù)虛地址模式下,處理器提供了一種段保護(hù)機(jī)制。段保護(hù)機(jī)制將處理器的內(nèi)存分成一個(gè)個(gè)獨(dú)立的地址空間,這種地址空間就叫做段。段保護(hù)機(jī)制可以很好的區(qū)分同一塊共享內(nèi)存中的指令代碼、數(shù)據(jù)代碼和堆棧,使指令代碼、數(shù)據(jù)代碼和堆棧各自擁有獨(dú)立的地址空間,從而保證了多種類(lèi)型的程序段或者任務(wù)可以在同一個(gè)處理器上運(yùn)行而不互相干擾。特別地,當(dāng)處理器運(yùn)行在保護(hù)虛地址模式下時(shí),段保護(hù)機(jī)制是一直開(kāi)啟的,且不能被屏蔽掉。
段保護(hù)機(jī)制的作用主要體現(xiàn)以下兩個(gè)方面首先是對(duì)應(yīng)用程序之間的保護(hù),將每個(gè)任務(wù)放置在不同的虛地址空間,可以實(shí)現(xiàn)任務(wù)與任務(wù)之間的隔離,進(jìn)而可以實(shí)現(xiàn)應(yīng)用程序之間的保護(hù);其次是對(duì)同一個(gè)程序內(nèi)部的保護(hù),在一個(gè)任務(wù)內(nèi)定義用于限制對(duì)任務(wù)中的段進(jìn)行訪問(wèn)的特權(quán)級(jí)別,按照包含在段中數(shù)據(jù)的重要性和代碼的可信任程度,為段指定或分配特權(quán)級(jí)別,使具有最高特權(quán)級(jí)別的數(shù)據(jù)由最可信任的代碼訪問(wèn),具有最低特權(quán)級(jí)別的數(shù)據(jù)可被具有任何特權(quán)級(jí)別的代碼訪問(wèn),進(jìn)而實(shí)現(xiàn)同一個(gè)程序內(nèi)部的保護(hù)。
在段保護(hù)機(jī)制下,將邏輯地址轉(zhuǎn)化為線性地址的過(guò)程如圖1所示,圖1為邏輯地址到線性地址轉(zhuǎn)化的示意圖。以下對(duì)圖1中各部分簡(jiǎn)要描述如下邏輯地址101是虛擬存儲(chǔ)器的地址,又稱(chēng)虛地址,是機(jī)器語(yǔ)言可以識(shí)別的相對(duì)地址,并不是最終真正訪存時(shí)的物理地址。一個(gè)邏輯地址包括段選擇子和段內(nèi)偏移。段選擇子又稱(chēng)段基地址,是段的唯一標(biāo)識(shí)符。
段描述表102是由段描述符集合在一起構(gòu)成的表。每一個(gè)段都有自己唯一的段描述符,段描述符描述了段的起始地址、段的界限和段的屬性。其中,段的起始地址指示了段在線性地址空間中的起始地址,段的界限規(guī)定了段的大小,段的屬性描述了段的主要屬性。段描述符集合在一起,就構(gòu)成了段描述表。段描述表一般有兩種,一種是全局描述表,一種是局部描述表,段描述表存放在內(nèi)存中。
線性地址103是邏輯地址經(jīng)過(guò)段保護(hù)機(jī)制轉(zhuǎn)化后得到的地址。如果處理器進(jìn)一步啟用了頁(yè)機(jī)制,則將經(jīng)過(guò)段保護(hù)機(jī)制轉(zhuǎn)化后得到的線性地址再經(jīng)過(guò)一次頁(yè)機(jī)制的地址轉(zhuǎn)化,就能得到物理地址;如果處理器沒(méi)有啟用頁(yè)機(jī)制,則經(jīng)過(guò)段保護(hù)機(jī)制轉(zhuǎn)化后得到的地址就是物理地址。
基于圖1所示的示意圖,在處理器將邏輯地址轉(zhuǎn)化為線性地址時(shí),處理器從邏輯地址中區(qū)分出段選擇子和段內(nèi)偏移,根據(jù)段選擇子在內(nèi)存中查找段描述符,將獲取的段描述符中的段起始地址加上邏輯地址中的段內(nèi)偏移就可以得到線性地址。
為了加快段保護(hù)機(jī)制下將邏輯地址轉(zhuǎn)化為線性地址的速度,處理器一般都會(huì)在自身增加一種用于保存描述符中段的起始地址、段的界限和段的屬性的影子寄存器。如圖2所示,圖2為影子寄存器中保存信息的示意圖。當(dāng)發(fā)生段切換或者任務(wù)切換時(shí),第1次邏輯地址轉(zhuǎn)化完成后,處理器將段的起始地址、段的界限和段的屬性保存到影子寄存器,以后在對(duì)同一個(gè)段的邏輯地址進(jìn)行轉(zhuǎn)換時(shí),處理器將直接查找影子寄存器,而不必再次訪問(wèn)內(nèi)存,節(jié)省了訪存的時(shí)間,大大加快了將邏輯地址轉(zhuǎn)化為線性地址的速度。
在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行的權(quán)限檢查與上述地址轉(zhuǎn)換過(guò)程同時(shí)進(jìn)行,對(duì)訪存操作進(jìn)行權(quán)限檢查的內(nèi)容主要包括地址越界檢查、段類(lèi)型檢查和特權(quán)級(jí)檢查。在對(duì)訪存操作進(jìn)行權(quán)限檢查時(shí),對(duì)特殊訪存指令與普通訪存指令的權(quán)限檢查有所不同,對(duì)特殊訪存指令的權(quán)限檢查,需要依次檢查訪存指令的段選擇子、段描述符的類(lèi)型和段的特權(quán)級(jí)是否合法;對(duì)普通訪存指令的權(quán)限檢查,僅需要檢查訪存指令的地址是否越界。這里,特殊訪存指令是指涉及段切換和任務(wù)切換訪存指令,普通訪存指令是指不涉及段切換和任務(wù)切換訪存指令。
在將邏輯地址轉(zhuǎn)化為線性地址的過(guò)程中,只有對(duì)訪存操作的權(quán)限檢查通過(guò),訪存操作才能順利進(jìn)行,處理器才能在內(nèi)存中查找需要的信息,所以在段保護(hù)機(jī)制下對(duì)訪存操作的權(quán)限檢查是非常重要的。
但是,目前還不存在一種在段保護(hù)機(jī)制下明確用于對(duì)訪存操作進(jìn)行權(quán)限檢查的技術(shù),無(wú)法實(shí)現(xiàn)在段保護(hù)機(jī)制下對(duì)訪存操作的權(quán)限檢查。

發(fā)明內(nèi)容
(一)要解決的技術(shù)問(wèn)題針對(duì)上述現(xiàn)有技術(shù)存在的不足,本發(fā)明的一個(gè)主要目的在于提供一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的系統(tǒng),以實(shí)現(xiàn)在段保護(hù)機(jī)制下對(duì)訪存操作的權(quán)限檢查。
本發(fā)明的另一個(gè)主要目的在于提供一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的裝置,以實(shí)現(xiàn)在段保護(hù)機(jī)制下對(duì)訪存操作的權(quán)限檢查。
本發(fā)明的再一個(gè)主要目的在于提供一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的方法,以實(shí)現(xiàn)在段保護(hù)機(jī)制下對(duì)訪存操作的權(quán)限檢查。
(二)技術(shù)方案為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的系統(tǒng),該系統(tǒng)包括訪存指令發(fā)射裝置,用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數(shù)據(jù),并將保存的訪存指令微碼序列發(fā)射給訪存操作權(quán)限檢查裝置;訪存操作權(quán)限檢查裝置,用于對(duì)訪存操作進(jìn)行權(quán)限檢查,在權(quán)限檢查通過(guò)后將邏輯地址轉(zhuǎn)換成線性地址發(fā)送給訪存指令執(zhí)行裝置,在權(quán)限檢查未通過(guò)時(shí)將例外信號(hào)發(fā)送給例外處理裝置;
訪存指令執(zhí)行裝置,用于根據(jù)接收自訪存操作權(quán)限檢查裝置的線性地址訪問(wèn)內(nèi)存,并將獲取的數(shù)據(jù)返回給訪存指令發(fā)射裝置;例外處理裝置,用于接收訪存操作權(quán)限檢查裝置發(fā)送的例外信號(hào),執(zhí)行例外處理程序。
所述訪存指令發(fā)射裝置包括訪存指令發(fā)射隊(duì)列,用于將保存的訪存指令微碼序列發(fā)射給訪存操作權(quán)限檢查裝置;寄存器堆,用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數(shù)據(jù)。
一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的裝置,該裝置包括訪存指令預(yù)處理單元,用于區(qū)分接收自訪存指令發(fā)射裝置的訪存指令的類(lèi)型,將特殊訪存指令發(fā)送給特殊訪存指令權(quán)限檢查單元,將普通訪存指令發(fā)送給普通訪存指令權(quán)限檢查單元;特殊訪存指令權(quán)限檢查單元,用于檢查接收自訪存指令預(yù)處理單元的特殊訪存指令的段選擇子是否合法,在段選擇子合法時(shí)訪問(wèn)內(nèi)存,并檢查訪存返回結(jié)果的段描述符類(lèi)型和段特權(quán)級(jí)是否合法,在段描述符類(lèi)型和段特權(quán)級(jí)合法時(shí)更新影子寄存器中段描述符的段屬性,將更新了段屬性的段描述符保存回內(nèi)存;普通訪存指令權(quán)限檢查單元,用于檢查接收自訪存指令預(yù)處理單元的普通訪存指令的地址是否越界,確定沒(méi)有越界后訪問(wèn)影子寄存器獲取段起始地址。
所述特殊訪存指令權(quán)限檢查單元包括段選擇子權(quán)限檢查單元,用于檢查接收自訪存指令預(yù)處理單元的特殊訪存指令的段選擇子是否合法,根據(jù)合法的段選擇子在內(nèi)存中讀取段描述符,并將讀取的段描述符發(fā)送給段描述符權(quán)限檢查單元;段描述符權(quán)限檢查單元,用于檢查接收自段選擇子權(quán)限檢查單元段描述符的段描述符類(lèi)型和段特權(quán)級(jí)是否合法,將合法的段描述符發(fā)送給更新單元;更新單元,用于將接收自段描述符權(quán)限檢查單元的段描述符保存到影子寄存器,并更新段描述符的段屬性,將更新了段屬性的段描述符保存回內(nèi)存。
該裝置進(jìn)一步包括影子寄存器,用于保存段起始地址、段的界限和段屬性信息,直接與更新單元連接。所述影子寄存器位于訪存操作權(quán)限檢查裝置的內(nèi)部或外部。
一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的方法,應(yīng)用于包括訪存指令發(fā)射裝置、訪存操作權(quán)限檢查裝置、訪存指令執(zhí)行裝置和例外處理裝置的訪存操作權(quán)限檢查系統(tǒng),該方法包括A、訪存操作權(quán)限檢查裝置判斷接收自訪存指令發(fā)射裝置的訪存指令類(lèi)型,如果訪存指令為特殊訪存指令,則執(zhí)行步驟B;否則,執(zhí)行步驟C;B、訪存操作權(quán)限檢查裝置依次檢查特殊訪存指令的段選擇子、段描述符的類(lèi)型和段的特權(quán)級(jí)是否合法,如果都合法,則結(jié)束檢查;如果有任一項(xiàng)不合法,則執(zhí)行步驟D;C、訪存操作權(quán)限檢查裝置檢查訪存指令的地址是否越界,如果沒(méi)有越界,則結(jié)束檢查;否則,執(zhí)行步驟D;D、訪存操作權(quán)限檢查裝置向例外處理裝置發(fā)送例外信號(hào)。
步驟A之前進(jìn)一步包括將訪存指令翻譯成微碼序列,并將翻譯的微碼序列保存在訪存指令發(fā)射裝置中,訪存指令發(fā)射裝置將保存的微碼序列發(fā)射給訪存操作權(quán)限檢查裝置。
所述訪存指令為特殊訪存指令,所述將訪存指令翻譯成微碼序列包括拆分特殊訪存指令,將特殊訪存指令翻譯成滿足下述要求的微碼序列至少有一條微碼用來(lái)實(shí)現(xiàn)普通訪存指令的操作,且該微碼還用于在訪存前檢查段選擇子是否合法;至少有一條微碼用來(lái)檢查段描述符類(lèi)型和段特權(quán)級(jí)是否合法;至少有一條微碼用來(lái)實(shí)現(xiàn)裝載影子積存器的操作;至少有一條微碼用來(lái)更新段描述符的段屬性,并將更新了段屬性的段描述符保存回內(nèi)存;所述訪存指令為普通訪存指令,所述將訪存指令翻譯成微碼序列包括將普通訪存指令翻譯成具有查詢段特性的訪存微碼。所述由特殊訪存指令翻譯成的各微碼之間相互獨(dú)立運(yùn)行,且相互不發(fā)生影響。
步驟A中所述判斷包括訪存操作權(quán)限檢查裝置判斷接收的微碼序列的條數(shù),如果微碼序列的條數(shù)大于一條,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
步驟A中所述判斷包括訪存操作權(quán)限檢查裝置判斷接收的訪存指令是否涉及段切換或任務(wù)切換,如果涉及,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
所述步驟B包括B1、訪存操作權(quán)限檢查裝置檢查特殊訪存指令的段選擇子是否合法,如果合法,則根據(jù)合法的段選擇子在內(nèi)存中讀取段描述符,并執(zhí)行步驟B2;否則,執(zhí)行步驟D;B2、訪存操作權(quán)限檢查裝置檢查讀取的段描述符的類(lèi)型是否合法,如果合法,則執(zhí)行步驟B3;否則,執(zhí)行步驟D;B3、訪存操作權(quán)限檢查裝置檢查段的特權(quán)級(jí)是否合法,如果合法,則結(jié)束檢查;否則,執(zhí)行步驟D。
所述特殊訪存指令訪問(wèn)堆棧段,步驟B1中所述檢查特殊訪存指令的段選擇子是否合法包括檢查堆棧段的段選擇子是否為非零,如果是,則堆棧段的段選擇子合法;否則,堆棧段的段選擇子不合法。
預(yù)先在訪存操作權(quán)限檢查裝置中配置段描述符的類(lèi)型,步驟B2中所述檢查讀取的段描述符的類(lèi)型是否合法包括比較讀取的段描述符的類(lèi)型與預(yù)先配置的段描述符的類(lèi)型是否相同,如果相同,則段描述符的類(lèi)型合法;否則,段描述符的類(lèi)型不合法。
步驟B3中所述檢查段的特權(quán)級(jí)是否合法包括判斷請(qǐng)求訪問(wèn)的段的特權(quán)級(jí)是否高于或等于被訪問(wèn)的段的特權(quán)級(jí),如果是,則段的特權(quán)級(jí)合法;否則,段的特權(quán)級(jí)不合法。
步驟B3中所述結(jié)束檢查之后進(jìn)一步包括訪存操作權(quán)限檢查裝置將合法的段描述符保存到影子寄存器,并將段描述符提供的段起始地址加上邏輯地址中的段內(nèi)偏移得到線性地址。所述將段描述符保存到影子寄存器包括將段的起始地址、段的界限和段的屬性保存到影子寄存器。
所述段為首次訪問(wèn)的段,所述將獲取的段描述符保存到影子寄存器后進(jìn)一步包括設(shè)置段描述符中段屬性的Access位或Busy位,并將更新后的段描述符保存回內(nèi)存。
步驟C中所述檢查訪存指令的地址是否越界包括訪存操作權(quán)限檢查裝置訪問(wèn)影子寄存器獲取段描述符中段的界限信息,比較訪存指令邏輯地址中的段內(nèi)偏移是否超出段的界限,如果超出,則訪存指令的地址越界;否則,訪存指令的地址不越界。
步驟C中所述結(jié)束檢查之后進(jìn)一步包括訪存操作權(quán)限檢查裝置利用查詢段特性的微碼訪問(wèn)影子寄存器獲取段起始地址,將獲取的段起始地址加上邏輯地址中的段內(nèi)偏移得到線性地址。
所述步驟D進(jìn)一步包括訪存操作權(quán)限檢查裝置將例外總線信號(hào)置高。
(三)有益效果從上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果1、利用本發(fā)明,通過(guò)將訪存指令翻譯成微碼序列,并區(qū)分訪存指令的類(lèi)型,分別對(duì)特殊訪存指令的段選擇子、段描述符的類(lèi)型、段的特權(quán)級(jí)是否合法以及普通訪存指令的地址是否越界進(jìn)行檢查,實(shí)現(xiàn)了對(duì)訪存操作進(jìn)行的權(quán)限檢查。
2、由于在確定特殊訪存指令的段選擇子、段描述符的類(lèi)型、段的特權(quán)級(jí)合法后,將合法的段描述符包含的段起始地址,段的界限和段的屬性保存到影子寄存器中,在處理器再次訪問(wèn)同一個(gè)段時(shí),處理器不需要去內(nèi)存中查找段描述符,查詢影子寄存器就可以得到段的全部特性。因此,利用本發(fā)明有效地減少了訪存的延遲,大大提高了處理器的運(yùn)行速度。
3、由于本發(fā)明提供的對(duì)訪存操作進(jìn)行權(quán)限檢查的系統(tǒng)和裝置結(jié)構(gòu)簡(jiǎn)單,有效降低了硬件設(shè)計(jì)的復(fù)雜度,且能夠?qū)崿F(xiàn)對(duì)訪存操作進(jìn)行的所有權(quán)限檢查,所以本發(fā)明的實(shí)現(xiàn)成本低,非常有利于本發(fā)明的推廣和應(yīng)用。


圖1為邏輯地址到線性地址轉(zhuǎn)化的示意圖;圖2為影子寄存器中保存信息的示意圖;圖3為依照本發(fā)明將特殊訪存指令翻譯為微碼序列的示意圖;圖4為本發(fā)明提供的訪存操作權(quán)限檢查系統(tǒng)的示意圖;圖5為本發(fā)明提供的訪存操作權(quán)限檢查裝置的結(jié)構(gòu)框圖;圖6為本發(fā)明對(duì)訪存操作進(jìn)行權(quán)限檢查總體技術(shù)方案的實(shí)現(xiàn)流程圖;圖7為依照本發(fā)明實(shí)施例對(duì)訪存操作進(jìn)行權(quán)限檢查的方法流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
本發(fā)明的核心內(nèi)容是通過(guò)將訪存指令翻譯成微碼序列,并區(qū)分訪存指令的類(lèi)型,分別對(duì)特殊訪存指令的段選擇子、段描述符的類(lèi)型、段的特權(quán)級(jí)是否合法以及普通訪存指令的地址是否越界進(jìn)行檢查,實(shí)現(xiàn)了對(duì)訪存操作進(jìn)行的權(quán)限檢查。
上述在將訪存指令翻譯成微碼序列時(shí),因?yàn)槠胀ㄔL存指令段描述符包含的段起始地址,段的界限和段的屬性保存在影子寄存器中,處理器不需要去內(nèi)存中查找段描述符,查詢影子寄存器就可以得到段的全部特性,從而進(jìn)行地址轉(zhuǎn)換和地址是否越界的權(quán)限檢查,所以處理器將普通訪存指令翻譯成具有查詢段特性的訪存微碼就能夠?qū)崿F(xiàn)對(duì)訪存操作進(jìn)行權(quán)限檢查的功能。另外,由于段起始地址,段的界限和段的屬性保存在影子寄存器中,處理器不需要去內(nèi)存中查找段描述符,查詢影子寄存器就可以得到段的全部特性,所以大大提高了普通訪存指令的執(zhí)行速度。
對(duì)于特殊訪存指令,處理器先拆分特殊訪存指令,然后將特殊訪存指令翻譯成滿足下述要求的微碼序列至少有一條微碼用來(lái)實(shí)現(xiàn)普通訪存指令的操作,且該微碼還用于在訪存前檢查段選擇子是否合法;至少有一條微碼用來(lái)檢查段描述符類(lèi)型和段特權(quán)級(jí)是否合法;至少有一條微碼用來(lái)實(shí)現(xiàn)裝載影子積存器的操作;至少有一條微碼用來(lái)更新段描述符的段屬性,并將更新了段屬性的段描述符保存回內(nèi)存。這些由特殊訪存指令翻譯成的各微碼之間可以相互獨(dú)立運(yùn)行,且相互不發(fā)生影響。
在對(duì)訪存操作進(jìn)行權(quán)限檢查時(shí),處理器先用權(quán)限檢查微碼判斷訪存操作是否滿足所有權(quán)限要求,如果滿足,則使用訪存微碼訪問(wèn)內(nèi)存,如果不滿足任何一個(gè)權(quán)限要求,則處理器為該訪存操作報(bào)例外,等待例外處理裝置處理。本發(fā)明具體將特殊訪存指令翻譯為微碼序列的示意圖可參見(jiàn)圖3。
如圖3所示,圖3為依照本發(fā)明將特殊訪存指令翻譯為微碼序列的示意圖。訪存指令LDS為涉及段切換和任務(wù)切換特殊訪存指令,本發(fā)明將特殊訪存指令LDS翻譯為由LOAD segment、MATCH segment、MOVEsegment和STORE segment四條微碼構(gòu)成的微碼序列。
其中,LOAD segment微碼用于檢查段選擇子是否合法,如果段選擇子合法,則處理器進(jìn)行訪存,在內(nèi)存中根據(jù)合法的段選擇子讀取段描述符。MATCH segment微碼用于檢查讀取的段描述符是否合法,主要檢查段的類(lèi)型是否匹配和段的屬性是否合法,如果段的屬性不合法,處理器將修改段的屬性。MOVE segment微碼用于將合法的段描述符裝載進(jìn)影子寄存器。STORE segment微碼用于將修改過(guò)的段的屬性保存回內(nèi)存,其中,被修改的是段屬性中涉及任務(wù)切換堆棧(TSS)段的Busy位,或者涉及非TSS段的Access位。
上述在區(qū)分訪存指令的類(lèi)型時(shí),可以根據(jù)訪存指令被翻譯的微碼序列的條數(shù)來(lái)進(jìn)行,如果微碼序列的條數(shù)大于一條,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。另外,還可以根據(jù)訪存指令是否涉及段切換或任務(wù)切換來(lái)進(jìn)行,如果涉及,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
上述對(duì)訪存操作進(jìn)行權(quán)限檢查,主要涉及本發(fā)明提供的對(duì)訪存操作進(jìn)行權(quán)限檢查的系統(tǒng)、裝置和方法,以下結(jié)合具體實(shí)施例,并參照附圖對(duì)訪存操作權(quán)限檢查系統(tǒng)、裝置和方法分別進(jìn)行詳細(xì)介紹。
如圖4所示,圖4為本發(fā)明提供的訪存操作權(quán)限檢查系統(tǒng)的示意圖,該系統(tǒng)包括訪存指令發(fā)射裝置401、訪存操作權(quán)限檢查裝置402、訪存指令執(zhí)行裝置403和例外處理裝置404。
其中,訪存指令發(fā)射裝置401用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數(shù)據(jù),并將保存的訪存指令微碼序列發(fā)射給訪存操作權(quán)限檢查裝置402。訪存指令發(fā)射裝置401一般由訪存指令發(fā)射隊(duì)列和寄存器堆構(gòu)成,訪存指令發(fā)射隊(duì)列用于將保存的訪存指令微碼序列發(fā)射給訪存操作權(quán)限檢查裝置;寄存器堆用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數(shù)據(jù)。
訪存操作權(quán)限檢查裝置402用于對(duì)訪存操作進(jìn)行權(quán)限檢查,在權(quán)限檢查通過(guò)后將邏輯地址轉(zhuǎn)換成線性地址發(fā)送給訪存指令執(zhí)行裝置403,在權(quán)限檢查未通過(guò)時(shí)將例外信號(hào)發(fā)送給例外處理裝置404。
訪存指令執(zhí)行裝置403用于根據(jù)接收自訪存操作權(quán)限檢查裝置402的線性地址訪問(wèn)內(nèi)存,并將獲取的數(shù)據(jù)返回給訪存指令發(fā)射裝置401的寄存器堆。
例外處理裝置404用于接收訪存操作權(quán)限檢查裝置402發(fā)送的例外信號(hào),執(zhí)行例外處理程序。
基于圖4所述的訪存操作權(quán)限檢查系統(tǒng),圖5示出了訪存操作權(quán)限檢查裝置的結(jié)構(gòu)框圖。訪存操作權(quán)限檢查裝置包括訪存指令預(yù)處理單元501、特殊訪存指令權(quán)限檢查單元502、普通訪存指令權(quán)限檢查單元503和影子寄存器504。
其中,訪存指令預(yù)處理單元501用于區(qū)分接收自訪存指令發(fā)射裝置401的訪存指令的類(lèi)型,將特殊訪存指令發(fā)送給特殊訪存指令權(quán)限檢查單元502,將普通訪存指令發(fā)送給普通訪存指令權(quán)限檢查單元503。
特殊訪存指令權(quán)限檢查單元502用于檢查接收自訪存指令預(yù)處理單元501的特殊訪存指令的段選擇子是否合法,在段選擇子合法時(shí)訪問(wèn)內(nèi)存,并檢查訪存返回結(jié)果的段描述符類(lèi)型和段特權(quán)級(jí)是否合法,在段描述符類(lèi)型和段特權(quán)級(jí)合法時(shí)更新影子寄存器504中段描述符的段屬性,將更新了段屬性的段描述符保存回內(nèi)存;在上述檢查過(guò)程中,如果有任一項(xiàng)不合法,則特殊訪存指令權(quán)限檢查單元502向例外處理裝置404發(fā)送例外信號(hào),例外處理裝置404執(zhí)行例外處理程序。
特殊訪存指令權(quán)限檢查單元502進(jìn)一步包括段選擇子權(quán)限檢查單元、段描述符權(quán)限檢查單元和更新單元。其中,段選擇子權(quán)限檢查單元用于檢查接收自訪存指令預(yù)處理單元的特殊訪存指令的段選擇子是否合法,根據(jù)合法的段選擇子在內(nèi)存中讀取段描述符,并將讀取的段描述符發(fā)送給段描述符權(quán)限檢查單元。段描述符權(quán)限檢查單元用于檢查接收自段選擇子權(quán)限檢查單元段描述符的段描述符類(lèi)型和段特權(quán)級(jí)是否合法,將合法的段描述符發(fā)送給更新單元。更新單元用于將接收自段描述符權(quán)限檢查單元的段描述符保存到影子寄存器,并更新段描述符的段屬性,將更新了段屬性的段描述符保存回內(nèi)存。
普通訪存指令權(quán)限檢查單元503用于檢查接收自訪存指令預(yù)處理單元501的普通訪存指令的地址是否越界,確定沒(méi)有越界后訪問(wèn)影子寄存器504獲取段起始地址;如果普通訪存指令的地址越界,則向例外處理裝置404發(fā)送例外信號(hào),例外處理裝置404執(zhí)行例外處理程序。
影子寄存器504用于保存段起始地址、段的界限和段屬性信息,直接與特殊訪存指令權(quán)限檢查單元502中的更新單元連接。影子寄存器504可以位于訪存操作權(quán)限檢查裝置402的內(nèi)部或外部。在影子寄存器504位于訪存操作權(quán)限檢查裝置402的內(nèi)部時(shí),影子寄存器可以作為訪存操作權(quán)限檢查裝置402的一個(gè)組成部分;在影子寄存器504位于訪存操作權(quán)限檢查裝置402的外部時(shí),影子寄存器504可以作為一個(gè)獨(dú)立的部件。
基于圖4所述的訪存操作權(quán)限檢查系統(tǒng)和圖5所述的訪存操作權(quán)限檢查裝置,圖6示出了本發(fā)明對(duì)訪存操作進(jìn)行權(quán)限檢查總體技術(shù)方案的實(shí)現(xiàn)流程圖,該方法包括以下步驟步驟601訪存操作權(quán)限檢查裝置判斷接收自訪存指令發(fā)射裝置的訪存指令類(lèi)型,如果訪存指令為特殊訪存指令,則執(zhí)行步驟602;否則,執(zhí)行步驟603;步驟602訪存操作權(quán)限檢查裝置依次檢查特殊訪存指令的段選擇子、段描述符的類(lèi)型和段的特權(quán)級(jí)是否合法,如果都合法,則結(jié)束檢查;如果有任一項(xiàng)不合法,則執(zhí)行步驟604;步驟603訪存操作權(quán)限檢查裝置檢查訪存指令的地址是否越界,如果沒(méi)有越界,則結(jié)束檢查;否則,執(zhí)行步驟604;步驟604訪存操作權(quán)限檢查裝置向例外處理裝置發(fā)送例外信號(hào)。
上述步驟601之前可以進(jìn)一步包括將訪存指令翻譯成微碼序列,并將翻譯的微碼序列保存在訪存指令發(fā)射裝置中,訪存指令發(fā)射裝置將保存的微碼序列發(fā)射給訪存操作權(quán)限檢查裝置。
如果訪存指令為特殊訪存指令,則將訪存指令翻譯成微碼序列包括拆分特殊訪存指令,將特殊訪存指令翻譯成滿足下述要求的微碼序列至少有一條微碼用來(lái)實(shí)現(xiàn)普通訪存指令的操作,且該微碼還用于在訪存前檢查段選擇子是否合法;至少有一條微碼用來(lái)檢查段描述符類(lèi)型和段特權(quán)級(jí)是否合法;至少有一條微碼用來(lái)實(shí)現(xiàn)裝載影子積存器的操作;至少有一條微碼用來(lái)更新段描述符的段屬性,并將更新了段屬性的段描述符保存回內(nèi)存。由特殊訪存指令翻譯成的各微碼之間相互獨(dú)立運(yùn)行,且相互不發(fā)生影響。
如果訪存指令為普通訪存指令,則將訪存指令翻譯成微碼序列包括將普通訪存指令翻譯成具有查詢段特性的訪存微碼。
上述步驟601訪存操作權(quán)限檢查裝置判斷接收自訪存指令發(fā)射裝置的訪存指令類(lèi)型可以采用以下兩種方式方式一、訪存操作權(quán)限檢查裝置判斷接收的微碼序列的條數(shù),如果微碼序列的條數(shù)大于一條,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令;方式二、訪存操作權(quán)限檢查裝置判斷接收的訪存指令是否涉及段切換或任務(wù)切換,如果涉及,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
上述步驟602訪存操作權(quán)限檢查裝置依次檢查特殊訪存指令的段選擇子、段描述符的類(lèi)型和段的特權(quán)級(jí)是否合法包括步驟6021訪存操作權(quán)限檢查裝置檢查特殊訪存指令的段選擇子是否合法,如果合法,則根據(jù)合法的段選擇子在內(nèi)存中讀取段描述符,并執(zhí)行步驟6022;否則,執(zhí)行步驟604;在本步驟中,當(dāng)特殊訪存指令訪問(wèn)堆棧段時(shí),訪存操作權(quán)限檢查裝置檢查堆棧段的段選擇子是否為非零,如果是,則堆棧段的段選擇子合法;否則,堆棧段的段選擇子不合法。
步驟6022訪存操作權(quán)限檢查裝置檢查讀取的段描述符的類(lèi)型是否合法,如果合法,則執(zhí)行步驟6023;否則,執(zhí)行步驟604;在本步驟中,預(yù)先在訪存操作權(quán)限檢查裝置中配置段描述符的類(lèi)型,訪存操作權(quán)限檢查裝置比較讀取的段描述符的類(lèi)型與預(yù)先配置的段描述符的類(lèi)型是否相同,如果相同,則段描述符的類(lèi)型合法;否則,段描述符的類(lèi)型不合法。
步驟6023訪存操作權(quán)限檢查裝置檢查段的特權(quán)級(jí)是否合法,如果合法,則結(jié)束檢查;否則,執(zhí)行步驟604;在本步驟中,訪存操作權(quán)限檢查裝置判斷請(qǐng)求訪問(wèn)的段的特權(quán)級(jí)是否高于或等于被訪問(wèn)的段的特權(quán)級(jí),如果是,則段的特權(quán)級(jí)合法;否則,段的特權(quán)級(jí)不合法。
上述步驟603訪存操作權(quán)限檢查裝置檢查訪存指令的地址是否越界包括訪存操作權(quán)限檢查裝置訪問(wèn)影子寄存器獲取段描述符中段的界限信息,比較訪存指令邏輯地址中的段內(nèi)偏移是否超出段的界限,如果超出,則訪存指令的地址越界;否則,訪存指令的地址不越界。
上述步驟604訪存操作權(quán)限檢查裝置向例外處理裝置發(fā)送例外信號(hào)時(shí)進(jìn)一步包括訪存操作權(quán)限檢查裝置將例外總線信號(hào)置高。
基于圖6所述的本發(fā)明對(duì)訪存操作進(jìn)行權(quán)限檢查總體技術(shù)方案,圖7示出了依照本發(fā)明實(shí)施例對(duì)訪存操作進(jìn)行權(quán)限檢查的方法流程圖。在本實(shí)施例中,影子寄存器位于訪存操作權(quán)限檢查裝置的內(nèi)部,該方法包括以下步驟步驟701訪存指令預(yù)處理單元接收到訪存指令發(fā)射裝置發(fā)射的訪存指令,判斷接收的微碼序列的條數(shù),如果微碼序列的條數(shù)大于一條,則訪存指令為特殊訪存指令,執(zhí)行步驟702;否則,訪存指令為普通訪存指令,執(zhí)行步驟707。
步驟702訪存指令預(yù)處理單元將特殊訪存指令發(fā)送給特殊訪存指令權(quán)限檢查單元中的段選擇子權(quán)限檢查單元,段選擇子權(quán)限檢查單元檢查特殊訪存指令的段選擇子是否合法,如果合法,則執(zhí)行步驟703;否則,段選擇子權(quán)限檢查單元向例外處理裝置發(fā)送例外信號(hào),執(zhí)行步驟709;在本步驟中,當(dāng)特殊訪存指令訪問(wèn)堆棧段時(shí),訪存操作權(quán)限檢查裝置檢查堆棧段的段選擇子是否為非零,如果是,則堆棧段的段選擇子合法;否則,堆棧段的段選擇子不合法。
步驟703段選擇子權(quán)限檢查單元根據(jù)合法的段選擇子在內(nèi)存中讀取段描述符,并將讀取的段描述符發(fā)送給段描述符權(quán)限檢查單元。
步驟704段描述符權(quán)限檢查單元檢查段描述符的類(lèi)型是否合法,如果合法,則執(zhí)行步驟705;否則,段描述符權(quán)限檢查單元向例外處理裝置發(fā)送例外信號(hào),執(zhí)行步驟709;在本步驟中,預(yù)先在訪存操作權(quán)限檢查裝置中配置段描述符的類(lèi)型,訪存操作權(quán)限檢查裝置比較讀取的段描述符的類(lèi)型與預(yù)先配置的段描述符的類(lèi)型是否相同,如果相同,則段描述符的類(lèi)型合法;否則,段描述符的類(lèi)型不合法。
步驟705段描述符權(quán)限檢查單元檢查段的特權(quán)級(jí)是否合法,如果合法,則執(zhí)行步驟706;否則,段描述符權(quán)限檢查單元向例外處理裝置發(fā)送例外信號(hào),執(zhí)行步驟709;在本步驟中,訪存操作權(quán)限檢查裝置判斷請(qǐng)求訪問(wèn)的段的特權(quán)級(jí)是否高于或等于被訪問(wèn)的段的特權(quán)級(jí),如果是,則段的特權(quán)級(jí)合法;否則,段的特權(quán)級(jí)不合法。
步驟706段描述符權(quán)限檢查單元將合法的段描述符發(fā)送給更新單元,更新單元將接收的段描述符保存到影子寄存器,并更新段描述符的段屬性,將更新了段屬性的段描述符保存回內(nèi)存,然后將段描述符提供的段起始地址加上邏輯地址中的段內(nèi)偏移得到線性地址,結(jié)束本流程;在更新段描述符的段屬性時(shí),對(duì)于首次訪問(wèn)的段,更新單元設(shè)置段描述符中段屬性的Access位或Busy位,并將更新后的段描述符保存回內(nèi)存。
步驟707訪存指令預(yù)處理單元將普通訪存指令發(fā)送給普通訪存指令權(quán)限檢查單元,普通訪存指令權(quán)限檢查單元檢查普通訪存指令的地址是否越界,如果沒(méi)有越界,則執(zhí)行步驟708;否則,普通訪存指令權(quán)限檢查單元向例外處理裝置發(fā)送例外信號(hào),執(zhí)行步驟709。
步驟708普通訪存指令權(quán)限檢查單元訪問(wèn)影子寄存器獲取段起始地址,將獲取的段起始地址加上邏輯地址中的段內(nèi)偏移得到線性地址,結(jié)束本流程。
步驟709例外處理裝置接收到例外信號(hào),執(zhí)行例外處理程序并結(jié)束。
在本發(fā)明所舉實(shí)施例步驟701中,訪存指令預(yù)處理單元判斷接收的訪存指令類(lèi)型是根據(jù)接收的微碼序列的條數(shù)進(jìn)行的。在實(shí)際應(yīng)用中,訪存指令預(yù)處理單元判斷接收的訪存指令類(lèi)型還可以根據(jù)接收的訪存指令是否涉及段切換或任務(wù)切換,如果是,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。這樣的技術(shù)方案與本發(fā)明實(shí)施例中所舉的技術(shù)方案在思路上是一致的,應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
在本發(fā)明所舉實(shí)施例步驟702、704、705和707中,在向例外處理裝置發(fā)送例外信號(hào)后,直接執(zhí)行步驟709。在實(shí)際應(yīng)用中,在向例外處理裝置發(fā)送例外信號(hào)時(shí),還可以進(jìn)一步將例外總線信號(hào)置高。這樣的技術(shù)方案與本發(fā)明實(shí)施例中所舉的技術(shù)方案在思路上是一致的,應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
在本發(fā)明所舉的這個(gè)實(shí)施例中,影子寄存器位于訪存操作權(quán)限檢查裝置的內(nèi)部。在實(shí)際應(yīng)用中,影子寄存器也可以位于訪存操作權(quán)限檢查裝置的外部。這樣的技術(shù)方案與本發(fā)明實(shí)施例中所舉的技術(shù)方案在思路上是一致的,應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的系統(tǒng),其特征在于,該系統(tǒng)包括訪存指令發(fā)射裝置,用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數(shù)據(jù),并將保存的訪存指令微碼序列發(fā)射給訪存操作權(quán)限檢查裝置;訪存操作權(quán)限檢查裝置,用于對(duì)訪存操作進(jìn)行權(quán)限檢查,在權(quán)限檢查通過(guò)后將邏輯地址轉(zhuǎn)換成線性地址發(fā)送給訪存指令執(zhí)行裝置,在權(quán)限檢查未通過(guò)時(shí)將例外信號(hào)發(fā)送給例外處理裝置;訪存指令執(zhí)行裝置,用于根據(jù)接收自訪存操作權(quán)限檢查裝置的線性地址訪問(wèn)內(nèi)存,并將獲取的數(shù)據(jù)返回給訪存指令發(fā)射裝置;例外處理裝置,用于接收訪存操作權(quán)限檢查裝置發(fā)送的例外信號(hào),執(zhí)行例外處理程序。
2.根據(jù)權(quán)利要求1所述的訪存操作權(quán)限檢查系統(tǒng),其特征在于,所述訪存指令發(fā)射裝置包括訪存指令發(fā)射隊(duì)列,用于將保存的訪存指令微碼序列發(fā)射給訪存操作權(quán)限檢查裝置;寄存器堆,用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數(shù)據(jù)。
3.一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的裝置,其特征在于,該裝置包括訪存指令預(yù)處理單元,用于區(qū)分接收自訪存指令發(fā)射裝置的訪存指令的類(lèi)型,將特殊訪存指令發(fā)送給特殊訪存指令權(quán)限檢查單元,將普通訪存指令發(fā)送給普通訪存指令權(quán)限檢查單元;特殊訪存指令權(quán)限檢查單元,用于檢查接收自訪存指令預(yù)處理單元的特殊訪存指令的段選擇子是否合法,在段選擇子合法時(shí)訪問(wèn)內(nèi)存,并檢查訪存返回結(jié)果的段描述符類(lèi)型和段特權(quán)級(jí)是否合法,在段描述符類(lèi)型和段特權(quán)級(jí)合法時(shí)更新影子寄存器中段描述符的段屬性,將更新了段屬性的段描述符保存回內(nèi)存;普通訪存指令權(quán)限檢查單元,用于檢查接收自訪存指令預(yù)處理單元的普通訪存指令的地址是否越界,確定沒(méi)有越界后訪問(wèn)影子寄存器獲取段起始地址。
4.根據(jù)權(quán)利要求3所述的訪存操作權(quán)限檢查裝置,其特征在于,所述特殊訪存指令權(quán)限檢查單元包括段選擇子權(quán)限檢查單元,用于檢查接收自訪存指令預(yù)處理單元的特殊訪存指令的段選擇子是否合法,根據(jù)合法的段選擇子在內(nèi)存中讀取段描述符,并將讀取的段描述符發(fā)送給段描述符權(quán)限檢查單元;段描述符權(quán)限檢查單元,用于檢查接收自段選擇子權(quán)限檢查單元段描述符的段描述符類(lèi)型和段特權(quán)級(jí)是否合法,將合法的段描述符發(fā)送給更新單元;更新單元,用于將接收自段描述符權(quán)限檢查單元的段描述符保存到影子寄存器,并更新段描述符的段屬性,將更新了段屬性的段描述符保存回內(nèi)存。
5.根據(jù)權(quán)利要求4所述的訪存操作權(quán)限檢查裝置,其特征在于,該裝置進(jìn)一步包括影子寄存器,用于保存段起始地址、段的界限和段屬性信息,直接與更新單元連接。
6.根據(jù)權(quán)利要求5所述的訪存操作權(quán)限檢查裝置,其特征在于,所述影子寄存器位于訪存操作權(quán)限檢查裝置的內(nèi)部或外部。
7.一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的方法,應(yīng)用于包括訪存指令發(fā)射裝置、訪存操作權(quán)限檢查裝置、訪存指令執(zhí)行裝置和例外處理裝置的訪存操作權(quán)限檢查系統(tǒng),其特征在于,該方法包括A、訪存操作權(quán)限檢查裝置判斷接收自訪存指令發(fā)射裝置的訪存指令類(lèi)型,如果訪存指令為特殊訪存指令,則執(zhí)行步驟B;否則,執(zhí)行步驟C;B、訪存操作權(quán)限檢查裝置依次檢查特殊訪存指令的段選擇子、段描述符的類(lèi)型和段的特權(quán)級(jí)是否合法,如果都合法,則結(jié)束檢查;如果有任一項(xiàng)不合法,則執(zhí)行步驟D;C、訪存操作權(quán)限檢查裝置檢查訪存指令的地址是否越界,如果沒(méi)有越界,則結(jié)束檢查;否則,執(zhí)行步驟D;D、訪存操作權(quán)限檢查裝置向例外處理裝置發(fā)送例外信號(hào)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟A之前進(jìn)一步包括將訪存指令翻譯成微碼序列,并將翻譯的微碼序列保存在訪存指令發(fā)射裝置中,訪存指令發(fā)射裝置將保存的微碼序列發(fā)射給訪存操作權(quán)限檢查裝置。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述訪存指令為特殊訪存指令,所述將訪存指令翻譯成微碼序列包括拆分特殊訪存指令,將特殊訪存指令翻譯成滿足下述要求的微碼序列至少有一條微碼用來(lái)實(shí)現(xiàn)普通訪存指令的操作,且該微碼還用于在訪存前檢查段選擇子是否合法;至少有一條微碼用來(lái)檢查段描述符類(lèi)型和段特權(quán)級(jí)是否合法;至少有一條微碼用來(lái)實(shí)現(xiàn)裝載影子積存器的操作;至少有一條微碼用來(lái)更新段描述符的段屬性,并將更新了段屬性的段描述符保存回內(nèi)存;所述訪存指令為普通訪存指令,所述將訪存指令翻譯成微碼序列包括將普通訪存指令翻譯成具有查詢段特性的訪存微碼。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述由特殊訪存指令翻譯成的各微碼之間相互獨(dú)立運(yùn)行,且相互不發(fā)生影響。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于,步驟A中所述判斷包括訪存操作權(quán)限檢查裝置判斷接收的微碼序列的條數(shù),如果微碼序列的條數(shù)大于一條,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
12.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟A中所述判斷包括訪存操作權(quán)限檢查裝置判斷接收的訪存指令是否涉及段切換或任務(wù)切換,如果涉及,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
13.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟B包括B1、訪存操作權(quán)限檢查裝置檢查特殊訪存指令的段選擇子是否合法,如果合法,則根據(jù)合法的段選擇子在內(nèi)存中讀取段描述符,并執(zhí)行步驟B2;否則,執(zhí)行步驟D;B2、訪存操作權(quán)限檢查裝置檢查讀取的段描述符的類(lèi)型是否合法,如果合法,則執(zhí)行步驟B3;否則,執(zhí)行步驟D;B3、訪存操作權(quán)限檢查裝置檢查段的特權(quán)級(jí)是否合法,如果合法,則結(jié)束檢查;否則,執(zhí)行步驟D。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述特殊訪存指令訪問(wèn)堆棧段,步驟B1中所述檢查特殊訪存指令的段選擇子是否合法包括檢查堆棧段的段選擇子是否為非零,如果是,則堆棧段的段選擇子合法;否則,堆棧段的段選擇子不合法。
15.根據(jù)權(quán)利要求13所述的方法,其特征在于,預(yù)先在訪存操作權(quán)限檢查裝置中配置段描述符的類(lèi)型,步驟B2中所述檢查讀取的段描述符的類(lèi)型是否合法包括比較讀取的段描述符的類(lèi)型與預(yù)先配置的段描述符的類(lèi)型是否相同,如果相同,則段描述符的類(lèi)型合法;否則,段描述符的類(lèi)型不合法。
16.根據(jù)權(quán)利要求13所述的方法,其特征在于,步驟B3中所述檢查段的特權(quán)級(jí)是否合法包括判斷請(qǐng)求訪問(wèn)的段的特權(quán)級(jí)是否高于或等于被訪問(wèn)的段的特權(quán)級(jí),如果是,則段的特權(quán)級(jí)合法;否則,段的特權(quán)級(jí)不合法。
17.根據(jù)權(quán)利要求7或13所述的方法,其特征在于,步驟B中所述結(jié)束檢查之后進(jìn)一步包括訪存操作權(quán)限檢查裝置將合法的段描述符保存到影子寄存器,并將段描述符提供的段起始地址加上邏輯地址中的段內(nèi)偏移得到線性地址。
18.根據(jù)權(quán)利要求17所述的方法,其特征在于,所述將段描述符保存到影子寄存器包括將段的起始地址、段的界限和段的屬性保存到影子寄存器。
19.根據(jù)權(quán)利要求18所述的方法,其特征在于,所述段為首次訪問(wèn)的段,所述將獲取的段描述符保存到影子寄存器后進(jìn)一步包括設(shè)置段描述符中段屬性的Access位或Busy位,并將更新后的段描述符保存回內(nèi)存。
20.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟C中所述檢查訪存指令的地址是否越界包括訪存操作權(quán)限檢查裝置訪問(wèn)影子寄存器獲取段描述符中段的界限信息,比較訪存指令邏輯地址中的段內(nèi)偏移是否超出段的界限,如果超出,則訪存指令的地址越界;否則,訪存指令的地址不越界。
21.根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟C中所述結(jié)束檢查之后進(jìn)一步包括訪存操作權(quán)限檢查裝置利用查詢段特性的微碼訪問(wèn)影子寄存器獲取段起始地址,將獲取的段起始地址加上邏輯地址中的段內(nèi)偏移得到線性地址。
22.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟D進(jìn)一步包括訪存操作權(quán)限檢查裝置將例外總線信號(hào)置高。
全文摘要
本發(fā)明涉及復(fù)雜指令集計(jì)算機(jī)段保護(hù)機(jī)制技術(shù)領(lǐng)域,公開(kāi)了一種在段保護(hù)機(jī)制下對(duì)訪存操作進(jìn)行權(quán)限檢查的系統(tǒng)、裝置及方法,所述方法包括A.訪存操作權(quán)限檢查裝置判斷接收自訪存指令發(fā)射裝置的訪存指令類(lèi)型,如果訪存指令為特殊訪存指令,則執(zhí)行步驟B;否則,執(zhí)行步驟C;B.訪存操作權(quán)限檢查裝置依次檢查特殊訪存指令的段選擇子、段描述符的類(lèi)型和段的特權(quán)級(jí)是否合法,如果都合法,則結(jié)束檢查;如果有任一項(xiàng)不合法,則執(zhí)行步驟D;C.訪存操作權(quán)限檢查裝置檢查訪存指令的地址是否越界,如果沒(méi)有越界,則結(jié)束檢查;否則,執(zhí)行步驟D;D.訪存操作權(quán)限檢查裝置向例外處理裝置發(fā)送例外信號(hào)。利用本發(fā)明,實(shí)現(xiàn)了對(duì)訪存操作進(jìn)行的權(quán)限檢查。
文檔編號(hào)G06F21/00GK101079083SQ200610011980
公開(kāi)日2007年11月28日 申請(qǐng)日期2006年5月25日 優(yōu)先權(quán)日2006年5月25日
發(fā)明者劉磊, 袁楠, 范東睿 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
北宁市| 尖扎县| 中西区| 从化市| 肇州县| 丹寨县| 偏关县| 西丰县| 广南县| 滨海县| 闵行区| 江北区| 珲春市| 防城港市| 东乌珠穆沁旗| 肃南| 长春市| 鸡泽县| 大田县| 沐川县| 新和县| 尚义县| 东港市| 达日县| 临猗县| 伽师县| 历史| 通州区| 临邑县| 犍为县| 泸水县| 宁化县| 怀安县| 会昌县| 扶沟县| 胶南市| 法库县| 兰州市| 德庆县| 庆云县| 瓮安县|