專利名稱:一種對訪存操作進行權限檢查的系統、裝置及方法
技術領域:
本發明涉及復雜指令集計算機段保護機制技術領域,尤其涉及一種在段保護機制下對訪存操作進行權限檢查的系統、裝置及方法。
背景技術:
基于復雜指令集的計算機(Complex Instruction Set Computer,CISC)是指以微程序為基礎、具有復雜指令系統的計算機,一般可以具有多種訪存處理模式。例如,基于X86的處理器80386就同時具有實地址模式、保護虛地址模式、虛擬8086模式三種訪存處理模式。其中,保護虛地址模式是80386最常用的訪存處理模式,該模式引入了虛擬存儲器的概念,虛擬存儲器容量高達64TB,CPU可訪問的物理存儲器容量為4GB。
在保護虛地址模式下,處理器提供了一種段保護機制。段保護機制將處理器的內存分成一個個獨立的地址空間,這種地址空間就叫做段。段保護機制可以很好的區分同一塊共享內存中的指令代碼、數據代碼和堆棧,使指令代碼、數據代碼和堆棧各自擁有獨立的地址空間,從而保證了多種類型的程序段或者任務可以在同一個處理器上運行而不互相干擾。特別地,當處理器運行在保護虛地址模式下時,段保護機制是一直開啟的,且不能被屏蔽掉。
段保護機制的作用主要體現以下兩個方面首先是對應用程序之間的保護,將每個任務放置在不同的虛地址空間,可以實現任務與任務之間的隔離,進而可以實現應用程序之間的保護;其次是對同一個程序內部的保護,在一個任務內定義用于限制對任務中的段進行訪問的特權級別,按照包含在段中數據的重要性和代碼的可信任程度,為段指定或分配特權級別,使具有最高特權級別的數據由最可信任的代碼訪問,具有最低特權級別的數據可被具有任何特權級別的代碼訪問,進而實現同一個程序內部的保護。
在段保護機制下,將邏輯地址轉化為線性地址的過程如圖1所示,圖1為邏輯地址到線性地址轉化的示意圖。以下對圖1中各部分簡要描述如下邏輯地址101是虛擬存儲器的地址,又稱虛地址,是機器語言可以識別的相對地址,并不是最終真正訪存時的物理地址。一個邏輯地址包括段選擇子和段內偏移。段選擇子又稱段基地址,是段的唯一標識符。
段描述表102是由段描述符集合在一起構成的表。每一個段都有自己唯一的段描述符,段描述符描述了段的起始地址、段的界限和段的屬性。其中,段的起始地址指示了段在線性地址空間中的起始地址,段的界限規定了段的大小,段的屬性描述了段的主要屬性。段描述符集合在一起,就構成了段描述表。段描述表一般有兩種,一種是全局描述表,一種是局部描述表,段描述表存放在內存中。
線性地址103是邏輯地址經過段保護機制轉化后得到的地址。如果處理器進一步啟用了頁機制,則將經過段保護機制轉化后得到的線性地址再經過一次頁機制的地址轉化,就能得到物理地址;如果處理器沒有啟用頁機制,則經過段保護機制轉化后得到的地址就是物理地址。
基于圖1所示的示意圖,在處理器將邏輯地址轉化為線性地址時,處理器從邏輯地址中區分出段選擇子和段內偏移,根據段選擇子在內存中查找段描述符,將獲取的段描述符中的段起始地址加上邏輯地址中的段內偏移就可以得到線性地址。
為了加快段保護機制下將邏輯地址轉化為線性地址的速度,處理器一般都會在自身增加一種用于保存描述符中段的起始地址、段的界限和段的屬性的影子寄存器。如圖2所示,圖2為影子寄存器中保存信息的示意圖。當發生段切換或者任務切換時,第1次邏輯地址轉化完成后,處理器將段的起始地址、段的界限和段的屬性保存到影子寄存器,以后在對同一個段的邏輯地址進行轉換時,處理器將直接查找影子寄存器,而不必再次訪問內存,節省了訪存的時間,大大加快了將邏輯地址轉化為線性地址的速度。
在段保護機制下對訪存操作進行的權限檢查與上述地址轉換過程同時進行,對訪存操作進行權限檢查的內容主要包括地址越界檢查、段類型檢查和特權級檢查。在對訪存操作進行權限檢查時,對特殊訪存指令與普通訪存指令的權限檢查有所不同,對特殊訪存指令的權限檢查,需要依次檢查訪存指令的段選擇子、段描述符的類型和段的特權級是否合法;對普通訪存指令的權限檢查,僅需要檢查訪存指令的地址是否越界。這里,特殊訪存指令是指涉及段切換和任務切換訪存指令,普通訪存指令是指不涉及段切換和任務切換訪存指令。
在將邏輯地址轉化為線性地址的過程中,只有對訪存操作的權限檢查通過,訪存操作才能順利進行,處理器才能在內存中查找需要的信息,所以在段保護機制下對訪存操作的權限檢查是非常重要的。
但是,目前還不存在一種在段保護機制下明確用于對訪存操作進行權限檢查的技術,無法實現在段保護機制下對訪存操作的權限檢查。
發明內容
(一)要解決的技術問題針對上述現有技術存在的不足,本發明的一個主要目的在于提供一種在段保護機制下對訪存操作進行權限檢查的系統,以實現在段保護機制下對訪存操作的權限檢查。
本發明的另一個主要目的在于提供一種在段保護機制下對訪存操作進行權限檢查的裝置,以實現在段保護機制下對訪存操作的權限檢查。
本發明的再一個主要目的在于提供一種在段保護機制下對訪存操作進行權限檢查的方法,以實現在段保護機制下對訪存操作的權限檢查。
(二)技術方案為達到上述目的,本發明的技術方案是這樣實現的一種在段保護機制下對訪存操作進行權限檢查的系統,該系統包括訪存指令發射裝置,用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數據,并將保存的訪存指令微碼序列發射給訪存操作權限檢查裝置;訪存操作權限檢查裝置,用于對訪存操作進行權限檢查,在權限檢查通過后將邏輯地址轉換成線性地址發送給訪存指令執行裝置,在權限檢查未通過時將例外信號發送給例外處理裝置;
訪存指令執行裝置,用于根據接收自訪存操作權限檢查裝置的線性地址訪問內存,并將獲取的數據返回給訪存指令發射裝置;例外處理裝置,用于接收訪存操作權限檢查裝置發送的例外信號,執行例外處理程序。
所述訪存指令發射裝置包括訪存指令發射隊列,用于將保存的訪存指令微碼序列發射給訪存操作權限檢查裝置;寄存器堆,用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數據。
一種在段保護機制下對訪存操作進行權限檢查的裝置,該裝置包括訪存指令預處理單元,用于區分接收自訪存指令發射裝置的訪存指令的類型,將特殊訪存指令發送給特殊訪存指令權限檢查單元,將普通訪存指令發送給普通訪存指令權限檢查單元;特殊訪存指令權限檢查單元,用于檢查接收自訪存指令預處理單元的特殊訪存指令的段選擇子是否合法,在段選擇子合法時訪問內存,并檢查訪存返回結果的段描述符類型和段特權級是否合法,在段描述符類型和段特權級合法時更新影子寄存器中段描述符的段屬性,將更新了段屬性的段描述符保存回內存;普通訪存指令權限檢查單元,用于檢查接收自訪存指令預處理單元的普通訪存指令的地址是否越界,確定沒有越界后訪問影子寄存器獲取段起始地址。
所述特殊訪存指令權限檢查單元包括段選擇子權限檢查單元,用于檢查接收自訪存指令預處理單元的特殊訪存指令的段選擇子是否合法,根據合法的段選擇子在內存中讀取段描述符,并將讀取的段描述符發送給段描述符權限檢查單元;段描述符權限檢查單元,用于檢查接收自段選擇子權限檢查單元段描述符的段描述符類型和段特權級是否合法,將合法的段描述符發送給更新單元;更新單元,用于將接收自段描述符權限檢查單元的段描述符保存到影子寄存器,并更新段描述符的段屬性,將更新了段屬性的段描述符保存回內存。
該裝置進一步包括影子寄存器,用于保存段起始地址、段的界限和段屬性信息,直接與更新單元連接。所述影子寄存器位于訪存操作權限檢查裝置的內部或外部。
一種在段保護機制下對訪存操作進行權限檢查的方法,應用于包括訪存指令發射裝置、訪存操作權限檢查裝置、訪存指令執行裝置和例外處理裝置的訪存操作權限檢查系統,該方法包括A、訪存操作權限檢查裝置判斷接收自訪存指令發射裝置的訪存指令類型,如果訪存指令為特殊訪存指令,則執行步驟B;否則,執行步驟C;B、訪存操作權限檢查裝置依次檢查特殊訪存指令的段選擇子、段描述符的類型和段的特權級是否合法,如果都合法,則結束檢查;如果有任一項不合法,則執行步驟D;C、訪存操作權限檢查裝置檢查訪存指令的地址是否越界,如果沒有越界,則結束檢查;否則,執行步驟D;D、訪存操作權限檢查裝置向例外處理裝置發送例外信號。
步驟A之前進一步包括將訪存指令翻譯成微碼序列,并將翻譯的微碼序列保存在訪存指令發射裝置中,訪存指令發射裝置將保存的微碼序列發射給訪存操作權限檢查裝置。
所述訪存指令為特殊訪存指令,所述將訪存指令翻譯成微碼序列包括拆分特殊訪存指令,將特殊訪存指令翻譯成滿足下述要求的微碼序列至少有一條微碼用來實現普通訪存指令的操作,且該微碼還用于在訪存前檢查段選擇子是否合法;至少有一條微碼用來檢查段描述符類型和段特權級是否合法;至少有一條微碼用來實現裝載影子積存器的操作;至少有一條微碼用來更新段描述符的段屬性,并將更新了段屬性的段描述符保存回內存;所述訪存指令為普通訪存指令,所述將訪存指令翻譯成微碼序列包括將普通訪存指令翻譯成具有查詢段特性的訪存微碼。所述由特殊訪存指令翻譯成的各微碼之間相互獨立運行,且相互不發生影響。
步驟A中所述判斷包括訪存操作權限檢查裝置判斷接收的微碼序列的條數,如果微碼序列的條數大于一條,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
步驟A中所述判斷包括訪存操作權限檢查裝置判斷接收的訪存指令是否涉及段切換或任務切換,如果涉及,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
所述步驟B包括B1、訪存操作權限檢查裝置檢查特殊訪存指令的段選擇子是否合法,如果合法,則根據合法的段選擇子在內存中讀取段描述符,并執行步驟B2;否則,執行步驟D;B2、訪存操作權限檢查裝置檢查讀取的段描述符的類型是否合法,如果合法,則執行步驟B3;否則,執行步驟D;B3、訪存操作權限檢查裝置檢查段的特權級是否合法,如果合法,則結束檢查;否則,執行步驟D。
所述特殊訪存指令訪問堆棧段,步驟B1中所述檢查特殊訪存指令的段選擇子是否合法包括檢查堆棧段的段選擇子是否為非零,如果是,則堆棧段的段選擇子合法;否則,堆棧段的段選擇子不合法。
預先在訪存操作權限檢查裝置中配置段描述符的類型,步驟B2中所述檢查讀取的段描述符的類型是否合法包括比較讀取的段描述符的類型與預先配置的段描述符的類型是否相同,如果相同,則段描述符的類型合法;否則,段描述符的類型不合法。
步驟B3中所述檢查段的特權級是否合法包括判斷請求訪問的段的特權級是否高于或等于被訪問的段的特權級,如果是,則段的特權級合法;否則,段的特權級不合法。
步驟B3中所述結束檢查之后進一步包括訪存操作權限檢查裝置將合法的段描述符保存到影子寄存器,并將段描述符提供的段起始地址加上邏輯地址中的段內偏移得到線性地址。所述將段描述符保存到影子寄存器包括將段的起始地址、段的界限和段的屬性保存到影子寄存器。
所述段為首次訪問的段,所述將獲取的段描述符保存到影子寄存器后進一步包括設置段描述符中段屬性的Access位或Busy位,并將更新后的段描述符保存回內存。
步驟C中所述檢查訪存指令的地址是否越界包括訪存操作權限檢查裝置訪問影子寄存器獲取段描述符中段的界限信息,比較訪存指令邏輯地址中的段內偏移是否超出段的界限,如果超出,則訪存指令的地址越界;否則,訪存指令的地址不越界。
步驟C中所述結束檢查之后進一步包括訪存操作權限檢查裝置利用查詢段特性的微碼訪問影子寄存器獲取段起始地址,將獲取的段起始地址加上邏輯地址中的段內偏移得到線性地址。
所述步驟D進一步包括訪存操作權限檢查裝置將例外總線信號置高。
(三)有益效果從上述技術方案可以看出,本發明具有以下有益效果1、利用本發明,通過將訪存指令翻譯成微碼序列,并區分訪存指令的類型,分別對特殊訪存指令的段選擇子、段描述符的類型、段的特權級是否合法以及普通訪存指令的地址是否越界進行檢查,實現了對訪存操作進行的權限檢查。
2、由于在確定特殊訪存指令的段選擇子、段描述符的類型、段的特權級合法后,將合法的段描述符包含的段起始地址,段的界限和段的屬性保存到影子寄存器中,在處理器再次訪問同一個段時,處理器不需要去內存中查找段描述符,查詢影子寄存器就可以得到段的全部特性。因此,利用本發明有效地減少了訪存的延遲,大大提高了處理器的運行速度。
3、由于本發明提供的對訪存操作進行權限檢查的系統和裝置結構簡單,有效降低了硬件設計的復雜度,且能夠實現對訪存操作進行的所有權限檢查,所以本發明的實現成本低,非常有利于本發明的推廣和應用。
圖1為邏輯地址到線性地址轉化的示意圖;圖2為影子寄存器中保存信息的示意圖;圖3為依照本發明將特殊訪存指令翻譯為微碼序列的示意圖;圖4為本發明提供的訪存操作權限檢查系統的示意圖;圖5為本發明提供的訪存操作權限檢查裝置的結構框圖;圖6為本發明對訪存操作進行權限檢查總體技術方案的實現流程圖;圖7為依照本發明實施例對訪存操作進行權限檢查的方法流程圖。
具體實施例方式
為使本發明的目的、技術方案和優點更加清楚明白,以下結合具體實施例,并參照附圖,對本發明進一步詳細說明。
本發明的核心內容是通過將訪存指令翻譯成微碼序列,并區分訪存指令的類型,分別對特殊訪存指令的段選擇子、段描述符的類型、段的特權級是否合法以及普通訪存指令的地址是否越界進行檢查,實現了對訪存操作進行的權限檢查。
上述在將訪存指令翻譯成微碼序列時,因為普通訪存指令段描述符包含的段起始地址,段的界限和段的屬性保存在影子寄存器中,處理器不需要去內存中查找段描述符,查詢影子寄存器就可以得到段的全部特性,從而進行地址轉換和地址是否越界的權限檢查,所以處理器將普通訪存指令翻譯成具有查詢段特性的訪存微碼就能夠實現對訪存操作進行權限檢查的功能。另外,由于段起始地址,段的界限和段的屬性保存在影子寄存器中,處理器不需要去內存中查找段描述符,查詢影子寄存器就可以得到段的全部特性,所以大大提高了普通訪存指令的執行速度。
對于特殊訪存指令,處理器先拆分特殊訪存指令,然后將特殊訪存指令翻譯成滿足下述要求的微碼序列至少有一條微碼用來實現普通訪存指令的操作,且該微碼還用于在訪存前檢查段選擇子是否合法;至少有一條微碼用來檢查段描述符類型和段特權級是否合法;至少有一條微碼用來實現裝載影子積存器的操作;至少有一條微碼用來更新段描述符的段屬性,并將更新了段屬性的段描述符保存回內存。這些由特殊訪存指令翻譯成的各微碼之間可以相互獨立運行,且相互不發生影響。
在對訪存操作進行權限檢查時,處理器先用權限檢查微碼判斷訪存操作是否滿足所有權限要求,如果滿足,則使用訪存微碼訪問內存,如果不滿足任何一個權限要求,則處理器為該訪存操作報例外,等待例外處理裝置處理。本發明具體將特殊訪存指令翻譯為微碼序列的示意圖可參見圖3。
如圖3所示,圖3為依照本發明將特殊訪存指令翻譯為微碼序列的示意圖。訪存指令LDS為涉及段切換和任務切換特殊訪存指令,本發明將特殊訪存指令LDS翻譯為由LOAD segment、MATCH segment、MOVEsegment和STORE segment四條微碼構成的微碼序列。
其中,LOAD segment微碼用于檢查段選擇子是否合法,如果段選擇子合法,則處理器進行訪存,在內存中根據合法的段選擇子讀取段描述符。MATCH segment微碼用于檢查讀取的段描述符是否合法,主要檢查段的類型是否匹配和段的屬性是否合法,如果段的屬性不合法,處理器將修改段的屬性。MOVE segment微碼用于將合法的段描述符裝載進影子寄存器。STORE segment微碼用于將修改過的段的屬性保存回內存,其中,被修改的是段屬性中涉及任務切換堆棧(TSS)段的Busy位,或者涉及非TSS段的Access位。
上述在區分訪存指令的類型時,可以根據訪存指令被翻譯的微碼序列的條數來進行,如果微碼序列的條數大于一條,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。另外,還可以根據訪存指令是否涉及段切換或任務切換來進行,如果涉及,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
上述對訪存操作進行權限檢查,主要涉及本發明提供的對訪存操作進行權限檢查的系統、裝置和方法,以下結合具體實施例,并參照附圖對訪存操作權限檢查系統、裝置和方法分別進行詳細介紹。
如圖4所示,圖4為本發明提供的訪存操作權限檢查系統的示意圖,該系統包括訪存指令發射裝置401、訪存操作權限檢查裝置402、訪存指令執行裝置403和例外處理裝置404。
其中,訪存指令發射裝置401用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數據,并將保存的訪存指令微碼序列發射給訪存操作權限檢查裝置402。訪存指令發射裝置401一般由訪存指令發射隊列和寄存器堆構成,訪存指令發射隊列用于將保存的訪存指令微碼序列發射給訪存操作權限檢查裝置;寄存器堆用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數據。
訪存操作權限檢查裝置402用于對訪存操作進行權限檢查,在權限檢查通過后將邏輯地址轉換成線性地址發送給訪存指令執行裝置403,在權限檢查未通過時將例外信號發送給例外處理裝置404。
訪存指令執行裝置403用于根據接收自訪存操作權限檢查裝置402的線性地址訪問內存,并將獲取的數據返回給訪存指令發射裝置401的寄存器堆。
例外處理裝置404用于接收訪存操作權限檢查裝置402發送的例外信號,執行例外處理程序。
基于圖4所述的訪存操作權限檢查系統,圖5示出了訪存操作權限檢查裝置的結構框圖。訪存操作權限檢查裝置包括訪存指令預處理單元501、特殊訪存指令權限檢查單元502、普通訪存指令權限檢查單元503和影子寄存器504。
其中,訪存指令預處理單元501用于區分接收自訪存指令發射裝置401的訪存指令的類型,將特殊訪存指令發送給特殊訪存指令權限檢查單元502,將普通訪存指令發送給普通訪存指令權限檢查單元503。
特殊訪存指令權限檢查單元502用于檢查接收自訪存指令預處理單元501的特殊訪存指令的段選擇子是否合法,在段選擇子合法時訪問內存,并檢查訪存返回結果的段描述符類型和段特權級是否合法,在段描述符類型和段特權級合法時更新影子寄存器504中段描述符的段屬性,將更新了段屬性的段描述符保存回內存;在上述檢查過程中,如果有任一項不合法,則特殊訪存指令權限檢查單元502向例外處理裝置404發送例外信號,例外處理裝置404執行例外處理程序。
特殊訪存指令權限檢查單元502進一步包括段選擇子權限檢查單元、段描述符權限檢查單元和更新單元。其中,段選擇子權限檢查單元用于檢查接收自訪存指令預處理單元的特殊訪存指令的段選擇子是否合法,根據合法的段選擇子在內存中讀取段描述符,并將讀取的段描述符發送給段描述符權限檢查單元。段描述符權限檢查單元用于檢查接收自段選擇子權限檢查單元段描述符的段描述符類型和段特權級是否合法,將合法的段描述符發送給更新單元。更新單元用于將接收自段描述符權限檢查單元的段描述符保存到影子寄存器,并更新段描述符的段屬性,將更新了段屬性的段描述符保存回內存。
普通訪存指令權限檢查單元503用于檢查接收自訪存指令預處理單元501的普通訪存指令的地址是否越界,確定沒有越界后訪問影子寄存器504獲取段起始地址;如果普通訪存指令的地址越界,則向例外處理裝置404發送例外信號,例外處理裝置404執行例外處理程序。
影子寄存器504用于保存段起始地址、段的界限和段屬性信息,直接與特殊訪存指令權限檢查單元502中的更新單元連接。影子寄存器504可以位于訪存操作權限檢查裝置402的內部或外部。在影子寄存器504位于訪存操作權限檢查裝置402的內部時,影子寄存器可以作為訪存操作權限檢查裝置402的一個組成部分;在影子寄存器504位于訪存操作權限檢查裝置402的外部時,影子寄存器504可以作為一個獨立的部件。
基于圖4所述的訪存操作權限檢查系統和圖5所述的訪存操作權限檢查裝置,圖6示出了本發明對訪存操作進行權限檢查總體技術方案的實現流程圖,該方法包括以下步驟步驟601訪存操作權限檢查裝置判斷接收自訪存指令發射裝置的訪存指令類型,如果訪存指令為特殊訪存指令,則執行步驟602;否則,執行步驟603;步驟602訪存操作權限檢查裝置依次檢查特殊訪存指令的段選擇子、段描述符的類型和段的特權級是否合法,如果都合法,則結束檢查;如果有任一項不合法,則執行步驟604;步驟603訪存操作權限檢查裝置檢查訪存指令的地址是否越界,如果沒有越界,則結束檢查;否則,執行步驟604;步驟604訪存操作權限檢查裝置向例外處理裝置發送例外信號。
上述步驟601之前可以進一步包括將訪存指令翻譯成微碼序列,并將翻譯的微碼序列保存在訪存指令發射裝置中,訪存指令發射裝置將保存的微碼序列發射給訪存操作權限檢查裝置。
如果訪存指令為特殊訪存指令,則將訪存指令翻譯成微碼序列包括拆分特殊訪存指令,將特殊訪存指令翻譯成滿足下述要求的微碼序列至少有一條微碼用來實現普通訪存指令的操作,且該微碼還用于在訪存前檢查段選擇子是否合法;至少有一條微碼用來檢查段描述符類型和段特權級是否合法;至少有一條微碼用來實現裝載影子積存器的操作;至少有一條微碼用來更新段描述符的段屬性,并將更新了段屬性的段描述符保存回內存。由特殊訪存指令翻譯成的各微碼之間相互獨立運行,且相互不發生影響。
如果訪存指令為普通訪存指令,則將訪存指令翻譯成微碼序列包括將普通訪存指令翻譯成具有查詢段特性的訪存微碼。
上述步驟601訪存操作權限檢查裝置判斷接收自訪存指令發射裝置的訪存指令類型可以采用以下兩種方式方式一、訪存操作權限檢查裝置判斷接收的微碼序列的條數,如果微碼序列的條數大于一條,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令;方式二、訪存操作權限檢查裝置判斷接收的訪存指令是否涉及段切換或任務切換,如果涉及,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
上述步驟602訪存操作權限檢查裝置依次檢查特殊訪存指令的段選擇子、段描述符的類型和段的特權級是否合法包括步驟6021訪存操作權限檢查裝置檢查特殊訪存指令的段選擇子是否合法,如果合法,則根據合法的段選擇子在內存中讀取段描述符,并執行步驟6022;否則,執行步驟604;在本步驟中,當特殊訪存指令訪問堆棧段時,訪存操作權限檢查裝置檢查堆棧段的段選擇子是否為非零,如果是,則堆棧段的段選擇子合法;否則,堆棧段的段選擇子不合法。
步驟6022訪存操作權限檢查裝置檢查讀取的段描述符的類型是否合法,如果合法,則執行步驟6023;否則,執行步驟604;在本步驟中,預先在訪存操作權限檢查裝置中配置段描述符的類型,訪存操作權限檢查裝置比較讀取的段描述符的類型與預先配置的段描述符的類型是否相同,如果相同,則段描述符的類型合法;否則,段描述符的類型不合法。
步驟6023訪存操作權限檢查裝置檢查段的特權級是否合法,如果合法,則結束檢查;否則,執行步驟604;在本步驟中,訪存操作權限檢查裝置判斷請求訪問的段的特權級是否高于或等于被訪問的段的特權級,如果是,則段的特權級合法;否則,段的特權級不合法。
上述步驟603訪存操作權限檢查裝置檢查訪存指令的地址是否越界包括訪存操作權限檢查裝置訪問影子寄存器獲取段描述符中段的界限信息,比較訪存指令邏輯地址中的段內偏移是否超出段的界限,如果超出,則訪存指令的地址越界;否則,訪存指令的地址不越界。
上述步驟604訪存操作權限檢查裝置向例外處理裝置發送例外信號時進一步包括訪存操作權限檢查裝置將例外總線信號置高。
基于圖6所述的本發明對訪存操作進行權限檢查總體技術方案,圖7示出了依照本發明實施例對訪存操作進行權限檢查的方法流程圖。在本實施例中,影子寄存器位于訪存操作權限檢查裝置的內部,該方法包括以下步驟步驟701訪存指令預處理單元接收到訪存指令發射裝置發射的訪存指令,判斷接收的微碼序列的條數,如果微碼序列的條數大于一條,則訪存指令為特殊訪存指令,執行步驟702;否則,訪存指令為普通訪存指令,執行步驟707。
步驟702訪存指令預處理單元將特殊訪存指令發送給特殊訪存指令權限檢查單元中的段選擇子權限檢查單元,段選擇子權限檢查單元檢查特殊訪存指令的段選擇子是否合法,如果合法,則執行步驟703;否則,段選擇子權限檢查單元向例外處理裝置發送例外信號,執行步驟709;在本步驟中,當特殊訪存指令訪問堆棧段時,訪存操作權限檢查裝置檢查堆棧段的段選擇子是否為非零,如果是,則堆棧段的段選擇子合法;否則,堆棧段的段選擇子不合法。
步驟703段選擇子權限檢查單元根據合法的段選擇子在內存中讀取段描述符,并將讀取的段描述符發送給段描述符權限檢查單元。
步驟704段描述符權限檢查單元檢查段描述符的類型是否合法,如果合法,則執行步驟705;否則,段描述符權限檢查單元向例外處理裝置發送例外信號,執行步驟709;在本步驟中,預先在訪存操作權限檢查裝置中配置段描述符的類型,訪存操作權限檢查裝置比較讀取的段描述符的類型與預先配置的段描述符的類型是否相同,如果相同,則段描述符的類型合法;否則,段描述符的類型不合法。
步驟705段描述符權限檢查單元檢查段的特權級是否合法,如果合法,則執行步驟706;否則,段描述符權限檢查單元向例外處理裝置發送例外信號,執行步驟709;在本步驟中,訪存操作權限檢查裝置判斷請求訪問的段的特權級是否高于或等于被訪問的段的特權級,如果是,則段的特權級合法;否則,段的特權級不合法。
步驟706段描述符權限檢查單元將合法的段描述符發送給更新單元,更新單元將接收的段描述符保存到影子寄存器,并更新段描述符的段屬性,將更新了段屬性的段描述符保存回內存,然后將段描述符提供的段起始地址加上邏輯地址中的段內偏移得到線性地址,結束本流程;在更新段描述符的段屬性時,對于首次訪問的段,更新單元設置段描述符中段屬性的Access位或Busy位,并將更新后的段描述符保存回內存。
步驟707訪存指令預處理單元將普通訪存指令發送給普通訪存指令權限檢查單元,普通訪存指令權限檢查單元檢查普通訪存指令的地址是否越界,如果沒有越界,則執行步驟708;否則,普通訪存指令權限檢查單元向例外處理裝置發送例外信號,執行步驟709。
步驟708普通訪存指令權限檢查單元訪問影子寄存器獲取段起始地址,將獲取的段起始地址加上邏輯地址中的段內偏移得到線性地址,結束本流程。
步驟709例外處理裝置接收到例外信號,執行例外處理程序并結束。
在本發明所舉實施例步驟701中,訪存指令預處理單元判斷接收的訪存指令類型是根據接收的微碼序列的條數進行的。在實際應用中,訪存指令預處理單元判斷接收的訪存指令類型還可以根據接收的訪存指令是否涉及段切換或任務切換,如果是,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。這樣的技術方案與本發明實施例中所舉的技術方案在思路上是一致的,應包含在本發明的保護范圍之內。
在本發明所舉實施例步驟702、704、705和707中,在向例外處理裝置發送例外信號后,直接執行步驟709。在實際應用中,在向例外處理裝置發送例外信號時,還可以進一步將例外總線信號置高。這樣的技術方案與本發明實施例中所舉的技術方案在思路上是一致的,應包含在本發明的保護范圍之內。
在本發明所舉的這個實施例中,影子寄存器位于訪存操作權限檢查裝置的內部。在實際應用中,影子寄存器也可以位于訪存操作權限檢查裝置的外部。這樣的技術方案與本發明實施例中所舉的技術方案在思路上是一致的,應包含在本發明的保護范圍之內。
以上所述的具體實施例,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施例而已,并不用于限制本發明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種在段保護機制下對訪存操作進行權限檢查的系統,其特征在于,該系統包括訪存指令發射裝置,用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數據,并將保存的訪存指令微碼序列發射給訪存操作權限檢查裝置;訪存操作權限檢查裝置,用于對訪存操作進行權限檢查,在權限檢查通過后將邏輯地址轉換成線性地址發送給訪存指令執行裝置,在權限檢查未通過時將例外信號發送給例外處理裝置;訪存指令執行裝置,用于根據接收自訪存操作權限檢查裝置的線性地址訪問內存,并將獲取的數據返回給訪存指令發射裝置;例外處理裝置,用于接收訪存操作權限檢查裝置發送的例外信號,執行例外處理程序。
2.根據權利要求1所述的訪存操作權限檢查系統,其特征在于,所述訪存指令發射裝置包括訪存指令發射隊列,用于將保存的訪存指令微碼序列發射給訪存操作權限檢查裝置;寄存器堆,用于保存訪存指令譯成的微碼序列和訪存操作完成后獲取的數據。
3.一種在段保護機制下對訪存操作進行權限檢查的裝置,其特征在于,該裝置包括訪存指令預處理單元,用于區分接收自訪存指令發射裝置的訪存指令的類型,將特殊訪存指令發送給特殊訪存指令權限檢查單元,將普通訪存指令發送給普通訪存指令權限檢查單元;特殊訪存指令權限檢查單元,用于檢查接收自訪存指令預處理單元的特殊訪存指令的段選擇子是否合法,在段選擇子合法時訪問內存,并檢查訪存返回結果的段描述符類型和段特權級是否合法,在段描述符類型和段特權級合法時更新影子寄存器中段描述符的段屬性,將更新了段屬性的段描述符保存回內存;普通訪存指令權限檢查單元,用于檢查接收自訪存指令預處理單元的普通訪存指令的地址是否越界,確定沒有越界后訪問影子寄存器獲取段起始地址。
4.根據權利要求3所述的訪存操作權限檢查裝置,其特征在于,所述特殊訪存指令權限檢查單元包括段選擇子權限檢查單元,用于檢查接收自訪存指令預處理單元的特殊訪存指令的段選擇子是否合法,根據合法的段選擇子在內存中讀取段描述符,并將讀取的段描述符發送給段描述符權限檢查單元;段描述符權限檢查單元,用于檢查接收自段選擇子權限檢查單元段描述符的段描述符類型和段特權級是否合法,將合法的段描述符發送給更新單元;更新單元,用于將接收自段描述符權限檢查單元的段描述符保存到影子寄存器,并更新段描述符的段屬性,將更新了段屬性的段描述符保存回內存。
5.根據權利要求4所述的訪存操作權限檢查裝置,其特征在于,該裝置進一步包括影子寄存器,用于保存段起始地址、段的界限和段屬性信息,直接與更新單元連接。
6.根據權利要求5所述的訪存操作權限檢查裝置,其特征在于,所述影子寄存器位于訪存操作權限檢查裝置的內部或外部。
7.一種在段保護機制下對訪存操作進行權限檢查的方法,應用于包括訪存指令發射裝置、訪存操作權限檢查裝置、訪存指令執行裝置和例外處理裝置的訪存操作權限檢查系統,其特征在于,該方法包括A、訪存操作權限檢查裝置判斷接收自訪存指令發射裝置的訪存指令類型,如果訪存指令為特殊訪存指令,則執行步驟B;否則,執行步驟C;B、訪存操作權限檢查裝置依次檢查特殊訪存指令的段選擇子、段描述符的類型和段的特權級是否合法,如果都合法,則結束檢查;如果有任一項不合法,則執行步驟D;C、訪存操作權限檢查裝置檢查訪存指令的地址是否越界,如果沒有越界,則結束檢查;否則,執行步驟D;D、訪存操作權限檢查裝置向例外處理裝置發送例外信號。
8.根據權利要求7所述的方法,其特征在于,步驟A之前進一步包括將訪存指令翻譯成微碼序列,并將翻譯的微碼序列保存在訪存指令發射裝置中,訪存指令發射裝置將保存的微碼序列發射給訪存操作權限檢查裝置。
9.根據權利要求8所述的方法,其特征在于,所述訪存指令為特殊訪存指令,所述將訪存指令翻譯成微碼序列包括拆分特殊訪存指令,將特殊訪存指令翻譯成滿足下述要求的微碼序列至少有一條微碼用來實現普通訪存指令的操作,且該微碼還用于在訪存前檢查段選擇子是否合法;至少有一條微碼用來檢查段描述符類型和段特權級是否合法;至少有一條微碼用來實現裝載影子積存器的操作;至少有一條微碼用來更新段描述符的段屬性,并將更新了段屬性的段描述符保存回內存;所述訪存指令為普通訪存指令,所述將訪存指令翻譯成微碼序列包括將普通訪存指令翻譯成具有查詢段特性的訪存微碼。
10.根據權利要求9所述的方法,其特征在于,所述由特殊訪存指令翻譯成的各微碼之間相互獨立運行,且相互不發生影響。
11.根據權利要求9所述的方法,其特征在于,步驟A中所述判斷包括訪存操作權限檢查裝置判斷接收的微碼序列的條數,如果微碼序列的條數大于一條,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
12.根據權利要求7所述的方法,其特征在于,步驟A中所述判斷包括訪存操作權限檢查裝置判斷接收的訪存指令是否涉及段切換或任務切換,如果涉及,則訪存指令為特殊訪存指令;否則,訪存指令為普通訪存指令。
13.根據權利要求7所述的方法,其特征在于,所述步驟B包括B1、訪存操作權限檢查裝置檢查特殊訪存指令的段選擇子是否合法,如果合法,則根據合法的段選擇子在內存中讀取段描述符,并執行步驟B2;否則,執行步驟D;B2、訪存操作權限檢查裝置檢查讀取的段描述符的類型是否合法,如果合法,則執行步驟B3;否則,執行步驟D;B3、訪存操作權限檢查裝置檢查段的特權級是否合法,如果合法,則結束檢查;否則,執行步驟D。
14.根據權利要求13所述的方法,其特征在于,所述特殊訪存指令訪問堆棧段,步驟B1中所述檢查特殊訪存指令的段選擇子是否合法包括檢查堆棧段的段選擇子是否為非零,如果是,則堆棧段的段選擇子合法;否則,堆棧段的段選擇子不合法。
15.根據權利要求13所述的方法,其特征在于,預先在訪存操作權限檢查裝置中配置段描述符的類型,步驟B2中所述檢查讀取的段描述符的類型是否合法包括比較讀取的段描述符的類型與預先配置的段描述符的類型是否相同,如果相同,則段描述符的類型合法;否則,段描述符的類型不合法。
16.根據權利要求13所述的方法,其特征在于,步驟B3中所述檢查段的特權級是否合法包括判斷請求訪問的段的特權級是否高于或等于被訪問的段的特權級,如果是,則段的特權級合法;否則,段的特權級不合法。
17.根據權利要求7或13所述的方法,其特征在于,步驟B中所述結束檢查之后進一步包括訪存操作權限檢查裝置將合法的段描述符保存到影子寄存器,并將段描述符提供的段起始地址加上邏輯地址中的段內偏移得到線性地址。
18.根據權利要求17所述的方法,其特征在于,所述將段描述符保存到影子寄存器包括將段的起始地址、段的界限和段的屬性保存到影子寄存器。
19.根據權利要求18所述的方法,其特征在于,所述段為首次訪問的段,所述將獲取的段描述符保存到影子寄存器后進一步包括設置段描述符中段屬性的Access位或Busy位,并將更新后的段描述符保存回內存。
20.根據權利要求7所述的方法,其特征在于,步驟C中所述檢查訪存指令的地址是否越界包括訪存操作權限檢查裝置訪問影子寄存器獲取段描述符中段的界限信息,比較訪存指令邏輯地址中的段內偏移是否超出段的界限,如果超出,則訪存指令的地址越界;否則,訪存指令的地址不越界。
21.根據權利要求7所述的方法,其特征在于,步驟C中所述結束檢查之后進一步包括訪存操作權限檢查裝置利用查詢段特性的微碼訪問影子寄存器獲取段起始地址,將獲取的段起始地址加上邏輯地址中的段內偏移得到線性地址。
22.根據權利要求7所述的方法,其特征在于,所述步驟D進一步包括訪存操作權限檢查裝置將例外總線信號置高。
全文摘要
本發明涉及復雜指令集計算機段保護機制技術領域,公開了一種在段保護機制下對訪存操作進行權限檢查的系統、裝置及方法,所述方法包括A.訪存操作權限檢查裝置判斷接收自訪存指令發射裝置的訪存指令類型,如果訪存指令為特殊訪存指令,則執行步驟B;否則,執行步驟C;B.訪存操作權限檢查裝置依次檢查特殊訪存指令的段選擇子、段描述符的類型和段的特權級是否合法,如果都合法,則結束檢查;如果有任一項不合法,則執行步驟D;C.訪存操作權限檢查裝置檢查訪存指令的地址是否越界,如果沒有越界,則結束檢查;否則,執行步驟D;D.訪存操作權限檢查裝置向例外處理裝置發送例外信號。利用本發明,實現了對訪存操作進行的權限檢查。
文檔編號G06F21/00GK101079083SQ200610011980
公開日2007年11月28日 申請日期2006年5月25日 優先權日2006年5月25日
發明者劉磊, 袁楠, 范東睿 申請人:中國科學院計算技術研究所