TWI725059B - 用於控制有界指標的使用之設備及方法 - Google Patents
用於控制有界指標的使用之設備及方法 Download PDFInfo
- Publication number
- TWI725059B TWI725059B TW105132004A TW105132004A TWI725059B TW I725059 B TWI725059 B TW I725059B TW 105132004 A TW105132004 A TW 105132004A TW 105132004 A TW105132004 A TW 105132004A TW I725059 B TWI725059 B TW I725059B
- Authority
- TW
- Taiwan
- Prior art keywords
- boundary
- indicator
- source
- copy
- boundary indicator
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000012545 processing Methods 0.000 claims abstract description 53
- 230000006870 function Effects 0.000 claims description 13
- 230000009471 action Effects 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 5
- 238000012937 correction Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 14
- 230000001419 dependent effect Effects 0.000 abstract description 2
- 230000002401 inhibitory effect Effects 0.000 abstract 1
- 230000008569 process Effects 0.000 description 61
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000035772 mutation Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 201000009032 substance abuse Diseases 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
- G06F21/54—Monitoring 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 by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本案提供用於控制邊界指標之使用的設備及方法。該設備具有複數個邊界指標儲存元件,每一邊界指標儲存元件用以儲存一邊界指標及指示該邊界指標的允許使用的相關連許可屬性。根據本技術,相關連許可屬性包括指示是否允許邊界指標進行複製操作的複製許可屬性。隨後,處理電路系統可回應於規定複製操作之至少一個指令,以利用源邊界指標儲存元件之源邊界指標及相關連許可屬性而生成將儲存在目的地邊界指標儲存元件中之目的地邊界指標及相關連許可屬性。此外,處理電路系統根據源邊界指標之複製許可屬性是否指示該源邊界指標將被阻止進行複製操作,而將源邊界指標儲存元件標記為儲存無效邊界指標。此舉提供當在設備上執行軟體時,用於禁止破壞控制流完整性之有效機制。
Description
本技術係關於資料處理領域。
一些資料處理設備可支援有界指標,其中指示特定位址之指標與指示該指標之容許位址範圍的範圍資訊關連。例如,該種指標可被稱作「胖(fat)指標」。
面對軟體之一個問題是控制流完整性(control flow integrity; CFI)。特定而言,可能嘗試經由電腦程式來破壞所欲控制流,例如藉由設法濫用分支至源於暫存器中所保存資料的位址之能力。決定該種位址時可使用先前提及之邊界指標。因此,將需要提供邊界指標,該種邊界指標具有改良針對該種濫用之恢復力的機制。
在一個示例性配置中,提供一種設備,該設備包括:複數個邊界指標儲存元件,每一邊界指標儲存元件儲存邊界指標及指示邊界指標之允許使用的相關連許可屬性,該等相關連許可屬性包括複製許可屬性,此屬性指示邊界指標是否被允許進行複製操作;及處理電路系統,此電路系統可回應於至少一個規定複製操作之指令,以利用源邊界指標儲存元件中之源邊界指標及相關連許可屬性而生成將儲存在目的地邊界指標儲存元件中之目的地邊界指標及相關連許可屬性,且將該源邊界指標儲存元件標記為儲存無效邊界指標,此取決於該源邊界指標的複製許可屬性是否指示該源邊界指標將被阻止進行複製操作。
在另一個示例性配置中,提供一種方法,該方法控制邊界指標在設備內之使用,該設備具有:複數個邊界指標儲存元件,每一邊界指標儲存元件儲存邊界指標及指示邊界指標之允許使用的相關連許可屬性,該方法包括:在該等相關連許可屬性內提供複製許可屬性,此複製許可屬性指示邊界指標是否被允許進行複製操作;及回應於至少一個規定複製操作之指令,以利用源邊界指標儲存元件中之源邊界指標及相關連許可屬性而生成將儲存在目的地邊界指標儲存元件中之目的地邊界指標及相關連許可屬性,且將該源邊界指標儲存元件標記為儲存無效邊界指標,此取決於該源邊界指標的複製許可屬性是否指示該源邊界指標將被阻止進行複製操作。
在又一示例性配置中,提供一種設備,該設備包括:複數個邊界指標儲存元件手段,每一邊界指標儲存元件手段用於儲存邊界指標及指示邊界指標之允許使用的相關連許可屬性,該等相關連許可屬性包括複製許可屬性,此屬性指示邊界指標是否被允許進行複製操作;及處理手段,此處理手段用於回應於至少一個規定複製操作之指令,以利用源邊界指標儲存元件手段中之源邊界指標及相關連許可屬性而生成將儲存在目的地邊界指標儲存元件手段中之目的地邊界指標及相關連許可屬性,且用於將該源邊界指標儲存元件手段標記為儲存無效邊界指標,此取決於該源邊界指標的複製許可屬性是否指示該源邊界指標將被阻止進行複製操作。
在參考附圖論述實施例之前,本案提供以下實施例描述。
一些處理設備可支援邊界指標之使用。指標自身可指向,或用以決定,例如待存取資料值或待執行指令的位址。然而,指標亦可具有相關連範圍資訊,此資訊指示使用指標時位址之容許範圍。此可用於以下實例:確保利用指標決定之位址保持在某些邊界內,以維持行為安全性或功能正確性。例如,對基於能力之架構的興趣正日益提高,在該等架構中,某些能力經定義以用於給定流程,且如若存在執行超出定義能力之操作的嘗試便可能觸發錯誤。邊界指標之範圍資訊可屬於針對該種架構定義的能力資訊中之部分,及在基於能力之架構內,該種邊界指標(包括其關連能力資訊)可被稱作能力。或者,可存在一些非基於能力之架構,該等架構允許定義邊界指標。
由此,設備可具有用以儲存指標之邊界指標儲存元件,該指標具有指示在使用該指標時位址之容許範圍的相關連範圍資訊。每一邊界指標儲存元件可為暫存器,或通用記憶體中之記憶體位置,例如堆疊記憶體中之位置。
某些指令可用以引用該種邊界指標儲存元件,以便獲取指標,該指標隨後用以在記憶體中得出在指令操作期間所需的位址。指標可用以直接辨識記憶體位址,或可用以得出記憶體位址,例如藉由向指標值添加偏移而得出。
當慮及前文提及之CFI問題時,邊界指標之某些特性(如上文提及的基於能力之架構中使用之特性)可將CFI問題減輕到一程度。例如,在利用儲存在邊界指標儲存元件中之指標得出目標位址時,相關連範圍資訊可限制被分支指令視為目標之位址的範圍。在基於能力之架構中,亦已知提供防止一般資料被用作能力以得出分支目標位址的機制,此外,在該等基於能力之架構中,可維持某些能力之位置可能受限制。然而,在該等限制內,惡意流程仍有可能以一方式操縱邊界指標,此方式使得可經由被破壞之電腦程式而產生所欲控制流,例如藉由使控制能夠被轉移至意外程式位址。
因此,本文所述之技術意欲進一步改良針對該種潛在濫用的恢復力,以便減少CFI。
本發明者發現,可採用一種方法以設法破壞CFI,而複製邊界指標,以便允許邊界指標隨後再次使用。例如,此舉可產生CFI問題,其中該邊界指標能夠用以計算目標位址,如轉回位址。
邊界指標可具有相關連許可屬性,以指示邊界指標的允許使用。例如,許可屬性可辨識邊界指標允許被引用用於哪種類型之操作,且因此辨識例如該指標是否可用以辨識待載入或待儲存之資料,辨識待擷取之指令,等等。根據本文所述之技術,該等許可屬性藉由添加複製許可屬性而得以補充,該複製許可屬性之值可用以指示關連的邊界指標是否被允許進行複製操作。隨後,當處理電路系統正在處理該種複製操作時,可引用複製許可屬性,且可依據複製許可屬性之值而採取步驟以防止產生邊界指標之副本。
更特定而言,在一個實施例中,處理電路系統可回應於規定複製操作之至少一個指令,以利用源邊界指標儲存元件之源邊界指標及相關連許可屬性而生成將儲存在目的地邊界指標儲存元件中之目的地邊界指標及相關連許可屬性。如若源邊界指標儲存元件之內容由於該流程而保持可存取,則將理解,現已產生原始源邊界指標之副本。然而,依據一個實施例,處理電路系統經進一步排列,以根據源邊界指標之複製許可屬性是否指示該源邊界指標將被阻止進行複製操作,而將源邊界指標儲存元件標記為儲存無效邊界指標。
因此,將理解,複製操作的預設行為可根據複製許可屬性值而經修正,以便在實際上選擇性地將複製流程轉換為移動流程,在該流程中,源邊界指標作為該流程之部分而無效化。
藉由提供與某些邊界指標關連的複製許可屬性,可將上述功能限制於特定的所需邊界指標。因此,在一實施例中,上文提及之針對複製的限制可限制於某些邊界指標,例如被視作以設法破壞CFI為目的之潛在濫用目標的邊界指標,如用以生成目標位址之彼等邊界指標。已發現,該種方法可顯著降低惡意流程破壞CFI之能力。
有數個方式可將源邊界指標儲存元件標記為無效。在一個實施例中,每一邊界指標儲存元件具有與其關連之有效性欄位以指示該邊界指標儲存元件是否儲存有效的邊界指標,且處理電路系統經配置以藉由更新與源邊界指標儲存元件關連之有效性欄位以辨識該源邊界指標為無效,以此將源邊界指標儲存元件標記為儲存無效邊界指標。
在一個實施例中,現有欄位可用以實施有效性欄位的功能。特定而言,已知,例如在某些基於能力之架構中,提供與每一邊界指標儲存元件關連之標籤欄位以辨識該儲存元件中儲存之內容的資料類型。資料類型可由此用以辨識該儲存元件實際上是否儲存邊界指標(亦即能力),或反之是否儲存某種其他類型之內容,例如無法用作能力之一般資料。由此,當使用該種標籤欄位作為有效性欄位時,標籤欄位可設定為第一值以辨識該邊界指標儲存元件之內容形成邊界指標及相關連許可屬性,且標籤值可設定為不同於第一值的一值,以辨識該等內容應被視作不同於邊界指標及相關連許可屬性的資料。
由此,在複製許可屬性指示源邊界指標應被阻止進行複製操作之情況下,當源邊界指標儲存元件用於前文提及之複製操作時,可藉由將標籤值有效地設定為一值且該值指示該內容並非邊界指標及相關連許可屬性,而將源邊界指標儲存元件標記為無效。此阻止源邊界指標儲存元件之內容以後被用作邊界指標(亦即能力),由此確保僅保留邊界指標之單個副本(亦即目的地邊界指標儲存元件中之副本)。
有數個方式可將複製許可屬性值納入考慮,以便決定在複製操作實施期間是否使源邊界指標儲存元件無效化。在一個實施例中,在源邊界指標的複製許可屬性指示該源邊界指標應被阻止進行複製操作之情況下,源邊界指標儲存元件在複製操作實施期間將始終被標記為儲存無效邊界指標。
在眾多實施方式中,記憶體可被劃分以便形成可在多個程式執行緒之間共享的全局記憶體(例如堆(heap)),及為單個程式執行緒之使用而設的區域記憶體,例如堆疊內之堆疊框架。與邊界指標關連之許可屬性亦可用以辨識邊界指標是具有全局效應,還是與特定程式執行緒關連之區域邊界指標。
在上述示例性使用情況中,源邊界指標儲存元件可標記為無效,無論其儲存全局邊界指標還是區域邊界指標。當邊界指標是全局邊界指標時,可能必須使用某些原子數控制程序以確保源邊界指標儲存元件作為原子運算而被無效化。例如,在源邊界指標儲存元件是記憶體位置及儲存標記為全局(及由此與多個程式執行緒共享)的邊界指標時,可能必須格外注意原子數。將理解,有數個已知技術,該等技術可用以確保原子運算,且任何該種技術皆可用於此情況。
然而,以原子方式處理某些無效運算之需要為該流程增添某些複雜性。在一替代實施例中,在複製許可屬性指示源邊界指標將被阻止進行複製操作之情況下,當源邊界指標儲存元件用於複製操作中時,並非始終將源邊界指標儲存元件標記為無效,而是依據邊界指標是否在多個執行緒之間共享而評定功能。特定而言,在一個實施例中,相關連許可屬性包括指示邊界指標是否在多個執行緒之間共享的共享屬性,且在執行規定複製操作之該至少一個指令時,在源邊界指標的複製許可屬性指示該源邊界指標將被阻止進行複製操作而共享屬性指示該邊界指標並非在多個執行緒之間共享的情況下,處理電路系統經配置以將源邊界指標儲存元件標記為儲存無效邊界指標。由此,在本實施例中,僅在邊界指標亦被指示為未在多個執行緒之間共享的情況下發生無效化,亦即,該邊界指標是區域邊界指標,在本案中亦被稱作區域能力。藉由該種方法,可避免任何潛在的原子數問題。此外,儘管可能存在有完全合法的理由複製某些全局邊界指標的情況,但對於區域邊界指標而言並非如此,因此,複製區域邊界指標的嘗試更多地可能指示潛在的CFI攻擊。因此,從實際觀點可見,將上述操作限制於共享屬性指示邊界指標並非在多個執行緒之間共享的情況仍可提供針對CFI攻擊的顯著保護。
複製操作可採用多種形式,但在一個實施例中,此使得目的地邊界指標及相關連許可屬性成為源邊界指標及相關連許可屬性之複製品,亦即在複製流程期間未進行修正。
儘管如此,在一替代實施例中,複製操作可使得目的地邊界指標及相關連許可屬性中之至少一者成為源邊界指標及相關連許可屬性之修正版本。
在一個實施例中,源邊界指標可包括指標值及相關連範圍資訊,且在複製操作期間,可禁止指標值自身的修正。然而,複製操作可允許對範圍資訊進行某些調整,在一個實施例中,在複製操作期間,邊界指標邊界禁止延伸,亦即範圍只能縮小,而不得延伸。同樣,如若在複製操作期間,發生相關連許可屬性的修正,則複製操作可禁止任何設法增加邊界指標之允許使用的修正。由此,通常將出現此種情況:複製操作期間發生的任何該種修正將使得邊界指標之使用相對於與源邊界指標關連之使用而進一步受限。
如先前提及,可針對前文提及之複製許可屬性以關連方式用於哪些類型的邊界指標而進行選擇。在一個實施例中,複製許可屬性之使用可與用以決定功能指標的源邊界指標相關連,例如諸如分支操作所分支至的目標位址,或返回以遵循分支操作的轉回位址。
邊界指標儲存元件可採用暫存器及/或記憶體位置之形式。在一個實施例中,源邊界指標儲存元件及目的地邊界指標儲存元件中之至少一者是邊界指標暫存器。在一些情況下,源邊界指標儲存元件及目的地邊界指標儲存元件皆可由暫存器形成,但在一替代實施例中,源邊界指標儲存元件及目的地邊界指標儲存元件中之至少一者可為記憶體位置。實際上,如若架構允許,則源邊界指標儲存元件及目的地邊界指標儲存元件皆有可能為記憶體位置。
儘管在一個實施例中,規定複製操作且使得處理電路系統對源邊界指標儲存元件進行選擇性無效化(如前文所論述)的指令可為標準的已有指令。例如,在基於能力之架構中,規定能力儲存元件者可能是所謂的能力指令。然而,在一替代性實施例中,可生成該種指令之「無複製」變體,且上述功能可限定於執行「無複製」變體的情況。例如,在一個實施例中,至少一個使得處理電路系統以前文論述之方式選擇性地使源邊界指標儲存元件無效化的指令是第一指令,該第一指令是第二指令的「無複製」變體。在該種實施例中,在源邊界指標的複製許可屬性指示源邊界指標將被阻止進行複製操作的情形中,處理電路系統可回應於第二指令的執行而實施預定動作,以阻止產生源邊界指標之副本。由此,第二指令之執行仍可經配置以確保不發生複製,但所採取之動作可不同於執行第一指令(亦即無複製變體)時所實施之動作。
預定動作可採用多種形式。例如,在一個實施例中,預定動作可涉及中止第二指令的執行。
在一替代實施例中,預定動作可包括藉由使用與前文論述之用於使源邊界指標儲存元件無效化的機制類似的機制,將目的地邊界指標儲存元件標記為儲存無效邊界指標。將理解,如若目的地邊界指標儲存元件被標記為無效,則此舉基本導致複製操作被視為未發生。由此,此仍然是用於確保不生成副本之有效機制。
規定複製操作且使得處理電路系統藉由使用前文論述機制而選擇性地使源邊界指標儲存元件無效化之指令的類型可採用多種形式。例如,此類型可採用載入指令之形式,該載入指令用以從記憶體將邊界指標載入暫存器,或採用儲存指令之形式,該指令用於從暫存器將邊界指標儲存回記憶體。在另一實例中,此類型可採用移動指令之形式,該移動指令使邊界指標從源暫存器移至目的地暫存器。應注意,儘管該指令被稱作移動指令,但通常情況是移動指令自身不從源暫存器移除資料,且由此在本技術之上述功能不存在的情況下有效地生成副本。
在又一實例中,指令可包括分支指令,其中源邊界指標用以生成用於儲存之目標位址,以作為程式計數器邊界指標儲存元件內之新程式計數器值。又,在上述本技術不存在之情況下,程式計數器邊界指標儲存元件將更新,但原始的源邊界指標將仍位於源邊界指標儲存元件內,並因此產生了副本。然而,經由使用前文描述之技術,可確保僅保留一個副本,即在分支指令執行之後儲存在程式計數器邊界指標儲存元件中之副本。
在一個實施例中,分支指令是含鏈路分支指令,在含鏈路分支指令的執行期間,處理電路系統經配置以在鏈路暫存器邊界指標儲存元件內儲存程式計數器邊界指標儲存元件的當前內容,以辨識轉回位址邊界指標,及在鏈路暫存器邊界指標儲存元件內設定複製許可屬性,以指示轉回位址邊界指標將被阻止進行複製操作。由此,無論與程式計數器邊界指標儲存元件之當前內容關連之任何複製許可屬性的值為何(或甚至在該種複製許可屬性並未與程式計數器邊界指標儲存元件關連使用之情況下),皆可確保當用轉回位址邊界指標填充鏈路暫存器邊界指標儲存元件時,複製許可屬性經設定以指示轉回位址邊界指標將被阻止進行複製操作。此例如藉由設法將鏈路暫存器的當前內容複製至不同暫存器或記憶體確保無法複製轉回位址。
邊界指標儲存元件可以多種方式構成。例如,儘管邊界指標及相關連許可屬性可在單個實體儲存元件內儲存為相連資訊區塊,但在一替代實施例中,邊界指標儲存元件可包括第一子元件以儲存邊界指標且包括第二子元件以儲存相關連許可屬性。此外,慮及邊界指標自身,邊界指標及相關連範圍資訊無需實體儲存在同一位置,因此,範圍資訊可單獨儲存至指標值自身。
現將藉由參考圖式來描述特定實施例。
第1圖示意地圖示資料處理設備2之實例,該資料處理設備包括處理管線4以用於處理指令。在此實例中,處理管線4包括數個管線級,該等管線級包括擷取級6、解碼級8、發出級10、執行級12及寫回級14,但將理解,可提供其他類型或組合的級。例如,一些實施例中可包括用於執行暫存器更名之更名級。待處理指令從一級移至另一級,且在一指令在一個級擱置時,另一指令可在管線4中之一不同級擱置。
擷取級6從1階(L1)指令快取記憶體20中擷取指令。擷取級6通常可依序從連續的指令位址擷取指令。然而,擷取級亦可具有分支預測器22以用於預測分支指令結果,且如若預測採用一分支,則擷取級6可從(非順序)分支目標位址擷取指令,或如若預測不採用該分支,則可從下一順序位址擷取指令。分支預測器22可包括一或更多個分支歷史表以用於儲存資訊,該資訊用於預測某些分支是否可能被採用。例如,分支歷史表可包括計數器以用於追蹤先前執行的分支的實際結果,或用於表示對分支進行之預測的置信度。分支預測器22亦可包括分支目標位址快取記憶體(branch target address cache; BTAC) 24,以用於快取分支指令之先前目標位址,以便在隨後遇到相同分支指令時可預測該等位址。
所擷取之指令被傳遞至解碼級8,此級解碼指令以生成解碼指令。解碼指令可包括控制資訊,以用於控制執行級12執行適當的處理操作。對於從快取記憶體20擷取的更複雜之指令,解碼級8可將彼等指令映射至多個解碼指令,該等映射可被稱為微操作(μops或uops)。由此,從L1指令快取記憶體20擷取的指令與如管線中隨後級可見的指令之間可能沒有一對一關係。一般而言,本申請案中對「指令」之引用應理解為包括微操作。
解碼指令被傳遞至發出級10,該級決定執行指令所需之運算元是否可用,且在運算元可用時發出用於執行之指令。一些實施例可支援依序處理,以便指令按一次序被發出以用於執行,該次序對應於從L1指令快取記憶體20擷取指令之程式次序。其他實施例可支援無序執行,以便指令可以不同於程式次序之一次序被發出至執行級12。無序處理可用於改良效能,因為當等候運算元時停頓較早指令,可首先執行程式次序中其運算元可用之隨後指令。
發出級10將指令發出至執行級12,在該級處,指令經執行以實施各種資料處理操作。例如,執行級可包括數個執行單元30、32、34,包括用於實施對整數值之算術或邏輯運算的算法/邏輯單元(arithmetic/logic unit; ALU) 30、用於實施以浮點形式表示之值的操作的浮點(floating-point; FP)單元32及用於實施載入操作或儲存操作之載入/儲存單元34,該等載入操作用於將資料值從1階(L1)資料快取記憶體36載入至暫存器40,該等儲存操作用於將資料值從暫存器40儲存至L1資料快取記憶體36。將理解,該等僅為可能提供之執行單元種類的一些實例,且亦可提供眾多其他種類。為實施處理操作,執行級12可從一組暫存器40讀取資料值。隨後,執行指令之結果可藉由寫回級14而寫回暫存器40。
L1指令快取記憶體20及L1資料快取記憶體36可為快取記憶體階層之部分,該階層包括多階快取記憶體。例如,亦可提供2階(L2)快取記憶體44,且能夠視需要提供其他階快取記憶體。在此實例中,L1指令快取記憶體20與L1資料快取記憶體36之間共享L2快取記憶體44,但其他實例則可具有單獨的L2指令及資料快取記憶體。當待擷取指令並非在L1指令快取記憶體20中時,可從L2快取記憶體44中擷取指令,且同樣地,如若指令並非在L2快取記憶體44中,則可從主記憶體50中擷取指令。同樣地,回應於載入指令,如若資料不在L1資料快取記憶體36中,可從L2快取記憶體44中擷取資料,且若需要可從記憶體50擷取資料。任何已知方案可用於管理快取記憶體階層。
由管線4用於引用程式指令及資料值之位址可為虛擬位址,但至少主記憶體50及視需要至少一些階之快取記憶體階層亦可經實體定址。因此,轉換旁看緩衝器(translation lookaside buffer; TLB) 52可經提供用於將管線4所用之虛擬位址轉換至用於存取快取記憶體或記憶體之實體位址。例如,TLB 52可包括數個條目,每一條目規定虛擬位址空間之一對應頁之虛擬頁位址及一對應實體頁位址,虛擬頁位址應映射至該實體頁位址,以便將對應頁內的虛擬位址轉換至實體位址。例如,虛擬及實體頁位址可對應於對應虛擬及實體位址中之最高有效部分,當映射虛擬位址至實體位址時,剩餘最低有效的部分保持不變。除了位址轉換資訊之外,每一TLB條目亦可包括一些資訊,該資訊規定存取許可,如指示在管線4之某些模式下是否可存取位址之某些頁。在一些實施例中,TLB條目亦可定義位址對應頁之其他性質,如定義哪些階之快取記憶體階層回應於讀取或寫入操作而更新(例如快取記憶體是否應在寫回或直寫模式下操作)的快取記憶體策略資訊,或定義在對應頁中對位址的資料存取是否可由記憶體系統重新定序(與管線4所發出的資料存取次序相比較)之資訊。
儘管第1圖圖示單個階TLB 52,但將理解,可提供TLB階層以便1階(L1) TLB 52可包括TLB條目以用於轉換數個最近存取頁中之位址,且可提供2階 (L2) TLB以用於儲存數目更大頁之條目。當L1 TLB中不存在所需條目時,可從L2 TLB中擷取條目,或從該階層中其他TLB擷取。如若待存取頁之所需條目不在任何TLB中,則可執行頁表查詢以在記憶體50中存取頁表。任何已知TLB管理方案可用於本技術。
此外,將理解,一些系統可支援多階位址轉換,以便例如第一TLB(或TLB階層)可用以將虛擬位址轉換至中間位址,且藉由使用一或更多個其他TLB之第二位址轉換級別可隨後將中間位址轉換至用以存取快取記憶體或記憶體的實體位址。此可用於在例如第一階位址轉換可由作業系統管理及第二階位址轉換可由超管理器管理之情況下支援虛擬化。
如第1圖所示,設備2可具有一組邊界指標暫存器60。儘管該組邊界指標暫存器在第1圖中圖示為實體獨立於該組通用資料暫存器40,但在一個實施例中,同一實體儲存器可用以提供通用資料暫存器及邊界指標暫存器。
每一邊界指標暫存器60包括可用以決定待存取資料值位址之指標值62,及在使用對應指標62時規定位址之容許範圍之範圍資訊64。邊界指標暫存器60亦可包括限制資訊66(本案中亦被稱作許可資訊),此資訊可定義針對指標使用的一或更多個限制/許可。例如,限制66可用以限制可使用指標62之指令的種類,或可使用指標之管線4模式。因此,範圍資訊64及限制資訊66可被視作定義其中允許使用指標62之能力。當嘗試使用超出定義能力之指標62時,可觸發錯誤。範圍資訊64例如可用於確保指標保持在某些已知邊界內且不雜散至記憶體位址空間的其他區域,該等區域可能含有敏感或安全資訊。在一實施例中,當同一實體儲存器同時用於通用資料暫存器及邊界指標暫存器時,則在一個實施例中,指標值62可例如儲存在用於對應通用暫存器的同一儲存位置內。
第2圖圖示指令類型之實例,該等指令之容許範圍用以防止對資料或指令的未授權存取。如第2圖上半圖所示,特定邊界指標暫存器PR1包括給定指標值62及範圍資訊64,在此實例中,該邊界指標暫存器PR1藉由使用下邊界位址68與上邊界位址69而規定,該下邊界位址68定義容許範圍之下邊界,而該上邊界位址69定義容許範圍之上邊界。例如,邊界68、69經設定以定義80000至81000之位址範圍。當某些指令引用邊界指標暫存器PR1及根據指標62決定的位址超出此範圍時可觸發錯誤。
例如,如第2圖之部分A所示,在一些系統中,如若存在將指標暫存器60中之指標62值設定為超出範圍資訊64規定範圍的嘗試,則可觸發錯誤(在此假定指標直接規定一位址)。此避免指標62取用超出規定範圍的任何值,使得可確保任何藉由使用該指標的存取安全地位於允許範圍內。或者,如第2圖之部分B所示,當一指令嘗試存取由指標62之位址辨識的位置時,如若該位址在規定範圍之外,則可觸發錯誤。因此,仍可容許將指標62設定為超出規定範圍之一值,但一旦在指標位址處(或源自於指標的位址)嘗試資料存取,如若該位址超出允許範圍,則可觸發錯誤。其他系統可回應於第2圖中部分A及部分B所示兩種指令而觸發錯誤。
範圍資訊64可以不同方式設定。例如安全碼,或作業系統或超管理器,可規定給定指標的允許範圍。例如,指令設定架構可包括數個指令以用於設定或修正給定指標62的範圍資訊64,且該等指令之執行可能限制於某些軟體或處理器4之某些模式或異常狀態。可使用用於設定或修正範圍資訊64的任何已知技術。
除當執行引用指標的某些指令時可在執行級12使用的此組邊界指標儲存元件60之外,當正在從1階指令快取記憶體20擷取指令時,程式計數器能力(program counter capability; PCC)暫存器80亦可用以在擷取級6提供類似功能。特定而言,程式計數器指標可儲存在欄位82中,PCC 80亦提供範圍資訊84及任何適當的限制資訊86,類似於此組邊界指標儲存元件60中每一指標配有的範圍及限制資訊。
第3圖示意地圖示標籤位元如何與個別資料區塊關連使用以辨識彼等資料區塊表示能力(亦即邊界指標及相關連限制資訊)還是表示正常資料。特定而言,記憶體位址空間110將儲存一系列資料區塊115,該等資料區塊典型地將具有規定大小。僅以說明為目的,假定在此實例中每一資料區塊包含128個位元。與每一資料區塊115相關連,提供標籤欄位120,該標籤欄位在一個實例中是被稱作標籤位元之單個位元欄位,該欄位經設定以辨識相關連資料區塊表示一能力,且被清除以指示相關連資料區塊表示正常資料,由此不能被視作一能力。將理解,與設定或清除狀態相關連之實際值可取決於實施例而變化,但僅以說明方式,在一個實施例中,如若標籤位元具有值1,則指示相關連資料區塊是一能力,且如若該標籤位元具有值0,則指示相關連資料區塊含有正常資料。
當一能力載入邊界指標暫存器60中之一者(在本案中亦被稱作能力暫存器)時,如第3圖中所示能力暫存器100,隨後標籤位元利用能力資訊而移動。因此,當能力載入能力暫存器100時,指標102、範圍資訊104及限制資訊106(下文被稱作許可資訊)將被載入能力暫存器。另外,與該能力暫存器相關連,或作為暫存器內的特定位元欄位,標籤位元108將被設定以辨識該等內容表示一能力。同樣地,當一能力儲存回至記憶體時,有關標籤位元120將經設定以關連其中儲存有能力之資料區塊。以此方法,有可能區分能力與正常資料,由此確保正常資料不能用作能力。
第4圖是表130,該表顯示各種許可,該等許可可規定位於能力之許可欄位106內。行135列出各種許可,而行140則辨識每一許可之含義。在第4圖中可見,各種許可可經設定以辨識能力中規定的指標是否可用以辨識一位址,通用資料或能力將從該位址被載入或被儲存至該位址中。執行許可亦可用以辨識能力中規定之指標是否可用以辨識一位址,指令將從該位址被擷取。另外,全局許可可用以指示能力是否具有全局範圍,或反之是否被視作僅與程式執行緒相關連之區域能力,該能力被分配至該程式執行緒。另外,在一個實施例中,提供「儲存區域」許可以辨識能力中規定之指標值是否可用以辨識非全局能力之儲存位址。如若經設定,則全局與區域能力皆可藉由使用該指標而儲存,然而如若被清除,則僅可藉由使用該指標儲存全局能力。
此外,對於下文描述實施例而言,提供額外許可(本案中被稱為「可複製」許可)以辨識該能力是否可進行複製操作。複製操作可採取多種形式,且在一個實施例中不僅包括產生能力之絕對複製品的操作,而亦包括導致待產生之能力之變異版本的操作。在一個實施例中,能力複製將受限,以使得範圍及許可皆不由於複製流程而擴大。此外,若是有設定可複製欄位,則這指示出可複製該能力,而若是未設定可複製欄位,則這指示出不能複製該能力。
「可複製」許可是本案中提及之「複製許可屬性」之一實例。將理解,許可可以不同方式表示,前提是該許可能夠在允許複製與不允許複製的能力之間進行區分。例如,可改為提供「不可複製」許可作為複製許可屬性之一實例,該許可在設定時將指示該能力不得複製,且在該許可被清除時將指示該能力可被複製。
如前文提及,一旦程式執行緒已經分配一能力,則在允許修正該能力(及特定而言該能力中規定之許可)之程度上,在一個實施例中僅限允許例如藉由清除有關許可位元而減少許可,但不允許擴大許可。因此,如若程式執行緒已經分配有已設定資料載入許可,但未設定指令執行許可之能力,則執行緒有可能清除載入許可,但執行緒將無法設定執行許可。
設備可用的記憶體位址空間可被視作劃分為區域記憶體150及全局記憶體160,如第5圖中示意地圖示。區域記憶體150可包括一或更多個堆疊,該等堆疊中之堆疊框架可分配至個別程式執行緒,以允許彼等程式執行緒儲存區域資料(亦即特定於該執行緒之資料)。全局記憶體160可例如包括一堆,且提供一區域,該區域可儲存多個程式執行緒之間共享之資料。
第6圖是流程圖,該圖圖示在不受信任實體以一方式複製一能力,該方式允許保留該副本以由該不受信任實體隨後處理時,控制流完整性(Control Flow Integrity; CFI)問題可如何發生。特定而言,假定受信任實體1 200執行流程A 210,在該執行期間,執行分支指令,此舉使得指令流分支至不受信任實體2 205之流程B 215內之目標位址,如分支路徑212所指示。假定由流程A 210執行之分支指令是含鏈路分支指令,且因此在執行分支時,利用當前程式計數器值生成轉回位址,該轉回位址儲存在流程B 215可用之能力鏈路暫存器內。在適時情況下,一旦流程B已完成,則將從能力鏈路暫存器存取轉回位址,且處理將從路徑217上返回流程A 210。
上文列出正常、預期行為,此後受信任實體200內之處理繼續進行,且如第6圖所示,在與「意欲流」部分相關連,隨後將執行流程C 220,且將發生在路徑222、227上之類似分支及返回活動,以便在不受信任實體205上調用流程D 225。
由於在不受信任實體205上操作之流程僅意欲使用轉回位址以將處理返回至受信任實體,預計無需在不受信任實體上執行流程以只得在其正常處理期間複製轉回位址。然而,例如如若流程B 215包括將能力鏈路暫存器內容儲存至記憶體位置之步驟,則該副本有可能以一方式保存,該方式允許該副本被流程D存取。此舉在第6圖之剩餘部分中以具體實例之方式示意地圖示。
特定而言,假定區域記憶體150包括堆疊230,且在流程A 210及流程B 215之執行期間,流程A及流程B皆在堆疊230上分配有相關連堆疊框架235、240。通常,堆疊框架從堆疊頂部分配,且當個別流程完成時,堆疊上之資料被無效化,從而釋放堆疊上將分配至隨後之流程之空間。
假定在此實例中,流程B 215在某點將其能力鏈路暫存器之內容儲存至其堆疊框架240,從而使轉回位址245被置於堆疊框架上。轉回位址在堆疊框架上之此初始儲存可為流程B中某破壞活動(或事實上可合法完成之破壞活動)之直接結果,例如由於導致能力鏈路暫存器的內容需要暫時儲存在堆疊框架240上之異常鏈鎖。
如若轉回位址資訊僅保存在堆疊框架邊界內,則將最終在適當時彈出離開堆疊,例如在資訊需要載入回能力鏈路暫存器中時。此外,如若資料在流程B完成時仍保存在堆疊框架上,則該資料通常將在堆疊框架去分配時無效化。
然而,如若流程B將轉回位址資訊245複製至朝向堆疊230底部的位置250,則轉回位址資訊可能將繼續存留達一顯著時段。例如,往往發生以下情況:不使用堆疊230整體,且因此朝向堆疊底部之位址不會被定期無效化及重寫。
此可發生對所欲程式流之潛在破壞,如第6圖之左下角所示。特定而言,儘管流程為流程A 210及流程B 215預期之流程,且執行繼續進行至流程C 220,從而在路徑222上之分支到達流程D 225,但流程D可能夠避免返回執行至受信任實體200內的預期位置,因為已在流程B中存取儲存在位置250中朝向堆疊230底部之轉回位址。特定而言,如若該轉回位址資訊複製為由流程D使用之能力鏈路暫存器,則流程D可在路徑260上返回至流程A,因此違反CFI。
第6圖僅圖示複製能力(capability)的能力(ability)可如何導致違反CFI的一個極具體實例,且將理解,有眾多其他示例性情境,在該等情境中,特定能力副本之產生可允許不受信任實體改變控制流。
在一個實施例中,如下文將更詳細地論述,諸如第4圖中圖示的可複製屬性的新複製許可屬性用以藉由在某些環境中阻止能力副本之生成而禁止該等活動。
第7圖圖示該種方法可如何與儲存能力指令關連使用,儲存能力指令是規定將從能力暫存器儲存至記憶體的能力之指令。特定而言,將假定,在此實例中,儲存能力指令規定整數n及t,該等整數用以辨識兩個能力暫存器,如將參考第7圖中方框305而更詳細地論述。
特定而言,一旦在步驟300決定當前指令是儲存能力指令,則在步驟305用儲存在能力暫存器C[t]中之能力的內容填充變數ct,能力暫存器C[t]亦即由整數t辨識之能力暫存器。將儲存至記憶體的是此能力的內容。此外,用儲存在能力寄存器C[n]中之能力填充變數cn,該能力提供指標,該指標用以計算將儲存至之記憶體的位址。
隨後,步驟310圖示在一個實施例中可執行的標準查核,但該查核是可選的,因此在另一個實施例中可省略。特定而言,將查核:ct是否清除全局許可(亦即辨識為區域能力)及cn是否清除儲存區域許可(亦即不能用以儲存區域能力)。如若該等條件皆為真,則流程前進至步驟315,在該步驟中生成錯誤。特定而言,在彼等條件下,源於cn中指標的記憶體位址不能用以儲存ct,因為ct被辨識為區域能力。
然而,假定步驟310中辨識之條件都未滿足,則儲存可由此繼續進行,流程繼續進行至步驟320(或在不執行可選步驟310的情況下直接從步驟305進行至步驟320,因為例如如若不使用「儲存區域」許可則可出現此情況)。
在步驟320中,變數ct辨識之能力藉由使用變數cn內含有的指標而儲存至記憶體,以辨識將要儲存至其中之記憶體位址。
在步驟325中,決定變數ct是否清除可複製許可,亦即辨識不能複製ct。在一個實施例中,此為步驟325中唯一執行的查核,且如若可複製許可未清除,則流程僅在步驟340結束。然而,如若可複製許可清除,則形成變數ct之部分的標籤位元更新以將該標籤位元標記為假,亦即標籤位元已清除。隨後,在步驟335中,在步驟330中更新的變數ct寫回至能力暫存器C[t]內。由於變數ct中之標籤位元已清除,將理解,此意謂著源能力暫存器C[t]得以有效地無效化,因為藉由清除標籤位元,此指示該等內容不能用作能力。因此,此時能力的唯一有效副本是已儲存至記憶體的一者。隨後流程在步驟340結束。
在一個實施例中,當在步驟325中評定可複製許可之狀態時,全局許可亦被評價以便決定能力是否標記為具有全局範疇,或是否為一區域能力。在一個實施例中,只有當ct清除可複製許可並指示能力是區域能力時,流程才將繼續進行至步驟330,而在所有其他情況下,將不遵循任何到達步驟340之路徑。因此,在可複製許可指示禁止複製之情況中,源能力之選擇性無效化僅限能力被標記為區域能力之情況。實際上,已發現,儘管有某些合法原因使全局能力被複製,但複製區域能力的合法利益則將不太可能存在,且實際上諸如用以辨識目標位址(如轉回位址)的彼等區域能力之某些區域能力通常不應需要被複製。因此,複製該種能力之任何該種嘗試可指示破壞CFI之嘗試。
此外,如下文例如針對載入能力指令參考第8圖而將論述,如若功能不僅應用於區域能力而亦應用於全局能力,則可能發生某些原子數問題,在此情況下,更新操作之序列需要以原子方式執行,以便確保正確操作。原子數在第7圖之實例中不是問題,因為針對源能力執行的讀取-修正-寫入功能(如步驟305、330,及335所實施)是針對當前程式執行緒所使用的能力暫存器執行的。
第8圖是一流程圖,該圖圖示依據一個實施例如何處理載入能力指令。在步驟400中,決定當前指令是否是載入能力指令,且如若是載入能力指令,則流程繼續進行至步驟405。與第7圖中論述的儲存能力指令一樣,假定載入能力指令規定整數n及t。在步驟405中,初始化變數ct,例如藉由設定至零值而初始化。此變數將在適當時用以保存載入能力暫存器中之能力。此外,用儲存在能力寄存器C[n]中之能力內容填充變數cn,儲存在該能力中之該指標用以計算將從其中向外載入的位址。
在步驟410中,能力隨後從計算得出的位址載入記憶體,且用以更新變數ct,以便變數ct因此含有載入的能力。
在步驟415中,決定ct是否清除可複製許可,從而指示不能複製。與第7圖之步驟325一樣,可額外視需要評定ct是否清除全局許可,以便在可複製許可清除的情況下,如若額外地全局許可被清除,則僅遵循「是」路徑。
假定遵循「是」路徑,則在步驟420中,又一變數「ct_NO_TAG」設定等於ct,以產生變數ct的另一副本。隨後,在步驟425中,變數ct_NO_TAG中之標籤位元被標記為假,此後,在步驟430中,變數ct_NO_TAG在先前在步驟410中用於載入的位址處被寫入記憶體。藉由將記憶體中保存的能力的副本標記為不再是一能力,而有效地使該副本無效化。
在步驟435中,變數ct寫回至能力暫存器C[t]內,此後,流程在步驟440結束。如若自步驟415起遵循「否」路徑,則步驟420至430被繞過,且流程直接繼續進行至步驟435。
將理解,儘管步驟420、425、430提供一個機制以用於更新記憶體中之能力,以便清除標籤欄位,但在替代性實施例中,可使用不同機制。例如,某些實施例可提供更直接的機制以用於清除記憶體中之標籤欄位,無需生成單獨的變數ct_NO_TAG,隨後將該變數寫回記憶體。
如若步驟415受限,以使得在可複製許可清除且全局許可清除之情況下僅遵循「是」路徑,從而辨識該能力是區域能力,則將不會發生與步驟410、420、425及430中實施的讀取-修正-寫入操作相關連的原子數問題。然而,如若每當可複製許可清除時都遵循自步驟415起的「是」路徑,且無論能力是區域還是全局的,則可能需要額外步驟來確保以原子方式發生讀取-修正-寫入操作,以便針對可共享該能力的任何其他執行緒而確保正確操作。將理解,有數個已知機制用於以原子方式處理操作,且彼等方法中任何方法皆可使用以確保針對儲存在記憶體中之能力而執行的讀取-修正-寫入操作之原子數。
第7圖圖示一實例,其中源邊界指標儲存元件是暫存器,且目的地邊界指標儲存元件是記憶體位置,而第8圖圖示一情況,其中源邊界指標儲存元件是記憶體位置,且目的地邊界指標儲存元件是能力暫存器。此外,在該兩個情況下,當能力進行儲存操作或載入操作時,在無能力變異情況下進行直接複製。
第9圖圖示一實例,其中源邊界指標儲存元件及目的地邊界指標儲存元件都是能力暫存器。特定而言,第9圖圖示依據一個實施例是如何處理移動能力指令的。儘管指令被稱作移動指令,但移動指令之預設操作將導致源暫存器內容被轉移至目的地暫存器,且並不採取有效步驟以移除源暫存器的內容。因此,此是實施複製操作之指令的另一實例,在此情況下,上述技術可用以確保在某些情況下可保證執行指令之後將僅剩餘一個副本。
在步驟500中,決定當前指令是否是移動能力指令,且如若是移動能力指令,則流程繼續進行至步驟505。假定在此實例中,移動能力指令規定整數s及d,該等整數可分別指示源及目的地。在步驟505中,利用儲存在能力暫存器C[s]中之能力填充變數cs。此外,變數cd經設定等於cs。
在步驟510中,決定cs是否清除可複製許可。視需要,如先前針對第7圖之步驟325及第8圖之步驟415所論述,亦可決定cs是否清除全局許可,從而指示該能力是區域能力。如若步驟510中規定的條件得到滿足,則流程繼續進行至步驟515,此處cs中之標籤位元被標記為假,此後在步驟520中,變數cs被寫入能力暫存器C[s]。藉由將源能力暫存器內容標記為不再與能力相關,此使得源能力得以無效化。在步驟525中,變數cd被寫入能力暫存器C[d]內,此後,流程在步驟530中結束。如若自步驟510起遵循「否」路徑,則步驟515及520被繞過,且流程直接繼續進行至步驟525。
當處理該種移動指令時,針對源能力執行的讀取-修正-寫入操作(如步驟505、515、520所實施)是原子安全的,因為該等操作針對能力暫存器而執行,該暫存器之使用由當前程式執行緒控制。因此,即使步驟510不包括將源能力無效化限定於將源能力標記為區域能力之情況的可選步驟,亦不會發生原子數問題。
第9圖中圖示的一般流程亦適用於在源及目的地能力暫存器上操作的任何其他種類的能力指令,且該流程規定複製操作形式,該複製操作是否真產生複製品,或在儲存在目的地能力暫存器中之能力是儲存在源能力暫存器中之能力的修正版本時,該複製操作是否包括某變異。因為目的地能力暫存器的內容直接源於源能力暫存器之內容,因此此被視作表示一份副本,且因此,第9圖之流程可用以選擇性地使源能力暫存器無效化。就步驟505而言,將理解,如若指令相對於源能力而執行某种變異,則變數cd將不設定等於cs,而是將對變數cs執行某變異操作,且將所得結果儲存為變數cd。
為充分說明,參考第7圖、第8圖及第9圖所論述的流程亦可以偽碼表示,例如表示如下: //儲存能力指令 StoreCapability(integer n, integer t) Capability ct = C[t]; Capability cn = C[n]; if (ct.local && !cn.store_local) fault // 將能力儲存至記憶體 MemC(cn, ct); // 條件性地清除暫存器標籤 if (ct.local && ct.no_copy) ct.tag = FALSE; C[t] = ct // 載入能力指令 LoadCapability(integer n, integer t) Capability ct; Capability cn = C[n] // 從記憶體載入能力 ct = MemC(cn); // 條件性地清除記憶體標籤 if (ct.local && ct.no_copy) Capability ct_no_tag = ct; ct_no_tag.tag = FALSE; MemC(cn, ct_no_tag); // 針對第一MemC操作自動執行 C[t] = ct // 在暫存器之間移動能力 MoveCapability(integer d, integer s) Capability cs = C[s]; Capability cd = cs; // 條件性地清除源暫存器標籤 if (cs.local && cs.no_copy) cs.tag = FALSE; C[s] = cs; C[d] = cd;
在上述示例性偽碼中,假定全局許可事實上是「區域」許可,該許可經設定以指示該能力是區域能力,而被清除以指示該能力是全局能力。此外,在此情況下,可複製許可屬性事實上是「no_copy」許可屬性,此許可屬性經設定以辨識該複製是被禁止的,且被清除以指示允許該複製。
將理解,上述示例性偽碼僅提供一個具體實例,且如需要上述流程可藉由替代性偽碼表示。例如,在不使用/支援「儲存區域」許可的實施例中,偽碼可因此被修正。作為另一實例,「no_copy」許可可替換為「可複製」許可,且偽碼可相應變更。
在一個實施例中,上述功能可針對規定複製操作的標準能力指令而應用,該種能力指令經配置以對諸如彼等儲存在能力暫存器60中之能力的能力而操作,而非對諸如儲存在暫存器40上之通用資料而操作。然而,在一替代性實施例中,可引入該等能力指令的「no_copy」版本,前述處理是在執行能力指令之no_copy變體時實施的處理。儘管此將導致不同指令的數目增大,但可產生一些效能優勢,因為上述機制僅需在執行指令之no_copy變體時實施,且當執行標準能力指令時,該處理可略得以簡化。
第10圖概略性圖示可如何使用能力指令之兩個變體。在步驟550中,決定有關能力是否標記為不可複製。如若並未標記,則可在步驟555中如常執行複製操作,無論規定複製操作之能力指令是正常能力指令還是no_copy變體。
然而,如若有關能力標記為不可複製(視需要藉由能力是否標記為區域能力而額外地證明資格),隨後自步驟550起遵循「是」路徑,且後續處理須確保不產生副本。如若在步驟560中,決定能力指令之no_copy變體正在執行,則流程繼續進行至步驟565,其中第6圖、第7圖或第8圖之前述流程得以實施,使得源能力上之標籤被清除。因此,藉由實施該等流程,複製操作得以有效地修正,以便實施真移動,源能力不以有效形式保持。
如若在步驟560中執行的能力指令並非no_copy變體,則遵循「否」路徑至步驟570。步驟570中採取的確切步驟可依據實施方式而不同,前提是該等步驟維持由自步驟550起遵循的「是」路徑而產生的「不得複製」要求。例如,在一個實施例中,在此情況之下可能發生異常中止,因為可假定使用標準能力指令執行針對標記為不可複製的能力的複製操作是不正確的。在一替代實施例中,流程可以複製操作之標準步驟繼續進行,但採取額外措施維持不可複製要求。此例如可藉由清除目的地能力上之標籤欄位而實現,此舉將有效地使副本無效化,且將情境恢復至在執行複製操作之前存在的情境。此在處理載入操作時可提供尤其精緻的解決方案,因為在功能並非限定於能力是區域能力之情況的實施例中,此舉免除了對記憶體所需的原子數步驟的需求。特定而言,因為已載入暫存器的副本被無效化,因此無需與保存在記憶體中之副本有關的步驟。
第11圖是一流程圖,該圖圖示依據一個實施例可如何處理分支指令,分支指令亦是一種指令,該指令由於針對程式計數器實施的更新而有效實施複製操作。在步驟600中,決定是否已經接收分支指令,且如若如此,則在步驟605中決定該分支指令是否規定源能力。如若分支指令規定源能力(該源能力的指標將因此用以得出目標位址),隨後將自步驟605起遵循「是」路徑。如若並非如此,則分支指令是直接分支,在此處參考分支指令中直接規定的偏移量而計算目標位址,且因此自步驟605起遵循「否」路徑。
假定遵循「是」路徑,則在步驟610中,藉由使用源能力中保存的指標而計算目標位址,此後,在步驟615中決定源能力是否標記為不可複製。同樣,如前文所論述,此決定亦可限定於源能力被標記為區域能力之情況。例如,可需要保存一些功能指標/轉回位址以用於區域執行緒(區域,且在至少某些情況中為不可複製),且與其他執行緒共享其他指標/轉回位址(全局,且可複製)。
假定自步驟615起遵循「是」路徑,則在步驟620中清除源能力上之標籤,而繞過步驟620。藉由在步驟620中清除源能力上之標籤,此舉確保一旦程式計數器能力暫存器已藉由使用由源能力計算得出之目標位址資訊而更新時,將僅有一個源能力副本。
如若自步驟605起遵循「否」路徑,則藉由使用當前程式計數器及分支指令中規定的立即值來計算目標位址,如步驟625所示。
在步驟630中,決定分支指令是否是含鏈路分支指令。如若不是,則目標位址可僅於步驟640中儲存在程式計數器能力暫存器中,且無需更多步驟。然而,如若分支指令是含鏈路分支指令,則當前PCC內容將用以規定轉回位址,且特定而言,在步驟635中,當前PCC內容將儲存在能力鏈路暫存器(capability link register; CLR)中。能力鏈路暫存器的內容因而規定轉回位址,該轉回位址在適當時用以遵循所分支至的流程實施而返回至原始執行流。在一個實施例中,如步驟635中所指示,此時清除CLR中之可複製許可,從而確保不可複製轉回位址資訊。
在步驟635之後,流程繼續進行至步驟640,此處目標位址儲存在PCC中。
利用上述實施例,將理解,在所有情況下,或在限定於能力標記為區域能力的一個實施例中,使用額外複製許可屬性以將某些能力標記為不可複製允許複製操作的行為得到修正。特定而言,在彼等環境下,複製操作可有效地轉變為真移動操作,在此情況下,可確保在遵循複製操作之實施時,僅有一個能力副本仍存在。此可顯著改良針對違反CFI之企圖的穩健性。
在本申請案中,詞語「經配置以…」用以意謂著一設備之元件具有一配置,該配置能執行所定義的操作。在此上下文中,「配置」意謂著硬體或軟體的互連佈置或方式。例如,設備可具有專用硬體,該硬體提供定義操作,或處理器或其他處理裝置可經程式化以執行該功能。「經配置以」並非暗示設備元件需以任何方式變更以便提供定義之操作。
儘管本發明之說明性實施例已在本案中藉由參考附圖進行詳細描述,但將理解,本發明並非限定於彼等精確實施例,而熟習該項技術者在不背離本發明範疇及精神之情況下可在彼等實施例中實現多種變更、增添及修改,如所附之申請專利範圍所定義。例如,可在不背離本發明之範疇的前提下,可將從屬請求項之特徵與獨立請求項之特徵進行多種組合。
2‧‧‧資料處理設備
4‧‧‧處理管線
6‧‧‧擷取級
8‧‧‧解碼級
10‧‧‧發出級
12‧‧‧執行級
14‧‧‧寫回級
20‧‧‧L1指令快取記憶體
22‧‧‧分支預測器
24‧‧‧分支目標位址快取記憶體
30‧‧‧執行單元
32‧‧‧執行單元
34‧‧‧執行單元
36‧‧‧L1資料快取記憶體
40‧‧‧寫回暫存器
44‧‧‧L2快取記憶體
50‧‧‧主記憶體
52‧‧‧轉換旁看緩衝器
60‧‧‧邊界指標暫存器
62‧‧‧指標
64‧‧‧範圍資訊
66‧‧‧限制
68‧‧‧下邊界位址
69‧‧‧上邊界位址
80‧‧‧程式計數器能力暫存器
82‧‧‧欄位
84‧‧‧範圍資訊
86‧‧‧限制資訊
100‧‧‧能力暫存器
102‧‧‧指標
104‧‧‧範圍資訊
106‧‧‧限制資訊
108‧‧‧標籤位元
110‧‧‧記憶體位址空間
115‧‧‧資料區塊
120‧‧‧標籤欄位
130‧‧‧表
135‧‧‧行
140‧‧‧行
150‧‧‧區域記憶體
160‧‧‧全局記憶體
200‧‧‧受信任實體1
205‧‧‧不受信任實體2
210‧‧‧流程A
212‧‧‧分支路徑
215‧‧‧流程B
217‧‧‧路徑
220‧‧‧流程C
222‧‧‧路徑
225‧‧‧流程D
227‧‧‧路徑
230‧‧‧堆疊
235‧‧‧堆疊框架
240‧‧‧堆疊框架
245‧‧‧轉回位址
250‧‧‧位置
260‧‧‧路徑
300‧‧‧步驟
305‧‧‧步驟
310‧‧‧步驟
315‧‧‧步驟
320‧‧‧步驟
325‧‧‧步驟
330‧‧‧步驟
335‧‧‧步驟
340‧‧‧步驟
400‧‧‧步驟
405‧‧‧步驟
410‧‧‧步驟
415‧‧‧步驟
420‧‧‧步驟
425‧‧‧步驟
430‧‧‧步驟
435‧‧‧步驟
440‧‧‧步驟
500‧‧‧步驟
505‧‧‧步驟
510‧‧‧步驟
515‧‧‧步驟
520‧‧‧步驟
525‧‧‧步驟
530‧‧‧步驟
550‧‧‧步驟
555‧‧‧步驟
560‧‧‧步驟
565‧‧‧步驟
570‧‧‧步驟
600‧‧‧步驟
605‧‧‧步驟
610‧‧‧步驟
615‧‧‧步驟
620‧‧‧步驟
625‧‧‧步驟
630‧‧‧步驟
635‧‧‧步驟
640‧‧‧步驟
本技術將藉由參考其實施例僅以舉例方式進行進一步描述,該等實施例如附圖中所圖示,該等附圖中:
第1圖是依據一個實施例之設備的方框圖;
第2圖圖示指令類型之實例,如若存在設定或存取邊界指標儲存元件集內之指標值的嘗試,則該等指令類型的錯誤可能被觸發,在此情況下,該指標值用以規定相關連範圍資訊所指示範圍之外的位址;
第3圖圖示依據一個實施例與邊界指標關連之標籤位元的使用;
第4圖是一表,該表顯示依據一個實施例可提供的與邊界指標關連之某些許可屬性,該等許可屬性包括提供的可複製屬性;
第5圖圖示記憶體可如何被劃分為區域記憶體及全局記憶體;
第6圖圖示在不受信任流程具有複製邊界指標之能力的情況下可能產生的控制流完整性問題;
第7圖是一流程圖,該圖圖示依據一個實施例的儲存能力指令的執行;
第8圖是一流程圖,該圖圖示依據一個實施例的載入能力指令的執行;
第9圖是一流程圖,該圖圖示依據一個實施例的移動能力指令的執行;
第10圖是一流程圖,該圖圖示依據一個實施例可如何利用能力指令的「無複製」變體;及
第11圖是一流程圖,該圖圖示依據一個實施例可如何處理分支指令。
國內寄存資訊 (請依寄存機制、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機制、日期、號碼順序註記) 無
(請換頁單獨記載) 無
2‧‧‧資料處理設備
4‧‧‧處理管線
6‧‧‧擷取級
8‧‧‧解碼級
10‧‧‧發出級
12‧‧‧執行級
14‧‧‧寫回級
20‧‧‧L1指令快取記憶體
22‧‧‧分支預測器
24‧‧‧分支目標位址快取記憶體
30‧‧‧執行單元
32‧‧‧執行單元
34‧‧‧執行單元
36‧‧‧L1資料快取記憶體
40‧‧‧寫回暫存器
44‧‧‧L2快取記憶體
50‧‧‧主記憶體
52‧‧‧轉換旁看緩衝器
60‧‧‧邊界指標暫存器
62‧‧‧指標
64‧‧‧範圍資訊
66‧‧‧限制
80‧‧‧程式計數器能力暫存器
82‧‧‧欄位
84‧‧‧範圍資訊
86‧‧‧限制資訊
Claims (20)
- 一種用於控制有界指標的使用之設備,包括:複數個邊界指標儲存元件,每一邊界指標儲存元件儲存一邊界指標及相關連許可屬性,該等相關連許可屬性指示該邊界指標之允許使用,該等相關連許可屬性包含一複製許可屬性,該複製許可屬性指示該邊界指標是否被允許進行一複製操作;及處理電路系統,該系統可回應於規定該複製操作之至少一個指令以利用一源邊界指標儲存元件之一源邊界指標及相關連許可屬性而生成一目的地邊界指標及相關連許可屬性,且該目的地邊界指標及該等相關連許可屬性將儲存在一目的地邊界指標儲存元件中,且該系統可將該源邊界指標儲存元件標記為儲存一無效邊界指標,此舉取決於該源邊界指標之該複製許可屬性是否具有用於指示該源邊界指標將被阻止進行該複製操作的一第一值,而當該複製許可屬性具有用於指示允許該源邊界指標進行該複製操作的一第二值時,該處理電路系統經配置以將該源邊界指標儲存元件保留為儲存一有效邊界指標;其中每一邊界指標儲存元件具有與該元件相關連的一有效性欄位,以指示該邊界指標儲存元件是否儲存一有效的邊界指標,且該處理電路系統經配置以藉由更新 與該源邊界指標儲存元件相關連的該有效性欄位,而將該源邊界指標儲存元件標記為儲存一無效邊界指標,以辨識該源邊界指標為無效。
- 如請求項1所述之設備,其中該有效性欄位是一標籤欄位,該標籤欄位辨識該相關連邊界指標儲存元件之內容之一資料類型,當該標籤欄位具有一第一值時,該內容形成一邊界指標及相關連許可屬性,且當該標籤值具有不同於該第一值之一值時,該內容被視作不同於一邊界指標及相關連許可屬性的資料。
- 如請求項1所述之設備,其中該處理電路系統經配置以在執行規定該複製操作的該至少一個指令時,在該源邊界指標之該複製許可屬性具有用於指示該源邊界指標將被阻止進行該複製操作的該第一值的情況下,將該源邊界指標儲存元件標記為儲存一無效邊界指標。
- 如請求項1所述之設備,其中:該相關連許可屬性包含一共享屬性,該屬性指示該邊界指標是否在多個執行緒之間共享;及該處理電路系統經配置以在執行規定該複製操作的該至少一個指令時,在該源邊界指標之該複製許可屬性具有用於指示該源邊界指標將被阻止進行該複製操作的該第一值,且該共享屬性指示該邊界指標並非在 多個執行緒之間共享的情況下,將該源邊界指標儲存元件標記為儲存一無效邊界指標。
- 如請求項1所述之設備,其中:該源邊界指標包含一指標值及相關連範圍資訊,且在該複製操作期間,禁止該指標值之一修正。
- 如請求項5所述之設備,其中該源邊界指標用以決定一功能指標。
- 如請求項1所述之設備,其中該複製操作使得該目的地邊界指標及相關連許可屬性成為該源邊界指標及相關連許可屬性之一複製品。
- 如請求項1所述之設備,其中該複製操作使得該目的地邊界指標及相關連該等許可屬性中之至少一者成為該源邊界指標及相關連該等許可屬性之一修正版本。
- 如請求項8所述之設備,其中在該複製操作期間,該邊界指標之該等邊界禁止擴大。
- 如請求項8所述之設備,其中在該複製操作期間,禁止進行該等相關連許可屬性之修正以增多該邊界指標之該等允許使用。
- 如請求項1所述之設備,其中該源邊界指標儲存元件及該目的地邊界指標儲存元件中之至少一者是一邊界指標暫存器。
- 如請求項1所述之設備,其中該源邊界指標儲存元件及該目的地邊界指標儲存元件中之至少一者是一記憶體位置。
- 如請求項1所述之設備,其中該至少一個指令包含一第一指令,該指令是一第二指令之一「無複製」變體,且該處理電路系統回應於該第二指令在一情況中之執行而實施一預定動作,以阻止產生該源邊界指標之一副本,在該情況中,該源邊界指標之該複製許可屬性指示該源邊界指標將被阻止進行該複製操作。
- 如請求項13所述之設備,其中該預定動作包含中止該第二指令之執行。
- 如請求項13所述之設備,其中該預定動作包含將該目的地邊界指標儲存元件標記為儲存一無效邊界指標。
- 如請求項1所述之設備,其中:該至少一個指令包含一分支指令,且該源邊界指標用以生成一目標位址,以儲存為一程式計數器邊界指標儲存元件內的一新程式計數器值。
- 如請求項16所述之設備,其中該分支指令是一含鏈路分支指令,在該含鏈路分支指令執行期間,該處理電路系統經配置以將該程式計數器邊界指標儲 存元件之一當前內容儲存至一鏈路暫存器邊界指標儲存元件內,以辨識一轉回位址邊界指標,且經配置以在該鏈路暫存器邊界指標儲存元件內設定該複製許可屬性,以指示該轉回位址邊界指標將被阻止進行該複製操作。
- 如請求項1所述之設備,其中每一邊界指標儲存元件包含一第一子元件以儲存該邊界指標,且包含一第二子元件以儲存相關連該等許可屬性。
- 一種控制邊界指標在一設備內之使用的方法,該設備具有複數個邊界指標儲存元件,每一邊界指標儲存元件儲存一邊界指標及相關連許可屬性,相關連該等許可屬性可指示該邊界指標允許使用,該方法包括以下步驟:在該相關連許可屬性內提供一複製許可屬性,該複製許可屬性指示該邊界指標是否被允許進行一複製操作;及可回應於至少一個指令以利用一源邊界指標儲存元件之一源邊界指標及相關連許可屬性而生成一目的地邊界指標及相關連許可屬性,該至少一個指令規定該複製操作,且該目的地邊界指標及相關連該等許可屬性將儲存在一目的地邊界指標儲存元件中,且將該源邊界指標儲存元件標記為儲存一無效邊界指標,此舉 取決於該源邊界指標之該複製許可屬性是否具有用於指示該源邊界指標將被阻止進行該複製操作的一第一值,而當該複製許可屬性具有用於指示允許該源邊界指標進行該複製操作的一第二值時,將該源邊界指標儲存元件保留為儲存一有效邊界指標;提供具有相關連的一有效性欄位的每一邊界指標儲存元件,以指示該邊界指標儲存元件是否儲存一有效的邊界指標;及藉由更新與該源邊界指標儲存元件相關連的該有效性欄位,而將該源邊界指標儲存元件標記為儲存一無效邊界指標,以辨識該源邊界指標為無效。
- 一種用於控制有界指標的使用之設備,包括:複數個邊界指標儲存元件手段,每一邊界指標儲存元件手段用於儲存一邊界指標及相關連許可屬性,該等相關連許可屬性指示該邊界指標之允許使用,該等相關連許可屬性包含一複製許可屬性,該複製許可屬性指示該邊界指標是否被允許進行一複製操作;及處理手段,用於回應於至少一個指令以利用一源邊界指標儲存元件手段之一源邊界指標及相關連許可屬性而生成一目的地邊界指標及相關連許可屬性,該至少一個指令規定該複製操作,且該目的地邊界指標及 相關連該等許可屬性將儲存在一目的地邊界指標儲存元件手段中,且用於將該源邊界指標儲存元件手段標記為儲存一無效邊界指標,此舉取決於該源邊界指標之該複製許可屬性是否具有用於指示該源邊界指標將被阻止進行該複製操作的一第一值,而當該複製許可屬性具有用於指示允許該源邊界指標進行該複製操作的一第二值時,該處理手段經配置以將該源邊界指標儲存元件保留為儲存一有效邊界指標;其中每一邊界指標儲存元件手段具有與該元件手段相關連的一有效性欄位,以指示該邊界指標儲存元件手段是否儲存一有效的邊界指標,且該處理手段經配置以藉由更新與該源邊界指標儲存元件手段相關連的該有效性欄位,而將該源邊界指標儲存元件手段標記為儲存一無效邊界指標,以辨識該源邊界指標為無效。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1519996.1 | 2015-11-12 | ||
GB1519996.1A GB2544315B (en) | 2015-11-12 | 2015-11-12 | An apparatus and method for controlling use of bounded pointers |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201716995A TW201716995A (zh) | 2017-05-16 |
TWI725059B true TWI725059B (zh) | 2021-04-21 |
Family
ID=55132704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105132004A TWI725059B (zh) | 2015-11-12 | 2016-10-04 | 用於控制有界指標的使用之設備及方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10650136B2 (zh) |
EP (1) | EP3374919B1 (zh) |
JP (1) | JP6913681B2 (zh) |
KR (1) | KR102548226B1 (zh) |
CN (1) | CN108351935B (zh) |
GB (1) | GB2544315B (zh) |
IL (1) | IL258891B (zh) |
TW (1) | TWI725059B (zh) |
WO (1) | WO2017081438A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI786111B (zh) * | 2017-06-15 | 2022-12-11 | 英商Arm股份有限公司 | 用於控制指令集中改變的設備、方法、虛擬機電腦程式與電腦可讀取儲存媒體 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2562102B (en) * | 2017-05-05 | 2019-09-04 | Advanced Risc Mach Ltd | An apparatus and method for managing use of capabilities |
GB2563010B (en) * | 2017-05-25 | 2019-12-25 | Advanced Risc Mach Ltd | An apparatus and method for managing a capability domain |
GB2563009B (en) | 2017-05-25 | 2019-12-25 | Advanced Risc Mach Ltd | An apparatus and method for interpreting permissions associated with a capability |
US10416963B2 (en) * | 2017-06-19 | 2019-09-17 | Arm Limited | Bounds checking |
GB2564130B (en) * | 2017-07-04 | 2020-10-07 | Advanced Risc Mach Ltd | An apparatus and method for controlling execution of instructions |
US10387335B2 (en) * | 2017-09-28 | 2019-08-20 | Hewlett Packard Enterprise Development Lp | Memory system and handles to master capabilities |
GB2570692B (en) * | 2018-02-02 | 2020-09-09 | Advanced Risc Mach Ltd | Controlling guard tag checking in memory accesses |
GB2592069B (en) * | 2020-02-17 | 2022-04-27 | Advanced Risc Mach Ltd | Address calculating instruction |
US20220197678A1 (en) * | 2020-12-22 | 2022-06-23 | Intel Corporation | Apparatus and method for secure instruction set execution, emulation, monitoring, and prevention |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110078389A1 (en) * | 2009-09-30 | 2011-03-31 | Patel Baiju V | Managing and implementing metadata in central processing unit using register extensions |
TW201246064A (en) * | 2011-01-27 | 2012-11-16 | Soft Machines Inc | Multilevel conversion table cache for translating guest instructions to native instructions |
CN103620547A (zh) * | 2011-01-27 | 2014-03-05 | 索夫特机械公司 | 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247632A (en) * | 1989-01-23 | 1993-09-21 | Eastman Kodak Company | Virtual memory management arrangement for addressing multi-dimensional arrays in a digital data processing system |
US5590329A (en) * | 1994-02-04 | 1996-12-31 | Lucent Technologies Inc. | Method and apparatus for detecting memory access errors |
US5583988A (en) * | 1994-03-09 | 1996-12-10 | National Instruments Corporation | Method and apparatus for providing runtime checking features in a compiled programming development environment |
US5845331A (en) * | 1994-09-28 | 1998-12-01 | Massachusetts Institute Of Technology | Memory system including guarded pointers |
US6993540B2 (en) * | 2002-12-20 | 2006-01-31 | Intel Corporation | Prefetching memory objects into a shared cache during garbage collection with a three-finger Cheney scan in a multithreaded processing environment |
US7181580B2 (en) * | 2003-03-27 | 2007-02-20 | International Business Machines Corporation | Secure pointers |
US7856624B2 (en) * | 2003-09-15 | 2010-12-21 | Thomas Plum | Automated safe secure techniques for eliminating undefined behavior in computer software |
US8271735B2 (en) * | 2009-01-13 | 2012-09-18 | Oracle America, Inc. | Cache-coherency protocol with held state |
JP2011134202A (ja) * | 2009-12-25 | 2011-07-07 | Internatl Business Mach Corp <Ibm> | メモリ管理装置、メモリ管理方法、及びメモリ管理プログラム |
US8600939B2 (en) * | 2011-10-24 | 2013-12-03 | Oracle International Corporation | Writable snapshots |
US20140189310A1 (en) * | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US9189375B1 (en) * | 2013-12-31 | 2015-11-17 | Google Inc. | Dynamic sandboxing |
CN103745755B (zh) * | 2014-01-06 | 2017-01-11 | 中国科学院软件研究所 | 一种高效且高可用的空间内存错误检测方法 |
CN104836754A (zh) * | 2015-04-03 | 2015-08-12 | 盛科网络(苏州)有限公司 | 利用高速Serdes实现背板自协商功能的方法及装置 |
-
2015
- 2015-11-12 GB GB1519996.1A patent/GB2544315B/en active Active
-
2016
- 2016-09-30 EP EP16777772.1A patent/EP3374919B1/en active Active
- 2016-09-30 CN CN201680066821.2A patent/CN108351935B/zh active Active
- 2016-09-30 KR KR1020187015924A patent/KR102548226B1/ko active IP Right Grant
- 2016-09-30 JP JP2018522799A patent/JP6913681B2/ja active Active
- 2016-09-30 WO PCT/GB2016/053044 patent/WO2017081438A1/en active Application Filing
- 2016-09-30 US US15/770,560 patent/US10650136B2/en active Active
- 2016-10-04 TW TW105132004A patent/TWI725059B/zh active
-
2018
- 2018-04-24 IL IL258891A patent/IL258891B/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110078389A1 (en) * | 2009-09-30 | 2011-03-31 | Patel Baiju V | Managing and implementing metadata in central processing unit using register extensions |
TW201246064A (en) * | 2011-01-27 | 2012-11-16 | Soft Machines Inc | Multilevel conversion table cache for translating guest instructions to native instructions |
CN103620547A (zh) * | 2011-01-27 | 2014-03-05 | 索夫特机械公司 | 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射 |
Non-Patent Citations (3)
Title |
---|
Gonzalez, J. A. (2015 September). Taxi: Defeating code reuse attacks with tagged memory (Doctoral dissertation, Massachusetts Institute of Technology). |
Gonzalez, J. A. (2015 September). Taxi: Defeating code reuse attacks with tagged memory (Doctoral dissertation, Massachusetts Institute of Technology). Watson, R. N., Neumann, P. G., Woodruff, J., Roe, M., Anderson, J., Chisnall, D., ... & Murdoch, S. J. (2015 September). Capability hardware enhanced RISC instructions: CHERI instruction-set architecture (No. UCAM-CL-TR-876). University of Cambridge, Computer Laboratory. * |
Watson, R. N., Neumann, P. G., Woodruff, J., Roe, M., Anderson, J., Chisnall, D., ... & Murdoch, S. J. (2015 September). Capability hardware enhanced RISC instructions: CHERI instruction-set architecture (No. UCAM-CL-TR-876). University of Cambridge, Computer Laboratory. |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI786111B (zh) * | 2017-06-15 | 2022-12-11 | 英商Arm股份有限公司 | 用於控制指令集中改變的設備、方法、虛擬機電腦程式與電腦可讀取儲存媒體 |
Also Published As
Publication number | Publication date |
---|---|
US20190012455A1 (en) | 2019-01-10 |
GB2544315A (en) | 2017-05-17 |
IL258891A (en) | 2018-06-28 |
CN108351935B (zh) | 2023-07-14 |
KR102548226B1 (ko) | 2023-06-27 |
JP2018538610A (ja) | 2018-12-27 |
GB201519996D0 (en) | 2015-12-30 |
EP3374919A1 (en) | 2018-09-19 |
TW201716995A (zh) | 2017-05-16 |
CN108351935A (zh) | 2018-07-31 |
US10650136B2 (en) | 2020-05-12 |
JP6913681B2 (ja) | 2021-08-04 |
IL258891B (en) | 2020-04-30 |
GB2544315B (en) | 2018-02-14 |
WO2017081438A1 (en) | 2017-05-18 |
EP3374919B1 (en) | 2019-10-23 |
KR20180082495A (ko) | 2018-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI725059B (zh) | 用於控制有界指標的使用之設備及方法 | |
JP6902029B2 (ja) | 有界ポインタを管理するための装置および方法 | |
TWI770172B (zh) | 用於管理能力域的設備及方法 | |
TW201843584A (zh) | 用於管理能力使用的設備與方法 | |
JP2023038361A (ja) | 命令セット内の変更を制御する装置及び方法 | |
JP2021535470A (ja) | 有界ポインタの使用を制御するための装置及び方法 | |
US20230409494A1 (en) | Technique for constraining access to memory using capabilities | |
TW202318210A (zh) | 用於處理密封能力之技術 | |
TW202319913A (zh) | 用於使用能力限制對記憶體存取之技術 | |
TW202340955A (zh) | 使用能力約束記憶體存取之技術 | |
JP2024517627A (ja) | ケイパビリティを使用してメモリへのアクセスを制約するための技法 |