TW202036307A - 分頁表結構 - Google Patents
分頁表結構 Download PDFInfo
- Publication number
- TW202036307A TW202036307A TW109101515A TW109101515A TW202036307A TW 202036307 A TW202036307 A TW 202036307A TW 109101515 A TW109101515 A TW 109101515A TW 109101515 A TW109101515 A TW 109101515A TW 202036307 A TW202036307 A TW 202036307A
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- page table
- table entry
- pte
- paging
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
用於位址轉譯的分頁表結構可包括相對類型的分頁表項,對於該相對類型的分頁表項,可使用相對偏移值(其指示位址指標相對於參考點起址位址的偏移)來指定指向下一級分頁表項或轉譯後位址的位址指標。
Description
本申請案與資料處理領域相關。具體來說,本申請案與用於位址轉譯的分頁表結構相關。
資料處理系統可具有用於執行位址轉譯的記憶體管理單元(MMU)。MMU可將程式代碼指定的虛擬位址轉譯為識別記憶體中存儲位置的物理位址。轉譯可基於在分頁表結構中指定的位址映射資訊。
至少一些示例提供了一種設備,該設備包括:記憶體管理電路,其基於在經存儲在記憶體系統中之分頁表結構中定義的分頁表項來轉譯記憶體位址,該分頁表結構包括複數個級別的分頁表;及分頁表遍歷(walk)電路,其從該分頁表結構中獲取該等分頁表項以供該記憶體管理電路使用,每個分頁表項識別位址指標,該位址指標用於識別以下之一者:經轉譯位址,及在該分頁表結構的下一級別處之子分頁表的一位址;其中當給定的分頁表項是指定相對偏移值的相對類型的分頁表項時,該相對偏移值指示該位址指標相對於為該給定的分頁表項而決定的一參考點基址的一偏移,該分頁表遍歷電路經配置成自該參考點基址及該相對偏移值來決定該位址指標。
至少一些示例提供了一種方法,該方法包括以下步驟:執行分頁表遍歷,以從存儲在記憶體系統中之包括複數個級別的分頁表的分頁表結構中獲取分頁表項,以轉譯記憶體位址,每個分頁表項識別位址指標,該位址指標用於識別以下各項之一者:經轉譯位址及在該分頁表結構的下一級別處之子分頁表的位址;其中:當給定的分頁表項是指定相對偏移值的相對類型的分頁表項時,該相對偏移值指示該位址指標相對於為該給定的分頁表項而決定的參考點基址的偏移,自該參考點基址及該相對偏移值來決定該位址指標。
至少一些示例提供了一種電腦程式,該電腦程式包括:分頁表遍歷程式邏輯,其從包含複數個級別的分頁表的分頁表結構中獲取分頁表項,每個分頁表項識別一位址指標,該位址指標識別以下各項中之一者:經轉譯位址及在該分頁表結構的下一級別處之子分頁表的位址;其中:當給定的分頁表項是指定相對偏移值的相對類型的分頁表項時,該相對偏移值指示該位址指標相對於為該給定的分頁表項而決定的參考點基址的偏移,該分頁表遍歷程式邏輯經配置以自該參考點基址及該相對偏移值來決定該位址指標。
至少一些示例提供了一種設備,該設備包括:記憶體管理電路,其基於存儲在記憶體系統中之分頁表結構中定義的分頁表項來轉譯記憶體位址,該分頁表結構包括複數個級別的分頁表;及分頁表遍歷電路,其從該分頁表結構中獲取該等分頁表項以供該記憶體管理電路使用,每個分頁表項識別位址指標,該位址指標用於識別以下各項中之一者:經轉譯位址及在該分頁表結構的下一級別處之子分頁表的位址;其中:當給定的分頁表項指定後代項限制指示符時,該分頁表遍歷電路經配置成當該給定分頁表項的後代分頁表項識別到位於由該給定的分頁表項所識別的邊界位址區域之外的位址指標時,發出信號通知有一錯誤。
至少一些示例提供了一種方法,該方法包括以下步驟:為轉譯記憶體位址執行分頁表遍歷,以從存儲在記憶體系統中的分頁表結構中獲取分頁表項,該分頁表結構包含複數個級別的分頁表,每個分頁表項識別用於識別以下各項之一者的位址指標:經轉譯位址,及在該分頁表結構的下一級別處之子分頁表的位址;回應於偵測到給定的分頁表項指定後代項限制指示符,及該給定的分頁表項的後代分頁表項識別到位於由該給定的分頁表項所識別的邊界位址區域之外的位址指標,發出信號通知有一錯誤。
至少一些示例提供了一種電腦程式,該電腦程式包括:分頁表遍歷程序邏輯,其從包含複數個級別的分頁表的分頁表結構中獲取分頁表項,每個分頁表項識別位址指標,該位址指標識別以下各項之一者:經轉譯位址及在該分頁表結構的下一級別處之子分頁表的位址;其中:當給定的分頁表項指定後代項限制識別符時,該分頁表遍歷程序邏輯經配置為當該給定的分頁表項的後代分頁表項識別到位於由該給定的分頁表項所識別的邊界位址區域之外的位址指標時,發出信號通知有一錯誤。
上述電腦程式可存儲在電腦可讀取存儲媒體上,該電腦可讀取存儲媒體可為非暫態存儲媒體或暫態存儲媒體。
設備可具有基於經定義在分頁表結構中的分頁表項(PTE)來轉譯記憶體位址的記憶體管理電路,該分頁表結構係經存儲在記憶體系統中。分頁表結構可包括兩個或更多個級別的分頁表。可提供分頁表遍歷電路以從分頁表結構獲得PTE,以供記憶體管理電路使用。每個PTE可識別用於識別經轉譯位址或在分頁表結構的下一級別處的子分頁表的位址的位址指標。可將指定經轉譯位址的項稱為區塊項或葉項。經轉譯位址可為中間物理位址或物理位址。可將具有指向在分頁表結構的下一級別處的子分頁表的位址指標的PTE稱為表項或分支項。可將指向給定的子分頁表的PTE稱為子分頁表的父PTE,也可將該指向給定的子分頁表的PTE稱為子分頁表中所有子PTE的父PTE。可將給定的PTE的子PTE及藉由子PTE中的位址指標存取的分頁表的後繼級別中的任何孫PTE或下一代PTE稱為給定的PTE的後代PTE。
當執行分頁表遍歷時,要被轉譯的目標位址的部分可用於從在分頁表結構的每個級別處的分頁表中選擇多個PTE中的一者。目標位址的第一部分用於從0級分頁表中選擇PTE。所選的0級PTE提供指向1級分頁表的位址指標,及目標位址的第二部分用於從1級分頁表中選擇特定的PTE,對於每個後繼級別依此類推,直到到達區塊項為止,這提供了用於決定與目標位址相對應的經轉譯位址的位址指標。使用多級別的分頁表結構可對於提高記憶體效率非常有用,因(與單個線性索引表結構不同),不必為分頁表結構的存儲分配單個連續的記憶體區塊,該單個連續的記憶體區塊之大小係與要映射的位址空間的整體大小成比例。
在典型的分頁表結構中,將用於識別經轉譯位址或子分頁表的位址的位址指標指定為絕對位址。因此,給定的PTE可指定直接識別位址指標的位址值。
對之,利用以下討論的方法,分頁表遍歷電路支持包含相對類型的PTE的分頁表結構。相對類型的PTE指定相對偏移值,該相對偏移值識別位址指標相對於為該給定的PTE決定的參考點基址的偏移。因此,當將給定的PTE定義為相對類型的PTE時,分頁表遍歷電路可從參考點基址和在給定的PTE中定義的相對偏移值決定該項的位址指標。
藉由使用指定為相對於基址的相對偏移的位址指標,可減少位址空間重新映射的管理負擔。監督程序(例如,作業系統或虛擬機管理程序)可負責藉由定義分頁表結構來管理位址轉譯。當使用相對類型的PTE定義分頁表結構的區段時,只需更改給定的PTE的參考點基址,就可將相對於該參考點基址計算的後續位址指標自動重新定位到記憶體的不同區域,以避免監督程序必須單獨更新許多PTE中的絕對指標。
這對於使用非揮發性記憶體的系統尤其有用,在該系統中可能想要在非揮發性記憶體中存儲持久性的分頁表片段。例如,存儲在非揮發性記憶體中的可執行程式代碼可包含一或多個相對分頁表,該一或多個相對分頁表包括相對類型的PTE。這意味著,為了將可執行檔映射到記憶體中,作業系統可簡單地設置指向非揮發性記憶體中相對分頁表的PTE,接著此分頁表中的相對類型PTE可自動映射可執行檔的所有區段至記憶體中,而作業系統無需使用絕對指標分別指定每個後代項。若之後需要將非揮發性記憶體映射到位址空間的新區域,則作業系統不須更新分頁表結構之相應部分中的所有PTE,只需更新基址即可從中獲得那些相對指標就足以重新映射分頁表的整個相對部分。
除了相對類型的PTE,分頁表遍歷電路還可支持絕對類型的PTE。當給定的PTE是指定直接指定位址指標的絕對位址值的絕對類型的PTE時,分頁表遍歷電路可從絕對位址值決定位址指標。在這種情況下,無需決定參考點基址。
無論PTE是相對類型還是絕對類型,對於表PTE,位址指標都可識別在分頁表結構的下一級別處的子分頁表的基址,及要在下一級別處的子分頁表內存取的特定子PTE的位址可對應於位址指標和要被轉譯的目標位址的下一級別索引部分的總和。因此,位址指標可與分頁大小邊界大小對齊,使得位址指標的最低有效位元部分始終為0,因此無需在PTE中明確指定(「始終為0」部分中的位元數量可取決於系統配置)。另一方面,對於區塊PTE,位址指標可指定經轉譯位址的最高有效位元部分,且可從正要轉譯的目標位址的相應位元直接映射經轉譯位址的最低有效位元部分。對於絕對類型的PTE,將子PTE位址的最高有效部分或經轉譯位址的最高有效部分指定為在絕對類型的PTE中直接指定的絕對值。對於相對類型的PTE,使用在相對類型的PTE中指定的相對偏移值來指定子PTE位址的最高有效部分或經轉譯位址的最高有效部分,該相對偏移值被添加或被附加到為該相對類型的PTE決定的參考點基址。與相對類型的PTE相關聯的參考點基址可與包含相對類型的PTE的分頁表的基址相同或不同。
可基於在分頁表結構的先前級別處的父PTE中指定的類型指示符來決定給定的PTE是相對類型還是絕對類型。因此,PTE的類型不是在PTE本身中指定的,而是在PTE的父項中指定的。這可提高安全性,因這意味著負責分頁表結構的給定級別的監督程序可控制是否允許後繼級別使用相對位址指標,這對於將後繼級別的職責委派給另一個程序或另一方同時仍保持安全性可為有用的。例如,監督程序可能希望強制後繼級別必須使用相對指標,以避免委派程序(向其委派分頁表結構的後繼級別的管理)可指定任意絕對指標,該絕對指標可擴展到為該委派程序分配的位址空間的區域。
當給定的PTE是相對類型時,分頁表遍歷電路可回應於偵測到給定的PTE的子PTE是絕對類型而發出信號通知有錯誤。因此,一旦分頁表結構的某個級別指定下一級別是相對類型,則相對類型的PTE的任何後代也將必須是相對類型。這確保可信賴監督程序;當其重新映射與相對類型的PTE的最早級別相關聯的參考點基址時,其還將重新映射所有後繼的後代子項的位址指標,就像任何後繼的位址指標一樣為絕對類型,該等位址指標將導致錯誤,因此不能導致有效的記憶體存取。
在一些實施方式中,分頁表結構的頂級PTE可被限制為絕對類型的PTE。因此,可為相對類型的PTE的第一級別可為表結構的第二級別。
替代地,在其他示例中,也可允許頂級PTE是相對類型的PTE。例如,提供頂級PTE的位址的轉譯表起始暫存器可指定頂級PTE是絕對類型還是相對類型的指示。
相對類型的PTE可用於表PTE(分支PTE)及區塊PTE(葉PTE)兩者。因此,即使是對於葉PTE,位址指標為其識別經轉譯位址,也允許這種PTE是相對類型的PTE。
對於相對類型之給定的PTE,可用不同方式決定參考點基址。對於相對類型的PTE,參考點起始位置可不為零。在一種方法中,分頁表遍歷電路可將大小對齊位址決定為給定項的參考點基址,該大小對齊位址對應於將包括給定的PTE的分頁表的位址與位址大小邊界對齊的結果,該位址大小邊界係根據由給定的PTE的父PTE所指定的大小參數來選擇的。因此,利用這種方法,不需要在PTE中明確地識別參考點基址,而是可基於由父PTE指定的大小和包括給定的PTE的分頁表的位址來隱式地決定參考點基址。由父PTE指定的大小可匹配包括給定的PTE的分頁表的大小,且在這種情況下,參考點基址可與包括給定的PTE的分頁表的基址相同。可替代地,由父PTE指定的大小可大於包括給定的PTE的分頁表的大小,且在這種情況下,參考點基址可不同於包括給定的PTE的分頁表的基址。基址的大小對齊可對應於將基址的一定數量的最低有效位元清除為0,其中清除為0的位元數量取決於指定的大小。
藉由使用大小對齊的位址作為參考點基址,這意味著不需要加法器自參考點基址和相對偏移值來計算相對位址指標,因相對偏移值可簡單地附加在大小對齊的參考點基址的最低有效未清除位元的右邊。消除對加法器的需求可改善效能,因進位傳播加法器可能相對較慢地波動正計算總和的從最低有效端到最高有效端的進位。
從包括給定的分頁表項的分頁表的位址的大小對齊來隱式決定參考點基址的另一個優勢是,這可簡化控制,以限制位址空間的區域可藉由以下方式存取:給定的相對PTE的後代PTE位於由給定PTE的參考點基址和大小所定義的區域內。這對於安全性又為有用的,因這意味著監管程序可信任當使用相對類型的PTE將分頁表結構的後繼級別的控制權指定給另一個程序時,委派程序無法在位址空間的定義區域之外定義位址指標。
替代地,決定參考點基址的另一種方式可為,給定的PTE指定區塊表項識別符,該區塊表項識別符指向區塊表的選定項,該區塊表是與分頁表結構分開的表結構。區塊表的所選項可指定參考點基址。因此,在此示例中,分頁表遍歷電路系統從區塊表的所選項中獲得給定的PTE的參考點基址,該所選項由給定的PTE的父PTE中指定的區塊表項指示符識別。儘管此方法在重新映射位址空間上可能需要稍微更多的管理負擔,但此方法可為監督程序提供更多的靈活性,以定義映射以在相對分頁表中使用的位址區域。不管參考點基址是藉由大小對齊基址來隱式決定,還是使用顯式方法(其中使用分塊表)決定,父PTE皆可控制其中允許指定該父PTE的子PTE的相對指定位址指標的區域,這在將分頁表的後繼級別管理職責委派給另一個程序或另一方時對安全性很有用。
為了簡化相對位址指標的計算,可將參考點基址限制為大小對齊的位址(對於此位址,最低有效位元的數量為零;請注意,在參考點基址的任何存儲表示中,都無需明確識別這些零位元;至於減少存儲管理負擔的部分,可省略已知為零的位元且將其保留為隱式)。大小對齊限制可藉由構造來實現(例如,當參考點基址是如上所述地藉由大小對齊相應分頁表的基址來計算時),或若已指定在相關區塊表中所指定的基址為非大小對齊的位址,則可藉由發信號通知有錯誤來執行該大小對齊限制。
由相對類型的PTE指定的位址指標可被限制成位於某個邊界位址區域內,該某個邊界位址區域可藉由參考點基址和與相對類型的PTE相關聯的大小參數來指定。如上所述,可在由給定PTE的父PTE指示的區塊表的選定項內指定參考點基址和大小;或替代地,可由給定的PTE的父PTE指定給定的PTE的大小參數,及可從包含給定的PTE的分頁表的大小對齊位址中隱含參考點基址。
當給定的PTE是相對類型的PTE時,當由給定的PTE的後代PTE指定的位址指標在為給定的PTE識別的邊界位址區域之外時,分頁表遍歷電路可發出信號通知有錯誤。這可提高安全性,因其允許監視程序信任沒有相對類型的PTE的後代PTE可指定延伸到所定義的邊界位址區域之外的位址指標。這是有用的,因使用相對類型的PTE的一個好處是可允許監督程序將分頁表的相對部分的管理委派給其他方;例如,將責任委派給經儲存在非揮發性記憶體中的可執行檔的開發人員,該可執行檔指定分頁表的相對片段。然而,在某些情況下,作業系統或其他監督程序可能無法信任某個非揮發性記憶體裝置或軟體程序將會適當運行。當在相對PTE的後代PTE中定義了位址映射時,藉由發出信號通知有一錯誤,這導致位址指標延伸到監督程序所指定的邊界位址區域之外,這藉由限制分頁表結構的相對片段在限制區域內定義位址指標來改善安全性,以使委派程序無法存取位於位址空間之其他區域中的不適當的記憶體位址。
在上文討論的示例中,將參考點基址決定為藉由對齊包含給定的分頁表項的分頁表的位址而獲得的大小對齊位址,可藉由比較由父PTE指定的大小參數及其子PTE指定的大小參數來實現對邊界位址區域的檢查。若給定的子PTE指定大小參數大於其父PTE,則可觸發錯誤。若相對類型的PTE的每個後續的後代指定大小與其父PTE的大小相同或更小,則藉由將分頁表位址與指定大小邊界進行大小對齊來計算參考點基址可足夠確保在為給定PTE識別的邊界位址區域內定義後代PTE中的任何後續的位址指標。這避免了需要記錄追蹤資料(其追蹤為較早的祖先PTE識別的邊界位址區域)以檢查表結構下幾級的位址指標是否被允許,替代地可在表下方的每一步驟處藉由比較兩個大小參數來簡單地實現邊界位址區域執行(適用於父PTE和子PTE)。若在給定級別處子PTE被驗證藉由了大小檢查(子PTE指定的大小不大於父PTE指定的大小),則可丟棄父PTE大小的指示,因在分頁表結構的後繼級別進行大小檢查不再需要該指示。
另一方面,若允許參考點基址的更多任意定義(例如,基於如上所述的區塊表),則可基於記錄的追蹤資訊來檢查由給定分頁表項的後代分頁表項指定的位址指標是否在為給定分頁表項識別的邊界位址區域之外,該紀錄的追蹤資訊係基於分頁表遍歷中遍歷的較早祖先PTE。例如,在遇到給定的PTE時,可在追蹤資訊中指示為該PTE所定義的邊界位址區域,接著可將分頁表中遇到的後代PTE的後繼位址指標與追蹤資訊進行比較,以決定是否要觸發錯誤。這種方法在存儲追蹤資訊和提供位址比較器時可能需要更多的管理負擔,但與上文所討論的大小對齊方法相比,在為表的後繼項定義位址映射時可提供更多的靈活性。
相對類型的PTE、大小對齊的基址和比較父/子PTE指定的大小的使用是一種其中可強制後代PTE無法有效地指定位址指標在為祖先PTE所定義之邊界位址區域的外部的方式。
然而,在使用絕對類型的PTE時,可在可指定後代位址指標的範圍內能應用這樣的限制也是有用的。因此,更一般地,給定的PTE可指定後代項限制指示符,及當給定的PTE的後代PTE識別出位於由給定的PTE所識別的邊界位址區域之外的位址指標時,分頁表遍歷電路可發出信號通知有錯誤。在一些示例中,後代項限制指示符可簡單地是類型指示符,該類型指示符指定給定的PTE是絕對類型還是相對類型,從而相對類型的PTE可根據定義被認為是後代項限制的,而絕對類型的PTE可非為後代項限制的。
然而,在其他示例中,後代項限制指示符可以是相對於後代項是絕對類型還是相對類型的指示符為單獨的指示符。因此,指定其子分頁表中的項為絕對類型的父PTE可指定後代項限制指示符,以指示絕對子PTE受限以在一定範圍內定義其位址指標,及若這些子PTE在這些邊界之外指定了位址指標,則發出信號通知有錯誤。
同樣在某些情況下,完全不支持相對類型的PTE的系統仍可使用後代項限制指示符來指示後代PTE中的所有後續位址指標是否必須位於某個邊界位址範圍內。即使不支持相對類型的項,對後代項的限制也可為有用的,從而信任一旦給定的PTE指定了位址空間的給定的邊界區域,那麼從該項派生的所有後續項也將需要指定位於該邊界位址區域內的位址指標,這對於允許將表結構某些部分的管理委派給可能潛在不受信任的其他程序很有用。
同樣地,可用不同方式指定邊界位址區域。在一個示例中,邊界位址區域是具有從參考點基址開始的指定大小的區域,且給定的PTE可指定指示該指定大小的大小參數。在這種情況下,可基於由給定的PTE指定的大小參數將邊界位址區域的參考點基址決定為與將包含子PTE的分頁表的位址與位址大小對齊的結果相對應的大小對齊位址。因此,利用這種方法,邊界位址區域的決定可類似於以上討論的用於計算相對類型的PTE的參考點基址的方法。
或者,可在由給定PTE中指定的區塊表項識別符識別的區塊表的項內指定基址和邊界位址區域的大小。
可在具有在硬體中所設置之特定電路的設備中實現以上討論的技術,以定義記憶體管理電路和分頁表遍歷電路。
然而,也可在電腦程式內在軟體中模擬分頁表遍歷電路的功能,該電腦程式係用於控制主機資料處理設備以提供用於指令執行的指令執行環境。電腦程式可包括分頁表遍歷程式邏輯,該分頁表遍歷程式邏輯以與上述分頁表遍歷電路相對應的方式起作用,且支持如上所述之相對類型的PTE及/或指定了後代項限制指示符的PTE。這樣的程式對於允許主機資料處理設備(其本身不具有對上述分頁表結構的類型的本機硬體支持)執行為與支持這些功能的處理器架構一起使用所編寫的程式代碼可能是有用的。
圖1示意性地示出了包括多個處理器的核心4的資料處理系統2的示例。每個核心包括處理管線6,該處理管線6用於從記憶體中獲取指令、解碼指令及回應於經解碼指令來執行資料處理操作。設置暫存器8以用於存儲用於資料處理操作的運算元。將處理操作的結果寫回到暫存器8。核心4可包括至少一個快取10,以用於從記憶體系統快取資料來供核心更快地存取。
核心4亦具有記憶體管理單元12,以管理由管線6處理的指令所指定的虛擬位址與用於指示記憶體系統內的位置的物理位址之間的位址轉譯。基於經存儲在記憶體系統中的至少一個分頁表結構來控制位址轉譯。在一些示例中,可使用兩階段轉譯,其中在位址轉譯的第一階段中將虛擬位址轉譯為中間物理位址,然後在第二階段位址轉譯中將中間物理位址轉譯為直接識別相應記憶體位置的物理位址。這對於支持虛擬化很有用,其中虛擬化的作業系統可定義與位址轉譯的第一階段相關聯的位址映射,前提是該虛擬化的作業系統是唯一存在的作業系統,且相信在階段1轉譯中生成的中間物理位址實際上是物理位址,但管理同一物理平台上各個作業系統的虛擬化的虛擬機管理程序可定義第二階段的位址轉譯,以將由不同作業系統定義的中間物理位址映射到物理位址空間的不同部分。因此,可基於包括兩個或更多個級別的分頁表項的第一階段分頁表結構來控制第一階段的轉譯,且可基於包括兩個或更多個級別的分頁表項的第二階段分頁表結構來控制第二階段的轉譯。
MMU 12可包括轉譯後備緩衝器(TLB)14,其是(多個)分頁面結構的一些分頁表項的快取。MMU還可包括分頁表遍歷電路16,以用於執行分頁表遍歷操作以從存儲在記憶體中的(多個)分頁表結構獲得PTE,以用於位址轉譯。可將在分頁表遍歷中獲得的PTE或從PTE派生的資訊分配給TLB 14,以便在將來存取相同的記憶體位址時可更快地執行轉譯。
處理器的核心4可經由互連20進行通訊,互連20可管理各個處理器核心的各個快取10和TLB 14之間的一致性。經由互連20,核心可請求對底層記憶體系統的存取,該底層記憶體系統可包括各種外圍裝置22、揮發性記憶體24的一或多個模組(如動態隨機存取記憶體(DRAM))和非揮發性記憶體26的一或多個模組(如快閃記憶體)。
系統2還可包括一或多個可請求存取記憶體的主裝置30,但主裝置30與處理器的核心4不同,主裝置30自身可能不具有內部記憶體管理單元(MMU)12。這種裝置30的示例可包括顯示控制器、網路介面控制器及圖形處理單元(GPU)等。可在主裝置30和互連20之間提供系統MMU 32,以向主裝置30提供與核心4內的MMU 12所提供的位址轉譯功能類似的位址轉譯功能。類似於MMU 12,系統MMU 32可包括TLB 34和分頁表遍歷電路36。
如圖2所示,MMU 12、MMU 32可基於存儲在記憶體系統中的分頁表結構來控制位址轉譯,該記憶體系統包括多個級別的分頁表40,每個分頁表40包括多個分頁表項(PTE)。每個分頁表40被存儲在使用分頁表結構被映射的位址空間的給定分頁中。每個分頁表40與分頁表結構的給定級別相關聯,且在一個級別的PTE 42可包括指向在分頁表結構的下一個級別的分頁表40的位址指標48。指向後續分頁表的PTE 42被稱為表項或分支項。分頁表結構之給定分支的分頁表的最終級別可包括區塊項或葉項,該區塊項或葉項指定用於識別經轉譯的記憶體位址的位址指標,該經轉譯的記憶體位址對應於請求轉譯的目標位址。在圖2所示的示例中,級別0、1和2處之所指示的PTE 42-0、PTE 42-1、PTE 42-2是表項,而級別3的PTE 42-3是區塊項。
當處理器的核心4的處理管線6或給定的主裝置30發出記憶體存取請求以請求對與某個目標位址46相關聯的記憶體位置的讀取或寫入存取時,相應的MMU 12、MMU 32執行位址轉譯以將目標位址46轉譯為經轉譯位址52。若已在TLB 14、34中快取相關位址映射,則可相對較快地傳回經轉譯的記憶體位址,否則可執行分頁表遍歷的至少部分。
圖2展示用於遍歷與單階段位址轉譯相關聯的分頁表結構的完整分頁表遍歷操作:
•轉譯表基址存儲在MMU 12、MMU 32的轉譯表基暫存器(TTBR)中,並指向分頁表結構之級別0的分頁表40-0的基址。
•目標位址46的級別0的索引部分44-0用於索引級別0的分頁表40-0之所選的PTE 42-0。
•所選的0級別的PTE 40-0包括位址指標48,位址指標48識別分頁表結構的特定級別1的分頁表40-1的基址。
•使用目標位址46的級別1的索引部分44-1以從級別1的分頁表40-1中選擇級別1的PTE 42-1。
•所選的級別1的PTE 42-1指定用於識別級別2的分頁表40-2的基址的位址指標。
•基於目標位址46的級別2的索引部分44-2從級別2的分頁表40-2中選擇級別2的PTE 42-2。
•級別2的PTE 44-2包含位址指標,該位址指標識別級別3的分頁表40-3的基址。
•基於目標位址46的級別3的索引部分44-3從級別3的分頁表40-3中選擇級別3的PTE 42-3。
•級別3的PTE 42-3是區塊PTE,其位址指標提供了經轉譯位址52的最高有效部分50。經轉譯位址52的最高有效部分50替換了目標位址46中與索引部分44-0至44-3相對應的位元。在沒有改變的情況下,將目標位址54的其餘位元54直接映射到經轉譯位址52的相應位元54。
圖2顯示了位址轉譯的單個階段,但在實現兩個階段的位址轉譯的MMU中,位址轉譯的第一階段可將虛擬位址轉譯為中間物理位址,而位址轉譯的第二階段可轉譯中間物理位址位址轉譯為物理位址。然而,在位址轉譯的第一階段中由PTE提供的每個位址指標48本身可被指定為中間物理位址(IPA),因此在位址轉譯的第二階段中,在可存取階段1的分頁表結構的下一級別之前,可能需要轉譯為物理位址(PA)。另外,可將TTBR中的轉譯表基址指定為IPA,故在可存取階段1的級別0的分頁表之前,可能還需要在階段2中進行轉譯。因此,在實施中,可藉由遍歷階段2的分頁表結構的多個級別的分頁表來分開藉由級別1的分頁表結構的每個連續步驟。即,當兩階段位址轉譯需要全分頁表遍歷操作時,順序可如下:
•階段2級別0;階段2級別1;階段2級別2;階段2級別3(以將TTBR中的階段1級別0基址從IPA轉譯為PA);
•階段1級別0(以獲取經指定為IPA的階段1級別1基址);
•階段2級別0;階段2級別1;階段2級別2;階段2級別3(以將階段1級別1基址從IPA轉譯為PA);
•階段1級別1(以獲取經指定為IPA的階段1級別2基址);
•階段2級別0;階段2級別1;階段2級別2;階段2級別3(將階段1級別2基址從IPA轉譯為PA);
•階段1級別2(以獲取經指定為IPA的階段1級別3基址);
•階段2級別0;階段2級別1;階段2級別2;階段2級別3(以將階段1級別3基址從IPA轉譯為PA);
•階段1級別3(以獲取經指定為IPA的轉譯位址);
•階段2級別0;階段2級別1;階段2級別2;階段2級別3(以將經轉譯位址從IPA轉譯為PA)。
實際上,由於TLB可從任何級別快取PTE,因此並非每次分頁表遍歷都需要所有這些分頁表查找,因此,若相應的PTE在TLB中已可用,則可跳過某些步驟。
雖然圖2顯示了其中區塊項位於級別3的分頁表40-3中的示例,但若要將單個連續位址映射用於位址空間的較大部分,則也可在分頁表結構的更高級別處定義區塊項。例如,級別1或級別2 PTE可為區塊項,且在這種情況下,分頁表結構的分頁表遍歷可在級別1或級別2查找之後終止,且可能不需要遍歷所有級別。
如圖2中標記為58的虛線所示,對於級別0的索引部分44-0具有不同值的不同位址可用不同的位址指標48映射到級別0的分頁表40-0中的不同的級別0的PTE 42-0,故其指向不同的級別1分頁表40-1;因此,不同的位址46可能需要藉由分頁表結構對不同分支進行單獨遍歷,以到達隱含經轉譯位址的最終區塊項。若不同分頁表中的某些項包含指向後繼級別處的同一項的指標,則某些分支可能會重新收斂。
通常,分頁表使用絕對物理或中間物理位址來描述表在記憶體中的位置。然而,對於非暫態記憶體(NVM)26,將持久性分頁表片段存儲在非揮發性記憶體中可能是有用的。例如,存儲在NVM 26中的可執行檔可包含相對的分頁表片段。為了將可執行檔映射到記憶體中,OS可設置指向NVM中的相對分頁表的分頁表項(例如L0項)。此操作可自動將可執行檔的所有區段映射到記憶體中。與具有絕對位址的傳統分頁表不同,若將NVM映射到新的基址(例如,藉由將其移至不同系統),則OS無需重新定位分頁表。
圖3示出了可用來實現這種相對位址指標的PTE 42的示例結構。表PTE(分支項)的格式經顯示在圖3的上部分中,而區塊PTE(葉項)的格式經顯示在圖3的下部分中。兩種PTE類型都包含有效位元60,有效位元60指定PTE中的資訊是否有效。因此,作業系統沒有必要映射給定分頁表40內的所有PTE。若存取對應於無效PTE的目標位址,則可觸發位址轉譯錯誤,從而可觸發可導致管理程序(例如,作業系統或虛擬機管理程序)重新映射位址空間以提供所存取位址區域的映射的例外。
PTE 42還可包括表/區塊旗標62,表/區塊旗標62指示PTE是表PTE還是區塊PTE。在圖3的示例中,若表/區塊旗標62是1,則PTE是表PTE;若表/區塊標誌62是0,則PTE是區塊PTE。
兩種類型的PTE都可指定與對應於此PTE的位址空間的區域相關聯的記憶體屬性64。對於級別0的PTE,位址空間的對應部分是所有位址組成的區域,該等所有位址共享具有給定值的級別0的索引部分44-0。對於級別1的PTE,對應的位址區域是由所有那些位址形成的區域,那些位址共享用於級別0索引部分44-0和級別1索引部分44-1的一組給定值。對於級別2的PTE,對應的位址區域是由那些具有針對級別0、級別1和級別2索引部分44-0、44-1、44-2中的每一者的一組給定值的位址形成的區域。對於級別3的PTE,位址區域由那些具有針對級別0到級別3索引部分44-0、44-1、44-2、44-3的所有索引部分的一組給定值的位址形成。為相應位址區域定義的屬性64例如可指定區域是唯讀的還是可讀可寫兩者。屬性亦可指定區域是否為裝置類型的記憶體區域;對於裝置類型的記憶體區域,與發出記憶體存取的順序相比,不允許對該等記憶體存取進行重新排序。此外,記憶體屬性64可指定允許處理器的核心4的哪些特權級別存取相應的位址區域或存取用於控制如何允許存取記憶體的相應區域的其他資訊。在圖3的示例中,區塊PTE可比表PTE指定更多的屬性資訊,儘管這不是必需的。
如圖3所示,表PTE可包括下一級別的PTE的類型指示符66(Rn + 1
),其指示在分頁表結構的下一級別處的分頁表40內的PTE是絕對類型還是相對類型。在此示例中,若類型指示符66是0,則這指示下一級別的PTE是絕對類型;若類型指示符66是1,則這指示在下一級別的PTE是相對類型。使用類型指示符66的這種映射對於與為不支持相對類型的PTE的架構編寫的舊有(legacy)軟體的兼容性可為有用的,因通常期望為0的保留位元可被重新調整用途以指示類型指示符66。區塊PTE不指定下一級別PTE類型指示器66,因區塊PTE沒有下一級別(因區塊PTE是分頁表結構的該分支的最後一級別)。在區塊PTE中,與表PTE的類型指示符66在相同的位元位置處的位元可被保留以供未來使用、被固定為零或用於其他資訊。
在下文描述的符號Rn
和Rn+1
中,對於分頁表結構級別為n的給定表PTE,Rn
指向在該表PTE的父PTE中指定的類型指示符66,其定義n級別PTE是絕對類型(Rn
= 0)還是相對類型(Rn
=1),而Rn+1
是在級別n的PTE中指定的類型指示符66,其定義分頁表結構的下一級別處的(n + 1)級PTE是絕對類型(Rn+1
= 0)或相對類型(Rn+1
=1)。
表PTE和區塊PTE兩者皆指定位址指標68、72。若將在分頁表結構的上一級別處的父PTE指定Rn
= 0,則位址指標是一個絕對值。對於表PTE,位址指標68用於決定分頁表結構的下一級別處的分頁表40的基址。若當前級別處的n級別PTE是絕對類型,則位址指標是直接指定下一級別分頁表的基址的絕對值。為了使位址指標欄位68更短,不需要在位址指標欄位68中明確指定全部等於0的位元的較低部分,因可從PTE的級別隱含這些。對於被指示為絕對類型的PTE的區塊PTE,絕對位址指標值72識別經轉譯位址的最高有效位元,而經轉譯位址52的最低有效位元54直接從目標位址46的相應位元54進行映射,如圖2所示。
指定下一級別的PTE是相對類型(Rn+1
= 1)的表PTE還指定了大小參數70(BSn+1
),大小參數70(BSn+1
)定義適用於相對類型的下一級別PTE的區域大小。區域大小BSn+1
可用於計算參考點基址Bn+1
,該參考點基址Bn+1
將用作由相對類型的下一級別的PTE指定的相對位址偏移的參考。
可使用存儲的參數BS來將區域大小定義為2的冪大小,該存儲的參數BS不明確指示大小,但可用於如下所述地計算大小。在下文描述的符號BSn
和BSn+1
中,對於分頁表結構之級別為n的給定的分頁表PTE,BSn
指向在該表PTE的父PTE中指定的大小參數70,而BSn+1
是在級別n的PTE中指定的大小參數,其定義級別n + 1的PTE的大小。可根據關係Sn
= 2(BSn + 偏移)
來將存儲的大小參數BSn
映射到對應的位址區域大小Sn
,其中「 偏移」是任意的偏移常數,其為0或更大的整數。給定的基址Bn
可藉由根據(Sn
– 1)的倒數計算出的位元遮罩將最低有效位元清零來進行大小對齊。例如,若偏移為0,則指定不同區域大小和相應位元遮罩的一些示例如下所示:
BSn | Sn | Sn -1(二進位) | 位元遮罩 |
1 | 2 | ...00000001 | ...11111110 |
2 | 4 | ...00000011 | ...11111100 |
3 | 8 | ...00000111 | ...11111000 |
4 | 16 | ...00001111 | ...11110000 |
實際上,需要支持的最小區域大小可大於2個位元組,因此可藉由避免為編碼區域大小小於最小大小的區域而需要提供編碼空間,而使用偏移來將大小指示符壓縮為更少的位元。 例如,若所需的最小區域大小為1kB(1024位元組),則所需的Sn
的最小值將為10,因此可將偏移設為10,以便可使用BSn
= 0來定義最小區域大小:
這種方法允許使用更少的位元來編碼所需的最小大小和最大大小之間的區域大小。
BSn | Sn | Sn -1(二進位) | 位元遮罩 |
0 | 1024 | ...0 0011 1111 1111 | ...1 1100 0000 0000 |
1 | 2048 | ...0 0111 1111 1111 | ...1 1000 0000 0000 |
2 | 4096 | ...0 1111 1111 1111 | ...1 0000 0000 0000 |
... |
如圖4所示,對於相對類型的PTE,可藉由在位元AND操作中將(基於大小參數決定的)位元遮罩與分頁表(其包含n級PTE)的基址TAn
相結合,來計算給定的n級別相對類型的PTE的參考點基址Bn
,以將TAn
的最低有效位元清除為0,清除位元的數量取決於所指定的大小。這將生成大小對齊的參考點基址Bn
,該位址對齊到大小邊界,該大小邊界對應於表結構的n-1級別處的父PTE中的參數BSn
中指定的大小。
對於相對類型的n級表PTE,獲得的分頁表結構的n + 1級別的子分頁表的基址TAn+1
等於參考點基址Bn
和在n級別PTE的位址指標欄位68中所指定的相對偏移值rTAn+1
的總和。這可使用加法器來計算,但將相對偏移值rTAn+1
附加到參考點基址Bn
的未清除部分的最低有效端或具有rTAn+1
的OR Bn
可能會更有效,以獲得與Bn
大小對齊時相加之相同的結果。
在將偏移與參考點基址合併之前,相對偏移值可使其高位元藉由與遮罩進行「AND」運算而被遮蔽,該遮罩對應於(Sn – 1
)的二進制表示(此遮罩是經應用以生成參考點基址Bn
的位元遮罩的倒數),以確保參考點基址Bn
和偏移之總和不超出標記大小為Sn
的區域的末端的位址Bn
+ Sn
。同樣,還可藉由應用遮罩將偏移之一定數量的最低有效位元清除為0,清除位元的數量取決於粒度大小(一分頁表的大小)及/或分頁表結構內的分頁表的級別,以確保被存取的分頁表的末端也不能超出區域Bn
+ Sn
的末端。這將在下文相關於步驟114而更詳細地討論。在一些實施方式中,若任何被遮蔽的位元(在偏移的上端或下端)都不為零則可觸發錯誤,因這可能指示無效定義的PTE。
類似地,相對類型的n級區塊PTE在位址指標欄位72中指定一個相對偏移值,從中可計算出經轉譯位址的上部分等於基址Bn
和在區塊PTE的位址指標欄位72中指定的相對偏移值rPA之和(同樣,如上所述屏蔽偏移值)。同樣,這不一定需要加法,而是可使用移位器及/或OR邏輯來完成。
在此示例中,由於包括級別0的PTE的任何表PTE可藉由在當前PTE中將絕對/相對類型旗標66設置為1來指定下一個
級別提供相對位址,這意味著在默認情況下,可包含任何相對位址指標的第一級別為級別1的分頁表,及級別0的分頁表可為絕對PTE。然而,在其他示例中,TTBR可指定指示級別0的分頁表是絕對還是相對的類型指示符,以允許在級別0的分頁表中也提供相對類型的PTE。
一旦某個PTE級別指定了下一個級別是相對的,則後繼的任何級別也必須是相對類型,且不允許相對PTE的後代PTE是絕對PTE。因此,如圖4所示,在0級別表項中指定的位址指標TA1將始終是絕對指標,且指向分頁表結構中的特定級別1的分頁表40-1。
在圖4的示例中,我們假設指定級別1分頁表應是相對類型的級別0的PTE,並指定大小參數70,大小參數70對應於如圖4所示之某個區域大小S1。藉由將級別1的分頁表40-1的表位址TA1與相關聯於尺寸S1的尺寸邊界進行大小對準來形成參考點基址B1。注意,在圖4中,40-1的陰影部分對應於級別1分頁表本身,而大小為S1且從參考點基址B1開始的非陰影區域80是邊界位址區域,在該邊界位址區域中允許定義由級別1的PTE所指定的位址指標及這些PTE的任何後代項。基於目標位址的級別1的索引部分44-1從級別1的分頁表40-1中選擇PTE。在級別1的分頁表的索引項中指定的基址B1和相對偏移rTA2之和,在分頁表結構的下一級別處提供了級別2的分頁表40-2的表位址TA2。級別1的PTE指定大小參數BS2,大小參數BS2為其級別2的子PTE識別邊界區域的大小S2。再次,將TA2與大小S2的大小邊界大小對齊來生成基址B2,基址B2是針對在級別2的分頁表40-2中指定的相對位址指標72的參考點。在此示例中,級別2的PTE是區塊PTE,因此使用相對偏移rPA指定的位址指標給出了經轉譯位址PA,因此不再進行分頁表結構的遍歷。
因此,總而言之,分頁表遍歷從TTBR和L0分頁表中的絕對指標開始。包括L0的任何表都可藉由設置當前分頁表中的相對下一位元來指定下一級別提供相對位址。一旦級別指定了下一級別是相對的,則任何後繼級別必須也是相對的。
當指定下一級別提供相對位址時,當前級別還指定下一級別可定址之可允許的記憶體區域的大小S。基於指向下一級別的指標TAn+1
及級別的大小Sn+1
,我們為該級別定義了邊界記憶體區域。邊界記憶體區域被自然對齊並具有基址Bn+1
和大小Sn+1
。藉由對齊表位址來計算基數:Bn
=TAn
&〜(Sn
-1)。相對於當前表所在區域的基數解析相對指標。例如:TAn+1
=Bn
|rTAn+1
。用與相對表指標相同的方式來解析相對的區塊項。
MMU可實施一些安全檢查,這對於安全地允許使用相對位址指標定義的分頁表結構的片段存儲在非揮發性記憶體26中,從而其可被嵌入在由潛在不可信任的軟體開發人員(而不是在更高層級定義分頁表結構的作業系統或虛擬機管理程序的開發人員)編寫的可執行代碼中,是有用的。這些檢查可能如下:
•級別n的邊界記憶體區域80應該是級別n-1的子集。若非此情況,CPU應發生錯誤。這適用於表項和區塊項兩者。在級別n處的區塊的開始和結束都應位於級別n-1的區域內。
•若將級別n-1標記為相對,則應將級別n的表項標記為相對。若非此情況,CPU應發生錯誤。
這些檢查的組合確保一旦給定的PTE將分頁表結構的下一級別標記為相對,則該PTE的所有後續子代也將是相對的,以便作業系統只需改變藉由包含絕對PTE的最後一級處的絕對位址指標便可重新映射分頁表結構的該分支所指向的位址空間的整個部分。同樣,這意味著可保證在PTE的後繼級別上所定義的任何相對位址指標都不能指向在經定義為相對類型的PTE之PTE的最高級別處已經指定之邊界位址區域80之外的任何位址。
使用圖4所示的方法,只要子項的大小參數70不大於其父項的大小參數,則子PTE和任何後代PTE的位址區域將始終在由最上層相對類型的PTE所定義的邊界位址區域項內,這意味著即使不信任分頁表結構的相對片段所在的裝置,或不信任與該分頁表的片段相關的軟體的開發人員,那麼更高特權級別的程序(如作業系統或虛擬機管理程序)仍可相信,一旦位址空間的給定區域80被映射為適合使用相對分頁表,則由另一方在分頁表的後繼級別內提供的所有映射表結構將不會擴展到區域80之外,因此總位址空間的其他區域中的位址可不會受到不適當存取的影響。在圖4中可看出,由於為計算相對偏移的基址而進行的大小對齊的結果,將為級別2定義的區域B2至B2+S2的指標限制成在經定義為級別1邊界區域的區域80內。
圖5是示出執行分頁表遍歷以定位供MMU 12使用的項的方法的流程圖。圖5示出了到達分頁表結構的給定級別n級時所執行的步驟。應當理解,然後可藉由遍歷從父PTE到子PTE之位址指標來為達到的每個級別重複此方法。在圖2的示例中,n可在0到3之間(即,分頁表級別的最大數量是4),但其他示例可支持小於或大於4的最大級別數量。
同樣,將認識到,並非每個記憶體存取都可能需要分頁表遍歷。若已在TLB中快取目標位址和經轉譯位址之間的完整轉譯映射,則不需要分頁表遍歷。
同樣,在需要分頁表遍歷的情況下,不一定總是遍歷PTE的所有級別。某些TLB可能會快取部分轉譯(例如,從VA到樹結構的某個級別(例如,從VA到級別2)處的PTE位址的映射)。在這種情況下,無需遍歷級別0和級別1處的分頁表結構,因TLB中的快取資訊可用於從級別2獲取相關的PTE,接著繼續識別要在級別3處存取的下一級別的PTE。
因此,圖5顯示了在分頁表結構的特定級別n處若需要分頁表存取時要執行的步驟。在步驟100處,分頁表遍歷電路16、36在分頁表結構的級別n處獲得相關的PTE。為了識別所需的PTE的位址,分頁表遍歷電路16、36將級別n的分頁表基址添加到從目標位址的級別n的索引部分44-n決定的偏移(同樣,可不需要加法器,因若基址為大小對齊的,則可經由移位器或OR閘獲得等效結果)。若n = 0,則從轉譯表基暫存器(TTBR)中獲得級別0的基址;若n> 0,則根據在n-1級別處的父PTE中的位址指標來識別n級別的分頁表的基址。無論哪種方式,都將識別所需PTE的位址。若分頁表遍歷的當前級別與直接從虛擬位址轉譯為物理位址的1階段MMU相關聯,或與從中間物理位址(IPA)轉譯為物理位址(PA)的2階段MMU的階段2相關聯,則從n級別的基址Tn和n級別的索引部分44-n獲得的位址是可在記憶體存取請求中指定以從記憶體系統讀取所需的PTE的物理位址。另一方面,若轉譯程序的此步驟與2階段MMU的階段1相關聯,則所獲取的PTE位址是IPA,該IPA接著可需要進一步的階段2轉譯以獲得所需PTE的物理位址。
因此,在步驟100處,從TLB 14、34或從記憶體系統獲得與目標位址46的n級別的索引部分44-n相對應的PTE。在步驟102處,分頁表遍歷電路16、36識別在分頁表結構的前一級別n-1處由父PTE指示什麼類型的PTE。例如,參考圖2,對於級別2的PTE 42-2,父PTE將是級別1的PTE 42-1,其包含指向包含級別2的PTE 42-2的級別2的分頁表40-2的位址指標。若父PTE中的類型指示符66指示級別n處的PTE是絕對類型,則在步驟104處,從直接在該PTE中指定的絕對位址68、72決定級別n處的PTE的位址指標。若級別n處的PTE是區塊PTE,則這將終止分頁表結構的遍歷(儘管若經轉譯位址是IPA,則可能仍需遍歷階段2的分頁表結構)。若在級別n處的PTE是表PTE,則位址指標68在隨後的級別處識別分頁表的位址,然後可進一步藉由圖5的方法中獲得該位址。
若在步驟102處,由級別n-1處的父PTE指示級別n的PTE是相對類型(Rn
=1),則在步驟106處,分頁表遍歷電路16、36決定級別n的PTE是否指定類型指示符66,類型指示符66指示了在級別n+1處的子PTE是絕對類型(Rn+1
=0)。若如此,則在步驟108處觸發出錯誤。因此,相對PTE只能將其他相對PTE指定為子代。這樣可確保藉由簡單地更新分頁表結構中其祖先之一者中定義的最後一個絕對指標就可自由地重新映射位址表的相對片段,而無需在分頁表的相對部分中的每個後續PTE中單獨重新映射位址指標。
在步驟110處,可執行第二安全檢查以決定級別n的PTE是否指定大小參數70(BSn+1
),大小參數70指示比在級別n-1處之其父級PTE指定的大小參數70(BSn
)大的大小。若級別n-1處的父級PTE指定的大小大於級別n的子代PTE指定的大小,則在步驟108處再次發出錯誤信號。由於級別n的相對偏移的基址是級別n的分頁表的表位址的大小對齊版本,故防止從父級到子級的大小增加保證了分頁表相對部分內的任何後續偏移都會位於藉由分頁表結構為當前分支上遇到的第一個相對PTE定義的邊界區域內。
可用任何順序執行步驟106和110處的檢查,或可彼此並行執行。
若步驟106、110均未觸發錯誤(即,級別n處的子PTE指定級別n+1是相對的且指定的大小小於或等於其父PTE中指定的大小),則方法進入步驟112。在步驟112處,將n級別的PTE的參考點基址Bn
決定為大小對齊位址,該大小對齊位址對應於將當前n級別的分頁表40-n的表位址TAn
(從其中提取被讀取的n級別的PTE)對齊到自然位址邊界,該自然位址邊界對應於由級別n-1處的父PTE中指定的大小參數BSn
識別的大小Sn
。自然位址邊界是對應於大小的整數倍的邊界(例如,對於4kB大小,位址邊界將為4kB、8kB及12kB等)。基本位址Bn
和大小Sn
一起定義了邊界位址區域,在其中允許定義級別n處的當前PTE的相對指定位址指標和後續的後代PTE。
在步驟114處,將屏蔽應用於在級別n處的PTE的位址指標欄位68、72中指定的相對位址偏移。在屏蔽中,藉由基於遮罩(Sn
-1)的屏蔽將偏移的一些高位元清除為零,且藉由屏蔽將一些低位元清除為零。對於表項,基於遮罩〜(G – 1)清除低位元,其中G是分頁表結構的粒度大小。對於區塊項,要清除的較低位元是對應於欄位54和44-X(所有大於包含區塊項的級別的X)的那些位元(即,偏移不影響直接從用於分頁表結構的該級別的區塊項之VA映射出的位元)。這些屏蔽操作確保使用位址指標存取的分頁表或粒度的開始和結尾將都在從基址Bn
開始之大小為Sn
的區域內。在一些示例中,若在原始(未屏蔽)相對位址偏移中任何被屏蔽的位元都不為零,則可能觸發錯誤。在步驟114處,藉由產生等於參考點基址和相對位址偏移之和的結果,從在步驟112處決定的參考點基址Bn和被屏蔽的相對位址偏移決定位址指標。接著,位址指標可用於形成分頁表的下一級別n+1處的子PTE的位址(在n級別的PTE是表PTE的情況下)或經轉譯位址(在n級別的PTE是區塊PTE的情況下)。
若n級別的PTE是區塊PTE,則不需要藉由分頁表結構的其他步驟(儘管如上所述,若傳回位址是IPA,則可需要第二階段的位址轉譯)。若級別n的PTE是表PTE,則將n增加1,接著對於分頁表結構的下一級別再次重複圖5的方法。
在上文所示的示例中,在父PTE中明確指定了大小參數BSn+1
,以指示分頁表結構的下一級別處的子PTE的邊界位址區域的大小。另外,在以上示例中,藉由將級別為n的分頁表的位址與基於由其父PTE指定的大小參數BSn
而決定的大小邊界進行大小對齊,隱式決定了要使用相對位址偏移從其計算相對位址指標的基址Bn
。
然而,如圖6所示,另一種方法可為表PTE,該表PTE可指定區塊指示符90,而不是大小參數70。區塊指示符90識別區塊表94內的特定的區塊項92,區塊表94是來自分頁表結構的單獨的表結構。每個區塊項92指定基址96和大小參數98,接著可將基址96和大小參數98用作基址Bn + 1
和大小參數BSn+1
,以用於決定分頁表結構的下一級別(n + 1)處的子PTE的位址指標。位址指標68仍可像先前一樣指定相對偏移,且所有其他欄位60、62、66、64可與圖3的示例相同。
因此,如圖6所示,在PTE本身中明確指出基址或大小參數不是必需的。
若使用圖6中所示的方法,則可提供一種機制以允許子PTE從父代「繼承」區塊規範。這可藉由保留預定的區塊指示符(例如,區塊ID 0)以表示「停留在由父代所定義的塊中」來實現,或可藉由約定來實現,該約定其中後續相對類型指示符66(或以下圖7之範例中的後代項限制旗標)未被設置用於子項(在這種情況下,該等子項只會從父代繼承屬性),除非該等子項更新區塊規範。提供這樣的繼承機制非常有用,因為其意味著子項本身不需要在區塊表上指定資訊,這可提高安全性,因為區塊表可由OS /虛擬機管理程序管理,而分頁表片段可位於可移動(非揮發性)媒體上,因此最好不要在可移動媒體上對來自區塊表的資訊進行編碼。
在上文討論的示例中,一旦將PTE標記為相對類型,則這還意味著相對類型的PTE的後代PTE被限制成指定位址指標,該等位址指標位於為相對PTE的第一級別定義的某個邊界位址區域80中。因此,相對/絕對類型指示符66也可被認為是後代項限制的指示符,其指示PTE的後代項是否被限制以定義在某個有界位址區域內的位址指標。然而,在其他方法中,也可能需要在分頁表結構中後繼級別的位址指標上將此類限制應用於絕對類型的PTE。
因此,在一些實施方式中,可使用如圖7所示的PTE格式。PTE的欄位64、66、68、70或90、62和60可與圖3或圖6相同。然而,在圖7中,PTE也可包括後代項限制旗標120,後代項限制旗標120指示是否有任何後代項被限制為僅指定在已定義的邊界位址區域80(Dn+1
= 1)內的指標,或被允許指定邊界區域80之外的指標(Dn+1
= 0)。可藉由圖6中所示的區塊表中的基址和大小來定義邊界位址區域(因此允許相對任意地定義邊界區域),或可藉由基於當前級別分頁表的父PTE指定的大小來大小對齊該分頁表的基址來定義邊界位址區域,如圖4所示。
對於包含相對PTE的表結構的分支,可使用距大小對齊後的基址的相對偏移及經應用於相對位址偏移的遮蔽來計算位址指標(前提是無法從父-子增加大小,如關於步驟110所討論的),這可保證後代PTE不可能在為較早的PTE所定義的邊界區域之外定義位址指標。
然而,對於分頁表的絕對部分,或對於使用區塊表中的任意基址和大小定義邊界區域的相對PTE,可想到將給定級別n的位址指標68定義為指向為分頁表結構的同一分支中的較早區域所定義的邊界位址區域之外。例如,在圖7中,級別0的分頁表40-0中的PTE定義Dn+1
= 1,以將其後代定義為「後代項限制」。級別0的PTE為其級別1處的子PTE定義了邊界位址區域80。在此示例中,邊界區域在基址B1處開始及大小為S1。雖然在級別1的PTE中指定的位址指標位於該區域內,但在這種情況下的級別2的子PTE指定絕對位址指標68,絕對位址指標68指向為級別1所定義的邊界位址區域80之外的位置,因此這將觸發分頁表遍歷電路16、36以發出錯誤信號。對之,若L0和L1 PTE中的後代項限制旗標120均為0,則即使L2 PTE中的位址指標延伸到用於較早的L0 PTE之邊界區域80之外,也不會產生錯誤(至少對於絕對類型的PTE而言)。
在一些實施例中,為了追蹤為給定級別的PTE定義的邊界位址區域,可由分頁表遍歷電路16、36記錄一些追蹤資訊,例如定義邊界位址區域的基址和大小或邊界位址區域的開始位址和結束位址。在後繼級別處遇到子代PTE時,分頁表遍歷電路16、36可將PTE的位址指標與其祖先PTE所定義的邊界位址區域進行比較,以決定是否發信號通知錯誤。可在分頁表結構的不同級別處為PTE維護多組追蹤資訊。
可替換地,在如上所述將邊界位址區域定義為分頁表位址的大小對齊版本的情況下,不必存儲追蹤資訊,因在這種情況下,簡單地比較父項和子項的大小參數可足以實現後續位址指標的邊界檢查。這可能更有效率,因這意味著分頁表遍歷電路16、36可能具有較少的硬體,以用於比較位址並在分頁表遍歷中的較早PTE定義的邊界位址區域上存儲追蹤資訊。
藉由允許位址指標受絕對PTE和相對PTE的某些區域邊界的限制,這可允許作業系統或虛擬機管理程序將分頁表結構的某些子部分的管理委派給其他軟體程序或將被存儲在非揮發性記憶體26中的一定持久性的可接受代碼段的軟體開發人員,確信已將一定級別的PTE定義為到位址空間特定區域80的映射,因此可確保後代項產生的任何後繼映射項也將在該區域內,因此惡意方沒有範圍來修改後代PTE指向不適當位址。
在一些示例中,Dn+1
=0的指示可由相對類型的較晚PTE的指示所覆寫;即,默認情況下,相對類型的PTE可被認為是「後代項限制」,但絕對類型的PTE可以是「後代項限制」(Dn+1
=1),也可以不是「後代項限制」(Dn+1
= 0)。
其他示例還可允許將相對類型的PTE區分為「後代項限制」(Dn+1
=1)或非「後代項限制」(Dn+1
= 0)。這可允許控制分頁表結構上層的監督程序決定是否可信任定義分頁表結構後級別的裝置,並相應地設置後代項限制旗標120(若不受信任則Dn+1
= 1;若受信任則Dn+1
= 0)。
儘管圖7示出了結合絕對/相對類型指示符66和後代項是否受到限制的指示符120兩者的PTE格式,但也可用不支持相對類型指示符的PTE格式來提供後代項限制指示符120,在這種情況下,可省略絕對/相對類型指示符66。
圖8說明了可使用的模擬器實施方式。儘管較早描述的實施例在用於操作支持有關技術的特定處理硬體的設備和方法方面實現了本發明,但也可能提供根據本文描述的實施例的指令執行環境,該指令執行環境藉由使用電腦程式來實現。只要此類電腦程式提供了基於軟體的硬體架構實施方式,此類電腦程式通常就稱為模擬器。模擬器電腦程式的種類繁多,包括模擬器、虛擬機、模型和二進制轉譯器,該二進制轉譯器包括動態二進制轉譯器。通常,模擬器實現可在主機處理器230上運行,可選地在支持模擬器程式210之主機作業系統220上運行。在某些佈置中,硬體與所提供的指令執行環境之間可能存在多層模擬,及/或在同一主機處理器上提供的多個不同的指令執行環境。從歷史上看,一直需要功能強大的處理器來提供以合理的速度執行的模擬器實現,但在某些情況下(如出於兼容性或重用原因而希望運行另一個處理器的本機代碼時),這種方法可被調整。例如,模擬器實現可向指令執行環境提供主處理器硬體不支持的附加功能,或提供通常與不同硬體架構相關聯的指令執行環境。在1990年冬季USENIX研討會的Robert Bedichek的「一些有效的架構模擬技術(Some Efficient Architecture Simulation Techniques)」(第53-63頁)中給出了模擬的概述。
就先前已參考特定硬體構造或特徵描述實施例的程度而言,在模擬實施例中,可由合適的軟體構造或特徵提供等效功能。例如,特定電路可在模擬實施例中實現為電腦程式邏輯。類似地,可在模擬實施例中將記憶體硬體(如暫存器或快取)實現為軟體資料結構。在主機硬體(例如,主機處理器230)上存在前述實施例中引用的一或多個硬體元件的佈置中,一些模擬實施例可利用主機硬體(在適當的情況下)。
模擬器程式210可存儲在電腦可讀取存儲媒體(可為非暫態媒體)上,且向目標代碼200(其可包括應用程式、作業系統和虛擬機管理程序)提供程式介面(指令執行環境),其與由模擬器程式210建模的硬體架構的應用程式介面相同。因此,可使用模擬器程式210從指令執行環境執行目標代碼200的程式指令(其包括定義具有上述屬性的分頁表結構的指令),從而實際上不具有上述設備2的硬體特徵的主電腦230可模擬這些特徵。
模擬器程式210可包括指令解碼程式邏輯212,其將由目標代碼200指定的指令映射到使用由主機硬體230所支持的本機指令定義的相應功能。模擬器程式210亦包括記憶體管理程式邏輯214和分頁表遍歷程序216,其使用由主機硬體230支持的本機指令來定義,主機硬體230模擬上述設備2的MMU 12、32和分頁表遍歷電路16、36的功能。記憶體管理程式邏輯214可允許模擬器程式210模擬經模擬位址空間218的存在。從目標代碼200的觀點來看,資料和指令被存儲在基於經模擬位址空間218所定址的記憶體中,但記憶體管理程序邏輯214可控制:如上所述在分頁表結構219的控制下之經模擬虛擬位址到經模擬物理位置的經模擬位址轉譯,然後將經模擬物理位址進一步映射為主機硬體使用的位址(此進一步的映射可包括由主機硬體230的MMU進行的本端位址轉譯,以獲得實際將相關資料存儲在主機硬體230的記憶體中的物理位址)。因此,當執行經模擬位址轉譯時,分頁表結構219可由分頁表遍歷程式邏輯216以與上述相同的方式使用絕對位址指標或相對位址指標來遍歷。這允許為支持上述功能的設備設計的軟體可在不支持那些功能的主機平台上執行,因缺少的功能可由模擬器程式210在軟體中進行模擬。
圖8中所示的模擬器程式210是電腦程式的一個示例,模擬器程式210控制主機資料處理設備以提供用於執行目標程式的指令的指令執行環境,該電腦程式可基於上文所討論的分頁表結構的類型為分頁表遍歷提供軟體支持。
然而,可提供其他軟體示例,這些示例可具有分頁表遍歷程式邏輯216,但不必提供指令解碼程式邏輯212、記憶體管理程式邏輯214或經模擬位址空間218的模擬。
例如,在軟體控制的分頁表遍歷的第二示例中,主機設備可具有其自身的TLB硬體和記憶體管理硬體,但TLB的填充可至少部分地由如作業系統的軟體來管理。因此,在這種情況下,分頁表結構存儲在主機設備的主機位址空間中,而不是在經模擬位址空間中。主機設備可具有用於在TLB中對位址轉譯的請求未命中時觸發分頁表遍歷的硬體,但此外,TLB可以是軟體管理的,使得作業系統可包括分頁表遍歷程式邏輯216,分頁表遍歷程式邏輯216基於經指定的目標位址及基於該等獲取PTE接著被載入至TLB中的資訊請求從分頁表結構獲取某些PTE。這樣的分頁表遍歷程序邏輯216可支持使用相對分頁表或如上所述之對後代項中的指標有限制的分頁表。
在第三示例中,主機設備可僅對絕對分頁表或不允許對其中後代項定義指標的區域進行限制的分頁表硬體支持,但可能希望允許主機設備執行針對系統編寫的軟體,該等系統係為相關分頁表或後代項限制的PTE提供硬體支持。在這種情況下,在主機設備(例如,作業系統)上執行的軟體可在軟體控制下執行相對分頁表的分頁表遍歷,並將所指示的位址轉譯映射和分頁表項映射到在影分頁表結構(其經存儲在位址空間的不同部分中)中定義的對應的絕對類型PTE。主機硬體的TTBR可接著指向影(絕對)分頁表結構,而不是由要執行的目標軟體所使用的實際(相對)分頁表結構。因此,這又可以是電腦程式的示例,該電腦程式包括分頁表遍歷程序邏輯216,以基於如上所述的相對位址指標及/或後代項限制指示符的使用,從分頁表結構中獲取分頁表項。
在本申請案中,術語「經配置為……」用於表示設備的元件具有能執行所定義操作的配置。在本文中,「配置」是指硬體或軟體的互連的佈置或方式。例如,設備可具有提供所定義操作的專用硬體,或可對處理器或其他處理裝置進行程式化以執行功能。「經配置為」並不意味著需要以任何方式改變設備元件以提供所定義操作。
儘管本文已參考附圖詳細描述了本發明的說明性實施例,但應理解,本發明不限於那些精確的實施例,且在不脫離由所附請求項限定的本發明的範疇和精神的情況下,所屬技術領域中具通常知識者可在其中進行各種改變和修改。
2:資料處理系統
4:核心
6:處理管線
8:暫存器
10:快取
12:記憶體管理單元
14:轉譯後備緩衝器(TLB)
16:分頁表遍歷電路
20:互連
22:外圍裝置
24:揮發性記憶體
26:非揮發性記憶體
30:主裝置
32:記憶體管理單元(MMU)
34:轉譯後備緩衝器(TLB)
36:分頁表遍歷電路
40-0:級別0的分頁表
40-1:級別1的分頁表
40-2:級別2的分頁表
40-3:級別3的分頁表
42:分頁表項(PTE)
42-0:級別0的PTE
42-1:級別1的PTE
42-2:級別2的PTE
42-3:級別3的PTE
44-0:級別0的索引部分
44-1:級別1的索引部分
44-2:級別2的索引部分
44-3:級別3的索引部分
46:目標位址
48:位址指標
50:最高有效部分
52:經轉譯位址
54:目標位址
60:有效位元
62:表/區塊旗標
64:記憶體屬性
66:類型指示符
68:位址指標
70:大小參數
72:位址指標
80:非陰影區域
90:區塊指示符
92:區塊項
94:區塊表
96:基址
98:大小參數
100:步驟
102:步驟
104:步驟
106:步驟
108:步驟
110:步驟
112:步驟
114:步驟
120:後代項限制旗標
200:目標代碼
210:模擬器程式
212:指令解碼程式邏輯
214:記憶體管理程式邏輯
216:分頁表遍歷程式邏輯
218:經模擬位址空間
219:分頁表結構
220:主機作業系統
230:主機處理器
從下面的示例描述中,本技術的其他態樣、特徵和優勢將變得顯而易見,這些描述將結合附圖理解,其中:
圖1示意性地示出資料處理系統的示例,該資料處理系統包括至少一個用於處理位址轉譯的記憶體管理單元;
圖2示意性地示出用於從分頁表結構獲得分頁表項的分頁表遍歷的示例;
圖3示出分頁表結構的分頁表項的示例格式,其支持相對分頁表指標;
圖4示出基於相對類型的分頁表項來計算位址指標的示例;
圖5是示出執行分頁表遍歷的方法的流程圖;
圖6示出第二示例,其中區塊表用於指示基址和邊界位址區域的大小;
圖7示出包括後代項限制指示符的分頁表項的示例;及
圖8示出了用於控制主機資料處理設備以提供用於指令執行的指令執行環境的模擬器程式的示例。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
40-1:級別1的分頁表
40-2:級別2的分頁表
80:非陰影區域
Claims (23)
- 一種設備,包括: 記憶體管理電路,其基於在經存儲在一記憶體系統中之一分頁表結構中定義的分頁表項來轉譯記憶體位址,該分頁表結構包括複數個級別的分頁表;及 分頁表遍歷(walk)電路,其從該分頁表結構中獲取該等分頁表項以供該記憶體管理電路使用,每個分頁表項識別一位址指標,該位址指標用於識別以下之一者:一經轉譯位址,及在該分頁表結構的一下一級別處之一子分頁表的一位址;其中 當一給定的分頁表項是指定一相對偏移值的一相對類型的分頁表項時,該相對偏移值指示該位址指標相對於為該給定的分頁表項而決定的一參考點基址的一偏移,該分頁表遍歷電路經配置成自該參考點基址及該相對偏移值來決定該位址指標。
- 如請求項1所述的設備,其中當該給定的分頁表項是指定一絕對位址值的一絕對類型的分頁表項時,該絕對位址值直接指定該位址指標,該分頁表遍歷電路經配置成自該絕對位址值決定該位址指標。
- 如請求項2所述的設備,其中該分頁表遍歷電路經配置為基於在該分頁表結構的一先前級別處的一父分頁表項中指定的一類型指示符來決定該給定的分頁表項是該相對類型還是該絕對類型。
- 如請求項2和3中的任一項所述的設備,其中該分頁表遍歷電路經配置為:回應於當該給定的分頁表項是該相對類型時,偵測到該給定的分頁表項的一子分頁表項是該絕對類型,發出信號通知有一錯誤。
- 如請求項2和3中的任一項所述的設備,其中該分頁表結構的一頂級分頁表項被限制為該絕對類型的該分頁表項。
- 如請求項2和3中的任一項所述的設備,其中允許一葉分頁表項是該相對類型的該分頁表項;對該葉分頁表項,該位址指標識別該經轉譯位址。
- 如請求項2和3中任一項所述的設備,其中該分頁表遍歷電路經配置成決定將與對齊一分頁表的一位址的一結果相對應的一大小對齊位址決定為該給定的分頁表項的該參考點基址,該結果包括至基於一大小參數所選擇的一位址大小邊界的該給定的分頁表項,該大小參數係為該給定的分頁表項而由該給定的分頁表項的一父分頁表項指定。
- 如請求項1至3中的任一項所述的設備,其中該分頁表遍歷電路經配置為從一區塊表的一選定項中獲得該給定的分頁表項的該參考點基址,基於在該給定的分頁表項的一父分頁表項中指定的一區塊表項識別符來選擇該區塊表的該選定項。
- 如請求項2和3中的任一項所述的設備,其中該相對類型的分頁表項與一大小參數相關聯,該參考點基址和該大小參數共同識別由該相對類型的分頁表項指定之該位址指標的一邊界位址區域。
- 如請求項9所述的設備,其中當給定的分頁表項是該相對類型的分頁表項時,該分頁表遍歷電路經配置為:當該位址指標在由該給定的分頁表項指定的該邊界位址區域之外時,發出信號通知有一錯誤,該位址指標係由該給定的分頁表項的一降冪分頁表項指定。
- 如請求項9所述的設備,其中在該相對類型的分頁表項的一父分頁表項中直接指定該大小參數。
- 如請求項9所述的設備,其中在一區塊表的一選定項中指定該大小參數,基於該相對類型的分頁表項的一父分頁表項中所指定的一區塊表項識別符來選擇該區塊表的該選定項。
- 如請求項7所述的設備,其中當該給定的分頁表項是該相對類型的分頁表項時,該分頁表遍歷電路經配置成當為該給定的分頁表項的一子分頁表項所識別的該大小參數指示一比與該給定的分頁表項相關的該大小參數大的大小時,發出信號通知有一錯誤。
- 一種方法,包括以下步驟: 執行一分頁表遍歷,以從存儲在記憶體系統中之包括複數個級別的分頁表的一分頁表結構中獲取分頁表項,以轉譯記憶體位址,每個分頁表項識別一位址指標,該位址指標用於識別以下各項之一者:一經轉譯位址及在該分頁表結構的一下一級別處之一子分頁表的一位址;其中: 當一給定的分頁表項是指定一相對偏移值的一相對類型的分頁表項時,該相對偏移值指示該位址指標相對於為該給定的分頁表項而決定的一參考點基址的一偏移,自該參考點基址及該相對偏移值來決定該位址指標。
- 一種電腦程式,包括: 分頁表遍歷程式邏輯,其從包含複數個級別的分頁表的一分頁表結構中獲取分頁表項,每個分頁表項識別一位址指標,該位址指標識別以下各項中之一者:一經轉譯位址及在該分頁表結構的一下一級別處之一子分頁表的一位址;其中: 當一給定的分頁表項是指定一相對偏移值的一相對類型的分頁表項時,該相對偏移值指示該位址指標相對於為該給定的分頁表項而決定的一參考點基址的一偏移,該分頁表遍歷程式邏輯經配置以自該參考點基址及該相對偏移值來決定該位址指標。
- 一種存儲請求項15的電腦程式的存儲媒體。
- 一種設備,包括: 記憶體管理電路,其基於存儲在記憶體系統中之一分頁表結構中定義的分頁表項來轉譯記憶體位址,該分頁表結構包括複數個級別的分頁表;及 分頁表遍歷電路,其從該分頁表結構中獲取該等分頁表項以供該記憶體管理電路使用,每個分頁表項識別一位址指標,該位址指標用於識別以下各項中之一者:一經轉譯位址及在該分頁表結構的一下一級別處之一子分頁表的一位址;其中: 當一給定的分頁表項指定一後代項限制指示符時,該分頁表遍歷電路經配置成當該給定分頁表項的一後代分頁表項識別到位於由該給定的分頁表項所識別的一邊界位址區域之外的一位址指標時,發出信號通知有一錯誤。
- 如請求項17所述的設備,其中該邊界位址區域包括從一參考點基址開始的一指定大小的一區域;及 該給定的分頁表項指定一大小參數,該大小參數指示該指定大小。
- 如請求項18所述的設備,其中該參考點基址包括一大小對齊位址,該大小對齊位址相對應對齊一分頁表的一位址的一結果,其包括至基於該大小參數所選擇的一位址大小邊界的該給定的分頁表項的一子分頁表項。
- 如請求項17所述的設備,其中該給定的分頁表項指定一區塊表項識別符,該區塊表項識別符識別一區塊表的一項,該區塊表的該項指定一參考點基址和該邊界位址區域的大小。
- 一種方法,包括以下步驟: 為轉譯記憶體位址執行一分頁表遍歷,以從存儲在一記憶體系統中的一分頁表結構中獲取分頁表項,該分頁表結構包含複數個級別的分頁表,每個分頁表項識別用於識別以下各項之一者的位址指標:一經轉譯位址,及在該分頁表結構的一下一級別處之一子分頁表的一位址; 回應於偵測到一給定的分頁表項指定一後代項限制指示符,及該給定的分頁表項的一後代分頁表項識別到位於由該給定的分頁表項所識別的一邊界位址區域之外的一位址指標,發出信號通知有一錯誤。
- 一種電腦程式,包括: 分頁表遍歷程序邏輯,其從包含複數個級別的分頁表的一分頁表結構中獲取分頁表項,每個分頁表項識別一位址指標,該位址指標識別以下各項之一者:一經轉譯位址及在該分頁表結構的一下一級別處之一子分頁表的一位址;其中: 當一給定的分頁表項指定一後代項限制識別符時,該分頁表遍歷程序邏輯經配置為當該給定的分頁表項的一後代分頁表項識別到位於由該給定的分頁表項所識別的一邊界位址區域之外的一位址指標時,發出信號通知有一錯誤。
- 一種存儲媒體,其存儲根據請求項22所述的電腦程式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1903901.5A GB2582362B (en) | 2019-03-21 | 2019-03-21 | Page table structure |
GB1903901.5 | 2019-03-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202036307A true TW202036307A (zh) | 2020-10-01 |
Family
ID=66381306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109101515A TW202036307A (zh) | 2019-03-21 | 2020-01-16 | 分頁表結構 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220188245A1 (zh) |
KR (1) | KR20210138675A (zh) |
CN (1) | CN113574512A (zh) |
GB (1) | GB2582362B (zh) |
TW (1) | TW202036307A (zh) |
WO (1) | WO2020188233A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021072721A1 (zh) * | 2019-10-17 | 2021-04-22 | 华为技术有限公司 | 一种地址翻译方法及装置 |
US11429522B2 (en) * | 2020-10-09 | 2022-08-30 | Western Digital Technologies, Inc. | Storage delta compression |
KR102508982B1 (ko) | 2021-10-18 | 2023-03-09 | 에스케이텔레콤 주식회사 | 단말 장치 및 그 장치에서 수행되는 인터페이스 방법 |
CN115190102B (zh) * | 2022-07-22 | 2024-04-16 | 北京象帝先计算技术有限公司 | 信息广播方法、装置、电子单元、soc及电子设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0421047A (ja) * | 1990-05-14 | 1992-01-24 | Hitachi Ltd | アドレス変換装置 |
GB2251102B (en) * | 1990-12-21 | 1995-03-15 | Sun Microsystems Inc | Translation lookaside buffer |
WO1994027222A1 (de) * | 1993-05-10 | 1994-11-24 | Jochen Liedtke | Verfahren zum umsetzen einer virtuellen speicheradresse mit einer ersten länge in eine realadresse mit einer zweiten länge |
US5978892A (en) * | 1996-05-03 | 1999-11-02 | Digital Equipment Corporation | Virtual memory allocation in a virtual address space having an inaccessible gap |
US8381032B2 (en) * | 2008-08-06 | 2013-02-19 | O'shantel Software L.L.C. | System-directed checkpointing implementation using a hypervisor layer |
US10241924B2 (en) * | 2016-07-18 | 2019-03-26 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation using an array of tags |
US10528478B2 (en) * | 2017-05-30 | 2020-01-07 | Ati Technologies Ulc | Page table management for differing virtual and physical address page alignment |
-
2019
- 2019-03-21 GB GB1903901.5A patent/GB2582362B/en active Active
-
2020
- 2020-01-03 WO PCT/GB2020/050002 patent/WO2020188233A1/en active Application Filing
- 2020-01-03 CN CN202080022040.XA patent/CN113574512A/zh active Pending
- 2020-01-03 US US17/593,319 patent/US20220188245A1/en active Pending
- 2020-01-03 KR KR1020217032783A patent/KR20210138675A/ko unknown
- 2020-01-16 TW TW109101515A patent/TW202036307A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
KR20210138675A (ko) | 2021-11-19 |
GB2582362B (en) | 2021-08-04 |
WO2020188233A1 (en) | 2020-09-24 |
JP2022528513A (ja) | 2022-06-14 |
GB201903901D0 (en) | 2019-05-08 |
US20220188245A1 (en) | 2022-06-16 |
GB2582362A (en) | 2020-09-23 |
CN113574512A (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11074191B2 (en) | Linear to physical address translation with support for page attributes | |
TW202036307A (zh) | 分頁表結構 | |
US8738889B2 (en) | Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts | |
US9471292B2 (en) | Binary translation reuse in a system with address space layout randomization | |
JP7445431B2 (ja) | 命令の実行を制御する装置および方法 | |
CN110574009A (zh) | 用于管理对能力的使用的设备和方法 | |
TWI812798B (zh) | 用於控制記憶體存取的裝置及方法 | |
KR20230017832A (ko) | Tag 체킹 장치 및 방법 | |
US10558486B2 (en) | Memory address translation management | |
JP7495947B2 (ja) | ページテーブル構造 | |
TWI807094B (zh) | 記憶體存取控制 | |
TW202340955A (zh) | 使用能力約束記憶體存取之技術 | |
GB2606185A (en) | Technique for constraining access to memory using capabilities | |
KR20240004738A (ko) | 캐퍼빌리티를 사용하여 메모리에 대한 액세스를 제약하기 위한 기술 |