TWI605336B - 監督記憶體管理單元 - Google Patents

監督記憶體管理單元 Download PDF

Info

Publication number
TWI605336B
TWI605336B TW104132422A TW104132422A TWI605336B TW I605336 B TWI605336 B TW I605336B TW 104132422 A TW104132422 A TW 104132422A TW 104132422 A TW104132422 A TW 104132422A TW I605336 B TWI605336 B TW I605336B
Authority
TW
Taiwan
Prior art keywords
mmu
memory
supervisory
address
cpu
Prior art date
Application number
TW104132422A
Other languages
English (en)
Other versions
TW201629763A (zh
Inventor
德瑞克A 雪爾路克
Original Assignee
慧與發展有限責任合夥企業
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧與發展有限責任合夥企業 filed Critical 慧與發展有限責任合夥企業
Publication of TW201629763A publication Critical patent/TW201629763A/zh
Application granted granted Critical
Publication of TWI605336B publication Critical patent/TWI605336B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

監督記憶體管理單元 發明領域
本發明係有關於監督記憶體管理單元。
發明背景
當今之中央處理單元(CPU)架構通常實行於該CPU的一記憶體管理單元(MMU)中所實行的記憶體管理之一個單一層,其被使用以管理依電性主要記憶體(例如,DRAM)之一對應的單一層。該MMU採用通常被稱為一轉譯後備緩衝器(TLB)的一轉譯快取,藉由被稱為一分頁表(PT)之儲存部而被支援,以及用以應來自該分頁表(PT)之要求而移置該TLB的一硬體或軟體裝置,其有時被稱為一分頁移行器(PW)。該MMU同時也可以包含用以檢查存取許可、測試故障情況、以及如果必要時產生一同步分頁故障(PF)之邏輯-其致使藉由稱為分頁故障處置器(PFH)之一處置器常式的CPU之執行。
發明概要
依據本發明之一實施例,係特地提出一種系統,其 包括:一中央處理單元(CPU),其處理有關於藉由該CPU所產生之一虛擬位址之資料;一第一記憶體管理單元(MMU),其用以轉譯有關於藉由該CPU被處理之該資料之該虛擬位址至一記憶體之一實際位址;以及一監督MMU,其用以轉譯該第一MMU之實際位址至供用於該記憶體中資料之儲存和檢索之一儲存位址,其中該監督MMU控制經由該儲存位址至記憶體之存取。
100、200、600‧‧‧系統
110‧‧‧監督記憶體管理單元
120、610‧‧‧中央處理單元(CPU)
130、214、320、440、624‧‧‧記憶體
140、224‧‧‧第一MMU
160‧‧‧其他MMU之實際位址
210、630‧‧‧監督MMU
212‧‧‧監督故障處置器
216‧‧‧CPU
220‧‧‧核心
225‧‧‧第一TLB
226‧‧‧快取
230‧‧‧記憶體分頁表
234‧‧‧第二TLB
240‧‧‧應用資料
244‧‧‧記憶體控制器
250‧‧‧媒體控制器
260‧‧‧儲存分頁表
270‧‧‧故障回授路徑
274、650‧‧‧分頁故障處置器
280‧‧‧信標
300、400‧‧‧處理單元
310、410-430‧‧‧監督記憶體管理單元
330-350、440-460‧‧‧CPU/MMU
500‧‧‧控制存取共同記憶體儲存區域之方法
510-540‧‧‧控制存取共同記憶體儲存區域步驟
620‧‧‧第一記憶體管理單元
640‧‧‧轉譯後備緩衝器(TLB)
圖1例示採用一監督記憶體管理單元以控制存取複數個處理單元所採用的一共同記憶體儲存區域之系統範例。
圖2例示採用一監督記憶體管理單元和監督故障處置器以控制存取一共同記憶體儲存區域之系統範例。
圖3例示用以饋送一單一監督記憶體管理單元以控制存取一共同記憶體儲存區域之複數個處理單元範例。
圖4例示用以饋送複數個監督記憶體管理單元以控制存取一共同記憶體儲存區域之複數個處理單元範例。
圖5例示用以控制存取複數個處理單元所採用的一共同記憶體儲存區域之方法範例。
圖6例示一系統之範例,其採用一監督記憶體管理單元和轉譯後備緩衝器(TLB)以控制存取複數個處理單元所採用的一共同記憶體儲存區域。
較佳實施例之詳細說明
這揭示係關於一記憶體管理架構,其採用一監督記憶體管理單元(MMU)(或單元)以控制存取可以為複數個處理單位所存取的一共同記憶體儲存區域。各個處理實體可以包含具有一個或多個核心之一個或多個中央處理單元(CPU)以進行對該共同記憶體儲存區域之處理。該等各別的CPU可以包含一第一記憶體管理單元(MMU)(同時其也被稱為一第一層MMU)以進行自CPU之虛擬位址空間至關於共同儲存區域之一實際位址空間的一啟始位址轉譯。與其經由所產生的實際位址之一直接實際映射至共用儲存區域,監督MMU(未展示出,例如,參看圖4)藉由轉譯該實際位址至共用儲存區域之一儲存位址而進行另一個位址轉譯(例如,第二層轉譯)。此等第二層轉譯消除對於CPU 110進行其之獨有轉譯至共同記憶體儲存區域的需求,而同時也保護來自同時存取共同記憶體儲存區域之其他較少信任實體的資料之安全。
監督MMU可以控制對共用儲存區域之許可並且因此允許複數個CPU以一安全方式而存取記憶體(例如,不允許一非信任CPU存取另一個CPU之資料)。例如,監督MMU可以基於儲存於一分頁表中之許可而判定共同記憶體儲存區域之哪些區域可以被任何所給予的CPU所存取。如果對一共同記憶體區域之一存取被要求,一所給予的CPU不具有必要的存取之許可,例如,一故障可以被產生,其可以進一步地藉由監督MMU和產生故障之CPU而啟動故障處理。除了第二層位址轉譯、許可控制、以及故障處 置之外,監督MMU也可以進行任務,例如,如在此所揭示之許多其他功能之中的分頁表處理、分頁故障處置、分頁操作、記憶體互換、記憶體寫入上複製、讀取上分配。
圖1例示一系統100之範例,其採用一監督記憶體管理單元(MMU)110以控制存取複數個處理單元所採用之一共同記憶體儲存區域。系統100包含一中央處理單元(CPU)120以處理關於利用該CPU所產生的一虛擬位址之資料。如此處所使用地,詞語“虛擬位址"是指被使用於CPU 120之內的內部位址,其被採用以操作處理程序和線程,並且藉由於CPU第一層MMU中所進行的位址轉譯而自實際位址被提取。雖然未被展示出(例如,參看圖2),CPU 120可以包含複數個處理核心以進行程式和資料之處理。如此處所使用地,詞語“CPU”可以包含一單一核心或可以包含複數個核心,其中各個核心是藉由監督MMU 110而給予相似或不相似之許可以存取一記憶體130。同時CPU 120也可以與其他CPU合併在一起,例如,以進行一伺服器及/或客戶功能。複數個伺服器及/或客戶可以被採用以經由監督MMU 110(或數個MMU)而存取記憶體130。因此,監督MMU 110可以控制以及便利存取,例如,有關一單一CPU核心、複數個CPU核心、複數個CPU晶片或模組、複數個伺服器、及/或複數個客戶之記憶體130。為簡潔說明關於圖1之目的,一個單一CPU 110被例示。複數個核心和複數個CPU範例在下面相關之圖2-4中被例示並且被說明。
CPU 120包含一第一記憶體管理單元(MMU)140 以將藉由CPU核心所產生之虛擬位址轉譯為關於該CPU所處理的資料之記憶體130的一實際位址。於一習見的系統中,該實際位址將直接地被應用作為記憶體130之用於資料之儲存和檢索的一位址。但是在系統100中,監督MMU 110將第一MMU 140之實際位址轉譯為記憶體130中用於資料之儲存和檢索的一儲存位址。記憶體130中之該等儲存位址被展示如SA 1、SA 2、至SA N,其中N是表示一正整數。同時儲存位址SA 1至SA N之各者也可以代表記憶體位址之一區塊,例如,可以被稱為一分頁區。於一範例中,該記憶體130可以是一非依電性儲存器,在另一範例中可以是一依電性儲存器,或依電性和非依電性儲存器之一組合。監督MMU 110控制經由與第一MMU 140相關聯之儲存位址之存取記憶體130。
於監督MMU 110功能之一範例中,該監督MMU控制存取記憶體130(同時也稱為共同記憶體儲存區域),其可以被複數個處理單位所存取,例如,在步驟160,經由來自CPU 120之讀取或寫入要求以及來自其他CPU之讀取或寫入要求。如先前所提及地,各個處理實體可以包含具有一個或多個核心之一中央處理單元(CPU)以進行共同記憶體儲存區域130之處理。各別的CPU可以包含一第一記憶體管理單元(MMU)(其也稱為一第一層MMU)以進行自CPU虛擬記憶體至一實際位址的一啟始位址轉譯。
與其一直接實際經由所產生的實際位址映射至共用儲存區域,監督MMU 110藉由轉譯該實際位址為記憶 體130之一儲存位址而進行一第二位址轉譯(其同時也稱為第二層轉譯)。此第二層轉譯消除需要CPU 120進行其之獨有的轉譯至記憶體130,而自動地確保其之資料免於同時存取該共同記憶體儲存區域之其他較不受信任實體之存取。
監督MMU 110可以判定共同記憶體儲存區域130之哪些區域可以被任何給予的CPU所存取(例如,藉由界定對於各CPU之許可的儲存分頁表而判定)。於一範例中,CPU 120可以是透過記憶體區塊之一子集(例如,藉由SA 1和SA 2所指定)而給予許可,但是拒絕可能被准予至其他CPU之其他區塊的存取。如果記憶體130中之一共同記憶體區域被要求,其是一給予的CPU不具有必要的許可以存取,例如,一外部故障回應可能被產生(例如,參看圖2),其可以藉由監督MMU 110和產生故障之CPU而進一步地啟動故障處理。同時於一範例中,許可也可分別地被指定以供讀取相對寫入相對指令擷取。
在監督MMU 110不能安置一給予的儲存位址於其之內部緩衝器中的事件中,MMU操作同時也可以包含存取記憶體130之分頁表(例如,參看圖2)。除了第二層位址轉譯、許可控制、以及故障處置之外,監督MMU 110也可以進行任務,例如,如在此所揭示之許多其他功能之中的分頁表處理、分頁故障處置、分頁操作、記憶體互換、記憶體寫入複製、讀取分配。
雖然多層系統100可以被採用以管理非依電性記憶體130,依電性記憶體管理同時也可以藉由系統100而進 行。例如,監督MMU 110可以分配依電性記憶體之信任區域,以至於僅那些具有必要許可的CPU可以存取該依電性記憶體。此等依電性管理範例可以被採用於在複數個伺服此等依電性管理範例可以被採用於在複數個伺服器/客戶之間的一通訊架構,例如,其中信任記憶體區域被保留以供用於伺服器中之使用並且共用儲存區域被採用於伺服器之間的通訊。例如,監督MMU 110基於一給予要求的許可而控制存取依電性記憶體之共用和信任區域。
下面說明在習見的單一層MMU系統和展示於圖1中之多層系統100之間的差異範例。習見的CPU架構通常實行於一第一層記憶體管理單元(MMU)中所實行的記憶體管理之一單一層,其被使用以管理依電性主要記憶體(例如,DRAM)之一對應的單一層。單一層MMU架構使用通常被稱為一轉譯後備緩衝器(TLB)之一轉譯快取,藉由被稱為一分頁表(PT)之儲存部而被支援,用以應來自該PT之要求而移置該TLB的一硬體或軟體裝置,被稱為一分頁行者(PW),以及用以檢查存取許可、測試故障情況、並且如果必要時則產生一同步分頁故障(PF)之邏輯-其致使藉由被稱為分頁故障處置器(PFH)之一處置器常式的CPU之執行。
單一層系統中優勢軟體之一負責層,一般如一操作系統、驅動器、超管理器、或其一些組合,代表複數個處理程序管理一分頁表的內容,其各具有一虛擬記憶體(VM)映圖,其是將被轉譯成為一個一般共用實際位址(PA)映圖之一部份。這優勢軟體同時也藉由單一層MMU之援助 而管理特點,例如,PF機構、創作、刪除、以及在虛擬記憶體空間之區域儲存層(亦稱為分頁)之間的轉換。這些操作可以採用許多形式且具有許多名稱,例如,分頁入、分頁出、互換、寫入複製、讀取分配、以及類似者。
電腦架構中之一新興趨勢是對於非依電性記憶體之負載/儲存存取-模式的附帶以服務主要記憶體和儲存器兩者之組合需要。負載-儲存方法允許軟體直接地存取在非依電性記憶體內之資料結構,而無需依賴於傳統區塊為基礎之輸入/輸出(I/O)儲存模式。這是有益的,因為資料持續留存在一單一位置中,可避免阻擋和解阻擋的經常開支和無效率、在應用和操作系統緩衝器之間複製、以及在操作系統緩衝器和儲存裝置之間複製。因此,存取持久的儲存成為一單一直接、簡單負載或儲存操作,而無需額外資料移動、優勢提升、以及類似者之昂貴性能的經常開支。
於一範例中,非依電性負載/儲存存取記憶體具有位址管理需要,其超出僅被設計供用於依電性主要記憶體管理的一單一層MMU之能力。另外的位址轉譯同時也應被進行,例如,其不能藉由一單一層系統而供應。例如,進行於一習見CPU MMU中的VA-至-PA轉譯用於將處理程序的虛擬位址空間彼此分離,並且用以映射它們至無連續或片斷需求之所需的儲存器,以便基於程式要求而動態地調整它們,以及當需要時在儲存層之間轉移地區。所有這些操作隱喻DRAM的所有自由分頁是可互換的假設。任何虛擬位址分頁可以僅基於要求和可用性而被映射至任何 DRAM分頁。當被映射時,一DRAM分頁之內容是唯一的,但是當返回至一自由池域時,其因此再次成為可互換的。
但是,非依電性記憶體不具有這相同之可互換性質。即使當它們目前不被映射至任何給予的實際或虛擬位址時,非依電性記憶體之分頁也具有應該被保留的一身份,-正好如當它們不被讀取時,以及當電腦是不供電時,一傳統碟片檔案系統中之檔案保留它們的資料安排和內容。因此,一管理功能是需要的,因而非依電性記憶體中儲存器之各分頁具有一些顯明的辨識“標籤”,其可以被使用以重複地辨識相同分頁,而無視於在時間上呈現之任何虛擬-至-實際映射。這顯明的辨識可以採取許多形式-例如,其可出現如同一容積名稱和檔案系統路徑,或簡化至數目,例如,一邏輯單元數目(LUN)和一區塊偏移的一些等效概念。
於一個單一層架構中,該標籤可以藉由獨立硬碟冗餘陣列(RAID)族群通用唯一識別符(UUID)和RAID-族群-相對偏移位址,或藉由一虛擬容積UUID和一虛擬-容積相對偏移位址而被說明。不論該顯明的識別符採取何形式,此識別符同時也可以被稱為一“儲存位址”(SA)。其同時也可以是下列情況,可存取一所給予的CPU之儲存位址是一較大組合SA空間之一子集,其為許多其他處理器所共用,具有可能地複雜之存取許可的樣型與將待解決之映射-一些映射是排他性的,並且其他則共用於之CPU間。這型式的映射-自CPU實際位址至儲存位址-是呼叫相似記憶體管理功能的一操作,第一層單晶片上CPU MMU針對其被設 計-亦即,位址轉譯、分頁表諮詢、分頁移行、分頁故障、以及類似者。遺憾地,如在此所揭示地,習見的CPU僅具有一個單一MMU,而非複數個MMU層。
應注意到,簡單地組合虛擬-至-實際和實際-至-儲存位址兩者成為藉由一單一MMU所管理之一單一組合轉譯一般不是一可實行的選項。因為在不同的處理單位之間的可信賴位準,這技術將出現困難。例如,執行於一操作系統中之優勢記憶體管理數碼需要具有充分的存取以觀看和改變對於一些轉譯方面的分頁表內容-例如,強制在不同處理程序的虛擬位址空間之間的分離-然而卻可能不被信任,以修改對於其他方面之分頁表內容-例如,控制一SA空間的哪一子集給予它本身存取許可。大致上,記憶體管理應該被信任於執行伺服器上之帶內的優勢OS軟體,因而複數個伺服器所共用之一儲存池的儲存管理將藉由一更被信任之個別的儲存器管理實體而處置,例如,在此所揭示之監督MMU 110,而非該等伺服器之任何一者。
圖2例示一系統200之範例,其採用一監督MMU 210以及監督故障處置器212以控制被展示如記憶體214的一共同記憶體儲存區域之存取。相似於上面之圖1,記憶體214可以包含依電性及/或非依電性儲存器。系統200包含具有一個或多個核心220之一中央處理單元(CPU)216,以依據CPU和記憶體214之內部操作而進行處理。一第一MMU 224進行用於核心220之虛擬記憶體至實際記憶體的一第一層位址轉譯。第一MMU 224包含一第一TLB 225以便利該第 一層位址轉譯。CPU 216也可以包含一個或多個快取226以儲存資料或指令於晶片上。如果不能置於快取之內的一讀取或寫入要求形成至快取226,一外部讀取或寫入要求可以被發出至監督MMU 210以儲存資料於記憶體214或自記憶體214取得資料。
如所展示地,CPU 216可以支援系統200中之各種資料路徑。如果一TLB快取漏失遭遇於快取226,路徑A可以被採用而可旁通監督MMU以存取一記憶體分頁表230。路徑A可以支援至記憶體分頁表230之分頁移行讀取。路徑B起源自核心220並且通過TLB 225和快取226繼續行進。路徑B通過監督MMU 210中之一第二TLB 234繼續行進以存取應用資料240(同時也被稱為APP資料)。路徑B支援帶內讀取,例如,經由利用核心220和第一MMU 224處理而發生。
在路徑B操作期間,監督MMU 210經由TLB 234而進行一實際位址至儲存位址轉譯以存取應用資料240。一第三路徑C同時也可以藉由CPU 216而受支援。該路徑C起源於快取226且通過監督MMU 210和TLB 234繼續行進至應用資料240。路徑C支援自快取226所發出的寫入,例如,其可以產生自快取壓力逐出(例如,用於讀取之可用快取空間不是可供用於快取中並且因此被轉移至外部記憶體)。
一個或多個構件可以支援在CPU 216、監督MMU 210、及記憶體214之間的路徑操作。例如,此等構件可以被提供作為一記憶體匯流排架構之部件。例如,這些可以包含一記憶體控制器244及/或一媒體控制器250。在一些範 例中,記憶體控制器244和媒體控制器250之功能可以被組合進入一單一積體電路。媒體控制器250控制特定於附帶媒體之型式的各種記憶體介面(例如,各種非依電性記憶體型式、DRAM、快閃、以及類似者)。這些可以包含,例如,媒體-特定解碼或交錯(例如,列/行/庫集/行列序)、媒體特定磨耗管理(例如,磨耗位準測量)、媒體特定錯誤管理(例如,ECC更正、CRC檢測、消耗再定位、裝置刪除)、及/或媒體特定最佳化(例如,衝突排程)。記憶體控制器244控制無關於媒體,但是卻特定於所採用的CPU或系統特點之各種記憶體介面方面。這可以包含,例如,系統位址解碼(例如,在複數個媒體控制器之間的交錯,如果有多於一者的話),例如,和冗餘特點(例如,RAID、鏡射、以及類似者)。
系統200中支援之其他路徑範例包含一路徑D,其自監督MMU 210執行至一儲存分頁表260。當快取漏失發生於監督MMU 210中時,儲存分頁表被採用。例如,當第二層快取漏失發生於監督MMU 210之TLB 234中時,路徑D可以被採用,例如,用於分頁移行讀取。路徑E可以起源於外部故障處置器212,其回應至來自監督MMU 210的一故障輸出(FAULT)。如所展示,同時路徑E也可以存取儲存分頁表260。故障處置器212同時也可以提供一外部故障回應270至CPU 216,以通知它一第二層故障已藉由監督MMU 210而發出。
各別的第一層MMU,例如,MMU 224,一般諮詢它們的各別的分頁表以判定至一虛擬位址之代表一讀取 或寫入之許可、位址映射以及其他屬性。當MMU 224查詢一虛擬位址時,記憶體分頁表230通知MMU 224,不僅是虛擬位址被映射至哪個實際位址,但同時也是有哪些許可和其他屬性應用至那映射。記憶體分頁表230可以被建構,以至於在操作系統之下的不同處理具有明確的映射、屬性、以及許可。如果列表中所列舉的許可阻止讀取或寫入之完成,一分頁故障可以被產生,並且藉由CPU 216所執行的一軟體分頁故障處置器(PFH)可能或不能更正儲存於記憶體分頁表230中之許可,並且因此再發出具有一成功的結果之讀取或寫入。如果MMU 224不能更正該等許可(例如,因為所被要求者是非法的),則CPU 216上之故障處置器軟體可以採取任何適當的動作。通常,這是用以終止形成非法要求之處理。但是,第一層MMU 224僅管制存取實際位址範圍之許可。這是適足以供用於一操作系統,在其監督之下其藉由非優勢處理程序控制至實際地映射資源之存取。
監督MMU 210和其之監督故障處置器212監督儲存位址之存取許可,代表已藉由第一層MMU 224自虛擬位址被轉譯至一實際位址的一讀取或寫入。監督MMU 210諮詢其之儲存分頁表260以判定許可、位址映射以及其他屬性。監督/儲存分頁表260可以被建構,以至於不同的CPU、伺服器、及/或客戶具有明確的映射、屬性、以及許可。當監督MMU 210查詢一實際位址時,儲存分頁表260通知MMU 210,不僅實際位址被映射至哪個儲存位址,而同時也是甚麼許可和其他屬性應用至那些映射。如果儲存分頁 表260中所列舉的許可阻止讀取或寫入之完成,修正的動作動作可能是需要的,類似於一分頁故障,但是實行於一信任監督故障處置器212中而非發出讀取或寫入的CPU中。
當監督故障處置器212是正採取行動時,等候實際-至-儲存映射之讀取或寫入可能暫時地被保留。當監督故障處置器212已完成其之行動時,可能包含更新儲存分頁表260以變更許可,MMU 210可能再嘗試實際-至-儲存器轉譯。接著讀取或寫入可能是可以藉由更正之許可而完成。如果監督故障處置器212不能更正該等許可(例如,因為所要求的是非法)接著監督MMU 210可以經由回授路徑270返回一錯誤回應數碼至CPU 216。不同於第一層MMU 224,監督MMU 210管制用以存取儲存位址範圍之許可。因為監督MMU 210和監督故障處置器212可以在CPU 216之外操作以及無關於任何的CPU 216,它們可以比於CPU之MMU 224中所實行的層提供更多於代表儲存器之管理的信任層。因此,儲存器可以藉由一信任實體,例如,監督MMU 210,代表許多非信任CPU、伺服器以及客戶而被管理。
於一範例中,監督MMU 210可以在外部邏輯中的CPU216之外面被實行,雖然在其他範例中,其同時也可以被整合進入該CPU中。監督MMU 210可以是在任何CPU快取層之間的第一層MMU 224之下游,或於其他範例中之最後快取層的下游。監督MMU 210可以具有相似於第一MMU 224之功能,其包含TLB、分頁表(PT)、分頁故障(PF)能力、位址轉譯、以及類似者。於一範例中,TLB234諮詢 對於每一個最後位準快取漏失而發生。因此,例如,其可以是與同調區域記憶體讀取相關聯。如先前所提及地,其同時也可以是與快取收回(寫入)相關聯。
監督MMU 210之分頁故障能力可能導致CPU216用以執行一分頁故障處置器(PFH),其是相似於自一傳統第一層MMU在一“標準”分頁故障中可能發生者。對於這發生,該CPU 216將自一現成CPU被修改以接收來自故障回授路徑270之輸入以執行該PFH。但是,如果該CPU是一未經修改之現成單元,這是不可能的,因為回應於在成功的第一層MMU位址轉譯之後的任何時間所檢測之任何情況,目前技術CPU沒有提供進入一同步故障處置器之機構。
除了用以導致一分頁故障處置器274在招致故障之CPU 216上進行的能力之外,一能力同時也被提供以導致故障處置器212於一些其他CPU(或狀態機器)上進行,例如,一更優勢儲存管理處理器,其於這範例中被展示作為監督故障處置器212。這能力允許故障-觸發行為,其可以操作儲存層分頁表(PT),而不必給予至這些列表之直接存取許可至攜帶故障之較不信任的CPU。傳信故障的CPU之一機構範例可以經由儲存管理CPU 212上完成PFH碼之一輪詢信標280而被提供,因而故障的CPU 216可以結束其之獨有的PFH並且恢復正常操作。
如先前所提地,系統200支援於負載/儲存-存取非依電性記憶體中儲存相關之位址轉譯(例如,用以支援容積虛擬化、分割、RAID、寫入上複製、遷移、以及類似者)。 系統200在明確的軟體或硬體實體控制之下,藉由離析它們的功能成為具有明確的分頁表之不同的MMU,而提供在記憶體和儲存管理之間的責任義務之分離-因而允許儲存器適當地共用於具有各個伺服器僅為其自己的資料所信任之不同伺服器之間。
圖3例示複數個處理單元之範例,其饋送一單一監督記憶體管理單元(MMU)310以控制存取一共同記憶體儲存區域320。於這範例中,複數個CPU/MMU組合被展示於330至340。各別的CPU/MMU 330-340之各者產生讀取或寫入至實際位址,如先前所述地(例如,參看圖1和2)。自CPU/MMU 310至340之各者至實際位址的讀取和寫入被饋送至監督MMU 310,其產生對於記憶體320之一對應的儲存位址。如以上所提及地,監督MMU 310可以包含除了如此處所述之位址轉譯能力外也包含故障處理能力。
圖4例示複數個處理單元之範例,其饋送複數個監督記憶體管理單元以控制存取一共同記憶體儲存區域。於這範例中,複數個監督MMU被展示於410至430中,以控制存取一記憶體440,其中展示在440至460監督MMU之各者藉由一個別的CPU/MMU被驅動。於這範例中,CPU/MMU 440至460進行第一層虛擬至實際位址轉譯。各別的監督MMU 410至440之各者可以轉譯至記憶體440的實際位址至儲存位址。如果需要的話,來自監督MMU之各者的輸出可以被組合於一共同位址匯流排上。在一些範例中,監督MMU之各者可以被指定以管理記憶體440的不同地區。在 其他範例中,它們可以映射由複數個CPU 410所共用存取的共同地區。
鑑於如上所述之結構和功能特點,一範例方法將參考圖5而較佳地被了解。雖然,為了說明簡潔性之目的,該方法作為連續執行地展示和說明,應了解與理解,該方法是不受限定於所例示的順序,由於方法之部份可以如此處所展示以及所述之不同的順序及/或同時地發生。例如,此方法可以藉由各種構件而執行以及藉由一積體電路、電腦、或一控制器而執行。
圖5例示方法500之範例,其用以控制存取複數個處理單元所用的一共同記憶體儲存區域。在步驟510,方法500包含藉由一處理器,回應於與一記憶體相關聯之一儲存和檢索操作,而產生一虛擬位址(例如,經由圖1之CPU 120和MMU 140)。在步驟520,該方法500包含轉譯該虛擬位址至有關於該儲存和檢索操作之該記憶體的一實際位址(例如,經由圖1之CPU 120和MMU 140)。在步驟530,該方法500包含轉譯該實際位址至供用於該記憶體中資料之儲存和檢索之一儲存位址(例如,經由圖1之監督MMU 110)。在步驟540,方法500包含經由儲存位址之映射而控制記憶體之存取。雖然未被展示,該方法500也可以包含採用被儲存於儲存分頁表中之許可以控制該記憶體之存取(例如,處理器A具有用於儲存位址區塊2和3所列舉的許可,處理器B具有用於級距位址區塊3、4、和5所列舉的許可)。
圖6例示一系統600之範例,其採用一監督記憶體 管理單元和轉譯後備緩衝器(TLB)以控制存取為複數個處理單元所採用之一共同記憶體儲存區域。該系統600包含一中央處理單元(CPU)610以處理關於藉由CPU所產生的一虛擬位址之資料。一第一記憶體管理單元(MMU)620轉譯關於藉由CPU 610所處理的資料之虛擬位址至一記憶體624的一實際位址。一監督MMU 630轉譯第一MMU 620之實際位址至用於記憶體624中之資料的儲存和檢索的一儲存位址。該監督MMU 630採用一轉譯後備緩衝器(TLB)640以轉譯第一MMU 620之實際位址至儲存位址。如果儲存位址不是安置於該TLB 640中,則該監督MMU 630進行至該記憶體624之一外部儲存器分頁表操作。一分頁故障處置器650,其回應於藉由該監督MMU 630所產生的一故障。該故障回應於藉由該監督MMU 630所進行的該儲存器分頁表操作而被發出。如關於圖2之例示和敘述,CPU 610可以經由自該分頁故障處置器650至該CPU 610的一故障回授路徑而接收藉由該監督MMU 630所產生的一分頁表錯誤之通知。監督MMU 630和CPU 610可以回應於該分頁表錯誤而採用一輪詢信標以協調故障操作。
上面所述者是範例。當然,其是不可能用以說明每一個可以想像的構件或方法組合,但是一般熟習本技術者應明白,本發明可以有許多進一步的組合和排列。因此,本發明是意欲包含所有此等變更、修改、以及變化,其落在包含附加申請專利範圍之本申請範疇內。此外,其中揭示或申請專利範圍列舉之“一”、“一個”、“一第一”或“另一 個”元件、或其等效者,其將被解釋為包含多於一元件之一個或多個元件,其既不需要也不排除二個或更多個此等元件。如此處所使用地,詞語“包含有”表示包含但是不受此之限定,並且詞語“包含”表示包含但是不受此之限定。詞語“基於”表示至少部份地基於。
100‧‧‧系統
110‧‧‧監督記憶體管理單元
120‧‧‧中央處理單元(CPU)
130‧‧‧記憶體
140‧‧‧第一記憶體管理單元(MMU)
160‧‧‧MMU實際位址

Claims (15)

  1. 一種系統,其包括:一中央處理單元(CPU),用以處理有關於該CPU所產生之一虛擬位址之資料;一第一記憶體管理單元(MMU),其用以轉譯該虛擬位址至有關於由該CPU處理之該資料之一記憶體之一實際位址;以及一監督MMU,其用以轉譯該第一MMU之實際位址至用於該記憶體中資料之儲存和檢索之一儲存位址,其中該監督MMU控制經由該儲存位址對該記憶體之存取。
  2. 如請求項1之系統,其中該第一MMU採用一第一轉譯後備緩衝器(TLB)以轉譯該虛擬位址至有關於由該CPU處理的該資料之該記憶體的一實際位址。
  3. 如請求項2之系統,其中該監督MMU採用一第二轉譯後備緩衝器(TLB)以轉譯該第一MMU之實際位址至用於該記憶體中資料的儲存和檢索之一儲存位址。
  4. 如請求項1之系統,其中該監督MMU採用儲存於一儲存分頁表中之許可以控制要求載入或儲存資料至該儲存位址的複數個CPU之存取。
  5. 如請求項1之系統,其進一步地包括一監督故障處置器,該監督故障處置器回應於該監督MMU所產生的一監督分頁故障而進行對該記憶體之儲存分頁表存取。
  6. 如請求項5之系統,其中該CPU經由自外部故障處置器至該CPU的一故障回授路徑,而接收該監督MMU所產生的一監督分頁故障之通知。
  7. 如請求項6之系統,其中該監督MMU和該CPU回應於該監督故障而採用一輪詢信標來協調故障操作。
  8. 如請求項1之系統,其中該記憶體包含一記憶體分頁表,該記憶體分頁表經由該第一MMU之一實際至位址轉譯而由該第一MMU直接存取。
  9. 如請求項1之系統,其中該記憶體包含一儲存分頁表,該儲存分頁表由該監督MMU或該監督MMU外部之一監督故障處置器直接存取。
  10. 如請求項1之系統,其進一步地包括在該第一MMU、該監督MMU、以及該記憶體之間的一記憶體存取路徑,其中該記憶體存取路徑支援產生自該第一MMU之快取漏失的一分頁移行讀取操作、一帶內讀取操作、或一寫入操作。
  11. 一種系統,其包括:一中央處理單元(CPU),用以處理有關於該CPU所產生之一虛擬位址之資料;一第一記憶體管理單元(MMU),其用以轉譯該虛擬位址至有關於該CPU處理之該資料之一記憶體之一實際位址;一監督MMU,其用以轉譯該第一MMU之實際位址至用於該記憶體中該資料之儲存和檢索之一儲存位址, 其中該監督MMU採用一轉譯後備緩衝器(TLB)以轉譯該第一MMU之實際位址至該儲存位址,當儲存位址不是安置於該TLB中時,則該監督MMU進行對該記憶體之一外部儲存器分頁表操作;以及一分頁故障處置器,其回應於該監督MMU所產生的一故障,該故障回應於該監督MMU所進行的該儲存器分頁表操作而被發出。
  12. 如請求項11之系統,其中該CPU經由自該分頁故障處置器至該CPU的一故障回授路徑而接收該監督MMU所產生的一分頁表錯誤之通知。
  13. 如請求項12之系統,其中該監督MMU和該CPU回應於該分頁表錯誤而採用一輪詢信標來協調故障操作。
  14. 一種方法,該方法包括下列步驟:藉由一處理器,回應於與一記憶體相關聯之儲存和檢索操作,而產生一虛擬位址;藉由該處理器,轉譯該虛擬位址至有關於該等儲存和檢索操作之該記憶體之一實際位址;轉譯該實際位址至用於該記憶體中資料之儲存和檢索之一儲存位址;以及控制經由該儲存位址之映射對該記憶體之存取。
  15. 依據請求項14之方法,其進一步地包括採用儲存於一儲存分頁表中之許可以依據該儲存分頁表中之許可指定來控制對該記憶體之存取。
TW104132422A 2014-10-23 2015-10-01 監督記憶體管理單元 TWI605336B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/061965 WO2016064403A1 (en) 2014-10-23 2014-10-23 Supervisory memory management unit

Publications (2)

Publication Number Publication Date
TW201629763A TW201629763A (zh) 2016-08-16
TWI605336B true TWI605336B (zh) 2017-11-11

Family

ID=55761270

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104132422A TWI605336B (zh) 2014-10-23 2015-10-01 監督記憶體管理單元

Country Status (3)

Country Link
US (1) US11775443B2 (zh)
TW (1) TWI605336B (zh)
WO (1) WO2016064403A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017215297A1 (de) * 2017-09-01 2018-10-25 Audi Ag Recheneinrichtung mit mehreren Recheneinheiten, Kraftfahrzeug und Verfahren zum Betrieb einer Recheneinrichtung
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11221962B2 (en) 2019-09-04 2022-01-11 Apple Inc. Unified address translation
FR3100901B1 (fr) * 2019-09-12 2021-08-27 Stmicroelectronics Grand Ouest Sas Système de protection de la mémoire
JP2023070696A (ja) * 2021-11-10 2023-05-22 ルネサスエレクトロニクス株式会社 半導体装置

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430657B1 (en) 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US6886090B1 (en) * 1999-07-14 2005-04-26 Ati International Srl Method and apparatus for virtual address translation
EP1182569B8 (en) 2000-08-21 2011-07-06 Texas Instruments Incorporated TLB lock and unlock operation
US7093100B2 (en) 2003-11-14 2006-08-15 International Business Machines Corporation Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes
EP1870814B1 (en) 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US7558939B2 (en) 2005-03-08 2009-07-07 Mips Technologies, Inc. Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor
EP1736887A3 (fr) * 2005-05-31 2009-04-22 Stmicroelectronics Sa Repertoire de pages memoire
US7653803B2 (en) * 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
WO2008055269A2 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Asymmetric memory migration in hybrid main memory
US8874831B2 (en) * 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8180996B2 (en) * 2008-05-15 2012-05-15 Calxeda, Inc. Distributed computing system with universal address system and method
JP5592942B2 (ja) * 2009-05-19 2014-09-17 ヴイエムウェア インク 仮想マシンシステムにおけるショートカット入出力
US8386745B2 (en) * 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US8635428B2 (en) 2009-12-09 2014-01-21 Oracle America, Inc. Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes
US9405700B2 (en) 2010-11-04 2016-08-02 Sonics, Inc. Methods and apparatus for virtualization in an integrated circuit
US9767039B2 (en) * 2011-07-18 2017-09-19 Vmware, Inc. Increasing granularity of dirty bit information in hardware assisted memory management systems
US20130179642A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Non-Allocating Memory Access with Physical Address
US8751830B2 (en) * 2012-01-23 2014-06-10 International Business Machines Corporation Memory address translation-based data encryption/compression
EP3373105B1 (en) 2012-03-30 2020-03-18 Intel Corporation Apparatus and method for accelerating operations in a processor which uses shared virtual memory
US20140006681A1 (en) * 2012-06-29 2014-01-02 Broadcom Corporation Memory management in a virtualization environment
KR102002900B1 (ko) 2013-01-07 2019-07-23 삼성전자 주식회사 메모리 관리 유닛을 포함하는 시스템 온 칩 및 그 메모리 주소 변환 방법
US9928033B2 (en) * 2013-06-19 2018-03-27 Nvidia Corporation Single-pass parallel prefix scan with dynamic look back
US20150089185A1 (en) * 2013-09-23 2015-03-26 International Business Machines Corporation Managing Mirror Copies without Blocking Application I/O
US9208103B2 (en) * 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
US10114760B2 (en) * 2014-01-14 2018-10-30 Nvidia Corporation Method and system for implementing multi-stage translation of virtual addresses
US20150199279A1 (en) * 2014-01-14 2015-07-16 Qualcomm Incorporated Method and system for method for tracking transactions associated with a system memory management unit of a portable computing device
US10114958B2 (en) * 2015-06-16 2018-10-30 Microsoft Technology Licensing, Llc Protected regions

Also Published As

Publication number Publication date
TW201629763A (zh) 2016-08-16
US20170153983A1 (en) 2017-06-01
WO2016064403A1 (en) 2016-04-28
US11775443B2 (en) 2023-10-03

Similar Documents

Publication Publication Date Title
TWI614669B (zh) 遷移異構處理器之間不同大小的分頁
TWI605336B (zh) 監督記憶體管理單元
US9767036B2 (en) Page state directory for managing unified virtual memory
US9575892B2 (en) Replaying memory transactions while resolving memory access faults
CA2024444C (en) Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media
US10255069B2 (en) Cleared memory indicator
US10635308B2 (en) Memory state indicator
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
US10114758B2 (en) Techniques for supporting for demand paging
US11741015B2 (en) Fault buffer for tracking page faults in unified virtual memory system
GB2565188B (en) Validating physical addresses by comparing with previous translations
US20170160979A1 (en) Direct access to de-duplicated data units in memory-based file systems
TWI515564B (zh) 管理統一虛擬記憶體的分頁狀態目錄
WO2022144646A1 (en) Migrating pages of memory accessible by input-output devices
US10394635B2 (en) CPU with external fault response handling
KR20210034612A (ko) 보호 태그 손실 처리

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees