TW201732562A - 控制轉移強制執行中的非追蹤控制轉移 - Google Patents

控制轉移強制執行中的非追蹤控制轉移 Download PDF

Info

Publication number
TW201732562A
TW201732562A TW105138283A TW105138283A TW201732562A TW 201732562 A TW201732562 A TW 201732562A TW 105138283 A TW105138283 A TW 105138283A TW 105138283 A TW105138283 A TW 105138283A TW 201732562 A TW201732562 A TW 201732562A
Authority
TW
Taiwan
Prior art keywords
instruction
cavity
dielectric material
fin
ctt
Prior art date
Application number
TW105138283A
Other languages
English (en)
Other versions
TWI729033B (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 TW201732562A publication Critical patent/TW201732562A/zh
Application granted granted Critical
Publication of TWI729033B publication Critical patent/TWI729033B/zh

Links

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP

Abstract

一種處理器包括執行單元以及操作性地耦合至該執行單元之處理邏輯,該處理邏輯用以:進入第一執行狀態;響應於執行具有預定義子碼的控制傳輸指令,保持在該第一執行狀態中;響應於執行不具有該預定子碼的控制傳輸指令,轉換到第二執行狀態;以及響應於在該第二執行狀態中判定要執行的下一指令,不同於ENDBRANCH指令,引起執行異常。

Description

控制轉移強制執行中的非追蹤控制轉移
本發明係關於控制轉移強制執行中的非追蹤控制轉移。
返回導向編程(Return-Oriented Programming,ROP)是一種電腦安全漏洞技術,其中攻擊者使用堆疊的軟體控制來執行攻擊者選擇的機器指令序列。這些指令叢通常以現有程式碼內的程式設計者預期或非預期返回(RET)指令結束。預期或非預期指令轉移的RET指令將執行轉移到堆疊上攻擊者選擇的返回位址,並允許攻擊者透過程式碼保留執行控制,並直接執行到下一組選定的指令序列,以實現攻擊者的意圖。攻擊者選擇的指令序列叢稱為小工具。
通常執行的小工具僅包括幾個組合指令,後面是RET指令,其可以已經執行良好定義的攻擊操作。藉由鏈接這些小工具的集合,使得來自一個小工具的RET指令進入下一個小工具等等,惡意軟體寫入器能夠執行複雜的演算 法而不將任何碼注入到程式中。在RET中結束的這些指令序列中的一些可以在編譯到程式或資料庫中的函數裡找到。
因此,ROP技術涉及使用諸如堆疊緩衝器溢出的漏洞將具有一組指向小工具和參數的指標的鏈接列表的酬載遞送到程式的資料記憶體。漏洞還會覆蓋用於執行堆疊緩衝器溢出以指向序列中的第一個小工具之易受攻擊函數的返回位址。當這個易受攻擊的函數執行RET指令時,控制權轉移到第一個小工具而不是函數調用者。這個小工具可接著從堆疊酬載消耗一或多個資料元素。使用這個漏洞類型,惡意軟體寫入器能夠藉由導致控制轉移至程式中的非程式設計者預期位置(例如,到指令的中間)來改變程式的控制流程。
ROP攻擊技術可以使用x86指令集架構(ISA)的各種特性:可變長度及未對齊指令編碼;大且密集的ISA編碼;堆疊保持控制和資料資訊;以及單位元組運算碼RET指令。當前用於防禦這種攻擊的技術可能是無效的並且具有各種缺點。
100‧‧‧部分
108‧‧‧編譯器
110‧‧‧解碼單元
115‧‧‧CTT邏輯
116‧‧‧狀態機
120‧‧‧執行單元
130‧‧‧撤回單元
135‧‧‧CTT異常邏輯
138‧‧‧回饋路徑
140‧‧‧故障處置器
200‧‧‧狀態機
210‧‧‧IDLE狀態
220‧‧‧WAIT_FOR_ENDBRANCH狀態
230‧‧‧DELIVER_EXECUTION_EXCEPTION操作
240‧‧‧WAIT_FOR_ENDRET狀態
300‧‧‧方法
600‧‧‧組態暫存器
605‧‧‧致能欄位
610‧‧‧舊式致能欄位
615‧‧‧抑制欄位
620‧‧‧追蹤器欄位
750‧‧‧碼段
760‧‧‧第一CTT呼叫堆疊框
762‧‧‧第二CTT呼叫堆疊框
765‧‧‧第一舊式呼叫堆疊框
766‧‧‧第二舊式呼叫堆疊框
770‧‧‧CTT致能應用圖像
775‧‧‧CTT致能資料庫
780‧‧‧堆/堆疊
785‧‧‧舊式資料庫
790‧‧‧第二CTT致能資料庫
800‧‧‧核心
801‧‧‧提取單元
803‧‧‧指令快取
805‧‧‧指令解碼器
806‧‧‧CTT邏輯
809‧‧‧積體電壓調節器
810‧‧‧前端單元
815‧‧‧失序(OOO)引擎
820‧‧‧執行單元
822‧‧‧算術邏輯單元(ALU)
830‧‧‧暫存器檔
835‧‧‧擴展暫存器檔
840‧‧‧撤回單元
900‧‧‧處理器管線
902‧‧‧提取階段
904‧‧‧長度解碼階段
906‧‧‧解碼階段
908‧‧‧配置階段
910‧‧‧重新命名階段
912‧‧‧排程階段
914‧‧‧暫存器讀取/記憶體讀取階段
916‧‧‧執行階段
918‧‧‧回寫/記憶體寫入階段
922‧‧‧例外處置階段
924‧‧‧確定階段
930‧‧‧前端單元
932‧‧‧分支預測單元
934‧‧‧指令快取單元
936‧‧‧指令翻譯旁看緩衝器(TLB)
938‧‧‧指令提取單元
940‧‧‧解碼單元
950‧‧‧執行引擎單元
952‧‧‧重新命名/配置器單元
954‧‧‧撤回單元
956‧‧‧排程器單元
958‧‧‧實體暫存器檔單元
960‧‧‧執行叢集
962‧‧‧執行單元
964‧‧‧記憶體存取單元
970‧‧‧記憶體單元
972‧‧‧資料TLB單元
974‧‧‧資料快取單元
976‧‧‧第二階(L2)快取單元
990‧‧‧處理器核心
1000‧‧‧處理器
1001‧‧‧前端
1002‧‧‧快速排程器
1003‧‧‧失序執行引擎
1004‧‧‧慢/通用浮點排程器
1006‧‧‧簡單浮點排程器
1008‧‧‧暫存器檔
1010‧‧‧暫存器檔
1011‧‧‧執行方塊
1012‧‧‧位址產生單元(AGU)
1014‧‧‧位址產生單元(AGU)
1016‧‧‧快速ALU
1018‧‧‧快速ALU
1020‧‧‧慢ALU
1022‧‧‧浮點ALU
1024‧‧‧浮點移動單元
1026‧‧‧預先提取器
1028‧‧‧指令解碼器
1030‧‧‧追蹤快取
1032‧‧‧微碼ROM
1034‧‧‧uop佇列
1100‧‧‧多處理器系統
1114‧‧‧I/O裝置
1115‧‧‧額外處理器
1116‧‧‧第一匯流排
1118‧‧‧匯流排橋接器
1120‧‧‧第二匯流排
1122‧‧‧鍵盤及/或滑鼠
1124‧‧‧音頻I/O
1127‧‧‧通訊裝置
1128‧‧‧儲存單元
1130‧‧‧指令/代碼及資料
1132‧‧‧記憶體
1134‧‧‧記憶體
1138‧‧‧共處理器
1139‧‧‧高性能介面
1150‧‧‧點對點互連
1152,1154‧‧‧P-P介面
1170‧‧‧第一處理器
1172,1182‧‧‧積體記憶體控制器(IMC)單元
1176,1178‧‧‧點對點(P-P)介面
1180‧‧‧第二處理器
1186,1188‧‧‧P-P介面
1190‧‧‧晶片組
1194,1198‧‧‧點對點介面電路
1196‧‧‧介面
1200‧‧‧第三系統
1214‧‧‧I/O裝置
1215‧‧‧舊式I/O裝置
1232、1234‧‧‧記憶體
1270、1280‧‧‧處理器
1272、1282‧‧‧控制邏輯CL
1290‧‧‧晶片組
1300‧‧‧SoC
1302‧‧‧互連單元
1302A-1302N‧‧‧核心
1306‧‧‧分享快取單元
1308‧‧‧積體圖形邏輯
1310‧‧‧系統代理器單元
1314‧‧‧積體記憶體控制器單元
1316‧‧‧匯流排控制器單元
1317‧‧‧應用程式處理器
1320‧‧‧媒體處理器
1324‧‧‧影像處理器
1326‧‧‧音訊處理器
1328‧‧‧視訊處理器
1330‧‧‧靜態隨機存取記憶體(SRAM)單元
1332‧‧‧直接記憶體存取(DMA)單元
1340‧‧‧顯示單元
1400‧‧‧SoC
1406‧‧‧核心
1407‧‧‧核心
1408‧‧‧快取控制器
1409‧‧‧匯流排介面單元
1410‧‧‧L2快取
1411‧‧‧互連
1415‧‧‧GPU
1420‧‧‧視訊編碼解碼器
1425‧‧‧視訊介面
1430‧‧‧用戶身份模組(SIM)
1435‧‧‧啟動ROM
1440‧‧‧SDRAM控制器
1445‧‧‧快閃記憶體控制器
1450‧‧‧周邊控制器
1460‧‧‧DRAM
1465‧‧‧快閃記憶體
1470‧‧‧藍芽模組
1475‧‧‧3G數據機
1480‧‧‧GPS
1485‧‧‧WiFi
1502‧‧‧處理裝置
1504‧‧‧主記憶體
1506‧‧‧靜態記憶體
1508‧‧‧匯流排
1510‧‧‧顯示裝置
1512‧‧‧文數輸入裝置
1514‧‧‧游標控制裝置
1516‧‧‧資料儲存裝置
1518‧‧‧網路介面裝置
1519‧‧‧網路
1520‧‧‧訊號產生裝置
1522‧‧‧圖形處理單元
1524‧‧‧電腦可讀取儲存媒體
1526‧‧‧指令
1528,1532‧‧‧視訊處理單元
圖1為根據本發明一實施例之處理器之一部分的方塊圖。
圖2為根據本發明一實施例之狀態機的方塊圖。
圖3A為編譯器決定是否添加預定義子碼用以控制高 階程式語言之轉移指令之方法的流程圖。
圖3B為根據本發明實施例之用於非追蹤控制轉移以及模式指明控制流程終止之方法的流程圖。
圖4為根據本發明另一實施例之用於模式指明控制流程終止之另一方法的流程圖。
圖5A為根據本發明一實施例之控制轉移管理之方法的流程圖。
圖5B為根據本發明一實施例之控制轉移管理之另一方法的流程圖。
圖6為為根據本發明一實施例之組態暫存器的方塊圖。
圖7A為根據本發明一實施例之用於碼執行之呼叫堆疊框的方塊圖。
圖7B為根據本發明一實施例之具有舊式相互影響之控制轉移終止邏輯的方塊圖。
圖8為根據本發明一實施例之處理器核心的方塊圖。
圖9A為示出處理器核心之微架構的方塊圖,其中處理器核心可被整合至圖1之處理器中。
圖9B為根據本發明一些實施例示出由圖9A之處理器核心實施的有序管線以及暫存器重新命名階段、失序簽發/執行管線的方塊圖。
圖10示出在一實施例中可代表圖1之處理器之部分的處理器微架構方塊圖。
圖11為根據一實施方式之多處理器系統的方塊圖。
圖12為根據另一實施方式之電腦系統的方塊圖。
圖13為根據一實施方式之晶片上系統的方塊圖。
圖14示出用於計算系統之另一實施方式的方塊圖。
圖15示出用於計算系統之另一實施方式的方塊圖。
【發明內容及實施方式】
實施例提供一組指令集架構(ISA)指令,其使得處理器能夠判定控制傳送指令是否被引導到適當的目標,並且如果否,則採取行動以防止超出控制傳送指令的指令被提交到處理器的架構狀態。以這種方式,可以消除程式內的至少某些非預期的控制轉移,限制惡意軟體寫入器可以使用的小工具的數量。
更具體地,實施例提供一組控制傳輸終止(CTT)指令,以允許軟體指定程式中的有效控制轉移終止點,使得硬體可以實施控制轉移以僅發生到程式設計者想要的位置。這些CTT指令可以是與ISA指令不同處理的固定長度的操作碼,因為CTT指令不執行除了向處理器發送正確的控制轉移終止之外的操作。於一實施例中,CTT指令為可執行作為無操作之模式指明(例如,32位元或64位元)、多位元組操作碼。因此,CCT指令以對程式的性能以及能量影響最小的方式執行此實施。CTT ISA擴展因此可以減輕程式中非預期小工具的執行。
間接呼叫或是跳位指間接運算元。在一種類型的間接呼叫或跳位中,該間接運算元可以是提供要對其執行呼叫 或跳位的指令之位址的間接目的地位址。在另一種類型的間接呼叫或跳位中,該間接運算元可以是提供要對其執行呼叫或跳位的指令之位址的處理器暫存器。在一些情況下,當編譯器產生間接跳位和呼叫(並從其返回)並且已經產生碼時,編譯器不需要在控制傳送終止點添加(或發出)CTT指令以確保該間接呼叫或跳位(或返回)的目標被限制為在編譯時已知的目標的小工具。例如,對於查找或switch-case語句,編譯器知道可能的目標的數量並且計算可能目標之碼的位址。當間接跳位或呼叫是其中間接運算元是寄存器的類型時,由編譯器在控制轉移終止點處不發出CTT指令的這種最佳化通常是安全的。如果間接運算元為記憶體位置,接著那些記憶體位置的內容可在當編譯器確認內容時和當間接呼叫或跳位指令使用用以執行間接呼叫或跳位之記憶體位置的內容時之間被修改。
在這些情況下,不需要在控制轉移指令之後的CTT指令減小由程式產生的二進制大小(由於消除的CTT指令);並且由於缺少控制轉移指令之後的CTT指令,跳位或呼叫目標變為來自其它位置的間接跳位或呼叫的無效目標,因此增加了程式的安全性。於一實施例中,諸如前綴或後綴的子碼可被添加至指示間接呼叫或跳位不需要由追蹤器狀態機追蹤之控制轉移指令(諸如間接呼叫或跳位),其可以對於這樣的指令保持閒置。如將進一步解釋的,追蹤器狀態機追蹤控制轉移指令的狀態,使得除了檢測到子碼之外,在控制轉移指令之後需要CTT指令,以 避免發出執行異常。
在替代實施例中,子碼可以被添加到除了不需要被追蹤的那些指令之外的所有控制轉移指令。換句話說,在替代實施例中,缺少子碼可以向CTT處理邏輯通知那些控制轉移指令不被追蹤器狀態機追蹤。
於另一實施例中,可以定義不需要追蹤的新的間接控制轉移指令。
隨著在網際網路、文本和多媒體應用中使用更多的電腦系統,已經引入了額外的處理器支持來執行這些應用。於一實施例中,指令集可以與一或多個電腦架構相關聯,包括資料類型、指令、暫存器架構、位址模式記憶體架構、中斷和異常處置以及外部輸入和輸出(I/O)。於一實施例中,ISA可以由一或多個微架構實現,其包括用於實現一或多個指令集的處理器邏輯和電路。因此,具有不同微架構的處理器可以分享公共指令集的至少一部分。
在一個實施例中,指令可以包括一或多個指令格式。此種指令格式可指示各種欄位(位元數、位元位置等等)以指定要執行的操作和其上將執行該操作的運算元。一些指令格式可以進一步由指令模板(或子格式)定義。例如,給定指令格式的指令模板可以被定義為具有指令格式的欄位之不同子集和/或被定義為具有不同解讀的給定欄位。在一個實施例中,使用指令格式(並且如果被定義,則在該指令格式的指令模板的給定指令模板中)來表達指令,並且指定或指示操作將在其上操作的操作及運算元。
第一CTT指令(本文中稱為ENDBRANCH指令)係用於識別程式中的有效位置,可以使用間接CALL或間接跳位(JMP)指令有效地執行控制轉移。第二CTT指令(本文中稱為ENDRET指令)係用於識別程式中的有效位置,其中可以使用RET指令有效地執行控制轉移。
在指令集架構內,當以32位元模式解碼時用64位元模式指令編譯的程式可解碼為與在64位元模式中解碼時不同的指令集。此屬性已被惡意軟體利用,旨在從64位元模式跳位到32位元二進制,反之亦然。例如,在程式中考慮以下面位元組串:4c 8b d1 b8 50 00 00 00 0f 05 c3 0f 1f 44 00 00。這個位元組串(當在32位元模式下解碼)解碼為下面指令序列:
4c dec esp
8b d1 mov edx,ecx
B850000000 mov eax,50h
0f 05 syscall
C3 ret
然而,當這個相同位元組串在64位元模式下解碼時,解碼為下面指令序列:
4c 8b d1 mov r10,rcx
B850000000 mov eax,50h
0f 05 syscall
C3 ret
因此,如果上面的位元組串是32位元二進制,然後 跳位到64位元二進制而不切換到相容模式,程式將導致執行非預期的指令集。同樣地,如果上面的位元組串是64位元二進制,然後跳位到32位元二進制而不切換到64位元模式,程式將導致執行非預期的指令集。因此,根據實施例,所公開的處理器採用模式指明操作碼作為CTT指令,以阻止惡意軟體嘗試跳位到32位元程式,而不切換到相容模式或者在切換到64位元模式之前跳位到64位元程式。
因此,ENDBRANCH指令可以進一步分成兩個模式指明CTT指令,例如ENDBRANCH32和ENDBRANCH64指令,以避免惡意軟體可以嘗試在處理模式之間跳位以產生小工具的情況。類似地,ENDRET指令可以進一步分成兩個模式指明CTT指令,即ENDRET32和ENDRET64,以防止當控制轉移指令存取記憶體以判定目標ENDRET指令的位址時類似於惡意軟體行為。這種對不同模式的擴展可以應用於32位元和64位元模式之外的不同模式,這對於普通技術人員是顯而易見的。
在一個實施例中,這些CTT指令可以是4位元組運算碼,其被選擇為使得當被解碼時它們被處理不同於ISA指令,例如,CTT指令可以被定義為x86 ISA中的無操作(NOP)以允許用ENDBRANCH/ENDRET指令在早期的處理器上執行。
雖然本發明之範圍在一個實施例中在這方面不受限制,但是這些CTT指令可以具有包括多位元組運算碼的 一般形式。在一個這樣的實施方式中,這些CTT指令可以由對應於當前x86 ISA中當前不存在的運算碼值的四位元組運算碼來表示。除了運算碼之外,可以不存在用於指令的附加編碼,因為指令在執行邏輯內作為無操作執行。因此,可能不存在要與指令相關聯的來源運算元、目的地運算元或立即值的識別。
圖1為根據本發明一實施例之處理器之一部分100的方塊圖。如圖1所示,處理器之一部分100包括管線的處理器之各種部分,諸如有序或亂序處理器。編譯器108可編譯指令為機器可讀碼,在本文中也稱為給定ISA之一或多個程式之微指令。如所示,來自編譯器108之指令被提供至用以解碼指令之解碼單元110,例如解碼為一或多個更小的指令,諸如微操作(μop)。
依據本發明一實施例,解碼單元110可包括CTT邏輯115(本文中也簡稱為處理邏輯)。CTT邏輯115可分析進入指令以及判定任何給定指令是否與控制轉移相關聯。如果是,則CTT邏輯115可以確定控制轉移指令是否包括指示不存在創建小工具的威脅的特定子碼(諸如預定義的前綴或後綴運算碼)。CTT邏輯可以將某些狀態資訊與一或多個μops相關聯。狀態資訊指示藉由至少某個控制轉移和控制轉移終止指令的解碼來修改的狀態機116(由CTT邏輯115實施)的狀態。如果指令與控制轉移不相關聯,則可以將不同的狀態與一或多個μops相關聯。
當輸入控制轉移指令缺少子碼時,CTT邏輯115可以將狀態機116從IDLE狀態轉換到給定的WAIT狀態此外,為了反映WAIT狀態,給定的編碼可以與從進入控制轉移指令解碼的一或多個μops相關聯。當下一個進入指令是緊跟在控制轉移終止之後的控制轉移終止(CTT)指令時,狀態機116可以返回到IDLE狀態並將給定的編碼與解碼的一或多個μop相關聯。如將要討論的,當控制轉移指令不緊隨著適當模式的CTT指令時,CTT邏輯115可以引起執行異常或將故障μop插入處理器管線(並且狀態機可以保持在等待狀態)。
當輸入控制轉移指令包含子碼時,CTT邏輯115可將狀態機116放置或保持在IDLE狀態。此外,由於缺少ENDBRANCH指令(因為子碼),所以沒有要追蹤的CTT指令。此外,當狀態機116處於IDLE狀態以及進入指令與控制轉移(或終止)無關時,IDLE狀態資訊的編碼可以與一或多個μops相關聯,以指示狀態機116保持在IDLE狀態。
因此,解碼單元110輸出μops流程以及相關聯的狀態資訊,以指示CTT邏輯115內的狀態機116的狀態。這些μops和狀態資訊可以被提供給執行單元120,執行單元120可以包括執行由μops流程指示的操作之算術邏輯單元(ALU)、浮點單元等等的各種類型的單元。在一個實施例中,CTT指令只能控制狀態機200中的狀態轉換,並且在處理器的執行邏輯中,這些指令以NOP的形式執 行,並且不會導致程式語意的改變。
反過來,執行μops的結果被提供給撤回單元130,撤回單元130被配置為確定是否成功執行了給定操作,並且在成功執行時退出μops。如果未成功執行μop,則如果作為執行的結果發生不期望的狀況,撤回單元130可能引起故障或異常。在失序處理器中,撤回單元130可以進一步操作以重新排序可以以任何順序執行的指令,並返回到程式順序。當μops適當地撤回時,μops可以提供給諸如記憶體子系統之類的處理器的其他部分。
進一步參考圖1,撤回單元130包括CTT異常邏輯135,CTT異常邏輯135可被組態為判定關於控制轉移指令是否發生合適的行為。更明確地,如本文所描述的,當從被撤回的控制轉移指令解碼的給定μop不直接跟隨適當的CTTμop時,CTT異常邏輯135可以操作以產生執行異常。於一實施例中,所述確定可以至少部分地基於插入的故障μop以及與從解碼單元110退出的μops通訊的狀態資訊。如果檢測到CTT故障μop,則執行異常被提升並被傳送到故障處置器140,故障處置器140可以根據給定的處置器採取各種動作來解決故障行為。因此,在一個實施例中,當在控制轉移μop不是適當的CTTμop之後呈現要撤回的下一個μop時,撤回單元130可以響應於該CTT故障而遞送故障類執行異常(例如,一般保護故障)μop使μop不撤回。
仍然參考圖1,在發生錯誤預測和根據正確分支重新 執行μop的情況下,撤回單元130可以經由回饋路徑138與解碼單元110進行通訊,從而提供要採取的適當分支或其他碼流程的指示。此外,可以經由回饋路徑138傳送狀態機恢復訊號,使得CTT邏輯115的狀態機116可以被放置於適當的狀態以反映程式流程的這種變化。換句話說,當故障μop存在於錯誤預測的路徑中時,由於這種錯誤預測,執行異常不會升高,因此,狀態機恢復訊號可導致狀態機116從WAIT狀態返回到IDLE狀態(或保持在WAIT狀態),並且還指示撤回的最後一條成功指令,使得解碼單元110可以解碼正確分支的指令。
圖2為根據本發明一實施例之狀態機200的方塊圖。狀態機200可以相應於圖1的CTT狀態機116或處理器之部分100的其他處理邏輯。狀態機200在處理器重置之後,在IDLE狀態210中開始由CTT邏輯115中放置狀態機的操作。
當解碼包括某個子碼(例如,諸如3EH或其他運算碼)的一些其他指令或間接CALL或JMP指令時,狀態機可以保持在IDLE狀態210。子碼可以包括在CALL或JMP指令(例如,在標頭中)的前綴、後綴或某個地方,訊號向解碼單元110發訊號通知狀態機200不追蹤CALL或JMP指令並且不會有助於產生小工具。下面的表1是以這種方式運行的子碼的範例,以便不追蹤CALL或JMP指令。
於此範例中,在表1頂部之C碼係由編譯器108轉譯為下面所示之C程式之指令序列。這裡,在位址400a8f的碼為由編譯器發出的非追蹤(子碼)呼叫。編譯器108於此處可安全地發出非追蹤間接跳位,因為編譯器在位址400a82及4000a85處已經清理跳位位置,以確保跳位目標係在邊界內,並且用於跳位之目標的偏移在編譯時為已知。以這種方式,編譯器108可以避免在例如遵循該CALL或JMP指令的位址400aaa和400ab6的目標處發出ENDBRANCH64(endbr64)指令。
當解碼缺少子碼的間接CALL或JMP指令(或者任何遠程CALL或JMP或存取記憶體的CALL或JMP解碼)時,狀態機進入WAIT_FOR_ENDBRANCH狀態220。當下一個被解碼的指令不是適當的操作模式的ENDBRANCH指令(例如,對於32位元的ENDBRANCH32或相容模式的ENDBRANCH64),狀態機200執行 DELIVER_EXECUTION_EXCEPTION操作230,它也可以導致故障μop的產生(並且狀態機200可以保持在WAIT_FOR_ENDBRANCH狀態220中)。相反,當控制轉移指令之後的下一個待解碼指令是適當模式的ENDBRANCH指令時,狀態機200轉換回IDLE狀態210。
顯示為在WAIT_FOR_ENDBRANCH狀態220內循環的INT3是用於調用狀態機200的除錯器的指令。當在間接CALL或JMP的目標處遇到INT3指令時,狀態機200被維持在WAIT_FOR_ENDBRANCH狀態220。這是為了支持由除錯器產生斷點。除錯器在程式中設置斷點的方式是藉由替換除錯器想要用INT3指令中斷的位址處的碼位元組。這樣可以控制除錯器。然後,除錯器可以檢查程式狀態,然後返回由INT3替換的原始碼位元組,並在該位址重新啟動程式執行。當程式由除錯器重新啟動時,藉由將程式的狀態保持為WAIT-FOR-ENDBRANCH,硬體將驗證除錯器是否已經將碼位元組放回ENDBRANCH(最初替換為INT3)。
當RET指令被解碼時,狀態機200可以判定RET指令是否包括指示RET指令的目標是有效及安全的子碼。(注意,在某些指令架構中,如果RET指令不存取記憶體來判定目標位址(例如,不存在產生小工具的威脅)則對於子碼的檢查可能是不必要的。)當RET指令包括子碼時,狀態機200可以保持在IDLE狀態。否則,當RET 指令缺少子碼時,狀態機可以進入WAIT_FOR_ENDRET狀態240。
當被解碼的下一個指令不是適當模式的ENDRET指令(例如,32位元的相容模式的ENDRET32和64位元模式的ENDRET64)時,狀態機200執行DELIVER_EXECTION_EXCEPTION操作230。當被解碼的下一個指令是適當模式的ENDRET指令時,狀態機200轉換回IDLE狀態210。
狀態機200因此執行以下規則:RET指令的目標處的指令必須是適當模式的ENDRET指令,並且在間接CALL或間接JMP指令的目標處的指令必須是適當模式的ENDBRANCH指令。當違反這些規則時,違反指令(RET或CALL/JMP指令在目標的指令)發生故障,並且被撤回單元130阻止撤回。
因此,通過將ENDBRANCH32或ENBRANCH64和ENDRET32或ENRET64指令放置在有效控制轉移位置的程式中,程式設計者或編譯器可以防止意外的控制轉移發生。例如,ENDBRANCH和ENDRET指令的放置如下表2所示:
於此範例中,在表2頂部之C碼係由編譯器轉譯為下面所示之C程式之指令序列。編譯器108將ENDBRANCH64指令作為第一指令放置在次常式foo和主程式中,並且在CALL指令之後放置ENDRET64指令給次常式foo。因此,在這個程式中現在有三個(“3”)有效的控制轉移點。具體地說,在執行主程式時,執行一個呼叫指令(call *%rdx),導致控制轉移到次常式foo,該次常式中的第一條指令是ENDBRANCH64指令,使得發生有效的控制轉移,因此CTT狀態機從IDLE狀態進入WAIT_FOR_ENDBRANCH狀態並返回IDLE狀態,而不會引起故障。
同樣地,在次常式foo結束時,執行返回指令(RETQ),從而在主程式中的呼叫指令之後導致控制轉移到第一指令。這裡,該指令是ENDRET64指令,因此發生有效的控制轉移。在這種情況下,CTT狀態機從IDLE狀態至WAIT_FOR_ENDRET狀態,然後返回到IDLE狀態,而不會引起故障。
因此,使用根據本發明之實施例的CTT處理邏輯,引入一個約束,即ROP小工具之前是可以使用的ENDRET32(或ENDRET64),有效地消除了將一系列指令用作ROP小工具的可能性。如此一來,實現了可以從資料庫收穫的小工具的數量的顯著減少,並且這些小工具的質量在這些剩餘的小工具露出的功能方面顯著降低,使得ROP攻擊更難執行。
圖3A為編譯器決定是否添加預定義子碼用以控制高階程式語言之轉移指令之方法300的流程圖。方法可以藉由執行高階編程語言編譯器的處理裝置接收識別要轉換成用於以非追蹤模式執行的控制轉移命令的程式語言語句的關鍵字列表(301)。這些關鍵字可以包括switch-case語句或表查找,例如,其中在編譯時目的地位址為已知。
方法300可以藉由判定程式語言語句是否包括來自關鍵字列表的關鍵字(302)來繼續。響應於判定程式語言語句包括關鍵字列表中的關鍵字,該方法可以藉由將程式語言語句轉換成具有預定義子碼的控制轉移指令來繼續,該預定義子碼用以指示處理器不追蹤控制轉移指令(304)。響應於判定程式語言語句不包括關鍵字列表中的關鍵字,該方法可以藉由將程式語言語句轉譯成可追蹤控制轉移指令(306)並發出ENDBRANCH指令以跟隨可追蹤控制轉移指令(308)。
圖3B為根據本發明實施例之用於非追蹤控制轉移以及模式指明控制流程終止之方法310的流程圖。方法310可以由編譯器和包括控制轉移終止(CTT)狀態機(例如,解碼單元的處理邏輯)的處理器執行。方法300可以判定控制轉移指令是否需要存取記憶體以判定間接呼叫、跳位或返回(控制轉移)指令的目標指令的位址(312)。方法310還可以判定編譯器是否在編譯時計算控制轉移指令的目標指令(330)。當在方塊312中的答案為否和/或在方塊330中為是時,編譯器可以向控制轉 移指令添加子碼(諸如前綴或後綴)(315)。然後,回應於檢測到控制轉移指令中的子碼,在解碼之後,狀態機可以被放置或保持在用於該控制轉移指令的IDLE狀態中(320)。
當答案為是時到方塊312和/或當答案為否時到方塊330時,編譯器可以如前所述編譯程式指令,按指示遵循控制轉移指令添加CTT指令(335)。方法310然後可以在解碼期間藉由判定控制轉移指令是否跟隨CTT指令來繼續(340)。否則,處理邏輯引起執行異常或產生如圖2的步驟230中的故障微操作(360)。如果答案為是則到方塊340,然後方法繼續判定CTT指令是否與執行控制轉移指令(例如,32位元模式或64位元模式)之後的處理邏輯是否相同(345)。當方答案為是時至方塊345,則處理邏輯可以將狀態機放置於或保持在相應於圖2中的狀態210的IDLE狀態中(350)。當答案為否時至方塊345,則處理邏輯引起執行異常或產生故障微操作,如關於圖2的步驟230所討論的那樣(360)。然後,處理器可以響應於執行異常或故障採取適當的動作。在一個實施例中,撤回單元130可以在藉由處理器的部分100之管線接收到故障微操作時向故障處置器140發送執行異常。
圖4為根據本發明另一實施例之用於模式指明控制流程終止之另一方法400的流程圖。方法400可以由撤回單元的邏輯執行,以處理基於CTT的撤回操作。方法400可以藉由判定與來自CTT狀態機的WAIT狀態相關聯的 控制轉移微指令(μop)是否跟隨CTTμop(410)來開始。當答案為否時,然後方法會產生故障,並將故障發送到故障處置器(450)。當答案為是時,然後方法400可進一步判定例如CTT μop是否如機器之當前模式一樣的模式(420),無論是32位元還是64位元模式。當至方塊420之答案為是時,邏輯可以撤回CTT μop(430)、發訊號至狀態機以將狀態移動到IDLE(435),並執行進一步的撤回操作(440)。當方塊420的答案為否時,邏輯可以產生並向故障處置器發送執行異常(450)。該邏輯還可以將目標μop保持在主動執行中,例如,不依賴於解決執行異常的故障處置器來撤回目標μop(可能屬於小工具)(460)。
圖5A為根據本發明一實施例之控制轉移管理之方法的流程圖。如圖所示,方法500可以由包括如本文所述之控制轉移終止(CTT)狀態機的處理器執行。注意圖5A所示之操作係有關於用於控制轉移相關指令之狀態機操作。對於其他指令,如果狀態機當前處於IDLE狀態,狀態機將保持IDLE狀態。方法500可以藉由判定是否接收到回饋訊號來更新CTT狀態機(510)來開始。在一個實施例中,可以從撤回單元或故障處置器接收該回饋訊號,以使狀態機的狀態轉變到給定狀態,例如,由於錯誤預測(如撤回單元)或響應於解決故障(從故障處理程式)。如果接收到這樣的回饋訊號,則控制轉移到方塊515,其中狀態機透過回饋訊號通訊的狀態被更新。
從這兩種情況來看,控制通過至方塊框520,其中指示諸如呼叫、跳位或返回的間接控制轉移指令已經發生(假設解碼單元已經解碼了這樣的指令)。並且因此,控制通過至方塊525,其中可以發生狀態機之WAIT狀態的轉變。
繼續參考圖5A,方法500可以進一步判定是否接收到正確模式的控制轉移終止指令的指示(530)。如果是這樣,控制通過到方塊535,其中進入狀態機的IDLE狀態,根據控制轉移指令之後的這個適當的CTT指令,發生有效的控制轉移。
當方法500判定下一個解碼的指令不是CTT指令或者是與機器的當前模式不匹配的CTT指令時,控制通過至方塊540,其中可以將控制轉移終止故障指令插入到處理器管線。注意,狀態機的狀態不改變,因此保持在所選的WAIT狀態。在一個實施例中,故障指令是透過處理器管線運行的μop,並且如果它被選擇用於撤回,則撤回單元引起故障以使基於OS的故障處置器能夠執行以判定故障的原因並採取適當的行動。
圖5B為根據本發明一實施例之控制轉移管理之另一方法550的流程圖。方法550可以至少部分的由撤回單元的邏輯執行,以處理基於CTT的撤回操作。如圖所示,方法550開始於撤回給定的微指令(μop)並儲存與μop相關聯的CTT狀態(555)。在一個實施例中,資訊可以儲存在撤回單元的給定儲存器中,例如重新排序緩衝器條 目。如將在下面進一步討論的那樣,可以在發生錯誤預測的情況下使用該狀態。接下來,方法500判定是否發生了錯誤預測。如果是這樣,則控制通過至方塊570,其中可以獲得關於重新排序緩衝器的條目中存在的最後有效撤回的μop的資訊並將其發送回(解碼單元的)CTT邏輯,以使狀態機的狀態能夠更新到適當的狀態。進一步的典型撤回操作可以繼續下去(575)。
繼續參考圖5B,當接收到故障μop(580)時,控制通過至方塊585,其中可以向故障處置器發出呼叫。作為範例,可以執行基於OS的故障處置器程序。作為故障處置的一部分,當故障是由於CTT故障μop引起的,基於監督者的CTT狀態機可以被啟用並且用來存取使用者模式CTT狀態機的狀態,以判定故障的原因並據此採取行動。作為範例,可以防止目標μop(即非CTT目標μop)撤回,並且可以執行適當的校正機制。或者,故障處置器可以採取任何其他行動。作為這種操作的一部分,故障處置器可以使使用者模式CTT狀態機設置為適當的狀態。完成故障處置器後,可以根據故障處置器的控制恢復撤回操作(590)。
執行有效控制轉移位置的CTT指令,軟體檢查可以被置放在這些指令之後,以使用諸如堆疊金絲雀的技術進一步檢查有效控制轉移。堆疊金絲雀被用來檢測堆疊緩衝器溢位。這是藉由在返回地址上輸入函數之前在堆疊上放置隨機數來完成的,並在從函數返回之前檢查該隨機數。 CTT邏輯115在程式中提供強大的位置,以增加檢測緩衝器溢位的附加檢查。沒有CTT邏輯,可以忽略這些檢查。因此CTT邏輯確保不會繞過這些檢查,因為必須在Endbranch處呼叫函數,並且不能跳過檢查而通過Endbranch。對於上面討論的範例,參考表3:
在上面的例子中,程式中因此有一個位置(在ENDRET32之後)放置這樣的檢查。沒有CTT處理邏輯,軟體無法有效地檢查可以用作小工具的所有地方,因為這些小工具可以在有效指令中間的位元組序列中製作。
使用CTT指令執行程式可由編譯器執行。於一實施例中,即時(JIT)編譯器或常規(cc)編譯器可以執行CTT指令的檢測。可替代地,這種儀器可以藉由重寫程式二進制來執行,以使用二進制重寫工具插入CTT指令,該二進制重寫工具從應用程式二進制重建控制流程圖。二進制重寫技術可用於其中二進制源不可用於重新編譯的情 況。這種二進制重寫也可以藉由使用此種工具的反惡意軟體來完成。
在某些情況下,使用CTT儀器編寫的應用程式和資料庫可以與未使用CTT儀器編譯的資料庫進行合併,例如本文稱為“舊式資料庫”的非CTT工具資料庫。
為了支持這些舊式資料庫的持續操作,實施例可以提供附加的指令。於一此類實施例中,本文稱為DISCTT指令的抑制指令可以用於抑制CTT狀態機,使得它保持在IDLE狀態,而不是分別轉換到間接CALL/JMP上的WAIT_FOR_ENDBRANCH或WAIT_FOR_ENDRET狀態,或RET。此外,這指令在指令發出時(在通用暫存器中)返回CTT抑制的狀態。在本文中稱為ENCTT指令的致能指令係用於消除由DISCTT指令放到位的CTT狀態機的抑制,使得狀態機執行CTT規則。此外,這指令在指令發出時返回CTT抑制的狀態。
DISCTT和ENCTT指令的使用可由操作系統致能用於程序。如果操作系統不允許程式禁用CTT,則DISCTT指令將作為NOP執行並且不會抑制CTT。
在程式中使用DISCTT和ENCTT指令之使用用來執行舊式相互影響,如下表4所示。
作為DISCTT指令的結果返回CTT的前一狀態允許支持如下所示的呼叫鏈:CTT_function1->legacy_function1->CTT_function2->legacy_function2。
這裡CTT_function1在呼叫legacy_function1之前發出DISCTT指令。DISCTT指令將CTT功能的當前狀態返回為NOT_SUPPRESSED,然後抑制CTT功能。Legacy_function1呼叫CTT_function2。現在當CTT_function2呼叫legacy_function2時,它再次發出DISCTT指令。DISCTT指令現在將CTT功能的當前狀態返回為SUPPRESSED,因為它被CTT_function1抑制。當控制從legacy_function2返回到CTT_function2時,它不會取消抑制CTT功能,因為它被調用時已被抑制。當控制返回到CTT_function1時,它會使用ENCTT指令來禁止CTT功能,因為它被該功能所抑制。
響應於ENCTT指令之返回CTT的先前狀態可允許 CTT致能的資料庫函數由非CTT致能的資料庫/應用在開始執行前取消抑制CTT,並在在返回給呼叫者之前抑制CTT功能,如果當函數被呼叫時被抑制。
如下表5所示:
圖6為為根據本發明一實施例之組態暫存器的方塊圖。如圖6所示,組態暫存器600可以包括用於儲存在執行CTT功能中使用的狀態值的各種欄位。於一實施例中,可以提供兩個這樣的組態暫存器,其中每個暫存器與特定操作模式相關聯。換句話說,一個組態暫存器可以用於在使用者模式(例如,環3)中控制CTT操作,而第二組態暫存器可以用於在監督者模式(例如,小於3的環)中控制CTT功能。
在所示的實施例中,組態暫存器600包括致能欄位605以儲存致能指示符,指示符係用來指示是否為當前權限層級致能CTT。舊式致能欄位610可用於儲存指示符以指示是否致能舊式相互影響。抑制欄位615可以用於儲存抑制指示符以指示是否抑制CTT故障和追蹤。追蹤器欄位620可以用於儲存CTT狀態機的值。在一個實施例中,追蹤器欄位可以是三位元,其中零值(“0”)可以指示IDLE狀態、一值(“1”)可以指示WAIT_FOR_ENDRET32狀態、二值(“2”)可以指示WAIT_FOR_ENDRET64狀態、三(“3”)的值可以指示WAIT_FOR_ENDBRANCH32狀態以及四值(“4”)可以指示WAIT_FOR_ENDBRANCH64狀態。保留欄位425可用於各種擴展。在其他實施例中,其他欄位可以存在於圖4中具體示出的其它欄位。
現在參考圖7A,示出了用於碼執行的呼叫堆疊框的方塊圖,其交錯CTT致能碼以及沒有CTT致能功能的舊式碼。如圖7所示,碼段750包括第一CTT呼叫堆疊框 760和第二CTT呼叫堆疊框762,其又呼叫舊式呼叫堆疊框765。因此,在呼叫此舊式呼叫堆疊框的時候,CTT功能響應於DISCTT指令被禁用。因此,在這一點上,對於第一舊式呼叫堆疊框765和第二舊式呼叫堆疊框766禁用的CTT功能開始執行。請注意,隨著被呼叫函數的返回,在返回到呼叫堆疊框762時,藉由ENCTT指令重新致能CTT功能的執行。
如此一來,圖7A示出了對舊式碼第一次轉移抑制CTT的範例,其由於安全原因而使用間接CALL/JMP指令(而不是RET)完成。一旦藉由DISCTT指令抑制CTT,則後續的CALL/JMP/RET指令可能會停止ENDBRANCH/ENDRET以外的指令,而不會引起故障。當控制經由ENCTT指令返回至其中抑制被完成的點時,CTT操作為無抑制的。
圖7B為根據本發明一實施例之具有舊式相互影響之控制轉移終止邏輯的方塊圖。如圖7B所示,存在CTT致能應用圖像770的實施方式,其發出對CTT致能資料庫775(Call_1)的呼叫,進而啟動對舊式資料庫785(Call_2)的呼叫。反過來,舊式資料庫785向第二CTT致能資料庫790(Call_3)發出呼叫。也存在於堆/堆疊780。在第二CTT致能資料庫790中執行之後,控制返回到舊式資料庫785(RET_1),以及從那裡控制返回到第一CTT致能資料庫775(RET_2),並且最後控制返回到應用影像770(RET_3)。
請注意,在Call_2時,會發生舊式轉移,因此經由 DISCTT指令抑制CTT。因此,對於Call_3,CTT仍然被抑制,就像RET_1一樣。最後,RET_2導致返回到抑制點,並且因此,CTT經由ENCTT指令為未抑制。注意,當設置CTT控制邏輯的舊式相互影響致能指示符並且對非ENDBRANCH指令發生間接控制轉移(即,跳轉或呼叫)時,可以輸入該舊式相互影響。
如果程式設計者意識到相互影響,則DISCTT和ENCTT指令可以由程式設計者放在程式中,和/或當這些DISCTT和ENCTT指令在靜態連接到舊式資料庫時可由編譯器/鏈接器放入程式中。
當動態地鏈接到資料庫時,載入器或反惡意軟體可以在應用和資料庫之間插入跳躍床(trampoline)功能,其中跳躍床功能使用DISCTT和ENCTT指令。例如,對動態鏈接到CTT致能應用的舊式資料庫中對函數的呼叫係透過跳躍床功能,該功能可以抑制CTT,然後呼叫舊式資料庫函數。舊式資料庫函數返回到不抑制CTT的跳躍床函數,並返回到CTT致能應用。
反惡意軟體可以使用實施例來包裝非CTT二進制,以便它們可以與CTT致能二進制一起使用。此外,反惡意軟體可以限制小工具的使用,即使使用CTT中也可以在程式中找到小工具。實施例可以特別適用於行動和其他可攜式低功率系統,因為軟體僅僅是減輕ROP的技術(例如藉由使用功能相同,但更大更複雜的序列來重寫二進制以去除RET的所有實例而消除所有實例),通常導 致更大的二進制,並增加了程式的執行時間,從而不適用於節電為主要關注的行動應用。
圖8為根據本發明一實施例之處理器核心800的方塊圖。如圖8所示,處理器核心800可以是多階段管線的失序處理器。核心800可支持一或多個指令集(例如x86指令集(有些擴延已經增加較新版本);加州昇陽谷的MIPS技術公司之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(具有選擇性額外擴延,諸如霓虹(NEON))。應能理解到核心800可支持多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種方式達成支持,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如Intel® Hyperthreading技術)。
包括核心800的處理器可以是從Intel Corporation取得的通用處理器,例如CoreTM i3、i5、i7、2 Duo和Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM處理器。或者,處理器可來自另一公司,例如來自ARM控股有限公司、MIPS等等的設計。處理器可以是專用處理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器等。處理器可實施在一或多個晶粒上,以及可為一或多個基板的一部分,和/或可使用多項處理技術諸如BiCMOS、CMOS、或NMOS而實施在一或 多個基板上。
如圖8所示,核心800可以作為積體電壓調節器809的結果被操作在各種電壓及頻率。如圖8所示,核心800包括前端單元810,其可以用以提取要執行的指令並且準備它們以稍後在處理器中使用。例如,前端單元810可包括提取單元801、指令快取803及指令解碼器805。根據本發明之實施例,指令解碼器805可包括CTT邏輯806,其中相關聯的CTT狀態機執行如本文所述的CTT操作。在一些實施方式中,前端單元810可更包括追蹤快取以及微碼儲存以及微操作儲存。提取單元801可提取巨集指令,例如從記憶體或指令快取803,並且將它們饋送到指令解碼器805以將巨集指令解碼為基元,例如由處理器執行的微操作。
耦合在前端單元810和執行單元820之間的是失序(OOO)引擎815,其可以用以接收微指令並準備它們用於執行。更明確地OOO引擎815可包括各種緩衝器以重新排序微指令並分配執行所需的各種資源,以及提供邏輯暫存器到諸如暫存器檔830和擴展暫存器檔835的各種暫存器檔內的儲存位置上的重新命名。暫存器檔830可以包括用於整數和浮點操作的單獨的暫存器檔。擴展的暫存器檔835可為向量大小的單元(例如,256或512位元)提供儲存。
各種資源可以存在於執行單元820中,包括例如各種整數、浮點和單指令多資料(SIMD)邏輯單元以及其他 專用的硬體。例如,此種執行單元可包括一或多個算術邏輯單元(ALU)822以及其他此種執行單元。
可以將執行單元的結果提供給包括重排序緩衝器(ROB)之撤回單元840。ROB可包括各種陣列和邏輯,用以接收與執行的指令相關的資訊。然後這個資訊由撤回單元840檢查以判定指令是否可以有效地撤回並且結果數據被提交到處理器之架構狀態,或者是否發生一或多個異常防止指令的合適的撤回。當然,撤回單元840可處置其它與撤回關聯的操作。對於本文撤回操作,撤回單元840之CTT邏輯845可以儲存與進入指令一起接收的CTT狀態機狀態,並且響應於錯誤預測將這資訊饋送到CTT狀態機。
圖9A為示出處理器核心900之微架構的方塊圖,其中處理器核心900可被整合至圖1之處理器中或執行圖2之狀態機200(或CTT處理邏輯)。具體地,根據本發明的至少一個實施例,處理器核心900描繪了要包括在處理器中的有序架構核心和暫存器重新命名邏輯、失序簽發/執行邏輯。攜帶附加位元之錯誤校正碼之實施例可由處理器核心900實施。
處理器核心900包括前端單元930耦合至執行引擎單元950,以及二者係耦合至記憶體單元970。處理器核心900可包括精簡指令集電腦(RISC)核心、複雜指令集電腦(CISC)核心、極長指令字組(VLIW)核心、或混合或其它核心類型。至於又另一選項,處理器核心900可包 括特用核心,諸如網路或通訊核心、壓縮引擎圖形核心等。於一實施例中,處理器核心900可為多核心處理器或可為多處理器系統之一部分。
前端單元930包括耦合至一指令快取單元934的分支預測單元932,指令快取單元834係耦合至指令轉譯後備緩衝器(TLB)936,其係耦合至指令提取單元938,其係耦合至一解碼單元940。解碼單元940(也稱為解碼器)可解碼指令,以及產生一或多個微操作作為輸出,微碼進入點、微指令、其它指令、或其它控制訊號,其係從主要指令解碼,或以其它方式反映、或推衍。解碼器940可使用多種不同機構實施。合適的機制之範例包括但不限制於查找表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。指令快取單元934更耦合至記憶體單元970。解碼單元940係耦合至執行引擎單元950內部的重新命名/配置器單元952。
執行引擎單元950包括重新命名/配置器單元952,耦合至撤回單元954及或多個程器單元956之集合。排程器單元956表示任何數目的不同排程器,包括保留站(RS)、中央指令窗等。排程器單元956係耦合至實體暫存器檔單元958。每一個實體暫存器檔單元958表示一或多個實體暫存器檔,不同的實體暫存器檔儲存一或多個不同的資料類型,例如純量整數、緊縮浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等,狀態(例如,指令指標,其為要執行的下一個指令)等。實體暫存器檔單元 958被退撤回單元954重疊,以說明可以實現暫存器重新命名和失序執行的各種方式(例如,使用重排序緩衝器及撤回暫存器檔、使用未來檔、歷史緩衝器以及撤回暫存器檔;使用暫存器映射和暫存器池等等)。
通常,架構暫存器從處理器外側或從編程者的角度為可見的。暫存器不限於任何已知的特定類型的電路。暫存器各種不同類型是合適的只要它們能夠儲存以及提供如本文敘述的資料。合適的暫存器範例包括但不限制於專用的實體暫存器、使用暫存器重新命名的動態分配的實體暫存器、專用和動態分配的實體暫存器的組合等。撤回單元954和實體暫存器檔單元958耦合到執行群集960。執行叢集960包括一或多個執行單元962之一集合及一或多個記憶體存取單元964之一集合。執行單元962可對各型資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各項操作(例如移位、加法、減法、乘法)。
雖然有些實施例可包括專用於特定功能或功能集合的多個執行單元,但其它實施例可只包括一個執行單元或多個執行單元,其全部一起執行全部功能。排程器單元956、實體暫存器檔單元958、及執行叢集960顯示為可能為多數,原因在於一些實施例產生針對一些類別的資料/操作的分開管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、和/或記憶體存取管線各自具有其本身的排程器單元、實體暫存器檔單元、 和/或執行叢集且於分開記憶體存取管線之情況下,實施一些實施例其中只有此一管線的執行叢集具有記憶體存取單元964)。也須瞭解使用分開管線時,此等管線中之一或多者可為失序簽發/執行及有序靜止。
舉幾個例子,記憶體存取單元之集合964耦合至記憶體單元970,其包括資料預提取器980、資料TLB單元972、資料快取單元(DCU)974以及層級2(L2)快取單元976,以命名。在一些實施例中,DCU 974也被稱為第一層級資料快取(L1快取)。DCU 974可以處理多個突出的快取失誤並且繼續服務進入的儲存和載入。它還支持維護快取一致性。資料TLB單元972為用來藉由映射虛擬及實體位址空間來改善虛擬位址轉譯速度的快取。在一個具體實施例中,記憶體存取單元964可包括一載入單元、一儲存位址單元、及一儲存資料單元,各單元係耦合至記憶體單元970中的資料TLB單元972。L2快取單元976可耦合至一或多個其它層級的快取記憶體,及最終耦合至一主記憶體。
於一實施例中,資料預提取器980藉由自動預測程式將要消耗的資料推測地載入/預提取資料至DCU 974。預提取可以指在記憶體層級(例如,叫低層級快取或記憶體)的一記憶體位置(例如,位置)中儲存的資料在處理器實際請求資料之前至更靠近(例如,產生較低的存取延遲)處理器的較高層級記憶體位置。更明確地,預提取可以指在處理器發出對返回的特定資料的需求之前,從較低 層級快取/記憶體中的一者之資料快取和/或預提取緩衝器的資料的早期檢索。
處理器核心900可支持一或多個指令集(例如x86指令集(有些擴延已經增加較新版本);英國赫特福德郡Kings Langley之影像技術之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(具有選擇性額外擴延,諸如霓虹(NEON))。
應能理解到核心可支持多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種方式達成支持,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如Intel® Hyperthreading技術)。
雖然暫存器重新命名係以失序執行脈絡描述,但須瞭解暫存器重新命名可用於有序架構。雖然處理器之具體實施例也包括分開的指令及資料快取單元及一分享L2快取單元,但替代實施例可具有用於指令及資料二者的單一內部快取記憶體,諸如層級1(L1)內部快取記憶體,或內部快取的多個層級。在一些實施例中,該系統可包括一內部快取記憶體與在核心和/或處理器外部的一外部快取記憶體之組合。另外,全部外部快取記憶體可位在核心和/或處理器外部。
圖9B為根據本發明一些實施例示出由圖9A之處理器900實施的有序管線以及暫存器重新命名階段、失序簽 發/執行管線的方塊圖。圖9B的實線框例示說明有序管線,而虛線框示出說明暫存器重新命名、失序簽發/執行管線。於圖9B中,處理器管線990包括提取階段902、長度解碼階段904、解碼階段906、配置階段908、重新命名階段910、排程(又稱為調度或簽發)階段912、暫存器讀取/記憶體讀取階段914、執行階段916、回寫入/記憶體寫入入階段918、例外處理階段922、及確定階段924。在一些實施例中,階段902-924的排序可以與所示的不同,並且不限於圖9B中所示的特定排序。
圖10示出包括邏輯電路之處理器1000(其可代表在一實施例中圖1之處理器)之微架構的方塊圖。在一些實施例中,根據一實施例之指令可被實施為對具有位元組、字、雙字、四字等等的大小之資料元素以及諸如單精度和雙精度整數和浮點數資料類型的資料類型進行操作。在一個實施例中,有序前端1001是處理器1000的提取要執行的指令的一部分,並且準備它們稍後在處理器管線中使用。
前端1001可包括幾個單元。於一實施例中,指令預先提取器1016從記憶體提取指令以及將它們饋送到指令解碼器1018,指令解碼器1018進而解碼或解讀它們。例如,於一實施例中,解碼器將接收到的指令解碼為機器可以執行之稱為“微指令”或“微操作”(也稱為微op或μops)的一或多個操作。在其它實施例中,解碼器將指令解析為操作碼以及由微架構使用以根據一個實施例執行的 操作之相應資料和控製欄位。於一實施例中,追蹤快取1030獲取解碼的μop並將它們組裝成為在用於執行之μop佇列1034中的程式有序序列或追蹤。當追蹤快取1030遇到復雜指令時,微碼ROM(或RAM)1032可提供完成操作所需的μop。
一些指令被轉換為單一微操作,而其他指令需要幾個微操作來完成完整的操作。在一個實施例中,如果需要多於四個微操作來完成指令,則解碼器1018存取微碼ROM 1032以執行指令。對於一個實施例,指令可以被解碼為小數目的微操作用於在指令解碼器1018處進行處理。在另一實施例中,如果需要數個微操作來完成操作,則可以將指令儲存在微碼ROM 1032內。追蹤快取1030指的是用以判定用於從微碼ROM 1032讀取微碼序列以完成根據一個實施例的一或多個指令的正確微指令指針之入口點可編碼邏輯陣列(PLA)。在微碼ROM 1032完成用於指令的微操作的排序之後,機器的前端1001恢復從跟追蹤快取1030提取微操作。
失序執行引擎1003是準備執行指令的地方。失序執行邏輯具有數個緩衝器以平滑和重新排序指令流程,以便在它們沿著管線下行以及被排程執行時優化性能。為了執行,分配器邏輯分配每一個μop需要的機器緩衝器和資源。暫存器重新命名邏輯將邏輯暫存器重新命名為暫存器檔中的條目。分配器也在指令排程器之前為兩個μop佇列之一分配用於每一μop的條目,一個用於記憶體操作,一 個用於非記憶體操作:記憶體排程器、快速排程器1002,慢/通用浮點排程器1004以及簡單浮點排程器1006。μop排程器1002、1004、1006基於它們的依附輸入暫存器運算元資源和uop需要完成它們的操作的執行資源的可用性來判定μop何時準備好執行。一實施例之快數排程器1002可以在主時脈週期的每一半上排程,而其他排程器只能在每一個主處理器時脈週期排程一次。排程器對分派埠進行仲裁以排程用於執行的μop。
暫存器檔1008、1010位於排程器1002、1004、1006與執行方塊1011中的執行單元1012、1014、1016、1018、1020、1022、1024之間。有分別用於整數和浮點操作的單獨的暫存器檔1008、1010。一實施例之每一個寄暫存器檔1008、1010也包括旁通網路,其可以將尚未寫入暫存器檔中之剛完成的結果旁通或轉發到新的從屬μop。整數暫存器檔1008和浮點暫存器檔1010也能夠與另一個進行通訊資料。對於一個實施例,整數暫存器檔1008被分成兩個分開的暫存器檔,一個用於低階32位元資料的暫存器檔和用於高階32位元資料的第二暫存器檔。一實施例之浮點暫存器檔1010具有128位元寬條目,因為浮點指令一般具有在寬度上從64至128位元的運算元。
執行方塊1011包含執行單元1012、1014、1016、1018、1020、1022、1024,其中指令係實際執行的。這個區段包括暫存器檔1008、1010,其儲存需要被執行的微 指令之整數和浮點資料運算元。一實施例之處理器1000包含數個執行單元:位址產生單元(AGU)1012、AGU 1014、快速ALU 1016、快速ALU 1018、慢ALU 1020、浮點ALU 1022、浮點移動單元1014。對於一實施例,浮點執行方塊1022、1024執行浮點、MMX、SIMD和SSE或其它操作。一實施例之浮點ALU 1022包括由用以執行除法、平方根和餘數微操作的64位乘-64位浮點除法器。對於本發明的實施例,涉及浮點值的指令可以用浮點硬體處置。
於一實施例中,ALU操作轉到高速ALU執行單元1016、1018。一實施例之高速ALU 1016、1018可以以半個時脈週期的有效潛伏執行快速操作。對於一實施例,最複雜的整數操作進入慢ALU 1020,因為慢ALU 1020包括用於長潛伏類型之操作的整數執行硬體,諸如乘法器、移位、旗標邏輯和分支處理。記憶體載入/儲存操作係由AGU 1012、1014執行。對於一實施例,整數ALU 1016、1018、1020係敘述在在64位元資料運算元上執行整數操作之上下文中。在一替代實施例中,ALU 1016、1018、1020可被實施以支持各種包括16、32、128、256等等的資料位元。同樣地,浮點單元1022、1024可被實施以支持具有各種寬度之位元的運算元範圍。對於一實施例,浮點單元1022、1024可以結合SIMD和多媒體指令對128位元寬緊縮資料運算元進行操作。
在一個實施例中,μop排程器1002、1004、1006在 上代負載已經完成執行之前分派相關操作。由於μop被推測性地排程並在處理器1000中執行,因此處理器1000還包括處理記憶體遺漏的邏輯。如果資料負載在資料快取中遺漏,在管線中可能存在飛行中的依賴操作,其已經使排程器具有暫時不正確的資料。重撥機制追蹤和重新執行使用不正確資料的指令。只有依賴操作需要被重撥,並且獨立的操作被允許完成。處理器之一實施例之排程器和重放機制也被設計為捕獲用於文本串比較操作的指令序列。
處理器1000根據一實施例在固態記憶體裝置中也包括用以實施壓縮/解壓縮最佳化的邏輯。於一實施例中,處理器1000之執行方塊1011可包括MCU115,其根據本文敘述用以執行固態記憶體裝置中的壓縮/解壓縮最佳化。
術語“暫存器”可以指板上處理器儲存位置,其用作識別運算元之指令的一部分。換言之,暫存器從處理器的外部可以是可用的(從編碼者的角度)。然而,實施例之暫存器不應限制於特定類型的電路的含義。相反,實施例的暫存器能夠儲存和提供資料,並執行本文所述的功能的。本文敘述的暫存器可藉由在處理器中的電路使用不同技術實施,例如專用實體暫存器、使用暫存器重新命名的動態分佈的實體暫存器、專用和動態分佈的實體暫存器的組合等等。在一實施例中,整數暫存器儲存三十二位元整數資料。一實施例之暫存器檔也含有用於緊縮資料的八個多媒體SIMD暫存器。
於下述說明,暫存器被視為設計成保持緊縮資料的資料暫存器,諸如以來自加州聖克拉拉(Santa Clara)之英特爾公司的MMX技術賦能之微處器中64位元寬的MMX TM暫存器(在某些情形中也稱為「mm」暫存器)。能以整數及浮點形式取得的這些MMX暫存器以伴隨SIMD及SSE指令的緊縮資料元操作。類似地,與SSE2、SSE3、SSE4、或是之外(一般稱為「SSEx」)的技術有關的128位元寬的XMM暫存器也用以固持這些緊縮資料運算元。在一實施例中,在儲存緊縮資料及整數資料時,暫存器不需要區分二資料型式。在一實施例中,整數及浮點被含在相同暫存器檔案或不同的暫存器檔案中。此外,在一實施例中,浮點及整數資料可以儲存在不同的暫存器或相同的暫存器中。
實施例可在許多不同系統類型實施。現在參考圖11,其顯示根據實施方式之一種第多處理或系統1100之方塊圖。如圖11所示,微處理器系統1100為點對點互連系統,包括透過點對點互連1150而耦合的第一處理器1170及第二處理器1180。如圖11所示,處理器1170和1180中的每一個可以是包括第一和第二處理器核心(即,處理器核心1174a和1174b以及處理器核心1184a和1184b)的多核心處理器,儘管在處理器中可能存在更多的核心。依據本發明之一實施例,每一個處理器可包括併合寫入模式邏輯。頁面添加和內容拷貝的實施例可以在處理器1170、處理器1180或兩者中實現。
雖然示出為具有兩個處理器1170、1180,但是應當理解到本發明的範圍不限於此。在其它實施方式中,一或多個附加處理器可以存在於給定的處理器中。
處理器1170及1180係顯示為分別包括積體記憶體控制器單元1172及1182。處理器1170也包括點對點(P-P)介面1176及1188作為其匯流排控制器單元之一部分;同理,第二處理器1180可包括P-P介面1186及1188。處理器1170、1180可使用P-P介面電路1178、1188透過點對點(P-P)介面1150交換資訊。如圖11所示,IMC 1172及1182耦合該等處理器至個別記憶體,亦即記憶體1132及記憶體1134,其可為本地附接至個別處理器的主記憶體的一部分。
處理器1170、1180可使用點對點介面電路1176、1194、1186、1198透過點對點(P-P)介面1152、1154而各自與一晶片組1190交換資訊。晶片組1190還可以經由高性能圖形介面1139與高性能圖形電路1138交換資訊。
分享快取記憶體(圖中未顯示)可含括於任一處理器內或二處理器外部,但仍然透過P-P互連而與處理器連結,使得當一處理器被放置於低功率模式時,任一處理器的或二處理器的本地快取記憶體資訊可被儲存於該分享快取記憶體。
晶片組1190可透過一介面1196而耦合至一第一匯流排1116。在一個實施例中,第一匯流排1116可為周邊組 件互連(PCI)匯流排,或諸如PCI快速匯流排或其它第三代I/O互連匯流排之一匯流排,但本發明之範圍不因此限制。
如圖11所示,多個I/O裝置1114可連同一匯流排橋接器1118而耦合至第一匯流排1116,該匯流排橋接器1118係耦合第一匯流排1116至第二匯流排1120。在一個實施例中,第二匯流排1120可為低接腳數目(LPC)匯流排。在一個實施例中,多個裝置可耦合至第二匯流排1120,包括例如鍵盤和/或滑鼠1122、通訊裝置1127及儲存單元1128,諸如磁碟機或其它大容量儲存裝置,可包括指令/碼及資料1130。此外,音頻I/O 1124可被耦合至第二匯流排1120。注意其它架構係屬可能。例如,替代圖11之點對點架構,一系統可實施多插匯流排或其它此種架構。
現在參考圖12,其顯示依據本發明之一個實施例一種第三系統1200之方塊圖。圖11與圖12中相似的元件具有相似的元件符號,及圖11的一些方面已經從圖11刪除以免不必要地遮掩圖12的其它方面。
圖12例示說明處理器1270、1280分別地可包括積體記憶體及I/O控制邏輯(「CL」)1272及1282。對於至少一實施例,CL 1272、1282可包括諸如本文所述的積體記憶體控制器單元。此外。CL 1272、1282也可包括I/O控制邏輯。圖12示出了記憶體1232、1234耦合到CL 1272、1282,並且I/O裝置1214也耦合到控制邏輯 1272、1282。舊式I/O裝置1215係耦合至晶片組1290。頁面添加和內容拷貝的實施例可以在處理器1270、處理器1280或兩者中實現。
圖13為可以包括一或多個核心1302的範例系統單晶片(SoC)1300。其它本領域已知之針對膝上型電腦、桌上型電腦、手持式個人電腦、個人數位助理器、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、小區式電話、可攜式媒體播放器、手持式裝置及其它多種電子裝置的其它系統設計及組態也屬適宜。概略言之,能夠結合一處理器和/或其它此處揭示的執行邏輯的大量多種系統及電子裝置大致上為適宜。
進一步參考SOC 1300,虛線框是更先進的SoC的特徵。於圖13中,一互連單元1302係耦合至:一應用程式處理器1317其包括一或多個核心1302A-N與分享快取單元1306之一集合;一系統代理器單元1310;一匯流排控制器單元1316;一積體記憶體控制器單元1314;一或多個媒體處理器1320之一集合其可包括積體圖形邏輯1308、用於提供靜止和/或攝像機功能之影像處理器1324、用於提供硬體音頻加速之音訊處理器1326、及用於提供視頻編碼/解碼加速之視訊處理器1328;一靜態隨機存取記憶體(SRAM)單元1330;一直接記憶體存取(DMA)單元1332;及用以耦合至一或多個外部顯示器 的一顯示單元1340。頁面添加和內容拷貝的實施例可以在SoC 1300中實現。
接下來轉到圖14,描繪了根據本發明之實施例的系統單晶片(SoC)設計的實施例。作為說明性示例,SoC 1400包括在使用者設備(UE)中。在一個實施例中,UE是指要由終端使用者使用來進行通訊的任何設備,諸如手持電話、智慧型手機、平板、超薄智慧型手機、具有寬頻適配器的筆記型電腦或任何其他類似的通訊設備。UE可以連接到基地站或節點,其本質上可以相應於GSM網絡中的行動站(MS)。頁面添加和內容拷貝的實施例可以在SoC 1400中實現。
這裡,SoC 1400包括2個核心-1406和1407。類似於以上論述,核心1406及1407可符合指令集架構,諸如基於Intel® Architecture Core TM之處理器、Advanced Micro Devices,Inc.(AMD)處理器、基於MIPS之處理器、基於ARM之處理器設計或其客戶以及其執照或採用者。核心1406及1407耦合至與匯流排介面單元1409及L2快取1410相關聯的快取控制器1408,來與SOC1400之其他部分通訊。互連1411包括可能實施本發明所述之一或多個態樣之晶片上互連,諸如IOSF、AMBA或以上論述之任何其他互連。
互連1411提供通訊通道至其他組件,諸如:用以與SIM卡介接之用戶身份模組(SIM)1430、用來保存由核心1406及1407執行來初始化並啟動SOC 1400的啟動碼 之啟動ROM 1435、用以與外部記憶體(例如DRAM 1460)介接之SDRAM控制器1440、用以與非揮發性記憶體(例如快閃記憶體1465)介接之快閃記憶體控制器1445、用以與周邊裝置介接之周邊控制器1450(例如串列周邊介面)、用以顯示及接收輸入(例如,具備觸控功能的輸入)之視訊編碼解碼器1420及視訊介面1425、用以執行圖形相關計算之GPU 1415等等。此等介面中任一點可併入本文所述之本發明之態樣。
此外,系統示出用以通訊之周邊裝置,諸如藍芽模組1470、3G數據機1475、GPS 1480及WiFi 1485。請注意,如以上所述,UE包括用於通訊之無線電。因此,並不需要所有此等周邊通訊模組。然而,在UE中將包括用於外部通訊之某種形式的無線電。
圖15示出了計算系統1500的範例形式的機器的圖形表示,其中可以執行用於使機器執行本文所討論的方法中的任何一或多個的一組指令。在替代實施例中,機器可被連接(例如,網絡連接)到LAN、內部網路、外部網路或網際網路中的其他機器。機器可以在用戶端-伺服器網絡環境中以伺服器或用戶端裝置的能力操作,或者在對等(或分佈式)網絡環境中作為對等機器。機器可以為個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、一蜂巢式電話、網路家電、網路路由器、交換器、或橋接器、或能夠執行指定待由該機器採取之行動之指令(循序或按其他方式)的任何機器。再者,儘管所示 僅單一機器,「機器」一詞亦可用來包括個別或共同執行一(或多個)指令集以進行本文中所論述方法其中任何一或多者的任何機器集合。執行圖1之處理器的實施例可實施在計算系統1500中,或作為計算系統1500的一部分。
計算系統1500包括處理裝置1502、主記憶體1504(例如,快閃記憶體、動態隨機存取記憶體(DRAM)(諸如同步動態RAM(SDRAM)或DRAM(RDRAM)等等)、靜態記憶體1506(例如,快閃記憶體、靜態隨機存取記憶體(SRAM)等等)以及經由匯流排1508彼此通訊之資料儲存裝置1516。
處理裝置1502表示一或多個通用處理裝置,諸如微處理器、中央處理單元等等。更特別地,處理裝置可為複雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字組(VLIW)微處理器、或實施其它指令集之處理器、或實施指令集之組合的處理器。處理裝置1502也可為一或多個特用處理裝置,諸如特定應用積體電路(ASIC)、場可編程閘陣列(FPGA)、數位訊號處理器(DSP)、網路處理器等等。於一實施例中,處理裝置1502可包括一或多個處理器核心。處理裝置1502係組態以執行用於實施本文討論之操作的處理邏輯或指令1526。
於一實施例中,處理裝置1502可以為圖1之處理器的一部分。可替代地,計算系統1500可包括其它本文所述之組件。應能理解到核心可支持多執行緒(執行二或多 個並列的操作或執行緒集合),且可以多種方式達成支持,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如Intel® Hyperthreading技術)。
計算系統1500可更包括通訊地耦合至網路1519的網路介面裝置1518。計算系統1500也可包括視訊顯示單元1510(例如,液晶顯示器(LCD)或陰極射線管(CRT))、文數輸入裝置1512(例如,鍵盤)、游標控制裝置1514(例如,滑鼠)、訊號產生裝置1520(例如,揚聲器)或其它周邊裝置。再者,計算系統1500可包括圖形處理單元1522、視訊處理單元1528以及音訊處理單元1532。於另一實施例中,計算系統1500可包括晶片組(未示出),其指的是積體電路或晶粒之群組,其被設計以與處理裝置1502一起工作並且控制處理裝置1502和外部裝置之間的通訊。例如,晶片組可為在主機板上的晶粒組,其鏈結處理裝置1502到非常高速的裝置,諸如主記憶體1504和圖形控制器,以及將處理裝置1502鏈結到低速周邊匯流排的周邊裝置,諸如USB、PCI或ISA匯流排。
資料儲存裝置1516可包括電腦可讀取儲存媒體1524,在其上儲存實現本文描述的功能的方法中的任何一或多個的軟體1526。軟體1526還可以完全地或至少部分 地駐留在主記憶體1504內作為指令1526和/或在處理裝置1502內作為處理邏輯其由計算系統1500執行的期間;主記憶體1504和處理裝置1502也構成電腦可讀取儲存媒體。
電腦可讀取儲存媒體1524也可用來利用處理裝置1502儲存指令1526,諸如關於圖1-4所描述的,和/或包含調用上述應用的方法的軟體庫。儘管電腦可讀取儲存媒體1524在範例實施例中被示為是單個媒體,但是用語「電腦可讀取儲存媒體」應該被認為包括單個媒體或多個媒體(例如,集中式或分佈式資料庫和/或相關聯的快取及伺服器),其儲存一或多個指令集。用語「電腦可讀取儲存媒體」還應被理解為包括能夠儲存、編碼或攜帶用於由機器執行的一組指令並且使得機器執行本實施例的任何一或多個方法的任何媒體。用語「電腦可讀取儲存媒體」應相應地被認為包括但不限制於固態記憶體以及光學和磁性媒體。
下面的範例涉及到進一步的實施例。
範例1為一種處理器,其包含:1)執行單元;以及2)操作性地耦合至該執行單元之處理邏輯,該處理邏輯用以:a)進入第一執行狀態;b)響應於執行具有預定義子碼的控制傳輸指令,保持在該第一執行狀態中;c)響應於執行不具有該預定子碼的控制傳輸指令,轉換到第二執行狀態;以及d)響應於在該第二執行狀態中判定要執行的下一指令,不同於ENDBRANCH指令,引起執行異 常。
在範例2中,範例1的處理器,其中該第一執行狀態包含IDLE狀態,以及其中該第二執行狀態包含WAIT狀態。
在範例3中,範例1的處理器,其中該預定義子碼包含預定義運算碼前綴。
在範例4中,範例1的處理器,其中該處理邏輯更用以響應於執行作為遠程呼叫或跳位指令的控制傳輸指令,轉換到該第二執行狀態。
在範例5中,範例1的處理器,其中該ENDBRANCH指令為一個多位元組運算碼,其可執行作為無操作。
在範例6中,範例1的處理器,其中該處理邏輯更用以:響應於判定將被執行的下一個指令為ENDBRANCH指令,轉換到該第一執行狀態。
在範例7中,範例1的處理器,其中該處理邏輯包括用以追蹤控制轉移指令之執行狀態的狀態機。
各個實施例可具有上面敘述之結構特徵的不同組合。例如,上面敘述之計算系統的所有選擇性特徵也可以相對於本文所描述的方法或過程來實現,並且範例中的細節可以在一或多個實施例中的任何地方使用。
範例8為一種處理器,其包含:1)用以解碼第一控制轉移指令之解碼單元,其產生第一微操作,其中該第一控制轉移指令包括預定義子碼,其指示該解碼單元之處理邏輯不追蹤該第一微操作的執行;以及2)其中該處理邏 輯係用以響應於判定第二控制轉移指令的目標指令不是ENDBRANCH指令而提出執行異常,以及第二控制轉移指令不包括該預定義子碼其中該ENDBRANCH指令係多位元組運算碼,其可執行作為無操作。
在範例9中,範例8的處理器,其中該處理邏輯更用以將第一狀態與用以指示該處理邏輯係在IDLE狀態中的第一微操作相關聯。
在範例10中,範例8的處理器,其中處理邏輯更用以將第二狀態與從該第二控制轉移指令解碼的第二微操作相關聯,以指示處理邏輯係在WAIT狀態。
在範例11中,範例8的處理器,更包含:1)操作性地耦合至該解碼單元的執行單元,該執行單元用以執行微操作;以及2)操作性地耦合至該執行單元之撤回單元,該撤回單元用以在處理從所述目標指令解碼的目標微操作之後引起該執行異常。
在範例12中,範例8的處理器,其中該解碼單元更用以解碼該第二控制轉移指令為第二微操作以及將解碼該目標指令為目標微操作,更包含執行管線,其中該解碼單元更用以:a)回應於判定該第二控制轉移指令之該目標指令不為ENDBRANCH指令以及該第二控制轉移指令不包括該子碼而產生錯誤微操作;以及b)饋送該第二微操作、該目標微操作以及該錯誤微操作至該執行管線。
在範例13中,範例12的處理器,更包含:1)操作性地耦合至該解碼單元的執行單元,該執行單元用以執行 微操作;以及2)操作性地耦合至該執行單元之撤回單元,該撤回單元響應於該故障微操作的接收將該執行異常通訊至故障處置器。
各個實施例可具有上面敘述之結構特徵的不同組合。例如,上面敘述之計算系統的所有選擇性特徵也可以相對於本文所描述的方法或過程來實現,並且範例中的細節可以在一或多個實施例中的任何地方使用。
範例14為一種方法,其包含:1)藉由執行高階程式語言編譯器之處理裝置接收識別將要轉譯成用於在非追蹤模式中執行的控制轉移命令的程式語言語句的關鍵字列表;2)藉由該處理裝置判定該程式語言語句是否包含來自該關鍵字列表之關鍵字;以及3)響應於判定該程式語言語句包含來自該關鍵字列表之關鍵字,轉譯該程式語言語句為具有預定義子碼的控制轉移指令,該預定義子碼用以指示處理器不要追蹤該控制轉移指令。
在範例15中,申請專利範圍第14項之方法,其中該判定包含判定該關鍵字是否識別switch-case語句或表查找。
在範例16中,申請專利範圍第14項之方法,其中該判定更包含當執行時判定相應於該程式語言語句之控制轉移命令是否需要存取記憶體以撤回目的地位址,其中該方法更包含響應於判定該控制轉移命令不需要存取記憶體,轉移該程式語言語句為具有該預定義子碼之控制轉移指令。
在範例17中,申請專利範圍第14項之方法,其中轉譯包含將子代碼附加到控制傳送指令作為預定義的前綴運算碼。
在範例18中,申請專利範圍第14項之方法,更包含響應於判定該程式語言語句不包含該關鍵字列表中的關鍵字:a)將程式語言語句轉譯成可追蹤控制轉移指令;以及b)發出ENDBRANCH指令來追蹤該可追蹤控制轉移指令。
各個實施例可具有上面敘述之結構特徵的不同組合。例如,上面敘述之計算系統的所有選擇性特徵也可以相對於本文所描述的方法或過程來實現,並且範例中的細節可以在一或多個實施例中的任何地方使用。
範例19為一種處理器,其包含:1)用以提取指令之提取單元,其中該指令包括具有預定義子碼之第一控制轉移指令以及缺少預定義子碼的第二控制轉移指令;2)用以解碼該指令且包括處理邏輯的解碼單元,該處理邏輯用以:a)解碼該第一控制轉移指令為第一微操作;b)響應於檢測到該第一控制轉移指令之預定義子碼而保持在第一執行狀態;c)將該第二控制轉移指令解碼為第二微操作;以及d)響應於檢測到不存在該第二控制傳送指令的該預定義子碼而進入第二執行狀態;3)可操作地耦合到該解碼單元並執行該第一微操作及該第二微操作的執行單元;以及4)用以撤回該第一微操作並且在該第二次微操作不是ENDBRANCH微操作之後,響應於將要撤回的下一個微操 作來提出執行異常的撤回單元,其中該ENDBRANCH微操作是從可執行作為無操作之多位元組運算碼產生的。
在範例20中,範例19的處理器,其中該撤回單元更用以:a)在主動執行中保留下一個微操作;以及b)在決定是否撤回下一個微操作之前,將執行異常發送到故障處置器以用於校正動作。
在範例21中,範例19的處理器,其中該第一執行狀態為IDLE狀態,以及該處理邏輯將該IDLE狀態與該第二微操作相關聯。
在範例22中,範例19的處理器,其中該第二執行狀態為WAIT狀態,以及該處理邏輯將該WAIT狀態與該第二微操作相關聯。
儘管本發明已經以有關於有限數量的實施例描述,但是本領域技術人員將認識到其中的許多修改和變化。意圖是所附申請專利範圍涵蓋落入本發明的真實精神和範圍內所有此種的修改和變化。
在於此的說明中,提出眾多特定的細節,像是特定類型的處理器及系統配置、特定硬體結構、特定架構及微架構的細節、特定暫存器配置、特定指令類型、特定系統組件、特定測量/高度、特定處理器管線階段及運算等的範例,以為了提供徹底的理解本發明。然而,對本領域具有通常知識者將為顯而易見的是,不需要運用這些特定的細節來實行本發明。在其它實例中,周知的組件或方法,像是特定的及替代的處理器架構、用於說明的演算法之特定 的邏輯電路/碼、特定的韌體碼、特定的互連操作、特定的邏輯配置、特定的製制技術及材料、特定的編譯器建置、特定的以碼之演算法的表達、特定切斷電源及閘控技術/邏輯以及其它電腦系統之特定操作細節,未以細節說明以為了避免非必要地模糊本發明。
實施例係參照特定積體電路之固態記憶體裝置中的壓縮/解壓縮最佳化來說明,像是以計算平台或微處理器。實施例亦可應用至其它類型的積體電路及可編程邏輯裝置。例如,所揭露之實施例不限制於桌上型電腦系統或可攜式電腦(諸如,Intel® UltrabooksTM電腦),並且可用於其它裝置中(諸如,手持裝置、平板、其它薄的筆記型電腦、系統單晶片(SoC)裝置以及嵌入式應用)。手持裝置之一些範例包括蜂巢式電話、網際網路協定裝置、數位相機、個人數位助理(PDA)以及手持PC。嵌入應用典型地包括微控制器、數位訊號處理器(DSP;digital signal processor)、晶片上系統、網路電腦(NetPC)、機上盒、網路集線器、寬域網路(WAN)交換器或能施行下方所教示的功能及操作的任何其它系統。所說明的是,系統能為任何種類的電腦或嵌入系統。所揭示的實施例可特別地被使用於低端裝置,像可穿載裝置(例如,手錶)、電子植入物、感測及控制基礎設施裝置、控制器、監控及資料獲取系統(SCADA;supervisory control and data acquisition)等。再者,於此說明的設備、方法及系統並不限於實體計算裝置,而亦可關於用於能源節約及效 率的軟體最佳化。如在下方說明將變為容易明白的是,於此說明的方法、設備及系統的實施例(無論是否參照硬體、韌體、軟體或其結合)係對於「綠科技」是重要的,其與效能考量進行未來的平衡。
雖然這裡的實施例係參照處理器來說明,但其它實施例可應用至其它類型的積體電路及邏輯裝置。本發明類似的實施例之技術及教示能應用到其它類型的電路或半導體裝置,其能從較高管線工作量及改善的效能當中得益。本發明之實施例的教示係可應用到施行資料操作的任何處理器或機器。然而,本發明並不限於施行512位元、256位元、128位元、64位元、32位元或16位元資料運算的處理器或機器,而能應用到施行資料之操作或管理於其之中的任何處理器和機器。此外,於此的說明提供了範例,並且附圖繪示用於闡述的目的之各種範例。然而,這些範例在當他們僅打算提供本發明之實施例的範例而非窮舉本發明之實施例的所有可能建置時,不應以限制的意義來理解。
雖然下面範例說明在執行單元及邏輯電路之內文中的指令處理及分佈,本發明之其它實施例能藉由儲存在機器可讀、有形媒體中的資料或指令來完成,該媒體係當由機器施行時引起機器施行與本發明之至少一實施例一致的功能。在一實施例中,與本發明之實施例關聯的功能體現在機器可執行指令中。指令能被使用來引起一般目的或特定目的以指令來編程之處理器施行本發明之步驟。本發明之 實施例可被設置為電腦程式產品或軟體,其可包括具有儲存於其上之指令的機器或電腦可讀取媒體,該指令可被使用來編程電腦(或其它電子裝置)以施行依據本發明的實施例之一或更多運算。或者,本發明之實施例的運算可由包含用於施行運算之固定功能邏輯的特定硬體組件或由經編程的電腦組件及固定功能硬體組件之任何組合所施行。
使用來編程邏輯以施行本發明之實施例的指令能被儲存在系統中的記憶體內,諸如DRAM、快取、快閃記憶體或其他儲存器。進一步而言,指令能經由網路或藉由其它電腦可讀取媒體來分佈。因此,機器可讀媒體可包括用於以藉由機器(例如,電腦)而可讀取的形式儲存或傳輸資訊的任何機制,但機器不限於軟碟、光碟、壓縮碟唯讀記憶體/光碟(CD-ROM)及光磁碟、唯讀記憶體、隨機存取記憶體(RAM)、可抹除可編程唯讀記憶體(EPROM)、電可抹除可編程唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體或有形的、機器可讀的儲存器,該些儲存器在經由電、光、聲或其它形式的傳播訊號(例如,載波、紅外線訊號、數位訊號等)的網際網路之上的傳輸資訊中使用。因此,電腦可讀取媒體包括適合用於以由機器(例如,電腦)而可讀取之形式儲存或傳輸電子指令或資訊之任何類型的有形機器可讀媒體。
設計可通過從創建到模擬到製造的各種階段。表示設計的資料可以許多方式表示設計。首先,如在模擬中有用的是,硬體可使用硬體描述語言或其它功能描述語言來表 示。此外,具有邏輯及/或電晶體閘的電路級模型可在一些設計過程之階段產生。再者,在某階段處,大部分設計達到表示在硬體模型中各種裝置之實體放置的資料之等級。在使用傳統半導體製造技術的情形中,表示硬體模型的資料可為明定在用於使用來生產積體電路之遮罩的不同的遮罩層上各種特徵的存在或缺少的資料。在任何設計之表示中,資料可被儲存在任何形式的機器可讀媒體中。記憶體或像是碟片的磁性或光學儲存器可為機器可讀媒體,用以儲存經由調變的光或電波傳輸的資訊,或儲存別的方式產生以傳輸這類的資訊。當傳輸指示或運載碼或設計的電載波時,會完成新的複製而到施行電訊號之複製、緩衝或重傳的程度。因此,通訊供應商或網路供應商可至少暫時地在有形、機器可讀媒體上儲存體現本發明之實施例之技術的物件,像是編碼成載波的資訊。
如於此使用的模組參照至硬體、軟體及/或韌體之任何組合。如一範例,模組包括與非暫態媒體關聯的硬體,像是微控制器,用以儲存適於由微控制器執行的碼。因此,在一實施例中,提到模組係參照至硬體,其具體地被配置成認識及/或執行用以留存在非暫態媒體上的碼。再者,在另一實施例中,使用模組參照至包括碼的非暫態媒體,其具體地適於由微控制器執行,用以施行預定的運算。並且如能被推論地,又在另一實施例中,術語模組(在此範例中)可參照至微控制器和非暫態媒體的結合。通常,闡述為分開的模組邊界一般是變化的並且潛在地重 疊。例如,第一及第二模組可共用硬體、軟體、韌體或其結合,同時潛在地保有一些獨立硬體、軟體或韌體。在一實施例中,使用術語邏輯包括硬體,諸如電晶體、暫存器或其它硬體,像是可編程邏輯裝置。
在一實施例中使用詞彙「組態以」參照至安排、裝配、製造、提供販賣、進口及/或設計用以施行指派的或決定的任務之設備、硬體、邏輯或元件。在此範例中,其未進行運算的設備或元件仍然「組態以」施行指派的任務,如果它是被設計、耦合及或互連來進行所述指派的任務的話。如一純說明性範例來看,在運算期間邏輯閘可提供0或1。但邏輯閘「配置以」對時脈提供致能訊號並不包括可提供1或0之每一個潛在邏輯閘。相反的,邏輯閘係為以某種方式耦合之者而在運算期間1或0輸出是用以致能時脈。再一次注意,使用術語「配置以」並不需要運算,而相反地聚焦在設備、硬體及/或元件之潛在狀態(latent state),其中在潛在狀態中,設備、硬體及/或元件係設計成當設備、硬體及/或元件正進行運算時,施行特定的任務。
進一步而言,在一實施例中使用詞彙「用以(to)」、「能夠(capable of/to)」、「可操作以(operable to)」參照至以這類方法設計的某種設備、邏輯、硬體及/或元件,用來以明定的方式致能設備、邏輯、硬體及/或元件之使用。如上所指出的,在一實施例中使用用以、能夠或可操作以參照至設備、邏輯、硬體及/或元件之潛在狀 態,其中設備、邏輯、硬體及/或元件未進行運算,但以這類方式設計來以明定的方式致能使用設備。
如於此使用的值,包括數目、狀態、邏輯狀態或二位元邏輯狀態之任何已知表示。通常,邏輯準位(logic level)、邏輯值或邏輯的值之使用亦參照為1及0,其簡單地表示二進位邏輯狀態。舉例而言,1參照至高邏輯準位而0參照至低邏輯準位。在一實施例中,儲存單元(storage cell),像是電晶體或快閃單元,可能夠保持單一邏輯值或多個邏輯值。然而,在電腦系統中已使用值之其它表示。舉例來說,十進位數10亦可表示為1010之二進位值以及十六進位字母A。因此,值包括能夠保留在電腦系統中之資訊的任何表示。
再者,狀態可由值或部分的值表示。如一範例來看,第一值,像是邏輯1,可表示預設(default)或初始狀態,同時第二值,像是邏輯0,可表示非預設狀態。此外,在一實施例中術語重置(reset)及設定(set),分別參照至預設及更新的值或狀態。舉例來說,預設值潛在地包括高邏輯值,亦即重置,同時更新值潛在地包括低邏輯值,亦即設定。注意,可利用值的任何組合來表示任何數目的狀態。
上面提出之方法、硬體、軟體、韌體或碼之實施例可經由儲存在由處理元件可執行的機器可存取、機器可讀取、電腦可存取或電腦可讀媒體上的指令或碼來建置。非暫態機器可存取/讀取媒體包括以由像是電腦或電子系統 的機器可讀取的形式提供(亦即儲存及/或傳輸)資訊的任何機制。舉例而言,非暫態機器可存取媒體包括隨機存取記憶體(RAM;random-access memory),像是靜態RAM(SRAM;static RAM)或動態RAM(DRAM;dynamic RAM);包括ROM;包括磁性或光學儲存媒體;包括快閃記憶體裝置;包括電儲存裝置;包括光學儲存裝置;包括聲學儲存裝置;包括用於保持從暫態(傳播的)訊號(例如,載波、紅外線訊號、數位訊號)接收的資訊之其它形式的儲存裝置等,其與可從其接收資訊的非暫態媒體有所區別。
使用來編程邏輯以施行本發明之實施例的指令能被儲存在系統中的記憶體內,諸如DRAM、快取、快閃記憶體或其他儲存器。進一步而言,指令能經由網路或藉由其它電腦可讀取媒體來分佈。因此,機器可讀媒體可包括用於以藉由機器(例如,電腦)而可讀取的形式儲存或傳輸資訊的任何機制,但機器不限於軟碟、光碟、壓縮碟唯讀記憶體/光碟(CD-ROM)及光磁碟、唯讀記憶體、隨機存取記憶體(RAM)、可抹除可編程唯讀記憶體(EPROM)、電可抹除可編程唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體或有形的、機器可讀的儲存器,該些儲存器在經由電、光、聲或其它形式的傳播訊號(例如,載波、紅外線訊號、數位訊號等)的網際網路之上的傳輸資訊中使用。因此,電腦可讀媒體包括適合用於以由機器(例如,電腦)而可讀取之形式儲存或傳輸電子指令 或資訊之任何類型的有形機器可讀媒體。
遍及本說明書所提到的「一實施例」或「實施例」意味連同實施例說明的特別特徵、結構或特性被包括在本發明之至少一實施例中。因此,詞彙「在一實施例中」或「在實施例中」於遍及本說明書各種地方之出現並不必然全參照至相同的實施例。再者,特定特徵、結構或特性可以合適的方式結合在一或多個實施例中。
在前述的說明書中,詳細的說明已參考特定示範性實施例而給定。然而,將明白的是,各種修改及變化可在不悖離如在所附申請專利範圍中提出之本發明的較寬廣的精神及範圍下對之完成。據此,說明書及圖式是以闡述的義意來考慮,而非是限制的意義。進一步而言,前述使用的實施例及其它示範性地語言並不必然參照至相同實施例或相同範例,而可參照至不同及區別的實施例以及潛在相同的實施例。
一些部分的詳細說明係按照演算法及在電腦記憶體內資料位元上運算之符號表示。這些說明及表示係為由資料處理領域具有通常知識者使用的手段,用以最有效地將他們工作的實質傳達給其它本領域具有通常知識者。在此且一般而言,演算法係理解為導致所欲結果的運算之自我一致的序列(self-consistent sequence)。運算為需要物理量之實體操控的該些者。通常來說,雖然不一定,這些量採用能夠被儲存、轉換、結合、比較及另外其它操控的電或磁訊號的形式。有時,主要是為了共同使用的原因,將 這些訊號參照為位元、值、元件、符號、字母、術語、數字等已證明是方便的。於此說明的方塊可以為硬體、軟體韌體或其結合。
然而,應牢記在心的是,所有這些及類似的術語係用以與合適的物理量關聯並且僅為應用到這些量之便利的標記。除非具體地陳述,否則如從上面討論中為明顯的是,可理解的,遍及本說明,利用像是「界定(defining)」、「接收(receiving)」、「判斷(determining)」、「發出(issuing)」、「鏈接(linking)」、「關聯(associating)」、「獲得(obtaining)」、「證明(authenticating,)」、「禁止(prohibiting)」、「執行(executing)」、「請求(requesting)」、「通訊/傳送(communicating)」等術語的討論參照至計算系統或類似電子計算裝置的動作及處理,其將在計算系統的暫存器及記憶體內表示為物理(例如,電子)量的資料操控和變換成在計算系統記憶體或暫存器或其它這類資訊儲存器、傳輸或顯示裝置內同樣地表示為物理量的其它資料。
字詞「範例」或「示範性的」於此使用來意味作為範例、例子或例證。於此說明為「範例」或「示範性的」態樣或設計並不必然用以理解為在其它態樣或設計之上是較佳的或有益的。相反的,使用字詞「範例」或「示範性的」係打算以具體的方式提出概念。如在此應用中所使用的,述語「或」係打算意味著包含(inclusive)「或」而非互斥(exclusive)「或」。亦即,除非另外明定,或從 上下文清楚得知,「X包括A或B」係打算意味自然包含的排列中之任一者。亦即,若X包括A;則X包括B;或X包括A及B兩者,接著「X包括A或B」係在任何前述實例之下被滿足。此外,如在此應用及所附申請專利範圍中使用的冠詞「一(a)」及「一(an)」應一般地被理解為意味「一或更多」,除非另外明定或從上下文清楚得知是涉及單數形式。再者,各處地使用術語「實施例」或「一實施例」或「建置」或「一建置」並不打算意味相同實施例或建置,除非如此地說明。同樣,於此使用的術語「第一」、「第二」、「第三」、「第四」等意思為標記,用以在不同元件之間進行區別並且可不必要依據他們的數字標示而具有次序的意思。

Claims (25)

  1. 一種積體電路電晶體裝置,其包含:基板;半導體鰭片,其從該基板延伸,該鰭片包含:通道層,其包含通道區、源極區以及汲極區;以及子鰭片絕緣層,其包括腔體,該腔體設置在該通道層和下面的該基板之間,其中該腔體係由以介電質材料排列的牆定義。
  2. 如申請專利範圍第1項所述之積體電路電晶體裝置,其中設置在該通道層和下面的該基板之間的該腔體進一步延伸,使得其也在該基板與該鰭片的該源極區和該汲極區之一者的至少一部分之間或該基板與該鰭片的該源極區和該汲極區兩者的至少一部分之間。
  3. 如申請專利範圍第1項所述之積體電路電晶體裝置,更包含:閘極介電質材料,其在該通道區上方;以及閘極電極材料,其在該閘極介電質材料上方。
  4. 如申請專利範圍第3項所述之積體電路電晶體裝置,其中排列該腔體的該介電質材料與該閘極介電質材料相同。
  5. 如申請專利範圍第4項所述之積體電路電晶體裝置,其中以該閘極介電質材料排列的該腔體更至少部分地以該閘極電極材料填充。
  6. 如申請專利範圍第1項所述之積體電路電晶體裝置,更包含:閘極介電質材料,其在該通道區上方;以及閘極電極材料,其在該閘極介電質材料上方,其中排列該腔體之該介電質材料與該閘極介電質材料為不同材料。
  7. 如申請專利範圍第1項所述之積體電路電晶體裝置,其中該子鰭片絕緣層具有相應於該鰭片之寬度的該寬度。
  8. 如申請專利範圍第1項所述之積體電路電晶體裝置,其中排列該腔體之該牆的該介電質材料更定義具有平行於該鰭片之長度的長度的細長空隙。
  9. 如申請專利範圍第1項所述之積體電路電晶體裝置,其中該腔體包含空氣間隙。
  10. 如申請專利範圍第1項所述之積體電路電晶體裝置,其中該腔體至少部分地填充有不同於排列該腔體之該牆的該介電質材料的另一材料。
  11. 如申請專利範圍第1項所述之積體電路電晶體裝置,其中該腔體之該牆完全地塗覆有排列該腔體之該牆的該介電質材料,使得該腔體牆沒有部分是沒有塗覆有該介電質材料。
  12. 如申請專利範圍第1項所述之積體電路電晶體裝置,更包含接近該鰭片之非主動鰭片,該非主動鰭片包含: 非主動通道層,其從該基板延伸;以及子鰭片區,其在該非主動通道層下面,該子鰭片區具有與該基板相同的組成。
  13. 一種計算系統,其包含如任何申請專利範圍第1-12項所述之積體電路電晶體裝置。
  14. 一種半導體裝置,其包含:基板;複數個主動鰭片,其從該基板延伸,該些主動鰭片的每一者包含:通道層,其包含通道區、源極區以及汲極區;以及子鰭片絕緣層,其包括腔體,該腔體設置在該通道層和下面的該基板之間,以及在該基板與該源極區和該汲極區中的每一個的至少一部分之間,其中該腔體係由以介電質材料排列的牆定義;複數個非主動鰭片,其從該基板延伸,該些非主動鰭片的每一者包含:非主動通道層,其從該基板延伸;以及子鰭片區,其在該非主動通道層下面,該子鰭片區具有與該基板相同的組成。
  15. 如申請專利範圍第14項所述之半導體裝置,更包含:閘極介電質材料,其在該通道區上方;以及閘極電極材料,其在該閘極介電質材料上方。
  16. 如申請專利範圍第15項所述之半導體裝置,其中排列該腔體的該介電質材料與該閘極介電質材料相同。
  17. 如申請專利範圍第16項所述之半導體裝置,其中以該閘極介電質材料排列的該腔體更至少部分地以該閘極電極材料填充。
  18. 如申請專利範圍第14項所述之半導體裝置,其中該子鰭片絕緣層具有相應於該鰭片之整個長度的該長度。
  19. 如申請專利範圍第14項所述之半導體裝置,其中該子鰭片絕緣層具有相應於該鰭片之寬度的該寬度。
  20. 如申請專利範圍第13項所述之半導體裝置,其中該腔體包含空氣間隙。
  21. 如申請專利範圍第14項所述之半導體裝置,其中該腔體至少部分地由另一材料填充,該另一材料不同於排列該腔體之該牆的該介電質材料。
  22. 如申請專利範圍第14-21項所述之半導體裝置,其中該腔體之該牆完全地塗覆有排列該腔體之該牆的該介電質材料,使得該腔體牆沒有部分是沒有塗覆有該介電質材料。
  23. 一種用於製造半導體裝置的方法,其包含:提供基板,該基板包含:包含通道層之至少一鰭片;在該些鰭片之至少一者之間的介電質層;在該基板和該通道層之間的子鰭片區中的犧牲 層;去除在該些鰭片之至少一者之間的該介電質材料的一部分,以露出該犧牲層之一階;從在該基板和該通道層之間的該子鰭片區去除該犧牲層之至少一部分,藉此露出腔體;以及沉積介電質材料在該腔體內。
  24. 如申請專利範圍第23項所述的方法,其中在該子鰭片區中的該犧牲層不延伸至該些鰭片之至少一者之間的該介電質層下方。
  25. 如申請專利範圍第23-24項中任一項所述的方法,其中該介電質材料保形地沉積在定義該腔體之牆的表面上。
TW105138283A 2015-12-23 2016-11-22 控制轉移強制執行中的非追蹤控制轉移的方法及處理器 TWI729033B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/757,964 US9785800B2 (en) 2015-12-23 2015-12-23 Non-tracked control transfers within control transfer enforcement
US14/757,964 2015-12-23

Publications (2)

Publication Number Publication Date
TW201732562A true TW201732562A (zh) 2017-09-16
TWI729033B TWI729033B (zh) 2021-06-01

Family

ID=59088432

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105138283A TWI729033B (zh) 2015-12-23 2016-11-22 控制轉移強制執行中的非追蹤控制轉移的方法及處理器

Country Status (3)

Country Link
US (1) US9785800B2 (zh)
TW (1) TWI729033B (zh)
WO (1) WO2017112315A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10108530B2 (en) * 2016-02-24 2018-10-23 Stmicroelectronics (Rousset) Sas Method and tool for generating a program code configured to perform control flow checking on another program code containing instructions for indirect branching
US10878103B2 (en) * 2017-06-05 2020-12-29 Karamba Security Ltd. In-memory protection for controller security
US10204219B2 (en) * 2017-06-05 2019-02-12 Karamba Security In-memory protection for controller security

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826055A (en) 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US20030097587A1 (en) 2001-11-01 2003-05-22 Gulick Dale E. Hardware interlock mechanism using a watchdog timer
US8086438B2 (en) 2002-03-27 2011-12-27 Synopsys, Inc. Method and system for instruction-set architecture simulation using just in time compilation
JP3627725B2 (ja) 2002-06-24 2005-03-09 セイコーエプソン株式会社 情報処理装置及び電子機器
US6996677B2 (en) 2002-11-25 2006-02-07 Nortel Networks Limited Method and apparatus for protecting memory stacks
DE602004031719D1 (de) 2004-07-01 2011-04-21 Texas Instruments Inc Verfahren und System zur Überprüfung der Ausführung einer Eingabesequenz eines sicheren Modus
US7752427B2 (en) 2005-12-09 2010-07-06 Atmel Corporation Stack underflow debug with sticky base
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
WO2008030093A2 (en) 2006-09-06 2008-03-13 Silicon Hive B.V. Data processing circuit with a plurality of instruction modes
US8176477B2 (en) 2007-09-14 2012-05-08 International Business Machines Corporation Method, system and program product for optimizing emulation of a suspected malware
US8434073B1 (en) 2008-11-03 2013-04-30 Symantec Corporation Systems and methods for preventing exploitation of byte sequences that violate compiler-generated alignment
GB2482701C (en) 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
US8997218B2 (en) 2010-12-22 2015-03-31 F-Secure Corporation Detecting a return-oriented programming exploit
US8468600B1 (en) 2011-03-04 2013-06-18 Adobe Systems Incorporated Handling instruction received from a sandboxed thread of execution
US20130024676A1 (en) 2011-07-19 2013-01-24 Glew Andrew F Control flow integrity
US9098608B2 (en) 2011-10-28 2015-08-04 Elwha Llc Processor configured to allocate resources using an entitlement vector
US8930714B2 (en) 2011-07-19 2015-01-06 Elwha Llc Encrypted memory
US9798873B2 (en) 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US9443085B2 (en) 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US8955111B2 (en) 2011-09-24 2015-02-10 Elwha Llc Instruction set adapted for security risk monitoring
US9558034B2 (en) 2011-07-19 2017-01-31 Elwha Llc Entitlement vector for managing resource allocation
US9170843B2 (en) 2011-09-24 2015-10-27 Elwha Llc Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement
US9471373B2 (en) 2011-09-24 2016-10-18 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9465657B2 (en) 2011-07-19 2016-10-11 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
US8813085B2 (en) 2011-07-19 2014-08-19 Elwha Llc Scheduling threads based on priority utilizing entitlement vectors, weight and usage level
US20150128262A1 (en) 2011-10-28 2015-05-07 Andrew F. Glew Taint vector locations and granularity
US8555077B2 (en) 2011-11-23 2013-10-08 Elwha Llc Determining device identity using a behavioral fingerprint
US9825967B2 (en) 2011-09-24 2017-11-21 Elwha Llc Behavioral fingerprinting via social networking interaction
US9621404B2 (en) 2011-09-24 2017-04-11 Elwha Llc Behavioral fingerprinting with social networking
US20130191887A1 (en) 2011-10-13 2013-07-25 Marc E. Davis Social network based trust verification Schema
US20130133054A1 (en) 2011-09-24 2013-05-23 Marc E. Davis Relationship Based Trust Verification Schema
US8713704B2 (en) 2011-09-24 2014-04-29 Elwha Llc Behavioral fingerprint based authentication
US20140123249A1 (en) 2012-10-31 2014-05-01 Elwha LLC, a limited liability corporation of the State of Delaware Behavioral Fingerprinting Via Corroborative User Device
US9729549B2 (en) 2011-09-24 2017-08-08 Elwha Llc Behavioral fingerprinting with adaptive development
US9348985B2 (en) 2011-11-23 2016-05-24 Elwha Llc Behavioral fingerprint controlled automatic task determination
US9083687B2 (en) 2011-09-24 2015-07-14 Elwha Llc Multi-device behavioral fingerprinting
US8869241B2 (en) 2011-09-24 2014-10-21 Elwha Llc Network acquired behavioral fingerprint for authentication
US9298900B2 (en) 2011-09-24 2016-03-29 Elwha Llc Behavioral fingerprinting via inferred personal relation
US9015860B2 (en) 2011-09-24 2015-04-21 Elwha Llc Behavioral fingerprinting via derived personal relation
US20130159217A1 (en) 2011-09-24 2013-06-20 Elwha LLC, a limited liability corporation of the State of Delaware Environmentally-responsive behavioral fingerprinting
US20130197968A1 (en) 2011-09-24 2013-08-01 Elwha LLC, a limited liability corporation of the State of Delaware Behavioral fingerprinting with retail monitoring
US8688980B2 (en) 2011-09-24 2014-04-01 Elwha Llc Trust verification schema based transaction authorization
US20130151617A1 (en) 2011-10-13 2013-06-13 Elwha LLC, a limited liability corporation of the State of Delaware Behavioral fingerprinting via social network verification
US9329869B2 (en) 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US8892851B2 (en) 2011-11-02 2014-11-18 International Business Machines Corporation Changing opcode of subsequent instruction when same destination address is not used as source address by intervening instructions
US9141800B2 (en) 2011-12-20 2015-09-22 Advanced Micro Devices, Inc. Method and apparatus for detecting intrusions in a computer system
EP2867843A4 (en) 2012-06-29 2016-01-13 Elwha Llc CONDUCTIVE FINGER PRINTING WITH RETAIL TRANSACTION
US9703567B2 (en) * 2012-11-30 2017-07-11 Intel Corporation Control transfer termination instructions of an instruction set architecture (ISA)
US9990202B2 (en) 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9684511B2 (en) 2013-09-27 2017-06-20 Intel Corporation Using software having control transfer termination instructions with software not having control transfer termination instructions
US10241787B2 (en) * 2014-03-31 2019-03-26 Intel Corporation Control transfer override
US9646154B2 (en) * 2014-12-12 2017-05-09 Microsoft Technology Licensing, Llc Return oriented programming (ROP) attack protection

Also Published As

Publication number Publication date
US20170185803A1 (en) 2017-06-29
US9785800B2 (en) 2017-10-10
WO2017112315A1 (en) 2017-06-29
TWI729033B (zh) 2021-06-01

Similar Documents

Publication Publication Date Title
US10521361B2 (en) Memory write protection for memory corruption detection architectures
CN108463826B (zh) 用于在环转变期间保护栈的处理器扩展
CN108369511B (zh) 用于基于通道的跨步存储操作的指令和逻辑
US11650818B2 (en) Mode-specific endbranch for control flow termination
US10255199B1 (en) Evicting clean secure pages without encryption
TW201725509A (zh) 用於安全指令執行管線之指令及邏輯
TWI587127B (zh) 使用具有位元組等級粒度緩衝器溢位檢測之記憶體錯誤檢測架構的處理器和系統單晶片
EP3394754A1 (en) Scheduling highly parallel applications
WO2018044400A1 (en) Detecting bus locking conditions and avoiding bus locks
US9632907B2 (en) Tracking deferred data packets in a debug trace architecture
JP2021057879A (ja) プライベートパイプラインを持つプロセッサ
CN111355574A (zh) 信任域中的安全加密密钥管理
CN111752869A (zh) 以共享页表实施独特页表权限
TWI729033B (zh) 控制轉移強制執行中的非追蹤控制轉移的方法及處理器
US20190065390A1 (en) Multi-source address translation service (ats) with a single ats resource
TW201734766A (zh) 使用處理器指令前綴的二進制轉譯支援
US10089244B1 (en) Hardware for miss handling from a translation protection data structure
US10318440B2 (en) Mapping security policy group registers

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees