TWI713629B - 切換影堆疊指標的硬體設備以及方法 - Google Patents

切換影堆疊指標的硬體設備以及方法 Download PDF

Info

Publication number
TWI713629B
TWI713629B TW105136946A TW105136946A TWI713629B TW I713629 B TWI713629 B TW I713629B TW 105136946 A TW105136946 A TW 105136946A TW 105136946 A TW105136946 A TW 105136946A TW I713629 B TWI713629 B TW I713629B
Authority
TW
Taiwan
Prior art keywords
shadow stack
token
address
symbol
shadow
Prior art date
Application number
TW105136946A
Other languages
English (en)
Other versions
TW201730751A (zh
Inventor
凡德伊斯 沙巴吉
傑森 布蘭特
巴瑞 亨特里
貝吉 帕帖爾
狄帕克 古塔
拉維 沙希塔
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW201730751A publication Critical patent/TW201730751A/zh
Application granted granted Critical
Publication of TWI713629B publication Critical patent/TWI713629B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Hardware Redundancy (AREA)

Abstract

本發明揭露一種關於一影堆疊切換的方法及設備。在一實施例中,一種硬體處理器包括硬體解碼單元,用於解碼指令;及硬體執行單元,用於執行該指令成:從影堆疊取出用於執行緒的符記,其中,該符記包括用於該執行緒之影堆疊指標,該影堆疊指標具有使用用於該執行緒之該硬體處理器之操作模式的位元值重寫的該影堆疊指標的至少一最低有效位元(LSB),從該符記移除該至少一LSB中的該位元值,以產生該影堆疊指標,及當該符記之該操作模式匹配於該硬體處理器之目前操作模式時,設定目前影堆疊指標至該符記之該影堆疊指標。

Description

切換影堆疊指標的硬體設備以及方法
本發明大抵關於電子設備。較特別的是,本發明之實施例關於一種切換影堆疊指標的硬體處理器。
一處理器或處理器組執行來自一指令集(例如指令集架構(ISA))之指令。指令集係關於編程之電腦架構的一部分,大抵包括原生資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置、及外部輸入/輸出(I/O)。應該注意的是術語「指令」在此大抵是指巨指令,例如提供至處理器以便執行之指令,或微指令,例如從一處理器之解碼器解碼巨指令的結果所產生之指令。
100‧‧‧硬體處理器
102‧‧‧硬體解碼單元
104‧‧‧硬體執行單元
106‧‧‧暫存器
108‧‧‧影堆疊指標暫存器
109‧‧‧控制暫存器
110‧‧‧資料儲存裝置
112‧‧‧堆疊
114‧‧‧影堆疊
200‧‧‧硬體處理器
201‧‧‧影堆疊指標指令
202‧‧‧解碼單元
204‧‧‧執行單元
208‧‧‧影堆疊指標暫存器
210‧‧‧資料儲存裝置
214‧‧‧影堆疊
216‧‧‧符記
218‧‧‧目前影堆疊指標
220‧‧‧下一影堆疊指標
300‧‧‧硬體處理器
301‧‧‧影堆疊指標指令
302‧‧‧解碼單元
304‧‧‧執行單元
308‧‧‧影堆疊指標暫存器
310‧‧‧資料儲存裝置
314‧‧‧影堆疊
316‧‧‧符記
318‧‧‧目前影堆疊指標
320‧‧‧下一影堆疊指標
400‧‧‧儲存影堆疊指標虛擬碼
500‧‧‧復原影堆疊指標虛擬碼
800‧‧‧處理器管線
802‧‧‧擷取階段
804‧‧‧長度解碼階段
806‧‧‧解碼階段
808‧‧‧配置階段
810‧‧‧重新命名階段
812‧‧‧排程階段
814‧‧‧暫存器讀取/記憶體讀取階段
816‧‧‧執行階段
818‧‧‧寫回/記憶體寫入階段
822‧‧‧異常處置階段
824‧‧‧確認階段
830‧‧‧前端單元
831‧‧‧指令擷取單元
832‧‧‧分支預測單元
834‧‧‧指令快取單元
836‧‧‧指令轉譯後備緩衝器
840‧‧‧解碼單元
850‧‧‧執行引擎單元
852‧‧‧重新命名/配置器單元
854‧‧‧止用單元
856‧‧‧排程器單元
858‧‧‧實體暫存器檔案單元
860‧‧‧執行叢集
862‧‧‧執行單元
864‧‧‧記憶體存取單元
870‧‧‧記憶體單元
872‧‧‧資料轉譯後備緩衝器單元
874‧‧‧資料快取單元
876‧‧‧L2快取單元
890‧‧‧處理器核心
900‧‧‧指令解碼器
902‧‧‧晶粒上互連網路
904‧‧‧L2快取之區域子集
906‧‧‧L1快取
906A‧‧‧L1資料快取
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
920‧‧‧拌和單元
922A,B‧‧‧數字轉換單元
924‧‧‧複製單元
926‧‧‧寫入遮罩暫存器
928‧‧‧16位寬算術邏輯單元
1000‧‧‧處理器
1002‧‧‧單一核心
1004‧‧‧快取單元
1006‧‧‧共用快取單元
1008‧‧‧特殊用途邏輯
1010‧‧‧系統代理單元
1012‧‧‧環狀互連單元
1014‧‧‧整合式記憶體控制器單元
1016‧‧‧匯流排控制器單元
1100‧‧‧系統
1110‧‧‧處理器
1115‧‧‧處理器
1120‧‧‧控制器集線器
1140‧‧‧記憶體
1145‧‧‧共處理器
1150‧‧‧輸入/輸出集線器
1160‧‧‧輸入/輸出裝置
1190‧‧‧圖形記憶體控制器集線器
1195‧‧‧連接器
1200‧‧‧多處理器系統
1214‧‧‧輸入/輸出裝置
1215‧‧‧處理器
1216‧‧‧第一匯流排
1218‧‧‧匯流排橋接器
1220‧‧‧第二匯流排
1222‧‧‧鍵盤/滑鼠
1224‧‧‧音頻輸入/輸出裝置
1227‧‧‧通信裝置
1228‧‧‧儲存器單元
1230‧‧‧指令/碼及資料
1232‧‧‧記憶體
1234‧‧‧記憶體
1238‧‧‧共處理器
1239‧‧‧高性能介面
1250‧‧‧點對點介面
1252‧‧‧點對點介面
1254‧‧‧點對點介面
1270‧‧‧處理器
1272‧‧‧控制邏輯
1276‧‧‧點對點介面
1278‧‧‧點對點介面
1280‧‧‧處理器
1282‧‧‧控制邏輯
1286‧‧‧點對點介面
1288‧‧‧點對點介面
1290‧‧‧晶片組
1294‧‧‧點對點介面電路
1292,1296‧‧‧介面
1298‧‧‧點對點介面電路
1300‧‧‧系統
1314‧‧‧輸入/輸出裝置
1315‧‧‧舊輸入/輸出裝置
1400‧‧‧系統晶片
1402‧‧‧互連單元
1410‧‧‧應用處理器
1420‧‧‧共處理器
1430‧‧‧靜態隨機存取記憶體單元
1432‧‧‧直接記憶體存取單元
1440‧‧‧顯示器單元
1502‧‧‧高階語言
1504‧‧‧x86編譯器
1506‧‧‧x86二進制碼
1508‧‧‧替代指令集編譯器
1510‧‧‧替代指令集二進制碼
1512‧‧‧指令轉換器
1514‧‧‧處理器
1516‧‧‧處理器
本發明係藉由範例揭示且不限於附圖者,圖中相同之參考編號指示相同元件,其中:
圖1揭示根據本發明實施例之一硬體處理器耦合於一影堆疊。
圖2揭示根據本發明實施例之一硬體處理器,用於解碼及執行一儲存影堆疊指標指令。
圖3揭示根據本發明實施例之一硬體處理器,用於解碼及執行一復原影堆疊指標指令。
圖4揭示根據本發明實施例之一影堆疊指標儲存操作之虛擬碼。
圖5揭示根據本發明實施例之一影堆疊指標復原操作之虛擬碼。
圖6揭示根據本發明實施例之一流程圖。
圖7揭示根據本發明實施例之一流程圖。
圖8A係方塊圖,揭示根據本發明實施例之一示範性有序管線及一示範性暫存器重新命名、亂序發送/執行管線兩者。
圖8B係方塊圖,揭示根據本發明實施例之包括在一處理器中的一有序架構核心示範實施例及一示範性暫存器重新命名、亂序發送/執行架構核心兩者。
圖9A係根據本發明實施例之一單一處理器核心之方塊圖,連同其連接之晶粒上互連網路及其第二階(L2)快取之區域子集。
圖9B係根據本發明實施例之圖9A中之處理器核心的一部分之展開圖。
圖10係根據本發明實施例之一處理器之方塊圖,處理器可具有一個以上之核心、可具有一整合式記憶體控制器、及可具有整合式圖形。
圖11揭示根據本發明實施例之一系統之方塊圖。
圖12揭示根據本發明實施例之一較特定示範性系統之方塊圖。
圖13揭示根據本發明實施例之第二較特定示範性系統之方塊圖。
圖14揭示根據本發明實施例之一系統晶片(SoC)之方塊圖。
圖15揭示方塊圖,根據本發明實施例對比使用一軟體指令轉換器將一來源指令集中之二進制指令轉換成一目標指令集中之二進制指令。
【發明內容及實施方式】
在文後之說明中,陳述許多特定細節用。惟,應該瞭解的是,本發明之實施例也可以在沒有這些特定細節下實施。在其他例子中,習知電路、結構及技術並不詳細說明,以免模糊本發明實施例下的原理。
說明書中有關於「某實施例」、「一實施例」、「一示範實施例」、等等是指所述之實施例包括特殊之特性、結構、或特徵,但是每一實施例不必然包括諸特殊之特性、結構、或特徵。再者,諸辭不必視為同一實施例。再者,當一特殊之特性、結構、或特徵揭述相關於一實施例時,無論是否明確說明,吾人以為其應在習於此技者認知這些特性、結構、或特徵是相關於其他實施例的理解內。
一(例如,硬體)處理器(例如,具有一或多核心) 可執行指令以利於資料上操作,例如執行算術、邏輯、或其他功能。一硬體處理器可在資料上執行(例如,指令之)執行緒。一硬體處理器可在執行多數個執行緒之間切換,例如,其中各執行緒包括上下文。例如,一硬體處理器可以為了第二執行緒之上下文而切除第一執行緒之上下文,以便開始執行第二執行緒,並且停止執行第一執行緒。
一(例如,硬體及/或軟體)堆疊可用於放入(例如,載入資料至上)及/或取出(例如,從堆疊移除或拉取資料)。在一實施例中,一堆疊係一後進先出(LIFO)資料結構。舉例而言,一堆疊可以是一呼叫堆疊、資料堆疊、或一呼叫及資料堆疊。在一實施例中,用於第一執行緒之一上下文可以放入及/或取自一堆疊。例如,當切換至第二執行緒(及其上下文)時,用於第一執行緒之一上下文可以放入一堆疊。送到堆疊之上下文(例如,上下文資料)可包括用於一執行緒之(例如,本地)變數及/或簿記資料。一堆疊指標(例如,儲存於一暫存器中)可以增量或減量,以便指向堆疊之一所需元件。本文內之特定實施例可以提供免於一堆疊指標之不必要修改(例如,增量或減量)。
返回導向編程(ROP)、跳位導向編程(JOP)、及上下文導向編程(COP)為攻擊者可用來對電腦系統(或其他電子裝置)取得控制的電腦安全開發技術的範例,例如執行惡意操作。在這些技術中,攻擊者通常取得一堆疊 (例如,呼叫堆疊)之控制,以便控制(例如,攔截)程式控制流。堆疊控制(例如,呼叫堆疊)可以透過一緩衝器超限開發或攻擊來達成。例如,指令之一執行緒(例如,段)可由現行程式碼內之一(例如,程式設計師預期或非預期之)返回指令結束。若返回位址(例如,堆疊指標)係遭攻擊者修改,則返回指令之執行將執行轉移到攻擊者選擇之返回位址(例如,來自堆疊)及容許攻擊者經由例如程式碼保持執行控制,並將指令導向下一指令集,以達成攻擊者之意圖。一攻擊者選擇指令序列集稱之為小程式。
在特定實施例中,除了一(例如,各別)堆疊(例如,本文內所述者)外,也使用一影堆疊。在一實施例中,影堆疊一詞大抵是指一儲存控制資訊(例如,可影響程式控制流或轉移之資訊)的堆疊。在一實施例中,一影堆疊可儲存例如用於一執行緒之控制資訊(例如,指標或其他位址),且一(例如,資料)堆疊可儲存例如用於一執行緒之其他資料,例如(例如,本地)變數及/或簿記資料。
在特定實施例中,一或多個影堆疊可包括及用於保護一設備及/或方法免於破壞及/或增加安全性。影堆疊(例如,圖1中所示之影堆疊114)可以代表分隔於堆疊(例如,圖1中所示之堆疊112)的資料結構之一或多個附加堆疊類型。在一實施例中,影堆疊(或複數影堆疊)用於儲存控制資訊,而非資料(例如,不是儲存於堆疊上之參 數及其他類型資料,例如,使用者層級應用程式欲寫入及/或修改者)。在一實施例中,儲存於影堆疊(或多數個堆疊)上之控制資訊為返回位址相關資訊(例如,實際返回位址、用於驗證返回位址的資訊、及/或其他返回位址資訊)。在一範例中,影堆疊用於儲存一執行緒用之返回位址之複本,例如,一對應於一執行緒的返回位址,該執行緒之上下文或其他資料已經先放在(例如,資料)堆疊上。例如,當已叫出功能或程序時,呼叫程式用之一返回位址之複本即已放在影堆疊上。返回資訊可以是一影堆疊指標(SSP),例如,其識別出影堆疊之最近(例如,頂部)元件。在特定實施例中,影堆疊可以用使用者層級模式(例如,等於三的目前特權層級(CPL),例如,一最低的特權層級)或一監督程式特權層級模式(例如,小於三的目前特權層級(CPL),例如,一較高於CPL=3的特權層級)讀取及/或寫入。在一實施例中,可以包括多數個影堆疊,但是(例如,每一邏輯處理器)一次僅容許一影堆疊作為目前之影堆疊。在特定實施例中,處理器有一(例如,某一)暫存器儲存(例如,目前的)影堆疊指標。
在一實施例中,攻擊者可能試圖取得對影堆疊的控制(例如,以及取得對處理器及/或運作處理器的軟體控制)。例如,攻擊者可能試圖改變影堆疊指標,例如改變指標以便將執行轉移至由攻擊者提供的(例如,惡意)軟體之一段。本文內之特定實施例提供影堆疊安全性(例 如,在儲存及/或復原一影堆疊指標時)。本文內之特定實施例容許堆疊指標切換(例如,在使用者模式時藉由使用者模式執行緒排程器及/或不調用(例如,呼叫)一操作系統),且無損於影堆疊之完整性。本文內之特定實施例儲存影堆疊上下文及/或復原一影堆疊上下文,以容許一安全之影堆疊切換,例如不調用操作系統。本文內之特定實施例確保一影堆疊由程式用之操作系統僅切換至有效的影堆疊裝置。本文內之特定實施例確保一使用者程式(例如,具有使用者層級特權)無法例如任意地操縱影堆疊揩標。在一實施例中,一使用者程式(例如,具有使用者層級特權)有一比操作系統低之特權(例如,可進行操作)。
圖1揭示根據本發明實施例之一硬體處理器100耦合於一影堆疊114。所述之硬體處理器100包括一硬體解碼單元102(例如,解碼器)及硬體執行單元104。所述之硬體處理器100包括暫存器106。暫存器可包括一或多個影堆疊指標暫存器108。暫存器可包括一或多個控制暫存器109,例如設定及/或讀取一處理器之一(例如,可選擇之)特性。一特性之一實施例為處理器之一操作模式。例如,處理器之目前操作模式可以在具有第一位址大小及/或運算元大小的第一操作模式與具有第二且較大位址大小及/或運算元大小的第二操作模式之間選擇。一處理器可包括一控制暫存器或暫存器,例如一延伸特性致能暫存器(EFER),以便指出多數個操作模式的哪一(例如,某 一)個目前正在操作。在一實施例中,一控制暫存器(例如,EFER)可包括一欄位(例如,其中一位元或旗標),其設定成指示出一硬體處理器是否正以32位元操作模式或64位元操作模式操作。在一實施例中,一控制暫存器(例如,EFER)可包括一欄位(例如,其中一位元或旗標),其設定成指示出一硬體處理器是否正以32位元操作模式、64位元操作模式、或一可執行32位元與64位元指令及/或資料的相容性模式操作。一控制暫存器可包括一欄位(例如,用於設定一旗標於其內),其設定成指示出一(例如,同一)硬體處理器(例如,其多數個核心之一核心)是否正以32位元操作模式及64位元操作模式的其中之一操作。在一實施例中,一32位元操作模式稱為一用於根據一32位元位址大小及/或一32位元運算元大小而執行之處理器。在一實施例中,一64位元操作模式稱為一用於根據一64位元位址大小及/或一64位元運算元大小而執行之處理器。此外或另者,可包括一資料結構(例如,一全域描述符表(GDT)或一本地描述符表(LDT)),以便設定及/或讀取一處理器之一(例如,可選擇之)特性。
所述之硬體處理器100可以和一資料儲存裝置110(例如,記憶體)通信(例如,與之耦合)。資料儲存裝置(或是和硬體處理器通信之其他裝置)可包括一(例如,資料)堆疊112及/或一影堆疊114。影堆疊114可儲存用於一執行緒之上下文,執行緒例如包括一影堆疊指 標,例如用於該上下文。影堆疊指標可以是一位址,例如一線性位址或其他值,用於指示堆疊指標之一值。在一實施例中,各線性位址指定記憶體中之不同位元組(例如,在一堆疊中)。
應該注意的是本文內之圖式並未描述所有資料通信連接方式。習於此技者應該瞭解此並未模糊圖中之特定細節。應該注意的是圖中之雙頭箭號並不需要作雙向通信,例如,其可指示單向通信(例如,往返於該組件或裝置)。通信路徑之任意或所有組合皆可用在本文內之特定實施例中。
硬體解碼單元102可接收一指令(例如,巨指令)及解碼該指令。硬體執行單元104可執行該解碼之指令(例如,巨指令),以執行一或多個操作。例如,待由解碼單元102解碼並由執行單元104執行之第一指令可以是一儲存影堆疊指標指令,例如當執行時,其用於將一影堆疊指標放到一堆疊上(例如,影堆疊114)。例如,待由解碼單元102解碼並由執行單元104執行之第二指令可以是一復原影堆疊指標指令,例如當執行時,其用於從一堆疊(例如,影堆疊114)取出(例如,拉取)一影堆疊指標。例如,一堆疊指標可以是一位址(或一位址之參考值),用於一堆疊上之一非作動元件(例如,訊框)。在一實施例中,被放到(例如,影)堆疊上之一資料集用的堆疊指標係包括成該資料集之一部分(例如,位於頂部)。在一實施例中,控制資訊(例如,影堆疊指標)放 入或取出至一影堆疊且一用於其他資訊之相關聯入口係根據一資料堆疊而放入或取出。
在一實施例中,接收一(例如,使用者層級)請求(例如,來自一使用者層級特權執行緒之執行緒),以切換一上下文(例如,放入及/或取出一影堆疊指標)。在一實施例中,一欲切換上下文之請求包括從一堆疊放入或取出一堆疊指標以外之一或多個其他資料項目。在一實施例中,以使用者層級執行之程式碼(例如,軟體)可請求一(例如,影)堆疊之放入或取出。在特定實施例中,請求為發送一指令到一處理器,以供解碼及/或執行。例如,一用於從一影堆疊取出一影堆疊指標之請求可包括執行一復原影堆疊指標指令。例如,一用於放入一影堆疊指標至一影堆疊之請求可包括執行一儲存影堆疊指標指令。
在特定實施例中,當執行時,一指令(例如,一儲存影堆疊指標指令)用於促使一影堆疊指標放至一影堆疊,例如一影堆疊指標放至根據本發明之一符記中之影堆疊。在特定實施例中,當執行時,一指令(例如,一復原影堆疊指標指令)用於促使一影堆疊指標從一影堆疊取出,例如根據本發明,符記包括從影堆疊取出之影堆疊指標。在特定實施例中,當執行時,一指令(例如,一儲存影堆疊指標指令)用於促使影堆疊對準下一(例如,隨著一指標在位址中從堆疊頂部(例如,最近放到堆疊上者)增加到堆疊底部)邊界位址,並促使一符記放到該堆疊上。一指令(例如,一儲存影堆疊指標指令及/或一復原影堆疊指 標指令)有權存取一(例如,私人)影堆疊。
圖2揭示根據本發明實施例之一硬體處理器200,用於解碼及執行一儲存影堆疊指標指令201。指令201(例如,單一指令)可由解碼單元202解碼(例如,變成微指令及/或微操作)且解碼指令可由執行單元204執行。影堆疊214可以是資料儲存裝置210中之一資料結構。目前影堆疊指標218可儲存於一影堆疊指標暫存器208中。下一影堆疊指標220可以視為被寫(例如,重寫)至目前影堆疊指標218的下一影堆疊指標。在另一實施例中,影堆疊指標可位於一暫存器外之位置。(例如,處理器200之解碼單元202及執行單元204之)目前操作模式可儲存在一暫存器中,例如在一控制暫存器中。
在特定實施例中,當執行時,一指令(例如,一儲存影堆疊指標指令201)用於促使影堆疊214對準下一(例如,隨著一指標在位址中從堆疊頂部(例如,最近放到堆疊上者)增加到堆疊底部)邊界位址,及/或促使一符記216放到該堆疊上。儘管單一符記216揭示於影堆疊214中,多數個符記(及其相關聯之其他資料)可放入及/或拉取自一堆疊。一指令可以反應於一(例如,使用者層級)請求(例如,來自一使用者層級特權執行緒之執行緒)而執行,以放入一影堆疊指標(例如,目前影堆疊指標218)至影堆疊上。
在一實施例中,一符記包括(例如,儘管不明確地)影堆疊指標之值(例如,在調用指令時),其伴隨著一或 多個指示出處理器之操作模式(例如,在調用指令時)的位元(例如,最低有效位元(LSB))。例如,一影堆疊指標可由一處理器僅在其(例如,位元組)對準時使用,例如,用於在影堆疊指標之值之最低有效位元中產生一或多個零(例如,二進制之零及一格式者)。諸最低有效位元可供處理器用來儲存處理器資訊,例如目前操作模式(例如,其影堆疊指標被放到影堆疊之執行緒者)。在一實施例中,符記為8位元組且最後及/或第二至最後位元可用於儲存操作模式,例如其影堆疊指標被放到堆疊上的執行緒之操作模式。在一實施例中,符記其大小被設計成小於位址大小及/或運算元大小,例如硬體處理器之所有操作模式者。
一處理器(例如,一執行單元)可包括一電路,用於檢查(例如,所需之)最低有效位元在重寫(例如,執行寫入)之前沒有設定於高值(例如,在二進制格式中沒有設定於一)。在一實施例中,若影堆疊指標之任意檢查最低有效位元設定於高值,則一處理器即用於弄錯(例如,造成轉返或者不暫留由儲存影堆疊指標指令之執行造成的任何變化,例如,對於一資料堆疊中之影堆疊及/或相關聯入口所執行者)。
在一實施例中,處理器(例如,一執行單元)包括一電路,用於檢查影堆疊指標呈位元組對準,例如,以致使第八位元以下之所有位元皆為零。在一實施例中,處理器(例如,一執行單元)包括一電路,用於檢查影堆疊指標 係針對多數個位元組而呈位元組對準,例如4位元組對準(例如,32位元操作模式)或8位元組對準(例如,64位元操作模式)。例如,4位元組對準可包括具有位元1及0為零的各影堆疊指標。例如,8位元組對準可包括具有位元2、1、及0為零的各影堆疊指標。
在一實施例中,一硬體處理器具有複數個可選擇之操作模式且兩操作模式具有不同位址大小,例如,32位元位址大小用於第一操作模式且64位元位址大小用於第二操作模式。在一實施例中,被放到一影堆疊上的一影堆疊指標之一或多個(例如,最低有效)位元一直設定為低值(例如,在二進制格式中為零),例如由於各影堆疊指標(例如,影堆疊之一位址)之所需(例如,位元組)對準。在本實施例中,一直設定為低值的一或多個(例如,最低有效)位元(例如,並非影堆疊指標之所有位元)係用於儲存一位元值,以便指示出上下文對應於影堆疊指標的一操作模式,例如0或1是指出第一(例如,32位元)操作模式且0或1的另一個是指出第二(例如,64位元)、不同操作模式。例如,使用單一位元可以指示兩操作模式的其中之一,使用兩位元可以指示四操作模式的其中之一,等等。
在一實施例中,一處理器用於將目前影堆疊指標複製到儲存器(例如,一暫存器),以便產生第一值(例如,在該暫存器中)。一處理器(例如,一執行單元)可包括一電路,用於設定第一值之一或多個(例如,最低有效) 位元(例如,最低有效位元或因為影堆疊指標(例如,位元組)對準而為零的位元),以便指示硬體處理器之(例如,目前)操作模式產生一符記。一符記可放到一影堆疊(例如,頂部)。在一實施例中,一處理器(例如,一執行單元)包括一電路,用於將零加到(例如,零延伸)影堆疊指標之最高有效端,例如,以致使具有第一位址大小的第一操作模式用之一影堆疊指標(例如,位址)和具有第二、較大位址大小的第二操作模式相同大小。例如,一處理器可具有一用於32位元位址大小的影堆疊指標且零延伸(例如,當製備一符記時)最高有效端至64位元,例如插入32位元位址於位元31至0且插入零於位元63至32(例如,當製備一符記時)。在一實施例中,被放在及/或取自一堆疊之一影堆疊指標(例如,總是)多數個操作模式之多數個位址大小之最大位址大小。用於符記之一位址可儲存於記憶體,例如藉由其影堆疊指標被放到影堆疊的執行緒用的上下文。符記可橫跨一堆疊上之多數個入口儲存,例如,以致使儲存有符記的堆疊上的記憶體位置的位址成為堆疊上的第一入口之位址。
圖3揭示根據本發明實施例之一硬體處理器300,用於解碼及執行一復原影堆疊指標指令301。指令301(例如,單一指令)可由解碼單元302解碼(例如,變成微指令及/或微操作)且解碼指令可由執行單元304執行。影堆疊314可以是資料儲存裝置310中之一資料結構。目前影堆疊指標318可儲存於一影堆疊指標暫存器308中。下 一影堆疊指標320可以視為被寫(例如,重寫)至目前影堆疊指標318的下一影堆疊指標。在另一實施例中,影堆疊指標可位於一暫存器外之位置。目前操作模式可儲存(例如,設定)在一暫存器中,例如在一控制暫存器中。
在特定實施例中,當執行時,一指令(例如,一復原影堆疊指標指令201)用於促使影堆疊314對準下一(例如,隨著一指標在位址中從堆疊頂部(例如,最近放到堆疊上者)增加到堆疊底部)邊界位址,及/或促使一符記316從該堆疊取出。儘管單一符記316揭示於影堆疊中,多數個符記(及其相關聯之其他資料)可放入及/或拉取自一堆疊。一指令可以反應於一(例如,使用者層級)請求(例如,來自一使用者層級特權執行緒之執行緒)而執行,以自影堆疊314取出一影堆疊指標(例如,下一影堆疊指標320)。
在特定實施例中,當執行時,一指令(例如,一復原影堆疊指標指令301)用於促使一影堆疊指標從影堆疊取出,例如根據本發明從影堆疊取出之一影堆疊指標。在一實施例中,當執行時,一指令用於(例如,容許其影堆疊指標從堆疊取出的一執行緒)將目前影堆疊指標318改變成儲存在(例如,取自)影堆疊上之影堆疊指標,供上下文載入。例如,根據本文內任一者之一符記316已先放在影堆疊314上。當執行時,一指令301可以從影堆疊314取出符記316並從符記316移除影堆疊指標,以將目前影堆疊指標318改變成從符記移除之影堆疊指標(例如,促 使影堆疊指標從符記316存到影堆疊指標暫存器308上,如同目前影堆疊指標318)。一指令(例如,其執行)可促使一或多個檢查之執行(例如,藉由一電路),例如,判定符記為正確之符記(例如,並且不是由一攻擊者操縱)。一指令可以反應於一(例如,使用者層級)請求(例如,來自一使用者層級特權執行緒之執行緒)而執行,以放入一影堆疊指標至一影堆疊上。在一實施例中,一請求係來自或用於一在硬體處理器上執行之執行緒,並且試圖令其影堆疊指標成為目前影堆疊指標,例如,以致使執行緒可存取影堆疊指標以及由影堆疊指標儲存之影堆疊中之任意資訊。在一實施例中,一指令可包括一欄位(例如,運算元),用於指示供符記(例如,含有符記之多數個入口之第一入口)儲存之影堆疊上之(例如,線性)位址。
在一實施例中,一請求者(例如,一使用者層級應用)藉由一先前儲存影堆疊指標指令來指定放在影堆疊314上之一符記316之位址,例如,該位址作為一運算元。指令之執行可以(例如,促使一電路)驗證所指位之位址是否(例如,(例如,8)位元組)對準,若否,則弄錯。一處理器可(例如,自動)從指定位址載入(例如,8位元組之)符記。在一實施例中,一符記之載入將符記及/或位置鎖定(例如,快取列),符記由另一核心或處理器取出修改。指令之執行可以(例如,促使一電路)驗證符記中記錄的硬體處理器(例如,核心)之操作 模式(例如,32位元及64位元操作模式的其中之一)是否匹配於硬體處理器之目前模式(例如,或被使用於符記執行緒之執行的模式)。例如,指令之執行可以(例如,促使一電路)驗證符記中儲存之操作模式位元值是否匹配於硬體處理器之目前模式(或被使用於符記執行緒之執行的模式),例如從一控制暫存器或其他位置讀取。指令之執行可以(例如,促使一電路)驗證儲存於符記中之影堆疊指標(例如,線性位址的格式)是否匹配於由請求者指定(例如,一運算元)於指令之(例如,線性)位址。例如,指令可以(例如,促使一電路)將影堆疊指標(例如,線性位址的格式)從符記對準到下一位址邊界,從下一位址邊界移除(例如,減去)符記的大小,以便產生第二位址,並且在第二位址未匹配於由請求者提供用於影堆疊指標恢復的位址(例如,來自復原影堆疊指標指令之運算元)時弄錯(例如,不將目前影堆疊指標從符記設定到影堆疊指標)。
指令之執行可以(例如,促使一電路)執行上述驗證(例如,檢查)之一或多項(例如,所有)並且若驗證為真,則將目前影堆疊指標更新為符記中之影堆疊指標。本文內之特定實施例促使一復原堆疊指標操作完成,以便將一影堆疊指標復原成一在影堆疊指標先前儲存時(例如,經過一儲存影堆疊指標操作)匹配於影堆疊指標的值。本文內之特定實施例在一符記使用過後將其(例如,自動)清除(例如,影堆疊指標從符記成功復原成目前影堆疊指 標),例如,以促使一復原影堆疊指標操作(例如,指令)僅在一硬體處理器(例如,邏輯處理器)上執行。一操作模式驗證可以強制執行在一操作模式中(例如,64位元模式)儲存之影堆疊指標不在第二操作模式中(例如,32位元模式)使用。特定實施例可以容許一請求者(例如,一軟體應用程式)在使用者模式或使用者空間中(例如,不調用(例如,呼叫)一操作系統)進行(例如,有效率地)切換堆疊,不需要具有(例如,任意)改變影堆疊指標的能力(例如,其中使用者模式或使用者空間並無權直接修改影堆疊指標)。在一實施例中,根據本發明之一指令有權修改及/或讀取一影堆疊及/或影堆疊指標。
在一實施例中,一符記僅可從影堆疊記憶體載入。在一實施例中,並無其他硬體處理器(例如,核心)可修改一符記(例如,載入至一暫存器),直到硬體處理器釋放鎖定為止(例如,在一符記中之影堆疊指標復原完成時)。在一實施例中,一符記僅用於復原一影堆疊指標一次,例如在一硬體處理器之目前影堆疊指標從該符記修改成影堆疊指標後,符記即抹除。在特定實施例中,單一解碼單元及單一執行單元可以分別解碼及執行儲存影堆疊指標指令201及復原影堆疊指標指令301。
在一實施例中,針對一符記從一影堆疊的每一取出及拉取,符記之大小皆相同。一復原影堆疊指標指令之執行可(例如,促使一電路)移除一或多個位元(例如,最低 有效位元(LSB)),該一或多個位元在一影堆疊之各符記中可以是相同位元位置及位元數,該符記指示出處理器之操作模式(例如,在調用指令時)。具有移除一或多個指示出操作模式的位元之符記之值可以是影堆疊指標,其隨後可載入成為目前影堆疊指標。在一實施例中,符記為8位元組且最後及/或第二至最後位元是用於儲存操作模式,例如從產生(例如,生成)影堆疊指標之符記移除那些最後及/或第二至最後位元(例如,用(一或多個)零取代)。一符記316從一影堆疊314取出至儲存器之一快取列時例如可由另一硬體處理器將儲存器之諸快取列閉鎖以免修改,直到促使取出之復原指令完成執行(例如,止用)。在一實施例中,指示出處理器之操作模式的一符記中的位元數及位元位置為固定,例如相同之最低有效位元在每一影堆疊指標中為低值(例如,零),例如基於位元組對準。在一實施例中,一符記在一影堆疊指標中之位址為單一符記之多數個位址中之第一位址(例如,當符記儲存於多數個記憶體位址位置上時)。
圖4揭示根據本發明實施例之一影堆疊指標儲存操作(例如,用於一儲存影堆疊指標指令之微碼)之虛擬碼400。請參閱圖4,EFER可以視為一延伸特性致能暫存器,例如用於一處理器之一特殊組構暫存器,該處理器每一次是以32位元操作模式或64位元操作模式執行。EFER.LMA可以視為EFER中之一長模式活動旗標,例如當致能(例如,設定高值)時,將硬體處理器放入長(例 如,64位元)模式。碼段長(CS.L)可以視為一碼段入口(例如,全域描述符表(GDT)或區域描述符表(LDT))中之一旗標,以指示長(例如,64位元)模式,例如當設定高值時(即二進制中的一)。在一實施例中,設定CS.L=1同時也設定EFER.LMA=1及/或清除CS.L同時也清除EFER.LMA。在一實施例中,當EFER.LMA=1且CS.L=1時,一硬體處理器即在長模式(例如,所有指令及/或位址皆解讀成64位元大小)。例如CS.L=1且EFER.LMA=1可指示出64位元模式且所有其他組合可指示出32位元模式。
虛擬碼400中之列01用於產生一符記(例如,儲存於temp(例如,一暫存器或其他記憶體)中),符記具有目前影堆疊指標值與處理器之操作模式的一按位元或操作結果的值(例如,在此例子中,操作模式為CS.L與EFER.LMA之按位元AND操作的結果)。例如,列01可產生一(例如,8位元組)符記,符記保留影堆疊指標值與處理器(例如,邏輯處理器)之操作模式的目前值,例如,執行執行緒以令其影堆疊指標放到一影堆疊。在一實施例中,影堆疊指標(例如,一直)是在32位元模式中對準的4位元組且因此位元1及0(例如,一直)是0,而影堆疊指標(例如,一直)是在64位元模式中對準的8位元組且因此位元2、1及0(例如,一直)是0。在此實施例中,機器之操作模式可儲存在為零之諸值之重疊中,例如在暫時變數(temp)之位元0及/或位元1中。 在一實施例中,處理器之操作模式指示此虛擬碼是否以32位元操作模式、相容性操作模式、或64位元操作模式執行,舉例而言,在64位元模式中,EFER.LMA為1且CS.L為1,所以temp中之位元0可設定成值1。在一實施例中,相容性位元模式EFER.LMA為1且CS.L為0,所以temp中之位元0可設定成值0。在一實施例中,在32位元模式中,EFER.LMA為0,所以temp中之位元0為(例如,設定成)值0。
虛擬碼400中之列02用於將目前影堆疊指標對準下一8位元組邊界(例如,基於所有符記用之一64位元位址),以便產生被儲存到目前影堆疊指標的下一影堆疊指標,用於準備放入符記(例如,temp中的值)。例如,若影堆疊從高位址成長到低位址,例如當新資料放在影堆疊上時,則影堆疊指標減少(儘管其在另一實施例中可能是增加)。在此範例中為了將影堆疊指標對準下一8位元組邊界,列02清除影堆疊指標之最低有效(例如,低階)三位元。例如,若影堆疊指標值為10004,影堆疊上之下一8位元組對準位置為10000。
虛擬碼400中之列03用於將8位元組符記(例如,儲存於位置temp)放到影堆疊上。一影堆疊放入操作之其他實施例可將所需大小之符記放在一影堆疊上。儲存符記處之影堆疊上之位置之位址(例如,線性)可儲存於(例如,不同及/或非特權)記憶體中。這在本文內可稱為「記憶體運算元」。
圖5揭示根據本發明實施例之一影堆疊指標復原操作之虛擬碼500,例如用於一復原影堆疊指標指令之微碼。以下假設一符記已先放在影堆疊上且資訊已得知有關於儲存符記處之影堆疊上之位置。
虛擬碼500中之列01用於計算由記憶體(mem)運算元指定之影堆疊中之符記之位置之線性位址。
虛擬碼500中之列02用於檢查記憶體運算元之線性位址對準8位元組。
若否,虛擬碼500中之列03用於促使一(例如,總體)弄錯,例如用於結束虛擬碼500之執行。在一實施例中,列04與列12之間的操作為基元方式地執行,例如若任何部分失效(例如,錯誤),則由諸列造成之改變即重算(例如,未完成)。在一實施例中,基元方式地執行一操作意味著一旦符記已載入(例如,在列04中),則處理器鎖定該快取列,以致使記憶體中之符記無法由系統中之任意其他邏輯處理器修改(例如,在一中央處理單元(CPU)中)。在一實施例中,FI項大致上指以FI項開始的虛擬碼的一區塊的一端。在一實施例中,一處理器及/或方法例如用於產生一錯誤指示(例如,將錯誤值設定為一),且錯誤處理程序處理該錯誤(例如,偵測一錯誤指示及促使一錯誤操作執行)。
虛擬碼500中之列04用於將由記憶體運算元中指定之(例如,線性)位址指向的8位元組符記載入到位置SSP_Tmp並由任意其他處理器閉鎖該位置以免修改,例如 藉由取得該位置(例如,快取列)之所有權。此亦包括一供錯誤(例如,命名為「fault」)依上述歸零之變數。
虛擬碼500中之列05用於檢查機器之目前操作模式之位元值是否匹配於符記中之操作模式之位元值(例如,SSP_Tmp)。在一實施例中,符記之位元0指示當符記產生時處理器之操作模式。在一實施例中,此值用於匹配機器之目前模式(例如,由上述之EFER.LMA & CS.L所決定)或者可以產生一錯誤(例如,fault=1),例如接著執行重算。
虛擬碼500中之列06用於檢查處理器之目前操作模式是否為32位元(例如,或相容性)模式,在此實施例中之線性位址空間為32位元且記錄於符記中之影堆疊指標值(SSP_Tmp)為64位元寬,符記之位元63:32為0。若非如此,則產生一錯誤,且例如執行重算。
虛擬碼500中之列07用於移除操作模式之位元值,例如在所述之實施例中,位元值在符記(SSP_Tmp)中之位元位置0中且存回到變數TMP中。TMP現在即包含從堆疊取出之符記中之影堆疊指標。
虛擬碼500中之列08-10用於檢查來自符記中之影堆疊指標是否為預期值。本範例中之列08將符記之影堆疊指標(儲存於TMP中)對準下一8位元組邊界,以產生第二值(儲存於TMP中),本範例中之列09從第二值減去符記之大小(例如,8位元組),以產生第三值(儲存於TMP中),及本範例中之列10比較第三值(儲存於 TMP中且來自符記)與由請求者傳遞之影堆疊指標線性位址(例如,SSP_LA),以判定來自符記之影堆疊指標是否為影堆疊指標之預期值,且若非,則視為錯誤。例如,在調用儲存影堆疊指標操作時,一儲存影堆疊指標操作(例如,根據虛擬碼400)對準且放入含有影堆疊指標之8位元組符記,至少列08-10可重新產生預期成為依循於儲存影堆疊指標操作之值。在一實施例中,此重新產生之值用於匹配提供給復原影堆疊指標操作(例如,根據虛擬碼500)之記憶體運算元(mem operand)之線性位址。若未匹配,則在所述之實施例中產生一錯誤(例如,fault=1),且例如執行重算,例如影堆疊指標不變且符記仍在影堆疊上。
若為匹配(例如,無錯誤),則虛擬碼500中之列11將8位元組符記設定為零,使此符記無法再使用。任何鎖定(例如,在記憶體運算元SSP_LA所指之快取列上)皆釋放,例如在虛擬碼500中之列12中。在一實施例中,確定列4-12以基元方式完成,並藉由清除列11中之符記(例如,若未偵測到錯誤)來確定一有效符記中之影堆疊指標之一復原是在一具有多數個邏輯處理器的系統(例如,CPU)中的僅一邏輯處理器上完成,以防止多數個邏輯處理器使用同一影堆疊指標執行的狀況。
若偵測到錯誤(例如,錯誤等於一),則虛擬碼500中之列13促使一控制保護(#CP)弄錯,例如使用一錯誤碼指示一來自此(例如,復原影堆疊指標)指令之錯誤。
虛擬碼500中之列14是在未偵測到錯誤時(例如,錯誤等於零)用於將目前影堆疊指標設定成符記中所記錄之影堆疊指標之值。例如,本實施例中之符記之位元0儲存處理器之操作模式,所以位元0被清除(例如,設定為零),而模式相關檢查即完成。
文後為可以各別使用圖4及5中之虛擬碼的兩指令範例。在此例子中,這些指令可在使用者模式中執行執行緒。在此例子中,送出之執行緒(例如,取消排程之執行緒)用於執行以下步驟:根據虛擬碼400執行一儲存影堆疊指標指令,以便於此時隨著一符記中之處理器之操作模式儲存影堆疊指標,並將符記放在(例如,目前使用之)影堆疊上。在此例子中,另一指令可讀取一暫存器中之目前影堆疊指標值及隨後將影堆疊頂部之此(例如,線性)位址儲存到送出之執行緒的執行緒上下文結構。在此例子中,進入之執行緒(例如,排程之執行緒)用於執行以下步驟:讀取該執行緒之上下文結構,以判定(或取得)影堆疊頂部之線性位址,及根據虛擬碼500執行一復原影堆疊指標指令,以便於復原進入之執行緒之影堆疊指標。一記憶體運算元可提供至復原影堆疊指標指令,以便指定由一儲存影堆疊指標指令產生之符記之位址,例如從執行緒上下文結構讀取之記憶體運算元。
在一實施例中,影堆疊載入(例如,影堆疊載入)及影堆疊儲存(例如,影堆疊儲存)操作(例如,微指令)為彼此不同(例如,非影堆疊)之載入及儲存操作。在特 定實施例中,一影堆疊載入操作僅容許從影堆疊型記憶體載入,例如以致使若執行影堆疊載入之位址並非影堆疊型時,此操作即弄錯。在特定實施例中,此可防止影堆疊載入操作(例如,一包括影堆疊載入操作的復原影堆疊指標指令(例如,巨指令))之使用從一非影堆疊記憶體載入。在特定實施例中,一影堆疊儲存操作僅容許儲存影堆疊型記憶體,例如以致使若執行影堆疊儲存操作之位址並非影堆疊型時,此操作即弄錯(例如,產生一錯誤指示)。在特定實施例中,此可防止影堆疊儲存操作(例如,一包括影堆疊儲存操作的儲存影堆疊指標指令(例如,巨指令))被用於儲存(例如,受騙儲存)到非影堆疊記憶體,例如由於影堆疊指標在堆疊端部外。
在特定實施例中,一或多個影堆疊係位於記憶體中,其在分頁表中被標記成影堆疊型,例如以致使非影堆疊(例如,正常)操作(例如,影堆疊載入操作及影堆疊儲存操作以外之操作)不被容許存取此記憶體。在一實施例中,僅一儲存影堆疊指令(例如,根據本發明)被容許寫入影堆疊型之記憶體(例如,區域)。在一實施例中,僅控制流指令(例如,呼叫(CALL)指令)及儲存影堆疊指令(例如,根據本發明)被容許寫入影堆疊型之記憶體(例如,區域)。例如,執行一影堆疊儲存操作之儲存影堆疊(例如,指標)指令可容許寫入影堆疊記憶體,但是若記憶體(例如,記憶體位址)並非影堆疊型,則弄錯(例如,產生一錯誤指示)。在一實施例中,僅一儲存影 堆疊指令(例如,根據本發明)被容許從影堆疊型之記憶體(例如,區域)載入。在一實施例中,僅控制流指令(例如,返回(RET)指令)及影堆疊復原指令(例如,根據本發明)被容許從影堆疊型之記憶體(例如,區域)載入。例如,執行一影堆疊載入操作之復原影堆疊(例如,復原影堆疊指標)指令可容許從影堆疊記憶體載入(例如,讀取),但是若記憶體(例如,記憶體位址)並非影堆疊型,則弄錯。
圖6揭示根據本發明實施例之一流程圖600。流程圖600包括從一硬體處理器之一影堆疊取出一用於執行緒的符記,其中,符記包括一用於執行緒之影堆疊指標,具有使用用於執行緒之硬體處理器之一操作模式的一位元值重寫的影堆疊指標的至少一最低有效位元(LSB)602,移除符記之至少一LSB中的位元值,以產生影堆疊指標604,及當符記之操作模式匹配於硬體處理器之一目前操作模式時,設定一目前影堆疊指標至符記之影堆疊指標606。
圖7揭示根據本發明實施例之一流程圖700。流程圖700包括複製用於一執行緒的一硬體處理器的一目前影堆疊指標,以產生第一值702,使用一位元值重寫第一值中之至少一最低有效位元(LSB),以指示出用於執行緒的硬體處理器的一目前操作模式,以產生一符記704,及將符記放至一影堆疊706。
在一實施例中,一種硬體處理器包括硬體解碼單元, 用於解碼指令;及硬體執行單元,用於執行該指令成:從影堆疊取出用於執行緒的符記,其中,該符記包括用於該執行緒之影堆疊指標,該影堆疊指標具有使用用於該執行緒之該硬體處理器之操作模式的位元值重寫的該影堆疊指標的至少一最低有效位元(LSB),從該符記移除該至少一LSB中的該位元值,以產生該影堆疊指標,及當該符記之該操作模式匹配於該硬體處理器之目前操作模式時,設定目前影堆疊指標至該符記之該影堆疊指標,及/或當該符記之該操作模式不匹配於該硬體處理器之目前操作模式時,不設定該目前影堆疊指標至該符記之該影堆疊指標。該硬體處理器之該操作模式可以在具有第一位址大小之第一操作模式與具有第二、較大位址大小之第二操作模式之間選擇。該符記之大小可以是該第二、較大位址大小,以便在該第一操作模式中用於執行緒用之符記及在該第二操作模式中用於執行緒用之符記兩者。當該影堆疊上之該符記之位址並非影堆疊位址時,該處理器(例如,該硬體執行單元)可產生錯誤指示(例如,錯誤)。用於該符記之位址可以是該指令之運算元。該硬體執行單元可執行該指令成:將該符記之該影堆疊指標對準下一位址邊界,移除該下一位址邊界之該符記之大小,以產生第二位址,及當該第二位址不匹配於該指令之該運算元之該位址時,不設定該目前影堆疊指標至該符記之該影堆疊指標。當該目前影堆疊指標被設定為該符記之該影堆疊指標時,該硬體執行單元可執行該指令成清除該影堆疊之該符記。 該硬體解碼單元可解碼第二指令,及該硬體執行單元可執行該第二指令成:複製用於該執行緒之該目前影堆疊指標,以產生第一值,設定至少一最低有效位元(LSB)於該第一值中,以指示該硬體處理器之目前操作模式,以產生第二符記,及將該第二符記放至該影堆疊。
在另一實施例中,一種方法包括從硬體處理器之影堆疊取出用於執行緒的符記,其中,該符記包括用於該執行緒之影堆疊指標,具有使用用於該執行緒之該硬體處理器之操作模式的位元值重寫的該影堆疊指標的至少一最低有效位元(LSB),移除該符記之該至少一LSB中的該位元值,以產生該影堆疊指標,及當該符記之該操作模式匹配於該硬體處理器之目前操作模式時,設定目前影堆疊指標至該符記之該影堆疊指標,及/或當該符記之該操作模式不匹配於該硬體處理器之該目前操作模式時,不設定該目前影堆疊指標至該符記之該影堆疊指標。該硬體處理器之該操作模式可以在具有第一位址大小之第一操作模式與具有第二、較大位址大小之第二操作模式之間選擇。該符記之大小可以是該第二、較大位址大小,以便在該第一操作模式中用於執行緒用之符記及在該第二操作模式中用於執行緒用之符記兩者。該方法可包括當該影堆疊上之該符記之位址並非影堆疊位址時,則產生錯誤指示(例如,錯誤)。該方法可包括在請求下提供該執行緒位址,以設定目前影堆疊指標。該方法可包括將該符記之該影堆疊指標對準下一位址邊界,移除該下一位址邊界之該符記之大 小,以產生第二位址,及當該第二位址不匹配於在該請求下用於設定該目前影堆疊指標之該位址時,不設定該目前影堆疊指標至該符記之該影堆疊指標。該方法可包括當該目前影堆疊指標被設定為該符記之該影堆疊指標時,則清除該影堆疊之該符記。該方法可包括複製用於該執行緒之該目前影堆疊指標,以產生第一值,設定至少一最低有效位元(LSB)於該第一值中,以指示該硬體處理器之目前操作模式,以產生第二符記,及將該第二符記放至該影堆疊。
在又一實施例中,一種硬體處理器包括硬體解碼單元,用於解碼指令;及硬體執行單元,用於執行該指令成:複製用於執行緒之目前影堆疊指標,以產生第一值,使用位元值重寫該第一值中之至少一最低有效位元(LSB),以指示出用於該執行緒的硬體處理器的目前操作模式,以產生符記,及將該符記放至影堆疊。該硬體處理器之該目前操作模式可以在具有第一位址大小之第一操作模式與具有第二、較大位址大小之第二操作模式之間選擇。該符記之大小可以是該第二、較大位址大小,以便在該第一操作模式中用於執行緒用之符記及在該第二操作模式中用於執行緒用之符記兩者。當被放入該符記之位址並非影堆疊位址時,該處理器(例如,該硬體執行單元)可產生錯誤指示(例如,錯誤)。該硬體執行單元可執行該指令成:將該符記之該影堆疊指標對準下一位址邊界,以產生第二值,及設定該第二值為下一影堆疊指標。該硬體 解碼單元可解碼第二指令,及該硬體執行單元可執行該第二指令成:從該影堆疊取出用於該執行緒之該符記,移除該符記之該至少一LSB中之位元值,以產生新的影堆疊指標,及當該符記之操作模式匹配於該硬體處理器之該目前操作模式時,設定下一影堆疊指標至該符記之該新的影堆疊指標,及/或當該符記之該操作模式不匹配於該硬體處理器之該目前操作模式時,不設定該下一影堆疊指標至該符記之該新的影堆疊指標。
在再一實施例中,一種方法包括複製用於執行緒的硬體處理器的目前影堆疊指標,以產生第一值,使用位元值重寫該第一值中之至少一最低有效位元(LSB),以指示出用於該執行緒的該硬體處理器的目前操作模式,以產生符記,及將符記放至影堆疊。該硬體處理器之該目前操作模式可以在具有第一位址大小之第一操作模式與具有第二、較大位址大小之第二操作模式之間選擇。該符記之大小可以是該第二、較大位址大小,以便在該第一操作模式中用於執行緒用之符記及在該第二操作模式中用於執行緒用之符記兩者。該方法可包括當被放入該符記之位址並非影堆疊位址時,則產生錯誤指示(例如,錯誤)。該方法可包括將該符記之該影堆疊指標對準下一位址邊界,以產生第二值,及設定該第二值為下一影堆疊指標。該方法可包括從該影堆疊取出用於該執行緒之該符記,移除該符記之該至少一LSB中之位元值,以產生新的影堆疊指標,及當該符記之操作模式匹配於該硬體處理器之該目前操作 模式時,設定下一影堆疊指標至該符記之該新的影堆疊指標,及/或當該符記之該操作模式不匹配於該硬體處理器之該目前操作模式時,不設定該下一影堆疊指標至該符記之該新的影堆疊指標。
在又再一實施例中,一種設備包含儲存碼之資料儲存裝置,當由硬體處理器執行時,該碼促使該硬體處理器執行本文內所述之任意方法。一種設備可以是詳細說明中所述者。一種方法可以是詳細說明中所述者。
一指令集包括一或多個指令格式。一給定指令格式可界定許多欄位(例如,位元數、位元位置),除了別的以外,用以指定欲執行之操作(例如,運算碼)及供操作執行於其上之運算元及/或其他資料欄位(例如,遮罩)。有些指令格式透過指令樣板(或子格式)之界定而進一步細分。例如,一給定指令格式之指令樣板可界定成具有指令格式欄位之不同子集(所包括之欄位典型上是依相同順序,但是至少某些有不同位元位置,因為鮮少有欄位包括在內)及/或界定成具有一不同解讀之給定欄位。因此,一ISA之各指令使用一給定指令格式來表示(且若界定時是在該指令格式之指令樣板之一給定者內),並包括用於指定操作及運算元之欄位。例如,一示範性ADD指令具有一特定運算元及一指令格式,指令格式包括一用以指定該運算元之運算元欄位及一用以選擇運算元之運算元欄位(來源1/目的地及來源2);並且此ADD指令在一指令流中之發生將在選擇特定運算元之運算元欄位中有特定內 容。SIMD延伸之一組(稱為先進向量延伸(AVX)(AVX1及AVX2)且使用向量延伸(VEX)編碼方案)已經發表(例如,請參閱Intel® 64 and IA-32 Architectures Software Developer’s Manual,September 2015,及參閱Intel® Architecture Instruction Set Extensions Programming Reference,August 2015)。
示範性核心架構、處理器、及電腦架構
處理器核心可依不同方式、針對不同用途、及在不同處理器中實施。例如,諸核心之實施方式包括:1)用於一般用途計算之一般用途有序核心;2)用於一般用途計算之高性能一般用途亂序核心;3)基本上用於圖形及/或科學(通量)計算之特殊用途核心。不同處理器之實施方式包括:1)一CPU,包括一或多個用於一般用途計算之一般用途有序核心及/或一或多個用於一般用途計算之一般用途亂序核心;及2)一共處理器,包括一或多個用於圖形及/或科學(流通量)之特殊用途核心。這些不同處理器導致不同電腦系統架構,其可包括:1)共處理器,設在一來自CPU之個別晶片上;2)共處理器,設在一與CPU相同封裝中之個別晶粒上;3)共處理器,設在與CPU相同之晶粒上(在此情況中,此共處理器有時稱為特殊用途邏輯,例如整合式圖形及/或科學(通量)邏輯,或特殊用途核心);及4)一系統,設在一包括相同晶粒上有上述CPU(有時稱為應用核心或應用處理器)、上述 共處理器、及其他功能之晶片上。示範性核心架構將藉由示範性處理器及電腦架構之說明揭述於後。
示範性核心架構
有序及亂序核心方塊圖
圖8A係方塊圖,揭示根據本發明實施例之一示範性有序管線及一示範性暫存器重新命名亂序發送/執行管線。圖8B係方塊圖,揭示根據本發明實施例之包括在一處理器中的一有序架構核心示範實施例及一示範性暫存器重新命名亂序發送/執行架構核心兩者。圖8A-B中之實線框說明有序管線及有序核心,而虛線框之選項性附加則說明暫存器重新命名亂序發送/執行管線及核心。已知有序態樣為亂序態樣之一子集,亂序態樣將揭述於後。
在圖8A中,一處理器管線800包括一擷取階段802、一長度解碼階段804、一解碼階段806、一配置階段808、一重新命名階段810、一排程(亦稱為配送或發送)階段812、一暫存器讀取/記憶體讀取階段814、一執行階段816、一寫回/記憶體寫入階段818、一異常處置階段822、及一確認階段824。
圖8B揭示處理器核心890包括一前端單元830耦合於一執行引擎單元850,且兩者皆耦合於一記憶體單元870。核心890可以是一精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或混合式或替代式核心類型。就另一選項而言,核心 890可以是一特殊用途核心,例如像是一網路或通信核心、壓縮引擎、共處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖形核心、或類似者。
前端單元830包括一分支預測單元832耦合於一指令快取單元834,指令快取單元耦合於一指令轉譯後備緩衝器(TLB)836,指令轉譯後備緩衝器則耦合於一指令擷取單元838,指令擷取單元耦合於一解碼單元840。解碼單元840(或解碼器或解碼器單元)可解碼指令(例如,巨指令),且產生作為輸出一或多個微操作、微碼輸入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或反映、或導出。解碼單元840可以使用許多不同機構實施。適合之機構範例包括但是不限定的有查詢表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心890包括一微碼ROM或儲存某些巨指令(例如,在解碼單元840中或在前端單元830內)用之微碼的其他媒體。解碼單元840耦合於執行引擎單元850中之一重新命名/配置器單元852。
執行引擎單元850包括重新命名/配置器單元852,重新命名/配置器單元耦合於一止用單元854及一組的一或多個排程器單元856。排程器單元856代表任意數量之不同排程器,包括保留站、中央指令窗、等等。排程器單元856耦合於實體暫存器檔案單元858。各實體暫存器檔案單元858代表一或多個實體暫存器檔案,不同之實體暫存 器檔案儲存一或多個不同資料類型,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,一指令指標,即欲執行之下一指令之位元址)、等等。在一實施例中,實體暫存器檔案單元858包含一向量暫存器單元、一寫入遮罩暫存器單元、及一純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及一般用途暫存器。實體暫存器檔案單元858由止用單元854重疊,以便說明可以實施暫存器重新命名及亂序執行的不同方式(例如,使用重排序緩衝器及止用暫存器檔案;使用未來檔案、歷史緩衝器、及止用暫存器檔案;使用暫存器圖及暫存器庫、等等)。止用單元854及實體暫存器檔案單元858耦合於執行叢集860。執行叢集860包括一組的一或多個執行單元862及一組的一或多個記憶體存取單元864。執行單元862可執行許多操作(例如,移位、加、減、乘)及在許多資料類型上執行(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。儘管一些實施例包括許多專用於特定功能或功能組之執行單元,其他實施例可以包括僅一執行單元或全執行所有功能之多數個執行單元。排程器單元856、實體暫存器檔案單元858、及執行叢集860揭示成可能呈複數,因為某些實施例係針對資料/操作之某些類型產生個別管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,各有自己的排程器單元、實體暫存器檔案單元、及/或執行叢集, 而且在個別記憶體存取管線之情況中,某些實施例僅在此管線之執行叢集具有記憶體存取單元864時實施)。亦應瞭解的是在使用個別管線之場合中,這些管線之一或多者可以是亂序發送/執行且其餘是有序。
該組記憶體存取單元864耦合於記憶體單元870,記憶體單元包括一資料TLB單元872,資料TLB單元耦合於一資料快取單元874,資料快取單元耦合於一第二階(L2)快取單元876。在一示範實施例中,記憶體存取單元864可包括一載入單元、一儲存位址單元、及一儲存資料單元,其各耦合於記憶體單元870中之資料TLB單元872。指令快取單元834進一步耦合於記憶體單元870中之第二階(L2)快取單元876。L2快取單元876耦合於快取之其他一或多階且最後耦合於一主記憶體。
舉例而言,示範性暫存器重新命名亂序發送/執行核心架構可實施管線800如下:1)指令擷取838執行擷取及長度解碼階段802、804;2)解碼單元840執行解碼階段806;3)重新命名/配置器單元852執行配置階段808及重新命名階段810;4)排程器單元856執行排程階段812;5)實體暫存器檔案單元858及記憶體單元870執行暫存器讀取/記憶體讀取階段814;執行叢集860執行執行階段816;6)記憶體單元870及實體暫存器檔案單元858執行寫回/記憶體寫入階段818;7)許多單元可介入異常處置階段822;及8)止用單元854及實體暫存器檔案單元858執行確認階段824。
核心890可支援一或多個指令集(例如,x86指令集(具有已加入較新版本的一些延伸);加州桑尼維爾市MIPS Technologies公司之MIPS指令集;桑尼維爾市ARM Holdings公司之ARM®指令集(具有選項性之其他延伸,例如NEON)),包括本文內所述之指令。在一實施例中,核心890包括邏輯器,以支援一封包資料指令集延伸(例如,AVX1、AVX2),藉以容許由許多多媒體應用程式使用之操作可使用封包資料執行。
應該瞭解的是核心可支援多線執行(執行操作或線之二或多個平行組),且可依許多方式進行,包括時間切割多線執行、同時多線執行(其中單一實體核心提供一邏輯核心給各線,實體核心係同時多線執行)、或其組合(例如,時間切割擷取及解碼並且隨後同時多線執行,像是Intel® Hyperthreading科技)。
儘管暫存器重新命名揭述於亂序執行之內文中,應該瞭解的是暫存器重新命名可用在有序架構。儘管處理器之揭示實施例亦包括個別指令與資料快取單元834/874及一共用L2快取單元876,替代實施例可具有一同時用於指令與資料之單一內部快取,例如第一階(L1)內部快取,或多階內部快取。在一些實施例中,系統可包括一內部快取與一設於核心及/或處理器外之外部快取的組合。或者,所有快取皆在核心及/或處理器外。
特定示範性有序核心架構
圖9A-B係一較特定示範性有序核心架構之方塊圖,核心為一晶片中之多數邏輯方塊(包括同型及/或不同型之其他核心)的其中之一。邏輯方塊透過一高頻寬互連網路(例如,環狀網路)通信於一些固定功能邏輯、記憶體輸入/輸出(I/O)介面、及其他所需之輸入/輸出(I/O)邏輯,此視應用而定。
圖9A係根據本發明實施例之一單一處理器核心之方塊圖,連同其連接之晶粒上互連網路902及其第二階(L2)快取904之區域子集。在一實施例中,一指令解碼單元900以一緊縮資料指令集延伸支援x86指令集。一L1快取906容許低潛時存取,以快取記憶體至純量及向量單元。在一實施例中(為了簡化設計),一純量單元908及一向量單元910使用個別暫存器組(分別為純量暫存器912及向量暫存器914),且在其間轉移之資料寫入記憶體及隨後從第一階(L1)快取906讀回,替代實施例可使用不同方式(例如,使用單一暫存器組或包括一通信路徑,容許資料在兩暫存器檔案之間轉移,不需寫入及讀回)。
L2快取904之區域子集為一全域L2快取之一部分,全域L2快取分割成個別區域子集且每一處理器核心有一區域子集。各處理器核心具有一直接存取路徑通往其自身之L2快取904之區域子集。由一處理器核心讀取之資料儲存在L2快取子集904中且可快速存取,即與存取自身區域L2快取子集之其他處理器核心並行。由一處理器核 心寫入之資料儲存在其自身之L2快取子集904中且必要時從其他子集清除。環狀網路可確保共用資料之一致性。環狀網路係雙向性,以容許代理模組像是處理器核心、L2快取及其他邏輯方塊在晶片內彼此通信。各環狀資料路徑為每個方向有1012位元寬。
圖9B係根據本發明實施例之圖9A中之處理器核心的一部分之展開圖。圖9B包括L1資料快取906A,即L1快取904之一部分,以及關於向量單元910及向量暫存器914之較多細節。較明確說,向量單元910係16位寬向量處理單元(VPU)(參閱16位寬算術邏輯單元(ALU)928),其執行整數、單精度浮點數、及雙精度浮點數指令。VPU使用拌和單元920支援拌和暫存器輸入、使用數字轉換單元922A-B支援數字轉換、及使用記憶體輸入瑞上之複製單元924複製。寫入遮罩暫存器926容許預測之生成向量寫入。
圖10係根據一實施例之一具有多核心、具有一整合式記憶體控制器、及具有整合圖形的處理器1000之方塊圖。圖10中之實線框說明一具有單一核心1002A、一系統代理1010、一組的一或多個匯流排控制器單元1016之處理器1000,而虛線框之選項性附加則說明一具有多核心1002A-N、系統代理單元1010中之一組的一或多個整合式記憶體控制器單元1014、及特殊用途邏輯1008之替代性處理器1000。
因此,處理器1000之不同實施方式可包括:1)一 CPU,具有特殊用途邏輯1008,係整合式圖形及/或科學(通量)邏輯(其可包括一或多個核心),及核心1002A-N,係一或多個一般用途核心(例如,一般用途有序核心、一般用途亂序核心、兩者之組合);2)一共處理器,具有核心1002A-N,係大量特殊用途核心,主要用於圖形及/或科學(流通量);及3)一共處理器,具有核心1002A-N,係大量一般用途有序核心。因此,處理器1000可以是一般用途處理器、共處理器或特殊用途處理器,例如像是網路或通信處理器、壓縮引擎、圖形處理器、GPGPU(一般用途計算圖形處理單元)、高通量多重整合核心(MIC)處理器(包括30或更多核心)、嵌入式處理器、或類似者。處理器可在一或多個晶片上實施。處理器1000可以是一或多個基板之一部分及/或使用許多製程技科之任一者實施於基板上,例如像是BiCMOS、CMOS、或NMOS。
記憶體階層包括核心內之一或多階快取、一組或一或多個共用快取單元1006、及耦合於整合式記憶體控制器單元組1014的外部記憶體(圖中未示)。共用快取單元組1006可包括一或多個中階快取,例如第二階(L2)、第三階(L3)、第四階(L4),或其他階快取、最末階快取(LLC)、及/或其組合。儘管在一實施例中一環狀互連單元1012將整合式圖形邏輯1008、共用快取單元組1006、及系統代理單元1010/整合式記憶體控制器單元1014互連,替代實施例可使用任意數量之習知技術將諸 單元互連。在一實施例中,階層維持在一或多個快取單元1006與核心1002A-N之間。
在一些實施例中,核心1002A-N之一或多者可以多線操作。系統代理1010包括用以協調與操作核心1002A-N之諸組件。系統代理單元1010可包括例如一電力控制單元(PCU)及一顯示單元。PCU可以是或包括用以調節核心1002A-N與整合式圖形邏輯1008之電力狀態所需的邏輯及組件。顯示單元用以驅動一或多個外接顯示器。
依據架構指令集,核心1002A-N可以是均質性或異質性;亦即,核心1002A-N之二或多者可以執行同一指令集,而其他核心可以僅執行指令集之一子集或一不同指令集。
示範性電腦架構
圖11-14係示範性電腦架構之方塊圖。膝上型、桌上型、掌上型個人電腦、個人數位化助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲機、機上盒、微控制器、行動電話、可攜式媒體播放器、掌上型裝置、及許多其他電子裝置技藝中習知之其他系統設計與構型亦適用。大抵上,可併入本文內所述之一處理器及/或其他執行邏輯的廣泛系統或電子裝置皆大致適用。
請即參閱圖11,揭示根據本發明之一實施例之一系統1100之方塊圖。系統1100可包括一或多個處理器 1110、1115,其耦合於一控制器集線器1120。在一實施例中,控制器集線器1120包括一圖形記憶體控制器集線器(GMCH)1190及一輸入/輸出集線器(IOH)1150(其可設在個別晶片上);GMCH 1190包括記憶體及圖形控制器,供記憶體1140及一共處理器1145耦合於此;IOH 1150將輸入/輸出(I/O)裝置1160耦合於GMCH 1190。或者,記憶體及圖形控制器的其中之一或兩者係在處理器內整合(如本文內所述),記憶體1140及共處理器1145直接耦合於處理器1110,及控制器集線器1120係與IOH 1150設在單一晶片中。
附加處理器1115之選項性性質係在圖11中以虛線表示。各處理器1110、1115可包括本文內所述處理器核心之一或多者及可以是處理器1000之某些版本。
記憶體1140例如可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1120透過多點匯流排(例如,前側匯流排(FSB))、點對點介面(例如,快速通道互連(QPI))、或類似連接器1195,以通信處理器1110、1115。
在一實施例中,共處理器1145係特殊用途處理器,例如像是高通量MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或類似者。在一實施例中,控制器集線器1120可包括一整合式圖形加速器。
依據指標量度範圍,包括架構上、微架構上、溫度上、耗電特徵、及類似者,實體資源1110、1115之間可以有許多差異。
在一實施例中,處理器1110執行控制一般類型資料處理操作之指令。嵌入指令內者可以是共處理器指令。處理器1110將這些共處理器指令辨識成一應該由附接共處理器1145執行之類型。據此,處理器1110在一共處理器匯流排或其他互連上發送這些共處理器指令(或代表共處理器指令之控制信號)到共處理器1145。共處理器1145接收及執行所收到之共處理器指令。
請即參閱圖12,揭示根據本發明之一實施例之第一較特定示範系統1200之方塊圖。如圖12中所示,多處理器系統1200係點對點互連系統,且包括透過一點對點互連1250耦合之第一處理器1270及第二處理器1280。處理器1270、1280各為處理器1000之某些版本。在本發明之一實施例中,處理器1270、1280分別為處理器1110、1115,同時共處理器1238為共處理器1145。在另一實施例中,處理器1270、1280分別為處理器1110、共處理器1145。
處理器1270、1280揭示成分別包括整合式記憶體控制器(IMC)單元1272、1282。處理器1270亦包括點對點(P-P)介面1276、1278,做為其匯流排控制器單元之一部分;相似地,第二處理器1280包括P-P介面1286、1288。處理器1270、1280可以使用P-P介面電路1278、 1288透過一點對點(P-P)介面1250交換資訊。如圖12中所示,IMC 1272、1282將處理器耦合於個別記憶體,亦即一記憶體1232及一記憶體1234,其可以是區域性附接於個別處理器之主記憶體的部分。
處理器1270、1280可以使用點對點介面電路1276、1294、1286、1298透過個別P-P介面1252、1254,以和一晶片組1290交換資訊。晶片組1290可以透過一高性能介面1239選項性地和共處理器1238交換資訊。在一實施例中,共處理器1238係一特殊用途處理器,例如像是高通量MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或類似者。
一共用快取(圖中未示)可包括在兩處理器之任一者內或在其外,並且透過P-P互連與處理器連接,所以如果一處理器處於低電力模式,則任一或兩處理器之區域快取資訊可儲存於共用快取中。
晶片組1290可以透過一介面1296耦合於第一匯流排1216。在一實施例中,第一匯流排1216可以是周邊組件互連(PCI)匯流排,或是一例如PCI高速匯流排或另一第三代I/O互連匯流排的匯流排,儘管本發明之範疇並非如此限制。
如圖12中所示,許多輸入/輸出(I/O)裝置1214可以隨著一匯流排橋接器1218耦合於第一匯流排1216,匯流排橋接器則將第一匯流排1216耦合於第二匯流排1220。在一實施例中,一或多個附加處理器1215,例如 像是共處理器、高通量MIC處理器、GPGPU、加速器(例如像是圖形加速器或數位信號處理(DSP)單元)、場可編程閘陣列、或任意其他處理器,皆可耦合於第一匯流排1216。在一實施例中,第二匯流排1220可以是一低針腳數(LPC)匯流排。許多裝置可耦合於第二匯流排1220,包括例如鍵盤及/或滑鼠1222、通信裝置1227及一儲存器單元1228,像是磁碟驅動器或其他大容量儲存裝置,其在一實施例中可包括指令/碼及資料1230。再者,一音頻輸入/輸出裝置(I/O)1224可耦合於第二匯流排1220。應該注意的是,其他架構亦可行。例如取代圖12之點對點架構時,一系統可在一多點匯流排或其他這類架構中實施。
請即參閱圖13,揭示根據本發明之一實施例之第二較特定示範系統1300之方塊圖。圖12及13中之相同元件使用相同參考編號,且圖12之某些態樣已從圖13省略,以避免模糊圖13之其他態樣。
圖13揭示處理器1270、1280各別包括整合式記憶體及I/O控制邏輯(CL)1272、1282。因此,CL 1272、1282包括整合式記憶體控制器單元及包括I/O控制邏輯。圖13揭示不僅記憶體1232、1234耦合於CL 1272、1282,I/O裝置1314亦耦合於CL 1272、1282。舊I/O裝置1315耦合於晶片組1290。
請即參閱圖14,揭示根據本發明之一實施例之一系統晶片(SoC)1400之方塊圖。圖10中之相同元件使用 相同參考編號,再者,虛線框為較先進SoCs上之選項性特徵。在圖14中,一互連單元1402耦合於:一應用處理器1410,其包括一組的一或多個核心1002A-N及共用快取單元1006;一系統代理單元1010;一匯流排控制器單元1016;一整合式記憶體控制器單元1014;一組或一或多個共處理器1420,其可包括整合式圖形邏輯、一影像處理器、一音頻處理器、及一視頻處理器;一靜態隨機存取記憶體(SRAM)單元1430;一直接記憶體存取(DMA)單元1432;及一顯示器單元1440,用以耦合於一或多個外顯示器。在一實施例中,共處理器1420包括一特殊用途處理器,例如像是網路或通信處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器、或類似者。
本文內所揭露之(例如,機構)實施例可實施於硬體、軟體、韌體、或諸實施方式之組合中。諸實施例可實施作為在含有至少一處理器、一儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可編程系統上執行之電腦程式或程式碼。
程式碼(例如,圖12中所示之碼1230)可施加於輸入指令,以執行本文內所述之功能且產生輸出資訊。輸出資訊可依習知方式施加於一或多個輸出裝置。針對此應用目的,一處理系統包括任意系統,其具有例如像是一數位信號處理器(DSP)、一微控制器、一專用積體電路 (ASIC)、或一微處理器。
程式碼可用一高階程式或面向對象編程語言實施,以利通信一處理系統。若有需要,程式碼也可用總成或機器語言實施。事實上,本文內所述之機構範疇並不限於任意特殊編程語言。在任意情況中,語言可以是編譯或解譯語言。
至少一實施例之一或多個態樣可以藉由儲存在一機器可讀取媒體上之代表指令實施,其代表處理器內之許多邏輯,當由一機器讀取時,其致使機器組合邏輯以執行本文內所述之技術。此代表性(俗稱為IP核心)可以儲存在一實體機器可讀取媒體上且供給至許多客戶或製造廠,以載入實際製成邏輯或處理器之製造機器內。
此機器可讀取儲存媒體可包括但是不限定的有由一機器或裝置製造或形成之物件之非暫態、實體配置,包括儲存媒體,像是硬碟、任意其他類型碟片(包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟)、半導體裝置(像是唯讀記憶體(ROM)、隨機存取記憶體(RAM),像是動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁性或光學性卡、或適用於儲存電子指令之任意其他類型媒體。
據此,本發明之實施例亦包括非暫態、含有指令或含 有設計資料之實體機器可讀取媒體,例如硬體說明語言(HDL),其界定本文內所述之結構、電路、裝置、處理器及/或系統。諸實施例亦稱為程式產物。
仿真(包括二進制翻譯、碼轉譯、等等)
在一些情況中,一指令轉換器可用以將一來自一來源指令集之指令轉換成一目標指令集。例如,指令轉換器可以翻譯(例如,使用靜態二進制翻譯、包括有動態編譯之動態二進制翻譯)、轉譯、仿真、或者轉換一指令成一或多個欲供核心處理之其他指令。指令轉換器可實施於硬體、軟體、韌體、或其組合中。指令轉換器可以在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖15係方塊圖,根據本發明實施例對比使用一軟體指令轉換器將一來源指令集中之二進制指令轉換成一目標指令集中之二進制指令。在所示之實施例中,指令轉換器係一軟體指令轉換器,儘管指令轉換器在替代型式上可實施於軟體、韌體、硬體、或其許多組合中。圖15揭示一高階語言1502中之一程式可使用一x86編譯器1504編譯,以產生x86二進制碼1506,其原本即由一具有至少一x86指令集核心之處理器1516執行。具有至少一x86指令集核心之處理器1516代表大致上可與具有至少一x86指令集核心之Intel處理器執行相同的功能,即其藉由相容執行或處理(1)Intel x86指令集核心之指令集之一實質部分或(2)目標在一具有至少一x86指令集核心 之Intel®處理器上運算的應用程式或共他軟體之目標碼版本,以利達成與具有至少一x86指令集核心之Intel®處理器大致相同的結果。x86編譯器1504代表一編譯器,其可操作成產生x86二進制碼1506(例如,目標碼),在有或無附加連結處理下可以在具有至少一x86指令集核心之處理器1516上執行。相似地,圖15揭示高階語言1502中之程式可使用一替代指令集編譯器1508編譯,以產生替代指令集二進制碼1510,其原本即由一未具有至少一x86指令集核心1514之處理器執行(例如,一具有核心可執行加州桑尼維爾市MIPS Technologies公司之MIPS指令集及/或執行英格蘭劍橋市ARM Holdings公司之ARM指令集的處理器)。指令轉換器1512用以將x86二進制碼1506轉換成原本即由未具有一x86指令集核心之處理器1514執行的碼。此轉換碼不易成為替代指令集二進制碼1510,因為可達成此目的之指令轉換器難以製造;惟,轉換碼可完成一般操作及由來自替代指令集之指令組成。因此,指令轉換器1512代表軟體、韌體、硬體、或其組合,其透過仿真、模擬或任意其他程式而容許一處理器或其他電子裝置不具有一x86指令集處理器或核心,即可執行x86二進制碼1506。
100‧‧‧硬體處理器
102‧‧‧硬體解碼單元
104‧‧‧硬體執行單元
106‧‧‧暫存器
108‧‧‧影堆疊指標暫存器
109‧‧‧控制暫存器
110‧‧‧資料儲存裝置
112‧‧‧堆疊
114‧‧‧影堆疊

Claims (24)

  1. 一種硬體處理器,包含:硬體解碼單元,用於解碼指令;及硬體執行單元,用於執行該指令成:從影堆疊取出用於執行緒的符記,其中,該符記包括用於該執行緒之影堆疊指標,該影堆疊指標具有使用用於該執行緒之該硬體處理器之操作模式的位元值重寫的該影堆疊指標的至少一最低有效位元(LSB),從該符記移除該至少一LSB中的該位元值,以產生該影堆疊指標,及當該符記之該操作模式匹配於該硬體處理器之目前操作模式時,設定目前影堆疊指標至該符記之該影堆疊指標。
  2. 如申請專利範圍第1項之硬體處理器,其中,該硬體處理器之該操作模式可以在具有第一位址大小之第一操作模式與具有第二、較大位址大小之第二操作模式之間選擇,且該符記之大小係該第二、較大位址大小,以便在該第一操作模式中用於執行緒用之符記及在該第二操作模式中用於執行緒用之符記兩者。
  3. 如申請專利範圍第1項之硬體處理器,其中,當該影堆疊上之該符記之位址並非影堆疊位址時,該硬體執行單元產生錯誤指示。
  4. 如申請專利範圍第1項之硬體處理器,其中,用於該符記之位址係該指令之運算元。
  5. 如申請專利範圍第4項之硬體處理器,其中,該硬體執行單元可執行該指令成:將該符記之該影堆疊指標對準下一位址邊界,移除該下一位址邊界之該符記之大小,以產生第二位址,及當該第二位址不匹配於該指令之該運算元之該位址時,不設定該目前影堆疊指標至該符記之該影堆疊指標。
  6. 如申請專利範圍第1項之硬體處理器,其中,當該目前影堆疊指標被設定為該符記之該影堆疊指標時,該硬體執行單元執行該指令成清除該影堆疊之該符記。
  7. 如申請專利範圍第1項之硬體處理器,其中:該硬體解碼單元用於解碼第二指令;及該硬體執行單元可執行該第二指令成:複製用於該執行緒之該目前影堆疊指標,以產生第一值,設定至少一最低有效位元(LSB)於該第一值中,以指示該硬體處理器之目前操作模式,以產生第二符記,及將該第二符記放至該影堆疊。
  8. 一種切換影堆疊指標的方法,包含:從硬體處理器之影堆疊取出用於執行緒的符記,其中,該符記包括用於該執行緒之影堆疊指標,具有使用用於該執行緒之該硬體處理器之操作模式的位元值重寫的該影堆疊指標的至少一最低有效位元(LSB);移除該符記之該至少一LSB中的該位元值,以產生 該影堆疊指標;及當該符記之該操作模式匹配於該硬體處理器之目前操作模式時,設定目前影堆疊指標至該符記之該影堆疊指標。
  9. 如申請專利範圍第8項之方法,其中,該硬體處理器之該操作模式可以在具有第一位址大小之第一操作模式與具有第二、較大位址大小之第二操作模式之間選擇,且該符記之大小係該第二、較大位址大小,以便在該第一操作模式中用於執行緒用之符記及在該第二操作模式中用於執行緒用之符記兩者。
  10. 如申請專利範圍第8項之方法,進一步包含當該影堆疊上之該符記之位址並非影堆疊位址時,則產生錯誤指示。
  11. 如申請專利範圍第8項之方法,進一步包含在請求下提供用於該符記之位址,以設定目前影堆疊指標。
  12. 如申請專利範圍第11項之方法,進一步包含:將該符記之該影堆疊指標對準下一位址邊界,移除該下一位址邊界之該符記之大小,以產生第二位址,及當該第二位址不匹配於在該請求下用於設定該目前影堆疊指標之該位址時,不設定該目前影堆疊指標至該符記之該影堆疊指標。
  13. 如申請專利範圍第8項之方法,進一步包含當該目前影堆疊指標被設定為該符記之該影堆疊指標時,則清 除該影堆疊之該符記。
  14. 如申請專利範圍第8項之方法,進一步包含:複製用於該執行緒之該目前影堆疊指標,以產生第一值;設定至少一最低有效位元(LSB)於該第一值中,以指示該硬體處理器之目前操作模式,以產生第二符記;及將該第二符記放至該影堆疊。
  15. 一種硬體處理器,包含:硬體解碼單元,用於解碼指令;及硬體執行單元,用於執行該指令成:複製用於執行緒之目前影堆疊指標,以產生第一值,使用位元值重寫該第一值中之至少一最低有效位元(LSB),以指示出用於該執行緒的硬體處理器的目前操作模式,以產生符記,及將該符記放至影堆疊。
  16. 如申請專利範圍第15項之硬體處理器,其中,該硬體處理器之該目前操作模式可以在具有第一位址大小之第一操作模式與具有第二、較大位址大小之第二操作模式之間選擇,且該符記之大小係該第二、較大位址大小,以便在該第一操作模式中用於執行緒用之符記及在該第二操作模式中用於執行緒用之符記兩者。
  17. 如申請專利範圍第15項之硬體處理器,其中,當被放入該符記之位址並非影堆疊位址時,該硬體執行單元產生錯誤指示。
  18. 如申請專利範圍第15項之硬體處理器,其中,該硬體執行單元可執行該指令成:將該符記之該目前影堆疊指標對準下一位址邊界,以產生第二值;及設定該第二值為下一影堆疊指標。
  19. 如申請專利範圍第15項之硬體處理器,其中:該硬體解碼單元用於解碼第二指令;及該硬體執行單元用於執行該第二指令成:從該影堆疊取出用於該執行緒之該符記,移除該符記之該至少一LSB中之位元值,以產生新的影堆疊指標,及當該符記之操作模式匹配於該硬體處理器之該目前操作模式時,設定下一影堆疊指標至該符記之該新的影堆疊指標。
  20. 一種切換影堆疊指標的方法,包含:複製用於執行緒的硬體處理器的目前影堆疊指標,以產生第一值;使用位元值重寫該第一值中之至少一最低有效位元(LSB),以指示出用於該執行緒的該硬體處理器的目前操作模式,以產生符記;及將符記放至影堆疊。
  21. 如申請專利範圍第20項之方法,其中,該硬體處理器之該目前操作模式可以在具有第一位址大小之第一操作模式與具有第二、較大位址大小之第二操作模式之間選 擇,且該符記之大小係該第二、較大位址大小,以便在該第一操作模式中用於執行緒用之符記及在該第二操作模式中用於執行緒用之符記兩者。
  22. 如申請專利範圍第20項之方法,進一步包含當被放入該符記之位址並非影堆疊位址時,則產生錯誤指示。
  23. 如申請專利範圍第20項之方法,進一步包含:將該符記之該目前影堆疊指標對準下一位址邊界,以產生第二值;及設定該第二值為下一影堆疊指標。
  24. 如申請專利範圍第20項之方法,進一步包含:從該影堆疊取出用於該執行緒之該符記,移除該符記之該至少一LSB中之位元值,以產生新的影堆疊指標,及當該符記之操作模式匹配於該硬體處理器之該目前操作模式時,設定下一影堆疊指標至該符記之該新的影堆疊指標。
TW105136946A 2015-12-20 2016-11-11 切換影堆疊指標的硬體設備以及方法 TWI713629B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/975,840 US10394556B2 (en) 2015-12-20 2015-12-20 Hardware apparatuses and methods to switch shadow stack pointers
US14/975,840 2015-12-20

Publications (2)

Publication Number Publication Date
TW201730751A TW201730751A (zh) 2017-09-01
TWI713629B true TWI713629B (zh) 2020-12-21

Family

ID=59066435

Family Applications (3)

Application Number Title Priority Date Filing Date
TW105136946A TWI713629B (zh) 2015-12-20 2016-11-11 切換影堆疊指標的硬體設備以及方法
TW109144236A TWI770721B (zh) 2015-12-20 2016-11-11 硬體處理器及處理器
TW111130271A TWI808869B (zh) 2015-12-20 2016-11-11 硬體處理器及處理器

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW109144236A TWI770721B (zh) 2015-12-20 2016-11-11 硬體處理器及處理器
TW111130271A TWI808869B (zh) 2015-12-20 2016-11-11 硬體處理器及處理器

Country Status (3)

Country Link
US (3) US10394556B2 (zh)
TW (3) TWI713629B (zh)
WO (1) WO2017112232A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US10394556B2 (en) 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
US10430580B2 (en) 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
CN108701193B (zh) * 2016-02-12 2022-08-30 汉阳大学校产学协力团 安全半导体芯片及其工作方法
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
KR20210108788A (ko) 2020-02-26 2021-09-03 삼성전자주식회사 무선 통신에서 전력 소비 제어를 위한 장치 및 방법
US11243769B2 (en) 2020-03-28 2022-02-08 Intel Corporation Shadow stack ISA extensions to support fast return and event delivery (FRED) architecture
GB2597249B (en) * 2020-07-16 2022-12-21 Advanced Risc Mach Ltd Authentication code generation/checking instructions
US11789737B2 (en) * 2022-03-24 2023-10-17 Intel Corporation Capability-based stack protection for software fault isolation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499349A (en) * 1989-05-26 1996-03-12 Massachusetts Institute Of Technology Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution
US5862400A (en) * 1991-08-09 1999-01-19 Lotus Development Corp. Formula processor having cache means for storing and retrieving results of previously computed formulas based on identification and dependency information
TW486667B (en) * 1999-09-01 2002-05-11 Intel Corp Memory reference instructions for micro engine used in multithreaded parallel processor architecture
US20100115243A1 (en) * 2003-08-28 2010-05-06 Mips Technologies, Inc. Apparatus, Method and Instruction for Initiation of Concurrent Instruction Streams in a Multithreading Microprocessor

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3794980A (en) * 1971-04-21 1974-02-26 Cogar Corp Apparatus and method for controlling sequential execution of instructions and nesting of subroutines in a data processor
JPH0752576B2 (ja) * 1990-07-19 1995-06-05 株式会社東芝 スタックメモリ
US5640582A (en) 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
US5497494A (en) 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
US5634046A (en) 1994-09-30 1997-05-27 Microsoft Corporation General purpose use of a stack pointer register
US5968169A (en) 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
DE19701166A1 (de) 1997-01-15 1998-07-23 Siemens Ag Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen
US6128728A (en) 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US6757771B2 (en) 2000-08-09 2004-06-29 Advanced Micro Devices, Inc. Stack switching mechanism in a computer system
US6751749B2 (en) 2001-02-22 2004-06-15 International Business Machines Corporation Method and apparatus for computer system reliability
US7103008B2 (en) 2001-07-02 2006-09-05 Conexant, Inc. Communications system using rings architecture
US7086088B2 (en) 2002-05-15 2006-08-01 Nokia, Inc. Preventing stack buffer overflow attacks
JP2004013556A (ja) 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
US6996677B2 (en) 2002-11-25 2006-02-07 Nortel Networks Limited Method and apparatus for protecting memory stacks
US20040168078A1 (en) 2002-12-04 2004-08-26 Brodley Carla E. Apparatus, system and method for protecting function return address
US7594111B2 (en) 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
FR2851349A1 (fr) * 2003-02-17 2004-08-20 St Microelectronics Sa Procede de gestion d'une pile de microprocesseur pour la sauvegarde de donnees contextuelles
US20050044292A1 (en) 2003-08-19 2005-02-24 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs
DE10349200A1 (de) 2003-10-23 2005-05-25 Daimlerchrysler Ag System und Verfahren zur Überwachung und Verwaltung prozessinterner Speicher einer Prozessausführungseinheit
US20060277396A1 (en) 2005-06-06 2006-12-07 Renno Erik K Memory operations in microprocessors with multiple execution modes and register files
US7844804B2 (en) 2005-11-10 2010-11-30 Qualcomm Incorporated Expansion of a stacked register file using shadow registers
JP4844102B2 (ja) 2005-11-30 2011-12-28 富士ゼロックス株式会社 サブプログラム及びそのサブプログラムを実行する情報処理装置
US7581089B1 (en) 2006-04-20 2009-08-25 The United States Of America As Represented By The Director Of The National Security Agency Method of protecting a computer stack
US9652241B2 (en) * 2007-04-10 2017-05-16 Cambridge Consultants Ltd. Data processing apparatus with instruction encodings to enable near and far memory access modes
US8209757B1 (en) 2008-03-06 2012-06-26 Symantec Corporation Direct call into system DLL detection system and method
US8117660B2 (en) 2008-06-19 2012-02-14 Microsoft Corporation Secure control flows by monitoring control transfers
WO2010004242A2 (en) 2008-07-10 2010-01-14 Cambridge Consultants Limited Data processing apparatus, for example using vector pointers
US8578483B2 (en) 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8051467B2 (en) 2008-08-26 2011-11-01 Atmel Corporation Secure information processing
US7962729B2 (en) 2009-01-05 2011-06-14 International Business Machines Corporation Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register
US8392644B2 (en) 2010-07-30 2013-03-05 Mips Technologies, Inc. System and method for automatic hardware interrupt handling
US20120236010A1 (en) 2011-03-15 2012-09-20 Boris Ginzburg Page Fault Handling Mechanism
US9633407B2 (en) 2011-07-29 2017-04-25 Intel Corporation CPU/GPU synchronization mechanism
WO2013101217A1 (en) 2011-12-30 2013-07-04 Intel Corporation Technology abstraction layer
US9116711B2 (en) 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
CA2809516C (en) 2013-03-13 2016-11-08 Khalid Nawaf Alharbi Preventing stack buffer overflow attacks
EP2972798B1 (en) 2013-03-15 2020-06-17 Intel Corporation Method and apparatus for guest return address stack emulation supporting speculation
US9239801B2 (en) 2013-06-05 2016-01-19 Intel Corporation Systems and methods for preventing unauthorized stack pivoting
US9015835B2 (en) 2013-06-23 2015-04-21 Intel Corporation Systems and methods for procedure return address verification
WO2015044993A1 (ja) 2013-09-24 2015-04-02 株式会社 エーティーティーコンサルティング プロセッサ、処理装置、プログラム作成方法
FR3013869B1 (fr) 2013-11-22 2016-01-01 Thales Sa Procede de detection des debordements de pile et processeur pour la mise en oeuvre d'un tel procede
US9703948B2 (en) 2014-03-28 2017-07-11 Intel Corporation Return-target restrictive return from procedure instructions, processors, methods, and systems
US9501637B2 (en) 2014-09-26 2016-11-22 Intel Corporation Hardware shadow stack support for legacy guests
US9767272B2 (en) 2014-10-20 2017-09-19 Intel Corporation Attack Protection for valid gadget control transfers
US20160179538A1 (en) 2014-12-19 2016-06-23 Intel Corporation Method and apparatus for implementing and maintaining a stack of predicate values with stack synchronization instructions in an out of order hardware software co-designed processor
US9477453B1 (en) 2015-06-24 2016-10-25 Intel Corporation Technologies for shadow stack manipulation for binary translation systems
US9817642B2 (en) 2015-06-25 2017-11-14 Intel Corporation Apparatus and method for efficient call/return emulation using a dual return stack buffer
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US9965619B2 (en) 2015-07-13 2018-05-08 Intel Corporation Return address overflow buffer
US20170090927A1 (en) 2015-09-30 2017-03-30 Paul Caprioli Control transfer instructions indicating intent to call or return
US10394556B2 (en) 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
US9898351B2 (en) 2015-12-24 2018-02-20 Intel Corporation Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture
US10430580B2 (en) 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499349A (en) * 1989-05-26 1996-03-12 Massachusetts Institute Of Technology Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution
US5862400A (en) * 1991-08-09 1999-01-19 Lotus Development Corp. Formula processor having cache means for storing and retrieving results of previously computed formulas based on identification and dependency information
TW486667B (en) * 1999-09-01 2002-05-11 Intel Corp Memory reference instructions for micro engine used in multithreaded parallel processor architecture
TW559729B (en) * 1999-09-01 2003-11-01 Intel Corp Instruction for multithreaded parallel processor
US20100115243A1 (en) * 2003-08-28 2010-05-06 Mips Technologies, Inc. Apparatus, Method and Instruction for Initiation of Concurrent Instruction Streams in a Multithreading Microprocessor

Also Published As

Publication number Publication date
WO2017112232A1 (en) 2017-06-29
TWI808869B (zh) 2023-07-11
US20170177339A1 (en) 2017-06-22
US10394556B2 (en) 2019-08-27
TW202138996A (zh) 2021-10-16
TW202246973A (zh) 2022-12-01
US20240078111A1 (en) 2024-03-07
US11029952B2 (en) 2021-06-08
US20200042318A1 (en) 2020-02-06
US11663006B2 (en) 2023-05-30
TW201730751A (zh) 2017-09-01
US20210357213A1 (en) 2021-11-18
TWI770721B (zh) 2022-07-11

Similar Documents

Publication Publication Date Title
TWI713629B (zh) 切換影堆疊指標的硬體設備以及方法
TWI807877B (zh) 用以保護影子堆疊之處理器、方法、系統和指令
TWI715704B (zh) 用於以在環移轉期間保護堆疊的處理器擴展的處理器及方法
CN108351830B (zh) 用于存储器损坏检测的硬件装置和方法
TWI567751B (zh) 多暫存器記憶體存取指令、處理器、方法及系統
CN106648843B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
TWI639952B (zh) 用於建置及維持在亂序硬體軟體協同設計處理器中具有堆疊同步指令的述詞值之堆疊的方法、設備與非暫態機器可讀媒體
CN112149114A (zh) 利用用于指示数据类型的隐藏内联元数据的存储器保护
TWI715686B (zh) 用於容錯及錯誤偵測之系統、方法和裝置
TWI733717B (zh) 從亂序處理器中的不良儲存-至-負載轉發復原的方法與設備
BR102014006118A2 (pt) sistemas, equipamentos e métodos para determinar um bit de mascaramento menos significativo à direita de um registrador writemask
TWI752034B (zh) 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令
TWI722009B (zh) 用於在遠端處理器上進行基元動作之硬體機制
TWI729033B (zh) 控制轉移強制執行中的非追蹤控制轉移的方法及處理器
EP3885950B1 (en) Shadow stack isa extensions to support fast return and event delivery (fred) architecture
US12001842B2 (en) Hardware apparatuses and methods to switch shadow stack pointers
TW202416123A (zh) 硬體處理器及處理器
CN114676090A (zh) 用于低时延页解压缩和压缩加速的电路和方法
CN116339827A (zh) 用于利用描述符实现基于能力的分区切换的电路系统和方法