TWI470434B - 在電腦系統中執行之方法,電腦系統,處理器 - Google Patents
在電腦系統中執行之方法,電腦系統,處理器 Download PDFInfo
- Publication number
- TWI470434B TWI470434B TW101151082A TW101151082A TWI470434B TW I470434 B TWI470434 B TW I470434B TW 101151082 A TW101151082 A TW 101151082A TW 101151082 A TW101151082 A TW 101151082A TW I470434 B TWI470434 B TW I470434B
- Authority
- TW
- Taiwan
- Prior art keywords
- tal
- processor
- memory
- event
- computer system
- Prior art date
Links
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45541—Bare-metal, i.e. hypervisor runs directly on hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/441—Multiboot arrangements, i.e. selecting an operating system to be loaded
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Description
各實施例係有關可將特權處理器資源抽象化之硬體抽象層(Hardware Abstraction Layer;簡稱HAL)。
建構諸如處理器抽象層(Processor Abstraction Layer;簡稱PAL)及系統抽象層(System Abstraction Layer;簡稱SAL)等的現行抽象層,使下層硬體改變時,該等抽象層的介面不會改變,因而減少應用程式或作業系統(Operating System;簡稱OS)在硬體改變時不能工作的可能性。因而可讓具有不同硬體類型及/或版本之一些系統可使用一採用該等抽象層之應用程式,這是因為係自應用程式及OS層將特定硬體實施方式抽象化。
PAL及SAL是被架構的HAL之例子,這是因為PAL及SAL執行之所有操作是公知的或可公用的,且被以軟體實施。例如,可以諸如硬體資料表單、軟體開發者參考手冊、處理器設計指南、及平台設計指南等的技術文件發佈被架構的特徵。
因為這些HAL被架構成使該等HAL對所有的軟體都是可見的,所以可能難以提供對被保護資源的使用,也難以增加用來在驗證期間或處理器生產之後支援除錯及錯誤修正(bug fix)的PAL或SAL功能。
本發明說明了一種用來觸發硬體抽象層(HAL)中之事件之系統及方法的實施例。在某些實施例中,該HAL可包括可被用來執行下列例示操作之無架構的硬體或軟體:促進指令模擬(instruction emulation)及除錯;啟用對特定型號專用資源、指令、及特性的保護;對指令的重定向、重引導、或替代;以及提供用於額外的能力或特徵之一框架。
下文之說明及圖式充分地示出一些特定實施例,使熟悉此項技術者能夠實施該等實施例。其他實施例可能包含結構、邏輯、電氣、程序、及其他的改變。某些實施例的一些部分及特徵可被包含在其他實施例的那些部分及特徵,或可被其他實施例的那些部分及特徵取代。申請專利範圍中述及的各實施例將包含那些申請專利範圍的所有可用等效物。
第1圖示出Intel Itanium處理器之各軟體、韌體、及硬體(例如,處理器)層及介面。一作業系統軟體層100被設置在該架構的頂部。各韌體組件位於下三個較低層,其中包括一可延伸韌體介面(Extensible Firmware Interface;簡稱EFI)102、一系統抽象層(SAL)104、及一處理器抽象層(PAL)106。該PAL被緊密地連接到處理器操作,且因位於一處理器層108之上。該架構中之
底部層是平台硬體110。
第1圖之分層架構形成可使常見的作業系統(二進制)能夠在具有各種不同組態的基於Intel Itanium的平台上操作之一抽象化組的介面。介面可以是導致進入HAL的任何事件。此此同時,自該作業系統將各韌體層組件抽象化,而使那些韌體組件能夠支援其中包括(但不限於)Microsoft® Windows®作業系統以及各種版本的Linux及UNIX作業系統之多種作業系統。
PAL 106、SAL 104、及EFI 102合起來可提供系統初始化(system initialization)及啟動(boot)、機器檢查異常中止(Machine Check Abort;簡稱MCA)處置、平台管理中斷(Platform Management Interrupt;簡稱PMI)處置、以及各實施方式之間可能不同的其他處理器及系統功能。第1圖中示出各功能韌體方塊之互動。PAL 106封裝各特定處理器實施例特徵,而SAL 104是一特定平台韌體組件,用以將作業系統及其他較高階軟體與平台中之實施差異隔離。EFI提供了作業系統載入器(loader)之一非傳統•應用程式介面(API)。EFI亦可被配置成支援傳統組件。
EFI是一公開工業規格,說明了平台韌體與OS或其他定製應用環境間之抽象化程式介面。EFI框架包括將基本輸入/輸出系統(Basic Input/Output System;簡稱BIOS)功能延伸到被儲存在一平台的BIOS裝置(例如,快閃記憶體或唯讀記憶體(ROM))中之程式碼所提供的
功能之外之條款。更具體而言,EFI能夠自其中包括主要及輔助快閃記憶體裝置、可供選擇採用的ROM、各種持續儲存裝置(例如,硬碟、唯讀光碟(CD-ROM)等的持續儲存裝置)、以及甚至經由電腦網路之各種不同的資源載入形式為韌體模組及驅動程式之韌體。
所揭示之技術抽象層(Technology Abstraction Layer;簡稱TAL)包括處理器無法以其他方式取得的能力。這些能力可被用來解決以其他方式難以解決的問題。藉由包括諸如其他抽象層中目前無法使用的一些能力,而使這些能力亦可增加處理器設計的彈性。例如,其他HAL、OS、及應用程式層可使用這些能力。本發明揭示的該TAL可被描述為一種能力層,這是因為該TAL可包含目前不存在的硬體及軟體元件,該等元件可提供諸如對處理器操作之新的低階可見性。術語TAL被用來表示與先前技術HAL間之差異,例如,TAL提供了先前技術HAL不可見之處理器組件的可見性。
與先前技術HAL對比之下,TAL可將特權處理器資源抽象化,或提供特權處理器資源之一抽象化介面。這些特權處理器資源可能是無架構的,因而並未在被提供給硬體的購買著之任何技術文件中揭示該等處理器資源,或者只將該等處理器資源揭示為一種不支援的功能。PAL及SAL不包含任何程序無法使用的任何特權功能。對比之下,無架構的功能可能是專屬的或祕密的。例如,某一處理器的一些特定運算碼可能不是公知的,且甚至可能防止第
三方軟體(third-party software)使用這些特定運算碼。
為了更佳了解如何在下文的實施例中採用TAL,請參閱第2圖,該圖示出其中包括被識別為技術抽象層(TAL)212的一第三抽象層之一實施例。TAL 212在可供選擇採用之情形下可被耦合到處理器(硬體)108、平台(硬體)110、OS層100、PAL 106、SAL 104、及EFI 102中之每一者。TAL 212亦可在概念上介於PAL 106與處理器(硬體)108之間。在一無架構的實施例中,TAL 212將不具有OS層100的一直接介面;然而,來自OS層100之指令可產生自PAL 106、SAL 104、或EFI 102至TAL 212之額外的指令。在OS層100之上運行的應用程式或虛擬機(virtual machine)之其他介面也是可能的,然而,為了簡化而並未示出該等介面。
可觸發TAL 212之事件或介面可能是同步的或非同步的。例示同步事件包括指令匹配(instruction match)、錯失(fault)、陷阱(trap)、或諸如發出埠、指令類型、資源衝突、資源限制、頻寬限制等的許多管線事件。非同步事件包括逾時(timeout)、計數器溢位(counter overflow)、外部中斷、非管線事件、重設事件、及錯誤事件等的事件。事件可被硬體(例如,諸如浮點單元等的一功能單元之執行)及軟體(例如,韌體指令)觸發。TAL 212可被與觸發現行SAL及PAL層之事件不同的或相同的事件觸發。可導致進入TAL 212之額外的例示事件包括下列事件:
.RESET(重設)
.ERROR(錯誤)
.INTERRUPT(中斷)
.OPMATCH(運算碼匹配)--當與特定運算碼匹配時進入
.IVA TRANSFER--中斷向量位址(Interrupt Vector Address)轉移
.PERFORMANCE(效能)--例如,大於預定值之快取記憶體未命中
.目標為特定位址或暫存器之操作
.諸如指令失敗等的錯失/陷阱
請注意,單一指令可觸發前文所述該等事件中之一或多個事件。此外,諸如PERFORMANCE等的前文所述之該等事件或事件類別可被分別可導致一PERFORMANCE事件被執行之許多不同的事件觸發。
第3圖以方塊圖之形式示出能夠支援TAL 212之一例示處理器。處理器208具有一內建之第2階快取記憶體312及一系統介面316,該系統介面316可自一外部匯流排(圖中未示出)接收指令及資料。在替代實施例中,程式指令及資料可被儲存在一記憶體308或唯讀記憶體(Read Only Memory;簡稱ROM)310,該ROM 310亦可被耦合到系統介面316。ROM 310也可以是一電氣可抹除可程式唯讀記憶體(Electrically-Erasable Programmable ROM;簡稱EEPROM)。處理器208可包含一組合式第1
階指令快取記憶體、提取/預取引擎、及指令轉換後備緩衝區(Instruction Translation Lookaside Buffer;簡稱ITLB)320。快取記憶體312及320可包含諸如被修改的、唯一的、共用的、或無效的(Modified,Exclusive,Shared or Invalid;簡稱MESI)等的狀態資訊;將於下文中更詳細地說明之一額外的TAL(T)狀態可識別或保護TAL 212進入。一指令佇列324饋入一些發出埠328,該等發出埠328已被配置成接收所指示之分支指令、記憶體存取指令(M)、整數運算指令(I)、及浮點指令。該等發出埠328饋入一暫存器堆疊引擎/重新映射單元332,該暫存器堆疊引擎/重新映射單元332配置內建的暫存器336及340,以供平行處理。這些暫存器336、340饋入其各別的可平行操作之分支及記憶體單元(圖中未示出)、整數單元344、資料快取記憶體及資料轉換後備緩衝區單元352、及浮點單元348。執行控制器335可被用來偵測TAL 212事件,且啟動TAL 212操作。執行控制器335可包含諸如TAL暫存器334等的儲存暫存器,該等TAL暫存器334可包含來自諸如暫存器336及340、暫存器堆疊引擎/重新映射單元332、或指令佇列324的資訊以及其他特定TAL資訊之拷貝。執行層335可被耦合到諸如內建的暫存器336及340、暫存器堆疊引擎/重新映射單元332、或任何其他在微架構上重要的特徵。可包括諸如快取條目、TLBs、佇列、管線、或任何其他在微架構上重要的特徵等的圖中未示出之其他特定TAL資源。在將指令插
入到處理器管線之前,TAL指令佇列338可暫時地儲存該等指令。TAL指令佇列338之大小可相同於或不同於指令佇列324之大小;替代實施例可省略掉TAL指令佇列338。處理器208可以是諸如一顯性平行指令計算(Explicitly Parallel Instruction Computing;簡稱EPIC)類型,該EPIC類型可讓程式設計師藉由選擇諸如"load and add"("載入且相加")等的指令(該等指令按照定義將強制處理器208平行地執行記憶體提取及算術運算)而保證某些指定任務的平行執行。
下文將提供可被包含在執行控制器335及TAL暫存器334的TAL組態暫存器(configuration register)之例子:
.SWITCH Disable(切換停用)(sd):當sd=1時,所有的執行緒切換(thread switching)都被抑制,只有顯性指令提示將導致執行緒切換。
.TAL暫存器庫(bt):當bt=1時,可使用一般暫存器之TAL暫存器庫。可保持該TAL暫存器庫之一陰影複製(shadow copy)。
.TAL特權(tl):當該位元被設定時,TAL 212可使用被保護資源。當tl=0時,如果引退一TAL 212指令,則將產生一TALAccessViolation(TAV)事件。
.PTC Shootdown HOLD(ph):當ph=1時,可暫緩進入的操作。
.TAL Resteer Enable(TAL重引導啟用)(tr):如果
tr=1,則將重引導非同步之待處理的TAL事件。不論該位元為何,都可重引導不可遮罩式(unmaskable)TAL 212事件(例如,RESET.*及Probe Mode(探測模式))。當tr=0時,將抑制所有的同步OPMATCH事件。
.(pa):不論其他組態設定值為何,該位元可啟用所有IVA TRANSFER(中斷向量位址轉移)事件,因而當被設定時,所有異常(exception)將導致變遷到TAL。
.First After(fa):當fa=1時,TAL 212 IVA TRANSFER及OPMATCH事件將被抑制而不待處理。在fa被設定之後,當引退任何指令時,可清除該位元。
.(Diagnose)偵錯(dg):當dg=1時,將抑制離開該執行緒的所有執行緒切換。
.Low Power(低功率)(lp):當lp=1時,將停用到該執行緒的所有執行緒切換。
.Probe Mode(探測模式)(pm):當pm=1時,將抑制所有的資料預取、前端要求、及預取要求。
可由BIOS或TAL將這些暫存器程式化,以便保證正確的及有效率的系統操作。
下文將提供TAL暫存器334之例子:
.TAL Current State(TAL現行狀態):可包含一執行緒識別符,用以儲存進入TAL 212時正在執行的執行緒之識別符;計數器可計數待處理的TAL 212事件之數目;事件識別符可識別觸發TAL 212的事件類別,且向量識別符可更特定地識別觸發進入TAL 212的事件類別之事
件。(可為額外之待處理的事件或最近退出的事件製作該暫存器的拷貝)
.TAL Pending(TAL待處理):可提供每一事件類別的待處理的事件數目之計數。例如,目前待處理的OPMATCH之數目或ERROR事件之數目。(如同TAL Current State(TAL現行狀態),TAL Pending可被複製到一些額外的暫存器,以供處理多個待處理的TAL 212事件。)
.TAL IVA:可儲存在TAL 212未被觸發之情形下將被用於IVA TRANSFER事件的IVA處置器(handler)之位址。
當偵測到一或多個先前被識別的事件時,處理器208可開始執行一TAL 212進入程序,以便代表先前觸發TAL 212的事件完成一些任務,且可進入一安全評估結構,以便保證只代表該呼叫者(caller)執行被授權的任務。造成進入TAL 212的事件可能先導致要被保存之該事件被偵測到時的現行處理器狀態。(請注意,關於處理器208,術語"情境"("context")及"狀態"是可互換的,且本發明中可能使用任一術語。)狀態可被理解為架構或微架構狀態。架構狀態之一例子是被儲存在諸如指令指標(Instruction Pointer;簡稱IP)、PSR、中斷指令束(Interrupt Instruction Bundle;簡稱IIB)、及控制暫存器等的處理器暫存器中之現行值。此外,TAL 212可保存負責該現行TAL 212事件之一執行緒識別符、事件識別符
、及向量識別符(例如,一事件類別內之事件)。微架構狀態之一例子是一或多個處理器管線的現行狀態可以是被保存的、被清除的、在較後日期被復原的。另一例子可以是被用來決定在服務現行TAL 212事件時是否發生任何新的TAL 212事件之一計數欄位。事件識別符可識別觸發TAL 212的事件之類型。事件識別符可被用來識別自待處理的TAL事件之一佇列中被移除的未服務事件。TAL 212可儲存之額外的資訊包括用來指示特權、模式、被啟用之IP範圍、以及組態的其他方面之資訊。TAL 212可存取這些及其他被保護的暫存器。這些暫存器中之之每一暫存器是只供例示,且可使用較多或較少的暫存器。
被保存的狀態資訊無須與TAL 212進入的起因明顯有關。例如,該被保存的資訊可與一類別的或一組的事件相關聯。諸如一組中斷等的一類別的事件可觸發相同的TAL 212事件,因而減少唯一TAL 212組態的數目。該等事件可以是相同的,或者至少以相同的方式開始,但是當考慮到更多的狀態資訊時,最後可能執行不同的操作。例如,兩個中斷可能導致開始相同的INTERRUPT事件,但是系統狀態可能導致最後的操作是不同的。TAL 212有時可外推(extrapolate)導致TAL 212進入之確切事件。例如,如果一浮點運算被保存作為該事件之觸發器,且該事件係與一些功能單元相關聯,則TAL 212可推斷浮點單元導致進入TAL 212。在其他例子中,可能無法推斷TAL 212進入的確切原因,但是在不知道進入的確切原因之情
形下,已存在了執行TAL 212操作的足夠資訊。因此,現行處理器狀態被保存,因而可在有哪一事件導致進入TAL 212之充分詳盡性(granularity)之情形下,決定執行TAL 212操作。保存現行處理器狀態可被用來決定哪一原因導致進入TAL 212,或可被用來在退出TAL 212操作之後回到被保存的處理器208狀態。
第4圖示出使用巢套(nesting)保存處理器狀態。處理器狀態可被推入一系列的暫存器,以便保存一或多個巢套狀態。例如,一IP暫存器405可具有一或多個對應的暫存器4061
...406n
,用以保存狀態資訊。此外,一暫存器可儲存觸發暫存器4111
...411n
中之TAL進入之指令410。可視需要而推入(push)或取出(pop)暫存器4061
...406n
及4111
...411n
。於執行該程序時,保存先前進入TAL時或處於TAL 212時的處理器狀態之資訊,以供有效率有效率的進入及退出。這些暫存器是可能是被架構的或無架構的特徵,但是TAL 212可在需要讀取或修改這些暫存器時,直接存取每一暫存器。
舉例而言,其中包括FULL、STATE、及LOGIC事件之一RESET類別類別的TAL 212事件可導致處理器208使用一特定暫存器組態而執行一操作。該組態可使該處理器將諸如前文中界定的sd、bt、tl、ph、tr、pa、fa、dg、lp、及pm組態暫存器等的暫存器程式化。當TAL 212被觸發時可被程式化之額外的暫存器包括IP、PSR、IIB、及其他控制暫存器。此外,或在替代實施例中,該等組
態暫存器可識別一或多個有限狀態機(FSM)、或一或多個FSM之初始狀態,以便執行TAL 212操作。該處理器可藉由配置這些暫存器,而分支到TAL 212影像中含有執行有一對應的特權的一對應的TAL 212操作的指令之一位置。然而,一ERROR類別中之諸如CHECK及INFORM事件等的事件可使處理器208執行具有可能不同的暫存器組態之不同的程序。(請注意,事件類別是可供選擇採用的,且每一事件可具有不同之相關聯的操作或暫存器組態。)當TAL 212確實取得控制時,一被保存的指令406或其他狀態資訊可被用來識別進入TAL 212的原因,且TAL 212可將該原因用於解碼、分支、或配置IP及其他暫存器,以便執行特定操作。
在保存處理器狀態之後,可為與該觸發事件相關聯的一TAL 212操作建立一新的執行狀態。該執行狀態可將各暫存器程式化成執行硬體抽象流或TAL 212操作;一硬體抽象流或操作可包含對應於被偵測的或觸發事件之一或多個指令。在替代實施例中,可在替代或結合TAL 212操作之方式下,進入以一固線式(hardwired)或可程式的以硬體實施之有限狀態機(Finite State Machine;簡稱FSM)。然後,可至少部分地使用一系列的操作或TAL 212的一FSM,而啟動可預定義或即時建構之一硬體抽象流(例如,FSM或TAL 212操作)。執行可包含在TAL 212的一先前的進入無須再度執行該操作時不執行任何操作。
TAL 212亦可被用來重定向、重引導、執行二進制交易,或替代處理器208之操作。例如,可將一指令自一錯失暫存器(例如,電晶體衰老)重定向到一不同的操作暫存器。舉另一例子,可偵測可導致處理器208的重引導(例如,可替代地執行一組新的指令)之一操作或一序列的操作。由於該重引導而執行之該新的操作可能源自無架構的特定TAL資源、TAL暫存器334、快取記憶體312或320、ROM 310、或記憶體308,且可根據觸發進入TAL 212之事件而選擇該新的操作。TAL 212可執行二進制交易,例如,可將一指令或一組指令自自一指令集架構(Instruction Set Architecture;簡稱ISA)轉換到另一ISA。此外,特定TAL指令可觸發一事件,且可被轉譯為處理器了解的指令。該程序也被稱為二進制交易。提示可被包含在處拉TAL 212的指令中,以便協助處置特定事件。最後,新的指令可替代導致進入TAL 212的指令。例如,可將一整數運算改變為一浮點運算。這些特徵可被用來產生非複雜指令集電腦(CISC)架構中之抽象化操作。
當硬體抽象流完成或停止時,可復原處理器208在TAL 212事件被觸發時所存在的狀態,或可使處理器208復原到一被修改的或完全不同的狀態。可退出TAL 212,且控制可回到OS層100、一或多個應用程式層、虛擬機、另一HAL或任何其他程序。如果將要執行先前觸發進入TAL 212的原始指令,則在復原該原始的執行緒之後,可抑制第一指令的重新進入TAL 212,以避免進入及重
新進入TAL 212的無限迴路(infinite loop)。
第5圖之流程圖400總結示出前文所述之該等功能。步驟501示出在處理器208中偵測到一同步或非同步事件。步驟502示出保存處理器208之現行狀態,因而未來若有需要可喚回該現行狀態。步驟503示出建立一新的執行狀態,以便執行一TAL 212操作。建立一新的執行狀態可包含:將來自快取記憶體312或320中處於TAL(T)狀態的各區域、ROM 310、或TAL暫存器334之資訊載入諸如前文所述之那些處理器暫存器等的處理器暫存器。步驟504示出啟動諸如對應於被偵測到的或觸發事件的一或多個指令或一FSM、或以上兩者的一組合等的一硬體抽象流。當該硬體抽象流完成時,在步驟505中可停止執行,且回到該被保存的狀態、一經過修改之該被保存的狀態、或一完全新的狀態。
TAL 212可具有諸如用來執行目前不可能的操作之暫存器、資料、及程式碼資源等的專用資源。TAL 212可藉由使用這些專用資源而在不需要用於指令儲存的記憶體或快取記憶體之情形下合成將要被執行的指令序列。每一事件種類可具有用來陳述與該種類相關聯的所有事件的所要執行的一操作的各方面(例如,分支到的TAL影像之偏移、以及啟用的狀態等的方面)之一或多個獨有的組態暫存器。所有的TAL 212操作亦可共享諸如用來執行操作的一指令緩衝器等的其他資源。
TAL 212可包含諸如不管記憶體308或快取記憶體
312或320中之毀壞的執行層程式碼而繼續執行之能力等的可靠性特徵。因為TAL 212可能存在於某一不可靠的位置(例如,快取記憶體312或320),所以TAL 212對與諸如快取記憶體312或320等的資源相關聯的暫時及硬體錯誤(hard error)具有彈性可能是有利的。為了達到此一目的,遭遇錯誤之任何可快取的存取可轉移到諸如ROM 310等的一可信賴的且更具有錯誤彈性的資源中之一版本的TAL 212影像。如果發生了一錯誤,則可至少部分地使用一屬性改變(attribute change)及一完整管線清除而自替代快取記憶體312或320之ROM 310重新提取該指令。如果巢套被啟用,或其不是一TAL 212提取,則TAL 212可以信號通知與該TAL 212操作相關聯的一正常錯誤,且可使用來自一更有彈性的資源之一版本的TAL 212影像而如預期地進入TAL 212。如果在已經存取ROM 310時發生了該錯誤,則恢復可能更為困難。例如,一嚴重錯誤(fatal error)可被記錄,且系統操作可嘗試繼續執行,或可進行重設。
在另一例子中,在一第一TAL 212操作期間被偵測到的一錯誤可能導致一第二TAL 212事件。導致一錯誤且進入TAL之TAL 212操作可能導致組態暫存器的諸如巢套等的一推入,且可能在取出該第一TAL 212操作之前,先執行了一第二TAL操作。
各TAL 212資源(例如,暫存器334、快取記憶體312或320、及資料)可被固定(be pinned)到諸如快取
記憶體312或320、其他暫存器、或記憶體等的資源,使該等資源被TAL 212管理,且被保護不受外部檢視。換言之,TAL 212使用的快取記憶體及資料可以是不可見的,且被保護而不被諸如OS層100或應用程式層等的其他層存取,這是因為TAL 212是無架構的。在一實施例中,快取記憶體312或320可藉由設有一TAL(T)狀態,使快取列無法被收回,而保護TAL 212程式碼。該TAL狀態可容許可快取的程式碼提取被命中,但是防止外部監聽(snoop)及資料存取被命中,或者可分配一未命中。對一TAL狀態快取列的外部存取之抑制可保證其他組件無法看到或修改程式碼,因而保持安全。該快取記憶體亦可支援將資料、標籤、及狀態寫入特定值。TAL 212可藉由在一TAL 212操作或快取記憶體存取期間鎖住對快取記憶體的存取,而隱藏可快取的程式碼提取。TAL 212可識別此種操作可能是有利的情況,且可透通地執行該操作。
在替代實施例中,可保護系統記憶體空間中之特定TAL記憶體範圍被不非TAL操作存取。例如,可將一額外的位元提供給可定址的記憶體空間,且只有TAL操作可定址到記憶體中之該額外的位元被設定的一些位置。
除了只有TAL 212專用的資源之外,其他的HAL或程序可根據特權等級(privilege level)而使用某些資源。特權等級可具有不同的保護等級,而提供資源環境之不同的使用等級。換言之,如果某一程序或執行緒沒有足夠
的特權,則將無法存取某些處理器208特徵。例如,在OS層100中運行的一應用程式可存取處理器208,且具有一對應的特權5,而TAL可使用一對應的特權2(一較低編號的特權)存取處理器208,而此種特權將對處理器208及指令之較多的存取權提供給TAL 212。可根據事件類型而指定特權。例如,RESET可具有0的特權,且ERROR可具有4的特權。
TAL 212除了能夠利用一較低編號的特權值執行程序(例如,對系統資源有較大的存取權)之外,亦可使用"原生"特權及資源環境(亦即,使用觸發TAL 212的程序之特權及資源環境)。TAL 212可在由於單一事件而被執行的一指令序列期間使用不同的特權執行指令。因此,使用較小的特權狀態執行操作時,可導致有效率地使用資源。
使用TAL 212的方式之額外的例子包括:提供有彈性的運行時服務;支援有效率的運算碼模擬;支援運算碼/錯誤暫時解決方法(workaround);在機器檢查架構(Machine Check Architecture;簡稱MCA)處理期間提供可靠的資源;提供對抗TAL程式碼影像及資料儲存破壞(tampering)之保護/安全;以及鑑別程式碼來源。
舉另一例子,可由取代虛擬機管理器(Virtual Machine Manager;簡稱VMM)之TAL 212處置一虛擬化環境中之一客作業系統(guest operating system)產生的事件。此種方式可適用於諸如修正錯誤、執行資料收集、
或處置中斷,這是因為TAL 212可具有比VMM更大的特權。例如,不需要將發生錯誤的訊息通知VMM,因而減少了將VMM用於錯誤處置的信賴,且系統中可能有一致的錯誤處置。在此種方式下,電腦由於更有效率的資源利用而可有效率地支援更多的客作業系統。
在另一例子中,TAL 212可提供密碼金鑰(cryptographic key)的安全儲存及管理。例如,應用程式可將金鑰儲存在被隱藏而不被OS層100及各應用程式層存取之被保護的TAL 212資源中。
TAL 212可執行不可分割操作(atomic operation)或可分割操作(non-atomic operation)。不可分割操作可具有執行或快取之單元性(atomicity)、或以上兩者的任何組合。一不可分割操作可包含以連續而不中斷且對資源有唯一存取權的方式執行之一或多個指令。是否使用不可分割交易的決定可根據延遲及可用性(availability)之考慮。TAL 212何時應執行可分割操作的一例子包括快取記憶體312及320之清除,此種操作以使用者的觀點而論可能佔用太長的時間。因此,以區段(segment)之方式清除快取記憶體且容許在各次清除之間發生其他的操作可能是有利的。
使用TAL 212的方式之又一例子是:一被偵測到但未被校正的錯誤(Detected but Uncorrected Error;簡稱DUE)(亦即,一嚴重錯誤)可被改變為一被偵測到且被校正的錯誤(Detected and Corrected Error;簡稱DCE)
(亦即,一非嚴重錯誤)。此種方式對於在諸如除錯或正常運行時環境期間於一嚴重錯誤發生之後的持續操作可能是有利的。嚴重錯誤通常可能導致重設,因而可能制止進一步的操作。如果該嚴重錯誤被改變為非嚴重錯誤,則可繼續作業,且可收集有用的除錯資訊。其他的例子包括在製造、設計、或暫態缺陷(transient defect)的的情況下修改系統特性(system behavior)的能力。該特徵在故障或動態重新組態設定期間提供存活的能力。
因為TAL 212可受到保護而不被非可信賴的OS層100或應用程式存取,所以TAL 212可納入諸如處理器鑑別、保護模式變遷、早期決定/初始化、及錯誤處置等的目前在其他領域中之某些責任。因此,除了將新的能力加入系統之外,TAL 212可被用來為硬體設計者以更有效率或更有彈性之方式執行現行的程序。
TAL 212可具有兩個基本影像:一啟動影像(boot image)以及一運行時影像(run-time image)。(重要的是穩定性)ROM可保存兩個影像。TAL 212可將該運行時影像複製到快取記憶體或特定TAL 212資源,作為重設初始化流的一部分。此種分割可讓該運行時影像較小,且在較小的負擔下迅速地執行。第一TAL 212的指令可能來自ROM 310或快取記憶體312或320,但是TAL 212可包括來自其他韌體位置的資訊,只要程式碼影像在被用於指令提取之前被鑑別即可。如果使用ROM 310之外的程式碼影像,則提供用來識別處置程式碼提取錯誤及重設
事件的一操作的位置之一暫存器(例如,TAL_START_ALT)可能是有利的。
TAL 212操作之實施例適應三種安全等級中之一安全等級:高、中、及低。某些功能在單一TAL 212操作期間可使用不同的安全等級,這是因為與中間等級相關聯的驗證可能太龐大,例如,佔用太長的時間。在這些情況中,TAL 212可自覺地以效能換得安全。下文中提供了三種可能的安全等級之例示說明:
.高安全操作可使用現有的鑑別操作鑑別其呼叫者及參數
。此種方式保證這些功能及資料活動是完全可信的。
.中安全操作可使用一已知呼叫者清單驗證其呼叫者位址及被要求的功能。可能不驗證輸入參數。由於包括了功能驗證,所以防止了以不同的引數攔截攻擊(hijacking)被驗證的呼叫者。
.低安全操作可能不驗證其呼叫者位址或被要求的功能。
第6圖示出能夠執行前文所述的功能之一例示系統600。前文中已更詳細地說明了系統600之組件,但是該圖再度整體性地概括該等組件。第6圖示出被耦合到L1快取記憶體320之處理器(硬體)208及TAL 212,該L1快取記憶體320被耦合到L2快取記憶體312。系統600之每一組件可獨立地與其他的系統組件通訊。此外,如前文所述,可導致進入TAL 212之事件可具有不同的特權。TAL 212可執行對應於導致進入的該事件之一或多個程序。TAL 212程序可使用該觸發事件之原生特權,或可使
用具有不同的保護等級之不同的特權。
例如,第7圖示出根據一實施例的一共享匯流排電腦系統700。一處理器705自一第一階(L1)快取記憶體710及記憶體715存取資料。在本發明之其他實施例中,該快取記憶體可以是一電腦系統記憶體階層中之一第二階(L2)快取記憶體或其他記憶體。此外,在某些實施例中,第7圖之電腦系統可包含一L1快取記憶體及一L2快取記憶體。
該處理器可具有任何數目的處理核心。然而,可在該統內之諸如獨立匯流排代理單元或散佈在整個系統內之匯流排代理單元等的其他裝置內以硬體、軟體、或以上兩個的某一組合實施本發明之其他實施例。
可以諸如動態隨機存取記憶體(Dynamic Random Access Memory;簡稱DRAM)、硬碟機(Hard Disk Drive;簡稱HDD)720、或位於遠離該電腦系統處且至少部分地使用了含有各種儲存裝置及技術之網路介面730的一記憶體來源等的各種記憶體來源實施記憶體715。該快取記憶體可被設置在該處理器之內,或被設置在接近該處理器之處(例如,在共享匯流排707上)。
第8圖示出被配置成一點對點(Point-to-Point;簡稱P2P)組態的一電腦系統800。第8圖之系統亦可包含數個處理器,但是為了清晰只示出其中的兩個處理器870、880。處理器870、880可分別包含一本地記憶體控制中心(Memory Controller Hub;簡稱MCH)872、882,MCH
872、882連接到記憶體802、804。處理器870、880可至少部分地使用一P2P介面850以及P2P介面電路878、888交換資料。處理器870、880可分別至少部分地使用個別的P2P介面852、854以及P2P介面電路876、886、894、及898而與一晶片組890交換資料。晶片組890亦可至少部分地使用一高效能圖形介面839與一高效能圖形電路838交換資料。晶片組890可被進一步耦合到諸如一周邊組件互連(PCI)匯流排等的一輸入/輸出(I/O)匯流排,以便介接一些I/O裝置814及PCI至PCI橋接器818。可至少部分地使用PCI至PCI橋接器818將諸如鍵盤/滑鼠822、通訊裝置826、及資料儲存器824等的額外之I/O裝置耦合到系統800。然而,本發明的其他實施例在第8圖之該系統內可能存在其他組的電路、邏輯單元、或裝置。
雖然本發明已示出且說明了一些特定實施例,但是對此項技術具有一般知識者將可了解:本發明所述之實施例可被用於複雜指令集計算(Complicated Instruction Set Computing;簡稱CISC)及非CISC處理器(例如,極長指令集(Very Long Instruction Word;簡稱VLIW)及精簡指令集計算(Reduced Instruction Set Computing;簡稱RISC)處理器)。換言之,本發明所述之實施例可以是與架構無關的,且可被用來將許多不同架構的硬體抽象化。例如,已提到了Intel架構,但是其他非Intel架構亦可使用該等實施例。本申請案想要涵蓋本發明的各實施例之
任何改作或變化。我們應可了解:前文說明之用意是例示性且非限制性,而且本說明書中採用的措辭或術語是為了說明之目的且非限制之目的。熟悉此項技術者在參閱前文的說明之後將可易於了解該等上述實施例及其他實施例之各種組合。
係為了符合37 C.F.R.Section 1.72(b)中對將可讓讀者確定技術揭示的本質及主旨的摘要之要求,而提供"發明摘要"。係在該"發明摘要"不會被用來限制或詮釋申請專利範圍的範圍或意義的理解下,提交該"發明摘要"特此將最後的各申請專利範圍與該"實施方式"連動,而使每一申請專利範圍獨立對應一各別的實施例。
100‧‧‧作業系統軟體層
102‧‧‧可延伸韌體介面
104‧‧‧系統抽象層
106‧‧‧處理器抽象層
108,208,705,870,880‧‧‧處理器
110‧‧‧平台
212‧‧‧技術抽象層
312‧‧‧第2階快取記憶體
308,715,802,804‧‧‧記憶體
310‧‧‧唯讀記憶體
320‧‧‧組合式第1階指令快取記憶體、提取/預取引擎、及指令轉換後備緩衝區
324‧‧‧指令佇列
328‧‧‧發出埠
332‧‧‧暫存器堆疊引擎/重新映射單元
336,340,4061
...406n
,4111
...411n
‧‧‧暫存器
344‧‧‧整數單元
348‧‧‧浮點單元
352‧‧‧資料快取記憶體及資料轉換後備緩衝區單元
335‧‧‧執行控制器
334‧‧‧技術抽象層暫存器
338‧‧‧技術抽象層指令佇列
405‧‧‧指令指標暫存器
410‧‧‧指令
600‧‧‧系統
700,800‧‧‧電腦系統
710‧‧‧第一階快取記憶體
720‧‧‧硬碟機
730‧‧‧網路介面
707‧‧‧匯流排
872,882‧‧‧記憶體控制中心
850,852,854‧‧‧點對點介面
876,878,886,888,894,898‧‧‧點對點介面電路
890‧‧‧晶片組
838‧‧‧高效能圖形電路
839‧‧‧高效能圖形介面
814‧‧‧輸入/輸出裝置
818‧‧‧PCI至PCI橋接器
822‧‧‧鍵盤/滑鼠
826‧‧‧通訊裝置
828‧‧‧資料儲存器
第1圖是Intel Itanium-64處理器的一韌體架構之一示意方塊圖;第2圖是Intel Itanium-64處理器的一第二韌體架構之一示意方塊圖;第3圖是根據某些實施例的一處理器之一示意方塊圖;第4圖示出根據某些實施例的一些巢套暫存器;第5圖示出根據某些實施例的一些功能之一流程圖;第6圖示出根據某些實施例的一簡單系統圖;第7圖示出根據某些實施例的一共享匯流排電腦系統;以及
第8圖示出根據某些實施例的一點對點(P2P)電腦系統。
208‧‧‧處理器
308‧‧‧記憶體
310‧‧‧唯讀記憶體
312‧‧‧第2階快取記憶體
316‧‧‧系統介面
320‧‧‧組合式第1階指令快取記憶體、提取/預
取引擎、及指令轉換後備緩衝區
324‧‧‧指令佇列
328‧‧‧發出埠
332‧‧‧暫存器堆疊引擎/重新映射單元
334‧‧‧技術抽象層暫存器
335‧‧‧執行控制器
336,340‧‧‧暫存器
338‧‧‧技術抽象層指令佇列
344‧‧‧整數單元
348‧‧‧浮點單元
352‧‧‧資料快取記憶體及資料轉換後備緩衝區
單元
Claims (13)
- 一種電腦系統,包含:一記憶體;被耦合到該記憶體之一記憶體控制器;以及被耦合到該記憶體控制器之一處理器,該處理器包含:一快取記憶體,用以執行與一技術抽象層(TAL)相關聯的操作,其中各事件觸發一TAL操作,且每一TAL操作對應於可改變之一特權等級。
- 如申請專利範圍第1項之電腦系統,進一步包含該TAL專用之硬體。
- 如申請專利範圍第1或2項之電腦系統,其中該硬體包含下列TAL專用資源中之一或多個資源:一或多個暫存器、一些快取條目、轉譯後備緩衝區、一些佇列、一些管線或任何其他在微架構上重要的特徵。
- 如申請專利範圍第1項之電腦系統,其中該TAL專用之該等暫存器被配置成保存該處理器之狀態。
- 如申請專利範圍第1項之電腦系統,其中該TAL操作可一或多次改變特權。
- 如申請專利範圍第1項之電腦系統,其中該快取記憶體之各條目包括狀態資訊,且該狀態資訊包含一TAL狀態。
- 如申請專利範圍第1項之電腦系統,其中該系統記憶體包含只可被TAL操作存取的特定TAL記憶體範圍。
- 一種處理器,包含:一技術抽象層(TAL)之一組態暫存器,用以儲存將特權處理器資源抽象化之組態資訊,其中該組態資訊包括用來執行一TAL操作之資訊,其中該TAL操作對應於一或多個各別的TAL事件;其中該TAL事件包括下列事件中之一或多個事件:重設事件、錯誤事件、中斷事件、操作匹配事件、中斷位址傳送事件、及效能事件。
- 如申請專利範圍第8項之處理器,其中該TAL被配置成將指令自一第一指令集架構轉譯為一第二指令集架構。
- 如申請專利範圍第8或9項之處理器,進一步包含一快取記憶體,該快取記憶體包含一些快取條目,該等快取條目包括狀態資訊,且該狀態資訊包含一TAL狀態。
- 如申請專利範圍第8項之處理器,其中處於該TAL狀態之各快取條目對該TAL之外的各層是不可見的。
- 如申請專利範圍第8項之處理器,其中該等位址指向以一不可校正錯誤替代一可校正錯誤之一操作。
- 如申請專利範圍第8項之處理器,其中只有在進入TAL之後才可存取該等組態暫存器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/068215 WO2013101217A1 (en) | 2011-12-30 | 2011-12-30 | Technology abstraction layer |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201346570A TW201346570A (zh) | 2013-11-16 |
TWI470434B true TWI470434B (zh) | 2015-01-21 |
Family
ID=48698449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101151082A TWI470434B (zh) | 2011-12-30 | 2012-12-28 | 在電腦系統中執行之方法,電腦系統,處理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9483293B2 (zh) |
TW (1) | TWI470434B (zh) |
WO (1) | WO2013101217A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI715704B (zh) * | 2016-02-04 | 2021-01-11 | 美商英特爾股份有限公司 | 用於以在環移轉期間保護堆疊的處理器擴展的處理器及方法 |
US11029952B2 (en) | 2015-12-20 | 2021-06-08 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US11656805B2 (en) | 2015-06-26 | 2023-05-23 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9910776B2 (en) * | 2014-11-14 | 2018-03-06 | Cavium, Inc. | Instruction ordering for in-progress operations |
KR102494241B1 (ko) * | 2016-08-18 | 2023-02-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
US10409614B2 (en) * | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
CN107135103B (zh) | 2017-05-08 | 2021-03-19 | 网宿科技股份有限公司 | 在异构资源上构建内容分发网络平台的方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030204710A1 (en) * | 2002-04-29 | 2003-10-30 | Bradley Culter | System and method for executing a fast reset of a computer system |
US20040095833A1 (en) * | 1999-09-27 | 2004-05-20 | Intel Corporation | Error correction apparatus, systems, and methods |
TW200537380A (en) * | 2004-05-07 | 2005-11-16 | Giga Byte Tech Co Ltd | Method for automatically adjusting and optimizing the operating frequency of a CPU |
TW200731136A (en) * | 2005-10-20 | 2007-08-16 | Microsoft Corp | Load balancing |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6622260B1 (en) * | 1999-12-30 | 2003-09-16 | Suresh Marisetty | System abstraction layer, processor abstraction layer, and operating system error handling |
US6948094B2 (en) * | 2001-09-28 | 2005-09-20 | Intel Corporation | Method of correcting a machine check error |
US7768518B2 (en) | 2006-09-27 | 2010-08-03 | Intel Corporation | Enabling multiple instruction stream/multiple data stream extensions on microprocessors |
US8621149B2 (en) * | 2009-12-23 | 2013-12-31 | Intel Corporation | Controlling access to a cache memory using privilege level information |
-
2011
- 2011-12-30 US US13/997,734 patent/US9483293B2/en not_active Expired - Fee Related
- 2011-12-30 WO PCT/US2011/068215 patent/WO2013101217A1/en active Application Filing
-
2012
- 2012-12-28 TW TW101151082A patent/TWI470434B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040095833A1 (en) * | 1999-09-27 | 2004-05-20 | Intel Corporation | Error correction apparatus, systems, and methods |
US20030204710A1 (en) * | 2002-04-29 | 2003-10-30 | Bradley Culter | System and method for executing a fast reset of a computer system |
TW200537380A (en) * | 2004-05-07 | 2005-11-16 | Giga Byte Tech Co Ltd | Method for automatically adjusting and optimizing the operating frequency of a CPU |
TW200731136A (en) * | 2005-10-20 | 2007-08-16 | Microsoft Corp | Load balancing |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11656805B2 (en) | 2015-06-26 | 2023-05-23 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
US11029952B2 (en) | 2015-12-20 | 2021-06-08 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US11663006B2 (en) | 2015-12-20 | 2023-05-30 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US12001842B2 (en) | 2015-12-20 | 2024-06-04 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
TWI715704B (zh) * | 2016-02-04 | 2021-01-11 | 美商英特爾股份有限公司 | 用於以在環移轉期間保護堆疊的處理器擴展的處理器及方法 |
US11176243B2 (en) | 2016-02-04 | 2021-11-16 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
US11762982B2 (en) | 2016-02-04 | 2023-09-19 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
Also Published As
Publication number | Publication date |
---|---|
US9483293B2 (en) | 2016-11-01 |
WO2013101217A1 (en) | 2013-07-04 |
US20140359640A1 (en) | 2014-12-04 |
TW201346570A (zh) | 2013-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hedayati et al. | Hodor:{Intra-Process} isolation for {High-Throughput} data plane libraries | |
CN108463826B (zh) | 用于在环转变期间保护栈的处理器扩展 | |
TWI470434B (zh) | 在電腦系統中執行之方法,電腦系統,處理器 | |
TWI769595B (zh) | 用以保護影子堆疊之處理器、方法、系統和指令 | |
JP6507435B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
JP6508851B2 (ja) | 例外からの復帰時のマスク不可割り込みの早期有効化の回避 | |
US9171159B2 (en) | Performing security operations using binary translation | |
US20220197678A1 (en) | Apparatus and method for secure instruction set execution, emulation, monitoring, and prevention | |
CN106170768B (zh) | 在计算机中分派多个线程 | |
CN109643293B (zh) | 检测总线上锁条件并且避免总线锁 | |
CN111356989A (zh) | 保护存储器内配置状态寄存器 | |
CN111344689A (zh) | 配置状态寄存器的批量存储和加载操作 | |
US20130275980A1 (en) | Hardware protection of virtual machine monitor runtime integrity watcher | |
EP4254177A1 (en) | Synchronous microthreading | |
Li et al. | Enhancing security of embedded Linux on a multi-core processor | |
US20230315455A1 (en) | Synchronous microthreading | |
US20230315445A1 (en) | Synchronous microthreading | |
EP4258109A1 (en) | Synchronous microthreading | |
US20230315462A1 (en) | Synchronous microthreading | |
US20230315461A1 (en) | Synchronous microthreading | |
US20230315572A1 (en) | Synchronous microthreading | |
US20230205869A1 (en) | Efficient exception handling in trusted execution environments | |
US20230315444A1 (en) | Synchronous microthreading | |
US20230315459A1 (en) | Synchronous microthreading | |
US10698783B2 (en) | Virtualization detection in a computing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |