TWI587127B - 使用具有位元組等級粒度緩衝器溢位檢測之記憶體錯誤檢測架構的處理器和系統單晶片 - Google Patents
使用具有位元組等級粒度緩衝器溢位檢測之記憶體錯誤檢測架構的處理器和系統單晶片 Download PDFInfo
- Publication number
- TWI587127B TWI587127B TW105105126A TW105105126A TWI587127B TW I587127 B TWI587127 B TW I587127B TW 105105126 A TW105105126 A TW 105105126A TW 105105126 A TW105105126 A TW 105105126A TW I587127 B TWI587127 B TW I587127B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- mcd
- processor
- block
- memory block
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/073—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/079—Root cause analysis, i.e. error or fault diagnosis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本發明係關於用於記憶體錯誤檢測架構的位元組等級粒度緩衝器溢位檢測。
記憶體錯誤可為導致系統故障之主要資源問題且可負面地影響系統之效能。記憶體錯誤可從許多原因引起,包括:程式錯誤、越界存取、搖擺指標、及記憶體上的惡意攻擊。使用電腦程式中錯誤的記憶體內容會造成電腦程式當機或不正常運作。軟體解決辦法可被使用於記憶體錯誤檢測,例如除錯工具。然而,軟體解決辦法會造成電腦程式明顯較慢地運行且對電腦程式除錯會很困難。
100‧‧‧MCD系統
102‧‧‧指標
104‧‧‧系統記憶體
106‧‧‧指標
108‧‧‧指標
110‧‧‧MCD唯一ID
112‧‧‧記憶體位址
114‧‧‧MCD唯一ID
118‧‧‧記憶體位址
120‧‧‧MCD唯一ID
120A‧‧‧MCD唯一ID
120N‧‧‧MCD唯一ID
121A‧‧‧MCD邊界值
121N‧‧‧MCD邊界值
122‧‧‧記憶體物件資料
122A‧‧‧鄰近記憶體塊
122N‧‧‧鄰近記憶體塊
124‧‧‧MCD唯一ID
126‧‧‧記憶體物件資料
128‧‧‧鄰近記憶體塊
130‧‧‧鄰近記憶體塊
132‧‧‧鄰近記憶體塊
134‧‧‧鄰近記憶體塊
136‧‧‧鄰近記憶體塊
138‧‧‧記憶體物件
140‧‧‧記憶體物件
200‧‧‧MCD系統
202‧‧‧MCD表
300‧‧‧方法
310‧‧‧方塊
320‧‧‧方塊
330‧‧‧方塊
340‧‧‧方塊
350‧‧‧方塊
360‧‧‧方塊
402‧‧‧MCD唯一ID
404‧‧‧MCD邊界值
406‧‧‧MCD元資料字
408‧‧‧第三長度
410‧‧‧第四長度
412‧‧‧記憶體之合乎規定存取部份
414‧‧‧記憶體之不合規定存取部份
416‧‧‧記憶體區塊
418‧‧‧第一長度
420‧‧‧第二長度
422‧‧‧第一保留位元
424‧‧‧第五長度
426‧‧‧第二保留位元
428‧‧‧第六長度
430‧‧‧MCD元資料字
500‧‧‧方法
502‧‧‧MCD唯一ID
504‧‧‧第一MCD邊界值
508‧‧‧長度
510‧‧‧長度
512‧‧‧合乎規定的存取部份
518‧‧‧長度
522‧‧‧保留位元
524‧‧‧長度
526‧‧‧保留位元
528‧‧‧長度
530‧‧‧第一MCD元資料字
532‧‧‧合乎規定的存取部份
534‧‧‧不合規定的存取部份
536‧‧‧長度
538‧‧‧長度
540‧‧‧第一記憶體區塊
542‧‧‧第一MCD唯一ID
544‧‧‧保留位元
546‧‧‧第二MCD邊界值
548‧‧‧保留位元
550‧‧‧第二MCD元資料字
552‧‧‧長度
554‧‧‧長度
556‧‧‧長度
558‧‧‧長度
560‧‧‧記憶體物件
562‧‧‧第二記憶體區塊
570‧‧‧方塊
572‧‧‧方塊
574‧‧‧方塊
576‧‧‧方塊
578‧‧‧方塊
580‧‧‧方塊
600‧‧‧處理器管線
602‧‧‧提取階段
604‧‧‧長度解碼階段
606‧‧‧解碼階段
608‧‧‧分配階段
610‧‧‧更名階段
612‧‧‧排程階段
614‧‧‧暫存器讀取/記憶體讀取階段
616‧‧‧執行階段
618‧‧‧寫回/記憶體寫入階段
620‧‧‧例外處理階段
622‧‧‧提交階段
630‧‧‧前端單元
632‧‧‧分支預測單元
634‧‧‧指令快取單元
636‧‧‧指令轉譯後備緩衝器
638‧‧‧指令提取單元
640‧‧‧解碼單元
650‧‧‧執行引擎單元
652‧‧‧更名/分配器單元
654‧‧‧引退單元
656‧‧‧排程器單元
658‧‧‧實體暫存器檔案單元
660‧‧‧執行叢集
662‧‧‧執行單元
664‧‧‧記憶體存取單元
670‧‧‧記憶體單元
672‧‧‧資料TLB單元
674‧‧‧資料快取單元
676‧‧‧2階(L2)快取單元
680‧‧‧資料預提取器
690‧‧‧核心
700‧‧‧處理器
701‧‧‧循序前端
702‧‧‧快速排程器
703‧‧‧亂序執行引擎
704‧‧‧uop排程器
706‧‧‧uop排程器
708‧‧‧暫存器檔案
710‧‧‧暫存器檔案
711‧‧‧執行區塊
712‧‧‧位址產生單元
714‧‧‧位址產生單元
716‧‧‧快速ALU
718‧‧‧快速ALU
720‧‧‧慢速ALU
722‧‧‧浮點ALU
724‧‧‧浮點移動單元
726‧‧‧指令預取器
728‧‧‧指令解碼器
730‧‧‧追蹤快取
732‧‧‧微碼ROM
734‧‧‧uop佇列
800‧‧‧多處理器系統
814‧‧‧I/O裝置
816‧‧‧第一匯流排
818‧‧‧匯流排橋接器
820‧‧‧第二匯流排
822‧‧‧鍵盤及/或滑鼠
824‧‧‧音訊I/O
827‧‧‧通訊裝置
828‧‧‧儲存單元
830‧‧‧碼及資料
832‧‧‧記憶體
834‧‧‧記憶體
838‧‧‧高性能圖形電路
839‧‧‧高性能圖形介面
850‧‧‧點對點(P-P)介面
852‧‧‧點對點(P-P)介面
854‧‧‧點對點(P-P)介面
870‧‧‧處理器
872‧‧‧整合記憶體控制器
874a‧‧‧處理器核心
874b‧‧‧處理器核心
876‧‧‧點對點(P-P)介面
878‧‧‧點對點(P-P)介面
880‧‧‧處理器
882‧‧‧整合記憶體控制器
884a‧‧‧處理器核心
884b‧‧‧處理器核心
886‧‧‧點對點(P-P)介面
888‧‧‧點對點(P-P)介面
890‧‧‧晶片組
892‧‧‧介面
894‧‧‧點對點(P-P)介面
896‧‧‧介面
898‧‧‧點對點(P-P)介面
900‧‧‧第三系統
914‧‧‧I/O裝置
915‧‧‧舊有I/O裝置
932‧‧‧記憶體
934‧‧‧記憶體
970‧‧‧處理器
972‧‧‧整合式記憶體控制器
980‧‧‧處理器
982‧‧‧整合式記憶體控制器
990‧‧‧晶片組
1000‧‧‧系統單晶片
1002‧‧‧互連單元
1002A‧‧‧核心
1002N‧‧‧核心
1004A‧‧‧快取單元
1004N‧‧‧快取單元
1006‧‧‧共用快取單元
1008‧‧‧整合式圖形邏輯
1010‧‧‧應用處理器
1010‧‧‧系統代理單元
1014‧‧‧整合式記憶體控制器單元
1016‧‧‧匯流排控制器單元
1020‧‧‧媒體處理器
1024‧‧‧影像處理器
1026‧‧‧音訊處理器
1028‧‧‧視訊處理器
1030‧‧‧靜態隨機存取記憶體(SRAM)單元
1032‧‧‧直接記憶體存取(DMA)單元
1040‧‧‧顯示單元
1100‧‧‧系統單晶片
1106‧‧‧核心
1107‧‧‧核心
1108‧‧‧快取控制
1109‧‧‧匯流排介面單元
1110‧‧‧L2快取
1111‧‧‧互連
1115‧‧‧圖形處理單元
1120‧‧‧視訊編解碼器
1125‧‧‧視訊介面
1130‧‧‧用戶識別模組
1135‧‧‧啟動ROM
1140‧‧‧SDRAM控制器
1145‧‧‧快閃控制器
1150‧‧‧週邊控制
1155‧‧‧電源控制
1160‧‧‧動態隨機存取記憶體
1165‧‧‧快閃記憶體
1170‧‧‧藍芽模組
1175‧‧‧3G數據機
1180‧‧‧全球定位系統
1185‧‧‧Wi-Fi
1200‧‧‧電腦系統
1202‧‧‧處理器
1204‧‧‧主記憶體
1206‧‧‧靜態記憶體
1208‧‧‧視訊顯示單元
1210‧‧‧文數輸入裝置
1214‧‧‧游標控制裝置
1216‧‧‧訊號產生裝置
1218‧‧‧資料儲存裝置
1220‧‧‧網路
1222‧‧‧網路介面裝置
1224‧‧‧機器可讀取儲存媒體
1226‧‧‧指令
1230‧‧‧匯流排
第1圖顯示根據一實施例之記憶體錯誤檢測(memory corruption detection;MCD)系統。
第2圖顯示根據一實施例之帶有系統記憶體及MCD表之MCD系統的架構。
第3圖顯示根據一實施例之用以將記憶體物件之一或多個記憶體區塊與MCD元資料字之記憶體分配資訊相關聯的方法之流程圖。
第4A圖顯示根據一實施例之與記憶體區塊相關聯的MCD元資料字。
第4B圖顯示根據一實施例之與記憶體區塊相關聯的另一MCD元資料字。
第5A圖顯示根據一實施例之對記憶體物件分配的第一記憶體區塊與第二記憶體區塊。
第5B圖顯示根據一實施例之用於檢查記憶體中之越界記憶體存取的方法之流程圖。
第6A圖為顯示根據一實施例的循序管線(in-order pipeline)及暫存器更名階段(register renaming stage)、亂序發送/執行管線(out-of-order issue/execution pipeline)之方塊圖。
第6B圖為顯示根據一實施例的用於實現安全記憶體再分割(secure memory repartitioning)之處理器的微架構之方塊圖。
第7圖顯示根據一實施例的包括用以執行安全記憶體再分割的邏輯電路之處理器的微架構之方塊圖。
第8圖為根據一實現之電腦系統的方塊圖。
第9圖為根據另一實現之電腦系統的方塊圖。
第10圖為根據一實現之系統單晶片之方塊圖。
第11圖顯示用於計算系統之方塊圖的另一實現。
第12圖顯示用於計算系統之方塊圖的另一實現。
記憶體錯誤可發生於當記憶體位置的內容被存取時。於該記憶體位置之內容可因為程式錯誤被無意地存取,或因為惡意攻擊被有意地修改。有多種不同的原因會造成記憶體錯誤。記憶體錯誤的其中一個原因是編碼錯誤,於其中應用程式錯誤地寫入或讀取無預期的系統記憶體之記憶體區塊。記憶體錯誤的另一個原因是當應用程式使用無效指標來將資料寫入已被釋放(freed)的記憶體區塊時。記憶體錯誤的另一個原因是當應用程式試圖將資料寫入可由作業系統(OS)管理之記憶體區塊標頭(或其他限制或保留的記憶體區域)。記憶體錯誤之多種其他原因可存在。錯誤的記憶體之使用會導致資料錯誤(例如資料庫系統錯誤的內容)、記憶體管理問題、及造成效能劣化、不可預期的程式執行、或程式當機。記憶體錯誤檢測(MCD)可被使用以偵測記憶體錯誤。然而,MCD可附加元資料至固定大小的N個位元組之記憶體區塊(例如64個位元組區塊)。當MCD使用固定大小的記憶體區塊時,N個位元組(B)粒度分配可被使用以防止多個分配共享相同的元資料。然而,傳統上,固定大小的元資料之記憶體區塊(例如元資料區塊)內的緩衝器溢位可能不會
被檢測。此外,傳統MCD架構可使用限制傳統MCD的使用之效能或記憶體管理負擔(overhead)以除錯或生產前使用。
此處所述之實施例藉由使用帶有位元組等級越界檢測之MCD架構可針對以上所述的缺點。MCD架構可包括帶有MCD唯一識別符(例如MCD色彩)及MCD邊界值之元資料表,以指示記憶體區塊或記憶體物件之使用的(合乎規定的)與未使用的(不合規定的)存取區域。MCD架構亦可包括由處理器所執行的處理器或軟體函式庫(例如分配函式庫),以設定或分配MCD元資料字。此外,MCD架構可使用MCD元資料字檢查何時資料之載入或儲存為合乎規定或授權的(例如以位元組等級粒度)。
堆積記憶體(Heap memory)是程式或應用程式可使用以用可當程式運行中時被使用之可變的量來儲存資料之保留的記憶體之區域。舉例來說,應用程式可接收用於處理(例如從不同使用者)之不同的輸入資料之量或類型且儲存輸入資料於堆積記憶體中。當應用程式在運行中時,應用程式可處理不同的輸入資料之量或類型。由處理器所執行的分配函式庫可被使用於記憶體分配、記憶體的釋放、及記憶體錯誤檢測(MCD)資料管理。為了防止記憶體錯誤的事件,處理系統或處理器為可操作的以使由處理系統或處理器所執行的應用程式之由記憶體存取指令所產生的指標生效。於一範例中,處理系統可保持元資料表,其儲存用於不同分配的緩衝器(例如記憶體分配)(包括
系統記憶體之一或多個鄰近記憶體塊)之識別符。於另一範例中,系統記憶體之鄰近記憶體塊可為相同的預先界定大小,例如64位元組(B)或32B。於另一範例中,系統記憶體之鄰近記憶體塊可為不同大小。
當處理器之記憶體的一部分可被分配以用於新建立的記憶體物件時,唯一識別符(ID)可被產生及與可儲存寫入至記憶體物件的資料之一或多個鄰近記憶體塊相關聯。用於鄰近記憶體塊之唯一識別符可為MCD唯一識別符或MCD色彩指明(color designation)。舉例來說,對記憶體物件分配之鄰近記憶體塊可被指定MCD色彩值,例如6位元元資料值。
用於不同記憶體物件之MCD唯一識別符可被儲存於對應至對記憶體物件分配之鄰近記憶體塊的MCD表之一或多個MCD表項目(table entry)。MCD唯一識別符亦可被儲存於可被記憶體分配常式返回至已請求記憶體分配之應用程式的指標之一或多個位元(例如上面位元)中。當處理器接收記憶體存取指令時,處理器可將從MCD表接收的MCD唯一識別符與從由記憶體存取指令所指定之指標所提取的MCD唯一識別符作比較。當MCD唯一識別符不匹配時,一錯誤可被產生。
第1圖顯示根據一實施例之MCD系統100。MCD系統100可包括指標102與系統記憶體104。指標102可包括MCD唯一ID欄位或MCD色彩值欄位110與記憶體位址欄位。舉例來說,指標106可包括MCD唯一ID 110與
記憶體位址112,而指標108可包括MCD唯一ID 114與記憶體位址118。MCD唯一ID 110與114可分別被儲存於指標106與108之一或多個位元中(例如上面位元,其可不為線性位址的一部分)。記憶體位址112與118可參照於系統記憶體104中之記憶體物件138與140之開始位址位置。舉例來說,記憶體位址112可參照鄰近記憶體塊128之位址位置,而記憶體位址118可參照鄰近記憶體塊132之位址位置。記憶體物件138與140可包括一或多個鄰近記憶體塊。舉例來說,記憶體物件138可包括鄰近記憶體塊128與130,而記憶體物件140可包括鄰近記憶體塊132、134、與136。當系統記憶體104之一部份可被對於記憶體物件資料122與126分配至新建立的記憶體物件138與140,記憶體分配常式(例如藉由calloc常式、malloc常式、或realloc常式)可產生MCD唯一ID 120與124以分別與鄰近記憶體塊128-130與130-136相關聯。
MCD系統100可從鄰近記憶體塊之應用程式請求物件資料來接收記憶體存取指令。舉例來說,MCD系統100可接收一記憶體存取指令,其中該記憶體存取指令包括指標106與指示物件資料122在鄰近記憶體塊128之開始位置之記憶體位址112。當執行記憶體存取指令時,MCD系統100可將指標106之MCD唯一ID 110及與鄰近記憶體塊128相關聯的MCD唯一ID 120作比較。當MCD唯一ID 110匹配MCD唯一ID 120時,MCD系統100可將物
件資料122通訊至請求應用程式。MCD系統100可透過記憶體物件138之鄰近記憶體塊128與130來重複,直到MCD系統100達到鄰近記憶體塊132。MCD系統100可決定:當MCD唯一ID 124不匹配MCD唯一ID 110時,其已達到鄰近記憶體塊128與130之末端。當MCD唯一ID 124不匹配MCD唯一ID 110時,MCD系統100可產生指示記憶體物件138之末端已被達到之錯誤訊息(例如異常)。
第2圖顯示根據一實施例之具有系統記憶體104與MCD表202之MCD系統200之架構。MCD系統200包括指標106,其包括MCD唯一ID 110與參照記憶體物件138之記憶體位址112。記憶體物件138可包括鄰近記憶體塊122A-122N。MCD表202可包括MCD唯一ID 120A-120N與分別與鄰近記憶體塊122A-122N相關聯之MCD邊界值121A-121N。MCD唯一ID 120A-120N與MCD邊界值121A-121N可被儲存於從對應的鄰近記憶體塊122A-122N之基底位置(base address)導出之偏移。
第3圖顯示用以將記憶體物件之一或多個記憶體區塊與MCD元資料字之記憶體分配資訊相關聯的方法300之流程圖。方法300可藉由可包含硬體(例如電路、專屬邏輯、及/或可程式化邏輯)、軟體(例如可於電腦系統上執行以執行硬體模擬之指令)、或其組合之電腦系統被執行。方法300及/或其各函數、常式、次常式、或操作可藉由執行該方法的一或多個電腦系統之實體處理器被執
行。方法300之二或更多個函數、常式、次常式、或操作可被平行或以與上述次序不同的次序來執行。於特定實現中,方法300可藉由單一處理緒(processing thread)被執行。替代地,方法300可藉由二或多個處理緒被執行,各處理緒執行一或多個個別的該方法之函數、常式、次常式、或操作。於說明範例中,實現方法300之處理緒可被同步(例如使用信號、關鍵區段及/或其他處理緒同步機制)。替代地,實現方法300之處理緒可被彼此不同步地執行。
參照第3圖,方法300可開始於藉由處理器執行之處理器或軟體函式庫(例如運行時間庫),從應用程式接收記憶體存取請求以存取於記憶體之記憶體物件中的一或多個鄰近記憶體塊之資料(方塊310)。記憶體物件可為包括一或多個記憶體區塊的記憶體之鄰近部份(例如鄰近記憶體塊)。於一範例中,當應用程式開始或可被起始(例如來自應用程式之記憶體的起始分配請求)時,處理器或函式庫可接收分配請求。於另一範例中,當應用程式在運行中(例如來自應用程式之記憶體的後來的分配請求)時,處理器或軟體函式庫可接收分配請求。
該方法可進一步包括藉由處理器或軟體函式庫來決定藉由分配請求所請求之記憶體物件的大小,例如一數量的位元組(N個位元組)之記憶體(方塊320)。於一範例中,記憶體可被細分成固定區塊大小的記憶體(鄰近記憶體塊)。為了於進行中的段落中之範例目的,可假設記憶
體區塊可為64位元組(B)之鄰近記憶體。然而,64B大小的記憶體區塊並非用以限制,且記憶體區塊大小可為由處理器或MCD系統之分配函式庫所設定之任何大小。
於一範例中,軟體函式庫可基於包括於分配請求中之分配大小資訊來決定記憶體被請求的大小。該方法可包括藉由處理器或軟體函式庫考慮到所請求的記憶體物件之大小對記憶體物件分配一或多個鄰近記憶體塊(方塊330)。該方法亦可包括將MCD元資料字寫入至MCD表中(步驟340)。於一範例中,對於大於MCD區塊(例如64B)之分配大小,MCD元資料字可對各區塊被寫入至MCD表中。MCD元資料字可包括:與一或多個鄰近記憶體塊相關聯的MCD唯一ID與MCD邊界值。MCD邊界值可指示記憶體區塊之使用的(合乎規定的)記憶體區域與未使用的(不合規定的)記憶體區域之大小。該方法可包括基於MCD邊界值來決定MCD邊界之位置,如進行中的段落中所述。於一範例中,記憶體區塊之各記憶體區塊可為64B,例如從1至64位元組之連續位元組。對於64B記憶體區塊,MCD元資料字可包括6個位元(bit;b)用於MCD邊界值。於另一範例中,MCD邊界值可為log2(總記憶體區塊大小)位元以說明合乎規定的或不合規定的記憶體區域之大小。於此範例中,MCD元資料字可為一數量的MCD唯一ID位元加上一數量的MCD邊界值位元,例如MCD唯一ID位元+MCD邊界值位元。該方法亦可包括建立一指標(方塊350)。於一範例中,該
指標可包括記憶體位址,其指示記憶體物件於記憶體中的位置。於另一範例中,該指標可包括與記憶體物件相關聯之第二MCD唯一ID。該方法亦可包括將該指標發送至應用程式(方塊360)。
第4A圖顯示根據一實施例之與記憶體區塊416相關聯的MCD元資料字406。於一例示實施例中,記憶體區塊416可為64B(例如0B-63B)的大小而MCD元資料字可為1B的大小。記憶體區塊416可包括記憶體之合乎規定存取部份412(其可為第一長度418)及記憶體之不合規定存取部份414(其可為第二長度420),其中第一長度418加上第二長度420可為64位元組的長度。MCD元資料字406可包括MCD唯一ID402(其可為第三長度408)與MCD邊界值404(其可為第四長度410)。於此範例中,第三長度408可為2b(儲存於MCD元資料字406中之位元0-1中)之長度,第四長度410可為6b(儲存於MCD元資料字406中之位元2-7中)之長度。
於一實施例中,MCD邊界值404可指示記憶體之不合規定存取部份414的大小。於一範例中,處理器或軟體函式庫可藉由從記憶體區塊的最後位元組減去記憶體之不合規定存取部份414的大小來決定介於記憶體之合乎規定存取部份412與記憶體之不合規定存取部份414間之MCD邊界的位置。舉例來說,要對於64位元組記憶體區塊決定MCD邊界,處理器或軟體函式庫可從位元組63(例如64位元組記憶體區塊中之最後位元組)減去MCD
邊界值404。舉例來說,當MCD邊界值404為24位元組(對於為64位元組的記憶體區塊416)時,記憶體之合乎規定存取部份412為40位元組而記憶體之不合規定存取部份414為24位元組(例如對於總共64位元組的記憶體區塊)。於另一範例中,當MCD邊界值404為0位元組時,記憶體之合乎規定存取部份412為64位元組而記憶體之不合規定存取部份414為0位元組(例如對於總共64位元組的記憶體區塊)。
於另一實施例中,MCD邊界值404可指示記憶體之合乎規定存取部份412的大小。於一範例中,處理器或軟體函式庫可藉由從記憶體區塊的第一個位元組加上記憶體之合乎規定存取部份414的大小來決定介於記憶體之合乎規定存取部份412與記憶體之不合規定存取部份414間之MCD邊界的位置。舉例來說,處理器或軟體函式庫可將MCD邊界值404加上位元組0(64位元組記憶體區塊中之第一個位元組)。舉例來說,當MCD邊界值404為20位元組(對於為64位元組的記憶體區塊416)時,記憶體之合乎規定存取部份412為20位元組而記憶體之不合規定存取部份414為44位元組(例如對於總共64位元組的記憶體區塊)。於另一範例中,當MCD邊界值404為1b時,記憶體之合乎規定存取部份412為1位元組而記憶體之不合規定存取部份414為63位元組(例如對於總共64位元組的記憶體區塊)。記憶體區塊大小及/或MCD元資料字並非意欲用以限制,且記憶體區塊大小及/或
MCD元資料字可為處理器或MCD系統之軟體函式庫所設定之任何大小。
第4B圖顯示根據一實施例之與記憶體區塊416相關聯的另一MCD元資料字430。於一例示實施例中,記憶體區塊416可為64B(例如從位元組0至位元組63)的大小而MCD元資料字430可為2位元組的大小。記憶體區塊416可包括記憶體之合乎規定存取部份412(其可為第一長度418)及記憶體之不合規定存取部份414(其可為第二長度420),其中第一長度418加上第二長度420可為64位元組的長度。MCD元資料字406可包括:MCD唯一ID 402,其可為第三長度408;MCD邊界值404,其可為第四長度410;第一保留位元422,其可為第五長度424,其中該第一保留位元422可位於MCD唯一ID 402與MCD邊界值404之間;及第二保留位元426,其可為第六長度428,其中該第二保留位元426可位於MCD邊界值404之後。於此範例中,MCD字元430可為16位元之長度,其中第三長度408可為6位元(位於位元0-5中)之長度、第五長度424可為2位元(位於位元6-7中)之長度、第四長度410可為6位元(位於位元8-13中)之長度、及第六長度426可為2位元(位於位元14-15中)之長度。MCD元資料字430中所使用的位元之總數為MCD唯一ID 402之大小(長度408)加上MCD邊界值404之大小(長度410)。於此說明中,長度之和總共為12位元。由於標準電腦記憶體存取大小為單一位元
組(8位元),12個使用的位元可被填塞保留位元(例如4個保留位元)。舉例來說,保留位元可為長度424之保留位元422,及長度428之保留位元426。MCD元資料字430之位元與大小的配置並非用以限制,且保留位元可為由處理器或MCD系統之分配函式庫所設定之任何大小。
於一實施例中,MCD邊界值404可指示記憶體之不合規定存取部份414的大小。於一範例中,處理器或分配函式庫可藉由從記憶體區塊416的最後位元組減去記憶體之不合規定存取部份414的大小來決定介於記憶體之合乎規定存取部份412與記憶體之不合規定存取部份414間之MCD邊界的位置。舉例來說,處理器或分配函式庫可藉由從位元組63(64位元組記憶體區塊416中之最後位元組)減去MCD邊界值來決定MCD邊界的位置。於另一實施例中,MCD邊界值404可指示記憶體之合乎規定存取部份412的大小。於一範例中,處理器或分配函式庫可藉由將記憶體之合乎規定存取部份414的大小加上記憶體區塊的第一個位元組來決定介於記憶體之合乎規定存取部份412與記憶體之不合規定存取部份414間之MCD邊界的位置。舉例來說,處理器或分配函式庫可藉由從位元組0(64位元組記憶體區塊416中之第一個位元組)加上邊界來決定MCD邊界的位置。記憶體區塊大小及/或MCD元資料字並非意欲用以限制,且記憶體區塊大小及/或MCD元資料字可為處理器或MCD系統之軟體函式庫所設定之任何大小。
第5A圖顯示根據一實施例之對記憶體物件560分配的第一記憶體區塊540與第二記憶體區塊562。於一例示實施例中,應用程式可請求100b記憶體物件560,其中記憶體物件560可包括第一記憶體區塊540與第二記憶體區塊562。於此實施例中,第一記憶體區塊540與第二記憶體區塊562可各為64位元組。第一MCD元資料字530可與第一記憶體區塊540相關聯,而第二MCD元資料字562可與第二記憶體區塊562相關聯。
當處理器或分配函式庫對記憶體物件560分配100位元組時,處理器或分配函式庫可分配第一記憶體區塊540之所有的記憶體(64位元組)以使用於儲存資料。第一MCD元資料字530(與第一記憶體區塊540相關聯)可具有第一MCD邊界值504(為0),指示第一記憶體區塊540之所有的位元組(64位元組)可為合乎規定的(例如,可使用的)。處理器或軟體函式庫可分配第二記憶體區塊562之36位元組以使用於儲存資料(總共64B+36B=100位元組)。第二MCD元資料字550(與第二記憶體區塊562相關聯)可具有第二MCD邊界值546(為28)。28的第二MCD邊界值546可指示記憶體區塊562之前36個鄰近位元組可為合乎規定的而最後28個鄰近位元組可為不合規定的。記憶體區塊大小及/或MCD元資料字並非意欲用以限制,且記憶體區塊大小及/或MCD元資料字大小可為處理器或MCD系統之軟體函式庫所設定之任何大小。
第5B圖顯示根據一實施例之用於檢查記憶體中之越界記憶體存取的方法500之流程圖。方法500可藉由可包含硬體(例如電路、專屬邏輯、及/或可程式化邏輯)、軟體(例如可於電腦系統上執行以執行硬體模擬之指令)、或其組合之電腦系統被執行。方法500及/或其各函數、常式、次常式、或操作可藉由執行該方法的一或多個電腦系統之實體處理器被執行。方法500之二或更多個函數、常式、次常式、或操作可被平行或以與上述次序不同的次序來執行。於特定實現中,方法300可藉由單一處理緒(processing thread)被執行。替代地,方法500可藉由二或多個處理緒被執行,各處理緒執行一或多個個別的該方法之函數、常式、次常式、或操作。於說明範例中,實現方法500之處理緒可被同步(例如使用信號、關鍵區段及/或其他處理緒同步機制)。替代地,實現方法500之處理緒可被彼此不同步地執行。
參照第5B圖,方法500可開始於以處理器或軟體函式庫從應用程式接收記憶體存取請求以存取記憶體物件及鄰近記憶體塊之資料(方塊570)。記憶體存取請求可包括指標,其指示應用程式可被請求以存取於記憶體物件的開始之位置。該指標亦可包括對於記憶體物件之第一MCD唯一ID。該方法可包括處理器或軟體函式庫擷取基於由指標所指示的位置來儲存於鄰近記憶體塊中之資料(例如MCD元資料)(方塊572)。該方法可包括從MCD表擷取與鄰近記憶體塊相關聯之分配資訊(方塊
574)。分配資訊可包括與鄰近記憶體塊相關聯之第二MCD唯一識別符及指示鄰近記憶體塊之第一記憶體區域的大小之MCD邊界值。該方法可包括該處理器或軟體函式庫比較該第一MCD唯一ID與該第二MCD唯一ID以決定所擷取的資料係何時來自由該指標所指示的該記憶體物件(方塊576)。該方法可包括該處理器或軟體函式庫基於分配資訊來決定所擷取資料係何時來自記憶體之可使用的區域(方塊578)。該方法可包括該處理器或軟體函式庫基於該分配資訊當與所擷取的資料相關聯之一故障事件發生時,將一故障訊息傳送至該應用程式(方塊580)。該故障事件可包括:第一MCD唯一ID與該第二MCD唯一ID間之不匹配或存取記憶體物件之記憶體區塊中不合規定的區域。
記憶體中之各記憶體區塊可具有不同的MCD唯一ID。於一範例中,應用程式可當儲存或讀取資料於記憶體中時(例如在目前的記憶體區塊的開始之前的越界存取)執行記憶體區塊存取下溢(underflow)。當應用程式下溢記憶體區塊時,處理器或軟體函式庫可當目前的記憶體區塊之第一MCD唯一ID不匹配先前的記憶體區塊之第二MCD唯一ID時檢測該下溢。
於另一範例中,應用程式可當儲存或讀取資料於記憶體中時(例如在目前的記憶體區塊之後的越界存取)執行記憶體區塊存取溢位(overflow)。當應用程式溢位記憶體區塊時,處理器或軟體函式庫可檢測該溢位。於一範例
中,當應用程式溢位至目前的記憶體區塊之不合規定的存取區域中時,處理器或軟體函式庫可決定:該存取係基於與記憶體物件的最後記憶體區塊相關聯之MCD邊界值而在不合規定的存取區域中(於前面段落中所述)。舉例來說,於第5A圖中,處理器或軟體函式庫可使用MCD邊界值546以決定不合規定的存取區域係在位元組35與位元組63間。於此範例中,當應用程式試圖存取在位元組35與位元組63間之任何位元組時,處理器或軟體函式庫可決定:應用程式已溢位至不合規定的存取區域534中。
於另一範例中,當應用程式試圖存取超過目前記憶體物件的位元組時,處理器或軟體函式庫可決定:基於目前的記憶體區塊之第一MCD唯一ID與下個記憶體區塊之第三MCD唯一ID間之不匹配,應用程式已溢位至下個記憶體物件中。舉例來說,於第5A圖中,當應用程式試圖存取超過記憶體區塊562之記憶體63B時,處理器或軟體函式庫可決定:應用程式已溢位,因為記憶體區塊562之第一MCD唯一ID542與下個記憶體區塊之第三MCD唯一ID可能不匹配。如前面段落所述之檢測下溢或溢位的處理器或軟體函式庫之優點為賦能處理器或軟體函式庫檢測下溢或溢位小至1位元組。
於一範例中,當錯誤訊息指示不合規定的區域已被存取(例如存取記憶體中之空白區域(例如全為零的區域))時,該存取可賦能軟體以存取任何典型指標(canonical pointer)。舉例來說,當記憶體中之空白或
空的區域可被存取時,非MCD指標可存取記憶體中之任何資料。存取記憶體中之任何資料的非MCD指標之優點可為用以避免改變舊有程式(例如非組構用於MCD架構之程式)之行為。
第6A圖為顯示根據一實施例的用於實現安全記憶體再分割(secure memory repartitioning)之處理器600的微架構之方塊圖。具體言之,根據本揭露之至少一實施例,處理器600描述循序架構核心及暫存器更名邏輯、被包括於處理器中之亂序發送/執行邏輯。頁加入(page addition)與內容複製之實施例可被實現於處理器600中。
處理器600包括耦接至執行引擎單元650的前端單元630,且兩者皆耦接至記憶體單元670。處理器600可包括精簡指令集計算(RISC)核心、複雜指令集電腦(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。於另一實施例中,處理器600可包括特殊目的核心,例如網路或通訊核心、壓縮引擎、圖形核心等等。於一實施例中,處理器600可為多核心處理器或可為多處理器系統之部份。
前端單元630包括耦接至指令快取單元634之分支預測單元632,指令快取單元634係耦接至指令轉譯後備緩衝器(translation lookaside buffer;TLB)636,TLB 636係耦接至指令提取單元638,指令提取單元638係耦接至解碼單元660。解碼單元660(亦稱為解碼器)可解碼指
令,且產生一或多個微操作、微碼轉移點、微指令、其他指令、或其他控制訊號作為輸出,其係從原始指令解碼或反射、或係從原始指令導出。解碼器660可使用各種不同機制來實現。合適的機制之範例包含(但不限於)查找表、硬體實現、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。指令快取單元634可被進一步耦接至記憶體單元670。解碼單元660可被耦接至執行引擎單元650中之更名/分配器單元652。
執行引擎單元650包括耦接至引退單元654及一組一或多個排程器單元656之更名/分配器單元652。排程器單元656表示任何數量的不同排程器,包含保留站(reservations stations;RS)、中央指令窗等等。排程器單元656係耦接至實體暫存器檔案單元658。各實體暫存器檔案單元658表示一或多個實體暫存器檔案(不同的實體暫存器檔案儲存一或多個不同的資料類型,例如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點等)、狀態(例如待執行的下個指令之位址之指令指標)等。實體暫存器檔案單元658係由引退單元654重疊以顯示暫存器更名及亂序執行可被實現之多種方式(例如使用重排序緩衝器及引退暫存器檔案、使用未來檔案、歷史緩衝器、及引退暫存器檔案;使用暫存器圖及一堆暫存器;等)。
通常,架構的暫存器係從處理器的外部或從程式設計師的角度看見。暫存器不限於任何已知特定類型的電路。
各種不同類型的暫存器都是適合的,只要其可儲存及提供如此處所述之資料。適合的暫存器之範例包含(但不限於)專屬實體暫存器、使用暫存器更名之動態分配實體暫存器、專屬與動態分配實體暫存器之結合等。引退單元654及實體暫存器檔案單元658係耦接至執行叢集660。執行叢集660包括一組一或多個執行單元662及一組一或多個記憶體存取單元664。執行單元662可執行各種運算(例如移位、加、減、乘)及操作於各種類型的資料(純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)。
雖然某些實施例可包含專門用於特定功能或功能組之數個執行單元,其他實施例可包含全部執行所有功能之僅一個執行單元或多個執行單元。排程器單元656、實體暫存器檔案單元658、與執行叢集660係可能被顯示為複數,這是因為特定實施例對於特定類型的資料/操作(例如純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有其自己的排程器單元、實體暫存器檔案單元、及/或執行叢集-且於分開的記憶體存取管線之情形中,特定實施例可被實現為僅此管線之執行叢集具有記憶體存取單元664)建立分開的管線。應了解的是,當分開的管線被使用,這些管線之其中一或多者可為亂序發送/執行而其他為循序。
於範例中,記憶體存取單元664之組係被耦接至記憶體單元670,其可包括資料預提取器680、資料TLB單元672、資料快取單元(data cache unit;DCU)674、及2
階(L2)快取單元676。於某些實施例中,DCU 674亦被已知為第一階資料快取(L1快取)。DCU 674可處理多個未完成的快取未命中(miss)且繼續服務新來的儲存與載入。其亦支援維持快取一致性。資料TLB單元672為使用以藉由映射(mapping)虛擬與實體位址空間來改良虛擬位址轉譯速度之快取。於一例示實施例中,記憶體存取單元664可包括載入單元、儲存位址單元、及儲存資料單元,其各可被耦接至記憶體單元670中之資料TLB單元672。L2快取單元676可被耦接至一或多個其他階快取且最終至主記憶體。
於一實施例中,藉由自動地預測程式將要處理那個資料,資料預提取器680推測地載入/預提取資料至DCU 674。預提取可參照在資料被處理器實際需要之前轉換儲存於記憶體階層(例如較低階快取或記憶體)之一記憶體位置(例如方位)之資料至較接近(例如產生較小的存取延遲時間)處理器之較高階記憶體位置。更具體言之,預提取可參照在處理器發出對特定資料返回的需求之前將資料從較低階快取/記憶體之其中一者較早取回至資料快取及/或預提取緩衝器。
處理器600可支援一或多個指令集(例如x86指令集(較新的版本有加入一些擴充);美國MIPS Technologies of Sunnyvale,CA之MIPS指令集;美國ARM Holdings of Sunnyvale,CA之ARM指令集(有加入選項的額外擴充,例如NEON))。
應了解的是,核心可支援多執行緒(執行二或更多平行操作或執行緒之集),且可於多種方式依此進行,包括時間切割多執行緒、同時多執行緒(於其中,單一實體核心對實體核心係被同時地進行多執行緒之各執行緒提供邏輯核心)、或其組合(例如時間切割提取及解碼及其後之同時多執行緒,例如Intel®之超執行緒(Hyperthreading)技術)。
雖然暫存器更名係說明於亂序執行之文中,應了解的是,暫存器更名可被使用於循序架構中。雖然所示的處理器之實施例亦包含分開的指令及資料快取單元與共用的L2快取單元,其他實施例可對指令及資料兩者具有單一內部快取,例如1階(L1)內部快取、或多階內部快取。於某些實施例中,系統可包含內部快取及外部快取(其為在核心及/或處理器外部)的結合。替代地,所有的快取可在核心及/或處理器外部。
第6B圖為顯示根據本揭露之某些實施例由第6A圖之處理器600所實現的循序管線(in-order pipeline)及暫存器更名階段(register renaming stage)、亂序發送/執行管線(out-of-order issue/execution pipeline)之方塊圖。第6B圖中實線方塊顯示循序管線,而虛線方塊顯示暫存器更名、亂序發送/執行管線。於第6B圖中,處理器管線600包括提取階段602、長度解碼階段604、解碼階段606、分配階段608、更名階段610、排程階段(亦稱為配送或發送)612、暫存器讀取/記憶體讀取階段614、執行
階段616、寫回/記憶體寫入階段618、例外處理階段622、及提交階段624。於某些實施例中,階段602-624之次序可與所示者不同且不限於第6B圖中所示之特定次序。
第7圖顯示根據一實施例的包括用以執行安全記憶體再分割的邏輯電路之處理器700的微架構之方塊圖。於某些實施例中,根據一實施例之指令可被實現用以操作於具有位元組、字元、雙字元、四字元等大小以及資料類型(例如單及雙精度整數及浮點資料類型)之資料元上。於一實施例中,循序前端701為提取待執行的指令並準備稍後於處理器管線中被使用的指令之處理器700的一部分。頁加入與內容複製之實施例可被實現於處理器700中。
前端701可包含數個單元。於一實施例中,指令預取器716自記憶體取得指令並將其饋送至依次將其解碼或解譯之指令解碼器718。舉例來說,於一實施例中,解碼器將接收的指令解碼成稱為「微指令(micro-instructions)」或「微操作(micro-operations)」(亦稱為micro op或uops)之機器可執行的一或多個操作。於其他實施例中,解碼器將指令解析(parse)成操作碼及對應的資料與控制欄,其係根據一實施例被微架構使用以執行操作。於一實施例中,追蹤快取730將解碼的uops組合成程式序列(program ordered sequence)或uop佇列734中的追跡(trace)以供執行。當追蹤快取730遭遇複雜指令時,微碼ROM 732提供所需uops以完成操作。
某些指令係被轉換成單一微操作,而其他指令需要數個微操作以完成全部操作。於一實施例中,若需要超過四個微操作以完成指令,則解碼器718存取微碼ROM 732以執行指令。於一實施例中,指令可被解碼成少量的微操作以執行於指令解碼器718。於另一實施例中,指令可被儲存於微碼ROM 732內,數個微操作應被需要以完成操作。追蹤快取730參照轉移點可程式化邏輯陣列(PLA)以決定正確的微指令指標以供根據一實施例從微碼ROM 732讀取微碼序列用以完成一或多個指令。在微碼ROM 732完成指令之微操作排序之後,機器之前端701可恢復從追蹤快取730取得微操作。
亂序執行引擎703為指令被準備以供執行之處。亂序執行邏輯具有數個緩衝器用以將指令的流程變平順及再排序,用以最佳化當其於管線中前進及排程以供執行時之效能。分配器邏輯分配機器緩衝器及各uop執行所需資源。暫存器更名邏輯將暫存器檔案中條目(entry)上之邏輯暫存器更名。分配器亦對兩個uop佇列之其中一者中之各uop分配條目,一個用於記憶體操作而一個用於非記憶體操作,在指令排程器之前:記憶體排程器、快速排程器702、慢/一般浮點排程器704、及簡單浮點排程器706。Uop排程器702、704、706基於其相關輸入暫存器運算元來源的準備狀態及uop完成其操作所需之執行資源的可用性來決定uop何時準備好來執行。一實施例之快速排程器702可於主時脈週期之各半中排程,而其他排程器僅可在
每個處理器時脈週期排程一次。排程器仲裁配送埠用以排程供執行之uop。
暫存器檔案708、710位於排程器702、704、706、及執行區塊711中之執行單元712、714、716、718、710、712、714之間。獨立的暫存器檔案708、710分別執行整數及浮點操作。一實施例之各暫存器檔案708、710亦包括旁通網路,其可將剛完成的尚未被寫入暫存器檔案之結果旁通或轉送至新的相關uop。整數暫存器檔案708與浮點暫存器檔案710亦可彼此通訊資料。於一實施例中,整數暫存器檔案708係被分成兩個分開的暫存器檔案,一個暫存器檔案用於資料之低階的32個位元而第二暫存器檔案用於資料之高階的32個位元。一實施例之浮點暫存器檔案710具有128位元寬的條目,因為浮點指令典型具有寬度上從64至128位元的運算元。
執行區塊711含有執行單元712、714、716、718、710、712、714,指令係於其中被實際執行。此部份包括儲存微指令執行所需之整數及浮點資料運算元值之暫存器檔案708、710。一實施例之處理器700係包含數個執行單元:位址產生單元(AGU)712、AGU 714、快速ALU 716、快速ALU 718、慢速ALU 710、浮點ALU 712、浮點移動單元714。於一實施例中,浮點執行區塊712、714執行浮點、MMX、SIMD、及SSE、或其他操作。一實施例之浮點ALU 712包括64位元-64位元(64 bit by 64 bit)的浮點除法器,用以執行除法、平方根、及餘數微操
作。於本揭露之實施例中,涉及浮點值的指令可以浮點硬體來處理。
於一實施例中,ALU操作可前往高速ALU執行單元716、718。一實施例之高速ALU 716、718可以半個時脈週期的有效等待時間執行快速操作。於一實施例中,最複雜的整數操作前往慢速ALU 710,因為慢速ALU 710包括整數執行硬體以用於長等待時間類型的操作,例如乘法、移位、旗標邏輯、及分支處理。記憶體載入/儲存操作係由AGU 712、714執行。於一實施例中,整數ALU 716、718、710(係被說明於文中)執行整數操作於64位元資料運算元上。於替代實施例中,ALU 716、718、710可被實現用以支援許多資料位元,包括16、32、128、256等。同樣地,浮點單元712、714可被實現用以支援具有各種大小的位元之運算元範圍。於一實施例中,浮點單元712、714可與SIMD及多媒體指令一起操作於128位元寬的封裝資料運算元。
於一實施例中,uops排程器702、704、706在父載入(parent load)完成執行之前配送相關操作。當uops在處理器700中被推測地排程及執行時,處理器700亦包括用以處理記憶體未命中之邏輯。若資料載入在資料快取中未命中,則在留給排程器暫時不正確的資料之管線中會有相關的操作。重播機制追蹤及再執行使用不正確資料的指令。僅相關的操作需要被重播而不相關的操作則被允許完成。處理器之一實施例的排程器及重播機制亦被設計用以
取得指令序列以供文字組串比較操作。
處理器700亦包括根據一實施例用以實現安全記憶體再分割之邏輯。於一實施例中,處理器700之執行區塊711可包括MCU 115,用以根據此處之說明執行安全記憶體再分割。
用語「暫存器(registers)」可參照板上處理器儲存位置,其係被使用作為用以識別運算元之指令的一部分。換句話說,暫存器可為那些可自處理器外部(從程式設計師的角度)被使用者使用的暫存器。然而,一實施例之暫存器應不受限於特定類型的電路。取而代之的是,一實施例之暫存器可儲存資料、提供資料、及執行此處所述之功能。此處所述之暫存器可使用任何數量的不同技術藉由處理器內之電路而被實現,例如專屬實體暫存器、使用暫存器更名之動態分配實體暫存器、專屬及動態分配實體暫存器之結合等等。於一實施例中,整數暫存器儲存32位元的整數資料。一實施例之暫存器檔案亦包含八個多媒體SIMD暫存器以用於封裝資料。
關於此處之說明,暫存器係被了解為設計用以保持封裝資料之資料暫存器,例如美國Intel Corporation of Santa Clara,California之MMX技術,於微處理器中之64位元寬的MMXTM暫存器(某些範例中亦被稱為「mm」暫存器)。這些MMX暫存器(整數及浮點形式兩種都可買到)可操作伴隨SIMD及SSE指令之封裝資料元。同樣地,有關SSE2、SSE3、SSE4、或較新者(一般稱為
「SSEx」)技術之128位元寬的XMM暫存器亦可被使用以保持此封裝資料運算元。於一實施例中,在儲存封裝資料及整數資料時,暫存器不需要區分兩個資料類型。於一實施例中,整數與浮點係被包含於相同的暫存器檔案或不同的暫存器檔案中。再者,於一實施例中,浮點與整數資料可被儲存於不同的或相同的暫存器中。
實施例可用許多不同的系統類型來實現。現參照第8圖,所顯示的是根據一實現之多處理器系統800之方塊圖。如第8圖所示,多處理器系統800為點對點互連系統,且包含第一處理器870及經由點對點互連850耦接之第二處理器880。如第8圖所示,處理器870與880之各者可為多核心處理器,包括第一與第二處理器核心(亦即處理器核心874a與874b及處理器核心884a與884b),雖然可能許多更多核心可存在於處理器中。根據本發明之實施例的各處理器可包括混合寫入模式邏輯。頁加入與內容複製之實施例可被實現於處理器870、處理器880、或兩者中。
雖然係以兩個處理器870、880顯示,應了解的是,本揭露之範疇並未受限於此。於其他實現中,一或多個額外的處理器可存在於給定的處理器中。
處理器870及880係分別顯示包含積體記憶體控制器單元882與882。處理器870亦包括點對點(P-P)介面876與888作為其匯流排控制器單元的部份;同樣地,第二處理器880包含P-P介面886與888。處理器870及
880可使用P-P介面電路888、888經由點對點(P-P)介面850來交換資訊。如第8圖所示,IMC 882及882耦接處理器至個別記憶體(即記憶體832與記憶體834),其可為局部地附接至個別處理器之主記憶體的部份。
處理器870及880各可使用點對點介面電路876、894、886、898經由個別P-P介面852、854來與晶片組890交換資訊。晶片組890亦可經由高性能圖形介面839來與高性能圖形電路838交換資訊。
共用快取(未圖示)可被包括於處理器中或兩處理器外部,尚未經由P-P互連而與處理器連接,使得若處理器被置於低電源模式中時,任一處理器或兩處理器的本地快取資訊可被儲存於共用快取。
晶片組890可經由介面896被耦接至第一匯流排816。於一實施例中,第一匯流排816可為週邊組件互連(PCI)匯流排、或例如PCI Express匯流排或另一第三代I/O互連匯流排之匯流排,雖然本揭露之範疇不限於此。
如第8圖所示,各種I/O裝置814可被耦接至第一匯流排816,而匯流排橋接器818將第一匯流排816耦接至第二匯流排820。於一實施例中,第二匯流排820可為低接腳數(low pin count;LPC)匯流排。各種裝置可被耦接至第二匯流排820,包括例如鍵盤及/或滑鼠822、通訊裝置827及儲存單元828,例如磁碟驅動器或於一實施例中可包含指令/碼及資料830之其他大量儲存裝置。再者,音訊I/O 824可被耦接至第二匯流排820。應注意的
是,其他架構是可能的。舉例來說,取代第8圖所示之點對點架構,系統可實現多接點匯流排或其他此種架構。
現參照第9圖,所顯示的是根據本發明之實施例的第三系統900之方塊圖。第8與9圖中類似元件以類似元件符號表示,且第8圖之特定態樣已於第9圖中忽略以避免模糊第9圖之其他態樣。
第9圖顯示處理器970、980可分別包括整合式記憶體及I/O控制邏輯(「CL」)972及982。於至少一實施例,CL 972、982可包含整合式記憶體控制單元,例如此處所述者。此外,CL 972、982亦可包括I/O控制邏輯。第9圖顯示記憶體932、934係被耦接至CL 972、982,且I/O裝置914亦被耦接至控制邏輯972、982。舊有I/O裝置915係耦接至晶片組990。頁加入與內容複製之實施例可被實現於處理器970、處理器980、或兩者中。
第10圖為可包括一或多個核心1002之例示系統單晶片(SoC)。對於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各種其他電子裝置,該領域中已知的其他系統設計與組構亦可為適合的。通常,如此處所述可結合處理器及/或其他執行邏輯之非常多種系統或電子裝置通常為適合的。
現參照第10圖,所顯示的是根據本揭露之一實施例
的SoC 1000之方塊圖。同樣的,虛線框為於更先進的SoC之特徵。於第10圖中,互連單元1002係耦接至:應用處理器1010,其包括一組一或多個核心1002A-N及共用快取單元1006;系統代理單元1010;匯流排控制器單元1016;整合式記憶體控制器單元1014;一組一或多個媒體處理器1020,其可包含整合式圖形邏輯1008、影像處理器1024(用以提供靜止及/或視訊相機功能)、音訊處理器1026(用以提供硬體音訊加速功能)、及視訊處理器1028(用以提供編碼/解碼加速功能);靜態隨機存取記憶體(SRAM)單元1030;直接記憶體存取(DMA)單元1032;及顯示單元1040(用以耦接至一或多個外部顯示器)。頁加入與內容複製之實施例可被實現於SoC 1000中。
接著翻至第11圖,根據本揭露的系統單晶片(SoC)設計之實施例係被顯示。作為例示範例,SoC 1100係被包括於使用者設備(user equipment;UE)中。於一實施例中,UE參照由終端使用者所使用以通訊之任何裝置,例如手持電話、智慧型手機、平板、超薄筆電、配備寬頻配接卡之筆電、或任何其他類似通訊裝置。UE可連接至基地台或節點,其可本能地對應至GSM網路中之行動站(mobile station;MS)。頁加入與內容複製之實施例可被實現於SoC 1100中。
於此,SoC 1100包括兩個核心-1106與1107。類似於以上說明,核心1106與1107可符合指令集架構,例如
具有Intel® Architecture CoreTM之處理器、Advanced Micro Devices,Inc.(AMD)處理器、MIPS式處理器、ARM式處理器設計、或其顧客以及其被授權者或用戶。核心1106與1107係耦接至快取控制1108,其係與匯流排介面單元1109與L2快取1110相關聯,以與系統1100之其他部份通訊。互連1111包括晶片上互連,例如IOSF、AMBA、或以上所述之其他互連,其可實現所述揭露之一或多個態樣。
互連1111提供通訊通道至其他組件,例如用戶識別模組(SIM)1130(用以與SIM卡介接)、啟動ROM 1135(用以保持啟動碼以供核心1106與1107執行,以初始化及啟動SoC 1100)、SDRAM控制器1140(用以介接外部記憶體(例如DRAM 1160))、快閃控制器1145(用以介接非揮發性記憶體(例如快閃記憶體1165))、週邊控制1150(例如串列週邊介面)以介接週邊、視訊編解碼器1120與視訊介面1125(用以顯示及接收輸入(例如觸碰賦能輸入))、GPU 1115(用以執行圖形相關計算)等等。任何的這些介面可結合此處所述之實施例的態樣。
此外,該系統說明用以通訊之週邊,例如藍芽模組1170、3G數據機1175、GPS 1180、及Wi-Fi 1185。如上所述應注意的是,UE包括用以通訊之無線電。結果,這些週邊通訊模組可能不會全被包括。然而,於UE中,用於外部通訊之無線電的某些形式應被包括。
第12圖顯示於電腦系統1200之例示形式中的機器之圖表顯示,於該電腦系統中,用以造成機器執行任何一或多個此處所述的方法之一組指令可被執行。於另一替代實現中,機器可被連接(例如網路連接)至於LAN、內部網路、外部網路、或網際網路中之其他機器。該機器可操作於在客戶-伺服器網路環境中之伺服器或客戶機器的身份中或作為同級間(或分散式)網路環境中之同級機器。機器可為個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、手機、網路裝置、伺服器、網路路由器、交換器或橋接器、或能執行指明由該機器所進行之動作的一組指令(序列地或其他)之任何機器。再者,雖然顯示的僅是單一機器,用語「機器」亦可包括個別地或共同地執行一組(或多組)指令以執行任何一或多個此處所述的方法之任何機器的組合。
例示電腦系統1200包括處理裝置(處理器)1202、主記憶體1204(例如唯讀記憶體(ROM)、快閃記憶體、動態隨機存取記憶體(DRAM),例如同步DRAM(SDRAM))或記憶體匯流排DRAM(RDRAM)等)、靜態記憶體1206(例如快閃記憶體、靜態隨機存取記憶體(SRAM)等)、及資料儲存裝置1218,其經由匯流排1230與彼此通訊。
處理器1202表示一或多個一般目的處理裝置,例如微處理器、中央處理單元、諸如此類。更具體言之,處理器1202可為複雜指令集計算(CISC)微處理器、精減指
令集計算(RISC)微處理器、超長指令字(VLIW)處理器、或實現其他指令集之處理器、或實現指令集之組合的處理器。處理器1202亦可為一或多個特殊目的處理裝置,例如特定應用積體電路(ASIC)、場可程式化閘極陣列(FPGA)、數位訊號處理器(DSP)、網路處理器、諸如此類。處理器1202係經組構以執行指令1226以執行此處所述之操作與步驟。
電腦系統1200可進一步包括網路介面裝置1222。電腦系統1200亦可包括視訊顯示單元1208(例如液晶顯示器(LCD)、陰極射線管(CRT)、或觸碰螢幕)、文數輸入裝置1210(例如鍵盤)、游標控制裝置1214(例如滑鼠)、及訊號產生裝置1216(例如揚聲器)。
資料儲存裝置1218可包括一機器可讀取儲存媒體1224,其上係儲存此處所述之任何一或多個方法或功能具體化之一或多組的指令1226(例如軟體)。指令1226亦可在電腦系統1200之執行期間完全地或部份地存在於主記憶體1204中及/或處理器1202中,主記憶體1204與處理器1202亦構成電腦可讀取儲存媒體。指令1226可進一步經由網路介面裝置1232透過網路1220被傳送或接收。
雖然機器可讀取儲存媒體1224係於例示實現中被顯示為單一媒體,用語「機器可讀取儲存媒體」應包括儲存一或多組指令之單一媒體或多個媒體(例如集中式或分散式資料庫、及/或相關聯的快取與伺服器)。用語「機器可讀取儲存媒體」亦應包括能儲存、編碼或攜帶一組指令
以供機器執行且可造成該機器執行本揭露之任何一或多個方法之任何媒體。用語「機器可讀取儲存媒體」因此應包括(但不限於)固態記憶體、光學媒體、及磁性媒體。以下範例係關於進一步實施例。
於範例1中,一種處理器,包括:1)一記憶體,用以儲存來自一應用程式之資料,其中該記憶體包括一記憶體錯誤檢測(MCD)表及一記憶體物件;及2)一處理器核心,耦接至該記憶體,其中該處理器核心係用以:a)從該應用程式接收一記憶體存取請求以利用一鄰近記憶體塊來存取該記憶體物件之資料,其中該記憶體存取請求包括:i)一指標,指示於該記憶體物件之該記憶體中之一位置;及ii)一第一MCD唯一識別符(ID);b)基於由該指標所指示之該位置來擷取儲存於記憶體物件的該鄰近記憶體塊中之資料;c)從該MCD表擷取與該鄰近記憶體塊相關聯之分配資訊,其中該分配資訊包括:i)與該鄰近記憶體塊相關聯之一第二MCD唯一識別符;及ii)一MCD邊界值,指示該鄰近記憶體塊之一第一記憶體區域的大小;及d)當與所擷取的資料相關聯之一故障事件發生時,基於該分配資訊將一故障訊息傳送至該應用程式。
於範例2中,範例1之處理器,其中該鄰近記憶體塊包含:1)一可用的記憶體區域及一不可用的記憶體區域;及2)該第一記憶體區域為該可用的記憶體區域或該不可用的記憶體區域。
於範例3中,範例1-2之處理器,其中該記憶體核心
係進一步用以:1)比較該第一MCD唯一ID與該第二MCD唯一ID以決定所擷取的資料係何時來自由該指標所指示的該記憶體物件;及2)基於該分配資訊來決定所擷取的資料係何時來自該可用的記憶體區域。
於範例4中,範例1-3之處理器,其中該故障事件發生於當:1)該第一MCD唯一ID不匹配該第二MCD唯一ID;或2)該記憶體存取係在不可用的記憶體區域內。
於範例5中,範例1-4之處理器,其中該處理器核心係進一步藉由下列動作來決定該可用的記憶體區域:1)從該鄰近記憶體塊之一大小值減去該MCD邊界值以獲得一邊界位置值;及2)基於該邊界位置值來識別於該鄰近記憶體塊中之一MCD邊界位置,其中該MCD邊界位置指示於該可用的記憶體區域與該不可用的記憶體區域間之一界限。
於範例6中,範例1-5之處理器,其中該鄰近記憶體塊之大小為64位元組。
於範例7中,範例1-6之處理器,其中當該MCD邊界值為零時,該整個鄰近記憶體塊為該可用的記憶體區域。
各種實施例可具有以上所述之結構特徵的不同組合。例如,以上所述之處理器及方法之所有選項的特徵亦可關於此處所述之系統被實現,且於範例中之細節可被使用於一或多個實施例之任何地方中。
於範例8中,一種處理器,包括:1)一記憶體,用
以儲存來自一應用程式之資料,其中該記憶體包括一記憶體錯誤檢測(MCD)表;及2)一處理器核心,耦接至該記憶體,其中該處理器核心係用以:a)從該應用程式接收一分配請求以用於於該記憶體中之一記憶體物件與一或多個鄰近記憶體塊之一分配;b)按照所請求的記憶體物件之大小而對該記憶體物件分配該一或多個鄰近記憶體塊,其中該一或多個鄰近記憶體塊之一鄰近記憶體塊包含一第一記憶體區域與一第二記憶體區域;及c)將一MCD元資料字寫入至該MCD表內,其中該MCD元資料字包括:i)與該鄰近記憶體塊相關聯之一第一MCD唯一識別符;及ii)一MCD邊界值,指示該鄰近記憶體塊之該第一記憶體區域的大小。
於範例9中,範例8之處理器,其中該第一記憶體區域為該鄰近記憶體塊之一使用過的部份。
於範例10中,範例8-9之處理器,其中該第一記憶體區域為該鄰近記憶體塊之一未使用過的部份。
於範例11中,範例8-10之處理器,其中該記憶體核心係進一步用以:1)以該記憶體物件之一記憶體位置及與該記憶體物件相關聯的一第二MCD唯一識別符來建立一指標;及2)將該指標傳送至該應用程式。
於範例12中,範例8-11之處理器,其中該鄰近記憶體塊的大小為64位元組。
於範例13中,範例8-12之處理器,其中該MCD元資料字的大小為2位元組,且其中:1)該MCD唯一ID
為該MCD元資料字之1位元組,及2)該MCD邊界值為該MCD元資料字之1位元組。
各種實施例可具有以上所述之結構特徵的不同組合。例如,以上所述之處理器及方法之所有選項的特徵亦可關於此處所述之系統被實現,且於範例中之細節可被使用於一或多個實施例之任何地方中。
於範例14中,一種系統單晶片(SoC),包括:1)一處理器;2)一記憶體裝置,耦接至該處理器,用以儲存來自一應用程式之資料,其中該記憶體包含一記憶體錯誤檢測(MCD)表及一記憶體物件;及3)一記憶體控制器,耦接至該記憶體裝置,該記憶體控制器係用以:a)從該應用程式接收一記憶體存取請求以利用一鄰近記憶體塊來存取該記憶體物件之資料,其中該記憶體存取請求包括:i)一指標,指示於該記憶體物件之該記憶體中之一位置;及ii)一第一MCD唯一識別符(ID);b)基於由該指標所指示之該位置來擷取儲存於該鄰近記憶體塊中之資料;c)從該MCD表擷取與該鄰近記憶體塊相關聯之分配資訊,其中該分配資訊包括:i)與該鄰近記憶體塊相關聯之一第二MCD唯一識別符;及ii)一MCD邊界值,指示該鄰近記憶體塊之一第一記憶體區域的大小;及d)基於該分配資訊來決定所擷取的資料係何時來自一可用的記憶體區域;及e)將所擷取的資料傳送至該應用程式。
於範例15中,範例14之SoC,其中該鄰近記憶體塊包含:1)一可用的記憶體區域及一不可用的記憶體區
域;及2)該第一記憶體區域為該可用的記憶體區域或該不可用的記憶體區域。
於範例16中,範例14-15之SoC,其中當該MCD邊界值為零時,該整個鄰近記憶體塊為該可用的記憶體區域。
於範例17中,範例14-16之SoC,其中該記憶體控制器係進一步比較該第一MCD唯一ID與該第二MCD唯一ID以決定所擷取的資料係何時來自由該指標所指示的該記憶體物件。
於範例18中,範例14-17之SoC,其中該記憶體控制器係進一步當與所擷取的資料相關聯之一故障事件發生時,將一故障訊息傳送至該應用程式,其中該故障事件發生於當:1)該第一MCD唯一ID不匹配該第二MCD唯一ID;或2)該記憶體存取係在不可用的記憶體區域內。
於範例19中,範例14-18之SoC,其中該記憶體控制器係進一步藉由下列動作來決定該可用的記憶體區域:1)從該鄰近記憶體塊之一大小值減去該MCD邊界值以獲得一邊界位置值;及2)基於該邊界位置值來識別於該鄰近記憶體塊中之一MCD邊界位置,其中該MCD邊界位置指示於該可用的記憶體區域與該不可用的記憶體區域間之一界限。
於範例20中,範例14-19之SoC,其中該鄰近記憶體塊之大小為64位元組。
各種實施例可具有以上所述之結構特徵的不同組合。
例如,以上所述之處理器及方法之所有選項的特徵亦可關於此處所述之系統被實現,且於範例中之細節可被使用於一或多個實施例之任何地方中。
雖然本發明已參照有限數量的實施例加以說明,所屬技術領域中具有通常知識者將了解可進行適當的許多修改與變化。意圖是,後附申請專利範圍涵蓋所有此等修改與變化,其落於本發明之真實精神與範疇內。
於此處說明中,許多特定細節係被提出,例如特定類型的處理器與系統組態、特定硬體結構、特定架構與微架構細節、特定暫存器組態、特定指令類型、特定系統組件、特定測量/高度、特定處理器管線階段及操作等等之範例,以提供本發明之完整了解。然而,所屬技術領域中具有通常知識者應了解的是,這些特定細節不需要被使用以實現本發明。於其他範例中,例如特定與替代處理器架構、用於說明的演算法之特定邏輯電路/碼、特定韌體碼、特定互連操作、特定邏輯組態、特定製造技術與材料、特定編譯器實現、演算法的碼中之特定語法、特定電力中斷與閘控技術/邏輯及電腦系統之其他特定操作細節之已知的組件或方法未被詳細說明,以避免不必要地模糊本發明。
實施例係參照於特定積體電路中(例如於計算平台或微處理器中)之安全記憶體再分割來說明。實施例亦可應用至其他類型的積體電路與可程式化邏輯裝置。舉例來說,所揭露的實施例不限於桌上型電腦系統或可攜式電
腦,例如Intel®超極緻筆電TM(UltrabooksTM)電腦。且亦可被使用於其他裝置,例如手持式裝置、平板電腦、其他薄型筆電、系統單晶片(SOC)裝置、及嵌入式應用程式。手持裝置之一些範例包含蜂窩式電話、網際網路協定裝置、數位照相機、個人數位助理(PDA)、及手持PC。嵌入式應用典型地包括微控制器、數位訊號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器、或可執行以下所教示的功能與操作之任何其他系統。系統可為任何類型的電腦或嵌入式系統。所揭露的實施例可特別地被使用於低端(low-end)裝置,例如可穿戴式裝置(例如手錶)、電子植入物、感覺與控制基礎裝置、控制器、監控及資料擷取(supervisory control and data acquisition;SCADA)系統、或諸如此類。再者,此處所述之裝置、方法、及系統並不限於實體計算裝置,其亦可相關於對於能源保存與效率之軟體最佳化。由以下說明可輕易了解到,此處所述之裝置、方法、及系統的實施例(不論參照硬體、韌體、軟體、或其組合)對於與效能考量保持平衡之「綠色科技」未來是重要的。
雖然此處之實施例係參照處理器來說明,其他實施例可應用其他類型的積體電路及邏輯裝置。本發明之實施例之類似的技術及教示可被應用至有助於較佳管道貫量及改良的效能之其他類型的電路或半導體裝置。本發明之實施例的教示可應用至執行資料處理之任何處理器或機器。然
而,本發明並未受限於執行512位元、256位元、128位元、64位元、32位元或16位元資料操作之處理器或機器且可被應用至可於其中執行資料之處理與管理的任何處理器及機器。此外,此處之說明提供範例,而所附圖式顯示各種範例以供說明用。然而,這些範例不應被解釋為限制之含義,而係提供本發明之實施例的範例,並非提供本發明之實施例的所有可能的實現之無遺漏的列表。
雖然以下範例說明指令處理及分配於指令單元與邏輯電路之說明中,本發明之其他實施例可藉由儲存於機器可讀的有形媒體上之資料或指令(當其由機器執行時造成機器執行與本發明之至少一實施例一致的功能)來實現。於一實施例中,與本發明之實施例相關聯的功能係被嵌入於機器可執行的指令中。指令可被使用以造成以指令進行程式化之一般目的或特殊目的處理系統執行本發明之步驟。本發明之實施例可被提供為電腦程式產品或軟體,其可包含根據本發明之實施例具有指令(其可被使用以執行一電腦(或其他電子裝置)用以執行一或多個操作)儲存於其上之機器或電腦可讀取媒體。替代地,本發明之實施例的操作可被含有用以執行該等操作的固定功能式(fixed-function)邏輯之特定硬體組件執行,或藉由程式化的電腦組件及固定功能式硬體組件之任何組合。
被使用以對邏輯進行程式化以執行本發明之實施例的指令可被儲存於系統中之記憶體內,例如DRAM、快取、快閃記憶體、或其他儲存器。再者,指令可被經由網路或
藉由其他電腦可讀取媒體來散佈。因此,機器可讀取媒體可包含用以以機器(例如電腦)可讀的形式儲存或傳送資訊之任何機制,但不限於,軟碟、光碟、光碟唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電氣可抹除可程式化唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體、或使用於透過網際網路經由電的、光的、聽覺的或其他形式的傳播訊號(例如載波、紅外線訊號、數位訊號等等)之資訊的傳送之有形的機器可讀取的儲存器。因此,電腦可讀取媒體包括適用於以機器(例如電腦)可讀取的形式儲存或傳送電子指令或資訊的任何類型之有形的機器可讀取媒體。
設計可歷經各種階段,從創作到模擬到製造。表示一設計之資料可以數種方式表示該設計。首先,在模擬中有用的是,硬體可使用硬體描述語言或另一功能描述語言而被表示。此外,具有邏輯及/或電晶體閘極之電路級模型可在設計流程之某些階段中被產生。再者,在某些階段,大部分設計達到表示硬體模型中各種裝置的實體布局之資料級。在使用傳統半導體製造技術的情形中,表示硬體模型的資料可為指明對於被使用以產生積體電路的遮罩於不同遮罩層之許多特徵的存在或不存在之資料。於該設計的任何表示中,該資料可被儲存於任何形式的機器可讀取媒體中。記憶體或磁性的或光學的儲存器(例如碟)可為機器可讀取媒體用以儲存經由經調製的或被產生以傳送此資
訊的光或電波傳送之資料。當表示或攜帶碼或設計之電載波係被傳送至複製、緩衝、或電訊號之再傳送係被執行的程度時,新的副本係被做出。因此,通訊提供者或網路提供者可將一物件(例如編碼成載波之資訊)至少暫時地儲存於有形的機器可讀取媒體,以具體化本發明之實施例的技術。
此處所使用之模組參照任何硬體、軟體、及/或韌體之組合。於一範例中,模組包括與非暫態媒體相關聯之硬體(例如微控制器),用以儲存適於被微控制器所執行之碼。因此,於一實施例中,模組之參考參照硬體,其係被特定地組構以識別及/或執行保持於非暫態媒體上之碼。再者,於另一實施例中,模組之使用參照包括碼之非暫態媒體,其係被特定地調適以被微控制器執行以執行預定操作。且如可推論者,於另一實施例中,用語模組(於此範例中)可參照微控制器與非暫態媒體之組合。通常,顯示為分開的模組界限通常會變化且可能重疊。舉例來說,第一與第二模組可共享硬體、軟體、韌體、或其組合,而可能保留一些獨立硬體、軟體、或韌體。於一實施例中,用語邏輯之使用包括硬體,例如電晶體、暫存器、或其他硬體,例如可程式化邏輯裝置。
於一實施例中,用語「經組構以(configured to)」之使用參照佈置、一起放置、製造、提供販賣、進口及/或設計裝置、硬體、邏輯、或元件,以執行指定的或決定的任務。於此範例中,非執行中之裝置或其元件係仍「經
組構以」執行指定的任務,若其係被設計、耦接、及/或互連以執行所述指定的任務。於一純說明範例中,邏輯閘極可在操作期間提供0或1。但,邏輯閘極「經組構以」提供一賦能訊號至一時脈並不包括可提供1或0的每個可能的邏輯閘極。取代的是,邏輯閘極為以某些方式耦接之一者,在操作期間,1或0輸出係賦能該時脈。應再次注意的是,用語「經組構以」之使用並不需要操作,但取代的是,聚焦於裝置、硬體、及/或元件之潛伏狀態(latent state),在潛伏狀態中,裝置、硬體、及/或元件係被設計以當裝置、硬體、及/或元件正在處理時執行特定任務。
再者,於一實施例中,用語「至(to)」、「能(capable of/to)」、及/或「可操作以(operable to)」參照依此方式設計之一些裝置、邏輯、硬體、及/或元件,以依特定方式賦能裝置、邏輯、硬體、及/或元件的使用。如以上所注意的是,於一實施例中,「至」、「能」、「可操作以」的使用參照裝置、邏輯、硬體、及/或元件之潛伏狀態,於其中,裝置、邏輯、硬體、及/或元件不在操作中但係依此方式被設計以依特定方式賦能裝置的使用。
如此處所使用的值包括數字、狀態、邏輯狀態、或二進制邏輯狀態之任何已知表示。通常,邏輯位準、邏輯值(logic values或logical values)亦參照1與0,其僅表示二進制邏輯狀態。舉例來說,1參照高邏輯位準而0參照
低邏輯位準。於一實施例中,儲存器單元(例如暫存器或快閃單元)能保持單一邏輯值或多個邏輯值。然而,於電腦系統中值之其他表示已被使用。舉例來說,十進位數字10亦可被表示為二進制值1010及十六進制字元A。因此,值包括能於電腦系統中保持的資訊之任何表示。
再者,狀態可藉由值或值的部份來表示。於一範例中,第一值(例如邏輯1)可表示預設或初始狀態,而第二值(例如邏輯0)可表示非預設狀態。此外,於一實施例中,用語重設(reset)與設定(set)分別表示預設及更新值或狀態。舉例來說,預設值可能地包括高邏輯值(亦即重設),而更新值可能地包括低邏輯值(亦即設定)。應注意的是,值之任何組合可被利用以表示任何數量的狀態。
以上提出的方法、硬體、軟體、韌體或碼之實施例可經由儲存於機器可存取、機器可讀取、電腦可存取、或電腦可讀取媒體(其係由處理元件所執行)上之指令或碼被實現。非暫態機器可存取/可讀取媒體包括以機器(例如電腦或電子系統)可讀取的形式提供(亦即儲存及/或傳送)資訊之任何機制。舉例來說,非暫態機器可存取媒體包括隨機存取記憶體(RAM),例如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電氣儲存裝置;光學儲存裝置:聲學儲存裝置;用以保持從暫態(傳播的)訊號(例如載波、紅外線訊號、數位訊號)接收的資訊之其他形式的儲存裝
置;諸如此類,其係從可從其中接收資訊之非暫態媒體中區別出來。
被使用以對邏輯進行程式化以執行本發明之實施例的指令可被儲存於系統中之記憶體內,例如DRAM、快取、快閃記憶體、或其他儲存器。再者,指令可被經由網路或藉由其他電腦可讀取媒體來散佈。因此,機器可讀取媒體可包含用以以機器(例如電腦)可讀的形式儲存或傳送資訊之任何機制,但不限於,軟碟、光碟、光碟唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電氣可抹除可程式化唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體、或使用於透過網際網路經由電的、光的、聽覺的或其他形式的傳播訊號(例如載波、紅外線訊號、數位訊號等等)之資訊的傳送之有形的機器可讀取的儲存器。因此,電腦可讀取媒體包括適用於以機器(例如電腦)可讀取的形式儲存或傳送電子指令或資訊的任何類型之有形的機器可讀取媒體。
此說明中提及「一實施例」或「實施例」係指與該實施例有關之所描述的特定特徵、結構、或特點係包含於本發明的至少一實施例。因此,在說明書中許多地方之用語「於一實施例」或「於實施例」的出現並不需要參照相同的實施例。再者,於一或更多實施例中,特定特徵、結構、或特性可被結合於任何適合的方式。
於前述說明中,詳細說明已參照特定範例實施例。然
而,明顯的是,各種修改與改變可對其做出而不超出於後附申請專利範圍中所陳述之本發明的較廣精神與範疇。因此,說明書與圖式係考量為說明用而非限制用。再者,實施例之前述使用及其他範例用語不一定參照相同的實施例或相同的範例,但可參照不同的與分開的實施例以及可能相同的實施例。
詳細說明的某些部份係以於電腦記憶體中之資料位元上的操作之演算法及符號表示來呈現。這些演算法說明與表示為所屬技術領域中具有通常知識者所使用的手段以最有效率地將其成品的實質傳達其他所屬技術領域中具有通常知識者。此處所述之演算法係為導向所欲結果之操作的自相容序列。這些操作為需要實體量之實體調處的步驟。通常,雖然非必要,這些量有能夠被儲存、傳送、結合、比較、及其他操作之電或磁訊號的形式。已不時被證明為合宜的,主要用於一般使用的理由,將這些訊號稱為位元、值、成分、符號、字元、項、數量或類似者。此處所述之方塊可為硬體、軟體、韌體或其組合。
然而,應了解的是,所有這些及類似用語係適當的實體量與相關聯且僅為應用至這些量的方便標籤。除非有特別說明,不然由以上說明中明顯得知,應了解的是,整個說明中,利用用語例如「界定(defining)」、「接收(receiving)」、「決定(determining)」、「發出(issuing)」、「鏈結(linking)」、「關聯(associating)」、「獲得(obtaining)」、「證明
(authenticating)」、「禁止(prohibiting)」、「執行(executing)」、「請求(requesting)」、「通訊(communicating)」或諸如此類之說明參照電腦系統或類似的電子計算裝置利用及轉換表示為位於電腦系統的暫存器及記憶體內之實體的(例如電子的)量之資料成為其他同樣表示為位於計算系統記憶體或暫存器或其他資訊儲存、傳送、或顯示裝置內之實體的量的資料之動作或處理。
用語「範例(example)」或「例示(exemplary)」於此係被使用以表示作為一範例、例子、或說明。此處所述作為「範例」或「例示」之任何態樣或設計不一定要被解釋為較其他態樣或設計為較佳的或優點的。取代的是,用語「範例」或「例示」的使用係意欲以具體方式來呈現概念。如於此申請書中所使用者,用語「或(or)」係意欲表示包含的(inclusive)「或」而非排除的(exclusive)「或」。亦即,除非另有說明,或內容中清楚說明者,「X包括A或B」係意欲表示任何自然的包含的排列。亦即,若X包括A;X包括B;或X包括A及B兩者,則「X包括A或B」係在任何前述情況下被滿足。此外,此申請書及後附申請專利範圍中所使用的冠詞「a」與「an」通常應被解釋以表示「一或多個」,除非另有說明,或內容中清楚說明表示為單數形式。再者,用語「一實施例(an embodiment或one embodiment)」或「一實現(an implementation或one implementation)」
的使用並非意欲表示相同實施例或實現,除非如此說明。同樣的,此處所使用的用語「第一」、「第二」、「第三」、「第四」等係表示用以在不同元件間區別的標示且可不需要具有根據其數值命名之順序的意思。
100‧‧‧MCD系統
102‧‧‧指標
104‧‧‧系統記憶體
106‧‧‧指標
108‧‧‧指標
110‧‧‧MCD唯一ID
112‧‧‧記憶體位址
114‧‧‧MCD唯一ID
118‧‧‧記憶體位址
120‧‧‧MCD唯一ID
122‧‧‧記憶體物件資料
124‧‧‧MCD唯一ID
126‧‧‧記憶體物件資料
128‧‧‧鄰近記憶體塊
130‧‧‧鄰近記憶體塊
132‧‧‧鄰近記憶體塊
134‧‧‧鄰近記憶體塊
136‧‧‧鄰近記憶體塊
138‧‧‧記憶體物件
140‧‧‧記憶體物件
Claims (15)
- 一種處理器,包含:一記憶體,用以儲存來自一應用程式之資料,其中該記憶體包含一記憶體錯誤檢測(MCD)表及一記憶體物件;及一處理器核心,耦接至該記憶體,其中該處理器核心係用以:從該應用程式接收一記憶體存取請求以利用於該記憶體之一記憶體物件中之一鄰近記憶體塊來存取該記憶體物件之資料,其中該記憶體存取請求包含:一指標,指示於該記憶體物件之該記憶體中之一位置;及一第一MCD唯一識別符(ID);以及一可用的記憶體區域及一不可用的記憶體區域;基於由該指標所指示之該位置來擷取儲存於該鄰近記憶體塊中之資料;從該MCD表擷取與該鄰近記憶體塊相關聯之分配資訊,其中該分配資訊包含:與該鄰近記憶體塊相關聯之一第二MCD唯一ID;一MCD邊界值,指示該鄰近記憶體塊之一第一記憶體區域的大小;從該鄰近記憶體塊之一大小值減去該MCD邊界 值以獲得一邊界位置值;基於邊界位置值來識別於該鄰近記憶體塊中之一MCD邊界位置,其中該MCD邊界位置指示於該可用的記憶體區域與該不可用的記憶體區域間之一界限;及基於該分配資訊當與所擷取的資料相關聯之一故障事件發生時,將一故障訊息傳送至該應用程式。
- 如申請專利範圍第1項之處理器,其中該處理器核心係進一步用以:比較該第一MCD唯一ID與該第二MCD唯一ID以決定所擷取的資料係何時來自由該指標所指示的該記憶體物件;及基於該分配資訊來決定所擷取的資料係何時來自該不可用的記憶體區域。
- 如申請專利範圍第2項之處理器,其中該故障事件發生於:該第一MCD唯一ID不匹配該第二MCD唯一ID;或該記憶體存取係在該不可用的記憶體區域內。
- 如申請專利範圍第1項之處理器,其中該鄰近記憶體塊之該大小為64位元組。
- 如申請專利範圍第1項之處理器,其中當該MCD邊界值為零時,該整個鄰近記憶體塊為該可用的記憶體區域。
- 一種處理器,包含:一記憶體,用以儲存來自一應用程式之資料,其中該 記憶體包含一記憶體錯誤檢測(MCD)表;及一處理器核心,耦接至該記憶體,其中該處理器核心係用以:從該應用程式接收一分配請求以用於於該記憶體中之一記憶體物件與一或多個鄰近記憶體塊之一分配;按照所請求的該記憶體物件之大小而對該記憶體物件分配該一或多個鄰近記憶體塊,其中該一或多個鄰近記憶體塊之一鄰近記憶體塊包含一第一記憶體區域與一第二記憶體區域;及將一MCD元資料字寫入至該MCD表內,其中該MCD元資料字包含:與該鄰近記憶體塊相關聯之一第一MCD唯一識別符(ID),其中該MCD唯一ID為該MCD元資料字之1位元組;及一MCD邊界值,指示該鄰近記憶體塊之該第一記憶體區域的大小,其中該MCD邊界值為該MCD元資料字之1位元組。
- 如申請專利範圍第6項之處理器,其中該第一記憶體區域為該鄰近記憶體塊之一使用過的部份。
- 如申請專利範圍第6項之處理器,其中該第一記憶體區域為該鄰近記憶體塊之一未使用過的部份。
- 如申請專利範圍第6項之處理器,其中該處理器核心係進一步用以:以該記憶體物件之一記憶體位置及與該記憶體物件相 關聯的一第二MCD唯一ID來建立一指標;及將該指標傳送至該應用程式。
- 如申請專利範圍第6項之處理器,其中該鄰近記憶體塊的大小為64位元組。
- 一種系統單晶片(SoC),包含:一處理器;一記憶體裝置,耦接至該處理器,用以儲存來自一應用程式之資料,其中該記憶體包含一記憶體錯誤檢測(MCD)表及一記憶體物件;及一記憶體控制器,耦接至該記憶體裝置,該記憶體控制器係用以:從該應用程式接收一記憶體存取請求以利用一鄰近記憶體塊來存取該記憶體物件之資料,其中該記憶體存取請求包含:一指標,指示於該記憶體物件之該記憶體中之一位置;一第一MCD唯一識別符(ID);及一可用的記憶體區域及一不可用的記憶體區域;基於由該指標所指示之該位置來擷取儲存於該鄰近記憶體塊中之資料;從該MCD表擷取與該鄰近記憶體塊相關聯之分配資訊,其中該分配資訊包含:與該鄰近記憶體塊相關聯之一第二MCD唯 一ID;及一MCD邊界值,指示該鄰近記憶體塊之一第一記憶體區域的大小;及從該鄰近記憶體塊之一大小值減去該MCD邊界值以獲得一邊界位置值;及基於該邊界位置值來識別於該鄰近記憶體塊中之一MCD邊界位置,其中該MCD邊界位置指示於該可用的記憶體區域與該不可用的記憶體區域間之一界限;及將所擷取的該資料傳送至該應用程式。
- 如申請專利範圍第11項之SoC,其中當該MCD邊界值為零時,該整個鄰近記憶體塊為該可用的記憶體區域。
- 如申請專利範圍第11項之SoC,其中該記憶體控制器係進一步用以比較該第一MCD唯一ID與該第二MCD唯一ID以決定所擷取的該資料係何時來自由該指標所指示的該記憶體物件。
- 如申請專利範圍第13項之SoC,其中該記憶體控制器係進一步當與所擷取的該資料相關聯之一故障事件發生時,將一故障訊息傳送至該應用程式,其中該故障事件發生於:該第一MCD唯一ID不匹配該第二MCD唯一ID;或該記憶體存取係在該不可用的記憶體區域內。
- 如申請專利範圍第11項之SoC,其中該鄰近記憶體塊之大小為64位元組。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/668,862 US9766968B2 (en) | 2015-03-02 | 2015-03-25 | Byte level granularity buffer overflow detection for memory corruption detection architectures |
PCT/US2016/014180 WO2016153586A1 (en) | 2015-03-25 | 2016-01-20 | Byte level granularity buffer overflow detection for memory corruption detection architectures |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201643715A TW201643715A (en) | 2016-12-16 |
TWI587127B true TWI587127B (zh) | 2017-06-11 |
Family
ID=56979289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105105126A TWI587127B (zh) | 2015-03-25 | 2016-02-22 | 使用具有位元組等級粒度緩衝器溢位檢測之記憶體錯誤檢測架構的處理器和系統單晶片 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP3274832A4 (zh) |
CN (1) | CN107278295B (zh) |
TW (1) | TWI587127B (zh) |
WO (1) | WO2016153586A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191791B2 (en) | 2016-07-02 | 2019-01-29 | Intel Corporation | Enhanced address space layout randomization |
US10540261B2 (en) | 2017-04-07 | 2020-01-21 | International Business Machines Corporation | Problem diagnosis technique of memory corruption based on regular expression generated during application compiling |
CN108038014B (zh) * | 2017-11-30 | 2021-06-04 | 中国人民解放军国防科技大学 | 一种图像压缩多核并行容错方法、计算机、处理器 |
EP3502898A1 (en) * | 2017-12-20 | 2019-06-26 | Vestel Elektronik Sanayi ve Ticaret A.S. | Devices and methods for determining possible corruption of data stored in a memory of an electronic device |
US20230044942A1 (en) * | 2021-08-03 | 2023-02-09 | Kioxia Corporation | Conditional update, delayed lookup |
US11467970B1 (en) | 2021-08-03 | 2022-10-11 | Kioxia Corporation | Metadata management in non-volatile memory devices using in-memory journal |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0652515A1 (en) * | 1993-11-09 | 1995-05-10 | Lucas Industries Public Limited Company | Memory device, manufacture of such a device and a method of simulating a contiguous memory |
US7930491B1 (en) * | 2004-04-19 | 2011-04-19 | Cisco Technology, Inc. | Memory corruption detection system and method using contingency analysis regulation |
US20130173954A1 (en) * | 2012-01-02 | 2013-07-04 | Samsung Electronics Co., Ltd. | Method of managing bad storage region of memory device and storage device using the method |
US20140115283A1 (en) * | 2012-10-23 | 2014-04-24 | Oracle International Corporation | Block memory engine with memory corruption detection |
US20140122826A1 (en) * | 2010-09-30 | 2014-05-01 | Juniper Networks, Inc. | Detecting memory corruption |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001273794A (ja) * | 2000-03-28 | 2001-10-05 | Ando Electric Co Ltd | フェイル前情報取得回路およびその取得方法 |
CN101814324A (zh) * | 2009-02-23 | 2010-08-25 | 南亚科技股份有限公司 | 降低存储器漏电流的方法与存储器存取方法 |
US8549379B2 (en) * | 2010-11-19 | 2013-10-01 | Xilinx, Inc. | Classifying a criticality of a soft error and mitigating the soft error based on the criticality |
US8930657B2 (en) * | 2011-07-18 | 2015-01-06 | Infineon Technologies Ag | Method and apparatus for realtime detection of heap memory corruption by buffer overruns |
US8751736B2 (en) * | 2011-08-02 | 2014-06-10 | Oracle International Corporation | Instructions to set and read memory version information |
US10123187B2 (en) * | 2012-04-17 | 2018-11-06 | Qualcomm Incorporated | Methods and apparatus for multiplexing application identifiers for peer-to-peer discovery systems |
CN103839591A (zh) * | 2014-03-05 | 2014-06-04 | 福州瑞芯微电子有限公司 | 存储器自动检错和容错电路及控制方法 |
-
2016
- 2016-01-20 CN CN201680012160.5A patent/CN107278295B/zh active Active
- 2016-01-20 WO PCT/US2016/014180 patent/WO2016153586A1/en active Application Filing
- 2016-01-20 EP EP16769192.2A patent/EP3274832A4/en not_active Withdrawn
- 2016-02-22 TW TW105105126A patent/TWI587127B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0652515A1 (en) * | 1993-11-09 | 1995-05-10 | Lucas Industries Public Limited Company | Memory device, manufacture of such a device and a method of simulating a contiguous memory |
US7930491B1 (en) * | 2004-04-19 | 2011-04-19 | Cisco Technology, Inc. | Memory corruption detection system and method using contingency analysis regulation |
US20140122826A1 (en) * | 2010-09-30 | 2014-05-01 | Juniper Networks, Inc. | Detecting memory corruption |
US20130173954A1 (en) * | 2012-01-02 | 2013-07-04 | Samsung Electronics Co., Ltd. | Method of managing bad storage region of memory device and storage device using the method |
US20140115283A1 (en) * | 2012-10-23 | 2014-04-24 | Oracle International Corporation | Block memory engine with memory corruption detection |
Also Published As
Publication number | Publication date |
---|---|
WO2016153586A1 (en) | 2016-09-29 |
CN107278295A (zh) | 2017-10-20 |
TW201643715A (en) | 2016-12-16 |
EP3274832A1 (en) | 2018-01-31 |
CN107278295B (zh) | 2021-04-27 |
EP3274832A4 (en) | 2018-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10521361B2 (en) | Memory write protection for memory corruption detection architectures | |
US10585741B2 (en) | Heap management for memory corruption detection | |
TWI574156B (zh) | 具有獨立的使用者和監管者域的記憶體保護鑰結構 | |
US10579535B2 (en) | Defragmented and efficient micro-operation cache | |
US11055232B2 (en) | Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS | |
US10901899B2 (en) | Reducing conflicts in direct mapped caches | |
TWI587127B (zh) | 使用具有位元組等級粒度緩衝器溢位檢測之記憶體錯誤檢測架構的處理器和系統單晶片 | |
TWI575380B (zh) | 用於虛擬化之細粒度位址重新映射 | |
US10255199B1 (en) | Evicting clean secure pages without encryption | |
US20160299849A1 (en) | Cache allocation with code and data prioritization | |
US10489297B2 (en) | Prefetching time allocation | |
US11093414B2 (en) | Measuring per-node bandwidth within non-uniform memory access (NUMA) systems | |
US10969980B2 (en) | Enforcing unique page table permissions with shared page tables | |
US20190171396A1 (en) | Application driven hardware cache management | |
US20190102324A1 (en) | Cache behavior for secure memory repartitioning systems | |
US10628315B2 (en) | Secure memory repartitioning technologies | |
US20180095894A1 (en) | Supporting oversubscription of guest enclave memory pages | |
EP3716064A1 (en) | Performance management unit aided tier selection in heterogeneous memory | |
US10089244B1 (en) | Hardware for miss handling from a translation protection data structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |