TWI574156B - 具有獨立的使用者和監管者域的記憶體保護鑰結構 - Google Patents

具有獨立的使用者和監管者域的記憶體保護鑰結構 Download PDF

Info

Publication number
TWI574156B
TWI574156B TW104130291A TW104130291A TWI574156B TW I574156 B TWI574156 B TW I574156B TW 104130291 A TW104130291 A TW 104130291A TW 104130291 A TW104130291 A TW 104130291A TW I574156 B TWI574156 B TW I574156B
Authority
TW
Taiwan
Prior art keywords
memory
access
register
bits
mode
Prior art date
Application number
TW104130291A
Other languages
English (en)
Other versions
TW201633153A (zh
Inventor
大衛 寇法堤
吉伯 尼格
羅傑 桑卡安
安德列 安德森
薩巴拉馬雅 杜勒
維爾納 哈斯
約瑟夫 紐茲曼
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 TW201633153A publication Critical patent/TW201633153A/zh
Application granted granted Critical
Publication of TWI574156B publication Critical patent/TWI574156B/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
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)

Description

具有獨立的使用者和監管者域的記憶體保護鑰結構
本揭露之實施例一般關於一種計算裝置,更具體而言,關於具有獨立的使用者和監管者域的記憶體保護鑰結構。
應用程式可能包括非期望的程式錯誤,其嘗試存取不應被存取(稱為偏離存取)之記憶體的區域。存取可能包括在記憶體中寫入和讀取,且偏離存取包括偏離寫入和偏離讀取。為了防止偏離存取以非期望方式來存取或損壞記憶體,需要某種記憶體保護機制。
100‧‧‧系統晶片
102‧‧‧處理器
104‧‧‧記憶體
106‧‧‧匯流排
108‧‧‧匯流排系統
110‧‧‧處理核心
112‧‧‧記憶體管理單元
114‧‧‧分頁表
116‧‧‧分頁表項目
130‧‧‧分頁表暫存器
126‧‧‧U/S
128‧‧‧保護鑰
118‧‧‧使用者權限暫存器
120‧‧‧監管者權限暫存器
122‧‧‧ADD邏輯電路
124‧‧‧開關
200‧‧‧記憶體管理單元
202‧‧‧分頁表項目
204‧‧‧第一權限暫存器
206‧‧‧第二權限暫存器
224‧‧‧保護鑰部分
222‧‧‧記憶體頁框號碼部分
216‧‧‧P/A位元
218‧‧‧R/W位元
226‧‧‧XD位元
220‧‧‧U/S狀態位元
230‧‧‧權限位元
208‧‧‧多工器
214‧‧‧控制器
212‧‧‧AND邏輯
300‧‧‧操作
400‧‧‧方法
500‧‧‧處理器
530‧‧‧前端單元
550‧‧‧執行引擎單元
570‧‧‧記憶體單元
532‧‧‧分支預測單元
534‧‧‧指令快取單元
536‧‧‧指令轉譯後備緩衝器
538‧‧‧指令提取單元
540‧‧‧解碼單元
552‧‧‧更名/分配器單元
554‧‧‧引退單元
556‧‧‧排程器單元
558‧‧‧實體暫存器檔案單元
560‧‧‧執行叢集
562‧‧‧執行單元
564‧‧‧記憶體存取單元
580‧‧‧資料預取器
572‧‧‧資料TLB單元
574‧‧‧資料快取單元
576‧‧‧第2級快取單元
502‧‧‧提取級
504‧‧‧長度解碼級
506‧‧‧解碼級
508‧‧‧分配級
510‧‧‧更名級
512‧‧‧排程級
514‧‧‧暫存器讀取/記憶體讀取級
516‧‧‧執行級
518‧‧‧寫回/記憶體寫入級
522‧‧‧例外處理級
524‧‧‧提交級
600‧‧‧處理器
601‧‧‧前端
626‧‧‧指令預取器
630‧‧‧追蹤快取
634‧‧‧微操作佇列
630‧‧‧追蹤快取
632‧‧‧微碼ROM
628‧‧‧解碼器
603‧‧‧亂序執行引擎
602‧‧‧快取排程器
604‧‧‧緩慢/一般浮點數排程器
606‧‧‧簡單浮點數排程器
608‧‧‧暫存器檔案
610‧‧‧暫存器檔案
611‧‧‧執行方塊
612‧‧‧執行單元
614‧‧‧執行單元
616‧‧‧執行單元
618‧‧‧執行單元
620‧‧‧執行單元
622‧‧‧執行單元
624‧‧‧執行單元
608‧‧‧暫存器檔案
610‧‧‧暫存器檔案
700‧‧‧系統
750‧‧‧點對點互連
770‧‧‧第一處理器
780‧‧‧第二處理器
772‧‧‧整合記憶體控制器單元
782‧‧‧整合記憶體控制器單元
776‧‧‧點對點介面
778‧‧‧點對點介面
786‧‧‧P-P介面
788‧‧‧P-P介面
732‧‧‧記憶體
734‧‧‧記憶體
794‧‧‧點對點介面電路
798‧‧‧點對點介面電路
752‧‧‧P-P介面
754‧‧‧P-P介面
790‧‧‧晶片組
739‧‧‧高效能圖形介面
738‧‧‧高效能圖形電路
716‧‧‧第一匯流排
714‧‧‧I/O裝置
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤及/或滑鼠
727‧‧‧通訊裝置
730‧‧‧碼和資料
728‧‧‧儲存單元
800‧‧‧系統
810‧‧‧處理器
815‧‧‧處理器
820‧‧‧圖形記憶體控制器匯流排
840‧‧‧記憶體
895‧‧‧前端匯流排
845‧‧‧顯示器
850‧‧‧ICH
860‧‧‧外部圖形裝置
870‧‧‧周邊裝置
900‧‧‧系統
970‧‧‧處理器
980‧‧‧處理器
972‧‧‧I/O控制邏輯
982‧‧‧I/O控制邏輯
978‧‧‧點對點介面
988‧‧‧點對點介面
950‧‧‧點對點互連
976‧‧‧P-P介面
994‧‧‧P-P介面
986‧‧‧P-P介面
998‧‧‧P-P介面
952‧‧‧點對點互連
954‧‧‧點對點互連
990‧‧‧晶片組
932‧‧‧記憶體
934‧‧‧記憶體
982‧‧‧CL
914‧‧‧I/O裝置
915‧‧‧傳統I/O裝置
996‧‧‧介面
1000‧‧‧SoC
1012‧‧‧互連單元
1002A-N‧‧‧核心
1006‧‧‧共享快取單元
1020‧‧‧應用處理器
1010‧‧‧系統代理器單元
1016‧‧‧匯流排控制器單元
1014‧‧‧整合記憶體控制器單元
1008‧‧‧整合圖形邏輯
1024‧‧‧影像處理器
1026‧‧‧音頻處理器
1028‧‧‧視頻處理器
1018‧‧‧媒體處理器
1030‧‧‧靜態隨機存取記憶體單元
1032‧‧‧直接記憶體存取單元
1040‧‧‧顯示單元
1100‧‧‧SoC
1106‧‧‧核心
1107‧‧‧核心
1108‧‧‧快取控制
1109‧‧‧匯流排介面單元
1110‧‧‧L2快取
1130‧‧‧用戶身分模組
1135‧‧‧開機ROM
1160‧‧‧DRAM
1140‧‧‧SDRAM控制器
1165‧‧‧快閃
1145‧‧‧快閃控制器
1150‧‧‧周邊控制
1120‧‧‧視頻編解碼器
1125‧‧‧視頻介面
1115‧‧‧GPU
1170‧‧‧藍芽模組
1175‧‧‧3G數據機
1180‧‧‧GPS
1185‧‧‧Wi-Fi
1200‧‧‧電腦系統
1202‧‧‧處理裝置
1204‧‧‧主記憶體
1206‧‧‧靜態記憶體
1218‧‧‧資料儲存裝置
1230‧‧‧匯流排
1226‧‧‧處理邏輯
1220‧‧‧網路
1208‧‧‧網路介面裝置
1210‧‧‧視頻顯示單元
1212‧‧‧字母數字輸入裝置
1214‧‧‧游標控制裝置
1216‧‧‧信號產生裝置
1222‧‧‧圖形處理單元
1228‧‧‧視頻處理單元
1232‧‧‧音頻處理單元
1226‧‧‧軟體
1224‧‧‧機器可存取儲存媒體
1128‧‧‧機器可存取儲存媒體
將從下面提出的詳細說明且從本揭露之各種實施例的附圖來更充分地了解本揭露。然而,圖不應被採用來將本揭露限制為具體實施例,而是僅用於說明和理解。
第1圖繪示根據本揭露之一實施例的處理系統。
第2圖繪示根據本揭露之一實施例的記憶體管理單元。
第3圖係繪示根據本揭露之一實施例的記憶體管理單元之操作的流程圖。
第4圖係根據本揭露之一實施例之用以操作包括核心和記憶體管理單元的處理器之方法的流程圖。
第5A圖係繪示用於其中可能使用本揭露之一實施例的處理器之微型結構的方塊圖。
第5B圖係繪示根據本揭露之至少一實施例所實作的有序管線和暫存器更名級、亂序發出/執行管線之方塊圖。
第6圖繪示依照本揭露之一實施例之用於處理器的微型結構之方塊圖。
第7圖係繪示其中可能使用本揭露之一實施例的系統之方塊圖。
第8圖係其中可能操作本揭露之一實施例的系統之方塊圖。
第9圖係其中可能操作本揭露之一實施例的系統之方塊圖。
第10圖係依照本揭露之一實施例的系統晶片(SoC)之方塊圖。
第11圖係依照本揭露的SoC設計之一實施例 的方塊圖。
第12圖繪示電腦系統之一實施例的方塊圖。
【發明內容及實施方式】
計算裝置可能包括在一或更多處理器(例如中央處理單元(CPU))中的一或更多處理核心,用於執行指令、及記憶體裝置(例如隨機存取記憶體(RAM)),用於在一或更多處理核心上儲存指令和與執行工作關聯的資料(包括如作業系統之核心的使用者應用程式和系統應用程式)。每個應用程式之指令使用可能被與一或更多處理器關聯的記憶體管理單元(MMU)轉換成記憶體的實體位址之虛擬記憶體的虛擬位址(或線性位址)來定址記憶體。可能根據可能被轉換成記憶體之頁框的儲存之分頁來組織虛擬記憶體。虛擬位址的每個分頁可能對應於記憶體的記憶體頁框。可能根據分頁號碼來識別虛擬記憶體的分頁,而可能根據記憶體頁框號碼來識別記憶體的頁框。每個虛擬位址可能包括分頁號碼及位於分頁號碼之分頁內的偏移。因此,可能藉由查找用於分頁號碼和偏移的分頁表來判定記憶體的特定實體位址。每個分頁表項目指定虛擬位址至實體位址轉換以及記憶體分頁的其他屬性,例如存取權限。以此方式,可由在處理核心上執行的工作存取之虛擬位址的空間可能大於實體記憶體位址。
應用程式可能與判定其至記憶體之存取模式 (例如,作為使用者或監管者)的特權層級關聯。例如,使用者應用程式可能具有使用者模式的低特權,且系統應用程式(例如核心(kernel))可能具有監管者模式的高特權。在處理核心上執行的工作可能需要存取(讀取或寫入)可能被記憶體管理單元轉換成記憶體的實體位址之虛擬位址引用的記憶體。
分頁表項目係用以將虛擬位址映射至記憶體的實體位址之分頁表的項目。分頁表項目可能包括用以儲存由分頁表項目引用之分頁的類型。例如,具有「1」的一個位元指示使用者分頁,且具有「0」的一個位元指示監管者分頁。其分頁表項目指示使用者分頁的記憶體分頁可能由在任何特權層級下運行的工作(包括具有使用者模式存取的使用者應用程式和具有監管者模式存取的系統應用程式)存取,而其分頁表項目指示監管者分頁的記憶體分頁受限於在高於使用者層級的特權層級下運行的工作。在一實施例中,作業系統可能分配記憶體的一部分作為保留給作業系統之核心的監管者分頁。作業系統可能也將記憶體的一部分分配給使用者分頁的記憶體用於由使用者應用程式使用。
在記憶體存取期間,偏離存取可能當程式由於程式錯誤而以非期望方式來存取分配給程式的記憶體位置時發生。為了防止偏離存取以非期望方式來存取或損壞記憶體,每個記憶體分頁可能與保護鑰(由用於工作之作業系統選擇的一串二進制位元)關聯,其可能用以取得儲 存在一或更多權限暫存器中的位元,位元相對於記憶體分頁反射用於工作的記憶體存取權限。取得之記憶體存取權限可能用以防止工作超過其相對於記憶體頁框的權限。在某些實作中,保護鑰結構以n位元保護鑰標記在分頁表中的每個分頁表項目而無須區別分頁表項目是否被產生用於使用者分頁或用於監管者分頁。
本揭露之實施例包括一保護鑰結構,其根據分頁表項目是否被識別為與使用者分頁或監管者分頁關聯來處理儲存在分頁表項目中之虛擬位址的分頁。基於分類,記憶體的使用者域(或以使用者模式所識別之記憶體的一部分)和監管者域(或以監管者模式所識別之記憶體的一部分)可能由分離的權限暫存器保護。在某些實作中,與使用者域關聯的權限暫存器可能藉由使用者應用程式來直接地修改而無須作業系統之核心的輔助。
第1圖繪示根據本揭露之一實施例之包括用以保護記憶體的處理系統之系統晶片(SoC)100。SoC 100可能包括處理器(例如中央處理單元(CPU))102和記憶體,其係經由匯流排系統108而彼此連接。磁碟106可能經由匯流排106來耦接至處理器102和記憶體104以在記憶體不具有足夠空間用於工作的事件中提供置換空間。記憶體104和磁碟106可能儲存系統應用程式和使用者應用程式及與程式關聯的資料。處理器102可能使用記憶體104來執行如系統應用程式和使用者應用程式的工作以儲存程式之指令及與程式關聯的資料。
在一實施例中,處理器102可能更包括一或更多處理核心110和記憶體管理單元(MMU)112。一或更多處理核心係在用於執行工作之處理器102內的引擎。在一實施例中,在處理核心110上執行的工作未使用記憶體的實體位址來直接地存取記憶體104。反而,工作透過虛擬位址(也被稱為線性位址)來存取虛擬記憶體。在處理核心110與記憶體之間耦接的記憶體管理單元112可能將虛擬記憶體的虛擬位址映射至記憶體104的實體位址。虛擬位址的空間可能被分成固定大小的單元稱為分頁。虛擬位址的分頁可能相應地被映射至在稱為記憶體頁框的記憶體104之實體位址的空間中之固定大小的單元。
在一實施例中,記憶體104可能包括分頁表114,用於儲存在虛擬位址至實體位址的分頁之間的映射。映射可能是在分頁(或分頁號碼)的識別符至記憶體頁框(或記憶體頁框號碼)的識別符之間的映射。記憶體頁框號碼判定分配給工作之記憶體104的區域。
在一實施例中,虛擬位址分頁表114可能包括一或更多分頁表項目(PTE)116。分頁表項目也被稱為分頁表的葉節點。在一實施例中,分頁表114的分頁表項目116可能被載入至記憶體管理單元112的分頁表暫存器130中,使得記憶體管理單元112可能進行記憶體位址映射。每個分頁表項目可能儲存根據虛擬位址分頁號碼所識別的一或更多記憶體頁框號碼。在一實施例中,在處理核心110上執行的工作可能藉由指定一或更多虛擬位址範 圍來分配記憶體塊。虛擬位址可能包括第一部分,包括指示虛擬位址分頁號碼的一或更多位元(例如,較高序20個位元)、及位元(例如,較低序12個位元)的第二部分,指示在對應於分頁之記憶體頁框內的位元組偏移。記憶體管理單元112可能使用虛擬位址分頁號碼以識別儲存在分頁表項目116中的記憶體頁框號碼,及結合識別的記憶體頁框號碼與偏移位元組以形成用於存取記憶體104的實體位址。對應於虛擬位址的實體位址可能儲存在緩衝器中。
在一實施例中,記憶體管理單元112可能包括邏輯,用以檢查用於工作的記憶體存取權限以防止某些類型的記憶體存取(例如,由偏離存取引起的記憶體存取)。在一實施例中,每個分頁表項目116可能包括一或更多狀態位元,用以指示在將分頁表項目中的分頁號碼映射至記憶體頁框號碼之前需要被檢查的某些分頁存取狀態。在一實施例中,在每個分頁表項目116中的狀態位元之其一者係記憶體存取模式狀態位元U/S 126,用以指示分頁是否屬於使用者類型或監管者類型。結合第2圖之說明來論述狀態檢查之細節。
在一實施例中,分頁表項目116可能更包括保護鑰部分128,用以在其產生時儲存由用於分頁表項目116之作業系統選擇的保護鑰。在一實施例中,作業系統可能從可用於作業系統之一組現有的保護鑰中選擇保護鑰。例如,可能有可用於作業系統的十六個保護鑰以供選 擇,且作業系統可能選擇一個保護鑰,其被指定為下一個可用的保護鑰。在一實施例中,保護鑰係一串二進制位元(例如,4位元),其係作為識別符,用以取得儲存在一或更多權限暫存器中的一組記憶體存取權限。
在一實施例中,記憶體管理單元112可能包括使用者權限暫存器118和監管者權限暫存器120。使用者權限暫存器118係包括各儲存用於一組使用者分頁的一組記憶體存取權限之一些欄位的暫存器,且監管者權限暫存器120係包括各儲存用於一組監管者分頁的記憶體存取權限之一些欄位的暫存器。在一實施例中,儲存在分頁表項目116中的保護鑰128可能識別儲存在使用者權限暫存器118或監管者權限暫存器120之欄位中的特定權限。例如,保護鑰128可能是對儲存每個權限暫存器的這組權限之欄位的索引。因此,可能根據保護鑰128及在分頁表項目116中之分頁U/S 126的使用者或監管者記憶體存取模式來特有地取得儲存在使用者權限暫存器118和監管者權限暫存器120中的每組權限。
在一實施例中,使用者權限暫存器118和監管者權限暫存器120的每個欄位可能儲存包括一些記憶體存取權限位元的一組權限。在一實施例中,這組權限可能包括第一位元,用以指示是否致能或禁能讀取存取、第二位元,用以指示是否致能或禁能寫入存取、及第三位元,用以指示是否致能或禁能執行存取。在一實施例中,權限可能也包括指示用於加密儲存在分頁表項目116及其他定 義屬性中的記憶體頁框之權限的位元。
在一實施例中,記憶體管理單元112可能包括ADD邏輯電路112,包括輸入接腳,用以接收選自使用者權限暫存器118或監管者權限暫存器120,及選自基於儲存在分頁表項目116中之狀態位元所產生之記憶體存取權限的這組權限。ADD邏輯電路122可能結合從使用者權限暫存器118或監管者權限暫存器120接收的這組權限與基於儲存在分頁表項目116中之狀態位元所產生的記憶體存取權限以產生用於存取在分頁表項目116中引用之記憶體頁框的最終記憶體存取權限。
在一實施例中,回應於藉由在核心110上執行的工作來請求存取其識別符儲存在分頁表項目116中的記憶體頁框,記憶體管理單元112可能產生最終記憶體存取權限,其可能判斷來自工作的請求是否已超過分配給工作的權限。最終記憶體存取權限可能用以控制開關124。若來自工作的請求不超過最終記憶體存取權限,則開關124可能接合且允許實體位址通過至用於存取記憶體104的匯流排108。若來自工作的請求超過最終記憶體存取權限,則閘極124可能解開且防止實體位址脫離匯流排108。
在一實施例中,使用者權限暫存器的內容可能由在任何特權層級(例如使用者應用程式和作業系統的核心)下執行的工作讀取或更新,而監管者權限暫存器的內容可能僅由在高於使用者之特權層級(例如作業系統的 核心)下的工作讀取或更新。
第2圖繪示根據本揭露之一實施例之詳細的記憶體管理單元200。如第2圖所示,記憶體保護單元200可能包括分頁表項目202作為分頁表的一部分、專用於使用者模式之記憶體頁框的第一權限暫存器204(稱為使用者權限暫存器)、及專用於監管者模式之記憶體頁框的第二權限暫存器206(稱為監管者權限暫存器)。分頁表項目202可能是儲存在虛擬位址分頁表114中的多個分頁表項目之其一者,如第1圖所示。使用者權限暫存器204和監管者權限暫存器206之各者可能包括用以儲存與每個保護鑰224關聯之記憶體存取權限的一些欄位。
在一實施例中,分頁表項目202可能包括一或更多狀態位元、保護鑰部分224、及記憶體頁框號碼部分222。記憶體頁框號碼部分222(例如,尺寸為32位元)儲存虛擬位址之分頁號碼所映射至的記憶體頁框號碼。
在一實施例中,一或更多狀態位元可能包括存在/不存在(P/A)216位元,指示分頁表項目的記憶體頁框是否在記憶體中。P/A位元216之「1」可能指示記憶體頁框在記憶體中,且「0」可能指示記憶體頁框從記憶體置換為磁碟。一或更多狀態位元可能包括讀取/寫入(R/W)位元218,指示對由在分頁表項目202中的記憶體頁框指定的記憶體之部分的記憶體存取權限。例如,R/W位元218之「0」可能指示記憶體的部分係唯讀的 (或不能寫入的),且「1」可能指示記憶體的部分能被讀取和寫入。一或更多狀態位元可能包括XD位元226,指示對儲存在記憶體的部分中之指令的執行權限。例如,XD位元226之「1」可能指示指令從未被允許之記憶體的部分提取。
在一實施例中,分頁表項目202可能包括記憶體存取模式位元或使用者/監管者(U/S)狀態位元220,指示工作的特權層級,其係用以存取由分頁表項目202之記憶體頁框號碼引用的記憶體頁框。在一實施例中,U/S狀態位元220之「1」可能指示具有使用者模式特權或更高的工作能存取在分頁表項目202中識別的記憶體頁框,且U/S狀態位元220之「0」可能指示只有具有監管者模式存取的工作可能存取記憶體頁框。
在一實施例中,保護鑰部分224可能儲存由作業系統標記的n位元保護鑰(PKEY)至用於保護分頁表項目202之記憶體頁框的分頁表項目202。在一實施例中,回應於在工作中映射記憶體頁框,作業系統可能從可用於作業系統的一些保護鑰中選擇保護鑰(PKEY)且使用選定保護鑰以標記分頁表項目202。在一實施例中,作業系統可能提供應用程式能使用以請求在記憶體分頁中使用之特定保護鑰的介面。在一實施例中,保護鑰係一串n個位元的二進制碼,其可能作為對儲存在使用者權限暫存器204或監管者權限暫存器206的欄位中之權限的識別符。例如,0010之保護鑰可能指向在0010位置識別之使 用者權限暫存器204或監管者權限暫存器206的欄位。
在一實施例中,由於保護鑰224的長度為n位元,因此使用者權限暫存器204和監管者權限暫存器206之各者可能包括唯一可定址的2n欄位。
在一實施例中,儲存在使用者權限暫存器118和監管者權限暫存器120之欄位中的每組權限可能包括一些記憶體存取權限位元230。在一實施例中,這組權限位元230可能包括用以指示是否致能或禁能讀取存取的第一位元、用以指示是否致能或禁能寫入存取的第二位元、及用以指示是否致能或禁能執行存取的第三位元。在一實施例中,權限可能也包括指示用於加密儲存在分頁表項目116及其他定義屬性中的記憶體頁框之權限的位元。
在一實施例中,儲存在使用者權限暫存器204和監管者權限暫存器206中的記憶體存取權限位元係在啟動工作時或當切換至另一工作時藉由作業系統來設定。
在一實施例中,使用者權限暫存器204可能被具有使用者模式存取的使用者應用程式存取。用以讀取或寫入使用者權限暫存器204的指令可能被提供至使用者應用程式。例如,指令包括使用者權限暫存器讀取(RDPKRU)指令,其可能允許使用者應用程式讀取使用者權限暫存器204的內容、及使用者權限暫存器寫入(WRPKRU)指令,其可能允許使用者應用程式寫入至使用者權限暫存器204。藉由允許使用者應用程式直接地處理儲存在使用者權限暫存器204中的權限,透過保護鑰 (例如,通過作業系統)改變這組權限的效能負擔可能顯著地降低,允許更廣泛地使用保護鑰。
在一實施例中,記憶體管理單元可能包括多工器208,多工器208具有用以接收儲存在使用者權限暫存器204中之第一組權限(根據保護鑰224來選擇)的第一輸入、用以接收儲存在監管者權限暫存器206中之第二組權限(根據保護鑰224來選擇)的第二輸入、及耦接至分頁表202之存取模式位元(U/S位元)220的控制接腳。存取模式位元220可能選擇性地提供位於多工器208之輸出的第一組權限或第二組權限。
在一實施例中,回應於用以在分頁表項目202中指定之記憶體中存取記憶體頁框的請求,記憶體管理單元112可能進行兩個存取權限檢查。首先,記憶體管理單元112可能包括控制器214,其可能在輸入接收儲存在分頁表項目202中的一或更多狀態位元(例如XD 226、R/W 218、P/A 216)、及來自處理器的狀態位元(例如監管者模式執行保護(SMEP)狀態和執行工作的目前特權層級(CPL)),其定義處理器操作模式。控制器214可能基於狀態位元來輸出第一權限,包括基於分頁表項目之狀態位元來指示記憶體存取權限的第一組權限位元。在一實施例中,第一組權限位元可能包括用以指示是否致能或禁能讀取的第一位元、用以指示是否致能或禁能寫入的第二位元、及用以指示是否致能或禁能執行的第三位元。
在一實施例中,記憶體管理單元112可能回 應於藉由工作用以在分頁表項目202中指定之記憶體中存取記憶體頁框的請求來提供第二權限檢查。在一實施例中,記憶體管理單元112可能包括多工器208,包括耦接至使用者權限暫存器204的第一輸入及耦接至監管者權限暫存器206的第二輸入。多工器208可能更包括耦接至分頁表項目202之U/S位元220的控制接腳。儲存在U/S位元220中的值可能控制哪個權限暫存器在多工器208的輸出提供其內容,且保護鑰224判斷哪個欄位提供權限。多工器208的輸出可能提供第二組權限位元,包括用以指示是否致能或禁能讀取的第一位元、用以指示是否致能或禁能寫入的第二位元、及用以指示是否致能或禁能執行的第三位元。在一實施例中,權限可能也包括指示用於加密儲存在分頁表項目116及其他定義屬性中的記憶體頁框之權限的位元。
在一實施例中,記憶體管理單元112可能包括AND邏輯212,AND邏輯212包括用以從控制器214接收第一組權限位元的第一輸入及用以從多工器208接收第二組權限位元的第二輸入。AND邏輯212可能基於第一組權限和保護鑰權限來產生一組最終記憶體存取權限。這組最終記憶體存取權限可能包括使用在第一組權限與保護鑰權限之間之最低權限的權限位元。例如,若第一組權限位元具有指示被致能之寫入的寫入權限位元且第二組權限位元具有指示被禁能之寫入的寫入權限位元,則用於最終組的寫入權限位元被禁能。然而,若在兩組中的寫入權 限位元指示被致能之寫入,則在最終權限中的寫入權限被致能。
在一實施例中,用以藉由工作來存取記憶體的請求係與最終權限相比以判斷請求是否超過對工作同意的權限。若超過,則記憶體管理單元可能產生分頁失效信號以防止將實體位址輸出至匯流排108及通知處理核心結果。
第3圖係根據本揭露之一實施例之藉由記憶體管理單元來檢查用以存取記憶體的權限之操作300的流程圖。參考第3圖,在302中,操作可能回應於藉由在使用者模式存取或監管者模式存取中執行之工作的記憶體請求而開始。記憶體管理單元可能基於由工作請求之記憶體的虛擬位址來搜尋分頁表項目且判定儲存在分頁表項目中之記憶體的記憶體頁框,及進行從記憶體的虛擬位址映射至實體位址之映射。
在允許基於實體位址來存取記憶體之前,在304中,記憶體管理單元的控制器可能基於處理器操作的狀態位元(例如XD、P/A、R/W)和處理器狀態位元來產生第一組權限。記憶體管理單元可能判斷第一組權限是否允許存取記憶體的實體位址。若第一組權限不允許由工作所請求的存取,則在314中,記憶體管理單元可能產生分頁失效信號至處理核心以通知請求工作。
若第一權限允許存取,則在306中,記憶體管理單元可能基於儲存在分頁表項目中的U/S位元來判斷 分頁表項目是否被標記使用者模式或監管者模式。若分頁表項目係用於使用者模式,則在310中,記憶體管理單元可能使用儲存在分頁表項目中的保護鑰以選擇儲存在使用者權限暫存器中的第二組權限,及判斷第二組權限是否允許由工作所請求之存取記憶體。若它被允許,則在312中,記憶體管理單元可能允許工作存取其記憶體頁框號碼儲存在分頁表項目中的記憶體頁框。若它未被允許,則在314中,記憶體管理單元可能產生分頁失效信號且不允許存取記憶體頁框。
若分頁表項目被判定用於監管者模式,則在308中,記憶體管理單元可能使用儲存在分頁表項目中的保護鑰以選擇儲存在監管者權限暫存器中的第二組權限,及判斷第二組權限是否允許由工作所請求之存取記憶體。若它未被允許,則在314中,記憶體管理單元可能產生分頁失效信號且不允許存取記憶體頁框。若它被允許,則在312中,記憶體管理單元可能允許工作存取其記憶體頁框儲存在分頁表項目中的記憶體頁框。
第4圖係根據本揭露之一實施例之用以操作包括核心和記憶體管理單元的處理器之方法的流程圖。方法400可能藉由處理核心來進行,處理核心可能包括硬體(例如,電路、專用邏輯、可編程邏輯、微碼等等)、軟體(例如在處理系統、通用電腦系統、或專用機器上運行的指令)、韌體、或以上之組合。在一實施例中,方法400相對於第1圖可能部分地藉由執行作業系統的處理核 心110之任一者的處理邏輯來進行。
為了簡單說明起見,方法400被描繪且描述為一系列動作。然而,依照本揭露之動作能以各種順序及/或與本文中未提出且描述的其他動作同時發生。再者,並非所有顯示的動作都可能被進行以實作依照本揭露主題之方法400。另外,本領域之技藝者將了解且清楚明白方法400可以替代地被表示為經由狀態圖或事件的一系列相關狀態。
參考第4圖,在402中,處理邏輯(例如作業系統)可能開始管理工作(例如執行使用者應用程式或核心)。在404中,處理邏輯可能判定工作操作所位於的特權層級。工作的特權層級判定記憶體存取的模式為使用者模式存取或監管者模式存取。在一實施例中,處理邏輯可能從暫存器接收特權層級,其保持目前特權層級(CPL)之記錄,其可能支援從0至3之層級,其中0作為最低層級(例如使用者應用程式)且3作為最高層級(例如作業系統的核心)。工作可能在使用者層級(例如,CPL=3)或在監管者層級(例如,CPL<3)下運行。
在406中,處理邏輯可能判定由工作分配的記憶體之記憶體頁框的識別符(或號碼)。
在408中,處理邏輯可能從可用於處理邏輯的一組保護鑰中選擇保護鑰。保護鑰可能是n位元的二進制碼,其可能用以識別儲存在一或更多權限暫存器中的記憶體存取權限。
在410中,處理邏輯可能儲存存取模式和記憶體頁框的判定之識別符、及在記憶體管理單元的分頁表之分頁表項目中的選定之保護鑰。分頁表項目可能用以將記憶體的虛擬位址映射至實體位址及判定對記憶體的存取權限。
在一實施例中,處理邏輯可能判定用於工作的記憶體存取權限,記憶體存取權限包含指示讀取權限的第一位元、指示寫入權限的第二位元、或指示執行權限的第三位元之至少一者。處理邏輯可能基於存取模式為使用者模式存取或監管者模式存取來選擇使用者權限暫存器或監管者權限暫存器之其一者。處理邏輯可能使用保護鑰作為識別符來儲存記憶體存取權限在選定權限暫存器的欄位中。
第5A圖係繪示依照本揭露之一實施例之用於實作包括異質核心之處理裝置的處理器500之微型結構的方塊圖。具體而言,處理器500描繪根據本揭露之至少一實施例之要包括在處理器中的有序結構核心和暫存器更名邏輯、亂序發出/執行邏輯。
處理器500包括前端單元530,耦接至執行引擎單元550,且這兩者都耦接至記憶體單元570。處理器500可能包括精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或任一核心類型。作為另一種選擇,處理器500可能包括專用核心,例如,網路或通訊核心、壓縮引擎、圖形核 心、或之類。在一實施例中,處理器500可能是多核心處理器或可能是多處理器系統的一部分。
前端單元530包括分支預測單元532,耦接至指令快取單元534,其係耦接至指令轉譯後備緩衝器(TLB)536,其係耦接至指令提取單元538,其係耦接至解碼單元540。解碼單元540(也稱為解碼器)可能解碼指令,並產生作為輸出的一或更多微操作、微碼進入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或以其他方式反映原始指令、或從原始指令取得。解碼器540可能使用各種不同機制來實作。適當機制之實例包括,但不限於查找表、硬體實作、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。指令快取單元534更耦接至記憶體單元570。解碼單元540係耦接至執行引擎單元550中的更名/分配器單元552。
執行引擎單元550包括更名/分配器單元552,耦接至引退單元554及一組一或更多排程器單元556。排程器單元556代表任何數量的不同排程器,包括保留站、中央指令視窗、等等。排程器單元556係耦接至實體暫存器檔案單元558。每個實體暫存器檔案單元558代表一或更多實體暫存器檔案,其之不同者儲存一或更多不同的資料類型,如純量整數、純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數、等等、狀態(例如,指令指標,其係將被執行之下一個指令的位址)、等等。引退單元554重疊實體暫存器檔案單元558以繪示可 能實作暫存器更名和亂序執行的各種方式(例如,使用重排序緩衝器和引退暫存器檔案、使用未來檔案、歷史緩衝器、和引退暫存器檔案;使用暫存器映射及暫存器池;等等)。
一般而言,可從處理器外部或從編程器的角度見到結構暫存器。暫存器並不限於任何已知之特定類型的電路。各種不同類型的暫存器係適當的,只要它們能夠儲存和提供如本文所述之資料即可。適當暫存器之實例包括,但不限於專用實體暫存器、使用暫存器更名之動態配置的實體暫存器、專用與動態配置之實體暫存器之組合、等等。引退單元554和實體暫存器檔案單元558係耦接至執行叢集560。執行叢集560包括一組一或更多執行單元562和一組一或更多記憶體存取單元564。執行單元562可能對各種類型的資料(例如,純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數)進行各種操作(例如,移位、加法、減法、乘法)。
儘管一些實施例可能包括一些專用於特定功能或功能組的執行單元,但其他實施例可能包括只有一個執行單元或全部進行所有功能的多個執行單元。排程器單元556、實體暫存器檔案單元558、和執行叢集560被顯示為可能是複數的,因為某些實施例對某些類型的資料/操作建立獨立管線(例如,純量整數管線、純量浮點數/填充整數/填充浮點數/向量整數/向量浮點數管線、及/或各具有其自己之排程器單元的記憶體存取管線、實體暫存 器檔案單元、及/或執行叢集-且在獨立的記憶體存取管線之情況下,實作了某些實施例是只有此管線的執行叢集具有記憶體存取單元564。也應了解使用了獨立管線,這些管線之一或更多者可能是亂序發出/執行且其餘的是有序的。
這組記憶體存取單元564係耦接至記憶體單元570,其可能包括資料預取器580、資料TLB單元572,資料快取單元(DCU)574、及第2級(L2)快取單元576,僅舉出數個實例。在一些實施例中,DCU 574也被稱為第一級資料快取(L1快取)。DCU 574可能處理多個未處理的快取未中且繼續服務輸入的儲存和載入。也支援保持快取同調性。資料TLB單元572係用以藉由映射虛擬和實體位址空間來提高虛擬位址轉換速度的快取。在一示範實施例中,記憶體存取單元564可能包括載入單元、儲存位址單元、及儲存資料單元,各耦接至記憶體單元570中的資料TLB單元572。L2快取單元576可能耦接至一或更多其他級的快取且最終耦接至主記憶體。
在一實施例中,資料預取器580藉由自動地預測程式將要消耗哪個資料來推測地載入/預取資料至DCU 574。預取可能係指在由處理器實際上要求資料之前將儲存在記憶體階層(例如,較低級快取或記憶體)之一個記憶體位置中的資料傳送至較接近(例如,產生較低的存取延遲時間)的較高級記憶體位置。更具體而言,預取可能係指在處理器發出對被回傳之特定資料的要求之前提 早從較低級快取/記憶體至資料快取及/或預取緩衝器之其一者提取資料。
處理器500可能支援一或更多指令集(例如,x86指令集(具有已加入較新版本的一些擴充);美國加州Sunnyvale的MIPS技術之MIPS指令集;美國加州Sunnyvale的ARM股份公司之ARM指令集(具有如NEON的可選額外的擴充))。
應了解核心可能支援多執行緒(執行兩個或更多平行組的操作或執行緒),且可能以各種方式來實行,包括時間切割多執行緒、同步多執行緒(其中單一實體核心提供邏輯核心給實體核心係同步多執行緒的每個執行緒)、或以上之組合(例如,時間切割提取和解碼及之後如Intel®超執行緒技術的同步多執行緒)。
儘管在亂序執行之內文中說明了暫存器更名,但應了解可在有序結構中使用暫存器更名。儘管處理器之所示實施例也包括分開的指令和資料快取單元及共享L2快取單元,但其他實施例可能具有用於指令和資料兩者的單一內部快取,例如,第1級(L1)內部快取、或多個級的內部快取。在一些實施例中,系統可能包括內部快取與在核心及/或處理器外部的外部快取之組合。另外,所有快取可能在核心及/或處理器外部。
第5B圖係繪示根據本揭露之一些實施例之藉由第5A圖之處理裝置500所實作的有序管線和暫存器更名級、亂序發出/執行管線之方塊圖。第5B圖中的實線框 繪示有序管線,而虛線框繪示暫存器更名、亂序發出/執行管線。在第5B圖中,處理器管線500包括提取級502、長度解碼級504、解碼級506、分配級508、更名級510、排程(也稱為調度或發出)級512、暫存器讀取/記憶體讀取級514、執行級516、寫回/記憶體寫入級518、例外處理級522、及提交級524。在一些實施例中,級502-524之順序可能不同於所顯示的且並不限於第5B圖所示之特定順序。
第6圖繪示依照本揭露之一實施例之用於處理器600的微型結構之方塊圖。在一些實施例中,能實作依照一實施例之指令以在具有位元組、字元、雙字元、四字元等、以及資料類型(例如單和雙精度整數和浮點數資料類型)之尺寸的資料元件上操作。在一實施例中,有序前端601係處理器600的一部分,其提取要被執行的指令且製備它們之後要在處理器管線中使用。
前端601可能包括數個單元。在一實施例中,指令預取器626從記憶體提取指令且將它們饋送至指令解碼器628,其依序解碼或解譯它們。例如,在一實施例中,解碼器將接收之指令解碼成機器能執行之稱為「微指令」或「微操作」(也稱為micro op或uop)的一或更多操作。在其他實施例中,解碼器將指令剖析成運算碼和對應資料且控制由微型結構使用以進行依照一實施例之操作的欄位。在一實施例中,追蹤快取630取得解碼器之微操作且將它們組合成程式有序序列或在微操作佇列634中 的跡線用於執行。當追蹤快取630遇到複雜指令時,微碼ROM 632提供完成操作所需的微操作。
一些指令被轉換成單一微操作,而其他指令需要數個微操作以完成全操作。在一實施例中,若需要超過四個微操作以完成指令,則解碼器628存取微碼ROM 632以進行指令。針對一實施例,指令能被解碼成少量的微操作用於在指令解碼器628中的處理。在另一實施例中,指令能儲存於微碼ROM 632內,應需要一些微操作以完成操作。追蹤快取630係指進入點可編程邏輯陣列(PLA)以判定正確的微指令指標用於從微碼ROM 632讀取微碼序列以完成依照一實施例之一或更多指令。在微碼ROM 632完成排序用於指令的微操作之後,機器的前端601回復從追蹤快取630提取微操作。
亂序執行引擎603係其中指令被製備用於執行。亂序執行邏輯具有一些緩衝器,用以平穩流出且重排序指令流以當它們落下管線時且被排程用於執行時最佳化效能。分配器邏輯分配每個微操作需要用以執行的機器緩衝器和資源。暫存器更名邏輯將邏輯暫存器更名至暫存器檔案中的項目上。分配器也分配項目用於在兩個微操作佇列中之其一者中的每個微操作,一個用於記憶體操作且一個用於非記憶體操作,在指令排程器前面:記憶體排程器、快取排程器602、緩慢/一般浮點數排程器604、及簡單浮點數排程器606。微操作排程器602、604、606基於其相依輸入暫存器運算元來源之讀取和微操作需要完成其 操作的執行資源之可用性來判斷何時微操作準備執行。一個實施例之快速排程器602能在每一半的主時脈週期上排程,而其他排程器僅能每主處理器時脈週期一次排程。排程器仲裁調度埠口以排程微操作用於執行。
暫存器檔案608、610位於排程器602、604、606、與在執行方塊611中的執行單元612、614、616、618、620、622、624之間。有單獨的暫存器檔案608、610分別用於整數和浮點數操作。一個實施例之每個暫存器檔案608、610也包括旁通網路,其能將未寫入至暫存器檔案中之剛完成的結果旁通或轉送至新的相依微操作。整數暫存器檔案608和浮點數暫存器檔案610也能夠彼此通訊資料。針對一個實施例,整數暫存器檔案608被分成兩個單獨的暫存器檔案,一個暫存器檔案用於資料的較低序32位元且第二暫存器檔案用於資料的較高序32位元。一個實施例之浮點數暫存器檔案610具有128位元寬的項目,因為浮點數指令通常具有寬度從64至128位元的運算元。
執行方塊611包含執行單元612、614、616、618、620、622、624,其中實際上執行指令。此部分包括暫存器檔案608、610,其儲存微指令需要執行的整數和浮點數資料運算元值。一個實施例之處理器600包含一些執行單元:位址產生單元(AGU)612、AGU 614、快速ALU 616、快速ALU 618、緩慢ALU 620、浮點數ALU 622、浮點數移動單元624。針對一個實施例,浮點數執 行方塊622、624、執行浮點數、MMX、SIMD、及SSE、或其他操作。一個實施例之浮點數ALU 622包括64位元除以64位元的浮點數除法器,用以執行除法、平方根、及餘數微操作。針對本揭露之實施例,可能以浮點數硬體處理包含浮點數值的指令。
在一實施例中,ALU操作前往高速ALU執行單元616、618。一個實施例之快速ALU 616、618能在時脈週期一半的有效延遲時間下執行快速操作。針對一個實施例,最複雜的整數操作前往緩慢ALU 620,因為緩慢ALU 620包括整數執行硬體用於長延遲時間類型的操作,例如乘法器、移位、旗標邏輯、及分支處理。記憶體載入/儲存操作係由AGU 612、614執行。針對一個實施例,在於64位元資料運算元上進行整數操作的內文中說明了整數ALU 616、618、620。在其他實施例中,能實作ALU 616、618、620以支援包括16、32、128、256等的各種資料位元。同樣地,能實作浮點數單元622、624以支援具有各種寬度之位元的一系列運算元。針對一個實施例,浮點數單元622、624能結合SIMD和多媒體指令而在128位元寬的填充資料運算元上操作。
在一實施例中,微操作排程器602、604、606、調度相依操作在母載入之前已完成執行。當在處理器600中推測地排程和執行微操作時,處理器600也包括用以處理記憶體未命中的邏輯。若資料載入在資料快取中未命中,則在管線中可以有飛行中的相依操作,其留下了 具有暫時不正確資料的排程器。重播機制追蹤且重新執行使用不正確資料的指令。只有相依操作必須被重播且獨立操作被允許完成。處理器之一個實施例的排程器和重播機制也被設計為擷取用於正文字串比較操作的指令序列。
根據本揭露之實施例,處理器600也包括用以實作用於記憶體歧義消除之儲存位址預測的邏輯。在一實施例中,處理器600的執行方塊611可能包括用於實作用於記憶體歧義消除之儲存位址預測的儲存位址預測器(未示出)。
「暫存器」之術語可能係指板上處理器儲存位址,其係作為用以識別運算元的一部分指令。換言之,暫存器從處理器外部(從編程器的角度來看)可能是可用的暫存器。然而,實施例之暫存器就意義上不應限於特定類型的電路。反而,實施例之暫存器能夠儲存和提供資料,且進行本文所述之功能。本文所述之暫存器能使用一些不同技術藉由在處理器內的電路來實作,例如專用實體暫存器、使用暫存器更名之動態配置的實體暫存器、專用與動態配置之實體暫存器之組合、等等。在一實施例中,整數暫存器儲存三十二個位元整數資料。一個實施例之暫存器檔案也包含用於填充資料的八個多媒體SIMD暫存器。
針對下面的論述,暫存器被視為被設計為在以來自加州Santa Clare之Intel公司的MMX技術啟動的微處理器中保持填充資料的資料暫存器,例如64位元寬的MMXTM暫存器(在一些實例中也被稱為「mm」暫存 器)。在整數和浮點數形式中可用的這些MMX暫存器能以隨同SIMD和SSE指令的填充資料元件操作。同樣地,有關SSE2、SSE3、SSE4、或以上(一般稱為「SSE」)之128位元寬的XMM暫存器技術也能用以保持上述填充資料運算元。在一實施例中,在儲存填充資料和整數資料中,暫存器不需要在兩種資料類型之間進行區別。在一實施例中,整數和浮點數係包含在相同暫存器檔案或不同暫存器檔案中。再者,在一實施例中,浮點數和整數資料可能儲存在不同暫存器或相同暫存器中。
現在參考第7圖,所顯示的係繪示其中可能使用本揭露之一實施例的系統700之方塊圖。如第7圖所示,多處理器系統700是點對點互連系統,且包括經由點對點互連750耦接的第一處理器770和第二處理器780。儘管只顯示了兩個處理器770、780,但要了解本揭露之實施例並不以此為限。在其他實施例中,在給定處理器中可能存在一或更多額外處理器。
顯示處理器770和780分別包括整合記憶體控制器單元772和782。處理器770也包括作為其匯流排控制器單元點對點(P-P)介面776和778的部分;同樣地,第二處理器780包括P-P介面786和788。處理器770、780可能使用P-P介面電路778、788經由點對點(P-P)介面750來交換資訊。如第7圖所示,IMC 772和782將處理器耦接至各別記憶體(即記憶體732和記憶體734),其可能是區域附接於各別處理器之主記憶體的 部分。
處理器770、780可能各使用點對點介面電路776、794、786、798經由個別P-P介面752、754來與晶片組790交換資訊。晶片組790可能也經由高效能圖形介面739來與高效能圖形電路738交換資訊。
共享快取(未示出)可能包括在任一處理器中或兩處理器之外;還經由P-P互連與處理器連接,使得若將處理器置於低功率模式中,則任一或兩處理器的區域快取資訊可能儲存於共享快取中。
晶片組790可能經由介面796來耦接至第一匯流排716。在一實施例中,第一匯流排716可能是周邊元件互連(PCI)匯流排、或如PCI快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明之範圍並不以此為限。
如第7圖所示,各種I/O裝置714可能與匯流排橋接器718一起耦接至第一匯流排716,其中匯流排橋接器718將第一匯流排716耦接至第二匯流排720。在一實施例中,第二匯流排720可能是低接腳數(LPC)匯流排。在一實施例中,各種裝置可能耦接至第二匯流排720,包括例如鍵盤及/或滑鼠722、通訊裝置727及如磁碟機或可能包括指令/碼和資料730之其他大容量儲存裝置的儲存單元728。此外,音頻I/O 724可能耦接至第二匯流排720。請注意其他結構係可能的。例如,系統可能實作多點匯流排或其他這類結構,來取代第7圖之點對點 結構。
現在參考第8圖,所顯示的係其中可能操作本揭露之一實施例的系統800之方塊圖。系統800可能包括一或更多處理器810、815,其係耦接至圖形記憶體控制器匯流排(GMCH)820。在第8圖中以虛線來表示額外處理器815的非必要性。
每個處理器810、815可能是一些型式的電路、積體電路、處理器、及/或矽積體電路,如上所述。然而,應注意整合圖形邏輯和整合記憶體控制單元不太可能會存在於處理器810、815中。第8圖繪示GMCH 820可能耦接至記憶體840,其可能是例如動態隨機存取記憶體(DRAM)。針對至少一個實施例,DRAM可能與非揮發性快取關聯。
GMCH 820可能是晶片組,或晶片組的一部分。GMCH 820可能與處理器810、815通訊且控制在處理器810、815與記憶體840之間的互動。GMCH 820可能也當作在處理器810、815與系統800的其他元件之間的加速匯流排介面。針對至少一個實施例,GMCH 820經由如前端匯流排(FSB)895之多點匯流排來與處理器810、815通訊。
再者,GMCH 820係耦接至顯示器845(例如平板或觸控螢幕顯示器)。GMCH 820可能包括整合圖形加速器。GMCH 820進一步耦接至輸入/輸出(I/O)控制器匯流排(ICH)850,其可能用以將各種周邊裝置耦接至 系統800。例如,在第8圖之實施例中所顯示的是外部圖形裝置860,其可能是離散的圖形裝置,與另一周邊裝置870一起耦接至ICH 850。
另外,額外或不同的處理器可能也存在於系統800中。例如,額外處理器815可能包括與處理器810相同的額外處理器、與處理器810不同型或不對稱的額外處理器、加速器(例如圖形加速器或數位信號處理(DSP)單元)、現場可編程閘陣列、或任何其他處理器。就規制標準而言,在處理器810、815之間會有多種差異,包括結構、微型結構、熱、功率消耗特性、等等。這些差異可能有效地在處理器810、815之間將它們顯示為不對稱和異質性的。針對至少一個實施例,各種處理器810、815可能存在於相同的晶粒封裝中。
現在參考第9圖,所顯示的係其中可能操作本揭露之一實施例的系統900之方塊圖。第9圖繪示處理器970、980。處理器970、980可能分別包括整合記憶體和I/O控制邏輯(「CL」)972和982,且分別經由在點對點(P-P)介面978和988之間的點對點互連950來彼此互相通訊。處理器970、980各透過各別P-P介面976至994和986至998經由點對點互連952和954來與晶片組990通訊,如圖所示。針對至少一個實施例,CL 972、982可能包括整合記憶體控制器單元。CL 972、982可能包括I/O控制邏輯。如圖所示,記憶體932、934耦接至CL 972、982,且I/O裝置914也耦接至控制邏輯972、 982。傳統I/O裝置915係經由介面996來耦接至晶片組990。
實施例可能在許多不同的系統類型中實作。第10圖係依照本揭露之一實施例的SoC 1000之方塊圖。虛線框在更進階的SoC上是非必要的特徵。在第10圖中,互連單元1012係耦接至:包括一組一或更多核心1002A-N及共享快取單元1006的應用處理器1020;系統代理器單元1010;匯流排控制器單元1016;整合記憶體控制器單元1014;可能包括整合圖形邏輯1008、用於提供靜物及/或視頻攝影機功能的影像處理器1024、用於提供硬體音頻加速的音頻處理器1026、和用於提供視頻編碼/解碼加速的視頻處理器1028的一組或一或更多媒體處理器1018;靜態隨機存取記憶體(SRAM)單元1030;直接記憶體存取(DMA)單元1032、及用於耦接至一或更多外部顯示器的顯示單元1040。在一實施例中,記憶體模組可能包括在整合記憶體控制器單元1014中。在另一實施例中,記憶體模組可能包括在可能用以存取及/或控制記憶體之SoC 1000的一或更多其他元件中。
記憶體階層包括核心內的一或更多級快取、一組或一或更多共享快取單元1006、及耦接至這組整合記憶體控制器單元1014的外部記憶體(未示出)。這組共享快取單元1006可能包括如第2級(L2)、第3級(L3)、第4級(L4)、或其他級之快取的一或多個中級快取(LLC)、最後一級的快取(LLC)、及/或以上之組 合。
在一些實施例中,一或更多核心1002A-N能夠執行多執行緒。系統代理器1010包括那些協調和操作核心1002A-N的元件。例如,系統代理器單元1010可能包括電力控制單元(PCU)及顯示單元。PCU可能是或包括調節核心1002A-N及整合圖形邏輯1008之電力狀態所需的邏輯和元件。顯示單元係用於驅動一或更多外部連接的顯示器。
就結構及/或指令集而言,核心1002A-N可能是同型或不同型的。例如,核心1002A-N之一些者可能是有序的,而其他者是亂序的。作為另一實例,核心1002A-N之兩個或更多者也許能夠執行相同的指令集,而其他者也許僅能夠執行此指令集的子集或不同的指令集。
應用程式處理器1020可能是如CoreTMi3、i5、i7、2 Duo和Quad、XeonTM、ItaniumTM、AtomTM或QuarkTM處理器的通用處理器,其可能得自於美國加州Santa Clara的IntelTM公司。另外,應用程式處理器1020可能來自另一公司,例如ARM HoldingsTM股份有限公司、MIPSTM、等等。應用程式處理器1020可能是專用處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、協處理器、嵌入式處理器或之類。應用程式處理器1020可能在一或更多晶片上實作。應用程式處理器1020可能是一或多個基板的一部分及/或可能使用例如BiCMOS、CMOS、或NMOS的一些處理技術之任一者來 實作在一或多個基板上。
第11圖係依照本揭露的系統晶片(SoC)設計之一實施例的方塊圖。作為一具體說明性實例,SoC 1100係包括在使用者設備(UE)中。在一實施例中,UE係指要由終端使用者用來通訊的任何裝置,例如手持電話、智慧型手機、平板電腦、纖薄型筆記型電腦、具有寬頻適配器的筆記型電腦、或任何其他類似的通訊裝置。通常UE連接至基地台或節點,其可能實質上對應於在GSM網路中的行動台(MS)。
在此,SoC 1100包括2個核心-1106和1107。核心1106和1107可能遵守指令集結構,例如Intel® Architecture CoreTM為基的處理器、先進微裝置公司(AMD)處理器、MIPS為基的處理器、ARM為基的處理器設計、或以上之客戶、以及其獲許可的人或採用者。核心1106和1107係耦接至快取控制1108,其係與匯流排介面單元1109和L2快取1110關聯以與系統1100的其他部分通訊。互連1111包括晶片上互連,例如IOSF、AMBA、或上述其他互連,其可能實作所述之揭露的一或更多態樣。
互連1111將通訊通道提供至其他元件,例如用以連接SIM卡的用戶身分模組(SIM)1130、用以保持啟動碼用於藉由核心1106和1107來執行以初始化和啟動SoC 1100的開機ROM 1135、用以連接外部記憶體(例如,DRAM 1160)的SDRAM控制器1140、用以連接非揮 發性記憶體(例如,快閃1165)的快閃控制器1145、用以連接周邊裝置的周邊控制1150(例如,序列周邊介面)、用以顯示和接收輸入(例如,觸控啟動的輸入)的視頻編解碼器1120和視頻介面1125、用以進行圖形相關計算的GPU 1115、等等。這些介面之任一者可能結合本文所述之揭露的態樣。另外,系統1100繪示用於通訊的周邊裝置,例如藍芽模組1170、3G數據機1175、GPS 1180、及Wi-Fi 1185。
第12圖繪示以在其中可能執行用於使機器進行本文所述之任一或更多方法之一組指令的電腦系統1200為示範形式之機器的圖示。在其他實施例中,機器可能連接(例如,網絡)至在LAN中的其他機器、企業內部網路、企業間網路、或網際網路。機器可能在主從式網路環境中之伺服器或客戶端裝置的容量中操作,或作為在點對點(或分佈式)網路環境中的對等機器。機器可能是個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、蜂巢式電話、網路裝置、伺服器、網路路由器、交換器或橋接器、或能夠執行明定要由此機器採取的動作之一組指令(順序或以其他方式)的任何機器。此外,儘管只有繪示單一機器,但「機器」之術語也應被視為包括機器之任何組合,其個別地或共同地執行一組(或多組)指令以進行本文所述之任一或更多方法。
電腦系統1200包括處理裝置1202、主記憶體1204(例如,唯讀記憶體(ROM)、快閃記憶體、動態隨 機記憶體(DRAM)(例如同步DRAM(SDRAM)或DRAM(RDRAM)、等等)、靜態記憶體1206(例如,快閃記憶體、靜態隨機存取記憶體(SRAM)、等等)、及資料儲存裝置1218,其經由匯流排1230來彼此通訊。
處理裝置1202代表一或更多通用處理裝置,例如微處理器、中央處理單元或之類。更具體而言,處理裝置可能是複雜指令集計算(CISC)微處理器、精簡指令集電腦(RISC)微處理器、極長指令字(VLIW)微處理器、或實作其他指令集的處理器、或實作指令集之組合的處理器。處理裝置1202可能也是一或更多專用處理裝置,例如專用積體電路(ASIC)、現場可編程閘陣列(FPGA)、數位信號處理器(DSP)、網路處理器或之類。在一實施例中,處理裝置1202可能包括一或更多處理核心。處理裝置1202係配置以執行用於進行本文所述之操作和步驟的處理邏輯1226。
電腦系統1200可能更包括通訊地耦接至網路1220的網路介面裝置1208。電腦系統1200也可能包括視頻顯示單元1210(例如,液晶顯示器(LCD)或陰極射線管(CRT))、字母數字輸入裝置1212(例如,鍵盤)、游標控制裝置1214(例如,滑鼠)、及信號產生裝置1216(例如,揚聲器)。又,電腦系統1200可能包括圖形處理單元1222、視頻處理單元1228、及音頻處理單元1232。
資料儲存裝置1218可能包括於其上係實作本 文所述之任一或更多方法(例如實作用於如上所述之記憶體歧義消除的儲存位址預測)的儲存之軟體1226的機器可存取儲存媒體1224。軟體1226在由電腦系統1200執行它們期間可能也完全地或至少部分地存在於主記憶體1204內作為指令1226及/或存在於處理裝置1202內作為處理邏輯1226;主記憶體1204和處理裝置1202也構成機器可存取儲存媒體。
機器可讀儲存媒體1224可能也用以儲存實作儲存位址預測的指令1226及/或包含呼叫上述應用程式之方法的軟體程式館。儘管機器可存取儲存媒體1128在一示範實施例中被顯示為單一媒體,但「機器可存取儲存媒體」之術語應被視為包括單一媒體或多個媒體(例如,集中式或分佈式資料庫及/或相關快取和伺服器),其儲存一或更多組指令。「機器可存取儲存媒體」之術語也應被視為包括能夠儲存、編碼或載送一組指令用於藉由機器來執行且使機器進行本揭露之任一或更多方法的任何媒體。「機器可存取儲存媒體」之術語藉此應被視為包括,但不限於固態記憶體、及光學和磁性媒體。
下面的實例關於其他實施例。實例1係一種處理系統,包括一處理核心,用以執行一工作,及一記憶體管理單元,耦接至處理核心。記憶體管理單元包括一儲存單元,用以儲存一分頁表項目,分頁表項目包括記憶體頁框的一或更多識別符、一保護鑰、及根據一使用者模式或根據一監管者模式指示一或更多記憶體頁框是否係可存 取的一存取模式位元,一第一權限暫存器,包括複數個欄位,每個欄位包含在使用者模式下反射一組記憶體存取權限的一組位元,及一第二權限暫存器,儲存複數個欄位,每個欄位包含在監管者模式下反射一組記憶體存取權限的一組位元。
在實例2中,實例1之主題能可選地提出記憶體管理單元更包含一多工器,多工器包含耦接至第一權限暫存器的一第一輸入、耦接至第二權限暫存器的一第二輸入、及耦接至存取模式位元的一控制接腳。
在實例3中,實例1和2之任一者之主題能可選地提出多工器回應於指示使用者模式之存取模式位元而用以提供儲存在第一權限暫存器之複數個欄位之其一者中的一第一組位元至多工器的輸出,且多工器回應於指示監管者模式之存取模式位元而用以提供儲存在第二權限暫存器之複數個欄位之其一者中的一第二組位元至多工器的輸出。
在實例4中,實例3之主題能可選地提出第一權限暫存器之複數個欄位之其一者係根據分頁表項目之保護鑰來選擇,且第二權限暫存器之複數個欄位之其一者係根據分頁表項目之保護鑰來選擇。
在實例5中,實例4之主題能可選地提出其中第一組位元包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者,且其中第二組位元包含指示一讀取權限之一 第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者。
在實例6中,實例5之主題能可選地提出分頁表項目包含複數個狀態位元。
在實例7中,實例6之主題能可選地提出記憶體管理單元包含一控制器,用以接收複數個狀態位元及基於複數個狀態位元來判定一第一組記憶體存取權限,且其中第一組記憶體存取權限包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者。
在實例8中,實例7之主題能可選地提出記憶體管理單元包含一AND邏輯,AND邏輯包含用以接收第一組記憶體存取權限的一第一輸入及用以從多工器之輸出接收一第二組記憶體存取權限的一第二輸入,其中AND邏輯係用以基於第一及第二組記憶體存取權限來產生一組最終記憶體存取權限。
在實例9中,實例8之主題能可選地提出記憶體管理單元基於最終記憶體存取權限來提供工作存取至一或更多記憶體頁框。
在實例10中,實例1之主題能可選地提出工作具有一使用者模式存取或一監管者模式存取之其一者的特權層級。
在實例11中,實例1和10之主題能可選地提出第一權限暫存器可被具有使用者模式存取或監管者模 式存取之其一者之特權層級的工作存取。
在實例12中,實例11之主題能可選地提出第一權限暫存器包含可被具有使用者模式存取或監管者模式存取之其一者之特權層級的工作設定的多個權限位元。
在實例13中,實例12之主題能可選地提出具有使用者模式存取或監管者模式存取之其一者之特權層級的工作係用以識別儲存在第一權限暫存器中的一權限位元且設定權限位元以禁能權限。
在實例14中,實例13之主題能可選地提出保護鑰包含n位元,且第一及第二權限暫存器之各者包含2n個欄位。
實例15係一種系統晶片(SoC),包括一記憶體及一處理器,通訊地耦接至記憶體,處理器包括一處理核心,用以執行一工作,及一記憶體管理單元,耦接至處理核心,記憶體管理單元包括一儲存單元,用以儲存一分頁表項目,分頁表項目包含記憶體頁框的一或更多識別符、一保護鑰、及根據一使用者模式或根據一監管者模式指示一或更多記憶體頁框是否係可存取的一存取模式位元、一第一權限暫存器,包括複數個欄位,每個欄位包含在使用者模式下反射一組記憶體存取權限的一組位元、及一第二權限暫存器,儲存複數個欄位,每個欄位包含在監管者模式下反射一組記憶體存取權限的一組位元。
在實例16中,實例15之主題能可選地提出記憶體管理單元更包含一多工器,多工器包含耦接至第一 權限暫存器的一第一輸入、耦接至第二權限暫存器的一第二輸入、及耦接至存取模式位元的一控制接腳。
在實例17中,實例15和16之任一者之主題能可選地提出多工器回應於指示使用者模式之存取模式位元而用以提供儲存在第一權限暫存器之複數個欄位之其一者中的第一組位元至多工器的輸出,且多工器回應於指示監管者模式之存取模式位元而用以提供儲存在第二權限暫存器之複數個欄位之其一者中的第二組位元至多工器的輸出。
在實例18中,實例17之主題能可選地提出第一權限暫存器之複數個欄位之其一者係根據分頁表項目之保護鑰來選擇,且第二權限暫存器之複數個欄位之其一者係根據分頁表項目之保護鑰來選擇。
在實例19中,實例17之主題能可選地提出第一組位元包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者,且其中第二組位元包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者。
在實例20中,實例19之主題能可選地提出分頁表項目包含複數個狀態位元,其中記憶體管理單元包含一控制器,用以接收複數個狀態位元及基於複數個狀態位元來判定第一組記憶體存取權限,且其中第一組記憶體存取權限包含指示一讀取權限之一第一位元、指示一寫入 權限之一第二位元、或指示一執行權限之一第三位元之至少一者,且其中記憶體管理單元包含一AND邏輯,AND邏輯包含用以接收第一組記憶體存取權限的一第一輸入及用以從多工器之輸出接收一第二組記憶體存取權限的一第二輸入,其中AND邏輯係用以基於第一及第二組記憶體存取權限來產生一組最終記憶體存取權限。
實例21係一種方法,包括藉由一處理核心基於一工作的特權層級來判定工作的一存取模式,其中存取模式係為一使用者模式存取或一監管者模式存取之其一者,判定被工作配置之一記憶體頁框的一識別符,藉由執行一作業系統的處理核心選擇用於工作的一保護鑰,及儲存保護鑰、存取模式、及識別符在耦接至處理核心之一記憶體管理單元的一分頁表項目中。
在實例22中,實例21之主題能更包括判定用於工作的一記憶體存取權限,記憶體存取權限包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者,基於存取模式選擇分配給使用者模式存取的一第一權限暫存器或分配給監管者模式存取的一第二權限暫存器,基於保護鑰識別在第一權限暫存器或第二權限暫存器之選定一者中的一欄位,及儲存記憶體存取權限在識別的欄位中。
在實例23中,實例21和22之任一者之主題能可選地提出第一權限暫存器可被具有使用者模式存取之特權層級的工作存取,且其中第一權限暫存器包含一寫入 禁能位元,其可被具有使用者模式存取之特權層級的工作設定。
實例24係一種設備,包括:用於進行實例21和22之任一者之主題的工具。
實例25係一種具有程式碼儲存於其上的機器可讀非暫態媒體,當程式碼被執行時進行操作,操作包括藉由一處理核心基於一工作的特權層級來判定工作的一存取模式,其中存取模式係為一使用者模式存取或一監管者模式存取之其一者,判定被工作配置之一記憶體頁框的一識別符,藉由執行一作業系統的處理核心選擇用於工作的一保護鑰,及儲存保護鑰、存取模式、及識別符在耦接至處理核心之一記憶體管理單元的一分頁表項目中。
在實例26中,實例25之主題能更包括判定用於工作的一記憶體存取權限,記憶體存取權限包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者,基於存取模式選擇分配給使用者模式存取的一第一權限暫存器或分配給監管者模式存取的一第二權限暫存器之其一者,基於保護鑰識別在第一權限暫存器或第二權限暫存器之選定一者中的一欄位,及儲存記憶體存取權限在識別的欄位中。
儘管已針對有限數量的實施例來說明本揭露,但本領域之那些技藝者將了解到從其而來的許多修改和變化。預期所附之申請專利範圍涵蓋如落在本揭露之實 際精神和範圍內的所有這樣的修改和變化。
設計可能經歷各種階段,從產生至模擬至製造。代表設計的資料可能代表採用一些方式的設計。首先,如同在模擬中是有用的,可能使用硬體描述語言或另一功能描述語言來表示硬體。此外,可能在設計程序的一些階段中產生具有邏輯及/或電晶體閘極的電路級模型。再者,在一些階段中,大多數設計達到代表在硬體模型中的各種裝置之實體佈局的資料級。在其中使用傳統半導體製造技術的情況中,代表硬體模型的資料可能是指定在用於用以產生積體電路之遮罩的不同遮罩層上存在或不存在各種特徵的資料。在設計的任何表示中,可能以任何形式的機器可讀媒體來儲存資料。如磁碟的記憶體或磁性或光學儲存器可能是用以儲存經由調變或以其他方式產生用以傳送上述資訊的光或電波來傳送之資訊的機器可讀媒體。當指示或載送碼或設計的電載波被傳送達到進行複製、緩衝、或重新傳輸電信號的程度時,製成了新的副本。由此,通訊提供者或網路提供者可能在有形機器可讀媒體上至少暫時地儲存物件,例如被編碼成實作本揭露之實施例的技術之載波的資訊。
如本文所使用之模組係指硬體、軟體、及/或韌體之任何組合。作為一實例,模組包括硬體,例如與用以儲存適用於要由微控制器執行的碼之非暫態媒體關聯的微控制器。因此,在一實施例中提到模組係指硬體,其係專門配置以辨識及/或執行要在非暫態媒體上保持的碼。 再者,在另一實施例中,使用模組係指包括碼的非暫態媒體,其係專門適用於要由微控制器執行以進行預定操作。而且如所能推論的,在又一實施例中,模組之術語(在本實例中)可能係指微控制器和非暫態媒體之組合。通常被繪示為分離的模組邊界一般改變且可能重疊。例如,第一和第二模組可能共享硬體、軟體、韌體、或以上之組合,同時可能留存一些獨立硬體、軟體、或韌體。在一實施例中,使用邏輯之術語包括硬體,例如電晶體、暫存器、或其他硬體,例如可編程邏輯裝置。
在一實施例中,使用「配置以」之說法係指排列、放在一起、製造、販賣之要約、進口及/或設計設備、硬體、邏輯、或元件以進行指定或判定工作。在本實例中,並非正在操作的以上之設備或元件若被指定、耦接、及/或互連以進行所述之指定工作則仍「配置以」進行指定工作。作為純粹的說明性實例,邏輯閘可能在操作期間提供0或1。但「配置以」將致能信號提供至時脈的邏輯閘不包括可能提供1或0之每個可能的邏輯閘。反而,邏輯閘係以在操作期間,1或0輸出係用以致能時脈之某種方式來耦接的邏輯閘。請注意再次使用「配置以」之詞不需要操作,但反而將重點放在設備、硬體、及/或元件的潛在狀態,其中在潛在狀態中,設備、硬體、及/或元件被設計為當設備、硬體、及/或元件正在操作時進行特定工作。
再者,在一實施例中,使用「用以」、「能夠 」、及/或「可操作以」之說法係指以用以藉由指定方式來致能使用設備、邏輯、硬體、及/或元件之這樣的方式所設計的一些設備、邏輯、硬體、及/或元件。請注意如上述在一實施例中,使用「用以」、「能夠」、或「可操作以」係指設備、邏輯、硬體、及/或元件的潛在狀態,其中設備、邏輯、硬體、及/或元件並非正在操作而是以用以藉由指定方式來致能使用設備之這樣的方式來設計。
如本文所使用之值包括數字、狀態、邏輯狀態、或二進制邏輯狀態的任何已知表示。通常,使用邏輯準位、邏輯值、或邏輯值也被稱為「1」和「0」,其簡單地代表二進制邏輯狀態。例如,1係指高邏輯準位且0係指低邏輯準位。在一實施例中,如電晶體或快閃胞元的儲存胞元可能能夠保持單一邏輯值或多個邏輯值。然而,已使用在電腦系統中的值之其他表示。例如,十進位數10可能也被表示為910之二進制值和十六進制字母A。因此,值包括能夠保持在電腦系統中的資訊之任何表示。
此外,狀態可能由值或一部分的值表示。作為一實例,如邏輯1的第一值可能代表預設或初始狀態,而如邏輯0的第二值可能代表非預設狀態。另外,在一實施例中,重設和設定之詞分別係指預設和未更新值或狀態。例如,預設值可能包括高邏輯值(即重設),而未更新值可能包括低邏輯值(即設定)。請注意值之任何組合可能用以代表一些狀態。
上面提出的方法、硬體、軟體、韌體或碼之 實施例可能經由儲存在可由處理元件執行之機器可存取、機器可讀、電腦可存取、或電腦可讀媒體上的指令或碼來實作。非暫態機器可存取/可讀媒體包括以如電腦或電子系統的機器可讀之形式提供(即,儲存及/或傳送)資訊的任何機制。例如,非暫態機器可存取媒體包括隨機存取記憶體(RAM),例如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電子儲存裝置;光學儲存裝置;聲波儲存裝置;其他形式之用於保持從暫態(傳播)信號(例如,載波、紅外線信號、數位信號)接收之資訊的儲存裝置;等等,其要與可能從其接收資訊的非暫態媒體區別。
用以編程邏輯以進行本揭露之實施例的指令可能儲存在系統中的記憶體(例如DRAM、快取、快閃記憶體、或其他儲存器)內。再者,能經由網路或藉由其他電腦可讀媒體來分配指令。因此,機器可讀媒體可能包括用於以機器(例如,電腦)可讀之形式來儲存或傳送資訊的任何機制,但不限於軟碟、光碟、壓縮光碟、唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可編程唯讀記憶體(EPROM)、電子可抹除可編程唯讀記憶體(EEPROM)、磁或光學卡、快閃記憶體、或在經由電子、光學、聲波或其他形式之傳播信號(例如,載波、紅外線信號、數位信號等)透過網際網路來傳輸資訊中使用的有形機器可讀儲存器。藉此,電腦可讀媒體包括任何類 型之適用於以機器(例如,電腦)可讀之形式來儲存或傳送電子指令或資訊的有形機器可讀媒體。
在整篇本說明書中提到「一個實施例」或「一實施例」表示結合實施例所述之特定特徵、結構、或特性係包括在本揭露之至少一個實施例中。因此,在整篇本說明書的各處中出現「在一個實施例中」或「在一實施例中」不一定都指相同的實施例。再者,在一或更多實施例中,特定特徵、結構、或特性可能以任何適當方式來結合。
在上述本說明書中,已參考具體示範實施例來給予詳細說明。然而,將清楚明白在不脫離所附之申請專利範圍中提出之本揭露的更廣泛精神和範圍下可能對其進行各種修改和變化。藉此,本說明書和圖被視為說明性意義而不是限制性意義。又,上述使用實施例及其他示範語言不一定係指相同實施例或相同實例,而可能係指不同和相異實施例,以及可能係指相同實施例。
100‧‧‧系統晶片
102‧‧‧處理器
104‧‧‧記憶體
106‧‧‧匯流排
108‧‧‧匯流排系統
110‧‧‧處理核心
112‧‧‧記憶體管理單元
114‧‧‧分頁表
116‧‧‧分頁表項目
118‧‧‧使用者權限暫存器
120‧‧‧監管者權限暫存器
122‧‧‧ADD邏輯電路
124‧‧‧開關
126‧‧‧U/S
128‧‧‧保護鑰
130‧‧‧分頁表暫存器

Claims (23)

  1. 一種處理系統,包含:一處理核心,用以執行一工作;及一記憶體管理單元,耦接至該處理核心,包含:一儲存單元,用以儲存一分頁表項目,該分頁表項目包含記憶體頁框的一或更多識別符、一保護鑰、及根據一使用者模式或根據一監管者模式指示該一或更多記憶體頁框是否係可存取的一存取模式位元;一第一權限暫存器,包括複數個欄位,每個欄位包含在該使用者模式下反射一組記憶體存取權限的一組位元;及一第二權限暫存器,儲存複數個欄位,每個欄位包含在該監管者模式下反射一組記憶體存取權限的一組位元。
  2. 如申請專利範圍第1項所述之處理系統,其中該記憶體管理單元更包含一多工器,該多工器包含耦接至該第一權限暫存器的一第一輸入、耦接至該第二權限暫存器的一第二輸入、及耦接至該存取模式位元的一控制接腳。
  3. 如申請專利範圍第2項所述之處理系統,其中該多工器回應於指示該使用者模式之該存取模式位元而用以提供儲存在該第一權限暫存器之該複數個欄位之其一者中的一第一組位元至該多工器的輸出,且該多工器回應於指示該監管者模式之該存取模式位元而用以提供儲存在該第二權限暫存器之該複數個欄位之其一者中的一第二組位元至該多工器的該輸出。
  4. 如申請專利範圍第3項所述之處理系統,其中該第一權限暫存器之該複數個欄位之該其一者係根據該分頁表項目之該保護鑰來選擇,且該第二權限暫存器之該複數個欄位之該其一者係根據該分頁表項目之該保護鑰來選擇。
  5. 如申請專利範圍第3項所述之處理系統,其中該第一組位元包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者,且其中該第二組位元包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者。
  6. 如申請專利範圍第5項所述之處理系統,其中該分頁表項目包含複數個狀態位元。
  7. 如申請專利範圍第6項所述之處理系統,其中該記憶體管理單元包含一控制器,用以接收該複數個狀態位元及基於該複數個狀態位元來判定一第一組記憶體存取權限,且其中該第一組記憶體存取權限包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者。
  8. 如申請專利範圍第7項所述之處理系統,其中該記憶體管理單元包含一AND邏輯,該AND邏輯包含用以接收該第一組記憶體存取權限的一第一輸入及用以從該多工器之該輸出接收一第二組記憶體存取權限的一第二輸入,其中該AND邏輯係用以基於該第一及該第二組記憶體存取權限來產生一組最終記憶體存取權限。
  9. 如申請專利範圍第8項所述之處理系統,其中該記憶體管理單元基於該最終記憶體存取權限來提供該工作存取至該一或更多記憶體頁框。
  10. 如申請專利範圍第1項所述之處理系統,其中該工作具有一使用者模式存取或一監管者模式存取之其一者的特權層級。
  11. 如申請專利範圍第10項所述之處理系統,其中該第一權限暫存器可被具有該使用者模式存取或該監管者模式存取之其一者之特權層級的該工作存取。
  12. 如申請專利範圍第11項所述之處理系統,其中該第一權限暫存器包含可被具有該使用者模式存取或該監管者模式存取之其一者之特權層級的該工作設定的多個權限位元。
  13. 如申請專利範圍第12項所述之處理系統,其中具有該使用者模式存取或該監管者模式存取之其一者之特權層級的該工作係用以識別儲存在該第一權限暫存器中的一權限位元且設定該權限位元以禁能權限。
  14. 如申請專利範圍第1項所述之處理系統,其中該保護鑰包含n位元,且該第一及第二權限暫存器之各者包含2n個欄位。
  15. 一種系統晶片(SoC),包含:一記憶體;及一處理器,通訊地耦接至該記憶體,包含:一處理核心,用以執行一工作;及 一記憶體管理單元,耦接至該處理核心,包含:一儲存單元,用以儲存一分頁表項目,該分頁表項目包含記憶體頁框的一或更多識別符、一保護鑰、及根據一使用者模式或根據一監管者模式指示該一或更多記憶體頁框是否係可存取的一存取模式位元;一第一權限暫存器,包括複數個欄位,每個欄位包含在該使用者模式下反射一組記憶體存取權限的一組位元;及一第二權限暫存器,儲存複數個欄位,每個欄位包含在該監管者模式下反射一組記憶體存取權限的一組位元。
  16. 如申請專利範圍第15項所述之SoC,其中該記憶體管理單元更包含一多工器,該多工器包含耦接至該第一權限暫存器的一第一輸入、耦接至該第二權限暫存器的一第二輸入、及耦接至該存取模式位元的一控制接腳。
  17. 如申請專利範圍第16項所述之SoC,其中該多工器回應於指示該使用者模式之該存取模式位元而用以提供儲存在該第一權限暫存器之該複數個欄位之其一者中的一第一組位元至該多工器的輸出,且該多工器回應於指示該監管者模式之該存取模式位元而用以提供儲存在該第二權限暫存器之該複數個欄位之其一者中的一第二組位元至該多工器的該輸出。
  18. 如申請專利範圍第17項所述之SoC,其中該第一權限暫存器之該複數個欄位之該其一者係根據該分頁表項目之該保護鑰來選擇,且該第二權限暫存器之該複數個欄 位之該其一者係根據該分頁表項目之該保護鑰來選擇。
  19. 如申請專利範圍第17項所述之SoC,其中該第一組位元包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者,且其中該第二組位元包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者。
  20. 如申請專利範圍第19項所述之SoC,其中該分頁表項目包含複數個狀態位元,其中該記憶體管理單元包含一控制器,用以接收該複數個狀態位元及基於該複數個狀態位元來判定一第一組記憶體存取權限,且其中該第一組記憶體存取權限包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者,且其中該記憶體管理單元包含一AND邏輯,該AND邏輯包含用以接收該第一組記憶體存取權限的一第一輸入及用以從該多工器之該輸出接收一第二組記憶體存取權限的一第二輸入,其中該AND邏輯係用以基於該第一及該第二組記憶體存取權限來產生一組最終記憶體存取權限。
  21. 一種方法,包含:藉由一處理核心基於一工作的特權層級來判定該工作的一存取模式,其中該存取模式係為一使用者模式存取或一監管者模式存取之其一者;判定被該工作配置之一記憶體頁框的一識別符; 藉由執行一作業系統的該處理核心選擇用於該工作的一保護鑰;及儲存該保護鑰、該存取模式、及該識別符在耦接至該處理核心之一記憶體管理單元的一分頁表項目中。
  22. 如申請專利範圍第21項所述之方法,更包含:判定用於該工作的一記憶體存取權限,該記憶體存取權限包含指示一讀取權限之一第一位元、指示一寫入權限之一第二位元、或指示一執行權限之一第三位元之至少一者;基於該存取模式選擇分配給該使用者模式存取的一第一權限暫存器或分配給該監管者模式存取的一第二權限暫存器;基於該保護鑰識別在該第一權限暫存器或該第二權限暫存器之選定一者中的一欄位;及儲存該記憶體存取權限在識別的該欄位中。
  23. 如申請專利範圍第22項所述之方法,其中該第一權限暫存器可被具有該使用者模式存取之特權層級的該工作存取,且其中該第一權限暫存器包含一寫入禁能位元,其可被具有該使用者模式存取之特權層級的該工作設定。
TW104130291A 2014-10-21 2015-09-14 具有獨立的使用者和監管者域的記憶體保護鑰結構 TWI574156B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/519,648 US10489309B2 (en) 2014-10-21 2014-10-21 Memory protection key architecture with independent user and supervisor domains

Publications (2)

Publication Number Publication Date
TW201633153A TW201633153A (zh) 2016-09-16
TWI574156B true TWI574156B (zh) 2017-03-11

Family

ID=55749193

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104130291A TWI574156B (zh) 2014-10-21 2015-09-14 具有獨立的使用者和監管者域的記憶體保護鑰結構

Country Status (6)

Country Link
US (1) US10489309B2 (zh)
EP (1) EP3210123B1 (zh)
KR (1) KR102269006B1 (zh)
CN (1) CN106716434B (zh)
TW (1) TWI574156B (zh)
WO (1) WO2016064469A1 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10126985B2 (en) 2015-06-24 2018-11-13 Intel Corporation Application driven hardware cache management
EP3584708B1 (en) 2015-12-15 2022-05-11 LZLabs GmbH Protection key management and prefixing in virtual address space legacy emulation system
US9852084B1 (en) * 2016-02-05 2017-12-26 Apple Inc. Access permissions modification
US10346306B2 (en) 2016-04-02 2019-07-09 Intel Corporation Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions
US20180024944A1 (en) * 2016-07-22 2018-01-25 Qualcomm Incorporated Methods and apparatus for access control in shared virtual memory configurations
US10114768B2 (en) 2016-08-29 2018-10-30 Intel Corporation Enhance memory access permission based on per-page current privilege level
US10713177B2 (en) 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
US10884952B2 (en) * 2016-09-30 2021-01-05 Intel Corporation Enforcing memory operand types using protection keys
US10866902B2 (en) * 2016-12-28 2020-12-15 Intel Corporation Memory aware reordered source
US20180285262A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Techniques for shared virtual memory access protection
EP3665581A4 (en) * 2017-08-08 2021-05-12 Ric B Richardson METHOD AND DEVICE FOR OPERATING A COMPUTER
US11687654B2 (en) * 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains
EP3540618B1 (en) * 2018-03-15 2023-01-25 Rohde & Schwarz GmbH & Co. KG Portable storage apparatus
US10684945B2 (en) * 2018-03-29 2020-06-16 Intel Corporation System, apparatus and method for providing key identifier information in a non-canonical address space
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US11914726B2 (en) * 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11188477B2 (en) 2018-09-11 2021-11-30 Apple Inc. Page protection layer
US11366895B2 (en) * 2018-09-28 2022-06-21 Intel Corporation Mitigating side-channel attacks using executable only memory (XOM)
US11003584B2 (en) 2019-02-28 2021-05-11 Intel Corporation Technology for managing memory tags
EP3761205A1 (en) * 2019-07-04 2021-01-06 Secure Thingz Limited System-on-chip arrangement
US11573710B2 (en) * 2019-08-20 2023-02-07 Microsoft Technology Licensing, Llc Protection domains for files at file-level or page-level
US11734440B2 (en) 2019-09-09 2023-08-22 Arm Limited Memory access transaction with security check indication
CN110990331B (zh) * 2019-12-03 2023-09-05 飞腾信息技术有限公司 片上系统密钥管理方法、装置、设备及可读存储介质
GB2611823B (en) * 2021-10-18 2023-10-11 Advanced Risc Mach Ltd Technique for handling sealed capabilities

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014667A1 (en) * 2001-07-16 2003-01-16 Andrei Kolichtchak Buffer overflow attack detection and suppression
TW200638723A (en) * 2005-04-20 2006-11-01 Microsoft Corp Peer-to-peer authentication and authorization
TW201204040A (en) * 2010-05-17 2012-01-16 Research In Motion Ltd Method of registering devices
US20130117531A1 (en) * 2007-12-31 2013-05-09 Edward Grochowski Method, system, and apparatus for page sizing extension

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046305A1 (en) 1999-02-17 2002-04-18 Babaian Boris A. Method for effective binary translation between different instruction sets using emulated supervisor flag and multiple page tables
GB0226875D0 (en) 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Control of access to a memory by a device
US7370210B2 (en) * 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
EP1563380B1 (en) 2002-11-18 2006-07-19 ARM Limited Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
US20060036830A1 (en) * 2004-07-31 2006-02-16 Dinechin Christophe De Method for monitoring access to virtual memory pages
US7496711B2 (en) 2006-07-13 2009-02-24 International Business Machines Corporation Multi-level memory architecture with data prioritization
KR101396831B1 (ko) * 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
US8301856B2 (en) 2010-02-16 2012-10-30 Arm Limited Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
GB2482700A (en) 2010-08-11 2012-02-15 Advanced Risc Mach Ltd Memory access control
KR101701515B1 (ko) * 2010-11-16 2017-02-01 삼성전자주식회사 메모리 접근 정보를 추적하기 위한 장치 및 방법
US20120137079A1 (en) 2010-11-26 2012-05-31 International Business Machines Corporation Cache coherency control method, system, and program
CN104025041B (zh) * 2011-12-29 2018-05-25 英特尔公司 管理员模式执行保护
KR20140035082A (ko) 2012-09-13 2014-03-21 삼성전자주식회사 메모리 관리방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014667A1 (en) * 2001-07-16 2003-01-16 Andrei Kolichtchak Buffer overflow attack detection and suppression
TW200638723A (en) * 2005-04-20 2006-11-01 Microsoft Corp Peer-to-peer authentication and authorization
US20130117531A1 (en) * 2007-12-31 2013-05-09 Edward Grochowski Method, system, and apparatus for page sizing extension
TW201204040A (en) * 2010-05-17 2012-01-16 Research In Motion Ltd Method of registering devices

Also Published As

Publication number Publication date
KR102269006B1 (ko) 2021-06-28
EP3210123B1 (en) 2019-07-03
WO2016064469A1 (en) 2016-04-28
KR20170043635A (ko) 2017-04-21
EP3210123A4 (en) 2018-05-09
TW201633153A (zh) 2016-09-16
US10489309B2 (en) 2019-11-26
EP3210123A1 (en) 2017-08-30
CN106716434A (zh) 2017-05-24
CN106716434B (zh) 2020-09-29
US20160110298A1 (en) 2016-04-21

Similar Documents

Publication Publication Date Title
TWI574156B (zh) 具有獨立的使用者和監管者域的記憶體保護鑰結構
US9910611B2 (en) Access control for memory protection key architecture
US10037288B2 (en) Memory protection at a thread level for a memory protection key architecture
EP3504629B1 (en) Enhance memory access permission based on per-page current privilege level
US10901899B2 (en) Reducing conflicts in direct mapped caches
US20200379917A1 (en) Defining virtualized page attributes based on guest page attributes
US11995001B2 (en) Supporting secure memory intent
US10664199B2 (en) Application driven hardware cache management
US10452423B2 (en) Method and apparatus for light-weight virtualization contexts
CN109690546B (zh) 支持对客户机飞地存储器页的超额订阅