TW202338619A - 定義用於經轉譯存取請求的權限資訊的裝置權限表 - Google Patents

定義用於經轉譯存取請求的權限資訊的裝置權限表 Download PDF

Info

Publication number
TW202338619A
TW202338619A TW112109290A TW112109290A TW202338619A TW 202338619 A TW202338619 A TW 202338619A TW 112109290 A TW112109290 A TW 112109290A TW 112109290 A TW112109290 A TW 112109290A TW 202338619 A TW202338619 A TW 202338619A
Authority
TW
Taiwan
Prior art keywords
access
translated
address
permission
permissions
Prior art date
Application number
TW112109290A
Other languages
English (en)
Inventor
亞力山大唐納德查爾斯 查德維克
尤瓦爾 艾拉德
Original Assignee
英商Arm股份有限公司
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 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW202338619A publication Critical patent/TW202338619A/zh

Links

Classifications

    • 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
    • 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/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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
    • 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/1072Decentralised address translation, e.g. in distributed shared memory systems
    • 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/1425Protection 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 physical, e.g. cell, word, block
    • G06F12/1441Protection 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 physical, e.g. cell, word, block for a range
    • 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
    • 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/654Look-ahead translation
    • 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/684TLB miss handling

Landscapes

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

Abstract

一種設備、方法及用於製造一設備之碼。該設備包含位址轉譯電路系統(116),該位址轉譯電路系統用於回應於由裝置(105)代表軟體上下文(125)發出的提前位址轉譯請求而將虛擬位址轉譯為實體位址。該設備亦包含經轉譯存取控制電路系統(117),該經轉譯存取控制電路系統用於基於在裝置權限表(220)中定義的權限資訊,回應於由裝置(105)代表軟體上下文文(125)發出的經轉譯存取請求來控制對記憶體(110)的存取,其中該等對應存取權限提供用於檢查來自複數個軟體上下文的經轉譯權限請求是否被禁止的資訊。

Description

定義用於經轉譯存取請求的權限資訊的裝置權限表
本技術係關於資料處理系統領域。
一些資料處理系統支援提前位址轉譯,其中請求者裝置發出指定給定虛擬位址(virtual address, VA)的提前位址轉譯請求,且位址轉譯電路系統將虛擬位址轉譯為對應實體位址(physical address, PA),該實體位址被提供回請求者裝置。請求者裝置可隨後發出指定實體位址的經轉譯存取請求,這可比在指定虛擬位址的情況下更快速地得到服務,因為在發出經轉譯存取請求時不需要轉譯該位址,因為該位址先前在發送提前位址轉譯請求時已經轉譯過。
鑑於本技術之第一實例,提供一種設備,其包含: 位址轉譯電路系統,該位址轉譯電路系統經組態以回應於由請求者裝置代表給定軟體上下文發出的且指定給定虛擬位址的提前位址轉譯請求而將該給定虛擬位址轉譯為給定實體位址,且將該給定實體位址提供給該請求者裝置以與由該請求者裝置發出的後續經轉譯存取請求相關聯;及 轉譯存取控制電路系統,該轉譯存取控制電路系統回應於由該請求者裝置代表該給定軟體上下文發出的且指定目標實體位址的經轉譯存取請求而進行下列操作: 基於該目標實體位址來查找指示在裝置權限表中定義的對涵蓋該目標實體位址的實體位址空間區域的對應存取權限的對應權限資訊,其中該等對應存取權限提供用於檢查來自複數個軟體上下文的經轉譯存取請求是否被禁止的資訊; 基於該對應權限資訊來判定該給定軟體上下文是否被禁止回應於經轉譯存取請求而存取對應於該目標實體位址的目標記憶體位置;及 當判定該給定軟體上下文被禁止回應於經轉譯存取請求而存取該目標記憶體位置時,觸發錯誤回應。
鑑於本技術的另一實例,提供一種方法,其包含: 回應於由請求者裝置代表給定軟體上下文發出的且指定給定虛擬位址的提前位址轉譯請求,而將該給定虛擬位址轉譯為給定實體位址,且將該給定實體位址提供給該請求者裝置,以與由該請求者裝置發出的後續經轉譯存取請求相關聯;及 回應於由該請求者裝置代表該給定軟體上下文發出的且指定目標實體位址的經轉譯存取請求,經轉譯存取控制電路系統執行下列步驟: 基於該目標實體位址來查找指示在裝置權限表中定義的對涵蓋該目標實體位址的實體位址空間區域的對應存取權限的對應權限資訊,其中該等對應存取權限提供用於檢查來自複數個軟體上下文的經轉譯存取請求是否被禁止的資訊; 基於該對應權限資訊來判定該給定軟體上下文是否被禁止回應於經轉譯存取請求而存取對應於該目標實體位址的目標記憶體位置;及 當判定該給定軟體上下文被禁止回應於經轉譯存取請求而存取該目標記憶體位置時,觸發錯誤回應。
鑑於本技術之另一實例,提供一種用以儲存用於製造一設備之電腦可讀碼的電腦可讀媒體,其包含: 位址轉譯電路系統,該位址轉譯電路系統經組態以回應於由請求者裝置代表給定軟體上下文發出的且指定給定虛擬位址的提前位址轉譯請求而將該給定虛擬位址轉譯為給定實體位址,且將該給定實體位址提供給該請求者裝置以與由該請求者裝置發出的後續經轉譯存取請求相關聯;及 轉譯存取控制電路系統,該轉譯存取控制電路系統回應於由該請求者裝置代表該給定軟體上下文發出的且指定目標實體位址的經轉譯存取請求而進行下列操作: 基於該目標實體位址來查找指示在裝置權限表中定義的對涵蓋該目標實體位址的實體位址空間區域的對應存取權限的對應權限資訊,其中該等對應存取權限提供用於檢查來自複數個軟體上下文的經轉譯存取請求是否被禁止的資訊; 基於該對應權限資訊來判定該給定軟體上下文是否被禁止回應於經轉譯存取請求而存取對應於該目標實體位址的目標記憶體位置;及 當判定該給定軟體上下文被禁止回應於經轉譯存取請求而存取該目標記憶體位置時,觸發錯誤回應。
在參照隨附圖式討論實例實施方案之前,提供以下實例實施方案及關聯優點的描述。
根據一個示範性組態,提供一種設備,其包含:位址轉譯電路系統,該位址轉譯電路系統經組態以回應於由請求者裝置代表給定軟體上下文發出的且指定給定虛擬位址的提前位址轉譯請求而將該給定虛擬位址轉譯為給定實體位址,且將該給定實體位址提供給該請求者裝置以與由該請求者裝置發出的後續經轉譯存取請求相關聯。該設備亦包含:轉譯存取控制電路系統,該轉譯存取控制電路系統回應於由該請求者裝置代表該給定軟體上下文發出的且指定目標實體位址的經轉譯存取請求而進行下列操作: ●    基於該目標實體位址來查找指示在裝置權限表中定義的對涵蓋該目標實體位址的實體位址空間區域的對應存取權限的對應權限資訊,其中該等對應存取權限提供用於檢查來自複數個軟體上下文的經轉譯存取請求是否被禁止的資訊; ●    基於該對應權限資訊來判定該給定軟體上下文是否被禁止回應於經轉譯存取請求而存取對應於該目標實體位址的目標記憶體位置;及 ●    當判定該給定軟體上下文被禁止回應於經轉譯存取請求而存取該目標記憶體位置時,觸發錯誤回應。
在資料處理系統中,可使用實體位址空間中之實體位址來識別記憶體中之位置。因此,裝置可藉由發出指定對應於給定記憶體位置的實體位址的存取請求而存取記憶體中之給定位置處的資料。裝置亦可代表在資料處理系統上執行的軟體上下文(例如,虛擬機、應用程式或一超管理器)發出存取請求(例如,裝置可係虛擬化硬體加速器或經共用以供數個軟體上下文使用的I/O裝置)。然而,一些裝置(或一些軟體上下文)可能不受信任而僅將存取請求發出至它們被准許存取的記憶體區域—例如,惡意行為者可致使裝置將存取請求發出至受保護記憶體,或者實際上,可錯誤地進行此種存取(例如,若針對存取請求指定錯誤的實體位址)。因此,當裝置被准許發出指定實體位址的存取請求時存在潛在安全風險。
為瞭解決此問題,一種方法可係防止資料處理系統中之裝置發送指定實體位址的存取請求,且裝置可替代地發出指定來自虛擬位址空間的虛擬位址的存取請求。然後,此等虛擬位址可由位址轉譯電路系統轉譯為實體位址。在一些實例中,甚至可存在兩個位址轉譯階段—第一階段用於將來自虛擬位址(virtual address, VA)空間的VA轉譯為中間位址(其在虛擬機或操作系統之感知中係在實體位址(physical address, PA)空間中,但其實際上係在「中間PA空間」或「客人PA空間」中),且此位址空間中的位址可稱為中間實體位址(intermediate physical address, IPA),且第二階段用於將中間位址轉譯為系統之PA空間中的PA。然而,應當注意,兩階段轉譯係可選的,且無論使用一階段還是兩階段位址轉譯程序,都可使用本技術。
虛擬定址允許將定義虛擬位址至實體位址之間的轉譯的位址映射設定成使得某些實體位址(對於給定軟體上下文而言未映射至任何虛擬位址)不可由代表該軟體上下文所做出的請求進行存取。此外,位址轉譯電路系統可在轉譯虛擬位址時執行檢查(例如存取權限檢查)以判定請求裝置是否被准許存取指定記憶體區域。因此,藉由防止裝置直接存取記憶體(例如,藉由發出指定實體位址的記憶體存取請求),可改善資料處理系統之安全性。
然而,將實體位址轉譯為虛擬位址及檢查存取權限之程序可能係耗時的—例如,該程序可能需要執行記憶體中之分頁表的分頁表走查。即使不需要分頁表走查(例如,當請求可使用高速緩衝於轉譯後備緩衝器中的映射資訊轉譯時),位址轉譯電路系統亦可在記憶體存取請求之多個源之間(例如,多個裝置之間)共用,且因此對轉譯頻寬的競爭可能遲延為給定存取請求的位址轉譯提供服務。
因此,為了減少存取請求之潛時,一些裝置可被准許發出提前位址轉譯請求,該等提前位址轉譯請求指定待轉譯但實際上在那時不需要對記憶體進行存取的虛擬位址。該位址轉譯電路系統將該虛擬位址轉譯為實體位址,檢查任何存取權限(若被定義—則沒有必要定義此類存取權限),且然後(若該裝置被准許存取對應於經轉譯之實體位址的記憶體位置,則)將實體位址返回至裝置。該裝置然後可在稍後時間(實際上需要對與經轉譯之實體位址相關聯之該位置進行記憶體存取的時間)發出指定經轉譯之實體位址的經轉譯存取請求。以此方式,可減少與由該裝置發出的存取請求相關聯的潛時。在裝置需要向記憶體中之同一位置發出若干存取請求的情況下潛時的減少可甚至更大(例如,經轉譯之實體位址可高速緩衝於裝置處,以允許重新用於稍後的存取請求)。
然而,本技術之發明者意識到,准許裝置發出指定實體位址的存取請求仍然攜帶風險:裝置可能發出指定它不具有存取權限的記憶體位置之實體位址的經轉譯存取請求。例如,該裝置可能發出指定不是回應於提前位址轉譯請求而接收的實體位址的存取請求—例如,這可由於惡意行為者或操作中之一錯誤而造成。
因此,有利的是,能夠改善資料處理系統之安全性,同時仍然提供提前位址轉譯之益處(例如,與存取請求相關聯的潛時減少)。
為瞭解決此問題,本技術提供經轉譯存取控制電路系統(其可係現有存取控制電路系統的增強版本—例如,用於自位址轉譯電路系統接收經轉譯之實體位址且回應於指定虛擬位址的存取請求而執行存取—或者其可係用於處理經轉譯存取請求的專用電路系統),其藉由查找對應於由請求指定的目標實體位址的權限資訊來回應於經轉譯存取請求。權限資訊在裝置權限表(device permission table, DPT)中定義,且指示與涵蓋目標實體位址的實體位址空間(例如,系統PA空間,在實施兩階段位址轉譯的情況下)區域相關聯的存取權限之集合。例如,權限資訊可係存取權限它們本身,且在一個實例中,經轉譯存取控制電路系統在表中直接查找存取權限。表可係基於記憶體之表,且因此在表中的直接查找可係對記憶體系統(使用DPT控制存取的同一記憶體系統)的存取以存取DPT之一項。然而,在其他實例中,權限資訊之查找可在一些其他結構(例如,快取)中執行,且權限資訊不需要與DPT中之存取權限格式相同。基於權限資訊,經轉譯存取控制電路系統然後可判定代表其發出存取請求的軟體上下文是否被禁止(例如,不被允許)藉由發出經轉譯存取請求存取對應於目標實體位址的目標記憶體位置。若經轉譯存取控制電路系統判定軟體上下文不被准許使用經轉譯存取請求存取所識別之目標記憶體位置,則觸發錯誤回應—例如,這可涉及拒絕經轉譯存取請求,及/或這可涉及不同回應,諸如更新錯誤日誌以記錄產生了被禁止存取請求(但不一定防止存取請求本身繼續進行—然後可在進行對受影響實體位址的稍後存取之前檢查錯誤日誌,以檢查依賴於儲存在該實體位址處的資料內容是否安全)。以此方式,可改善系統之安全性,同時仍然支援提前位址轉譯。
需注意,若給定軟體上下文不被准許使用經轉譯存取請求存取所識別之目標記憶體位置,這不一定意指給定軟體上下文亦不被准許使用指定虛擬位址的非轉譯存取請求存取所識別之目標記憶體位置。假如對所識別之目標記憶體位址的記憶體存取請求指定虛擬位址,可能的是,該位置實際上可由軟體上下文存取,使得可執行藉由位址轉譯電路系統的位址轉譯查找提供的安全性。否決對目標實體位址進行存取的原因可簡單地係,不信任該裝置來直接指定實體位址,而非存取目標實體位址本身的問題。因此,DPT可係用於控制經轉譯存取請求(基於實體位址,其應當回應於較早提前位址轉譯請求而已經轉譯)是否被准許用於目標實體位址。
若經轉譯存取控制電路系統基於權限資訊判定給定軟體上下文不被禁止回應於經轉譯存取請求而存取目標記憶體位置,則該請求可被允許在記憶體中得到服務,或者它可受到進一步檢查。因此,雖然未能滿足DPT之要求可能導致請求被拒絕(及/或可觸發一些其他錯誤回應),這不是說必須接受滿足DPT之要求的請求,因為可存在視針對給定系統實施了其他什麼檢查而拒絕請求的其他原因(例如,檢查與提前位址轉譯請求/經轉譯存取請求之處理無關的原因)。
如上文所解釋,可代表軟體上下文下發出存取請求(包括經轉譯存取請求)。軟體上下文可係虛擬機,例如,其可係電腦系統之虛擬模擬,其可與其他虛擬機共用實體硬體平台。軟體上下文下之其他實例係應用程式或一超管理器。諸如一I/O裝置或硬體加速器之裝置可經組態以代表特定軟體上下文提供功能。應當注意,軟體上下文與裝置之間不需要一定係1:1相關性(例如,單個軟體上下文可與多於一個裝置相關聯,或多個軟體上下文可共用單個裝置)。
在本技術中,在DPT中定義的存取權限提供可用於檢查來自複數個軟體上下文的經轉譯存取請求是否被准許的資訊。例如,存取權限可在多個軟體上下文之間共用,從而允許單個DPT定義對多個軟體上下文的存取權限。相較於針對各軟體上下文定義完全分開的表結構之替代方法,這可有助於減少表資料所需的總體記憶體佔有面積。此外,藉由能夠達成對多個軟體上下文使用單個DPT,這提供大小可能夠靜態判定的DPT(例如,不需要每當新軟體上下文開始執行時都為記憶體分配完全新的表)。這可改善效能。此外,提供在多個軟體上下文之間共用之單個DPT結構可改善在高速緩衝來自DPT結構的資訊的實施方案中之可高速緩衝性,因為這意指單個快取項可用於驗證多個軟體上下文的請求,而非需要針對各別上下文的單獨快取項。
在一些實例中,該經轉譯存取控制電路系統經組態以支援該裝置權限表中之項的至少一編碼,該項識別與由該裝置權限表中之該項自複數個軟體上下文之中指定的所識別之軟體上下文相關聯的至少一存取權限。
在一些情形中,所欲的是,定義對不同軟體上下文的不同存取權限—例如一些軟體上下文可能被禁止使用經轉譯存取請求存取給定記憶體區域,而其他軟體上下文被准許使用經轉譯存取請求對該區域進行存取。因此,根據本技術之經轉譯存取控制電路系統亦支援裝置權限表的編碼,該裝置權限表能夠達成所識別之軟體上下文與對給定實體位址的裝置權限之集合相關聯。這允許對給定實體位址的權限取決於發出請求的軟體上下文來定義,這可係有用的,因為這允許定義更豐富的權限集合。例如,這可允許記憶體中之一些分頁僅由特定軟體上下文經由經轉譯存取請求存取,或者在特定軟體上下文與一或多個其他程序之間共用(當使用經轉譯存取請求存取時)。因此,識別與權限資訊集合相關聯的軟體上下文可進一步改善系統之安全性並改善可用性。
在一些實例中,經轉譯存取控制電路系統經組態以支援包含以實體位址為索引的複數個項的該裝置權限表,其中該複數個項之各者識別對相關聯之實體位址空間區域的存取權限。
因此,與由位址轉譯電路系統查找的分頁表不同,裝置權限表在此實例中以實體位址為索引,而非以虛擬位址(或以由兩階段位址轉譯之階段1提供的中間位址)為索引。
在一些實例中,存取權限包含選自複數個裝置權限層級的一裝置權限層級,且至少一權限層級包含以下中之至少一者: ●    私用權限層級,該私用權限層級識別該複數個軟體上下文中之給定軟體上下文且指示與除該給定軟體上下文之外的程序相關聯的經轉譯存取請求被禁止存取該相關聯之實體位址空間區域;及 ●    共用權限層級,該共用權限層級識別該複數個軟體上下文中之給定軟體上下文且指示與除該給定軟體上下文、及以比複數個軟體上下文高的特權層級操作的一監督程序之外的程序相關聯的經轉譯存取請求被禁止存取該相關聯之實體位址空間區域。
以此方式,可(出於經由經轉譯存取請求存取之目的)使記憶體中之一些分頁對給定軟體上下文私用,從而為由給定軟體上下文執行的程序提供更大的保護,或者可由給定軟體上下文與主管程序共用。應當瞭解,除了上文所定義之私用及共用權限層級之外,亦可定義其他權限層級。因此,裝置權限表可支援更豐富的權限集合,而不是僅僅定義允許或禁止使用經轉譯存取請求存取給定位址。如上文所提及,給定位址是否指定有私用或共用權限層級,以便處理經轉譯存取請求可與給定軟體上下文是否將被允許使用指定虛擬位址的非轉譯存取請求存取位址分開設定,對非轉譯存取請求的權限可比對經轉譯存取請求的權限更加寬容或嚴苛。
在一些實例中,該經轉譯存取控制電路系統經組態以基於該經轉譯存取請求中所指定的裝置識別符來查找指示與該裝置識別符相關聯的該給定軟體上下文的對應裝置組態資訊,且當該對應權限資訊指定與所識別之軟體上下文相關聯的該至少一存取權限時,該經轉譯存取控制電路系統經組態以基於該給定軟體上下文及所識別之軟體上下文的一比較來判定該給定軟體上下文是否被禁止回應於經轉譯存取請求而存取該目標記憶體位置。
以此方式,裝置與軟體上下文之間的關聯可使用裝置組態資訊可變地組態。藉由使用裝置組態表擷取裝置與軟體上下文識別符之間的關係,且在裝置權限表中定義可經編碼以定義軟體上下文特定權限的權限,這避免了對每當裝置上的軟體上下文改變時重新定義裝置特定表中的詳細位址特定權限的需要,替代地,軟體上下文足以改變與裝置相關聯的軟體上下文識別符,其中裝置權限表能夠保持相同。若軟體上下文交換使用裝置,則裝置權限表中之該軟體上下文之權限可容易地藉由更新裝置組態表中針對新裝置指示的相關軟體上下文識別符而與該新裝置相關聯。
在一些實例中,該經轉譯存取控制電路系統經組態以支援包含以裝置識別符為索引的複數個項的該裝置組態表,其中該複數個項之各者識別用於一相關聯裝置的裝置組態資訊。因此,與以實體位址為索引的裝置權限表不同,裝置組態表在此實例中以裝置識別符為索引。
在一些實例中,該複數個項之各者中的該裝置組態資訊包含指示該相關聯裝置是否被禁止發出經轉譯存取請求的特權資訊,該特權資訊包含選自複數個特權層級的一特權層級,該複數個特權層級包括指示以下的至少一個特權層級:即使當該裝置權限表指示對於與該裝置識別符相關聯的該至少一軟體上下文,回應於經轉譯存取請求的對實體地址空間之一子集的存取被禁止,亦准許該相關聯裝置發出經轉譯存取請求。
因此,在至少一些情況下,裝置組態表亦可用於逐裝置定義裝置的第二權限集合,該第二權限集合可正交於裝置權限表中逐位址區域定義的權限。這可允許表現對於軟體可係有用的更豐富的權限集合。在一些實例中,裝置組態表中之裝置組態資訊所指示之權限可取代(優先於)裝置權限表中之權限資訊所指示之權限,從而允許某些裝置被指定為(例如)具有裝置權限表中所指示之更寬容存取權限的受信任裝置,或具有比裝置權限表中所指示之彼等存取權限更嚴格的存取權限的不受信任裝置。裝置組態表之其他編碼可指示應當遵循裝置權限表中所指示之(對特定記憶體區域的)權限。
在一些實例中,該設備包含:裝置權限快取,該裝置權限快取經組態以儲存對應於在該裝置權限表中定義的存取權限之子集的權限資訊,其中該經轉譯存取控制電路系統回應於該經轉譯存取請求而基於該經轉譯存取請求之該目標實體位址來在該裝置權限快取中查找該對應權限資訊。
在快取中執行查找的耗時可比在記憶體中查找裝置權限表少得多—該快取可實施為與經轉譯存取控制電路系統相關聯的硬體結構,且僅儲存權限資訊之子集,這意指要考慮的項更少。因此,提供儲存關於存取權限之子集的權限資訊的裝置權限快取允許與由裝置發出的存取請求相關聯的潛時減少,這可導致效能提升。應當瞭解,裝置權限快取亦可高速緩衝其他資訊,諸如來自指示取決於安全狀態的另外存取權限的安全表的資訊。
在一些實例中,該經轉譯存取控制電路系統回應於該提前位址轉譯請求而判定關於涵蓋該目標實體位置的該實體位址空間區域的該對應權限資訊,且將該對應權限資訊儲存至該裝置權限快取。
在一些實例中,該位址轉譯電路系統經組態以回應於該提前位址轉譯請求而查找在對應於該給定虛擬位址及該給定軟體上下文的一位址轉譯表項中定義的轉譯表權限之一集合;且該經轉譯存取控制電路系統經組態以取決於該等轉譯表權限來判定該對應權限資訊,且將該對應權限資訊儲存至該裝置權限快取。
例如,位址轉譯表可係記憶體中之定義虛擬到實體位址轉譯及相關聯存取權限的分頁表,且查找可係在記憶體或儲存在分頁表中所定義的轉譯之子集的快取(例如轉譯後備緩衝器(translation lookaside buffer, TLB))中的此等表進行的。分頁表可能已經指定一些存取權限資訊(例如,對對應分頁表的讀取存取、寫入存取或指令提取是否被准許),且此資訊可用於在裝置權限快取中設定所高速緩衝之權限資訊。由於位址轉譯電路系統已經查找在轉譯表中定義的位址轉譯(以將給定虛擬位址轉譯為給定實體位址),因此使用在轉譯表中定義的存取權限可避免對查找在DPT中定義的存取權限的需要,該存取權限可能需要對記憶體的一附加存取。這提供效能的進一步改善。
在一些實例中,該經轉譯存取控制電路系統回應於基於該等轉譯表權限判定對該給定實體位址的該等對應存取權限之至少一者係自該等轉譯表權限未知的,而設定一預設存取權限作為待儲存至該裝置權限快取的該對應權限資訊。
在一些情況下—例如,在存取權限識別如上文所討論之裝置權限層級(例如,私用或共用權限)的情況下—對給定實體位址的存取權限之至少一者可係自轉譯表權限未知的。例如,轉譯表權限可指示對給定軟體上下文而非其他軟體上下文的存取權限。在此類情況下,該經轉譯存取控制電路系統可經配置,以在回應於提前位址轉譯請求而預先填充快取時,將DPT快取中之對應權限資訊設定至預設存取權限。例如,預設存取權限可係仍然允許給定軟體上下文存取儲存於對應於目標實體位址的記憶體位置處的資料的最具限制性存取權限(例如,在一些實例中,預設可係上文所討論之「私用」權限層級)。這允許了涵蓋目標實體位址的區域的至少一些經轉譯存取請求(例如,代表給定軟體上下文發送的彼等經轉譯存取請求)的潛時的改善,而不損害系統之安全性(例如,藉由進行悲觀預測)。
在一替代實施方案中,經轉譯存取控制電路系統可經組態以回應於提前位址轉譯請求而查找裝置權限快取,且回應於在DPT快取裝置權限表中偵測到未命中,存取電路系統可經組態以在裝置權限表中查找給定存取權限。此方法相比使用在轉譯表中定義的快取權限預先填充快取之方法可能帶來更高的潛時(由於其可能需要對記憶體的附加存取),但可改良與經轉譯存取請求相關聯的潛時。具體而言,藉由回應於提前位置轉譯請求而預先查找該裝置權限快取(即使在接收到後續經轉譯存取請求之前不需要提前位址轉譯請求中之權限),可提早在裝置權限快取中偵測到任何未命中,且可提早起始用於將所需權限儲存在裝置權限快取中的裝置權限快取線填充操作,以降低在接收經轉譯存取請求時的未命中幾率。
在一些實例中,在DPT快取回應於提前位址轉譯請求而被預先填充的情況下,該裝置權限表存取電路系統經組態以回應於在回應於經轉譯存取請求而執行對該裝置權限快取的查找期間偵測到裝置權限快取中無對應權限資訊,執行對裝置權限表的進一步查找。在此等實例中,進一步查找係基於由經轉譯存取請求指定的目標實體位址,且進一步查找包含在裝置權限表中識別對應存取權限,且裝置權限表存取電路系統經組態以儲存在對裝置權限快取進行進一步查找期間識別的對應權限資訊。
因此,在一個實施方案中,可在執行經轉譯存取請求時偵測到未命中之後將用於特定經轉譯存取請求的權限資訊引入裝置權限快取中。這減少了對實體位址空間之同一區域的後續經轉譯存取的潛時,因此提高了效能。
在其他實例中,經轉譯存取控制電路系統經組態以回應於在回應於經轉譯存取請求而執行對裝置權限存取的查找時,偵測到裝置權限快取中無對應權限資訊,而拒絕經轉譯存取請求。此外,在一些實例中,此行為可在每裝置基礎上啓用或禁用(例如,針對給定裝置指示「此裝置永遠不應直接存取實體位址空間」)。
因此,在一替代實施方案中,若(在經轉譯存取請求時執行)對裝置權限快取的查找產生未命中,則簡單地拒絕經轉譯存取請求。此方法係相對直觀的,因為由於對實體位址空間之同一區域的任何後續經轉譯存取也將未命中,可能會認為此方法將導致潛時總體的增加。然而,本發明者認識到,對裝置權限快取的查找應當僅對一小部分得到准許的經轉譯存取請求未命中,因為對於基於由較早提前位址轉譯請求返回的實體位址而有效的經轉譯存取請求,對應權限資訊在提前位址轉譯請求如上文所描述得到服務時應當已儲存於快取中。另外,本發明者認識到,走查裝置權限表所花費的時間不可能顯著大於例如將經轉譯存取請求作為指定虛擬地址的非轉譯存取請求重新發出,且使用位址轉譯電路系統執行針對虛擬位址的位址轉譯所花費的時間。因此,實際上,對與得到准許的經轉譯存取請求相關聯的潛時的影響將最小,且簡單地拒絕在裝置權限快取中未命中的經轉譯存取請求可更高效(實際上,在裝置權限快取中未命中的許多此類經轉譯存取請求在任何情況都可係被禁止存取)。
在一些實例中,該設備包含:裝置權限表走查電路系統,該裝置權限表走查電路系統經組態以查找表示裝置權限表的多級表,其中該多級表之各層級包含與該實體位址空間之連續較小區域相關聯的項,該多級分頁表之最後層級定義該等存取權限,且除最後層級之外的各層級定義指向下一層級中的複數個表的指標,該等指標可基於實體位址之一部分來選擇。
藉由支援多級裝置權限表,本技術避免對預留大小足以儲存覆蓋整個位址範圍的整個表的連續位址空間範圍的需要。
在一些實例中,該裝置權限表走查電路系統所支援的該多級表之數個層級的上限小於分頁表走查電路系統所支援的分頁表之數個層級的上限。
因此,裝置權限表(即使當實施為多級表時)亦可比多級分頁表平坦(例如,具有較少層級)。這意指在表中定義的存取權限相比可在分頁表中定義的任何存取權限可更快速地查找,這導致潛時減少及因此效能改善。實際上,將為裝置權限表指定權限的粒度可不如用於位址轉譯表的粒度精細(例如,由於位址映射可需要比裝置權限精細的粒度),因此提供數目比裝置權限表層級大的分頁表層級可提供效率與功能性之間的改善平衡。
在一些實例中,該裝置權限表走查電路系統經組態以支援除該最後層級之外之至少一層級之一項的至少一編碼,其指示應用於由除該最後層級之外之該至少一層級處的該項所覆蓋的一整個實體位址空間區塊的一存取權限。
以此方式,若存取權限對於由較高層級表項覆蓋的所有給定實體位址區塊相同,則存取權限可在較高層表之對應於整個位址區塊之單一項中定義。這意指不需要遭受與執行表走查直到最後層級相關聯的潛時。
在一些實例中,該設備包含:裝置權限快取,該裝置權限快取經組態以儲存對應於在該裝置權限表中定義的存取權限之一子集的權限資訊,且該經轉譯存取控制電路系統經組態以支援該裝置權限表之一項的至少一編碼,其指示對複數個實體位址空間區域之各者的存取權限相同,且可由該裝置權限快取中對應於該複數個區域中之一預定區域的一單一項來表示。
例如,DPT中之至少一些項可保持連續指示符(例如,其可係單個位元指示符,或在支援連續區域之多個大小的情況下係多位元指示符),該指示符指示在該項中定義的存取權限亦應用於表中之至少一其他項(例如,其可係表中之相鄰項)。這可意指裝置權限快取中之單一項可用於指示對由DPT中之多個項覆蓋的實體位址空間區域的存取權限(例如,若多個項用於記憶體中之連續區域,則這可意指裝置權限快取之項可指示對記憶體之較大區域的權限資訊)。這改善了權限資訊之可高速緩衝性—且因此導致潛時的進一步減少—因為這允許關於較大部分位址空間的權限資訊同時儲存在裝置權限快取中,而不增加快取之大小。
在一些實例中,該經轉譯存取請求與選自複數個可能的安全狀態中的安全狀態相關聯,且該對應權限資訊的該查找係基於該安全狀態及該目標實體位址。
例如,軟體上下文可在安全狀態(其可替代地稱為「受信任」或「機密」狀態)或較不安全狀態(有時稱為「非安全」狀態)之一者下操作,或者可存在多於兩種所定義之可能狀態,且可針對特定安全狀態的存取指派實體不同位址空間區域。例如,與以一種安全狀態操作的軟體上下文相比,以另一種安全狀態操作的軟體上下文可被准許存取更多或不同實體位址空間區域(例如,在較不安全狀態下操作的軟體上下文可被禁止存取實體位址空間之與安全狀態相關聯之某些區域)。因此,可能有用的是,在軟體上下文在其內操作的安全狀態之基礎上進一步定義存取權限,且在與經轉譯存取請求相關聯之安全狀態的基礎上查找權限資訊。這可提供一層額外安全性。
在一些實例中,該經轉譯存取控制電路系統經組態以支援複數個裝置權限表,各裝置權限表對應於一不同安全狀態。
用於指定取決於安全狀態以及實體位址的存取權限之一種方式係支援針對各安全狀態的單獨表。此方法可簡化權限資訊的查找,因為針對各安全狀態的DPT可不需要覆蓋整個實體位址空間(例如,若給定安全狀態始終被禁止存取實體位址空間之特定區,則可能沒必要在針對給定安全狀態的DPT中定義對此區域的存取權限。
在一些實例中,該經轉譯存取控制電路系統經組態以支援在該複數個裝置之間共用以定義對由該複數個裝置發出的經轉譯存取的存取權限的表作為該裝置權限表。
例如,可使用單個DPT來定義對多個裝置的存取權限。這減少了DPT之記憶體佔有面積。
在一些實例中,該設備包含:裝置權限快取記憶體,該裝置權限快取記憶體經組態以儲存對應於在該裝置權限表中定義的存取權限之子集的權限資訊;及裝置權限快取控制電路系統,該裝置權限快取控制電路系統經組態以回應於一裝置權限快取維護命令而使該裝置權限快取中之項無效,該裝置權限快取維護命令由在該處理電路系統上執行的該軟體觸發,且具有與用於觸發來自一轉譯後備緩衝器的分頁表資訊的無效的一轉譯後備緩衝器無效命令不同的編碼。
例如,專用命令可經定義用於使裝置權限快取中之項無效,該專用命令與用於使轉譯後備緩衝器(translation look-aside buffer, TLB)中之項無效的任何無效命令不同。此類裝置權限快取無效命令可用於使裝置權限快取中之過時的項無效,例如,由於DPT中之對應存取權限已經更新。這可有助於改善安全性。在一些實例中,裝置權限快取無效命令可指定用於選擇使哪些裝置權限快取項無效的至少一個過濾條件。例如,裝置權限快取無效命令可指定位址範圍或待針對其使裝置權限快取項無效的特定位址(其可使用虛擬位址來指定且因此需要轉譯,但在其他實例中,僅支援實體定址裝置權限快取無效命令可能更簡單)。過濾條件亦可係基於軟體上下文識別符(例如,虛擬機識別符(virtual machine identifier, VMID)。在其他實例中,裝置權限快取無效命令可簡單地係觸發裝置權限快取中之待無效之所有項的全域命令。
本文所描述之概念可體現於用於製造體現所描述之概念的設備的電腦可讀碼中。例如,電腦可讀碼可在半導體設計及製造程序之一或多個階段中使用,該半導體設計及製造程序包括電子設計自動化(electronic design automation, EDA)階段,以製造一積體電路,其包含實現概念之設備。上述電腦可讀碼可另外或替代地促成實現本文所述之概念之設備的定義、模型化、模擬、驗證及/或測試。
例如,用於製造實現本文所述之概念的設備之電腦可讀碼可以定義代表該等概念之硬體描述語言(HDL)的碼實施。例如,碼可定義用於定義實現概念的設備之一或多個邏輯電路的暫存器轉移層(register-transfer-level, RTL)抽象概念。碼可定義代表一或多個邏輯電路的HDL,其以Verilog、System Verilog、Chisel或VHDL(超高速積體電路硬體描述語言)以及諸如FIRRTL的中間表示實現設備。電腦可讀碼可使用系統級模型化語言提供實現概念之定義,諸如系統C及系統Verilog或可藉由電腦解譯以促成概念的模擬、功能及/或正式驗證及測試之概念的其他行為表示。
另外或替代地,電腦可讀碼可實現一或多個接線對照表之電腦可讀表示。一或多個接線對照表可藉由將一或多個邏輯合成程序應用於RTL表示而產生。替代地或額外地,一或多個邏輯合成程序可從電腦可讀碼產生一位元流,該位元流被載入至一場可程式化閘陣列(FPGA)中以組態FPGA以實現所描述之概念。FPGA可部署用於積體電路中之製造之前的驗證及測試概念的目的,或FPGA可直接部署於產品中。
電腦可讀碼可包含用於製造設備之碼表示之混合,例如包括RTL表示、接線對照表表示、或用於半導體設計及製造程序以製造實現本發明之設備的另一電腦可讀定義之一或多者之混合。替代地或額外地,概念可定義在半導體設計及製造程序中使用以製造設備之電腦可讀定義與一旦製造由所定義設備執行的電腦可讀碼定義指令的組合。
此類電腦可讀碼可設置於任何已知暫時性電腦可讀媒體(諸如,網路上之有線或無線傳輸碼)或非暫時性電腦可讀媒體(諸如,半導體、磁碟或光碟)中。使用電腦可讀碼製造的積體電路可包含組件,諸如中央處理單元、圖形處理單元、神經處理單元、數位信號處理器或單獨或共同實現概念的其他組件之一或多者。
現在將參考圖式描述特定實施例。
圖1顯示包含具有對共用記憶體110的存取權的多個裝置105的資料處理系統100之實例。各裝置105經組態以在一或多個軟體上下文125的控制下執行操作—例如,各裝置可與單個軟體上下文(例如,裝置105c及軟體上下文125c)相關聯,或者與多於一個軟體上下文(例如,裝置105a及軟體上下文125a及125b)相關聯。此外,單個軟體上下文125亦可與多於一個裝置105相關聯(例如,軟體上下文125d與兩個裝置105d、105e相關聯)。各軟體上下文可係例如虛擬機器(virtual machine, VM)、超管理器或應用程式。雖然圖1將裝置105顯示為與SoC 115分開的晶片外裝置,但下文所示之技術亦可用於與SoC 115之其他組件在同一積體電路上的晶片上裝置。
資料處理系統100亦包括耦接至記憶體110且經由互連件120耦接至裝置105之各者的單晶片系統(SoC) 115。SoC 115包含位址轉譯電路系統116,該位址轉譯電路系統經組態以將虛擬位址(VA)轉譯為直接識別記憶體110中之位置的實體位址(PA)。例如,裝置105可在軟體上下文125的控制下發出存取記憶體110中之資料的存取請求,且存取請求可指定來自虛擬位址空間的虛擬位址,該等虛擬位址需要被轉譯為實體位址以便執行記憶體中之存取。裝置中之一些裝置亦經組態以發出指定虛擬位址的提前位址轉譯請求,該虛擬位址待由位址轉譯電路系統轉譯為實體位址,該實體位址然後被返回至該裝置(而無需實際上請求對在服務於提前位址轉譯請求時與該實體位址相關聯的記憶體系統位址的記憶體存取)。該裝置然後可發出指定經轉譯之實體位址的經轉譯存取請求。
因此,SoC 115亦包含存取控制電路系統117,該存取控制電路系統控制對記憶體110的存取。具體而言,存取控制電路系統117自位址轉譯電路系統116(例如,在自存取請求中指定的VA轉譯之後)及自裝置105(例如,以經轉譯存取請求)接收實體位址,且執行對儲存於記憶體110中之對應位置處的資料之存取。因此,存取控制電路系統117既充當用於回應於正常(例如,未轉譯)存取請求而控制對記憶體之存取的存取控制電路系統,又充當用於回應於經轉譯存取請求而控制對記憶體之存取的經轉譯存取控制電路系統。然而,應當注意,在一些實施方案中,可提供單獨的存取控制電路系統及經轉譯存取控制電路系統。
如上所述,位址轉譯電路系統116支援提前位址轉譯請求。提供對提前位址轉譯請求的支援可係有利的,因為這允許由裝置105發出的後續經轉譯存取請求指定實體位址。這意指經轉譯存取請求可比正常存取請求(例如,指定虛擬位址的存取請求)更快速(例如,潛時減少)地得到服務,因為已經執行了將虛擬位址轉譯為實體位址之程序。在一些實例中,在裝置105之一者上執行的給定程序可需要多次存取特定記憶體位置。服務於提前位址轉譯請求以提供對應於該特定記憶體位址的實體位址意指,在裝置105隨後可發出指定實體位址的多個經轉譯存取請求時只需要遭受一次與位址轉譯相關聯的潛時。這可提供潛時的進一步減少(以及與執行對同一位址的各存取的新轉譯相比位址轉譯電路系統116處轉譯頻寬壓力的減小)。然而,即使對於僅由裝置105存取一次的位址,提前位址轉譯仍可用於在實際需要記憶體存取時將位址轉譯潛時自關鍵時序路徑移除。
與位址轉譯相關聯的大部分潛時一般係由於需要檢查位址映射及對由位址轉譯電路系統116接收的存取請求或提前位址轉譯請求的存取權限,這當在位址轉譯電路系統116在多個請求者之間共用的情況下等待足夠的轉譯頻寬時可能遇到一定遲延,且在所需項尚未在位址轉譯電路系統116處高速緩衝的情況下,在存取記憶體110以獲得提供位址映射及存取權限的相關轉譯表項時很可能遇到長遲延。
對於存取權限檢查,位址轉譯電路系統116可檢查請求裝置105(例如,發出請求的裝置)及/或在裝置105上操作的軟體上下文125是否被准許存取記憶體中之所識別之位置。因此,針對提前位址轉譯請求,實體位址可在已通過任何所需存取權限檢查的條件下被返回至該裝置。
然而,實際上,裝置105可發出指定不是回應於提前位址轉譯請求而自位址轉譯電路系統116接收的實體位址的經轉譯存取請求。例如,惡意行為者可在由裝置105之一者執行的程式碼中插入指定裝置105不被准許存取的實體位址的經轉譯存取請求。在另一實例中,裝置105可能錯誤地指定受保護的實體位址。任一種情況都可能導致裝置105存取其不被准許存取的記憶體110中之資料。這導致潛在安全風險,除非在接收到經轉譯存取請求時再次在存取控制電路系統117處執行(藉由附加存取權限檢查)位址轉譯。然而,可預料到,在發出經轉譯存取請求時重新執行位址轉譯及存取權限檢查可能否定以其他方式與提前位址轉譯相關聯的效能改良;可能會認為,若經轉譯存取請求將需要遭受與未經轉譯存取請求(例如,指定虛擬位址的存取請求)相同的存取權限檢查,及因此為相同的相關聯潛時,則發出經轉譯存取請求無意義。
然而,本技術之發明者已提出替代方法,該替代方法可改善採用提前位址轉譯之系統的安全性,而不顯著增加與存取請求相關聯的潛時。
圖2顯示與裝置105通信且連接至記憶體110的SoC 115之特定實例。雖然記憶體110在圖中顯示為與SoC 115分開的晶片外,但應當瞭解,記憶體110亦可包括與SoC 115在同一積體電路上的晶片上記憶體。在此實例中,SoC 115包括根埠205,該根埠經組態以將自裝置105接收到的訊息轉發至SoC 115內的組件,且將訊息自SoC 115內轉發至裝置105。SoC 115亦包括中央處理單元(central processing unit, CPU) 240,該CPU包括用於將VA轉譯為PA以用於由CPU上的處理電路系統發出的存取請求的記憶體管理單元(memory management unit, MMU)。SoC亦包括直接記憶體存取(direct memory access, DMA)代理245(晶片上裝置之實例)及系統記憶體管理單元(system memory management unit, SMMU) 242,其亦可稱為輸入/輸出MMU (input/output memory management unit, IOMMU)或轉譯代理(translation agent, TA),其接收來自DMA代理245及根埠205的請求,且將在請求中指定的VA轉譯為PA。SMMU 242包含先前描述之位址轉譯電路系統116,該位址轉譯電路系統執行位址轉譯,且亦檢查各種存取權限—例如此等存取權限(以及用於轉譯之位址映射)可在儲存於記憶體110中之分頁表中定義。位址轉譯電路系統116可具有用於高速緩衝分頁表項的轉譯後備緩衝器(TLB),以比在記憶體110中更快地存取。
先前提及之存取控制電路系統117可提供於SMMU 242內,以用於基於由位址轉譯電路系統116執行的轉譯而產生待發送至記憶體系統的存取請求。存取控制電路系統117亦可實施為分佈式電路邏輯,其不僅包括SMMU 242中之一部分,而且亦包括根埠205中的(經轉譯)存取控制電路系統117之一部分。可能有用的是,提供根埠205中的部分經轉譯存取控制電路系統117,使得經轉譯存取請求(其不需要位址轉譯,因為其已經指定實體位址)可在不經由SMMU 242傳遞的情況下發出至記憶體,以節省SMMU 242處的頻寬用於需要轉譯的請求。另一方面,存取控制電路系統117之用於服務於由位址轉譯電路系統116轉譯的非轉譯請求之部分可在SMMU 242本身處提供。
亦提供互連件215,該互連件包括用於回應於指定PA的存取請求而控制對記憶體之存取的記憶體控制器。例如,該等存取請求可包括在將VA轉譯為PA之後由位址轉譯電路系統116轉發至互連件215的存取請求、及/或由根埠205轉發的來自裝置105的經轉譯存取請求、以及由CPU 240基於CPU之MMU的位址轉譯作出的記憶體存取請求。
對於裝置記憶體存取,若通過了所有權限檢查(例如,若基於分頁表權限判定裝置105及/或軟體上下文125被准許存取記憶體位址),則將存取請求繼續傳遞至互連件/記憶體控制器215,且記憶體控制器存取記憶體110中之相關位置,然後向根埠205提供回應以供轉發至裝置105。
SoC 115亦包括裝置權限快取230,在此特定實例中,該裝置權限快取與根埠205相關聯。然而,在其他實例中,快取230可與多個不同的根埠205(在提供多於一個根埠205的情況下)相關聯,或者可替代地與SMMU 242相關聯。裝置權限快取由裝置權限快取控制電路系統225控制,這係回應於由根埠205接收的經轉譯存取請求,以基於請求中所指定的經轉譯之實體位址來查找裝置權限快取230。若裝置權限快取230中存在命中,則檢查所識別項中的權限資訊,且基於權限資訊所指示的存取權限集合而拒絕或允許經轉譯存取請求。若存取權限指示經轉譯存取請求被准許,則將經轉譯存取請求繼續傳遞至記憶體控制器215以便被服務。因此,在接收到經轉譯存取請求時,可藉由執行權限資訊的附加查找來改善經轉譯存取請求之安全性。
儲存於裝置權限快取225中之權限資訊係在記憶體110中之裝置權限表(DPT) 220中定義的存取權限集合之子集。因此,若裝置權限快取(在本文中亦稱為DPT快取)230中的查找未命中,則可執行對DPT的查找來找到所需存取權限。與可在由位址轉譯電路系統116參照的分頁表中定義的任何存取權限不同,在DPT中定義的存取權限(以及DPT快取中之對應權限資訊)以實體位址為索引,使得其可基於由轉譯存取請求指定的PA來查找。
提供除了記憶體中之DPT之外的DPT快取230有助於減少與經轉譯存取請求相關聯的潛時,因為一般而言,快取查找消耗的時間比對記憶體中之結構的查找少得多。這允許藉由檢查對經轉譯存取請求的此等存取權限而提供的額外安全性而不顯著增加與經轉譯存取請求相關聯的潛時。
此外,在一些實施方案中,DPT快取可在執行提前位址轉譯請求時預填充有權限資訊。例如,在記憶體中之分頁表中定義的存取權限(其在位址轉譯期間已經被查找)可用於填充快取。替代地,權限資訊的查找可在處理提前位址轉譯請求時在DPT中執行。例如,這可涉及在DPT快取中執行查找以查看關於經轉譯之實體位址的對應權限資訊是否已經在快取中定義,且若權限不存在,則執行線填充。在任一實施方案中,因為當提前位址轉譯請求得到服務時對應權限資訊被儲存於快取中,所以在接收到來自裝置105的轉譯存取請求時對DPT存取230的查找不太可能未命中,除非在先前提前位址轉譯請求中實體位址未提供給裝置105,或者到經轉譯存取請求被接收時對該位址的權限由於容量衝突而已經被逐出裝置權限快取230(裝置權限快取記憶體230之大小可經選擇以使此類容量衝突的可能性較小)。因此,在任一實施方案中,用於經轉譯存取請求的權限資訊在執行提前位址轉譯時預先加載至DPT快取記憶體225中。這意指,假如經轉譯存取請求指定回應於提前位址轉譯請求而獲得的實體位址(這僅對得到准許的經轉譯存取請求係可能的),則在接收到經轉譯存取請求時在DPT快取230中進行查找通常應當命中,且因此與檢查權限資訊相關聯的潛時對於得到准許的經轉譯存取請求而言將最小。
此外,在此實例中,當接收到經轉譯存取請求時,亦查找在裝置組態表(device configuration table, DCT) 250中定義的裝置組態資訊。DCT識別軟體上下文125與裝置105之間的對應關係。DCT 250亦可指定待逐裝置地應用於經轉譯存取請求的另外權限(其可在使用實體位址編索引的DPT 220中定義的逐區域權限之上提供附加保護層。DPT 220及DCT 250將在下文更詳細地描述。
儘管未在圖2中明確地顯示,但在對提前位址轉譯請求作出回應時亦可查找裝置組態資訊,且DCT 250中之項可高速緩衝於裝置權限快取230中或用於來自DCT 250的裝置組態資訊的單獨快取中。
高速緩衝於裝置權限快取230中之資訊之格式不需要與該高速緩衝之資訊所基於的DCT 250或DPT 220中之對應資訊完全相同。例如,來自DCT 250及DPT 220的資訊可以組合格式組合,或者該資訊可以壓縮形式或以亦包括其他資訊的擴展形式儲存於快取230中。
如上所述,當位址轉譯電路系統116接收到虛擬位址(由存取請求或提前位址轉譯請求指定)時,其可檢查在記憶體110中之分頁表(其亦定義虛擬位址與實體位址之間的轉譯)中定義的存取權限集合。
DCT 250及DPT 220中之資訊可由在CPU 240上執行的軟體來控制。管理允許哪個軟體更新DCT 250或DPT 220中之項的存取控制權限可在CPU 240之MMU所使用之分頁表中設定,使得用於給定軟體程序的分頁表定義給定軟體程序是否可存取DCT 250及DPT 220之位址。CPU 240可支援裝置權限快取維護命令,該裝置權限快取維護命令可由軟體使用以觸發高速緩衝於裝置權限快取230中之DPT(及DCT)資訊的無效,該無效可在軟體改變DCT 250或DPT 220中所指定的任何資訊時由軟體發出。裝置權限快取維護命令可簡單地係觸發裝置權限快取230中之所有項的無效的全域快取無效命令,或者可係觸發符合某些過濾標準之項的無效的更精細粒度無效命令(例如,對應於指定軟體上下文識別符的高速緩衝之DPT/DCT項、或對應於特定實體位址或實體位址範圍的高速緩衝之DPT項)。過濾標準可由裝置權限快取維護命令指定。裝置權限快取維護命令可係CPU 240之指令集架構中支援的指令,或者可係由軟體藉由發出讀或寫記憶體存取請求而觸發的記憶體映射命令,該讀或寫記憶體存取請求指定經映射以用於表示定址至SMMU 242或DPT處理組件235、230、225的命令的位址。命令類型可由藉由記憶體映射命令指定的特定位址表示,或者對於寫入請求,可由作為記憶體交易之酬載提供的寫入資料表示。因此,存在其中CPU 240可(回應於軟體而)發信號通知應當使裝置權限快取230中之項無效的各種各樣的方式,但通常,支援此種機制可係有用的,使得當在記憶體110中更新DCT 250或DPT 220時,過時資訊可無效。
圖3顯示由裝置105發出的提前位址轉譯請求可由位址轉譯電路系統及SoC之其他組件處理之方式之實例。
如圖3所示,一裝置代表在裝置上操作的軟體上下文發出305提前位址轉譯請求。該提前位址轉譯請求指定待轉譯為PA的VA,且在根埠處被接收,該根埠將提前位址轉譯請求轉發310至位址轉譯電路系統(例如,SMMU)。位址轉譯電路系統然後在記憶體中(或在轉譯後備緩衝器(TLB)中之分頁表集合中查找VA,且檢查315在分頁表中定義的對虛擬位址的存取權限。若基於此等存取權限判定320提前位址轉譯請求不被准許(「N」),則拒絕325該請求且不將VA至PA之轉譯提供給裝置。另一方面,若判定320提前位址轉譯請求被准許(「Y」),則位址轉譯電路系統將VA轉譯為PA(TLB或對應於VA的分頁表項亦指定對應PA),且將PA發送330回根埠,以便轉發335至裝置。然後,可在裝置隨後發出340的轉譯存取請求中指定PA。
如上所述,在此實例中,由位址轉譯電路系統查找的存取權限不同於在DPT中定義的彼等存取權限,具體而言因為它們在基於虛擬位址來查找的分頁表中定義。DPT定義另外的權限集合,該另外的權限集合定義是否允許特定軟體上下文使用指定實體位址的轉譯存取請求來存取特定實體定址區域。DPT中之權限可比在分頁表中定義的權限更加寬鬆或嚴苛—例如DPT可否決在使用基於虛擬位址的分頁表進行查找的情況下本可使用非轉譯存取請求進行存取的(使用經轉譯存取請求進行的)存取。
圖4顯示由裝置105發出的提前位址轉譯請求可由位址轉譯電路系統及SoC之其他組件處理之方式之另一實例。圖4所示之方法可包括圖3中之所有步驟,但亦包括基於在分頁表中定義的存取權限進行的預先填充DPT快取。
在圖4所示之方法中,當判定405裝置已代表軟體上下文發出提前位址轉譯請求(「Y」)時,位址轉譯電路系統在TLB或分頁表中查找請求所指定的VA,且檢查410在分頁表中定義的對VA的存取權限。若位址轉譯電路系統判定415請求被准許(「Y」),則將藉由轉譯VA獲得的PA提供425給裝置。
在此實例中,針對成功(PA返回給裝置)的提前轉譯請求,經轉譯存取控制電路系統117亦在DPT快取中設定430關於實體位址的權限資訊。例如,權限資訊可基於在分頁表中定義的在執行位址轉譯時已經被查找的存取權限來設定。此等權限一般將針對特定軟體上下文定義(例如,可針對不同軟體上下文提供單獨的分頁表,因為各軟體上下文可與不同虛擬位址空間相關聯)。因此,在分頁表中定義的對經轉譯之VA的存取權限將指示請求軟體上下文是否被准許存取該記憶體位置(且可指示可准許的特定類型之請求,例如讀取及/或寫入),而不是任何其他軟體上下文亦被准許存取該記憶體位置。因此,當基於分頁表來預先填充快取時,將與其他軟體競賽相關的權限設定至預設權限層級可係適當的。在一特定實例中,若分頁表指示請求軟體上下文被授予對涵蓋PA的記憶體區域的讀寫存取權,則對應DPT快取項中之准許資訊可經設定以指示記憶體區域關於讀寫存取權對軟體上下文係「私用的」(例如,以指示來自該軟體上下文的讀寫存取被准許,但代表其他上下文的讀寫請求不被禁止)。
在一替代實施方案中,代替基於在分頁表中定義的存取權限來設定權限資訊,位址轉譯電路系統可在DPT快取中查找權限資訊。若判定在DPT快取中存在命中,則不採取進一步動作。另一方面,若判定在DPT快取中不存在命中(例如,存在未命中),則DPT存取電路系統235存取DPT中之所需裝置存取權限,且DPT快取控制電路系統225更新DPT快取以將所獲得裝置存取權限分配給DPT快取230。這係預熱DPT快取230以使其為有可能指定同一實體位址的後續經轉譯存取請求做好準備的另一種方法。此特定方法允許在DPT中定義的對PA的存取權限完整集合複製至DPT快取中,但可能帶來比使用分頁表權限之方法大的潛時,因為其可能需要對記憶體的額外存取以讀取DPT。
返回至步驟415,若位址轉譯電路系統的檢查判定415軟體上下文未被准許存取藉由PA識別的記憶體位置(「N」),則拒絕420該請求。此時,如虛線所示,仍可執行對DPT快取的查找430;然而,在一些實施方案中,考慮到對應PA不被允許由裝置存取,這可被視為不必要的額外步驟。
圖5顯示處理經轉譯存取請求之一方法。在圖5之方法中,裝置發出505指定PA的經轉譯存取請求。該經轉譯存取請求由裝置代表軟體上下文發送,且雖然該經轉譯存取請求通常係合法(其在提前位址轉譯請求之後較早地轉譯)的,但可能係惡意的(例如,裝置可能指定軟體上下文不被准許存取的PA)。然後,經轉譯存取控制電路系統117回應於經轉譯存取請求而在裝置權限快取230中查找510實體位址。若經轉譯存取控制電路系統117在裝置權限快取中偵測到515對實體位址的命中,則其存取DPT快取中之所識別項,且基於在所識別項中定義的權限資訊來判定520由請求軟體上下文發出的經轉譯存取請求是否被准許存取對應於所指定之實體位址的記憶體位置。若此類存取不被准許(「N」),則拒絕525該存取。另一方面,若判定520此類存取被准許(「Y」),則存取控制電路系統117發出請求存取530所識別記憶體位置處的資料的記憶體請求,且向裝置發送回應。
返回至步驟515,若在DPT快取中未偵測到命中(「N」),例如若偵測到未命中,則DPT走查電路系統可在DPT表中查找535對PA的存取權限。然後,更新540 DPT快取以儲存所需存取權限,且該方法繼續至步驟520。
然而,在一替代實施方案(如虛線所示中,對DPT的查找535及對DPT快取的更新540可省略,且經轉譯存取控制電路系統可替代地簡單地拒絕525在DPT快取中未偵測到命中的任何經轉譯存取請求(回應於該拒絕,裝置可發出指定VA而非PA的另外存取請求)。如上文所解釋,由於在圖4之步驟440、445處顯示的針對提前位址轉譯請求的早期快取線填充,相對罕見的是,在經轉譯存取請求被准許的情況下,對DPT快取的查找將未命中,且因此在一些情況下,支援DPT表走查及快取線填充所需的電路邏輯在處理經轉譯存取請求時可能不合理(特別是在經轉譯存取控制電路系統117經分佈以使得電路邏輯之位於根埠205處之部分無需提供有觸發DPT表走查的能力,因為這可在位於SMMU 242處的部分中完成,該部分在處理提前位址轉譯請求時調用此類DPT表走查。替代地,對DPT的查找535及對DPT快取的更新540可取決於在DCT中定義的組態資訊而定,例如,若根據組態資訊判定裝置根本不被准許發出經轉譯存取請求,則可省略此等步驟。
裝置可根據任何協定與SoC 100通信,但可用於裝置及例如SoC進行通信的標準之一個實例係快速週邊組件互連(peripheral component interconnect express, PCIe)標準。
圖6顯示使用PCIe標準的承載經轉譯存取請求之封包605之實例。在此實例中,封包605包括資料酬載610及目標位址615。目標位址係實體位址,且在寫入請求之情況下,資料酬載保持待寫入至目標位址之資料。封包605亦包括標頭620,該標頭定義請求(例如,在此種情況下,指示封包605包含經轉譯存取請求,且指示請求是讀取請求還是寫入請求),且指定請求者識別符625(在本文中亦稱為裝置識別符),該請求者識別符識別發送請求的裝置。
如圖所示,請求者識別符625用於查找在一或多個裝置組態表250中定義的裝置組態資訊(裝置組態資訊可指定與發出封包605之裝置相關聯的軟體上下文125之軟體上下文識別符),且目標位址615用於查找在一或多個裝置權限表220中定義的權限資訊。
圖7係繪示回應於經轉譯存取請求之另一實例的流程圖,其中考慮了DPT及裝置組態表(DCT)二者。在此實例中,當接收到經轉譯存取請求705時,經轉譯存取控制電路系統117根據請求所指示的請求者識別符來查找730(在DCT中定義的)裝置組態資訊。裝置組態資訊指定與請求者識別符相關聯的軟體上下文識別符(且可選地亦可指定如下文所描述之裝置特定權限資訊),且可在(記憶體中之)DCT中或快取中查找。經轉譯存取控制電路系統亦基於指定為請求之目標位址的實體位址來查找735(在DPT中定義的)權限資訊—同樣,該權限資訊可在記憶體中之DPT中或DPT快取中查找。基於裝置組態資訊與裝置權限資訊組合,經轉譯存取控制電路系統檢查740經轉譯存取請求是否被准許進行。若經轉譯存取控制電路系統判定745存取被准許進行,則執行750存取且將回應返回至請求者。否則,拒絕755存取。若存取被拒絕,則這不一定意指裝置根本不能存取對應實體位址,因為裝置可替代地發出指定虛擬位址的非轉譯存取請求,該非轉譯存取請求然後基於在分頁表中定義的位址映射及存取權限使用位址轉譯電路系統116進行處理。
應當注意,流程圖所示之步驟之次序純粹係說明性的,且實際上,步驟中之一些步驟可按與所示不同的次序執行,例如,步驟730及735可以任一次序執行,或彼此平行地執行。此外,在一些例示性實施方案中,在步驟730及735中查找的資訊可在同一快取項中定義,在此種情況下,對該項的單次查找將覆蓋兩個步驟。
圖8顯示裝置組態表(DCT) 250及裝置權限表(DPT) 220之實例。在此實例中,DCT 250針對各裝置(例如,由裝置識別符805識別)指定相關聯之軟體上下文識別符810,該相關聯之軟體上下文識別符指示與所識別之裝置相關聯的軟體上下文。例如,在DCT中針對給定裝置指定的軟體上下文係目前與該裝置相關聯的軟體上下文。此外,DCT 250指定特權層級(在本文中亦稱為裝置組態資訊)815,且各項亦包括指示該項是否有效的有效指示符820。
特權層級715指示所識別之裝置是否被准許代表所識別之軟體上下文發出經轉譯存取請求,以及什麼類型之存取被准許或不被准許。換言之,裝置特權層級可指示與該裝置相關聯的信任層級。在此特定實例中,定義四個特權層級: 1.    不允許任何存取。若指定特權層級1,則這指示所識別之裝置不被准許代表任何軟體上下文發出經轉譯存取請求。具有特權層級1的裝置可被視為未受信任裝置。 2.    允許私用存取。若指定特權層級2,則這指示裝置被准許代表所識別之軟體上下文將經轉譯存取請求發出至在DPT中指示為僅對所識別之軟體上下文可存取的記憶體位置—例如定義為對(多個)軟體上下文私用的記憶體位置。 3.    允許共用存取。若指定特權層級3,則這指示裝置被准許代表所識別之軟體上下文將經轉譯存取請求發出至對軟體上下文私用的、或在(多個)軟體上下文與一或多個其他程序之間共用的記憶體區域。 4.    允許所有存取。若指定特權層級4,則這指示由裝置代表所識別之軟體上下文發出的任何經轉譯存取請求(甚至發出至在DPT中標記為不可存取的、私用的或共用的記憶體區域—在此種情況下,DCT權限優先於DPT權限)都被准許。具有特權層級4的裝置可被視為受信任裝置,受信任不指定先前未藉由較早提前位址轉譯請求返回的不正確實體位址。
因此,DCT能夠達成將不同權限層級指派給特定裝置。一些裝置可在製造期間已經歷嚴格控制,以便在裝置中建立信任根,因此可被分配更有特權的權限3或4。其他裝置可更便宜,但未知是否已經歷此類嚴格製造步驟,且可能更容易被破壞或出錯,且可被指派更嚴格的權限層級1或2以限制使用直接指定實體位址的經轉譯存取請求之能力。
現在轉向DPT 220,此表針對各實體定址記憶體區域824指定相關聯之軟體上下文之軟體上下文識別符825及定義對對應區域的存取權限之集合的權限層級830。表亦定義讀取/寫入/執行指示835,以識別權限資訊是否適用於讀取存取、寫入存取及/或執行存取,且各項亦包括指示該項是否有效的有效指示符840,以及連續值845。替代地,DPT項可含有權限「索引」:小整數值,其可用於查找單獨的可組態權限組態之暫存器或表。連續指示符845指示,當其被設定時,在該項中定義的權限資訊與在一或多個其他項中定義的權限資訊相同(且因此,此等多個項可在裝置權限快取之單一項中表示)。
權限層級830指示可使用經轉譯存取請求存取對應記憶體區域的程度。具體而言,在此實例中定義四個權限層級: 1.    不允許任何存取。若記錄權限層級1,則這指示所識別之記憶體區域不被准許使用任何經轉譯存取請求進行存取。若區域具有權限層級1,則不需要指定軟體上下文識別符(可忽略軟體上下文ID欄825),因為在此種情況下,存取權限獨立於軟體上下文識別符。 2.    允許(針對指定軟體上下文的)私用存取。若連同所識別之軟體上下文一起記錄了權限層級2,則這指示記憶體區域係對所識別之軟體上下文私用的,且因此准許自所識別之軟體上下文至所識別之記憶體區域的經轉譯存取請求,但不准許來自其他軟體上下文的其他經轉譯存取。 3.    允許共用存取。若記錄了權限層級3,則這指示對所指示之記憶體區域的存取在所指示之軟體上下文與一或多個其他程序之間共享(例如,所指示之軟體上下文與監督所指示之軟體上下文的監督程序),且因此軟體上下文及一或多個其他程序被准許使用經轉譯存取請求來存取該區域。可選地,DPT項亦可使附加軟體上下文ID欄指定其他軟體上下文之附加軟體上下文ID,該等附加軟體上下文被允許與所指示之軟體上下文共用對該記憶體區域的存取。 4.    允許存取。若記錄了權限層級4,則這指示對所識別之記憶體位置的經轉譯存取被准許藉由任何程序發出。同樣,若PA具有權限層級4,則不需要指定軟體上下文,因為在此種情況下,存取權限獨立於軟體上下文ID。
因此,DCT定義裝置級存取權限(例如,DCT之各項對應於特定裝置,但不對應於特定位址範圍),而DPT定義位址級權限(例如,各項對應於特定實體位址範圍)。
在一些情況下,當裝置發出指示給定PA的經轉譯存取請求時,可能的是,在DCT中針對該裝置定義的特權層級與在DPT中針對所指示之PA定義的特權層級相衝突。因此,在一些情況下,特權層級及權限層級中之一者可取代(優先於)另一者。
圖9繪在一個實例中在DCT 250中定義的特權層級及在DPT 220中定義的權限層級可組合以指示是否准許經轉譯存取請求之方式。在此實例中,存在其中特權層級優先於權限層級的一些情況,例如當定義了特權層級1時,則始終阻止存取,且當定義了特權層級4時,則始終准許存取。例如,特權層級1可指示裝置不受信任,且因此,由該裝置發出的所有經轉譯存取請求都應當被拒絕,而不管請求中所指定的PA如何。類似地,特權層級4可指示裝置受信任,且因此,由該裝置發出的所有經轉譯存取請求都應當被准許,而不管請求中所指定的PA如何。以此方式,當裝置被視為受信任或不受信任時,這可藉由更新DCT中的單一項而非需要更新DPT中的大量項來指示。這亦可避免在一些情況下對查找DPT的需要。
在所有其他情況下(例如當特權層級係2或3時),大多數限制性權限優先考慮。因此,若特權層級或權限層級係2(私用的),則無論特權/權限層級是否係3都將存取視為對給定軟體上下文私用的。
應當瞭解,這僅係定義DPT 220及DCT 250中的權限層級之一個可能方式,且亦可定義其他類型之權限。此外,如圖8所指示,在圖9所指示之組合權限內,此等權限可進一步使用圖8所示之R/W/E欄835來取得資格,該欄指示對於被允許使用經轉譯存取請求存取的區域,該權限是否分別應用於讀取(R)、寫入(W)及/或指令提取(執行–E)。
裝置權限表可實施為記憶體中之多層級表,其中表走查電路系統被提供以查找在表中定義的權限。圖10顯示實體位址1005可用於在多級DPT中查找項之方式。如圖10所示,部分實體位址用作層級0索引1010,該索引可與DPT基位址1015(例如,在SMMU 242之暫存器中組態)組合以識別層級0表1020中之一項。層級0表的各項對應於記憶體區塊,且儲存指示用於該記憶體區塊的對應層級1表1025的基位址。針對各位址區塊定義單獨的層級1表,且層級0表1020中之各項中的基位址識別該表。層級0表中之一些項亦可定義用於整個記憶體區塊的權限層級;若係此種情況,則表走查電路系統不需要繼續走查,因為在層級0表項中定義的權限層級可適用於該區塊內的所有位址。
一旦已自層級0表獲得層級1表中之基位址,則自實體位址導出的層級1索引1030與此基位址組合使用以識別層級1表項。層級1表1025中之各項對應於由該表覆蓋之記憶體位址之子集,且針對該子集定義權限層級。例如,各層級1表項可包括圖7所繪示之裝置權限表220中所示之欄。
此外,在此特定實例中,層級1表中之各項1035能夠指定對單獨位址範圍的單獨存取權限。因此,GPI索引1040亦自實體位址導出,以識別層級1項1035中之特定存取權限。例如,若一個DPT項之大小小於單個快取線(用於在記憶體系統之不同部分之間轉移資料的記憶體存取之基本單元),則由於多個DPT項可適配一個快取線,實體位址之GPI索引1040部分可用於自該快取線選擇相關DPT項。在其他實例中,若DPT項大小係完整快取線,則可不需要GPI索引部分1040。
在此特定實例中,實體位址係52個位元長,但較高位元1050不用於識別記憶體中之位置(例如,它們可全部設定為0,或全部設定為1),且亦不用於DPT查找中。類似地,最低位元1055亦不用於DPT查找中,因為它們指示區域內對應於單個DPT項的個別位址。
應當瞭解,雖然DPT在圖10中繪示為2級表,但該表亦可包括任何數目之層級。可能有用的是,DPT結構之層級數目少於針對用於位址轉譯電路系統116之位址轉譯的多級分頁表結構所支援的層級數目。例如,可使用2級DPT,且可對位址轉譯之給定階段使用4級分頁表結構。這可反映該分頁表結構可定義位址映射及權限,以便以比DPT中定義以控制經轉譯記憶體存取之使用的權限更精細粒度控制非轉譯記憶體存取之處理。
在一些實例中,DPT中之存取權限可取決於發出請求的軟體上下文之操作狀態而定,例如,可針對複數種操作狀態之各者定義單獨的DPT。圖11顯示其中針對以安全狀態執行的軟體上下文定義單獨的表(例如安全性DPT 1105)及以非安全狀態執行的軟體上下文定義單獨的表(例如非安全DPT 1110)的實例。需注意,用於非安全DPT 1110之標示「非安全」不一定指示表本身不安全—此標記,此標示僅僅指示這是用於以非安全(例如較不安全)狀態操作的軟體上下文的表。此外,如圖11所示,亦可針對其他安全狀態定義另外的權限表。
在本申請案中,用語「經組態以...(configured to...)」係用以意指一設備的一元件具有能夠實行該經定義作業的一組態。在此上下文中,「組態(configuration)」意指硬體或軟體之互連的配置或方式。例如,該設備可具有專用硬體,其提供經定義的作業,或者一處理器或其他處理裝置可經程式化以執行該功能。「經組態以(configured to)」並不意味著設備元件需要以任何方式改變以提供所定義的作業。
雖然本文已參照附圖詳細地描述本發明的說明性實施例,應瞭解本發明不限於該等精確實施例,且所屬技術領域中具有通常知識者可於其中實行各種變化與修改,而不脫離如隨附申請專利範圍所定義的本發明的範圍。
100:資料處理系統 105,105c,105d,105e:裝置 110:共用記憶體 115:單晶片系統 116:位址轉譯電路系統 117:存取控制電路系統 120:互連件 125,125a,125b,125d:軟體上下文 205:根埠 215:互連件/記憶體控制器 220:裝置權限表 225:裝置權限快取控制電路系統 230:裝置權限快取 235:DPT處理組件;DPT存取電路系統 240:中央處理單元 242:系統記憶體管理單元;SMMU 245:直接記憶體存取代理;DMA代理 250:裝置組態表 305,310,315,320,325,330,335,340:方法步驟 405,410,415,420,425,430:方法步驟 505,510,515,520,525,530,535,540:方法步驟 605:封包 610:資料酬載 615:目標位址 620:標頭 625:請求者識別符 705,730,735,740,745,750,755:方法步驟 805:裝置識別符 810:相關聯之軟體上下文識別符 815:特權層級 820:有效指示符 824:實體定址記憶體區域 825:軟體上下文識別符;軟體上下文ID欄 830:權限層級 835:讀取/寫入/執行指示;R/W/E欄 840:有效指示符 845:連續指示符;連續值 1010:層級0索引 1015:DPT基位址 1020:層級0表 1025:對應層級1表 1035:項;層級1項 1040:GPI索引;GPI索引部分 1050:較高位元 1055:最低位元 1105:安全DPT 1110:非安全DPT
本技術的進一步態樣、特徵、及優點將由於結合附圖閱讀的以下實例描述而顯而易見,在該等附圖中: [圖1]繪示共用對記憶體的存取的複數個裝置; [圖2]繪示共用對記憶體的存取的單晶片系統(system-on-chip, SoC)及晶片外裝置之實例; [圖3]繪示處理提前位址轉譯請求之一方法; [圖4]繪示處理提前位址轉譯請求之另一方法; [圖5]繪示處理經轉譯存取請求之一例示性方法; [圖6]繪示諸如快速週邊組件互連(peripheral component interconnect express, PCIe)之協定中之進入封包之實例; [圖7]繪示處理經轉譯存取請求之另一方法; [圖8]繪示裝置組態表及裝置權限表; [圖9]繪示權限層級及特權層級之例示性集合、及其等之間的相互作用; [圖10]繪示實體位址、及其如何可用於查找裝置權限表中之項之實例;及 [圖11]繪示提供針對多種執行狀態的裝置權限表之實例。
100:資料處理系統
105:裝置
110:共用記憶體
115:單晶片系統
116:位址轉譯電路系統
117:存取控制電路系統
125:軟體上下文
205:根埠
215:互連件/記憶體控制器
220:裝置權限表
225:裝置權限快取控制電路系統
230:裝置權限快取
235:DPT處理組件;DPT存取電路系統
240:中央處理單元
242:系統記憶體管理單元;SMMU
245:直接記憶體存取代理;DMA代理
250:裝置組態表

Claims (21)

  1. 一種設備,其包含: 位址轉譯電路系統,該位址轉譯電路系統經組態以回應於由一請求者裝置代表一給定軟體上下文發出的且指定一給定虛擬位址的一提前位址轉譯請求而將該給定虛擬位址轉譯為一給定實體位址,且將該給定實體位址提供給該請求者裝置以與由該請求者裝置發出的一後續經轉譯存取請求相關聯;及 轉譯存取控制電路系統,該轉譯存取控制電路系統回應於由該請求者裝置代表該給定軟體上下文發出的且指定一目標實體位址的一經轉譯存取請求而進行下列操作: 基於該目標實體位址來查找指示在裝置權限表中定義的對涵蓋該目標實體位址的實體位址空間區域的對應存取權限的對應權限資訊,其中該等對應存取權限提供用於檢查來自複數個軟體上下文的經轉譯存取請求是否被禁止的資訊; 基於該對應權限資訊來判定該給定軟體上下文是否被禁止回應於經轉譯存取請求而存取對應於該目標實體位址的一目標記憶體位置;及 當判定該給定軟體上下文被禁止回應於經轉譯存取請求而存取該目標記憶體位置時,觸發一錯誤回應。
  2. 如請求項1之設備,其中 該經轉譯存取控制電路系統經組態以支援該裝置權限表中之一項的至少一編碼,其識別與由該裝置權限表中之該項自複數個軟體上下文之中指定的一所識別之軟體上下文相關聯的至少一存取權限。
  3. 如請求項1之設備,其中 該經轉譯存取控制電路系統經組態以支援包含以實體位址為索引的複數個項的該裝置權限表,其中該複數個項之各者在該複數個上下文之間共用且識別對一相關聯之實體位址空間區域的一存取權限。
  4. 如請求項3之設備,其中: 該存取權限包含選自複數個裝置權限層級的一裝置權限層級;及 該至少一權限層級包含以下中之至少一者: 一私用權限層級,該私用權限層級識別該複數個軟體上下文中之一所識別之軟體上下文且指示與除該所識別之軟體上下文之外的程序相關聯的經轉譯存取請求被禁止存取該相關聯之實體位址空間區域;及 一共用權限層級,該共用權限層級識別該複數個軟體上下文中之一所識別之軟體上下文且指示與除該所識別之軟體上下文、及以比複數個軟體上下文高的一特權層級操作的一監督程序之外的程序相關聯的經轉譯存取請求被禁止存取該相關聯之實體位址空間區域。
  5. 如請求項1之設備,其中: 該經轉譯存取控制電路系統經組態以基於該經轉譯存取請求中所指定的一裝置識別符來查找指示與該裝置識別符相關聯的該給定軟體上下文的對應裝置組態資訊;及 當該對應權限資訊指定與該所識別之軟體上下文相關聯的該至少一存取權限時,該經轉譯存取控制電路系統經組態以基於該給定軟體上下文及該所識別之軟體上下文的一比較來判定該給定軟體上下文是否被禁止回應於經轉譯存取請求而存取該目標記憶體位置。
  6. 如請求項5之設備,其中 該經轉譯存取控制電路系統經組態以支援包含以裝置識別符為索引的複數個項的該裝置組態表,其中該複數個項之各者識別用於一相關聯裝置的裝置組態資訊。
  7. 如請求項6之設備,其中: 該複數個項之各者中的該裝置組態資訊包含指示該相關聯裝置是否被禁止發出經轉譯存取請求的特權資訊; 該特權資訊包含選自複數個特權層級的一特權層級;且 該複數個特權層級包括指示以下的至少一個特權層級:即使當該裝置權限表指示對於與該裝置識別符相關聯的該至少一軟體上下文,回應於經轉譯存取請求的對實體地址空間之一子集的存取被禁止,亦准許該相關聯裝置發出經轉譯存取請求。
  8. 如請求項1之設備,其包含 一裝置權限快取,該裝置權限快取經組態以儲存對應於在該裝置權限表中定義的存取權限之一子集的權限資訊, 其中該經轉譯存取控制電路系統回應於該經轉譯存取請求而基於該經轉譯存取請求之該目標實體位址來在該裝置權限快取中查找該對應權限資訊。
  9. 如請求項8之設備,其中 該經轉譯存取控制電路系統回應於該提前位址轉譯請求而判定用於涵蓋該目標實體位置的該實體位址空間區域的該對應權限資訊,且將該對應權限資訊儲存至該裝置權限快取。
  10. 如請求項8之設備,其中: 該位址轉譯電路系統經組態以回應於該提前位址轉譯請求而查找在對應於該給定虛擬位址及該給定軟體上下文的一位址轉譯表項中定義的轉譯表權限之一集合;及 該經轉譯存取控制電路系統經組態以取決於該等轉譯表權限來判定該對應權限資訊,且將該對應權限資訊儲存至該裝置權限快取。
  11. 如請求項10之設備,其中 該經轉譯存取控制電路系統回應於基於該等轉譯表權限判定對該給定實體位址的該等對應存取權限之至少一者係自該等轉譯表權限未知的,而設定一預設存取權限作為待儲存至該裝置權限快取的該對應權限資訊。
  12. 如請求項1之設備,其包含 裝置權限表走查電路系統,該裝置權限表走查電路系統經組態以查找表示該裝置權限表的一多級表, 其中: 該多級表之各層級包含與該實體位址空間之連續較小區域相關聯的項; 該多級分頁表之一最後層級定義該等存取權限;及 除該最後層級之外的各層級定義指向下一層級中的複數個表的指標,該等指標可基於一實體位址之一部分來選擇。
  13. 如請求項12之設備,其中 該裝置權限表走查電路系統所支援的該多級表之數個層級的上限小於分頁表走查電路系統所支援的分頁表之數個層級的上限。
  14. 如請求項12之設備,其中 該裝置權限表走查電路系統經組態以支援除該最後層級之外之至少一層級之一項的至少一編碼,其指示應用於由除該最後層級之外之該至少一層級處的該項所覆蓋的一整個實體位址空間區塊的一存取權限。
  15. 如請求項1之設備,其包含 一裝置權限快取,該裝置權限快取經組態以儲存對應於在該裝置權限表中定義的存取權限之一子集的權限資訊, 其中該經轉譯存取控制電路系統經組態以支援該裝置權限表之一項的至少一編碼,其指示對複數個實體位址空間區域之各者的存取權限相同,且可由該裝置權限快取中對應於該複數個區域中之一預定區域的一單一項來表示。
  16. 如請求項1之設備,其中: 該經轉譯存取請求與選自複數個可能的安全狀態中的一安全狀態相關聯;及 該對應權限資訊的該查找係基於該安全狀態及該目標實體位址。
  17. 如請求項16之設備,其中 該經轉譯存取控制電路系統經組態以支援複數個裝置權限表,各裝置權限表對應於一不同安全狀態。
  18. 如請求項1之設備,其中 該經轉譯存取控制電路系統經組態以支援在該複數個裝置之間共用以定義對由該複數個裝置發出的經轉譯存取的存取權限的一表作為該裝置權限表。
  19. 如請求項1之設備,其包含: 一裝置權限快取,該裝置權限快取經組態以儲存對應於在該裝置權限表中定義的存取權限之一子集的權限資訊; 處理電路系統,該處理電路系統經組態以執行軟體;及 裝置權限快取控制電路系統,該裝置權限快取控制電路系統經組態以回應於一裝置權限快取維護命令而使該裝置權限快取中之項無效,該裝置權限快取維護命令由在該處理電路系統上執行的該軟體觸發且具有與用於觸發來自一轉譯後備緩衝器的分頁表資訊的無效的一轉譯後備緩衝器無效命令不同的編碼。
  20. 一種方法,其包含: 回應於由一請求者裝置代表一給定軟體上下文發出的且指定一給定虛擬位址的一提前位址轉譯請求,而將該給定虛擬位址轉譯為一給定實體位址,且將該給定實體位址提供給該請求者裝置,以與由該請求者裝置發出的一後續經轉譯存取請求相關聯;及 回應於由該請求者裝置代表該給定軟體上下文發出的且指定一目標實體位址的一經轉譯存取請求,經轉譯存取控制電路系統執行下列步驟: 基於該目標實體位址來查找指示在裝置權限表中定義的對涵蓋該目標實體位址的實體位址空間區域的對應存取權限的對應權限資訊,其中該等對應存取權限提供用於檢查來自複數個軟體上下文的經轉譯存取請求是否被禁止的資訊; 基於該對應權限資訊來判定該給定軟體上下文是否被禁止回應於經轉譯存取請求而存取對應於該目標實體位址的一目標記憶體位置;及 當判定該給定軟體上下文被禁止回應於經轉譯存取請求而存取該目標記憶體位置時,觸發一錯誤回應。
  21. 一種用以儲存用於製造一設備之電腦可讀碼的電腦可讀媒體,其包含: 位址轉譯電路系統,該位址轉譯電路系統經組態以回應於由一請求者裝置代表一給定軟體上下文發出的且指定一給定虛擬位址的一提前位址轉譯請求而將該給定虛擬位址轉譯為一給定實體位址,且將該給定實體位址提供給該請求者裝置以與由該請求者裝置發出的一後續經轉譯存取請求相關聯;及 轉譯存取控制電路系統,該轉譯存取控制電路系統回應於由該請求者裝置代表該給定軟體上下文發出的且指定一目標實體位址的一經轉譯存取請求而進行下列操作: 基於該目標實體位址來查找指示在裝置權限表中定義的對涵蓋該目標實體位址的實體位址空間區域的對應存取權限的對應權限資訊,其中該等對應存取權限提供用於檢查來自複數個軟體上下文的經轉譯存取請求是否被禁止的資訊; 基於該對應權限資訊來判定該給定軟體上下文是否被禁止回應於經轉譯存取請求而存取對應於該目標實體位址的一目標記憶體位置;及 當判定該給定軟體上下文被禁止回應於經轉譯存取請求而存取該目標記憶體位置時,觸發一錯誤回應。
TW112109290A 2022-03-28 2023-03-14 定義用於經轉譯存取請求的權限資訊的裝置權限表 TW202338619A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2204353.3 2022-03-28
GB2204353.3A GB2617076A (en) 2022-03-28 2022-03-28 Device permissions table defining permissions information for a translated access request

Publications (1)

Publication Number Publication Date
TW202338619A true TW202338619A (zh) 2023-10-01

Family

ID=81449276

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112109290A TW202338619A (zh) 2022-03-28 2023-03-14 定義用於經轉譯存取請求的權限資訊的裝置權限表

Country Status (3)

Country Link
GB (1) GB2617076A (zh)
TW (1) TW202338619A (zh)
WO (1) WO2023187303A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2536201B (en) * 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Handling address translation requests
US10048881B2 (en) * 2016-07-11 2018-08-14 Intel Corporation Restricted address translation to protect against device-TLB vulnerabilities
US10509736B2 (en) * 2016-07-29 2019-12-17 Advanced Micro Devices, Inc. Controlling access by IO devices to pages in a memory in a computing device
US11392511B2 (en) * 2019-09-25 2022-07-19 Intel Corporation Secure address translation services using a permission table
US20210026543A1 (en) * 2020-09-25 2021-01-28 Intel Corporation Secure address translation services permission table for trust domain extensions

Also Published As

Publication number Publication date
GB2617076A (en) 2023-10-04
GB202204353D0 (en) 2022-05-11
WO2023187303A1 (en) 2023-10-05

Similar Documents

Publication Publication Date Title
CN105938459B (zh) 处理地址转换请求
US6775750B2 (en) System protection map
US7653803B2 (en) Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
JP5581403B2 (ja) メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納
KR101403233B1 (ko) 정보 처리 장치 및 부정 액세스 방지 방법
US20020083224A1 (en) Protected control of devices by user applications in multiprogramming environments
JP5433349B2 (ja) データプロセッサ
JP2010015560A (ja) システム・オン・チップ内でデータ要求を経路指定する方法、装置及びコンピュータ・プログラム
JP7359837B2 (ja) メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット
US7454787B2 (en) Secure direct memory access through system controllers and similar hardware devices
WO2021048518A1 (en) Memory access transaction with security check indication
JP7397057B2 (ja) メモリ・システム内に記憶されている制御テーブルのための二分探索手順
CN117063165A (zh) 迁移由输入-输出设备能够访问的存储器页面
US11526443B2 (en) Read-if-hit-pre-PoPA request
US8555013B1 (en) Method and system for memory protection by processor carrier based access control
TW202338619A (zh) 定義用於經轉譯存取請求的權限資訊的裝置權限表
EP4127950B1 (en) Apparatus and method
US20230109295A1 (en) Controlling memory access in a data processing systems with multiple subsystems
US11461247B1 (en) Granule protection information compression
US20240193260A1 (en) Apparatus and method for handling stashing transactions
US11620217B2 (en) Partition identifier space selection
WO2022021446A1 (zh) 一种内存保护方法及保护代理控制装置
JP2024513553A (ja) スタッシングトランザクションを処理するための装置及び方法
WO2023062332A1 (en) Address translation circuitry and methods for performing address translation